Hello Pavel, Using ExaBGP as an SDN already has been done (and in a very large scale). But I would agree with Nick; It is not something I would recommend to everyone. Once more to echo Nick, to add/remove route/fw entries on Linux please do use netlink. The lastest ExaBGP master has some start of code to implement NetLink in python but I recently found a python module for it: https://github.com/svinota/pyroute2 Before ExaBGP can become a route server, I must complete a number of pieces (like the CLI which I am currently coding). I have spoken with the IX community about making ExaBGP a RR/RS and the idea was not badly received, but no one offered to help so it is on the back burner. Thomas On 20 May 2015, at 15:54, Pavel Odintsov wrote:
Hello!
Yes, we could run route add / route del when we got any announce from external world with ExaBGP directly. I have implemented custom custom Firewall (netmap-ipfw) management tool which implement in similar manner. But I'm working with BGP flow spec. It's so complex, standard BGP is much times simpler.
And I could share my ExaBGP configuration and hook scripts.
ExaBGP config: https://github.com/FastVPSEestiOu/fastnetmon/blob/master/src/scripts/exabgp_...
Hook script which put all announces to Redis Queue: https://github.com/FastVPSEestiOu/fastnetmon/blob/master/src/scripts/exabgp_...
But full BGP route table is enough big and need external processing.
But yes, with some Python code is possible to implement route server with ExaBGP.
On Wed, May 20, 2015 at 5:25 PM, Aled Morris <aledm@qix.co.uk> wrote:
On 20 May 2015 at 15:00, Pavel Odintsov <pavel.odintsov@gmail.com> wrote:
Yes, you could do filtering with Quagga. But Quagga is pretty old tool without multiple dynamic features. But with ExaBGP you could do really any significant route table transformations with Python in few lines of code. But it's definitely add additional point of failure/bug.
Couldn't your back-end scripts running under ExaBGP also manage the FIB, using standard Unix tools/APIs?
Managing the FIB is basically just "route add" and "route delete" right?
Aled
-- Sincerely yours, Pavel Odintsov