ExaBGP (thanks to andyd for the name :p) is a BGP route injector (BSD license), 
allowing network engineers to influence their network's routing. It is useful 
to re-route, transproxy or blackhole traffic or simple announce prefixes from 
some servers.

The application supports IPv4, IPv6 as well as flow routes (firewall like rules 
diffused via BGP) and can connect to routers via IPv4 or IPv6. Its syntax is 
very similar from Juniper's. 
It is AFAIK the only open source application able to announce flow routes. 

If you have any questions, feel free to email me or jabber me (same address), I 
am always interested in hearing what features are missing.

This latest version saw its set of new features :
 - route sharing between multiple peers (the most requested feature)
 - TCP MD5 support (Does not work on MacOSX - so most likely Linux / BSD only)
 - de-aggregation of announcement "route 10.0.0.0/16 next-hop 1.2.3.4 split 
/24" will announce 256 x /24
 - syslog support (local, remote or in a file)
 - deamon mode
 - saving the PID in a file (/var/run/...)
 - a few bug fixes - the main one being a past issue with openbgpd

More information are available on the site - now on google code
http://code.google.com/p/exabgp/ 

The application can be installed in one line as root in /opt as a self 
contained directory:
> cd /opt ; wget http://exabgp.googlecode.com/files/exabgp-1.2.0.tgz; tar zxvf 
> exabgp-1.2.0.tgz; rm -rf exabgp-1.2.0.tgz; cd -
> /opt/exabgp-1.2.0/bin/bgpd

... or using python Distutils :
> wget http://exabgp.googlecode.com/files/exabgp-1.2.0.tgz; tar zxvf 
> exabgp-1.2.0.tgz; cd exabgp-1.2.0; python setup.py install; cd -; rm -rf 
> exabgp-1.2.0.tgz
> <your python lib path>/bin/bgpd

The program is used in production by several networks, and is considered 
production ready (even the experimental releases).

It uses environment values as mean of configuration and does not require root 
privileges :

> env DEBUG_CONFIGURATION=Yes ./bin/bgpd ./etc/bgp/myconfig.txt
> env SYSLOG=/var/log/mylogs.log PID=/var/run/exabgp.pid DAEMON=Yes ./bin/bgpd 
> ./etc/bgp/myconfig.txt

Here is a configuration sample to give you a feel of the syntax :

group test {
        local-as 65111;
        peer-as 65111;
        hold-time 180;
        static {
                route 1.0.0.0/8 next-hop 1.1.1.1;
                route 2.0.2.0/24 {
                        next-hop 1.1.1.1;
                        community 30740:30740;
                        as-path 350;
                }
        }
        neighbor 192.168.127.128 {
                description "router 1 with two routes";
                router-id 198.111.227.39;
                local-address 192.168.127.1;
                graceful-restart 1200;
        }
        static {
                route 3.0.0.0/8 next-hop 1.1.1.1 community [ 30740:30740 
30740:10 ] as-path 350 ;
                route 4.0.0.0/8 next-hop 1.1.1.1 local-preference 200;
        }
        neighbor 127.0.0.1 {
                description "router 2 with five routes";
                local-address 192.168.127.1;
                static {
                        route 5.0.0.0/8 next-hop 1.1.1.1;
                }
        }
        neighbor 127.0.0.2 {
                description "router 3 with four routes";
                local-address 192.168.127.1;
                md5 "mysecretmd5";
        }
        neighbor 127.0.0.3 {
                description "router 4 with MANY routes";
                local-address 192.168.127.1;
                static {
                        route 6.0.0.0/8 next-hop 1.1.1.1 split /16;
                }
        }
}
neighbor 127.0.0.4 {
        description "router 5 with 256 unrelated routes";
        router-id 1.2.3.4;
        local-address 192.168.127.1;
        local-as 1234;
        peer-as 4567;
        static {
                route 7.0.0.0/16 next-hop 1.1.1.1 split /24;
        }
}



Reply via email to