rfc9746.original | rfc9746.txt | |||
---|---|---|---|---|
BESS Workgroup J. Rabadan, Ed. | Internet Engineering Task Force (IETF) J. Rabadan, Ed. | |||
Internet-Draft K. Nagaraj | Request for Comments: 9746 K. Nagaraj | |||
Updates: 8365, 7432 (if approved) Nokia | Updates: 7432, 8365 Nokia | |||
Intended status: Standards Track W. Lin | Category: Standards Track W. Lin | |||
Expires: 17 February 2025 Juniper | ISSN: 2070-1721 Juniper | |||
A. Sajassi | A. Sajassi | |||
Cisco | Cisco | |||
16 August 2024 | February 2025 | |||
BGP EVPN Multi-Homing Extensions for Split Horizon Filtering | BGP EVPN Multihoming Extensions for Split Horizon Filtering | |||
draft-ietf-bess-evpn-mh-split-horizon-11 | ||||
Abstract | Abstract | |||
Ethernet Virtual Private Network (EVPN) is commonly used with Network | 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 | Segment Routing (SR) tunnels. The multihoming procedures in EVPN may | |||
on the type of tunnel used within the EVPN Broadcast Domain. | vary based on the type of tunnel used within the EVPN Broadcast | |||
Specifically, there are two multi-homing Split Horizon procedures | Domain. Specifically, there are two multihoming Split Horizon | |||
designed to prevent looped frames on multi-homed Customer Edge (CE) | procedures designed to prevent looped frames on multihomed Customer | |||
devices: the ESI Label-based procedure and the Local Bias procedure. | Edge (CE) devices: the Ethernet Segment Identifier (ESI) Label-based | |||
The ESI Label-based Split Horizon is applied to MPLS-based tunnels, | procedure and the Local Bias procedure. The ESI Label-based Split | |||
such as MPLSoUDP, while the Local Bias procedure is used for other | Horizon procedure is applied to MPLS-based tunnels such as MPLS over | |||
tunnels, such as VXLAN. | UDP (MPLSoUDP), while the Local Bias procedure is used for other | |||
tunnels such as Virtual eXtensible Local Area Network (VXLAN) | ||||
tunnels. | ||||
Current specifications do not allow operators to choose which Split | Current specifications do not allow operators to choose which Split | |||
Horizon procedure to use for tunnel encapsulations that support both | Horizon procedure to use for tunnel encapsulations that support both | |||
methods. Examples of tunnels that may support both procedures | methods. Examples of tunnels that may support both procedures | |||
include MPLSoGRE, MPLSoUDP, GENEVE, and SRv6. This document updates | include MPLSoUDP, MPLS over GRE (MPLSoGRE), Generic Network | |||
the EVPN multi-homing procedures described in RFC 8365 and RFC 7432, | Virtualization Encapsulation (GENEVE), and Segment Routing over IPv6 | |||
enabling operators to select the Split Horizon procedure that meets | (SRv6) tunnels. This document updates the EVPN multihoming | |||
their specific requirements. | procedures described in RFCs 7432 and 8365, enabling operators to | |||
select the Split Horizon procedure that meets their specific | ||||
requirements. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | This document is a product of the Internet Engineering Task Force | |||
Task Force (IETF). Note that other groups may also distribute | (IETF). It represents the consensus of the IETF community. It has | |||
working documents as Internet-Drafts. The list of current Internet- | received public review and has been approved for publication by the | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | Information about the current status of this document, any errata, | |||
and may be updated, replaced, or obsoleted by other documents at any | and how to provide feedback on it may be obtained at | |||
time. It is inappropriate to use Internet-Drafts as reference | https://www.rfc-editor.org/info/rfc9746. | |||
material or to cite them other than as "work in progress." | ||||
This Internet-Draft will expire on 17 February 2025. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Conventions and Terminology . . . . . . . . . . . . . . . 3 | 1.1. Conventions and Terminology | |||
1.2. Split Horizon Filtering and Tunnel Encapsulations . . . . 5 | 1.2. Split Horizon Filtering and Tunnel Encapsulations | |||
2. BGP EVPN Extensions . . . . . . . . . . . . . . . . . . . . . 9 | 2. BGP EVPN Extensions | |||
2.1. The Split Horizon Type . . . . . . . . . . . . . . . . . 9 | 2.1. The Split Horizon Type | |||
2.2. Use of the Split Horizon Type In A-D Per ES Routes . . . 10 | 2.2. Use of the Split Horizon Type in A-D per ES Routes | |||
2.3. ESI Label Value In A-D Per ES Routes . . . . . . . . . . 12 | 2.3. The ESI Label Value in A-D per ES Routes | |||
2.4. Backwards Compatibility With RFC8365 NVEs . . . . . . . . 12 | 2.4. Backwards Compatibility with RFC 8365 NVEs | |||
3. Procedures for NVEs Supporting Multiple Encapsulations . . . 13 | 3. Procedures for NVEs Supporting Multiple Encapsulations | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 4. Security Considerations | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 5. IANA Considerations | |||
6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | 6. References | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 6.1. Normative References | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 17 | 6.2. Informative References | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 18 | Acknowledgments | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
Ethernet Virtual Private Networks (EVPN) are commonly used with the | Ethernet Virtual Private Networks (EVPNs) are commonly used with the | |||
following tunnel encapsulations: | following tunnel encapsulations: | |||
* Network Virtualization Overlay (NVO) tunnels, where the EVPN | * Network Virtualization Overlay (NVO) tunnels, where the EVPN | |||
procedures are specified in [RFC8365]. MPLSoGRE [RFC4023], | procedures are specified in [RFC8365]. MPLSoGRE [RFC4023], | |||
MPLSoUDP [RFC7510], GENEVE [RFC8926] or VXLAN [RFC7348] tunnels | MPLSoUDP [RFC7510], GENEVE [RFC8926], or VXLAN [RFC7348] tunnels | |||
are considered NVO tunnels. | are considered NVO tunnels. | |||
* MPLS and Segment Routing with MPLS data plane (SR-MPLS), where the | * MPLS and Segment Routing over MPLS (SR-MPLS) tunnels, where the | |||
relevant EVPN procedures are specified in [RFC7432]. Segment | relevant EVPN procedures are specified in [RFC7432]. SR-MPLS | |||
Routing with MPLS data plane tunneling is specified in [RFC8660]. | tunneling is specified in [RFC8660]. | |||
* Segment Routing with IPv6 data plane (SRv6), where the relevant | * Segment Routing over IPv6 (SRv6) tunnels, where the relevant EVPN | |||
EVPN procedures are specified in [RFC9252]. SRv6 is specified in | procedures are specified in [RFC9252]. SRv6 is specified in | |||
[RFC8402][RFC8754]. | [RFC8402] and [RFC8754]. | |||
Split Horizon, in this document, follows the definition in [RFC7432]. | In this document, the term "Split Horizon" follows the definition in | |||
Split Horizon refers to the EVPN multihoming procedure that prevents | [RFC7432]. Split Horizon refers to the EVPN multihoming procedure | |||
a PE from sending a frame back to a multihomed Customer Edge (CE) | that prevents a Provider Edge (PE) from sending a frame back to a | |||
when that CE originated the frame in the first place. | multihomed Customer Edge (CE) when that CE originated the frame in | |||
the first place. | ||||
EVPN multihoming procedures may vary depending on the type of tunnel | EVPN multihoming procedures may vary depending on the type of tunnel | |||
utilized within the EVPN Broadcast Domain. Specifically, there are | utilized within the EVPN Broadcast Domain. Specifically, there are | |||
two multihoming Split Horizon procedures employed to prevent looped | two multihoming Split Horizon procedures employed to prevent looped | |||
frames on multihomed CE devices: the ESI Label-based procedure and | frames on multihomed CE devices: the ESI Label-based procedure and | |||
the Local Bias procedure. | the Local Bias procedure. | |||
The ESI Label-based Split Horizon procedure is used for MPLS or MPLS- | 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 | over X (MPLSoX) tunnels, such as MPLSoUDP, and its procedures are | |||
are detailed in [RFC7432]. Conversely, the Local Bias procedure is | detailed in [RFC7432]. Conversely, the Local Bias procedure is used | |||
used for IP-based tunnels, such as VXLAN tunnels, and it is described | for IP-based tunnels, such as VXLAN tunnels, and it is described in | |||
in [RFC8365]. | [RFC8365]. | |||
1.1. Conventions and Terminology | 1.1. Conventions and Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
* AC: Attachment Circuit. | AC: Attachment Circuit | |||
* A-D per ES route: refers to the EVPN Ethernet Auto-Discovery per | A-D per ES route: Auto-Discovery per Ethernet Segment route. Refers | |||
ES route defined in [RFC7432]. | to the EVPN Ethernet Auto-Discovery per ES route defined in | |||
[RFC7432]. | ||||
* Arg.FE2: refers to the ESI filtering argument used for Split | Arg.FE2: Refers to the ESI filtering argument used for Split Horizon | |||
Horizon as specified in [RFC9252]. | as specified in [RFC9252]. | |||
* Broadcast Domain (BD): an emulated Ethernet, such that two systems | BD: Broadcast Domain. Refers to an emulated Ethernet, such that two | |||
on the same BD will receive each other's broadcast, unknown and | systems on the same BD will receive each other's BUM traffic. In | |||
multicast traffic. In this document, BD also refers to the | this document, BD also refers to the instantiation of a BD on an | |||
instantiation of a Broadcast Domain on an EVPN PE. An EVPN PE can | EVPN PE. An EVPN PE can be attached to one or multiple BDs of the | |||
be attached to one or multiple BDs of the same tenant. | same tenant. | |||
* BUM: Broadcast, Unknown unicast and Multicast traffic. | BUM: Broadcast, Unknown Unicast, and Multicast | |||
* Designated Forwarder (DF): as defined in [RFC7432], an ES may be | DF: Designated Forwarder. As defined in [RFC7432], an ES may be | |||
multihomed (attached to more than one PE). An ES may also contain | 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 | 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 | 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 | segment. Since a BD may belong to only one EVI, we can speak | |||
unambiguously of the BD's DF for a given segment. | unambiguously of the BD's DF for a given segment. | |||
* ES and ESI: Ethernet Segment and Ethernet Segment Identifier. | ES: Ethernet Segment | |||
* EVI: EVPN Instance | ESI: Ethernet Segment Identifier | |||
* EVI-RT: EVI Route Target. A group of NVEs attached to the same | EVI: EVPN Instance | |||
EVI will share the same EVI-RT. | ||||
* GENEVE: Generic Network Virtualization Encapsulation, [RFC8926] | EVI-RT: EVI Route Target. Refers to a group of NVEs attached to the | |||
([IANA-BGP-TUNNEL-ENCAP] tunnel type 19). | same EVI that will share the same EVI-RT. | |||
* MPLS tunnels and non-MPLS NVO tunnels: refer to Multi-Protocol | GENEVE: Generic Network Virtualization Encapsulation [RFC8926] (see | |||
Label Switching (or the absence of it) Network Virtualization | tunnel type 19 in [TUNNEL-ENCAP]). | |||
Overlay tunnels. Network Virtualization Overlay tunnels use an IP | ||||
encapsulation for overlay frames, where the source IP address | ||||
identifies the ingress NVE and the destination IP address the | ||||
egress NVE. | ||||
* MPLSoUDP: Multi-Protocol Label Switching over User Datagram | MPLS tunnels and non-MPLS NVO tunnels: Refers to Multiprotocol Label | |||
Protocol, [RFC7510] ([IANA-BGP-TUNNEL-ENCAP] tunnel type 13). | Switching (or the absence of it) Network Virtualization Overlay | |||
tunnels. NVO tunnels use an IP encapsulation for overlay frames, | ||||
where the source IP address identifies the ingress NVE and the | ||||
destination IP address identifies the egress NVE. | ||||
* MPLSoGRE: Multi-Protocol Label Switching over Generic Network | MPLSoUDP: Multiprotocol Label Switching over User Datagram Protocol | |||
Encapsulation, [RFC4023] ([IANA-BGP-TUNNEL-ENCAP] tunnel type 11). | [RFC7510] (see tunnel type 13 in [TUNNEL-ENCAP]). | |||
* MPLSoX: refers to MPLS over any IP encapsulation. Examples are | MPLSoGRE: Multiprotocol Label Switching over Generic Network | |||
MPLS-over-UDP or MPLS-over-GRE. | Encapsulation [RFC4023] (see tunnel type 11 in [TUNNEL-ENCAP]). | |||
* NVE: Network Virtualization Edge device. | MPLSoX: Refers to MPLS over any IP encapsulation, for example, | |||
MPLSoUDP or MPLSoGRE. | ||||
* NVGRE: Network Virtualization Using Generic Routing Encapsulation, | NVE: Network Virtualization Edge | |||
[RFC7637] ([IANA-BGP-TUNNEL-ENCAP] tunnel type 9). | ||||
* VXLAN: Virtual eXtensible Local Area Network, [RFC7348] | NVGRE: Network Virtualization Using Generic Routing Encapsulation | |||
([IANA-BGP-TUNNEL-ENCAP] tunnel type 8). | [RFC7637] (see tunnel type 9 in [TUNNEL-ENCAP]). | |||
* VXLAN-GPE: VXLAN Generic Protocol Extension, | VXLAN: Virtual eXtensible Local Area Network [RFC7348] (see tunnel | |||
[I-D.ietf-nvo3-vxlan-gpe] ([IANA-BGP-TUNNEL-ENCAP] tunnel type | type 8 in [TUNNEL-ENCAP]). | |||
12). | ||||
* SHT: Split Horizon Type, it refers to the Split Horizon method | VXLAN-GPE: VXLAN Generic Protocol Extension [VXLAN-GPE] (see tunnel | |||
that a PE intends to use and advertises in an A-D per ES route. | type 12 in [TUNNEL-ENCAP]). | |||
* SRv6: Segment Routing with an IPv6 data plane, [RFC8402][RFC8754]. | SHT: Split Horizon Type. Refers to the Split Horizon method that a | |||
PE intends to use and advertises in an A-D per ES route. | ||||
SRv6: Segment Routing over IPv6 (see [RFC8402] and [RFC8754]). | ||||
This document also assumes familiarity with the terminology of | This document also assumes familiarity with the terminology of | |||
[RFC7432] and [RFC8365]. | [RFC7432] and [RFC8365]. | |||
1.2. Split Horizon Filtering and Tunnel Encapsulations | 1.2. Split Horizon Filtering and Tunnel Encapsulations | |||
EVPN supports two Split Horizon Filtering mechanisms: | EVPN supports two Split Horizon filtering mechanisms: | |||
* ESI Label based Split Horizon filtering [RFC7432] | 1. ESI Label-based Split Horizon filtering [RFC7432]: | |||
When EVPN is employed for MPLS transport tunnels, an MPLS label | When EVPN is employed for MPLS transport tunnels, an MPLS label | |||
facilitates Split Horizon filtering to support All-Active | facilitates Split Horizon filtering to support All-Active | |||
multihoming. The ingress Network Virtualization Edge (NVE) device | multihoming. The ingress NVE device appends a label | |||
appends a label corresponding to the source Ethernet Segment | corresponding to the source Ethernet Segment Identifier (ESI | |||
Identifier (ESI label) during packet encapsulation. The egress | label) during packet encapsulation. The egress NVE verifies the | |||
NVE verifies the ESI label when attempting to forward a multi- | ESI label when attempting to forward a multi-destination frame | |||
destination frame through a local Ethernet Segment (ES) interface. | through a local Ethernet Segment (ES) interface. If the ESI | |||
If the ESI label matches the site identifier (ESI) associated with | label matches the site identifier (ESI) associated with that ES | |||
that ES interface, the packet is not forwarded. This mechanism | interface, then the packet is not forwarded. This mechanism | |||
effectively prevents forwarding loops for BUM traffic. | effectively prevents forwarding loops for BUM traffic. | |||
The ESI Label Split Horizon filtering should also be utilized with | ESI Label Split Horizon filtering should also be utilized with | |||
Single-Active multihoming to prevent transient loops for in-flight | Single-Active multihoming to prevent transient loops for in- | |||
packets when the egress NVE assumes the role of Designated | flight packets when the egress NVE assumes the role of DF for an | |||
Forwarder for an ES. | ES. | |||
* Local Bias [RFC8365] | 2. Local Bias filtering [RFC8365]: | |||
Since IP tunnels, such as VXLAN or NVGRE, do not support the ESI | Since IP tunnels such as VXLAN or NVGRE do not support the ESI | |||
label or any MPLS label, an alternative Split Horizon filtering | label or any MPLS label, an alternative Split Horizon filtering | |||
procedure must be implemented for All-Active multihoming. This | procedure must be implemented for All-Active multihoming. This | |||
mechanism, known as Local Bias, relies on the source IP address of | mechanism, known as Local Bias, relies on the source IP address | |||
the tunnel to determine whether to forward BUM traffic to a local | of the tunnel to determine whether to forward BUM traffic to a | |||
Ethernet Segment (ES) interface at the egress Network | local ES interface at the egress NVE. | |||
Virtualization Edge (NVE). | ||||
In summary and as specified in [RFC8365], each NVE tracks the IP | In summary and as specified in [RFC8365], each NVE tracks the IP | |||
address(es) of other NVEs with which it shares multihomed ESs. | address(es) of other NVEs with which it shares multihomed ESs. | |||
Upon receiving a BUM frame encapsulated in an IP tunnel, the | Upon receiving a BUM frame encapsulated in an IP tunnel, the | |||
egress NVE inspects the source IP address in the tunnel header, | egress NVE inspects the source IP address in the tunnel header, | |||
which identifies the ingress NVE. The egress NVE then filters out | which identifies the ingress NVE. The egress NVE then filters | |||
the frame on all local interfaces connected to ESs that are shared | out the frame on all local interfaces connected to ESs that are | |||
with the ingress NVE. | shared with the ingress NVE. | |||
Due to this behavior at the egress NVE, the ingress NVE is | Due to this behavior at the egress NVE, the ingress NVE is | |||
required to perform local replication to all directly attached | required to perform local replication to all directly attached | |||
ESs, regardless of the Designated Forwarder election state, for | ESs, regardless of the DF election state, for all BUM traffic | |||
all BUM traffic ingressing from the access Attachment Circuits | ingressing from the access ACs. This local replication at the | |||
(ACs). This local replication at the ingress NVE is the basis for | ingress NVE is the basis for the term "Local Bias". | |||
the term Local Bias. | ||||
Local Bias is not suitable for Single-Active multihoming, as the | Local Bias is not suitable for Single-Active multihoming, as the | |||
ingress NVE deactivates the ACs for which it is not the Designated | ingress NVE deactivates the ACs for which it is not the DF. | |||
Forwarder. Consequently, local replication to non-Designated | Consequently, local replication to non-DF ACs cannot occur, | |||
Forwarder ACs cannot occur, leading to transient in-flight BUM | leading to transient in-flight BUM packets being looped back to | |||
packets to be looped back to the originating site by newly elected | the originating site by newly elected DF egress NVEs. | |||
Designated Forwarder egress NVEs. | ||||
[RFC8365] specifies that Local Bias is exclusively utilized for IP | [RFC8365] specifies that Local Bias is exclusively utilized for IP | |||
tunnels, while ESI Label-based Split Horizon is employed for IP-based | tunnels, while ESI Label-based Split Horizon is employed for IP-based | |||
MPLS tunnels. However, IP-based MPLS tunnels, such as MPLS over GRE | MPLS tunnels. However, IP-based MPLS tunnels such as MPLSoGRE or | |||
(MPLSoGRE) or MPLS over UDP (MPLSoUDP), are also categorized as IP | MPLSoUDP are also categorized as IP tunnels and have the potential to | |||
tunnels and have the potential to support both procedures. These | support both procedures. These tunnels are capable of carrying ESI | |||
tunnels are capable of carrying ESI labels and also utilize a tunnel | labels and also utilize a tunnel IP header in which the source IP | |||
IP header in which the source IP address identifies the ingress | address identifies the ingress NVE. | |||
Network Virtualization Edge (NVE). | ||||
Similarly, certain IP tunnels - that include an identifier for the | Similarly, certain IP tunnels (those that include an identifier for | |||
source Ethernet Segment (ES) in the tunnel header - may also | the source ES in the tunnel header) may also potentially support | |||
potentially support either procedure. Examples of such tunnels | either procedure. Examples of such tunnels include GENEVE and SRv6: | |||
include GENEVE and SRv6.: | ||||
* In a GENEVE tunnel, the source IP address identifies the ingress | * In a GENEVE tunnel, the source IP address identifies the ingress | |||
NVE therefore local bias is possible. Also, | NVE; therefore, Local Bias is possible. Also, Section 4.1 of | |||
[I-D.ietf-bess-evpn-geneve] section 4.1 defines an Ethernet option | [EVPN-GENEVE] defines an Ethernet option Type-Length-Value (TLV) | |||
TLV (Type Length Value) to encode an ESI label value. | to encode an ESI label value. | |||
* In an SRv6 tunnel, the source IP address identifies the ingress | * In an SRv6 tunnel, the source IP address identifies the ingress | |||
NVE. By default, and as outlined in [RFC9252], the ingress PE | NVE. By default, and as outlined in [RFC9252], the ingress PE | |||
adds specific information to the SRv6 packet to enable the egress | adds specific information to the SRv6 packet to enable the egress | |||
PE to identify the source ES of the BUM packet. This information | PE to identify the source ES of the BUM packet. This information | |||
is the ESI filtering argument (Arg.FE2) [RFC9252] (section 6.1.1) | is the ESI filtering argument (Arg.FE2) (see Section 6.1.1 of | |||
[RFC8986] (section 4.12) of the service Segment Identifier (SID) | [RFC9252] and Section 4.12 of [RFC8986]) of the service Segment | |||
received on an A-D per ES route from the egress PE. | Identifier (SID) received on an A-D per ES route from the egress | |||
PE. | ||||
Table 1 presents various tunnel encapsulations along with their | Table 1 presents various tunnel encapsulations along with their | |||
supported and default Split Horizon methods. For GENEVE, the default | supported and default Split Horizon methods. For GENEVE, the default | |||
Split Horizon Type (SHT) is contingent upon the negotiation of the | SHT is contingent upon the negotiation of the Ethernet Option with | |||
Ethernet Option with the Source ID TLV. In the case of SRv6, the | the Source ID TLV. In the case of SRv6, the default SHT is specified | |||
default SHT is specified as ESI Label filtering in the table, as its | as ESI Label filtering in the table, as its behavior is analogous to | |||
behavior is analogous to that of ESI Label filtering. In this | that of ESI Label filtering. In this document, "ESI Label filtering" | |||
document, ESI Label filtering refers to the Split Horizon filtering | refers to the Split Horizon filtering based on the presence of a | |||
based on the presence of a source Ethernet Segment (ES) identifier in | source ES identifier in the tunnel header. | |||
the tunnel header. | ||||
This document classifies the tunnel encapsulations used by EVPN into: | This document classifies the tunnel encapsulations used by EVPN into: | |||
1. IP-based MPLS tunnels | 1. IP-based MPLS tunnels | |||
2. (SR-)MPLS tunnels, that is, MPLS and Segment Routing with MPLS | 2. (SR-)MPLS tunnels, that is, MPLS and Segment Routing with MPLS | |||
data plane tunnels | data plane tunnels | |||
3. IP tunnels | 3. IP tunnels | |||
4. SRv6 tunnels | 4. SRv6 tunnels | |||
Table 1 lists the encapsulations supported by this document. Any | Table 1 lists the encapsulations supported by this document. Any | |||
tunnel encapsulation not listed in Table 1) is out of scope. Tunnel | tunnel encapsulation not listed in Table 1 is out of scope. Tunnel | |||
encapsulations used by EVPN can be categorized into one of the four | encapsulations used by EVPN can be categorized into one of the four | |||
encapsulation groups mentioned above and support Split Horizon | encapsulation groups mentioned above and support Split Horizon | |||
filtering based on the following rules: | filtering based on the following rules: | |||
* IP-based MPLS tunnels and SRv6 tunnels are capable of supporting | * IP-based MPLS tunnels and SRv6 tunnels are capable of supporting | |||
both Split Horizon filtering methods. | both Split Horizon filtering methods. | |||
* (SR-)MPLS tunnels only support ESI Label-based Split Horizon | * (SR-)MPLS tunnels only support ESI Label-based Split Horizon | |||
filtering | filtering. | |||
* IP tunnels support Local Bias Split Horizon filtering and may also | * IP tunnels support Local Bias Split Horizon filtering and may also | |||
support ESI Label-based Split Horizon filtering, provided they | support ESI Label-based Split Horizon filtering, provided they | |||
incorporate a mechanism to identify the source ESI in the header. | incorporate a mechanism to identify the source ESI in the header. | |||
+===============+=========================+============+===========+ | +===============+====================+============+===========+ | |||
| Tunnel | Default Split Horizon | Supports | Supports | | | Tunnel | Default Split | Supports | Supports | | |||
| Encapsulation | Type (SHT) | Local Bias | ESI Label | | | Encapsulation | Horizon Type (SHT) | Local Bias | ESI Label | | |||
+===============+=========================+============+===========+ | +===============+====================+============+===========+ | |||
| MPLSoGRE (IP- | ESI Label filtering | Yes | Yes | | | MPLSoGRE (IP- | ESI Label | Yes | Yes | | |||
| based MPLS) | | | | | | based MPLS) | filtering | | | | |||
+---------------+-------------------------+------------+-----------+ | +---------------+--------------------+------------+-----------+ | |||
| MPLSoUDP (IP- | ESI Label filtering | Yes | Yes | | | MPLSoUDP (IP- | ESI Label | Yes | Yes | | |||
| based MPLS) | | | | | | based MPLS) | filtering | | | | |||
+---------------+-------------------------+------------+-----------+ | +---------------+--------------------+------------+-----------+ | |||
| (SR-)MPLS | ESI Label filtering | No | Yes | | | (SR-)MPLS | ESI Label | No | Yes | | |||
+---------------+-------------------------+------------+-----------+ | | | filtering | | | | |||
| VXLAN (IP | Local Bias | Yes | No | | +---------------+--------------------+------------+-----------+ | |||
| tunnels) | | | | | | VXLAN (IP | Local Bias | Yes | No | | |||
+---------------+-------------------------+------------+-----------+ | | tunnels) | | | | | |||
| NVGRE (IP | Local Bias | Yes | No | | +---------------+--------------------+------------+-----------+ | |||
| tunnels) | | | | | | NVGRE (IP | Local Bias | Yes | No | | |||
+---------------+-------------------------+------------+-----------+ | | tunnels) | | | | | |||
| VXLAN-GPE (IP | Local Bias | Yes | No | | +---------------+--------------------+------------+-----------+ | |||
| tunnels) | | | | | | VXLAN-GPE (IP | Local Bias | Yes | No | | |||
+---------------+-------------------------+------------+-----------+ | | tunnels) | | | | | |||
| GENEVE (IP | Local Bias (no ESI Lb), | Yes | Yes | | +---------------+--------------------+------------+-----------+ | |||
| tunnels) | ESI Label (if ESI lb) | | | | | GENEVE (IP | Local Bias (if no | Yes | Yes | | |||
+---------------+-------------------------+------------+-----------+ | | tunnels) | ESI Lb), ESI Label | | | | |||
| SRv6 | ESI Label filtering | Yes | Yes | | | | (if ESI lb) | | | | |||
+---------------+-------------------------+------------+-----------+ | +---------------+--------------------+------------+-----------+ | |||
| SRv6 | ESI Label | Yes | Yes | | ||||
| | filtering | | | | ||||
+---------------+--------------------+------------+-----------+ | ||||
Table 1: Tunnel Encapsulations and Split Horizon Types | Table 1: Tunnel Encapsulations and Split Horizon Types | |||
The ESI Label method is applicable for both All-Active and Single- | The ESI Label method is applicable for both All-Active and Single- | |||
Active configurations, whereas the Local Bias method is suitable only | Active configurations, whereas the Local Bias method is suitable only | |||
for All-Active configurations. Moreover, the ESI Label method is | for All-Active configurations. Moreover, the ESI Label method is | |||
effective across different network domains, while Local Bias is | effective across different network domains, while Local Bias is | |||
constrained to networks where there is no change in the next hop | constrained to networks where there is no change in the next hop | |||
between the NVEs attached to the same ES. Nonetheless, some | between the NVEs attached to the same ES. Nonetheless, some | |||
operators favor the Local Bias method due to its simplification of | operators 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 | the fact that the ingress NVE always forwards traffic locally to | |||
skipping to change at page 9, line 14 ¶ | skipping to change at line 374 ¶ | |||
NVGRE, will continue to adhere to the procedures specified in | NVGRE, will continue to adhere to the procedures specified in | |||
[RFC8365]. Note that this document does not modify the Local Bias or | [RFC8365]. Note that this document does not modify the Local Bias or | |||
the ESI Label Split Horizon procedures themselves, just focuses on | the ESI Label Split Horizon procedures themselves, just focuses on | |||
the signaling and selection of the Split Horizon method to apply by | the signaling and selection of the Split Horizon method to apply by | |||
the multihomed NVEs. | the multihomed NVEs. | |||
2. BGP EVPN Extensions | 2. BGP EVPN Extensions | |||
Extensions to EVPN are required to enable NVEs to advertise their | Extensions to EVPN are required to enable NVEs to advertise their | |||
preferred Split Horizon method for a given ES. Figure 1 illustrates | preferred Split Horizon method for a given ES. Figure 1 illustrates | |||
the ESI Label extended community ([RFC7432] Section 7.5), which is | the ESI Label extended community (Section 7.5 of [RFC7432]), which is | |||
consistently advertised alongside the EVPN A-D per ES route. All | consistently advertised alongside the EVPN A-D per ES route. All | |||
NVEs connected to an ES advertise an A-D per ES route for that ES, | NVEs connected to an ES advertise an A-D per ES route for that ES, | |||
including the extended community, which communicates information | including the extended community, which communicates information | |||
regarding the multihoming mode (either All-Active or Single-Active) | regarding the multihoming mode (either All-Active or Single-Active) | |||
and, if necessary, specifies the ESI Label to be utilized. | and, if necessary, specifies the ESI Label to be utilized. | |||
1 2 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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 1: ESI Label extended community | Figure 1: ESI Label Extended Community | |||
[RFC7432] defines the low-order bit of the Flags octet (bit 0) as the | [RFC7432] defines the low-order bit of the Flags octet (bit 0) as the | |||
"Single-Active" bit: | "Single-Active" bit: | |||
* A value of 0 means that the multihomed ES is operating in All- | * A value of 0 means that the multihomed ES is operating in All- | |||
Active multihoming redundancy mode. | Active multihoming redundancy mode. | |||
* A value of 1 means that the multihomed ES is operating in Single- | * A value of 1 means that the multihomed ES is operating in Single- | |||
Active multihoming redundancy mode. | Active multihoming redundancy mode. | |||
Section 5 establishes a registry for the Flags octet, designating the | Section 5 establishes a registry for the Flags octet, designating the | |||
"Single-Active" bit as the low-order bit of the newly defined | "Single-Active" bit as the low-order bit of the newly defined | |||
multihoming redundancy mode field. | Multihoming Redundancy Mode field. | |||
2.1. The Split Horizon Type | 2.1. The Split Horizon Type | |||
[RFC8365] does not include any explicit indication regarding the | [RFC8365] does not include any explicit indication regarding the | |||
Split Horizon method in the A-D per Ethernet Segment (ES) route. In | Split Horizon method in the A-D per ES route. In this document, the | |||
this document, the Split Horizon procedure defined in [RFC8365] | Split Horizon procedure defined in Section 8.3.1 of [RFC8365] is | |||
(section 8.3.1) is considered the default behavior, presuming that | considered the default behavior, presuming that Local Bias is | |||
Local Bias is employed exclusively for IP tunnels, while ESI Label- | employed exclusively for IP tunnels, while ESI Label-based Split | |||
based Split Horizon is used for IP-based MPLS tunnels. This document | Horizon is used for IP-based MPLS tunnels. This document specifies | |||
specifies that the two high-order bits in the Flags octet (bits 6 and | that the two high-order bits in the Flags octet (bits 6 and 7) | |||
7) constitute the "Split Horizon Type" (SHT) field, where: | constitute the "Split Horizon Type" or "SHT" field, where: | |||
7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|SHT| |RED| | |SHT| |RED| | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
RED = "Multihoming Redundancy Mode" field (section 5) | RED = "Multihoming Redundancy Mode" field (section 5) | |||
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 --> reserved for future use | |||
* SHT = 00 is backwards compatible with [RFC8365] and [RFC7432], and | * SHT = 00 is backwards compatible with [RFC8365] and [RFC7432], and | |||
indicates that the advertising NVE intends to use the default or | indicates that the advertising NVE intends to use the default or | |||
built-in SHT. The default SHT is shown in Table 1 for each | built-in SHT. The default SHT is shown in Table 1 for each | |||
encapsulation. An egress NVE that follows the [RFC8365] behavior | encapsulation. An egress NVE that follows the [RFC8365] behavior | |||
and does not support this specification will ignore the SHT bits | and does not support this specification will ignore the SHT bits | |||
(which is equivalent to process them as value of 00). | (which is equivalent to processing them as a value of 00). | |||
* SHT = 01 indicates that the advertising NVE intends to use Local | * SHT = 01 indicates that the advertising NVE intends to use Local | |||
Bias procedures in the ES for which the AD per-ES route is | Bias procedures in the ES for which the AD per-ES route is | |||
advertised. | advertised. | |||
* SHT = 10 indicates that the advertising NVE intends to use the ESI | * SHT = 10 indicates that the advertising NVE intends to use the ESI | |||
Label based Split Horizon method procedures in the ES for which | Label-based Split Horizon method procedures in the ES for which | |||
the AD per-ES route is advertised. | the AD per-ES route is advertised. | |||
* SHT = 11 is a reserved value, for future use. | * SHT = 11 is a reserved value, for future use. | |||
2.2. Use of the Split Horizon Type In A-D Per ES Routes | 2.2. Use of the Split Horizon Type in A-D per ES Routes | |||
The following behavior is observed: | The following behavior is observed: | |||
* An SHT value of 01 or 10 MUST NOT be used with encapsulations that | * An SHT value of 01 or 10 MUST NOT be used with encapsulations that | |||
support only one SHT in Table 1, and MAY be used by encapsulations | support only one SHT in Table 1, and MAY be used by encapsulations | |||
that support the two SHTs in Table 1. | that support the two SHTs in Table 1. | |||
* An SHT value different from 00 expresses the intent to use a | * An SHT value different than 00 expresses the intent to use a | |||
specific Split Horizon method, but does not reflect the actual | 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. | attached to the ES advertise the same SHT. | |||
* In case of inconsistency in the SHT value advertised by the NVEs | * In case of an inconsistency in the SHT value advertised by the | |||
attached to the same ES for a given EVI, all the NVEs MUST revert | NVEs attached to the same ES for a given EVI, all the NVEs MUST | |||
to the [RFC8365] behavior, and use the default SHT in Table 1, | revert to the behavior in [RFC8365] and use the default SHT in | |||
irrespective of the advertised SHT. | Table 1, irrespective of the advertised SHT. | |||
* An SHT different from 00 MUST NOT be set if the Single-Active bit | * An SHT different than 00 MUST NOT be set if the "Single-Active" | |||
is set. A received A-D per ES route where Single-Active and SHT | bit is set. A received A-D per ES route where the "Single-Active" | |||
bits are different from zero MUST follow the treat-as-withdraw | and SHT bits are different than zero MUST follow the treat-as- | |||
behavior [RFC7606]. | withdraw behavior in [RFC7606]. | |||
* The SHT MUST have the same value in each Ethernet A-D per ES route | * The SHT MUST have the same value in each Ethernet A-D per ES route | |||
that an NVE advertises for a given ES and a given encapsulation | that an NVE advertises for a given ES and a given encapsulation | |||
(see Section 3 for NVEs supporting multiple encapsulations). | (see Section 3 for NVEs supporting multiple encapsulations). | |||
As an example, egress NVEs that support IP-based MPLS tunnels, such | 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 | |||
[RFC9012]. This extended community indicates the encapsulation type | [RFC9012]. This extended community indicates the encapsulation type | |||
(MPLSoGRE or MPLSoUDP) and may use the SHT value of 01 or 10 to | (MPLSoGRE or MPLSoUDP) and may use the SHT value of 01 or 10 to | |||
signify the intent to use Local Bias or ESI Label, respectively. | signify the intent to use Local Bias or the ESI Label, respectively. | |||
An egress NVE MUST NOT use an SHT value other than 00 when | An egress NVE MUST NOT use an SHT value other than 00 when | |||
advertising an A-D per ES route with [RFC9012] Tunnel encapsulation | advertising an A-D per ES route with [RFC9012] Tunnel encapsulation | |||
types of VXLAN (type 8), NVGRE (type 9), MPLS (type 10), or no BGP | types of VXLAN (type 8), NVGRE (type 9), MPLS (type 10), or no BGP | |||
tunnel encapsulation extended community at all. In all these cases, | Tunnel Encapsulation Extended Community at all. In all these cases, | |||
it is presumed that there is no choice for the Split Horizon method; | it is presumed that there is no choice for the Split Horizon method; | |||
therefore, the SHT value MUST be set to 00. If a route with any of | therefore, the SHT value MUST be set to 00. If a route with any of | |||
the mentioned encapsulation options is received and has an SHT value | the mentioned encapsulation options is received and has an SHT value | |||
different from 00, it SHOULD apply the treat-as-withdraw behavior, | different than 00, it SHOULD apply the treat-as-withdraw behavior, | |||
per [RFC7606]. | per [RFC7606]. | |||
An egress NVE advertising A-D per ES route(s) for an ES with GENEVE | An egress NVE advertising A-D per ES route(s) for an ES with GENEVE | |||
encapsulation ([RFC9012], Tunnel encapsulation type 19, | encapsulation ([RFC9012], Tunnel encapsulation type 19, | |||
[I-D.ietf-bess-evpn-geneve]) MAY use an SHT value of 01 or 10. A | [EVPN-GENEVE]) MAY use an SHT value of 01 or 10. A value of 01 | |||
value of 01 indicates the intent to use Local Bias, regardless of the | indicates the intent to use Local Bias, regardless of the presence of | |||
presence of an Ethernet option TLV with a non-zero Source-ID, as | an Ethernet option TLV with a non-zero Source-ID, as described in | |||
described in [I-D.ietf-bess-evpn-geneve]. A value of 10 indicates | [EVPN-GENEVE]. A value of 10 indicates the intent to use ESI Label- | |||
the intent to use ESI Label-based Split Horizon, and it is only valid | based Split Horizon, and it is only valid if an Ethernet option TLV | |||
if an Ethernet option TLV with non-zero Source-ID is present. A | with a non-zero Source-ID is present. A value of 00 indicates the | |||
value of 00 indicates the default behavior outlined in Table 1, which | default behavior outlined in Table 1, which is to use Local Bias if: | |||
is to use Local Bias if: a) no ESI-Label is present in the Ethernet | ||||
option TLV, or b) if there is no Ethernet option TLV. Otherwise, the | a. no ESI Label is present in the Ethernet option TLV, or | |||
ESI Label Split Horizon method is applied. | ||||
b. there is no Ethernet option TLV. | ||||
Otherwise, the ESI Label Split Horizon method is applied. | ||||
These procedures assume a single encapsulation supported in the | These procedures assume a single encapsulation supported in the | |||
egress NVE. Section 3 describes additional procedures for NVEs | egress NVE. Section 3 describes additional procedures for NVEs | |||
supporting multiple encapsulations. | supporting multiple encapsulations. | |||
2.3. ESI Label Value In A-D Per ES Routes | 2.3. The ESI Label Value in A-D per ES Routes | |||
This document also updates [RFC8365] regarding the value that is | This document also updates [RFC8365] regarding the value that is | |||
advertised in the ESI Label field of the ESI Label extended | advertised in the ESI Label field of the ESI Label extended | |||
community, as follows: | community, as follows: | |||
* The A-D per ES route(s) for an ES MAY have an ESI Label value of | * The A-D per ES route(s) for an ES MAY have an ESI Label value of | |||
zero if the SHT value is 01. Section 2.2 specifies the scenarios | zero if the SHT value is 01. Section 2.2 specifies the scenarios | |||
where the SHT can be 01. An ESI Label value of zero eliminates | where the SHT can be 01. An ESI Label value of zero eliminates | |||
the need to allocate labels in cases where they are not utilized, | the need to allocate labels in cases where they are not utilized, | |||
such as in the Local Bias method. | such as in the Local Bias method. | |||
* The A-D per ES route(s) for an ES MAY have an ESI Label value of | * The A-D per ES route(s) for an ES MAY have an ESI Label value of | |||
zero for VXLAN or NVGRE encapsulations. | zero for VXLAN or NVGRE encapsulations. | |||
2.4. Backwards Compatibility With RFC8365 NVEs | 2.4. Backwards Compatibility with RFC 8365 NVEs | |||
As discussed in Section 2.2 this specification is backwards | As discussed in Section 2.2, this specification is backwards | |||
compatible with the Split Horizon filtering behavior in [RFC8365] and | compatible with the Split Horizon filtering behavior in [RFC8365] and | |||
a non-upgraded NVE can be attached to the same ES as other NVEs | a non-upgraded NVE can be attached to the same ES as other NVEs | |||
supporting this specification. | supporting this specification. | |||
An NVE maintains an administrative SHT value for an Ethernet Segment | An NVE maintains an administrative SHT value for an ES, which is | |||
(ES), which is advertised alongside the A-D per ES route, and an | advertised alongside the A-D per ES route, and an operational SHT | |||
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 | |||
operational SHT if all the NVEs attached to the ES have the same | all the NVEs attached to the ES have the same administrative SHT. | |||
administrative SHT. | ||||
This document assumes that an implementation of [RFC7432] or | This document assumes that an implementation of [RFC7432] or | |||
[RFC8365] that does not support the specifications in this document | [RFC8365] that does not support the specifications in this document | |||
will ignore the values of all the Flags in the ESI Label extended | will ignore the values of all the Flags in the ESI Label extended | |||
community, except for the Single-Active bit. Based on this | community, except for the "Single-Active" bit. Based on this | |||
assumption, a non-upgraded NVE will disregard any SHT value other | assumption, a non-upgraded NVE will disregard any SHT value other | |||
than 00. If an upgraded NVE receives at least one A-D per ES route | 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 revert its operational | for the ES with an SHT value of 00, it MUST revert its operational | |||
SHT to the default Split Horizon method, as described in Table 1, | SHT to the default Split Horizon method, as described in Table 1, | |||
irrespective of its administrative SHT. | irrespective of its administrative SHT. | |||
For instance, consider an NVE attached to ES N that receives two A-D | 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 route | 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 SHT | 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 | value of 01, the NVE MUST use the default Split Horizon method | |||
skipping to change at page 13, line 37 ¶ | skipping to change at line 587 ¶ | |||
As specified in [RFC8365], an NVE that supports multiple data plane | As specified in [RFC8365], an NVE that supports multiple data plane | |||
encapsulations (e.g., VXLAN, NVGRE, MPLS, MPLSoUDP, GENEVE) must | encapsulations (e.g., VXLAN, NVGRE, MPLS, MPLSoUDP, GENEVE) must | |||
indicate all supported encapsulations using BGP Encapsulation | indicate all supported encapsulations using BGP Encapsulation | |||
extended communities as defined in [RFC9012] for all EVPN routes. | extended communities as defined in [RFC9012] for all EVPN routes. | |||
This section provides clarification on the multihoming Split Horizon | This section provides clarification on the multihoming Split Horizon | |||
behavior for NVEs that advertise and receive multiple BGP | behavior for NVEs that advertise and receive multiple BGP | |||
Encapsulation extended communities along with the A-D per ES routes. | Encapsulation extended communities along with the A-D per ES routes. | |||
This section uses the notation {x, y} (more than two encapsulations | This section uses the notation {x, y} (more than two encapsulations | |||
is possible too) to denote the encapsulations advertised in BGP | is possible too) to denote the encapsulations advertised in BGP | |||
Encapsulation extended communities (or BGP Tunnel Encapsulation | Encapsulation extended communities (or the BGP Tunnel Encapsulation | |||
Attribute), where x and y represent different encapsulation values. | Attribute), where x and y represent different encapsulation values. | |||
When GENEVE is one of the encapsulations, the tunnel type is | When GENEVE is one of the encapsulations, the tunnel type is | |||
indicated in either a BGP Encapsulation extended community or a BGP | indicated in either a BGP Encapsulation extended community or a BGP | |||
Tunnel Encapsulation Attribute. | Tunnel Encapsulation Attribute. | |||
It is important to note that an NVE MAY advertise multiple A-D per ES | 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 | conveying a set of Route Targets (RTs). The total set of RTs | |||
Targets associated with a given ES is referred to as the RT-set for | associated with a given ES is referred to as the RT-set for that ES. | |||
that ES. Each of the EVIs represented in the RT-set will have its RT | Each of the EVIs represented in the RT-set will have its RT included | |||
included in one, and only one, A-D per ES route for the ES. When | in one, and only one, A-D per ES route for the ES. When multiple A-D | |||
multiple A-D per ES routes are advertised for the same ES, each route | per ES routes are advertised for the same ES, each route must have a | |||
must have a distinct Route Distinguisher. | distinct Route Distinguisher. | |||
As per [RFC8365], an NVE that advertises multiple encapsulations in | As per [RFC8365], an NVE that advertises multiple encapsulations in | |||
the A-D per ES route(s) for an ES MUST advertise encapsulations that | the A-D per ES route(s) for an ES MUST advertise encapsulations that | |||
use the same Split Horizon filtering method in the same route. For | use the same Split Horizon filtering method in the same route. For | |||
example: | example: | |||
* An A-D per ES route for ES-x may be advertised with {VXLAN, NVGRE} | * An A-D per ES route for ES-x may be advertised with {VXLAN, NVGRE} | |||
encapsulations. | encapsulations. | |||
* An A-D per ES route for ES-y may be advertised with {MPLS, | * An A-D per ES route for ES-y may be advertised with {MPLS, | |||
MPLSoUDP, MPLSoGRE} encapsulations (or a subset). | MPLSoUDP, MPLSoGRE} encapsulations (or a subset). | |||
* But an A-D per ES route for ES-z MUST NOT be advertised with | * However, an A-D per ES route for ES-z MUST NOT be advertised with | |||
{MPLS, VXLAN} encapsulations. | {MPLS, VXLAN} encapsulations. | |||
This document extends the described behavior as follows: | This document extends the described behavior as follows: | |||
a. An A-D per ES route for ES-x may be advertised with multiple | a. An A-D per ES route for ES-x may be advertised with multiple | |||
encapsulations, some of which support a single Split Horizon | encapsulations, some of which support a single Split Horizon | |||
method. In this case, the Split Horizon Type (SHT) value MUST be | method. In this case, the SHT value MUST be 00. For instance, | |||
00. For instance, encapsulations such as {VXLAN, NVGRE}, {VXLAN, | encapsulations such as {VXLAN, NVGRE}, {VXLAN, GENEVE}, or {MPLS, | |||
GENEVE}, or {MPLS, MPLSoGRE, MPLSoUDP} can be advertised in an | MPLSoGRE, MPLSoUDP} can be advertised in an A-D per ES route. In | |||
A-D per ES route. In all these cases, the SHT value MUST be 00 | all these cases, the SHT value MUST be 00 and the treat-as- | |||
and the behavior treat-as-withdraw [RFC7606] is applied in case | withdraw behavior [RFC7606] is applied in case of any other | |||
of any other value. | value. | |||
b. An A-D per ES route for ES-y may be advertised with multiple | b. An A-D per ES route for ES-y may be advertised with multiple | |||
encapsulations that all support both Split Horizon methods. In | encapsulations that all support both Split Horizon methods. In | |||
this case, the SHT value MAY be 01 if the preferred method is | this case, the SHT value MAY be 01 if the preferred method is | |||
Local Bias, or 10 if the ESI Label-based method is desired. For | Local Bias, or 10 if the ESI Label-based method is desired. For | |||
example, encapsulations such as {MPLSoGRE, MPLSoUDP, GENEVE} (or | example, encapsulations such as {MPLSoGRE, MPLSoUDP, GENEVE} (or | |||
a subset) MAY be advertised in an A-D per ES route with an SHT | a subset) MAY be advertised in an A-D per ES route with an SHT | |||
value of 01. The ESI Label value in this case MAY be zero. | value of 01. The ESI Label value in this case MAY be zero. | |||
c. If ES-z with RT-set composed of (RT1, RT2, RT3.. RTn) supports | c. If ES-z with an RT-set composed of (RT1, RT2, RT3.. RTn) supports | |||
multiple encapsulations requiring different Split Horizon | multiple encapsulations requiring different Split Horizon | |||
methods, a distinct A-D per ES route (or group of routes) per | methods, a distinct A-D per ES route (or group of routes) per | |||
Split Horizon method MUST be advertised. For example, consider | Split Horizon method MUST be advertised. For example, consider | |||
an ES-z with n Route Targets (RTs) where: | an ES-z with n RTs, where: | |||
* the EVIs corresponding to (RT1..RTi) support VXLAN, | * the EVIs corresponding to (RT1..RTi) support VXLAN, | |||
* the ones for (RTi+1..RTm) (with i<m) support MPLSoUDP with | * the ones for (RTi+1..RTm) (with i<m) support MPLSoUDP with | |||
Local Bias, | Local Bias, and | |||
* and the ones for (RTm+1..RTn) (with m<n) support GENEVE with | * the ones for (RTm+1..RTn) (with m<n) support GENEVE with ESI | |||
ESI Label based Split Horizon. | Label-based Split Horizon. | |||
In this scenario, three groups of A-D per ES routes MUST be | In this scenario, three groups of A-D per ES routes MUST be | |||
advertised for ES-z: | advertised for ES-z: | |||
* A-D per ES route group 1, including (RT1..RTi), with | * A-D per ES route group 1, including (RT1..RTi) with | |||
encapsulation {VXLAN}, and an SHT value of 00. The ESI Label | encapsulation {VXLAN} and an SHT value of 00. The ESI Label | |||
MAY be zero. | MAY be zero. | |||
* A-D per ES route group 2, including (RTi+1..RTm), with | * A-D per ES route group 2, including (RTi+1..RTm) with | |||
encapsulation {MPLSoUDP}, and an SHT value of 01. The ESI | encapsulation {MPLSoUDP} and an SHT value of 01. The ESI | |||
Label MAY be zero. | Label MAY be zero. | |||
* A-D per ES route group 3, including (RTm+1..RTn), with | * A-D per ES route group 3, including (RTm+1..RTn) with | |||
encapsulation {GENEVE}, and an SHT value of 10. The ESI Label | encapsulation {GENEVE} and an SHT value of 10. The ESI Label | |||
MUST have a valid, non-zero value, and the Ethernet option as | MUST have a valid, non-zero value, and the Ethernet option as | |||
defined in [RFC8926] MUST be advertised. | defined in [RFC8926] MUST be advertised. | |||
As per [RFC8365], it is the responsibility of the operator of a given | As per [RFC8365], it is the responsibility of the operator of a given | |||
EVI to ensure that all of the NVEs within that EVI support a common | EVI to ensure that all of the NVEs within that EVI support a common | |||
encapsulation. Failure to meet this condition may result in service | encapsulation. Failure to meet this condition may result in service | |||
disruption or failure. | disruption or failure. | |||
4. Security Considerations | 4. Security Considerations | |||
All the security considerations described in [RFC7432] are applicable | All the security considerations described in [RFC7432] are applicable | |||
to this document. | to this document. | |||
Additionally, this document modifies the procedures for Split Horizon | Additionally, this document modifies the procedures for Split Horizon | |||
filtering as outlined in [RFC8365], offering operators a choice | filtering as outlined in [RFC8365], offering operators a choice | |||
between Local Bias and ESI Label-based filtering for tunnels that | between Local Bias and ESI Label-based filtering for tunnels that | |||
support both methods. Misconfiguration of the desired Split Horizon | support both methods. Misconfiguration of the desired SHT could lead | |||
Type (SHT) could lead to forwarding behaviors that differ from the | to forwarding behaviors that differ from the intended configuration. | |||
intended configuration. Apart from this risk, this document | Apart from this risk, this document describes procedures to ensure | |||
describes procedures to ensure that all Provider Edge (PE) devices or | that all PE devices or NVEs connected to the same ES agree on a | |||
Network Virtualization Edges (NVEs) connected to the same Ethernet | common SHT method, with a fallback to a default behavior in case of a | |||
Segment (ES) agree on a common SHT method, with a fallback to a | mismatch in the SHT bits being advertised by any two PEs or NVEs in | |||
default behavior in case of a mismatch in the SHT bits being | the ES. Consequently, unauthorized changes to the SHT configuration | |||
advertised by any two PEs or NVEs in the Ethernet Segment. | by an attacker on a single PE or NVE of the ES should not cause | |||
Consequently, unauthorized changes to the SHT configuration by an | traffic disruption (as long as the SHT value is valid as per this | |||
attacker on a single PE or NVE of the Ethernet Segment should not | document) but may result in alterations to forwarding behavior. | |||
cause traffic disruption (as long as the SHT value is valid as per | ||||
this document) but may result in alterations to forwarding behavior. | ||||
5. IANA Considerations | 5. IANA Considerations | |||
This document creates a registry called "EVPN ESI Label Extended | Per this document, IANA has created the "EVPN ESI Label Extended | |||
Community Flags" for the 1-octet Flags field in the ESI Label | Community Flags" registry for the 1-octet Flags field in the ESI | |||
Extended Community [RFC7432], as follows: | Label Extended Community [RFC7432], as follows: | |||
+==============+=============================+===============+ | +==============+=============================+===========+ | |||
| Bit Position | Name | Reference | | | Bit Position | Name | Reference | | |||
+==============+=============================+===============+ | +==============+=============================+===========+ | |||
| 0-1 | Multihoming Redundancy Mode | [RFC7432] | | | 0-1 | Multihoming Redundancy Mode | [RFC7432] | | |||
+--------------+-----------------------------+---------------+ | +--------------+-----------------------------+-----------+ | |||
| 2-5 | Unassigned | | | | 2-5 | Unassigned | | | |||
+--------------+-----------------------------+---------------+ | +--------------+-----------------------------+-----------+ | |||
| 6-7 | Split Horizon Type | This Document | | | 6-7 | Split Horizon Type | RFC 9746 | | |||
+--------------+-----------------------------+---------------+ | +--------------+-----------------------------+-----------+ | |||
Table 2 | Table 2 | |||
This document also creates a registry for the "Multihoming Redundancy | IANA has also created the "Multihoming Redundancy Mode" registry for | |||
Mode" field of the EVPN ESI Label Extended Community Flags. This | the related field of the "EVPN ESI Label Extended Community Flags". | |||
registry is called "Multihoming Redundancy Mode" and is initialized | The registry has been populated with the following initial values: | |||
as follows: | ||||
+=======+=============================+===========+ | +=======+=============================+===========+ | |||
| Value | Multihoming redundancy mode | Reference | | | Value | Multihoming Redundancy Mode | Reference | | |||
+=======+=============================+===========+ | +=======+=============================+===========+ | |||
| 00 | All-Active mode | [RFC7432] | | | 00 | All-Active mode | [RFC7432] | | |||
+-------+-----------------------------+-----------+ | +-------+-----------------------------+-----------+ | |||
| 01 | Single-Active mode | [RFC7432] | | | 01 | Single-Active mode | [RFC7432] | | |||
+-------+-----------------------------+-----------+ | +-------+-----------------------------+-----------+ | |||
| 10 | Unassigned | | | | 10 | Unassigned | | | |||
+-------+-----------------------------+-----------+ | +-------+-----------------------------+-----------+ | |||
| 11 | Unassigned | | | | 11 | Unassigned | | | |||
+-------+-----------------------------+-----------+ | +-------+-----------------------------+-----------+ | |||
Table 3 | Table 3 | |||
Finally, a third registry for the "Split Horizon Type" field of the | Finally, IANA has created the "Split Horizon Type" registry for the | |||
EVPN ESI Label Extended Community Flags is created by this document | related field of the "EVPN ESI Label Extended Community Flags". The | |||
too. This registry is called "Split Horizon Type" and is initialized | registry has been populated with the following initial values: | |||
as follows: | ||||
+=======+===========================+===============+ | +=======+===========================+===========+ | |||
| Value | Split Horizon Type value | Reference | | | Value | Split Horizon Type Value | Reference | | |||
+=======+===========================+===============+ | +=======+===========================+===========+ | |||
| 00 | Default SHT | This document | | | 00 | Default SHT | RFC 9746 | | |||
+-------+---------------------------+---------------+ | +-------+---------------------------+-----------+ | |||
| 01 | Local Bias | This document | | | 01 | Local Bias | RFC 9746 | | |||
+-------+---------------------------+---------------+ | +-------+---------------------------+-----------+ | |||
| 10 | ESI Label based filtering | This document | | | 10 | ESI Label-based filtering | RFC 9746 | | |||
+-------+---------------------------+---------------+ | +-------+---------------------------+-----------+ | |||
| 11 | Unassigned | | | | 11 | Unassigned | | | |||
+-------+---------------------------+---------------+ | +-------+---------------------------+-----------+ | |||
Table 4 | Table 4 | |||
New registrations in the "EVPN ESI Label Extended Community Flags", | New registrations in the "EVPN ESI Label Extended Community Flags", | |||
"Multihoming Redundancy Mode", and "Split Horizon Type" registries | "Multihoming Redundancy Mode", and "Split Horizon Type" registries | |||
will be made through the "IETF Review" procedure defined in | will be made through the "IETF Review" procedure defined in | |||
[RFC8126]. These registries are located in the "Border Gateway | [RFC8126]. These registries are located in the "Border Gateway | |||
Protocol (BGP) Extended Communities" registry group. | Protocol (BGP) Extended Communities" registry group. | |||
6. Acknowledgments | 6. References | |||
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. | ||||
7. References | ||||
7.1. Normative References | 6.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
skipping to change at page 18, line 17 ¶ | skipping to change at line 784 ¶ | |||
Overlay Solution Using Ethernet VPN (EVPN)", RFC 8365, | Overlay Solution Using Ethernet VPN (EVPN)", RFC 8365, | |||
DOI 10.17487/RFC8365, March 2018, | DOI 10.17487/RFC8365, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8365>. | <https://www.rfc-editor.org/info/rfc8365>. | |||
[RFC9252] Dawra, G., Ed., Talaulikar, K., Ed., Raszuk, R., Decraene, | [RFC9252] Dawra, G., Ed., Talaulikar, K., Ed., Raszuk, R., Decraene, | |||
B., Zhuang, S., and J. Rabadan, "BGP Overlay Services | B., Zhuang, S., and J. Rabadan, "BGP Overlay Services | |||
Based on Segment Routing over IPv6 (SRv6)", RFC 9252, | Based on Segment Routing over IPv6 (SRv6)", RFC 9252, | |||
DOI 10.17487/RFC9252, July 2022, | DOI 10.17487/RFC9252, July 2022, | |||
<https://www.rfc-editor.org/info/rfc9252>. | <https://www.rfc-editor.org/info/rfc9252>. | |||
7.2. Informative References | 6.2. Informative References | |||
[I-D.ietf-bess-evpn-geneve] | [EVPN-GENEVE] | |||
Boutros, S., Sajassi, A., Drake, J., Rabadan, J., and S. | Boutros, S., Sajassi, A., Drake, J., Rabadan, J., and S. | |||
Aldrin, "EVPN control plane for Geneve", Work in Progress, | Aldrin, "EVPN control plane for Geneve", Work in Progress, | |||
Internet-Draft, draft-ietf-bess-evpn-geneve-08, 5 July | Internet-Draft, draft-ietf-bess-evpn-geneve-08, 5 July | |||
2024, <https://datatracker.ietf.org/doc/html/draft-ietf- | 2024, <https://datatracker.ietf.org/doc/html/draft-ietf- | |||
bess-evpn-geneve-08>. | bess-evpn-geneve-08>. | |||
[RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, | [RFC7348] Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger, | |||
L., Sridhar, T., Bursell, M., and C. Wright, "Virtual | L., Sridhar, T., Bursell, M., and C. Wright, "Virtual | |||
eXtensible Local Area Network (VXLAN): A Framework for | eXtensible Local Area Network (VXLAN): A Framework for | |||
Overlaying Virtualized Layer 2 Networks over Layer 3 | Overlaying Virtualized Layer 2 Networks over Layer 3 | |||
skipping to change at page 19, line 37 ¶ | skipping to change at line 852 ¶ | |||
[RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., | |||
Decraene, B., Litkowski, S., and R. Shakir, "Segment | Decraene, B., Litkowski, S., and R. Shakir, "Segment | |||
Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, | |||
July 2018, <https://www.rfc-editor.org/info/rfc8402>. | July 2018, <https://www.rfc-editor.org/info/rfc8402>. | |||
[RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | [RFC8754] Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., | |||
Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | |||
(SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | |||
<https://www.rfc-editor.org/info/rfc8754>. | <https://www.rfc-editor.org/info/rfc8754>. | |||
[I-D.ietf-nvo3-vxlan-gpe] | [VXLAN-GPE] | |||
Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol | Maino, F., Kreeger, L., and U. Elzur, "Generic Protocol | |||
Extension for VXLAN (VXLAN-GPE)", Work in Progress, | Extension for VXLAN (VXLAN-GPE)", Work in Progress, | |||
Internet-Draft, draft-ietf-nvo3-vxlan-gpe-13, 4 November | Internet-Draft, draft-ietf-nvo3-vxlan-gpe-13, 4 November | |||
2023, <https://datatracker.ietf.org/doc/html/draft-ietf- | 2023, <https://datatracker.ietf.org/doc/html/draft-ietf- | |||
nvo3-vxlan-gpe-13>. | nvo3-vxlan-gpe-13>. | |||
[IANA-BGP-TUNNEL-ENCAP] | [TUNNEL-ENCAP] | |||
IANA, "Border Gateway Protocol (BGP) Tunnel | IANA, "Border Gateway Protocol (BGP) Tunnel | |||
Encapsulation", <https://www.iana.org/assignments/bgp- | Encapsulation", <https://www.iana.org/assignments/bgp- | |||
tunnel-encapsulation/bgp-tunnel- | tunnel-encapsulation>. | |||
encapsulation.xhtml#tunnel-types>. | ||||
Acknowledgments | ||||
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. | ||||
Authors' Addresses | Authors' Addresses | |||
Jorge Rabadan (editor) | Jorge Rabadan (editor) | |||
Nokia | Nokia | |||
520 Almanor Avenue | 520 Almanor Avenue | |||
Sunnyvale, CA 94085 | Sunnyvale, CA 94085 | |||
United States of America | United States of America | |||
Email: jorge.rabadan@nokia.com | Email: jorge.rabadan@nokia.com | |||
Kiran Nagaraj | Kiran Nagaraj | |||
Nokia | Nokia | |||
520 Almanor Avenue | 520 Almanor Avenue | |||
End of changes. 104 change blocks. | ||||
343 lines changed or deleted | 343 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |