Distribution of Link-State and Traffic Engineering Information Using BGP
obsoletes
Extracted elements (30)
A BGP-LS Producer MAY suppress a Link NLRI (half-link) until the IGP has verified two-way connectivity — i.e., both connected nodes report the adjacency in their LSP/LSA. This avoids advertising one-sided adjacencies and ensures only established IGP adjacencies are reported via BGP-LS.
BGP-LS uses an IGP-neutral TLV representation so that consumers (PCEs, ALTO servers) do not need to understand OSPF or IS-IS protocol specifics. Although Link Attribute TLV encodings were originally defined for IS-IS, they carry data sourced by either IS-IS or OSPF.
Canonical ascending TLV ordering within NLRIs is required so that multiple BGP-LS Producers originating the same link-state object produce bit-identical NLRIs despite including optional TLVs. Without this rule, the BGP Decision Process would propagate different 'winner' NLRIs to consumers depending on which producer won, creating ambiguity.
The BGP-LS Identifier sub-TLV (code 513, 4-octet opaque value) introduced by RFC 7752 is deprecated by this document. Implementations SHOULD still support advertising it for backward compatibility with RFC 7752 implementations; the RECOMMENDED default value is 0.
This document deviates from RFC 7606 Section 5.4 paragraph 2 for the Link-State address family: unknown NLRI types MUST be treated as opaque and propagated rather than triggering a NOTIFICATION. This enables new NLRI types to be deployed without requiring all route reflectors to be upgraded.
An implementation MUST handle unknown Link-State NLRI types as opaque objects and MUST preserve and propagate them. This deviates from RFC 7606 Section 5.4 paragraph 2 to allow seamless introduction of new NLRI types without upgrading all propagators.
At most one instance of each sub-TLV type MUST be present in any Node Descriptor. Sub-TLVs within a Node Descriptor MUST be arranged in ascending order by sub-TLV type to enable binary NLRI comparison and incremental deployment of new key sub-TLVs.
BGP-LS Producers MUST ensure that TLVs in the BGP-LS Attribute do not cause a BGP UPDATE for a single Link-State NLRI to cross the maximum BGP message size limit. Implementations are RECOMMENDED to support extended BGP message size (RFC 8654) to accommodate larger attribute payloads.
Communication between a BGP Speaker and a BGP-LS Consumer MUST be unidirectional (from BGP Speaker to Consumer). A BGP-LS Consumer MUST NOT send information to a BGP Speaker for origination into BGP-LS.
For two BGP Speakers to exchange Link-State NLRI, they MUST use BGP Capabilities Advertisement (capability code 1, multiprotocol BGP) with AFI 16388 / SAFI 71 for BGP-LS and AFI 16388 / SAFI 72 for BGP-LS-VPN.
If interface and neighbor addresses (IPv4 or IPv6) are present in the LSA/LSP, the interface/neighbor address TLVs MUST be included and the Link Local/Remote Identifiers TLV MUST NOT be included in the Link Descriptor. IPv4/IPv6 link-local addresses MUST NOT be carried in address TLVs (259/260/261/262) as descriptors.
The network operator MUST assign the same BGP-LS Instance-IDs on all BGP-LS Producers within a given IGP domain. Unique BGP-LS Instance-IDs MUST be assigned to routing protocol instances operating in different IGP domains.
To compare NLRIs with unknown TLVs, all TLVs within an NLRI MUST be ordered in ascending order by TLV Type; ties broken by ascending Length then lexicographic ascending Value. NLRIs with TLVs that do not follow this canonical ordering MUST be considered malformed by a BGP-LS Propagator.
Unknown and unsupported TLV types MUST be preserved and propagated within both NLRI and the BGP-LS Attribute. The presence of unknown or unexpected TLVs MUST NOT result in the NLRI or BGP-LS Attribute being considered malformed.
When a BGP-LS Propagator finds it would exceed maximum BGP message size due to addition of other attributes (e.g., AS_PATH), it MUST consider the BGP-LS Attribute malformed and apply 'Attribute Discard' per RFC 7606. It MUST first discard the BGP-LS Attribute when performing Attribute Discard to reduce message size per RFC 8654.
When adding, removing, or modifying a TLV/sub-TLV from a Link-State NLRI, the BGP-LS Producer MUST withdraw the old NLRI by including it in the MP_UNREACH_NLRI. Failure to do so results in duplicate and inconsistent link-state objects in the BGP-LS table.
All non-VPN BGP-LS link, node, and prefix information SHALL be encoded using AFI 16388 / SAFI 71. VPN information SHALL use AFI 16388 / SAFI 72, which prepends an 8-octet Route Distinguisher to the NLRI.
BGP-LS defines three speaker roles: Producer (originates link-state into BGP), Consumer (application that receives topology data; never sends back), and Propagator (performs BGP Decision Process and forwards BGP-LS UPDATE messages). Roles are not mutually exclusive.
Link Descriptor TLVs uniquely identify a link among parallel links between anchor routers. A link is represented as two half-links (two Link NLRIs, one per endpoint). A link is not considered complete unless both half-link NLRIs are present, analogous to IGP two-way connectivity checks.
The 8-octet Identifier field in the NLRI carries the BGP-LS Instance-ID, which identifies the IGP routing domain. NLRIs from the same IGP instance share the same Instance-ID; different Instance-IDs indicate different IGP domains. Instance-ID 0 is RECOMMENDED when only a single protocol instance exists.
The BGP-LS Attribute (IANA-assigned value 29) is an optional, non-transitive BGP path attribute carrying node, link, and prefix parameters as TLV triplets. It SHOULD only be included with Link-State NLRIs; its use with other address families is out of scope.
The Protocol-ID field identifies the IGP source: IS-IS Level 1 (1), IS-IS Level 2 (2), OSPFv2 (3), Direct (4), Static configuration (5), OSPFv3 (6). 'Direct' and 'Static configuration' SHOULD be used for locally-sourced BGP-LS information.
This document establishes seven IANA BGP-LS registries: NLRI Types (Node=1, Link=2, IPv4 Prefix=3, IPv6 Prefix=4), Protocol-IDs (IS-IS L1/L2, OSPFv2/v3, Direct, Static), Well-Known Instance-IDs, Node Flags, MPLS Protocol Mask, IGP Prefix Flags, and BGP-LS TLVs (covering all TLV code points defined in the document).
BGP-LS distributes detailed topology and TE information to external entities, which may include sensitive operational data such as link capacities, SRLGs, and node roles. Operators MUST apply BGP policy to control what information is exported, and SHOULD restrict BGP-LS sessions to trusted peers using BGP authentication mechanisms.
The IGP Router-ID sub-TLV (code 515, variable length) encodes: IS-IS non-pseudonode as 6-octet ISO System-ID; IS-IS pseudonode as 6-octet DIS Node-ID + 1-octet nonzero PSN (7 octets); OSPFv2/v3 non-pseudonode as 4-octet Router-ID; OSPFv2 pseudonode as 4-octet DR Router-ID + 4-octet DR interface IPv4 address.
The IP Reachability Information TLV (code 265, mandatory for IPv4/IPv6 Prefix NLRIs) encodes: 1-octet Prefix Length (bits), followed by the minimum octets needed for the prefix. Trailing bits MUST be set to 0. The TLV length is variable.
The MPLS Protocol Mask TLV (code 1094, length 1 octet) carries a bitmask of enabled MPLS signaling protocols: L (LDP) and R (RSVP-TE). It is only valid for Protocol-IDs 'Static configuration' or 'Direct' and MUST NOT be included for other Protocol-IDs.
The Node Flag Bits TLV (code 1024, length 1 octet) carries a bitmask of node attributes: O (Overload), A (Attached), E (External/OSPF), B (ABR/OSPF), R (Router bit/OSPFv3), V (V6 bit/OSPFv3). Undefined bits MUST be set to 0 and MUST be ignored on receipt.
The Node NLRI (Type=1) contains: 1-octet Protocol-ID, 8-octet Identifier (BGP-LS Instance-ID), and variable-length Local Node Descriptors TLV (Type 256). The Link NLRI (Type=2) additionally includes Remote Node Descriptors TLV (Type 257) and Link Descriptors TLVs.
The TLV format used in both Link-State NLRIs and the BGP-LS Attribute consists of a 2-octet Type field, a 2-octet Length field (length of Value in octets, zero for no value), and a variable-length Value field. TLVs are not padded to 4-octet alignment.