exabgp 4.0.10 releases: BGP swiss army knife of networking

ExaBGP provides a convenient way to implement Software Defined Networking by transforming BGP messages into friendly plain text or JSON, which can then be easily handled by simple scripts or your BSS/OSS.

It is routinely used to improve service resilience and provide protection against network or service failures. For example, thanks to the healthcheck backend included, anycasted DNS service failures can be detected and handled gracefully. To help you get started, Vincent Bernat put forward a full lab explaining how to best use this feature.

Also, alone or in conjunction with fastnetmon, it provides network operators a cost-effective DDOS protection solution.

But it is not its only strength, thanks to modern routers’ flow balancing, ExaBGP can also be used to save you money on load balancers. Other uses include keeping an eye on network changes done by RIPE or by other networks with GIXLG.

Who is using ExaBGP?

These organizations have spoken of, or are using/have used ExaBGP: AMS-IXAlcatel LucentBBCBlablacarCisco SystemsCloudFlareDailymotionFacebookMaxCDNMicrosoftOpenDNSOraclePowerDNSRIPE NCC, …



RFC support includes ASN4, IPv6, MPLS, VPLS, Flow, Graceful Restart, Enhanced Route Refresh, and AIGP among others. More information can be found here

ExaBGP does not perform any FIB manipulation. If this is what you need, you may consider another open source BGP daemon such as BIRD or Quagga.

RFC compliance details the latest developments.

Changelog v4.0.10

This version is most likely the last one before we consider the master branch ready to replace 3.4.x.

The control API / CLI command are however not yet frozen and will slightly change before a stable 4.1.0 release.

Version 4.0.10

  • Feature: Add decoding for Mac Mobility

Version 4.0.9

  • Change: re-enabled multiple source/destination in flow
  • Fix: forward port of #845, send state down messages on peer removal
    orginal patch: Andre Kampert
  • Feature: add != test of flows
    patch by: dhammika
  • Fix: Read pipename from env file rather than using default
    patch by: Craig Milne
  • Fix: using teardown could crash exabgp
    patch by: Matthias Wichtlhuber
  • Fix: use of label and rd with announce attributes

The program is packaged for Debian, Ubuntu, ArchLinux, Gentoo, Mint, FreeBSD, OSX, and OmniOS (and probably more).

The latest version is available on pypi, the Python Package Index

pip install exabgp
> exabgp –help
> python -m exabgp healthcheck –help

It is also possible to download the latest archive from github

curl -L https://github.com/Exa-Networks/exabgp/archive/4.0.5.tar.gz | tar zx
> ./exabgp-4.0.5/sbin/exabgp –help
> ./bin/healthcheck –help

If using git, for production deployment, please use the “3.4` branch.

git clone https://github.com/Exa-Networks/exabgp.git
> git checkout 3.4
> ./bin/healthcheck –help

Multiple versions can be used simultaneously without conflict when ExaBGP is running from extracted archives and/or local git repositories.

The configuration file and API format change from time to time, but every effort being made to make sure backward compatibility is kept. However, users are encouraged to read the release note/CHANGELOG and check their setup after an upgrade.

ExaBGP 4.0 and later are targeting python3 when ExaBGP 3.4 and previous versions are python2 applications. At the moment, it is possible to run ExaBGP 4.0 using python2.7 but this backward compatibility should not be relied upon.


Python BGP route injector

Copyright (c) 2009-2017, Exa Networks Limited
Copyright (c) 2009-2017, Thomas Mangin
Copyright (c) 2014-2017, Nikita Shirokov
Copyright (c) 2014-2017, Orange
Copyright (c) 2015-2017, Alcatel-Lucent
Copyright (c) 2016-2017, Job Snijders
Copyright (c) 2016-2017, Evelio Vila
All rights reserved.