##Summary
Unlike BIRD or Quagga, ExaBGP was not designed to transform a general purpose server into a router, but to allow engineers to control their network easily. Think of it as Software Defined Networking for people with usual BGP routers.
ExaBGP transform BGP messages into friendly plain text or JSON which can be easily manipulate by scripts.
It allows the creation of tools such as :
- this advanced looking glass graphically display the routing of prefix
- this high availability tool which automatically isolate dead server / broken services
- DDOS mitigation
- an anycasted server
So have a look and take control your network from any unix servers.
##More information
This program is packaged for Debian, Ubuntu, ArchLinux, Gentoo, Mint, FreeBSD, OSX, OmniOS. Unless you need the latest version, please consider using your distribution's.
If you are using ExaBGP from source (or git), it does not need to be installed on your server ( using "python setup.py install" ). Simply run ExaBGP from the extracted archive, or your local git repository. It allows to run several versions at the same time without conflict.
> wget https://github.com/Exa-Networks/exabgp/archive/3.3.2.tar.gz
> tar zxvf 3.3.2.tar.gz
> cd exabgp-3.3.2
> ./sbin/exabgp --help
My blog may contain some BGP related information, but I tend to post more on G+ about ExaBGP than I blog.
##Who is using it ?
These organisations are speaking of, or using, ExaBGP: FACEBOOK, MICROSOFT, DAILYMOTION, BBC, AMSIX, NEO TELECOM, VIDEOPLAZA, ALCATEL LUCENT, CLOUDFLARE, INTERNAP, researchers [1] [2] [3], and please let us know if you use it too and can list you here ...
##BUG
No software is perfect, so should you encounter a bug please report it so we can resolve it.
##Curious
Want to know how the code is changing ? Have a question ?
follow our Google + Community page where we discuss current developments. You can as well follow us on twitter, or subscribe to our low volume mailing list. You can as well keep an eye on what we are doing on twitter.
Please consult any of :
- the changelog
- or RFC compliance pages
- the wiki with some some talks and presentations, ...
- and the FAQ
This programs does not have any dependences on any third party libraries and will run out of the box on any Unix system with a recent version of python installed.
Development is done on python 2.7, the code is kept compatible with python 2.4 in ExaBGP 2.x.x and python 2.5 in ExaBGP 3.1.x. ExaBGP 3.2.x and 3.3.x rely on python 2.7 (as it uses argparse), and we are likely to required python 3.4+ for ExaBGP 4.x.x
> python --version
Python 2.6.7
> pip install argparse
##Features
known ...
- runs on any Unix server (has no dependencies).
- receive / send routes using your own scripts or a JunOS looking configuration file
- IPv4/IPv6 (unicast, multicast, nlri-mpls, mpls-vpn) routes with arbitrary next-hops
- MPLS (route-distinguisher), [RFC 4659](http://tools.ietf.org/html/rfc4659 RFC 4659) (vpnv6)
- flow routes (complete [RFC 5575](http://tools.ietf.org/html/rfc5575 RFC 5575) support)
- support for many recent drafts
- BSD licence, integrate ExaBGP in your own application stack - no strings attached !
ExaBGP does not perform any FIB manipulation, you will need to write your own LocalRIB and FIB code if this what you need the feature, or simpler, use another open source BGP daemon.
new on 3.2 stable ...
- enhance route refresh support
- Ful RFC 5575 support, can decode incoming Flow routes
- An external program to announce a service ( Thank you Vincent ! )
- accept incoming connections
- using "next-hop self" is supported via the API
- new update code generation can group multiple NLRI, from different families, in one update packet
- NOTIFICATION message generation using the API
- API message control (limit diffusion to a subset of peers)
- better --decode option to find out what a hex dump of a route mean
- new internals ... many, including
- large rewrite of non-optimal code
- new non-blocking reactor
- new Adj-RIB-In and Adj-RIB-Out with scalable watchdog feature
- many small fixes, see the full CHANGELOG
- and more ....
The list of supported RFC is available here
The configuration file format changed slightly from 3.1.x to 3.2.x, effort were made to make sure the previous configuration format would still work, however users are encouraged to check their configuration files.
##Commercial support
Should you feel a need for commercial support in order to deploy ExaBGP in your organisation, please feel free to contact Exa Networks using sales AT exa-networks DOT co DOT uk
##Related Projects
- GIXLG a looking glass with visualisation using ExaBGP
- BGPAPI an HTTP API to ExaBGP
- ExaBGP Chef Cookbook automate ExaBGP's installation
- IOS2ExaBGP converts Cisco IOS IPv4 BGP LOC Rib dumps to ExaBGP's format
And some self promotion :
- ExaProxy A non-caching HTTP proxy able to perform complex header manipulations