| draft-ietf-lsvr-bgp-spf-51.original | draft-ietf-lsvr-bgp-spf-51.txt | |||
|---|---|---|---|---|
| Link State Vector Routing (LSVR) Working Group K. Patel | Internet Engineering Task Force (IETF) K. Patel | |||
| Internet-Draft Arrcus, Inc. | Request for Comments: 0000 Arrcus, Inc. | |||
| Intended status: Standards Track A. Lindem | Category: Standards Track A. Lindem | |||
| Expires: 27 July 2025 LabN Consulting, LLC | ISSN: 2070-1721 LabN Consulting, LLC | |||
| S. Zandi | S. Zandi | |||
| W. Henderickx | W. Henderickx | |||
| Nokia | Nokia | |||
| 23 January 2025 | June 2025 | |||
| BGP Link-State Shortest Path First (SPF) Routing | BGP Link-State Shortest Path First (SPF) Routing | |||
| draft-ietf-lsvr-bgp-spf-51 | ||||
| Abstract | Abstract | |||
| Many Massively Scaled Data Centers (MSDCs) have converged on | Many Massively Scaled Data Centers (MSDCs) have converged on | |||
| simplified L3 (Layer 3) routing. Furthermore, requirements for | simplified Layer 3 (L3) routing. Furthermore, requirements for | |||
| operational simplicity has led many of these MSDCs to converge on BGP | operational simplicity has led many of these MSDCs to converge on BGP | |||
| as their single routing protocol for both their fabric routing and | as their single routing protocol for both fabric routing and Data | |||
| their Data Center Interconnect (DCI) routing. This document | Center Interconnect (DCI) routing. This document describes | |||
| describes extensions to BGP to use BGP Link-State distribution and | extensions to BGP for use with BGP - Link-State (BGP-LS) distribution | |||
| the Shortest Path First (SPF) algorithm. In doing this, it allows | and the Shortest Path First (SPF) algorithm. In doing this, it | |||
| BGP to be efficiently used as both the underlay protocol and the | allows BGP to be efficiently used as both the underlay protocol and | |||
| overlay protocol in MSDCs. | the overlay protocol in MSDCs. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 27 July 2025. | 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/rfc0000. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Terminology | |||
| 1.2. BGP Shortest Path First (SPF) Motivation . . . . . . . . 4 | 1.2. BGP Shortest Path First (SPF) Motivation | |||
| 1.3. Document Overview . . . . . . . . . . . . . . . . . . . . 6 | 1.3. Document Overview | |||
| 1.4. Requirements Language . . . . . . . . . . . . . . . . . . 6 | 1.4. Requirements Language | |||
| 2. Base BGP Protocol Relationship . . . . . . . . . . . . . . . 6 | 2. Base BGP Protocol Relationship | |||
| 3. BGP Link-State (BGP-LS) Relationship . . . . . . . . . . . . 7 | 3. BGP - Link-State (BGP-LS) Relationship | |||
| 4. BGP SPF Peering Models . . . . . . . . . . . . . . . . . . . 8 | 4. BGP SPF Peering Models | |||
| 4.1. BGP Single-Hop Peering on Network Node Connections . . . 8 | 4.1. BGP Single-Hop Peering on Network Node Connections | |||
| 4.2. BGP Peering Between Directly-Connected Nodes . . . . . . 8 | 4.2. BGP Peering Between Directly Connected Nodes | |||
| 4.3. BGP Peering in Route-Reflector or Controller Topology . . 9 | 4.3. BGP Peering in Route-Reflector or Controller Topology | |||
| 5. BGP Shortest Path Routing (SPF) Protocol Extensions . . . . . 9 | 5. BGP Shortest Path Routing (SPF) Protocol Extensions | |||
| 5.1. BGP-LS Shortest Path Routing (SPF) SAFI . . . . . . . . . 10 | 5.1. BGP-LS Shortest Path Routing (SPF) SAFI | |||
| 5.1.1. BGP-LS-SPF NLRI TLVs . . . . . . . . . . . . . . . . 10 | 5.1.1. BGP-LS-SPF NLRI TLVs | |||
| 5.1.2. BGP-LS Attribute . . . . . . . . . . . . . . . . . . 10 | 5.1.2. BGP-LS Attribute | |||
| 5.2. Extensions to BGP-LS . . . . . . . . . . . . . . . . . . 11 | 5.2. Extensions to BGP-LS | |||
| 5.2.1. Node NLRI Usage . . . . . . . . . . . . . . . . . . . 11 | 5.2.1. Node NLRI Usage | |||
| 5.2.1.1. BGP-LS-SPF Node NLRI Attribute SPF Status TLV . . 11 | 5.2.1.1. BGP-LS-SPF Node NLRI Attribute SPF Status TLV | |||
| 5.2.2. Link NLRI Usage . . . . . . . . . . . . . . . . . . . 12 | 5.2.2. Link NLRI Usage | |||
| 5.2.2.1. BGP-LS Link NLRI Address Family Link Descriptor | 5.2.2.1. BGP-LS Link NLRI Address Family Link Descriptor TLV | |||
| TLV . . . . . . . . . . . . . . . . . . . . . . . . 13 | 5.2.2.2. BGP-LS-SPF Link NLRI Attribute SPF Status TLV | |||
| 5.2.2.2. BGP-LS-SPF Link NLRI Attribute SPF Status TLV . . 14 | 5.2.3. IPv4/IPv6 Prefix NLRI Usage | |||
| 5.2.3. IPv4/IPv6 Prefix NLRI Usage . . . . . . . . . . . . . 15 | 5.2.3.1. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV | |||
| 5.2.3.1. BGP-LS-SPF Prefix NLRI Attribute SPF Status | 5.2.4. BGP-LS Attribute Sequence Number TLV | |||
| TLV . . . . . . . . . . . . . . . . . . . . . . . . 15 | 5.3. BGP-LS-SPF End of RIB (EoR) Marker | |||
| 5.2.4. BGP-LS Attribute Sequence Number TLV . . . . . . . . 16 | 5.4. BGP Next-Hop Information | |||
| 5.3. BGP-LS-SPF End of RIB (EoR) Marker . . . . . . . . . . . 17 | 6. Decision Process with the SPF Algorithm | |||
| 5.4. BGP Next-Hop Information . . . . . . . . . . . . . . . . 17 | 6.1. BGP SPF NLRI Selection | |||
| 6. Decision Process with SPF Algorithm . . . . . . . . . . . . . 17 | 6.1.1. BGP Self-Originated NLRI | |||
| 6.1. BGP SPF NLRI Selection . . . . . . . . . . . . . . . . . 18 | 6.2. Dual Stack Support | |||
| 6.1.1. BGP Self-Originated NLRI . . . . . . . . . . . . . . 19 | 6.3. SPF Calculation Based on BGP-LS-SPF NLRI | |||
| 6.2. Dual Stack Support . . . . . . . . . . . . . . . . . . . 20 | 6.4. IPv4/IPv6 Unicast Address Family Interaction | |||
| 6.3. SPF Calculation based on BGP-LS-SPF NLRI . . . . . . . . 20 | 6.5. NLRI Advertisement | |||
| 6.4. IPv4/IPv6 Unicast Address Family Interaction . . . . . . 25 | 6.5.1. Link/Prefix Failure Convergence | |||
| 6.5. NLRI Advertisement . . . . . . . . . . . . . . . . . . . 25 | 6.5.2. Node Failure Convergence | |||
| 6.5.1. Link/Prefix Failure Convergence . . . . . . . . . . . 25 | 7. Error Handling | |||
| 6.5.2. Node Failure Convergence . . . . . . . . . . . . . . 26 | 7.1. Processing of BGP-LS-SPF TLVs | |||
| 7.2. Processing of BGP-LS-SPF NLRIs | ||||
| 7. Error Handling . . . . . . . . . . . . . . . . . . . . . . . 26 | 7.3. Processing of BGP-LS Attributes | |||
| 7.1. Processing of BGP-LS-SPF TLVs . . . . . . . . . . . . . . 26 | 7.4. BGP-LS-SPF Link-State NLRI Database Synchronization | |||
| 7.2. Processing of BGP-LS-SPF NLRIs . . . . . . . . . . . . . 28 | 8. IANA Considerations | |||
| 7.3. Processing of BGP-LS Attribute . . . . . . . . . . . . . 28 | 8.1. BGP-LS-SPF Allocation in the SAFI Values Registry | |||
| 7.4. BGP-LS-SPF Link State NLRI Database Synchronization . . . 28 | 8.2. BGP-LS-SPF Assignments in the BGP-LS NLRI and Attribute | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | TLVs Registry | |||
| 8.1. BGP-LS-SPF Allocation in SAFI Parameters Registry . . . . 28 | ||||
| 8.2. BGP-LS-SPF Assignments to BGP-LS NLRI and Attribute TLV | ||||
| Registry . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
| 8.3. BGP-LS-SPF Node NLRI Attribute SPF Status TLV Status | 8.3. BGP-LS-SPF Node NLRI Attribute SPF Status TLV Status | |||
| Registry . . . . . . . . . . . . . . . . . . . . . . . . 29 | Registry | |||
| 8.4. BGP-LS-SPF Link NLRI Attribute SPF Status TLV Status | 8.4. BGP-LS-SPF Link NLRI Attribute SPF Status TLV Status | |||
| Registry . . . . . . . . . . . . . . . . . . . . . . . . 30 | Registry | |||
| 8.5. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Status | 8.5. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Status | |||
| Registry . . . . . . . . . . . . . . . . . . . . . . . . 30 | Registry | |||
| 8.6. BGP Error (Notification) Code Assignment . . . . . . . . 31 | 8.6. Assignment in the BGP Error (Notification) Codes Registry | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 31 | 9. Security Considerations | |||
| 10. Management Considerations . . . . . . . . . . . . . . . . . . 32 | 10. Management Considerations | |||
| 10.1. Configuration . . . . . . . . . . . . . . . . . . . . . 32 | 10.1. Configuration | |||
| 10.2. Link Metric Configuration . . . . . . . . . . . . . . . 32 | 10.2. Link Metric Configuration | |||
| 10.3. Unnumbered Link Configuration . . . . . . . . . . . . . 32 | 10.3. Unnumbered Link Configuration | |||
| 10.4. Adjacency End-of-RIB (EOR) Marker Requirement . . . . . 32 | 10.4. Adjacency End-of-RIB (EOR) Marker Requirement | |||
| 10.5. backoff-config . . . . . . . . . . . . . . . . . . . . . 33 | 10.5. backoff-config | |||
| 10.6. BGP-LS-SPF NLRI Readvertisement Delay . . . . . . . . . 33 | 10.6. BGP-LS-SPF NLRI Readvertisement Delay | |||
| 10.7. Operational Data . . . . . . . . . . . . . . . . . . . . 33 | 10.7. Operational Data | |||
| 10.8. BGP-LS-SPF Address Family Session Isolation . . . . . . 33 | 10.8. BGP-LS-SPF Address Family Session Isolation | |||
| 11. Implementation Status . . . . . . . . . . . . . . . . . . . . 34 | 10.9. Acknowledgements | |||
| 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 | 10.10. Contributors | |||
| 13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 35 | 11. References | |||
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | 11.1. Normative References | |||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . 35 | 11.2. Informative References | |||
| 14.2. Informational References . . . . . . . . . . . . . . . . 37 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39 | ||||
| 1. Introduction | 1. Introduction | |||
| Many Massively Scaled Data Centers (MSDCs) have converged on | Many Massively Scaled Data Centers (MSDCs) have converged on | |||
| simplified L3 (Layer 3) routing. Furthermore, requirements for | simplified Layer 3 (L3) routing. Furthermore, requirements for | |||
| operational simplicity has led many of these MSDCs to converge on BGP | operational simplicity has led many of these MSDCs to converge on BGP | |||
| [RFC4271] as their single routing protocol for both their fabric | [RFC4271] as their single routing protocol for both fabric routing | |||
| routing and their Data Center Interconnect (DCI) routing [RFC7938]. | and Data Center Interconnect (DCI) routing [RFC7938]. This document | |||
| This document describes an alternative solution which leverages BGP- | describes an alternative solution that leverages BGP-LS [RFC9552] and | |||
| LS [RFC9552] and the Shortest Path First algorithm used by Internal | the Shortest Path First (SPF) algorithm used by Internal Gateway | |||
| Gateway Protocols (IGPs). | Protocols (IGPs). | |||
| This document leverages both the BGP protocol [RFC4271] and the BGP- | This document leverages both the BGP protocol [RFC4271] and BGP-LS | |||
| LS [RFC9552] extensions. The relationship, as well as the scope of | extensions [RFC9552]. The relationship as well as the scope of | |||
| changes is described respectively in Section 2 and Section 3. The | changes are described in Sections 2 and 3, respectively. The | |||
| modifications to [RFC4271] for BGP SPF described herein only apply to | modifications to [RFC4271] for BGP SPF described herein only apply to | |||
| IPv4 and IPv6 as underlay unicast Subsequent Address Families | IPv4 and IPv6 as underlay unicast Subsequent Address Family | |||
| Identifiers (SAFIs). Operations for any other BGP SAFIs are outside | Identifiers (SAFIs). Operations for any other BGP SAFIs are outside | |||
| the scope of this document. | the scope of this document. | |||
| This solution avails the benefits of both BGP and SPF-based IGPs. | This solution avails the benefits of both BGP and SPF-based IGPs. | |||
| These include TCP-based flow-control, no periodic link-state refresh, | These include TCP-based flow-control, no periodic link-state refresh, | |||
| and completely incremental NLRI advertisement. These advantages can | and completely incremental Network Layer Reachability Information | |||
| reduce the overhead in MSDCs where there is a high degree of Equal | (NLRI) advertisement. These advantages can reduce the overhead in | |||
| Cost Multi-Path (ECMP) load-balancing. Additionally, using an SPF- | MSDCs where there is a high degree of Equal-Cost Multipath (ECMP) | |||
| based computation can support fast convergence and the computation of | load balancing. Additionally, using an SPF-based computation can | |||
| Loop-Free Alternatives (LFAs). The SPF LFA extensions defined in | support fast convergence and the computation of Loop-Free | |||
| [RFC5286] can be similarly applied to BGP SPF calculations. However, | Alternatives (LFAs). The SPF LFA extensions defined in [RFC5286] can | |||
| the details are a matter of implementation detail and out of scope | be similarly applied to BGP SPF calculations. However, the details | |||
| for this document. Furthermore, a BGP-based solution lends itself to | are a matter of implementation detail and out of scope for this | |||
| multiple peering models including those incorporating route- | document. Furthermore, a BGP-based solution lends itself to multiple | |||
| reflectors [RFC4456] or controllers. | peering models including those incorporating route reflectors | |||
| [RFC4456] or controllers. | ||||
| 1.1. Terminology | 1.1. Terminology | |||
| This specification reuses terms defined in section 1.1 of [RFC4271]. | This specification reuses terms defined in Section 1.1 of [RFC4271]. | |||
| Additionally, this document introduces the following terms: | Additionally, this document introduces the following terms: | |||
| BGP SPF Routing Domain: A set of BGP routers that are under a single | BGP SPF Routing Domain: A set of BGP routers that are under a single | |||
| administrative domain and exchange link-state information using | administrative domain and that exchange link-state information | |||
| the BGP-LS-SPF SAFI and compute routes using BGP SPF as described | using the BGP-LS-SPF SAFI and compute routes that use BGP SPF, as | |||
| herein. | described herein. | |||
| BGP-LS-SPF NLRI: This refers to BGP-LS Network Layer Reachability | BGP-LS-SPF NLRI: The BGP-LS Network Layer Reachability Information | |||
| Information (NLRI) that is being advertised in the BGP-LS-SPF SAFI | (NLRI) that is being advertised in the BGP-LS-SPF SAFI | |||
| (Section 5.1) and is being used for BGP SPF route computation. | (Section 5.1) and is being used for BGP SPF route computation. | |||
| Dijkstra Algorithm: An algorithm for computing the shortest path | Dijkstra Algorithm: An algorithm for computing the shortest path | |||
| from a given node in a graph to every other node in the graph. | from a given node in a graph to every other node in the graph. | |||
| Prefix NLRI: In the context of BGP SPF, this term refers to both or | Prefix NLRI: In the context of BGP SPF, this term refers to the IPv4 | |||
| either the IPv4 Topology Prefix NLRI and/or the IPv6 Topology | Topology Prefix NLRI and/or the IPv6 Topology Prefix NLRI. | |||
| Prefix NLRI. | ||||
| 1.2. BGP Shortest Path First (SPF) Motivation | 1.2. BGP Shortest Path First (SPF) Motivation | |||
| Given that [RFC7938] already describes how BGP could be used as the | Given that [RFC7938] already describes how BGP could be used as the | |||
| sole routing protocol in an MSDC, one might question the motivation | sole routing protocol in an MSDC, one might question the motivation | |||
| for defining an alternative BGP deployment model when a mature | for defining an alternative BGP deployment model when a mature | |||
| solution exists. For both alternatives, BGP offers the operational | solution exists. For both alternatives, BGP offers the operational | |||
| benefits of a single routing protocol as opposed to the combination | benefits of a single routing protocol as opposed to the combination | |||
| of an IGP for the underlay and BGP as an overlay. However, BGP SPF | of IGP for the underlay and BGP as the overlay. However, BGP SPF | |||
| offers some unique advantages above and beyond standard BGP path- | offers some unique advantages above and beyond standard BGP path- | |||
| vector routing. With BGP SPF, the simple single-hop peering model | vector routing. With BGP SPF, the simple single-hop peering model | |||
| recommended in section 5.2.1 of [RFC7938] is augmented with peering | recommended in Section 5.2.1 of [RFC7938] is augmented with peering | |||
| models requiring fewer BGP sessions. | models requiring fewer BGP sessions. | |||
| A primary advantage is that all BGP speakers in the BGP SPF routing | A primary advantage is that all BGP speakers in the BGP SPF routing | |||
| domain have a complete view of the topology. This allows support for | domain have a complete view of the topology. This allows support for | |||
| ECMP, IP fast-reroute (e.g., Loop-Free Alternatives) [RFC5286], | ECMP, IP fast-reroute (e.g., Loop-Free Alternatives (LFAs) [RFC5286], | |||
| Shared Risk Link Groups (SRLGs) [RFC4202], and other routing | Shared Risk Link Groups (SRLGs) [RFC4202], and other routing | |||
| enhancements without advertisement of additional BGP paths [RFC7911] | enhancements without advertisement of additional BGP paths [RFC7911] | |||
| or other extensions. | or other extensions. | |||
| With the BGP SPF decision process as defined in Section 6, NLRI | With the BGP SPF decision process as defined in Section 6, NLRI | |||
| changes can be disseminated throughout the BGP routing domain much | changes can be disseminated throughout the BGP routing domain much | |||
| more rapidly. The added advantage of BGP using TCP for reliable | more rapidly. The added advantage of BGP using TCP for reliable | |||
| transport leverages TCP's inherent flow-control and guaranteed in- | transport leverages TCP's inherent flow-control and guaranteed in- | |||
| order delivery. | order delivery. | |||
| Another primary advantage is a potential reduction in NLRI | Another primary advantage is a potential reduction in NLRI | |||
| advertisement. With standard BGP path-vector routing, a single link | advertisement. With standard BGP path-vector routing, a single link | |||
| failure may impact 100s or 1000s of prefixes and result in the | failure may impact 100s or 1000s of prefixes and result in the | |||
| withdrawal or re-advertisement of the attendant NLRI. With BGP SPF, | withdrawal or readvertisement of the attendant NLRI. With BGP SPF, | |||
| only the BGP speakers originating the link NLRI need to withdraw the | only the BGP speakers originating the link NLRI need to withdraw the | |||
| corresponding BGP-LS-SPF Link NLRI. Additionally, the changed NLRI | corresponding BGP-LS-SPF Link NLRI. Additionally, the changed NLRI | |||
| is advertised immediately as opposed to normal BGP where it is only | is advertised immediately as opposed to normal BGP where it is only | |||
| advertised after the best route selection. These advantages provide | advertised after the best route selection. These advantages provide | |||
| NLRI dissemination throughout the BGP SPF routing domain with | NLRI dissemination throughout the BGP SPF routing domain with | |||
| efficiencies similar to link-state protocols. | efficiencies similar to link-state protocols. | |||
| With controller and route-reflector peering models, BGP SPF | With controller and route-reflector peering models, BGP SPF | |||
| advertisement and distributed computation require a minimal number of | advertisement and distributed computation require a minimal number of | |||
| sessions and copies of the NLRI since only the latest version of the | sessions and copies of the NLRI as only the latest version of the | |||
| NLRI from the originator is required (see Section 4). Given that | NLRI from the originator is required (see Section 4). Given that | |||
| verification of whether or not to advertise a link (with a BGP-LS-SPF | verification of whether or not to advertise a link (with a BGP-LS-SPF | |||
| Link NLRI) is done outside of BGP, each BGP speaker only needs as | Link NLRI) is done outside of BGP, each BGP speaker only needs as | |||
| many sessions and copies of the NLRI as required for redundancy. | many sessions and copies of the NLRI as required for redundancy. | |||
| Additionally, a controller could inject topology (i.e., BGP-LS-SPF | Additionally, a controller could inject topology (i.e., BGP-LS-SPF | |||
| NLRI) that is learned outside the BGP SPF routing domain. | NLRI) that is learned outside the BGP SPF routing domain. | |||
| Given BGP-LS NLRI is already defined [RFC9552], this functionality | Given that BGP-LS NLRI is already defined [RFC9552], this | |||
| can be reused for BGP-LS-SPF NLRI. | functionality can be reused for BGP-LS-SPF NLRI. | |||
| Another advantage of BGP SPF is that both IPv6 and IPv4 can be | Another advantage of BGP SPF is that both IPv6 and IPv4 can be | |||
| supported using the BGP-LS-SPF SAFI with the same BGP-LS-SPF Link | supported using the BGP-LS-SPF SAFI with the same BGP-LS-SPF Link | |||
| NLRIs. In many MSDC fabrics, the IPv4 and IPv6 topologies are | NLRIs. In many MSDC fabrics, the IPv4 and IPv6 topologies are | |||
| congruent (refer to Section 5.2.2). Although beyond the scope of | congruent (refer to Section 5.2.2). However, beyond the scope of | |||
| this document, BGP-LS-SPF NLRI multi-topology extensions could be | this document, BGP-LS-SPF NLRI multi-topology extensions could be | |||
| defined to support separate IPv4, IPv6, unicast, and multicast | defined to support separate IPv4, IPv6, unicast, and multicast | |||
| topologies while sharing the same NLRI. | topologies while sharing the same NLRI. | |||
| Finally, the BGP SPF topology can be used as an underlay for other | Finally, the BGP SPF topology can be used as an underlay for other | |||
| BGP SAFIs (using the existing model) and realize all the above | BGP SAFIs (using the existing model) and realize all the above | |||
| advantages. | advantages. | |||
| 1.3. Document Overview | 1.3. Document Overview | |||
| The document begins with sections defining the precise relationship | This document begins with Section 2 defining the precise relationship | |||
| that BGP SPF has with both the base BGP protocol [RFC4271] | that BGP SPF has with the base BGP protocol [RFC4271] and Section 3 | |||
| (Section 2) and the BGP Link-State (BGP-LS) extensions [RFC9552] | defining the BGP - Link-State (BGP-LS) extensions [RFC9552]. The BGP | |||
| (Section 3). The BGP peering models, as well as their respective | peering models as well as their respective trade-offs are then | |||
| trade-offs are then discussed in Section 4. The remaining sections, | discussed in Section 4. The remaining sections, which make up the | |||
| which make up the bulk of the document, define the protocol | bulk of the document, define the protocol enhancements necessary to | |||
| enhancements necessary to support BGP SPF including BGP-LS Extensions | support BGP SPF including BGP-LS extensions (Section 5), replacement | |||
| (Section 5), replacement of the base BGP decision process with the | of the base BGP decision process with the SPF computation | |||
| SPF computation (Section 6), and BGP SPF error handling (Section 7). | (Section 6), and BGP SPF error handling (Section 7). | |||
| 1.4. Requirements Language | 1.4. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 2. Base BGP Protocol Relationship | 2. Base BGP Protocol Relationship | |||
| With the exception of the decision process, the BGP SPF extensions | With the exception of the decision process, BGP SPF extensions | |||
| leverage the BGP protocol [RFC4271] without change. This includes | leverage the BGP protocol [RFC4271] without change. This includes | |||
| the BGP protocol Finite State Machine, BGP messages and their | the BGP protocol Finite State Machine, BGP messages and their | |||
| encodings, processing of BGP messages, BGP attributes and path | encodings, the processing of BGP messages, BGP attributes and path | |||
| attributes, BGP NLRI encodings, and any error handling defined in | attributes, BGP NLRI encodings, and any error handling defined in | |||
| [RFC4271], [RFC4760], and [RFC7606]. | [RFC4271], [RFC4760], and [RFC7606]. | |||
| Due to the changes to the decision process, there are mechanisms and | Due to changes in the decision process, there are mechanisms and | |||
| encodings that are no longer applicable. Unless explicitly specified | encodings that are no longer applicable. Unless explicitly specified | |||
| in the context of BGP SPF, all optional path attributes SHOULD NOT be | in the context of BGP SPF, all optional path attributes SHOULD NOT be | |||
| advertised. If received, all path attributes MUST be accepted, | advertised. If received, all path attributes MUST be accepted, | |||
| validated, and propagated consistent with the BGP protocol [RFC4271], | validated, and propagated consistently with the BGP protocol | |||
| even if not needed by BGP SPF. | [RFC4271], even if not needed by BGP SPF. | |||
| Section 9.1 of [RFC4271] defines the decision process that is used to | Section 9.1 of [RFC4271] defines the decision process that is used to | |||
| select routes for subsequent advertisement by applying the policies | select routes for subsequent advertisement by applying the policies | |||
| in the local Policy Information Base (PIB) to the routes stored in | in the local Policy Information Base (PIB) to the routes stored in | |||
| its Adj-RIBs-In. The output of the Decision Process is the set of | its Adj-RIBs-In. The output of the Decision Process is the set of | |||
| routes that are announced by a BGP speaker to its peers. These | routes that are announced by a BGP speaker to its peers. These | |||
| selected routes are stored by a BGP speaker in the speaker's Adj- | selected routes are stored by a BGP speaker in the speaker's Adj- | |||
| RIBs-Out according to policy. | RIBs-Out, according to policy. | |||
| The BGP SPF extension fundamentally changes the decision process, as | The BGP SPF extension fundamentally changes the decision process, as | |||
| described herein. Specifically: | described herein. Specifically: | |||
| 1. BGP advertisements are readvertised to neighbors immediately | 1. BGP advertisements are readvertised to neighbors immediately | |||
| without waiting or dependence on the route computation as | without waiting or dependence on the route computation, as | |||
| specified in phase 3 of the base BGP decision process. Multiple | specified in phase 3 of the base BGP decision process. Multiple | |||
| peering models are supported as specified in Section 4. | peering models are supported, as specified in Section 4. | |||
| 2. Determining the degree of preference for BGP routes for the SPF | 2. Determining the degree of preference for BGP routes for the SPF | |||
| calculation as described in phase 1 of the base BGP decision | calculation as described in phase 1 of the base BGP decision | |||
| process is replaced with the mechanisms in Section 6.1. | process is replaced with the mechanisms in Section 6.1. | |||
| 3. Phase 2 of the base BGP protocol decision process is replaced | 3. Phase 2 of the base BGP protocol decision process is replaced | |||
| with the Shortest Path First (SPF) algorithm, also known as the | with the SPF algorithm, also known as the Dijkstra algorithm. | |||
| Dijkstra algorithm. | ||||
| 3. BGP Link-State (BGP-LS) Relationship | 3. BGP - Link-State (BGP-LS) Relationship | |||
| [RFC9552] describes a mechanism by which link-state and Traffic | [RFC9552] describes a mechanism by which link-state and Traffic | |||
| Engineering (TE) information can be collected from networks and | Engineering (TE) information can be collected from networks and | |||
| shared with external entities using BGP. This is achieved by | shared with external entities using BGP. This is achieved by | |||
| defining NLRI advertised using the BGP-LS AFI. The BGP-LS extensions | defining NLRIs that are advertised using the BGP-LS AFI. The BGP-LS | |||
| defined in [RFC9552] make use of the decision process defined in | extensions defined in [RFC9552] make use of the decision process | |||
| [RFC4271]. Rather than reusing the BGP-LS SAFI, the BGP-LS-SPF SAFI | defined in [RFC4271]. Rather than reusing the BGP-LS SAFI, the BGP- | |||
| (Section 5.1) is introduced to ensure backward compatibility for the | LS-SPF SAFI (Section 5.1) is introduced to ensure backward | |||
| BGP-LS SAFI usage. | compatibility for BGP-LS SAFI usage. | |||
| The "BGP-LS NLRI and Attribute TLVs" registry [RFC9552] is shared | The "BGP-LS NLRI and Attribute TLVs" registry [RFC9552] is shared | |||
| between the BGP-LS SAFI and the BGP-LS-SPF SAFI. However, the TLVs | between the BGP-LS SAFI and the BGP-LS-SPF SAFI. However, the TLVs | |||
| defined in this document may not be applicable to the BGP-LS SAFI. | defined in this document may not be applicable to the BGP-LS SAFI. | |||
| As specified in Section 5.1 of [RFC9552], the presence of unknown or | As specified in Section 5.1 of [RFC9552], the presence of unknown or | |||
| unexpected TLVs is required to not result in the NLRI or the BGP-LS | unexpected TLVs is required so that the NLRI or BGP-LS Attribute will | |||
| Attribute being considered malformed (section 5.2 of [RFC9552]). The | not be considered malformed (Section 5.2 of [RFC9552]). The list of | |||
| list of BGP-LS TLVs applicable to the BGP-LS-SPF SAFI are described | BGP-LS TLVs applicable to the BGP-LS-SPF SAFI are described in | |||
| in Section 5.2. By default, the usage of other BGP-LS TLVs or | Section 5.2. By default, the usage of other BGP-LS TLVs or | |||
| extensions are ignored for the BGP-LS-SPF SAFI. However, this | extensions are ignored for the BGP-LS-SPF SAFI. However, this | |||
| doesn't preclude the usage specification of these TLVs for the BGP- | doesn't preclude the usage specification of these TLVs for the BGP- | |||
| LS-SPF SAFI in future documents. | LS-SPF SAFI in future documents. | |||
| 4. BGP SPF Peering Models | 4. BGP SPF Peering Models | |||
| Depending on the topology, scaling, capabilities of the BGP speakers, | Depending on the topology, scaling, capabilities of the BGP speakers, | |||
| and redundancy requirements, various peering models are supported. | and redundancy requirements, various peering models are supported. | |||
| The only requirement is that all BGP speakers in the BGP SPF routing | The only requirement is that all BGP speakers in the BGP SPF routing | |||
| domain adhere to this specification. | domain adhere to this specification. | |||
| The choice of the deployment model is up to the operator and their | The choice of the deployment model is up to the operator and their | |||
| requirements and policies. Deployment model choice is out of scope | requirements and policies. Deployment model choice is out of scope | |||
| for this document and is discussed in [I-D.ietf-lsvr-applicability]. | for this document and is discussed in [I-D.ietf-lsvr-applicability]. | |||
| The sub-sections below describe several BGP SPF deployment models. | The sub-sections below describe several BGP SPF deployment models. | |||
| However, this doesn't preclude other deployment models. | However, this doesn't preclude other deployment models. | |||
| 4.1. BGP Single-Hop Peering on Network Node Connections | 4.1. BGP Single-Hop Peering on Network Node Connections | |||
| The simplest peering model is the one where EBGP single-hop sessions | The simplest peering model is the one where External BGP (EBGP) | |||
| are established over direct point-to-point links interconnecting the | single-hop sessions are established over direct point-to-point links | |||
| nodes in the BGP SPF routing domain. Once the single-hop BGP session | interconnecting the nodes in the BGP SPF routing domain. Once the | |||
| has been established and the Multi-Protocol Extensions Capability | single-hop BGP session has been established and the Multiprotocol | |||
| with the BGP-LS-SPF AFI/SAFI has been exchanged [RFC4760] for the | Extensions capabilities have been exchanged with the BGP-LS-SPF AFI/ | |||
| corresponding session, then the link is considered up from a BGP SPF | SAFI [RFC4760] for the corresponding session, then the link is | |||
| perspective and the corresponding BGP-LS-SPF Link NLRI is advertised. | considered up and available from a BGP SPF perspective, and the | |||
| corresponding BGP-LS-SPF Link NLRI is advertised. | ||||
| An End-of-RIB (EoR) Marker (Section 5.3) for the BGP-LS-SPF SAFI MAY | An End-of-RIB (EoR) marker (Section 5.3) for the BGP-LS-SPF SAFI MAY | |||
| be required from a peer prior to advertising the BGP-LS-SPF Link NLRI | be required from a peer prior to advertising the BGP-LS-SPF Link NLRI | |||
| for the corresponding link to that peer. When required, the default | for the corresponding link to that peer. When required, the default | |||
| wait indefinitely for the EoR Marker prior to advertising the BGP-LS- | wait indefinitely for the EoR marker prior to advertising the BGP-LS- | |||
| SPF Link NLRI. Refer to Section 10.4. | SPF Link NLRI. Refer to Section 10.4. | |||
| A failure to consistently configure the use of the EoR marker can | A failure to consistently configure the use of the EoR marker can | |||
| result in transient micro-loops and dropped traffic due to incomplete | result in transient micro-loops and dropped traffic due to incomplete | |||
| forwarding state. | forwarding state. | |||
| If the session goes down, the corresponding Link NLRI are withdrawn. | If the session goes down, the corresponding Link NLRIs are withdrawn. | |||
| Topologically, this would be equivalent to the peering model in | Topologically, this would be equivalent to the peering model in | |||
| [RFC7938] where there is a BGP session on every link in the data | [RFC7938] where there is a BGP session on every link in the data | |||
| center switch fabric. The content of the Link NLRI is described in | center switch fabric. The content of the Link NLRI is described in | |||
| Section 5.2.2. | Section 5.2.2. | |||
| 4.2. BGP Peering Between Directly-Connected Nodes | 4.2. BGP Peering Between Directly Connected Nodes | |||
| In this model, BGP speakers peer with all directly-connected nodes | In this model, BGP speakers peer with all directly connected nodes | |||
| but the sessions may be between loopback addresses (i.e., two-hop | but the sessions may be between loopback addresses (i.e., two-hop | |||
| sessions) and the direct connection discovery and liveness detection | sessions), and the direct connection discovery and liveness detection | |||
| for the interconnecting links are independent of the BGP protocol. | for the interconnecting links are independent of the BGP protocol. | |||
| The BFD protocol [RFC5880] is RECOMMENDED for liveness detection. | The Bidirectional Forwarding Detection (BFD) protocol [RFC5880] is | |||
| Usage of other liveness connection mechanisms is outside the scope of | RECOMMENDED for liveness detection. Usage of other liveness | |||
| this document. Consequently, there is a single BGP session even if | connection mechanisms is outside the scope of this document. | |||
| there are multiple direct connections between BGP speakers. The BGP- | Consequently, there is a single BGP session even if there are | |||
| LS-SPF Link NLRI is advertised as long as a BGP session has been | multiple direct connections between BGP speakers. The BGP-LS-SPF | |||
| Link NLRI is advertised as long as a BGP session has been | ||||
| established, the BGP-LS-SPF AFI/SAFI capability has been exchanged | established, the BGP-LS-SPF AFI/SAFI capability has been exchanged | |||
| [RFC4760], the link is operational as determined using liveness | [RFC4760], the link is operational as determined using liveness | |||
| detection mechanisms, and, optionally, the EoR Marker has been | detection mechanisms, and, optionally, the EoR marker has been | |||
| received as described in the Section 5.3. This is much like the | received as described in Section 5.3. This is much like the previous | |||
| previous peering model only peering is between loopback addresses and | peering model, except peering is between loopback addresses and the | |||
| the interconnecting links can be unnumbered. However, since there | interconnecting links can be unnumbered. However, since there are | |||
| are BGP sessions between every directly-connected node in the BGP SPF | BGP sessions between every directly connected node in the BGP SPF | |||
| routing domain, there is a reduction in BGP sessions when there are | routing domain, there is a reduction in BGP sessions when there are | |||
| parallel links between nodes. Hence, this peering model is | parallel links between nodes. Hence, this peering model is | |||
| RECOMMENDED over the single-hop peering model Section 4.1. | RECOMMENDED over the single-hop peering model Section 4.1. | |||
| 4.3. BGP Peering in Route-Reflector or Controller Topology | 4.3. BGP Peering in Route-Reflector or Controller Topology | |||
| In this model, BGP speakers peer solely with one or more Route | In this model, BGP speakers peer solely with one or more route | |||
| Reflectors [RFC4456] or controllers. As in the previous model, | reflectors [RFC4456] or controllers. As in the previous model, | |||
| direct connection discovery and liveness detection for those links in | direct connection discovery and liveness detection for those links in | |||
| the BGP SPF routing domain are done outside of the BGP protocol. | the BGP SPF routing domain are done outside of the BGP protocol. | |||
| BGP-LS-SPF Link NLRI is advertised as long as the corresponding link | BGP-LS-SPF Link NLRI is advertised as long as the corresponding link | |||
| is considered up as per the chosen liveness detection mechanism (The | is considered up and available as per the chosen liveness detection | |||
| BFD protocol [RFC5880] is RECOMMENDED). | mechanism (thus, the BFD protocol [RFC5880] is RECOMMENDED). | |||
| This peering model, known as sparse peering, allows for fewer BGP | This peering model, known as "sparse peering", allows for fewer BGP | |||
| sessions and, consequently, fewer instances of the same NLRI received | sessions and, consequently, fewer instances of the same NLRI received | |||
| from multiple peers. Ideally, the route-reflectors or controller BGP | from multiple peers. Ideally, the route reflectors or controller BGP | |||
| sessions would be on directly-connected links to avoid dependence on | sessions would be on directly connected links to avoid dependence on | |||
| another routing protocol for session connectivity. However, multi- | another routing protocol for session connectivity. However, multi- | |||
| hop peering is not precluded. The number of BGP sessions is | hop peering is not precluded. The number of BGP sessions is | |||
| dependent on the redundancy requirements and the stability of the BGP | dependent on the redundancy requirements and the stability of the BGP | |||
| sessions. | sessions. | |||
| The controller may use constraints to determine when to advertise | The controller may use constraints to determine when to advertise | |||
| BGP-LS-SPF NLRI for BGP-LS peers. For example, a controller may | BGP-LS-SPF NLRI for BGP-LS peers. For example, a controller may | |||
| delay advertisement of a link between two peers the until EoR marker | delay advertisement of a link between two peers the until the EoR | |||
| Section 5.3 has been received from both BGP peers and the BGP-LS Link | marker Section 5.3 has been received from both BGP peers and the BGP- | |||
| NLRI for the link(s) between the two nodes have been received from | LS Link NLRI for the link(s) between the two nodes has been received | |||
| both BGP peers. | from both BGP peers. | |||
| 5. BGP Shortest Path Routing (SPF) Protocol Extensions | 5. BGP Shortest Path Routing (SPF) Protocol Extensions | |||
| 5.1. BGP-LS Shortest Path Routing (SPF) SAFI | 5.1. BGP-LS Shortest Path Routing (SPF) SAFI | |||
| This document introduces the BGP-LS-SPF SAFI with a value of 80. The | This document introduces the BGP-LS-SPF SAFI with a value of 80. The | |||
| SPF-based decision process (Section 6) applies only to the BGP-LS-SPF | SPF-based decision process (Section 6) applies only to the BGP-LS-SPF | |||
| SAFI and MUST NOT be used with other combinations of the BGP-LS AFI | SAFI and MUST NOT be used with other combinations of the BGP-LS AFI | |||
| (16388). In order for two BGP speakers to exchange BGP-LS-SPF NLRI, | (16388). In order for two BGP speakers to exchange BGP-LS-SPF NLRI, | |||
| they MUST exchange the Multiprotocol Extensions Capability [RFC4760] | they MUST exchange Multiprotocol Extensions capabilities [RFC4760] to | |||
| to ensure that they are both capable of properly processing such | ensure that they are both capable of properly processing such an | |||
| NLRI. This is done with AFI 16388 / SAFI 80. The BGP-LS-SPF SAFI is | NLRI. This is done with AFI 16388 / SAFI 80. The BGP-LS-SPF SAFI is | |||
| used to advertise IPv4 and IPv6 prefix information in a format | used to advertise IPv4 and IPv6 prefix information in a format | |||
| facilitating an SPF-based decision process. | facilitating an SPF-based decision process. | |||
| 5.1.1. BGP-LS-SPF NLRI TLVs | 5.1.1. BGP-LS-SPF NLRI TLVs | |||
| All the TLVs defined for BGP-LS [RFC9552] are applicable and can be | All the TLVs defined for BGP-LS [RFC9552] are applicable and can be | |||
| used with the BGP-LS-SPF SAFI to describe links, nodes, and prefixes | used with the BGP-LS-SPF SAFI to describe links, nodes, and prefixes | |||
| comprising BGP-SPF LSDB information. | comprising BGP SPF Link-State Database (LSDB) information. | |||
| The NLRI and comprising TLVs MUST be encoded as specified in section | The NLRI and comprising TLVs MUST be encoded as specified in | |||
| 5.1 [RFC9552]. TLVs specified as mandatory in [RFC9552] are | Section 5.1 of [RFC9552]. TLVs specified as mandatory in [RFC9552] | |||
| considered mandatory for the BGP-LS-SPF SAFI as well. If a mandatory | are considered mandatory for the BGP-LS-SPF SAFI as well. If a | |||
| TLV is not present, the NLRI MUST NOT be used in the BGP SPF route | mandatory TLV is not present, the NLRI MUST NOT be used in the BGP | |||
| calculation. All the other TLVs are considered as optional TLVs. | SPF route calculation. All the other TLVs are considered as optional | |||
| Documents specifying usage of optional TLV for BGP SPF MUST address | TLVs. Documents specifying usage of optional TLVs for BGP SPF MUST | |||
| backward compatibility. | address backward compatibility. | |||
| 5.1.2. BGP-LS Attribute | 5.1.2. BGP-LS Attribute | |||
| The BGP-LS attribute of the BGP-LS-SPF SAFI uses exactly same format | The BGP-LS attribute of the BGP-LS-SPF SAFI uses the exact same | |||
| of the BGP-LS AFI [RFC9552]. In other words, all the TLVs used in | format as the BGP-LS AFI [RFC9552]. In other words, all the TLVs | |||
| the BGP-LS attribute of the BGP-LS AFI are applicable and used for | used in the BGP-LS attribute of the BGP-LS AFI are applicable and are | |||
| the BGP-LS attribute of the BGP-LS-SPF SAFI. This attribute is an | used for the BGP-LS attribute of the BGP-LS-SPF SAFI. This attribute | |||
| optional, non-transitive BGP attribute that is used to carry link, | is an optional, non-transitive BGP attribute that is used to carry | |||
| node, and prefix properties and attributes. The BGP-LS attribute is | link, node, and prefix properties and attributes. The BGP-LS | |||
| a set of TLVs. | attribute is a set of TLVs. | |||
| All the TLVs defined for the BGP-LS Attribute [RFC9552] are | All the TLVs defined for the BGP-LS Attribute [RFC9552] are | |||
| applicable and can be used with the BGP-LS-SPF SAFI to carry link, | applicable and can be used with the BGP-LS-SPF SAFI to carry link, | |||
| node, and prefix properties and attributes. | node, and prefix properties and attributes. | |||
| The BGP-LS attribute may potentially be quite large depending on the | The BGP-LS attribute may potentially be quite large depending on the | |||
| amount of link-state information associated with a single BGP-LS-SPF | amount of link-state information associated with a single BGP-LS-SPF | |||
| NLRI. The BGP specification [RFC4271] mandates a maximum BGP message | NLRI. The BGP specification [RFC4271] mandates a maximum BGP message | |||
| size of 4096 octets. It is RECOMMENDED that an implementation | size of 4096 octets. It is RECOMMENDED that an implementation | |||
| support [RFC8654] in order to accommodate a greater amount of | support [RFC8654] in order to accommodate a greater amount of | |||
| skipping to change at page 11, line 29 ¶ | skipping to change at line 487 ¶ | |||
| properties and attributes, such as the link and prefix metric or | properties and attributes, such as the link and prefix metric or | |||
| auxiliary Router-IDs of nodes, etc. This document extends the usage | auxiliary Router-IDs of nodes, etc. This document extends the usage | |||
| of BGP-LS NLRI for the purpose of BGP SPF calculation via | of BGP-LS NLRI for the purpose of BGP SPF calculation via | |||
| advertisement in the BGP-LS-SPF SAFI. | advertisement in the BGP-LS-SPF SAFI. | |||
| The protocol identifier specified in the Protocol-ID field [RFC9552] | The protocol identifier specified in the Protocol-ID field [RFC9552] | |||
| represents the origin of the advertised NLRI. For Node NLRI and Link | represents the origin of the advertised NLRI. For Node NLRI and Link | |||
| NLRI, the specified Protocol-ID MUST be the direct protocol (4). | NLRI, the specified Protocol-ID MUST be the direct protocol (4). | |||
| Node or Link NLRI with a Protocol-ID other than the direct protocol | Node or Link NLRI with a Protocol-ID other than the direct protocol | |||
| is considered malformed. For Prefix NLRI, the specified Protocol-ID | is considered malformed. For Prefix NLRI, the specified Protocol-ID | |||
| MUST be the origin of the prefix. The local and remote node | MUST be the origin of the prefix. The Local and Remote Node | |||
| descriptors for all NLRI MUST include the BGP Router-ID (TLV 516) | Descriptors for all NLRI MUST include the BGP Router-ID (TLV 516) | |||
| [RFC9086] and the AS Number (TLV 512) [RFC9552]. The BGP | [RFC9086] and the Autonomous System (TLV 512) number [RFC9552]. The | |||
| Confederation Member (TLV 517) [RFC9086] is not applicable. | BGP Confederation Member (TLV 517) [RFC9086] is not applicable. | |||
| 5.2.1. Node NLRI Usage | 5.2.1. Node NLRI Usage | |||
| The Node NLRI MUST be advertised unconditionally by all routers in | The Node NLRI MUST be advertised unconditionally by all routers in | |||
| the BGP SPF routing domain. | the BGP SPF routing domain. | |||
| 5.2.1.1. BGP-LS-SPF Node NLRI Attribute SPF Status TLV | 5.2.1.1. BGP-LS-SPF Node NLRI Attribute SPF Status TLV | |||
| A BGP-LS Attribute SPF Status TLV of the BGP-LS-SPF Node NLRI is | A BGP-LS Attribute SPF Status TLV of the BGP-LS-SPF Node NLRI is | |||
| defined to indicate the status of the node with respect to the BGP | defined to indicate the status of the node with respect to the BGP | |||
| SPF calculation. This is used to rapidly take a node out of service | SPF calculation. This is used to rapidly take a node out of service | |||
| (refer to Section 6.5.2) or to indicate the node is not to be used | (refer to Section 6.5.2) or to indicate that the node is not to be | |||
| for transit (i.e., non-local) traffic (refer to Section 6.3). If the | used for transit (i.e., non-local) traffic (refer to Section 6.3). | |||
| SPF Status TLV is not included with the Node NLRI, the node is | If the SPF Status TLV is not included with the Node NLRI, the node is | |||
| considered to be up and is available for transit traffic. A single | considered to be up and is available for transit traffic. A single | |||
| TLV type is shared by the Node, Link, and Prefix NLRI. The TLV type | TLV type is shared by the Node, Link, and Prefix NLRI. The TLV type | |||
| is 1184. | is 1184. | |||
| 0 1 2 3 | 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 | 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 (1184) | Length (1 Octet) | | | Type (1184) | Length (1 Octet) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SPF Status | | | SPF Status | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| SPF Status Values: 0 - Reserved | +=======+=======================================================+ | |||
| 1 - Node unreachable with respect to BGP SPF | | Value | Description | | |||
| 2 - Node does not support transit with respect | +=======+=======================================================+ | |||
| to BGP SPF | | 0 | Reserved | | |||
| 3-254 - Undefined | +-------+-------------------------------------------------------+ | |||
| 255 - Reserved | | 1 | Node unreachable with respect to BGP SPF | | |||
| +-------+-------------------------------------------------------+ | ||||
| | 2 | Node does not support transit with respect to BGP SPF | | ||||
| +-------+-------------------------------------------------------+ | ||||
| | 3-254 | Unassigned | | ||||
| +-------+-------------------------------------------------------+ | ||||
| | 255 | Reserved | | ||||
| +-------+-------------------------------------------------------+ | ||||
| Table 1: SPF Status Values | ||||
| If a BGP speaker received the Node NLRI but the SPF Status TLV is not | If a BGP speaker received the Node NLRI but the SPF Status TLV is not | |||
| received, then any previously received SPF status information is | received, then any previously received SPF status information is | |||
| considered as implicitly withdrawn and the NLRI is propagated to | considered as implicitly withdrawn, and the NLRI is propagated to | |||
| other BGP speakers. A BGP speaker receiving a BGP Update containing | other BGP speakers. A BGP speaker receiving a BGP Update containing | |||
| an SPF Status TLV in the BGP-LS attribute [RFC9552] with an unknown | an SPF Status TLV in the BGP-LS attribute [RFC9552] with an unknown | |||
| value SHOULD be advertised to other BGP speakers and MUST ignore the | value SHOULD be advertised to other BGP speakers and MUST ignore the | |||
| Status TLV with an unknown value in the SPF computation. An | Status TLV with an unknown value in the SPF computation. An | |||
| implementation MAY log this condition for further analysis. If the | implementation MAY log this condition for further analysis. If the | |||
| SPF Status TLV contains a reserved value (0 or 255) the TLV is | SPF Status TLV contains a reserved value (0 or 255), the TLV is | |||
| considered malformed and is handled as described in Section 7.1. | considered malformed and is handled as described in Section 7.1. | |||
| 5.2.2. Link NLRI Usage | 5.2.2. Link NLRI Usage | |||
| The criteria for advertisement of Link NLRI are discussed in | The criteria for advertisement of Link NLRIs are discussed in | |||
| Section 4. | Section 4. | |||
| Link NLRI is advertised with unique local and remote node descriptors | Link NLRI is advertised with unique Local and Remote Node Descriptors | |||
| dependent on the IP addressing. For IPv4 links, the link's local | dependent on the IP addressing. For IPv4 links, the link's local | |||
| IPv4 (TLV 259) and remote IPv4 (TLV 260) addresses are used. For | IPv4 interface address (TLV 259) and remote IPv4 neighbor address | |||
| IPv6 links, the local IPv6 (TLV 261) and remote IPv6 (TLV 262) | (TLV 260) are used. For IPv6 links, the local IPv6 interface address | |||
| addresses are used (Section 5.2.2 of [RFC9552]). IPv6 links without | (TLV 261) and remote IPv6 neighbor address (TLV 262) are used | |||
| global IPv6 addresses are considered unnumbered links and are handled | (Section 5.2.2 of [RFC9552]). IPv6 links without global IPv6 | |||
| as described below. For links supporting having both IPv4 and IPv6 | addresses are considered unnumbered links and are handled as | |||
| addresses, both sets of descriptors MAY be included in the same Link | described below. For links supporting both IPv4 and IPv6 addresses, | |||
| NLRI. | both sets of descriptors MAY be included in the same Link NLRI. | |||
| For unnumbered links, the Link Local/Remote Identifiers (TLV 258) are | For unnumbered links, the Link Local/Remote Identifiers (TLV 258) are | |||
| used. The Link Remote Identifier isn't normally exchanged in BGP and | used. The Link Remote Identifier isn't normally exchanged in BGP, | |||
| discovering the Link Remote Identifier is beyond the scope of this | and discovering the Link Remote Identifier is beyond the scope of | |||
| document. If the Link Remote Identifier is unknown, a Link Remote | this document. If the Link Remote Identifier is unknown, a Link | |||
| Identifier of 0 MUST be advertised. When 0 is advertised and there | Remote Identifier of 0 MUST be advertised. When 0 is advertised and | |||
| are parallel unnumbered links between a pair of BGP speakers, there | there are parallel unnumbered links between a pair of BGP speakers, | |||
| may be transient intervals where the BGP speakers don't agree on | there may be transient intervals where the BGP speakers don't agree | |||
| which of the parallel unnumbered links are operational. For this | on which of the parallel unnumbered links are operational. For this | |||
| reason, it is RECOMMENDED that the Link Remote Identifiers be known | reason, it is RECOMMENDED that the Link Remote Identifiers be known | |||
| (e.g., discovered using alternate mechanisms or configured) in the | (e.g., discovered using alternate mechanisms or configured) in the | |||
| presence of parallel unnumbered links. | presence of parallel unnumbered links. | |||
| The link descriptors are described in table 4 of [RFC9552]. | The link descriptors are described in Table 4 of [RFC9552]. | |||
| Additionally, the Address Family Link Descriptor TLV is defined to | Additionally, the Address Family Link Descriptor TLV is defined to | |||
| determine whether an unnumbered link can be used in the IPv4 SPF, the | determine whether an unnumbered link can be used in the IPv4 SPF, the | |||
| IPv6, or both (refer to Section 5.2.2.1). | IPv6, or both (refer to Section 5.2.2.1). | |||
| For a link to be used in SPF computation for a given address family, | For a link to be used in SPF computation for a given address family, | |||
| i.e., IPv4 or IPv6, both routers connecting the link MUST have | i.e., IPv4 or IPv6, both routers connecting the link MUST have | |||
| matching addresses (i.e., router interface addresses must be on the | matching addresses (i.e., router interface addresses must be on the | |||
| same subnet for numbered interfaces and the local/remote link | same subnet for numbered interfaces, and the local/remote link | |||
| identifiers (Section 6.3) must match for unnumbered interfaces). | identifiers (Section 6.3) must match for unnumbered interfaces). | |||
| The IGP metric attribute TLV (TLV 1095) MUST be advertised. If a BGP | The IGP Metric (TLV 1095) MUST be advertised. If a BGP speaker | |||
| speaker receives a Link NLRI without an IGP metric attribute TLV, | receives a Link NLRI without an IGP Metric attribute TLV, then it | |||
| then it MUST consider the received NLRI as a malformed (refer to | MUST consider the received NLRI as malformed (refer to Section 7). | |||
| Section 7). The BGP SPF metric length is 4 octets. A metric is | The BGP SPF metric length is 4 octets. A metric is associated with | |||
| associated with the output side of each router interface. This | the output side of each router interface. This metric is | |||
| metric is configurable by the system administrator. The lower the | configurable by the system administrator. The lower the metric, the | |||
| metric, the more likely the interface is to be used to forward data | more likely the interface is to be used to forward data traffic. One | |||
| traffic. One possible default for metric would be to give each | possible default for the metric would be to give each interface a | |||
| interface a metric of 1 making it effectively a hop count. | metric of 1 making it effectively a hop count. | |||
| The usage of other link attribute TLVs is beyond the scope of this | The usage of other link attribute TLVs is beyond the scope of this | |||
| document. | document. | |||
| 5.2.2.1. BGP-LS Link NLRI Address Family Link Descriptor TLV | 5.2.2.1. BGP-LS Link NLRI Address Family Link Descriptor TLV | |||
| For unnumbered links, the address family cannot be ascertained from | For unnumbered links, the address family cannot be ascertained from | |||
| the endpoint link descriptors. Hence, the Address Family (AF) Link | the endpoint link descriptors. Hence, the Address Family Link | |||
| Descriptor SHOULD be included with the Link Local/Remote Identifiers | Descriptor SHOULD be included with the Link Local/Remote Identifiers | |||
| TLV for unnumbered links, so that the link can be used in the | TLV for unnumbered links, so that the link can be used in the | |||
| respective address family SPF. If the Address Family Link Descriptor | respective address family SPF. If the Address Family Link Descriptor | |||
| is not present for an unnumbered link, the link will not be used in | is not present for an unnumbered link, the link will not be used in | |||
| the SPF computation for either address family. If the Address Family | the SPF computation for either address family. If the Address Family | |||
| Link Descriptor is present for a numbered link, the link descriptor | Link Descriptor is present for a numbered link, the link descriptor | |||
| will be ignored. If the Address Family Link Descriptor TLV contains | will be ignored. If the Address Family Link Descriptor TLV contains | |||
| an undefined value (3-254), the link descriptor will be ignored. If | an undefined value (3-254), the link descriptor will be ignored. If | |||
| the Address Family Link Descriptor TLV contains a reserved value (0 | the Address Family Link Descriptor TLV contains a reserved value (0 | |||
| or 255) the TLV is considered malformed and is handled as described | or 255), the TLV is considered malformed and is handled as described | |||
| in Section 7.1. | in Section 7.1. | |||
| Note that an unnumbered link can be used for both the IPv4 and IPv6 | Note that an unnumbered link can be used for both the IPv4 and IPv6 | |||
| SPF computation by advertising separate Address Family Link | SPF computation by advertising separate Address Family Link | |||
| Descriptor TLVs for IPv4 and IPv6. | Descriptor TLVs for IPv4 and IPv6. | |||
| 0 1 2 3 | 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 | 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 (1185) | Length (1 Octet) | | | Type (1185) | Length (1 Octet) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Address Family| | | Address Family| | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Address Family Values: 0 - Reserved | +=======+=====================+ | |||
| 1 - IPv4 Address Family | | Value | Description | | |||
| 2 - IPv6 Address Family | +=======+=====================+ | |||
| 3-254 - Undefined | | 0 | Reserved | | |||
| 255 - Reserved | +-------+---------------------+ | |||
| | 1 | IPv4 Address Family | | ||||
| +-------+---------------------+ | ||||
| | 2 | IPv6 Address Family | | ||||
| +-------+---------------------+ | ||||
| | 3-254 | Undefined | | ||||
| +-------+---------------------+ | ||||
| | 255 | Reserved | | ||||
| +-------+---------------------+ | ||||
| Table 2: Address Family Values | ||||
| 5.2.2.2. BGP-LS-SPF Link NLRI Attribute SPF Status TLV | 5.2.2.2. BGP-LS-SPF Link NLRI Attribute SPF Status TLV | |||
| This BGP-LS-SPF Attribute TLV of the BGP-LS-SPF Link NLRI is defined | The BGP-LS-SPF Attribute TLV of the BGP-LS-SPF Link NLRI is defined | |||
| to indicate the status of the link with respect to the BGP SPF | to indicate the status of the link with respect to the BGP SPF | |||
| calculation. This is used to expedite convergence for link failures | calculation. This is used to expedite convergence for link failures | |||
| as discussed in Section 6.5.1. If the SPF Status TLV is not included | as discussed in Section 6.5.1. If the SPF Status TLV is not included | |||
| with the Link NLRI, the link is considered up and available. The SPF | with the Link NLRI, the link is considered up and available. The SPF | |||
| status is acted upon with the execution of the next SPF calculation | status is acted upon with the execution of the next SPF calculation | |||
| Section 6.3. A single TLV type is shared by the Node, Link, and | (Section 6.3). A single TLV type is shared by the Node, Link, and | |||
| Prefix NLRI. The TLV type is 1184. | Prefix NLRI. The TLV type is 1184. | |||
| 0 1 2 3 | 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 | 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 (1184) | Length (1 Octet) | | | Type (1184) | Length (1 Octet) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SPF Status | | | SPF Status | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| BGP Status Values: 0 - Reserved | +=======+==========================================+ | |||
| 1 - Link Unreachable with respect to BGP SPF | | Value | Description | | |||
| 2-254 - Undefined | +=======+==========================================+ | |||
| 255 - Reserved | | 0 | Reserved | | |||
| +-------+------------------------------------------+ | ||||
| | 1 | Link unreachable with respect to BGP SPF | | ||||
| +-------+------------------------------------------+ | ||||
| | 2-254 | Unassigned | | ||||
| +-------+------------------------------------------+ | ||||
| | 255 | Reserved | | ||||
| +-------+------------------------------------------+ | ||||
| Table 3: BGP Status Values | ||||
| If a BGP speaker received the Link NLRI but the SPF Status TLV is not | If a BGP speaker received the Link NLRI but the SPF Status TLV is not | |||
| received, then any previously received SPF status information is | received, then any previously received SPF status information is | |||
| considered as implicitly withdrawn and the NLRI is propagated to | considered as implicitly withdrawn, and the NLRI is propagated to | |||
| other BGP speakers. A BGP speaker receiving a BGP Update containing | other BGP speakers. A BGP speaker receiving a BGP Update containing | |||
| an SPF Status TLV in the BGP-LS attribute [RFC9552] with an unknown | an SPF Status TLV in the BGP-LS attribute [RFC9552] with an unknown | |||
| value SHOULD be advertised to other BGP speakers and MUST ignore the | value SHOULD be advertised to other BGP speakers and MUST ignore the | |||
| Status TLV with an unknown value in the SPF computation. An | SPF Status TLV with an unknown value in the SPF computation. An | |||
| implementation MAY log this information for further analysis. If the | implementation MAY log this information for further analysis. If the | |||
| SPF Status TLV contains a reserved value (0 or 255) the TLV is | SPF Status TLV contains a reserved value (0 or 255), the TLV is | |||
| considered malformed and is handled as described in Section 7.1. | considered malformed and is handled as described in Section 7.1. | |||
| 5.2.3. IPv4/IPv6 Prefix NLRI Usage | 5.2.3. IPv4/IPv6 Prefix NLRI Usage | |||
| IPv4/IPv6 Prefix NLRI is advertised with a Local Node Descriptor and | A IPv4/IPv6 Prefix NLRI is advertised with a Local Node Descriptor | |||
| the prefix and length. The Prefix Descriptors field includes the IP | and the prefix and length. The Prefix Descriptor field includes IP | |||
| Reachability Information TLV (TLV 265) as described in [RFC9552]. | Reachability Information (TLV 265) as described in [RFC9552]. The | |||
| The Prefix Metric TLV (TLV 1155) MUST be advertised to be considered | Prefix Metric (TLV 1155) MUST be advertised to be considered for | |||
| for route calculation. The IGP Route Tag TLV (TLV 1153) MAY be | route calculation. The IGP Route Tag (TLV 1153) MAY be advertised. | |||
| advertised. The usage of other BGP-LS attribute TLVs is beyond the | The usage of other BGP-LS attribute TLVs is beyond the scope of this | |||
| scope of this document. | document. | |||
| 5.2.3.1. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV | 5.2.3.1. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV | |||
| A BGP-LS Attribute SPF Status TLV of the BGP-LS-SPF Prefix NLRI is | A BGP-LS Attribute SPF Status TLV of the BGP-LS-SPF Prefix NLRI is | |||
| defined to indicate the status of the prefix with respect to the BGP | defined to indicate the status of the prefix with respect to the BGP | |||
| SPF calculation. This is used to expedite convergence for prefix | SPF calculation. This is used to expedite convergence for prefix | |||
| unreachability as discussed in Section 6.5.1. If the SPF Status TLV | unreachability, as discussed in Section 6.5.1. If the SPF Status TLV | |||
| is not included with the Prefix NLRI, the prefix is considered | is not included with the Prefix NLRI, the prefix is considered | |||
| reachable. A single TLV type is shared by the Node, Link, and Prefix | reachable. A single TLV type is shared by the Node, Link, and Prefix | |||
| NLRI. The TLV type is 1184. | NLRI. The TLV type is 1184. | |||
| 0 1 2 3 | 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 | 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 (1184) | Length (1 Octet) | | | Type (1184) | Length (1 Octet) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SPF Status | | | SPF Status | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| BGP Status Values: 0 - Reserved | +=======+============================================+ | |||
| 1 - Prefix Unreachable with respect to SPF | | Value | Description | | |||
| 2-254 - Undefined | +=======+============================================+ | |||
| 255 - Reserved | | 0 | Reserved | | |||
| +-------+--------------------------------------------+ | ||||
| | 1 | Prefix unreachable with respect to BGP SPF | | ||||
| +-------+--------------------------------------------+ | ||||
| | 2-254 | Unassigned | | ||||
| +-------+--------------------------------------------+ | ||||
| | 255 | Reserved | | ||||
| +-------+--------------------------------------------+ | ||||
| Table 4: BGP Status Values | ||||
| If a BGP speaker received the Prefix NLRI but the SPF Status TLV is | If a BGP speaker received the Prefix NLRI but the SPF Status TLV is | |||
| not received, then any previously received SPF status information is | not received, then any previously received SPF status information is | |||
| considered as implicitly withdrawn and the NLRI is propagated to | considered as implicitly withdrawn, and the NLRI is propagated to | |||
| other BGP speakers. A BGP speaker receiving a BGP Update containing | other BGP speakers. A BGP speaker receiving a BGP Update containing | |||
| an SPF Status TLV in the BGP-LS attribute [RFC9552] with an unknown | an SPF Status TLV in the BGP-LS attribute [RFC9552] with an unknown | |||
| value SHOULD be advertised to other BGP speakers and MUST ignore the | value SHOULD be advertised to other BGP speakers and MUST ignore the | |||
| Status TLV with an unknown value in the SPF computation. An | Status TLV with an unknown value in the SPF computation. An | |||
| implementation MAY log this information for further analysis. If the | implementation MAY log this information for further analysis. If the | |||
| SPF Status TLV contains a reserved value (0 or 255) the TLV is | SPF Status TLV contains a reserved value (0 or 255), the TLV is | |||
| considered malformed and is handled as described in Section 7.1. | considered malformed and is handled as described in Section 7.1. | |||
| 5.2.4. BGP-LS Attribute Sequence Number TLV | 5.2.4. BGP-LS Attribute Sequence Number TLV | |||
| A BGP-LS Attribute Sequence Number TLV of the BGP-LS-SPF NLRI types | A BGP-LS Attribute Sequence Number TLV of the BGP-LS-SPF NLRI types | |||
| is defined to assure the most recent version of a given NLRI is used | is defined to assure the most recent version of a given NLRI is used | |||
| in the SPF computation. The Sequence Number TLV is mandatory for | in the SPF computation. The Sequence Number TLV is mandatory for | |||
| BGP-LS-SPF NLRI. The TLV type 1181 has been assigned by IANA. The | BGP-LS-SPF NLRI. The TLV type 1181 has been assigned by IANA. The | |||
| BGP-LS Attribute Sequence Number TLV contains an 8-octet sequence | BGP-LS Attribute Sequence Number TLV contains an 8-octet sequence | |||
| number. The usage of the Sequence Number TLV is described in | number. The usage of the Sequence Number TLV is described in | |||
| skipping to change at page 16, line 31 ¶ | skipping to change at line 756 ¶ | |||
| 0 1 2 3 | 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 | 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 (1181) | Length (8 Octets) | | | Type (1181) | Length (8 Octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sequence Number (High-Order 32 Bits) | | | Sequence Number (High-Order 32 Bits) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sequence Number (Low-Order 32 Bits) | | | Sequence Number (Low-Order 32 Bits) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Sequence Number: The 64-bit strictly-increasing sequence number MUST | Sequence Number: The 64-bit strictly increasing sequence number MUST | |||
| be incremented for every self-originated version of a BGP-LS-SPF | be incremented for every self-originated version of a BGP-LS-SPF | |||
| NLRI. BGP speakers implementing this specification MUST use | NLRI. BGP speakers implementing this specification MUST use | |||
| available mechanisms to preserve the sequence number's strictly | available mechanisms to preserve the sequence number's strictly | |||
| increasing property for the deployed life of the BGP speaker | increasing property for the deployed life of the BGP speaker | |||
| (including cold restarts). One mechanism for accomplishing this | (including cold restarts). One mechanism for accomplishing this | |||
| would be to use the high-order 32 bits of the sequence number as a | would be to use the high-order 32 bits of the sequence number as a | |||
| wrap/boot count that is incremented any time the BGP router loses its | wrap/boot count that is incremented any time the BGP router loses its | |||
| sequence number state or the low-order 32 bits wrap. | sequence number state or the low-order 32 bits wrap. | |||
| When incrementing the sequence number for each self-originated NLRI, | When incrementing the sequence number for each self-originated NLRI, | |||
| the sequence number should be treated as an unsigned 64-bit value. | the sequence number should be treated as an unsigned 64-bit value. | |||
| If the lower-order 32-bit value wraps, the higher-order 32-bit value | If the lower-order 32-bit value wraps, the higher-order 32-bit value | |||
| should be incremented and saved in non-volatile storage. If a BGP | should be incremented and saved in non-volatile storage. If a BGP | |||
| speaker completely loses its sequence number state (e.g., the BGP | speaker completely loses its sequence number state (e.g., the BGP | |||
| speaker hardware is replaced or experiences a cold-start), the BGP | speaker hardware is replaced or experiences a cold start), the BGP | |||
| NLRI selection rules (see Section 6.1) ensure convergence, albeit not | NLRI selection rules (see Section 6.1) ensure convergence, albeit not | |||
| immediately. | immediately. | |||
| If the Sequence Number TLV is not received, then the corresponding | If the Sequence Number TLV is not received, then the corresponding | |||
| NLRI is considered as malformed and MUST be handled as 'Treat-as- | NLRI is considered as malformed and MUST be handled as 'treat-as- | |||
| withdraw'. An implementation SHOULD log an error for further | withdraw'. An implementation SHOULD log an error for further | |||
| analysis. | analysis. | |||
| 5.3. BGP-LS-SPF End of RIB (EoR) Marker | 5.3. BGP-LS-SPF End of RIB (EoR) Marker | |||
| The usage of the End-of-RIB (EoR) Marker [RFC4724] with the BGP-LS- | The usage of the EoR marker [RFC4724] with the BGP-LS-SPF SAFI is | |||
| SPF SAFI is somewhat different than the other BGP SAFIs. Reception | somewhat different than the other BGP SAFIs. Reception of the EoR | |||
| of the EoR marker MAY optionally be expected prior to advertising an | marker MAY optionally be expected prior to advertising a Link NLRI | |||
| LINK-NLRI for a given peer. | for a given peer. | |||
| 5.4. BGP Next-Hop Information | 5.4. BGP Next-Hop Information | |||
| The rules for setting the BGP Next-Hop in the MP_REACH_NLRI attribute | The rules for setting the BGP Next-Hop in the MP_REACH_NLRI attribute | |||
| [RFC4760] for the BGP-LS-SPF SAFI follow the rules in section 5.5 of | [RFC4760] for the BGP-LS-SPF SAFI follow the rules in Section 5.5 of | |||
| [RFC9552]. All BGP peers that support SPF extensions will locally | [RFC9552]. All BGP peers that support SPF extensions will locally | |||
| compute the Local-RIB Next-Hop as a result of the SPF process. | compute the Local-RIB Next-Hop as a result of the SPF process. | |||
| Hence, the use of the MP_REACH_NLRI Next-Hop as a tiebreaker in the | Hence, the use of the MP_REACH_NLRI Next-Hop as a tiebreaker in the | |||
| standard BGP path decision processing is not applicable. | standard BGP path decision processing is not applicable. | |||
| 6. Decision Process with SPF Algorithm | 6. Decision Process with the SPF Algorithm | |||
| The Decision Process described in [RFC4271] takes place in three | The Decision Process described in [RFC4271] takes place in three | |||
| distinct phases. The Phase 1 decision function of the Decision | distinct phases. The Phase 1 decision function of the Decision | |||
| Process is responsible for calculating the degree of preference for | Process is responsible for calculating the degree of preference for | |||
| each route received from a BGP speaker's peer. The Phase 2 decision | each route received from a BGP speaker's peer. The Phase 2 decision | |||
| function is invoked on completion of the Phase 1 decision function | function is invoked on completion of the Phase 1 decision function | |||
| and is responsible for choosing the best route out of all those | and is responsible for choosing the best route out of all those | |||
| available for each distinct destination, and for installing each | available for each distinct destination and for installing each | |||
| chosen route into the Local-RIB. The combination of the Phase 1 and | chosen route into the Local-RIB. The combination of the Phase 1 and | |||
| 2 decision functions is characterized as a Path Vector algorithm. | 2 decision functions is characterized as a Path Vector algorithm. | |||
| The SPF-based Decision process replaces the BGP Decision process | The SPF-based Decision Process replaces the BGP Decision Process | |||
| described in [RFC4271]. Since BGP-LS-SPF NLRI always contains the | described in [RFC4271]. Since BGP-LS-SPF NLRI always contains the | |||
| local node descriptor as described in Section 5.2, each NLRI is | Local Node Descriptor as described in Section 5.2, each NLRI is | |||
| uniquely originated by a single BGP speaker in the BGP SPF routing | uniquely originated by a single BGP speaker in the BGP SPF routing | |||
| domain (the BGP node matching the NLRI's Node Descriptors). | domain (the BGP node matching the NLRI's Node Descriptors). | |||
| Instances of the same NLRI originated by multiple BGP speakers would | Instances of the same NLRI originated by multiple BGP speakers would | |||
| be indicative of a configuration error or a masquerading attack | be indicative of a configuration error or a masquerading attack | |||
| (refer to Section 9). These selected Node NLRI and their Link/Prefix | (refer to Section 9). These selected Node NLRIs and their Link/ | |||
| NLRI are used to build a directed graph during the SPF computation as | Prefix NLRIs are used to build a directed graph during the SPF | |||
| described below. The best routes for BGP prefixes are installed in | computation as described below. The best routes for BGP prefixes are | |||
| the RIB as a result of the SPF process. | installed in the RIB as a result of the SPF process. | |||
| When BGP-LS-SPF NLRI is received, all that is required is to | When BGP-LS-SPF NLRI is received, all that is required is to | |||
| determine whether it is the most recent by examining the Node-ID and | determine whether it is the most recent by examining the Node-ID and | |||
| sequence number as described in Section 6.1. If the received NLRI | sequence number as described in Section 6.1. If the received NLRI | |||
| has changed, it is advertised to other BGP-LS-SPF peers. If the | has changed, it is advertised to other BGP-LS-SPF peers. If the | |||
| attributes have changed (other than the sequence number), a BGP SPF | attributes have changed (other than the sequence number), a BGP SPF | |||
| calculation is triggered. However, a changed NLRI MAY be advertised | calculation is triggered. However, a changed NLRI MAY be advertised | |||
| immediately to other peers and prior to any SPF calculation. Note | immediately to other peers and prior to any SPF calculation. Note | |||
| that the BGP MinASOriginationIntervalTimer [RFC4271] timer is not | that the BGP MinASOriginationIntervalTimer [RFC4271] timer is not | |||
| applicable to the BGP-LS-SPF SAFI. The | applicable to the BGP-LS-SPF SAFI. The | |||
| MinRouteAdvertisementIntervalTimer is applicable with a suggested | MinRouteAdvertisementIntervalTimer is applicable with a suggested | |||
| default of 5 seconds consistent with Internal BGP (IBGP) (refer to | default of 5 seconds consistent with Internal BGP (IBGP) (refer to | |||
| section 10 of [RFC4271]). The scheduling of the SPF calculation, as | Section 10 of [RFC4271]). The scheduling of the SPF calculation, as | |||
| described in Section 6.3, is an implementation and/or configuration | described in Section 6.3, is an implementation and/or configuration | |||
| matter. Scheduling MAY be dampened consistent with the SPF back-off | matter. Scheduling MAY be dampened consistent with the SPF Back-Off | |||
| algorithm specified in [RFC8405]. | Delay algorithm specified in [RFC8405]. | |||
| The Phase 3 decision function of the Decision Process [RFC4271] is | The Phase 3 decision function of the Decision Process [RFC4271] is | |||
| also simplified since under normal SPF operation, a BGP speaker MUST | also simplified because under normal SPF operation, a BGP speaker | |||
| advertise the changed NLRIs to all BGP peers with the BGP-LS-SPF AFI/ | MUST advertise the changed NLRIs to all BGP peers with the BGP-LS-SPF | |||
| SAFI and install the changed routes in the GLOBAL-RIB. The only | AFI/SAFI and install the changed routes in the GLOBAL-RIB. The only | |||
| exception are unchanged NLRIs or stale NLRIs, i.e., NLRI received | exceptions are unchanged NLRIs or stale NLRIs, i.e., an NLRI received | |||
| with a less recent (numerically smaller) sequence number. | with a less recent (numerically smaller) sequence number. | |||
| 6.1. BGP SPF NLRI Selection | 6.1. BGP SPF NLRI Selection | |||
| For all BGP-LS-SPF NLRIs, the selection rules for phase 1 of the BGP | For all BGP-LS-SPF NLRIs, the selection rules for Phase 1 of the BGP | |||
| decision process, section 9.1.1 [RFC4271], no longer apply. | decision process (see Section 9.1.1 of [RFC4271]) no longer apply. | |||
| 1. NLRI self-originated from directly-connected BGP SPF peers are | 1. NLRIs self-originated from directly connected BGP SPF peers are | |||
| preferred. This condition can be determined by comparing the BGP | preferred. This condition can be determined by comparing the BGP | |||
| Identifiers in the received Local Node Descriptor and the BGP | Identifiers in the received Local Node Descriptor and the BGP | |||
| OPEN message for an active BGP session. This rule assures that | OPEN message for an active BGP session. This rule assures that a | |||
| stale NLRI is updated even if a BGP SPF router loses its sequence | stale NLRI is updated even if a BGP SPF router loses its sequence | |||
| number state due to a cold-start. Note that once the BGP session | number state due to a cold start. Note that once the BGP session | |||
| goes down, the NLRI received is no longer considered as being | goes down, the NLRI received is no longer considered as being | |||
| from a directly connected BGP SPF peer. | from a directly connected BGP SPF peer. | |||
| 2. Consistent with base BGP [RFC4271], NLRI received from a peer | 2. Consistent with base BGP [RFC4271], an NLRI received from a peer | |||
| will always replace the same NLRI received from that peer. | will always replace the same NLRI received from that peer. | |||
| Coupled with rule #1, this will ensure that any stale NLRI in the | Coupled with rule #1, this will ensure that any stale NLRI in the | |||
| BGP SPF routing domain will be updated. | BGP SPF routing domain will be updated. | |||
| 3. The NLRI with the most recent Sequence Number TLV, i.e., highest | 3. The NLRI with the most recent Sequence Number TLV, i.e., the | |||
| sequence number is selected. | highest sequence number is selected. | |||
| 4. The NLRI received from the BGP speaker with the numerically | 4. The NLRI received from the BGP speaker with the numerically | |||
| larger BGP Identifier is preferred. | larger BGP Identifier is preferred. | |||
| When a BGP speaker completely loses its sequence number state, e.g., | When a BGP speaker completely loses its sequence number state, e.g., | |||
| due to a cold start, or in the unlikely possibility that 64-bit | due to a cold start, or in the unlikely possibility that a 64-bit | |||
| sequence number wraps, the BGP routing domain will still converge. | sequence number wraps, the BGP routing domain will still converge. | |||
| This is due to the fact that BGP speakers adjacent to the router | This is due to the fact that BGP speakers adjacent to the router | |||
| always accept self-originated NLRI from the associated speaker as | always accept self-originated NLRIs from the associated speaker as | |||
| more recent (rule #1). When a BGP speaker reestablishes a connection | more recent (rule #1). When a BGP speaker reestablishes a connection | |||
| with its peers, any existing sessions are taken down and stale NLRI | with its peers, any existing sessions are taken down and stale NLRIs | |||
| are replaced. The adjacent BGP speakers update their NLRI | are replaced. The adjacent BGP speakers update their NLRI | |||
| advertisements and advertise to their neighbors until the BGP routing | advertisements and advertise to their neighbors until the BGP routing | |||
| domain has converged. | domain has converged. | |||
| The modified SPF Decision Process performs an SPF calculation rooted | The modified SPF Decision Process performs an SPF calculation rooted | |||
| at the local BGP speaker using the metrics from the Link Attribute | at the local BGP speaker using the metrics from the Link Attribute | |||
| IGP Metric TLV (1095) and the Prefix Attribute Prefix Metric TLV | IGP Metric (TLV 1095) and the Prefix Attribute Prefix Metric (TLV | |||
| (1155) [RFC9552]. These metrics are considered consistently across | 1155) [RFC9552]. These metrics are considered consistently across | |||
| the BGP SPF domain. As a result, any other BGP attributes that would | the BGP SPF domain. As a result, any other BGP attributes that would | |||
| influence the BGP decision process defined in [RFC4271] including | influence the BGP decision process defined in [RFC4271] including | |||
| ORIGIN, MULTI_EXIT_DISC, and LOCAL_PREF attributes are ignored by the | ORIGIN, MULTI_EXIT_DISC, and LOCAL_PREF attributes are ignored by the | |||
| SPF algorithm. The Next Hop in the MP_REACH_NLRI attribute [RFC4760] | SPF algorithm. The Next Hop in the MP_REACH_NLRI attribute [RFC4760] | |||
| is discussed in Section 5.4. The AS_PATH and AS4_PATH [RFC6793] | is discussed in Section 5.4. The AS_PATH and AS4_PATH attributes | |||
| attributes are preserved and used for loop detection [RFC4271]. They | [RFC6793] are preserved and used for loop detection [RFC4271]. They | |||
| are ignored during the SPF computation for BGP-LS-SPF NLRIs. | are ignored during the SPF computation for BGP-LS-SPF NLRIs. | |||
| 6.1.1. BGP Self-Originated NLRI | 6.1.1. BGP Self-Originated NLRI | |||
| Node, Link, or Prefix NLRI with Node Descriptors matching the local | Nodes, Links, or Prefix NLRIs with Node Descriptors matching the | |||
| BGP speaker are considered self-originated. When self-originated | local BGP speaker are considered self-originated. When a self- | |||
| NLRI is received and it doesn't match the local node's NLRI content | originated NLRI is received and it doesn't match the local node's | |||
| (including sequence number), special processing is required. | NLRI content (including the sequence number), special processing is | |||
| required. | ||||
| * If self-originated NLRI is received and the sequence number is | * If a self-originated NLRI is received and the sequence number is | |||
| more recent (i.e., greater than the local node's sequence number | more recent (i.e., greater than the local node's sequence number | |||
| for the NLRI), the NLRI sequence number is advanced to one greater | for the NLRI), the NLRI sequence number is advanced to one greater | |||
| than the received sequence number and the NLRI is readvertised to | than the received sequence number, and the NLRI is readvertised to | |||
| all peers. | all peers. | |||
| * If self-originated NLRI is received and the sequence number is the | * If a self-originated NLRI is received and the sequence number is | |||
| same as the local node's sequence number but the attributes | the same as the local node's sequence number but the attributes | |||
| differ, the NLRI sequence number is advanced to one greater than | differ, the NLRI sequence number is advanced to one greater than | |||
| the received sequence number and the NLRI is readvertised to all | the received sequence number, and the NLRI is readvertised to all | |||
| peers. | peers. | |||
| The above actions are performed immediately when the first instance | The above actions are performed immediately when the first instance | |||
| of a newer self-originated NLRI is received. In this case, the newer | of a newer self-originated NLRI is received. In this case, the newer | |||
| instance is considered to be a stale instance that was advertised by | instance is considered to be a stale instance that was advertised by | |||
| the local node prior to a restart where the NLRI state was lost. | the local node prior to a restart where the NLRI state was lost. | |||
| However, if subsequent newer self-originated NLRI is received for the | However, if subsequent newer self-originated NLRI is received for the | |||
| same Node, Link, or Prefix NLRI, the readvertisement or withdrawal is | same Node, Link, or Prefix NLRI, the readvertisement or withdrawal is | |||
| delayed by BGP_LS_SPF_SELF_READVERTISEMENT_DELAY (default 5) seconds | delayed by BGP_LS_SPF_SELF_READVERTISEMENT_DELAY (default 5) seconds | |||
| since it is likely being advertised by a misconfigured or rogue BGP | since it is likely being advertised by a misconfigured or rogue BGP | |||
| speaker (refer to Section 9). | speaker (refer to Section 9). | |||
| 6.2. Dual Stack Support | 6.2. Dual Stack Support | |||
| The SPF-based decision process operates on Node, Link, and Prefix | The SPF-based decision process operates on Node, Link, and Prefix | |||
| NLRIs that support both IPv4 and IPv6 addresses. Whether to run a | NLRIs that support both IPv4 and IPv6 addresses. Whether to run a | |||
| single SPF computation or multiple SPF computations for separate AFs | single SPF computation or multiple SPF computations for separate AFs | |||
| is an implementation and/or policy matter. Normally, IPv4 next-hops | is an implementation and/or policy matter. Normally, IPv4 next-hops | |||
| are calculated for IPv4 prefixes and IPv6 next-hops are calculated | are calculated for IPv4 prefixes, and IPv6 next-hops are calculated | |||
| for IPv6 prefixes. | for IPv6 prefixes. | |||
| 6.3. SPF Calculation based on BGP-LS-SPF NLRI | 6.3. SPF Calculation Based on BGP-LS-SPF NLRI | |||
| This section details the BGP-LS-SPF local routing information base | This section details the BGP-LS-SPF local Routing Information Base | |||
| (RIB) calculation. The router uses BGP-LS-SPF Node, Link, and Prefix | (RIB) calculation. The router uses BGP-LS-SPF Node, Link, and Prefix | |||
| NLRI to compute routes using the following algorithm. This | NLRIs to compute routes using the following algorithm. This | |||
| calculation yields the set of routes associated with the BGP SPF | calculation yields the set of routes associated with the BGP SPF | |||
| Routing Domain. A router calculates the shortest-path tree using | Routing Domain. A router calculates the shortest-path tree using | |||
| itself as the root. Optimizations to the BGP-LS-SPF algorithm are | itself as the root. Optimizations to the BGP-LS-SPF algorithm are | |||
| possible but MUST yield the same set of routes. The algorithm below | possible but MUST yield the same set of routes. The algorithm below | |||
| supports Equal Cost Multi-Path (ECMP) routes. Weighted Unequal Cost | supports ECMP routes. Weighted Unequal-Cost Multipath (UCMP) routes | |||
| Multi-Path routes are out of scope. | are out of scope. | |||
| The following abstract data structures are defined in order to | The following abstract data structures are defined in order to | |||
| specify the algorithm. | specify the algorithm. | |||
| * Local Route Information Base (Local-RIB) - This routing table | Local Route Information Base (Local-RIB): A routing table that | |||
| contains reachability information (i.e., next hops) for all | contains reachability information (i.e., next hops) for all | |||
| prefixes (both IPv4 and IPv6) as well as BGP-LS-SPF node | prefixes (both IPv4 and IPv6) as well as BGP-LS-SPF node | |||
| reachability. Implementations may choose to implement this with | reachability. Implementations may choose to implement this with | |||
| separate RIBs for each address family and/or Prefix versus Node | separate RIBs for each address family and/or Prefix versus Node | |||
| reachability. | reachability. | |||
| * Global Routing Information Base (GLOBAL-RIB) - This is the Routing | Global Routing Information Base (GLOBAL-RIB): The RIB containing the | |||
| Information Base (RIB) containing the current routes that are | current routes that are installed in the router's forwarding | |||
| installed in the router's forwarding plane. This is commonly | plane. This is commonly referred to in networking parlance as | |||
| referred to in networking parlance as "the RIB". | "the RIB". | |||
| * Link State NLRI Database (LSNDB) - Database of BGP-LS-SPF NLRI | Link-State NLRI Database (LSNDB): A database of BGP-LS-SPF NLRIs | |||
| that facilitates access to all Node, Link, and Prefix NLRI. | that facilitate access to all Node, Link, and Prefix NLRIs. | |||
| * Candidate List (CAN-LIST) - This is a list of candidate Node NLRIs | Candidate List (CAN-LIST): A list of candidate Node NLRIs used | |||
| used during the BGP SPF calculation. The list is sorted by the | during the BGP SPF calculation. The list is sorted by the cost to | |||
| cost to reach the Node NLRI with the Node NLRI with the lowest | reach the Node NLRI, with the Node NLRI that has the lowest | |||
| reachability cost at the head of the list. This facilitates | reachability cost at the head of the list. This facilitates the | |||
| execution of the Dijkstra algorithm where the shortest paths | execution of the Dijkstra algorithm, where the shortest paths | |||
| between the local node and other nodes in graph are computed. The | between the local node and other nodes in the graph are computed. | |||
| CAN-LIST is typically implemented as a heap but other data | The CAN-LIST is typically implemented as a heap but other data | |||
| structures have been used. | structures have been used. | |||
| The algorithm consists of the steps below: | The Dijkstra algorithm consists of the steps below: | |||
| 1. The current Local-RIB is invalidated, and the CAN-LIST is | 1. The current Local-RIB is invalidated, and the CAN-LIST is | |||
| initialized to be empty. The Local-RIB is rebuilt during the | initialized to be empty. The Local-RIB is rebuilt during the | |||
| course of the SPF computation. The existing routing entries are | course of the SPF computation. The existing routing entries are | |||
| preserved for comparison to determine changes that need to be | preserved for comparison to determine changes that need to be | |||
| made to the GLOBAL-RIB in step 6. These routes are referred to | made to the GLOBAL-RIB in Step 6. These routes are referred to | |||
| as stale routes. | as "stale routes". | |||
| 2. The cost of the Local-RIB Node route entry for the computing | 2. The cost of the Local-RIB Node route entry for the computing | |||
| router is set to 0. The computing router's Node NLRI is added to | router is set to 0. The computing router's Node NLRI is added to | |||
| the CAN-LIST (which was previously initialized to be empty in | the CAN-LIST (which was previously initialized to be empty in | |||
| step 1). The next-hop list is set to the internal loopback next- | Step 1). The next-hop list is set to the internal loopback next- | |||
| hop. | hop. | |||
| 3. The Node NLRI with the lowest cost is removed from the CAN-LIST | 3. The Node NLRI with the lowest cost is removed from the CAN-LIST | |||
| for processing. If the BGP-LS Node attribute includes an SPF | for processing. If the BGP-LS Node attribute includes an SPF | |||
| Status TLV (refer to Section 5.2.1.1) indicating the node is | Status TLV (refer to Section 5.2.1.1) indicating the node is | |||
| unreachable, the Node NLRI is ignored and the next lowest cost | unreachable, the Node NLRI is ignored and the next lowest-cost | |||
| Node NLRI is selected from the CAN-LIST. The Node corresponding | Node NLRI is selected from the CAN-LIST. The Node corresponding | |||
| to this NLRI is referred to as the Current-Node. If the CAN-LIST | to this NLRI is referred to as the "Current-Node". If the CAN- | |||
| list is empty, the SPF calculation has completed and the | LIST list is empty, the SPF calculation has completed and the | |||
| algorithm proceeds to step 6. | algorithm proceeds to Step 6. | |||
| 4. All the Prefix NLRI with the same Local Node Descriptors as the | 4. All the Prefix NLRIs with the same Local Node Descriptors as the | |||
| Current-Node are considered for installation. The next-hop(s) | Current-Node are considered for installation. The next-hop(s) | |||
| for these Prefix NLRI are inherited from the Current-Node. If | for these Prefix NLRIs are inherited from the Current-Node. If | |||
| the Current-Node is for the local BGP Router, the next-hop for | the Current-Node is for the local BGP Router, the next-hop for | |||
| the prefix is a direct next-hop. The cost for each prefix is the | the prefix is a direct next-hop. The cost for each prefix is the | |||
| metric advertised in the Prefix Attribute Prefix Metric TLV | metric advertised in the Prefix Attribute Prefix Metric (TLV | |||
| (1155) added to the cost to reach the Current-Node. The | 1155) added to the cost to reach the Current-Node. The following | |||
| following is done for each Prefix NLRI (referred to as the | is done for each Prefix NLRI (referred to as the "Current- | |||
| Current-Prefix): | Prefix"): | |||
| * If the BGP-LS Prefix attribute includes an SPF Status TLV | * If the BGP-LS Prefix attribute includes an SPF Status TLV | |||
| indicating the prefix is unreachable, the Current-Prefix is | indicating the prefix is unreachable, the Current-Prefix is | |||
| considered unreachable and the next Prefix NLRI is examined in | considered unreachable, and the next Prefix NLRI is examined | |||
| Step 4. | in Step 4. | |||
| * If the Current-Prefix's corresponding prefix is in the Local- | * If the Current-Prefix's corresponding prefix is in the Local- | |||
| RIB and the Local-RIB metric is less than the Current-Prefix's | RIB and the Local-RIB metric is less than the Current-Prefix's | |||
| metric, the Current-Prefix does not contribute to the route | metric, the Current-Prefix does not contribute to the route, | |||
| and the next Prefix NLRI is examined in Step 4. | and the next Prefix NLRI is examined in Step 4. | |||
| * If the Current-Prefix's corresponding prefix is not in the | * If the Current-Prefix's corresponding prefix is not in the | |||
| Local-RIB, the prefix is installed with the Current-Node's | Local-RIB, the prefix is installed with the Current-Node's | |||
| next-hops installed as the Local-RIB route's next-hops and the | next-hops installed as the Local-RIB route's next-hops and the | |||
| metric being updated. If the IGP Route Tag TLV (1153) is | metric being updated. If the IGP Route Tag (TLV 1153) is | |||
| included in the Current-Prefix's NLRI Attribute, the tag(s) | included in the Current-Prefix's NLRI Attribute, the tag(s) is | |||
| are installed in the current Local-RIB route's tag(s). | installed in the current Local-RIB route's tag(s). | |||
| * If the Current-Prefix's corresponding prefix is in the Local- | * If the Current-Prefix's corresponding prefix is in the Local- | |||
| RIB and the cost is less than the Local-RIB route's metric, | RIB and the cost is less than the Local-RIB route's metric, | |||
| the prefix is installed with the Current-Node's next-hops | the prefix is installed with the Current-Node's next-hops, | |||
| replacing the Local-RIB route's next-hops and the metric being | which replace the Local-RIB route's next-hops and the metric | |||
| updated and any route tags removed. If the IGP Route Tag TLV | being updated, and any route tags are removed. If the IGP | |||
| (1153) is included in the Current-Prefix's NLRI Attribute, the | Route Tag (TLV 1153) is included in the Current-Prefix's NLRI | |||
| tag(s) are installed in the current Local-RIB route's tag(s). | Attribute, the tag(s) is installed in the current Local-RIB | |||
| route's tag(s). | ||||
| * If the Current-Prefix's corresponding prefix is in the Local- | * If the Current-Prefix's corresponding prefix is in the Local- | |||
| RIB and the cost is the same as the Local-RIB route's metric, | RIB and the cost is the same as the Local-RIB route's metric, | |||
| the Current-Node's next-hops are merged with Local-RIB route's | the Current-Node's next-hops are merged with the Local-RIB | |||
| next-hops. The algorithm below supports Equal Cost Multi-Path | route's next-hops. The algorithm below supports ECMP routes. | |||
| (ECMP) routes. Some platforms or implementations may have | Some platforms or implementations may have limits on the | |||
| limits on the number of ECMP routes that can be supported. | number of ECMP routes that can be supported. The setting or | |||
| The setting or identification of any limitations is outside | identification of any limitations is outside the scope if this | |||
| the scope if this document. Weighted Unequal Cost Multi-Path | document. Weighted UCMP routes are out of scope as well. | |||
| routes are out of scope as well. | ||||
| 5. All the Link NLRI with the same Node Identifiers as the Current- | 5. All the Link NLRIs with the same Node Identifiers as the Current- | |||
| Node are considered for installation. Each link is examined and | Node are considered for installation. Each link is examined and | |||
| is referred to in the following text as the Current-Link. The | referred to as the "Current-Link" in the following text. The | |||
| cost of the Current-Link is the advertised IGP Metric TLV (1095) | cost of the Current-Link is the advertised IGP Metric (TLV 1095) | |||
| from the Link NLRI BGP-LS attribute added to the cost to reach | from the Link NLRI BGP-LS attribute added to the cost to reach | |||
| the Current-Node. If the Current-Node is for the local BGP | the Current-Node. If the Current-Node is for the local BGP | |||
| Router, the next-hop for the link is a direct next-hop pointing | Router, the next-hop for the link is a direct next-hop pointing | |||
| to the corresponding local interface. For any other Current- | to the corresponding local interface. For any other Current- | |||
| Node, the next-hop(s) for the Current-Link are inherited from the | Node, the next-hop(s) for the Current-Link is inherited from the | |||
| Current-Node. The following is done for each link: | Current-Node. The following is done for each link: | |||
| a. If the Current-Link's NLRI attribute includes an SPF Status | a. If the Current-Link's NLRI attribute includes an SPF Status | |||
| TLV indicating the link is down, the BGP-LS-SPF Link NLRI is | TLV indicating the link is down, the BGP-LS-SPF Link NLRI is | |||
| considered down and the next link for the Current-Node is | considered down, and the next link for the Current-Node is | |||
| examined in Step 5. | examined in Step 5. | |||
| b. If the Current-Node NLRI attributes includes the SPF Status | b. If the Current-Node NLRI attributes include the SPF Status | |||
| TLV (refer to Section 5.2.1.1) and the status indicates that | TLV (refer to Section 5.2.1.1) and the status indicates that | |||
| the Node doesn't support transit, the next link for the | the Node doesn't support transit, the next link for the | |||
| Current-Node is processed in Step 5. | Current-Node is processed in Step 5. | |||
| c. The Current-Link's Remote Node NLRI is accessed (i.e., the | c. The Current-Link's Remote Node NLRI is accessed (i.e., the | |||
| Node NLRI with the same Node identifiers as the Current- | Node NLRI with the same Node identifiers as the Current- | |||
| Link's Remote Node Descriptors). If it exists, it is | Link's Remote Node Descriptors). If it exists, it is | |||
| referred to as the Remote-Node and the algorithm proceeds as | referred to as the "Remote-Node" and the algorithm proceeds | |||
| follows: | as follows: | |||
| * If the Remote-Node's NLRI attribute includes an SPF Status | * If the Remote-Node's NLRI attribute includes an SPF Status | |||
| TLV indicating the node is unreachable, the next link for | TLV indicating the node is unreachable, the next link for | |||
| the Current-Node is examined in Step 5. | the Current-Node is examined in Step 5. | |||
| * All the Link NLRI corresponding the Remote-Node are | * All the Link NLRIs corresponding to the Remote-Node are | |||
| searched for a Link NLRI pointing to the Current-Node. | searched for a Link NLRI pointing to the Current-Node. | |||
| Each Remote-Node's Link NLRI (referred to as the Remote- | Each Remote-Node's Link NLRI (referred to as the Remote- | |||
| Link) is examined for Remote Node Descriptors matching the | Link) is examined for Remote Node Descriptors matching the | |||
| Current-Node and Link Descriptors matching the Current- | Current-Node and Link Descriptors matching the Current- | |||
| Link. | Link. | |||
| - For IPv4/IPv6 numbered Link Descriptors to match during | - For IPv4/IPv6 numbered Link Decriptors to match during | |||
| the IPv4 SPF computation, the Current-Link's IP4/IPv6 | the IPv4 SPF computation, the Current-Link's IP4/IPv6 | |||
| interface address link descriptor MUST match the | interface address link descriptor MUST match the | |||
| Remote-Link IPv4/IPv6 neighbor address link descriptor | Remote-Link IPv4/IPv6 neighbor address link descriptor, | |||
| and the Current-Link's IPv4/IPv6 neighbor address MUST | and the Current-Link's IPv4/IPv6 neighbor address MUST | |||
| match the Remote-Link's IPv4/IPv6 interface address. | match the Remote-Link's IPv4/IPv6 interface address. | |||
| - For unnumbered links to match during the IPv4 or IPv6 | - For unnumbered links to match during the IPv4 or IPv6 | |||
| SPF computation, Current-Link and Remote-Link's Address | SPF computation, Current-Link and Remote-Link's Address | |||
| Family Link Descriptor TLV must match the address | Family Link Descriptor TLV must match the address | |||
| family of the IPv4 or IPv6 SPF computation, the | family of the IPv4 or IPv6 SPF computation, the | |||
| Current-Link's Remote Identifier MUST match the Remote- | Current-Link's Remote Identifier MUST match the Remote- | |||
| Link's Local Identifier and the Current-Link's Remote | Link's Local Identifier, and the Current-Link's Remote | |||
| Identifier MUST match the Remote-Link's Local | Identifier MUST match the Remote-Link's Local | |||
| Identifier. Since the Link's Remote Identifier may not | Identifier. Since the Link's Remote Identifier may not | |||
| be known, a value of 0 is considered a wildcard and | be known, a value of 0 is considered a wildcard and | |||
| will match any Current or Remote Link's Local | will match any Current or Remote Link's Local | |||
| Identifier (see TLV 258 [RFC9552]). Address Family | Identifier (see TLV 258 [RFC9552]). Address Family | |||
| Link Descriptor TLVs for multiple address families may | Link Descriptor TLVs for multiple address families may | |||
| be advertised so that an unnumbered link can be used in | be advertised so that an unnumbered link can be used in | |||
| the SPF computation for multiple address families. | the SPF computation for multiple address families. | |||
| If these conditions are satisfied for one of the Remote- | If these conditions are satisfied for one of the Remote- | |||
| Node's links, the bi-directional connectivity check | Node's links, the bidirectional connectivity check | |||
| succeeds and the Remote-Node may be processed further. | succeeds and the Remote-Node may be processed further. | |||
| The Remote-Node's Link NLRI providing bi-directional | The Remote-Node's Link NLRI providing bidirectional | |||
| connectivity is referred to as the Remote-Link. If no | connectivity is referred to as the Remote-Link. If no | |||
| Remote-Link is found, the next link for the Current-Node | Remote-Link is found, the next link for the Current-Node | |||
| is examined in Step 5. | is examined in Step 5. | |||
| * If the Remote-Link NLRI attribute includes an SPF Status | * If the Remote-Link NLRI attribute includes an SPF Status | |||
| TLV indicating the link is down, the Remote-Link NLRI is | TLV indicating the link is down, the Remote-Link NLRI is | |||
| considered down and the next link for the Current-Node is | considered down, and the next link for the Current-Node is | |||
| examined in Step 5. | examined in Step 5. | |||
| * If the Remote-Node is not on the CAN-LIST, it is inserted | * If the Remote-Node is not on the CAN-LIST, it is inserted | |||
| based on the cost. The Remote Node's cost is the cost of | based on the cost. The Remote Node's cost is the cost of | |||
| Current-Node added the Current-Link's IGP Metric TLV | the Current-Node added to the Current-Link's IGP Metric | |||
| (1095). The next-hop(s) for the Remote-Node are inherited | (TLV 1095). The next-hop(s) for the Remote-Node is | |||
| from the Current-Link. | inherited from the Current-Link. | |||
| * If the Remote-Node NLRI is already on the CAN-LIST with a | * If the Remote-Node NLRI is already on the CAN-LIST with a | |||
| higher cost, it must be removed and reinserted with the | higher cost, it must be removed and reinserted with the | |||
| Remote-Node cost based on the Current-Link (as calculated | Remote-Node cost based on the Current-Link (as calculated | |||
| in the previous step). The next-hop(s) for the Remote- | in the previous step). The next-hop(s) for the Remote- | |||
| Node are inherited from the Current-Link. | Node is inherited from the Current-Link. | |||
| * If the Remote-Node NLRI is already on the CAN-LIST with | * If the Remote-Node NLRI is already on the CAN-LIST with | |||
| the same cost, it need not be reinserted on the CAN-LIST. | the same cost, it need not be reinserted on the CAN-LIST. | |||
| However, the Current-Link's next-hop(s) must be merged | However, the Current-Link's next-hop(s) must be merged | |||
| into the current set of next-hops for the Remote-Node. | into the current set of next-hops for the Remote-Node. | |||
| * If the Remote-Node NLRI is already on the CAN-LIST with a | * If the Remote-Node NLRI is already on the CAN-LIST with a | |||
| lower cost, it need not be reinserted on the CAN-LIST. | lower cost, it need not be reinserted on the CAN-LIST. | |||
| d. Return to step 3 to process the next lowest cost Node NLRI on | d. Return to Step 3 to process the next lowest-cost Node NLRI on | |||
| the CAN-LIST. | the CAN-LIST. | |||
| 6. The Local-RIB is examined and changes (adds, deletes, | 6. The Local-RIB is examined and changes (adds, deletes, and | |||
| modifications) are installed into the GLOBAL-RIB. For each route | modifications) are installed into the GLOBAL-RIB. For each route | |||
| in the Local-RIB: | in the Local-RIB: | |||
| * If the route was added during the current BGP SPF computation, | * If the route was added during the current BGP SPF computation, | |||
| install the route into the GLOBAL-RIB. | install the route into the GLOBAL-RIB. | |||
| * If the route modified during the current BGP SPF computation | * If the route was modified during the current BGP SPF | |||
| (e.g., metric, tags, or next-hops), update the route in the | computation (e.g., metric, tags, or next-hops), update the | |||
| GLOBAL-RIB. | route in the GLOBAL-RIB. | |||
| * If the route was not installed during the current BGP SPF | * If the route was not installed during the current BGP SPF | |||
| computation, remove the route from the GLOBAL-RIB. | computation, remove the route from the GLOBAL-RIB. | |||
| 6.4. IPv4/IPv6 Unicast Address Family Interaction | 6.4. IPv4/IPv6 Unicast Address Family Interaction | |||
| While the BGP-LS-SPF address family and the BGP unicast address | While the BGP-LS-SPF address family and the BGP unicast address | |||
| families may install routes into the same device routing tables, they | families may install routes into the routing tables of the same | |||
| operate independently (i.e., "Ships-in-the-Night" mode). There is no | device, they operate independently (i.e., "ships-in-the-night" mode). | |||
| implicit route redistribution between the BGP-LS-SPF address family | There is no implicit route redistribution between the BGP-LS-SPF | |||
| and the BGP unicast address families. | address family and the BGP unicast address families. | |||
| It is RECOMMENDED that BGP-LS-SPF IPv4/IPv6 route computation and | It is RECOMMENDED that BGP-LS-SPF IPv4/IPv6 route computation and | |||
| installation be given scheduling priority by default over other BGP | installation be given scheduling priority by default over other BGP | |||
| address families as these address families are considered as underlay | address families as these address families are considered as underlay | |||
| SAFIs. | SAFIs. | |||
| 6.5. NLRI Advertisement | 6.5. NLRI Advertisement | |||
| 6.5.1. Link/Prefix Failure Convergence | 6.5.1. Link/Prefix Failure Convergence | |||
| A local failure prevents a link from being used in the SPF | A local failure prevents a link from being used in the SPF | |||
| calculation due to the IGP bi-directional connectivity requirement. | calculation due to the IGP bidirectional connectivity requirement. | |||
| Consequently, local link failures SHOULD always be communicated as | Consequently, local link failures SHOULD always be communicated as | |||
| quickly as possible and given priority over other categories of | quickly as possible and given priority over other categories of | |||
| changes to ensure expeditious propagation and optimal convergence. | changes to ensure expeditious propagation and optimal convergence. | |||
| According to standard BGP procedures, the link would continue to be | According to standard BGP procedures, the link would continue to be | |||
| used until the last copy of the BGP-LS-SPF Link NLRI is withdrawn. | used until the last copy of the BGP-LS-SPF Link NLRI is withdrawn. | |||
| In order to avoid this delay, the originator of the Link NLRI SHOULD | In order to avoid this delay, the originator of the Link NLRI SHOULD | |||
| advertise a more recent version with an increased Sequence Number TLV | advertise a more recent version with an increased Sequence Number TLV | |||
| for the BGP-LS-SPF Link NLRI including the SPF Status TLV (refer to | for the BGP-LS-SPF Link NLRI including the SPF Status TLV (refer to | |||
| Section 5.2.2.2) indicating the link is down with respect to BGP SPF. | Section 5.2.2.2) indicating the link is down with respect to BGP SPF. | |||
| The configurable LinkStatusDownAdvertise timer controls the interval | The configurable LinkStatusDownAdvertise timer controls the interval | |||
| that the BGP-LS-LINK NLRI is advertised with SPF Status indicating | that the BGP-LS-LINK NLRI is advertised with SPF Status indicating | |||
| the link is down prior to withdrawal. If BGP-LS-SPF Link NLRI has | the link is down prior to withdrawal. If a BGP-LS-SPF Link NLRI has | |||
| been advertised with the SPF Status TLV and the link becomes | been advertised with the SPF Status TLV and the link becomes | |||
| available in that period, the originator of the BGP-LS-SPF LINK NLRI | available in that period, the originator of the BGP-LS-SPF Link NLRI | |||
| MUST advertise a more recent version of the BGP-LS-SPF Link NLRI | MUST advertise a more recent version of the BGP-LS-SPF Link NLRI | |||
| without the SPF Status TLV in the BGP-LS Link Attributes. The | without the SPF Status TLV in the BGP-LS Attributes. The suggested | |||
| suggested default value for the LinkStatusDownAdvertise timer is 2 | default value for the LinkStatusDownAdvertise timer is 2 seconds. | |||
| seconds. | ||||
| Similarly, when a prefix becomes unreachable, a more recent version | Similarly, when a prefix becomes unreachable, a more recent version | |||
| of the BGP-LS-SPF Prefix NLRI SHOULD be advertised with the SPF | of the BGP-LS-SPF Prefix NLRI SHOULD be advertised with the SPF | |||
| Status TLV (refer to Section 5.2.3.1) indicating the prefix is | Status TLV (refer to Section 5.2.3.1) to indicate that the prefix is | |||
| unreachable in the BGP-LS Prefix Attributes and the prefix will be | unreachable in the BGP-LS Prefix Attributes, and the prefix will be | |||
| considered unreachable with respect to BGP SPF. The configurable | considered unreachable with respect to BGP SPF. The configurable | |||
| PrefixStatusDownAdvertise timer controls the interval that the BGP- | PrefixStatusDownAdvertise timer controls the interval that the BGP- | |||
| LS-Prefix NLRI is advertised with SPF Status indicating the prefix is | LS-Prefix NLRI is advertised with SPF Status indicating the prefix is | |||
| unreachable prior to withdrawal. If the BGP-LS-SPF Prefix has been | unreachable prior to withdrawal. If the BGP-LS-SPF Prefix has been | |||
| advertised with the SPF Status TLV and the prefix becomes reachable | advertised with the SPF Status TLV and the prefix becomes reachable | |||
| in that period, the originator of the BGP-LS-SPF Prefix NLRI MUST | in that period, the originator of the BGP-LS-SPF Prefix NLRI MUST | |||
| advertise a more recent version of the BGP-LS-SPF Prefix NLRI without | advertise a more recent version of the BGP-LS-SPF Prefix NLRI without | |||
| the SPF Status TLV in the BGP-LS Prefix Attributes. The suggested | the SPF Status TLV in the BGP-LS Prefix Attributes. The suggested | |||
| default value for the PrefixStatusDownAdvertise timer is 2 seconds. | default value for the PrefixStatusDownAdvertise timer is 2 seconds. | |||
| 6.5.2. Node Failure Convergence | 6.5.2. Node Failure Convergence | |||
| By default, all the NLRI advertised by a node are withdrawn when a | By default, all the NLRIs advertised by a node are withdrawn when a | |||
| session failure is detected [RFC4271]. If fast failure detection | session failure is detected [RFC4271]. If fast failure detection | |||
| such as BFD [RFC5880] is utilized, and the node is on the fastest | such as BFD [RFC5880] is utilized, and the node is on the fastest | |||
| converging path, the most recent versions of BGP-LS-SPF NLRI will be | converging path, the most recent versions of BGP-LS-SPF NLRI will be | |||
| withdrawn. This may result in older versions of NLRI received from | withdrawn. This may result in older versions of NLRIs received from | |||
| peer(s) on different path(s) being in the LSNDB until they are | one or more peers on a different path(s) in the LSNDB until they are | |||
| withdrawn. These stale NLRI will not delay convergence since the | withdrawn. These stale NLRIs will not delay convergence since the | |||
| adjacent nodes detect the link failure and advertise a more recent | adjacent nodes detect the link failure and advertise a more recent | |||
| NLRI indicating the link is down with respect to BGP SPF (refer to | NLRI indicating the link is down with respect to BGP SPF (refer to | |||
| Section 6.5.1) and the bi-directional connectivity check fails during | Section 6.5.1) and the bidirectional connectivity check fails during | |||
| the BGP SPF calculation (refer to Section 6.3). | the BGP SPF calculation (refer to Section 6.3). | |||
| 7. Error Handling | 7. Error Handling | |||
| This section describes the Error Handling actions, as described in | This section describes error-handling actions, as described in | |||
| [RFC7606], that are specific to SAFI BGP-LS-SPF BGP Update message | [RFC7606], that are specific to BGP-LS-SPF SAFI BGP Update message | |||
| processing. | processing. | |||
| 7.1. Processing of BGP-LS-SPF TLVs | 7.1. Processing of BGP-LS-SPF TLVs | |||
| When a BGP speaker receives a BGP Update containing a malformed Node | When a BGP speaker receives a BGP Update containing a malformed Node | |||
| NLRI SPF Status TLV in the BGP-LS Attribute [RFC9552], the | NLRI SPF Status TLV in the BGP-LS Attribute [RFC9552], the | |||
| corresponding Node NLRI is considered as malformed and MUST be | corresponding Node NLRI is considered malformed and MUST be handled | |||
| handled as 'Treat-as-withdraw'. An implementation SHOULD log an | as 'treat-as-withdraw'. An implementation SHOULD log an error | |||
| error (subject to rate-limiting) for further analysis. | (subject to rate limiting) for further analysis. | |||
| When a BGP speaker receives a BGP Update containing a malformed Link | When a BGP speaker receives a BGP Update containing a malformed Link | |||
| NLRI SPF Status TLV in the BGP-LS Attribute [RFC9552], the | NLRI SPF Status TLV in the BGP-LS Attribute [RFC9552], the | |||
| corresponding Link NLRI is considered as malformed and MUST be | corresponding Link NLRI is considered malformed and MUST be handled | |||
| handled as 'Treat-as-withdraw'. An implementation SHOULD log an | as 'treat-as-withdraw'. An implementation SHOULD log an error | |||
| error (subject to rate-limiting) for further analysis. | (subject to rate limiting) for further analysis. | |||
| When a BGP speaker receives a BGP Update containing a malformed | When a BGP speaker receives a BGP Update containing a malformed | |||
| Address Family Link Descriptor TLV in the BGP-LS Attribute [RFC9552], | Address Family Link Descriptor TLV in the BGP-LS Attribute [RFC9552], | |||
| the corresponding Link NLRI is considered as malformed and MUST be | the corresponding Link NLRI is considered malformed and MUST be | |||
| handled as 'Treat-as-withdraw'. An implementation SHOULD log an | handled as 'treat-as-withdraw'. An implementation SHOULD log an | |||
| error (subject to rate-limiting) for further analysis. | error (subject to rate limiting) for further analysis. | |||
| When a BGP speaker receives a BGP Update containing a malformed | When a BGP speaker receives a BGP Update containing a malformed | |||
| Prefix NLRI SPF Status TLV in the BGP-LS Attribute [RFC9552], the | Prefix NLRI SPF Status TLV in the BGP-LS Attribute [RFC9552], the | |||
| corresponding Prefix NLRI is considered as malformed and MUST be | corresponding Prefix NLRI is considered malformed and MUST be handled | |||
| handled as 'Treat-as-withdraw'. An implementation SHOULD log an | as 'treat-as-withdraw'. An implementation SHOULD log an error | |||
| error (subject to rate-limiting) for further analysis. | (subject to rate limiting) for further analysis. | |||
| When a BGP speaker receives a BGP Update containing any malformed | When a BGP speaker receives a BGP Update containing a malformed BGP- | |||
| BGP-LS Attribute TE and IGP Metric TLV, the corresponding NLRI is | LS Attribute TE and IGP Metric TLV, the corresponding NLRI is | |||
| considered as malformed and MUST be handled as 'Treat-as-withdraw' | considered malformed and MUST be handled as 'treat-as-withdraw' | |||
| [RFC7606]. An implementation SHOULD log an error (subject to rate- | [RFC7606]. An implementation SHOULD log an error (subject to rate | |||
| limiting) for further analysis. | limiting) for further analysis. | |||
| The BGP-LS Attribute consists of Node attribute TLVs, Link attribute | The BGP-LS Attribute consists of Node attribute TLVs, Link attribute | |||
| TLVs, and the Prefix attribute TLVs. Node attribute TLVs and their | TLVs, and Prefix attribute TLVs. Node attribute TLVs and their | |||
| error handling rules are either defined in [RFC9552] or derived from | error-handling rules are either defined in [RFC9552] or derived from | |||
| [RFC5305] and [RFC6119]. If a BGP speaker receives a BGP-LS | [RFC5305] and [RFC6119]. If a BGP speaker receives a BGP-LS | |||
| Attribute which is considered malformed based on these error handling | Attribute that is considered malformed based on these error-handling | |||
| rules, then it MUST consider the received NLRI as malformed and the | rules, then it MUST consider the received NLRI as malformed, and the | |||
| receiving BGP speaker MUST handle such malformed NLRI as 'Treat-as- | receiving BGP speaker MUST handle such a malformed NLRI as 'treat-as- | |||
| withdraw' [RFC7606]. | withdraw' [RFC7606]. | |||
| Node Descriptor TLVs and their error handling rules are defined in | Node Descriptor TLVs and their error-handling rules are defined in | |||
| section 5.2.1 of [RFC9552]. Node Attribute TLVs and their error | Section 5.2.1 of [RFC9552]. Node Attribute TLVs and their error- | |||
| handling rules are either defined in [RFC9552] or derived from | handling rules are either defined in [RFC9552] or derived from | |||
| [RFC5305] and [RFC6119]. | [RFC5305] and [RFC6119]. | |||
| Link Descriptor TLVs and their error handling rules are defined in | Link Descriptor TLVs and their error-handling rules are defined in | |||
| section 5.2.2 of [RFC9552]. Link Attribute TLVs and their error | Section 5.2.2 of [RFC9552]. Link Attribute TLVs and their error- | |||
| handling rules are either defined in [RFC9552] or derived from | handling rules are either defined in [RFC9552] or derived from | |||
| [RFC5305] and [RFC6119]. | [RFC5305] and [RFC6119]. | |||
| Prefix Descriptor TLVs and their error handling rules are defined in | Prefix Descriptor TLVs and their error-handling rules are defined in | |||
| section 5.2.3 of [RFC9552]. Prefix Attribute TLVs and their error | Section 5.2.3 of [RFC9552]. Prefix Attribute TLVs and their error- | |||
| handling rules are either defined in [RFC9552] or derived from | handling rules are either defined in [RFC9552] or derived from | |||
| [RFC5130] and [RFC2328]. | [RFC5130] and [RFC2328]. | |||
| If a BGP speaker receives NLRI with a Node Descriptor TLV, Link | If a BGP speaker receives NLRI with a Node Descriptor TLV, Link | |||
| Descriptor TLV, or Prefix Descriptor TLV that is considered malformed | Descriptor TLV, or Prefix Descriptor TLV that is considered malformed | |||
| based on error handling rules defined in the above references, then | based on error handling rules defined in the above references, then | |||
| it MUST consider the received NLRI as malformed and the receiving BGP | it MUST consider the received NLRI as malformed, and the receiving | |||
| speaker MUST handle such malformed NLRI as 'Treat-as-withdraw' | BGP speaker MUST handle such a malformed NLRI as 'treat-as-withdraw' | |||
| [RFC7606]. | [RFC7606]. | |||
| When a BGP speaker receives a BGP Update that does not contain any | When a BGP speaker receives a BGP Update that does not contain any | |||
| BGP-LS Attribute, it is most likely an indication of 'Attribute | BGP-LS Attributes, it is most likely an indication of 'Attribute | |||
| Discard' fault handling and the BGP speaker SHOULD preserve and | Discard' fault handling, and the BGP speaker SHOULD preserve and | |||
| propagate the BGP-LS-SPF NLRI as described in Section 8.2.2 of | propagate the BGP-LS-SPF NLRI as described in Section 8.2.2 of | |||
| [RFC9552]. However, NLRI without the BGP-LS attribute MUST NOT be | [RFC9552]. However, NLRIs without the BGP-LS attribute MUST NOT be | |||
| used in the SPF Calculation Section 6.3. How this is accomplished is | used in the SPF calculation (Section 6.3). How this is accomplished | |||
| an implementation matter but one way would be for these NLRI not to | is an implementation matter, but one way would be for these NLRIs not | |||
| returned in LSNDB lookups. | to be returned in LSNDB lookups. | |||
| 7.2. Processing of BGP-LS-SPF NLRIs | 7.2. Processing of BGP-LS-SPF NLRIs | |||
| A BGP speaker supporting the BGP-LS-SPF SAFI MUST perform the | A BGP speaker supporting the BGP-LS-SPF SAFI MUST perform the | |||
| syntactic validation checks of the BGP-LS-SPF NLRI listed in | syntactic validation checks of the BGP-LS-SPF NLRI listed in | |||
| Section 8.2.2 of [RFC9552] to determine if it is malformed. | Section 8.2.2 of [RFC9552] to determine if it is malformed. | |||
| 7.3. Processing of BGP-LS Attribute | 7.3. Processing of BGP-LS Attributes | |||
| A BGP speaker supporting the BGP-LS-SPF SAFI MUST perform the | A BGP speaker supporting the BGP-LS-SPF SAFI MUST perform the | |||
| syntactic validation checks of the BGP-LS Attribute listed in | syntactic validation checks of the BGP-LS Attribute listed in | |||
| Section 8.2.2 of [RFC9552] to determine if it is malformed. | Section 8.2.2 of [RFC9552] to determine if it is malformed. | |||
| An implementation SHOULD log an error for further analysis for | An implementation SHOULD log an error for further analysis for | |||
| problems detected during syntax validation. | problems detected during syntax validation. | |||
| 7.4. BGP-LS-SPF Link State NLRI Database Synchronization | 7.4. BGP-LS-SPF Link-State NLRI Database Synchronization | |||
| While uncommon, there may be situations where the LSNDBs of two BGP | While uncommon, there may be situations where the LSNDBs of two BGP | |||
| speakers supporting the BGP-LS-SPF SAFI lose synchronization. In | speakers support the BGP-LS-SPF SAFI lose synchronization. In these | |||
| these situations, the BGP session MUST be reset unless other means of | situations, the BGP session MUST be reset unless other means of | |||
| resynchronization are used (beyond the scope of this document). When | resynchronization are used (beyond the scope of this document). When | |||
| the session is reset, the BGP speaker MUST send a NOTIFICATION | the session is reset, the BGP speaker MUST send a NOTIFICATION | |||
| message with the BGP error code "Loss of LSDB Synchronization" as | message with the BGP error code "Loss of LSDB Synchronization" as | |||
| described in section 3 of [RFC4271]. The mechanisms to detect loss | described in Section 3 of [RFC4271]. The mechanisms to detect loss | |||
| of synchronization are beyond the scope of this document. | of synchronization are beyond the scope of this document. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 8.1. BGP-LS-SPF Allocation in SAFI Parameters Registry | 8.1. BGP-LS-SPF Allocation in the SAFI Values Registry | |||
| IANA has assigned value 80 for BGP-LS-SPF from the First Come First | IANA has assigned value 80 for BGP-LS-SPF from the First Come First | |||
| Served range in the "Subsequent Address Family Identifiers (SAFI) | Served range [RFC8126] and listed this document as a reference in the | |||
| Parameters" registry. IANA is requested to update the registration | "SAFI Values" registry within the "Subsequent Address Family | |||
| to reference only to this document. | Identifiers (SAFI) Parameters" registry group. | |||
| 8.2. BGP-LS-SPF Assignments to BGP-LS NLRI and Attribute TLV Registry | 8.2. BGP-LS-SPF Assignments in the BGP-LS NLRI and Attribute TLVs | |||
| Registry | ||||
| IANA has assigned six TLVs for BGP-LS-SPF NLRI in the "BGP-LS NLRI | IANA has assigned six TLVs for BGP-LS-SPF NLRI in the "BGP-LS NLRI | |||
| and Attribute TLV" registry. Supported TLV types include the SPF | and Attribute TLVs" registry. Supported TLV types include Sequence | |||
| Status TLV type, Address Family Link Descriptor TLV type, and | Number, SPF Status, and Address Family Link Descriptor. Deprecated | |||
| Sequence Number TLV type. Deprecated TLV types include the SPF | TLV types include SPF Capability, IPv4 Link Prefix Length, and IPv6 | |||
| Capability TLV type, IPv4 Link Prefix Length TLV type, and IPv6 Link | Link Prefix Length. | |||
| Prefix Length TLV type. | ||||
| +==========+=================+=================================+ | +================+=================+============================+ | |||
| | TLV Code | Description | Reference | | | TLV Code Point | Description | Reference | | |||
| | Point | | | | +================+=================+============================+ | |||
| +==========+=================+=================================+ | | 1181 | Sequence Number | Section 5.2.4 of RFC XXXX | | |||
| | 1185 | Address Family | Section 5.2.2.1, RFCXXXX ([this | | +----------------+-----------------+----------------------------+ | |||
| | | Link Descriptor | document]). | | | 1184 | SPF Status | Sections 5.2.1.1, 5.2.2.2, | | |||
| +----------+-----------------+---------------------------------+ | | | | and 5.2.3.1 of RFC XXXX | | |||
| | 1181 | Sequence Number | RFCXXXX ([this document]), | | +----------------+-----------------+----------------------------+ | |||
| | | | Section 5.2.4 | | | 1185 | Address Family | Section 5.2.2.1 of RFC | | |||
| +----------+-----------------+---------------------------------+ | | | Link Descriptor | XXXX | | |||
| | 1184 | SPF Status | Section 5.2.1.1, RFCXXXX ([this | | +----------------+-----------------+----------------------------+ | |||
| | | | document]), Section 5.2.2.2 and | | ||||
| | | | Section 5.2.3.1 | | ||||
| +----------+-----------------+---------------------------------+ | ||||
| Table 1: NLRI Attribute TLVs | Table 5: NLRI Attribute TLVs | |||
| The early allocation assignments for the TLV types SPF Capability | The early allocation assignments for the TLV types SPF Capability | |||
| (1180), IPv4 Link Prefix Length (1182), and IPv6 Link Prefix Length | (1180), IPv4 Link Prefix Length (1182), and IPv6 Link Prefix Length | |||
| (1183) are no longer required and are to be deprecated. | (1183) are no longer required and have been deprecated. | |||
| 8.3. BGP-LS-SPF Node NLRI Attribute SPF Status TLV Status Registry | 8.3. BGP-LS-SPF Node NLRI Attribute SPF Status TLV Status Registry | |||
| IANA is requested to create the "BGP-LS-SPF Node NLRI Attribute SPF | IANA has created the "BGP-LS-SPF Node NLRI Attribute SPF Status TLV | |||
| Status TLV Status" Registry for status values in a new BGP SPF group. | Status" registry for status values within the "BGP Shortest Path | |||
| Initial values for this registry are provided below. Future | First (BGP SPF)" registry group. Initial values for this registry | |||
| assignments are to be made using the Expert Review registration | are provided below. Future assignments are to be made using the | |||
| policy [RFC8126] with guidance for Designated Experts as per section | Expert Review registration policy [RFC8126] with guidance for | |||
| 7.2 of [RFC9552]. | designated experts as per Section 7.2 of [RFC9552]. | |||
| +========+==========================================+ | +========+==========================================+ | |||
| | Values | Description | | | Values | Description | | |||
| +========+==========================================+ | +========+==========================================+ | |||
| | 0 | Reserved | | | 0 | Reserved | | |||
| +--------+------------------------------------------+ | +--------+------------------------------------------+ | |||
| | 1 | Node unreachable with respect to BGP SPF | | | 1 | Node unreachable with respect to BGP SPF | | |||
| +--------+------------------------------------------+ | +--------+------------------------------------------+ | |||
| | 2 | Node does not support transit traffic | | | 2 | Node does not support transit traffic | | |||
| | | with respect to BGP SPF | | | | with respect to BGP SPF | | |||
| +--------+------------------------------------------+ | +--------+------------------------------------------+ | |||
| | 3-254 | Unassigned | | | 3-254 | Unassigned | | |||
| +--------+------------------------------------------+ | +--------+------------------------------------------+ | |||
| | 255 | Reserved | | | 255 | Reserved | | |||
| +--------+------------------------------------------+ | +--------+------------------------------------------+ | |||
| Table 2: BGP-LS-SPF Node NLRI Attribute SPF | Table 6: BGP-LS-SPF Node NLRI Attribute SPF | |||
| Status TLV Status Registry Assignments | Status TLV Status Registry Assignments | |||
| 8.4. BGP-LS-SPF Link NLRI Attribute SPF Status TLV Status Registry | 8.4. BGP-LS-SPF Link NLRI Attribute SPF Status TLV Status Registry | |||
| IANA is requested to create the "BGP-LS-SPF Link NLRI Attribute SPF | IANA has created the "BGP-LS-SPF Link NLRI Attribute SPF Status TLV | |||
| Status TLV Status" Registry for status values in a new BGP SPF group. | Status" registry for status values within the BGP Shortest Path First | |||
| Initial values for this registry are provided below. Future | (BGP SPF)" registry group. Initial values for this registry are | |||
| assignments are to be made using the IETF Review registration policy | provided below. Future assignments are to be made using the IETF | |||
| [RFC8126]. | Review registration policy [RFC8126]. | |||
| +=======+==========================================+ | +=======+==========================================+ | |||
| | Value | Description | | | Value | Description | | |||
| +=======+==========================================+ | +=======+==========================================+ | |||
| | 0 | Reserved | | | 0 | Reserved | | |||
| +-------+------------------------------------------+ | +-------+------------------------------------------+ | |||
| | 1 | Link unreachable with respect to BGP SPF | | | 1 | Link unreachable with respect to BGP SPF | | |||
| +-------+------------------------------------------+ | +-------+------------------------------------------+ | |||
| | 2-254 | Unassigned | | | 2-254 | Unassigned | | |||
| +-------+------------------------------------------+ | +-------+------------------------------------------+ | |||
| | 255 | Reserved | | | 255 | Reserved | | |||
| +-------+------------------------------------------+ | +-------+------------------------------------------+ | |||
| Table 3: BGP-LS-SPF Link NLRI Attribute SPF | Table 7: BGP-LS-SPF Link NLRI Attribute SPF | |||
| Status TLV Status Registry Assignments | Status TLV Status Registry Assignments | |||
| 8.5. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Status Registry | 8.5. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Status Registry | |||
| IANA is requested to create the "BGP-LS-SPF Prefix NLRI Attribute SPF | IANA has created the "BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV | |||
| Status TLV Status" Registry for status values in a new BGP SPF group. | Status" registry for status values within the "BGP Shortest Path | |||
| Initial values for this registry are provided below. Future | First (BGP SPF)" registry group. Initial values for this registry | |||
| assignments are to be made using the IETF Review registration policy | are provided below. Future assignments are to be made using the IETF | |||
| [RFC8126]. | Review registration policy [RFC8126]. | |||
| +=======+============================================+ | +=======+============================================+ | |||
| | Value | Description | | | Value | Description | | |||
| +=======+============================================+ | +=======+============================================+ | |||
| | 0 | Reserved | | | 0 | Reserved | | |||
| +-------+--------------------------------------------+ | +-------+--------------------------------------------+ | |||
| | 1 | Prefix unreachable with respect to BGP SPF | | | 1 | Prefix unreachable with respect to BGP SPF | | |||
| +-------+--------------------------------------------+ | +-------+--------------------------------------------+ | |||
| | 2-254 | Unassigned | | | 2-254 | Unassigned | | |||
| +-------+--------------------------------------------+ | +-------+--------------------------------------------+ | |||
| | 255 | Reserved | | | 255 | Reserved | | |||
| +-------+--------------------------------------------+ | +-------+--------------------------------------------+ | |||
| Table 4: BGP-LS-SPF Prefix NLRI Attribute SPF | Table 8: BGP-LS-SPF Prefix NLRI Attribute SPF | |||
| Status TLV Status Registry Assignments | Status TLV Status Registry Assignments | |||
| 8.6. BGP Error (Notification) Code Assignment | 8.6. Assignment in the BGP Error (Notification) Codes Registry | |||
| IANA is requested to assign a TBD code for "Loss of LSDB | IANA has assigned value 9 for Loss of LSDB Synchronization in the | |||
| Synchronization" in the BGP Error (Notification) Codes" registry in | "BGP Error (Notification) Codes" registry within the "Border Gateway | |||
| the "Border Gateway Protocol (BGP) Parameters" registry group. | Protocol (BGP) Parameters" registry group. | |||
| 9. Security Considerations | 9. Security Considerations | |||
| This document defines a BGP SAFI, i.e., the BGP-LS-SPF SAFI. This | This document defines a BGP SAFI, i.e., the BGP-LS-SPF SAFI. This | |||
| document does not change the underlying security issues inherent in | document does not change the underlying security issues inherent in | |||
| the BGP protocol [RFC4271]. The Security Considerations discussed in | the BGP protocol [RFC4271]. The security considerations discussed in | |||
| [RFC4271] apply to the BGP SPF functionality as well. The analysis | [RFC4271] apply to the BGP SPF functionality as well. The analysis | |||
| of the security issues for BGP mentioned in [RFC4272] and [RFC6952] | of the security issues for BGP mentioned in [RFC4272] and [RFC6952] | |||
| also applies to this document. The threats and security | also applies to this document. The threats and security | |||
| considerations are the similar to the BGP IPv4 Unicast SAFI and IPv6 | considerations are similar to the BGP IPv4 Unicast SAFI and IPv6 | |||
| Unicast SAFI when utilized in similar deployments, e.g., [RFC7938]. | Unicast SAFI when utilized in similar deployments, e.g., [RFC7938]. | |||
| The analysis of Generic Threats to Routing Protocols done in | The analysis of generic threats to routing protocols in [RFC4593] is | |||
| [RFC4593] is also worth noting. | also worth noting. | |||
| As the modifications described in this document for BGP SPF apply to | As the modifications for BGP SPF described in this document apply to | |||
| IPv4 Unicast and IPv6 Unicast as underlay SAFIs in a single BGP SPF | IPv4 Unicast and IPv6 Unicast as underlay SAFIs in a single BGP SPF | |||
| Routing Domain, the BGP security solutions described in [RFC6811] and | Routing Domain, the BGP security solutions described in [RFC6811] and | |||
| [RFC8205] are out of scope as they are meant to apply for inter- | [RFC8205] are out of scope as they are meant to apply for inter- | |||
| domain BGP where multiple BGP Routing Domains are typically involved. | domain BGP, where multiple BGP Routing Domains are typically | |||
| The BGP-LS-SPF SAFI NLRI described in this document are typically | involved. The BGP-LS-SPF SAFI NLRIs described in this document are | |||
| advertised between External BGP (EBGP) or Internal BGP (IBGP) | typically advertised between EBGP or IBGP speakers under a single | |||
| speakers under a single administrative domain. | administrative domain. | |||
| The BGP SPF processing and the BGP-LS-SPF SAFI inherit the encoding | The BGP SPF processing and the BGP-LS-SPF SAFI inherit the encoding | |||
| from BGP-LS [RFC9552], and consequently, inherit the security | from BGP-LS [RFC9552], and consequently, inherit the security | |||
| considerations for BGP-LS associated with encoding. Additionally, | considerations for BGP-LS associated with encoding. Additionally, | |||
| given that the BGP SPF processing is used to install IPv4 and IPv6 | given that BGP SPF processing is used to install IPv4 and IPv6 | |||
| Unicast routes, the BGP SPF processing is vulnerable to attacks to | unicast routes, the BGP SPF processing is vulnerable to attacks to | |||
| the routing control plane that aren't applicable to BGP-LS. One | the routing control plane that aren't applicable to BGP-LS. One | |||
| notable Denial-of-Service attack, would be to include malformed BGP | notable Denial-of-Service attack would be to include malformed BGP | |||
| attributes in a replicated BGP Update, causing the receiving peer to | attributes in a replicated BGP Update, causing the receiving peer to | |||
| treat the advertised BGP-LS-SPF to a withdrawal [RFC7606]. | treat the advertised BGP-LS-SPF to a withdrawal [RFC7606]. | |||
| In order to mitigate the risk of peering with BGP speakers | In order to mitigate the risk of peering with BGP speakers | |||
| masquerading as legitimate authorized BGP speakers, it is RECOMMENDED | masquerading as legitimate authorized BGP speakers, it is RECOMMENDED | |||
| that the TCP Authentication Option (TCP-AO) [RFC5925] be used to | that the TCP Authentication Option (TCP-AO) [RFC5925] be used to | |||
| authenticate BGP sessions. If an authorized BGP peer is compromised, | authenticate BGP sessions. If an authorized BGP peer is compromised, | |||
| that BGP peer could advertise modified Node, Link, or Prefix NLRI | that BGP peer could advertise a modified Node, Link, or Prefix NLRI | |||
| which result in misrouting, repeating origination of NLRI, and/or | that results in misrouting, repeating origination of NLRI, and/or | |||
| excessive SPF calculations. When a BGP speaker detects that its | excessive SPF calculations. When a BGP speaker detects that its | |||
| self-originated NLRI is being originated by another BGP speaker, an | self-originated NLRI is being originated by another BGP speaker, an | |||
| appropriate error SHOULD be logged so that the operator can take | appropriate error SHOULD be logged so that the operator can take | |||
| corrective action. This exposure is similar to other BGP AFI/SAFIs. | corrective action. This exposure is similar to other BGP AFI/SAFIs. | |||
| 10. Management Considerations | 10. Management Considerations | |||
| This section includes unique management considerations for the BGP- | This section includes unique management considerations for the BGP- | |||
| LS-SPF address family. | LS-SPF address family. | |||
| 10.1. Configuration | 10.1. Configuration | |||
| All routers in BGP SPF Routing Domain are under a single | All routers in the BGP SPF Routing Domain are under a single | |||
| administrative domain allowing for consistent configuration. | administrative domain allowing for consistent configuration. | |||
| 10.2. Link Metric Configuration | 10.2. Link Metric Configuration | |||
| For loopback prefixes, it is RECOMMENDED that the metric be 0. For | For loopback prefixes, it is RECOMMENDED that the metric be 0. For | |||
| non-loopback prefixes, the setting of the metric is a local matter | non-loopback prefixes, the setting of the metric is a local matter | |||
| and beyond the scope of this document. | and beyond the scope of this document. | |||
| Algorithms such as setting the metric inversely to the link speed as | Algorithms such as setting the metric inversely to the link speed as | |||
| supported in some IGP implementations MAY be supported. However, the | supported in some IGP implementations MAY be supported. However, the | |||
| details of how the metric is computed are beyond the scope of this | details of how the metric is computed are beyond the scope of this | |||
| document. | document. | |||
| Within a BGP SPF Routing Domain, the IGP metrics for all advertised | Within a BGP SPF Routing Domain, the IGP metrics for all advertised | |||
| links SHOULD be configured or defaulted consistently. For example, | links SHOULD be configured or defaulted consistently. For example, | |||
| if a default metric is used for one router's links, then a similar | if a default metric is used for one router's links, then a similar | |||
| metric should be used for all router's links. Similarly, if the link | metric should be used for all router's links. Similarly, if the link | |||
| metric is derived from using the inverse of the link bandwidth on one | metric is derived from using the inverse of the link bandwidth on one | |||
| router, then this SHOULD be done for all routers and the same | router, then this SHOULD be done for all routers, and the same | |||
| reference bandwidth SHOULD be used to derive the inversely | reference bandwidth SHOULD be used to derive the inversely | |||
| proportional metric. Failure to do so will result in incorrect | proportional metric. Failure to do so will result in incorrect | |||
| routing based on link metric. | routing based on the link metric. | |||
| 10.3. Unnumbered Link Configuration | 10.3. Unnumbered Link Configuration | |||
| When parallel unnumbered links between BGP-SPF routers are included | When parallel unnumbered links between BGP and SPF routers are | |||
| in the BGP SPF routing domain and the Remote Link Identifiers aren't | included in the BGP SPF routing domain and the Remote Link | |||
| readily discovered, it is RECOMMENDED that these the Remote Link | Identifiers aren't readily discovered, it is RECOMMENDED that the | |||
| Identifiers be configured so that precise NLRI Link matching can be | Remote Link Identifiers be configured so that precise NLRI Link | |||
| done. | matching can be done. | |||
| 10.4. Adjacency End-of-RIB (EOR) Marker Requirement | 10.4. Adjacency End-of-RIB (EOR) Marker Requirement | |||
| Depending on the peering model, topology, and convergence | Depending on the peering model, topology, and convergence | |||
| requirements, an End-of-RIB (EoR) Marker Section 5.3 for the BGP-LS- | requirements, an EoR marker (Section 5.3) for the BGP-LS-SPF SAFI MAY | |||
| SPF SAFI MAY be required from the peer prior to advertising a BGP-LS | be required from the peer prior to advertising a BGP-LS Link NLRI for | |||
| Link NLRI for the peer. If configuration is supported, this MUST be | the peer. If configuration is supported, this MUST be configurable | |||
| configurable at the BGP SPF instance level and MUST be configured | at the BGP SPF instance level and MUST be configured consistently | |||
| consistently throughout the BGP SPF routing domain. | throughout the BGP SPF routing domain. | |||
| When this configuration is provided, the default MUST be to wait | When this configuration is provided, the default MUST be to wait | |||
| indefinitely prior to advertising a BGP-LS link NLRI. Configuration | indefinitely prior to advertising a BGP-LS link NLRI. Configuration | |||
| of a timer specifying the maximum time to wait prior to advertisement | of a timer specifying the maximum time to wait prior to advertisement | |||
| MAY be provided. | MAY be provided. | |||
| 10.5. backoff-config | 10.5. backoff-config | |||
| In addition to configuration of the BGP-LS-SPF address family, | In addition to the configuration of the BGP-LS-SPF address family, | |||
| implementations SHOULD support the "Shortest Path First (SPF) Back- | implementations SHOULD support "Shortest Path First (SPF) Back-Off | |||
| Off Delay Algorithm for Link-State IGPs" [RFC8405]. If supported, | Delay Algorithm for Link-State IGPs" [RFC8405]. If supported, | |||
| configuration of the INITIAL_SPF_DELAY, SHORT_SPF_DELAY, | configuration of the INITIAL_SPF_DELAY, SHORT_SPF_DELAY, | |||
| LONG_SPF_DELAY, TIME_TO_LEARN, and HOLDDOWN_INTERVAL MUST be | LONG_SPF_DELAY, TIME_TO_LEARN, and HOLDDOWN_INTERVAL MUST be | |||
| supported [RFC8405]. Section 6 of [RFC8405] recommends consistent | supported [RFC8405]. Section 6 of [RFC8405] recommends consistent | |||
| configuration of these values throughout the IGP routing domain and | configuration of these values throughout the IGP routing domain, and | |||
| this also applies to the BGP SPF Routing Domain. | this also applies to the BGP SPF Routing Domain. | |||
| 10.6. BGP-LS-SPF NLRI Readvertisement Delay | 10.6. BGP-LS-SPF NLRI Readvertisement Delay | |||
| The configuration parameter specifies the delay for readvertising a | The configuration parameter that specifies the delay for | |||
| more recent instance of a self-originated NLRI when received more | readvertising a more recent instance of a self-originated NLRI when | |||
| than once in succession is BGP_LS_SPF_SELF_READVERTISEMENT_DELAY. | received more than once in succession is | |||
| The default is 5 seconds. | BGP_LS_SPF_SELF_READVERTISEMENT_DELAY. The default is 5 seconds. | |||
| 10.7. Operational Data | 10.7. Operational Data | |||
| In order to troubleshoot SPF issues, implementations SHOULD support | In order to troubleshoot SPF issues, implementations SHOULD support | |||
| an SPF log including entries for previous SPF computations. Each SPF | an SPF log including entries for previous SPF computations. Each SPF | |||
| log entry would include the BGP-LS-SPF NLRI SPF triggering the SPF, | log entry would include the BGP-LS-SPF NLRI SPF triggering the SPF, | |||
| SPF scheduled time, SPF start time and SPF end time. Since the size | SPF scheduled time, SPF start time, and SPF end time. Since the size | |||
| of the log is finite, implementations SHOULD also maintain counters | of the log is finite, implementations SHOULD also maintain counters | |||
| for the total number of SPF computations and the total number of SPF | for the total number of SPF computations and the total number of SPF | |||
| triggering events. Additionally, to troubleshoot SPF scheduling and | triggering events. Additionally, troubleshooting should be available | |||
| back-off [RFC8405], the current SPF back-off state, remaining time- | for SPF scheduling and back-off [RFC8405], the current SPF back-off | |||
| to-learn, remaining hold-down interval, last trigger event time, last | state, the remaining time-to-learn, the remaining hold-down interval, | |||
| SPF time, and next SPF time should be available. | the last trigger event time, the last SPF time, and the next SPF | |||
| time. | ||||
| 10.8. BGP-LS-SPF Address Family Session Isolation | 10.8. BGP-LS-SPF Address Family Session Isolation | |||
| In common deployment scenarios, the unicast routes installed during | In common deployment scenarios, the unicast routes installed during | |||
| BGP-LS-SPF AFI/SAFI SPF computation serve as the underlay for other | BGP-LS-SPF AFI/SAFI SPF computation serve as the underlay for other | |||
| BGP AFI/SAFIs. To avoid errors encountered in other AFI/SAFIs from | BGP AFI/SAFIs. To avoid errors encountered in other AFI/SAFIs from | |||
| impacting the BGP-LS-SPF AFI/SAFI or vice versa, isolation mechanisms | impacting the BGP-LS-SPF AFI/SAFI or vice versa, isolation mechanisms | |||
| such as separate BGP instances or separate BGP sessions (e.g., using | such as separate BGP instances or separate BGP sessions (e.g., using | |||
| different addresses for peering) for BGP SPF Link-State information | different addresses for peering) for BGP SPF Link-State distribution | |||
| distribution SHOULD be used. | information SHOULD be used. | |||
| 11. Implementation Status | ||||
| Note RFC Editor: Please remove this section and the associated | ||||
| references prior to publication. | ||||
| This section records the status of known implementations of the | ||||
| protocol defined by this specification at the time of posting of this | ||||
| Internet-Draft and is based on a proposal described in [RFC7942]. | ||||
| The description of implementations in this section is intended to | ||||
| assist the IETF in its decision processes in progressing drafts to | ||||
| RFCs. Please note that the listing of any individual implementation | ||||
| here does not imply endorsement by the IETF. Furthermore, no effort | ||||
| has been spent to verify the information presented here that was | ||||
| supplied by IETF contributors. This is not intended as, and must not | ||||
| be construed to be, a catalog of available implementations or their | ||||
| features. Readers are advised to note that other implementations may | ||||
| exist. | ||||
| According to RFC 7942, "this will allow reviewers and working groups | ||||
| to assign due consideration to documents that have the benefit of | ||||
| running code, which may serve as evidence of valuable experimentation | ||||
| and feedback that have made the implemented protocols more mature. | ||||
| It is up to the individual working groups to use this information as | ||||
| they see fit". | ||||
| The document [I-D.psarkar-lsvr-bgp-spf-impl] contains an | ||||
| implementation report documenting implementations of BGP Link-State | ||||
| Short Path First (SPF) routing, i.e., this specification. | ||||
| 12. Acknowledgements | 10.9. Acknowledgements | |||
| The authors would like to thank Sue Hares, Jorge Rabadan, Boris | The authors would like to thank Sue Hares, Jorge Rabadan, Boris | |||
| Hassanov, Dan Frost, Matt Anderson, Fred Baker, Lukas Krattiger, | Hassanov, Dan Frost, Matt Anderson, Fred Baker, Lukas Krattiger, | |||
| Yingzhen Qu, and Haibo Wang for their review and comments. Thanks to | Yingzhen Qu, and Haibo Wang for their reviews and comments. Thanks | |||
| Pushpasis Sarkar for discussions on preventing a BGP SPF Router from | to Pushpasis Sarkar for discussions on preventing a BGP SPF Router | |||
| being used for non-local traffic (i.e., transit traffic). | from being used for non-local traffic (i.e., transit traffic). | |||
| The authors extend special thanks to Eric Rosen for fruitful | The authors extend a special thanks to Eric Rosen for fruitful | |||
| discussions on BGP-LS-SPF convergence as compared to IGPs. | discussions on BGP-LS-SPF convergence as compared to IGPs. | |||
| The authors would like extend thanks Alvaro Retana for multiple AD | The authors would also like to thank the following people: | |||
| reviews and discussions. | ||||
| The authors would to thank Ketan Talaulikar for an extensive shepherd | * Alvaro Retana for multiple AD reviews and discussions. | |||
| review. | ||||
| The authors would like to thank Adrian Farrel, Li Zhang, and Jie Dong | * Ketan Talaulikar for an extensive shepherd review. | |||
| for WG last call review comments. | ||||
| The authors would to like to thank Jim Guichard for his AD review and | * Adrian Farrel, Li Zhang, and Jie Dong for WG Last Call review | |||
| discussion. | comments. | |||
| The authors would to like to thank David Dong for his IANA review. | * Jim Guichard for his AD review and discussion. | |||
| The authors would to like to thank Joel Halpern for his GENART | * David Dong for his IANA review. | |||
| review. | ||||
| The authors would to like to thank Erik Kline, Eric Vyncke, Mahesh | * Joel Halpern for his GENART review. | |||
| Jethanandani, and Roman Danyliw for IESG review comments. | ||||
| The authors would to like to thank John Scudder for his detailed IESG | * Erik Kline, Eric Vyncke, Mahesh Jethanandani, and Roman Danyliw | |||
| review and specifically for helping align the document with BGP | for IESG review comments. | |||
| documents. | ||||
| 13. Contributors | * John Scudder for his detailed IESG review and specifically for | |||
| helping align the document with BGP documents. | ||||
| In addition to the authors listed on the front page, the following | 10.10. Contributors | |||
| co-authors have contributed to the document. | ||||
| The following people contributed substantially to the content of this | ||||
| document and should be considered coauthors: | ||||
| Derek Yeung | Derek Yeung | |||
| Arrcus, Inc. | Arrcus, Inc. | |||
| derek@arrcus.com | Email: derek@arrcus.com | |||
| Gunter Van De Velde | Gunter Van De Velde | |||
| Nokia | Nokia | |||
| gunter.van_de_velde@nokia.com | Email: gunter.van_de_velde@nokia.com | |||
| Abhay Roy | Abhay Roy | |||
| Arrcus, Inc. | Arrcus, Inc. | |||
| abhay@arrcus.com | Email: abhay@arrcus.com | |||
| Venu Venugopal | Venu Venugopal | |||
| Cisco Systems | Cisco Systems | |||
| venuv@cisco.com | Email: venuv@cisco.com | |||
| Chaitanya Yadlapalli | Chaitanya Yadlapalli | |||
| AT&T | AT&T | |||
| cy098d@att.com | Email: cy098d@att.com | |||
| 14. References | 11. References | |||
| 14.1. Normative References | 11.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | |||
| DOI 10.17487/RFC2328, April 1998, | DOI 10.17487/RFC2328, April 1998, | |||
| <https://www.rfc-editor.org/info/rfc2328>. | <https://www.rfc-editor.org/info/rfc2328>. | |||
| skipping to change at page 37, line 49 ¶ | skipping to change at line 1726 ¶ | |||
| Ray, S., and J. Dong, "Border Gateway Protocol - Link | Ray, S., and J. Dong, "Border Gateway Protocol - Link | |||
| State (BGP-LS) Extensions for Segment Routing BGP Egress | State (BGP-LS) Extensions for Segment Routing BGP Egress | |||
| Peer Engineering", RFC 9086, DOI 10.17487/RFC9086, August | Peer Engineering", RFC 9086, DOI 10.17487/RFC9086, August | |||
| 2021, <https://www.rfc-editor.org/info/rfc9086>. | 2021, <https://www.rfc-editor.org/info/rfc9086>. | |||
| [RFC9552] Talaulikar, K., Ed., "Distribution of Link-State and | [RFC9552] Talaulikar, K., Ed., "Distribution of Link-State and | |||
| Traffic Engineering Information Using BGP", RFC 9552, | Traffic Engineering Information Using BGP", RFC 9552, | |||
| DOI 10.17487/RFC9552, December 2023, | DOI 10.17487/RFC9552, December 2023, | |||
| <https://www.rfc-editor.org/info/rfc9552>. | <https://www.rfc-editor.org/info/rfc9552>. | |||
| 14.2. Informational References | 11.2. Informative References | |||
| [I-D.ietf-lsvr-applicability] | [I-D.ietf-lsvr-applicability] | |||
| Patel, K., Lindem, A., Zandi, S., Dawra, G., and J. Dong, | Patel, K., Lindem, A., Zandi, S., Dawra, G., and J. Dong, | |||
| "Usage and Applicability of BGP Link-State Shortest Path | "Usage and Applicability of BGP Link-State Shortest Path | |||
| Routing (BGP-SPF) in Data Centers", Work in Progress, | Routing (BGP-SPF) in Data Centers", Work in Progress, | |||
| Internet-Draft, draft-ietf-lsvr-applicability-21, 16 | Internet-Draft, draft-ietf-lsvr-applicability-22, 23 | |||
| January 2025, <https://datatracker.ietf.org/doc/html/ | January 2025, <https://datatracker.ietf.org/doc/html/ | |||
| draft-ietf-lsvr-applicability-21>. | draft-ietf-lsvr-applicability-22>. | |||
| [I-D.psarkar-lsvr-bgp-spf-impl] | ||||
| Sarkar, P., Patel, K., Pallagatti, S., and | ||||
| sajibasil@gmail.com, "BGP Shortest Path Routing Extension | ||||
| Implementation Report", Work in Progress, Internet-Draft, | ||||
| draft-psarkar-lsvr-bgp-spf-impl-02, 23 September 2024, | ||||
| <https://datatracker.ietf.org/doc/html/draft-psarkar-lsvr- | ||||
| bgp-spf-impl-02>. | ||||
| [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", | [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", | |||
| RFC 4272, DOI 10.17487/RFC4272, January 2006, | RFC 4272, DOI 10.17487/RFC4272, January 2006, | |||
| <https://www.rfc-editor.org/info/rfc4272>. | <https://www.rfc-editor.org/info/rfc4272>. | |||
| [RFC4456] Bates, T., Chen, E., and R. Chandra, "BGP Route | [RFC4456] Bates, T., Chen, E., and R. Chandra, "BGP Route | |||
| Reflection: An Alternative to Full Mesh Internal BGP | Reflection: An Alternative to Full Mesh Internal BGP | |||
| (IBGP)", RFC 4456, DOI 10.17487/RFC4456, April 2006, | (IBGP)", RFC 4456, DOI 10.17487/RFC4456, April 2006, | |||
| <https://www.rfc-editor.org/info/rfc4456>. | <https://www.rfc-editor.org/info/rfc4456>. | |||
| skipping to change at page 39, line 15 ¶ | skipping to change at line 1775 ¶ | |||
| [RFC7911] Walton, D., Retana, A., Chen, E., and J. Scudder, | [RFC7911] Walton, D., Retana, A., Chen, E., and J. Scudder, | |||
| "Advertisement of Multiple Paths in BGP", RFC 7911, | "Advertisement of Multiple Paths in BGP", RFC 7911, | |||
| DOI 10.17487/RFC7911, July 2016, | DOI 10.17487/RFC7911, July 2016, | |||
| <https://www.rfc-editor.org/info/rfc7911>. | <https://www.rfc-editor.org/info/rfc7911>. | |||
| [RFC7938] Lapukhov, P., Premji, A., and J. Mitchell, Ed., "Use of | [RFC7938] Lapukhov, P., Premji, A., and J. Mitchell, Ed., "Use of | |||
| BGP for Routing in Large-Scale Data Centers", RFC 7938, | BGP for Routing in Large-Scale Data Centers", RFC 7938, | |||
| DOI 10.17487/RFC7938, August 2016, | DOI 10.17487/RFC7938, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7938>. | <https://www.rfc-editor.org/info/rfc7938>. | |||
| [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | ||||
| Code: The Implementation Status Section", BCP 205, | ||||
| RFC 7942, DOI 10.17487/RFC7942, July 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7942>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Keyur Patel | Keyur Patel | |||
| Arrcus, Inc. | Arrcus, Inc. | |||
| Email: keyur@arrcus.com | Email: keyur@arrcus.com | |||
| Acee Lindem | Acee Lindem | |||
| LabN Consulting, LLC | LabN Consulting, LLC | |||
| 301 Midenhall Way | 301 Midenhall Way | |||
| Cary, NC 27513 | Cary, NC 27513 | |||
| End of changes. 242 change blocks. | ||||
| 641 lines changed or deleted | 625 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||