| < draft-ietf-idr-bgp-prefix-sid-12.txt | draft-ietf-idr-bgp-prefix-sid-13.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 8, 2018 Cisco Systems | Expires: August 9, 2018 Cisco Systems | |||
| A. Sreekantiah | A. Sreekantiah | |||
| H. Gredler | H. Gredler | |||
| RtBrick Inc. | RtBrick Inc. | |||
| February 4, 2018 | February 5, 2018 | |||
| Segment Routing Prefix SID extensions for BGP | Segment Routing Prefix SID extensions for BGP | |||
| draft-ietf-idr-bgp-prefix-sid-12 | draft-ietf-idr-bgp-prefix-sid-13 | |||
| 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 8, 2018. | This Internet-Draft will expire on August 9, 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 4, line 22 ¶ | skipping to change at page 4, line 22 ¶ | |||
| 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 advertised for BGP prefix P indicates that the | The BGP Prefix-SID advertised for BGP prefix P indicates that the | |||
| segment routed path should be used (as described below) if the BGP | segment routed path should be used (as described below) if the BGP | |||
| best path selects the corresponding NLRI. | best path selects the corresponding Network Layer Reachability | |||
| Information (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 6, line 19 ¶ | skipping to change at page 6, line 22 ¶ | |||
| o IPv6 SID TLV | o IPv6 SID TLV | |||
| o Originator SRGB TLV | o 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 dataplane. | |||
| The IPv6 SID TLV is used only when SR is applied to the IPv6 | The IPv6 SID TLV is used only when SR is applied to the IPv6 | |||
| dataplane. | dataplane. | |||
| For future extendibility, 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 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. 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: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| skipping to change at page 9, line 32 ¶ | skipping to change at page 9, line 32 ¶ | |||
| 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 will be ignored if it is not specified consistent | the originator SRGB will be ignored if it is not specified consistent | |||
| with Section 6. | 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 SHOULD log an error for | |||
| analysis when discarding an attribute. | further analysis when discarding an attribute. | |||
| 4.1. MPLS Dataplane: Labeled Unicast | 4.1. MPLS Dataplane: Labeled Unicast | |||
| A Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC8277]) session | A Multiprotocol BGP labeled IPv4/IPv6 Unicast ([RFC8277]) session | |||
| type is required. | type is required. | |||
| 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. | |||
| skipping to change at page 10, line 18 ¶ | skipping to change at page 10, line 18 ¶ | |||
| 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. | |||
| When a BGP speaker receives a path from a neighbor with an acceptable | When a BGP speaker receives a path from a neighbor with an acceptable | |||
| BGP Prefix-SID attribute, it MUST program the derived label as the | BGP Prefix-SID attribute, it MUST program the derived label as the | |||
| local label for the prefix in its MPLS dataplane. In case of an | local label for the prefix in its MPLS dataplane. In case of an | |||
| error, a BGP speaker MUST follow to the error handling rules | error, a BGP speaker MUST follow to the error handling rules | |||
| specified in Section 6. A BGP speaker MAY log an error for further | specified in Section 6. A BGP speaker SHOULD log an error for | |||
| analysis. | further analysis. | |||
| When a BGP speaker receives a path from a neighbor with an | When a BGP speaker receives a path from a neighbor with an | |||
| unacceptable BGP Prefix-SID attribute or when a BGP speaker receives | unacceptable BGP Prefix-SID attribute or when a BGP speaker receives | |||
| 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 | |||
| log an error for further analysis. | SHOULD 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. Specifically, a | BGP labeled IPv4/IPv6 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 from a neighbor MUST adhere to | label NLRI field of Implicit NULL from a neighbor MUST adhere to | |||
| standard behavior and program its MPLS dataplane to pop the top label | standard behavior and program its MPLS dataplane to pop the top label | |||
| when forwarding traffic to the prefix. The label NLRI defines the | when forwarding traffic to the prefix. The label NLRI defines the | |||
| outbound label that MUST be used by the receiving node. | outbound label that MUST be used by the receiving node. | |||
| The label index provides the receiving BGP speaker with guidance as | The label index provides the receiving BGP speaker with guidance as | |||
| skipping to change at page 10, line 52 ¶ | skipping to change at page 10, line 52 ¶ | |||
| 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 | |||
| reception. For future extendibility, no TLVs are required for the | reception. For future extensibility, no TLVs are required for the | |||
| BGP IPv6 unicast address family. However, a BGP Prefix-SID attribute | BGP IPv6 unicast address family. However, a BGP Prefix-SID attribute | |||
| corresponding to the BGP IPv6 address family without an IPv6 SID TLV | corresponding to the BGP IPv6 address family without an IPv6 SID TLV | |||
| MUST be ignored. | MUST be ignored. | |||
| 5. Advertising BGP Prefix-SID Attribute | 5. Advertising BGP Prefix-SID Attribute | |||
| The BGP Prefix-SID attribute MAY be attached to labeled BGP prefixes | The BGP Prefix-SID attribute MAY be attached to labeled BGP prefixes | |||
| (IPv4/IPv6) [RFC8277] or to IPv6 unicast prefixes [RFC4760]. In | (IPv4/IPv6) [RFC8277] or to IPv6 unicast prefixes [RFC4760]. In | |||
| order to prevent distribution of the BGP Prefix-SID attribute beyond | order to prevent distribution of the BGP Prefix-SID attribute beyond | |||
| its intended scope of applicability, attribute filtering SHOULD be | its intended scope of applicability, attribute filtering SHOULD be | |||
| skipping to change at page 12, line 37 ¶ | skipping to change at page 12, line 37 ¶ | |||
| in this case [RFC7606]. When withdrawing the prefix, a BGP speaker | in this case [RFC7606]. When withdrawing the prefix, a BGP speaker | |||
| SHOULD log an error for further analysis. | SHOULD log an error for further analysis. | |||
| Consistent with [RFC7606], only the first occurrence of the BGP | Consistent with [RFC7606], only the first occurrence of the BGP | |||
| Prefix-SID attribute will be considered and subsequent occurrences | Prefix-SID attribute will be considered and subsequent occurrences | |||
| will be discarded. Similarly, only the first occurrence of a BGP | will be discarded. Similarly, only the first occurrence of a BGP | |||
| Prefix-SID attribute TLV of a given TLV type will be considered | Prefix-SID attribute TLV of a given TLV type will be considered | |||
| unless the specification of that TLV type allows for multiple | unless the specification of that TLV type allows for multiple | |||
| occurrences. | occurrences. | |||
| For future extendibility, 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. This document requests IANA to assign an attribute | |||
| code type (suggested value: 40) to the BGP Prefix-SID attribute from | code type (suggested value: 40) to the BGP Prefix-SID attribute from | |||
| the BGP Path Attributes registry. | the BGP Path Attributes registry. | |||
| Currently, IANA temporarily assigned the following: | Currently, IANA temporarily assigned the following: | |||
| skipping to change at page 14, line 48 ¶ | 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 Yee and Tony Przygienda for | The authors would like to thank Peter Yee, Tony Przygienda, Mirja | |||
| IETF last call directorate reviews. | Kuehlewind, and Alexey Melnikov for IETF last call directorate and | |||
| IESG 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. 12 change blocks. | ||||
| 16 lines changed or deleted | 18 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||