rfc9746xml2.original.xml | rfc9746.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2119.xml"> | ||||
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8174.xml"> | ||||
<!ENTITY RFC7432 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7432.xml"> | ||||
<!ENTITY RFC8365 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8365.xml"> | ||||
<!ENTITY RFC8584 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8584.xml"> | ||||
<!ENTITY I-D.ietf-bess-evpn-geneve SYSTEM "https://xml2rfc.ietf.org/public/rfc/b | ||||
ibxml3/reference.I-D.ietf-bess-evpn-geneve.xml"> | ||||
<!ENTITY RFC7348 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7348.xml"> | ||||
<!ENTITY RFC5512 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5512.xml"> | ||||
<!ENTITY RFC4023 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.4023.xml"> | ||||
<!ENTITY RFC7637 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7637.xml"> | ||||
<!ENTITY RFC7510 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7510.xml"> | ||||
<!ENTITY RFC8926 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8926.xml"> | ||||
<!ENTITY RFC9012 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.9012.xml"> | ||||
<!ENTITY RFC7606 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7606.xml"> | ||||
<!ENTITY RFC8660 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8660.xml"> | ||||
<!ENTITY RFC8986 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8986.xml"> | ||||
<!ENTITY RFC8402 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8402.xml"> | ||||
<!ENTITY RFC8754 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8754.xml"> | ||||
<!ENTITY RFC9252 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.9252.xml"> | ||||
<!ENTITY RFC8126 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8126.xml"> | ||||
<!ENTITY I-D.ietf-nvo3-vxlan-gpe SYSTEM "https://xml2rfc.ietf.org/public/rfc/bib | ||||
xml3/reference.I-D.ietf-nvo3-vxlan-gpe.xml"> | ||||
]> | ||||
<?rfc toc="yes"?> | ||||
<?rfc tocompact="yes"?> | ||||
<?rfc tocdepth="3"?> | ||||
<?rfc tocindent="yes"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc category="std" docName="draft-ietf-bess-evpn-mh-split-horizon-11" | ||||
ipr="trust200902" submissionType="IETF" updates="8365, 7432"> | ||||
<!--Generated by id2xml 1.5.0 on 2020-07-31T12:56:54Z --> | ||||
<?rfc strict="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="no"?> | ||||
<?rfc text-list-symbols="oo*+-"?> | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | ||||
<!ENTITY zwsp "​"> | ||||
<!ENTITY nbhy "‑"> | ||||
<!ENTITY wj "⁠"> | ||||
]> | ||||
<?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie tf-bess-evpn-mh-split-horizon-11" number="9746" ipr="trust200902" consensus="tru e" submissionType="IETF" updates="7432, 8365" obsoletes="" xml:lang="en" tocIncl ude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3"> | |||
<front> | <front> | |||
<title abbrev="EVPN MH Split Horizon Extensions">BGP EVPN Multi-Homing | <title abbrev="EVPN MH Split-Horizon Extensions">BGP EVPN Multihoming | |||
Extensions for Split Horizon Filtering</title> | Extensions for Split-Horizon Filtering</title> | |||
<seriesInfo name="RFC" value="9746"/> | ||||
<author fullname="Jorge Rabadan" initials="J." role="editor" | <author fullname="Jorge Rabadan" initials="J." role="editor" surname="Rabada | |||
surname="Rabadan"> | n"> | |||
<organization>Nokia</organization> | <organization>Nokia</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>520 Almanor Avenue</street> | <street>520 Almanor Avenue</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>jorge.rabadan@nokia.com</email> | <email>jorge.rabadan@nokia.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Kiran Nagaraj" initials="K." surname="Nagaraj"> | <author fullname="Kiran Nagaraj" initials="K." surname="Nagaraj"> | |||
<organization>Nokia</organization> | <organization>Nokia</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>520 Almanor Avenue</street> | <street>520 Almanor Avenue</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>kiran.nagaraj@nokia.com</email> | <email>kiran.nagaraj@nokia.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Wen Lin" initials="W." surname="Lin"> | <author fullname="Wen Lin" initials="W." surname="Lin"> | |||
<organization abbrev="Juniper">Juniper Networks</organization> | <organization abbrev="Juniper">Juniper Networks</organization> | |||
<address> | <address> | |||
<email>wlin@juniper.net</email> | <email>wlin@juniper.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Ali Sajassi" initials="A." surname="Sajassi"> | <author fullname="Ali Sajassi" initials="A." surname="Sajassi"> | |||
<organization abbrev="Cisco">Cisco Systems, Inc.</organization> | <organization abbrev="Cisco">Cisco Systems, Inc.</organization> | |||
<address> | <address> | |||
<email>sajassi@cisco.com</email> | <email>sajassi@cisco.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="March" year="2025"/> | ||||
<area>RTG</area> | ||||
<workgroup>bess</workgroup> | ||||
<date day="16" month="August" year="2024"/> | <keyword>EVPN Multihoming</keyword> | |||
<keyword>split-horizon filtering</keyword> | ||||
<workgroup>BESS Workgroup</workgroup> | <keyword>split horizon filtering</keyword> | |||
<keyword>local bias</keyword> | ||||
<keyword>ESI</keyword> | ||||
<keyword>encapsulations</keyword> | ||||
<keyword>SHT</keyword> | ||||
<abstract> | <abstract> | |||
<t>Ethernet Virtual Private Network (EVPN) is commonly used with Network | <t>An Ethernet Virtual Private Network (EVPN) is commonly used with | |||
Virtualization Overlay (NVO) tunnels, as well as MPLS and Segment | Network Virtualization Overlay (NVO) tunnels as well as with MPLS and | |||
Routing tunnels. The multi-homing procedures in EVPN may vary based on | Segment Routing (SR) tunnels. The multihoming procedures in EVPN may | |||
the type of tunnel used within the EVPN Broadcast Domain. Specifically, | vary based on the type of tunnel used within the EVPN Broadcast | |||
there are two multi-homing Split Horizon procedures designed to prevent | Domain. Specifically, there are two multihoming split-horizon procedures | |||
looped frames on multi-homed Customer Edge (CE) devices: the ESI | designed to prevent looped frames on multihomed Customer Edge (CE) | |||
Label-based procedure and the Local Bias procedure. The ESI Label-based | devices: the Ethernet Segment Identifier (ESI) Label-based procedure and | |||
Split Horizon is applied to MPLS-based tunnels, such as MPLSoUDP, while | the local-bias procedure. The ESI Label-based split-horizon procedure is | |||
the Local Bias procedure is used for other tunnels, such as VXLAN.</t> | applied to MPLS-based tunnels such as MPLS over UDP (MPLSoUDP), while | |||
the local-bias procedure is used for other tunnels such as Virtual | ||||
eXtensible Local Area Network (VXLAN) tunnels.</t> | ||||
<t>Current specifications do not allow operators to choose which Split | <t>Current specifications do not allow operators to choose which split-hor | |||
Horizon procedure to use for tunnel encapsulations that support both | izon procedure to use for tunnel encapsulations that support both | |||
methods. Examples of tunnels that may support both procedures include | methods. Examples of tunnels that may support both procedures include | |||
MPLSoGRE, MPLSoUDP, GENEVE, and SRv6. This document updates the EVPN | MPLSoUDP, MPLS over GRE (MPLSoGRE), Generic Network Virtualization | |||
multi-homing procedures described in RFC 8365 and RFC 7432, enabling | Encapsulation (Geneve), and Segment Routing over IPv6 (SRv6) | |||
operators to select the Split Horizon procedure that meets their | tunnels. This document updates the EVPN multihoming procedures described | |||
specific requirements.</t> | in RFCs 7432 and 8365, enabling operators to select the split-horizon | |||
procedure that meets their specific requirements.</t> | ||||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="sect-1" title="Introduction"> | <section anchor="sect-1" numbered="true" toc="default"> | |||
<t>Ethernet Virtual Private Networks (EVPN) are commonly used with the | <name>Introduction</name> | |||
<t>Ethernet Virtual Private Networks (EVPNs) are commonly used with the | ||||
following tunnel encapsulations:</t> | following tunnel encapsulations:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>Network Virtualization Overlay (NVO) tunnels, where the EVPN | <t>Network Virtualization Overlay (NVO) tunnels, where the EVPN | |||
procedures are specified in <xref target="RFC8365"/>. MPLSoGRE <xref | procedures are specified in <xref target="RFC8365" | |||
target="RFC4023"/>, MPLSoUDP <xref target="RFC7510"/>, GENEVE <xref | format="default"/>. MPLSoGRE <xref target="RFC4023" | |||
target="RFC8926"/> or VXLAN <xref target="RFC7348"/> tunnels are | format="default"/>, MPLSoUDP <xref target="RFC7510" | |||
format="default"/>, Geneve <xref target="RFC8926" format="default"/>, | ||||
or VXLAN <xref target="RFC7348" format="default"/> tunnels are | ||||
considered NVO tunnels.</t> | considered NVO tunnels.</t> | |||
</li> | ||||
<t>MPLS and Segment Routing with MPLS data plane (SR-MPLS), where | <li> | |||
the relevant EVPN procedures are specified in <xref | <t>MPLS and Segment Routing over MPLS (SR-MPLS) tunnels, where the | |||
target="RFC7432"/>. Segment Routing with MPLS data plane tunneling | relevant EVPN procedures are specified in <xref target="RFC7432" | |||
is specified in <xref target="RFC8660"/>.</t> | format="default"/>. SR-MPLS tunneling is specified in <xref | |||
target="RFC8660" format="default"/>.</t> | ||||
<t>Segment Routing with IPv6 data plane (SRv6), where the relevant | </li> | |||
EVPN procedures are specified in <xref target="RFC9252"/>. SRv6 is | <li> | |||
specified in <xref target="RFC8402"/><xref target="RFC8754"/>.</t> | <t>Segment Routing over IPv6 (SRv6) tunnels, where the relevant EVPN | |||
</list></t> | procedures are specified in <xref target="RFC9252" | |||
format="default"/>. SRv6 is specified in <xref target="RFC8402" | ||||
<t>Split Horizon, in this document, follows the definition in <xref | format="default"/> and <xref target="RFC8754" | |||
target="RFC7432"/>. Split Horizon refers to the EVPN multihoming | format="default"/>.</t> | |||
procedure that prevents a PE from sending a frame back to a multihomed | </li> | |||
Customer Edge (CE) when that CE originated the frame in the first | </ul> | |||
place.</t> | <t>In this document, the term "split horizon" follows the definition in <x | |||
ref | ||||
target="RFC7432" format="default"/>. Split horizon refers to the EVPN | ||||
multihoming procedure that prevents a Provider Edge (PE) from sending a | ||||
frame back to a multihomed Customer Edge (CE) when that CE originated | ||||
the frame in the first place.</t> | ||||
<t>EVPN multihoming procedures may vary depending on the type of tunnel | <t>EVPN multihoming procedures may vary depending on the type of tunnel | |||
utilized within the EVPN Broadcast Domain. Specifically, there are two | utilized within the EVPN Broadcast Domain. Specifically, there are two | |||
multihoming Split Horizon procedures employed to prevent looped frames | multihoming split-horizon procedures employed to prevent looped frames | |||
on multihomed CE devices: the ESI Label-based procedure and the Local | on multihomed CE devices: the ESI Label-based procedure and the local-bias | |||
Bias procedure.</t> | procedure.</t> | |||
<t>The ESI Label-based Split Horizon procedure is used for MPLS or | <t>The ESI Label-based split-horizon procedure is used for MPLS or | |||
MPLS-over-X (MPLSoX) tunnels, such as MPLS-over-UDP, and its procedures | MPLS over X (MPLSoX) tunnels, such as MPLSoUDP, and its procedures | |||
are detailed in <xref target="RFC7432"/>. Conversely, the Local Bias | are detailed in <xref target="RFC7432" format="default"/>. Conversely, the | |||
local-bias | ||||
procedure is used for IP-based tunnels, such as VXLAN tunnels, and it is | procedure is used for IP-based tunnels, such as VXLAN tunnels, and it is | |||
described in <xref target="RFC8365"/>. </t> | described in <xref target="RFC8365" format="default"/>.</t> | |||
<section anchor="sect-1.1" numbered="true" toc="default"> | ||||
<name>Conventions and Terminology</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | ||||
", | ||||
"<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>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 anchor="sect-1.1" title="Conventions and Terminology"> | <dl spacing="normal"> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as described in BCP | ||||
14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | ||||
when, they appear in all capitals, as shown here.</t> | ||||
<t><list style="symbols"> | <dt>AC:</dt> | |||
<t>AC: Attachment Circuit.</t> | <dd>Attachment Circuit</dd> | |||
<t>A-D per ES route: refers to the EVPN Ethernet Auto-Discovery | <dt>A-D per ES route:</dt> | |||
per ES route defined in <xref target="RFC7432"/>.</t> | <dd>Auto-Discovery per Ethernet Segment | |||
route (as defined in <xref target="RFC7432" format="default"/>).</dd | ||||
> | ||||
<t>Arg.FE2: refers to the ESI filtering argument used for Split | <dt>Arg.FE2:</dt> | |||
Horizon as specified in <xref target="RFC9252"/>.</t> | <dd>Refers to the ESI filtering argument used for split horizon as | |||
specified in <xref target="RFC9252" format="default"/>.</dd> | ||||
<t>Broadcast Domain (BD): an emulated Ethernet, such that two | <dt>BD:</dt> | |||
systems on the same BD will receive each other's broadcast, | <dd>Broadcast Domain. Refers to an emulated Ethernet, such that | |||
unknown and multicast traffic. In this document, BD also refers to | two systems on the same BD will receive each other's BUM | |||
the instantiation of a Broadcast Domain on an EVPN PE. An EVPN PE | traffic. In this document, BD also refers to the instantiation of | |||
can be attached to one or multiple BDs of the same tenant.</t> | a BD on an EVPN PE. An EVPN PE can be attached to one or multiple | |||
BDs of the same tenant.</dd> | ||||
<t>BUM: Broadcast, Unknown unicast and Multicast traffic.</t> | <dt>BUM:</dt> | |||
<dd>Broadcast, Unknown Unicast, and Multicast</dd> | ||||
<t>Designated Forwarder (DF): as defined in <xref | <dt>CE:</dt><dd>Customer Edge</dd> | |||
target="RFC7432"/>, an ES may be multihomed (attached to more than | ||||
one PE). An ES may also contain multiple BDs, of one or more EVIs. | ||||
For each such EVI, one of the PEs attached to the segment becomes | ||||
that EVI's DF for that segment. Since a BD may belong to only one | ||||
EVI, we can speak unambiguously of the BD's DF for a given | ||||
segment.</t> | ||||
<t>ES and ESI: Ethernet Segment and Ethernet Segment | <dt>DF:</dt> | |||
Identifier.</t> | <dd>Designated Forwarder. As defined in <xref | |||
target="RFC7432" format="default"/>, an ES may be multihomed | ||||
(attached to more than one PE). An ES may also contain multiple | ||||
BDs of one or more EVIs. For each such EVI, one of the PEs | ||||
attached to the segment becomes that EVI's DF for that | ||||
segment. Since a BD may belong to only one EVI, we can speak | ||||
unambiguously of the BD's DF for a given segment.</dd> | ||||
<t>EVI: EVPN Instance</t> | <dt>ES:</dt> | |||
<dd>Ethernet Segment</dd> | ||||
<t>EVI-RT: EVI Route Target. A group of NVEs attached to the same | <dt>ESI:</dt> | |||
EVI will share the same EVI-RT.</t> | <dd>Ethernet Segment Identifier</dd> | |||
<t>GENEVE: Generic Network Virtualization Encapsulation, <xref | <dt>EVI:</dt> | |||
target="RFC8926"/> (<xref target="IANA-BGP-TUNNEL-ENCAP"/> tunnel | <dd>EVPN Instance</dd> | |||
type 19).</t> | ||||
<t>MPLS tunnels and non-MPLS NVO tunnels: refer to Multi-Protocol | <dt>EVI-RT:</dt><dd>EVI Route Target. Refers to a group of NVEs atta | |||
Label Switching (or the absence of it) Network Virtualization | ched to the same | |||
Overlay tunnels. Network Virtualization Overlay tunnels use an IP | EVI that will share the same EVI-RT.</dd> | |||
<dt>Geneve:</dt><dd>Generic Network Virtualization Encapsulation | ||||
<xref target="RFC8926" format="default"/> (see tunnel type 19 in <xr | ||||
ef | ||||
target="TUNNEL-ENCAP" format="default"/>).</dd> | ||||
<dt>MPLS tunnels and non-MPLS NVO tunnels:</dt><dd>Refers to | ||||
Multiprotocol Label Switching (or the absence of it) Network | ||||
Virtualization Overlay tunnels. NVO tunnels use an IP | ||||
encapsulation for overlay frames, where the source IP address | encapsulation for overlay frames, where the source IP address | |||
identifies the ingress NVE and the destination IP address the | identifies the ingress NVE and the destination IP address identifies | |||
egress NVE.</t> | the | |||
egress NVE.</dd> | ||||
<t>MPLSoUDP: Multi-Protocol Label Switching over User Datagram | <dt>MPLSoUDP:</dt><dd>Multiprotocol Label Switching over User | |||
Protocol, <xref target="RFC7510"/> (<xref | Datagram Protocol <xref target="RFC7510" format="default"/> (see | |||
target="IANA-BGP-TUNNEL-ENCAP"/> tunnel type 13).</t> | tunnel type 13 in <xref target="TUNNEL-ENCAP" | |||
format="default"/>).</dd> | ||||
<t>MPLSoGRE: Multi-Protocol Label Switching over Generic Network | <dt>MPLSoGRE:</dt><dd>Multiprotocol Label Switching over Generic | |||
Encapsulation, <xref target="RFC4023"/> (<xref | Network Encapsulation <xref target="RFC4023" format="default"/> | |||
target="IANA-BGP-TUNNEL-ENCAP"/> tunnel type 11).</t> | (see tunnel type 11 in <xref target="TUNNEL-ENCAP" | |||
format="default"/>).</dd> | ||||
<t>MPLSoX: refers to MPLS over any IP encapsulation. Examples are | <dt>MPLSoX:</dt><dd>Refers to MPLS over any IP encapsulation, for | |||
MPLS-over-UDP or MPLS-over-GRE.</t> | example, MPLSoUDP or MPLSoGRE.</dd> | |||
<t>NVE: Network Virtualization Edge device.</t> | <dt>NVE:</dt><dd>Network Virtualization Edge</dd> | |||
<t>NVGRE: Network Virtualization Using Generic Routing | <dt>NVGRE:</dt><dd>Network Virtualization Using Generic Routing | |||
Encapsulation, <xref target="RFC7637"/> (<xref | Encapsulation <xref target="RFC7637" format="default"/> (see | |||
target="IANA-BGP-TUNNEL-ENCAP"/> tunnel type 9).</t> | tunnel type 9 in <xref target="TUNNEL-ENCAP" | |||
format="default"/>).</dd> | ||||
<t>VXLAN: Virtual eXtensible Local Area Network, <xref | <dt>PE:</dt><dd>Provider Edge</dd> | |||
target="RFC7348"/> (<xref target="IANA-BGP-TUNNEL-ENCAP"/> tunnel | ||||
type 8).</t> | ||||
<t>VXLAN-GPE: VXLAN Generic Protocol Extension, <xref | <dt>RTs:</dt><dd>Route Targets</dd> | |||
target="I-D.ietf-nvo3-vxlan-gpe"/> (<xref | ||||
target="IANA-BGP-TUNNEL-ENCAP"/> tunnel type 12).</t> | ||||
<t>SHT: Split Horizon Type, it refers to the Split Horizon method | <dt>VXLAN:</dt><dd>Virtual eXtensible Local Area Network <xref | |||
target="RFC7348" format="default"/> (see tunnel type 8 in <xref | ||||
target="TUNNEL-ENCAP" format="default"/>).</dd> | ||||
<dt>VXLAN-GPE:</dt><dd>VXLAN Generic Protocol Extension <xref | ||||
target="I-D.ietf-nvo3-vxlan-gpe" format="default"/> (see tunnel | ||||
type 12 in <xref target="TUNNEL-ENCAP" | ||||
format="default"/>).</dd> | ||||
<dt>SHT:</dt><dd>Split-Horizon Type. Refers to the split-horizon met | ||||
hod | ||||
that a PE intends to use and advertises in an A-D per ES | that a PE intends to use and advertises in an A-D per ES | |||
route.</t> | route.</dd> | |||
<t>SRv6: Segment Routing with an IPv6 data plane, <xref | <dt>SRv6:</dt><dd>Segment Routing over IPv6 (see <xref target="RFC84 | |||
target="RFC8402"/><xref target="RFC8754"/>.</t> | 02" | |||
</list></t> | format="default"/> and <xref target="RFC8754" format="default"/>).</ | |||
dd> | ||||
<dt>TLV:</dt><dd>Type-Length-Value</dd> | ||||
</dl> | ||||
<t>This document also assumes familiarity with the terminology of | <t>This document also assumes familiarity with the terminology of | |||
<xref target="RFC7432"/> and <xref target="RFC8365"/>.</t> | <xref target="RFC7432" format="default"/> and <xref target="RFC8365" | |||
format="default"/>.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>Split-Horizon Filtering and Tunnel Encapsulations</name> | ||||
<section title="Split Horizon Filtering and Tunnel Encapsulations"> | <t>EVPN supports two split-horizon filtering mechanisms:</t> | |||
<t>EVPN supports two Split Horizon Filtering mechanisms:</t> | <ol type="1" spacing="normal"> | |||
<li> | ||||
<t>ESI Label-based split-horizon filtering <xref target="RFC7432" | ||||
format="default"/>:</t> | ||||
<t><list style="symbols"> | <t>When EVPN is employed for MPLS transport tunnels, an MPLS label | |||
<t>ESI Label based Split Horizon filtering <xref | facilitates split-horizon filtering to support All-Active | |||
target="RFC7432"/><vspace blankLines="1"/>When EVPN is employed | multihoming. The ingress NVE device appends a label corresponding to t | |||
for MPLS transport tunnels, an MPLS label facilitates Split | he source ESI | |||
Horizon filtering to support All-Active multihoming. The ingress | (the ESI label) during packet encapsulation. The egress NVE verifies | |||
Network Virtualization Edge (NVE) device appends a label | the ESI label when attempting to forward a multi-destination frame | |||
corresponding to the source Ethernet Segment Identifier (ESI | through a local ES interface. If the ESI label matches the site | |||
label) during packet encapsulation. The egress NVE verifies the | identifier (the ESI) associated with that ES interface, then the packet i | |||
ESI label when attempting to forward a multi-destination frame | s not forwarded. This mechanism effectively prevents forwarding loops for BUM tr | |||
through a local Ethernet Segment (ES) interface. If the ESI label | affic. </t> | |||
matches the site identifier (ESI) associated with that ES | ||||
interface, the packet is not forwarded. This mechanism effectively | <t>ESI Label split-horizon filtering should also | |||
prevents forwarding loops for BUM traffic. <vspace | ||||
blankLines="1"/>The ESI Label Split Horizon filtering should also | ||||
be utilized with Single-Active multihoming to prevent transient | be utilized with Single-Active multihoming to prevent transient | |||
loops for in-flight packets when the egress NVE assumes the role | loops for in-flight packets when the egress NVE assumes the role | |||
of Designated Forwarder for an ES.</t> | of DF for an ES.</t> | |||
</li> | ||||
<t>Local Bias <xref target="RFC8365"/><vspace | <li> | |||
blankLines="1"/>Since IP tunnels, such as VXLAN or NVGRE, do not | <t>Local-bias filtering <xref target="RFC8365" format="default"/>:</ | |||
support the ESI label or any MPLS label, an alternative Split | t> | |||
Horizon filtering procedure must be implemented for All-Active | <t>Since IP tunnels such as VXLAN or NVGRE do not | |||
multihoming. This mechanism, known as Local Bias, relies on the | support the ESI label or any MPLS label, an alternative split-horizo | |||
n filtering procedure must be implemented for All-Active | ||||
multihoming. This mechanism, known as local bias, relies on the | ||||
source IP address of the tunnel to determine whether to forward | source IP address of the tunnel to determine whether to forward | |||
BUM traffic to a local Ethernet Segment (ES) interface at the | BUM traffic to a local ES interface at the | |||
egress Network Virtualization Edge (NVE). <vspace | egress NVE.</t> | |||
blankLines="1"/>In summary and as specified in <xref | <t>In summary and as specified in <xref target="RFC8365" | |||
target="RFC8365"/>, each NVE tracks the IP address(es) of other | format="default"/>, each NVE tracks the IP address(es) of other | |||
NVEs with which it shares multihomed ESs. Upon receiving a BUM | NVEs with which it shares multihomed ESs. Upon receiving a BUM | |||
frame encapsulated in an IP tunnel, the egress NVE inspects the | frame encapsulated in an IP tunnel, the egress NVE inspects the | |||
source IP address in the tunnel header, which identifies the | source IP address in the tunnel header, which identifies the | |||
ingress NVE. The egress NVE then filters out the frame on all | ingress NVE. The egress NVE then filters out the frame on all | |||
local interfaces connected to ESs that are shared with the ingress | local interfaces connected to ESs that are shared with the ingress | |||
NVE. <vspace blankLines="1"/>Due to this behavior at the egress | NVE.</t> | |||
NVE, the ingress NVE is required to perform local replication to | ||||
all directly attached ESs, regardless of the Designated Forwarder | ||||
election state, for all BUM traffic ingressing from the access | ||||
Attachment Circuits (ACs). This local replication at the ingress | ||||
NVE is the basis for the term Local Bias. <vspace | ||||
blankLines="1"/>Local Bias is not suitable for Single-Active | ||||
multihoming, as the ingress NVE deactivates the ACs for which it | ||||
is not the Designated Forwarder. Consequently, local replication | ||||
to non-Designated Forwarder ACs cannot occur, leading to transient | ||||
in-flight BUM packets to be looped back to the originating site by | ||||
newly elected Designated Forwarder egress NVEs.</t> | ||||
</list></t> | ||||
<t><xref target="RFC8365"/> specifies that Local Bias is exclusively | <t>Due to this behavior at the egress NVE, the ingress NVE is | |||
utilized for IP tunnels, while ESI Label-based Split Horizon is | required to perform local replication to all directly attached | |||
employed for IP-based MPLS tunnels. However, IP-based MPLS tunnels, | ESs, regardless of the DF election state, for all BUM traffic | |||
such as MPLS over GRE (MPLSoGRE) or MPLS over UDP (MPLSoUDP), are also | ingressing from the access ACs. This local replication at the | |||
categorized as IP tunnels and have the potential to support both | ingress NVE is the basis for the term "local bias".</t> | |||
procedures. These tunnels are capable of carrying ESI labels and also | ||||
utilize a tunnel IP header in which the source IP address identifies | ||||
the ingress Network Virtualization Edge (NVE).</t> | ||||
<t>Similarly, certain IP tunnels - that include an identifier for the | <t>Local bias is not suitable for Single-Active multihoming, as | |||
source Ethernet Segment (ES) in the tunnel header - may also | the ingress NVE deactivates the ACs for which it is not the | |||
potentially support either procedure. Examples of such tunnels include | DF. Consequently, local replication to non-DF ACs cannot occur, | |||
GENEVE and SRv6.:</t> | leading to transient in-flight BUM packets being looped back to | |||
the originating site by newly elected DF egress NVEs.</t> | ||||
</li> | ||||
</ol> | ||||
<t><list style="symbols"> | <t><xref target="RFC8365" format="default"/> specifies that local bias | |||
<t>In a GENEVE tunnel, the source IP address identifies the | is exclusively utilized for IP tunnels, while ESI Label-based split hori | |||
ingress NVE therefore local bias is possible. Also, <xref | zon is employed for IP-based MPLS tunnels. However, IP-based MPLS | |||
target="I-D.ietf-bess-evpn-geneve"/> section 4.1 defines an | tunnels such as MPLSoGRE or MPLSoUDP are also categorized as IP | |||
Ethernet option TLV (Type Length Value) to encode an ESI label | tunnels and have the potential to support both procedures. These | |||
value.</t> | tunnels are capable of carrying ESI labels and also utilize a tunnel | |||
IP header in which the source IP address identifies the ingress | ||||
NVE.</t> | ||||
<t>Similarly, certain IP tunnels (those that include an identifier for | ||||
the source ES in the tunnel header) may also potentially support either | ||||
procedure. Examples of such tunnels include Geneve and SRv6:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>In a Geneve tunnel, the source IP address identifies the | ||||
ingress NVE; therefore, local bias is possible. Also, Section 4.1 | ||||
of <xref target="I-D.ietf-bess-evpn-geneve" format="default"/> | ||||
defines an Ethernet option Type-Length-Value (TLV) to encode an | ||||
ESI label value.</t> | ||||
</li> | ||||
<li> | ||||
<t>In an SRv6 tunnel, the source IP address identifies the ingress | <t>In an SRv6 tunnel, the source IP address identifies the ingress | |||
NVE. By default, and as outlined in <xref target="RFC9252"/>, the | NVE. By default, and as outlined in <xref target="RFC9252" | |||
ingress PE adds specific information to the SRv6 packet to enable | format="default"/>, the ingress PE adds specific information to | |||
the egress PE to identify the source ES of the BUM packet. This | the SRv6 packet to enable the egress PE to identify the source ES | |||
information is the ESI filtering argument (Arg.FE2) <xref | of the BUM packet. This information is the ESI filtering argument | |||
target="RFC9252"/> (section 6.1.1) <xref target="RFC8986"/> | (Arg.FE2) (see <xref target="RFC9252" sectionFormat="of" | |||
(section 4.12) of the service Segment Identifier (SID) received on | section="6.1.1"/> and <xref target="RFC8986" sectionFormat="of" | |||
an A-D per ES route from the egress PE.</t> | section="4.12"/>) of the service Segment Identifier (SID) received | |||
</list></t> | on an A-D per ES route from the egress PE.</t> | |||
</li> | ||||
</ul> | ||||
<t><xref target="Tunnel"/> presents various tunnel encapsulations | <t><xref target="Tunnel" format="default"/> presents various tunnel | |||
along with their supported and default Split Horizon methods. For | encapsulations along with their supported and default split-horizon | |||
GENEVE, the default Split Horizon Type (SHT) is contingent upon the | methods. For Geneve, the default SHT is contingent upon the | |||
negotiation of the Ethernet Option with the Source ID TLV. In the case | negotiation of the Ethernet Option with the Source ID TLV. In the case | |||
of SRv6, the default SHT is specified as ESI Label filtering in the | of SRv6, the default SHT is specified as ESI Label filtering in the | |||
table, as its behavior is analogous to that of ESI Label filtering. In | table, as its behavior is analogous to that of ESI Label filtering. In | |||
this document, ESI Label filtering refers to the Split Horizon | this document, "ESI Label filtering" refers to the split-horizon | |||
filtering based on the presence of a source Ethernet Segment (ES) | filtering based on the presence of a source ES | |||
identifier in the tunnel header.</t> | identifier in the tunnel header.</t> | |||
<t>This document classifies the tunnel encapsulations used by EVPN | <t>This document classifies the tunnel encapsulations used by EVPN | |||
into:<list style="numbers"> | into:</t> | |||
<t>IP-based MPLS tunnels</t> | ||||
<t>(SR-)MPLS tunnels, that is, MPLS and Segment Routing with MPLS | ||||
data plane tunnels</t> | ||||
<ol spacing="normal" type="1"><li> | ||||
<t>IP-based MPLS tunnels</t> | ||||
</li> | ||||
<li> | ||||
<t>MPLS and SR-MPLS tunnels</t> | ||||
</li> | ||||
<li> | ||||
<t>IP tunnels</t> | <t>IP tunnels</t> | |||
</li> | ||||
<li> | ||||
<t>SRv6 tunnels</t> | <t>SRv6 tunnels</t> | |||
</list></t> | </li> | |||
</ol> | ||||
<t><xref target="Tunnel"/> lists the encapsulations supported by this | <t><xref target="Tunnel" format="default"/> lists the encapsulations | |||
document. Any tunnel encapsulation not listed in <xref | supported by this document. Any tunnel encapsulation not listed in | |||
target="Tunnel"/>) is out of scope. Tunnel encapsulations used by EVPN | <xref target="Tunnel" format="default"/> is out of scope. Tunnel | |||
can be categorized into one of the four encapsulation groups mentioned | encapsulations used by EVPN can be categorized into one of the four | |||
above and support Split Horizon filtering based on the following | encapsulation groups mentioned above and support split-horizon | |||
rules:</t> | filtering based on the following rules:</t> | |||
<t><list style="symbols"> | <ul spacing="normal"> | |||
<li> | ||||
<t>IP-based MPLS tunnels and SRv6 tunnels are capable of | <t>IP-based MPLS tunnels and SRv6 tunnels are capable of | |||
supporting both Split Horizon filtering methods.</t> | supporting both split-horizon filtering methods.</t> | |||
</li> | ||||
<t>(SR-)MPLS tunnels only support ESI Label-based Split Horizon | <li> | |||
filtering</t> | <t>MPLS and SR-MPLS tunnels only support ESI Label-based split-horiz | |||
on filtering.</t> | ||||
<t>IP tunnels support Local Bias Split Horizon filtering and may | </li> | |||
also support ESI Label-based Split Horizon filtering, provided | <li> | |||
<t>IP tunnels support local-bias split-horizon filtering and may | ||||
also support ESI Label-based split-horizon filtering, provided | ||||
they incorporate a mechanism to identify the source ESI in the | they incorporate a mechanism to identify the source ESI in the | |||
header.</t> | header.</t> | |||
</list></t> | </li> | |||
<texttable align="left" anchor="Tunnel" style="all" | ||||
title="Tunnel Encapsulations and Split Horizon Types"> | ||||
<ttcol>Tunnel Encapsulation</ttcol> | ||||
<ttcol>Default Split Horizon Type (SHT)</ttcol> | ||||
<ttcol>Supports Local Bias</ttcol> | ||||
<ttcol>Supports ESI Label</ttcol> | ||||
<c>MPLSoGRE (IP-based MPLS)</c> | ||||
<c>ESI Label filtering</c> | ||||
<c>Yes</c> | ||||
<c>Yes</c> | ||||
<c>MPLSoUDP (IP-based MPLS)</c> | ||||
<c>ESI Label filtering</c> | ||||
<c>Yes</c> | ||||
<c>Yes</c> | ||||
<c>(SR-)MPLS</c> | ||||
<c>ESI Label filtering</c> | ||||
<c>No</c> | ||||
<c>Yes</c> | ||||
<c>VXLAN (IP tunnels)</c> | ||||
<c>Local Bias</c> | ||||
<c>Yes</c> | ||||
<c>No</c> | ||||
<c>NVGRE (IP tunnels)</c> | ||||
<c>Local Bias</c> | ||||
<c>Yes</c> | ||||
<c>No</c> | ||||
<c>VXLAN-GPE (IP tunnels)</c> | ||||
<c>Local Bias</c> | ||||
<c>Yes</c> | ||||
<c>No</c> | ||||
<c>GENEVE (IP tunnels)</c> | ||||
<c>Local Bias (no ESI Lb), ESI Label (if ESI lb)</c> | ||||
<c>Yes</c> | ||||
<c>Yes</c> | ||||
<c>SRv6</c> | ||||
<c>ESI Label filtering</c> | ||||
<c>Yes</c> | ||||
<c>Yes</c> | ||||
</texttable> | ||||
</ul> | ||||
<table align="left" anchor="Tunnel"> | ||||
<name>Tunnel Encapsulations and Split-Horizon Types</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">Tunnel Encapsulation</th> | ||||
<th align="left">Default Split-Horizon Type (SHT)</th> | ||||
<th align="left">Supports Local Bias</th> | ||||
<th align="left">Supports ESI Label</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">MPLSoGRE (IP-based MPLS)</td> | ||||
<td align="left">ESI Label filtering</td> | ||||
<td align="left">Yes</td> | ||||
<td align="left">Yes</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">MPLSoUDP (IP-based MPLS)</td> | ||||
<td align="left">ESI Label filtering</td> | ||||
<td align="left">Yes</td> | ||||
<td align="left">Yes</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">MPLS and SR-MPLS</td> | ||||
<td align="left">ESI Label filtering</td> | ||||
<td align="left">No</td> | ||||
<td align="left">Yes</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">VXLAN (IP tunnels)</td> | ||||
<td align="left">Local Bias</td> | ||||
<td align="left">Yes</td> | ||||
<td align="left">No</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">NVGRE (IP tunnels)</td> | ||||
<td align="left">Local Bias</td> | ||||
<td align="left">Yes</td> | ||||
<td align="left">No</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">VXLAN-GPE (IP tunnels)</td> | ||||
<td align="left">Local Bias</td> | ||||
<td align="left">Yes</td> | ||||
<td align="left">No</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">Geneve (IP tunnels)</td> | ||||
<td align="left">Local Bias (if no ESI Lb), ESI Label (if ESI lb)< | ||||
/td> | ||||
<td align="left">Yes</td> | ||||
<td align="left">Yes</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">SRv6</td> | ||||
<td align="left">ESI Label filtering</td> | ||||
<td align="left">Yes</td> | ||||
<td align="left">Yes</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>The ESI Label method is applicable for both All-Active and | <t>The ESI Label method is applicable for both All-Active and | |||
Single-Active configurations, whereas the Local Bias method is | Single-Active configurations, whereas the local-bias method is | |||
suitable only for All-Active configurations. Moreover, the ESI Label | suitable only for All-Active configurations. Moreover, the ESI Label | |||
method is effective across different network domains, while Local Bias | method is effective across different network domains, while local bias | |||
is constrained to networks where there is no change in the next hop | is constrained to networks where there is no change in the next hop | |||
between the NVEs attached to the same ES. Nonetheless, some operators | between the NVEs attached to the same ES. Nonetheless, some operators | |||
favor the Local Bias method due to its simplification of the | favor the local-bias method due to its simplification of the | |||
encapsulation process, reduced resource consumption on NVEs, and the | encapsulation process, reduced resource consumption on NVEs, and the | |||
fact that the ingress NVE always forwards traffic locally to other | fact that the ingress NVE always forwards traffic locally to other | |||
interfaces, thereby decreasing the delay in reaching multihomed | interfaces, thereby decreasing the delay in reaching multihomed | |||
hosts.</t> | hosts.</t> | |||
<t>This document extends the EVPN multihoming procedures to allow | <t>This document extends the EVPN multihoming procedures to allow | |||
operators to select the preferred Split Horizon method for a given NVO | operators to select the preferred split-horizon method for a given NVO | |||
tunnel according to their specific requirements. The choice between | tunnel according to their specific requirements. The choice between | |||
Local Bias and ESI Label Split Horizon is now allowed (by | local bias and ESI Label split horizon is now allowed (by | |||
configuration) for tunnel encapsulations that support both methods, | configuration) for tunnel encapsulations that support both methods, | |||
and this selection is advertised along with the EVPN A-D per ES route. | and this selection is advertised along with the EVPN A-D per ES route. | |||
IP tunnels that do not support both methods, such as VXLAN or NVGRE, | IP tunnels that do not support both methods, such as VXLAN or NVGRE, | |||
will continue to adhere to the procedures specified in <xref | will continue to adhere to the procedures specified in <xref | |||
target="RFC8365"/>. Note that this document does not modify the Local | target="RFC8365" format="default"/>. Note that this document does not | |||
Bias or the ESI Label Split Horizon procedures themselves, just | modify the local bias or the ESI Label split-horizon procedures | |||
focuses on the signaling and selection of the Split Horizon method to | themselves, just focuses on the signaling and selection of the split-hor | |||
apply by the multihomed NVEs. </t> | izon method to apply by the multihomed NVEs. </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sect-2" numbered="true" toc="default"> | ||||
<section anchor="sect-2" title="BGP EVPN Extensions"> | <name>BGP EVPN Extensions</name> | |||
<t>Extensions to EVPN are required to enable NVEs to advertise their | <t>Extensions to EVPN are required to enable NVEs to advertise their | |||
preferred Split Horizon method for a given ES. <xref | preferred split-horizon method for a given ES. <xref | |||
target="esi-label-extended-community"/> illustrates the ESI Label | target="esi-label-extended-community" format="default"/> illustrates the | |||
extended community (<xref target="RFC7432"/> Section 7.5), which is | ESI Label extended community (<xref target="RFC7432" sectionFormat="of" | |||
consistently advertised alongside the EVPN A-D per ES route. All NVEs | section="7.5"/>), which is consistently advertised alongside the EVPN | |||
connected to an ES advertise an A-D per ES route for that ES, including | A-D per ES route. All NVEs connected to an ES advertise an A-D per ES | |||
the extended community, which communicates information regarding the | route for that ES, including the extended community, which communicates | |||
multihoming mode (either All-Active or Single-Active) and, if necessary, | information regarding the multihoming mode (either All-Active or | |||
specifies the ESI Label to be utilized.</t> | Single-Active) and, if necessary, specifies the ESI Label to be | |||
utilized.</t> | ||||
<figure anchor="esi-label-extended-community" | <figure anchor="esi-label-extended-community"> | |||
title="ESI Label extended community"> | <name>ESI Label Extended Community</name> | |||
<artwork><![CDATA[ 1 2 | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type=0x06 | Sub-Type=0x01 | Flags(1 octet)| Reserved=0 | | | Type=0x06 | Sub-Type=0x01 | Flags(1 octet)| Reserved=0 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reserved=0 | ESI Label | | | Reserved=0 | ESI Label | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t><xref target="RFC7432"/> defines the low-order bit of the Flags octet | <t><xref target="RFC7432" format="default"/> defines the low-order bit | |||
(bit 0) as the "Single-Active" bit:</t> | of the Flags octet (bit 0) as the "Single-Active" bit:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>A value of 0 means that the multihomed ES is operating in | <t>A value of 0 means that the multihomed ES is operating in | |||
All-Active multihoming redundancy mode.</t> | All-Active multihoming redundancy mode.</t> | |||
</li> | ||||
<li> | ||||
<t>A value of 1 means that the multihomed ES is operating in | <t>A value of 1 means that the multihomed ES is operating in | |||
Single-Active multihoming redundancy mode.</t> | Single-Active multihoming redundancy mode.</t> | |||
</list><xref target="sect-5"/> establishes a registry for the Flags | </li> | |||
</ul> | ||||
<t><xref target="sect-5" format="default"/> establishes a registry for the | ||||
Flags | ||||
octet, designating the "Single-Active" bit as the low-order bit of the | octet, designating the "Single-Active" bit as the low-order bit of the | |||
newly defined multihoming redundancy mode field.</t> | newly defined Multihoming Redundancy Mode field.</t> | |||
<section anchor="sect-2.1" numbered="true" toc="default"> | ||||
<section anchor="sect-2.1" title="The Split Horizon Type"> | <name>The Split-Horizon Type</name> | |||
<t><xref target="RFC8365"/> does not include any explicit indication | <t><xref target="RFC8365" format="default"/> does not include any | |||
regarding the Split Horizon method in the A-D per Ethernet Segment | explicit indication regarding the split-horizon method in the A-D per | |||
(ES) route. In this document, the Split Horizon procedure defined in | ES route. In this document, the split-horizon procedure defined in | |||
<xref target="RFC8365"/> (section 8.3.1) is considered the default | <xref target="RFC8365" sectionFormat="of" section="8.3.1"/> is | |||
behavior, presuming that Local Bias is employed exclusively for IP | considered the default behavior, presuming that local bias is employed | |||
tunnels, while ESI Label-based Split Horizon is used for IP-based MPLS | exclusively for IP tunnels, while ESI Label-based split horizon is | |||
tunnels. This document specifies that the two high-order bits in the | used for IP-based MPLS tunnels. This document specifies that the two | |||
Flags octet (bits 6 and 7) constitute the "Split Horizon Type" (SHT) | high-order bits in the Flags octet (bits 6 and 7) constitute the "Split- | |||
Horizon Type" or "SHT" | ||||
field, where:</t> | field, where:</t> | |||
<figure> | <artwork name="" type="" align="left" alt=""> | |||
<artwork><![CDATA[ 7 6 5 4 3 2 1 0 | <![CDATA[ | |||
7 6 5 4 3 2 1 0 | ||||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|SHT| |RED| | |SHT| |RED| | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
RED = "Multihoming Redundancy Mode" field (section 5) | RED = "Multihoming Redundancy Mode" field (see Table 2) | |||
SHT bit 7 6 | SHT bit 7 6 | |||
----------- | ----------- | |||
0 0 --> Default SHT | 0 0 --> Default SHT | |||
Backwards compatible with [RFC8365] and [RFC7432] | Backwards compatible with [RFC8365] and [RFC7432] | |||
0 1 --> Local Bias | 0 1 --> Local Bias | |||
1 0 --> ESI Label based filtering | 1 0 --> ESI Label-based filtering | |||
1 1 --> reserved for future use | 1 1 --> Unassigned | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <ul spacing="normal"> | |||
<li> | ||||
<t><list style="symbols"> | <t>SHT = 00 is backwards compatible with <xref target="RFC8365" form | |||
<t>SHT = 00 is backwards compatible with <xref target="RFC8365"/> | at="default"/> | |||
and <xref target="RFC7432"/>, and indicates that the advertising | and <xref target="RFC7432" format="default"/>, and indicates that th | |||
e advertising | ||||
NVE intends to use the default or built-in SHT. The default SHT is | NVE intends to use the default or built-in SHT. The default SHT is | |||
shown in <xref target="Tunnel"/> for each encapsulation. An egress | shown in <xref target="Tunnel" format="default"/> for each encapsula | |||
NVE that follows the <xref target="RFC8365"/> behavior and does | tion. An egress | |||
NVE that follows the <xref target="RFC8365" format="default"/> behav | ||||
ior and does | ||||
not support this specification will ignore the SHT bits (which is | not support this specification will ignore the SHT bits (which is | |||
equivalent to process them as value of 00).</t> | equivalent to processing them as a value of 00).</t> | |||
</li> | ||||
<li> | ||||
<t>SHT = 01 indicates that the advertising NVE intends to use | <t>SHT = 01 indicates that the advertising NVE intends to use | |||
Local Bias procedures in the ES for which the AD per-ES route is | local-bias procedures in the ES for which the AD per-ES route is | |||
advertised.</t> | advertised.</t> | |||
</li> | ||||
<li> | ||||
<t>SHT = 10 indicates that the advertising NVE intends to use the | <t>SHT = 10 indicates that the advertising NVE intends to use the | |||
ESI Label based Split Horizon method procedures in the ES for | ESI Label-based split-horizon method procedures in the ES for | |||
which the AD per-ES route is advertised.</t> | which the AD per-ES route is advertised.</t> | |||
</li> | ||||
<t>SHT = 11 is a reserved value, for future use.</t> | <li> | |||
</list></t> | <t>SHT = 11 is Unassigned.</t> | |||
</li> | ||||
</ul> | ||||
</section> | </section> | |||
<section anchor="sect-2.2" numbered="true" toc="default"> | ||||
<section anchor="sect-2.2" | <name>Use of the Split-Horizon Type in A-D per ES Routes</name> | |||
title="Use of the Split Horizon Type In A-D Per ES Routes"> | ||||
<t>The following behavior is observed:</t> | <t>The following behavior is observed:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>An SHT value of 01 or 10 MUST NOT be used with encapsulations | <t>An SHT value of 01 or 10 <bcp14>MUST NOT</bcp14> be used with | |||
that support only one SHT in <xref target="Tunnel"/>, and MAY be | encapsulations that support only one SHT in <xref target="Tunnel" | |||
used by encapsulations that support the two SHTs in <xref | format="default"/>, and <bcp14>MAY</bcp14> be used by | |||
target="Tunnel"/>.</t> | encapsulations that support the two SHTs in <xref target="Tunnel" | |||
format="default"/>.</t> | ||||
<t>An SHT value different from 00 expresses the intent to use a | </li> | |||
specific Split Horizon method, but does not reflect the actual | <li> | |||
<t>An SHT value different than 00 expresses the intent to use a | ||||
specific split-horizon method, but does not reflect the actual | ||||
operational SHT used by the advertising NVE, unless all the NVEs | operational SHT used by the advertising NVE, unless all the NVEs | |||
attached to the ES advertise the same SHT.</t> | attached to the ES advertise the same SHT.</t> | |||
</li> | ||||
<t>In case of inconsistency in the SHT value advertised by the | <li> | |||
NVEs attached to the same ES for a given EVI, all the NVEs MUST | <t>In case of an inconsistency in the SHT value advertised by the | |||
revert to the <xref target="RFC8365"/> behavior, and use the | NVEs attached to the same ES for a given EVI, all the NVEs <bcp14>MU | |||
default SHT in <xref target="Tunnel"/>, irrespective of the | ST</bcp14> | |||
revert to the behavior in <xref target="RFC8365" format="default"/> | ||||
and use the | ||||
default SHT in <xref target="Tunnel" format="default"/>, irrespectiv | ||||
e of the | ||||
advertised SHT.</t> | advertised SHT.</t> | |||
</li> | ||||
<t>An SHT different from 00 MUST NOT be set if the Single-Active | <li> | |||
bit is set. A received A-D per ES route where Single-Active and | <t>An SHT different than 00 <bcp14>MUST NOT</bcp14> be set if the "S | |||
SHT bits are different from zero MUST follow the treat-as-withdraw | ingle-Active" | |||
behavior <xref target="RFC7606"/>.</t> | bit is set. A received A-D per ES route where the "Single-Active" an | |||
d | ||||
<t>The SHT MUST have the same value in each Ethernet A-D per ES | SHT bits are different than zero <bcp14>MUST</bcp14> follow the trea | |||
t-as-withdraw | ||||
behavior in <xref target="RFC7606" format="default"/>.</t> | ||||
</li> | ||||
<li> | ||||
<t>The SHT <bcp14>MUST</bcp14> have the same value in each Ethernet | ||||
A-D per ES | ||||
route that an NVE advertises for a given ES and a given | route that an NVE advertises for a given ES and a given | |||
encapsulation (see <xref target="sect-3"/> for NVEs supporting | encapsulation (see <xref target="sect-3" format="default"/> for NVEs supporting | |||
multiple encapsulations).</t> | multiple encapsulations).</t> | |||
</list></t> | </li> | |||
</ul> | ||||
<t>As an example, egress NVEs that support IP-based MPLS tunnels, such | <t>As an example, egress NVEs that support IP-based MPLS tunnels, such | |||
as MPLSoGRE or MPLSoUDP, will advertise A-D per ES routes for the ES | as MPLSoGRE or MPLSoUDP, will advertise A-D per ES routes for the ES | |||
along with the BGP Encapsulation extended community, as defined in | along with the BGP Encapsulation Extended Community, as defined in | |||
<xref target="RFC9012"/>. This extended community indicates the | <xref target="RFC9012" format="default"/>. This extended community indic | |||
ates the | ||||
encapsulation type (MPLSoGRE or MPLSoUDP) and may use the SHT value of | encapsulation type (MPLSoGRE or MPLSoUDP) and may use the SHT value of | |||
01 or 10 to signify the intent to use Local Bias or ESI Label, | 01 or 10 to signify the intent to use local bias or the ESI Label, | |||
respectively.</t> | respectively.</t> | |||
<t>An egress NVE MUST NOT use an SHT value other than 00 when | <t>An egress NVE <bcp14>MUST NOT</bcp14> use an SHT value other than 00 | |||
advertising an A-D per ES route with <xref target="RFC9012"/> Tunnel | when | |||
encapsulation types of VXLAN (type 8), NVGRE (type 9), MPLS (type 10), | advertising an A-D per ES route with the following tunnel encapsulation | |||
or no BGP tunnel encapsulation extended community at all. In all these | types from <xref target="RFC9012" format="default"/>: | |||
cases, it is presumed that there is no choice for the Split Horizon | VXLAN (type 8), NVGRE (type 9), MPLS (type 10), | |||
method; therefore, the SHT value MUST be set to 00. If a route with | or no BGP Tunnel Encapsulation Extended Community at all. In all these | |||
cases, it is presumed that there is no choice for the split-horizon | ||||
method; therefore, the SHT value <bcp14>MUST</bcp14> be set to 00. If a | ||||
route with | ||||
any of the mentioned encapsulation options is received and has an SHT | any of the mentioned encapsulation options is received and has an SHT | |||
value different from 00, it SHOULD apply the treat-as-withdraw | value different than 00, it <bcp14>SHOULD</bcp14> apply the treat-as-wit | |||
behavior, per <xref target="RFC7606"/>.</t> | hdraw | |||
behavior, per <xref target="RFC7606" format="default"/>.</t> | ||||
<t>An egress NVE advertising A-D per ES route(s) for an ES with GENEVE | <t>An egress NVE advertising A-D per ES route(s) for an ES with Geneve | |||
encapsulation (<xref target="RFC9012"/>, Tunnel encapsulation type 19, | encapsulation (tunnel encapsulation type 19 in the BGP Tunnel Encapsula | |||
<xref target="I-D.ietf-bess-evpn-geneve"/>) MAY use an SHT value of 01 | tion attribute <xref target="RFC9012" format="default"/>) <bcp14>MAY</bcp14> use | |||
or 10. A value of 01 indicates the intent to use Local Bias, | an SHT value of 01 or 10. A | |||
regardless of the presence of an Ethernet option TLV with a non-zero | value of 01 indicates the intent to use local bias, regardless of the | |||
Source-ID, as described in <xref target="I-D.ietf-bess-evpn-geneve"/>. | presence of an Ethernet option TLV with a non-zero Source-ID, as | |||
A value of 10 indicates the intent to use ESI Label-based Split | described in <xref target="I-D.ietf-bess-evpn-geneve" | |||
Horizon, and it is only valid if an Ethernet option TLV with non-zero | format="default"/>. A value of 10 indicates the intent to use ESI | |||
Source-ID is present. A value of 00 indicates the default behavior | Label-based split horizon, and it is only valid if an Ethernet option | |||
outlined in <xref target="Tunnel"/>, which is to use Local Bias if: a) | TLV with a non-zero Source-ID is present. A value of 00 indicates the | |||
no ESI-Label is present in the Ethernet option TLV, or b) if there is | default behavior outlined in <xref target="Tunnel" format="default"/>, | |||
no Ethernet option TLV. Otherwise, the ESI Label Split Horizon method | which is to use local bias if:</t> | |||
is applied.</t> | ||||
<ol type="a"> | ||||
<li>no ESI Label is present in the Ethernet option TLV, or </li> | ||||
<li>there is no Ethernet option TLV.</li> | ||||
</ol> | ||||
<t>Otherwise, the ESI Label split-horizon method is applied.</t> | ||||
<t>These procedures assume a single encapsulation supported in the | <t>These procedures assume a single encapsulation supported in the | |||
egress NVE. <xref target="sect-3"/> describes additional procedures | egress NVE. <xref target="sect-3" format="default"/> describes additiona l procedures | |||
for NVEs supporting multiple encapsulations.</t> | for NVEs supporting multiple encapsulations.</t> | |||
</section> | </section> | |||
<section anchor="sect-2.3" numbered="true" toc="default"> | ||||
<section anchor="sect-2.3" title="ESI Label Value In A-D Per ES Routes"> | <name>The ESI Label Value in A-D per ES Routes</name> | |||
<t>This document also updates <xref target="RFC8365"/> regarding the | <t>This document also updates <xref target="RFC8365" format="default"/> | |||
regarding the | ||||
value that is advertised in the ESI Label field of the ESI Label | value that is advertised in the ESI Label field of the ESI Label | |||
extended community, as follows:</t> | extended community, as follows:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>The A-D per ES route(s) for an ES MAY have an ESI Label value | <t>The A-D per ES route(s) for an ES <bcp14>MAY</bcp14> have an ESI | |||
of zero if the SHT value is 01. <xref target="sect-2.2"/> | Label value | |||
of zero if the SHT value is 01. <xref target="sect-2.2" format="defa | ||||
ult"/> | ||||
specifies the scenarios where the SHT can be 01. An ESI Label | specifies the scenarios where the SHT can be 01. An ESI Label | |||
value of zero eliminates the need to allocate labels in cases | value of zero eliminates the need to allocate labels in cases | |||
where they are not utilized, such as in the Local Bias method.</t> | where they are not utilized, such as in the local-bias method.</t> | |||
</li> | ||||
<t>The A-D per ES route(s) for an ES MAY have an ESI Label value | <li> | |||
<t>The A-D per ES route(s) for an ES <bcp14>MAY</bcp14> have an ESI | ||||
Label value | ||||
of zero for VXLAN or NVGRE encapsulations.</t> | of zero for VXLAN or NVGRE encapsulations.</t> | |||
</list></t> | </li> | |||
</ul> | ||||
</section> | </section> | |||
<section anchor="sect-2.4" | <section anchor="sect-2.4" numbered="true" toc="default"> | |||
title="Backwards Compatibility With RFC8365 NVEs"> | <name>Backwards Compatibility with NVEs from RFC 8365</name> | |||
<t>As discussed in <xref target="sect-2.2"/> this specification is | <t>As discussed in <xref target="sect-2.2" format="default"/>, this | |||
backwards compatible with the Split Horizon filtering behavior in | specification is backwards compatible with the split-horizon filtering | |||
<xref target="RFC8365"/> and a non-upgraded NVE can be attached to the | behavior in <xref target="RFC8365" format="default"/> and a | |||
same ES as other NVEs supporting this specification.</t> | non-upgraded NVE can be attached to the same ES as other NVEs | |||
supporting this specification.</t> | ||||
<t>An NVE maintains an administrative SHT value for an Ethernet | <t>An NVE maintains an administrative SHT value for an ES, which is | |||
Segment (ES), which is advertised alongside the A-D per ES route, and | advertised alongside the A-D per ES route, and an operational SHT | |||
an operational SHT value, which is the one actually used regardless of | value, which is the one actually used regardless of what the NVE has | |||
what the NVE has advertised. The administrative SHT matches the | advertised. The administrative SHT matches the operational SHT if all | |||
operational SHT if all the NVEs attached to the ES have the same | the NVEs attached to the ES have the same administrative SHT.</t> | |||
administrative SHT.</t> | <t>This document assumes that an implementation of <xref target="RFC7432 | |||
" format="default"/> or <xref target="RFC8365" format="default"/> that does not | ||||
<t>This document assumes that an implementation of <xref | support | |||
target="RFC7432"/> or <xref target="RFC8365"/> that does not support | ||||
the specifications in this document will ignore the values of all the | the specifications in this document will ignore the values of all the | |||
Flags in the ESI Label extended community, except for the | Flags in the ESI Label extended community, except for the | |||
Single-Active bit. Based on this assumption, a non-upgraded NVE will | "Single-Active" bit. Based on this assumption, a non-upgraded NVE will | |||
disregard any SHT value other than 00. If an upgraded NVE receives at | disregard any SHT value other than 00. If an upgraded NVE receives at | |||
least one A-D per ES route for the ES with an SHT value of 00, it MUST | least one A-D per ES route for the ES with an SHT value of 00, it <bcp14 | |||
revert its operational SHT to the default Split Horizon method, as | >MUST</bcp14> | |||
described in <xref target="Tunnel"/>, irrespective of its | revert its operational SHT to the default split-horizon method, as | |||
described in <xref target="Tunnel" format="default"/>, irrespective of i | ||||
ts | ||||
administrative SHT.</t> | administrative SHT.</t> | |||
<t>For instance, consider an NVE attached to ES N that receives two | <t>For instance, consider an NVE attached to ES N that receives two | |||
A-D per ES routes for N from different NVEs, NVE1 and NVE2. If the | A-D per ES routes for N from different NVEs, NVE1 and NVE2. If the | |||
route from NVE1 has an SHT value of 00 and the one from NVE2 has an | route from NVE1 has an SHT value of 00 and the one from NVE2 has an | |||
SHT value of 01, the NVE MUST use the default Split Horizon method | SHT value of 01, the NVE <bcp14>MUST</bcp14> use the default split-horiz | |||
specified in <xref target="Tunnel"/> as its operational SHT, | on method | |||
specified in <xref target="Tunnel" format="default"/> as its operational | ||||
SHT, | ||||
regardless of its administrative SHT.</t> | regardless of its administrative SHT.</t> | |||
<t>All NVEs attached to an ES with an operational SHT value of 10 <bcp14 | ||||
<t>All NVEs attached to an ES with an operational SHT value of 10 MUST | >MUST</bcp14> | |||
advertise a valid, non-zero ESI Label. If the operational SHT value is | advertise a valid, non-zero ESI Label. If the operational SHT value is | |||
01, the ESI Label MAY be zero. If the operational SHT value is 00, the | 01, the ESI Label <bcp14>MAY</bcp14> be zero. If the operational SHT val | |||
ESI Label may be zero only if the default encapsulation supports Local | ue is 00, the | |||
Bias exclusively, and the NVEs do not require the presence of a valid, | ESI Label may be zero only if the default encapsulation supports local | |||
bias exclusively, and the NVEs do not require the presence of a valid, | ||||
non-zero ESI Label.</t> | non-zero ESI Label.</t> | |||
<t>If an NVE changes its operational SHT value from 01 (Local Bias) to | <t>If an NVE changes its operational SHT value from 01 (Local Bias) to | |||
00 (Default SHT) due to the presence of a new non-upgraded NVE in the | 00 (Default SHT) due to the presence of a new non-upgraded NVE in the | |||
ES, and it previously advertised a zero ESI Label, it MUST send an | ES, and it previously advertised a zero ESI Label, it <bcp14>MUST</bcp14 > send an | |||
update with a valid, non-zero ESI Label, unless all the non-upgraded | update with a valid, non-zero ESI Label, unless all the non-upgraded | |||
NVEs in the ES support only Local Bias. For example, consider NVE1 and | NVEs in the ES support only local bias. For example, consider NVE1 and | |||
NVE2 using MPLSoUDP as encapsulation, attached to the same Ethernet | NVE2 using MPLSoUDP as encapsulation, attached to the same Ethernet | |||
Segment ES1, and advertising an SHT value of 01 (Local Bias) with a | Segment ES1, and advertising an SHT value of 01 (Local Bias) with a | |||
zero ESI Label value. Suppose NVE3, which does not support this | zero ESI Label value. Suppose NVE3, which does not support this | |||
specification, joins ES1 and advertises an SHT value of 00 (default). | specification, joins ES1 and advertises an SHT value of 00 (default). | |||
Upon receiving NVE3's A-D per ES route, NVE1 and NVE2 MUST update | Upon receiving NVE3's A-D per ES route, NVE1 and NVE2 <bcp14>MUST</bcp14 > update | |||
their A-D per ES routes for ES1 to include a valid, non-zero ESI Label | their A-D per ES routes for ES1 to include a valid, non-zero ESI Label | |||
value. The assumption here is that NVE3 only supports the default ESI | value. The assumption here is that NVE3 only supports the default ESI | |||
Label-based Split Horizon filtering.</t> | Label-based split-horizon filtering.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="sect-3" numbered="true" toc="default"> | ||||
<name>Procedures for NVEs Supporting Multiple Encapsulations</name> | ||||
<t>As specified in <xref target="RFC8365" format="default"/>, an NVE | ||||
that supports multiple data plane encapsulations (e.g., VXLAN, NVGRE, | ||||
MPLS, MPLSoUDP, Geneve) must indicate all supported encapsulations using | ||||
BGP Encapsulation extended communities as defined in <xref | ||||
target="RFC9012" format="default"/> for all EVPN routes. This section | ||||
provides clarification on the multihoming split-horizon behavior for | ||||
NVEs that advertise and receive multiple BGP Encapsulation extended | ||||
communities along with the A-D per ES routes. This section uses the | ||||
notation {x, y} (more than two encapsulations is possible too) to denote | ||||
the encapsulations advertised in BGP Encapsulation extended communities | ||||
(or the BGP Tunnel Encapsulation Attribute), where x and y represent | ||||
different encapsulation values. When Geneve is one of the | ||||
encapsulations, the tunnel type is indicated in either a BGP | ||||
Encapsulation extended community or a BGP Tunnel Encapsulation | ||||
Attribute.</t> | ||||
<section anchor="sect-3" | <t>It is important to note that an NVE <bcp14>MAY</bcp14> advertise multip | |||
title="Procedures for NVEs Supporting Multiple Encapsulations"> | le A-D per ES | |||
<t>As specified in <xref target="RFC8365"/>, an NVE that supports | ||||
multiple data plane encapsulations (e.g., VXLAN, NVGRE, MPLS, MPLSoUDP, | ||||
GENEVE) must indicate all supported encapsulations using BGP | ||||
Encapsulation extended communities as defined in <xref | ||||
target="RFC9012"/> for all EVPN routes. This section provides | ||||
clarification on the multihoming Split Horizon behavior for NVEs that | ||||
advertise and receive multiple BGP Encapsulation extended communities | ||||
along with the A-D per ES routes. This section uses the notation {x, y} | ||||
(more than two encapsulations is possible too) to denote the | ||||
encapsulations advertised in BGP Encapsulation extended communities (or | ||||
BGP Tunnel Encapsulation Attribute), where x and y represent different | ||||
encapsulation values. When GENEVE is one of the encapsulations, the | ||||
tunnel type is indicated in either a BGP Encapsulation extended | ||||
community or a BGP Tunnel Encapsulation Attribute. </t> | ||||
<t>It is important to note that an NVE MAY advertise multiple A-D per ES | ||||
routes for the same ES, rather than a single route, with each route | routes for the same ES, rather than a single route, with each route | |||
conveying a set of Route Targets (RT). The total set of Route Targets | conveying a set of Route Targets (RTs). The total set of RTs | |||
associated with a given ES is referred to as the RT-set for that ES. | associated with a given ES is referred to as the RT-set for that ES. | |||
Each of the EVIs represented in the RT-set will have its RT included in | Each of the EVIs represented in the RT-set will have its RT included in | |||
one, and only one, A-D per ES route for the ES. When multiple A-D per ES | one, and only one, A-D per ES route for the ES. When multiple A-D per ES | |||
routes are advertised for the same ES, each route must have a distinct | routes are advertised for the same ES, each route must have a distinct | |||
Route Distinguisher.</t> | Route Distinguisher.</t> | |||
<t>As per <xref target="RFC8365"/>, an NVE that advertises multiple | <t>As per <xref target="RFC8365" format="default"/>, an NVE that advertise | |||
encapsulations in the A-D per ES route(s) for an ES MUST advertise | s multiple | |||
encapsulations that use the same Split Horizon filtering method in the | encapsulations in the A-D per ES route(s) for an ES <bcp14>MUST</bcp14> ad | |||
vertise | ||||
encapsulations that use the same split-horizon filtering method in the | ||||
same route. For example:</t> | same route. For example:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>An A-D per ES route for ES-x may be advertised with {VXLAN, | <t>An A-D per ES route for ES-x may be advertised with {VXLAN, | |||
NVGRE} encapsulations.</t> | NVGRE} encapsulations.</t> | |||
</li> | ||||
<li> | ||||
<t>An A-D per ES route for ES-y may be advertised with {MPLS, | <t>An A-D per ES route for ES-y may be advertised with {MPLS, | |||
MPLSoUDP, MPLSoGRE} encapsulations (or a subset).</t> | MPLSoUDP, MPLSoGRE} encapsulations (or a subset).</t> | |||
</li> | ||||
<t>But an A-D per ES route for ES-z MUST NOT be advertised with | <li> | |||
<t>However, an A-D per ES route for ES-z <bcp14>MUST NOT</bcp14> be ad | ||||
vertised with | ||||
{MPLS, VXLAN} encapsulations.</t> | {MPLS, VXLAN} encapsulations.</t> | |||
</list></t> | </li> | |||
</ul> | ||||
<t>This document extends the described behavior as follows:</t> | <t>This document extends the described behavior as follows:</t> | |||
<ol spacing="normal" type="a"><li> | ||||
<t><list style="letters"> | ||||
<t>An A-D per ES route for ES-x may be advertised with multiple | <t>An A-D per ES route for ES-x may be advertised with multiple | |||
encapsulations, some of which support a single Split Horizon method. | encapsulations, some of which support a single split-horizon method. | |||
In this case, the Split Horizon Type (SHT) value MUST be 00. For | In this case, the SHT value <bcp14>MUST</bcp14> be 00. For instance, | |||
instance, encapsulations such as {VXLAN, NVGRE}, {VXLAN, GENEVE}, or | encapsulations such as {VXLAN, NVGRE}, {VXLAN, Geneve}, or {MPLS, | |||
{MPLS, MPLSoGRE, MPLSoUDP} can be advertised in an A-D per ES route. | MPLSoGRE, MPLSoUDP} can be advertised in an A-D per ES route. In | |||
In all these cases, the SHT value MUST be 00 and the behavior | all these cases, the SHT value <bcp14>MUST</bcp14> be 00 and the | |||
treat-as-withdraw <xref target="RFC7606"/> is applied in case of any | treat-as-withdraw behavior <xref target="RFC7606" format="default"/> | |||
other value.</t> | is applied in case of any other value.</t> | |||
</li> | ||||
<li> | ||||
<t>An A-D per ES route for ES-y may be advertised with multiple | <t>An A-D per ES route for ES-y may be advertised with multiple | |||
encapsulations that all support both Split Horizon methods. In this | encapsulations that all support both split-horizon methods. In this | |||
case, the SHT value MAY be 01 if the preferred method is Local Bias, | case, the SHT value <bcp14>MAY</bcp14> be 01 if the preferred method i | |||
s local bias, | ||||
or 10 if the ESI Label-based method is desired. For example, | or 10 if the ESI Label-based method is desired. For example, | |||
encapsulations such as {MPLSoGRE, MPLSoUDP, GENEVE} (or a subset) | encapsulations such as {MPLSoGRE, MPLSoUDP, Geneve} (or a subset) | |||
MAY be advertised in an A-D per ES route with an SHT value of 01. | <bcp14>MAY</bcp14> be advertised in an A-D per ES route with an SHT va | |||
The ESI Label value in this case MAY be zero.</t> | lue of 01. | |||
The ESI Label value in this case <bcp14>MAY</bcp14> be zero.</t> | ||||
<t>If ES-z with RT-set composed of (RT1, RT2, RT3.. RTn) supports | </li> | |||
multiple encapsulations requiring different Split Horizon methods, a | <li> | |||
distinct A-D per ES route (or group of routes) per Split Horizon | <t>If ES-z with an RT-set composed of (RT1, RT2, RT3.. RTn) supports | |||
method MUST be advertised. For example, consider an ES-z with n | multiple encapsulations requiring different split-horizon methods, a | |||
Route Targets (RTs) where:<list style="symbols"> | distinct A-D per ES route (or group of routes) per split-horizon | |||
method <bcp14>MUST</bcp14> be advertised. For example, consider an ES- | ||||
z with n RTs, where:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>the EVIs corresponding to (RT1..RTi) support VXLAN,</t> | <t>the EVIs corresponding to (RT1..RTi) support VXLAN,</t> | |||
</li> | ||||
<li> | ||||
<t>the ones for (RTi+1..RTm) (with i<m) support MPLSoUDP with | <t>the ones for (RTi+1..RTm) (with i<m) support MPLSoUDP with | |||
Local Bias,</t> | local bias, and</t> | |||
</li> | ||||
<t>and the ones for (RTm+1..RTn) (with m<n) support GENEVE | <li> | |||
with ESI Label based Split Horizon.</t> | <t>the ones for (RTm+1..RTn) (with m<n) support Geneve | |||
</list>In this scenario, three groups of A-D per ES routes MUST be | with ESI Label-based split horizon.</t> | |||
advertised for ES-z:<list style="symbols"> | </li> | |||
<t>A-D per ES route group 1, including (RT1..RTi), with | </ul> | |||
encapsulation {VXLAN}, and an SHT value of 00. The ESI Label MAY | <t>In this scenario, three groups of A-D per ES routes <bcp14>MUST</bc | |||
p14> be | ||||
advertised for ES-z:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>A-D per ES route group 1, including (RT1..RTi) with | ||||
encapsulation {VXLAN} and an SHT value of 00. The ESI Label <bcp14 | ||||
>MAY</bcp14> | ||||
be zero.</t> | be zero.</t> | |||
</li> | ||||
<t>A-D per ES route group 2, including (RTi+1..RTm), with | <li> | |||
encapsulation {MPLSoUDP}, and an SHT value of 01. The ESI Label | <t>A-D per ES route group 2, including (RTi+1..RTm) with | |||
MAY be zero.</t> | encapsulation {MPLSoUDP} and an SHT value of 01. The ESI Label | |||
<bcp14>MAY</bcp14> be zero.</t> | ||||
<t>A-D per ES route group 3, including (RTm+1..RTn), with | </li> | |||
encapsulation {GENEVE}, and an SHT value of 10. The ESI Label | <li> | |||
MUST have a valid, non-zero value, and the Ethernet option as | <t>A-D per ES route group 3, including (RTm+1..RTn) with | |||
defined in <xref target="RFC8926"/> MUST be advertised.</t> | encapsulation {Geneve} and an SHT value of 10. The ESI Label | |||
</list></t> | <bcp14>MUST</bcp14> have a valid, non-zero value, and the Ethernet | |||
</list></t> | option as | |||
defined in <xref target="RFC8926" format="default"/> <bcp14>MUST</ | ||||
<t>As per <xref target="RFC8365"/>, it is the responsibility of the | bcp14> be advertised.</t> | |||
</li> | ||||
</ul> | ||||
</li> | ||||
</ol> | ||||
<t>As per <xref target="RFC8365" format="default"/>, it is the responsibil | ||||
ity of the | ||||
operator of a given EVI to ensure that all of the NVEs within that EVI | operator of a given EVI to ensure that all of the NVEs within that EVI | |||
support a common encapsulation. Failure to meet this condition may | support a common encapsulation. Failure to meet this condition may | |||
result in service disruption or failure.</t> | result in service disruption or failure.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>All the security considerations described in <xref target="RFC7432"/> | <t>All the security considerations described in <xref target="RFC7432" for | |||
mat="default"/> | ||||
are applicable to this document.</t> | are applicable to this document.</t> | |||
<t>Additionally, this document modifies the procedures for Split Horizon | <t>Additionally, this document modifies the procedures for split-horizon | |||
filtering as outlined in <xref target="RFC8365"/>, offering operators a | filtering as outlined in <xref target="RFC8365" format="default"/>, | |||
choice between Local Bias and ESI Label-based filtering for tunnels that | offering operators a choice between local bias and ESI Label-based | |||
support both methods. Misconfiguration of the desired Split Horizon Type | filtering for tunnels that support both methods. Misconfiguration of the | |||
(SHT) could lead to forwarding behaviors that differ from the intended | desired SHT could lead to forwarding behaviors that differ from the | |||
configuration. Apart from this risk, this document describes procedures | intended configuration. Apart from this risk, this document describes | |||
to ensure that all Provider Edge (PE) devices or Network Virtualization | procedures to ensure that all PE devices or NVEs connected to the same | |||
Edges (NVEs) connected to the same Ethernet Segment (ES) agree on a | ES agree on a common SHT method, with a fallback to a default behavior | |||
common SHT method, with a fallback to a default behavior in case of a | in case of a mismatch in the SHT bits being advertised by any two PEs or | |||
mismatch in the SHT bits being advertised by any two PEs or NVEs in the | NVEs in the ES. Consequently, unauthorized changes to the SHT | |||
Ethernet Segment. Consequently, unauthorized changes to the SHT | configuration by an attacker on a single PE or NVE of the ES should not | |||
configuration by an attacker on a single PE or NVE of the Ethernet | cause traffic disruption (as long as the SHT value is valid as per this | |||
Segment should not cause traffic disruption (as long as the SHT value is | document) but may result in alterations to forwarding behavior.</t> | |||
valid as per this document) but may result in alterations to forwarding | ||||
behavior.</t> | ||||
</section> | </section> | |||
<section anchor="sect-5" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<section anchor="sect-5" title="IANA Considerations"> | <t>Per this document, IANA has created the "EVPN ESI Label Extended Commun | |||
<t>This document creates a registry called "EVPN ESI Label Extended | ity Flags" registry for the 1-octet Flags field in the ESI Label Extended | |||
Community Flags" for the 1-octet Flags field in the ESI Label Extended | Community <xref target="RFC7432" format="default"/>, as follows:</t> | |||
Community <xref target="RFC7432"/>, as follows:</t> | <table align="center"> | |||
<thead> | ||||
<texttable> | <tr> | |||
<ttcol>Bit Position</ttcol> | <th align="left">Bit Position</th> | |||
<th align="left">Name</th> | ||||
<ttcol>Name</ttcol> | <th align="left">Reference</th> | |||
</tr> | ||||
<ttcol>Reference</ttcol> | </thead> | |||
<tbody> | ||||
<c>0-1</c> | <tr> | |||
<td align="left">0-1</td> | ||||
<c>Multihoming Redundancy Mode</c> | <td align="left">Multihoming Redundancy Mode</td> | |||
<td align="left"> | ||||
<c><xref target="RFC7432"/></c> | <xref target="RFC7432" format="default"/></td> | |||
</tr> | ||||
<c>2-5</c> | <tr> | |||
<td align="left">2-5</td> | ||||
<c>Unassigned</c> | <td align="left">Unassigned</td> | |||
<td align="left"/> | ||||
<c/> | </tr> | |||
<tr> | ||||
<c>6-7</c> | <td align="left">6-7</td> | |||
<td align="left">Split-Horizon Type</td> | ||||
<c>Split Horizon Type</c> | <td align="left">RFC 9746</td> | |||
</tr> | ||||
<c>This Document</c> | </tbody> | |||
</texttable> | </table> | |||
<t>This document also creates a registry for the "Multihoming Redundancy | ||||
Mode" field of the EVPN ESI Label Extended Community Flags. This | ||||
registry is called "Multihoming Redundancy Mode" and is initialized as | ||||
follows:</t> | ||||
<texttable> | ||||
<ttcol>Value</ttcol> | ||||
<ttcol>Multihoming redundancy mode</ttcol> | ||||
<ttcol>Reference</ttcol> | ||||
<c>00</c> | ||||
<c>All-Active mode</c> | ||||
<c><xref target="RFC7432"/></c> | ||||
<c>01</c> | ||||
<c>Single-Active mode</c> | ||||
<c><xref target="RFC7432"/></c> | ||||
<c>10</c> | ||||
<c>Unassigned</c> | ||||
<c/> | ||||
<c>11</c> | ||||
<c>Unassigned</c> | ||||
<c/> | ||||
</texttable> | ||||
<t>Finally, a third registry for the "Split Horizon Type" field of the | ||||
EVPN ESI Label Extended Community Flags is created by this document too. | ||||
This registry is called "Split Horizon Type" and is initialized as | ||||
follows:</t> | ||||
<texttable> | ||||
<ttcol>Value</ttcol> | ||||
<ttcol>Split Horizon Type value</ttcol> | ||||
<ttcol>Reference</ttcol> | ||||
<c>00</c> | ||||
<c>Default SHT</c> | ||||
<c>This document</c> | ||||
<c>01</c> | ||||
<c>Local Bias</c> | ||||
<c>This document</c> | ||||
<c>10</c> | ||||
<c>ESI Label based filtering</c> | ||||
<c>This document</c> | ||||
<c>11</c> | ||||
<c>Unassigned</c> | ||||
<c/> | ||||
</texttable> | ||||
<t>IANA has also created the "Multihoming Redundancy | ||||
Mode" registry for the related field of the "EVPN ESI Label Extended Commu | ||||
nity Flags". The registry has been populated with the following initial values: | ||||
</t> | ||||
<table align="center"> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">Value</th> | ||||
<th align="left">Multihoming Redundancy Mode</th> | ||||
<th align="left">Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">00</td> | ||||
<td align="left">All-Active</td> | ||||
<td align="left"> | ||||
<xref target="RFC7432" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">01</td> | ||||
<td align="left">Single-Active</td> | ||||
<td align="left"> | ||||
<xref target="RFC7432" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">10</td> | ||||
<td align="left">Unassigned</td> | ||||
<td align="left"/> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">11</td> | ||||
<td align="left">Unassigned</td> | ||||
<td align="left"/> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>Finally, IANA has created the "Split-Horizon Type" registry for the rel | ||||
ated field of the | ||||
"EVPN ESI Label Extended Community Flags". The registry has been populated | ||||
with the following initial values:</t> | ||||
<table align="center"> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">Value</th> | ||||
<th align="left">Split-Horizon Type Value</th> | ||||
<th align="left">Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">00</td> | ||||
<td align="left">Default SHT</td> | ||||
<td align="left">RFC 9746</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">01</td> | ||||
<td align="left">Local Bias</td> | ||||
<td align="left">RFC 9746</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">10</td> | ||||
<td align="left">ESI Label-based filtering</td> | ||||
<td align="left">RFC 9746</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">11</td> | ||||
<td align="left">Unassigned</td> | ||||
<td align="left"/> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>New registrations in the "EVPN ESI Label Extended Community Flags", | <t>New registrations in the "EVPN ESI Label Extended Community Flags", | |||
"Multihoming Redundancy Mode", and "Split Horizon Type" registries will | "Multihoming Redundancy Mode", and "Split-Horizon Type" registries will | |||
be made through the "IETF Review" procedure defined in <xref | be made through the "IETF Review" procedure defined in <xref | |||
target="RFC8126"/>. These registries are located in the "Border Gateway | target="RFC8126" format="default"/>. These registries are located in the | |||
Protocol (BGP) Extended Communities" registry group.</t> | "Border Gateway Protocol (BGP) Extended Communities" registry group.</t> | |||
</section> | </section> | |||
<section anchor="sect-6" title="Acknowledgments"> | ||||
<t>The authors would like to thank Anoop Ghanwani, Gyan Mishra and | ||||
Jeffrey Zhang for their review and useful comments. Thanks to Gunter van | ||||
de Velde and Sue Hares as well, for their thorough review.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <displayreference target="I-D.ietf-bess-evpn-geneve" to="EVPN-GENEVE"/> | |||
&RFC2119; | <displayreference target="I-D.ietf-nvo3-vxlan-gpe" to="VXLAN-GPE"/> | |||
<references> | ||||
&RFC8174; | <name>References</name> | |||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
119.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
174.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
126.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
432.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
365.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
252.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
&RFC8126; | <!-- [I-D.ietf-bess-evpn-geneve] IESG state: I-D Exists as of 09/05/24--> | |||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-bess-evpn-geneve.xml"/> | ||||
&RFC7432; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
348.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
023.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
637.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
510.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
926.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
012.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
606.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
660.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
986.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
402.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
754.xml"/> | ||||
&RFC8365; | <!-- [I-D.ietf-nvo3-vxlan-gpe] IESG state: Expired as of 09/05/24 --> | |||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-nv | ||||
o3-vxlan-gpe.xml"/> | ||||
&RFC9252; | <reference anchor="TUNNEL-ENCAP" target="https://www.iana.org/assignment | |||
s/bgp-tunnel-encapsulation"> | ||||
<front> | ||||
<title>Border Gateway Protocol (BGP) Tunnel Encapsulation</title> | ||||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
</references> | </references> | |||
<section anchor="Acknowledgments" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>The authors would like to thank <contact fullname="Anoop Ghanwani"/>, | ||||
<contact fullname="Gyan Mishra"/>, and <contact fullname="Jeffrey | ||||
Zhang"/> for their review and useful comments. Thanks to <contact | ||||
fullname="Gunter Van de Velde"/> and <contact fullname="Sue Hares"/> as | ||||
well, for their thorough review.</t> | ||||
</section> | ||||
<references title="Informative References"> | ||||
&I-D.ietf-bess-evpn-geneve; | ||||
&RFC7348; | ||||
&RFC4023; | ||||
&RFC7637; | ||||
&RFC7510; | ||||
&RFC8926; | ||||
&RFC9012; | ||||
&RFC7606; | ||||
&RFC8660; | ||||
&RFC8986; | ||||
&RFC8402; | ||||
&RFC8754; | ||||
&I-D.ietf-nvo3-vxlan-gpe; | ||||
<reference anchor="IANA-BGP-TUNNEL-ENCAP" | ||||
target="https://www.iana.org/assignments/bgp-tunnel-encapsulati | ||||
on/bgp-tunnel-encapsulation.xhtml#tunnel-types"> | ||||
<front> | ||||
<title>Border Gateway Protocol (BGP) Tunnel Encapsulation</title> | ||||
<author fullname="IANA"> | ||||
<organization/> | ||||
</author> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 163 change blocks. | ||||
781 lines changed or deleted | 842 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |