Package: exabgp
Table of ContentsIntroductionInstallationPrerequisitesUsing pipWithout installationFeedback and getting involvedVersionsIntroductionExaBGP allows engineers to control their network from commodity servers. Think of it as Software Defined Networking using BGP.It can be used to announce ipv4, ipv6, vpn or flow routes (for DDOS protection) from its configuration file(s).
ExaBGP can also transform BGP messages into friendly plain text or JSON which can be easily manipulate by scripts and report peer announcements.It supports IPv4, IPv6, mpls, vpls, bgp-ls, flowspec and more.InstallationPrerequisitesExaBGP requires a recent python 3 version (3.7 or later recommended). It includes/vendors its dependencies.Using pipUse pip to install the packages:pip install -U exabgp
exabgp --helpWithout installationcurl -L https://github.com/Exa-Networks/exabgp/archive/4.2.21.tar.gz | tar zx
./exabgp-4.2.21/sbin/exabgp --helpFeedback and getting involvedSlack:https://join.slack.com/t/exabgp/shared_invite/enQtNTM3MTU5NTg5NTcyLTZjNmZhOWY5MWU3NTlkMTc5MmZlZmI4ZDliY2RhMGIwMDNkMmIzMDE3NTgwNjkwYzNmMDMzM2QwZjdlZDkzYTg#exabgp:irc://irc.freenode.net:6667/exabgp(unmonitored)Twitter:https://twitter.com/#!/search/exabgpMailing list:http://groups.google.com/group/exabgp-usersIssue tracker:https://github.com/Exa-Networks/exabgp/issuesCode Repository:https://github.com/Exa-Networks/exabgpVersionsVersion explained:major : codebase increase on incompatible changesminor : increase on risk of code breakage during a major releasebug   : increase on bug or incremental changesVersion 4.2.21Fix: regressing on announcing routes from the API #1108Version 4.2.20Fix: correctly filter routes announced by the API to the right peer #1005Feature: healthcheck neighbor filtering and path-information backport of #1098 and #1099Fix: backport #1101 fix parsing of FlowSpec TCPFlags with NSFix: backport #1102 fix parsing of Fragment with IPv6 destinations/sourcesFix: bug in CLI when failing to read dataVersion 4.2.19Feature: force PGP signing of tagsFeature: backport ICMP typesFix: backport healthcheck setup_ips requiring a label
backport by: Steven HonsonVersion 4.2.18Feature: add ICMP experimental codes
reported: enag11Feature: PGP signing releasesVersion 4.2.17Feature: add flags ECE, CW and NS to TCP, (not sure if any flowspec implementation uses them) #1053
reported by: enag11Fix: bug with IGP Metric #1056
patch by: hkml2000Version 4.2.16Fix: bacckport of fix for #1051 tcp-flag operators != and &!= return syntax error
reported by: enag11Version 4.2.15Fix: #1035 Socket remains in CLOSED state after the interface goes down
patch: borjamFix: #1041 backportVersion 4.2.14Fix: issue reading data from the peer
reported by: isjerryxiaoFeature: allow IPv6 redirect
patch by: rzalamenaFix: fix decoding of path information (inbound vs outbound)
reported by: isjerryxiaoVersion 4.2.13Fix: issue when there is no route to the peer and the connection looked like it established with the API
reported by: iddqFix: healthcheck was not ending if/when exabgp did
reported by: mzealeyFix: issue with poller
reported by: emilstahl97Version 4.2.12Fix: issue with flow fragment (issue #1027)Version 4.2.11Feature: new release code allowing the creation of zipappVersion 4.2.10:
* Fix: cache invalidation on clear command
patch by: Boris MurashovVersion 4.2.9Fix: healthcheck –sudo, –debug and –no-ack are not exclusive
reported by: sincerywaingVersion 4.2.8:Fix: restore python -m exabgpVersion 4.2.7:Feature: logging parsing in debug mode will now print the JSON of updatesFix: issue during restartFix: add ipv6 mpls to add-path
patch by: adrian62Fix: aggregator parsing when no space are used around ()
reported by: thomas955Fix: high CPU load to do sleeptime in second and not ms
reported by: Gary BuhrmasterChange: BGP-LS TE-RIDs are now reported as a list (as Arista reports more than one)
patch: tomjshinereported: the RIB code so withdraw message before any announce are sentthis does change the RIB behaviour sending withdrawal when it was not previouslyFix: bad parsing in some case when capability next-hop was used
reported: alexejliVersion 4.2.6:Fix: prevent the deletion of IP addresses not added by the healthcheckerVersion 4.2.5:Fix: Fix loopback detection without label issue
patch by: Ruben HeroldVersion 4.2.4:Change: display next-hop in flow redirect (fixes a bug with route generation too)
reported by: Cathal MooneyVersion 4.2.3:Fix: issue with sending data toward API
reported by: jkldgoefgkljefogegFix: bug in spin prevention (true vs True)Fix: peer and local ID for show neighbor commandsVersion 4.2.2:Fix: issue with new respawn feature breaking the APIVersion 4.2.1:Feature: use vendored ip_address module for healthcheckFeature: respawn option under the process (disable re-starting the api program on failure)Feature: support for single announcement for the healthcheckVersion 4.2.0:Feature: Support additional sub-type of BGP-Prefix-SID for SRv6-VPN
patch by: Hiroki SHIROKURAFix: issue with pypi release (can not pip install)
reported by: Thomas FaivreFix: on ‘restart’ config could improperly interference with current config which leads to inconsystent state and crash
patch by: Alexander PetrovskyFeature: “rate-limit” (per neighbor) limit the number of BGP message(s) handled per secondFeature: support draft-ietf-idr-flowspec-redirect-02 (previously only simpson was supported)
patch by: Eli LindseyFeature: BGP LS IPv6 parsing support
patch by: Tinus FlagstadFeature: healthcheck handle loopback for non-Linux machinesFix: use local IP for router-id when the peer is auto-deteted (and not the remote IP)Fix: potential python3/python2 bytes vs string issues when generating updatesFix: label is mandatory when using RD, force it, and perform better checks on the configurationFix: sending route-refresh message via the API was broken
reported by: Konrad ZemekFix: make sure exabgpcli does not hang when exabgp.api.ack is set to False
patch by: basyronFix: not correctly recording AFI for next-hop self useFix: removal of ip address by healthcheck
patch by: wavezhangFix: healthcheck on ^C during time.sleep, exit gracefullyFix: healthcheck do not fail if the IP address exist when we are trying to add itFix: healthcheck correctly remove the IP address on going down if it was addedFix: bug when parsing passive keyword alone (was false not true)Fix: was not always terminating with error code 0 when all was good
patch by: badrabubkerCHANGE: large change to the configuration code (should not have any effect but the devil is in the details)CHANGE: using next-hop self could lead to route generated with a IPv6 next-hop in the IPv4 next-hop
This COULD have been accepted by peers. This version does prevent such generation.CHANGE: resolve symlink when reading the file and not when parsing the configuration
reported by: juise (with alternative patch - thank you)CHANGE: the reactor was changed from using select to poll (removing the 1024 limit on connections)CHANGE: rewrote setup.py, moving release code into another fileVersion 4.1.5:Deleted: could not install via pip installVersion 4.1.4:Deleted: could not install via pip installVersion 4.1.3:Deleted: could not install via pip installVersion 4.1.2Feature: exabgpcli autocompleteFix: exabgpcli was not correctly removing data on the pipe in case of issuesVersion 4.1.1CHANGE: some message are now printed using the log routes option and not parser anymoreFix: bug with functional testing code when using python3
patch by: Cooper LeesFix: bug with ExaBGP cli not working
reported by: jlixfeld (thank you to Cooper Lees for providing time and a test env. to reproduce)Version 4.1.0CHANGE: when redifining a single parameter option using inheritence the value will be replacedCHANGE: FlowSpec TRUE and FALSE value have been updated to use the latest RFC and are therefore inverted from previous versionsCHANGE: an invalid netmask for a network will now cause ExaBGP to fail the parsing of the route (it can stop ExaBGP from starting with bad routes)Feature: support for extended next-hop (RFC 5549)Feature: implemented API for “clear adj-rib out” and “flush adj-rib out”Fix: regression pointed in #873
patch: Malcolm DoddsFix: do not crash when trying to be helpful in presenting notification message
reported by: Adam Jacob MullerFix: issue while handling ranged neighbors
patch: Wenxin WangFix: accumulating families when using multiple peers
patch: Martin Topholm (reviewed)Fix: could not reload configuration
reported by: gbockFeature: better RFC5575bis support, better treat as withdraw
patch: Christoph LoiblFix: Fix issue when using peer ASN discovery
patch: Zac MedicoFix: MD5 encoding
reported by: Adam Jacob Muller (with an initial idea for a patch)Fix: ignore unknown BGP-LS SID
reported by: MosesNFix: badly deciding when to send or not AddPath from parsing the Capability
reported by: ivan-balan