github Exa-Networks/exabgp 5.0.13
ExaBGP 'Waving Hand' Release

2 hours ago

Version 5.0.13

This release is about what a BGP peer can do to ExaBGP and to the programs
reading its API. Three changes alter what a peer or a consumer sees, so read
the compatibility notes before upgrading.

  • Security: a peer could write data of its own into the API streams: fields
    into the JSON stream through a BGP-LS attribute, and whole events into the
    text stream through its hostname, its software version or a shutdown message.
    The output stayed parseable, so a program reading the API acted on data no
    peer had sent. BGP-LS did not need to be negotiated. 5.0.11 closed the JSON
    hostname, software version and NOTIFICATION cases only. Upgrade if any
    process reads the API.

  • Compatibility: three BGP-LS fields of the JSON API change.
    link-identifiers and sr-adj-lan-sids were always empty and now carry what
    the peer sent. local-te-router-ids was published twice for a router
    announcing an IPv4 and an IPv6 TE Router ID, and a JSON parser keeps only the
    second, so the IPv4 address was lost; it is published once now, holding both.
    remote-te-router-id and sr-adj have the same fault and are left alone,
    since fixing them changes their type. 6.0 renames and fixes those two.

  • Compatibility: a message of an unknown type is refused with NOTIFICATION
    1/3 Bad Message Type, where 5.0.12 sent 1/0 Unspecific (RFC 4271 section
    6.1).

  • Compatibility: five kinds of malformed message which 5.0.12 accepted are
    now refused, because it invented the missing data and produced a route or a
    filter the peer had not sent: a FlowSpec rule whose operator announces a
    value it does not carry, a prefix whose mask is longer than its address
    family allows, a labelled route with no bottom of stack bit, an MCAST-VPN
    route announcing more than it carries, and a VPN next hop whose route
    distinguisher is not zero.

  • Fix: comparing two attributes ignored their content, so any two BGP-LS
    attributes, prefix SIDs, or large or extended community sets compared as
    equal. ExaBGP does not use that comparison itself, so this only affects code
    using it as a library.

  • Fix: a peer could stop ExaBGP with a truncated message, attribute,
    capability, route, BGP-LS TLV or operational message. These are now refused
    with a NOTIFICATION.

  • Fix: a peer could stop ExaBGP as it wrote the API stream, dropping every
    session on the machine, with a FlowSpec redirect community, a BGP-LS route of
    an unknown type, an undefined ADD-PATH value or a valid SRv6 TLV.

  • Fix: FlowSpec, EVPN, BGP-LS VPN and AIGP routes could produce API output
    which is not valid JSON, so a consumer lost the whole line.

  • Fix: a BGP-LS attribute was refused when a reserved flag bit was set, and
    a Multi-Topology identifier with reserved bits set was read as a different
    topology. The RFCs ask for those bits to be ignored. A malformed BGP-LS
    attribute now costs the attribute and not the session (RFC 7752 section 5.3).

  • Fix: an IPv6 multicast route could be configured and sent, but a route
    received in that family was refused and the session dropped. A BGP-LS VPN
    route was refused on receipt whatever the peer sent.

  • Fix: a twenty byte IPv6 extended community lost its leading zeros when
    printed.

  • Fix: a PMSI tunnel attribute whose tunnel identifier is not the expected
    width was refused or silently truncated. It is printed in hexadecimal now.

  • Fix: a BGP prefix SID attribute holding a TLV we do not know stopped the
    parser.

  • Fix: withdrawing a route could file it in the RIB under a second key, so
    one prefix was held twice.

  • Fix: two prefixes with the same address and a different mask had no
    defined order, so the order they were packed into an UPDATE was arbitrary.

  • Fix: a backslash at the end of a text, and any \uXXXX escape, stopped
    the configuration parser instead of being reported.

  • Fix: the package metadata uses the SPDX license expression of PEP 639 and
    ships LICENCE.txt (#1413). The wheel still installs on Python 3.8; building
    the source distribution now needs 3.9.

  • QA: CI runs every test in the tree, and every change is compared against
    5.0.12 before it is committed.

Don't miss a new exabgp release

NewReleases is sending notifications on new releases.