| rfc9252xml2.original.xml | rfc9252.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
| <rfc category="std" docName="draft-ietf-bess-srv6-services-15" | ||||
| ipr="trust200902"> | ||||
| <?xml-stylesheet 3type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <?rfc toc="yes" ?> | ||||
| <?rfc symrefs="yes" ?> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <?rfc iprnotified="no" ?> | ||||
| <?rfc strict="yes" ?> | ||||
| <?rfc compact="yes" ?> | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | ||||
| <!ENTITY zwsp "​"> | ||||
| <!ENTITY nbhy "‑"> | ||||
| <!ENTITY wj "⁠"> | ||||
| ]> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-bess-srv6-se | ||||
| rvices-15" number="9252" submissionType="IETF" category="std" consensus="true" i | ||||
| pr="trust200902" obsoletes="" updates="" xml:lang="en" tocInclude="true" symRefs | ||||
| ="true" sortRefs="true" version="3"> | ||||
| <?rfc subcompact="no" ?> | <!-- xml2rfc v2v3 conversion 3.12.2 --> | |||
| <front> | <front> | |||
| <title abbrev="SRv6 BGP based Overlay Services">SRv6 BGP based Overlay | <title abbrev="SRv6-Based BGP Overlay Services">BGP Overlay Services Based o | |||
| Services</title> | n Segment Routing over IPv6 (SRv6)</title> | |||
| <seriesInfo name="RFC" value="9252"/> | ||||
| <author fullname="Gaurav Dawra" initials="G" role="editor" surname="Dawra"> | <author fullname="Gaurav Dawra" initials="G" role="editor" surname="Dawra"> | |||
| <organization>LinkedIn</organization> | <organization>LinkedIn</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <email>gdawra.ietf@gmail.com</email> | <email>gdawra.ietf@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Ketan Talaulikar" initials="K" role="editor" surname="Tala | ||||
| <author fullname="Ketan Talaulikar" initials="K" role="editor" | ulikar"> | |||
| surname="Talaulikar"> | ||||
| <organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <country>India</country> | <country>India</country> | |||
| </postal> | </postal> | |||
| <email>ketant.ietf@gmail.com</email> | <email>ketant.ietf@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Robert Raszuk" initials="R" surname="Raszuk"> | <author fullname="Robert Raszuk" initials="R" surname="Raszuk"> | |||
| <organization>NTT Network Innovations</organization> | <organization>NTT Network Innovations</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>940 Stewart Dr</street> | <street>940 Stewart Dr.</street> | |||
| <city>Sunnyvale</city> | <city>Sunnyvale</city> | |||
| <region>CA</region> | <region>CA</region> | |||
| <code>94085</code> | <code>94085</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <email>robert@raszuk.net</email> | <email>robert@raszuk.net</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Bruno Decraene" initials="B" surname="Decraene"> | <author fullname="Bruno Decraene" initials="B" surname="Decraene"> | |||
| <organization>Orange</organization> | <organization>Orange</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <country>France</country> | <country>France</country> | |||
| </postal> | </postal> | |||
| <email>bruno.decraene@orange.com</email> | <email>bruno.decraene@orange.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Shunwan Zhuang" initials="S" surname="Zhuang"> | <author fullname="Shunwan Zhuang" initials="S" surname="Zhuang"> | |||
| <organization>Huawei Technologies</organization> | <organization>Huawei Technologies</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <country>China</country> | <country>China</country> | |||
| </postal> | </postal> | |||
| <email>zhuangshunwan@huawei.com</email> | <email>zhuangshunwan@huawei.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Jorge Rabadan" initials="J" surname="Rabadan"> | <author fullname="Jorge Rabadan" initials="J" surname="Rabadan"> | |||
| <organization>Nokia</organization> | <organization>Nokia</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street/> | <street/> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <email>jorge.rabadan@nokia.com</email> | <email>jorge.rabadan@nokia.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2022" month="July"/> | ||||
| <date year=""/> | <area>RTG</area> | |||
| <workgroup>BESS</workgroup> | ||||
| <area>Routing</area> | ||||
| <workgroup>BESS Working Group</workgroup> | ||||
| <keyword>BGP</keyword> | <keyword>BGP</keyword> | |||
| <keyword>SRv6</keyword> | <keyword>SRv6</keyword> | |||
| <abstract> | <abstract> | |||
| <t>This document defines procedures and messages for SRv6-based BGP | <t>This document defines procedures and messages for SRv6-based BGP | |||
| services including L3VPN, EVPN, and Internet services. It builds on | services, including Layer 3 Virtual Private Network (L3VPN), | |||
| RFC4364 “BGP/MPLS IP Virtual Private Networks (VPNs)” and | Ethernet VPN (EVPN), and Internet services. It builds on | |||
| RFC7432 “BGP MPLS-Based Ethernet VPN”.</t> | "BGP/MPLS IP Virtual Private Networks (VPNs)" (RFC 4364) and | |||
| "BGP MPLS-Based Ethernet VPN" (RFC 7432).</t> | ||||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="INTRO" title="Introduction"> | <section anchor="INTRO" numbered="true" toc="default"> | |||
| <t>SRv6 refers to Segment Routing instantiated on the IPv6 dataplane | <name>Introduction</name> | |||
| <xref target="RFC8402"/>.</t> | <t>SRv6 refers to Segment Routing instantiated on the IPv6 data plane | |||
| <xref target="RFC8402" format="default"/>.</t> | ||||
| <t>BGP is used to advertise the reachability of prefixes of a particular | <t>BGP is used to advertise the reachability of prefixes of a particular | |||
| service from an egress PE to ingress PE nodes.</t> | service from an egress Provider Edge (PE) to ingress PE nodes.</t> | |||
| <t>SRv6-based BGP services refer to the Layer 3 (L3) and Layer 2 (L2) over | ||||
| <t>SRv6 based BGP services refers to the Layer-3 and Layer-2 overlay | lay | |||
| services with BGP as control plane and SRv6 as dataplane. This document | services with BGP as the control plane and SRv6 as the data plane. This do | |||
| defines procedures and messages for SRv6-based BGP services including | cument | |||
| L3VPN, EVPN, and Internet services. It builds on <xref | defines procedures and messages for SRv6-based BGP services, including | |||
| target="RFC4364"/> “BGP/MPLS IP Virtual Private Networks | L3VPN, EVPN, and Internet services. It builds on "BGP/MPLS IP Virtual | |||
| (VPNs)” and <xref target="RFC7432"/> “BGP MPLS-Based | Private Networks (VPNs)" <xref target="RFC4364" format="default"/> and | |||
| Ethernet VPN”.</t> | "BGP MPLS-Based Ethernet VPN" <xref target="RFC7432" format="default"/>.</ | |||
| t> | ||||
| <t>SRv6 SID refers to an SRv6 Segment Identifier as defined in <xref | <t>SRv6 SID refers to an SRv6 Segment Identifier, as defined in <xref | |||
| target="RFC8402"/>.</t> | target="RFC8402" format="default"/>.</t> | |||
| <t>SRv6 Service SID refers to an SRv6 SID associated with one of the | <t>SRv6 Service SID refers to an SRv6 SID associated with one of the | |||
| service-specific SRv6 Endpoint behaviors on the advertising Provider | service-specific SRv6 Endpoint Behaviors on the advertising | |||
| Edge (PE) router, such as (but not limited to), End.DT (Table lookup in | PE router, such as (but not limited to) End.DT (look up in the | |||
| a VRF) or End.DX (cross-connect to a nexthop) behaviors in the case of | Virtual Routing and Forwarding (VRF) table) or End.DX (cross-connect to a | |||
| Layer-3 Virtual Private Network (L3VPN) service as defined in <xref | next hop) behaviors in the case of | |||
| target="RFC8986"/>. This document describes how existing BGP messages | L3VPN service, as defined in <xref | |||
| between PEs may carry SRv6 Service SIDs to interconnect PEs and form | target="RFC8986" format="default"/>. This document describes how existing | |||
| VPNs.</t> | BGP messages between PEs may carry SRv6 Service SIDs to interconnect PEs | |||
| and form VPNs.</t> | ||||
| <t>To provide SRv6 service with best-effort connectivity, the egress PE | <t>To provide SRv6 service with best-effort connectivity, the egress PE | |||
| signals an SRv6 Service SID with the BGP overlay service route. The | signals an SRv6 Service SID with the BGP overlay service route. The | |||
| ingress PE encapsulates the payload in an outer IPv6 header where the | ingress PE encapsulates the payload in an outer IPv6 header where the | |||
| destination address is the SRv6 Service SID provided by the egress | destination address is the SRv6 Service SID provided by the egress | |||
| Provider Edge (PE). The underlay between the PEs only needs to support | PE. The underlay between the PEs only needs to support | |||
| plain IPv6 forwarding <xref target="RFC8200"/>.</t> | plain IPv6 forwarding <xref target="RFC8200" format="default"/>.</t> | |||
| <t>To provide SRv6 service in conjunction with an underlay Service Level A | ||||
| <t>To provide SRv6 service in conjunction with an underlay SLA from the | greement (SLA) from the | |||
| ingress PE to the egress PE, the egress PE colors the overlay service | ingress PE to the egress PE, the egress PE colors the overlay service | |||
| route with a Color Extended Community <xref | route with a Color Extended Community <xref target="RFC9012" format="defau | |||
| target="I-D.ietf-idr-segment-routing-te-policy"/> for steering of flows | lt"/> for steering flows | |||
| for those routes as specified in section 8 of <xref | for those routes, as specified in <xref target="I-D.ietf-spring-segment-ro | |||
| target="I-D.ietf-spring-segment-routing-policy"/>. The ingress PE | uting-policy" section="8" sectionFormat="of" format="default"/>. The ingress PE | |||
| encapsulates the payload packet in an outer IPv6 header with the segment | encapsulates the payload packet in an outer IPv6 header with the | |||
| list of SR policy associated with the related SLA along with the SRv6 | SR Policy segment list associated with the related SLA along with the SRv6 | |||
| Service SID associated with the route using the Segment Routing Header | Service SID associated with the route using the Segment Routing Header | |||
| (SRH) <xref target="RFC8754"/>. The underlay nodes whose SRv6 | (SRH) <xref target="RFC8754" format="default"/>. The underlay nodes whose | |||
| SID’s are part of the SRH segment list MUST support SRv6 data | SRv6 | |||
| SIDs are part of the SRH segment list <bcp14>MUST</bcp14> support the SRv6 | ||||
| data | ||||
| plane.</t> | plane.</t> | |||
| <section anchor="REQ" numbered="true" toc="default"> | ||||
| <section anchor="REQ" title="Requirements Language"> | <name>Requirements Language</name> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t> | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
| when, they appear in all capitals, as shown here.</t> | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="SIDTLV" numbered="true" toc="default"> | ||||
| <section anchor="SIDTLV" title="SRv6 Services TLVs "> | <name>SRv6 Services TLVs</name> | |||
| <t>This document extends the use of the BGP Prefix-SID attribute <xref | <t>This document extends the use of the BGP Prefix-SID attribute <xref tar | |||
| target="RFC8669"/> to carry SRv6 SIDs and their associated information | get="RFC8669" format="default"/> to carry SRv6 SIDs and their associated informa | |||
| with the BGP address-families that are listed further in this | tion | |||
| with the BGP address families that are listed further in this | ||||
| section.</t> | section.</t> | |||
| <t>The SRv6 Service TLVs are defined as two new TLVs of the BGP | <t>The SRv6 Service TLVs are defined as two new TLVs of the BGP | |||
| Prefix-SID Attribute to achieve signaling of SRv6 SIDs for L3 and L2 | Prefix-SID attribute to achieve signaling of SRv6 SIDs for L3 and L2 | |||
| services.</t> | services.</t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>SRv6 L3 Service TLV:</dt> | |||
| <t>SRv6 L3 Service TLV: This TLV encodes Service SID information for | <dd>This TLV encodes Service SID information for | |||
| SRv6 based L3 services. It corresponds to the equivalent | SRv6-based L3 services. It corresponds to the equivalent | |||
| functionality provided by an MPLS Label when received with a Layer 3 | functionality provided by an MPLS label when received with a Layer 3 | |||
| service route as defined in <xref target="RFC4364"/> <xref | service route, as defined in <xref target="RFC4364" format="default"/> | |||
| target="RFC4659"/> <xref target="RFC8950"/> <xref | , <xref target="RFC4659" format="default"/>, <xref target="RFC8950" format="defa | |||
| target="RFC9136"/>. Some SRv6 Endpoint behaviors which may be | ult"/>, and <xref target="RFC9136" format="default"/>. Some SRv6 Endpoint Behavi | |||
| encoded, but not limited to, are End.DX4, End.DT4, End.DX6, End.DT6, | ors that may be | |||
| and End.DT46.</t> | encoded are, but not limited to, End.DX4, End.DT4, End.DX6, End.DT6, | |||
| and End.DT46.</dd> | ||||
| <t>SRv6 L2 Service TLV: This TLV encodes Service SID information for | <dt>SRv6 L2 Service TLV:</dt> | |||
| SRv6 based L2 services. It corresponds to the equivalent | <dd>This TLV encodes Service SID information for | |||
| functionality provided by an MPLS Label1 for Ethernet VPN (EVPN) | SRv6-based L2 services. It corresponds to the equivalent | |||
| Route-Types as defined in <xref target="RFC7432"/>. Some SRv6 | functionality provided by an MPLS label for Ethernet VPN (EVPN) | |||
| Endpoint behaviors which may be encoded, but not limited to, are | Route Types for Layer 2 services, as defined in <xref | |||
| End.DX2, End.DX2V, End.DT2U, and End.DT2M.</t> | target="RFC7432" format="default"/>. Some SRv6 | |||
| </list></t> | Endpoint Behaviors that may be encoded are, but not limited to, | |||
| End.DX2, End.DX2V, End.DT2U, and End.DT2M.</dd> | ||||
| <t>When an egress PE is enabled for BGP Services over SRv6 data-plane, | </dl> | |||
| it signals one or more SRv6 Service SIDs enclosed in SRv6 Service TLV(s) | <t>When an egress PE is enabled for BGP Services over the SRv6 data plane, | |||
| within the BGP Prefix-SID Attribute attached to MP-BGP NLRIs defined in | it signals one or more SRv6 Service SIDs enclosed in an SRv6 Service TLV(s | |||
| <xref target="RFC4760"/> <xref target="RFC4659"/> <xref | ) | |||
| target="RFC8950"/> <xref target="RFC7432"/> <xref target="RFC4364"/> | within the BGP Prefix-SID attribute attached to Multiprotocol BGP (MP-BGP) | |||
| <xref target="RFC9136"/> where applicable as described in <xref | Network Layer Reachability Information (NLRI) defined in | |||
| target="L3BGP"/> and <xref target="EVPNBGP"/>.</t> | <xref target="RFC4760" format="default"/>, <xref target="RFC4659" format=" | |||
| default"/>, <xref target="RFC8950" format="default"/>, <xref target="RFC7432" fo | ||||
| <t>The support for BGP Multicast VPN (MVPN) Services <xref | rmat="default"/>, <xref target="RFC4364" format="default"/>, and | |||
| target="RFC6513"/> with SRv6 is outside the scope of this document.</t> | <xref target="RFC9136" format="default"/>, where applicable, as describe | |||
| d in Sections <xref target="L3BGP" format="counter"/> and <xref target="EVPNBGP" | ||||
| format="counter"/>.</t> | ||||
| <t>The support for BGP Multicast VPN (MVPN) Services <xref target="RFC6513 | ||||
| " format="default"/> with SRv6 is outside the scope of this document.</t> | ||||
| <t>The following depicts the SRv6 Service TLVs encoded in the BGP | <t>The following depicts the SRv6 Service TLVs encoded in the BGP | |||
| Prefix-SID Attribute:</t> | Prefix-SID attribute:</t> | |||
| <figure anchor="SRV6SVCTLV"> | ||||
| <figure anchor="SRV6SVCTLV" title="SRv6 Service TLVs"> | <name>SRv6 Service TLVs</name> | |||
| <artwork><![CDATA[ 0 1 2 | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | TLV Type | TLV Length | RESERVED | | | TLV Type | TLV Length | RESERVED | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SRv6 Service Sub-TLVs // | | SRv6 Service Sub-TLVs // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| > | ]]></artwork> | |||
| </figure> | </figure> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>TLV Type (1 octet):</dt> | |||
| <t>TLV Type (1 octet): This field is assigned values from the IANA | <dd>This field is assigned a value from IANA's | |||
| registry "BGP Prefix-SID TLV Types". It is set to 5 for SRv6 L3 | "BGP Prefix-SID TLV Types" subregistry. It is set to 5 for the SRv6 L3 | |||
| Service TLV. It is set to 6 for SRv6 L2 Service TLV.</t> | Service TLV. It is set to 6 for the SRv6 L2 Service TLV.</dd> | |||
| <dt>TLV Length (2 octets):</dt> | ||||
| <t>TLV Length (2 octets): Specifies the total length, in octets, of | <dd>This field specifies the total length, in octets, of | |||
| the TLV Value.</t> | the TLV Value.</dd> | |||
| <dt>RESERVED (1 octet):</dt> | ||||
| <t>RESERVED (1 octet): This field is reserved; it MUST be set to 0 | <dd>This field is reserved; it <bcp14>MUST</bcp14> be set to 0 | |||
| by the sender and ignored by the receiver.</t> | by the sender and ignored by the receiver.</dd> | |||
| <dt>SRv6 Service Sub-TLVs (variable):</dt> | ||||
| <t>SRv6 Service Sub-TLVs (variable): This field contains SRv6 | <dd>This field contains SRv6 | |||
| Service related information and is encoded as an unordered list of | service-related information and is encoded as an unordered list of | |||
| Sub-TLVs whose format is described below.</t> | Sub-TLVs whose format is described below.</dd> | |||
| </list></t> | </dl> | |||
| <t>A BGP speaker receiving a route containing the BGP Prefix-SID attribute | ||||
| <t>A BGP speaker receiving a route containing BGP Prefix-SID Attribute | ||||
| with one or more SRv6 Service TLVs observes the following rules when | with one or more SRv6 Service TLVs observes the following rules when | |||
| advertising the received route to other peers:<list style="symbols"> | advertising the received route to other peers:</t> | |||
| <t>if the nexthop is unchanged during the advertisement, the SRv6 | <ul spacing="normal"> | |||
| <li>If the BGP next hop is unchanged during the advertisement, the SRv6 | ||||
| Service TLVs, including any unrecognized Types of Sub-TLV and | Service TLVs, including any unrecognized Types of Sub-TLV and | |||
| Sub-Sub-TLV, SHOULD be propagated further. In addition, all Reserved | Sub-Sub-TLV, <bcp14>SHOULD</bcp14> be propagated further. In addition, | |||
| fields in the TLV or Sub-TLV or Sub-Sub-TLV MUST be propagated | all Reserved | |||
| unchanged.</t> | fields in the TLV, Sub-TLV, or Sub-Sub-TLV <bcp14>MUST</bcp14> be prop | |||
| agated | ||||
| <t>if the nexthop is changed, the TLVs, Sub-TLVs, and Sub-Sub-TLVs | unchanged.</li> | |||
| SHOULD be updated with the locally allocated SRv6 SID information. | <li>If the BGP next hop is changed, the TLVs, Sub-TLVs, and Sub-Sub-TLVs | |||
| Any unrecognized received Sub-TLVs and Sub-Sub-TLVs MUST be | <bcp14>SHOULD</bcp14> be updated with the locally allocated SRv6 SID i | |||
| removed.</t> | nformation. | |||
| </list></t> | Any received Sub-TLVs and Sub-Sub-TLVs that are unrecognized <bcp14>MU | |||
| ST</bcp14> be | ||||
| removed.</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="SRv6-TLV" numbered="true" toc="default"> | ||||
| <section anchor="SRv6-TLV" title="SRv6 Service Sub-TLVs"> | <name>SRv6 Service Sub-TLVs</name> | |||
| <t>The format of a single SRv6 Service Sub-TLV is depicted below:</t> | <t>The format of a single SRv6 Service Sub-TLV is depicted below:</t> | |||
| <figure anchor="SRV6SVCSTLV"> | ||||
| <figure anchor="SRV6SVCSTLV" title="SRv6 Service Sub-TLVs"> | <name>SRv6 Service Sub-TLVs</name> | |||
| <artwork><![CDATA[ 0 1 2 | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SRv6 Service | SRv6 Service | SRv6 Service // | | SRv6 Service | SRv6 Service | SRv6 Service // | |||
| | Sub-TLV | Sub-TLV | Sub-TLV // | | Sub-TLV | Sub-TLV | Sub-TLV // | |||
| | Type | Length | value // | | Type | Length | Value // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ||||
| </figure> | </figure> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>SRv6 Service Sub-TLV Type (1 octet):</dt> | |||
| <t>SRv6 Service Sub-TLV Type (1 octet): Identifies the type of SRv6 | <dd>This field identifies the type of SRv6 | |||
| service information. It is assigned values from the IANA Registry | service information. It is assigned a value from IANA's | |||
| "SRv6 Service Sub-TLV Types".</t> | "SRv6 Service Sub-TLV Types" subregistry.</dd> | |||
| <dt>SRv6 Service Sub-TLV Length (2 octets):</dt> | ||||
| <t>SRv6 Service Sub-TLV Length (2 octets): Specifies the total | <dd>This field specifies the total | |||
| length, in octets, of the Sub-TLV Value field.</t> | length, in octets, of the Sub-TLV Value field.</dd> | |||
| <dt>SRv6 Service Sub-TLV Value (variable):</dt> | ||||
| <t>SRv6 Service Sub-TLV Value (variable): Contains data specific to | <dd>This field contains data specific to | |||
| the Sub-TLV Type. In addition to fixed-length data, it contains | the Sub-TLV Type. In addition to fixed-length data, it contains | |||
| other properties of the SRv6 Service encoded as a set of SRv6 | other properties of the SRv6 service encoded as a set of SRv6 | |||
| Service Data Sub-Sub-TLVs whose format is described in <xref | Service Data Sub-Sub-TLVs whose format is described in <xref | |||
| target="SID-SERVICE-DATA-TLV"/> below.</t> | target="SID-SERVICE-DATA-TLV" format="default"/> below.</dd> | |||
| </list></t> | </dl> | |||
| <section anchor="SRv6-SID-INFO" numbered="true" toc="default"> | ||||
| <section anchor="SRv6-SID-INFO" title="SRv6 SID Information Sub-TLV"> | <name>SRv6 SID Information Sub-TLV</name> | |||
| <t>SRv6 Service Sub-TLV Type 1 is assigned for SRv6 SID Information | <t>SRv6 Service Sub-TLV Type 1 is assigned for the SRv6 SID Information | |||
| Sub-TLV. This Sub-TLV contains a single SRv6 SID along with its | Sub-TLV. This Sub-TLV contains a single SRv6 SID along with its | |||
| properties. Its encoding is depicted below:</t> | properties. Its encoding is depicted below:</t> | |||
| <figure anchor="SRV6SIDINFO"> | ||||
| <figure anchor="SRV6SIDINFO" title="SRv6 SID Information Sub-TLV"> | <name>SRv6 SID Information Sub-TLV</name> | |||
| <artwork><![CDATA[ 0 1 2 | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SRv6 Service | SRv6 Service | | | | SRv6 Service | SRv6 Service | | | |||
| | Sub-TLV | Sub-TLV | | | | Sub-TLV | Sub-TLV | | | |||
| | Type=1 | Length | RESERVED1 | | | Type=1 | Length | RESERVED1 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SRv6 SID Value (16 octets) // | | SRv6 SID Value (16 octets) // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Svc SID Flags | SRv6 Endpoint Behavior | RESERVED2 | | | Svc SID Flags | SRv6 Endpoint Behavior | RESERVED2 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | SRv6 Service Data Sub-Sub-TLVs // | | SRv6 Service Data Sub-Sub-TLVs // | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwor | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| k> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>SRv6 Service Sub-TLV Type (1 octet):</dt> | |||
| <t>SRv6 Service Sub-TLV Type (1 octet): This field is set to 1 to | <dd>This field is set to 1 to | |||
| represent SRv6 SID Information Sub-TLV.</t> | represent the SRv6 SID Information Sub-TLV.</dd> | |||
| <dt>SRv6 Service Sub-TLV Length (2 octets):</dt> | ||||
| <t>SRv6 Service Sub-TLV Length (2 octets): This field contains the | <dd>This field contains the | |||
| total length, in octets, of the Value field of the Sub-TLV.</t> | total length, in octets, of the Value field of the Sub-TLV.</dd> | |||
| <dt>RESERVED1 (1 octet):</dt> | ||||
| <t>RESERVED1 (1 octet): MUST be set to 0 by the sender and ignored | <dd>This field <bcp14>MUST</bcp14> be set to 0 by the sender and igno | |||
| by the receiver.</t> | red | |||
| by the receiver.</dd> | ||||
| <t>SRv6 SID Value (16 octets): Encodes an SRv6 SID as defined in | <dt>SRv6 SID Value (16 octets):</dt> | |||
| <xref target="RFC8986"/></t> | <dd>This field encodes an SRv6 SID, as defined in | |||
| <xref target="RFC8986" format="default"/>.</dd> | ||||
| <t>SRv6 Service SID Flags (1 octet): Encodes SRv6 Service SID | <dt>SRv6 Service SID Flags (1 octet):</dt> | |||
| Flags - none are currently defined. SHOULD be set to 0 by the | <dd>This field encodes SRv6 Service SID | |||
| sender and any unknown flags MUST be ignored by the receiver.</t> | Flags -- none are currently defined. It <bcp14>MUST</bcp14> be set t | |||
| o 0 by the | ||||
| <t>SRv6 Endpoint Behavior (2 octets): Encodes SRv6 Endpoint | sender and any unknown flags <bcp14>MUST</bcp14> be ignored by the r | |||
| behavior codepoint value that is associated with SRv6 SID. The | eceiver.</dd> | |||
| codepoints used are from the "SRv6 Endpoint Behavior" registry | <dt>SRv6 Endpoint Behavior (2 octets):</dt> | |||
| under the IANA "Segment Routing" parameters registry that was | <dd>This field encodes the SRv6 Endpoint | |||
| introduced by <xref target="RFC8986"/>. The opaque endpoint | Behavior codepoint value that is associated with the SRv6 SID. The | |||
| behavior (i.e., value 0xFFFF) MAY be used when the advertising | codepoints used are from IANA's "SRv6 Endpoint Behaviors" subregistr | |||
| router wishes to abstract the actual behavior of it's locally | y | |||
| instantiated SRv6 SID.</t> | under the "Segment Routing" registry that was | |||
| introduced by <xref target="RFC8986" format="default"/>. The opaque | ||||
| <t>RESERVED2 (1 octet): MUST be set to 0 by the sender and ignored | SRv6 Endpoint | |||
| by the receiver.</t> | Behavior (i.e., value 0xFFFF) <bcp14>MAY</bcp14> be used when the ad | |||
| vertising | ||||
| <t>SRv6 Service Data Sub-Sub-TLV Value (variable): Used to | router wishes to abstract the actual behavior of its locally | |||
| instantiated SRv6 SID.</dd> | ||||
| <dt>RESERVED2 (1 octet):</dt> | ||||
| <dd>This field <bcp14>MUST</bcp14> be set to 0 by the sender and igno | ||||
| red | ||||
| by the receiver.</dd> | ||||
| <dt>SRv6 Service Data Sub-Sub-TLV Value (variable):</dt> | ||||
| <dd>This field is used to | ||||
| advertise properties of the SRv6 SID. It is encoded as a set of | advertise properties of the SRv6 SID. It is encoded as a set of | |||
| SRv6 Service Data Sub-Sub-TLVs.</t> | SRv6 Service Data Sub-Sub-TLVs.</dd> | |||
| </list></t> | </dl> | |||
| <t>The choice of SRv6 Endpoint Behavior of the SRv6 SID is entirely up | ||||
| <t>The choice of SRv6 Endpoint behavior of the SRv6 SID is entirely up | to the originator of the advertisement. While Sections <xref target="L3B | |||
| to the originator of the advertisement. While <xref target="L3BGP"/> | GP" | |||
| and <xref target="EVPNBGP"/> list the SRv6 Endpoint Behaviors that are | format="counter"/> and <xref target="EVPNBGP" format="counter"/> list the | |||
| SRv6 Endpoint Behaviors that are | ||||
| normally expected to be used by the specific route advertisements, the | normally expected to be used by the specific route advertisements, the | |||
| reception of other SRv6 Endpoint behaviors (e.g., new behaviors that | reception of other SRv6 Endpoint Behaviors (e.g., new behaviors that | |||
| may be introduced in the future) is not considered an error. An | may be introduced in the future) is not considered an error. An | |||
| unrecognized endpoint behavior MUST NOT be considered invalid by the | unrecognized SRv6 Endpoint Behavior <bcp14>MUST NOT</bcp14> be considere | |||
| receiver except for behaviors that involve the use of arguments (refer | d invalid by the | |||
| to <xref target="SRv6-SID-STRUCTURE"/> for details on argument | receiver, except for behaviors that involve the use of arguments (refer | |||
| validation). An implementation MAY log a rate-limited warning when it | to <xref target="SRv6-SID-STRUCTURE" format="default"/> for details on a | |||
| rgument | ||||
| validation). An implementation <bcp14>MAY</bcp14> log a rate-limited war | ||||
| ning when it | ||||
| receives an unexpected behavior.</t> | receives an unexpected behavior.</t> | |||
| <t>When multiple SRv6 SID Information Sub-TLVs are present, the | <t>When multiple SRv6 SID Information Sub-TLVs are present, the | |||
| ingress PE SHOULD use the SRv6 SID from the first instance of the | ingress PE <bcp14>SHOULD</bcp14> use the SRv6 SID from the first instanc | |||
| Sub-TLV. An implementation MAY provide a local policy to override this | e of the | |||
| Sub-TLV. An implementation <bcp14>MAY</bcp14> provide a local policy to | ||||
| override this | ||||
| selection.</t> | selection.</t> | |||
| </section> | </section> | |||
| <section anchor="SID-SERVICE-DATA-TLV" numbered="true" toc="default"> | ||||
| <section anchor="SID-SERVICE-DATA-TLV" | <name>SRv6 Service Data Sub-Sub-TLVs</name> | |||
| title="SRv6 Service Data Sub-Sub-TLVs"> | ||||
| <t>The format of the SRv6 Service Data Sub-Sub-TLV is depicted | <t>The format of the SRv6 Service Data Sub-Sub-TLV is depicted | |||
| below:</t> | below:</t> | |||
| <figure anchor="SRV6SVCDATASTLV"> | ||||
| <figure anchor="SRV6SVCDATASTLV" | <name>SRv6 Service Data Sub-Sub-TLVs</name> | |||
| title="SRv6 Service Data Sub-Sub-TLVs"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ 0 1 2 | 0 1 2 3 | |||
| 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Service Data | Sub-Sub-TLV Length |Sub-Sub TLV // | |||
| | Service Data | Sub-Sub-TLV Length |Sub-Sub TLV // | | Sub-Sub-TLV | | Value // | |||
| | Sub-Sub-TLV | | Value // | | Type | | // | |||
| | Type | | // | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artw | ]]></artwork> | |||
| ork> | ||||
| </figure> | </figure> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>SRv6 Service Data Sub-Sub-TLV Type (1 octet):</dt> | |||
| <t>SRv6 Service Data Sub-Sub-TLV Type (1 octet): Identifies the | <dd>This field identifies the | |||
| type of Sub-Sub-TLV. It is assigned values from the IANA Registry | type of Sub-Sub-TLV. It is assigned a value from IANA's | |||
| "SRv6 Service Data Sub-Sub-TLVs".</t> | "SRv6 Service Data Sub-Sub-TLV Types" subregistry.</dd> | |||
| <dt>SRv6 Service Data Sub-Sub-TLV Length (2 octets):</dt> | ||||
| <t>SRv6 Service Data Sub-Sub-TLV Length (2 octets): Specifies the | <dd>This field specifies the | |||
| total length, in octets, of the Sub-Sub-TLV Value field.</t> | total length, in octets, of the Sub-Sub-TLV Value field.</dd> | |||
| <dt>SRv6 Service Data Sub-Sub-TLV Value (variable):</dt> | ||||
| <t>SRv6 Service Data Sub-Sub-TLV Value (variable): Contains data | <dd>This field contains data | |||
| specific to the Sub-Sub-TLV Type.</t> | specific to the Sub-Sub-TLV Type.</dd> | |||
| </list></t> | </dl> | |||
| <section anchor="SRv6-SID-STRUCTURE" numbered="true" toc="default"> | ||||
| <section anchor="SRv6-SID-STRUCTURE" | <name>SRv6 SID Structure Sub-Sub-TLV</name> | |||
| title="SRv6 SID Structure Sub-Sub-TLV"> | <t>SRv6 Service Data Sub-Sub-TLV Type 1 is assigned for the SRv6 SID | |||
| <t>SRv6 Service Data Sub-Sub-TLV Type 1 is assigned for SRv6 SID | Structure Sub-Sub-TLV. The SRv6 SID Structure Sub-Sub-TLV is used to | |||
| structure Sub-Sub-TLV. SRv6 SID Structure Sub-Sub-TLV is used to | advertise the lengths of the individual parts of the SRv6 SID, as | |||
| advertise the lengths of the individual parts of the SRv6 SID as | defined in <xref target="RFC8986" format="default"/>. The terms Locato | |||
| defined in <xref target="RFC8986"/>. The terms Locator Block and | r Block and | |||
| Locator Node correspond to the B and N parts respectively of the | Locator Node correspond to the B and N parts, respectively, of the | |||
| SRv6 Locator that are defined in section 3.1 of <xref | SRv6 Locator that is defined in <xref target="RFC8986" | |||
| target="RFC8986"/>. It is carried as Sub-Sub-TLV in SRv6 SID | section="3.1" sectionFormat="of" format="default"/>. It is | |||
| Information Sub-TLV</t> | carried as Sub-Sub-TLV in the SRv6 SID Information Sub-TLV.</t> | |||
| <figure anchor="SRV6SIDSTRUCT"> | ||||
| <figure anchor="SRV6SIDSTRUCT" | <name>SRv6 SID Structure Sub-Sub-TLV</name> | |||
| title="SRv6 SID Structure Sub-Sub-TLV"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <artwork><![CDATA[ 0 1 2 | 0 1 2 3 | |||
| 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | SRv6 Service | SRv6 Service | Locator Block | | |||
| | SRv6 Service | SRv6 Service | Locator Block | | | Data Sub-Sub | Data Sub-Sub-TLV | Length | | |||
| | Data Sub-Sub | Data Sub-Sub-TLV | Length | | | -TLV Type=1 | Length | | | |||
| | -TLV Type=1 | Length | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Locator Node | Function | Argument | Transposition | | |||
| | Locator Node | Function | Argument | Transposition | | | Length | Length | Length | Length | | |||
| | Length | Length | Length | Length | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Transposition | | |||
| | Transposition | | | Offset | | |||
| | Offset | | +-+-+-+-+-+-+-+-+ | |||
| +-+-+-+-+-+-+-+-+]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>SRv6 Service Data Sub-Sub-TLV Type (1 octet):</dt> | |||
| <t>SRv6 Service Data Sub-Sub-TLV Type (1 octet): This field is | <dd>This field is set to 1 to represent the SRv6 SID Structure Sub-Su | |||
| set to 1 to represent SRv6 SID Structure Sub-Sub-TLV.</t> | b-TLV.</dd> | |||
| <dt>SRv6 Service Data Sub-Sub-TLV Length (2 octets):</dt> | ||||
| <t>SRv6 Service Data Sub-Sub-TLV Length (2 octets): This field | <dd>This field contains a total length of 6 octets.</dd> | |||
| contains a total length of 6 octets.</t> | <dt>Locator Block Length (1 octet):</dt> | |||
| <dd>This field contains the length of the SRv6 SID Locator Block in b | ||||
| <t>Locator Block Length (1 octet): Contains the length of SRv6 | its.</dd> | |||
| SID Locator Block in bits.</t> | <dt>Locator Node Length (1 octet):</dt> | |||
| <dd>This field contains the length of the SRv6 SID Locator Node in bi | ||||
| <t>Locator Node Length (1 octet): Contains the length of SRv6 | ts.</dd> | |||
| SID Locator Node in bits.</t> | <dt>Function Length (1 octet):</dt> | |||
| <dd>This field contains the length of the SRv6 SID Function in bits.< | ||||
| <t>Function Length (1 octet): Contains the length of SRv6 SID | /dd> | |||
| Function in bits.</t> | <dt>Argument Length (1 octet):</dt> | |||
| <dd>This field contains the length of the SRv6 SID Argument in bits.< | ||||
| <t>Argument Length (1 octet): Contains the length of SRv6 SID | /dd> | |||
| Argument in bits.</t> | <dt>Transposition Length (1 octet):</dt> | |||
| <dd>This field is the size in bits for the part of the | ||||
| <t>Transposition Length (1 octet): Size in bits for the part of | SID that has been transposed (or shifted) into an MPLS Label | |||
| SID that has been transposed (or shifted) into a MPLS label | field.</dd> | |||
| field</t> | <dt>Transposition Offset (1 octet):</dt> | |||
| <dd>This field is the offset position in bits | ||||
| <t>Transposition Offset (1 octet): The offset position in bits | for the part of the SID that has been transposed (or shifted) into | |||
| for the part of SID that has been transposed (or shifted) into a | an | |||
| MPLS label field.</t> | MPLS Label field.</dd> | |||
| </list></t> | </dl> | |||
| <t><xref target="SIDENCODE" format="default"/> describes mechanisms fo | ||||
| <t><xref target="SIDENCODE"/> describes mechanisms for signaling of | r the signaling of | |||
| the SRv6 Service SID by transposing a variable part of the SRv6 SID | the SRv6 Service SID by transposing a variable part of the SRv6 SID | |||
| value and carrying them in existing MPLS label fields to achieve | value and carrying this variable part in existing MPLS Label fields to achieve | |||
| more efficient packing of those service prefix NLRIs in BGP update | more efficient packing of those service prefix NLRIs in BGP update | |||
| messages. The SRv6 SID Structure Sub-Sub-TLV contains appropriate | messages. The SRv6 SID Structure Sub-Sub-TLV contains appropriate | |||
| length fields when the SRv6 Service SID is signaled in split parts | length fields when the SRv6 Service SID is signaled in split parts | |||
| to enable the receiver to put together the SID accurately.</t> | to enable the receiver to put together the SID accurately.</t> | |||
| <t>Transposition Offset indicates the bit position, and Transposition | ||||
| <t>Transposition Offset indicates the bit position and Transposition | ||||
| Length indicates the number of bits that are being taken out of the | Length indicates the number of bits that are being taken out of the | |||
| SRv6 SID value and put into high order bits of MPLS label field. The | SRv6 SID value and encoded in the MPLS Label field. The | |||
| bits that have been shifted out MUST be set to 0 in the SID | bits that have been shifted out <bcp14>MUST</bcp14> be set to 0 in the | |||
| SID | ||||
| value.</t> | value.</t> | |||
| <t>A Transposition Length of 0 indicates nothing is transposed and | ||||
| <t>Transposition Length of 0 indicates nothing is transposed and | ||||
| that the entire SRv6 SID value is encoded in the SID Information | that the entire SRv6 SID value is encoded in the SID Information | |||
| Sub-TLV. In this case, the Transposition Offset MUST be set to | Sub-TLV. In this case, the Transposition Offset <bcp14>MUST</bcp14> be set to | |||
| 0.</t> | 0.</t> | |||
| <t>The size of the MPLS Label field limits the bits transposed from | ||||
| <t>The size of the MPLS label field limits the bits transposed from | the SRv6 SID value into it. For example, the size of the MPLS Label fi | |||
| the SRv6 SID value into it. E.g., the size of MPLS label field in | eld is 20 bits in | |||
| <xref target="RFC4364"/> <xref target="RFC8277"/> is 20 bits while | <xref target="RFC4364" format="default"/> and <xref target="RFC8277" | |||
| in <xref target="RFC7432"/> is 24 bits.</t> | format="default"/>, and the size is 24 bits in <xref target="RFC7432" f | |||
| ormat="default"/>.</t> | ||||
| <t>As defined in <xref target="RFC8986"/>, the sum of the Locator | <t>As defined in <xref target="RFC8986" format="default"/>, the sum of | |||
| the Locator | ||||
| Block Length (LBL), Locator Node Length (LNL), Function Length (FL), | Block Length (LBL), Locator Node Length (LNL), Function Length (FL), | |||
| and Argument Length (AL) fields MUST be less than or equal to 128 | and Argument Length (AL) fields <bcp14>MUST</bcp14> be less than or eq ual to 128 | |||
| and greater than the sum of Transposition Offset and Transposition | and greater than the sum of Transposition Offset and Transposition | |||
| Length.</t> | Length.</t> | |||
| <t>As an example, consider that the sum of the Locator Block and the | <t>As an example, consider that the sum of the Locator Block and the | |||
| Locator Node parts is 64. For an SRv6 SID where the entire Function | Locator Node parts is 64. For an SRv6 SID where the entire Function | |||
| part of size 16 bits is transposed, then the transposition offset is | part of size 16 bits is transposed, the transposition offset is | |||
| set to 64 and the transposition length is set to 16. While for an | set to 64 and the transposition length is set to 16. While for an | |||
| SRv6 SID where the Function length is 24 bits and only the lower | SRv6 SID for which the FL is 24 bits and only the lower | |||
| order 20 bits are transposed (e.g. due to the limit of the MPLS | order 20 bits are transposed (e.g., due to the limit of the MPLS | |||
| label field size), then the transposition offset is set to 68 and | Label field size), the transposition offset is set to 68 and | |||
| the transposition length is set to 20.</t> | the transposition length is set to 20.</t> | |||
| <t>BGP speakers that do not support this specification may | <t>BGP speakers that do not support this specification may | |||
| misinterpret, on the reception of an SRv6-based BGP service route | misinterpret, on the reception of an SRv6-based BGP service route | |||
| update, the part of the SRv6 SID encoded in MPLS label field(s) as | update, the part of the SRv6 SID encoded in an MPLS Label field(s) as | |||
| MPLS label values for MPLS-based services. Implementations | MPLS label values for MPLS-based services. Implementations | |||
| supporting this specification MUST provide a mechanism to control | supporting this specification <bcp14>MUST</bcp14> provide a mechanism to control | |||
| the advertisement of SRv6-based BGP service routes on a per-neighbor | the advertisement of SRv6-based BGP service routes on a per-neighbor | |||
| and per-service basis. The details of deployment designs and | and per-service basis. The details of deployment designs and | |||
| implementation options are outside the scope of this document.</t> | implementation options are outside the scope of this document.</t> | |||
| <t>Arguments may be generally applicable for SIDs of only specific | <t>Arguments may be generally applicable for SIDs of only specific | |||
| SRv6 Endpoint behaviors (e.g., End.DT2M) and therefore the Argument | SRv6 Endpoint Behaviors (e.g., End.DT2M); therefore, the AL | |||
| length MUST be set to 0 for SIDs where the Argument is not | <bcp14>MUST</bcp14> be set to 0 for SIDs where the Argument is not | |||
| applicable. A receiver is unable to validate the applicability of | applicable. A receiver is unable to validate the applicability of | |||
| arguments for SRv6 Endpoint behaviors that are unknown to it and | arguments for SRv6 Endpoint Behaviors that are unknown to it and | |||
| hence MUST ignore SRv6 SIDs with arguments (indicated by non-zero | hence <bcp14>MUST</bcp14> ignore SRv6 SIDs with arguments (indicated b | |||
| argument length) with unknown endpoint behaviors. For SIDs | y a non-zero | |||
| corresponding to an endpoint behavior that is known, a receiver MUST | AL) with unknown SRv6 Endpoint Behaviors. For SIDs | |||
| validate that the consistency of the argument length with the | corresponding to an SRv6 Endpoint Behavior that is known, a receiver < | |||
| specific endpoint behavior definition.</t> | bcp14>MUST</bcp14> | |||
| validate that the consistency of the AL with the | ||||
| specific SRv6 Endpoint Behavior definition.</t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="SIDENCODE" numbered="true" toc="default"> | ||||
| <section anchor="SIDENCODE" title="Encoding SRv6 SID Information"> | <name>Encoding SRv6 SID Information</name> | |||
| <t>The SRv6 Service SID(s) for a BGP Service Prefix are carried in the | <t>The SRv6 Service SID(s) for a BGP service prefix is carried in the | |||
| SRv6 Services TLVs of the BGP Prefix-SID Attribute.</t> | SRv6 Services TLVs of the BGP Prefix-SID attribute.</t> | |||
| <t>For certain types of BGP Services, like L3VPN where a per-VRF SID | ||||
| <t>For certain types of BGP Services like L3VPN where a per-VRF SID | ||||
| allocation is used (i.e., End.DT4 or End.DT6 behaviors), the same SID is | allocation is used (i.e., End.DT4 or End.DT6 behaviors), the same SID is | |||
| shared across multiple NLRIs thus providing efficient packing. However, | shared across multiple NLRIs, thus providing efficient packing. However, | |||
| for certain other types of BGP Services like EVPN VPWS where a per-PW | for certain other types of BGP Services, like EVPN Virtual Private Wire | |||
| Service (VPWS) where a per-PW | ||||
| SID allocation is required (i.e., End.DX2 behavior), each NLRI would | SID allocation is required (i.e., End.DX2 behavior), each NLRI would | |||
| have its own unique SID thereby resulting in inefficient packing.</t> | have its own unique SID, thereby resulting in inefficient packing.</t> | |||
| <t> To achieve efficient packing, this document allows either 1) the | ||||
| <t>To achieve efficient packing, this document allows the encoding of | encoding of the SRv6 Service SID as a whole in the SRv6 Services | |||
| the SRv6 Service SID either as a whole in the SRv6 Services TLVs or the | TLVs or 2) the encoding of only the common part of the SRv6 SID (e.g., | |||
| encoding of only the common part of the SRv6 SID (e.g., Locator) in the | Locator) in the SRv6 Services TLVs and the encoding of the variable | |||
| SRv6 Services TLVs and encoding the variable (e.g., Function or Argument | (e.g., Function or Argument parts) in the existing label fields | |||
| parts) in the existing label fields specific to that service encoding. | specific to that service encoding. | |||
| This later form of encoding is referred to as the Transposition Scheme | This later form of encoding is referred to as the Transposition Scheme, | |||
| where the SRv6 SID Structure Sub-Sub-TLV describes the sizes of the | where the SRv6 SID Structure Sub-Sub-TLV describes the sizes of the | |||
| parts of the SRv6 SID and also indicates the offset of the variable part | parts of the SRv6 SID and also indicates the offset of the variable part | |||
| along with its length in SRv6 SID value. The use of the Transposition | along with its length in the SRv6 SID value. The use of the Transposition | |||
| Scheme is RECOMMENDED for the specific service encodings that allow it | Scheme is <bcp14>RECOMMENDED</bcp14> for the specific service encodings th | |||
| as described further in <xref target="L3BGP"/> and <xref | at allow it, | |||
| target="EVPNBGP"/>.</t> | as described further in Sections <xref target="L3BGP" format="counter"/> a | |||
| nd <xref target="EVPNBGP" format="counter"/>.</t> | ||||
| <t>As an example, for the EVPN VPWS service prefix described further in | <t>As an example, for the EVPN VPWS service prefix described further in | |||
| <xref target="PEREVI"/>, the Function part of the SRv6 SID is encoded in | <xref target="PEREVI" format="default"/>, the Function part of the SRv6 SI | |||
| the MPLS Label field of the NLRI and the SID value in the SRv6 Services | D is encoded in | |||
| the MPLS Label field of the NLRI, and the SID value in the SRv6 Services | ||||
| TLV carries only the Locator part with the SRv6 SID Structure | TLV carries only the Locator part with the SRv6 SID Structure | |||
| Sub-Sub-TLV. The SRv6 SID Structure Sub-Sub-TLV defines the lengths of | Sub-Sub-TLV. The SRv6 SID Structure Sub-Sub-TLV defines the lengths of | |||
| Locator Block, Locator Node, and Function parts (Arguments are not | Locator Block, Locator Node, and Function parts (Arguments are not | |||
| applicable for the End.DX2 behavior). Transposition Offset indicates the | applicable for the End.DX2 behavior). Transposition Offset indicates the | |||
| bit position and Transposition Length indicates the number of bits that | bit position, and Transposition Length indicates the number of bits that | |||
| are being taken out of the SID and put into the label field.</t> | are being taken out of the SID and put into the label field.</t> | |||
| <t>In yet another example, for the EVPN Ethernet Auto-Discovery (A-D) per | ||||
| <t>In yet another example, for the EVPN Ethernet A-D per Ethernet | Ethernet | |||
| Segment (ES) route described further in <xref target="PERES"/>, only the | Segment (ES) route described further in <xref target="PERES" format="defau | |||
| lt"/>, only the | ||||
| Argument of the SID needs to be signaled. This Argument part of the SRv6 | Argument of the SID needs to be signaled. This Argument part of the SRv6 | |||
| SID MAY be transposed in the Ethernet Segment Identifier (ESI) Label | SID <bcp14>MAY</bcp14> be transposed in the Ethernet Segment Identifier (E | |||
| field of the ESI Label Extended Community and the SID value in the SRv6 | SI) Label | |||
| Services TLV is set to 0 along with the inclusion of SRv6 SID Structure | field of the ESI Label extended community, and the SID value in the SRv6 | |||
| Services TLV is set to 0 along with the inclusion of the SRv6 SID Structur | ||||
| e | ||||
| Sub-Sub-TLV. The SRv6 SID Structure Sub-Sub-TLV defines the lengths of | Sub-Sub-TLV. The SRv6 SID Structure Sub-Sub-TLV defines the lengths of | |||
| Locator Block, Locator Node, Function and Argument parts. The offset and | Locator Block, Locator Node, Function, and Argument parts. The offset and | |||
| length of the Argument part SID value moved to label field is set in | length of the Argument part SID value moved to the label field is set in | |||
| transposition offset and length of SID structure TLV. The receiving | transposition offset and length of the SID Structure TLV. The receiving | |||
| router is then able to put together the entire SRv6 Service SID (e.g., | router is then able to put together the entire SRv6 Service SID (e.g., | |||
| for the End.DT2M behavior) placing the label value received in the ESI | for the End.DT2M behavior), placing the label value received in the ESI | |||
| Label field of the Ethernet A-D per ES route into the correct | Label field of the Ethernet A-D per ES route into the correct | |||
| transposition offset and length in the SRv6 SID with the End.DT2M | transposition offset and length in the SRv6 SID with the End.DT2M | |||
| behavior received for an EVPN Route Type 3 value.</t> | behavior received for an EVPN Route Type 3 value.</t> | |||
| </section> | </section> | |||
| <section anchor="L3BGP" numbered="true" toc="default"> | ||||
| <section anchor="L3BGP" title="BGP based L3 Service over SRv6"> | <name>BGP-Based L3 Service over SRv6</name> | |||
| <t>BGP egress nodes (egress PEs) advertise a set of reachable prefixes. | <t>BGP egress nodes (egress PEs) advertise a set of reachable prefixes. | |||
| Standard BGP update propagation schemes <xref target="RFC4271"/>, which | Standard BGP update propagation schemes <xref target="RFC4271" format="def | |||
| may make use of route reflectors <xref target="RFC4456"/>, are used to | ault"/>, which | |||
| may make use of route reflectors <xref target="RFC4456" format="default"/> | ||||
| , are used to | ||||
| propagate these prefixes. BGP ingress nodes (ingress PEs) receive these | propagate these prefixes. BGP ingress nodes (ingress PEs) receive these | |||
| advertisements and may add the prefix to the RIB in an appropriate | advertisements and may add the prefix to the RIB in an appropriate | |||
| VRF.</t> | VRF.</t> | |||
| <t>Egress PEs that support SRv6-based L3 services advertise overlay | ||||
| <t>Egress PEs which supports SRv6 based L3 services advertises overlay | ||||
| service prefixes along with a Service SID enclosed in an SRv6 L3 Service | service prefixes along with a Service SID enclosed in an SRv6 L3 Service | |||
| TLV within the BGP Prefix-SID Attribute. This TLV serves two purposes - | TLV within the BGP Prefix-SID attribute. This TLV serves two purposes -- | |||
| first, it indicates that the egress PE supports SRv6 overlay and the BGP | first, it indicates that the egress PE supports SRv6 overlay, and the BGP | |||
| ingress PE receiving this route MUST perform IPv6 encapsulation and | ingress PE receiving this route <bcp14>MUST</bcp14> perform IPv6 encapsula | |||
| insert an SRH <xref target="RFC8754"/> when required; second, it | tion and | |||
| insert an SRH <xref target="RFC8754" format="default"/> when required; sec | ||||
| ond, it | ||||
| indicates the value of the Service SID to be used in the | indicates the value of the Service SID to be used in the | |||
| encapsulation.</t> | encapsulation.</t> | |||
| <t>Thus, the Service SID signaled only has local significance at the | ||||
| <t>The Service SID thus signaled only has local significance at the | egress PE, where it may be allocated or configured on a per-Customer-Edge | |||
| egress PE, where it may be allocated or configured on a per-CE or | (CE) or | |||
| per-VRF basis. In practice, the SID may encode a cross-connect to a | per-VRF basis. In practice, the SID may encode a cross-connect to a | |||
| specific Address Family table (End.DT) or next-hop/interface (End.DX) as | specific address family table (End.DT) or next hop / interface (End.DX), a | |||
| defined in <xref target="RFC8986"/>.</t> | s | |||
| defined in <xref target="RFC8986" format="default"/>.</t> | ||||
| <t>The SRv6 Service SID SHOULD be routable (refer section 3.3 of <xref | <t>The SRv6 Service SID <bcp14>SHOULD</bcp14> be routable (refer to <xref | |||
| target="RFC8986"/>) within the AS of the egress PE and serves the dual | target="RFC8986" section="3.3" sectionFormat="of" format="default"/>) within the | |||
| Autonomous System (AS) of the egress PE and serves the dual | ||||
| purpose of providing reachability between ingress PE and egress PE while | purpose of providing reachability between ingress PE and egress PE while | |||
| also encoding the SRv6 Endpoint behavior.</t> | also encoding the SRv6 Endpoint Behavior.</t> | |||
| <t>When steering for SRv6 services is based on shortest path forwarding | <t>When steering for SRv6 services is based on shortest path forwarding | |||
| (e.g., best-effort or IGP Flexible Algorithm <xref | (e.g., best effort or IGP Flexible Algorithm <xref target="I-D.ietf-lsr-fl | |||
| target="I-D.ietf-lsr-flex-algo"/>) to the egress PE, the ingress PE | ex-algo" format="default"/>) to the egress PE, the ingress PE | |||
| encapsulates the IPv4 or IPv6 customer packet in an outer IPv6 header | encapsulates the IPv4 or IPv6 customer packet in an outer IPv6 header | |||
| (using H.Encaps or H.Encaps.Red flavors specified in <xref | (using H.Encaps or H.Encaps.Red flavors specified in <xref target="RFC8986 | |||
| target="RFC8986"/>) where the destination address is the SRv6 Service | " format="default"/>), where the destination address is the SRv6 Service | |||
| SID associated with the related BGP route update. Therefore, the ingress | SID associated with the related BGP route update. Therefore, the ingress | |||
| PE MUST perform resolvability check for the SRv6 Service SID before | PE <bcp14>MUST</bcp14> perform a resolvability check for the SRv6 Service SID before | |||
| considering the received prefix for the BGP best path computation. The | considering the received prefix for the BGP best path computation. The | |||
| resolvability is evaluated as per <xref target="RFC4271"/>. If the SRv6 | resolvability is evaluated as per <xref target="RFC4271" format="default"/ >. If the SRv6 | |||
| SID is reachable via more than one forwarding table, local policy is | SID is reachable via more than one forwarding table, local policy is | |||
| used to determine which table to use. The result of an SRv6 Service SID | used to determine which table to use. The result of an SRv6 Service SID | |||
| resolvability (e.g., when provided via IGP Flexible Algorithm) can be | resolvability (e.g., when provided via IGP Flexible Algorithm) can be | |||
| ignored if the ingress PE has a local policy that allows an alternate | ignored if the ingress PE has a local policy that allows an alternate | |||
| steering mechanism to reach the egress PE. The details of such steering | steering mechanism to reach the egress PE. The details of such steering | |||
| mechanisms are outside the scope of this document.</t> | mechanisms are outside the scope of this document.</t> | |||
| <t>For service over SRv6 core, the egress PE sets the BGP next hop to one | ||||
| <t>For service over SRv6 core, the egress PE sets the next-hop to one of | of | |||
| its IPv6 addresses. Such an address MAY be covered by the SRv6 Locator | its IPv6 addresses. Such an address <bcp14>MAY</bcp14> be covered by the S | |||
| from which the SRv6 Service SID is allocated. The next-hop is used for | Rv6 Locator | |||
| from which the SRv6 Service SID is allocated. The BGP next hop is used for | ||||
| tracking the reachability of the egress PE based on existing BGP | tracking the reachability of the egress PE based on existing BGP | |||
| procedures.</t> | procedures.</t> | |||
| <t>When the BGP route received at an ingress PE is colored with a | ||||
| <t>When the BGP route is received at an ingress PE is colored with a | Color Extended Community and a valid SRv6 Policy is available, the | |||
| Color Extended community and a valid SRv6 Policy is available, the | steering for service flows is performed as described in <xref target="I-D. | |||
| steering for service flows is performed as described in Section 8 of | ietf-spring-segment-routing-policy" section="8" sectionFormat="of" format="defau | |||
| <xref target="I-D.ietf-spring-segment-routing-policy"/>. When the | lt"/>. When the | |||
| ingress PE determines (with the help of SRv6 SID Structure) that the | ingress PE determines (with the help of the SRv6 SID Structure) that the | |||
| Service SID belongs to the same SRv6 Locator as the last SRv6 SID (of | Service SID belongs to the same SRv6 Locator as the last SRv6 SID (of | |||
| the egress PE) in the SR Policy segment list, it MAY exclude that last | the egress PE) in the SR Policy segment list, it <bcp14>MAY</bcp14> exclud e that last | |||
| SRv6 SID when steering the service flow. For example, the effective | SRv6 SID when steering the service flow. For example, the effective | |||
| segment list of the SRv6 Policy associated with SID list <S1, S2, | segment list of the SRv6 Policy associated with SID list <S1, S2, | |||
| S3> would be <S1, S2, S3-Service-SID>.</t> | S3> would be <S1, S2, S3-Service-SID>.</t> | |||
| <section anchor="L3BGPVPNv4" numbered="true" toc="default"> | ||||
| <section anchor="L3BGPVPNv4" title="IPv4 VPN Over SRv6 Core"> | <name>IPv4 VPN over SRv6 Core</name> | |||
| <t>The MP_REACH_NLRI over SRv6 core is encoded according to IPv4 VPN | <t>The MP_REACH_NLRI over SRv6 core is encoded according to IPv4 VPN | |||
| Over IPv6 Core defined in <xref target="RFC8950"/>.</t> | unicast over IPv6 core defined in <xref target="RFC8950" format="default"/>.< | |||
| /t> | ||||
| <t>Label field of IPv4-VPN NLRI is encoded as specified in <xref | <t>The label field of IPv4-VPN NLRI is encoded as specified in <xref tar | |||
| target="RFC8277"/> with the 20-bit Label Value set to the whole or a | get="RFC8277" format="default"/> with the 20-bit Label Value set to the whole or | |||
| a | ||||
| portion of the Function part of the SRv6 SID when the Transposition | portion of the Function part of the SRv6 SID when the Transposition | |||
| Scheme of encoding (<xref target="SIDENCODE"/>) is used and otherwise | Scheme of encoding (<xref target="SIDENCODE" format="default"/>) is used | |||
| set to Implicit NULL. When using the Transposition Scheme, the | ; otherwise, | |||
| Transposition Length MUST be less than or equal to 20 and less than or | it is set to Implicit NULL. When using the Transposition Scheme, the | |||
| equal to the Function Length.</t> | Transposition Length <bcp14>MUST</bcp14> be less than or equal to 20 and | |||
| less than or | ||||
| <t>SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. The | equal to the FL.</t> | |||
| SRv6 Endpoint behavior SHOULD be one of these: End.DX4, End.DT4, | <t>The SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. T | |||
| he | ||||
| SRv6 Endpoint Behavior <bcp14>SHOULD</bcp14> be one of these: End.DX4, E | ||||
| nd.DT4, or | ||||
| End.DT46.</t> | End.DT46.</t> | |||
| </section> | </section> | |||
| <section anchor="L3BGPVPNv6" numbered="true" toc="default"> | ||||
| <section anchor="L3BGPVPNv6" title="IPv6 VPN Over SRv6 Core "> | <name>IPv6 VPN over SRv6 Core</name> | |||
| <t>The MP_REACH_NLRI over SRv6 core is encoded according to IPv6 VPN | <t>The MP_REACH_NLRI over SRv6 core is encoded according to IPv6 VPN | |||
| over IPv6 Core is defined in <xref target="RFC4659"/>.</t> | over IPv6 core, as defined in <xref target="RFC4659" format="default"/>. | |||
| </t> | ||||
| <t>Label field of the IPv6-VPN NLRI is encoded as specified in <xref | <t>The label field of the IPv6-VPN NLRI is encoded as specified in <xref | |||
| target="RFC8277"/> with the 20-bit Label Value set to the whole or a | target="RFC8277" format="default"/> with the 20-bit Label Value set to the whol | |||
| e or a | ||||
| portion of the Function part of the SRv6 SID when the Transposition | portion of the Function part of the SRv6 SID when the Transposition | |||
| Scheme of encoding (<xref target="SIDENCODE"/>) is used and otherwise | Scheme of encoding (<xref target="SIDENCODE" format="default"/>) is used | |||
| set to Implicit NULL. When using the Transposition Scheme, the | ; otherwise, | |||
| Transposition Length MUST be less than or equal to 20 and less than or | it is set to Implicit NULL. When using the Transposition Scheme, the | |||
| equal to the Function Length.</t> | Transposition Length <bcp14>MUST</bcp14> be less than or equal to 20 and | |||
| less than or | ||||
| <t>SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. The | equal to the FL.</t> | |||
| SRv6 Endpoint behavior SHOULD be one of these: End.DX6, End.DT6, | <t>The SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. T | |||
| he | ||||
| SRv6 Endpoint Behavior <bcp14>SHOULD</bcp14> be one of these: End.DX6, E | ||||
| nd.DT6, or | ||||
| End.DT46.</t> | End.DT46.</t> | |||
| </section> | </section> | |||
| <section anchor="L3BGPINTv4" numbered="true" toc="default"> | ||||
| <section anchor="L3BGPINTv4" title="Global IPv4 over SRv6 Core"> | <name>Global IPv4 over SRv6 Core</name> | |||
| <t>The MP_REACH_NLRI over SRv6 core is encoded according to IPv4 over | <t>The MP_REACH_NLRI over SRv6 core is encoded according to IPv4 over | |||
| IPv6 Core is defined in <xref target="RFC8950"/>.</t> | IPv6 core, as defined in <xref target="RFC8950" format="default"/>.</t> | |||
| <t>SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. The | <t>SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. The | |||
| SRv6 Endpoint behavior SHOULD be one of these: End.DX4, End.DT4, | SRv6 Endpoint Behavior <bcp14>SHOULD</bcp14> be one of these: End.DX4, E nd.DT4, or | |||
| End.DT46.</t> | End.DT46.</t> | |||
| </section> | </section> | |||
| <section anchor="L3BGPINTv6" numbered="true" toc="default"> | ||||
| <section anchor="L3BGPINTv6" title="Global IPv6 over SRv6 Core"> | <name>Global IPv6 over SRv6 Core</name> | |||
| <t>The MP_REACH_NLRI over SRv6 core is encoded according to <xref | <t>The MP_REACH_NLRI over SRv6 core is encoded according to <xref target | |||
| target="RFC2545"> </xref></t> | ="RFC2545" format="default"> </xref>.</t> | |||
| <t>The SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. T | ||||
| <t>SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. The | he | |||
| SRv6 Endpoint behavior SHOULD be one of these: End.DX6, End.DT6, | SRv6 Endpoint Behavior <bcp14>SHOULD</bcp14> be one of these: End.DX6, E | |||
| nd.DT6, or | ||||
| End.DT46.</t> | End.DT46.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="EVPNBGP" numbered="true" toc="default"> | ||||
| <section anchor="EVPNBGP" title="BGP based Ethernet VPN (EVPN) over SRv6"> | <name>BGP-Based Ethernet VPN (EVPN) over SRv6</name> | |||
| <t><xref target="RFC7432"/> provides an extendable method of building an | <t><xref target="RFC7432" format="default"/> provides an extendable method | |||
| Ethernet VPN (EVPN) overlay. It primarily focuses on MPLS based EVPNs | of building an | |||
| and <xref target="RFC8365"/> extends to IP-based EVPN overlays. <xref | EVPN overlay. It primarily focuses on MPLS-based EVPNs, | |||
| target="RFC7432"/> defines Route Types 1, 2, and 3 which carry prefixes | and <xref target="RFC8365" format="default"/> extends to IP-based EVPN ove | |||
| rlays. <xref target="RFC7432" format="default"/> defines Route Types 1, 2, and 3 | ||||
| , which carry prefixes | ||||
| and MPLS Label fields; the Label fields have a specific use for MPLS | and MPLS Label fields; the Label fields have a specific use for MPLS | |||
| encapsulation of EVPN traffic. Route Type 5 carrying MPLS label | encapsulation of EVPN traffic. Route Type 5 carrying MPLS label | |||
| information (and thus encapsulation information) for EVPN is defined in | information (and thus encapsulation information) for an EVPN is defined in | |||
| <xref target="RFC9136"/>. Route Types 6, 7, and 8 are defined in <xref | <xref target="RFC9136" format="default"/>. Route Types 6, 7, and 8 are def | |||
| target="I-D.ietf-bess-evpn-igmp-mld-proxy"/>.<list style="symbols"> | ined in <xref target="RFC9251" format="default"/>.</t> | |||
| <t>Ethernet Auto-discovery Route (Route Type 1)</t> | <ul spacing="normal"> | |||
| <li>Ethernet Auto-Discovery (A-D) route (Route Type 1)</li> | ||||
| <t>MAC/IP Advertisement Route (Route Type 2)</t> | <li>MAC/IP Advertisement route (Route Type 2)</li> | |||
| <li>Inclusive Multicast Ethernet Tag route (Route Type 3)</li> | ||||
| <t>Inclusive Multicast Ethernet Tag Route (Route Type 3)</t> | <li>Ethernet Segment route (Route Type 4)</li> | |||
| <li>IP Prefix route (Route Type 5)</li> | ||||
| <t>Ethernet Segment route (Route Type 4)</t> | <li>Selective Multicast Ethernet Tag route (Route Type 6)</li> | |||
| <li>Multicast Membership Report Synch route (Route Type 7)</li> | ||||
| <t>IP prefix route (Route Type 5)</t> | <li>Multicast Leave Synch route (Route Type 8)</li> | |||
| </ul> | ||||
| <t>Selective Multicast Ethernet Tag route (Route Type 6)</t> | ||||
| <t>Multicast Membership Report Synch route (Route Type 7)</t> | ||||
| <t>Multicast Leave Synch route (Route Type 8)</t> | ||||
| </list></t> | ||||
| <t>The specifications for other EVPN Route Types are outside the scope | <t>The specifications for other EVPN Route Types are outside the scope | |||
| of this document.</t> | of this document.</t> | |||
| <t>To support SRv6-based EVPN overlays, one or more SRv6 Service SIDs | ||||
| <t>To support SRv6 based EVPN overlays, one or more SRv6 Service SIDs | are advertised with Route Types 1, 2, 3, and 5. The SRv6 Service SID(s) | |||
| are advertised with Route Type 1, 2, 3, and 5. The SRv6 Service SID(s) | per Route Type is advertised in SRv6 L3/L2 Service TLVs within the BGP | |||
| per Route Type are advertised in SRv6 L3/L2 Service TLVs within the BGP | Prefix-SID attribute. Signaling of the SRv6 Service SID(s) serves two | |||
| Prefix-SID Attribute. Signaling of SRv6 Service SID(s) serves two | purposes -- first, it indicates that the BGP egress device supports SRv6 | |||
| purposes - first, it indicates that the BGP egress device supports SRv6 | overlay, and the BGP ingress device receiving this route <bcp14>MUST</bcp1 | |||
| overlay and the BGP ingress device receiving this route MUST perform | 4> perform | |||
| IPv6 encapsulation and insert an SRH <xref target="RFC8754"/> when | IPv6 encapsulation and insert an SRH <xref target="RFC8754" format="defaul | |||
| t"/> when | ||||
| required; second, it indicates the value of the Service SID(s) to be | required; second, it indicates the value of the Service SID(s) to be | |||
| used in the encapsulation.</t> | used in the encapsulation.</t> | |||
| <t>The SRv6 Service SID <bcp14>SHOULD</bcp14> be routable (refer to <xref | ||||
| <t>The SRv6 Service SID SHOULD be routable (refer section 3.3 of <xref | target="RFC8986" section="3.3" sectionFormat="of" format="default"/>) within the | |||
| target="RFC8986"/>) within the AS of the egress PE and serves the dual | AS of the egress PE and serves the dual | |||
| purpose of providing reachability between ingress PE and egress PE while | purpose of providing reachability between the ingress PE and egress PE whi | |||
| also encoding the SRv6 Endpoint behavior.</t> | le | |||
| also encoding the SRv6 Endpoint Behavior.</t> | ||||
| <t>When steering for SRv6 services is based on shortest path forwarding | <t>When steering for SRv6 services is based on shortest path forwarding | |||
| (e.g., best-effort or IGP Flexible Algorithm <xref | (e.g., best effort or IGP Flexible Algorithm <xref target="I-D.ietf-lsr-fl | |||
| target="I-D.ietf-lsr-flex-algo"/>) to the egress PE, the ingress PE | ex-algo" format="default"/>) to the egress PE, the ingress PE | |||
| encapsulates the customer Layer 2 Ethernet packet in an outer IPv6 | encapsulates the customer Layer 2 Ethernet packet in an outer IPv6 | |||
| header (using H.Encaps.L2 or H.Encaps.L2.Red flavors specified in <xref | header (using H.Encaps.L2 or H.Encaps.L2.Red flavors specified in <xref ta | |||
| target="RFC8986"/>) where the destination address is the SRv6 Service | rget="RFC8986" format="default"/>) where the destination address is the SRv6 Ser | |||
| vice | ||||
| SID associated with the related BGP route update. Therefore, the ingress | SID associated with the related BGP route update. Therefore, the ingress | |||
| PE MUST perform resolvability check for the SRv6 Service SID before | PE <bcp14>MUST</bcp14> perform a resolvability check for the SRv6 Service SID before | |||
| considering the received prefix for the BGP best path computation. The | considering the received prefix for the BGP best path computation. The | |||
| resolvability is evaluated as per <xref target="RFC4271"/>. If the SRv6 | resolvability is evaluated as per <xref target="RFC4271" format="default"/ >. If the SRv6 | |||
| SID is reachable via more than one forwarding table, local policy is | SID is reachable via more than one forwarding table, local policy is | |||
| used to determine which table to use. The result of an SRv6 Service SID | used to determine which table to use. The result of an SRv6 Service SID | |||
| resolvability (e.g., when provided via IGP Flexible Algorithm) can be | resolvability (e.g., when provided via IGP Flexible Algorithm) can be | |||
| ignored if the ingress PE has a local policy that allows an alternate | ignored if the ingress PE has a local policy that allows an alternate | |||
| steering mechanism to reach the egress PE. The details of such steering | steering mechanism to reach the egress PE. The details of such steering | |||
| mechanisms are outside the scope of this document.</t> | mechanisms are outside the scope of this document.</t> | |||
| <t>For service over SRv6 core, the egress PE sets the BGP next hop to one | ||||
| <t>For service over SRv6 core, the egress PE sets the next-hop to one of | of its IPv6 addresses. Such an address <bcp14>MAY</bcp14> be covered by | |||
| its IPv6 addresses. Such an address MAY be covered by the SRv6 Locator | the SRv6 Locator | |||
| from which the SRv6 Service SID is allocated. The next-hop is used for | from which the SRv6 Service SID is allocated. The BGP next hop is used for | |||
| tracking the reachability of the egress PE based on existing BGP | tracking the reachability of the egress PE based on existing BGP | |||
| procedures.</t> | procedures.</t> | |||
| <t>When the BGP route received at an ingress PE is colored with a | ||||
| <t>When the BGP route is received at an ingress PE is colored with a | Color Extended Community and a valid SRv6 Policy is available, the | |||
| Color Extended community and a valid SRv6 Policy is available, the | steering for service flows is performed as described in <xref target="I-D. | |||
| steering for service flows is performed as described in Section 8 of | ietf-spring-segment-routing-policy" section="8" sectionFormat="of" format="defau | |||
| <xref target="I-D.ietf-spring-segment-routing-policy"/>. When the | lt"/>. When the | |||
| ingress PE determines (with the help of SRv6 SID Structure) that the | ingress PE determines (with the help of the SRv6 SID Structure) that the | |||
| Service SID belongs to the same SRv6 Locator as the last SRv6 SID (of | Service SID belongs to the same SRv6 Locator as the last SRv6 SID (of | |||
| the egress PE) in the SR Policy segment list, it MAY exclude that last | the egress PE) in the SR Policy segment list, it <bcp14>MAY</bcp14> exclud e that last | |||
| SRv6 SID when steering the service flow. For example, the effective | SRv6 SID when steering the service flow. For example, the effective | |||
| segment list of the SRv6 Policy associated with SID list <S1, S2, | segment list of the SRv6 Policy associated with SID list <S1, S2, | |||
| S3> would be <S1, S2, S3-Service-SID>.</t> | S3> would be <S1, S2, S3-Service-SID>.</t> | |||
| <section anchor="RT1" numbered="true" toc="default"> | ||||
| <section anchor="RT1" | <name>Ethernet Auto-Discovery Route over SRv6 Core</name> | |||
| title="Ethernet Auto-discovery Route over SRv6 Core "> | <t>Ethernet A-D routes are Route Type 1, as defined in | |||
| <t>Ethernet Auto-Discovery (A-D) routes are Route Type 1 defined in | <xref target="RFC7432" format="default"/>, and may be used to achieve | |||
| <xref target="RFC7432"/> and may be used to achieve split-horizon | split-horizon filtering, fast convergence, and aliasing. | |||
| filtering, fast convergence, and aliasing. EVPN Route Type 1 is also | EVPN Route Type 1 is also used in EVPN-VPWS as well as in EVPN-flexible | |||
| used in EVPN- VPWS as well as in EVPN flexible cross-connect; mainly | cross-connect, mainly to advertise point-to-point service IDs.</t> | |||
| used to advertise point-to-point services ID.</t> | ||||
| <t>As a reminder, EVPN Route Type 1 is encoded as follows:</t> | <t>As a reminder, EVPN Route Type 1 is encoded as follows:</t> | |||
| <figure anchor="EVPNRT1"> | ||||
| <figure anchor="EVPNRT1" title="EVPN Route Type 1"> | <name>EVPN Route Type 1</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | RD (8 octets) | | | RD (8 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| |Ethernet Segment Identifier (10 octets)| | | Ethernet Segment Identifier (10 octets)| | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | MPLS label (3 octets) | | | MPLS label (3 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <section anchor="PERES" numbered="true" toc="default"> | ||||
| <section anchor="PERES" title="Ethernet A-D per ES Route"> | <name>Ethernet A-D per ES Route</name> | |||
| <t>Ethernet A-D per ES route NLRI encoding over SRv6 core is as per | <t>Ethernet A-D per ES route NLRI encoding over SRv6 core is as per | |||
| <xref target="RFC7432"/>.</t> | <xref target="RFC7432" format="default"/>.</t> | |||
| <t>The 24-bit ESI Label field of the ESI Label extended community | ||||
| <t>The 24-bit ESI label field of the ESI label extended community | ||||
| carries the whole or a portion of the Argument part of the SRv6 SID | carries the whole or a portion of the Argument part of the SRv6 SID | |||
| when the ESI filtering approach is used along with the Transposition | when the ESI filtering approach is used along with the Transposition | |||
| Scheme of encoding (<xref target="SIDENCODE"/>) and otherwise set to | Scheme of encoding (<xref target="SIDENCODE" format="default"/>); | |||
| Implicit NULL value. In either case, the value is set in the high | otherwise, it is set to Implicit NULL in the higher-order 20 bits (i.e. | |||
| order 20 bits (e.g., as 0x000030 in the case of Implicit NULL). When | , as 0x000030). In either case, the value is set in the 24 bits. When | |||
| using the Transposition Scheme, the Transposition Length MUST be | using the Transposition Scheme, the Transposition Length <bcp14>MUST</ | |||
| less than or equal to 24 and less than or equal to the Argument | bcp14> be | |||
| Length.</t> | less than or equal to 24 and less than or equal to the AL.</t> | |||
| <t>A Service SID enclosed in an SRv6 L2 Service TLV within the BGP | <t>A Service SID enclosed in an SRv6 L2 Service TLV within the BGP | |||
| Prefix-SID attribute is advertised along with the A-D route. The | Prefix-SID attribute is advertised along with the A-D route. The | |||
| SRv6 Endpoint behavior SHOULD be End.DT2M. When the ESI filtering | SRv6 Endpoint Behavior <bcp14>SHOULD</bcp14> be End.DT2M. When the ESI | |||
| approach is used, the Service SID is used to signal Arg.FE2 SID | filtering | |||
| Argument for applicable End.DT2M behavior <xref target="RFC8986"/>. | approach is used, the Service SID is used to signal the Arg.FE2 SID | |||
| When the local-bias approach <xref target="RFC8365"/> is used, the | Argument for applicable End.DT2M behavior <xref target="RFC8986" forma | |||
| Service SID MAY be of value 0.</t> | t="default"/>. | |||
| When the local-bias approach <xref target="RFC8365" format="default"/> | ||||
| is used, the | ||||
| Service SID <bcp14>MAY</bcp14> be of value 0.</t> | ||||
| </section> | </section> | |||
| <section anchor="PEREVI" numbered="true" toc="default"> | ||||
| <section anchor="PEREVI" title="Ethernet A-D per EVI Route"> | <name>Ethernet A-D per EVI Route</name> | |||
| <t>Ethernet A-D per EVI route NLRI encoding over SRv6 core is | <t>Ethernet A-D per EVPN Instance (EVI) route NLRI encoding over SRv6 | |||
| similar to <xref target="RFC7432"/> and <xref target="RFC8214"/> | core is | |||
| similar to what is described in <xref target="RFC7432" format="default | ||||
| "/> and <xref target="RFC8214" format="default"/> | ||||
| with the following change:</t> | with the following change:</t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>MPLS Label:</dt> | |||
| <t>MPLS Label: 24-bit field carries the whole or a portion of | <dd>The 24-bit field carries the whole or a portion of | |||
| the Function part of the SRv6 SID when the Transposition Scheme | the Function part of the SRv6 SID when the Transposition Scheme | |||
| of encoding (<xref target="SIDENCODE"/>) is used and otherwise | of encoding (<xref target="SIDENCODE" format="default"/>) is used; | |||
| set to Implicit NULL value. In either case, the value is set in | otherwise, it is set to Implicit NULL in the higher-order 20 bits | |||
| the high order 20 bits (e.g., as 0x000030 in the case of | (i.e., as 0x000030). In either case, the value is set in the 24 bits. When using | |||
| Implicit NULL). When using the Transposition Scheme, the | the Transposition Scheme, the | |||
| Transposition Length MUST be less than or equal to 24 and less | Transposition Length <bcp14>MUST</bcp14> be less than or equal to | |||
| than or equal to the Function Length.</t> | 24 and less | |||
| </list></t> | than or equal to the FL.</dd> | |||
| </dl> | ||||
| <t>A Service SID enclosed in an SRv6 L2 Service TLV within the BGP | <t>A Service SID enclosed in an SRv6 L2 Service TLV within the BGP | |||
| Prefix-SID attribute is advertised along with the A-D route. The | Prefix-SID attribute is advertised along with the A-D route. The | |||
| SRv6 Endpoint behavior SHOULD be one of these: End.DX2, End.DX2V, | SRv6 Endpoint Behavior <bcp14>SHOULD</bcp14> be one of these: End.DX2, End.DX2V, or | |||
| End.DT2U.</t> | End.DT2U.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="RT2" numbered="true" toc="default"> | ||||
| <section anchor="RT2" title="MAC/IP Advertisement Route over SRv6 Core"> | <name>MAC/IP Advertisement Route over SRv6 Core</name> | |||
| <t>EVPN Route Type 2 is used to advertise unicast traffic MAC+IP | <t>EVPN Route Type 2 is used to advertise unicast traffic Media Access C | |||
| address reachability through MP-BGP to all other PEs in a given EVPN | ontrol (MAC) | |||
| + IP address reachability through MP-BGP to all other PEs in a given EVPN | ||||
| instance.</t> | instance.</t> | |||
| <t>As a reminder, EVPN Route Type 2 is encoded as follows:</t> | <t>As a reminder, EVPN Route Type 2 is encoded as follows:</t> | |||
| <figure anchor="EVPNRT2"> | ||||
| <figure anchor="EVPNRT2" title="EVPN Route Type 2"> | <name>EVPN Route Type 2</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | RD (8 octets) | | | RD (8 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| |Ethernet Segment Identifier (10 octets)| | | Ethernet Segment Identifier (10 octets)| | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | MAC Address Length (1 octet) | | | MAC Address Length (1 octet) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | MAC Address (6 octets) | | | MAC Address (6 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | IP Address Length (1 octet) | | | IP Address Length (1 octet) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | IP Address (0, 4, or 16 octets) | | | IP Address (0, 4, or 16 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | MPLS Label1 (3 octets) | | | MPLS Label1 (3 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | MPLS Label2 (0 or 3 octets) | | | MPLS Label2 (0 or 3 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>NLRI encoding over SRv6 core is similar to what is described in <xref | ||||
| <t>NLRI encoding over SRv6 core is similar to <xref target="RFC7432"/> | target="RFC7432" | |||
| with the following changes:</t> | format="default"/> with the following changes:</t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>MPLS Label1:</dt> | |||
| <t>MPLS Label1: Is associated with the SRv6 L2 Service TLV. This | <dd>This is associated with the SRv6 L2 Service TLV. This | |||
| 24-bit field carries the whole or a portion of the Function part | 24-bit field carries the whole or a portion of the Function part | |||
| of the SRv6 SID when the Transposition Scheme of encoding (<xref | of the SRv6 SID when the Transposition Scheme of encoding (<xref tar | |||
| target="SIDENCODE"/>) is used and otherwise set to Implicit NULL | get="SIDENCODE" format="default"/>) is used; otherwise, it is set to Implicit NU | |||
| value. In either case, the value is set in the high order 20 bits | LL in the higher-order 20 bits (i.e., as 0x000030). In either case, the value is | |||
| (e.g., as 0x000030 in the case of Implicit NULL). When using the | set in the 24 bits. When using the | |||
| Transposition Scheme, the Transposition Length MUST be less than | Transposition Scheme, the Transposition Length <bcp14>MUST</bcp14> b | |||
| or equal to 24 and less than or equal to the Function Length.</t> | e less than | |||
| or equal to 24 and less than or equal to the FL.</dd> | ||||
| <t>MPLS Label2: Is associated with the SRv6 L3 Service TLV. This | <dt>MPLS Label2:</dt> | |||
| <dd>This is associated with the SRv6 L3 Service TLV. This | ||||
| 24-bit field carries the whole or a portion of the Function part | 24-bit field carries the whole or a portion of the Function part | |||
| of the SRv6 SID when the Transposition Scheme of encoding (<xref | of the SRv6 SID when the Transposition Scheme of encoding (<xref tar | |||
| target="SIDENCODE"/>) is used and otherwise set to Implicit NULL | get="SIDENCODE" format="default"/>) is used; otherwise, it is set to Implicit NU | |||
| value. In either case, the value is set in the high order 20 bits | LL in the higher-order 20 bits (i.e., as 0x000030). In either case, the value is | |||
| (e.g., as 0x000030 in the case of Implicit NULL). When using the | set in the 24 bits. When using the | |||
| Transposition Scheme, the Transposition Length MUST be less than | Transposition Scheme, the Transposition Length <bcp14>MUST</bcp14> b | |||
| or equal to 24 and less than or equal to the Function Length.</t> | e less than | |||
| </list></t> | or equal to 24 and less than or equal to the FL.</dd> | |||
| </dl> | ||||
| <t>Service SIDs enclosed in SRv6 L2 Service TLV and optionally in SRv6 | <t>Service SIDs enclosed in the SRv6 L2 Service TLV and optionally in th | |||
| L3 Service TLV within the BGP Prefix-SID attribute is advertised along | e SRv6 | |||
| L3 Service TLV within the BGP Prefix-SID attribute are advertised along | ||||
| with the MAC/IP Advertisement route.</t> | with the MAC/IP Advertisement route.</t> | |||
| <t>Described below are different types of Route Type 2 | <t>Described below are different types of Route Type 2 | |||
| advertisements.</t> | advertisements.</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="MAC/IP Advertisement Route with MAC Only"> | <name>MAC/IP Advertisement Route with MAC Only</name> | |||
| <t><list style="symbols"> | <dl newline="true" spacing="normal"> | |||
| <t>MPLS Label1: Is associated with the SRv6 L2 Service TLV. This | <dt>MPLS Label1:</dt> | |||
| <dd>This is associated with the SRv6 L2 Service TLV. This | ||||
| 24-bit field carries the whole or a portion of the Function part | 24-bit field carries the whole or a portion of the Function part | |||
| of the SRv6 SID when the Transposition Scheme of encoding (<xref | of the SRv6 SID when the Transposition Scheme of encoding (<xref t | |||
| target="SIDENCODE"/>) is used and otherwise set to Implicit NULL | arget="SIDENCODE" format="default"/>) is used; otherwise, it is set to Implicit | |||
| value. In either case, the value is set in the high order 20 | NULL in the higher-order 20 bits (i.e., as 0x000030). In either case, the value | |||
| bits (e.g., as 0x000030 in the case of Implicit NULL). When | is set in the 24 bits. When | |||
| using the Transposition Scheme, the Transposition Length MUST be | using the Transposition Scheme, the Transposition Length <bcp14>MU | |||
| less than or equal to 24 and less than or equal to the Function | ST</bcp14> be | |||
| Length.</t> | less than or equal to 24 and less than or equal to the FL.</dd> | |||
| </list></t> | </dl> | |||
| <t>A Service SID enclosed in an SRv6 L2 Service TLV within the BGP | <t>A Service SID enclosed in an SRv6 L2 Service TLV within the BGP | |||
| Prefix-SID attribute is advertised along with the route. The SRv6 | Prefix-SID attribute is advertised along with the route. The SRv6 | |||
| Endpoint behavior SHOULD be one of these: End.DX2, End.DT2U.</t> | Endpoint Behavior <bcp14>SHOULD</bcp14> be one of these: End.DX2 or En d.DT2U.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="MAC/IP Advertisement Route with MAC+IP"> | <name>MAC/IP Advertisement Route with MAC+IP</name> | |||
| <t><list style="symbols"> | <dl newline="true" spacing="normal"> | |||
| <t>MPLS Label1: Is associated with the SRv6 L2 Service TLV. This | <dt>MPLS Label1:</dt> | |||
| <dd>This is associated with the SRv6 L2 Service TLV. This | ||||
| 24-bit field carries the whole or a portion of the Function part | 24-bit field carries the whole or a portion of the Function part | |||
| of the SRv6 SID when the Transposition Scheme of encoding (<xref | of the SRv6 SID when the Transposition Scheme of encoding (<xref | |||
| target="SIDENCODE"/>) is used and otherwise set to Implicit NULL | target="SIDENCODE" format="default"/>) is used; otherwise, it is se | |||
| value. In either case, the value is set in the high order 20 | t to Implicit NULL in the higher-order 20 bits (i.e., as 0x000030). In either ca | |||
| bits (e.g., as 0x000030 in the case of Implicit NULL). When | se, the value is set in the 24 bits. When | |||
| using the Transposition Scheme, the Transposition Length MUST be | using the Transposition Scheme, the Transposition Length <bcp14>MU | |||
| less than or equal to 24 and less than or equal to the Function | ST</bcp14> be | |||
| Length.</t> | less than or equal to 24 and less than or equal to the FL.</dd> | |||
| <dt>MPLS Label2:</dt> | ||||
| <t>MPLS Label2: Is associated with the SRv6 L3 Service TLV. This | <dd>This is associated with the SRv6 L3 Service TLV. This | |||
| 24-bit field carries the whole or a portion of the Function part | 24-bit field carries the whole or a portion of the Function part | |||
| of the SRv6 SID when the Transposition Scheme of encoding (<xref | of the SRv6 SID when the Transposition Scheme of encoding (<xref | |||
| target="SIDENCODE"/>) is used and otherwise set to Implicit NULL | target="SIDENCODE" format="default"/>) is used; otherwise, it is se | |||
| value. In either case, the value is set in the high order 20 | t to Implicit NULL in the higher-order 20 bits (i.e., as 0x000030). In either ca | |||
| bits (e.g., as 0x000030 in the case of Implicit NULL). When | se, the value is set in the 24 bits. When | |||
| using the Transposition Scheme, the Transposition Length MUST be | using the Transposition Scheme, the Transposition Length <bcp14>MU | |||
| less than or equal to 24 and less than or equal to the Function | ST</bcp14> be | |||
| Length.</t> | less than or equal to 24 and less than or equal to the FL.</dd> | |||
| </list></t> | </dl> | |||
| <t>An L2 Service SID enclosed in an SRv6 L2 Service TLV within the | <t>An L2 Service SID enclosed in an SRv6 L2 Service TLV within the | |||
| BGP Prefix-SID attribute is advertised along with the route. In | BGP Prefix-SID attribute is advertised along with the route. In | |||
| addition, an L3 Service SID enclosed in an SRv6 L3 Service TLV | addition, an L3 Service SID enclosed in an SRv6 L3 Service TLV | |||
| within the BGP Prefix-SID attribute MAY also be advertised along | within the BGP Prefix-SID attribute <bcp14>MAY</bcp14> also be adverti | |||
| with the route. The SRv6 Endpoint behavior SHOULD be one of these: | sed along | |||
| for the L2 Service SID - End.DX2, End.DT2U; for the L3 Service SID - | with the route. The SRv6 Endpoint Behavior <bcp14>SHOULD</bcp14> be on | |||
| End.DT46, End.DT4, End.DT6, End.DX4, End.DX6.</t> | e of these: | |||
| for the L2 Service SID, End.DX2 or End.DT2U and for the L3 Service SID | ||||
| , | ||||
| End.DT46, End.DT4, End.DT6, End.DX4, or End.DX6.</t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="RT3" numbered="true" toc="default"> | ||||
| <section anchor="RT3" | <name>Inclusive Multicast Ethernet Tag Route over SRv6 Core</name> | |||
| title="Inclusive Multicast Ethernet Tag Route over SRv6 Core"> | ||||
| <t>EVPN Route Type 3 is used to advertise multicast traffic | <t>EVPN Route Type 3 is used to advertise multicast traffic | |||
| reachability information through MP-BGP to all other PEs in a given | reachability information through MP-BGP to all other PEs in a given | |||
| EVPN instance.</t> | EVPN instance.</t> | |||
| <t>As a reminder, EVPN Route Type 3 is encoded as follows:</t> | <t>As a reminder, EVPN Route Type 3 is encoded as follows:</t> | |||
| <figure anchor="EVPNRT3"> | ||||
| <t><figure anchor="EVPNRT3" title="EVPN Route Type 3"> | <name>EVPN Route Type 3</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | RD (8 octets) | | | RD (8 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | IP Address Length (1 octet) | | | IP Address Length (1 octet) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Originating Router's IP Address | | | Originating Router's IP Address | | |||
| | (4 or 16 octets) | | | (4 or 16 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| skipping to change at line 971 ¶ | skipping to change at line 835 ¶ | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | RD (8 octets) | | | RD (8 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | IP Address Length (1 octet) | | | IP Address Length (1 octet) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Originating Router's IP Address | | | Originating Router's IP Address | | |||
| | (4 or 16 octets) | | | (4 or 16 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure></t> | </figure> | |||
| <t>NLRI encoding over SRv6 core is similar to what is described in <xref | ||||
| <t>NLRI encoding over SRv6 core is similar to <xref | target="RFC7432" format="default"/>.</t> | |||
| target="RFC7432"/>.</t> | <t>The P-Multicast Service Interface (PMSI) Tunnel Attribute <xref targe | |||
| t="RFC6514" format="default"/> is used to identify | ||||
| <t>PMSI Tunnel Attribute <xref target="RFC6514"/> is used to identify | the Provider tunnel (P-tunnel) used for sending Broadcast, Unknown Unica | |||
| the P-tunnel used for sending broadcast, unknown unicast, or multicast | st, or Multicast | |||
| (BUM) traffic. The format of PMSI Tunnel Attribute is encoded as | (BUM) traffic. The format of the PMSI Tunnel Attribute is encoded as | |||
| follows over SRv6 Core: <figure anchor="PMSITA" | follows over SRv6 core: </t> | |||
| title="PMSI Tunnel Attribute"> | <figure anchor="PMSITA"> | |||
| <artwork><![CDATA[ +---------------------------------- | <name>PMSI Tunnel Attribute</name> | |||
| -----+ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +---------------------------------------+ | ||||
| | Flag (1 octet) | | | Flag (1 octet) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Tunnel Type (1 octet) | | | Tunnel Type (1 octet) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | MPLS label (3 octet) | | | MPLS label (3 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Tunnel Identifier (variable) | | | Tunnel Identifier (variable) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure><list style="symbols"> | </figure> | |||
| <t>Flag: zero value defined per <xref target="RFC7432"/></t> | <dl newline="true" spacing="normal"> | |||
| <dt>Flag:</dt> | ||||
| <t>Tunnel Type: defined per <xref target="RFC6514"/></t> | <dd>This field has a value of 0, as defined per <xref target="RFC7432" | |||
| format="default"/>.</dd> | ||||
| <t>MPLS label: This 24-bit field carries the whole or a portion of | <dt>Tunnel Type:</dt> | |||
| <dd>This field is defined per <xref target="RFC6514" format="default"/> | ||||
| .</dd> | ||||
| <dt>MPLS label:</dt> | ||||
| <dd>This 24-bit field carries the whole or a portion of | ||||
| the Function part of the SRv6 SID when ingress replication is used | the Function part of the SRv6 SID when ingress replication is used | |||
| and the Transposition Scheme of encoding (<xref | and the Transposition Scheme of encoding (<xref target="SIDENCODE" | |||
| target="SIDENCODE"/>) is used and otherwise, it is set as defined | format="default"/>) is used; otherwise, it is set as defined | |||
| in <xref target="RFC6514"/>. When using the Transposition Scheme, | in <xref target="RFC6514" format="default"/>. When using the Transpo | |||
| the Transposition Length MUST be less than or equal to 24 and less | sition Scheme, | |||
| than or equal to the Function Length.</t> | the Transposition Length <bcp14>MUST</bcp14> be less than or equal t | |||
| o 24 and less | ||||
| <t>Tunnel Identifier: IP address of egress PE</t> | than or equal to the FL.</dd> | |||
| </list>A Service SID enclosed in an SRv6 L2 Service TLV within the | <dt>Tunnel Identifier:</dt> | |||
| <dd>This field is the IP address of egress PE.</dd> | ||||
| </dl> | ||||
| <t>A Service SID enclosed in an SRv6 L2 Service TLV within the | ||||
| BGP Prefix-SID attribute is advertised along with the route. The SRv6 | BGP Prefix-SID attribute is advertised along with the route. The SRv6 | |||
| Endpoint behavior SHOULD be End.DT2M.<list style="symbols"> | Endpoint Behavior <bcp14>SHOULD</bcp14> be End.DT2M.</t> | |||
| <t>When ESI-based filtering is used for Multi-Homing or E-Tree | <ul spacing="normal"> | |||
| <li>When ESI-based filtering is used for multihoming or Ethernet Tree | ||||
| (E-Tree) | ||||
| procedures, the ESI Filtering Argument (the Arg.FE2 notation | procedures, the ESI Filtering Argument (the Arg.FE2 notation | |||
| introduced in <xref target="RFC8986"/>) of the Service SID carried | introduced in <xref target="RFC8986" format="default"/>) of the Serv | |||
| along with EVPN Route Type 1 route SHOULD be merged with the | ice SID carried | |||
| applicable End.DT2M SID of Type 3 route advertised by remote PE by | along with EVPN Route Type 1 <bcp14>SHOULD</bcp14> be merged with th | |||
| doing a bit-wise logical-OR operation to create a single SID on | e | |||
| the ingress PE. Details of split-horizon ESI-based filtering | applicable End.DT2M SID of Route Type 3 advertised by the remote PE | |||
| mechanisms for multihoming are described in <xref | by | |||
| target="RFC7432"/>. Details of filtering mechanisms for | doing a bitwise logical-OR operation to create a single SID on | |||
| the ingress PE. Details of split-horizon, ESI-based filtering | ||||
| mechanisms for multihoming are described in <xref target="RFC7432" f | ||||
| ormat="default"/>. Details of filtering mechanisms for | ||||
| Leaf-originated BUM traffic in EVPN E-Tree services are provided | Leaf-originated BUM traffic in EVPN E-Tree services are provided | |||
| in <xref target="RFC8317"/>.</t> | in <xref target="RFC8317" format="default"/>.</li> | |||
| <li>When "local-bias" is used as the multihoming | ||||
| <t>When “local-bias” is used as the Multi-Homing | split-horizon method, the ESI Filtering Argument <bcp14>SHOULD NOT</ | |||
| split-horizon method, the ESI Filtering Argument SHOULD NOT be | bcp14> be | |||
| merged with the corresponding End.DT2M SID on the ingress PE. | merged with the corresponding End.DT2M SID on the ingress PE. | |||
| Details of the “local-bias” procedures are described | Details of the local-bias procedures are described | |||
| in <xref target="RFC8365"/>.</t> | in <xref target="RFC8365" format="default"/>.</li> | |||
| </list></t> | </ul> | |||
| <t>Usage of multicast trees as P-tunnels is outside the scope of this | <t>Usage of multicast trees as P-tunnels is outside the scope of this | |||
| document.</t> | document.</t> | |||
| </section> | </section> | |||
| <section anchor="RT4" numbered="true" toc="default"> | ||||
| <section anchor="RT4" title="Ethernet Segment Route over SRv6 Core"> | <name>Ethernet Segment Route over SRv6 Core</name> | |||
| <t>As a reminder, an Ethernet Segment route (i.e., EVPN Route Type 4) | <t>As a reminder, an Ethernet Segment route (i.e., EVPN Route Type 4) | |||
| is encoded as follows: <figure anchor="EVPNRT4" | is encoded as follows: </t> | |||
| title="EVPN Route Type 4"> | <figure anchor="EVPNRT4"> | |||
| <artwork><![CDATA[ | <name>EVPN Route Type 4</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | RD (8 octets) | | | RD (8 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | IP Address Length (1 octet) | | | IP Address Length (1 octet) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Originating Router's IP Address | | | Originating Router's IP Address | | |||
| | (4 or 16 octets) | | | (4 or 16 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| skipping to change at line 1049 ¶ | skipping to change at line 914 ¶ | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | RD (8 octets) | | | RD (8 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | IP Address Length (1 octet) | | | IP Address Length (1 octet) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| | Originating Router's IP Address | | | Originating Router's IP Address | | |||
| | (4 or 16 octets) | | | (4 or 16 octets) | | |||
| +---------------------------------------+ | +---------------------------------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure></t> | </figure> | |||
| <t>NLRI encoding over SRv6 core is similar to what is described in <xref | ||||
| <t>NLRI encoding over SRv6 core is similar to <xref | target="RFC7432" format="default"/>.</t> | |||
| target="RFC7432"/>.</t> | ||||
| <t>SRv6 Service TLVs within the BGP Prefix-SID attribute are not | <t>SRv6 Service TLVs within the BGP Prefix-SID attribute are not | |||
| advertised along with this route. The processing of the route has not | advertised along with this route. The processing of the route has not | |||
| changed - it remains as described in <xref target="RFC7432"/>.</t> | changed -- it remains as described in <xref target="RFC7432" format="def ault"/>.</t> | |||
| </section> | </section> | |||
| <section anchor="RT5" numbered="true" toc="default"> | ||||
| <section anchor="RT5" title="IP Prefix Route over SRv6 Core"> | <name>IP Prefix Route over SRv6 Core</name> | |||
| <t>EVPN Route Type 5 is used to advertise IP address reachability | <t>EVPN Route Type 5 is used to advertise IP address reachability | |||
| through MP-BGP to all other PEs in a given EVPN instance. The IP | through MP-BGP to all other PEs in a given EVPN instance. The IP | |||
| address may include a host IP prefix or any specific subnet.</t> | address may include a host IP prefix or any specific subnet.</t> | |||
| <t>As a reminder, EVPN Route Type 5 is encoded as follows: </t> | ||||
| <t>As a reminder, EVPN Route Type 5 is encoded as follows: <figure | <figure anchor="EVPNRT5"> | |||
| anchor="EVPNRT5" title="EVPN Route Type 5"> | <name>EVPN Route Type 5</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | RD (8 octets) | | | RD (8 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| |Ethernet Segment Identifier (10 octets)| | | Ethernet Segment Identifier (10 octets)| | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | IP Prefix Length (1 octet) | | | IP Prefix Length (1 octet) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | IP Prefix (4 or 16 octets) | | | IP Prefix (4 or 16 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | GW IP Address (4 or 16 octets) | | | GW IP Address (4 or 16 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| | MPLS Label (3 octets) | | | MPLS Label (3 octets) | | |||
| +---------------------------------------+ | +-----------------------------------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure></t> | </figure> | |||
| <t>NLRI encoding over SRv6 core is similar to what is described in <xref | ||||
| <t>NLRI encoding over SRv6 core is similar to <xref target="RFC9136"/> | target="RFC9136" format="default"/> | |||
| with the following change:</t> | with the following change:</t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t><list style="symbols"> | <dt>MPLS Label:</dt> | |||
| <t>MPLS Label: This 24-bit field carries the whole or a portion of | <dd>This 24-bit field carries the whole or a portion of | |||
| the Function part of the SRv6 SID when the Transposition Scheme of | the Function part of the SRv6 SID when the Transposition Scheme of | |||
| encoding (<xref target="SIDENCODE"/>) is used and otherwise set to | encoding (<xref target="SIDENCODE" format="default"/>) is used; | |||
| Implicit NULL value. In either case, the value is set in the high | otherwise, it is set to Implicit NULL in the higher-order 20 bits (i. | |||
| order 20 bits (e.g., as 0x000030 in the case of Implicit NULL). | e., as 0x000030). In either case, the value is set in the 24 bits. | |||
| When using the Transposition Scheme, the Transposition Length MUST | When using the Transposition Scheme, the Transposition Length <bcp14 | |||
| be less than or equal to 24 and less than or equal to the Function | >MUST</bcp14> | |||
| Length.</t> | be less than or equal to 24 and less than or equal to the FL.</dd> | |||
| </list></t> | </dl> | |||
| <t>The SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. T | ||||
| <t>SRv6 Service SID is encoded as part of the SRv6 L3 Service TLV. The | he | |||
| SRv6 Endpoint behavior SHOULD be one of these: End.DT4, End.DT6, | SRv6 Endpoint Behavior <bcp14>SHOULD</bcp14> be one of these: End.DT4, E | |||
| End.DT46, End.DX4, End.DX6.</t> | nd.DT6, | |||
| End.DT46, End.DX4, or End.DX6.</t> | ||||
| </section> | </section> | |||
| <section anchor="RT678" numbered="true" toc="default"> | ||||
| <section anchor="RT678" | <name>EVPN Multicast Routes (Route Types 6, 7, and 8) over SRv6 Core</na | |||
| title="EVPN Multicast Routes (Route Types 6, 7, 8) over SRv6 Core | me> | |||
| "> | ||||
| <t>These routes do not require the advertisement of SRv6 Service TLVs | <t>These routes do not require the advertisement of SRv6 Service TLVs | |||
| along with them. Similar to EVPN Route Type 4, the BGP Nexthop is | along with them. Similar to EVPN Route Type 4, the BGP next hop is | |||
| equal to the IPv6 address of egress PE.</t> | equal to the IPv6 address of egress PE.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ERROR" numbered="true" toc="default"> | ||||
| <section anchor="IMPL" title="Implementation Status"> | <name>Error Handling</name> | |||
| <t>[Note to RFC Editor: This section needs to be removed before | ||||
| publication as RFC.]</t> | ||||
| <t>The <xref target="I-D.matsushima-spring-srv6-deployment-status"/> | ||||
| describes the current deployment and implementation status of SRv6 which | ||||
| also includes the BGP services over SRv6 as specified in this | ||||
| document.</t> | ||||
| </section> | ||||
| <section anchor="ERROR" title="Error Handling"> | ||||
| <t>In case of any errors encountered while processing SRv6 Service TLVs, | <t>In case of any errors encountered while processing SRv6 Service TLVs, | |||
| the details of the error SHOULD be logged for further analysis.</t> | the details of the error <bcp14>SHOULD</bcp14> be logged for further analy | |||
| sis.</t> | ||||
| <t>If multiple instances of SRv6 L3 Service TLV are encountered, all but | <t>If multiple instances of the SRv6 L3 Service TLV are encountered, all b | |||
| the first instance MUST be ignored.</t> | ut | |||
| the first instance <bcp14>MUST</bcp14> be ignored.</t> | ||||
| <t>If multiple instances of SRv6 L2 Service TLV are encountered, all but | <t>If multiple instances of the SRv6 L2 Service TLV are encountered, all b | |||
| the first instance MUST be ignored.</t> | ut | |||
| the first instance <bcp14>MUST</bcp14> be ignored.</t> | ||||
| <t>An SRv6 Service TLV is considered malformed in the following cases: | <t>An SRv6 Service TLV is considered malformed in the following cases:</t> | |||
| <list style="symbols"> | <ul spacing="normal"> | |||
| <t>the TLV Length is less than 1</t> | <li>The TLV Length is less than 1.</li> | |||
| <li>The TLV Length is inconsistent with the length of the BGP Prefix-SID | ||||
| <t>the TLV Length is inconsistent with the length of BGP Prefix-SID | attribute.</li> | |||
| attribute</t> | <li>At least one of the constituent Sub-TLVs is malformed.</li> | |||
| </ul> | ||||
| <t>at least one of the constituent Sub-TLVs is malformed</t> | ||||
| </list></t> | ||||
| <t>An SRv6 Service Sub-TLV is considered malformed in the following | <t>An SRv6 Service Sub-TLV is considered malformed in the following | |||
| cases: <list style="symbols"> | case:</t> | |||
| <t>the Sub-TLV Length is inconsistent with the length of the | <ul spacing="normal"> | |||
| enclosing SRv6 Service TLV</t> | <li>The Sub-TLV Length is inconsistent with the length of the | |||
| </list></t> | enclosing SRv6 Service TLV.</li> | |||
| </ul> | ||||
| <t>An SRv6 SID Information Sub-TLV is considered malformed in the | <t>An SRv6 SID Information Sub-TLV is considered malformed in the | |||
| following cases:<list> | ||||
| <t><list style="symbols"> | ||||
| <t>the Sub-TLV Length is less than 21</t> | ||||
| <t>the Sub-TLV Length is inconsistent with the length of the | ||||
| enclosing SRv6 Service TLV</t> | ||||
| <t>at least one of the constituent Sub-Sub-TLVs is malformed</t> | ||||
| </list></t> | ||||
| </list></t> | ||||
| <t>An SRv6 Service Data Sub-Sub-TLV is considered malformed in the | ||||
| following cases:</t> | following cases:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>The Sub-TLV Length is less than 21.</li> | |||
| <t>the Sub-Sub-TLV Length is inconsistent with the length of the | <li>The Sub-TLV Length is inconsistent with the length of the | |||
| enclosing SRv6 service Sub-TLV</t> | enclosing SRv6 Service TLV.</li> | |||
| </list></t> | <li>At least one of the constituent Sub-Sub-TLVs is malformed.</li> | |||
| </ul> | ||||
| <t>Any TLV or Sub-TLV or Sub-Sub-TLV is not considered malformed because | <t>An SRv6 Service Data Sub-Sub-TLV is considered malformed in the | |||
| following case:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>The Sub-Sub-TLV Length is inconsistent with the length of the | ||||
| enclosing SRv6 service Sub-TLV.</li> | ||||
| </ul> | ||||
| <t>Any TLV, Sub-TLV, or Sub-Sub-TLV is not considered malformed because | ||||
| its Type is unrecognized.</t> | its Type is unrecognized.</t> | |||
| <t>Any TLV, Sub-TLV, or Sub-Sub-TLV is not considered malformed because | ||||
| <t>Any TLV or Sub-TLV or Sub-Sub-TLV is not considered malformed because | ||||
| of failing any semantic validation of its Value field.</t> | of failing any semantic validation of its Value field.</t> | |||
| <t>The SRv6 overlay service requires the Service SID for forwarding. The | ||||
| <t>SRv6 overlay service requires Service SID for forwarding. The | treat-as-withdraw action <xref target="RFC7606" format="default"/> <bcp14> | |||
| treat-as-withdraw action <xref target="RFC7606"/> MUST be performed when | MUST</bcp14> be performed when | |||
| at least one malformed SRV6 Service TLV is present in the BGP Prefix-SID | at least one malformed SRv6 Service TLV is present in the BGP Prefix-SID | |||
| attribute.</t> | attribute.</t> | |||
| <t>The SRv6 SID value in the SRv6 SID Information Sub-TLV is invalid when | ||||
| <t>SRv6 SID value in SRv6 SID Information Sub-TLV is invalid when SID | the SID | |||
| Structure Sub-Sub-TLV transposition length is greater than the number of | Structure Sub-Sub-TLV transposition length is greater than the number of | |||
| bits of the label field or if any of the conditions for the fields of | bits of the label field or if any of the conditions for the fields of | |||
| the sub-sub-TLV as specified in <xref target="SRv6-SID-STRUCTURE"/> is | the Sub-Sub-TLV, as specified in <xref target="SRv6-SID-STRUCTURE" format= | |||
| not met. The transposition offset and length MUST be 0 when the | "default"/>, is | |||
| Sub-Sub-TLV is advertised along with routes where transposition scheme | not met. The transposition offset and length <bcp14>MUST</bcp14> be 0 when | |||
| is not applicable (e.g., for Global IPv6 Service <xref | the | |||
| target="RFC2545"/> where there is no label field). The path having such | Sub-Sub-TLV is advertised along with routes where the Transposition Scheme | |||
| Prefix-SID Attribute without any valid SRv6 SID information MUST be | is not applicable (e.g., for global IPv6 service <xref target="RFC2545" fo | |||
| rmat="default"/> where there is no label field). The path having any such | ||||
| Prefix-SID attribute without any valid SRv6 SID information <bcp14>MUST</b | ||||
| cp14> be | ||||
| considered ineligible during the selection of the best path for the | considered ineligible during the selection of the best path for the | |||
| corresponding prefix.</t> | corresponding prefix.</t> | |||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | ||||
| <section anchor="IANA" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
| <section title="BGP Prefix-SID TLV Types Registry"> | <section numbered="true" toc="default"> | |||
| <name>BGP Prefix-SID TLV Types Registry</name> | ||||
| <t>This document introduces two new TLV Types of the BGP Prefix-SID | <t>This document introduces two new TLV Types of the BGP Prefix-SID | |||
| attribute. IANA has assigned Type values in the registry "BGP | attribute. IANA has assigned Type values in the "BGP | |||
| Prefix-SID TLV Types" as follows: <figure anchor="IANAPFXSIDTYPES" | Prefix-SID TLV Types" subregistry as follows: </t> | |||
| title="BGP Prefix-SID TLV Types"> | <table anchor="IANAPFXSIDTYPES" align="center"> | |||
| <artwork><![CDATA[ Value Type Reference | <name>BGP Prefix-SID TLV Types Subregistry</name> | |||
| -------------------------------------------- | <thead> | |||
| 4 Deprecated <this document> | <tr> | |||
| 5 SRv6 L3 Service TLV <this document> | <th>Value</th> | |||
| 6 SRv6 L2 Service TLV <this document>]]></artwork> | <th>Type</th> | |||
| </figure></t> | <th>Reference</th> | |||
| </tr> | ||||
| <t>The value 4 previously corresponded to the SRv6-VPN SID TLV, which | </thead> | |||
| was specified in previous versions of this document and used by early | <tbody> | |||
| <tr> | ||||
| <td>4</td> | ||||
| <td>Deprecated</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>5</td> | ||||
| <td>SRv6 L3 Service TLV</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>6</td> | ||||
| <td>SRv6 L2 Service TLV</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>Value 4 previously corresponded to the SRv6-VPN SID TLV, which | ||||
| was specified in earlier draft versions of this document and used by ear | ||||
| ly | ||||
| implementations of this specification. It was deprecated and replaced | implementations of this specification. It was deprecated and replaced | |||
| by the SRv6 L3 Service and SRv6 L2 Service TLVs.</t> | by the SRv6 L3 Service and SRv6 L2 Service TLVs.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="SRv6 Service Sub-TLV Types Registry"> | <name>SRv6 Service Sub-TLV Types Registry</name> | |||
| <t>IANA is requested to create and maintain a new registry called | <t>IANA has created and now maintains a new subregistry called | |||
| "SRv6 Service Sub-TLV Types" under the "Border Gateway Protocol (BGP) | "SRv6 Service Sub-TLV Types" under the "Border Gateway Protocol (BGP) | |||
| Parameters" registry. The allocation policy for this registry is: | Parameters" registry. The registration procedures, per <xref target="RFC | |||
| <figure anchor="IANASRV6SVCTYPESAP" | 8126"/>, for this subregistry are according to <xref target="IANASRV6SVCTYPESAP" | |||
| title="SRv6 Service Sub-TLV Types Allocation Policy"> | />. | |||
| <artwork><![CDATA[ 0 : Reserved | </t> | |||
| 1-127 : IETF Review | <table anchor="IANASRV6SVCTYPESAP" align="center"> | |||
| 128-254 : First Come First Served | <name>SRv6 Service Sub-TLV Types Subregistry Registration Procedures</ | |||
| 255 : Reserved]]></artwork> | name> | |||
| </figure></t> | <thead> | |||
| <tr> | ||||
| <t>The following Sub-TLV Type is defined in this document: <figure | <th>Range</th> | |||
| anchor="IANASRV6DATATYPES" title="SRv6 Service Sub-TLV Types"> | <th>Registration Procedures</th> | |||
| <artwork><![CDATA[ Value Type Refer | </tr> | |||
| ence | </thead> | |||
| ---------------------------------------------------- | <tbody> | |||
| 1 SRv6 SID Information Sub-TLV <this document>]]></artwork> | <tr> | |||
| </figure></t> | <td>1-127</td> | |||
| <td>IETF Review</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>128-254</td> | ||||
| <td>First Come First Served</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>255</td> | ||||
| <td>IETF Review</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>IANA has populated this subregistry as follows. Note that the SRv6 SI | ||||
| D Information Sub-TLV | ||||
| is defined in this document: </t> | ||||
| <table anchor="IANASRV6DATATYPES" align="center"> | ||||
| <name>SRv6 Service Sub-TLV Types Subregistry Initial Contents</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th>Value</th> | ||||
| <th>Type</th> | ||||
| <th>Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>0</td> | ||||
| <td>Reserved</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>1</td> | ||||
| <td>SRv6 SID Information Sub-TLV</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>255</td> | ||||
| <td>Reserved</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="SRv6 Service Data Sub-Sub-TLV Types Registry"> | <name>SRv6 Service Data Sub-Sub-TLV Types Registry</name> | |||
| <t>IANA is requested to create and maintain a new registry called | <t>IANA has created and now maintains a new subregistry called | |||
| "SRv6 Service Data Sub-Sub-TLV Types" under the "Border Gateway | "SRv6 Service Data Sub-Sub-TLV Types" under the "Border Gateway | |||
| Protocol (BGP) Parameters" registry. The allocation policy for this | Protocol (BGP) Parameters" registry. The registration procedures for thi | |||
| registry is: <figure anchor="IANASRV6DATASSTYPESAP" | s | |||
| title="SRv6 Service Data Sub-Sub-TLV Types Allocation Policy"> | subregistry are according to <xref target="IANASRV6DATASSTYPESAP"/>. </t | |||
| <artwork><![CDATA[ 0 : Reserved | > | |||
| 1-127 : IETF Review | <table anchor="IANASRV6DATASSTYPESAP" align="center"> | |||
| 128-254 : First Come First Served | <name>SRv6 Service Data Sub-Sub-TLV Types Subregistry Registration Pro | |||
| 255 : Reserved]]></artwork> | cedures</name> | |||
| </figure></t> | <thead> | |||
| <tr> | ||||
| <t>The following Sub-Sub-TLV Type is defined in this document: <figure | <th>Range</th> | |||
| anchor="IANASRV6DATASSTYPES" | <th>Registration Procedure</th> | |||
| title="SRv6 Service Data Sub-Sub-TLV Types"> | </tr> | |||
| <artwork><![CDATA[ Value Type Ref | </thead> | |||
| erence | <tbody> | |||
| ---------------------------------------------------- | <tr> | |||
| 1 SRv6 SID Structure Sub-Sub-TLV <this document>]]></artwork> | <td>1-127</td> | |||
| </figure></t> | <td>IETF Review</td> | |||
| </tr> | ||||
| <tr> | ||||
| <td>128-254</td> | ||||
| <td>First Come First Served</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>255</td> | ||||
| <td>IETF Review</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>The following Sub-Sub-TLV Type is defined in this document: </t> | ||||
| <table anchor="IANASRV6DATASSTYPES" align="center"> | ||||
| <name>SRv6 Service Data Sub-Sub-TLV Types Subregistry Initial Contents | ||||
| </name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th>Value</th> | ||||
| <th>Type</th> | ||||
| <th>Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>0</td> | ||||
| <td>Reserved</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>1</td> | ||||
| <td>SRv6 SID Structure Sub-Sub-TLV</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>255</td> | ||||
| <td>Reserved</td> | ||||
| <td>RFC 9252</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="BGP SRv6 Service SID Flags Registry"> | <name>BGP SRv6 Service SID Flags Registry</name> | |||
| <t>IANA is requested to create and maintain a new registry called "BGP | <t>IANA has created and now maintains a new subregistry called "BGP | |||
| SRv6 Service SID Flags" under the "Border Gateway Protocol (BGP) | SRv6 Service SID Flags" under the "Border Gateway Protocol (BGP) | |||
| Parameters" registry. The allocation policy for this registry is IETF | Parameters" registry. The registration procedure for this subregistry is | |||
| Review and all 8 bit positions of the flags are currently | IETF | |||
| Review, and all 8-bit positions of the flags are currently | ||||
| unassigned.</t> | unassigned.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Subsequent Address Family Identifiers (SAFI) Parameters Re | <name>SAFI Values Registry</name> | |||
| gistry"> | <t>IANA has added this document as a reference for value 128 | |||
| <t>IANA is requested to add this document as a reference for value 128 | ("MPLS-labeled VPN address") in the "SAFI Values" subregistry | |||
| in the "Subsequent Address Family Identifiers (SAFI) Parameters" | under the "Subsequent Address Family Identifiers | |||
| registry.</t> | (SAFI) Parameters" registry.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="SEC" numbered="true" toc="default"> | ||||
| <section anchor="SEC" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t>This document specifies extensions to the BGP protocol for signaling | <t>This document specifies extensions to the BGP protocol for the signalin | |||
| g | ||||
| of services for SRv6. These specifications leverage existing BGP | of services for SRv6. These specifications leverage existing BGP | |||
| protocol mechanisms for the signaling of various types of services. It | protocol mechanisms for the signaling of various types of services. It | |||
| also builds upon existing elements of the SR architecture (more | also builds upon existing elements of the SR architecture (more | |||
| specifically SRv6). As such, this section largely provides pointers (as | specifically, SRv6). As such, this section largely provides pointers (as | |||
| a reminder) to the security considerations of those existing | a reminder) to the security considerations of those existing | |||
| specifications while also covering certain newer security aspects for | specifications while also covering certain, newer security aspects for | |||
| the specifications newly introduced by this document.</t> | the specifications newly introduced by this document.</t> | |||
| <section anchor="SECSESS" numbered="true" toc="default"> | ||||
| <section anchor="SECSESS" title="BGP Session Related Considerations"> | <name>Considerations Related to BGP Sessions</name> | |||
| <t>Techniques related to authentication of BGP sessions for securing | <t>Techniques related to authentication of BGP sessions for securing | |||
| messages between BGP peers as discussed in the BGP specification <xref | messages between BGP peers, as discussed in the BGP specification <xref | |||
| target="RFC4271"/> and, in the security analysis for BGP <xref | target="RFC4271" format="default"/> and in the security analysis for BGP <xref t | |||
| target="RFC4272"/> apply. The discussion of the use of the TCP | arget="RFC4272" format="default"/>, apply. The discussion of the use of the TCP | |||
| Authentication option to protect BGP sessions is found in <xref | Authentication Option to protect BGP sessions is found in <xref target=" | |||
| target="RFC5925"/>, while <xref target="RFC6952"/> includes an | RFC5925" format="default"/>, while <xref target="RFC6952" format="default"/> inc | |||
| ludes an | ||||
| analysis of BGP keying and authentication issues. This document does | analysis of BGP keying and authentication issues. This document does | |||
| not introduce any additional BGP session security considerations.</t> | not introduce any additional BGP session security considerations.</t> | |||
| </section> | </section> | |||
| <section anchor="SECSVC" numbered="true" toc="default"> | ||||
| <section anchor="SECSVC" title="BGP Services Related Considerations"> | <name>Considerations Related to BGP Services</name> | |||
| <t>This document does not introduce new services or BGP NLRI types but | <t>This document does not introduce new services or BGP NLRI types but | |||
| extends the signaling of existing ones for SRv6. Therefore, the | extends the signaling of existing ones for SRv6. Therefore, the | |||
| security considerations for the respective BGP services <xref | security considerations for the respective BGP services, such as <xref t | |||
| target="RFC8950">BGP IPv4 over IPv6 NH</xref>, <xref | arget="RFC8950" format="default">BGP IPv4 over IPv6 NH</xref>, <xref target="RFC | |||
| target="RFC4659">BGP IPv6 L3VPN</xref>, <xref target="RFC2545">BGP | 4659" format="default">BGP IPv6 L3VPN</xref>, <xref target="RFC2545" format="def | |||
| IPv6</xref>, <xref target="RFC7432">BGP EVPN</xref> and <xref | ault">BGP | |||
| target="RFC9136">IP EVPN</xref> apply as discussed in their respective | IPv6</xref>, <xref target="RFC7432" format="default">BGP EVPN</xref>, an | |||
| documents. <xref target="RFC8669"/> discusses mechanisms to prevent | d <xref target="RFC9136" format="default">IP EVPN</xref>, apply as discussed in | |||
| leaking of BGP Prefix-SID attribute, that carries SR information, | their respective | |||
| documents. | ||||
| <xref target="RFC8669" format="default"/> discusses mechanisms to prevent | ||||
| the leaking of the BGP Prefix-SID attribute, which carries SR informatio | ||||
| n, | ||||
| outside the SR domain.</t> | outside the SR domain.</t> | |||
| <t>As a reminder, several of the BGP services (i.e., the AFI/SAFI used | <t>As a reminder, several of the BGP services (i.e., the AFI/SAFI used | |||
| for their signaling) were initially introduced for one encapsulation | for their signaling) were initially introduced for one encapsulation | |||
| mechanism and later extended for others e.g., EVPN MPLS <xref | mechanism and later extended for others, e.g., EVPN MPLS <xref target="R | |||
| target="RFC7432"/> was extended for VXLAN/NVGRE encapsulation <xref | FC7432" format="default"/> was extended for Virtual eXtensible Local Area Networ | |||
| target="RFC8365"/>. <xref target="RFC9012"/> enables the use of | k (VXLAN) encapsulation and Network Virtualization Using Generic Routing Encapsu | |||
| lation (NVGRE) <xref target="RFC8365" format="default"/>. <xref target="RFC9012" | ||||
| format="default"/> enables the use of | ||||
| various IP encapsulation mechanisms along with different BGP SAFIs for | various IP encapsulation mechanisms along with different BGP SAFIs for | |||
| their respective services. The existing filtering mechanisms for | their respective services. The existing filtering mechanisms for | |||
| preventing the leak of the encapsulation information (carried in BGP | preventing the leak of the encapsulation information (carried in BGP | |||
| attributes) and to prevent the advertisement of prefixes from the | attributes) and preventing the advertisement of prefixes from the | |||
| provider's internal address space (especially the SRv6 Block as | provider's internal address space (especially the SRv6 Block, as | |||
| discussed in <xref target="RFC8986"/>) to external peers (or into the | discussed in <xref target="RFC8986" format="default"/>) to external peer | |||
| s (or into the | ||||
| Internet) also apply in the case of SRv6.</t> | Internet) also apply in the case of SRv6.</t> | |||
| <t>Specific to SRv6, a misconfiguration or error in the BGP | ||||
| <t>Specific to SRv6, a misconfig or error in the above mentioned BGP | filtering mechanisms mentioned above may result in exposing information, | |||
| filtering mechanisms may result in exposing information such as SRv6 | such as SRv6 | |||
| Service SIDs to external peers or other unauthorized entities. | Service SIDs to external peers or other unauthorized entities. | |||
| However, an attempt to exploit this information or to raise an attack | However, an attempt to exploit this information or to raise an attack | |||
| by injecting packets into the network (e.g. customer networks in case | by injecting packets into the network (e.g., customer networks in case | |||
| of VPN services) is mitigated by the existing SRv6 data plane security | of VPN services) is mitigated by the existing SRv6 data plane security | |||
| mechanisms as described in the next section.</t> | mechanisms, as described in the next section.</t> | |||
| </section> | </section> | |||
| <section anchor="SECSRV6" numbered="true" toc="default"> | ||||
| <section anchor="SECSRV6" | <name>Considerations Related to SR over IPv6 Data Plane</name> | |||
| title="SR over IPv6 Data Plane Related Considerations"> | ||||
| <t>This section provides a brief reminder and an overview of the | <t>This section provides a brief reminder and an overview of the | |||
| security considerations related to SRv6 with pointers to existing | security considerations related to SRv6 with pointers to existing | |||
| specifications. This document introduces no new security | specifications. This document introduces no new security | |||
| considerations of its own from the SRv6 data plane perspective.</t> | considerations of its own from the SRv6 data plane perspective.</t> | |||
| <t>SRv6 operates within a trusted SR domain. The data packets | <t>SRv6 operates within a trusted SR domain. The data packets | |||
| corresponding to service flows between PE routers are encapsulated | corresponding to service flows between PE routers are encapsulated | |||
| (using SRv6 SIDs advertised via BGP) and carried within this trusted | (using SRv6 SIDs advertised via BGP) and carried within this trusted | |||
| SR domain (e.g., within a single AS or between multiple ASes within a | SR domain (e.g., within a single AS or between multiple ASes within a | |||
| single provider network).</t> | single provider network).</t> | |||
| <t>The security considerations of the SR architecture are | ||||
| covered by <xref target="RFC8402" format="default"/>. More detailed secu | ||||
| rity | ||||
| considerations, specifically of SRv6 and SRH, are covered by <xref targe | ||||
| t="RFC8754" format="default"/> as they relate to SR Attacks (Section <xref targe | ||||
| t="RFC8754" section="7.1" sectionFormat="bare"/>), Service | ||||
| Theft (Section <xref target="RFC8754" section="7.2" sectionFormat="bare" | ||||
| />), and Topology Disclosure (Section <xref target="RFC8754" section="7.3" secti | ||||
| onFormat="bare"/>). | ||||
| <t>The security considerations of the Segment Routing architecture are | As such, an | |||
| covered by <xref target="RFC8402"/>. More detailed security | operator deploying SRv6 <bcp14>MUST</bcp14> follow the considerations de | |||
| considerations specifically of SRv6 and SRH are covered by <xref | scribed in | |||
| target="RFC8754"/> as they relate to SR Attacks (section 7.1), Service | <xref target="RFC8754" section="7" sectionFormat="of" format="default"/> | |||
| Theft (section 7.2) and Topology Disclosure (section 7.3). As such an | to implement the infrastructure | |||
| operator deploying SRv6 MUST follow the considerations described in | Access Control Lists (ACLs) and the recommendations described in <xref t | |||
| <xref target="RFC8754"/> section 7 to implement the infrastructure | arget="RFC2827" format="default">BCP 38</xref> and <xref target="RFC3704" format | |||
| ACLs, <xref target="RFC2827">BCP 38</xref> and <xref | ="default">BCP 84</xref>.</t> | |||
| target="RFC3704">BCP 84</xref> recommendations.</t> | <t>The SRv6 deployment and SID allocation guidelines, as described in | |||
| <xref target="RFC8986" format="default"/>, simplify the deployment of th | ||||
| <t>The SRv6 deployment and SID allocation guidelines as described in | e ACL filters | |||
| <xref target="RFC8986"/> simplify the deployment of the ACL filters | ||||
| (e.g., a single ACL corresponding to the SRv6 Block applied to the | (e.g., a single ACL corresponding to the SRv6 Block applied to the | |||
| external interfaces on border nodes is sufficient to block packets | external interfaces on border nodes is sufficient to block packets | |||
| destined to any SRv6 SID in the domain from external/unauthorized | destined to any SRv6 SID in the domain from external/unauthorized | |||
| networks). While there is an assumed trust model within a SR domain | networks). While there is an assumed trust model within an SR domain, | |||
| such that any node sending packet to an SRv6 SID is assumed to be | such that any node sending a packet to an SRv6 SID is assumed to be | |||
| allowed to do so, there is also the option of using SRH HMAC TLV <xref | allowed to do so, there is also the option of using an SRH Hashed Messag | |||
| target="RFC8754"/> as described in <xref target="RFC8986"/> for | e Authentication | |||
| validation.</t> | Code (HMAC) TLV <xref target="RFC8754" format="default"/>, as described i | |||
| n <xref | ||||
| <t>The SRv6 SID Endpoint behaviors implementing the services signalled | target="RFC8986" format="default"/>, for validation.</t> | |||
| in this document are defined in <xref target="RFC8986"/> and hence the | <t> The SRv6 Endpoint Behaviors implementing the services signaled | |||
| security considerations of that document apply. These considerations | in this document are defined in <xref target="RFC8986" format="default"/>; he | |||
| are independent of the protocol used for service deployment, i.e. | nce, the security | |||
| considerations of that document apply. These considerations | ||||
| are independent of the protocol used for service deployment, i.e., | ||||
| independent of BGP signaling of SRv6 services.</t> | independent of BGP signaling of SRv6 services.</t> | |||
| <t>These considerations help protect transit traffic as well as | <t>These considerations help protect transit traffic as well as | |||
| services, such as VPNs, to avoid service theft or injection of traffic | services, such as VPNs, to avoid service theft or injection of traffic | |||
| into customer VPN.</t> | into customer VPNs.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ACK" title="Acknowledgments"> | ||||
| <t>The authors of this document would like to thank Stephane Litkowski, | ||||
| Rishabh Parekh, Xiejingrong, Rajesh M, Mustapha Aissaoui, Alexander | ||||
| Vainshtein, Eduard Metz, Shraddha Hegde, Eduard Vasilenko, Ron Bonica, | ||||
| and Joel Halpern for their comments and review of this document. The | ||||
| authors would also like to thank Matthew Bocci for his document shepherd | ||||
| review and Martin Vigoureux for his AD review that resulted in helpful | ||||
| comments for improving this document.</t> | ||||
| </section> | ||||
| <section title="Contributors"> | ||||
| <figure> | ||||
| <artwork><![CDATA[Clarence Filsfils | ||||
| Cisco | ||||
| Email: cfilsfil@cisco.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Satoru Matsushima | ||||
| SoftBank | ||||
| Email: satoru.matsushima@g.softbank.co.jp | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Dirk Steinberg | ||||
| Steinberg Consulting | ||||
| Email: dirk@lapishills.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Daniel Bernier | ||||
| Bell Canada | ||||
| Email: daniel.bernier@bell.ca | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Daniel Voyer | ||||
| Bell Canada | ||||
| Email: daniel.voyer@bell.ca | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Jonn Leddy | ||||
| Individual | ||||
| Email: john@leddy.net | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Swadesh Agrawal | ||||
| Cisco | ||||
| Email: swaagraw@cisco.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Patrice Brissette | ||||
| Cisco | ||||
| Email: pbrisset@cisco.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Ali Sajassi | ||||
| Cisco | ||||
| Email: sajassi@cisco.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Bart Peirens | ||||
| Proximus | ||||
| Belgium | ||||
| Email: bart.peirens@proximus.com]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Darren Dukes | ||||
| Cisco | ||||
| Email: ddukes@cisco.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Pablo Camarilo | ||||
| Cisco | ||||
| Email: pcamaril@cisco.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Shyam Sethuram | ||||
| Cisco | ||||
| Email: shyam.ioml@gmail.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| <figure> | ||||
| <artwork><![CDATA[Zafar Ali | ||||
| Cisco | ||||
| Email: zali@cisco.com | ||||
| ]]></artwork> | ||||
| </figure> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <displayreference target="I-D.ietf-spring-segment-routing-policy" to="SEGMEN | |||
| <?rfc include='reference.RFC.8986.xml'?> | T-ROUTING-POLICY"/> | |||
| <displayreference target="I-D.ietf-lsr-flex-algo" to="IGP-FLEX-ALGO"/> | ||||
| <?rfc include='reference.RFC.8754.xml'?> | <references> | |||
| <name>References</name> | ||||
| <?rfc include='reference.RFC.7432.xml'?> | <references> | |||
| <name>Normative References</name> | ||||
| <?rfc include='reference.RFC.8200.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8986.xml"/> | ||||
| <?rfc include='reference.RFC.7606.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8754.xml"/> | ||||
| <?rfc include='reference.RFC.6514.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.7432.xml"/> | ||||
| <?rfc include='reference.RFC.4456.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8200.xml"/> | ||||
| <?rfc include='reference.RFC.2119.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.7606.xml"/> | ||||
| <?rfc include='reference.RFC.8669.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.6514.xml"/> | ||||
| <?rfc include='reference.RFC.8402.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.4456.xml"/> | ||||
| <?rfc include='reference.RFC.9136.xml' ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.2119.xml"/> | ||||
| <?rfc include='reference.I-D.ietf-bess-evpn-igmp-mld-proxy.xml' ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8669.xml"/> | ||||
| <?rfc include='reference.RFC.8950.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8402.xml"/> | ||||
| <?rfc include='reference.RFC.8365.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.9136.xml"/> | ||||
| <?rfc include='reference.RFC.8174.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | |||
| C.9251.xml"/> | ||||
| <?rfc include='reference.RFC.2545.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8950.xml"/> | ||||
| <?rfc include='reference.RFC.4271.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8365.xml"/> | ||||
| <?rfc include='reference.RFC.4364.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8174.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2545.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4271.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4364.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4659.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4760.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8317.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8214.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8277.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <?rfc include='reference.RFC.4659.xml'?> | <reference anchor="I-D.ietf-spring-segment-routing-policy"> | |||
| <front> | ||||
| <title>Segment Routing Policy Architecture</title> | ||||
| <author initials="C." surname="Filsfils" fullname="Clarence Filsfils"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="K." surname="Talaulikar" fullname="Ketan Talaulikar" rol | ||||
| e="editor"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Voyer" fullname="Daniel Voyer"> | ||||
| <organization>Bell Canada</organization> | ||||
| </author> | ||||
| <author initials="A." surname="Bogdanov" fullname="Alex Bogdanov"> | ||||
| <organization>British Telecom</organization> | ||||
| </author> | ||||
| <author initials="P." surname="Mattes" fullname="Paul Mattes"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <date month="March" day="22" year="2022" /> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-spring-segment-routing-po | ||||
| licy-22" /> | ||||
| </reference> | ||||
| <?rfc include='reference.RFC.4760.xml'?> | <reference anchor="I-D.ietf-lsr-flex-algo"> | |||
| <front> | ||||
| <title>IGP Flexible Algorithm</title> | ||||
| <author initials="P" surname="Psenak" fullname="Peter Psenak" role="editor | ||||
| "> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="S" surname="Hegde" fullname="Shraddha Hegde"> | ||||
| <organization>Juniper Networks</organization> | ||||
| </author> | ||||
| <author initials="C" surname="Filsfils" fullname="Clarence Filsfils"> | ||||
| <organization>Cisco Systems</organization> | ||||
| </author> | ||||
| <author initials="K" surname="Talaulikar" fullname="Ketan Talaulikar"> | ||||
| <organization>Arrcus, Inc</organization> | ||||
| </author> | ||||
| <author initials="A" surname="Gulko" fullname="Arkadiy Gulko"> | ||||
| <organization>Edward Jones</organization> | ||||
| </author> | ||||
| <date month="May" day="18" year="2022" /> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-lsr-flex-algo-20"/> | ||||
| </reference> | ||||
| <?rfc include='reference.RFC.8317.xml'?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.2827.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3704.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5925.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4272.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6952.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.9012.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6513.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8126.xml"/> | ||||
| </references> | ||||
| </references> | ||||
| <section anchor="ACK" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t>The authors of this document would like to thank <contact fullname="Ste | ||||
| phane | ||||
| Litkowski"/>, <contact fullname="Rishabh Parekh"/>, <contact fullname="Xie | ||||
| jingrong"/>, | ||||
| <contact fullname="Rajesh M."/>, <contact fullname="Mustapha Aissaoui"/>, | ||||
| <contact fullname="Alexander Vainshtein"/>, <contact fullname="Eduard Metz | ||||
| "/>, | ||||
| <contact fullname="Shraddha Hegde"/>, <contact fullname="Eduard Vasilenko" | ||||
| />, | ||||
| <contact fullname="Ron Bonica"/>, and <contact fullname="Joel Halpern"/> | ||||
| for their comments and review of this document. The | ||||
| authors would also like to thank Document Shepherd <contact fullname="Matt | ||||
| hew Bocci"/> for his review and AD <contact fullname="Martin Vigoureux"/> for hi | ||||
| s review that | ||||
| resulted in helpful comments for improving this document.</t> | ||||
| </section> | ||||
| <section numbered="false" toc="default"> | ||||
| <name>Contributors</name> | ||||
| <contact fullname="Clarence Filsfils"> | ||||
| <organization>Cisco</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>cfilsfil@cisco.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.8214.xml'?> | <contact fullname="Satoru Matsushima"> | |||
| <organization>SoftBank</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>satoru.matsushima@g.softbank.co.jp</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.8277.xml'?> | <contact fullname="Dirk Steinberg"> | |||
| </references> | <organization>Steinberg Consulting</organization> | |||
| <address> | ||||
| <postal/> | ||||
| <email>dirk@lapishills.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <references title="Informative References"> | <contact fullname="Daniel Bernier"> | |||
| <?rfc include='reference.I-D.matsushima-spring-srv6-deployment-status'?> | <organization>Bell Canada</organization> | |||
| <address> | ||||
| <postal/> | ||||
| <email>daniel.bernier@bell.ca</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.I-D.ietf-idr-segment-routing-te-policy'?> | <contact fullname="Daniel Voyer"> | |||
| <organization>Bell Canada</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email> daniel.voyer@bell.ca</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.I-D.ietf-spring-segment-routing-policy.xml'?> | <contact fullname="Jonn Leddy"> | |||
| <organization>Individual</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>john@leddy.net</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.I-D.ietf-lsr-flex-algo.xml'?> | <contact fullname="Swadesh Agrawal"> | |||
| <organization>Cisco</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>swaagraw@cisco.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.2827.xml'?> | <contact fullname="Patrice Brissette"> | |||
| <organization>Cisco</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>pbrisset@cisco.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.3704.xml'?> | <contact fullname="Ali Sajassi"> | |||
| <organization>Cisco</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>sajassi@cisco.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.5925.xml'?> | <contact fullname="Bart Peirens"> | |||
| <organization>Proximus</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <country>Belgium</country> | ||||
| </postal> | ||||
| <email>bart.peirens@proximus.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.4272.xml'?> | <contact fullname="Darren Dukes"> | |||
| <organization>Cisco</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>ddukes@cisco.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.6952.xml'?> | <contact fullname="Pablo Camarilo"> | |||
| <organization>Cisco</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>pcamaril@cisco.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.9012.xml'?> | <contact fullname="Shyam Sethuram"> | |||
| <organization>Cisco</organization> | ||||
| <address> | ||||
| <postal/> | ||||
| <email>shyam.ioml@gmail.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| <?rfc include='reference.RFC.6513.xml'?> | <contact fullname="Zafar Ali"> | |||
| </references> | <organization>Cisco</organization> | |||
| <address> | ||||
| <postal/> | ||||
| <email>zali@cisco.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| </section> | ||||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 233 change blocks. | ||||
| 1191 lines changed or deleted | 1363 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/ | ||||