draft-ietf-idr-bgp-prefix-sid-27.txt | rfc8669.txt | |||
---|---|---|---|---|
IDR S. Previdi | Internet Engineering Task Force (IETF) S. Previdi | |||
Internet-Draft C. Filsfils | Request for Comments: 8669 Huawei Technologies | |||
Intended status: Standards Track A. Lindem, Ed. | Category: Standards Track C. Filsfils | |||
Expires: December 28, 2018 Cisco Systems | ISSN: 2070-1721 A. Lindem, Ed. | |||
Cisco Systems | ||||
A. Sreekantiah | A. Sreekantiah | |||
H. Gredler | H. Gredler | |||
RtBrick Inc. | RtBrick Inc. | |||
June 26, 2018 | December 2019 | |||
Segment Routing Prefix SID extensions for BGP | Segment Routing Prefix Segment Identifier Extensions for BGP | |||
draft-ietf-idr-bgp-prefix-sid-27 | ||||
Abstract | Abstract | |||
Segment Routing (SR) leverages the source routing paradigm. A node | Segment Routing (SR) leverages the source-routing paradigm. A node | |||
steers a packet through an ordered list of instructions, called | steers a packet through an ordered list of instructions called | |||
segments. A segment can represent any instruction, topological or | "segments". A segment can represent any instruction, topological or | |||
service-based. The ingress node prepends an SR header to a packet | service based. The ingress node prepends an SR header to a packet | |||
containing a set of segment identifiers (SID). Each SID represents a | containing a set of segment identifiers (SIDs). Each SID represents | |||
topological or a service-based instruction. Per-flow state is | a topological or service-based instruction. Per-flow state is | |||
maintained only on the ingress node of the SR domain. An SR domain | maintained only on the ingress node of the SR domain. An "SR domain" | |||
is defined as a single administrative domain for global SID | is defined as a single administrative domain for global SID | |||
assignment. | assignment. | |||
This document defines an optional, transitive BGP attribute for | This document defines an optional, transitive BGP attribute for | |||
announcing BGP Prefix Segment Identifiers (BGP Prefix-SID) | announcing information about BGP Prefix Segment Identifiers (BGP | |||
information and the specification for SR-MPLS SIDs. | Prefix-SIDs) and the specification for SR-MPLS SIDs. | |||
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. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on December 28, 2018. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8669. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
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 Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. MPLS BGP Prefix SID . . . . . . . . . . . . . . . . . . . . . 4 | 2. MPLS BGP Prefix-SID | |||
3. BGP Prefix-SID Attribute . . . . . . . . . . . . . . . . . . 5 | 3. BGP Prefix-SID Attribute | |||
3.1. Label-Index TLV . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. Label-Index TLV | |||
3.2. Originator SRGB TLV . . . . . . . . . . . . . . . . . . . 6 | 3.2. Originator SRGB TLV | |||
4. Receiving BGP Prefix-SID Attribute . . . . . . . . . . . . . 8 | 4. Receiving BGP Prefix-SID Attribute | |||
4.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 8 | 4.1. MPLS Data Plane: Labeled Unicast | |||
5. Advertising BGP Prefix-SID Attribute . . . . . . . . . . . . 10 | 5. Advertising BGP Prefix-SID Attribute | |||
5.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 10 | 5.1. MPLS Data Plane: Labeled Unicast | |||
6. Error Handling of BGP Prefix-SID Attribute . . . . . . . . . 10 | 6. Error Handling of BGP Prefix-SID Attribute | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 7. IANA Considerations | |||
8. Manageability Considerations . . . . . . . . . . . . . . . . 12 | 8. Manageability Considerations | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 9. Security Considerations | |||
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 14 | 10. References | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | 10.1. Normative References | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 10.2. Informative References | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 14 | Acknowledgements | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 16 | Contributors | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The Segment Routing (SR) architecture leverages the source routing | The Segment Routing (SR) architecture leverages the source-routing | |||
paradigm. A segment represents either a topological instruction such | paradigm. A segment represents either a topological instruction, | |||
as "go to prefix P following shortest path" or a service instruction. | such as "go to prefix P following shortest path", or a service | |||
Other types of segments may be defined in the future. | instruction. Other types of segments may be defined in the future. | |||
A segment is identified through a Segment Identifier (SID). An SR | A segment is identified through a Segment Identifier (SID). An "SR | |||
domain is defined as a single administrative domain for global SID | domain" is defined as a single administrative domain for global SID | |||
assignment. It may be comprised of a single Autonomous System (AS) | assignment. It may be comprised of a single Autonomous System (AS) | |||
or multiple ASes under consolidated global SID administration. | or multiple ASes under consolidated global SID administration. | |||
Typically, the ingress node of the SR domain prepends an SR header | Typically, the ingress node of the SR domain prepends an SR header | |||
containing segments identifiers (SIDs) to an incoming packet. | containing SIDs to an incoming packet. | |||
As described in [I-D.ietf-spring-segment-routing], when SR is applied | As described in [RFC8402], when SR is applied to the MPLS data plane | |||
to the MPLS dataplane ([I-D.ietf-spring-segment-routing-mpls]), the | ([RFC8660]), the SID consists of a label. | |||
SID consists of a label. | ||||
[I-D.ietf-spring-segment-routing] also describes how segment routing | [RFC8402] also describes how Segment Routing can be applied to an | |||
can be applied to an IPv6 dataplane (SRv6) using an IPv6 routing | IPv6 data plane (SRv6) using an IPv6 routing header containing a | |||
header containing a stack of SR SIDs encoded as IPv6 addresses | stack of SR SIDs encoded as IPv6 addresses [IPv6-SRH]. The | |||
[I-D.ietf-6man-segment-routing-header]. The applicability and | applicability and support for Segment Routing over IPv6 is beyond the | |||
support for Segment Routing over IPv6 is beyond the scope of this | scope of this document. | |||
document. | ||||
A BGP-Prefix Segment is a BGP prefix with a Prefix-SID attached. A | A BGP Prefix Segment is a BGP prefix with a Prefix-SID attached. A | |||
BGP Prefix-SID is always a global SID | BGP Prefix-SID is always a global SID ([RFC8402]) within the SR | |||
([I-D.ietf-spring-segment-routing]) within the SR domain and | domain and identifies an instruction to forward the packet over the | |||
identifies an instruction to forward the packet over the Equal-Cost | Equal-Cost Multipath (ECMP) best path computed by BGP to the related | |||
Multi-Path (ECMP) best-path computed by BGP to the related prefix. | prefix. The BGP Prefix-SID is the identifier of the BGP Prefix | |||
The BGP Prefix-SID is the identifier of the BGP prefix segment. In | Segment. In this document, we always refer to the BGP Prefix Segment | |||
this document, we always refer to the BGP-Prefix segment by the BGP | by the BGP Prefix-SID. | |||
Prefix-SID. | ||||
This document describes the BGP extension to signal the BGP Prefix- | This document describes the BGP extensions to signal the BGP Prefix- | |||
SID. Specifically, this document defines a BGP attribute known as | SID. Specifically, this document defines a BGP attribute known as | |||
the BGP Prefix-SID attribute and specifies the rules to originate, | the "BGP Prefix-SID attribute" and specifies the rules to originate, | |||
receive, and handle error conditions for the attribute. | receive, and handle error conditions for the attribute. | |||
The BGP Prefix-SID attribute defined in this document can be attached | The BGP Prefix-SID attribute defined in this document can be attached | |||
to prefixes from Multiprotocol BGP IPv4/IPv6 Labeled Unicast | to prefixes from Multiprotocol BGP IPv4/IPv6 Labeled Unicast | |||
([RFC4760], [RFC8277]). Usage of the BGP Prefix-SID attribute for | ([RFC4760] [RFC8277]). Usage of the BGP Prefix-SID attribute for | |||
other Address Family Identifier (AFI)/ Subsequent Address Family | other Address Family Identifier (AFI) / Subsequent Address Family | |||
Identifier (SAFI) combinations is not defined herein but may be | Identifier (SAFI) combinations is not defined herein but may be | |||
specified in future specifications. | specified in future specifications. | |||
[I-D.ietf-spring-segment-routing-msdc] describes example use cases | [RFC8670] describes example use cases where the BGP Prefix-SID is | |||
where the BGP Prefix-SID is used for the above AFI/SAFI combinations. | used for the above AFI/SAFI combinations. | |||
It should be noted that: | It should be noted that: | |||
o A BGP Prefix-SID will be global across ASes when the | * A BGP Prefix-SID will be global across ASes when the | |||
interconnected ASes are part of the same SR domain. | interconnected ASes are part of the same SR domain. | |||
Alternatively, when interconnecting ASes, the ASBRs of each domain | Alternatively, when interconnecting ASes, the ASBRs of each domain | |||
will have to handle the advertisement of unique SIDs. The | will have to handle the advertisement of unique SIDs. The | |||
mechanisms for such interconnection are outside the scope of the | mechanisms for such interconnection are outside the scope of the | |||
protocol extensions defined in this document. | protocol extensions defined in this document. | |||
o A BGP Prefix-SID MAY be attached to a BGP prefix. This implies | * A BGP Prefix-SID MAY be attached to a BGP prefix. This implies | |||
that each prefix is advertised individually, reducing the ability | that each prefix is advertised individually, reducing the ability | |||
to pack BGP advertisements (when sharing common attributes). | to pack BGP advertisements (when sharing common attributes). | |||
2. MPLS BGP Prefix SID | 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. | ||||
The BGP Prefix-SID is realized on the MPLS dataplane | 2. MPLS BGP Prefix-SID | |||
([I-D.ietf-spring-segment-routing-mpls]) in the following way: | ||||
The BGP Prefix-SID is realized on the MPLS data plane ([RFC8660]) in | ||||
the following way: | ||||
The operator assigns a globally unique label index, L_I, to a | The operator assigns a globally unique label index, L_I, to a | |||
locally originated prefix of a BGP speaker N which is advertised | locally originated prefix of a BGP speaker N, which is advertised | |||
to all other BGP speakers in the SR domain. | to all other BGP speakers in the SR domain. | |||
According to [I-D.ietf-spring-segment-routing], each BGP speaker | According to [RFC8402], each BGP speaker is configured with a | |||
is configured with a label block called the Segment Routing Global | label block called the Segment Routing Global Block (SRGB). While | |||
Block (SRGB). While [I-D.ietf-spring-segment-routing] recommends | [RFC8402] recommends using the same SRGB across all the nodes | |||
using the same SRGB across all the nodes within the SR domain, the | within the SR domain, the SRGB of a node is a local property and | |||
SRGB of a node is a local property and could be different on | could be different on different speakers. The drawbacks of the | |||
different speakers. The drawbacks of the use case where BGP | use case where BGP speakers have different SRGBs are documented in | |||
speakers have different SRGBs are documented in | [RFC8402] and [RFC8670]. | |||
[I-D.ietf-spring-segment-routing] and | ||||
[I-D.ietf-spring-segment-routing-msdc]. | ||||
If traffic-engineering within the SR domain is required, each node | If traffic engineering within the SR domain is required, each node | |||
may also be required to advertise topological information and | may also be required to advertise topological information and Peer | |||
Peering SIDs for each of its links and peers. This information is | SIDs for each of its links and peers. This information is | |||
required to perform the explicit path computation and to express | required to perform the explicit path computation and to express | |||
an explicit path as a list of SIDs. The advertisement of | an explicit path as a list of SIDs. The advertisement of | |||
topological information and peer segments (Peer SIDs) is done | topological information and peer segments (Peer SIDs) is done | |||
through [I-D.ietf-idr-bgpls-segment-routing-epe]. | through [BGPLS-SR-EPE]. | |||
If a prefix segment is to be included in an MPLS label stack, | If a prefix segment is to be included in an MPLS label stack, | |||
e.g., for traffic engineering purposes, the knowledge of the SRGB | e.g., for traffic-engineering purposes, knowledge of the prefix | |||
of the originator of the prefix is required in order to compute | originator's SRGB is required in order to compute the local label | |||
the local label used by the originator. | used by the originator. | |||
This document assumes that BGP-LS is the preferred method for | ||||
collecting both peer segments (Peer SIDs) and SRGB information | ||||
through [RFC7752], [I-D.ietf-idr-bgpls-segment-routing-epe], and | ||||
[I-D.ietf-idr-bgp-ls-segment-routing-ext]. However, as an | This document assumes that Border Gateway Protocol - Link State | |||
optional alternative for the advertisement of the local SRGB | (BGP-LS) is the preferred method for a collecting both peer | |||
without the topology nor the peer SIDs, hence without | segments (Peer SIDs) and SRGB information through [RFC7752], | |||
applicability for TE, the Originator SRGB TLV of the BGP Prefix- | [BGPLS-SR-EPE], and [BGPLS-SR-EXT]. However, as an optional | |||
SID attribute is specified in Section 3.2 of this document. | alternative for the advertisement of the local SRGB without the | |||
topology or the peer SIDs and, therefore, without applicability | ||||
for TE, the Originator SRGB TLV of the BGP Prefix-SID attribute is | ||||
specified in Section 3.2 of this document. | ||||
A BGP speaker will derive its local MPLS label L from the label | A BGP speaker will derive its local MPLS label L from the label | |||
index L_I and its local SRGB as described in | index L_I and its local SRGB as described in [RFC8660]. The BGP | |||
[I-D.ietf-spring-segment-routing-mpls]. The BGP speaker then | speaker then programs the MPLS label L in its MPLS data plane as | |||
programs the MPLS label L in its MPLS dataplane as its incoming/ | its incoming/local label for the prefix. See Section 4.1 for more | |||
local label for the prefix. See Section 4.1 for more details. | details. | |||
The outgoing label for the prefix is found in the Network Layer | The outgoing label for the prefix is found in the Network Layer | |||
Reachability Information (NLRI) of the Multiprotocol BGP IPv4/IPv6 | Reachability Information (NLRI) of the Multiprotocol BGP IPv4/IPv6 | |||
Labeled Unicast prefix advertisement as defined in [RFC8277]. The | Labeled Unicast prefix advertisement as defined in [RFC8277]. The | |||
label index L_I is only used as a hint to derive the local/ | label index L_I is only used as a hint to derive the local/ | |||
incoming label. | incoming label. | |||
Section 3.1 of this document specifies the Label-Index TLV of the | Section 3.1 of this document specifies the Label-Index TLV of the | |||
BGP Prefix-SID attribute; this TLV can be used to advertise the | BGP Prefix-SID attribute; this TLV can be used to advertise the | |||
label index for a given prefix. | label index for a given prefix. | |||
skipping to change at page 5, line 38 ¶ | skipping to change at line 213 ¶ | |||
The BGP Prefix-SID attribute is an optional, transitive BGP path | The BGP Prefix-SID attribute is an optional, transitive BGP path | |||
attribute. The attribute type code 40 has been assigned by IANA (see | attribute. The attribute type code 40 has been assigned by IANA (see | |||
Section 7). | Section 7). | |||
The BGP Prefix-SID attribute is defined here to be a set of elements | The BGP Prefix-SID attribute is defined here to be a set of elements | |||
encoded as "Type/Length/Value" tuples (i.e., a set of TLVs). All BGP | encoded as "Type/Length/Value" tuples (i.e., a set of TLVs). All BGP | |||
Prefix-SID attribute TLVs will start with a 1-octet type and a | Prefix-SID attribute TLVs will start with a 1-octet type and a | |||
2-octet length. The following TLVs are defined in this document: | 2-octet length. The following TLVs are defined in this document: | |||
o Label-Index TLV | * Label-Index TLV | |||
o Originator SRGB TLV | * Originator SRGB TLV | |||
The Label-Index and Originator SRGB TLVs are used only when SR is | The Label-Index and Originator SRGB TLVs are used only when SR is | |||
applied to the MPLS dataplane. | applied to the MPLS data plane. | |||
For future extensibility, unknown TLVs MUST be ignored and propagated | For future extensibility, unknown TLVs MUST be ignored and propagated | |||
unmodified. | unmodified. | |||
3.1. Label-Index TLV | 3.1. Label-Index TLV | |||
The Label-Index TLV MUST be present in the BGP Prefix-SID attribute | The Label-Index TLV MUST be present in the BGP Prefix-SID attribute | |||
attached to IPv4/IPv6 Labeled Unicast prefixes ([RFC8277]). It MUST | attached to IPv4/IPv6 Labeled Unicast prefixes ([RFC8277]). It MUST | |||
be ignored when received for other BGP AFI/SAFI combinations. The | be ignored when received for other BGP AFI/SAFI combinations. The | |||
Label-Index TLV has the following format: | Label-Index TLV has the following format: | |||
skipping to change at page 6, line 19 ¶ | skipping to change at line 242 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Length | RESERVED | | | Type | Length | RESERVED | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Flags | Label Index | | | Flags | Label Index | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Label Index | | | Label Index | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
where: | where: | |||
o Type is 1. | Type: 1 | |||
o Length: is 7, the total length in octets of the value portion of | Length: 7, the total length in octets of the value portion of the | |||
the TLV. | TLV. | |||
o RESERVED: 8-bit field. MUST be clear on transmission and MUST be | RESERVED: 8-bit field. It MUST be clear on transmission and MUST | |||
ignored on reception. | be ignored on reception. | |||
o Flags: 16 bits of flags. None are defined by this document. The | Flags: 16 bits of flags. None are defined by this document. The | |||
flag field MUST be clear on transmission and MUST be ignored on | Flags field MUST be clear on transmission and MUST be ignored | |||
reception. | on reception. | |||
o Label Index: 32-bit value representing the index value in the SRGB | Label Index: 32-bit value representing the index value in the | |||
space. | SRGB space. | |||
3.2. Originator SRGB TLV | 3.2. Originator SRGB TLV | |||
The Originator SRGB TLV is an optional TLV and has the following | The Originator SRGB TLV is an optional TLV and has the following | |||
format: | format: | |||
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 | Length | Flags | | | Type | Length | Flags | | |||
skipping to change at page 7, line 27 ¶ | skipping to change at line 284 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SRGB n (6 octets) | | | SRGB n (6 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
where: | where: | |||
o Type is 3. | Type: 3 | |||
o Length is the total length in octets of the value portion of the | Length: The total length in octets of the value portion of the | |||
TLV: 2 + (non-zero multiple of 6). | TLV: 2 + (non-zero multiple of 6). | |||
o Flags: 16 bits of flags. None are defined in this document. | Flags: 16 bits of flags. None are defined in this document. The | |||
Flags MUST be clear on transmission and MUST be ignored on | Flags field MUST be clear on transmission and MUST be ignored | |||
reception. | on reception. | |||
o SRGB: 3 octets specifying the first label in the range followed by | SRGB: 3 octets specifying the first label in the range followed | |||
3 octets specifying the number of labels in the range. Note that | by 3 octets specifying the number of labels in the range. Note | |||
the SRGB field MAY appear multiple times. If the SRGB field | that the SRGB field MAY appear multiple times. If the SRGB | |||
appears multiple times, the SRGB consists of multiple ranges that | field appears multiple times, the SRGB consists of multiple | |||
are concatenated. | ranges that are concatenated. | |||
The Originator SRGB TLV contains the SRGB of the node originating the | The Originator SRGB TLV contains the SRGB of the node originating the | |||
prefix to which the BGP Prefix-SID is attached. The Originator SRGB | prefix to which the BGP Prefix-SID is attached. The Originator SRGB | |||
TLV MUST NOT be changed during the propagation of the BGP update. It | TLV MUST NOT be changed during the propagation of the BGP update. It | |||
is used to build segment routing policies when different SRGBs are | is used to build SR policies when different SRGBs are used in the | |||
used in the fabric, for example | fabric, for example, [RFC8670]. | |||
([I-D.ietf-spring-segment-routing-msdc]). | ||||
Examples of how the receiving routers concatenate the ranges and | Examples of how the receiving routers concatenate the ranges and | |||
build their neighbor's Segment Routing Global Block (SRGB) are | build their neighbor's Segment Routing Global Block (SRGB) are | |||
included in [I-D.ietf-spring-segment-routing-mpls]). | included in [RFC8660]. | |||
The Originator SRGB TLV may only appear in a BGP Prefix-SID attribute | The Originator SRGB TLV may only appear in a BGP Prefix-SID attribute | |||
attached to IPv4/IPv6 Labeled Unicast prefixes ([RFC8277]). It MUST | attached to IPv4/IPv6 Labeled Unicast prefixes ([RFC8277]). It MUST | |||
be ignored when received for other BGP AFI/SAFI combinations. Since | be ignored when received for other BGP AFI/SAFI combinations. Since | |||
the Label-Index TLV is required for IPv4/IPv6 prefix applicability, | the Label-Index TLV is required for IPv4/IPv6 prefix applicability, | |||
the Originator SRGB TLV will be ignored if it is not specified | the Originator SRGB TLV will be ignored if it is not specified in a | |||
consistent with Section 6. | manner consistent with Section 6. | |||
If a BGP speaker receives a node's SRGB as an attribute of the BGP-LS | If a BGP speaker receives a node's SRGB as an attribute of the BGP-LS | |||
Node NLRI and the BGP speaker also receives the same node's SRGB in a | Node NLRI and the BGP speaker also receives the same node's SRGB in a | |||
BGP Prefix-SID attribute, then the received values should be the | BGP Prefix-SID attribute, then the received values should be the | |||
same. If the values are different, the values advertised in the BGP- | same. If the values are different, the values advertised in the BGP- | |||
LS NLRI SHOULD be preferred and an error should be logged. | LS NLRI SHOULD be preferred, and an error should be logged. | |||
4. Receiving BGP Prefix-SID Attribute | 4. Receiving BGP Prefix-SID Attribute | |||
A BGP speaker receiving a BGP Prefix-SID attribute from an External | A BGP speaker receiving a BGP Prefix-SID attribute from an External | |||
BGP (EBGP) neighbor residing outside the boundaries of the SR domain | BGP (EBGP) neighbor residing outside the boundaries of the SR domain | |||
MUST discard the attribute unless it is configured to accept the | MUST discard the attribute unless it is configured to accept the | |||
attribute from the EBGP neighbor. A BGP speaker SHOULD log an error | attribute from the EBGP neighbor. A BGP speaker SHOULD log an error | |||
for further analysis when discarding an attribute. | for further analysis when discarding an attribute. | |||
4.1. MPLS Dataplane: Labeled Unicast | 4.1. MPLS Data Plane: Labeled Unicast | |||
A BGP session supporting the Multiprotocol BGP labeled IPv4 or IPv6 | A BGP session supporting the Multiprotocol BGP Labeled IPv4 or IPv6 | |||
Unicast ([RFC8277]) AFI/SAFI is required. | Unicast ([RFC8277]) AFI/SAFI is required. | |||
When the BGP Prefix-SID attribute is attached to a BGP labeled IPv4 | When the BGP Prefix-SID attribute is attached to a BGP Labeled IPv4 | |||
or IPv6 Unicast [RFC8277] AFI/SAFI, it MUST contain the Label-Index | or IPv6 Unicast [RFC8277] AFI/SAFI, it MUST contain the Label-Index | |||
TLV and MAY contain the Originator SRGB TLV. A BGP Prefix-SID | TLV and MAY contain the Originator SRGB TLV. A BGP Prefix-SID | |||
attribute received without a Label-Index TLV MUST be considered as | attribute received without a Label-Index TLV MUST be considered to be | |||
"invalid" by the receiving speaker. | "invalid" by the receiving speaker. | |||
The label index provides guidance to the receiving BGP speaker as to | The label index provides guidance to the receiving BGP speaker as to | |||
the incoming label that SHOULD be allocated to the prefix. | the incoming label that SHOULD be allocated to the prefix. | |||
A BGP speaker may be locally configured with an SRGB=[SRGB_Start, | A BGP speaker may be locally configured with an SRGB=[SRGB_Start, | |||
SRGB_End]. The preferred method for deriving the SRGB is a matter of | SRGB_End]. The preferred method for deriving the SRGB is a matter of | |||
local node configuration. | local node configuration. | |||
The mechanisms through which a given label index value is assigned to | The mechanisms through which a given label-index value is assigned to | |||
a given prefix are outside the scope of this document. | a given prefix are outside the scope of this document. | |||
Given a label index L_I, we refer to (L = L_I + SRGB_Start) as the | Given a label index L_I, we refer to (L = L_I + SRGB_Start) as the | |||
derived label. A BGP Prefix-SID attribute is designated | derived label. A BGP Prefix-SID attribute is designated | |||
"conflicting" for a speaker M if the derived label value L lies | "conflicting" for a speaker M if the derived label value L lies | |||
outside the SRGB configured on M. Otherwise the Label-Index TLV is | outside the SRGB configured on M. Otherwise, the Label-Index TLV is | |||
designated "acceptable" to speaker M. | designated "acceptable" to speaker M. | |||
If multiple different prefixes are received with the same label | If multiple different prefixes are received with the same label | |||
index, all of the different prefixes MUST have their BGP Prefix-SID | index, all of the different prefixes MUST have their BGP Prefix-SID | |||
attribute considered as "conflicting". | attribute considered to be "conflicting". | |||
If multiple valid paths for the same prefix are received from | If multiple valid paths for the same prefix are received from | |||
multiple BGP speakers or, in the case of [RFC7911], from the same BGP | multiple BGP speakers or, in the case of [RFC7911], from the same BGP | |||
speaker, and the BGP Prefix-SID attributes do not contain the same | speaker, and the BGP Prefix-SID attributes do not contain the same | |||
label index, then the label index from the best path BGP Prefix-SID | label index, then the label index from the best path BGP Prefix-SID | |||
attribute SHOULD be chosen with a notable exception being when | attribute SHOULD be chosen with a notable exception being when | |||
[RFC5004] is being used to dampen route changes. | [RFC5004] is being used to dampen route changes. | |||
When a BGP speaker receives a path from a neighbor with an | When a BGP speaker receives a path from a neighbor with an | |||
"acceptable" BGP Prefix-SID attribute and that path is selected as | "acceptable" BGP Prefix-SID attribute and that path is selected as | |||
the best path, it SHOULD program the derived label as the label for | the best path, it SHOULD program the derived label as the label for | |||
the prefix in its local MPLS dataplane. | the prefix in its local MPLS data plane. | |||
When a BGP speaker receives a path from a neighbor with an "invalid" | When a BGP speaker receives a path from a neighbor with an "invalid" | |||
or "conflicting" BGP Prefix-SID attribute or when a BGP speaker | or "conflicting" BGP Prefix-SID attribute, or when a BGP speaker | |||
receives a path from a neighbor with a BGP Prefix-SID attribute but | receives a path from a neighbor with a BGP Prefix-SID attribute but | |||
is unable to process it (e.g., local policy disables the | is unable to process it (e.g., local policy disables the | |||
functionality), it MUST ignore the BGP Prefix-SID attribute. For the | functionality), it MUST ignore the BGP Prefix-SID attribute. For the | |||
purposes of label allocation, a BGP speaker MUST assign a local (also | purposes of label allocation, a BGP speaker MUST assign a local (also | |||
called dynamic) label (non-SRGB) for such a prefix as per classic | called dynamic) label (non-SRGB) for such a prefix as per classic | |||
Multiprotocol BGP IPv4/IPv6 Labeled Unicast ([RFC8277]) operation. | Multiprotocol BGP IPv4/IPv6 Labeled Unicast ([RFC8277]) operation. | |||
In the case of an "invalid" BGP Prefix-SID attribute, a BGP speaker | In the case of an "invalid" BGP Prefix-SID attribute, a BGP speaker | |||
MUST follow the error handling rules specified in Section 6. A BGP | MUST follow the error-handling rules specified in Section 6. A BGP | |||
speaker SHOULD log an error for further analysis. In the case of a | speaker SHOULD log an error for further analysis. In the case of a | |||
"conflicting" BGP Prefix-SID attribute, a BGP speaker SHOULD NOT | "conflicting" BGP Prefix-SID attribute, a BGP speaker SHOULD NOT | |||
treat it as error and SHOULD propagate the attribute unchanged. A | treat it as an error and SHOULD propagate the attribute unchanged. A | |||
BGP Speaker SHOULD log a warning for further analysis, i.e., in the | BGP speaker SHOULD log a warning for further analysis, i.e., in the | |||
case the conflict is not due to a label index transition. | case the conflict is not due to a label-index transition. | |||
When a BGP Prefix-SID attribute changes and transitions from | When a BGP Prefix-SID attribute changes and transitions from | |||
"conflicting" to "acceptable", the BGP Prefix-SID attributes for | "conflicting" to "acceptable", the BGP Prefix-SID attributes for | |||
other prefixes may also transition to "acceptable" as well. | other prefixes may also transition to "acceptable" as well. | |||
Implementations SHOULD assure all impacted prefixes revert to using | Implementations SHOULD ensure all impacted prefixes revert to using | |||
the label indices corresponding to these newly "acceptable" BGP | the label indices corresponding to these newly "acceptable" BGP | |||
Prefix-SID attributes. | Prefix-SID attributes. | |||
The outgoing label is always programmed as per classic Multiprotocol | The outgoing label is always programmed as per classic Multiprotocol | |||
BGP IPv4/IPv6 Labeled Unicast ([RFC8277]) operation. Specifically, a | BGP IPv4/IPv6 Labeled Unicast ([RFC8277]) operation. Specifically, a | |||
BGP speaker receiving a prefix with a BGP Prefix-SID attribute and a | BGP speaker receiving a prefix with a BGP Prefix-SID attribute and a | |||
label NLRI field of Implicit NULL [RFC3032] from a neighbor MUST | label NLRI field of Implicit NULL [RFC3032] from a neighbor MUST | |||
adhere to standard behavior and program its MPLS dataplane to pop the | adhere to standard behavior and program its MPLS data plane to pop | |||
top label when forwarding traffic to the prefix. The label NLRI | the top label when forwarding traffic to the prefix. The label NLRI | |||
defines the outbound label that MUST be used by the receiving node. | defines the outbound label that MUST be used by the receiving node. | |||
5. Advertising BGP Prefix-SID Attribute | 5. Advertising BGP Prefix-SID Attribute | |||
The BGP Prefix-SID attribute MAY be attached to BGP IPv4/IPv6 Label | The BGP Prefix-SID attribute MAY be attached to BGP IPv4/IPv6 Labeled | |||
Unicast prefixes [RFC8277]. In order to prevent distribution of the | Unicast prefixes [RFC8277]. In order to prevent distribution of the | |||
BGP Prefix-SID attribute beyond its intended scope of applicability, | BGP Prefix-SID attribute beyond its intended scope of applicability, | |||
attribute filtering SHOULD be deployed to remove the BGP Prefix-SID | attribute filtering SHOULD be deployed to remove the BGP Prefix-SID | |||
attribute at the administrative boundary of the segment routing | attribute at the administrative boundary of the SR domain. | |||
domain. | ||||
A BGP speaker that advertises a path received from one of its | A BGP speaker that advertises a path received from one of its | |||
neighbors SHOULD advertise the BGP Prefix-SID received with the path | neighbors SHOULD advertise the BGP Prefix-SID received with the path | |||
without modification, as long as the BGP Prefix-SID was acceptable. | without modification as long as the BGP Prefix-SID was acceptable. | |||
If the path did not come with a BGP Prefix-SID attribute, the speaker | If the path did not come with a BGP Prefix-SID attribute, the speaker | |||
MAY attach a BGP Prefix-SID to the path if configured to do so. The | MAY attach a BGP Prefix-SID to the path if configured to do so. The | |||
content of the TLVs present in the BGP Prefix-SID is determined by | content of the TLVs present in the BGP Prefix-SID is determined by | |||
the configuration. | the configuration. | |||
5.1. MPLS Dataplane: Labeled Unicast | 5.1. MPLS Data Plane: Labeled Unicast | |||
A BGP speaker that originates a prefix attaches the BGP Prefix-SID | A BGP speaker that originates a prefix attaches the BGP Prefix-SID | |||
attribute when it advertises the prefix to its neighbors via | attribute when it advertises the prefix to its neighbors via | |||
Multiprotocol BGP IPv4/IPv6 Labeled Unicast ([RFC8277]). The value | Multiprotocol BGP IPv4/IPv6 Labeled Unicast ([RFC8277]). The value | |||
of the label index in the Label-Index TLV is determined by | of the label index in the Label-Index TLV is determined by | |||
configuration. | configuration. | |||
A BGP speaker that originates a BGP Prefix-SID attribute MAY | A BGP speaker that originates a BGP Prefix-SID attribute MAY | |||
optionally announce the Originator SRGB TLV along with the mandatory | optionally announce the Originator SRGB TLV along with the mandatory | |||
Label-Index TLV. The content of the Originator SRGB TLV is | Label-Index TLV. The content of the Originator SRGB TLV is | |||
determined by configuration. | determined by configuration. | |||
Since the label index value must be unique within an SR domain, by | Since the label-index value must be unique within an SR domain, by | |||
default an implementation SHOULD NOT advertise the BGP Prefix-SID | default an implementation SHOULD NOT advertise the BGP Prefix-SID | |||
attribute outside an Autonomous System unless it is explicitly | attribute outside an AS unless it is explicitly configured to do so. | |||
configured to do so. | ||||
In all cases, the label field of the advertised NLRI ([RFC8277], | In all cases, the Label field of the advertised NLRI ([RFC8277] | |||
[RFC4364]) MUST be set to the local/incoming label programmed in the | [RFC4364]) MUST be set to the local/incoming label programmed in the | |||
MPLS dataplane for the given advertised prefix. If the prefix is | MPLS data plane for the given advertised prefix. If the prefix is | |||
associated with one of the BGP speaker's interfaces, this is the | associated with one of the BGP speaker's interfaces, this is the | |||
usual MPLS label (such as the Implicit or Explicit NULL label | usual MPLS label (such as the Implicit or Explicit NULL label | |||
[RFC3032]). | [RFC3032]). | |||
6. Error Handling of BGP Prefix-SID Attribute | 6. Error Handling of BGP Prefix-SID Attribute | |||
When a BGP Speaker receives a BGP Update message containing a | When a BGP speaker receives a BGP UPDATE message containing a | |||
malformed or invalid BGP Prefix-SID attribute attached to a IPv4/IPv6 | malformed or invalid BGP Prefix-SID attribute attached to an IPv4/ | |||
Labeled Unicast prefix [RFC8277], it MUST ignore the received BGP | IPv6 Labeled Unicast prefix ([RFC8277]), it MUST ignore the received | |||
Prefix-SID attributes and not advertise it to other BGP peers. In | BGP Prefix-SID attribute and not advertise it to other BGP peers. In | |||
this context, a malformed BGP Prefix-SID attribute is one that cannot | this context, a malformed BGP Prefix-SID attribute is one that cannot | |||
be parsed due to not meeting the minimum attribute length | be parsed due to not meeting the minimum attribute length | |||
requirement, contains a TLV length that doesn't conform to the length | requirement, containing a TLV length that doesn't conform to the | |||
constraints for the TLV, or a contains TLV length that would extend | length constraints for the TLV, or containing a TLV length that would | |||
beyond the end of the attribute (as defined by the attribute length). | extend beyond the end of the attribute (as defined by the attribute | |||
This is equivalent to the "Attribute discard" action specified in | length). This is equivalent to the "Attribute discard" action | |||
[RFC7606]. When discarding an attribute, a BGP speaker SHOULD log an | specified in [RFC7606]. When discarding an attribute, a BGP speaker | |||
error for further analysis. | SHOULD log an error for further analysis. | |||
As per with [RFC7606], if the BGP Prefix-SID attribute appears more | As per [RFC7606], if the BGP Prefix-SID attribute appears more than | |||
than once in an UPDATE message, then all the occurrences of the | once in an UPDATE message, all the occurrences of the attribute other | |||
attribute other than the first one SHALL be discarded and the UPDATE | than the first one SHALL be discarded and the UPDATE message will | |||
message will continue to be processed. Similarly, if a recognized | continue to be processed. Similarly, if a recognized TLV appears | |||
TLV appears more than once in an BGP Prefix-SID attribute while the | more than once in a BGP Prefix-SID attribute while the specification | |||
specification only allows for a single occurrence, then all the | only allows for a single occurrence, then all the occurrences of the | |||
occurrences of the TLV other than the first one SHALL be discarded | TLV other than the first one SHALL be discarded and the Prefix-SID | |||
and the Prefix-SID attribute will continue to be processed. | attribute will continue to be processed. | |||
For future extensibility, unknown TLVs MUST be ignored and propagated | For future extensibility, unknown TLVs MUST be ignored and propagated | |||
unmodified. | unmodified. | |||
7. IANA Considerations | 7. IANA Considerations | |||
This document defines a BGP path attribute known as the BGP Prefix- | This document defines a BGP path attribute known as the BGP Prefix- | |||
SID attribute. This document requests IANA to assign an attribute | SID attribute. IANA has assigned attribute code type 40 to the BGP | |||
code type (suggested value: 40) to the BGP Prefix-SID attribute from | Prefix-SID attribute from the "BGP Path Attributes" registry. | |||
the BGP Path Attributes registry. | ||||
IANA temporarily assigned the following: | This document defines two TLVs for the BGP Prefix-SID attribute. | |||
These TLVs have been registered with IANA. IANA has created a | ||||
registry for BGP Prefix-SID Attribute TLVs as follows: | ||||
40 BGP Prefix-SID (TEMPORARY - registered 2015-09-30, expires | Under the "Border Gateway Protocol (BGP) Parameters" registry, the | |||
2018-09-30) [draft-ietf-idr-bgp-prefix-sid] | new registry titled "BGP Prefix-SID TLV Types" has been created and | |||
points to this document as the reference. | ||||
This document defines two TLVs for the BGP Prefix-SID attribute. | Registration Procedure(s): | |||
These TLVs need to be registered with IANA. We request IANA to | ||||
create a registry for BGP Prefix-SID Attribute TLVs as follows: | ||||
Under "Border Gateway Protocol (BGP) Parameters" registry, "BGP | Values 1-254, Expert Review as defined in [RFC8126] | |||
Prefix-SID TLV Types" Reference: draft-ietf-idr-bgp-prefix-sid | Values 0 and 255, Reserved | |||
Registration Procedure(s): Values 1-254 - Expert Review as defined in | ||||
[RFC8126], Value 0 and 255 reserved | ||||
Value Type Reference | ||||
0 Reserved this document | ||||
1 Label-Index this document | ||||
2 Deprecated this document | ||||
3 Originator SRGB this document | ||||
4-254 Unassigned | ||||
255 Reserved this document | ||||
The value 2 previously corresponded to the IPv6 SID TLV which was | +-------+-----------------+---------------+ | |||
specified in previous versions of this document. It was removed and | | Value | Type | Reference | | |||
usage of the BGP Prefix-SID for Segment Routing over the IPv6 | +=======+=================+===============+ | |||
dataplane [I-D.ietf-spring-segment-routing] has been deferred to | | 0 | Reserved | This document | | |||
future specifications. | +-------+-----------------+---------------+ | |||
| 1 | Label-Index | This document | | ||||
+-------+-----------------+---------------+ | ||||
| 2 | Deprecated | This document | | ||||
+-------+-----------------+---------------+ | ||||
| 3 | Originator SRGB | This document | | ||||
+-------+-----------------+---------------+ | ||||
| 4-254 | Unassigned | | | ||||
+-------+-----------------+---------------+ | ||||
| 255 | Reserved | This document | | ||||
+-------+-----------------+---------------+ | ||||
This document also requests creation of the "BGP Prefix-SID Label- | Table 1: BGP Prefix-SID TLV Types | |||
Index TLV Flags" registry under the "Border Gateway Protocol (BGP) | ||||
Parameters" registry, Reference: draft-ietf-idr-bgp-prefix-sid. | ||||
Initially, this 16-bit flags registry will be empty. The | ||||
registration policy for flag bits will Expert Review [RFC8126] | ||||
consistent with the BGP Prefix-SID TLV Types registry. | ||||
Finally, this document requests creation of the "BGP Prefix-SID | The value 2 previously corresponded to the IPv6 SID TLV, which was | |||
Originator SRGB TLV Flags" registry under the "Border Gateway | specified in previous versions of this document. It was removed, and | |||
Protocol (BGP) Parameters" registry, Reference: draft-ietf-idr-bgp- | use of the BGP Prefix-SID for Segment Routing over the IPv6 data | |||
prefix-sid. Initially, this 16-bit flags registry will be empty. | plane [RFC8402] has been deferred to future specifications. | |||
The registration policy for flag bits will Expert Review [RFC8126] | ||||
consistent with the BGP Prefix-SID TLV Types registry. | IANA has also created the "BGP Prefix-SID Label-Index TLV Flags" | |||
registry under the "Border Gateway Protocol (BGP) Parameters" | ||||
registry, with a reference to this document. Initially, this 16-bit | ||||
flags registry is empty. The registration policy for flag bits is | ||||
Expert Review [RFC8126], consistent with the "BGP Prefix-SID TLV | ||||
Types" registry. | ||||
Finally, IANA has created the "BGP Prefix-SID Originator SRGB TLV | ||||
Flags" registry under the "Border Gateway Protocol (BGP) Parameters" | ||||
registry, with a reference to this document. Initially, this 16-bit | ||||
flags registry is empty. The registration policy for flag bits is | ||||
Expert Review [RFC8126] consistent with the BGP Prefix-SID TLV Types | ||||
registry. | ||||
The designated experts must be good and faithful stewards of the | The designated experts must be good and faithful stewards of the | |||
above registries, assuring that each request is legitimate and | above registries, ensuring that each request is legitimate and | |||
corresponds to a viable use case. Given the limited number of bits | corresponds to a viable use case. Given the limited number of bits | |||
in the flags registries and the applicability to a single TLV, | in the flags registries and the applicability to a single TLV, | |||
additional scrutiny should be afforded to flag bit allocation | additional scrutiny should be afforded to requests for flag-bit | |||
requests. In general, no single use case should require more than | allocation. In general, no single use case should require more than | |||
one flag bit and, should the use case require more, alternate | one flag bit and, should the use case require more, alternate | |||
encodings using new TLVs should be considered. | encodings using new TLVs should be considered. | |||
8. Manageability Considerations | 8. Manageability Considerations | |||
This document defines a BGP attribute to address use cases such as | This document defines a BGP attribute to address use cases such as | |||
the one described in [I-D.ietf-spring-segment-routing-msdc]. It is | the one described in [RFC8670]. It is assumed that advertisement of | |||
assumed that advertisement of the BGP Prefix-SID attribute is | the BGP Prefix-SID attribute is controlled by the operator in order | |||
controlled by the operator in order to: | to: | |||
o Prevent undesired origination/advertisement of the BGP Prefix-SID | * Prevent undesired origination/advertisement of the BGP Prefix-SID | |||
attribute. By default, a BGP Prefix-SID attribute SHOULD NOT be | attribute. By default, a BGP Prefix-SID attribute SHOULD NOT be | |||
attached to a prefix and advertised. Hence, BGP Prefix-SID | attached to a prefix and advertised. Hence, BGP Prefix-SID | |||
advertisement SHOULD require explicit enablement. | Advertisement SHOULD require explicit enablement. | |||
o Prevent any undesired propagation of the BGP Prefix-SID attribute. | * Prevent any undesired propagation of the BGP Prefix-SID attribute. | |||
By default, the BGP Prefix-SID is not advertised outside the | By default, the BGP Prefix-SID is not advertised outside the | |||
boundary of a single SR/administrative domain which may include | boundary of a single SR/administrative domain that may include one | |||
one or more ASes. The propagation to other ASes MUST be | or more ASes. The propagation to other ASes MUST be explicitly | |||
explicitly configured. | configured. | |||
The deployment model described in | The deployment model described in [RFC8670] assumes multiple ASes | |||
[I-D.ietf-spring-segment-routing-msdc] assumes multiple Autonomous | under a common administrative domain. For this use case, the BGP | |||
Systems (ASes) under a common administrative domain. For this use | Prefix-SID Advertisement is applicable to the inter-AS context, i.e., | |||
case, the BGP Prefix-SID advertisement is applicable to the inter-AS | EBGP, while it is confined to a single administrative domain. | |||
context, i.e., EBGP, while it is confined to a single administrative | ||||
domain. | ||||
9. Security Considerations | 9. Security Considerations | |||
This document introduces a BGP attribute (BGP Prefix-SID) which | This document introduces a BGP attribute (BGP Prefix-SID), which | |||
inherits the security considerations expressed in: [RFC4271], | inherits the security considerations expressed in: [RFC4271], | |||
[RFC8277], and [I-D.ietf-spring-segment-routing]. | [RFC8277], and [RFC8402]. | |||
When advertised using BGPsec as described in [RFC8205], the BGP | When advertised using BGPsec as described in [RFC8205], the BGP | |||
Prefix-SID attribute doesn't impose any unique security | Prefix-SID attribute doesn't impose any unique security | |||
considerations. It should be noted that the BGP Prefix-SID attribute | considerations. It should be noted that the BGP Prefix-SID attribute | |||
is not protected by the BGPsec signatures. | is not protected by the BGPsec signatures. | |||
It should be noted that, as described in Section 8, this document | It should be noted that, as described in Section 8, this document | |||
refers to a deployment model where all nodes are under the single | refers to a deployment model where all nodes are under the single | |||
administrative domain. In this context, we assume that the operator | administrative domain. In this context, we assume that the operator | |||
doesn't want to leak any information related to internal prefixes and | doesn't want to leak any information related to internal prefixes and | |||
topology outside of the administrative domain. The internal | topology outside of the administrative domain. The internal | |||
information includes the BGP Prefix-SID. In order to prevent such | information includes the BGP Prefix-SID. In order to prevent such | |||
leaking, the common BGP mechanisms (filters) are applied at the | leaking, the common BGP mechanisms (filters) are applied at the | |||
boundary of the SR/administrative domain. Local BGP attribute | boundary of the SR/administrative domain. Local BGP-attribute- | |||
filtering policies and mechanisms are not standardized and, | filtering policies and mechanisms are not standardized and, | |||
consequently, beyond the scope of this document. | consequently, are beyond the scope of this document. | |||
To prevent a Denial-of-Service (DoS) or Distributed-Denial-of-Service | To prevent a Denial-of-Service (DoS) or Distributed-Denial-of-Service | |||
(DDoS) attack due to excessive BGP updates with an invalid or | (DDoS) attack due to excessive BGP updates with an invalid or | |||
conflicting BGP Prefix-SID attribute, error log message rate-limiting | conflicting BGP Prefix-SID attribute, error log message rate limiting | |||
as well as suppression of duplicate error log messages SHOULD be | as well as suppression of duplicate error log messages SHOULD be | |||
deployed. | deployed. | |||
Since BGP-LS is the preferred method for advertising SRGB | Since BGP-LS is the preferred method for advertising SRGB | |||
information, the BGP speaker SHOULD log an error if a BGP Prefix-SID | information, the BGP speaker SHOULD log an error if a BGP Prefix-SID | |||
attribute is received with SRGB information different from that | attribute is received with SRGB information different from that | |||
received as an attribute of the same node's BGP-LS Node NLRI. | received as an attribute of the same node's BGP-LS Node NLRI. | |||
10. Contributors | 10. References | |||
Keyur Patel | ||||
Arrcus, Inc. | ||||
US | ||||
Email: Keyur@arrcus.com | ||||
Saikat Ray | ||||
Unaffiliated | ||||
US | ||||
Email: raysaikat@gmail.com | ||||
11. Acknowledgements | ||||
The authors would like to thank Satya Mohanty for his contribution to | ||||
this document. | ||||
The authors would like to thank Alvaro Retana for substantive | ||||
comments as part of the Routing AD review. | ||||
The authors would like to thank Bruno Decraene for substantive | ||||
comments and suggested text as part of the Routing Directorate | ||||
review. | ||||
The authors would like to thank Shyam Sethuram for comments and | ||||
discussion of TLV processing and validation. | ||||
The authors would like to thank Robert Raszuk for comments and | ||||
suggestions regarding the MPLS data plane behavior. | ||||
The authors would like to thank Krishna Deevi, Juan Alcaide, Howard | ||||
Yang, and Jakob Heitz for discussions on conflicting BGP Prefix-SID | ||||
label indices and BGP add paths. | ||||
The authors would like to thank Peter Yee, Tony Przygienda, Mirja | ||||
Kuehlewind, Alexey Melnikov, Eric Rescorla, Suresh Krishnan, Warren | ||||
Kumari, Ben Campbell Sue Hares, and Martin Vigoureux for IDR Working | ||||
Group last call, IETF Last Call, directorate, and IESG reviews. | ||||
12. References | ||||
12.1. Normative References | ||||
[I-D.ietf-spring-segment-routing] | ||||
Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., | ||||
Litkowski, S., and R. Shakir, "Segment Routing | ||||
Architecture", draft-ietf-spring-segment-routing-15 (work | ||||
in progress), January 2018. | ||||
[I-D.ietf-spring-segment-routing-mpls] | 10.1. Normative References | |||
Bashandy, A., Filsfils, C., Previdi, S., Decraene, B., | ||||
Litkowski, S., and R. Shakir, "Segment Routing with MPLS | ||||
data plane", draft-ietf-spring-segment-routing-mpls-14 | ||||
(work in progress), June 2018. | ||||
[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, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | |||
Border Gateway Protocol 4 (BGP-4)", RFC 4271, | Border Gateway Protocol 4 (BGP-4)", RFC 4271, | |||
DOI 10.17487/RFC4271, January 2006, <https://www.rfc- | DOI 10.17487/RFC4271, January 2006, | |||
editor.org/info/rfc4271>. | <https://www.rfc-editor.org/info/rfc4271>. | |||
[RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private | [RFC4364] Rosen, E. and Y. Rekhter, "BGP/MPLS IP Virtual Private | |||
Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February | Networks (VPNs)", RFC 4364, DOI 10.17487/RFC4364, February | |||
2006, <https://www.rfc-editor.org/info/rfc4364>. | 2006, <https://www.rfc-editor.org/info/rfc4364>. | |||
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, | [RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, | |||
"Multiprotocol Extensions for BGP-4", RFC 4760, | "Multiprotocol Extensions for BGP-4", RFC 4760, | |||
DOI 10.17487/RFC4760, January 2007, <https://www.rfc- | DOI 10.17487/RFC4760, January 2007, | |||
editor.org/info/rfc4760>. | <https://www.rfc-editor.org/info/rfc4760>. | |||
[RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. | [RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. | |||
Patel, "Revised Error Handling for BGP UPDATE Messages", | Patel, "Revised Error Handling for BGP UPDATE Messages", | |||
RFC 7606, DOI 10.17487/RFC7606, August 2015, | RFC 7606, DOI 10.17487/RFC7606, August 2015, | |||
<https://www.rfc-editor.org/info/rfc7606>. | <https://www.rfc-editor.org/info/rfc7606>. | |||
[RFC7911] Walton, D., Retana, A., Chen, E., and J. Scudder, | [RFC7911] Walton, D., Retana, A., Chen, E., and J. Scudder, | |||
"Advertisement of Multiple Paths in BGP", RFC 7911, | "Advertisement of Multiple Paths in BGP", RFC 7911, | |||
DOI 10.17487/RFC7911, July 2016, <https://www.rfc- | DOI 10.17487/RFC7911, July 2016, | |||
editor.org/info/rfc7911>. | <https://www.rfc-editor.org/info/rfc7911>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8205] Lepinski, M., Ed. and K. Sriram, Ed., "BGPsec Protocol | [RFC8205] Lepinski, M., Ed. and K. Sriram, Ed., "BGPsec Protocol | |||
Specification", RFC 8205, DOI 10.17487/RFC8205, September | Specification", RFC 8205, DOI 10.17487/RFC8205, September | |||
2017, <https://www.rfc-editor.org/info/rfc8205>. | 2017, <https://www.rfc-editor.org/info/rfc8205>. | |||
[RFC8277] Rosen, E., "Using BGP to Bind MPLS Labels to Address | [RFC8277] Rosen, E., "Using BGP to Bind MPLS Labels to Address | |||
Prefixes", RFC 8277, DOI 10.17487/RFC8277, October 2017, | Prefixes", RFC 8277, DOI 10.17487/RFC8277, October 2017, | |||
<https://www.rfc-editor.org/info/rfc8277>. | <https://www.rfc-editor.org/info/rfc8277>. | |||
12.2. Informative References | [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | |||
Decraene, B., Litkowski, S., and R. Shakir, "Segment | ||||
Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | ||||
July 2018, <https://www.rfc-editor.org/info/rfc8402>. | ||||
[I-D.ietf-6man-segment-routing-header] | [RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., | |||
Previdi, S., Filsfils, C., Leddy, J., Matsushima, S., and | Decraene, B., Litkowski, S., and R. Shakir, "Segment | |||
d. daniel.voyer@bell.ca, "IPv6 Segment Routing Header | Routing with the MPLS Data Plane", RFC 8660, | |||
(SRH)", draft-ietf-6man-segment-routing-header-13 (work in | DOI 10.17487/RFC8660, December 2019, | |||
progress), May 2018. | <https://www.rfc-editor.org/info/rfc8660>. | |||
[I-D.ietf-idr-bgp-ls-segment-routing-ext] | 10.2. Informative References | |||
[BGPLS-SR-EPE] | ||||
Previdi, S., Talaulikar, K., Filsfils, C., Patel, K., Ray, | ||||
S., and J. Dong, "BGP-LS extensions for Segment Routing | ||||
BGP Egress Peer Engineering", Work in Progress, Internet- | ||||
Draft, draft-ietf-idr-bgpls-segment-routing-epe-19, 16 May | ||||
2019, <https://tools.ietf.org/html/draft-ietf-idr-bgpls- | ||||
segment-routing-epe-19>. | ||||
[BGPLS-SR-EXT] | ||||
Previdi, S., Talaulikar, K., Filsfils, C., Gredler, H., | Previdi, S., Talaulikar, K., Filsfils, C., Gredler, H., | |||
and M. Chen, "BGP Link-State extensions for Segment | and M. Chen, "BGP Link-State extensions for Segment | |||
Routing", draft-ietf-idr-bgp-ls-segment-routing-ext-08 | Routing", Work in Progress, Internet-Draft, draft-ietf- | |||
(work in progress), May 2018. | idr-bgp-ls-segment-routing-ext-16, 27 June 2019, | |||
<https://tools.ietf.org/html/draft-ietf-idr-bgp-ls- | ||||
[I-D.ietf-idr-bgpls-segment-routing-epe] | segment-routing-ext-16>. | |||
Previdi, S., Filsfils, C., Patel, K., Ray, S., and J. | ||||
Dong, "BGP-LS extensions for Segment Routing BGP Egress | ||||
Peer Engineering", draft-ietf-idr-bgpls-segment-routing- | ||||
epe-15 (work in progress), March 2018. | ||||
[I-D.ietf-spring-segment-routing-msdc] | [IPv6-SRH] Filsfils, C., Dukes, D., Previdi, S., Leddy, J., | |||
Filsfils, C., Previdi, S., Dawra, G., Aries, E., and P. | Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | |||
Lapukhov, "BGP-Prefix Segment in large-scale data | (SRH)", Work in Progress, Internet-Draft, draft-ietf-6man- | |||
centers", draft-ietf-spring-segment-routing-msdc-09 (work | segment-routing-header-26, 22 October 2019, | |||
in progress), May 2018. | <https://tools.ietf.org/html/draft-ietf-6man-segment- | |||
routing-header-26>. | ||||
[RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | |||
Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | |||
Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | Encoding", RFC 3032, DOI 10.17487/RFC3032, January 2001, | |||
<https://www.rfc-editor.org/info/rfc3032>. | <https://www.rfc-editor.org/info/rfc3032>. | |||
[RFC5004] Chen, E. and S. Sangli, "Avoid BGP Best Path Transitions | [RFC5004] Chen, E. and S. Sangli, "Avoid BGP Best Path Transitions | |||
from One External to Another", RFC 5004, | from One External to Another", RFC 5004, | |||
DOI 10.17487/RFC5004, September 2007, <https://www.rfc- | DOI 10.17487/RFC5004, September 2007, | |||
editor.org/info/rfc5004>. | <https://www.rfc-editor.org/info/rfc5004>. | |||
[RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and | [RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and | |||
S. Ray, "North-Bound Distribution of Link-State and | S. Ray, "North-Bound Distribution of Link-State and | |||
Traffic Engineering (TE) Information Using BGP", RFC 7752, | Traffic Engineering (TE) Information Using BGP", RFC 7752, | |||
DOI 10.17487/RFC7752, March 2016, <https://www.rfc- | DOI 10.17487/RFC7752, March 2016, | |||
editor.org/info/rfc7752>. | <https://www.rfc-editor.org/info/rfc7752>. | |||
[RFC8670] Filsfils, C., Ed., Previdi, S., Dawra, G., Aries, E., and | ||||
P. Lapukhov, "BGP Prefix Segment in Large-Scale Data | ||||
Centers", RFC 8670, DOI 10.17487/RFC8670, December 2019, | ||||
<https://www.rfc-editor.org/info/rfc8670>. | ||||
Acknowledgements | ||||
The authors would like to thank Satya Mohanty for his contribution to | ||||
this document. | ||||
The authors would like to thank Alvaro Retana for substantive | ||||
comments as part of the Routing AD review. | ||||
The authors would like to thank Bruno Decraene for substantive | ||||
comments and suggested text as part of the Routing Directorate | ||||
review. | ||||
The authors would like to thank Shyam Sethuram for comments and | ||||
discussion of TLV processing and validation. | ||||
The authors would like to thank Robert Raszuk for comments and | ||||
suggestions regarding the MPLS data-plane behavior. | ||||
The authors would like to thank Krishna Deevi, Juan Alcaide, Howard | ||||
Yang, and Jakob Heitz for discussions on conflicting BGP Prefix-SID | ||||
label indices and BGP add paths. | ||||
The authors would like to thank Peter Yee, Tony Przygienda, Mirja | ||||
Kuhlewind, Alexey Melnikov, Eric Rescorla, Suresh Krishnan, Warren | ||||
Kumari, Ben Campbell Sue Hares, and Martin Vigoureux for IDR Working | ||||
Group last call, IETF Last Call, directorate, and IESG reviews. | ||||
Contributors | ||||
Keyur Patel | ||||
Arrcus, Inc. | ||||
United States of America | ||||
Email: Keyur@arrcus.com | ||||
Saikat Ray | ||||
Unaffiliated | ||||
United States of America | ||||
Email: raysaikat@gmail.com | ||||
Authors' Addresses | Authors' Addresses | |||
Stefano Previdi | Stefano Previdi | |||
Cisco Systems | Huawei Technologies | |||
IT | Italy | |||
Email: stefano@previdi.net | Email: stefano@previdi.net | |||
Clarence Filsfils | Clarence Filsfils | |||
Cisco Systems | Cisco Systems | |||
Brussels | Brussels | |||
Belgium | Belgium | |||
Email: cfilsfils@cisco.com | Email: cfilsfil@cisco.com | |||
Acee Lindem (editor) | Acee Lindem (editor) | |||
Cisco Systems | Cisco Systems | |||
301 Midenhall Way | 301 Midenhall Way | |||
Cary, NC 27513 | Cary, NC, 27513 | |||
USA | United States of America | |||
Email: acee@cisco.com | Email: acee@cisco.com | |||
Arjun Sreekantiah | Arjun Sreekantiah | |||
Email: arjunhrs@gmail.com | Email: arjunhrs@gmail.com | |||
Hannes Gredler | Hannes Gredler | |||
RtBrick Inc. | RtBrick Inc. | |||
End of changes. 109 change blocks. | ||||
349 lines changed or deleted | 344 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |