rfc9815v1.txt | rfc9815.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) K. Patel | Internet Engineering Task Force (IETF) K. Patel | |||
Request for Comments: 9815 Arrcus, Inc. | Request for Comments: 9815 A. Lindem | |||
Category: Standards Track A. Lindem | Category: Standards Track Arrcus, Inc. | |||
ISSN: 2070-1721 LabN Consulting, LLC | ISSN: 2070-1721 S. Zandi | |||
S. Zandi | ||||
W. Henderickx | W. Henderickx | |||
Nokia | Nokia | |||
July 2025 | July 2025 | |||
BGP Link-State Shortest Path First (SPF) Routing | BGP Link-State Shortest Path First (SPF) Routing | |||
Abstract | Abstract | |||
Many Massively Scaled Data Centers (MSDCs) have converged on | Many Massively Scaled Data Centers (MSDCs) have converged on | |||
skipping to change at line 59 ¶ | skipping to change at line 58 ¶ | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction | 1. Introduction | |||
1.1. Terminology | 1.1. Terminology | |||
1.2. BGP Shortest Path First (SPF) Motivation | 1.2. Requirements Language | |||
1.3. Document Overview | 1.3. BGP Shortest Path First (SPF) Motivation | |||
1.4. Requirements Language | 1.4. Document Overview | |||
2. Base BGP Protocol Relationship | 2. Base BGP Protocol Relationship | |||
3. BGP - Link State (BGP-LS) Relationship | 3. BGP - Link State (BGP-LS) Relationship | |||
4. BGP SPF Peering Models | 4. BGP SPF Peering Models | |||
4.1. BGP Single-Hop Peering on Network Node Connections | 4.1. BGP Single-Hop Peering on Network Node Connections | |||
4.2. BGP Peering Between Directly Connected Nodes | 4.2. BGP Peering Between Directly Connected Nodes | |||
4.3. BGP Peering in Route-Reflector or Controller Topology | 4.3. BGP Peering in Route-Reflector or Controller Topology | |||
5. BGP Shortest Path Routing (SPF) Protocol Extensions | 5. BGP Shortest Path First (SPF) Routing Protocol Extensions | |||
5.1. BGP-LS Shortest Path Routing (SPF) SAFI | 5.1. BGP-LS SPF SAFI | |||
5.1.1. BGP-LS-SPF NLRI TLVs | 5.1.1. BGP-LS-SPF NLRI TLVs | |||
5.1.2. BGP-LS Attribute | 5.1.2. BGP-LS Attribute | |||
5.2. Extensions to BGP-LS | 5.2. Extensions to BGP-LS | |||
5.2.1. Node NLRI Usage | 5.2.1. Node NLRI Usage | |||
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 | |||
5.2.2. Link NLRI Usage | 5.2.2. Link NLRI Usage | |||
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 | |||
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 | |||
5.2.3. IPv4/IPv6 Prefix NLRI Usage | 5.2.3. IPv4/IPv6 Prefix NLRI Usage | |||
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 | |||
skipping to change at line 101 ¶ | skipping to change at line 100 ¶ | |||
6.5.2. Node Failure Convergence | 6.5.2. Node Failure Convergence | |||
7. Error Handling | 7. Error Handling | |||
7.1. Processing of BGP-LS-SPF TLVs | 7.1. Processing of BGP-LS-SPF TLVs | |||
7.2. Processing of BGP-LS-SPF NLRIs | 7.2. Processing of BGP-LS-SPF NLRIs | |||
7.3. Processing of BGP-LS Attributes | 7.3. Processing of BGP-LS Attributes | |||
7.4. BGP-LS-SPF Link State NLRI Database Synchronization | 7.4. BGP-LS-SPF Link State NLRI Database Synchronization | |||
8. IANA Considerations | 8. IANA Considerations | |||
8.1. BGP-LS-SPF Allocation in the SAFI Values Registry | 8.1. BGP-LS-SPF Allocation in the SAFI Values Registry | |||
8.2. BGP-LS-SPF Assignments in the BGP-LS NLRI and Attribute | 8.2. BGP-LS-SPF Assignments in the BGP-LS NLRI and Attribute | |||
TLVs Registry | TLVs Registry | |||
8.3. BGP-LS-SPF Node NLRI Attribute SPF Status TLV Status | 8.3. BGP-LS-SPF Node NLRI Attribute SPF Status TLV Values | |||
Registry | Registry | |||
8.4. BGP-LS-SPF Link NLRI Attribute SPF Status TLV Status | 8.4. BGP-LS-SPF Link NLRI Attribute SPF Status TLV Values | |||
Registry | Registry | |||
8.5. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Status | 8.5. BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV Values | |||
Registry | Registry | |||
8.6. Assignment in the BGP Error (Notification) Codes Registry | 8.6. Assignment in the BGP Error (Notification) Codes Registry | |||
9. Security Considerations | 9. Security Considerations | |||
10. Management Considerations | 10. Management Considerations | |||
10.1. Configuration | 10.1. Configuration | |||
10.2. Link Metric Configuration | 10.2. Link Metric Configuration | |||
10.3. Unnumbered Link Configuration | 10.3. Unnumbered Link Configuration | |||
10.4. Adjacency End-of-RIB (EOR) Marker Requirement | 10.4. Adjacency End-of-RIB (EOR) Marker Requirement | |||
10.5. backoff-config | 10.5. backoff-config | |||
10.6. BGP-LS-SPF NLRI Readvertisement Delay | 10.6. BGP-LS-SPF NLRI Readvertisement Delay | |||
skipping to change at line 153 ¶ | skipping to change at line 152 ¶ | |||
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 Network Layer Reachability Information | and completely incremental Network Layer Reachability Information | |||
(NLRI) advertisement. These advantages can reduce the overhead in | (NLRI) advertisement. These advantages can reduce the overhead in | |||
MSDCs where there is a high degree of Equal-Cost Multipath (ECMP) | MSDCs where there is a high degree of Equal-Cost Multipath (ECMP) | |||
load balancing. Additionally, using an SPF-based computation can | load balancing. Additionally, using an SPF-based computation can | |||
support fast convergence and the computation of Loop-Free | support fast convergence and the computation of Loop-Free | |||
Alternatives (LFAs). The SPF LFA extensions defined in [RFC5286] can | Alternatives (LFAs). The SPF LFA extensions defined in [RFC5286] can | |||
be similarly applied to BGP SPF calculations. However, the details | be similarly applied to BGP SPF calculations. However, the details | |||
are a matter of implementation detail and out of scope for this | are specific to implementation and are out of scope for this | |||
document. Furthermore, a BGP-based solution lends itself to multiple | document. Furthermore, a BGP-based solution lends itself to multiple | |||
peering models including those incorporating route reflectors | peering models including those incorporating route reflectors | |||
[RFC4456] or controllers. | [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: | |||
skipping to change at line 179 ¶ | skipping to change at line 178 ¶ | |||
BGP-LS-SPF NLRI: The BGP-LS Network Layer Reachability Information | BGP-LS-SPF NLRI: The BGP-LS Network Layer Reachability 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 the IPv4 | Prefix NLRI: In the context of BGP SPF, this term refers to the IPv4 | |||
Topology Prefix NLRI and/or the IPv6 Topology Prefix NLRI. | Topology Prefix NLRI and/or the IPv6 Topology Prefix NLRI. | |||
1.2. BGP Shortest Path First (SPF) Motivation | 1.2. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in | ||||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
1.3. 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 IGP for the underlay and BGP as the 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 (LFAs) [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 hundreds or thousands of prefixes and result in | |||
withdrawal or readvertisement of the attendant NLRI. With BGP SPF, | the withdrawal or readvertisement of the attendant NLRI. With BGP | |||
only the BGP speakers originating the Link NLRI need to withdraw the | SPF, only the BGP speakers originating the Link NLRI need to withdraw | |||
corresponding BGP-LS-SPF Link NLRI. Additionally, the changed NLRI | the corresponding BGP-LS-SPF Link NLRI. Additionally, the changed | |||
is advertised immediately as opposed to normal BGP where it is only | NLRI is advertised immediately as opposed to normal BGP where it is | |||
advertised after the best route selection. These advantages provide | only advertised after the best route selection. These advantages | |||
NLRI dissemination throughout the BGP SPF routing domain with | provide 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 as 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 | |||
skipping to change at line 238 ¶ | skipping to change at line 245 ¶ | |||
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). However, 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 obtain all the above | |||
advantages. | advantages. | |||
1.3. Document Overview | 1.4. Document Overview | |||
This document begins with Section 2 defining the precise relationship | This document begins with Section 2 defining the precise relationship | |||
that BGP SPF has with the base BGP protocol [RFC4271] and Section 3 | that BGP SPF has with the base BGP protocol [RFC4271] and Section 3 | |||
defining the BGP - Link State (BGP-LS) extensions [RFC9552]. The BGP | defining the BGP - Link State (BGP-LS) extensions [RFC9552]. The BGP | |||
peering models as well as their respective trade-offs are then | peering models as well as their respective trade-offs are then | |||
discussed in Section 4. The remaining sections, which make up the | discussed in Section 4. The remaining sections, which make up the | |||
bulk of the document, define the protocol enhancements necessary to | bulk of the document, define the protocol enhancements necessary to | |||
support BGP SPF including BGP-LS extensions (Section 5), replacement | support BGP SPF including BGP-LS extensions (Section 5), replacement | |||
of the base BGP decision process with the SPF computation | of the base BGP Decision Process with the SPF computation | |||
(Section 6), and BGP SPF error handling (Section 7). | (Section 6), and BGP SPF error handling (Section 7). | |||
1.4. Requirements Language | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in | ||||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
2. Base BGP Protocol Relationship | 2. Base BGP Protocol Relationship | |||
With the exception of the decision process, 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, the 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 changes in 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 consistently with the BGP protocol | validated, and propagated consistently with the BGP protocol | |||
[RFC4271], 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, as described | |||
calculation as described in phase 1 of the base BGP decision | in phase 1 of the base BGP Decision Process, is replaced with the | |||
process is replaced with the mechanisms in Section 6.1. | mechanisms in Section 6.1 for the SPF calculation. | |||
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 SPF algorithm, also known as the Dijkstra algorithm. | with the SPF algorithm, also known as the 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 NLRIs that are advertised using the BGP-LS AFI. The BGP-LS | defining NLRIs that are advertised using the BGP-LS AFI. The BGP-LS | |||
extensions defined in [RFC9552] make use of the decision process | extensions defined in [RFC9552] make use of the Decision Process | |||
defined in [RFC4271]. Rather than reusing the BGP-LS SAFI, the BGP- | defined in [RFC4271]. Rather than reusing the BGP-LS SAFI, the BGP- | |||
LS-SPF SAFI (Section 5.1) is introduced to ensure backward | LS-SPF SAFI (Section 5.1) is introduced to ensure backward | |||
compatibility for 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 so that the NLRI or BGP-LS Attribute will | unexpected TLVs is required so that the NLRI or BGP-LS Attribute will | |||
not be considered malformed (Section 5.2 of [RFC9552]). The list of | not be considered malformed (Section 5.2 of [RFC9552]). The list of | |||
skipping to change at line 342 ¶ | skipping to change at line 341 ¶ | |||
for this document and is discussed in [RFC9816]. The subsections | for this document and is discussed in [RFC9816]. The subsections | |||
below describe several BGP SPF deployment models. However, this | below describe several BGP SPF deployment models. However, this | |||
doesn't preclude other deployment models. | 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 External BGP (EBGP) | The simplest peering model is the one where External BGP (EBGP) | |||
single-hop sessions are established over direct point-to-point links | single-hop sessions are established over direct point-to-point links | |||
interconnecting the nodes in the BGP SPF routing domain. Once the | interconnecting the nodes in the BGP SPF routing domain. Once the | |||
single-hop BGP session has been established and the Multiprotocol | single-hop BGP session has been established and the Multiprotocol | |||
Extensions capabilities have been exchanged with the BGP-LS-SPF AFI/ | Extensions Capability with the BGP-LS-SPF AFI/SAFI [RFC4760] has been | |||
SAFI [RFC4760] for the corresponding session, then the link is | exchanged for the corresponding session, then the link is considered | |||
considered up and available from a BGP SPF perspective, and the | up and available from a BGP SPF perspective, and the corresponding | |||
corresponding BGP-LS-SPF Link NLRI is advertised. | 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- | is to wait indefinitely for the EoR marker prior to advertising the | |||
SPF Link NLRI. Refer to Section 10.4. | BGP-LS-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 NLRIs 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. | |||
skipping to change at line 412 ¶ | skipping to change at line 411 ¶ | |||
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 the EoR | delay advertisement of a link between two peers the until the EoR | |||
marker Section 5.3 has been received from both BGP peers and the BGP- | marker Section 5.3 has been received from both BGP peers and the BGP- | |||
LS Link NLRI for the link(s) between the two nodes has been received | LS Link NLRI for the link(s) between the two nodes has been received | |||
from both BGP peers. | from both BGP peers. | |||
5. BGP Shortest Path Routing (SPF) Protocol Extensions | 5. BGP Shortest Path First (SPF) Routing Protocol Extensions | |||
5.1. BGP-LS Shortest Path Routing (SPF) SAFI | 5.1. BGP-LS 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 Multiprotocol Extensions capabilities [RFC4760] to | they MUST exchange the Multiprotocol Extensions Capability [RFC4760] | |||
ensure that they are both capable of properly processing such an | to 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 Link State Database (LSDB) information. | comprising BGP SPF Link State Database (LSDB) information. | |||
The NLRI and comprising TLVs MUST be encoded as specified in | The NLRI and comprising TLVs MUST be encoded as specified in | |||
Section 5.1 of [RFC9552]. TLVs specified as mandatory in [RFC9552] | Section 5.1 of [RFC9552]. TLVs specified as mandatory in [RFC9552] | |||
are considered mandatory for the BGP-LS-SPF SAFI as well. If a | are considered mandatory for the BGP-LS-SPF SAFI as well. If a | |||
mandatory TLV is not present, the NLRI MUST NOT be used in the BGP | mandatory TLV is not present, the NLRI MUST NOT be used in the BGP | |||
SPF route calculation. All the other TLVs are considered as optional | SPF route calculation. All the other TLVs are considered as optional | |||
TLVs. Documents specifying usage of optional TLVs for BGP SPF MUST | TLVs. Documents specifying usage of optional TLVs for BGP SPF MUST | |||
address 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 the exact same | The BGP-LS Attribute of the BGP-LS-SPF SAFI uses the exact same | |||
format as the BGP-LS AFI [RFC9552]. In other words, all the TLVs | format as the BGP-LS AFI [RFC9552]. In other words, all the TLVs | |||
used in the BGP-LS attribute of the BGP-LS AFI are applicable and are | used in the BGP-LS Attribute of the BGP-LS AFI are applicable and are | |||
used for the BGP-LS attribute of the BGP-LS-SPF SAFI. This attribute | used for the BGP-LS Attribute of the BGP-LS-SPF SAFI. This attribute | |||
is an optional, non-transitive BGP attribute that is used to carry | is an optional, non-transitive BGP attribute that is used to carry | |||
link, node, and prefix properties and attributes. The BGP-LS | link, node, and prefix properties and attributes. The BGP-LS | |||
attribute is 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 | |||
information within the BGP-LS Attribute. BGP speakers MUST ensure | information within the BGP-LS Attribute. BGP speakers MUST ensure | |||
that they limit the TLVs included in the BGP-LS Attribute to ensure | that they limit the TLVs included in the BGP-LS Attribute to ensure | |||
that a BGP update message for a single BGP-LS-SPF NLRI does not cross | that a BGP UPDATE message for a single BGP-LS-SPF NLRI does not cross | |||
the maximum limit for a BGP message. The determination of the types | the maximum limit for a BGP message. The determination of the types | |||
of TLVs to be included by the BGP speaker originating the attribute | of TLVs to be included by the BGP speaker originating the attribute | |||
is outside the scope of this document. If, due to the limits on the | is outside the scope of this document. If, due to the limits on the | |||
maximum size of an UPDATE message, a single route doesn't fit into | maximum size of an UPDATE message, a single route doesn't fit into | |||
the message, the BGP speaker MUST NOT advertise the route to its peer | the message, the BGP speaker MUST NOT advertise the route to its peer | |||
and MAY choose to log an error locally [RFC4271]. | and MAY choose to log an error locally [RFC4271]. | |||
5.2. Extensions to BGP-LS | 5.2. Extensions to BGP-LS | |||
[RFC9552] describes a mechanism by which link-state and TE | [RFC9552] describes a mechanism by which link-state and TE | |||
information can be collected from IGPs and shared with external | information can be collected from IGPs and shared with external | |||
components using the BGP protocol. It describes both the definition | components using the BGP protocol. It describes both the definition | |||
of the BGP-LS NLRI that advertise links, nodes, and prefixes | of the BGP-LS NLRI that advertise links, nodes, and prefixes | |||
comprising IGP link-state information and the definition of a BGP | comprising IGP link-state information and the definition of a BGP | |||
path attribute (BGP-LS attribute) that carries link, node, and prefix | path attribute (BGP-LS Attribute) that carries link, node, and prefix | |||
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 | |||
skipping to change at line 531 ¶ | skipping to change at line 530 ¶ | |||
+-------+-------------------------------------------------------+ | +-------+-------------------------------------------------------+ | |||
| 1 | Node unreachable with respect to BGP SPF | | | 1 | Node unreachable with respect to BGP SPF | | |||
+-------+-------------------------------------------------------+ | +-------+-------------------------------------------------------+ | |||
| 2 | Node does not support transit with respect to BGP SPF | | | 2 | Node does not support transit with respect to BGP SPF | | |||
+-------+-------------------------------------------------------+ | +-------+-------------------------------------------------------+ | |||
| 3-254 | Unassigned | | | 3-254 | Unassigned | | |||
+-------+-------------------------------------------------------+ | +-------+-------------------------------------------------------+ | |||
| 255 | Reserved | | | 255 | Reserved | | |||
+-------+-------------------------------------------------------+ | +-------+-------------------------------------------------------+ | |||
Table 1: SPF Status Values | Table 1: Node NLRI Attribute 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 NLRIs are discussed in | The criteria for advertisement of Link NLRIs are discussed in | |||
Section 4. | Section 4. | |||
skipping to change at line 579 ¶ | skipping to change at line 578 ¶ | |||
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 (AF) Link Descriptor TLV is defined | Additionally, the Address Family (AF) Link Descriptor TLV is defined | |||
to determine whether an unnumbered link can be used in the IPv4 SPF, | to determine whether an unnumbered link can be used in the IPv4 SPF, | |||
the IPv6, or both (refer to Section 5.2.2.1). | the 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 Link Local/Remote | |||
identifiers (Section 6.3) must match for unnumbered interfaces). | Identifiers (Section 6.3) must match for unnumbered interfaces). | |||
The IGP Metric (TLV 1095) MUST be advertised. If a BGP speaker | The IGP Metric (TLV 1095) MUST be advertised. If a BGP speaker | |||
receives a Link NLRI without an IGP Metric attribute TLV, then it | receives a Link NLRI without an IGP Metric attribute TLV, then it | |||
MUST consider the received NLRI as malformed (refer to Section 7). | MUST consider the received NLRI as malformed (refer to Section 7). | |||
The BGP SPF metric length is 4 octets. A metric is associated with | The BGP SPF metric length is 4 octets. A metric is associated with | |||
the output side of each router interface. This metric is | the output side of each router interface. This metric is | |||
configurable by the system administrator. The lower the metric, the | configurable by the system administrator. The lower the metric, the | |||
more likely the interface is to be used to forward data traffic. One | more likely the interface is to be used to forward data traffic. One | |||
possible default for the metric would be to give each interface a | possible default for the metric would be to give each 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 Link | the endpoint link descriptors. Hence, the Address Family Link | |||
Descriptor SHOULD be included with the Link Local/Remote Identifiers | Descriptor TLV SHOULD be included with the Link Local/Remote | |||
TLV for unnumbered links, so that the link can be used in the | Identifiers TLV for unnumbered links, so that the link can be used in | |||
respective address family SPF. If the Address Family Link Descriptor | the respective address family SPF. If the Address Family Link | |||
is not present for an unnumbered link, the link will not be used in | Descriptor TLV is not present for an unnumbered link, the link will | |||
the SPF computation for either address family. If the Address Family | not be used in the SPF computation for either address family. If the | |||
Link Descriptor is present for a numbered link, the link descriptor | Address Family Link Descriptor TLV is present for a numbered link, | |||
will be ignored. If the Address Family Link Descriptor TLV contains | the link descriptor will be ignored. If the Address Family Link | |||
an undefined value (3-254), the link descriptor will be ignored. If | Descriptor TLV contains an undefined value (3-254), the link | |||
the Address Family Link Descriptor TLV contains a reserved value (0 | descriptor will be ignored. If the Address Family Link Descriptor | |||
or 255), the TLV is considered malformed and is handled as described | TLV contains a reserved value (0 or 255), the TLV is considered | |||
in Section 7.1. | malformed and is handled as described 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) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at line 641 ¶ | skipping to change at line 640 ¶ | |||
+-------+---------------------+ | +-------+---------------------+ | |||
| 3-254 | Undefined | | | 3-254 | Undefined | | |||
+-------+---------------------+ | +-------+---------------------+ | |||
| 255 | Reserved | | | 255 | Reserved | | |||
+-------+---------------------+ | +-------+---------------------+ | |||
Table 2: Address Family Values | 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 | |||
The BGP-LS-SPF Attribute TLV of the BGP-LS-SPF Link NLRI is defined | The BGP-LS Attribute SPF Status TLV of the BGP-LS-SPF Link NLRI is | |||
to indicate the status of the link with respect to the BGP SPF | defined to indicate the status of the link with respect to the BGP | |||
calculation. This is used to expedite convergence for link failures | SPF calculation. This is used to expedite convergence for link | |||
as discussed in Section 6.5.1. If the SPF Status TLV is not included | failures as discussed in Section 6.5.1. If the SPF Status TLV is not | |||
with the Link NLRI, the link is considered up and available. The SPF | included with the Link NLRI, the link is considered up and available. | |||
status is acted upon with the execution of the next SPF calculation | The SPF status is acted upon with the execution of the next SPF | |||
(Section 6.3). A single TLV type is shared by the Node, Link, and | calculation (Section 6.3). A single TLV type is shared by the Node, | |||
Prefix NLRI. The TLV type is 1184. | Link, and 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 | | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
+=======+==========================================+ | +=======+==========================================+ | |||
skipping to change at line 670 ¶ | skipping to change at line 669 ¶ | |||
+=======+==========================================+ | +=======+==========================================+ | |||
| 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 Status Values | Table 3: Link NLRI Attribute 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 | |||
SPF 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 | |||
An IPv4/IPv6 Prefix NLRI is advertised with a Local Node Descriptor | An IPv4/IPv6 Prefix NLRI is advertised with a Local Node Descriptor | |||
and the prefix and length. The Prefix Descriptor field includes IP | and the prefix and length. The Prefix Descriptor field includes IP | |||
Reachability Information (TLV 265) as described in [RFC9552]. The | Reachability Information (TLV 265) as described in [RFC9552]. The | |||
Prefix Metric (TLV 1155) MUST be advertised to be considered for | Prefix Metric (TLV 1155) MUST be advertised to be considered for | |||
route calculation. The IGP Route Tag (TLV 1153) MAY be advertised. | route calculation. The IGP Route Tag (TLV 1153) MAY be advertised. | |||
The usage of other BGP-LS attribute TLVs is beyond the scope of this | The usage of other BGP-LS Attribute TLVs is beyond the 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 | |||
skipping to change at line 723 ¶ | skipping to change at line 722 ¶ | |||
+=======+============================================+ | +=======+============================================+ | |||
| 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 Status Values | Table 4: Prefix NLRI Attribute 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 | |||
skipping to change at line 846 ¶ | skipping to change at line 845 ¶ | |||
The Phase 3 decision function of the Decision Process [RFC4271] is | The Phase 3 decision function of the Decision Process [RFC4271] is | |||
also simplified because under normal SPF operation, a BGP speaker | also simplified because under normal SPF operation, a BGP speaker | |||
MUST advertise the changed NLRIs to all BGP peers with the BGP-LS-SPF | MUST advertise the changed NLRIs to all BGP peers with the BGP-LS-SPF | |||
AFI/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 | |||
exceptions are unchanged NLRIs or stale NLRIs, i.e., an 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 (see Section 9.1.1 of [RFC4271]) no longer apply. | Decision Process (see Section 9.1.1 of [RFC4271]) no longer apply. | |||
1. NLRIs 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 a | 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. | |||
skipping to change at line 884 ¶ | skipping to change at line 883 ¶ | |||
with its peers, any existing sessions are taken down and stale NLRIs | 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 attributes | is discussed in Section 5.4. The AS_PATH and AS4_PATH attributes | |||
[RFC6793] 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 | |||
Nodes, Links, or Prefix NLRIs with Node Descriptors matching the | Nodes, Links, or Prefix NLRIs with Node Descriptors matching the | |||
local BGP speaker are considered self-originated. When a self- | local BGP speaker are considered self-originated. When a self- | |||
skipping to change at line 923 ¶ | skipping to change at line 922 ¶ | |||
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 | |||
skipping to change at line 946 ¶ | skipping to change at line 945 ¶ | |||
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 ECMP routes. Weighted Unequal-Cost Multipath (UCMP) routes | supports ECMP routes. Weighted Unequal-Cost Multipath (UCMP) 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): A routing table that | 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 separate RIBs for | |||
reachability. | prefix and node reachability. | |||
Global Routing Information Base (GLOBAL-RIB): The RIB containing the | Global Routing Information Base (GLOBAL-RIB): The RIB containing the | |||
current routes that are installed in the router's forwarding | current routes that are installed in the router's forwarding | |||
plane. This is commonly referred to in networking parlance as | plane. This is commonly referred to in networking parlance as | |||
"the RIB". | "the RIB". | |||
Link State NLRI Database (LSNDB): A database of BGP-LS-SPF NLRIs | Link State NLRI Database (LSNDB): A database of BGP-LS-SPF NLRIs | |||
that facilitate access to all Node, Link, and Prefix NLRIs. | that facilitate access to all Node, Link, and Prefix NLRIs. | |||
Candidate List (CAN-LIST): A list of candidate Node NLRIs used | Candidate List (CAN-LIST): A list of candidate Node NLRIs used | |||
skipping to change at line 985 ¶ | skipping to change at line 984 ¶ | |||
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 Attribute includes an SPF Status | |||
Status TLV (refer to Section 5.2.1.1) indicating the node is | 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- | to this NLRI is referred to as the "Current-Node". If the CAN- | |||
LIST 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 NLRIs 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 NLRIs 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 following | 1155) added to the cost to reach the Current-Node. The following | |||
is done for each Prefix NLRI (referred to as the "Current- | is done for each Prefix NLRI (referred to as the "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 | considered unreachable, and the next Prefix NLRI is examined | |||
in 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. The | |||
metric being updated. If the IGP Route Tag (TLV 1153) is | Local-RIB route metric is set to the sum of the cost for | |||
included in the Current-Prefix's NLRI Attribute, the tag(s) is | Current-Node and the Current-Prefix's metric. If the IGP | |||
installed in the current Local-RIB route's tag(s). | Route Tag (TLV 1153) is included in the Current-Prefix's NLRI | |||
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 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, | |||
which replace the Local-RIB route's next-hops and the metric | which replace the Local-RIB route's next-hops and the metric | |||
being updated, and any route tags are removed. If the IGP | being updated, and any route tags are removed. If the IGP | |||
Route Tag (TLV 1153) is included in the Current-Prefix's NLRI | Route Tag (TLV 1153) is included in the Current-Prefix's NLRI | |||
Attribute, the tag(s) is installed in the current Local-RIB | Attribute, the tag(s) is installed in the current Local-RIB | |||
route's tag(s). | route's tag(s). | |||
skipping to change at line 1044 ¶ | skipping to change at line 1045 ¶ | |||
number of ECMP routes that can be supported. The setting or | number of ECMP routes that can be supported. The setting or | |||
identification of any limitations is outside the scope if this | identification of any limitations is outside the scope if this | |||
document. Weighted UCMP routes are out of scope as well. | document. Weighted UCMP routes are out of scope as well. | |||
5. All the Link NLRIs 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 | |||
referred to as the "Current-Link" in the following text. 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 is 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 include the SPF Status | b. If the Current-Node NLRI attributes include the SPF Status | |||
skipping to change at line 1179 ¶ | skipping to change at line 1180 ¶ | |||
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 a BGP-LS-SPF Link NLRI has | the link is down prior to withdrawal. If the BGP-LS-SPF Link NLRI is | |||
been advertised with the SPF Status TLV and the link becomes | advertised with the SPF Status TLV included in the BGP-LS Attribute, | |||
available in that period, the originator of the BGP-LS-SPF Link NLRI | and the link becomes available in that period, the originator of the | |||
MUST advertise a more recent version of the BGP-LS-SPF Link NLRI | BGP-LS-SPF Link NLRI MUST advertise a more recent version of the BGP- | |||
without the SPF Status TLV in the BGP-LS Link Attributes. The | LS-SPF Link NLRI without the SPF Status TLV in the BGP-LS Link | |||
suggested default value for the LinkStatusDownAdvertise timer is 2 | Attribute. The suggested default value for the | |||
seconds. | LinkStatusDownAdvertise timer is 2 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) to indicate that 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 | |||
skipping to change at line 1218 ¶ | skipping to change at line 1219 ¶ | |||
one or more peers on a different path(s) in the LSNDB until they are | one or more peers on a different path(s) in the LSNDB until they are | |||
withdrawn. These stale NLRIs 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 bidirectional 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 error-handling actions, as described in | This section describes error-handling actions, as described in | |||
[RFC7606], that are specific to BGP-LS-SPF SAFI 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 malformed and MUST be handled | corresponding Node NLRI is considered malformed and MUST be handled | |||
as 'treat-as-withdraw'. An implementation SHOULD log an error | as 'treat-as-withdraw'. An implementation SHOULD log an error | |||
(subject to rate limiting) for further analysis. | (subject to rate limiting) for further analysis. | |||
skipping to change at line 1288 ¶ | skipping to change at line 1289 ¶ | |||
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 | it MUST consider the received NLRI as malformed, and the receiving | |||
BGP speaker MUST handle such a 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 Attributes, 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, NLRIs 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 | used in the SPF calculation (Section 6.3). How this is accomplished | |||
is an implementation matter, but one way would be for these NLRIs not | is an implementation matter, but one way would be for these NLRIs not | |||
to be 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. | |||
skipping to change at line 1355 ¶ | skipping to change at line 1356 ¶ | |||
| 1185 | Address Family | Section 5.2.2.1 of RFC | | | 1185 | Address Family | Section 5.2.2.1 of RFC | | |||
| | Link Descriptor | 9815 | | | | Link Descriptor | 9815 | | |||
+----------------+-----------------+----------------------------+ | +----------------+-----------------+----------------------------+ | |||
Table 5: 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 have been 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 Values Registry | |||
IANA has created the "BGP-LS-SPF Node NLRI Attribute SPF Status TLV | IANA has created the "BGP-LS-SPF Node NLRI Attribute SPF Status TLV | |||
Status" registry for status values within the "BGP Shortest Path | Values" registry for status values within the "BGP Shortest Path | |||
First (BGP SPF)" registry group. Initial values for this registry | First (BGP SPF)" registry group. Initial values for this registry | |||
are provided below. Future assignments are to be made using the | are provided below. Future assignments are to be made using the | |||
Expert Review registration policy [RFC8126] with guidance for | Expert Review registration policy [RFC8126] with guidance for | |||
designated experts as per Section 7.2 of [RFC9552]. | designated experts as per Section 7.2 of [RFC9552]. | |||
+========+==========================================+ | +========+==========================================+ | |||
| Values | Description | | | Values | Description | | |||
+========+==========================================+ | +========+==========================================+ | |||
| 0 | Reserved | | | 0 | Reserved | | |||
+--------+------------------------------------------+ | +--------+------------------------------------------+ | |||
skipping to change at line 1380 ¶ | skipping to change at line 1381 ¶ | |||
+--------+------------------------------------------+ | +--------+------------------------------------------+ | |||
| 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 6: BGP-LS-SPF Node NLRI Attribute SPF | Table 6: BGP-LS-SPF Node NLRI Attribute SPF | |||
Status TLV Status Registry Assignments | Status TLV Values 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 Values Registry | |||
IANA has created the "BGP-LS-SPF Link NLRI Attribute SPF Status TLV | IANA has created the "BGP-LS-SPF Link NLRI Attribute SPF Status TLV | |||
Status" registry for status values within the BGP Shortest Path First | Values" registry for status values within the BGP Shortest Path First | |||
(BGP SPF)" registry group. Initial values for this registry are | (BGP SPF)" registry group. Initial values for this registry are | |||
provided below. Future assignments are to be made using the IETF | provided below. Future assignments are to be made using the IETF | |||
Review registration policy [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 7: BGP-LS-SPF Link NLRI Attribute SPF | Table 7: BGP-LS-SPF Link NLRI Attribute SPF | |||
Status TLV Status Registry Assignments | Status TLV Values 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 Values Registry | |||
IANA has created the "BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV | IANA has created the "BGP-LS-SPF Prefix NLRI Attribute SPF Status TLV | |||
Status" registry for status values within the "BGP Shortest Path | Values" registry for status values within the "BGP Shortest Path | |||
First (BGP SPF)" registry group. Initial values for this registry | First (BGP SPF)" registry group. Initial values for this registry | |||
are provided below. Future assignments are to be made using the IETF | are provided below. Future assignments are to be made using the IETF | |||
Review registration policy [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 8: BGP-LS-SPF Prefix NLRI Attribute SPF | Table 8: BGP-LS-SPF Prefix NLRI Attribute SPF | |||
Status TLV Status Registry Assignments | Status TLV Values Registry Assignments | |||
8.6. Assignment in the BGP Error (Notification) Codes Registry | 8.6. Assignment in the BGP Error (Notification) Codes Registry | |||
IANA has assigned value 9 for Loss of LSDB Synchronization in the | IANA has assigned value 9 for Loss of LSDB Synchronization in the | |||
"BGP Error (Notification) Codes" registry within the "Border Gateway | "BGP Error (Notification) Codes" registry within 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 | |||
skipping to change at line 1456 ¶ | skipping to change at line 1457 ¶ | |||
As the modifications for BGP SPF described in this document 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 | domain BGP, where multiple BGP routing domains are typically | |||
involved. The BGP-LS-SPF SAFI NLRIs described in this document are | involved. The BGP-LS-SPF SAFI NLRIs described in this document are | |||
typically advertised between EBGP or IBGP speakers under a single | typically advertised between EBGP or IBGP speakers under a single | |||
administrative domain. | administrative domain. | |||
The BGP SPF processing and the BGP-LS-SPF SAFI inherit the encoding | The BGP-LS-SPF SAFI and associated BGP SPF processing inherit the | |||
from BGP-LS [RFC9552], and consequently, inherit the security | encodings from BGP-LS [RFC9552], and consequently, inherit the | |||
considerations for BGP-LS associated with encoding. Additionally, | security considerations for BGP-LS associated with these encodings. | |||
given that BGP SPF processing is used to install IPv4 and IPv6 | Additionally, given that BGP SPF processing is used to install IPv4 | |||
unicast routes, the BGP SPF processing is vulnerable to attacks to | and IPv6 unicast routes, the BGP SPF processing is vulnerable to | |||
the routing control plane that aren't applicable to BGP-LS. One | attacks to the routing control plane that aren't applicable to BGP- | |||
notable Denial-of-Service attack would be to include malformed BGP | LS. One notable Denial-of-Service attack would be to include | |||
attributes in a replicated BGP Update, causing the receiving peer to | malformed BGP attributes in a replicated BGP Update, causing the | |||
treat the advertised BGP-LS-SPF to a withdrawal [RFC7606]. | receiving peer to 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 a modified Node, Link, or Prefix NLRI | that BGP peer could advertise a modified Node, Link, or Prefix NLRI | |||
that results 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 | |||
skipping to change at line 1493 ¶ | skipping to change at line 1495 ¶ | |||
All routers in the 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 that set the metric inversely to the link speed in some | |||
supported in some IGP implementations MAY be supported. However, the | IGP implementations MAY be supported. However, the details of how | |||
details of how the metric is computed are beyond the scope of this | 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 the link metric. | routing based on the link metric. | |||
skipping to change at line 1565 ¶ | skipping to change at line 1566 ¶ | |||
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, troubleshooting should be available | triggering events. Additionally, troubleshooting should be available | |||
for SPF scheduling and back-off [RFC8405], the current SPF back-off | for SPF scheduling and back-off [RFC8405], the current SPF back-off | |||
state, the remaining time-to-learn, the remaining hold-down interval, | state, the remaining time-to-learn, the remaining hold-down interval, | |||
the last trigger event time, the last SPF time, and the next SPF | the last trigger event time, the last SPF time, and the next SPF | |||
time. | 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 | the BGP-LS-SPF AFI/SAFI 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-LS-SPF information | |||
distribution SHOULD be used. | distribution SHOULD be used. | |||
11. References | 11. References | |||
11.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>. | |||
skipping to change at line 1722 ¶ | skipping to change at line 1723 ¶ | |||
"Usage and Applicability of BGP Link-State Shortest Path | "Usage and Applicability of BGP Link-State Shortest Path | |||
Routing (BGP-SPF) in Data Centers", RFC 9816, | Routing (BGP-SPF) in Data Centers", RFC 9816, | |||
DOI 10.17487/RFC9816, July 2025, | DOI 10.17487/RFC9816, July 2025, | |||
<https://www.rfc-editor.org/info/rfc9816>. | <https://www.rfc-editor.org/info/rfc9816>. | |||
Acknowledgements | 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 reviews and comments. Thanks | Yingzhen Qu, and Haibo Wang for their reviews and comments. Thanks | |||
to Pushpasis Sarkar for discussions on preventing a BGP SPF Router | to Pushpasis Sarkar for discussions on preventing a BGP SPF router | |||
from being used for non-local traffic (i.e., transit traffic). | from being used for non-local traffic (i.e., transit traffic). | |||
The authors extend a 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 also like to thank the following people: | The authors would also like to thank the following people: | |||
* Alvaro Retana for multiple AD reviews and discussions. | * Alvaro Retana for multiple AD reviews and discussions. | |||
* Ketan Talaulikar for an extensive shepherd review. | * Ketan Talaulikar for an extensive shepherd review. | |||
skipping to change at line 1781 ¶ | skipping to change at line 1782 ¶ | |||
AT&T | AT&T | |||
Email: cy098d@att.com | Email: cy098d@att.com | |||
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 | Arrcus, Inc. | |||
301 Midenhall Way | 301 Midenhall Way | |||
Cary, NC 27513 | Cary, NC 27513 | |||
United States of America | United States of America | |||
Email: acee.ietf@gmail.com | Email: acee.ietf@gmail.com | |||
Shawn Zandi | Shawn Zandi | |||
222 2nd Street | 222 2nd Street | |||
San Francisco, CA 94105 | San Francisco, CA 94105 | |||
United States of America | United States of America | |||
End of changes. 73 change blocks. | ||||
140 lines changed or deleted | 141 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |