draft-ietf-idr-bgp-prefix-sid-11.txt   draft-ietf-idr-bgp-prefix-sid-12.txt 
IDR S. Previdi, Ed. IDR S. Previdi, Ed.
Internet-Draft C. Filsfils Internet-Draft C. Filsfils
Intended status: Standards Track A. Lindem Intended status: Standards Track A. Lindem
Expires: August 4, 2018 Cisco Systems Expires: August 8, 2018 Cisco Systems
A. Sreekantiah A. Sreekantiah
H. Gredler H. Gredler
RtBrick Inc. RtBrick Inc.
January 31, 2018 February 4, 2018
Segment Routing Prefix SID extensions for BGP Segment Routing Prefix SID extensions for BGP
draft-ietf-idr-bgp-prefix-sid-11 draft-ietf-idr-bgp-prefix-sid-12
Abstract Abstract
Segment Routing (SR) architecture allows a node to steer a packet Segment Routing (SR) architecture allows a node to steer a packet
flow through any topological path and service chain by leveraging flow through any topological path and service chain by leveraging
source routing. The ingress node prepends an SR header to a packet source routing. 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 (SID). Each SID represents a
topological or a service-based instruction. Per-flow state is topological or a service-based instruction. Per-flow state is
maintained only on the ingress node of the SR domain. maintained only on the ingress node of the SR domain.
skipping to change at page 2, line 7 skipping to change at page 2, line 7
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 4, 2018. This Internet-Draft will expire on August 8, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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 (http://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
skipping to change at page 2, line 37 skipping to change at page 2, line 37
2. BGP-Prefix-SID . . . . . . . . . . . . . . . . . . . . . . . 4 2. BGP-Prefix-SID . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. MPLS BGP Prefix SID . . . . . . . . . . . . . . . . . . . 4 2.1. MPLS BGP Prefix SID . . . . . . . . . . . . . . . . . . . 4
2.2. IPv6 Prefix Segment . . . . . . . . . . . . . . . . . . . 5 2.2. IPv6 Prefix Segment . . . . . . . . . . . . . . . . . . . 5
3. BGP Prefix-SID Attribute . . . . . . . . . . . . . . . . . . 5 3. BGP Prefix-SID Attribute . . . . . . . . . . . . . . . . . . 5
3.1. Label-Index TLV . . . . . . . . . . . . . . . . . . . . . 6 3.1. Label-Index TLV . . . . . . . . . . . . . . . . . . . . . 6
3.2. IPv6 SID . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2. IPv6 SID . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3. Originator SRGB TLV . . . . . . . . . . . . . . . . . . . 7 3.3. Originator SRGB TLV . . . . . . . . . . . . . . . . . . . 7
4. Receiving BGP Prefix-SID Attribute . . . . . . . . . . . . . 9 4. Receiving BGP Prefix-SID Attribute . . . . . . . . . . . . . 9
4.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 9 4.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 9
4.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 10 4.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 10
5. Advertising BGP Prefix-SID Attribute . . . . . . . . . . . . 10 5. Advertising BGP Prefix-SID Attribute . . . . . . . . . . . . 11
5.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 11 5.1. MPLS Dataplane: Labeled Unicast . . . . . . . . . . . . . 11
5.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 11 5.2. IPv6 Dataplane . . . . . . . . . . . . . . . . . . . . . 12
6. Error Handling of BGP Prefix-SID Attribute . . . . . . . . . 11 6. Error Handling of BGP Prefix-SID Attribute . . . . . . . . . 12
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
8. Manageability Considerations . . . . . . . . . . . . . . . . 13 8. Manageability Considerations . . . . . . . . . . . . . . . . 13
9. Security Considerations . . . . . . . . . . . . . . . . . . . 13 9. Security Considerations . . . . . . . . . . . . . . . . . . . 14
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 13 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 14
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 15
12.1. Normative References . . . . . . . . . . . . . . . . . . 14 12.1. Normative References . . . . . . . . . . . . . . . . . . 15
12.2. Informative References . . . . . . . . . . . . . . . . . 15 12.2. Informative References . . . . . . . . . . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16
1. Introduction 1. Introduction
Segment Routing (SR) architecture leverages the source routing Segment Routing (SR) architecture leverages the source routing
paradigm. A group of inter-connected nodes that use SR forms an SR paradigm. A group of inter-connected nodes that use SR forms an SR
domain. A segment represents either a topological instruction such domain. A segment represents either a topological instruction such
as "go to prefix P following shortest path" or a service instruction as "go to prefix P following shortest path" or a service instruction
(e.g., "pass through deep packet inspection"). Other types of (e.g., "pass through deep packet inspection"). Other types of
segments may be defined in the future. segments may be defined in the future.
A segment is identified through a Segment Identifier (SID). A segment is identified through a Segment Identifier (SID).
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 segments identifiers (SIDs) to an incoming packet.
As described in [I-D.ietf-spring-segment-routing], when SR is applied As described in [I-D.ietf-spring-segment-routing], when SR is applied
to the MPLS dataplane ([I-D.ietf-spring-segment-routing-mpls]), the to the MPLS dataplane ([I-D.ietf-spring-segment-routing-mpls]), the
SID consists of a label while when SR is applied to the IPv6 SID consists of a label while when SR is applied to the IPv6
dataplane the SID consists of an IPv6 address. dataplane the SID consists of an IPv6 address.
A BGP-Prefix Segment (and its BGP Prefix-SID), is a BGP segment A BGP-Prefix Segment (and its BGP Prefix-SID) is a BGP segment
attached to a BGP prefix. A BGP Prefix-SID is always a global SID attached to a BGP prefix. A BGP Prefix-SID is always a global SID
([I-D.ietf-spring-segment-routing]) within the SR/BGP domain (i.e., ([I-D.ietf-spring-segment-routing]) within the SR/BGP domain (i.e.,
the set of Autonomous Systems under a common administration and the set of Autonomous Systems under a common administration and
control and where SR is used) and identifies an instruction to control and where SR is used) and identifies an instruction to
forward the packet over the ECMP-aware best-path computed by BGP to forward the packet over the ECMP-aware best-path computed by BGP to
the related prefix. The BGP Prefix-SID is the identifier of the BGP the related prefix. The BGP Prefix-SID is the identifier of the BGP
prefix segment. In this document, we always refer to the BGP segment prefix segment. In this document, we always refer to the BGP segment
by the BGP Prefix-SID. by the BGP Prefix-SID.
This document describes the BGP extension to signal the BGP Prefix- This document describes the BGP extension to signal the BGP Prefix-
skipping to change at page 3, line 45 skipping to change at page 3, line 45
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 AFI/SAFI combinations: to prefixes from AFI/SAFI combinations:
Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC8277]). Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC8277]).
Multiprotocol BGP ([RFC4760]) unlabeled IPv6 Unicast. Multiprotocol BGP ([RFC4760]) unlabeled IPv6 Unicast.
Usage of the BGP Prefix-SID attribute for other AFI/SAFI combinations
is not defined herein but may be specified in future specifications.
[I-D.ietf-spring-segment-routing-msdc] describes example use cases [I-D.ietf-spring-segment-routing-msdc] describes example use cases
where the BGP Prefix-SID is used for the above AFI/SAFI combinations. where the BGP Prefix-SID is used for the above AFI/SAFI combinations.
It should be noted that: It should be noted that:
o A BGP Prefix-SID MAY be global between domains when the o A BGP Prefix-SID MAY be global between domains when the
interconnected domains agree on the SID allocation scheme. interconnected domains agree on the SID allocation scheme.
Alternatively, when interconnecting domains, the ASBRs of each Alternatively, when interconnecting domains, the ASBRs of each
domain will have to handle the advertisement of unique SIDs. The domain 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 prefix. In addition, each o A BGP Prefix-SID MAY be attached to a prefix. In addition, each
prefix will likely have a different AS_PATH attribute. This prefix will likely have a different AS_PATH attribute. This
implies that each prefix is advertised individually, reducing the implies that each prefix is advertised individually, reducing the
ability to pack BGP advertisements (when sharing common ability to pack BGP advertisements (when sharing common
attributes). attributes).
2. BGP-Prefix-SID 2. BGP-Prefix-SID
The BGP Prefix-SID attached to a BGP prefix P represents the The BGP Prefix-SID advertised for BGP prefix P indicates that the
instruction "go to Prefix P" along its BGP best path (potentially segment routed path should be used (as described below) if the BGP
ECMP-enabled). best path selects the corresponding NLRI.
2.1. MPLS BGP Prefix SID 2.1. MPLS BGP Prefix SID
The BGP Prefix-SID is realized on the MPLS dataplane The BGP Prefix-SID is realized on the MPLS dataplane
([I-D.ietf-spring-segment-routing-mpls]) in the following way: ([I-D.ietf-spring-segment-routing-mpls]) 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 sourced prefix of a BGP speaker N which is advertised to locally sourced prefix of a BGP speaker N which is advertised to
all other BGP speakers in the SR domain. all other BGP speakers in the SR domain.
skipping to change at page 5, line 24 skipping to change at page 5, line 26
As defined in [I-D.ietf-spring-segment-routing], the label index As defined in [I-D.ietf-spring-segment-routing], the label index
L_I is an offset into the SRGB. Each BGP speaker derives its L_I is an offset into the SRGB. Each BGP speaker derives its
local MPLS label, L, by adding L_I to the start value of its own local MPLS label, L, by adding L_I to the start value of its own
SRGB, and programs L in its MPLS dataplane as its incoming/local SRGB, and programs L in its MPLS dataplane as its incoming/local
label for the prefix. It should be noted that while SRGBs and label for the prefix. It should be noted that while SRGBs and
SIDs are advertised using 32-bit values, the derived label is SIDs are advertised using 32-bit values, the derived label is
advertised in the 20 right-most bits. See Section 4.1 for more advertised in the 20 right-most bits. See Section 4.1 for more
details. details.
The outgoing label for the prefix is found in the NLRI of the The outgoing label for the prefix is found in the NLRI of the
Multiprotocol BGP labeled IPv4/IPv6 Unicast prefix advertisement. Multiprotocol BGP labeled IPv4/IPv6 Unicast prefix advertisement
The label index L_I is only used as a hint to derive the local/ as defined in [RFC8277]. The label index L_I is only used as a
incoming label. hint to derive the local/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.
In order to advertise the label index of a given prefix P and, In order to advertise the label index of a given prefix P and,
optionally, the SRGB, an extension to BGP is needed: the BGP Prefix- optionally, the SRGB, an extension to BGP is needed: the BGP Prefix-
SID attribute. This extension is described in subsequent sections. SID attribute. This extension is described in subsequent sections.
2.2. IPv6 Prefix Segment 2.2. IPv6 Prefix Segment
skipping to change at page 8, line 38 skipping to change at page 8, line 38
o Length is the total length in octets of the value portion of the o Length is the total length in octets of the value portion of the
TLV: 2 + (multiple of 6). TLV: 2 + (multiple of 6).
o Flags: 16 bits of flags. None are defined in this document. o Flags: 16 bits of flags. None are defined in this document.
Flags MUST be clear on transmission and MUST be ignored on Flags MUST be clear on transmission and MUST be ignored on
reception. reception.
o SRGB: 3 octets of base followed by 3 octets of range. Note that o SRGB: 3 octets of base followed by 3 octets of range. Note that
the SRGB field MAY appear multiple times. If the SRGB field the SRGB field MAY appear multiple times. If the SRGB field
appears multiple times, the SRGB consists of multiple ranges. appears multiple times, the SRGB consists of multiple 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. TLV MUST NOT be changed during the propagation of the BGP update.
The originator SRGB describes the SRGB of the node where the BGP The originator SRGB describes the SRGB of the node where the BGP
Prefix SID is attached. It is used to build segment routing policies Prefix SID is attached. It is used to build segment routing policies
when different SRGBs are used in the fabric, for example when different SRGBs are used in the fabric, for example
([I-D.ietf-spring-segment-routing-msdc]). ([I-D.ietf-spring-segment-routing-msdc]).
The receiving routers concatenate the ranges and build the Segment
Routing Global Block (SRGB) as follows:
SRGB = [100, 199]
[1000, 1099]
[500, 599]
The indexes span multiple ranges:
index=0 means label 100
...
index 99 means label 199
index 100 means label 1000
index 199 means label 1099
...
index 200 means label 500
...
The originator SRGB may only appear in a BGP Prefix-SID attribute The originator SRGB may only appear in a BGP Prefix-SID attribute
attached to Labeled IPv4/IPv6 unicast prefixes ([RFC8277]). It MUST attached to Labeled IPv4/IPv6 unicast prefixes ([RFC8277]). It MUST
be ignored when received for other BGP AFI/SAFI combinations. be ignored when received for other BGP AFI/SAFI combinations. Since
the Label-Index TLV is required for IPv4/IPv6 prefix applicability,
the originator SRGB will be ignored if it is not specified consistent
with Section 6.
4. Receiving BGP Prefix-SID Attribute 4. Receiving BGP Prefix-SID Attribute
A BGP speaker receiving a BGP Prefix-SID attribute from an EBGP A BGP speaker receiving a BGP Prefix-SID attribute from an EBGP
neighbor residing outside the boundaries of the SR domain MUST neighbor residing outside the boundaries of the SR domain MUST
discard the attribute unless it is configured to accept the attribute discard the attribute unless it is configured to accept the attribute
from the EBGP neighbor. A BGP speaker MAY log an error for further from the EBGP neighbor. A BGP speaker MAY log an error for further
analysis when discarding an attribute. analysis when discarding an attribute.
4.1. MPLS Dataplane: Labeled Unicast 4.1. MPLS Dataplane: Labeled Unicast
skipping to change at page 9, line 29 skipping to change at page 9, line 51
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.
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
"unacceptable" for a speaker M if the derived label value L lies "unacceptable" 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.
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. The label- a given prefix are outside the scope of this document.
index value associated with a prefix is locally configured at the BGP
node originating the prefix.
The BGP Prefix-SID attribute MUST contain the Label-Index TLV and MAY The BGP Prefix-SID attribute MUST contain the Label-Index TLV and MAY
contain the Originator SRGB TLV. A BGP Prefix-SID attribute received contain the Originator SRGB TLV. A BGP Prefix-SID attribute received
without a Label-Index TLV MUST be considered as "unacceptable" by the without a Label-Index TLV MUST be considered as "unacceptable" by the
receiving speaker. receiving speaker.
If multiple prefixes are received with the same label index value, If multiple prefixes are received with the same label index value,
all these prefixes MUST have their BGP Prefix-SID attribute all these prefixes MUST have their BGP Prefix-SID attribute
considered as "unacceptable" by the receiving speaker. considered as "unacceptable" by the receiving speaker.
skipping to change at page 10, line 12 skipping to change at page 10, line 33
a path from a neighbor with a BGP Prefix-SID attribute but is unable a path from a neighbor with a BGP Prefix-SID attribute but is unable
to process it (it does not have the capability or local policy to process it (it does not have the capability or local policy
disables the capability), it MUST treat the path as if it came disables the capability), it MUST treat the path as if it came
without a BGP Prefix-SID attribute. For the purposes of local label without a BGP Prefix-SID attribute. For the purposes of local label
allocation, a BGP speaker MUST assign a local (also called dynamic) allocation, a BGP speaker MUST assign a local (also called dynamic)
label (non-SRGB) for such a prefix as per classic Multiprotocol BGP label (non-SRGB) for such a prefix as per classic Multiprotocol BGP
labeled IPv4/IPv6 Unicast ([RFC8277]) operation. A BGP speaker MAY labeled IPv4/IPv6 Unicast ([RFC8277]) operation. A BGP speaker MAY
log an error for further analysis. log an error for further analysis.
The outgoing label is always programmed as per classic Multiprotocol The outgoing label is always programmed as per classic Multiprotocol
BGP labeled IPv4/IPv6 Unicast ([RFC8277]) operation. BGP labeled IPv4/IPv6 Unicast ([RFC8277]) operation. Specifically, a
BGP speaker receiving a prefix with a BGP Prefix-SID attribute and a
label NLRI field of Implicit NULL from a neighbor MUST adhere to
standard behavior and program its MPLS dataplane to pop the top label
when forwarding traffic to the prefix. The label NLRI defines the
outbound label that MUST be used by the receiving node.
Specifically, a BGP speaker receiving a prefix with a BGP Prefix-SID The label index provides the receiving BGP speaker with guidance as
attribute and a label NLRI field of Implicit NULL from a neighbor to the incoming label that SHOULD be assigned by that BGP speaker.
MUST adhere to standard behavior and program its MPLS dataplane to
pop the top label when forwarding traffic to the prefix. The label
NLRI defines the outbound label that MUST be used by the receiving
node. The label index gives the information to the receiving node on
which local/incoming label the BGP speaker SHOULD assign.
4.2. IPv6 Dataplane 4.2. IPv6 Dataplane
When an SR IPv6 BGP speaker receives an IPv6 Unicast BGP Update with When an SR IPv6 BGP speaker receives an IPv6 Unicast BGP Update with
a prefix having the BGP Prefix-SID attribute attached, it checks a prefix having the BGP Prefix-SID attribute attached, it checks
whether the IPv6 SID TLV is present. If present and chosen as the whether the IPv6 SID TLV is present. If present and chosen as the
best path, the prefix is installed into the Segment Routing IPv6 best path, the prefix is installed into the Segment Routing IPv6
dataplane as described in [I-D.ietf-spring-segment-routing]. dataplane as described in [I-D.ietf-spring-segment-routing].
The Label-Index and Originator SRGB TLVs MUST be ignored on The Label-Index and Originator SRGB TLVs MUST be ignored on
skipping to change at page 14, line 21 skipping to change at page 14, line 48
The authors would like to thank Satya Mohanty for his contribution to The authors would like to thank Satya Mohanty for his contribution to
this document. this document.
The authors would like to thank Alvaro Retana for substantive The authors would like to thank Alvaro Retana for substantive
comments as part of the Routing AD review. comments as part of the Routing AD review.
The authors would like to thank Shyam Sethuram for comments and The authors would like to thank Shyam Sethuram for comments and
discussion of TLV processing and validation. discussion of TLV processing and validation.
The authors would like to thank Peter Lee for IETF last call review. The authors would like to thank Peter Yee and Tony Przygienda for
IETF last call directorate reviews.
12. References 12. References
12.1. Normative References 12.1. Normative References
[I-D.ietf-spring-segment-routing] [I-D.ietf-spring-segment-routing]
Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B., Filsfils, C., Previdi, S., Ginsberg, L., Decraene, B.,
Litkowski, S., and R. Shakir, "Segment Routing Litkowski, S., and R. Shakir, "Segment Routing
Architecture", draft-ietf-spring-segment-routing-15 (work Architecture", draft-ietf-spring-segment-routing-15 (work
in progress), January 2018. in progress), January 2018.
 End of changes. 19 change blocks. 
33 lines changed or deleted 57 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/