Table of Contents

ExaBGP - A BGP Route Injector

WE MOVED TO GOOGLE CODE

Please go to ExaBGP for up-to-date information.

What is it ?

A BGP speaker which can inject routes with arbitrary next-hops into your network to source some ipv4/ipv6 routes (using both IPv4 and IPv6 TCP connections) and/or mitigate DDOS using flowspec.

Latest Update

The development version has seen the following improvements:

For more information about what is FlowSpec

Require a Linx membership


Some FlowSpec configuration examples (route injector and router) are available here

Where can I get it ?

The code is stored in our SVN repository:


Get it with:

 cd /opt
 svn co http://svn.exa.org.uk/bgp/trunk bgp

Make sure your trunk version up-to-date as trunk is currently under heavy development.
Bug reports are welcome :)

There is no tarball, the only way to download the code is through SVN.

How do you use it ?

You can copy and modify one of the sample configuration files provided in the etc/bgp folder, then provide it as an argument to the program.

 /opt/bgp/bin/bgpd /opt/bgp/etc/bgp/as112.txt

For production use, we are using deamontools to supervise the program. Some supervise scripts are provided in the repository “service” folder. That said, we never saw the application crash unexpectedly - touching wood.

The application does not bind to port 179, or perform RIB update, hence does not need any escalated privileges and will happily run as “nobody”.

 #!/bin/bash
 exec nice --4 env PYTHONPATH=/opt/bgp/lib setuidgid nobody /opt/bgp/daemon/bgpd /opt/bgp/etc/bgp/service-ip.txt 2>&1

It is possible to send a SIGHUP signal the program to have it send the right updates (peer setup and tear down, announcement and withdrawal) to sync the remote RIB to a new configuration file.

The configuration file is very juniper like with many examples here

if you speak 5234 (ABNF) Please help here

Installation Requirements

Should you care, the program is written in Python 2.x for version 2.5 or later.

The code only relies on the standard library and has no external dependencies, as Python is installed with most Unix systems, it should just run out of the box.

The features relying on Python 2.5/2.6 have been removed from the code and the program will now work with Python 2.4. However this version is not used by the developers and may accidentally break.

No tests have been performed to check if it works with version 3.0 if converted with 2to3.

Questions ? Problems ?

Check our FAQ and let us know if your question is not yet here.

Join the flow-spec mailing list