-
Notifications
You must be signed in to change notification settings - Fork 461
RFC Information
This document lists all RFC (Request for Comments) specifications implemented in ExaBGP, organized by functional area.
Last Updated: 2025-11-09
- Core BGP Protocol
- BGP Capabilities
- Multiprotocol Extensions
- Communities
- VPN and MPLS
- EVPN (Ethernet VPN)
- FlowSpec
- BGP-LS (Link State)
- Segment Routing
- Error Handling and Administrative
- Operational Features
- Internet Drafts
Status: Fully Implemented
The foundational BGP-4 specification defining:
- BGP finite state machine (FSM)
- Message types (OPEN, UPDATE, NOTIFICATION, KEEPALIVE)
- Path attributes
- Route selection process
- Hold time and keepalive mechanisms
Implementation: Core protocol implementation across all modules.
Status: Fully Implemented
Allows BGP speakers to request re-advertisement of routes without tearing down the session.
Implementation: src/exabgp/bgp/message/refresh.py
Status: Fully Implemented
Enables BGP sessions to maintain forwarding state during control plane restarts.
Implementation: src/exabgp/bgp/message/open/capability/graceful.py
Status: Fully Implemented
Support for 4-byte Autonomous System Numbers (ASNs), extending the 2-byte ASN space.
Implementation:
src/exabgp/bgp/message/open/capability/capability.py- AS4_PATH attribute support
Status: Fully Implemented
Framework for advertising optional capabilities during BGP session establishment.
Implementation: src/exabgp/bgp/message/open/capability/
Status: Fully Implemented
Relaxes BGP identifier requirements for AS-wide uniqueness.
Implementation: src/exabgp/bgp/message/open/capability/negotiated.py
Status: Fully Implemented
Adds Beginning-of-Route-Refresh (BoRR) and End-of-Route-Refresh (EoRR) markers.
Implementation: src/exabgp/bgp/message/refresh.py
Status: Fully Implemented
Allows BGP to advertise multiple paths for the same address prefix without new sessions.
Supported Address Families:
- IPv4 Unicast/Multicast
- IPv6 Unicast/Multicast
- VPNv4/VPNv6
- FlowSpec (IPv4/IPv6)
- VPLS
Not Yet Supported:
- EVPN
- MVPN
- Route Target Constraint (RTC)
- BGP-LS
Implementation:
src/exabgp/bgp/message/open/capability/addpath.py- Path information encoding/decoding in NLRI modules
-
src/exabgp/bgp/neighbor.py(addpath configuration)
Status: Fully Implemented
Extends BGP OPEN message to support longer optional parameters (>255 bytes).
Implementation: src/exabgp/bgp/message/open/capability/capabilities.py
Status: Fully Implemented
Enables BGP to carry IPv6 routing information.
Implementation: IPv6 address family support
Status: Fully Implemented
Core multiprotocol BGP (MP-BGP) specification enabling BGP to carry multiple address families:
- IPv4/IPv6 Unicast and Multicast
- VPNv4/VPNv6
- EVPN
- BGP-LS
- FlowSpec
Implementation:
-
src/exabgp/bgp/message/update/attribute/mprnlri.py(MP_REACH_NLRI) -
src/exabgp/bgp/message/update/attribute/mpurnlri.py(MP_UNREACH_NLRI) -
src/exabgp/protocol/family.py(AFI/SAFI definitions)
Status: Fully Implemented
Allows IPv4 prefixes to be advertised with IPv6 next hops (extended next-hop capability).
Implementation: src/exabgp/bgp/message/open/capability/capability.py
Status: Fully Implemented
Standard 32-bit BGP communities for route tagging and policy application.
Format: AS:Value (16-bit:16-bit)
Implementation: src/exabgp/bgp/message/update/attribute/community/
Status: Fully Implemented
Well-known community (0xFFFFFF04) indicating routes should not be advertised to peers.
Implementation: Community attribute support
Status: Fully Implemented
64-bit extended communities providing additional route tagging capabilities:
- Route Target (RT)
- Route Origin (RO)
- Traffic engineering
- Layer 2 attributes
- Encapsulation
Implementation: src/exabgp/bgp/message/update/attribute/community/extended/
Status: Fully Implemented
Extended communities supporting 4-byte ASNs.
Implementation: Extended community modules
Status: Fully Implemented
Extended communities using IPv6 addresses instead of IPv4.
Implementation: src/exabgp/bgp/message/update/attribute/community/extended/
Status: Fully Implemented
Registry management for extended community types.
Implementation: Extended community type definitions
Status: Fully Implemented
Well-known community (0xFFFF029A) for blackhole filtering, commonly used in DDoS mitigation.
Implementation: Community attribute support
Status: Fully Implemented
96-bit (12-byte) communities supporting large ASN values and flexible policy application.
Format: ASN:Value1:Value2 (32-bit:32-bit:32-bit)
Implementation: src/exabgp/bgp/message/update/attribute/community/large/
Status: Fully Implemented
TCP MD5 authentication for BGP sessions (80-byte password limit).
Implementation: src/exabgp/data/check.py, src/exabgp/configuration/neighbor/
Status: Fully Implemented
Enables BGP to carry MPLS label information for labeled unicast routes.
Implementation: NLRI MPLS label support
Status: Fully Implemented
Core L3VPN specification including:
- VPNv4/VPNv6 address families
- Route Distinguisher (RD) types: Type 0, Type 1, Type 2
- Route Target extended communities
Implementation:
src/exabgp/bgp/message/update/nlri/ipvpn.py-
src/exabgp/protocol/family.py(MPLS_VPN SAFI)
Status: Fully Implemented
Extends L3VPN to support IPv6 (VPNv6).
Implementation: IPv6 VPN NLRI support
Status: Fully Implemented
BGP-based VPLS for Layer 2 VPN services.
Implementation:
-
src/exabgp/protocol/family.py(VPLS SAFI) src/exabgp/bgp/message/update/attribute/community/extended/l2info.py
Status: Documented
LDP-based VPLS (related to BGP VPLS implementation).
RFC 5512 - The BGP Encapsulation Subsequent Address Family Identifier (SAFI) and the BGP Tunnel Encapsulation Attribute
Status: Fully Implemented
Tunnel encapsulation for BGP routes (GRE, IPsec, etc.).
Implementation: src/exabgp/bgp/message/update/attribute/community/extended/encapsulation.py
Status: Fully Implemented
Multicast VPN (MVPN) support including:
- MVPN NLRI types
- PMSI (Provider Multicast Service Interface) tunnel attribute
Implementation:
-
src/exabgp/protocol/family.py(MCAST_VPN SAFI) src/exabgp/bgp/message/update/attribute/pmsi.py
Status: Fully Implemented
Complete EVPN implementation for Layer 2 VPN services:
- EVPN route types (1-5)
- Ethernet Segment Identifier (ESI)
- MAC/IP advertisement
- Inclusive multicast
- Ethernet auto-discovery
Implementation:
src/exabgp/bgp/message/update/nlri/evpn/src/exabgp/bgp/message/update/attribute/community/extended/mac_mobility.py
Status: Fully Implemented
BGP FlowSpec for distributing traffic filtering rules:
- IPv4/IPv6 FlowSpec
- Flow component matching (destination, source, protocol, port, etc.)
- Traffic filtering actions (rate-limit, redirect, mark, discard)
Implementation:
src/exabgp/bgp/message/update/nlri/flow.py-
src/exabgp/protocol/family.py(FLOW_IP, FLOW_VPN SAFIs) src/exabgp/bgp/message/update/attribute/community/extended/traffic.py
Status: Fully Implemented
Redirect to VRF using 4-octet AS numbers for FlowSpec.
Implementation: src/exabgp/bgp/message/update/attribute/community/extended/traffic.py
Status: Fully Implemented
BGP-LS for distributing IGP topology and TE information:
- Node descriptors and attributes
- Link descriptors and attributes
- Prefix descriptors and attributes
- OSPF and IS-IS topology information
Implementation:
src/exabgp/bgp/message/update/nlri/bgpls/src/exabgp/bgp/message/update/attribute/bgpls/-
src/exabgp/protocol/family.py(BGPLS, BGPLS_VPN SAFIs)
Note: Current implementation supports receive-only mode for BGP-LS advertisements.
Related Support RFCs (via BGP-LS):
- RFC 2328 - OSPF Version 2
- RFC 4915 - Multi-Topology Routing in OSPF
- RFC 5120 - M-ISIS: Multi Topology (MT) Routing in Intermediate System to Intermediate Systems (IS-IS)
- RFC 5130 - A Policy Control Mechanism in IS-IS Using Administrative Tags
- RFC 5305 - IS-IS Extensions for Traffic Engineering
- RFC 5307 - IS-IS Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)
- RFC 5340 - OSPF for IPv6
- RFC 6119 - IPv6 Traffic Engineering in IS-IS
- RFC 7794 - IS-IS Prefix Attributes for Extended IPv4 and IPv6 Reachability
RFC 9514 - Border Gateway Protocol - Link State (BGP-LS) Extensions for Segment Routing over IPv6 (SRv6)
Status: Fully Implemented
Comprehensive SRv6 support via BGP-LS including:
- SRv6 SID Information TLV
- SRv6 Capabilities TLV
- SRv6 End.X SID TLV
- SRv6 LAN End.X SID TLV
- SRv6 Locator TLV
- SRv6 Endpoint Behavior
- SRv6 SID Structure
Implementation: src/exabgp/bgp/message/update/attribute/bgpls/link/srv6*.py and related SRv6 modules
Related Support (via Segment Routing):
- RFC 3209 - RSVP-TE: Extensions to RSVP for LSP Tunnels (MPLS protocol mask)
- RFC 5036 - LDP Specification (MPLS protocol mask)
Status: Fully Implemented
Route reflection for scalable iBGP deployments.
Implementation: src/exabgp/bgp/message/update/attribute/ (ORIGINATOR_ID, CLUSTER_LIST)
Status: Fully Implemented
Detailed subcodes for BGP Cease notifications.
Implementation: src/exabgp/bgp/message/notification.py
Status: Fully Implemented
Specific error subcodes for BGP FSM errors.
Implementation: src/exabgp/bgp/message/notification.py
Status: Fully Implemented
Improved error handling using "treat-as-withdraw" approach instead of session reset.
Implementation: UPDATE message processing
Status: Fully Implemented
Allows graceful shutdown with human-readable reason (128-byte limit for legacy).
Implementation:
src/exabgp/reactor/api/transcoder.pysrc/exabgp/bgp/message/notification.py
Status: Fully Implemented
Extended shutdown communication supporting 255-byte messages (UTF-8 multibyte characters).
Implementation: src/exabgp/bgp/message/notification.py
Status: Fully Implemented
Standard textual format for AS numbers (asplain and asdot formats).
Implementation: AS number parsing and display
Status: Fully Implemented
AIGP (Accumulated IGP) metric attribute for maintaining IGP metrics across AS boundaries.
Implementation: src/exabgp/bgp/message/update/attribute/aigp.py
Status: Partially Implemented
Experimental operational messages for BGP state and statistics exchange.
Implementation: src/exabgp/bgp/message/open/capability/operational.py
Status: Implemented
Allows BGP speakers to exchange hostname information (capability code 0x49).
Implementation: src/exabgp/bgp/message/open/capability/hostname.py
Status: Implemented
Allows BGP speakers to exchange software version information (capability code 0x4B).
Implementation: src/exabgp/bgp/message/open/capability/software.py
Status: Implemented
Support for BGP messages larger than 4096 bytes (capability code 0x06).
Implementation: src/exabgp/bgp/message/open/capability/capability.py
Status: Implemented
Mobile User Plane (MUP) SAFI support for 5G networks (SAFI 85).
Implementation: src/exabgp/protocol/family.py
- Total RFCs Implemented: 55+
- Core BGP RFCs: 8
- Capability RFCs: 8
- Community RFCs: 7
- VPN/MPLS RFCs: 9
- Advanced Features: EVPN, FlowSpec, BGP-LS, SRv6, MVPN
- Internet Drafts: 5+
-
No FIB Manipulation: ExaBGP implements the BGP protocol and provides APIs for external process communication, but does not manipulate the Forwarding Information Base.
-
Comprehensive Address Family Support:
- IPv4/IPv6 Unicast and Multicast
- VPNv4/VPNv6 (L3VPN)
- EVPN (Layer 2 VPN)
- FlowSpec (IPv4/IPv6/VPN variants)
- BGP-LS (topology distribution)
- VPLS
- MVPN
- MUP
-
Modern BGP Extensions:
- 4-byte ASN support
- ADD-PATH capability
- Graceful restart
- Enhanced route refresh
- Extended message support
- SRv6 for segment routing
-
Production-Ready Error Handling:
- RFC 7606 treat-as-withdraw
- Detailed notification subcodes
- Graceful shutdown with communication
ExaBGP's RFC compliance is validated through:
- Functional tests for BGP message encoding/decoding (
qa/bin/functional) - Configuration parsing tests (
qa/bin/parsing) - Unit tests with coverage (
pytest) - Real-world deployments in production networks
The ExaBGP team continues to track and implement new BGP specifications as they are standardized by the IETF. For the latest developments, see the CHANGELOG.
Found an RFC that should be listed or noticed incorrect information? Please open an issue or pull request on the ExaBGP GitHub repository.
π» Ghost written by Claude (Anthropic AI)
π Home
π Getting Started
π§ API
π‘οΈ Use Cases
π Address Families
βοΈ Configuration
π Operations
π Reference
- Architecture
- BGP State Machine
- Communities (RFC)
- Extended Communities
- BGP Ecosystem
- Capabilities (AFI/SAFI)
- RFC Support
π Migration
π Community
π External
- GitHub Repo β
- Slack β
- Issues β
π» Ghost written by Claude (Anthropic AI)