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, the Current-Link and Remote-Link's | |||
Family Link Descriptor TLV must match the address | Address Family Link Descriptor TLV must match the | |||
family of the IPv4 or IPv6 SPF computation, the | address 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 Link NLRI | |||
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. 245 change blocks. | ||||
646 lines changed or deleted | 630 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |