diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc9552.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc9552.txt')
-rw-r--r-- | doc/rfc/rfc9552.txt | 3231 |
1 files changed, 3231 insertions, 0 deletions
diff --git a/doc/rfc/rfc9552.txt b/doc/rfc/rfc9552.txt new file mode 100644 index 0000000..32441c1 --- /dev/null +++ b/doc/rfc/rfc9552.txt @@ -0,0 +1,3231 @@ + + + + +Internet Engineering Task Force (IETF) K. Talaulikar, Ed. +Request for Comments: 9552 Cisco Systems +Obsoletes: 7752, 9029 December 2023 +Category: Standards Track +ISSN: 2070-1721 + + +Distribution of Link-State and Traffic Engineering Information Using BGP + +Abstract + + In many environments, a component external to a network is called + upon to perform computations based on the network topology and the + current state of the connections within the network, including + Traffic Engineering (TE) information. This is information typically + distributed by IGP routing protocols within the network. + + This document describes a mechanism by which link-state and TE + information can be collected from networks and shared with external + components using the BGP routing protocol. This is achieved using a + BGP Network Layer Reachability Information (NLRI) encoding format. + The mechanism applies to physical and virtual (e.g., tunnel) IGP + links. The mechanism described is subject to policy control. + + Applications of this technique include Application-Layer Traffic + Optimization (ALTO) servers and Path Computation Elements (PCEs). + + This document obsoletes RFC 7752 by completely replacing that + document. It makes some small changes and clarifications to the + previous specification. This document also obsoletes RFC 9029 by + incorporating the updates that it made to RFC 7752. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc9552. + +Copyright Notice + + Copyright (c) 2023 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Revised BSD License text as described in Section 4.e of the + Trust Legal Provisions and are provided without warranty as described + in the Revised BSD License. + +Table of Contents + + 1. Introduction + 1.1. Requirements Language + 2. Motivation and Applicability + 2.1. MPLS-TE with PCE + 2.2. ALTO Server Network API + 3. BGP Speaker Roles for BGP-LS + 4. Advertising IGP Information into BGP-LS + 5. Carrying Link-State Information in BGP + 5.1. TLV Format + 5.2. The Link-State NLRI + 5.2.1. Node Descriptors + 5.2.2. Link Descriptors + 5.2.3. Prefix Descriptors + 5.3. The BGP-LS Attribute + 5.3.1. Node Attribute TLVs + 5.3.2. Link Attribute TLVs + 5.3.3. Prefix Attribute TLVs + 5.4. Private Use + 5.5. BGP Next-Hop Information + 5.6. Inter-AS Links + 5.7. OSPF Virtual Links and Sham Links + 5.8. OSPFv2 Type 4 Summary-LSA & OSPFv3 Inter-Area-Router-LSA + 5.9. Handling of Unreachable IGP Nodes + 5.10. Router-ID Anchoring Example: ISO Pseudonode + 5.11. Router-ID Anchoring Example: OSPF Pseudonode + 5.12. Router-ID Anchoring Example: OSPFv2 to IS-IS Migration + 6. Link to Path Aggregation + 6.1. Example: No Link Aggregation + 6.2. Example: ASBR to ASBR Path Aggregation + 6.3. Example: Multi-AS Path Aggregation + 7. IANA Considerations + 7.1. BGP-LS Registries + 7.1.1. BGP-LS NLRI Types Registry + 7.1.2. BGP-LS Protocol-IDs Registry + 7.1.3. BGP-LS Well-Known Instance-IDs Registry + 7.1.4. BGP-LS Node Flags Registry + 7.1.5. BGP-LS MPLS Protocol Mask Registry + 7.1.6. BGP-LS IGP Prefix Flags Registry + 7.1.7. BGP-LS TLVs Registry + 7.2. Guidance for Designated Experts + 8. Manageability Considerations + 8.1. Operational Considerations + 8.1.1. Operations + 8.1.2. Installation and Initial Setup + 8.1.3. Migration Path + 8.1.4. Requirements for Other Protocols and Functional + Components + 8.1.5. Impact on Network Operation + 8.1.6. Verifying Correct Operation + 8.2. Management Considerations + 8.2.1. Management Information + 8.2.2. Fault Management + 8.2.3. Configuration Management + 8.2.4. Accounting Management + 8.2.5. Performance Management + 8.2.6. Security Management + 9. TLV/Sub-TLV Code Points Summary + 10. Security Considerations + 11. References + 11.1. Normative References + 11.2. Informative References + Appendix A. Changes from RFC 7752 + Acknowledgements + Contributors + Author's Address + +1. Introduction + + The contents of a Link-State Database (LSDB) or of an IGP's Traffic + Engineering Database (TED) describe only the links and nodes within + an IGP area. Some applications, such as end-to-end Traffic + Engineering (TE), would benefit from visibility outside one area or + Autonomous System (AS) to make better decisions. + + The IETF has defined the Path Computation Element (PCE) [RFC4655] as + a mechanism for achieving the computation of end-to-end TE paths that + crosses the visibility of more than one TED or that requires CPU- + intensive or coordinated computations. The IETF has also defined the + ALTO server [RFC5693] as an entity that generates an abstracted + network topology and provides it to network-aware applications. + + Both a PCE and an ALTO server need to gather information about the + topologies and capabilities of the network to be able to fulfill + their function. + + This document describes a mechanism by which link-state and TE + information can be collected from networks and shared with external + components using the BGP routing protocol [RFC4271]. This is + achieved using a BGP Network Layer Reachability Information (NLRI) + encoding format. The mechanism applies to physical and virtual + (e.g., tunnel) links. The mechanism described is subject to policy + control. + + A router maintains one or more databases for storing link-state + information about nodes and links in any given area. Link attributes + stored in these databases include: local/remote IP addresses, local/ + remote interface identifiers, link IGP metric, link TE metric, link + bandwidth, reservable bandwidth, per Class-of-Service (CoS) class + reservation state, preemption, and Shared Risk Link Groups (SRLGs). + The router's BGP - Link State (BGP-LS) process can retrieve topology + from these LSDBs and distribute it to a consumer, either directly or + via a peer BGP Speaker (typically a dedicated route reflector), using + the encoding specified in this document. + + An illustration of the collection of link-state and TE information + and its distribution to consumers is shown in Figure 1 below. + + +-----------+ + | Consumer | + +-----------+ + ^ + | + +-----------+ +-----------+ + | BGP | | BGP | + | Speaker |<----------->| Speaker | +-----------+ + | RR1 | | RRm | | Consumer | + +-----------+ +-----------+ +-----------+ + ^ ^ ^ ^ + | | | | + +-----+ +---------+ +---------+ | + | | | | + +-----------+ +-----------+ +-----------+ + | BGP | | BGP | | BGP | + | Speaker | | Speaker | . . . | Speaker | + | R1 | | R2 | | Rn | + +-----------+ +-----------+ +-----------+ + ^ ^ ^ + | | | + IGP IGP IGP + + Figure 1: Collection of Link-State and TE Information + + A BGP Speaker may apply a configurable policy to the information that + it distributes. Thus, it may distribute the real physical topology + from the LSDB or the TED. Alternatively, it may create an abstracted + topology, where virtual, aggregated nodes are connected by virtual + paths. Aggregated nodes can be created, for example, out of multiple + routers in a Point of Presence (POP). Abstracted topology can also + be a mix of physical and virtual nodes and physical and virtual + links. Furthermore, the BGP Speaker can apply policy to determine + when information is updated to the consumer so that there is a + reduction in information flow from the network to the consumers. + Mechanisms through which topologies can be aggregated or virtualized + are outside the scope of this document. + + This document focuses on the specifications related to the + origination of IGP-derived information and their propagation via BGP- + LS. It also describes the advertisement into BGP-LS of information, + either configured or derived, that is local to a node. In general, + the procedures in this document form part of the base BGP-LS protocol + specification and apply to information from other sources that are + introduced into BGP-LS. + + This document obsoletes [RFC7752] by completely replacing that + document. It makes some small changes and clarifications to the + previous specification as documented in Appendix A. + +1.1. Requirements Language + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + +2. Motivation and Applicability + + This section describes use cases from which the requirements can be + derived. + +2.1. MPLS-TE with PCE + + As described in [RFC4655], a PCE can be used to compute MPLS-TE paths + within a "domain" (such as an IGP area) or across multiple domains + (such as a multi-area AS or multiple ASes). + + * Within a single area, the PCE offers enhanced computational power + that may not be available on individual routers, sophisticated + policy control and algorithms, and coordination of computation + across the whole area. + + * If a router wants to compute an MPLS-TE path across IGP areas, + then its own TED lacks visibility of the complete topology. That + means that the router cannot determine the end-to-end path and + cannot even select the right exit router (Area Border Router + (ABR)) for an optimal path. This is an issue for large-scale + networks that need to segment their core networks into distinct + areas but still want to take advantage of MPLS-TE. + + Previous solutions used per-domain path computation [RFC5152]. The + source router could only compute the path for the first area because + the router only has full topological visibility for the first area + along the path but not for subsequent areas. Per-domain path + computation selects the exit ABR and other ABRs or AS Border Routers + (ASBRs) as loose-hops [RFC3209] and using the IGP-computed shortest + path topology for the remainder of the path. This may lead to + suboptimal paths, makes alternate/back-up path computation hard, and + might result in no TE path being found when one does exist. + + The PCE presents a computation server that may have visibility into + more than one IGP area or AS or may cooperate with other PCEs to + perform distributed path computation. The PCE needs access to the + TED for the area(s) it serves, but [RFC4655] does not describe how + this is achieved. Many implementations make the PCE a passive + participant in the IGP so that it can learn the latest state of the + network, but this may be suboptimal when the network is subject to a + high degree of churn or when the PCE is responsible for multiple + areas. + + The following figure shows how a PCE can get its TED information + using the mechanism described in this document. + + +----------+ +---------+ + | ----- | | BGP | + | | TED |<-+-------------------------->| Speaker | + | ----- | TED synchronization | | + | | | mechanism +---------+ + | | | + | v | + | ----- | + | | PCE | | + | ----- | + +----------+ + ^ + | Request/ + | Response + v + Service +----------+ Signaling +----------+ + Request | Head-End | Protocol | Adjacent | + -------->| Node |<------------>| Node | + +----------+ +----------+ + + Figure 2: External PCE Node Using a TED Synchronization Mechanism + + The mechanism in this document allows the necessary TED information + to be collected from the IGP within the network, filtered according + to configurable policy, and distributed to the PCE as necessary. + +2.2. ALTO Server Network API + + An ALTO server [RFC5693] is an entity that generates an abstracted + network topology and provides it to network-aware applications over a + web-service-based API. Example applications are peer-to-peer (P2P) + clients or trackers, or Content Distribution Networks (CDNs). The + abstracted network topology comes in the form of two maps: a Network + Map that specifies the allocation of prefixes to Partition + Identifiers (PIDs) and a Cost Map that specifies the cost between + PIDs listed in the Network Map. For more details, see [RFC7285]. + + ALTO abstract network topologies can be auto-generated from the + physical topology of the underlying network. The generation would + typically be based on policies and rules set by the operator. Both + prefix and TE data are required: prefix data is required to generate + ALTO Network Maps and TE (topology) data is required to generate ALTO + Cost Maps. Prefix data is carried and originated in BGP, and TE data + is originated and carried in an IGP. The mechanism defined in this + document provides a single interface through which an ALTO server can + retrieve all the necessary prefixes and network topology data from + the underlying network. Note that an ALTO server can use other + mechanisms to get network data, for example, peering with multiple + IGP and BGP Speakers. + + The following figure shows how an ALTO server can get network + topology information from the underlying network using the mechanism + described in this document. + + +--------+ + | Client |<--+ + +--------+ | + | ALTO +--------+ Topology +---------+ + +--------+ | Protocol | ALTO | Sync Mechanism | BGP | + | Client |<--+------------| Server |<----------------| Speaker | + +--------+ | | | | | + | +--------+ +---------+ + +--------+ | + | Client |<--+ + +--------+ + + Figure 3: ALTO Server Using Network Topology Information + +3. BGP Speaker Roles for BGP-LS + + In Figure 1, the BGP Speakers can be seen playing different roles in + the distribution of information using BGP-LS. This section + introduces terms that explain the different roles of the BGP Speakers + that are then used throughout the rest of this document. + + BGP-LS Producer: The term BGP-LS Producer refers to a BGP Speaker + that is originating link-state information into BGP. BGP Speakers + R1, R2, ... Rn originate link-state information from their + underlying link-state IGP protocols into BGP-LS. If R1 and R2 are + in the same IGP flooding domain, then they would ordinarily + originate the same link-state information into BGP-LS. R1 may + also originate information from sources other than IGP, e.g., its + local node information. + + BGP-LS Consumer: The term BGP-LS Consumer refers to a consumer + application/process and not a BGP Speaker. BGP Speakers RR1 and + Rn are handing off the BGP-LS information that they have collected + to a consumer application. The BGP protocol implementation and + the consumer application may be on the same or different nodes. + This document only covers the BGP implementation. The consumer + application and the design of the interface between BGP and the + consumer application may be implementation specific and are + outside the scope of this document. The communication of + information MUST be unidirectional (i.e., from a BGP Speaker to + the BGP-LS Consumer application), and a BGP-LS Consumer MUST NOT + be able to send information to a BGP Speaker for origination into + BGP-LS. + + BGP-LS Propagator: The term BGP-LS Propagator refers to a BGP + Speaker that is performing BGP protocol processing on the link- + state information. BGP Speaker RRm propagates the BGP-LS + information between BGP Speaker Rn and BGP Speaker RR1. The BGP + implementation on RRm is propagating BGP-LS information. It + performs handling of BGP-LS UPDATE messages and performs the BGP + Decision Process as part of deciding what information is to be + propagated. Similarly, BGP Speaker RR1 is receiving BGP-LS + information from R1, R2, and RRm and propagating the information + to the BGP-LS Consumer after performing BGP Decision Process. + + The above roles are not mutually exclusive. The same BGP Speaker may + be the BGP-LS Producer for some link-state information and BGP-LS + Propagator for some other link-state information while also providing + this information to a BGP-LS Consumer. + + The rest of this document refers to the role when describing + procedures that are specific to that role. When the role is not + specified, then the said procedure applies to all BGP Speakers. + +4. Advertising IGP Information into BGP-LS + + The origination and propagation of IGP link-state information via BGP + needs to provide a consistent and accurate view of the topology of + the IGP domain. BGP-LS provides an abstraction of the IGP specifics, + and BGP-LS Consumers may be varied types of applications. + + The link-state information advertised in BGP-LS from the IGPs is + derived from the IGP LSDB built using the OSPF Link-State + Advertisements (LSAs) or the IS-IS Link-State Packets (LSPs). + However, it does not serve as a verbatim reflection of the + originating router's LSDB. It does not include the LSA/LSP sequence + number information since a single link-state object may be put + together with information that is coming from multiple LSAs/LSPs. + Also, not all of the information carried in LSAs/LSPs may be required + or suitable for advertisement via BGP-LS (e.g., ASBR reachability in + OSPF, OSPF virtual links, link-local-scoped information, etc.). The + LSAs/LSPs that are purged or aged out are not included in the BGP-LS + advertisement even though they may be present in the LSDB (e.g., for + the IGP flooding purposes). The information from the LSAs/LSPs that + is invalid or malformed or that which needs to be ignored per the + respective IGP protocol specifications are also not included in the + BGP-LS advertisement. + + The details of the interface between IGPs and BGP for the + advertisement of link-state information are outside the scope of this + document. In some cases, the information derived from IGP processing + (e.g., combination of link-state object from across multiple LSAs/ + LSPs, leveraging reachability and two-way connectivity checks, etc.) + is required for the advertisement of link-state information into BGP- + LS. + +5. Carrying Link-State Information in BGP + + The link-state information is carried in BGP UPDATE messages as: (1) + BGP NLRI information carried within MP_REACH_NLRI and MP_UNREACH_NLRI + attributes that describes link, node, or prefix objects and (2) a BGP + path attribute (BGP-LS Attribute) that carries properties of the + link, node, or prefix objects such as the link and prefix metric, + auxiliary Router-IDs of nodes, etc. + + It is desirable to keep the dependencies on the protocol source of + this attribute to a minimum and represent any content in an IGP- + neutral way, such that applications that want to learn about a link- + state topology do not need to know about any OSPF or IS-IS protocol + specifics. + + This section mainly describes the procedures for a BGP-LS Producer to + originate link-state information into BGP-LS. + +5.1. TLV Format + + Information in the Link-State NLRIs and the BGP-LS Attribute is + encoded in Type/Length/Value triplets. The TLV format is shown in + Figure 4 and applies to both the NLRI and the BGP-LS Attribute + encodings. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Value (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 4: TLV Format + + The Length field defines the length of the value portion in octets + (thus, a TLV with no value portion would have a length of zero). The + TLV is not padded to 4-octet alignment. Unknown and unsupported + types MUST be preserved and propagated within both the NLRI and the + BGP-LS Attribute. The presence of unknown or unexpected TLVs MUST + NOT result in the NLRI or the BGP-LS Attribute being considered + malformed. An example of an unexpected TLV is when a TLV is received + along with an update for a link-state object other than the one that + the TLV is specified as associated with. + + To compare NLRIs with unknown TLVs, all TLVs within the NLRI MUST be + ordered in ascending order by TLV Type. If there are multiple TLVs + of the same type within a single NLRI, then the TLVs sharing the same + type MUST be first in ascending order based on the Length field + followed by ascending order based on the Value field. Comparison of + the Value fields is performed by treating the entire field as opaque + binary data and ordered lexicographically (i.e., treating each byte + of binary data as a symbol to compare, with the symbols ordered by + their numerical value). NLRIs having TLVs that do not follow the + above ordering rules MUST be considered as malformed by a BGP-LS + Propagator. This insistence on canonical ordering ensures that + multiple variant copies of the same NLRI from multiple BGP-LS + Producers and the ambiguity arising therefrom is prevented. + + For both the NLRI and BGP-LS Attribute parts, all TLVs are considered + as optional except where explicitly specified as mandatory or + required in specific conditions. + + The TLVs within the BGP-LS Attribute SHOULD be ordered in ascending + order by TLV type. The BGP-LS Attribute with unordered TLVs MUST NOT + be considered malformed. + + The origination of the same link-state information by multiple BGP-LS + Producers may result in differences and inconsistencies due to the + inclusion or exclusion of optional TLVs. Different optional TLVs in + the NLRI results in multiple NLRIs being generated for the same link- + state object. Different optional TLVs in the BGP-LS Attribute may + result in the propagation of partial information. To address these + inconsistencies, the BGP-LS Consumer will need to recognize and merge + the duplicate information or deal with missing information. The + deployment of BGP-LS Producers that consistently originate the same + set of optional TLVs is recommended to mitigate such situations. + +5.2. The Link-State NLRI + + The MP_REACH_NLRI and MP_UNREACH_NLRI attributes are BGP's containers + for carrying opaque information. This specification defines three + Link-State NLRI types that describe either a node, a link, or a + prefix. + + All non-VPN link, node, and prefix information SHALL be encoded using + AFI 16388 / SAFI 71. VPN link, node, and prefix information SHALL be + encoded using AFI 16388 / SAFI 72. + + For two BGP Speakers to exchange Link-State NLRI, they MUST use BGP + Capabilities Advertisement to ensure that they are both capable of + properly processing such NLRI. This is done as specified in + [RFC4760] by using capability code 1 (multiprotocol BGP), with AFI + 16388 / SAFI 71 for BGP-LS and AFI 16388 / SAFI 72 for BGP-LS-VPN. + + New Link-State NLRI types may be introduced in the future. Since + supported NLRI type values within the address family are not + expressed in the Multiprotocol BGP (MP-BGP) capability [RFC4760], it + is possible that a BGP Speaker has advertised support for BGP-LS but + does not support a particular Link-State NLRI type. To allow the + introduction of new Link-State NLRI types seamlessly in the future + without the need for upgrading all BGP Speakers in the propagation + path (e.g., a route reflector), this document deviates from the + default handling behavior specified by Section 5.4 (paragraph 2) of + [RFC7606] for Link-State address family. An implementation MUST + handle unknown Link-State NLRI types as opaque objects and MUST + preserve and propagate them. + + The format of the Link-State NLRI is shown in the following figures. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | NLRI Type | Total NLRI Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + // Link-State NLRI (variable) // + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 5: Link-State AFI 16388 / SAFI 71 NLRI Format + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | NLRI Type | Total NLRI Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + + Route Distinguisher (8 octets) + + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + // Link-State NLRI (variable) // + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 6: Link-State VPN AFI 16388 / SAFI 72 NLRI Format + + The Total NLRI Length field contains the cumulative length, in + octets, of the rest of the NLRI, not including the NLRI Type field or + itself. For VPN applications, it also includes the length of the + Route Distinguisher. + + +======+===========================+ + | Type | NLRI Type | + +======+===========================+ + | 1 | Node NLRI | + +------+---------------------------+ + | 2 | Link NLRI | + +------+---------------------------+ + | 3 | IPv4 Topology Prefix NLRI | + +------+---------------------------+ + | 4 | IPv6 Topology Prefix NLRI | + +------+---------------------------+ + + Table 1: NLRI Types + + Route Distinguishers are defined and discussed in [RFC4364]. + + The Node NLRI (NLRI Type = 1) is shown in the following figure. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+ + | Protocol-ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Identifier | + + (8 octets) + + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Local Node Descriptors TLV (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 7: The Node NLRI Format + + The Link NLRI (NLRI Type = 2) is shown in the following figure. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+ + | Protocol-ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Identifier | + + (8 octets) + + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Local Node Descriptors TLV (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Remote Node Descriptors TLV (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Link Descriptors TLVs (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 8: The Link NLRI Format + + The IPv4 and IPv6 Prefix NLRIs (NLRI Type = 3 and Type = 4) use the + same format as shown in the following figure. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+ + | Protocol-ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Identifier | + + (8 octets) + + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Local Node Descriptors TLV (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Prefix Descriptors TLVs (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 9: The IPv4/IPv6 Topology Prefix NLRI Format + + The Protocol-ID field can contain one of the following values: + + +=============+==================================+ + | Protocol-ID | NLRI information source protocol | + +=============+==================================+ + | 1 | IS-IS Level 1 | + +-------------+----------------------------------+ + | 2 | IS-IS Level 2 | + +-------------+----------------------------------+ + | 3 | OSPFv2 | + +-------------+----------------------------------+ + | 4 | Direct | + +-------------+----------------------------------+ + | 5 | Static configuration | + +-------------+----------------------------------+ + | 6 | OSPFv3 | + +-------------+----------------------------------+ + + Table 2: Protocol Identifiers + + The 'Direct' and 'Static configuration' protocol types SHOULD be used + when BGP-LS is sourcing local information. For all information + derived from other protocols, the corresponding Protocol-ID MUST be + used. If BGP-LS has direct access to interface information and wants + to advertise a local link, then the Protocol-ID 'Direct' SHOULD be + used. For modeling virtual links, such as described in Section 6, + the Protocol-ID 'Static configuration' SHOULD be used. + + A router may run multiple protocol instances of OSPF or IS-IS whereby + it becomes a border router between multiple IGP domains. Both OSPF + and IS-IS may also run multiple routing protocol instances over the + same link. See [RFC8202] and [RFC6549]. These instances define + independent IGP routing domains. The Identifier field carries an + 8-octet BGP-LS Instance Identifier (Instance-ID) number that is used + to identify the IGP routing domain where the NLRI belongs. The NLRIs + representing link-state objects (nodes, links, or prefixes) from the + same IGP routing instance should have the same BGP-LS Instance-ID. + NLRIs with different BGP-LS Instance-IDs are considered to be from + different IGP routing instances. + + To support multiple IGP instances, an implementation needs to support + the configuration of unique BGP-LS Instance-IDs at the routing + protocol instance level. The BGP-LS Instance-ID 0 is RECOMMENDED to + be used when there is only a single protocol instance in the network + where BGP-LS is operational. 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. This can + allow the BGP-LS Consumer to build an accurate segregated multi- + domain topology based on the BGP-LS Instance-ID. + + When the above-described semantics and recommendations are not + followed, a BGP-LS Consumer may see more than one link-state object + for the same node, link, or prefix (each with a different BGP-LS + Instance-ID) when there are multiple BGP-LS Producers deployed. This + may also result in the BGP-LS Consumers getting an inaccurate + network-wide topology. + + Each Node Descriptor, Link Descriptor, and Prefix Descriptor consists + of one or more TLVs, as described in the following sections. These + Descriptor TLVs are applicable for the Node, Link, and Prefix NLRI + Types for the protocols that are listed in Table 2. Documents + extending BGP-LS specifications with new NLRI Types and/or protocols + MUST specify the NLRI descriptors for them. + + 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. Not doing so can result in duplicate and + inconsistent link-state objects hanging around in the BGP-LS table. + +5.2.1. Node Descriptors + + Each link is anchored by a pair of Router-IDs that are used by the + underlying IGP, namely a 48-bit ISO System-ID for IS-IS and a 32-bit + Router-ID for OSPFv2 and OSPFv3. An IGP may use one or more + additional auxiliary Router-IDs, mainly for Traffic Engineering + purposes. For example, IS-IS may have one or more IPv4 and IPv6 TE + Router-IDs [RFC5305] [RFC6119]. When configured, these auxiliary TE + Router-IDs (TLV 1028/1029) MUST be included in the node attribute + described in Section 5.3.1 and MAY be included in the link attribute + described in Section 5.3.2. The advertisement of the TE Router-IDs + can help a BGP-LS Consumer to correlate multiple link-state objects + (e.g., in different IGP instances or areas/levels) to the same node + in the network. + + It is desirable that the Router-ID assignments inside the Node + Descriptors are globally unique. However, there may be Router-ID + spaces (e.g., ISO) where no global registry exists, or worse, Router- + IDs have been allocated following the private-IP allocation described + in [RFC1918]. BGP-LS uses the Autonomous System Number to + disambiguate the Router-IDs, as described in Section 5.2.1.1. + +5.2.1.1. Globally Unique Node/Link/Prefix Identifiers + + One problem that needs to be addressed is the ability to identify an + IGP node globally (by "globally", we mean within the BGP-LS database + collected by all BGP-LS Speakers that talk to each other). This can + be expressed through the following two requirements: + + (A) The same node MUST NOT be represented by two keys (otherwise, + one node will look like two nodes). + + (B) Two different nodes MUST NOT be represented by the same key + (otherwise, two nodes will look like one node). + + We define an "IGP domain" to be the set of nodes (hence, by + extension, links and prefixes) within which each node has a unique + IGP representation by using the combination of OSPF Area-ID, Router- + ID, Protocol-ID, Multi-Topology Identifier (MT-ID), and BGP-LS + Instance-ID. The problem is that BGP may receive node/link/prefix + information from multiple independent "IGP domains", and we need to + distinguish between them. Moreover, we can't assume there is always + one and only one IGP domain per AS. During IGP transitions, it may + happen that two redundant IGPs are in place. + + Furthermore, in deployments where BGP-LS is used to advertise + topology from multiple ASes, the Autonomous System Number (ASN) is + used to distinguish topology information reported from different + ASes. + + The BGP-LS Instance-ID carried in the Identifier field, as described + earlier along with a set of sub-TLVs described in Section 5.2.1.4, + allows specification of a flexible key for any given node/link + information such that the global uniqueness of the NLRI is ensured. + Since the BGP-LS Instance-ID is operator assigned, its allocation + scheme can ensure that each IGP domain is uniquely identified even + across a multi-AS network. + +5.2.1.2. Local Node Descriptors + + The Local Node Descriptors TLV contains Node Descriptors for the node + anchoring the local end of the link. This is a mandatory TLV in all + three types of NLRIs (node, link, and prefix). The Type is 256. The + length of this TLV is variable. The value contains one or more Node + Descriptor sub-TLVs defined in Section 5.2.1.4. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + // Node Descriptor Sub-TLVs (variable) // + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 10: Local Node Descriptors TLV Format + +5.2.1.3. Remote Node Descriptors + + The Remote Node Descriptors TLV contains Node Descriptors for the + node anchoring the remote end of the link. This is a mandatory TLV + for Link NLRIs. The Type is 257. The length of this TLV is + variable. The value contains one or more Node Descriptor sub-TLVs + defined in Section 5.2.1.4. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + // Node Descriptor Sub-TLVs (variable) // + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 11: Remote Node Descriptors TLV Format + +5.2.1.4. Node Descriptor Sub-TLVs + + The Node Descriptor sub-TLV type code points and lengths are listed + in the following table: + + +====================+================================+==========+ + | Sub-TLV Code Point | Description | Length | + +====================+================================+==========+ + | 512 | Autonomous System | 4 | + +--------------------+--------------------------------+----------+ + | 513 | BGP-LS Identifier (deprecated) | 4 | + +--------------------+--------------------------------+----------+ + | 514 | OSPF Area-ID | 4 | + +--------------------+--------------------------------+----------+ + | 515 | IGP Router-ID | Variable | + +--------------------+--------------------------------+----------+ + + Table 3: Node Descriptor Sub-TLVs + + The sub-TLV values in Node Descriptor TLVs are defined as follows: + + Autonomous System: Opaque value (32-bit AS Number). This is an + optional TLV. The value SHOULD be set to the AS Number associated + with the BGP process originating the link-state information. An + implementation MAY provide a configuration option on the BGP-LS + Producer to use a different value, e.g., to avoid collisions when + using private AS Numbers. + + BGP-LS Identifier: Opaque value (32-bit ID). This is an optional + TLV that has been deprecated by this document (refer to Appendix A + for more details). It MAY be advertised for compatibility with + [RFC7752] implementations. See the final paragraph of this + section for further considerations and a recommended default + value. + + OSPF Area-ID: Used to identify the 32-bit area to which the + information advertised in the NLRI belongs. This is a mandatory + TLV when originating information from OSPF that is derived from + area-scope LSAs. The OSPF Area Identifier allows different NLRIs + of the same router to be differentiated on a per-area basis. It + is not used for NLRIs when carrying information that is derived + from AS-scope LSAs as that information is not associated with a + specific area. + + IGP Router-ID: Opaque value. This is a mandatory TLV when + originating information from IS-IS, OSPF, 'Direct', or 'Static + configuration'. For an IS-IS non-pseudonode, this contains a + 6-octet ISO Node-ID (ISO System-ID). For an IS-IS pseudonode + corresponding to a LAN, this contains the 6-octet ISO Node-ID of + the Designated Intermediate System (DIS) followed by a 1-octet, + nonzero PSN identifier (7 octets in total). For an OSPFv2 or + OSPFv3 non-pseudonode, this contains the 4-octet Router-ID. For + an OSPFv2 pseudonode representing a LAN, this contains the 4-octet + Router-ID of the Designated Router (DR) followed by the 4-octet + IPv4 address of the DR's interface to the LAN (8 octets in total). + Similarly, for an OSPFv3 pseudonode, this contains the 4-octet + Router-ID of the DR followed by the 4-octet interface identifier + of the DR's interface to the LAN (8 octets in total). The TLV + size in combination with the protocol identifier enables the + decoder to determine the type of the node. For 'Direct' or + 'Static configuration', the value SHOULD be taken from an IPv4 or + IPv6 address (e.g., loopback interface) configured on the node. + When the node is running an IGP protocol, an implementation MAY + choose to use the IGP Router-ID for 'Direct' or 'Static + configuration'. + + At most, there MUST be one instance of each sub-TLV type present in + any Node Descriptor. The sub-TLVs within a Node Descriptor MUST be + arranged in ascending order by sub-TLV type. This needs to be done + to compare NLRIs, even when an implementation encounters an unknown + sub-TLV. Using stable sorting, an implementation can do a binary + comparison of NLRIs and hence allow incremental deployment of new key + sub-TLVs. + + The BGP-LS Identifier was introduced by [RFC7752], and its use is + being deprecated by this document. Implementations SHOULD support + the advertisement of this sub-TLV for backward compatibility in + deployments where there are BGP-LS Producer implementations that + conform to [RFC7752] to ensure consistency of NLRI encoding for link- + state objects. The default value of 0 is RECOMMENDED to be used when + a BGP-LS Producer includes this sub-TLV when originating information + into BGP-LS. Implementations SHOULD provide an option to configure + this value for backward compatibility reasons. As a reminder, the + use of the BGP-LS Instance-ID that is carried in the Identifier field + is the way of segregation of link-state objects of different IGP + domains in BGP-LS. + +5.2.2. Link Descriptors + + The Link Descriptor field is a set of Type/Length/Value (TLV) + triplets. The format of each TLV is shown in Section 5.1. The Link + Descriptor TLVs uniquely identify a link among multiple parallel + links between a pair of anchor routers. A link described by the Link + Descriptor TLVs actually is a "half-link", a unidirectional + representation of a logical link. To fully describe a single logical + link, two anchor routers advertise a half-link each, i.e., two Link + NLRIs are advertised for a given point-to-point link. + + A link between two nodes is not considered as complete (or available) + unless it is described by the two Link NLRIs corresponding to the + half-link representation from the pair of anchor nodes. This check + is similar to the 'two-way connectivity check' that is performed by + link-state IGPs. + + An implementation MAY suppress the advertisement of a Link NLRI, + corresponding to a half-link, from a link-state IGP unless the IGP + has verified that the link is being reported in the IS-IS LSP or OSPF + Router LSA by both the nodes connected by that link. This 'two-way + connectivity check' is performed by link-state IGPs during their + computation and can be leveraged before passing information for any + half-link that is reported from these IGPs into BGP-LS. This ensures + that only those link-state IGP adjacencies that are established get + reported via Link NLRIs. Such a 'two-way connectivity check' could + also be required in certain cases (e.g., with OSPF) to obtain the + proper link identifiers of the remote node. + + The format and semantics of the Value fields in most Link Descriptor + TLVs correspond to the format and semantics of Value fields in IS-IS + Extended IS Reachability sub-TLVs, which are defined in [RFC5305], + [RFC5307], and [RFC6119]. Although the encodings for Link Descriptor + TLVs were originally defined for IS-IS, the TLVs can carry data + sourced by either IS-IS or OSPF. + + The following TLVs are defined as Link Descriptors in the Link NLRI: + + +================+===================+============+=============+ + | TLV Code Point | Description | IS-IS TLV/ | Reference | + | | | Sub-TLV | | + +================+===================+============+=============+ + | 258 | Link Local/Remote | 22/4 | [RFC5307], | + | | Identifiers | | Section 1.1 | + +----------------+-------------------+------------+-------------+ + | 259 | IPv4 interface | 22/6 | [RFC5305], | + | | address | | Section 3.2 | + +----------------+-------------------+------------+-------------+ + | 260 | IPv4 neighbor | 22/8 | [RFC5305], | + | | address | | Section 3.3 | + +----------------+-------------------+------------+-------------+ + | 261 | IPv6 interface | 22/12 | [RFC6119], | + | | address | | Section 4.2 | + +----------------+-------------------+------------+-------------+ + | 262 | IPv6 neighbor | 22/13 | [RFC6119], | + | | address | | Section 4.3 | + +----------------+-------------------+------------+-------------+ + | 263 | Multi-Topology | --- | Section | + | | Identifier | | 5.2.2.1 | + +----------------+-------------------+------------+-------------+ + + Table 4: Link Descriptor TLVs + + The information about a link present in the LSA/LSP originated by the + local node of the link determines the set of TLVs in the Link + Descriptor of the link. + + If interface and neighbor addresses, either IPv4 or IPv6, are + present, then the interface/neighbor address TLVs MUST be + included, and the Link Local/Remote Identifiers TLV MUST NOT be + included in the Link Descriptor. The Link Local/Remote + Identifiers TLV MAY be included in the link attribute when + available. IPv4/IPv6 link-local addresses MUST NOT be carried in + the IPv4/IPv6 interface/neighbor address TLVs (259/260/261/262) as + descriptors of a link since they are not considered unique. + + If interface and neighbor addresses are not present and the link + local/remote identifiers are present, then the Link Local/Remote + Identifiers TLV MUST be included in the Link Descriptor. The Link + Local/Remote identifiers MUST be included in the Link Descriptor + and in the case of links having only IPv6 link-local addressing on + them. + + The Multi-Topology Identifier TLV MUST be included as a Link + Descriptor if the underlying IGP link object is associated with a + non-default topology. + + The TLVs/sub-TLVs corresponding to the interface addresses and/or the + local/remote identifiers may not always be signaled in the IGPs + unless their advertisement is enabled specifically. In such cases, + it is valid to advertise a BGP-LS Link NLRI without any of these + identifiers. + +5.2.2.1. Multi-Topology Identifier + + The Multi-Topology Identifier (MT-ID) TLV carries one or more IS-IS + or OSPF Multi-Topology Identifiers for a link, node, or prefix. + + The semantics of the IS-IS MT-ID are defined in Sections 7.1 and 7.2 + of [RFC5120]. The semantics of the OSPF MT-ID are defined in + Section 3.7 of [RFC4915]. If the value in the MT-ID TLV is derived + from OSPF, then the upper R bits of the MT-ID field MUST be set to 0 + and only the values from 0 to 127 are valid for the MT-ID. + + The format of the MT-ID TLV is shown in the following figure. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length=2*n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |R R R R| Multi-Topology ID 1 | .... // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // .... |R R R R| Multi-Topology ID n | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 12: Multi-Topology Identifier TLV Format + + The Type is 263, the length is 2*n, and n is the number of MT-IDs + carried in the TLV. + + The MT-ID TLV MAY be included as a Link Descriptor, as a Prefix + Descriptor, or in the BGP-LS Attribute of a Node NLRI. When included + as a Link or Prefix Descriptor, only a single MT-ID TLV containing + the MT-ID of the topology where the link or the prefix is reachable + is allowed. In case one wants to advertise multiple topologies for a + given Link or Prefix Descriptor, multiple NLRIs MUST be generated + where each NLRI contains a single unique MT-ID. When used as a Link + or Prefix Descriptor for IS-IS, the Bits R are reserved and MUST be + set to 0 (as per Section 7.2 of [RFC5120]) when originated and + ignored on receipt. + + In the BGP-LS Attribute of a Node NLRI, one MT-ID TLV containing the + array of MT-IDs of all topologies where the node is reachable is + allowed. When used in the Node Attribute TLV for IS-IS, the Bits R + are set as per Section 7.1 of [RFC5120]. + +5.2.3. Prefix Descriptors + + The Prefix Descriptor field is a set of Type/Length/Value (TLV) + triplets. Prefix Descriptor TLVs uniquely identify an IPv4 or IPv6 + prefix originated by a node. The following TLVs are defined as + Prefix Descriptors in the IPv4/IPv6 Prefix NLRI: + + +================+===========================+==========+===========+ + | TLV Code Point | Description | Length | Reference | + +================+===========================+==========+===========+ + | 263 | Multi-Topology | variable | Section | + | | Identifier | | 5.2.2.1 | + +----------------+---------------------------+----------+-----------+ + | 264 | OSPF Route Type | 1 | Section | + | | | | 5.2.3.1 | + +----------------+---------------------------+----------+-----------+ + | 265 | IP Reachability | variable | Section | + | | Information | | 5.2.3.2 | + +----------------+---------------------------+----------+-----------+ + + Table 5: Prefix Descriptor TLVs + + The Multi-Topology Identifier TLV MUST be included in the Prefix + Descriptor if the underlying IGP prefix object is associated with a + non-default topology. + +5.2.3.1. OSPF Route Type + + The OSPF Route Type TLV is an optional TLV corresponding to Prefix + NLRIs originated from OSPF. It is used to identify the OSPF route + type of the prefix. An OSPF prefix MAY be advertised in the OSPF + domain with multiple route types. The Route Type TLV allows the + discrimination of these advertisements. The OSPF Route Type TLV MUST + be included in the advertisement when the type is either being + signaled explicitly in the underlying LSA or can be determined via + another LSA for the same prefix when it is not signaled explicitly + (e.g., in the case of OSPFv2 Extended Prefix Opaque LSA [RFC7684]). + The route type advertised in the OSPFv2 Extended Prefix TLV + (Section 2.1 of [RFC7684]) does not make a distinction between Type 1 + and 2 for AS external and Not-So-Stubby Area (NSSA) external routes. + In this case, the route type to be used in the BGP-LS advertisement + can be determined by checking the OSPFv2 External or NSSA External + LSA for the prefix. A similar check for the base OSPFv2 LSAs can be + done to determine the route type to be used when the route type value + 0 is carried in the OSPFv2 Extended Prefix TLV. + + The format of the OSPF Route Type TLV is shown in the following + figure. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Route Type | + +-+-+-+-+-+-+-+-+ + + Figure 13: OSPF Route Type TLV Format + + The Type and Length fields of the TLV are defined in Table 5. The + Route Type field follows the route types defined in the OSPF protocol + and can be one of the following: + + * Intra-Area (0x1) + + * Inter-Area (0x2) + + * External 1 (0x3) + + * External 2 (0x4) + + * NSSA 1 (0x5) + + * NSSA 2 (0x6) + +5.2.3.2. IP Reachability Information + + The IP Reachability Information TLV is a mandatory TLV for IPv4 & + IPv6 Prefix NLRI types. The TLV contains one IP address prefix (IPv4 + or IPv6) originally advertised in the IGP topology. A router SHOULD + advertise an IP Prefix NLRI for each of its BGP next hops. The + format of the IP Reachability Information TLV is shown in the + following figure: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prefix Length | IP Prefix (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 14: IP Reachability Information TLV Format + + The Type and Length fields of the TLV are defined in Table 5. The + following two fields determine the reachability information of the + address family. The Prefix Length field contains the length of the + prefix in bits. The IP Prefix field contains an IP address prefix + followed by the minimum number of trailing bits needed to make the + end of the field fall on an octet boundary. Any trailing bits MUST + be set to 0. Thus, the IP Prefix field contains the most significant + octets of the prefix, i.e., 1 octet for prefix length 1 up to 8, 2 + octets for prefix length 9 up to 16, 3 octets for prefix length 17 up + to 24, 4 octets for prefix length 25 up to 32, etc. + +5.3. The BGP-LS Attribute + + The BGP-LS Attribute (assigned value 29 by IANA) is an optional, non- + transitive BGP Attribute that is used to carry link, node, and prefix + parameters and attributes. It is defined as a set of Type/Length/ + Value (TLV) triplets, as described in the following section. This + attribute SHOULD only be included with Link-State NLRIs. The use of + this attribute for other address families is outside the scope of + this document. + + The Node Attribute TLVs, Link Attribute TLVs, and Prefix Attribute + TLVs are sets of TLVs that may be encoded in the BGP-LS Attribute + associated with a Node NLRI, Link NLRI, and Prefix NLRI respectively. + + The size of the BGP-LS Attribute may potentially grow large, + depending on the amount of link-state information associated with a + single Link-State NLRI. The BGP specification [RFC4271] mandates a + maximum BGP message size of 4096 octets. It is RECOMMENDED that + implementations support the extended message size for BGP [RFC8654] + to accommodate a larger size of information within the BGP-LS + Attribute. BGP-LS Producers MUST ensure that the TLVs included in + the BGP-LS Attribute does not result in a BGP UPDATE message for a + single Link-State NLRI that crosses the maximum limit for a BGP + message. + + An implementation MAY adopt mechanisms to avoid this problem that may + be based on the BGP-LS Consumer applications' requirement; these + mechanisms are beyond the scope of this specification. However, if + an implementation chooses to mitigate the problem by excluding some + TLVs from the BGP-LS Attribute, this exclusion SHOULD be done + consistently by all BGP-LS Producers within a given BGP-LS domain. + In the event of inconsistent exclusion of TLVs from the BGP-LS + Attribute, the result would be a differing set of attributes of the + link-state object being propagated to BGP-LS Consumers based on the + BGP Decision Process at BGP-LS Propagators. + + When a BGP-LS Propagator finds that it is exceeding the maximum BGP + message size due to the addition or update of some other BGP + Attribute (e.g., AS_PATH), it MUST consider the BGP-LS Attribute to + be malformed, apply the 'Attribute Discard' error-handling approach + [RFC7606], and handle the propagation as described in Section 8.2.2. + When a BGP-LS Propagator needs to perform 'Attribute Discard' for + reducing the BGP UPDATE message size as specified in Section 4 of + [RFC8654], it MUST first discard the BGP-LS Attribute to enable the + detection and diagnosis of this error condition as discussed in + Section 8.2.2. This brings the deployment consideration that the + consistent propagation of BGP-LS information with a BGP UPDATE + message size larger than 4096 octets can only happen along a set of + BGP Speakers that all support the contents of [RFC8654]. + +5.3.1. Node Attribute TLVs + + The following Node Attribute TLVs are defined for the BGP-LS + Attribute associated with a Node NLRI: + + +================+================+==========+=============+ + | TLV Code Point | Description | Length | Reference | + +================+================+==========+=============+ + | 263 | Multi-Topology | variable | Section | + | | Identifier | | 5.2.2.1 | + +----------------+----------------+----------+-------------+ + | 1024 | Node Flag Bits | 1 | Section | + | | | | 5.3.1.1 | + +----------------+----------------+----------+-------------+ + | 1025 | Opaque Node | variable | Section | + | | Attribute | | 5.3.1.5 | + +----------------+----------------+----------+-------------+ + | 1026 | Node Name | variable | Section | + | | | | 5.3.1.3 | + +----------------+----------------+----------+-------------+ + | 1027 | IS-IS Area | variable | Section | + | | Identifier | | 5.3.1.2 | + +----------------+----------------+----------+-------------+ + | 1028 | IPv4 Router-ID | 4 | [RFC5305], | + | | of Local Node | | Section 4.3 | + +----------------+----------------+----------+-------------+ + | 1029 | IPv6 Router-ID | 16 | [RFC6119], | + | | of Local Node | | Section 4.1 | + +----------------+----------------+----------+-------------+ + + Table 6: Node Attribute TLVs + +5.3.1.1. Node Flag Bits TLV + + The Node Flag Bits TLV carries a bitmask describing node attributes. + The value is a 1-octet-length bit array of flags, where each bit + represents a node-operational state or attribute. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |O|T|E|B|R|V| | + +-+-+-+-+-+-+-+-+ + + Figure 15: Node Flag Bits TLV Format + + The bits are defined as follows: + + +=====+==============+============+ + | Bit | Description | Reference | + +=====+==============+============+ + | 'O' | Overload Bit | [ISO10589] | + +-----+--------------+------------+ + | 'A' | Attached Bit | [ISO10589] | + +-----+--------------+------------+ + | 'E' | External Bit | [RFC2328] | + +-----+--------------+------------+ + | 'B' | ABR Bit | [RFC2328] | + +-----+--------------+------------+ + | 'R' | Router Bit | [RFC5340] | + +-----+--------------+------------+ + | 'V' | V6 Bit | [RFC5340] | + +-----+--------------+------------+ + + Table 7: Node Flag Bits Definitions + + The bits that are not defined MUST be set to 0 by the originator and + MUST be ignored by the receiver. + +5.3.1.2. IS-IS Area Identifier TLV + + An IS-IS node can be part of only a single IS-IS area. However, a + node can have multiple synonymous area addresses. Each of these area + addresses is carried in the IS-IS Area Identifier TLV. If multiple + area addresses are present, multiple TLVs are used to encode them. + The IS-IS Area Identifier TLV may be present in the BGP-LS Attribute + only when advertised in the Link-State Node NLRI. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // IS-IS Area Identifier (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 16: IS-IS Area Identifier TLV Format + +5.3.1.3. Node Name TLV + + The Node Name TLV is optional. The encoding semantics for the node + name has been borrowed from [RFC5301]. The Value field identifies + the symbolic name of the router node. This symbolic name can be the + Fully Qualified Domain Name (FQDN) for the router, a substring of the + FQDN (e.g., a hostname), or any string that an operator wants to use + for the router. The use of the FQDN or a substring of it is strongly + RECOMMENDED. The maximum length of the Node Name TLV is 255 octets. + + The Value field is encoded in 7-bit ASCII. If a user interface for + configuring or displaying this field permits Unicode characters, then + the user interface is responsible for applying the ToASCII and/or + ToUnicode algorithm as described in [RFC5890] to achieve the correct + format for transmission or display. + + [RFC5301] describes an IS-IS-specific extension, and [RFC5642] + describes an OSPF extension for the advertisement of the node name, + which may be encoded in the Node Name TLV. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Node Name (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 17: Node Name Format + +5.3.1.4. Local IPv4/IPv6 Router-ID TLVs + + The local IPv4/IPv6 Router-ID TLVs are used to describe auxiliary + Router-IDs that the IGP might be using, e.g., for TE and migration + purposes such as correlating a Node-ID between different protocols. + If there is more than one auxiliary Router-ID of a given type, then + each one is encoded as a separate TLV. + +5.3.1.5. Opaque Node Attribute TLV + + The Opaque Node Attribute TLV is an envelope that transparently + carries optional Node Attribute TLVs advertised by a router. An + originating router shall use this TLV for encoding information + specific to the protocol advertised in the NLRI header Protocol-ID + field or new protocol extensions to the protocol as advertised in the + NLRI header Protocol-ID field for which there is no protocol-neutral + representation in the BGP Link-State NLRI. The primary use of the + Opaque Node Attribute TLV is to bridge the document lag between a new + IGP link-state attribute and its protocol-neutral BGP-LS extension + being defined. Once the protocol-neutral BGP-LS extensions are + defined, the BGP-LS implementations may still need to advertise the + information both within the Opaque Attribute TLV and the new TLV + definition for incremental deployment and transition. + + In the case of OSPF, this TLV MUST NOT be used to advertise TLVs + other than those in the OSPF Router Information (RI) LSA [RFC7770]. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Opaque Node Attributes (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 18: Opaque Node Attribute Format + + The Type is as specified in Table 6. The length is variable. + +5.3.2. Link Attribute TLVs + + Link Attribute TLVs are TLVs that may be encoded in the BGP-LS + Attribute with a Link NLRI. Each 'Link Attribute' is a Type/Length/ + Value (TLV) triplet formatted as defined in Section 5.1. The format + and semantics of the Value fields in some Link Attribute TLVs + correspond to the format and semantics of the Value fields in IS-IS + Extended IS Reachability sub-TLVs, which are defined in [RFC5305] and + [RFC5307]. Other Link Attribute TLVs are defined in this document. + Although the encodings for Link Attribute TLVs were originally + defined for IS-IS, the TLVs can carry data sourced by either IS-IS or + OSPF. + + The following Link Attribute TLVs are defined for the BGP-LS + Attribute associated with a Link NLRI: + + +================+=================+============+=============+ + | TLV Code Point | Description | IS-IS TLV/ | Reference | + | | | Sub-TLV | | + +================+=================+============+=============+ + | 1028 | IPv4 Router-ID | 134/--- | [RFC5305], | + | | of Local Node | | Section 4.3 | + +----------------+-----------------+------------+-------------+ + | 1029 | IPv6 Router-ID | 140/--- | [RFC6119], | + | | of Local Node | | Section 4.1 | + +----------------+-----------------+------------+-------------+ + | 1030 | IPv4 Router-ID | 134/--- | [RFC5305], | + | | of Remote Node | | Section 4.3 | + +----------------+-----------------+------------+-------------+ + | 1031 | IPv6 Router-ID | 140/--- | [RFC6119], | + | | of Remote Node | | Section 4.1 | + +----------------+-----------------+------------+-------------+ + | 1088 | Administrative | 22/3 | [RFC5305], | + | | group (color) | | Section 3.1 | + +----------------+-----------------+------------+-------------+ + | 1089 | Maximum link | 22/9 | [RFC5305], | + | | bandwidth | | Section 3.4 | + +----------------+-----------------+------------+-------------+ + | 1090 | Max. reservable | 22/10 | [RFC5305], | + | | link bandwidth | | Section 3.5 | + +----------------+-----------------+------------+-------------+ + | 1091 | Unreserved | 22/11 | [RFC5305], | + | | bandwidth | | Section 3.6 | + +----------------+-----------------+------------+-------------+ + | 1092 | TE Default | 22/18 | Section | + | | Metric | | 5.3.2.3 | + +----------------+-----------------+------------+-------------+ + | 1093 | Link Protection | 22/20 | [RFC5307], | + | | Type | | Section 1.2 | + +----------------+-----------------+------------+-------------+ + | 1094 | MPLS Protocol | --- | Section | + | | Mask | | 5.3.2.2 | + +----------------+-----------------+------------+-------------+ + | 1095 | IGP Metric | --- | Section | + | | | | 5.3.2.4 | + +----------------+-----------------+------------+-------------+ + | 1096 | Shared Risk | --- | Section | + | | Link Group | | 5.3.2.5 | + +----------------+-----------------+------------+-------------+ + | 1097 | Opaque Link | --- | Section | + | | Attribute | | 5.3.2.6 | + +----------------+-----------------+------------+-------------+ + | 1098 | Link Name | --- | Section | + | | | | 5.3.2.7 | + +----------------+-----------------+------------+-------------+ + + Table 8: Link Attribute TLVs + +5.3.2.1. IPv4/IPv6 Router-ID TLVs + + The local/remote IPv4/IPv6 Router-ID TLVs are used to describe + auxiliary Router-IDs that the IGP might be using, e.g., for TE + purposes. All auxiliary Router-IDs of both the local and the remote + node MUST be included in the link attribute of each Link NLRI. If + there is more than one auxiliary Router-ID of a given type, then + multiple TLVs are used to encode them. + +5.3.2.2. MPLS Protocol Mask TLV + + The MPLS Protocol Mask TLV carries a bitmask describing which MPLS + signaling protocols are enabled. The length of this TLV is 1. The + value is a bit array of 8 flags, where each bit represents an MPLS + Protocol capability. + + Generation of the MPLS Protocol Mask TLV is only valid for and SHOULD + only be used with originators that have local link insight, for + example, the Protocol-IDs 'Static configuration' or 'Direct' as per + Table 2. The MPLS Protocol Mask TLV MUST NOT be included in NLRIs + with the other Protocol-IDs listed in Table 2. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |L|R| Reserved | + +-+-+-+-+-+-+-+-+ + + Figure 19: MPLS Protocol Mask TLV + + The following bits are defined, and the reserved bits MUST be set to + zero and SHOULD be ignored on receipt: + + +=====+=============================================+===========+ + | Bit | Description | Reference | + +=====+=============================================+===========+ + | 'L' | Label Distribution Protocol (LDP) | [RFC5036] | + +-----+---------------------------------------------+-----------+ + | 'R' | Extension to RSVP for LSP Tunnels (RSVP-TE) | [RFC3209] | + +-----+---------------------------------------------+-----------+ + + Table 9: MPLS Protocol Mask TLV Codes + + The bits that are not defined MUST be set to 0 by the originator and + MUST be ignored by the receiver. + +5.3.2.3. TE Default Metric TLV + + The TE Default Metric TLV carries the Traffic Engineering metric for + this link. The length of this TLV is fixed at 4 octets. If a source + protocol uses a metric width of fewer than 32 bits, then the high- + order bits of this field MUST be padded with zero. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | TE Default Link Metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 20: TE Default Metric TLV Format + +5.3.2.4. IGP Metric TLV + + The IGP Metric TLV carries the metric for this link. The length of + this TLV is variable, depending on the metric width of the underlying + protocol. IS-IS small metrics are 6 bits in size but are encoded in + a 1-octet field; therefore, the two most significant bits of the + field MUST be set to 0 by the originator and MUST be ignored by the + receiver. OSPF link metrics have a length of 2 octets. IS-IS wide + metrics have a length of 3 octets. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // IGP Link Metric (variable length) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 21: IGP Metric TLV Format + +5.3.2.5. Shared Risk Link Group TLV + + The Shared Risk Link Group (SRLG) TLV carries the Shared Risk Link + Group information (see Section 2.3 ("Shared Risk Link Group + Information") of [RFC4202]). It contains a data structure consisting + of a (variable) list of SRLG values, where each element in the list + has 4 octets, as shown in Figure 22. The length of this TLV is 4 * + (number of SRLG values). + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Shared Risk Link Group Value | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // ............ // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Shared Risk Link Group Value | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 22: Shared Risk Link Group TLV Format + + The SRLG TLV for OSPF-TE is defined in [RFC4203]. In IS-IS, the SRLG + information is carried in two different TLVs: the GMPLS-SRLG TLV (for + IPv4) (Type 138) defined in [RFC5307] and the IPv6 SRLG TLV (Type + 139) defined in [RFC6119]. Both IPv4 and IPv6 SRLG information is + carried in a single TLV. + +5.3.2.6. Opaque Link Attribute TLV + + The Opaque Link Attribute TLV is an envelope that transparently + carries optional Link Attribute TLVs advertised by a router. An + originating router shall use this TLV for encoding information + specific to the protocol advertised in the NLRI header Protocol-ID + field or new protocol extensions to the protocol as advertised in the + NLRI header Protocol-ID field for which there is no protocol-neutral + representation in the BGP Link-State NLRI. The primary use of the + Opaque Link Attribute TLV is to bridge the document lag between a new + IGP link-state attribute and its 'protocol-neutral' BGP-LS extension + being defined. Once the protocol-neutral BGP-LS extensions are + defined, the BGP-LS implementations may still need to advertise the + information both within the Opaque Attribute TLV and the new TLV + definition for incremental deployment and transition. + + In the case of OSPFv2, this TLV MUST NOT be used to advertise + information carried using TLVs other than those in the OSPFv2 + Extended Link Opaque LSA [RFC7684]. In the case of OSPFv3, this TLV + MUST NOT be used to advertise TLVs other than those in the OSPFv3 E- + Router-LSA or E-Link-LSA [RFC8362]. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Opaque Link Attributes (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 23: Opaque Link Attribute TLV Format + +5.3.2.7. Link Name TLV + + The Link Name TLV is optional. The Value field identifies the + symbolic name of the router link. This symbolic name can be the FQDN + for the link, a substring of the FQDN, or any string that an operator + wants to use for the link. The use of the FQDN or a substring of it + is strongly RECOMMENDED. The maximum length of the Link Name TLV is + 255 octets. + + The Value field is encoded in 7-bit ASCII. If a user interface for + configuring or displaying this field permits Unicode characters, then + the user interface is responsible for applying the ToASCII and/or + ToUnicode algorithm as described in [RFC5890] to achieve the correct + format for transmission or display. + + How a router derives and injects link names is outside of the scope + of this document. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Link Name (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 24: Link Name TLV Format + +5.3.3. Prefix Attribute TLVs + + Prefixes are learned from the IGP topology (IS-IS or OSPF) with a set + of IGP attributes (such as metric, route tags, etc.) that are + advertised in the BGP-LS Attribute with Prefix NLRI types 3 and 4. + + The following Prefix Attribute TLVs are defined for the BGP-LS + Attribute associated with a Prefix NLRI: + + +================+=================+==========+=================+ + | TLV Code Point | Description | Length | Reference | + +================+=================+==========+=================+ + | 1152 | IGP Flags | 1 | Section 5.3.3.1 | + +----------------+-----------------+----------+-----------------+ + | 1153 | IGP Route Tag | 4*n | [RFC5130] | + +----------------+-----------------+----------+-----------------+ + | 1154 | IGP Extended | 8*n | [RFC5130] | + | | Route Tag | | | + +----------------+-----------------+----------+-----------------+ + | 1155 | Prefix Metric | 4 | [RFC5305] | + +----------------+-----------------+----------+-----------------+ + | 1156 | OSPF Forwarding | 4 | [RFC2328] | + | | Address | | | + +----------------+-----------------+----------+-----------------+ + | 1157 | Opaque Prefix | variable | Section 5.3.3.6 | + | | Attribute | | | + +----------------+-----------------+----------+-----------------+ + + Table 10: Prefix Attribute TLVs + +5.3.3.1. IGP Flags TLV + + The IGP Flags TLV contains one octet of IS-IS and OSPF flags and bits + originally assigned to the prefix. The IGP Flags TLV is encoded as + follows: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |D|N|L|P| | + +-+-+-+-+-+-+-+-+ + + Figure 25: IGP Flag TLV Format + + The Value field contains bits defined according to the table below: + + +=====+===========================+===========+ + | Bit | Description | Reference | + +=====+===========================+===========+ + | 'D' | IS-IS Up/Down Bit | [RFC5305] | + +-----+---------------------------+-----------+ + | 'N' | OSPF "no unicast" Bit | [RFC5340] | + +-----+---------------------------+-----------+ + | 'L' | OSPF "local address" Bit | [RFC5340] | + +-----+---------------------------+-----------+ + | 'P' | OSPF "propagate NSSA" Bit | [RFC5340] | + +-----+---------------------------+-----------+ + + Table 11: IGP Flag Bits Definitions + + The bits that are not defined MUST be set to 0 by the originator and + MUST be ignored by the receiver. + +5.3.3.2. IGP Route Tag TLV + + The IGP Route Tag TLV carries original IGP Tags (IS-IS [RFC5130] or + OSPF) of the prefix and is encoded as follows: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Route Tags (one or more) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 26: IGP Route Tag TLV Format + + The length is a multiple of 4. + + The Value field contains one or more Route Tags as learned in the IGP + topology. + +5.3.3.3. IGP Extended Route Tag TLV + + The IGP Extended Route Tag TLV carries IS-IS Extended Route Tags of + the prefix [RFC5130] and is encoded as follows: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Extended Route Tag (one or more) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 27: IGP Extended Route Tag TLV Format + + The length is a multiple of 8. + + The Extended Route Tag field contains one or more Extended Route Tags + as learned in the IGP topology. + +5.3.3.4. Prefix Metric TLV + + The Prefix Metric TLV is an optional attribute and may only appear + once. If present, it carries the metric of the prefix as known in + the IGP topology, as described in Section 4 of [RFC5305] (and + therefore represents the reachability cost to the prefix). If not + present, it means that the prefix is advertised without any + reachability. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 28: Prefix Metric TLV Format + + The length is 4. + +5.3.3.5. OSPF Forwarding Address TLV + + The OSPF Forwarding Address TLV [RFC2328] [RFC5340] carries the OSPF + forwarding address as known in the original OSPF advertisement. The + forwarding address can be either IPv4 or IPv6. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Forwarding Address (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 29: OSPF Forwarding Address TLV Format + + The length is 4 for an IPv4 forwarding address and 16 for an IPv6 + forwarding address. + +5.3.3.6. Opaque Prefix Attribute TLV + + The Opaque Prefix Attribute TLV is an envelope that transparently + carries optional Prefix Attribute TLVs advertised by a router. An + originating router shall use this TLV for encoding information + specific to the protocol advertised in the NLRI header Protocol-ID + field or it shall use new protocol extensions for the protocol as + advertised in the NLRI header Protocol-ID field for which there is no + protocol-neutral representation in the BGP Link-State NLRI. The + primary use of the Opaque Prefix Attribute TLV is to bridge the + document lag between a new IGP link-state attribute and its protocol- + neutral BGP-LS extension being defined. Once the protocol-neutral + BGP-LS extensions are defined, the BGP-LS implementations may still + need to advertise the information both within the Opaque Attribute + TLV and the new TLV definition for incremental deployment and + transition. + + In the case of OSPFv2, this TLV MUST NOT be used to advertise + information carried using TLVs other than those in the OSPFv2 + Extended Prefix Opaque LSA [RFC7684]. In the case of OSPFv3, this + TLV MUST NOT be used to advertise TLVs other than those in the OSPFv3 + E-Inter-Area-Prefix-LSA, E-Intra-Area-Prefix-LSA, E-AS-External-LSA, + and E-NSSA-LSA [RFC8362]. + + The format of the TLV is as follows: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + // Opaque Prefix Attributes (variable) // + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 30: Opaque Prefix Attribute TLV Format + + The Type is as specified in Table 10. The length is variable. + +5.4. Private Use + + TLVs for Vendor Private Use are supported using the code point range + reserved as indicated in Section 7. For such TLV use in the NLRI or + BGP-LS Attribute, the format described in Section 5.1 is to be used + and a 4-octet field MUST be included as the first field in the value + to carry the Enterprise Code. For a private use NLRI type, a 4-octet + field MUST be included as the first field in the NLRI immediately + following the Total NLRI Length field of the Link-State NLRI format + as described in Section 5.2 to carry the Enterprise Code [ENTNUM]. + This enables the use of vendor-specific extensions without conflicts. + + Multiple instances of private-use TLVs MAY appear in the BGP-LS + Attribute. + +5.5. BGP Next-Hop Information + + BGP link-state information for both IPv4 and IPv6 networks can be + carried over either an IPv4 BGP session or an IPv6 BGP session. If + an IPv4 BGP session is used, then the next hop in the MP_REACH_NLRI + SHOULD be an IPv4 address. Similarly, if an IPv6 BGP session is + used, then the next hop in the MP_REACH_NLRI SHOULD be an IPv6 + address. Usually, the next hop will be set to the local endpoint + address of the BGP session. The next-hop address MUST be encoded as + described in [RFC4760]. The Length field of the next-hop address + will specify the next-hop address family. If the next-hop length is + 4, then the next hop is an IPv4 address; if the next-hop length is + 16, then it is a global IPv6 address; and if the next-hop length is + 32, then there is one global IPv6 address followed by an IPv6 link- + local address. The IPv6 link-local address should be used as + described in [RFC2545]. For VPN Subsequent Address Family Identifier + (SAFI), as per custom, an 8-byte Route Distinguisher set to all zero + is prepended to the next hop. + + The BGP Next-Hop is used by each BGP-LS Speaker to validate the NLRI + it receives. In case identical NLRIs are sourced by multiple BGP-LS + Producers, the BGP Next-Hop is used to tiebreak as per the standard + BGP path decision process. This specification doesn't mandate any + rule regarding the rewrite of the BGP Next-Hop. + +5.6. Inter-AS Links + + The main source of TE information is the IGP, which is not active on + inter-AS links. In some cases, the IGP may have information of + inter-AS links [RFC5392] [RFC9346]. In other cases, an + implementation SHOULD provide a means to inject inter-AS links into + BGP-LS. The exact mechanism used to advertise the inter-AS links is + outside the scope of this document. + +5.7. OSPF Virtual Links and Sham Links + + In an OSPF [RFC2328] [RFC5340] network, OSPF virtual links serve to + connect physically separate components of the backbone to establish/ + maintain continuity of the backbone area. While OSPF virtual links + are modeled as point-to-point, unnumbered links in the OSPF topology, + their characteristics and purpose are different from other types of + links in the OSPF topology. They are advertised using a distinct + "virtual link" type in OSPF LSAs. The mechanism for the + advertisement of OSPF virtual links via BGP-LS is outside the scope + of this document. + + In an OSPF network, sham links [RFC4577] [RFC6565] are used to + provide intra-area connectivity between VPN Routing and Forwarding + (VRF) instances on Provider Edge (PE) routers over the VPN provider's + network. These links are advertised in OSPF as point-to-point, + unnumbered links and represent connectivity over a service provider + network using encapsulation mechanisms like MPLS. As such, the + mechanism for the advertisement of OSPF sham links follows the same + procedures as other point-to-point, unnumbered links as described + previously in this document. + +5.8. OSPFv2 Type 4 Summary-LSA & OSPFv3 Inter-Area-Router-LSA + + OSPFv2 [RFC2328] defines the type 4 summary-LSA and OSPFv3 [RFC5340] + defines the inter-area-router-LSA for an Area Border Router (ABR) to + advertise reachability to an AS Border Router (ASBR) that is external + to the area yet internal to the AS. The nature of information + advertised by OSPF using this type of LSA does not map to either a + node, a link, or a prefix as discussed in this document. Therefore, + the mechanism for the advertisement of the information carried by + these LSAs is outside the scope of this document. + +5.9. Handling of Unreachable IGP Nodes + + Consider an OSPF network as shown in Figure 31, where R2 and R3 are + the BGP-LS Producers and also the OSPF Area Border Routers (ABRs). + The link between R2 and R3 is in area 0, while the other links are in + area 1 as indicated by the a0 and a1 references respectively against + the links. + + A BGP-LS Consumer talks to BGP route reflector RR0, which is a BGP-LS + Propagator that is aggregating the BGP-LS feed from BGP-LS Producers + R2 and R3. Here, R2 and R3 provide a redundant topology feed via + BGP-LS to RR0. Normally, RR0 would receive two identical copies of + all the Link-State NLRIs from both R2 and R3 and it would pick one of + them (say R2) based on the standard BGP Decision Process. + + BGP-LS Consumer + ^ + | + RR0 + (BGP Route Reflector) + / \ + / \ + a1 / a0 \ a1 + R1 ------ R2 -------- R3 ------ R4 + a1 | | a1 + | | + R5 ---------------------------- R6 + a1 + + Figure 31: Incorrect Reporting Due to BGP Path Selection + + Consider a scenario where the link between R5 and R6 is lost (thereby + partitioning the area 1), and consider its impact on the OSPF LSDB at + R2 and R3. + + Now, R5 will remove the link R5-R6 from its Router LSA, and this + updated LSA is available at R2. R2 also has a stale copy of R6's + Router LSA that still has the link R6-R5 in it. Based on this view + in its LSDB, R2 will advertise only the half-link R6-R5 that it + derives from R6's stale Router LSA. + + At the same time, R6 has removed the link R6-R5 from its Router LSA, + and this updated LSA is available at R3. Similarly, R3 also has a + stale copy of R5's Router LSA having the link R5-R6 in it. Based on + its LSDB, R3 will advertise only the half-link R5-R6 that it derives + from R5's stale Router LSA. + + Now, the BGP-LS Consumer receives both the Link NLRIs corresponding + to the half-links from R2 and R3 via RR0. When viewed together, it + would not detect or realize that area 1 is partitioned. Also, if R2 + continues to report Node and Prefix NLRIs corresponding to the stale + copy of R4's and R6's Router LSAs, then RR0 could prefer them over + the valid Node and Prefix NLRIs for R4 and R6 that it is receiving + from R3 depending on RR0's BGP Decision Process. This would result + in the BGP-LS Consumer getting stale and inaccurate topology + information. This problem scenario is avoided if R2 were to not + advertise the link-state information corresponding to R4 and R6 and + if R3 were to not advertise similarly for R1 and R5. + + A BGP-LS Producer SHOULD withdraw all link-state objects advertised + by it in BGP when the node that originated its corresponding LSPs/ + LSAs is determined to have become unreachable in the IGP. An + implementation MAY continue to advertise link-state objects + corresponding to unreachable nodes in a deployment use case where the + BGP-LS Consumer is interested in receiving a topology feed + corresponding to a complete IGP LSDB view. In such deployments, it + is expected that the problem described above is mitigated by the BGP- + LS Consumer via appropriate handling of such a topology feed in + addition to the use of either a direct BGP peering with the BGP-LS + Producer nodes or mechanisms such as those described in [RFC7911] + when using RRs. Details of these mechanisms are outside the scope of + this document. + + If the BGP-LS Producer does withdraw link-state objects associated + with an IGP node based on the failure of reachability check for that + node, then it MUST re-advertise those link-state objects after that + node becomes reachable again in the IGP domain. + +5.10. Router-ID Anchoring Example: ISO Pseudonode + + The encoding of a broadcast LAN in IS-IS provides a good example of + how Router-IDs are encoded. Consider Figure 32. This represents a + broadcast LAN between a pair of routers. The "real" (non-pseudonode) + routers have both an IPv4 Router-ID and an IS-IS Node-ID. The + pseudonode does not have an IPv4 Router-ID. Node1 is the DIS for the + LAN. Two unidirectional links, (Node1, Pseudonode1) and + (Pseudonode1, Node2), are being generated. + + The Link NLRI of (Node1, Pseudonode1) is encoded as follows. The IGP + Router-ID TLV of the local Node Descriptor is 6 octets long and + contains the ISO-ID of Node1, 1920.0000.2001. The IGP Router-ID TLV + of the remote Node Descriptor is 7 octets long and contains the ISO- + ID of Pseudonode1, 1920.0000.2001.02. The BGP-LS Attribute of this + link contains one local IPv4 Router-ID TLV (TLV type 1028) containing + 192.0.2.1, the IPv4 Router-ID of Node1. + + The Link NLRI of (Pseudonode1, Node2) is encoded as follows. The IGP + Router-ID TLV of the local Node Descriptor is 7 octets long and + contains the ISO-ID of Pseudonode1, 1920.0000.2001.02. The IGP + Router-ID TLV of the remote Node Descriptor is 6 octets long and + contains the ISO-ID of Node2, 1920.0000.2002. The BGP-LS Attribute + of this link contains one remote IPv4 Router-ID TLV (TLV type 1030) + containing 192.0.2.2, the IPv4 Router-ID of Node2. + + +-----------------+ +-----------------+ +-----------------+ + | Node1 | | Pseudonode1 | | Node2 | + |1920.0000.2001.00|--->|1920.0000.2001.02|--->|1920.0000.2002.00| + | 192.0.2.1 | | | | 192.0.2.2 | + +-----------------+ +-----------------+ +-----------------+ + + Figure 32: IS-IS Pseudonodes + +5.11. Router-ID Anchoring Example: OSPF Pseudonode + + The encoding of a broadcast LAN in OSPF provides a good example of + how Router-IDs and local Interface IPs are encoded. Consider + Figure 33. This represents a broadcast LAN between a pair of + routers. The "real" (non-pseudonode) routers have both an IPv4 + Router-ID and an Area Identifier. The pseudonode does have an IPv4 + Router-ID, an IPv4 Interface Address (for disambiguation), and an + OSPF Area. Node1 is the DR for the LAN; hence, its local IP address + 198.51.100.1 is used as both the Router-ID and Interface IP for the + pseudonode keys. Two unidirectional links, (Node1, Pseudonode1) and + (Pseudonode1, Node2), are being generated. + + The Link NLRI of (Node1, Pseudonode1) is encoded as follows: + + * Local Node Descriptor + + TLV #515: IGP Router-ID: 192.0.2.1 + + TLV #514: OSPF Area-ID: ID:0.0.0.0 + + * Remote Node Descriptor + + TLV #515: IGP Router-ID: 192.0.2.1:198.51.100.1 + + TLV #514: OSPF Area-ID: ID:0.0.0.0 + + The Link NLRI of (Pseudonode1, Node2) is encoded as follows: + + * Local Node Descriptor + + TLV #515: IGP Router-ID: 192.0.2.1:198.51.100.1 + + TLV #514: OSPF Area-ID: ID:0.0.0.0 + + * Remote Node Descriptor + + TLV #515: IGP Router-ID: 192.0.2.2 + + TLV #514: OSPF Area-ID: ID:0.0.0.0 + + 198.51.100.1/24 198.51.100.2/24 + +-------------+ +-------------+ +-------------+ + | Node1 | | Pseudonode1 | | Node2 | + | 192.0.2.1 |--->| 192.0.2.1 |--->| 192.0.2.2 | + | | |198.51.100.1 | | | + | Area 0 | | Area 0 | | Area 0 | + +-------------+ +-------------+ +-------------+ + + Figure 33: OSPF Pseudonodes + + The LAN subnet 198.51.100.0/24 is not included in the Router LSA of + Node1 or Node2. The Network LSA for this LAN advertised by the DR + Node1 contains the subnet mask for the LAN along with the DR address. + A Prefix NLRI corresponding to the LAN subnet is advertised with the + Pseudonode1 used as the local node using the DR address and the + subnet mask from the Network LSA. + +5.12. Router-ID Anchoring Example: OSPFv2 to IS-IS Migration + + Graceful migration from one IGP to another requires coordinated + operation of both protocols during the migration period. Such + coordination requires identifying a given physical link in both IGPs. + The IPv4 Router-ID provides that "glue", which is present in the Node + Descriptors of the OSPF Link NLRI and in the link attribute of the + IS-IS Link NLRI. + + Consider a point-to-point link between two routers, A and B, which + initially were OSPFv2-only routers and then had IS-IS enabled on + them. Node A has IPv4 Router-ID and ISO-ID; node B has IPv4 Router- + ID, IPv6 Router-ID, and ISO-ID. Each protocol generates one Link + NLRI for the link (A, B), both of which are carried by BGP-LS. The + OSPFv2 Link NLRI for the link is encoded with the IPv4 Router-ID of + nodes A and B in the local and remote Node Descriptors, respectively. + The IS-IS Link NLRI for the link is encoded with the ISO-ID of nodes + A and B in the local and remote Node Descriptors, respectively. In + addition, the BGP-LS Attribute of the IS-IS Link NLRI contains the + TLV type 1028 containing the IPv4 Router-ID of node A, TLV type 1030 + containing the IPv4 Router-ID of node B, and TLV type 1031 containing + the IPv6 Router-ID of node B. In this case, by using IPv4 Router-ID, + the link (A, B) can be identified in both the IS-IS and OSPF + protocols. + +6. Link to Path Aggregation + + Distribution of all links available on the global Internet is + certainly possible; however, it is not desirable from a scaling and + privacy point of view. Therefore, an implementation may support a + link to path aggregation. Rather than advertising all specific links + of a domain, an ASBR may advertise an "aggregate link" between a non- + adjacent pair of nodes. The "aggregate link" represents the + aggregated set of link properties between a pair of non-adjacent + nodes. The actual methods to compute the path properties (of + bandwidth, metric, etc.) are outside the scope of this document. The + decision of whether to advertise all specific links or aggregated + links is an operator's policy choice. To highlight the varying + levels of exposure, the following deployment examples are discussed. + +6.1. Example: No Link Aggregation + + Consider Figure 34. Both AS1 and AS2 operators want to protect their + inter-AS {R1, R3}, {R2, R4} links using RSVP - Fast Reroute (RSVP- + FRR) LSPs. If R1 wants to compute its link-protection LSP to R3, it + needs to "see" an alternate path to R3. Therefore, the AS2 operator + exposes its topology. All BGP-TE-enabled routers in AS1 "see" the + full topology of AS2 and therefore can compute a backup path. Note + that the computing router decides if the direct link between {R3, R4} + or the {R4, R5, R3} path is used. + + AS1 : AS2 + : + R1-------R3 + | : | \ + | : | R5 + | : | / + R2-------R4 + : + : + + Figure 34: No Link Aggregation + +6.2. Example: ASBR to ASBR Path Aggregation + + The brief difference between the "no-link aggregation" example and + this example is that no specific link gets exposed. Consider + Figure 35. The only link that gets advertised by AS2 is an + "aggregate" link between R3 and R4. This is enough to tell AS1 that + there is a backup path. However, the actual links being used are + hidden from the topology. + + AS1 : AS2 + : + R1-------R3 + | : | + | : | + | : | + R2-------R4 + : + : + + Figure 35: ASBR Link Aggregation + +6.3. Example: Multi-AS Path Aggregation + + Service providers in control of multiple ASes may even decide to not + expose their internal inter-AS links. Consider Figure 36. AS3 is + modeled as a single node that connects to the border routers of the + aggregated domain. + + AS1 : AS2 : AS3 + : : + R1-------R3----- + | : : \ + | : : vR0 + | : : / + R2-------R4----- + : : + : : + + Figure 36: Multi-AS Aggregation + +7. IANA Considerations + + As this document obsoletes [RFC7752] and [RFC9029], IANA has updated + all registration information that references those documents to + instead reference this document. + + IANA has assigned address family number 16388 (BGP-LS) in the + "Address Family Numbers" registry. + + IANA has assigned SAFI values 71 (BGP-LS) and 72 (BGP-LS-VPN) in the + "SAFI Values" registry under the "Subsequent Address Family + Identifiers (SAFI) Parameters" registry group. + + IANA has assigned value 29 (BGP-LS Attribute) in the "BGP Path + Attributes" registry under the "Border Gateway Protocol (BGP) + Parameters" registry group. + + IANA has created a "Border Gateway Protocol - Link-State (BGP-LS) + Parameters" registry group at <https://www.iana.org/assignments/bgp- + ls-parameters>. + + This section also incorporates all the changes to the allocation + procedures for the BGP-LS IANA registry group as well as the + guidelines for designated experts introduced by [RFC9029]. + +7.1. BGP-LS Registries + + All of the registries listed in the following subsections are + specific to BGP-LS and are accessible under this registry. + +7.1.1. BGP-LS NLRI Types Registry + + The "BGP-LS NLRI Types" registry has been set up for assignment for + the two-octet-sized code points for BGP-LS NLRI types and populated + with the values shown below: + + +=============+===========================+===========+ + | Type | NLRI Type | Reference | + +=============+===========================+===========+ + | 0 | Reserved | RFC 9552 | + +-------------+---------------------------+-----------+ + | 1 | Node NLRI | RFC 9552 | + +-------------+---------------------------+-----------+ + | 2 | Link NLRI | RFC 9552 | + +-------------+---------------------------+-----------+ + | 3 | IPv4 Topology Prefix NLRI | RFC 9552 | + +-------------+---------------------------+-----------+ + | 4 | IPv6 Topology Prefix NLRI | RFC 9552 | + +-------------+---------------------------+-----------+ + | 65000-65535 | Private Use | RFC 9552 | + +-------------+---------------------------+-----------+ + + Table 12: BGP-LS NLRI Types + + A range is reserved for Private Use [RFC8126]. All other allocations + within the registry are to be made using the "Expert Review" policy + [RFC8126], which requires documentation of the proposed use of the + allocated value and approval by the designated expert assigned by the + IESG. + +7.1.2. BGP-LS Protocol-IDs Registry + + The "BGP-LS Protocol-IDs" registry has been set up for assignment for + the one-octet-sized code points for BGP-LS Protocol-IDs and populated + with the values shown below: + + +=============+==================================+===========+ + | Protocol-ID | NLRI information source protocol | Reference | + +=============+==================================+===========+ + | 0 | Reserved | RFC 9552 | + +-------------+----------------------------------+-----------+ + | 1 | IS-IS Level 1 | RFC 9552 | + +-------------+----------------------------------+-----------+ + | 2 | IS-IS Level 2 | RFC 9552 | + +-------------+----------------------------------+-----------+ + | 3 | OSPFv2 | RFC 9552 | + +-------------+----------------------------------+-----------+ + | 4 | Direct | RFC 9552 | + +-------------+----------------------------------+-----------+ + | 5 | Static configuration | RFC 9552 | + +-------------+----------------------------------+-----------+ + | 6 | OSPFv3 | RFC 9552 | + +-------------+----------------------------------+-----------+ + | 200-255 | Private Use | RFC 9552 | + +-------------+----------------------------------+-----------+ + + Table 13: BGP-LS Protocol-IDs + + A range is reserved for Private Use [RFC8126]. All other allocations + within the registry are to be made using the "Expert Review" policy + [RFC8126], which requires documentation of the proposed use of the + allocated value and approval by the designated expert assigned by the + IESG. + +7.1.3. BGP-LS Well-Known Instance-IDs Registry + + The "BGP-LS Well-Known Instance-IDs" registry that was set up via + [RFC7752] is no longer required. IANA has marked this registry + obsolete and changed its registration procedure to "registry closed". + +7.1.4. BGP-LS Node Flags Registry + + The "BGP-LS Node Flags" registry has been created for the one-octet- + sized flags field of the Node Flag Bits TLV (1024) and populated with + the initial values shown below: + + +=====+======================+===========+ + | Bit | Description | Reference | + +=====+======================+===========+ + | 0 | Overload Bit (O-bit) | RFC 9552 | + +-----+----------------------+-----------+ + | 1 | Attached Bit (A-bit) | RFC 9552 | + +-----+----------------------+-----------+ + | 2 | External Bit (E-bit) | RFC 9552 | + +-----+----------------------+-----------+ + | 3 | ABR Bit (B-bit) | RFC 9552 | + +-----+----------------------+-----------+ + | 4 | Router Bit (R-bit) | RFC 9552 | + +-----+----------------------+-----------+ + | 5 | V6 Bit (V-bit) | RFC 9552 | + +-----+----------------------+-----------+ + | 6-7 | Unassigned | | + +-----+----------------------+-----------+ + + Table 14: BGP-LS Node Flags + + Allocations within the registry are to be made using the "Expert + Review" policy [RFC8126], which requires documentation of the + proposed use of the allocated value and approval by the designated + expert assigned by the IESG. + +7.1.5. BGP-LS MPLS Protocol Mask Registry + + The "BGP-LS MPLS Protocol Mask" registry has been created for the + one-octet-sized flags field of the MPLS Protocol Mask TLV (1094) and + populated with the initial values shown below: + + +=====+===========================================+===========+ + | Bit | Description | Reference | + +=====+===========================================+===========+ + | 0 | Label Distribution Protocol (L-bit) | RFC 9552 | + +-----+-------------------------------------------+-----------+ + | 1 | Extension to RSVP for LSP Tunnels (R-bit) | RFC 9552 | + +-----+-------------------------------------------+-----------+ + | 2-7 | Unassigned | | + +-----+-------------------------------------------+-----------+ + + Table 15: BGP-LS MPLS Protocol Mask + + Allocations within the registry are to be made using the "Expert + Review" policy [RFC8126], which requires documentation of the + proposed use of the allocated value and approval by the designated + expert assigned by the IESG. + +7.1.6. BGP-LS IGP Prefix Flags Registry + + The "BGP-LS IGP Prefix Flags" registry has been created for the one- + octet-sized flags field of the IGP Flags TLV (1152) and populated + with the initial values shown below: + + +=====+===================================+===========+ + | Bit | Description | Reference | + +=====+===================================+===========+ + | 0 | IS-IS Up/Down Bit (D-bit) | RFC 9552 | + +-----+-----------------------------------+-----------+ + | 1 | OSPF "no unicast" Bit (N-bit) | RFC 9552 | + +-----+-----------------------------------+-----------+ + | 2 | OSPF "local address" Bit (L-bit) | RFC 9552 | + +-----+-----------------------------------+-----------+ + | 3 | OSPF "propagate NSSA" Bit (P-bit) | RFC 9552 | + +-----+-----------------------------------+-----------+ + | 4-7 | Unassigned | | + +-----+-----------------------------------+-----------+ + + Table 16: BGP-LS IGP Prefix Flags + + Allocations within the registry are to be made using the "Expert + Review" policy [RFC8126], which requires documentation of the + proposed use of the allocated value and approval by the designated + expert assigned by the IESG. + +7.1.7. BGP-LS TLVs Registry + + The "BGP-LS Node Descriptor, Link Descriptor, Prefix Descriptor, and + Attribute TLVs" registry was created via [RFC7752]. Per this + document, IANA has renamed that registry to "BGP-LS NLRI and + Attribute TLVs" and removed the column for "IS-IS TLV/Sub-TLV". The + registration procedures are as follows: + + +================+================================+ + | TLV Code Point | Registration Process | + +================+================================+ + | 0-255 | Reserved (not to be allocated) | + +----------------+--------------------------------+ + | 256-64999 | Expert Review | + +----------------+--------------------------------+ + | 65000-65535 | Private Use | + +----------------+--------------------------------+ + + Table 17: BGP-LS TLVs Registration Process + + A range is reserved for Private Use [RFC8126]. All other allocations + except for the reserved range within the registry are to be made + using the "Expert Review" policy [RFC8126], which requires + documentation of the proposed use of the allocated value and approval + by the designated expert assigned by the IESG. + + The registry was pre-populated with the values shown in Table 18, and + the reference for each allocation has been changed to this document + and the respective section where those TLVs are specified. + +7.2. Guidance for Designated Experts + + In all cases of review by the designated expert described here, the + designated expert is expected to check the clarity of purpose and use + of the requested code points. The following points apply to the + registries discussed in this document: + + 1. Application for a code point allocation may be made to the + designated experts at any time and MUST be accompanied by + technical documentation explaining the use of the code point. + Such documentation SHOULD be presented in the form of an + Internet-Draft but MAY arrive in any form that can be reviewed + and exchanged among reviewers. + + 2. The designated experts SHOULD only consider requests that arise + from Internet-Drafts that have already been accepted as working + group documents or that are planned for progression as AD- + Sponsored documents in the absence of a suitably chartered + working group. + + 3. In the case of working group documents, the designated experts + MUST check with the working group chairs that there is a + consensus within the working group to allocate at this time. In + the case of AD-Sponsored documents, the designated experts MUST + check with the AD for approval to allocate at this time. + + 4. If the document is not adopted by the IDR Working Group (or its + successor), the designated expert MUST notify the IDR mailing + list (or its successor) of the request and MUST provide access to + the document. The designated expert MUST allow two weeks for any + response. Any comments received MUST be considered by the + designated expert as part of the subsequent step. + + 5. The designated experts MUST then review the assignment requests + on their technical merit. The designated experts MAY raise + issues related to the allocation request with the authors and on + the IDR (or successor) mailing list for further consideration + before the assignments are made. + + 6. The designated expert MUST ensure that any request for a code + point does not conflict with work that is active or already + published within the IETF. + + 7. Once the designated experts have approved, IANA will update the + registry by marking the allocated code points with a reference to + the associated document. + + 8. In the event that the document is a working group document or is + AD-Sponsored and fails to progress to publication as an RFC, the + working group chairs or AD SHOULD contact IANA to coordinate + about marking the code points as deprecated. A deprecated code + point is not marked as allocated for use and is not available for + allocation in a future document. The WG chairs may inform IANA + that a deprecated code point can be completely deallocated (i.e., + made available for new allocations) at any time after it has been + deprecated if there is a shortage of unallocated code points in + the registry. + +8. Manageability Considerations + + This section is structured as recommended in [RFC5706]. + +8.1. Operational Considerations + +8.1.1. Operations + + Existing BGP operational procedures apply. No new operation + procedures are defined in this document. It is noted that the NLRI + information present in this document carries purely application-level + data that has no immediate impact on the corresponding forwarding + state computed by BGP. As such, any churn in reachability + information has a different impact than regular BGP updates, which + need to change the forwarding state for an entire router. + Distribution of the BGP-LS NLRIs SHOULD be handled by dedicated route + reflectors in most deployments providing a level of isolation and + fault containment between different BGP address families. In the + event of dedicated route reflectors not being available, other + alternate mechanisms like separation of BGP instances or separate BGP + sessions (e.g., using different addresses for peering) for Link-State + information distribution SHOULD be used. + + It is RECOMMENDED that operators deploying BGP-LS enable two or more + BGP-LS Producers in each IGP flooding domain to achieve redundancy in + the origination of link-state information into BGP-LS. It is also + RECOMMENDED that operators ensure BGP peering designs that ensure + redundancy in the BGP update propagation paths (e.g., using at least + a pair of route reflectors) and ensure that BGP-LS Consumers are + receiving the topology information from at least two BGP-LS Speakers. + + In a multi-domain IGP network, the correct provisioning of the BGP-LS + Instance-IDs on the BGP-LS Producers is required for consistent + reporting of the multi-domain link-state topology. Refer to + Section 5.2 for more details. + +8.1.2. Installation and Initial Setup + + Configuration parameters defined in Section 8.2.3 SHOULD be + initialized to the following default values: + + * The Link-State NLRI capability is turned off for all neighbors. + + * The maximum rate at which Link-State NLRIs will be advertised/ + withdrawn from neighbors is set to 200 updates per second. + +8.1.3. Migration Path + + The proposed extension is only activated between BGP peers after + capability negotiation. Moreover, the extensions can be turned on/ + off on an individual peer basis (see Section 8.2.3), so the extension + can be gradually rolled out in the network. + +8.1.4. Requirements for Other Protocols and Functional Components + + The protocol extension defined in this document does not put new + requirements on other protocols or functional components. + +8.1.5. Impact on Network Operation + + The frequency of Link-State NLRI updates could interfere with regular + BGP prefix distribution. A network operator should use a dedicated + route reflector infrastructure to distribute Link-State NLRIs as + discussed in Section 8.1.1. + + Distribution of Link-State NLRIs SHOULD be limited to a single admin + domain, which can consist of multiple areas within an AS or multiple + ASes. + +8.1.6. Verifying Correct Operation + + Existing BGP procedures apply. In addition, an implementation SHOULD + allow an operator to: + + * List neighbors with whom the speaker is exchanging Link-State + NLRIs. + +8.2. Management Considerations + +8.2.1. Management Information + + The IDR Working Group has documented and continues to document parts + of the Management Information Base and YANG models for managing and + monitoring BGP Speakers and the sessions between them. It is + currently believed that the BGP session running BGP-LS is not + substantially different from any other BGP session and can be managed + using the same data models. + +8.2.2. Fault Management + + This section describes the fault management actions, as described in + [RFC7606], that are to be performed for the handling of BGP UPDATE + messages for BGP-LS. + + A Link-State NLRI MUST NOT be considered malformed or invalid based + on the inclusion/exclusion of TLVs or contents of the TLV fields + (i.e., semantic errors), as described in Sections 5.1 and 5.2. + + A BGP-LS Speaker MUST perform the following syntactic validation of + the Link-State NLRI to determine if it is malformed. + + * The sum of all TLV lengths found in the BGP MP_REACH_NLRI + attribute corresponds to the BGP MP_REACH_NLRI length. + + * The sum of all TLV lengths found in the BGP MP_UNREACH_NLRI + attribute corresponds to the BGP MP_UNREACH_NLRI length. + + * The sum of all TLV lengths found in a Link-State NLRI corresponds + to the Total NLRI Length field of all its descriptors. + + * The length of the TLVs and, when the TLV is recognized then, the + length of its sub-TLVs in the NLRI are valid. + + * The syntactic correctness of the NLRI fields has been verified as + per [RFC7606]. + + * The rule regarding the ordering of TLVs has been followed as + described in Section 5.1. + + * For NLRIs carrying either a Local or Remote Node Descriptor TLV, + there is not more than one instance of a sub-TLV present. + + When the error that is determined allows for the router to skip the + malformed NLRI(s) and continue the processing of the rest of the BGP + UPDATE message (e.g., when the TLV ordering rule is violated), then + it MUST handle such malformed NLRIs as 'NLRI discard' (i.e., + processing similar to what is described in Section 5.4 of [RFC7606]). + In other cases, where the error in the NLRI encoding results in the + inability to process the BGP UPDATE message (e.g., length-related + encoding errors), then the router SHOULD handle such malformed NLRIs + as 'AFI/SAFI disable' when other AFI/SAFI besides BGP-LS are being + advertised over the same session. Alternately, the router MUST + perform a 'session reset' when the session is only being used for + BGP-LS or if 'AFI/SAFI disable' action is not possible. + + A BGP-LS Attribute MUST NOT be considered malformed or invalid based + on the inclusion/exclusion of TLVs or contents of the TLV fields + (i.e., semantic errors), as described in Sections 5.1 and 5.3. + + A BGP-LS Speaker MUST perform the following syntactic validation of + the BGP-LS Attribute to determine if it is malformed. + + * The sum of all TLV lengths found in the BGP-LS Attribute + corresponds to the BGP-LS Attribute length. + + * The syntactic correctness of the Attributes (including the BGP-LS + Attribute) have been verified as per [RFC7606]. + + * The length of each TLV and, when the TLV is recognized then, the + length of its sub-TLVs in the BGP-LS Attribute are valid. + + When the error that is determined allows for the router to skip the + malformed BGP-LS Attribute and continue the processing of the rest of + the BGP UPDATE message (e.g., when the BGP-LS Attribute length and + the total Path Attribute Length are correct but some TLV/sub-TLV + length within the BGP-LS Attribute is invalid), then it MUST handle + such malformed BGP-LS Attribute as 'Attribute Discard'. In other + cases, where the error in the BGP-LS Attribute encoding results in + the inability to process the BGP UPDATE message, the handling is the + same as described above for the malformed NLRI. + + Note that the 'Attribute Discard' action results in the loss of all + TLVs in the BGP-LS Attribute and not the removal of a specific + malformed TLV. The removal of specific malformed TLVs may give a + wrong indication to a BGP-LS Consumer of that specific information + being deleted or not available. + + When a BGP Speaker receives an UPDATE message with Link-State NLRI(s) + in the MP_REACH_NLRI but without the BGP-LS Attribute, it is most + likely an indication that a BGP Speaker preceding it has performed + the 'Attribute Discard' fault handling. An implementation SHOULD + preserve and propagate the Link-State NLRIs, unless denied by local + policy, in such an UPDATE message so that the BGP-LS Consumers can + detect the loss of link-state information for that object and not + assume its deletion/withdrawal. This also makes it possible for a + network operator to trace back to the BGP-LS Propagator that detected + the fault with the BGP-LS Attribute. + + An implementation SHOULD log a message for any errors found during + syntax validation for further analysis. + + A BGP-LS Propagator, even when it has a coexisting BGP-LS Consumer on + the same node, should not perform semantic validation of the Link- + State NLRI or the BGP-LS Attribute to determine if it is malformed or + invalid. Some types of semantic validation that are not to be + performed by a BGP-LS Propagator are as follows (and this is not to + be considered as an exhaustive list): + + * presence of a mandatory TLV + + * the length of a fixed-length TLV is correct or the length of a + variable length TLV is valid or permissible + + * the values of TLV fields are valid or permissible + + * the inclusion and use of TLVs/sub-TLVs with specific Link-State + NLRI types is valid + + Each TLV may indicate the valid and permissible values and their + semantics that can be used only by a BGP-LS Consumer for its semantic + validation. However, the handling of any errors may be specific to + the particular application and outside the scope of this document. + +8.2.3. Configuration Management + + An implementation SHOULD allow the operator to specify neighbors to + which Link-State NLRIs will be advertised and from which Link-State + NLRIs will be accepted. + + An implementation SHOULD allow the operator to specify the maximum + rate at which Link-State NLRIs will be advertised/withdrawn from + neighbors. + + An implementation SHOULD allow the operator to specify the maximum + number of Link-State NLRIs stored in a router's Routing Information + Base (RIB). + + An implementation SHOULD allow the operator to create abstracted + topologies that are advertised to neighbors and create different + abstractions for different neighbors. + + An implementation MUST allow the operator to configure an 8-octet + BGP-LS Instance-ID. Refer to Section 5.2 for guidance to the + operator for the configuration of BGP-LS Instance-ID. + + An implementation SHOULD allow the operator to configure Autonomous + System Number (ASN) and BGP-LS identifiers (refer to + Section 5.2.1.4). + + An implementation SHOULD allow the operator to configure a 4096-byte + size limit for a BGP-LS UPDATE message on a BGP-LS Producer or allow + larger values when they know that all BGP-LS Speakers support the + extended message size [RFC8654]. + +8.2.4. Accounting Management + + Not Applicable. + +8.2.5. Performance Management + + An implementation SHOULD provide the following statistics: + + * Total number of Link-State NLRI updates sent/received + + * Number of Link-State NLRI updates sent/received, per neighbor + + * Number of errored received Link-State NLRI updates, per neighbor + + * Total number of locally originated Link-State NLRIs + + These statistics should be recorded as absolute counts since the + system or session start time. An implementation MAY also enhance + this information by recording peak per-second counts in each case. + +8.2.6. Security Management + + An operator MUST define an import policy to limit inbound updates as + follows: + + * Drop all updates from peers that are only serving BGP-LS + Consumers. + + An implementation MUST have the means to limit inbound updates. + +9. TLV/Sub-TLV Code Points Summary + + This section contains the global table of all TLVs/sub-TLVs defined + in this document. + + +================+=========================+===================+ + | TLV Code Point | Description | Reference Section | + +================+=========================+===================+ + | 256 | Local Node Descriptors | Section 5.2.1.2 | + +----------------+-------------------------+-------------------+ + | 257 | Remote Node Descriptors | Section 5.2.1.3 | + +----------------+-------------------------+-------------------+ + | 258 | Link Local/Remote | Section 5.2.2 | + | | Identifiers | | + +----------------+-------------------------+-------------------+ + | 259 | IPv4 interface address | Section 5.2.2 | + +----------------+-------------------------+-------------------+ + | 260 | IPv4 neighbor address | Section 5.2.2 | + +----------------+-------------------------+-------------------+ + | 261 | IPv6 interface address | Section 5.2.2 | + +----------------+-------------------------+-------------------+ + | 262 | IPv6 neighbor address | Section 5.2.2 | + +----------------+-------------------------+-------------------+ + | 263 | Multi-Topology | Section 5.2.2.1 | + | | Identifier | | + +----------------+-------------------------+-------------------+ + | 264 | OSPF Route Type | Section 5.2.3.1 | + +----------------+-------------------------+-------------------+ + | 265 | IP Reachability | Section 5.2.3.2 | + | | Information | | + +----------------+-------------------------+-------------------+ + | 512 | Autonomous System | Section 5.2.1.4 | + +----------------+-------------------------+-------------------+ + | 513 | BGP-LS Identifier | Section 5.2.1.4 | + | | (deprecated) | | + +----------------+-------------------------+-------------------+ + | 514 | OSPF Area-ID | Section 5.2.1.4 | + +----------------+-------------------------+-------------------+ + | 515 | IGP Router-ID | Section 5.2.1.4 | + +----------------+-------------------------+-------------------+ + | 1024 | Node Flag Bits | Section 5.3.1.1 | + +----------------+-------------------------+-------------------+ + | 1025 | Opaque Node Attribute | Section 5.3.1.5 | + +----------------+-------------------------+-------------------+ + | 1026 | Node Name | Section 5.3.1.3 | + +----------------+-------------------------+-------------------+ + | 1027 | IS-IS Area Identifier | Section 5.3.1.2 | + +----------------+-------------------------+-------------------+ + | 1028 | IPv4 Router-ID of Local | Sections 5.3.1.4 | + | | Node | and 5.3.2.1 | + +----------------+-------------------------+-------------------+ + | 1029 | IPv6 Router-ID of Local | Sections 5.3.1.4 | + | | Node | and 5.3.2.1 | + +----------------+-------------------------+-------------------+ + | 1030 | IPv4 Router-ID of | Section 5.3.2.1 | + | | Remote Node | | + +----------------+-------------------------+-------------------+ + | 1031 | IPv6 Router-ID of | Section 5.3.2.1 | + | | Remote Node | | + +----------------+-------------------------+-------------------+ + | 1088 | Administrative group | Section 5.3.2 | + | | (color) | | + +----------------+-------------------------+-------------------+ + | 1089 | Maximum link bandwidth | Section 5.3.2 | + +----------------+-------------------------+-------------------+ + | 1090 | Max. reservable link | Section 5.3.2 | + | | bandwidth | | + +----------------+-------------------------+-------------------+ + | 1091 | Unreserved bandwidth | Section 5.3.2 | + +----------------+-------------------------+-------------------+ + | 1092 | TE Default Metric | Section 5.3.2.3 | + +----------------+-------------------------+-------------------+ + | 1093 | Link Protection Type | Section 5.3.2 | + +----------------+-------------------------+-------------------+ + | 1094 | MPLS Protocol Mask | Section 5.3.2.2 | + +----------------+-------------------------+-------------------+ + | 1095 | IGP Metric | Section 5.3.2.4 | + +----------------+-------------------------+-------------------+ + | 1096 | Shared Risk Link Group | Section 5.3.2.5 | + +----------------+-------------------------+-------------------+ + | 1097 | Opaque Link Attribute | Section 5.3.2.6 | + +----------------+-------------------------+-------------------+ + | 1098 | Link Name | Section 5.3.2.7 | + +----------------+-------------------------+-------------------+ + | 1152 | IGP Flags | Section 5.3.3.1 | + +----------------+-------------------------+-------------------+ + | 1153 | IGP Route Tag | Section 5.3.3.2 | + +----------------+-------------------------+-------------------+ + | 1154 | IGP Extended Route Tag | Section 5.3.3.3 | + +----------------+-------------------------+-------------------+ + | 1155 | Prefix Metric | Section 5.3.3.4 | + +----------------+-------------------------+-------------------+ + | 1156 | OSPF Forwarding Address | Section 5.3.3.5 | + +----------------+-------------------------+-------------------+ + | 1157 | Opaque Prefix Attribute | Section 5.3.3.6 | + +----------------+-------------------------+-------------------+ + + Table 18: Summary Table of TLV/Sub-TLV Code Points + +10. Security Considerations + + Procedures and protocol extensions defined in this document do not + affect the BGP security model. See the Security Considerations + section of [RFC4271] for a discussion of BGP security. Also, refer + to [RFC4272] and [RFC6952] for analysis of security issues for BGP. + + The operator should ensure that a BGP-LS Speaker does not accept + UPDATE messages from a peer that only provides information to a BGP- + LS Consumer by using the policy configuration options discussed in + Sections 8.2.3 and 8.2.6. Generally, an operator is aware of the + BGP-LS Speaker's role and link-state peerings. Therefore, the + operator can protect the BGP-LS Speaker from peers sending updates + that may represent erroneous information, feedback loops, or false + input. + + An error or tampering of the link-state information that is + originated into BGP-LS and propagated through the network for use by + BGP-LS Consumers applications can result in the malfunction of those + applications. Some examples of such risks are the origination of + incorrect information that is not present or consistent with the IGP + LSDB at the BGP-LS Producer, incorrect ordering of TLVs in the NLRI, + or inconsistent origination from multiple BGP-LS Producers and + updates to either the NLRI or BGP-LS Attribute during propagation + (including discarding due to errors). These are not new risks from a + BGP protocol perspective; however, in the case of BGP-LS, impact + reflects on the consumer applications instead of BGP routing + functionalities. + + Additionally, it may be considered that the export of link-state and + TE information as described in this document constitutes a risk to + confidentiality of mission-critical or commercially sensitive + information about the network. BGP peerings are not automatic and + require configuration; thus, it is the responsibility of the network + operator to ensure that only trusted BGP Speakers are configured to + receive such information. Similar security considerations also arise + on the interface between BGP Speakers and BGP-LS Consumers, but their + discussion is outside the scope of this document. + +11. References + +11.1. Normative References + + [ENTNUM] IANA, "Private Enterprise Numbers (PENs)", + <https://www.iana.org/assignments/enterprise-numbers/>. + + [ISO10589] ISO, "Information technology - Telecommunications and + information exchange between systems - Intermediate System + to Intermediate System intra-domain routeing information + exchange protocol for use in conjunction with the protocol + for providing the connectionless-mode network service (ISO + 8473)", ISO/IEC 10589:2002, November 2002. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, + DOI 10.17487/RFC2328, April 1998, + <https://www.rfc-editor.org/info/rfc2328>. + + [RFC2545] Marques, P. and F. Dupont, "Use of BGP-4 Multiprotocol + Extensions for IPv6 Inter-Domain Routing", RFC 2545, + DOI 10.17487/RFC2545, March 1999, + <https://www.rfc-editor.org/info/rfc2545>. + + [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., + and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP + Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, + <https://www.rfc-editor.org/info/rfc3209>. + + [RFC4202] Kompella, K., Ed. and Y. Rekhter, Ed., "Routing Extensions + in Support of Generalized Multi-Protocol Label Switching + (GMPLS)", RFC 4202, DOI 10.17487/RFC4202, October 2005, + <https://www.rfc-editor.org/info/rfc4202>. + + [RFC4203] Kompella, K., Ed. and Y. Rekhter, Ed., "OSPF Extensions in + Support of Generalized Multi-Protocol Label Switching + (GMPLS)", RFC 4203, DOI 10.17487/RFC4203, October 2005, + <https://www.rfc-editor.org/info/rfc4203>. + + [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A + Border Gateway Protocol 4 (BGP-4)", RFC 4271, + DOI 10.17487/RFC4271, January 2006, + <https://www.rfc-editor.org/info/rfc4271>. + + [RFC4577] Rosen, E., Psenak, P., and P. Pillay-Esnault, "OSPF as the + Provider/Customer Edge Protocol for BGP/MPLS IP Virtual + Private Networks (VPNs)", RFC 4577, DOI 10.17487/RFC4577, + June 2006, <https://www.rfc-editor.org/info/rfc4577>. + + [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, + "Multiprotocol Extensions for BGP-4", RFC 4760, + DOI 10.17487/RFC4760, January 2007, + <https://www.rfc-editor.org/info/rfc4760>. + + [RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. + Pillay-Esnault, "Multi-Topology (MT) Routing in OSPF", + RFC 4915, DOI 10.17487/RFC4915, June 2007, + <https://www.rfc-editor.org/info/rfc4915>. + + [RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed., + "LDP Specification", RFC 5036, DOI 10.17487/RFC5036, + October 2007, <https://www.rfc-editor.org/info/rfc5036>. + + [RFC5120] Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi + Topology (MT) Routing in Intermediate System to + Intermediate Systems (IS-ISs)", RFC 5120, + DOI 10.17487/RFC5120, February 2008, + <https://www.rfc-editor.org/info/rfc5120>. + + [RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, "A Policy + Control Mechanism in IS-IS Using Administrative Tags", + RFC 5130, DOI 10.17487/RFC5130, February 2008, + <https://www.rfc-editor.org/info/rfc5130>. + + [RFC5301] McPherson, D. and N. Shen, "Dynamic Hostname Exchange + Mechanism for IS-IS", RFC 5301, DOI 10.17487/RFC5301, + October 2008, <https://www.rfc-editor.org/info/rfc5301>. + + [RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic + Engineering", RFC 5305, DOI 10.17487/RFC5305, October + 2008, <https://www.rfc-editor.org/info/rfc5305>. + + [RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., "IS-IS Extensions + in Support of Generalized Multi-Protocol Label Switching + (GMPLS)", RFC 5307, DOI 10.17487/RFC5307, October 2008, + <https://www.rfc-editor.org/info/rfc5307>. + + [RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF + for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008, + <https://www.rfc-editor.org/info/rfc5340>. + + [RFC5642] Venkata, S., Harwani, S., Pignataro, C., and D. McPherson, + "Dynamic Hostname Exchange Mechanism for OSPF", RFC 5642, + DOI 10.17487/RFC5642, August 2009, + <https://www.rfc-editor.org/info/rfc5642>. + + [RFC5890] Klensin, J., "Internationalized Domain Names for + Applications (IDNA): Definitions and Document Framework", + RFC 5890, DOI 10.17487/RFC5890, August 2010, + <https://www.rfc-editor.org/info/rfc5890>. + + [RFC6119] Harrison, J., Berger, J., and M. Bartlett, "IPv6 Traffic + Engineering in IS-IS", RFC 6119, DOI 10.17487/RFC6119, + February 2011, <https://www.rfc-editor.org/info/rfc6119>. + + [RFC6565] Pillay-Esnault, P., Moyer, P., Doyle, J., Ertekin, E., and + M. Lundberg, "OSPFv3 as a Provider Edge to Customer Edge + (PE-CE) Routing Protocol", RFC 6565, DOI 10.17487/RFC6565, + June 2012, <https://www.rfc-editor.org/info/rfc6565>. + + [RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. + Patel, "Revised Error Handling for BGP UPDATE Messages", + RFC 7606, DOI 10.17487/RFC7606, August 2015, + <https://www.rfc-editor.org/info/rfc7606>. + + [RFC7684] Psenak, P., Gredler, H., Shakir, R., Henderickx, W., + Tantsura, J., and A. Lindem, "OSPFv2 Prefix/Link Attribute + Advertisement", RFC 7684, DOI 10.17487/RFC7684, November + 2015, <https://www.rfc-editor.org/info/rfc7684>. + + [RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and + S. Shaffer, "Extensions to OSPF for Advertising Optional + Router Capabilities", RFC 7770, DOI 10.17487/RFC7770, + February 2016, <https://www.rfc-editor.org/info/rfc7770>. + + [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for + Writing an IANA Considerations Section in RFCs", BCP 26, + RFC 8126, DOI 10.17487/RFC8126, June 2017, + <https://www.rfc-editor.org/info/rfc8126>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + + [RFC8362] Lindem, A., Roy, A., Goethals, D., Reddy Vallem, V., and + F. Baker, "OSPFv3 Link State Advertisement (LSA) + Extensibility", RFC 8362, DOI 10.17487/RFC8362, April + 2018, <https://www.rfc-editor.org/info/rfc8362>. + + [RFC8654] Bush, R., Patel, K., and D. Ward, "Extended Message + Support for BGP", RFC 8654, DOI 10.17487/RFC8654, October + 2019, <https://www.rfc-editor.org/info/rfc8654>. + +11.2. Informative References + + [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. + J., and E. Lear, "Address Allocation for Private + Internets", BCP 5, RFC 1918, DOI 10.17487/RFC1918, + February 1996, <https://www.rfc-editor.org/info/rfc1918>. + + [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", + RFC 4272, DOI 10.17487/RFC4272, January 2006, + <https://www.rfc-editor.org/info/rfc4272>. + + [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private + Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February + 2006, <https://www.rfc-editor.org/info/rfc4364>. + + [RFC4655] Farrel, A., Vasseur, J.-P., and J. Ash, "A Path + Computation Element (PCE)-Based Architecture", RFC 4655, + DOI 10.17487/RFC4655, August 2006, + <https://www.rfc-editor.org/info/rfc4655>. + + [RFC5152] Vasseur, JP., Ed., Ayyangar, A., Ed., and R. Zhang, "A + Per-Domain Path Computation Method for Establishing Inter- + Domain Traffic Engineering (TE) Label Switched Paths + (LSPs)", RFC 5152, DOI 10.17487/RFC5152, February 2008, + <https://www.rfc-editor.org/info/rfc5152>. + + [RFC5392] Chen, M., Zhang, R., and X. Duan, "OSPF Extensions in + Support of Inter-Autonomous System (AS) MPLS and GMPLS + Traffic Engineering", RFC 5392, DOI 10.17487/RFC5392, + January 2009, <https://www.rfc-editor.org/info/rfc5392>. + + [RFC5693] Seedorf, J. and E. Burger, "Application-Layer Traffic + Optimization (ALTO) Problem Statement", RFC 5693, + DOI 10.17487/RFC5693, October 2009, + <https://www.rfc-editor.org/info/rfc5693>. + + [RFC5706] Harrington, D., "Guidelines for Considering Operations and + Management of New Protocols and Protocol Extensions", + RFC 5706, DOI 10.17487/RFC5706, November 2009, + <https://www.rfc-editor.org/info/rfc5706>. + + [RFC6549] Lindem, A., Roy, A., and S. Mirtorabi, "OSPFv2 Multi- + Instance Extensions", RFC 6549, DOI 10.17487/RFC6549, + March 2012, <https://www.rfc-editor.org/info/rfc6549>. + + [RFC6952] Jethanandani, M., Patel, K., and L. Zheng, "Analysis of + BGP, LDP, PCEP, and MSDP Issues According to the Keying + and Authentication for Routing Protocols (KARP) Design + Guide", RFC 6952, DOI 10.17487/RFC6952, May 2013, + <https://www.rfc-editor.org/info/rfc6952>. + + [RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., + Previdi, S., Roome, W., Shalunov, S., and R. Woundy, + "Application-Layer Traffic Optimization (ALTO) Protocol", + RFC 7285, DOI 10.17487/RFC7285, September 2014, + <https://www.rfc-editor.org/info/rfc7285>. + + [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and + S. Ray, "North-Bound Distribution of Link-State and + Traffic Engineering (TE) Information Using BGP", RFC 7752, + DOI 10.17487/RFC7752, March 2016, + <https://www.rfc-editor.org/info/rfc7752>. + + [RFC7911] Walton, D., Retana, A., Chen, E., and J. Scudder, + "Advertisement of Multiple Paths in BGP", RFC 7911, + DOI 10.17487/RFC7911, July 2016, + <https://www.rfc-editor.org/info/rfc7911>. + + [RFC8202] Ginsberg, L., Previdi, S., and W. Henderickx, "IS-IS + Multi-Instance", RFC 8202, DOI 10.17487/RFC8202, June + 2017, <https://www.rfc-editor.org/info/rfc8202>. + + [RFC9029] Farrel, A., "Updates to the Allocation Policy for the + Border Gateway Protocol - Link State (BGP-LS) Parameters + Registries", RFC 9029, DOI 10.17487/RFC9029, June 2021, + <https://www.rfc-editor.org/info/rfc9029>. + + [RFC9346] Chen, M., Ginsberg, L., Previdi, S., and D. Xiaodong, "IS- + IS Extensions in Support of Inter-Autonomous System (AS) + MPLS and GMPLS Traffic Engineering", RFC 9346, + DOI 10.17487/RFC9346, February 2023, + <https://www.rfc-editor.org/info/rfc9346>. + +Appendix A. Changes from RFC 7752 + + This section lists the high-level changes from RFC 7752 and provides + reference to the document sections wherein those have been + introduced. + + 1. Updated Figure 1 in Section 1 and added Section 3 to illustrate + the different roles of a BGP implementation in conveying link- + state information. + + 2. Clarified aspects related to advertisement of link-state + information from IGPs into BGP-LS in Section 4. + + 3. In Section 5.1, clarified aspects about TLV handling that apply + to both the NLRI and BGP-LS Attribute parts as well as those + that are applicable only for the NLRI portion. An + implementation may have missed the part about the handling of an + unknown TLV and so, based on [RFC7606] guidelines, might discard + the unknown NLRI types. This aspect is now unambiguously + clarified in Section 5.2. Also, the TLVs in the BGP-LS + Attribute that are not ordered are not to be considered + malformed. + + 4. Clarified aspects of mandatory and optional TLVs in both NLRI + and BGP-LS Attribute portions all through the document. + + 5. In Section 5.3, the handling of a large-sized BGP-LS Attribute + with growth in BGP-LS information is explained along with + mitigation of errors arising out of it. + + 6. Clarified that the document describes the NLRI descriptor TLVs + for the protocols and NLRI types specified in this document as + well as future BGP-LS extensions must describe the same for + other protocols and NLRI types that they introduce. + + 7. In Section 5.2, clarified the use of the Identifier field in the + Link-State NLRI. It was defined ambiguously to refer to only + multi-instance IGP on a single link while it can also be used + for multiple IGP protocol instances on a router. The IANA + registry is accordingly being removed. + + 8. The BGP-LS Identifier TLV in the Node Descriptors has been + deprecated. Its use was not well specified by [RFC7752], and + there has been some amount of confusion between implementors on + its usage for identification of IGP domains as against the use + of the Identifier field carrying the BGP-LS Instance-ID when + running multiple instances of IGP routing protocols. The + original purpose of the BGP-LS Identifier was that, in + conjunction with the ASN, it would uniquely identify the BGP-LS + domain and that the combination of ASN and BGP-LS ID would be + globally unique. However, the BGP-LS Instance-ID carried in the + Identifier field in the fixed part of the NLRI also provides a + similar functionality. Hence, the inclusion of the BGP-LS + Identifier TLV is not necessary. If advertised, all BGP-LS + Speakers within an IGP flooding-set (set of IGP nodes within + which an LSP/LSA is flooded) had to use the same (ASN, BGP-LS + ID) tuple, and if an IGP domain consists of multiple flooding- + sets, then all BGP-LS Speakers within the IGP domain had to use + the same (ASN, BGP-LS ID) tuple. + + 9. Clarified that the Area-ID TLV is mandatory in the Node + Descriptor for the origination of information from OSPF except + for when sourcing information from AS-scope LSAs where this TLV + is not applicable. Also clarified the IS-IS area and area + addresses. + + 10. Moved the MT-ID TLV from the Node Descriptor section to under + the Link Descriptor section since it is not a Node Descriptor + sub-TLV. Fixed the ambiguity in the encoding of OSPF MT-ID in + this TLV. Updated the IS-IS specification reference section and + described the differences in the applicability of the R flags + when the MT-ID TLV is used as the Link Descriptor TLV and Prefix + Attribute TLV. The MT-ID TLV use is now elevated to SHOULD when + it is enabled in the underlying IGP. + + 11. Clarified that IPv6 link-local addresses are not advertised in + the Link Descriptor TLVs and the local/remote identifiers are to + be used instead for links with IPv6 link-local addresses only. + + 12. Updated the usage of OSPF Route Type TLV to mandate its use for + OSPF prefixes in Section 5.2.3.1 since this is required for + segregation of intra-area prefixes that are used to reach a node + (e.g., a loopback) from other types of inter-area and external + prefixes. + + 13. Clarified the specific OSPFv2 and OSPFv3 protocol TLV space to + be used in the Node, Link, and Prefix Opaque Attribute TLVs. + + 14. Clarified that the length of the Node Flag Bits and IGP Flags + TLVs are to be one octet. + + 15. Updated the Node Name TLV in Section 5.3.1.3 with the OSPF + specification. + + 16. Clarified the size of the IS-IS Narrow Metric advertisement via + the IGP Metric TLV and the handling of the unused bits. + + 17. Clarified the advertisement of the prefix corresponding to the + LAN segment in an OSPF network in Section 5.11. + + 18. Clarified the advertisement and support for OSPF-specific + concepts like virtual links, sham links, and Type 4 LSAs in + Sections 5.7 and 5.8. + + 19. Introduced the Private Use TLV code point space and specified + their encoding in Section 5.4. + + 20. In Section 5.9, introduced where issues related to the + consistency of reporting IGP link-state along with their + solutions are covered. + + 21. Added a recommendation for isolation of BGP-LS sessions from + other BGP route exchanges to avoid errors and faults in BGP-LS + affecting the normal BGP routing. + + 22. Updated the Fault Management section with detailed rules based + on the role of the BGP Speaker in the BGP-LS information + propagation flow. + + 23. Changed the management of BGP-LS IANA registries from + "Specification Required" to "Expert Review" along with updated + guidelines for designated experts, more specifically, the + inclusion of changes introduced via [RFC9029] that are obsoleted + by this document. + + 24. Added BGP-LS IANA registries with "Expert Review" policy for the + flag fields of various TLVs that was missed out. Renamed the + BGP-LS TLV registry and removed the "IS-IS TLV/Sub-TLV" column + from it. + +Acknowledgements + + This document update to the BGP-LS specification [RFC7752] is a + result of feedback and input from the discussions in the IDR Working + Group. It also incorporates certain details and clarifications based + on implementation and deployment experience with BGP-LS. + + Cengiz Alaettinoglu and Parag Amritkar brought forward the need to + clarify the advertisement of a LAN subnet for OSPF. + + We would like to thank Balaji Rajagopalan, Srihari Sangli, Shraddha + Hegde, Andrew Stone, Jeff Tantsura, Acee Lindem, Les Ginsberg, Jie + Dong, Aijun Wang, Nandan Saha, Joel Halpern, and Gyan Mishra for + their review and feedback on this document. Thanks to Tom Petch for + his review and comments on the IANA Considerations section. We would + also like to thank Jeffrey Haas for his detailed shepherd review and + input for improving the document. + + The detailed AD review by Alvaro Retana and his suggestions have + helped improve this document significantly. + + We would like to thank Robert Varga for his significant contribution + to [RFC7752]. + + We would like to thank Nischal Sheth, Alia Atlas, David Ward, Derek + Yeung, Murtuza Lightwala, John Scudder, Kaliraj Vairavakkalai, Les + Ginsberg, Liem Nguyen, Manish Bhardwaj, Matt Miller, Mike Shand, + Peter Psenak, Rex Fernando, Richard Woundy, Steven Luong, Tamas + Mondal, Waqas Alam, Vipin Kumar, Naiming Shen, Carlos Pignataro, + Balaji Rajagopalan, Yakov Rekhter, Alvaro Retana, Barry Leiba, and + Ben Campbell for their comments on [RFC7752]. + +Contributors + + The following persons contributed significant text to [RFC7752] and + this document. They should be considered coauthors. + + Hannes Gredler + Rtbrick + Email: hannes@rtbrick.com + + + Jan Medved + Cisco Systems Inc. + United States of America + Email: jmedved@cisco.com + + + Stefano Previdi + Huawei Technologies + Italy + Email: stefano@previdi.net + + + Adrian Farrel + Old Dog Consulting + Email: adrian@olddog.co.uk + + + Saikat Ray + Individual + United States of America + Email: raysaikat@gmail.com + + +Author's Address + + Ketan Talaulikar (editor) + Cisco Systems + India + Email: ketant.ietf@gmail.com |