rfc9251xml2.original.xml | rfc9251.xml | |||
---|---|---|---|---|
<?xml version='1.0'?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd' [ | <!DOCTYPE rfc [ | |||
]> | <!ENTITY nbsp " "> | |||
<?rfc toc="yes"?> | <!ENTITY zwsp "​"> | |||
<?rfc tocompact="no"?> | <!ENTITY nbhy "‑"> | |||
<?rfc tocdepth="6"?> | <!ENTITY wj "⁠"> | |||
<?rfc symrefs="yes"?> | ]> | |||
<?rfc sortrefs="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc strict="yes" ?> | ||||
<rfc category="std" docName="draft-ietf-bess-evpn-igmp-mld-proxy-21"> | ||||
<!-- ***** FRONT MATTER ***** --> | ||||
<front> | ||||
<title abbrev="IGMP and MLD Proxy for EVPN">IGMP and MLD Proxy for EVPN</tit | ||||
le> | ||||
<author initials="A" surname="Sajassi" | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-i | |||
fullname="Ali Sajassi"> | etf-bess-evpn-igmp-mld-proxy-21" obsoletes="" updates="" submissionType="IETF" c | |||
<organization>Cisco Systems</organization> | onsensus="true" ipr="trust200902" xml:lang="en" tocInclude="true" tocDepth="6" s | |||
ymRefs="true" sortRefs="true" version="3" number="9251"> | ||||
<!-- xml2rfc v2v3 conversion 3.12.2 --> | ||||
<address> | <front> | |||
<postal> | ||||
<street>821 Alder Drive,</street> | ||||
<region>MILPITAS, CALIFORNIA 95035</region> | <!--[rfced] Please note that the title of the document has been | |||
updated as follows. Abbreviations have been expanded per Section | ||||
3.6 of RFC 7322 ("RFC Style Guide") and "Proxy" has been updated | ||||
to "Proxies". Please review. | ||||
<country>UNITED STATES</country> | Original: | |||
</postal> | IGMP and MLD Proxy for EVPN | |||
<phone></phone> | Current: | |||
<email>sajassi@cisco.com</email> | Internet Group Management Protocol (IGMP) and | |||
</address> | Multicast Listener Discovery (MLD) Proxies for Ethernet VPN (EVPN) | |||
--> | ||||
<title abbrev="IGMP and MLD Proxies for EVPN"> Internet Group Management Pro | ||||
tocol (IGMP) and Multicast Listener Discovery (MLD) Proxies for Ethernet VPN (EV | ||||
PN)</title> | ||||
<seriesInfo name="RFC" value="9251"/> | ||||
<author initials="A" surname="Sajassi" fullname="Ali Sajassi"> | ||||
<organization>Cisco Systems</organization> | ||||
<address> | ||||
<postal> | ||||
<street>821 Alder Drive</street> | ||||
<code>95035</code> | ||||
<city>Milpitas</city> | ||||
<region>CA</region> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<phone/> | ||||
<email>sajassi@cisco.com</email> | ||||
</address> | ||||
</author> | </author> | |||
<author initials="S" surname="Thoria" | <author initials="S" surname="Thoria" fullname="Samir Thoria"> | |||
fullname="Samir Thoria"> | ||||
<organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>821 Alder Drive,</street> | <street>821 Alder Drive</street> | |||
<code>95035</code> | ||||
<region>MILPITAS, CALIFORNIA 95035</region> | <city>Milpitas</city> | |||
<region>CA</region> | ||||
<country>UNITED STATES</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<phone/> | ||||
<phone></phone> | <email>sthoria@cisco.com</email> | |||
<email>sthoria@cisco.com</email> | </address> | |||
</address> | ||||
</author> | </author> | |||
<author initials="M" surname="Mishra" | <author initials="M" surname="Mishra" fullname="Mankamana Mishra"> | |||
fullname="Mankamana Mishra"> | ||||
<organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>821 Alder Drive,</street> | <street>821 Alder Drive</street> | |||
<code>95035</code> | ||||
<region>MILPITAS, CALIFORNIA 95035</region> | <city>Milpitas</city> | |||
<region>CA</region> | ||||
<country>UNITED STATES</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<phone/> | ||||
<phone></phone> | <email>mankamis@cisco.com</email> | |||
<email>mankamis@cisco.com</email> | </address> | |||
</address> | ||||
</author> | </author> | |||
<author initials="K" surname="Patel" fullname="Keyur Patel"> | ||||
<author initials="K" surname="Patel" | ||||
fullname="Keyur PAtel"> | ||||
<organization>Arrcus</organization> | <organization>Arrcus</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <country>United States of America</country> | |||
</postal> | ||||
<region></region> | <phone/> | |||
<email>keyur@arrcus.com</email> | ||||
<country>UNITED STATES</country> | </address> | |||
</postal> | ||||
<phone></phone> | ||||
<email>keyur@arrcus.com</email> | ||||
</address> | ||||
</author> | </author> | |||
<author initials="J" surname="Drake" fullname="John Drake"> | ||||
<author initials="J" surname="Drake" | ||||
fullname="John Drake"> | ||||
<organization>Juniper Networks</organization> | <organization>Juniper Networks</organization> | |||
<address> | <address> | |||
<postal> | <email>jdrake@juniper.net</email> | |||
<street></street> | </address> | |||
<region></region> | ||||
<country></country> | ||||
</postal> | ||||
<phone></phone> | ||||
<email>jdrake@juniper.net</email> | ||||
</address> | ||||
</author> | </author> | |||
<author initials="W" surname="Lin" fullname="Wen Lin"> | ||||
<author initials="W" surname="Lin" | ||||
fullname="Wen Lin"> | ||||
<organization>Juniper Networks</organization> | <organization>Juniper Networks</organization> | |||
<address> | <address> | |||
<postal> | <email>wlin@juniper.net</email> | |||
<street></street> | </address> | |||
</author> | ||||
<date year="2022" month="May"/> | ||||
<area>RTG</area> | ||||
<workgroup>BESS</workgroup> | ||||
<region></region> | <!-- [rfced] Please insert any keywords (beyond those that appear in | |||
the title) for use on https://www.rfc-editor.org/search. --> | ||||
<country></country> | <abstract> | |||
</postal> | <!--[rfced] In this sentence, is "efficiently" meant to describe "support" | |||
or "running"? | ||||
<phone></phone> | Original: | |||
<email>wlin@juniper.net</email> | This document describes how to support efficiently endpoints running | |||
</address> | IGMP(Internet Group Management Protocol) or MLD (Multicast Listener | |||
</author> | Discovery)... | |||
<date year="2022"/> | Perhaps (describing "support"): | |||
<area>Routing</area> | This document describes how to efficiently support endpoints running | |||
<workgroup>BESS WorkGroup</workgroup> | Internet Group Management Protocol (IGMP) or Multicast Listener | |||
<abstract> | Discovery (MLD)... | |||
<t> | Or (describing "running"): | |||
This document describes how to support efficiently endpoints runn | This document describes how to support endpoints efficiently running | |||
ing | Internet Group Management Protocol (IGMP) or Multicast Listener | |||
IGMP(Internet Group Management Protocol) or MLD (Multicast Listen | Discovery (MLD)... | |||
er Discovery) for the multicast services | --> | |||
over an EVPN network by incorporating | ||||
IGMP/MLD proxy procedures on EVPN (Ethernet VPN) PEs. | <t>This document describes how to support efficiently endpoints running | |||
</t> | the Internet Group Management Protocol (IGMP) or Multicast Listener Discov | |||
ery (MLD) | ||||
for the multicast services over an Ethernet VPN (EVPN) network by incorpor | ||||
ating | ||||
IGMP/MLD proxy procedures on EVPN Provider Edges (PEs). | ||||
</t> | ||||
</abstract> | </abstract> | |||
</front> | </front> | |||
<!-- ***** MIDDLE MATTER ***** --> | ||||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t> | <t>In data center (DC) applications, a point of delivery (POD) can consist | |||
In DC applications, a point of delivery (POD) can consist of | of a | |||
a | collection of servers supported by several top-of-rack (ToR) and | |||
collection of servers supported by several top of rack (ToR) | spine switches. This collection of servers and switches are self-contained | |||
and | and may have their own control protocol for intra-POD | |||
spine switches. This collection of servers and switches are | communication and orchestration. However, EVPN is used as a standard | |||
self | way of inter-POD communication for both intra-DC and inter-DC. A | |||
contained and may have their own control protocol for intra- | subnet can span across multiple PODs and DCs. EVPN provides a robust | |||
POD | multi-tenant solution with extensive multihoming capabilities to | |||
communication and orchestration. However, EVPN is used as st | stretch a subnet (VLAN) across multiple PODs and DCs. There can be | |||
andard | many hosts (several hundreds) attached to a subnet that is | |||
way of inter-POD communication for both intra-DC and inter-D | stretched across several PODs and DCs. | |||
C. A | </t> | |||
subnet can span across multiple PODs and DCs. EVPN provides | <t>These hosts express their interests in multicast groups on a | |||
a robust | given subnet/VLAN by sending IGMP/MLD Membership Reports for | |||
multi-tenant solution with extensive multi-homing capabiliti | their interested multicast group(s). Furthermore, an IGMP/MLD router | |||
es to | periodically sends membership queries to find out if there are hosts | |||
stretch a subnet (VLAN) across multiple PODs and DCs. There | on that subnet that are still interested in receiving multicast | |||
can be | traffic for that group. The IGMP/MLD Proxy solution described in this | |||
many hosts (several hundreds) attached to a subnet that is | document accomplishes three objectives: | |||
stretched across several PODs and DCs. | </t> | |||
<ol spacing="normal" type="1"> | ||||
</t> | <li>Reduce flooding of IGMP/MLD messages: Just like the ARP / Neighbor Di | |||
scovery (ND) | ||||
<t> | suppression | |||
These hosts express their interests in multicast groups | mechanism in EVPN to reduce the flooding of ARP messages over EVPN, | |||
on a | it is also desired to have a mechanism to reduce the flooding of IGMP/MLD | |||
given subnet/VLAN by sending IGMP/MLD Membership Reports | messages (both Queries and Membership Reports) in EVPN.</li> | |||
for | <li>Distributed anycast multicast proxy: It is desirable for the EVPN | |||
their interested multicast group(s). Furthermore, an IGM | network to act as a distributed anycast multicast router with respect | |||
P/MLD router | to IGMP/MLD proxy function for all the hosts attached to that | |||
periodically sends membership queries to find out if the | subnet.</li> | |||
re are hosts | <li>Selective multicast: This describes forwarding multicast traffic ove | |||
on that subnet that are still interested in receiving mu | r the EVPN | |||
lticast | network such that it only gets forwarded to the PEs that have | |||
traffic for that group. The IGMP/MLD Proxy solution desc | interests in the multicast group(s). This document shows how this objecti | |||
ribed in this | ve may be achieved | |||
document accomplishes three objectives: | when ingress replication is used to distribute the multicast traffic | |||
among the PEs. Procedures for supporting selective multicast using | ||||
<list style="numbers"> | Point-to-Multipoint (P2MP) tunnels can be found in <xref target="I-D.ietf | |||
<t> | -bess-evpn-bum-procedure-updates" | |||
Reduce flooding of IGMP/MLD messages: ju | format="default"/>.</li> | |||
st like the ARP/ND suppression | </ol> | |||
mechanism in EVPN to reduce the flooding | <t>The first two objectives are achieved by using the IGMP/MLD proxy on th | |||
of ARP messages over EVPN, | e | |||
it is also desired to have a mechanism t | PE. The third objective is achieved by setting up a multicast | |||
o reduce the flooding of IGMP/MLD | tunnel among only the PEs that have | |||
messages (both Queries and Membership Re | interest in the multicast group(s) based on the trigger from | |||
ports) in EVPN. | IGMP/MLD proxy processes. The proposed solutions for each of these | |||
</t> | objectives are discussed in the following sections. | |||
</t> | ||||
<t> | </section> | |||
Distributed anycast multicast proxy | <section numbered="true" toc="default"> | |||
: it is desirable for the EVPN | <name>Specification of Requirements</name> | |||
network to act as a distributed any | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
cast multicast router with respect | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp1 | |||
to IGMP/MLD proxy function for all | 4>", | |||
the hosts attached to that | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED< | |||
subnet. | /bcp14>", | |||
</t> | "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and | |||
"<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as descri | ||||
<t> | bed in | |||
Selective Multicast: to forward | BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" | |||
multicast traffic over EVPN | format="default"/> when, and only when, they appear in all capitals, as s | |||
network such that it only gets f | hown here. | |||
orwarded to the PEs that have | </t> | |||
interest in the multicast group( | </section> | |||
s). This document shows how this objective may be achieved | <section numbered="true" toc="default"> | |||
when Ingress Replication is used | <name>Terminology</name> | |||
to distribute the multicast traffic | <dl newline="false" spacing="normal"> | |||
among the PEs. Procedures for s | <dt> AC:</dt> | |||
upporting selective multicast using | <dd> Attachment Circuit</dd> | |||
P2MP tunnels can be found in <xr | <dt>All-Active Redundancy Mode:</dt> | |||
ef target="I-D.ietf-bess-evpn-bum-procedure-updates"/> | <dd> When all PEs attached to an Ethernet | |||
</t> | segment are allowed to forward known unicast traffic to/from that | |||
</list> | Ethernet segment for a given VLAN, then the Ethernet segment is | |||
</t> | defined to be operating in All-Active redundancy mode.</dd> | |||
<dt>BD:</dt> | ||||
<dd> Broadcast Domain. As per <xref target="RFC7432" format="default"/>, | ||||
an EVPN instance | ||||
(EVI) consists of a single BD | ||||
or multiple BDs. In case of a VLAN bundle and a VLAN-aware bundle service | ||||
model, an EVI contains multiple BDs. Also, in this document, BD and | ||||
subnet are equivalent terms.</dd> | ||||
<dt>DC:</dt> | ||||
<dd> Data Center</dd> | ||||
<dt>ES:</dt> | ||||
<dd> Ethernet Segment. This is when a customer site (device or network) i | ||||
s | ||||
connected to one or more PEs via a set of Ethernet links.</dd> | ||||
<dt>ESI:</dt> | ||||
<dd> Ethernet Segment Identifier. This is a unique non-zero identifier th | ||||
at | ||||
identifies an Ethernet Segment.</dd> | ||||
<dt>Ethernet Tag:</dt> | ||||
<dd> It identifies a particular broadcast | ||||
domain, e.g., a VLAN. An EVPN instance consists of one or more | ||||
broadcast domains.</dd> | ||||
<dt>EVI:</dt> | ||||
<dd> EVPN Instance. This spans the Provider Edge (PE) devices | ||||
participating in that EVPN.</dd> | ||||
<dt>EVPN:</dt> | ||||
<dd> Ethernet Virtual Private Network</dd> | ||||
<dt>IGMP:</dt> | ||||
<dd> Internet Group Management Protocol</dd> | ||||
<dt>IR:</dt> | ||||
<dd> Ingress Replication</dd> | ||||
<dt>MLD:</dt> | ||||
<dd> Multicast Listener Discovery</dd> | ||||
<dt> OIF:</dt> | ||||
<dd> Outgoing Interface for multicast. It can be a physical interface, | ||||
virtual interface, or tunnel.</dd> | ||||
<dt>PE:</dt> | ||||
<dd> Provider Edge</dd> | ||||
<dt>POD:</dt><dd> Point of Delivery</dd> | ||||
<dt> S-PMSI:</dt> | ||||
<dd> Selective P-Multicast Service Interface. This is a conceptual interf | ||||
ace for a | ||||
PE to send customer multicast traffic to some of the PEs in the same VPN. | ||||
</dd> | ||||
<dt>Single-Active Redundancy Mode:</dt> | ||||
<dd> When only a single PE, among all the | ||||
PEs attached to an Ethernet segment, is allowed to forward traffic | ||||
to/from that Ethernet segment for a given VLAN, then the Ethernet | ||||
segment is defined to be operating in Single-Active redundancy mode.</dd> | ||||
<dt> SMET:</dt> | ||||
<dd> Selective Multicast Ethernet Tag</dd> | ||||
<dt>ToR:</dt> | ||||
<dd> Top of Rack</dd> | ||||
</dl> | ||||
<t>This document also assumes familiarity with the terminology of | ||||
<xref target="RFC7432" format="default"/>, <xref target="RFC3376" | ||||
format="default"/>, and <xref target="RFC2236" format="default"/>. | ||||
<t> | <!--[rfced] May we rephrase this sentence for clarity? Please let | |||
The first two objectives are achieved by using IGMP/MLD | us know if the suggested text is agreeable or if you prefer | |||
proxy on the | otherwise. | |||
PE. The third objective is achieved by setting up a mul | ||||
ticast | ||||
tunnel only among the PEs that have | ||||
interest in that multicast group(s) based on the trigge | ||||
r from | ||||
IGMP/MLD proxy processes. The proposed solutions for ea | ||||
ch of these | ||||
objectives are discussed in the following sections. | ||||
</t> | ||||
</section> | ||||
<section title="Specification of Requirements"> | Original: | |||
<t> | Though most of the place this | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "S | document uses term IGMP Membership Report, the text applies equally | |||
HALL NOT", | for MLD Membership Report too. | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | ||||
"MAY", and | ||||
"OPTIONAL" in this document are to be interpreted as desc | ||||
ribed in BCP | ||||
14 <xref target="RFC2119"/> <xref target="RFC8174"/> when | ||||
, and only when, | ||||
they appear in all | ||||
capitals, as shown here. | ||||
</t> | ||||
</section> | Perhaps: | |||
When this document uses the term "IGMP Membership Report", the text | ||||
equally applies to the MLD Membership Report. | ||||
--> | ||||
<section title="Terminology"> | Though most | |||
<t> | of the place this document uses the term "IGMP | |||
<list style="symbols"> | Membership Report", the text applies equally for MLD | |||
<t> AC: Attachment Circuit. | Membership Report too. Similarly, text for IGMPv2 applies to MLDv1, | |||
</t> | and text for IGMPv3 applies to MLDv2. IGMP/MLD version encoding in the | |||
<t> | BGP update is stated in <xref target="bgp-encoding" format="default"/>.</t | |||
All-Active Redundancy Mode: When all PEs attached to a | > | |||
n Ethernet | <t> It is important to note that when there is text considering whether a | |||
segment are allowed to forward known unicast traffic t | PE | |||
o/from that | indicates support for IGMP proxying, the corresponding behavior has a | |||
Ethernet segment for a given VLAN, then the Ethernet s | natural analog for indicating support for MLD proxying, and the analogous | |||
egment is | requirements apply as well. | |||
defined to be operating in All-Active redundancy mode. | </t> | |||
</t> | </section> | |||
<t> | <section numbered="true" toc="default"> | |||
BD: Broadcast Domain. As per <xref target="RFC7432"/>, | <name>IGMP/MLD Proxy</name> | |||
an EVI consists of a single | <t>The IGMP Proxy mechanism is used to reduce the flooding of IGMP | |||
or multiple BDs. In case of VLAN-bundle and VLAN-aware | messages over an EVPN network, similar to the ARP proxy used in reducing | |||
bundle service | the flooding of ARP messages over EVPN. It also provides a triggering | |||
model, an EVI contains multiple BDs. Also, in this doc | mechanism for the PEs to set up their underlay multicast tunnels. The | |||
ument, BD and | IGMP Proxy mechanism consists of two components: | |||
subnet are equivalent terms. | </t> | |||
</t> | <ol spacing="normal" type="1"> | |||
<t> | <li> Proxy for IGMP Membership Reports </li> | |||
DC: Data Center | <li> Proxy for IGMP Membership Queries </li> | |||
</t> | </ol> | |||
<t>The goal of IGMP and MLD proxying is to make the EVPN behave seamlessly | ||||
for | ||||
the tenant systems with respect to multicast operations while using a more | ||||
efficient delivery system for signaling and delivery across the VPN. | ||||
Accordingly, group state must be tracked synchronously among the PEs | ||||
serving the VPN, with join and leave events propagated to the peer PEs and | ||||
each PE tracking the state of each of its peer PEs with respect to whether | ||||
there are locally attached group members (and in some cases, senders), wha | ||||
t | ||||
version(s) of IGMP/MLD are in use for those locally attached group members | ||||
, | ||||
etc. In order to perform this translation, each PE acts as an IGMP router | ||||
for the locally attached domain, maintains the requisite state on | ||||
locally attached nodes, sends periodic membership queries, etc. The role | ||||
of EVPN Selective Multicast Ethernet Tag (SMET) route propagation is to | ||||
ensure that each PE's local state is | ||||
propagated to the other PEs so that they share a consistent view of the | ||||
overall IGMP Membership Request and Leave Group state. It is important to | ||||
note that the need to keep such local state can be triggered by either | ||||
local IGMP traffic or BGP EVPN signaling. In most cases, a local IGMP eve | ||||
nt | ||||
will need to be signaled over EVPN, though state initiated by received EVP | ||||
N | ||||
traffic will not always need to be relayed to the locally attached domain. | ||||
</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>Proxy Reporting</name> | ||||
<t> | <!--[rfced] Should instances of "IGMP protocol" be updated to simply read "IGMP" | |||
Ethernet Segment (ES): When a customer site (device or | to avoid redundancy (if expanded "IGMP protocol" would read as "Internet Group | |||
network) is | Management Protocol protocol"). Please review and let us know if any updates | |||
connected to one or more PEs via a set of Ethernet lin | are needed. | |||
ks. | --> | |||
</t> | ||||
<t> | <t>When IGMP protocol is used between hosts and their first hop EVPN | |||
Ethernet Segment Identifier (ESI): A unique non-zero i | router (EVPN PE), Proxy-reporting is used by the EVPN PE to summarize | |||
dentifier that | (when possible) reports received from downstream hosts and propagate | |||
identifies an Ethernet Segment. | them in BGP to other PEs that are interested in the information. | |||
</t> | ||||
<t> | <!--[rfced] May we update "IGMP Reports" to "IGMP Membership Reports"? | |||
Ethernet Tag: It identifies a particular broadcast | ||||
domain, e.g., a VLAN. An EVPN instance consists of on | ||||
e or more | ||||
broadcast domains. | ||||
</t> | ||||
<t> | Original: | |||
EVI: An EVPN instance spanning the Provider Edge (PE) | This is done by terminating the IGMP Reports in the first hop PE, and | |||
devices | translating and exchanging the relevant information among EVPN BGP | |||
participating in that EVPN | speakers. | |||
</t> | ||||
<t> | Perhaps: | |||
EVPN: Ethernet Virtual Private Network | This is done by terminating the IGMP Membership Reports in the first hop PE, | |||
</t> | and | |||
translating and exchanging the relevant information among EVPN BGP | ||||
speakers. | ||||
--> | ||||
This | ||||
is done by terminating the IGMP Reports in the first hop PE and | ||||
translating and exchanging the relevant information among EVPN BGP | ||||
speakers. The information is again translated back to an IGMP message at | ||||
the recipient EVPN speaker. Thus, it helps create an IGMP overlay | ||||
subnet using BGP. In order to facilitate such an overlay, this | ||||
document also defines a new EVPN route type Network Layer Reachability In | ||||
formation | ||||
(NLRI) and the EVPN SMET route, along with its procedures to help | ||||
exchange and register IGMP multicast groups; see <xref target="bgp-encodi | ||||
ng" | ||||
format="default"/>. | ||||
</t> | ||||
<section numbered="true" toc="default"> | ||||
<name>IGMP/MLD Membership Report Advertisement in BGP</name> | ||||
<t>When a PE wants to advertise an IGMP Membership Report using | ||||
the BGP EVPN route, it follows the proceeding rules (BGP encoding | ||||
is stated in <xref target="bgp-encoding" format="default"/>). The first | ||||
four | ||||
rules are applicable to the originator PE, and the last three rules are | ||||
applicable | ||||
to remote PE processing SMET routes: | ||||
</t> | ||||
<t>Processing at the BGP route originator: | ||||
</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>When the first hop PE receives IGMP Membership Reports | ||||
belonging to the same IGMP version from different attached | ||||
hosts for the same (*,G) or (S,G), it <bcp14>SHOULD</bcp14> send a si | ||||
ngle | ||||
BGP message corresponding to the very first IGMP Membership Request ( | ||||
BGP update as | ||||
soon as possible) for that (*,G) or (S,G). This is because BGP is a | ||||
stateful protocol, and no further transmission of the same report is | ||||
needed. If the IGMP Membership Request is for (*,G), then the Multica | ||||
st Group Address | ||||
<bcp14>MUST</bcp14> be sent along with the corresponding version flag | ||||
(v2 or v3) | ||||
set. In case of IGMPv3, the exclude flag <bcp14>MUST</bcp14> also be | ||||
set to | ||||
indicate that no source IP address must be excluded (include all | ||||
sources "*"). | ||||
If the IGMP Membership Report is for (S,G), then besides setting the | ||||
Multicast Group | ||||
Address along with the v3 flag, the source IP address and the | ||||
include/exclude (IE) flag <bcp14>MUST</bcp14> be set. It should be no | ||||
ted that, when | ||||
advertising the EVPN route for (S,G), the only valid version flag is | ||||
v3 (v2 flags <bcp14>MUST</bcp14> be set to 0). | ||||
</li> | ||||
<li>When the first hop PE receives an IGMPv3 Membership Report for ( | ||||
S,G) on a given | ||||
BD, it <bcp14>MUST</bcp14> advertise the corresponding EVPN SMET rout | ||||
e, regardless | ||||
of whether the source (S) is | ||||
attached to itself or not, in order to facilitate the source move in | ||||
the future. </li> | ||||
<li>When the first hop PE receives an IGMP version-X Membership Repo | ||||
rt first for | ||||
(*,G) and then later receives an IGMP version-Y Membership Report for | ||||
the same | ||||
(*,G), then it <bcp14>MUST</bcp14> re-advertise the same EVPN SMET ro | ||||
ute with the flag | ||||
for version-Y set in addition to any previously set version flag(s). | ||||
In other words, the first hop PE <bcp14>MUST NOT</bcp14> withdraw the | ||||
EVPN route | ||||
before sending the new route because the Flags field is not part of | ||||
BGP route key processing. | ||||
</li> | ||||
<li>When the first hop PE receives an IGMP version-X Membership Repo | ||||
rt first for | ||||
(*,G) and then later receives an IGMPv3 Membership Report for the sam | ||||
e | ||||
Multicast Group Address but for a specific source address S, then the | ||||
PE <bcp14>MUST</bcp14> advertise a new EVPN SMET route with the v3 fl | ||||
ag set (and v2 reset). | ||||
The IE flag also needs to be set accordingly. | ||||
Since the source IP address is used as part of BGP route key processi | ||||
ng, | ||||
it is considered to be a new BGP route advertisement. When different | ||||
versions | ||||
of IGMP Membership Report are received, the final state <bcp14>MUST</ | ||||
bcp14> be as per | ||||
<xref target="RFC3376" sectionFormat="of" section="5.1"/>. | ||||
At the end of the route processing, local and remote group record sta | ||||
te | ||||
<bcp14>MUST</bcp14> | ||||
be as per <xref target="RFC3376" sectionFormat="of" section="5.1"/>. | ||||
</li> | ||||
</ol> | ||||
<t>Processing at the BGP route receiver: | ||||
</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>When a PE receives an EVPN SMET route with more than one version | ||||
flag set, it will generate the corresponding IGMP report for (*,G) | ||||
for each version specified in the Flags field. With multiple version | ||||
flags set, there must not be a source IP address in the received EVPN | ||||
route. If there is, then an error <bcp14>SHOULD</bcp14> be logged. If | ||||
the v3 flag | ||||
is set (in addition to v2), then the IE flag <bcp14>MUST</bcp14> | ||||
indicate "exclude". If not, then an error <bcp14>SHOULD</bcp14> be lo | ||||
gged. The PE | ||||
<bcp14>MUST</bcp14> generate an IGMP Membership Report for that (*,G) | ||||
and | ||||
each IGMP version in the version flag. | ||||
</li> | ||||
<li>When a PE receives a list of EVPN SMET NLRIs in its BGP update | ||||
message, each with a different source IP address and the same | ||||
Multicast Group Address, and the version flag is set to v3, then the | ||||
PE generates an IGMPv3 Membership Report with a record corresponding | ||||
to the list of source IP addresses and the group address, along with | ||||
the proper indication of inclusion/exclusion. | ||||
</li> | ||||
<li>Upon receiving an EVPN SMET route(s) and before generating the | ||||
corresponding IGMP Membership Request(s), the PE checks to see whethe | ||||
r it has a | ||||
Customer Edge (CE) multicast router for that BD on any of its ESs . T | ||||
he PE provides | ||||
such a check by listening for PIM Hello messages on that AC, i.e., | ||||
(ES,BD). If the PE does have the router's ACs, then the generated | ||||
IGMP Membership Request(s) is sent to those ACs. If it doesn't have a | ||||
ny of the | ||||
router's ACs, then no IGMP Membership Request(s) needs to be generate | ||||
d. This is | ||||
because sending IGMP Membership Requests to other hosts can result in | ||||
unintentionally preventing a host from joining a specific multicast | ||||
group using IGMPv2, i.e., if the PE does not receive a Membership Rep | ||||
ort from the | ||||
host, it will not forward multicast data to it. Per <xref target="RFC | ||||
4541" | ||||
format="default"/> , when an | ||||
IGMPv2 host receives a Membership Report for a group address that it | ||||
intends to join, the host will suppress its own membership report for | ||||
the same group, and if the PE does not receive an IGMP Membership Rep | ||||
ort from the host, | ||||
it will not forward multicast data to it. In other words, an IGMPv2 | ||||
Membership Report <bcp14>MUST NOT</bcp14> be sent on an AC that does | ||||
not lead to a CE | ||||
multicast router. This message suppression is a requirement for IGMPv | ||||
2 hosts. | ||||
This is not a problem for hosts running IGMPv3, because there is no | ||||
suppression of IGMP Membership Reports. | ||||
</li> | ||||
</ol> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>IGMP/MLD Leave Group Advertisement in BGP</name> | ||||
<t>When a PE wants to withdraw an EVPN SMET route corresponding to an | ||||
IGMPv2 Leave Group or IGMPv3 "Leave" equivalent message, it | ||||
follows the rules below. The first rule defines the procedure at the | ||||
originator PE, and the last two rules talk about procedures at the remo | ||||
te PE: | ||||
</t> | ||||
<t>Processing at the BGP route originator: | ||||
</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>When a PE receives an IGMPv2 Leave Group or its "Leave" equivalen | ||||
t | ||||
message for IGMPv3 from its attached host, it checks to see if this | ||||
host is the last host that is interested in this multicast group by | ||||
sending a query for the multicast group. | ||||
<t> | <!--[rfced] As "SMET" is expanded as "Selective Multicast Ethernet Tag", may we | |||
IGMP: Internet Group Management Protocol | remove "Multicast" to avoid redundancy? | |||
</t> | ||||
<t> | ||||
IR: Ingress Replication | ||||
</t> | ||||
<t> | Original: | |||
MLD: Multicast Listener Discovery | If the host was indeed the last one (i.e. no responses are | |||
</t> | received for the query), then the PE MUST re-advertises EVPN | |||
SMET Multicast route with the corresponding version flag reset. | ||||
<t> OIF: Outgoing Interface for multicast. It can be phys | Perhaps: | |||
ical interface, virtual interface or tunnel.</t> | If the host was indeed the last one (i.e., no responses are | |||
<t> | received for the query), then the PE MUST re-advertise the EVPN | |||
PE: Provider Edge. | SMET route with the corresponding version flag reset. | |||
</t> | --> | |||
<t> | If the host was indeed the | |||
POD: Point of Delivery | last one (i.e., no responses are received for the query), then the PE | |||
</t> | <bcp14>MUST</bcp14> re-advertise the EVPN SMET Multicast route with t | |||
he corresponding | ||||
version flag reset. If this is the last version flag to be reset, | ||||
then instead of re-advertising the EVPN route with all version flags | ||||
reset, the PE <bcp14>MUST</bcp14> withdraw the EVPN route for that (* | ||||
,G). | ||||
</li> | ||||
</ol> | ||||
<t>Processing at the BGP route receiver: | ||||
</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>When a PE receives an EVPN SMET route for a given (*,G), it | ||||
compares the received version flags from the route with its per-PE | ||||
stored version flags. | ||||
<t> S-PMSI: Selective P-Multicast Service Interface - a c | <!--[rfced] Is there a word(s) missing before "attached"? Please let us | |||
onceptual interface for a | know if the perhaps text captures the intended meaning. | |||
PE to send customer multicast traffic to some of | ||||
the PEs in the same VPN. | ||||
</t> | ||||
<t> | ||||
Single-Active Redundancy Mode: When only a single PE, | ||||
among all the | ||||
PEs attached to an Ethernet segment, is allowed to for | ||||
ward traffic | ||||
to/from that Ethernet segment for a given VLAN, then t | ||||
he Ethernet | ||||
segment is defined to be operating in Single-Active re | ||||
dundancy mode. | ||||
</t> | ||||
<t> SMET: Selective Multicast Eth | Original: | |||
ernet Tag | If the PE finds that a version flag | |||
</t> | associated with the (*,G) for the remote PE is reset, then the PE | |||
<t> | MUST generate IGMP Leave for that (*,G) toward its local | |||
ToR: Top of Rack | interface (if any) attached to the multicast router for that | |||
</t> | multicast group. | |||
</list> | Perhaps: | |||
</t> | If the PE finds that a version flag | |||
<t> | associated with the (*,G) for the remote PE is reset, then the PE | |||
This document also assumes familiarity with the termin | MUST generate IGMP Leave for that (*,G) toward its local | |||
ology of | interface (if any), which is attached to the multicast router for that | |||
<xref target="RFC7432"/>, <xref target="RFC3376"/>, <x | multicast group. | |||
ref target="RFC2236"/> . Though most of the place this document uses term IGMP | --> | |||
Membership Report, the text applies equally for MLD | ||||
Membership Report too. Similarly, text for IGMPv2 appl | ||||
ies to MLDv1 | ||||
and text for IGMPv3 applies to MLDv2. IGMP / MLD vers | ||||
ion encoding in | ||||
BGP update is stated in <xref target="bgp-encoding"/> | ||||
</t> | ||||
<t> It is important to note when there is text considerin | ||||
g whether a PE indicates support for IGMP proxying, the corresponding behavior h | ||||
as a natural analogue for indication of support for MLD proxying, and the analog | ||||
ous requirements apply as well. | ||||
</t> | ||||
If the PE finds that a version flag associated | ||||
with the (*,G) for the remote PE is reset, then the PE <bcp14>MUST</b | ||||
cp14> generate | ||||
IGMP Leave for that (*,G) toward its local interface (if any) | ||||
attached to the multicast router for that multicast group. It should | ||||
be noted that the received EVPN route <bcp14>MUST</bcp14> have at lea | ||||
st one | ||||
version flag set. If all version flags are reset, it is an error | ||||
because the PE should have received an EVPN route withdraw for the | ||||
last version flag. An error <bcp14>MUST</bcp14> be considered as a BG | ||||
P error, and | ||||
the PE <bcp14>MUST</bcp14> apply the | ||||
"treat-as-withdraw" procedure per <xref target="RFC7606" format="defa | ||||
ult"/>. | ||||
</li> | ||||
<li>When a PE receives an EVPN SMET route withdraw, it removes the | ||||
remote PE from its OIF list for that multicast group, and if there ar | ||||
e | ||||
no more OIF entries for that multicast group (either locally or | ||||
remotely), then the PE <bcp14>MUST</bcp14> stop responding to Members | ||||
hip | ||||
Queries from the | ||||
locally attached router (if any). If there is a source for that | ||||
multicast group, the PE stops sending multicast traffic for that sour | ||||
ce. | ||||
</li> | ||||
</ol> | ||||
</section> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="IGMP/MLD Proxy"> | <name>Proxy Querier</name> | |||
<t> | <t>As mentioned in the previous sections, each PE <bcp14>MUST</bcp14> ha | |||
The IGMP Proxy mechanism is used to reduce the flooding | ve proxy | |||
of IGMP | querier functionality for the following reasons: | |||
messages over an EVPN network similar to ARP proxy used | </t> | |||
in reducing | <ol spacing="normal" type="1"> | |||
the flooding of ARP messages over EVPN. It also provides | <li>to enable the collection of EVPN PEs providing Layer 2 Virtual Priv | |||
a triggering | ate Network | |||
mechanism for the PEs to setup their underlay multicast | (L2VPN) service to | |||
tunnels. The | act as a distributed multicast router with an anycast IP address for al | |||
IGMP Proxy mechanism consists of two components: | l | |||
<list style="numbers"> | attached hosts in that subnet</li> | |||
<t> Proxy for IGMP Membership Reports. </t> | <li>to enable suppression of IGMP Membership Reports and Membership Qu | |||
<t> Proxy for IGMP Membership Queries. </t> | eries over | |||
</list> | MPLS/IP core</li> | |||
</t> | </ol> | |||
<t> | ||||
The goal of IGMP and MLD proxying is to make th | ||||
e EVPN behave seamlessly for | ||||
the tenant systems with respect to multicast o | ||||
perations, while using a more | ||||
efficient delivery system for signaling and de | ||||
livery across the VPN. | ||||
Accordingly, group state must be tracked synch | ||||
ronously among the PEs | ||||
serving the VPN, with join and leave events pr | ||||
opagated to the peer PEs, and | ||||
each PE tracking the state of each of its peer | ||||
PEs with respect whether | ||||
there are locally attached group members (and | ||||
in some cases, senders), what | ||||
version(s) of IGMP/MLD are in use for those lo | ||||
cally attached group members, | ||||
etc. In order to perform this translation, ea | ||||
ch PE acts as an IGMP router | ||||
for the locally attached domain, and maintains | ||||
the requisite state on | ||||
locally attached nodes, sends periodic members | ||||
hip queries, etc. The role | ||||
of EVPN SMET route propagation is to ensure th | ||||
at each PE's local state is | ||||
propagated to the other PEs so that they share | ||||
a consistent view of the | ||||
overall IGMP Membership Request and Leave Grou | ||||
p state. It is important to | ||||
note that the need to keep such local state ca | ||||
n be triggered by either | ||||
local IGMP traffic or BGP EVPN signaling. In | ||||
most cases a local IGMP event | ||||
will need to be signaled over EVPN, though sta | ||||
te initiated by received EVPN | ||||
traffic will not always need to be relayed to | ||||
the locally attached domain. | ||||
</t> | ||||
<section title="Proxy Reporting"> | ||||
<t> | ||||
When IGMP protocol is used between hosts and th | ||||
eir first hop EVPN | ||||
router (EVPN PE), Proxy-reporting is used by th | ||||
e EVPN PE to summarize | ||||
(when possible) reports received from downstrea | ||||
m hosts and propagate | ||||
them in BGP to other PEs that are interested in | ||||
the information. This | ||||
is done by terminating the IGMP Reports in the | ||||
first hop PE, and | ||||
translating and exchanging the relevant informa | ||||
tion among EVPN BGP | ||||
speakers. The information is again translated b | ||||
ack to IGMP message at | ||||
the recipient EVPN speaker. Thus it helps creat | ||||
e an IGMP overlay | ||||
subnet using BGP. In order to facilitate such a | ||||
n overlay, this | ||||
document also defines a new EVPN route type NLR | ||||
I, the EVPN Selective | ||||
Multicast Ethernet Tag route, along with its pr | ||||
ocedures to help | ||||
exchange and register IGMP multicast groups <xr | ||||
ef target="bgp-encoding"/>. | ||||
</t> | ||||
<section title="IGMP/MLD Membership Report Advertisemen | ||||
t in BGP"> | ||||
<t> | ||||
When a PE wants to advertise an IGMP | ||||
Membership Report using | ||||
the BGP EVPN route, it follows the fo | ||||
llowing rules (BGP encoding | ||||
stated in <xref target="bgp-encoding" | ||||
/>). Where first four rules are applicable to originator PE and last three rules | ||||
are applicable to remote PE processing SMET routes: | ||||
</t> | ||||
<t> | ||||
Processing at BGP route originator: | ||||
<list style="numbers"> | ||||
<t> | ||||
When the first hop PE re | ||||
ceives IGMP Membership Reports | ||||
, belonging to the sam | ||||
e IGMP version, from different attached | ||||
hosts for the same (*, | ||||
G) or (S,G), it SHOULD send a single | ||||
BGP message correspond | ||||
ing to the very first IGMP Membership Request (BGP update as | ||||
soon as possible) for | ||||
that (*,G) or (S,G). This is because BGP is a | ||||
stateful protocol and | ||||
no further transmission of the same report is | ||||
needed. If the IGMP Me | ||||
mbership Request is for (*,G), then multicast group address | ||||
MUST be sent along wit | ||||
h the corresponding version flag (v2 or v3) | ||||
set. In case of IGMPv3 | ||||
, the exclude flag MUST also be set to | ||||
indicate that no sourc | ||||
e IP address must be excluded (include all | ||||
sources "*"). | ||||
If the IGMP Membership | ||||
Report is for (S,G), then besides setting multicast group | ||||
address along with the | ||||
version flag v3, the source IP address and the | ||||
IE flag MUST be set. I | ||||
t should be noted that when | ||||
advertising the EVPN r | ||||
oute for (S,G), the only valid version flag is | ||||
v3 (v2 flags MUST be s | ||||
et to zero). | ||||
</t> | ||||
<t> | ||||
When the first hop PE | ||||
receives an IGMPv3 Membership Report for (S,G) on a given | ||||
BD, it MUST advertise | ||||
the corresponding EVPN Selective Multicast | ||||
Ethernet Tag (SMET) ro | ||||
ute regardless of whether the source (S) is | ||||
attached to itself or | ||||
not in order to facilitate the source move in | ||||
the future. | ||||
</t> | ||||
<t> | ||||
When the first hop PE | ||||
receives an IGMP version-X Membership Report first for | ||||
(*,G) and then later i | ||||
t receives an IGMP version-Y Membership Report for the same | ||||
(*,G), then it MUST re | ||||
-advertise the same EVPN SMET route with flag | ||||
for version-Y set in a | ||||
ddition to any previously-set version flag(s). | ||||
In other words, the fi | ||||
rst hop PE MUST NOT withdraw the EVPN route | ||||
before sending the new | ||||
route because the flag field is not part of | ||||
BGP route key processi | ||||
ng. | ||||
</t> | ||||
<t> | ||||
When the first hop PE | ||||
receives an IGMP version-X Membership Report first for | ||||
(*,G) and then later i | ||||
t receives an IGMPv3 Membership Report for the same | ||||
multicast group addres | ||||
s but for a specific source address S, then the | ||||
PE MUST advertise a ne | ||||
w EVPN SMET route with v3 flag set (and v2 reset). | ||||
The IE flag also need | ||||
to be set accordingly. | ||||
Since source IP addres | ||||
s is used as part of BGP route key processing | ||||
it is considered as a | ||||
new BGP route advertisement. When different version | ||||
of IGMP Membership Rep | ||||
ort are received, final state MUST be as per section 5.1 of <xref target="RFC337 | ||||
6"/>. | ||||
At the end of route pr | ||||
ocessing local and remote group record state MUST be | ||||
as per section 5.1 of | ||||
<xref target="RFC3376"/>. | ||||
</t> | ||||
</list> | ||||
Processing at BGP route r | ||||
eceiver: | ||||
<list style="numbers"> | ||||
<t> | ||||
When a PE receives an | ||||
EVPN SMET route with more than one version | ||||
flag set, it will gene | ||||
rate the corresponding IGMP report for (*,G) | ||||
for each version speci | ||||
fied in the flags field. With multiple version | ||||
flags set, there must | ||||
not be source IP address in the received EVPN | ||||
route. If there is, th | ||||
en an error SHOULD be logged. If the v3 flag | ||||
is set (in addition to | ||||
v2), then the IE flag MUST | ||||
indicate "exclude". If | ||||
not, then an error SHOULD be logged. The PE | ||||
MUST generate an IGMP | ||||
Membership Report for that (*,G) and | ||||
each IGMP version in t | ||||
he version flag. | ||||
</t> | ||||
<t> | ||||
When a PE receives a l | ||||
ist of EVPN SMET NLRIs in its BGP update | ||||
message, each with a d | ||||
ifferent source IP address and the same | ||||
multicast group addres | ||||
s, and the version flag is set to v3, then the | ||||
PE generates an IGMPv3 | ||||
Membership Report with a record corresponding | ||||
to the list of source | ||||
IP addresses and the group address along with | ||||
the proper indication | ||||
of inclusion/exclusion. | ||||
</t> | ||||
<t> | ||||
Upon receiving EV | ||||
PN SMET route(s) and before generating the | ||||
corresponding IGMP Mem | ||||
bership Request(s), the PE checks to see whether it has any | ||||
CE multicast router fo | ||||
r that BD on any of its ES's . The PE provides | ||||
such a check by listen | ||||
ing for PIM Hello messages on that AC (i.e, | ||||
ES,BD). If the PE does | ||||
have the router's ACs, then the generated | ||||
IGMP Membership Reques | ||||
t(s) are sent to those ACs. If it doesn't have any of the | ||||
router's AC, then no I | ||||
GMP Membership Request(s) needs to be generated. This is | ||||
because sending IGMP M | ||||
embership Requests to other hosts can result in | ||||
unintentionally preven | ||||
ting a host from joining a specific multicast | ||||
group using IGMPv2 - i | ||||
.e., if the PE does not receive a Membership Report from the | ||||
host it will not forwa | ||||
rd multicast data to it. Per <xref target="RFC4541"/> , when an | ||||
IGMPv2 host receives a | ||||
Membership Report for a group address that it | ||||
intends to join, the h | ||||
ost will suppress its own membership report for | ||||
the same group, and if | ||||
the PE does not receive an IGMP Membership Report from the host | ||||
it will not forward mu | ||||
lticast data to it. In other words, an IGMPv2 | ||||
Membership Report MUST | ||||
NOT be sent on an AC that does not lead to a CE multicast | ||||
router. This message s | ||||
uppression is a requirement for IGMPv2 hosts. | ||||
This is not a problem | ||||
for hosts running IGMPv3 because there is no | ||||
suppression of IGMP Me | ||||
mbership Reports. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="IGMP/MLD Leave Group Advertisement in B | ||||
GP"> | ||||
<t> | ||||
When a PE wants to withdraw an EVPN | ||||
SMET route corresponding to an | ||||
IGMPv2 Leave Group or IGMPv3 "Leave" | ||||
equivalent message, it | ||||
follows the following rules, where f | ||||
irst rule defines the procedure at originator PE and last two rules talk about p | ||||
rocedures at remote PE: | ||||
</t> | ||||
<t> | ||||
Processing at BGP route orig | ||||
inator: | ||||
<list style="numbers"> | ||||
<t> | ||||
When a PE receives an | ||||
IGMPv2 Leave Group or its "Leave" equivalent | ||||
message for IGMPv3 fro | ||||
m its attached host, it checks to see if this | ||||
host is the last host | ||||
that is interested in this multicast group by | ||||
sending a query for th | ||||
e multicast group. If the host was indeed the | ||||
last one (i.e. no resp | ||||
onses are received for the query), then the PE | ||||
MUST re-advertises EVP | ||||
N SMET Multicast route with the corresponding | ||||
version flag reset. If | ||||
this is the last version flag to be reset, | ||||
then instead of re-adv | ||||
ertising the EVPN route with all version flags | ||||
reset, the PE MUST wit | ||||
hdraw the EVPN route for that (*,G). | ||||
</t> | ||||
</list> | ||||
Processing at BGP route r | ||||
eceiver: | ||||
<list style="numbers"> | ||||
<t> | ||||
When a PE receives an | ||||
EVPN SMET route for a given (*,G), it | ||||
compares the received | ||||
version flags from the route with its per-PE | ||||
stored version flags. | ||||
If the PE finds that a version flag associated | ||||
with the (*,G) for the | ||||
remote PE is reset, then the PE MUST generate | ||||
IGMP Leave for that (* | ||||
,G) toward its local interface (if any) | ||||
attached to the multic | ||||
ast router for that multicast group. It should | ||||
be noted that the rece | ||||
ived EVPN route MUST at least have one | ||||
version flag set. If a | ||||
ll version flags are reset, it is an error | ||||
because the PE should | ||||
have received an EVPN route withdraw for the | ||||
last version flag. Err | ||||
or MUST be considered as a BGP error and the PE MUST apply the | ||||
"treat-as-withdraw" pr | ||||
ocedure of <xref target="RFC7606"/>. | ||||
</t> | ||||
<t> | ||||
When a PE receives an | ||||
EVPN SMET route withdraw, it removes the | ||||
remote PE from its OIF | ||||
list for that multicast group and if there are | ||||
no more OIF entries fo | ||||
r that multicast group (either locally or | ||||
remotely), then the PE | ||||
MUST stop responding to Membership Queries from the | ||||
locally attached route | ||||
r (if any). If there is a source for that | ||||
multicast group, the P | ||||
E stops sending multicast traffic for that | ||||
source. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="Proxy Querier"> | ||||
<t> | ||||
As mentioned in the previous sections, each PE | ||||
MUST have proxy | ||||
querier functionality for the following reasons | ||||
: | ||||
<list style="numbers"> | ||||
<t> | ||||
To enable the collection of EVP | ||||
N PEs providing L2VPN service to | ||||
act as distributed multicast ro | ||||
uter with Anycast IP address for all | ||||
attached hosts in that subnet. | ||||
</t> | ||||
<t> | ||||
To enable suppression of IGMP M | ||||
embership Reports and Membership Queries over | ||||
MPLS/IP core. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
</section> | </section> | |||
</section> | ||||
<section title="Operation"> | <section numbered="true" toc="default"> | |||
<t> | <name>Operation</name> | |||
Consider the EVPN network of Figure-1, where there is an EV | <t>Consider the EVPN network in <xref target="EVPN"/>, where there is an E | |||
PN | VPN | |||
instance configured across the PEs shown in this figur | instance configured across the PEs (namely PE1, | |||
e (namely PE1, | PE2, and PE3). Let's consider that this EVPN instance consists of a | |||
PE2, and PE3). Let's consider that this EVPN instance | single bridge domain (single subnet) with all the hosts and sources and | |||
consists of a | the multicast router connected to this subnet. PE1 only has hosts (host de | |||
single bridge domain (single subnet) with all the host | noted by Hx) | |||
s, sources, and | connected to it. PE2 has a mix of hosts and a multicast source. PE3 | |||
the multicast router connected to this subnet. PE1 onl | has a mix of hosts, a multicast source (source denoted by Sx), and a multi | |||
y has hosts(host denoted by Hx) | cast router | |||
connected to it. PE2 has a mix of hosts and a multicas | (router denoted by Rx). | |||
t source. PE3 | Furthermore, let's consider that for (S1,G1), R1 is used as the | |||
has a mix of hosts, a multicast source (source denoted | multicast router. The following subsections describe the IGMP proxy | |||
by Sx), and a multicast router (router denoted by Rx). | operation in different PEs with regard to whether the locally | |||
Furthermore, let's consider that for (S1,G1), R1 is us | attached devices for that subnet are: | |||
ed as the | </t> | |||
multicast router. The following subsections describe t | <ul spacing="normal"> | |||
he IGMP proxy | <li>only hosts,</li> | |||
operation in different PEs with regard to whether the | <li>a mix of hosts and a multicast source, or</li> | |||
locally | <li>a mix of hosts, a multicast source, and a multicast router.</li> | |||
attached devices for that subnet are: | </ul> | |||
<figure anchor="EVPN"> | ||||
<list style="symbols"> | <name>EVPN Network</name> | |||
<t> | <artwork name=">EVPN network" type="" align="center" alt=""><![CDATA[ | |||
only hosts | +--------------+ | |||
</t> | | | | |||
<t> | | | | |||
mix of hosts and multicast source | +----+ | | +----+ | |||
</t> | H1:(*,G1)v2 ---| | | | | |---- H6(*,G1)v2 | |||
<t> | H2:(*,G1)v2 ---| PE1| | IP/MPLS | | PE2|---- H7(S2,G2)v3 | |||
mix of hosts, multicast source, and mu | H3:(*,G1)v3 ---| | | Network | | |---- S2 | |||
lticast router | H4:(S2,G2)v3 --| | | | | | | |||
</t> | +----+ | | +----+ | |||
</list> | | | | |||
</t> | +----+ | | | |||
H5:(S1,G1)v3 --| | | | | ||||
<figure > | S1 ---| PE3| | | | |||
<artwork ><![CDATA[ | R1 ---| | | | | |||
+----+ | | | ||||
+--------------+ | | | | |||
| | | +--------------+ | |||
| | | ]]></artwork> | |||
+----+ | | +----+ | ||||
H1:(*,G1)v2 ---| | | | | |---- H6(*,G1)v2 | ||||
H2:(*,G1)v2 ---| PE1| | IP/MPLS | | PE2|---- H7(S2,G2)v3 | ||||
H3:(*,G1)v3 ---| | | Network | | |---- S2 | ||||
H4:(S2,G2)v3 --| | | | | | | ||||
+----+ | | +----+ | ||||
| | | ||||
+----+ | | | ||||
H5:(S1,G1)v3 --| | | | | ||||
S1 ---| PE3| | | | ||||
R1 ---| | | | | ||||
+----+ | | | ||||
| | | ||||
+--------------+ | ||||
Figure 1: EVPN network | ||||
]]></artwork> | ||||
</figure> | ||||
<section title="PE with only attached hosts for a given subnet"> | ||||
<t> | ||||
When PE1 receives an IGMPv2 Membership Report from H1, it | ||||
does not forward | ||||
this Membership Report to any of its other ports (for thi | ||||
s subnet) because all | ||||
these local ports are associated with the hosts. PE1 send | ||||
s an | ||||
EVPN Multicast Group route corresponding to this Membersh | ||||
ip Report for (*,G1) and | ||||
setting v2 flag. This EVPN route is received by PE2 and P | ||||
E3 that are | ||||
the members of the same BD (i.e., same EVI in case of VLA | ||||
N-based | ||||
service or EVI,VLAN in case of VLAN-aware bundle service) | ||||
. PE3 | ||||
reconstructs the IGMPv2 Membership Report from this EVPN | ||||
BGP route and only | ||||
sends it to the port(s) with multicast routers attached t | ||||
o it (for | ||||
that subnet). In this example, PE3 sends the reconstructe | ||||
d IGMPv2 | ||||
Membership Report for (*,G1) only to R1. Furthermore, ev | ||||
en though PE2 | ||||
receives the EVPN BGP route, it does not send it to any o | ||||
f its ports | ||||
for that subnet; viz, ports associated with H6 and H7. | ||||
</t> | ||||
<t> | ||||
When PE1 receives the second IGMPv2 Membership Report fro | ||||
m H2 for the same | ||||
multicast group (*,G1), it only adds that port to its OIF | ||||
list but it | ||||
doesn't send any EVPN BGP route because there is no chang | ||||
e in | ||||
information. However, when it receives the IGMPv3 Members | ||||
hip Report from H3 for | ||||
the same (*,G1). Besides adding the corresponding port to | ||||
its OIF | ||||
list, it re-advertises the previously sent EVPN SMET rout | ||||
e with the | ||||
v3 and exclude flag set. | ||||
</t> | ||||
<t> | ||||
Finally when PE1 receives the IGMPv3 Membership Report fr | ||||
om H4 for (S2,G2), it | ||||
advertises a new EVPN SMET route corresponding to it. | ||||
</t> | ||||
</section> | ||||
<section title="PE with a mix of attached hosts and multicast source"> | ||||
<t> | ||||
The main difference in this case is that when PE2 rece | ||||
ives the IGMPv3 | ||||
Membership Report from H7 for (S2,G2), it does adverti | ||||
se it in BGP to support | ||||
source move even though PE2 knows that S2 is attached | ||||
to its local | ||||
AC. PE2 adds the port associated with H7 to its OIF li | ||||
st for (S2,G2). | ||||
The processing for IGMPv2 received from H6 is the same | ||||
as the IGMPv2 | ||||
Membership Report described in previous section. | ||||
</t> | ||||
</section> | ||||
<section title="PE with a mix of attached hosts, a multicast source and a | ||||
router"> | ||||
<t> | ||||
The main difference in this case relative to the previ | ||||
ous two | ||||
sections is that IGMP v2/v3 Membership Report messages | ||||
received locally need to | ||||
be sent to the port associated with router R1. Further | ||||
more, the Membership Reports | ||||
received via BGP (SMET) need to be passed to the R1 po | ||||
rt but filtered | ||||
for all other ports. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="All-Active Multi-Homing"> | ||||
<t> | ||||
Because the LAG flow hashing algorithm used by the CE is unkno | ||||
wn at | ||||
the PE, in an All-Active redundancy mode it must be assumed th | ||||
at the | ||||
CE can send a given IGMP message to any one of the multi-homed | ||||
PEs, | ||||
either DF or non-DF; i.e., different IGMP Membership Request m | ||||
essages can arrive at | ||||
different PEs in the redundancy group and furthermore their | ||||
corresponding Leave messages can arrive at PEs that are differ | ||||
ent | ||||
from the ones that received the Membership Report. Therefore, | ||||
all PEs | ||||
attached to a given ES must coordinate IGMP Membership Request | ||||
and Leave Group | ||||
(x,G) state, where x may be either '*' or a particular source | ||||
S, for | ||||
each BD on that ES. Each PE has a local copy of that state and | ||||
the EVPN signaling serves to synchronize state across PEs. This allows the DF f | ||||
or that (ES,BD) to correctly | ||||
advertise or withdraw a Selective Multicast Ethernet Tag (SMET | ||||
) route | ||||
for that (x,G) group in that BD when needed. | ||||
All-Active multihoming PEs for a given ES MUST support IGMP | ||||
synchronization procedures described in this section if they n | ||||
eed to | ||||
perform IGMP proxy for hosts connected to that ES. | ||||
</t> | ||||
<section title="Local IGMP/MLD Membership Report Synchronization"> | ||||
<t> | ||||
When a PE, either DF or non-DF, receives on a given | ||||
multihomed ES | ||||
operating in All-Active redundancy mode, an IGMP Me | ||||
mbership Report | ||||
for (x,G), it determines the BD to which the IGMP M | ||||
embership Report | ||||
belongs. If the PE doesn't already have local IGMP | ||||
Membership Request (x,G) state | ||||
for that BD on that ES, it MUST instantiate local I | ||||
GMP Membership Request (x,G) | ||||
state and MUST advertise a BGP IGMP Membership Repo | ||||
rt Synch route for that (ES,BD). | ||||
Local IGMP Membership Request (x,G) state refers t | ||||
o IGMP Membership Request (x,G) state | ||||
that is created as a result of processing an IGMP | ||||
Membership Report | ||||
for (x,G). | ||||
</t> | ||||
<t> | ||||
The IGMP Membership Report Synch route MUST carry the | ||||
ES-Import RT for the ES on | ||||
which the IGMP Membership Report was received. Thus i | ||||
t MUST only be | ||||
imported by the PEs attached to that ES and not any ot | ||||
her PEs. | ||||
</t> | ||||
<t> | ||||
When a PE, either DF or non-DF, receives an IGMP Me | ||||
mbership Report Synch route it | ||||
installs that route and if it doesn't already have | ||||
IGMP Membership Request (x,G) | ||||
state for that (ES,BD), it MUST instantiate that IG | ||||
MP Membership Request (x,G) | ||||
state - i.e., IGMP Membership Request (x,G) state i | ||||
s the union of the local IGMP | ||||
Membership Report (x,G) state and the installed IGM | ||||
P Membership Report Synch route. If the DF | ||||
did not already advertise (originate) a SMET route | ||||
for that (x,G) | ||||
group in that BD, it MUST do so now. | ||||
</t> | ||||
<t> | ||||
When a PE, either DF or non-DF, deletes its local IGM | ||||
P Membership Request (x,G) | ||||
state for that (ES,BD), it MUST withdraw its BGP IGMP | ||||
Membership Report Synch | ||||
route for that (ES,BD). | ||||
</t> | ||||
<t> | ||||
When a PE, either DF or non-DF, receives the withdr | ||||
awal of an IGMP | ||||
Membership Report Synch route from another PE it MU | ||||
ST remove that route. When a | ||||
PE has no local IGMP Membership Request (x,G) state | ||||
and it has no installed IGMP | ||||
Membership Report Synch routes, it MUST remove IGMP | ||||
Membership Request (x,G) state for that (ES,BD). | ||||
If the DF no longer has IGMP Membership Request (x, | ||||
G) state for that BD on | ||||
any ES for which it is DF, it MUST withdraw its SME | ||||
T route for that | ||||
(x,G) group in that BD. | ||||
</t> | ||||
<t> | ||||
In other words, a PE advertises an SMET route for t | ||||
hat (x,G) group in | ||||
that BD when it has IGMP Membership Request (x,G) s | ||||
tate in that BD on at least one | ||||
ES for which it is DF and it withdraws that SMET ro | ||||
ute when it does | ||||
not have IGMP Membership Request (x,G) state in tha | ||||
t BD on any ES for which it is | ||||
DF. | ||||
</t> | ||||
</section> | ||||
<section title="Local IGMP/MLD Leave Group Synchronization"> | ||||
<t> | ||||
When a PE, either DF or non-DF, receives, on a given | ||||
multihomed ES | ||||
operating in All-Active redundancy mode, an IGMP Lea | ||||
ve Group message | ||||
for (x,G) from the attached CE, it determines the BD | ||||
to which the | ||||
IGMPv2 Leave Group belongs. Regardless of whether i | ||||
t has IGMP Membership Request | ||||
(x,G) state for that (ES,BD), it initiates the (x,G) | ||||
leave group | ||||
synchronization procedure, which consists of the fol | ||||
lowing steps: | ||||
<list style="numbers"> | ||||
<t> | ||||
It computes the Maximum Response Tim | ||||
e, which is the duration of | ||||
(x,G) leave group synchronization pr | ||||
ocedure. This is the product of | ||||
two locally configured values, Last | ||||
Member Query Count and Last | ||||
Member Query Interval (described in | ||||
Section 3 of <xref target="RFC2236"/>), plus a | ||||
delta corresponding to the time it t | ||||
akes for a BGP advertisement to | ||||
propagate between the PEs attached t | ||||
o the multihomed ES (delta is a | ||||
consistently configured value on all | ||||
PEs attached to the multihomed | ||||
ES). | ||||
</t> | ||||
<t> | ||||
It starts the Maximum Response T | ||||
ime timer. Note that the receipt | ||||
of subsequent IGMP Leave Group m | ||||
essages or BGP Leave Synch routes for | ||||
(x,G) do not change the value of | ||||
a currently running Maximum Response | ||||
Time timer and are ignored by th | ||||
e PE. | ||||
</t> | ||||
<t> | ||||
It initiates the Last Member Que | ||||
ry procedure described in Section | ||||
3 of <xref target="RFC2236"/>; v | ||||
iz, it sends a number of Group-Specific Query (x,G) | ||||
messages (Last Member Query Coun | ||||
t) at a fixed interval (Last Member | ||||
Query Interval) to the attached | ||||
CE. | ||||
</t> | ||||
<t> | ||||
It advertises an IGMP Leave Sync | ||||
h route for that that (ES,BD). | ||||
This route notifies the other mu | ||||
ltihomed PEs attached to the given | ||||
multihomed ES that it has initia | ||||
ted an (x,G) leave group | ||||
synchronization procedure; i.e., | ||||
it carries the ES-Import RT for the | ||||
ES on which the IGMP Leave Group | ||||
was received. It also contains the | ||||
Maximum Response Time. | ||||
</t> | ||||
<t> | ||||
When the Maximum Response Timer | ||||
expires, the PE that has | ||||
advertised the IGMP Leave Synch | ||||
route withdraws it. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<section title="Remote Leave Group Synchronization"> | ||||
<t> | ||||
When a PE, either DF or non-DF, receives an IG | ||||
MP Leave Synch route it | ||||
installs that route and it starts a timer for | ||||
(x,G) on the specified | ||||
(ES,BD) whose value is set to the Maximum Resp | ||||
onse Time in the | ||||
received IGMP Leave Synch route. Note that th | ||||
e receipt of subsequent | ||||
IGMPv2 Leave Group messages or BGP Leave Synch | ||||
routes for (x,G) do | ||||
not change the value of a currently running Ma | ||||
ximum Response Time | ||||
timer and are ignored by the PE. | ||||
</t> | ||||
</section> | ||||
<section title="Common Leave Group Synchronization"> | ||||
<t> | ||||
If a PE attached to the multihomed ES receives | ||||
an IGMP Membership | ||||
Report for (x,G) before the Maximum Response Ti | ||||
me timer expires, it | ||||
advertises a BGP IGMP Membership Report Synch r | ||||
oute for that (ES,BD). If it | ||||
doesn't already have local IGMP Membership Requ | ||||
est (x,G) state for that (ES,BD), | ||||
it instantiates local IGMP Membership Request ( | ||||
x,G) state. If the DF is not | ||||
currently advertising (originating) a SMET rout | ||||
e for that (x,G) group | ||||
in that BD, it does so now. | ||||
</t> | ||||
<t> | ||||
If a PE attached to the multihomed ES receiv | ||||
es an IGMP Membership Report Synch | ||||
route for (x,G) before the Maximum Response | ||||
Time timer expires, it | ||||
installs that route and if it doesn't alread | ||||
y have IGMP Membership Request (x,G) | ||||
state for that BD on that ES, it instantiate | ||||
s that IGMP Membership Request (x,G) | ||||
state. If the DF has not already advertised | ||||
(originated) a SMET route | ||||
for that (x,G) group in that BD, it does so | ||||
now. | ||||
</t> | ||||
<t> | ||||
When the Maximum Response Timer expires a PE | ||||
that has advertised an | ||||
IGMP Leave Synch route, withdraws it. Any P | ||||
E attached to the | ||||
multihomed ES, that started the Maximum Resp | ||||
onse Time and has no | ||||
local IGMP Membership Request (x,G) state an | ||||
d no installed IGMP Membership Report Synch routes, | ||||
it removes IGMP Membership Request (x,G) sta | ||||
te for that (ES,BD). If the DF no | ||||
longer has IGMP Membership Request (x,G) sta | ||||
te for that BD on any ES for which it | ||||
is DF, it withdraws its SMET route for that | ||||
(x,G) group in that BD. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="Mass Withdraw of Multicast Membership Report Sync rout | ||||
e in case of failure"> | ||||
<t> | ||||
A PE which has received an IGMP Membership Request | ||||
would have synced the IGMP Membership Report | ||||
by the procedure defined in section 6.1. If a PE wi | ||||
th local Membership Report | ||||
state goes down or the PE to CE link goes down, it | ||||
would lead to a | ||||
mass withdraw of multicast routes. Remote PEs (PEs | ||||
where these routes | ||||
were remote IGMP Membership Reports) SHOULD NOT rem | ||||
ove the state immediately; | ||||
instead General Query SHOULD be generated to refres | ||||
h the states. | ||||
There are several ways to detect failure at a | ||||
peer, e.g. using IGP next hop tracking or ES route | ||||
withdraw. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="Single-Active Multi-Homing"> | ||||
<t> | ||||
Note that to facilitate state synchronization after failove | ||||
r, the PEs | ||||
attached to a multihomed ES operating in Single-Active redu | ||||
ndancy mode | ||||
SHOULD also coordinate IGMP Membership Report (x,G) state. | ||||
In this case all IGMP | ||||
Membership Report messages are received by the DF and distr | ||||
ibuted to the non-DF | ||||
PEs using the procedures described above. | ||||
</t> | ||||
</section> | ||||
<section title="Selective Multicast Procedures for IR tunnels"> | ||||
<t> | ||||
If an ingress PE uses ingress replication, then for a | ||||
given (x,G) | ||||
group in a given BD: | ||||
<list style="numbers"> | ||||
<t> | ||||
It sends (x,G) traffic to the set of P | ||||
Es not supporting IGMP or MLD | ||||
Proxy. This set consists of any PE tha | ||||
t has advertised an IMET route for the BD | ||||
without a Multicast Flags extended co | ||||
mmunity or with a Multicast Flags extended | ||||
community in which neither the IGMP Pr | ||||
oxy support nor the MLD Proxy support flags are set. | ||||
</t> | ||||
<t> | ||||
It sends (x,G) traffic to the set of P | ||||
Es supporting IGMP or MLD Proxy | ||||
and having listeners for that (x,G) gr | ||||
oup in that BD. This set consists of any PE that has advertised an IMET route fo | ||||
r the BD | ||||
with a Multicast Flags extended commun | ||||
ity in which the IGMP Proxy support and/or | ||||
the MLD Proxy support flags are set a | ||||
nd that has advertised a SMET route for that (x,G) | ||||
group in that BD. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="BGP Encoding" anchor="bgp-encoding"> | ||||
<t> | ||||
This document defines three new BGP EVPN routes to carry | ||||
IGMP | ||||
Membership Reports. The route types are known as: | ||||
</t> | ||||
<t> + 6 - Selective Multicast Ethernet Tag | ||||
Route </t> | ||||
<t> + 7 - Multicast Membership Report Synch | ||||
Route </t> | ||||
<t> + 8 - Multicast Leave Synch Route </t> | ||||
<t> | ||||
The detailed encoding and procedures for these route t | ||||
ypes are | ||||
described in subsequent sections. | ||||
</t> | ||||
<section title="Selective Multicast Ethernet Tag Route" anchor=" | ||||
SMET"> | ||||
<t> | ||||
A Selective Multicast Ethernet Tag route type sp | ||||
ecific EVPN NLRI | ||||
consists of the following: | ||||
</t> | ||||
<figure > | ||||
<artwork ><![CDATA[ | ||||
+---------------------------------------+ | ||||
| RD (8 octets) | | ||||
+---------------------------------------+ | ||||
| Ethernet Tag ID (4 octets) | | ||||
+---------------------------------------+ | ||||
| Multicast Source Length (1 octet) | | ||||
+---------------------------------------+ | ||||
| Multicast Source Address (variable) | | ||||
+---------------------------------------+ | ||||
| Multicast Group Length (1 octet) | | ||||
+---------------------------------------+ | ||||
| Multicast Group Address (Variable) | | ||||
+---------------------------------------+ | ||||
| Originator Router Length (1 octet) | | ||||
+---------------------------------------+ | ||||
| Originator Router Address (variable) | | ||||
+---------------------------------------+ | ||||
| Flags (1 octet) | | ||||
+---------------------------------------+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
For the purpose of BGP route key processing, all the fields ar | ||||
e | ||||
considered to be part of the prefix in the NLRI except for the | ||||
one- | ||||
octet flag field. The Flags fields are defined as follows: | ||||
</t> | ||||
<figure > | ||||
<artwork ><![CDATA[ | ||||
0 1 2 3 4 5 6 7 | ||||
+--+--+--+--+--+--+--+--+ | ||||
| reserved |IE|v3|v2|v1| | ||||
+--+--+--+--+--+--+--+--+ | ||||
]]></artwork> | ||||
</figure> | </figure> | |||
<section numbered="true" toc="default"> | ||||
<name>PE with Only Attached Hosts for a Given Subnet</name> | ||||
<t>When PE1 receives an IGMPv2 Membership Report from H1, it does not fo | ||||
rward | ||||
this Membership Report to any of its other ports (for this subnet) becaus | ||||
e all | ||||
these local ports are associated with the hosts. | ||||
<t> | <!-- [rfced] Does PE1 send an EVPN Multicast Group and set the v2 flag | |||
<list style="symbols"> | (Option A), or does the EVPN Multicast Group correspond to the | |||
<t> | Membership Report and set the v2 flag (Option B)? | |||
The least significant bit, bit 7 indicates sup | ||||
port for IGMP version | ||||
1. Since IGMP V1 is being deprecated sender MU | ||||
ST set it as 0 for IGMP and | ||||
receiver MUST ignore it. | ||||
</t> | ||||
<t> | ||||
The second least significant bit, bit 6 indica | ||||
tes support for IGMP | ||||
version 2. | ||||
</t> | ||||
<t> | ||||
The third least significant bit, bit 5 indicat | ||||
es support for IGMP | ||||
version 3. | ||||
</t> | ||||
<t> | ||||
The fourth least significant bit, bit 4 indica | ||||
tes whether the (S,G) | ||||
information carried within the route-type is o | ||||
f an Include Group type | ||||
(bit value 0) or an Exclude Group type (bit va | ||||
lue 1). The Exclude | ||||
Group type bit MUST be ignored if bit 5 is not | ||||
set. | ||||
</t> | ||||
<t> | ||||
This EVPN route type is used to carry tenant I | ||||
GMP multicast group | ||||
information. The flag field assists in distrib | ||||
uting IGMP Membership | ||||
Report of a given host for a given multicast r | ||||
oute. The version | ||||
bits help associate IGMP version of receivers | ||||
participating within | ||||
the EVPN domain. | ||||
</t> | ||||
<t> | ||||
The include/exclude (IE) bit helps in creating | ||||
filters for a given | ||||
multicast route. | ||||
</t> | ||||
<t> | ||||
If route is used for IPv6 (MLD) then bit 7 ind | ||||
icates support for MLD | ||||
version 1. The second least significant bit, b | ||||
it 6 indicates support | ||||
for MLD version 2. Since there is no MLD versi | ||||
on 3, in case of IPv6 | ||||
route third least significant bit MUST be 0. I | ||||
n case of IPv6 routes, | ||||
the fourth least significant bit MUST be ignor | ||||
ed if bit 6 is not | ||||
set. | ||||
</t> | ||||
<t> Reserved bits MUST be set to 0 by sender. And | ||||
receiver MUST ignore the Reserved bits. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<section title="Constructing the Selective Multicast Ethernet Tag ro | ||||
ute"> | ||||
<t> | ||||
This section describes the procedures used to constr | ||||
uct the Selective | ||||
Multicast Ethernet Tag (SMET) route. | ||||
</t> | ||||
<t> | ||||
The Route Distinguisher (RD) SHOULD be a Type | ||||
1 RD <xref target="RFC4364"/>. The | ||||
value field comprises an IP address of the PE | ||||
(typically, the | ||||
loopback address) followed by a number unique | ||||
to the PE. | ||||
</t> | ||||
<t> | ||||
The Ethernet Tag ID MUST be set as procedure defined | ||||
in <xref target="RFC7432"/>. | ||||
</t> | ||||
<t> | ||||
The Multicast Source Length MUST be set to le | ||||
ngth of the multicast | ||||
Source address in bits. If the Multicast Sour | ||||
ce Address field | ||||
contains an IPv4 address, then the value of t | ||||
he Multicast Source | ||||
Length field is 32. If the Multicast Source A | ||||
ddress field contains an | ||||
IPv6 address, then the value of the Multicast | ||||
Source Length field is | ||||
128. In case of a (*,G) Membership Report, th | ||||
e Multicast Source Length is set to | ||||
0. | ||||
</t> | ||||
<t> | ||||
The Multicast Source Address is the source IP | ||||
address from the IGMP | ||||
Membership Report. In case of a (*,G), this f | ||||
ield is not used. | ||||
</t> | ||||
<t> | ||||
The Multicast Group Length MUST be set to length | ||||
of multicast group | ||||
address in bits. If the Multicast Group Address | ||||
field contains an | ||||
IPv4 address, then the value of the Multicast Gr | ||||
oup Length field is | ||||
32. If the Multicast Group Address field contai | ||||
ns an IPv6 address, | ||||
then the value of the Multicast Group Length fie | ||||
ld is 128. | ||||
</t> | ||||
<t> | ||||
The Multicast Group Address is the Group address | ||||
from the IGMP or MLD | ||||
Membership Report. | ||||
</t> | ||||
<t> | ||||
The Originator Router Length is the length of th | ||||
e Originator Router | ||||
Address in bits. | ||||
</t> | ||||
<t> | ||||
The Originator Router Address is the IP addre | ||||
ss of router originating this route. | ||||
The SMET Originator Router IP address MUST ma | ||||
tch that of the IMET (or S-PMSI AD) | ||||
route originated for the same EVI by the same | ||||
downstream PE. | ||||
</t> | ||||
<t> | ||||
The Flags field indicates the version of IGMP | ||||
protocol from which the | ||||
Membership Report was received. It also indic | ||||
ates whether the | ||||
multicast group had the INCLUDE or EXCLUDE bi | ||||
t set. | ||||
</t> | ||||
<t> Reserved bits MUST be set to 0. They can be defined | ||||
in future by other document. | ||||
</t> | ||||
<t> | Original: | |||
IGMP is used to receive group membership info | PE1 sends an EVPN Multicast Group route corresponding to this | |||
rmation from hosts | Membership Report for (*,G1) and setting the v2 flag. | |||
by TORs. Upon receiving the hosts expression | ||||
of interest of a | ||||
particular group membership, this information | ||||
is then forwarded using | ||||
SMET route. The NLRI also keeps track | ||||
of receiver's IGMP protocol version and any s | ||||
ource filtering for a | ||||
given group membership. All EVPN SMET routes | ||||
are announced with per- | ||||
EVI Route Target extended communities. | ||||
</t> | ||||
</section> | Perhaps: | |||
<section title="Reconstructing IGMP / MLD Membership Reports fro | A) PE1 sends an EVPN Multicast Group route corresponding to this | |||
m Selective Multicast Route"> | Membership Report for (*,G1) and sets the v2 flag. | |||
<t> Th | ||||
is section describes the procedures used to reconstruct IGMP / MLD Membership Re | ||||
ports from SMET route. | ||||
</t> | ||||
<t> | ||||
<list style="symbols"> | ||||
<t> If multicast group length is 32, rou | ||||
te would be translated to IGMP membership request. If multicast group length is | ||||
128, route would be translated to MLD membership request. | ||||
</t> | ||||
<t> Multicast group address field would be translated | or | |||
to IGMP / MLD group address. | ||||
</t> | ||||
<t> If Multicast source length is set to zero it would | ||||
be translated to any source (*). | ||||
If multicast source length is non zero, Multica | ||||
st source address field would be translated to IGMP / MLD source address. | ||||
</t> | ||||
<t> If flag bit 7 is set, it translates Membership repo | ||||
rt to be IGMP V1 or MLD V1. | ||||
</t> | ||||
<t> If flag bit 6 is set, it translates Membership repo | ||||
rt to be IGMP V2 or MLD V2. | ||||
</t> | ||||
<t> Flag bit 5 is only valid for IGMP Membership report | ||||
and if it is set, it translates to IGMP V3 report. | ||||
</t> | ||||
<t> If IE flag is set, it translate to IGMP / MLD Exc | ||||
lude mode membership report. If IE flag is not set (zero), it translates to Incl | ||||
ude mode membership report. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | B) PE1 sends an EVPN Multicast Group route that corresponds to this | |||
Membership Report for (*,G1) and sets the v2 flag. | ||||
--> | ||||
PE1 sends an | ||||
EVPN Multicast Group route corresponding to this Membership Report for (* | ||||
,G1) and | ||||
setting the v2 flag. This EVPN route is received by PE2 and PE3, which ar | ||||
e | ||||
the members of the same BD (i.e., same EVI in case of a VLAN-based | ||||
service or EVI and VLAN in case of a VLAN-aware bundle service). PE3 | ||||
reconstructs the IGMPv2 Membership Report from this EVPN BGP route and on | ||||
ly | ||||
sends it to the port(s) with multicast routers attached to it (for | ||||
that subnet). In this example, PE3 sends the reconstructed IGMPv2 | ||||
Membership Report for (*,G1) only to R1. Furthermore, even though PE2 | ||||
receives the EVPN BGP route, it does not send it to any of its ports | ||||
for that subnet (viz., ports associated with H6 and H7). | ||||
</t> | ||||
<t>When PE1 receives the second IGMPv2 Membership Report from H2 for the | ||||
same | ||||
multicast group (*,G1), it only adds that port to its OIF list, but it | ||||
doesn't send any EVPN BGP routes because there is no change in | ||||
information. However, when it receives the IGMPv3 Membership Report from | ||||
H3 for | ||||
the same (*,G1), besides adding the corresponding port to its OIF | ||||
list, it re-advertises the previously sent EVPN SMET route with the | ||||
v3 and exclude flag set. | ||||
</t> | ||||
<t>Finally, when PE1 receives the IGMPv3 Membership Report from H4 for ( | ||||
S2,G2), it | ||||
advertises a new EVPN SMET route corresponding to it. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>PE with a Mix of Attached Hosts and a Multicast Source</name> | ||||
<t>The main difference in this case is that when PE2 receives the IGMPv3 | ||||
Membership Report from H7 for (S2,G2), it advertises it in BGP to support | ||||
the | ||||
source moving, even though PE2 knows that S2 is attached to its local | ||||
AC. PE2 adds the port associated with H7 to its OIF list for (S2,G2). | ||||
The processing for IGMPv2 received from H6 is the same as the IGMPv2 | ||||
Membership Report described in the previous section. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>PE with a Mix of Attached Hosts, a Multicast Source, and a Router< | ||||
/name> | ||||
<t>The main difference in this case relative to the previous two | ||||
sections is that IGMPv2/v3 Membership Report messages received locally ne | ||||
ed to | ||||
be sent to the port associated with router R1. Furthermore, the Membershi | ||||
p Reports | ||||
received via BGP (SMET) need to be passed to the R1 port but filtered | ||||
for all other ports. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>All-Active Multihoming</name> | ||||
<t>Because the Link Aggregation Group (LAG) flow hashing algorithm used by | ||||
the CE is unknown at | ||||
the PE, in an All-Active redundancy mode, it must be assumed that the | ||||
CE can send a given IGMP message to any one of the multihomed PEs, | ||||
either Designated Forwarder (DF) or non-DF, i.e., different IGMP Membershi | ||||
p | ||||
Request messages can arrive at | ||||
different PEs in the redundancy group. Furthermore, their | ||||
corresponding Leave messages can arrive at PEs that are different | ||||
from the ones that received the Membership Report. Therefore, all PEs | ||||
attached to a given Ethernet Segment (ES) must coordinate the IGMP Members | ||||
hip Request and Leave Group | ||||
(x,G) state, where x may be either "*" or a particular source S for | ||||
each BD on that ES. Each PE has a local copy of that state, and the EVPN s | ||||
ignaling | ||||
serves to synchronize that state across PEs. This allows the DF for that ( | ||||
ES,BD) to correctly | ||||
advertise or withdraw a SMET route | ||||
for that (x,G) group in that BD when needed. | ||||
All-Active multihoming PEs for a given ES <bcp14>MUST</bcp14> support IGMP | ||||
synchronization procedures described in this section if they need to | ||||
perform IGMP proxy for hosts connected to that ES. | ||||
</t> | ||||
<section numbered="true" toc="default" anchor="local-igmp-mld"> | ||||
<name>Local IGMP/MLD Membership Report Synchronization</name> | ||||
<t>When a PE, either DF or non-DF, receives an IGMP Membership Report | ||||
for (x,G) on a given multihomed ES operating in All-Active redundancy mod | ||||
e, it determines the BD to which the IGMP Membership Report | ||||
belongs. If the PE doesn't already have the local IGMP Membership Request | ||||
(x,G) state | ||||
for that BD on that ES, it <bcp14>MUST</bcp14> instantiate that local IGM | ||||
P Membership | ||||
Request (x,G) | ||||
state and <bcp14>MUST</bcp14> advertise a BGP IGMP Membership Report Sync | ||||
h route | ||||
for that (ES,BD). | ||||
The local IGMP Membership Request (x,G) state refers to the IGMP Membersh | ||||
ip Request (x,G) state | ||||
that is created as a result of processing an IGMP Membership Report | ||||
for (x,G). | ||||
</t> | ||||
<t>The IGMP Membership Report Synch route <bcp14>MUST</bcp14> carry the | ||||
ES-Import | ||||
Route Target (RT) for the ES on | ||||
which the IGMP Membership Report was received. Thus, it <bcp14>MUST</bcp | ||||
14> only be | ||||
imported by the PEs attached to that ES and not any other PEs. | ||||
</t> | ||||
<t>When a PE, either DF or non-DF, receives an IGMP Membership Report Sy | ||||
nch route, it | ||||
installs that route, and if it doesn't already have the IGMP Membership R | ||||
equest (x,G) | ||||
state for that (ES,BD), it <bcp14>MUST</bcp14> instantiate that IGMP Memb | ||||
ership | ||||
Request (x,G) | ||||
state, i.e., the IGMP Membership Request (x,G) state is the union of the | ||||
local IGMP | ||||
Membership Report (x,G) state and the installed IGMP Membership Report Sy | ||||
nch route. | ||||
If the DF did not already advertise (originate) a SMET route for that (x, | ||||
G) | ||||
group in that BD, it <bcp14>MUST</bcp14> do so now. | ||||
</t> | ||||
<t>When a PE, either DF or non-DF, deletes its local IGMP Membership Req | ||||
uest (x,G) | ||||
state for that (ES,BD), it <bcp14>MUST</bcp14> withdraw its BGP IGMP Memb | ||||
ership | ||||
Report Synch route for that (ES,BD). | ||||
</t> | ||||
<t>When a PE, either DF or non-DF, receives the withdrawal of an IGMP | ||||
Membership Report Synch route from another PE, it <bcp14>MUST</bcp14> rem | ||||
ove that route. | ||||
When a PE has no local IGMP Membership Request (x,G) state and it has no | ||||
installed IGMP | ||||
Membership Report Synch routes, it <bcp14>MUST</bcp14> remove that IGMP M | ||||
embership Request | ||||
(x,G) state for that (ES,BD). | ||||
If the DF no longer has the IGMP Membership Request (x,G) state for that | ||||
BD on | ||||
any ES for which it is the DF, it <bcp14>MUST</bcp14> withdraw its SMET r | ||||
oute for that | ||||
(x,G) group in that BD. | ||||
</t> | ||||
<t>In other words, a PE advertises a SMET route for that (x,G) group in | ||||
that BD when it has the IGMP Membership Request (x,G) state on at least o | ||||
ne | ||||
ES for which it is the DF, and it withdraws that SMET route when it does | ||||
not have an IGMP Membership Request (x,G) state in that BD on any ES for | ||||
which it is | ||||
the DF. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Local IGMP/MLD Leave Group Synchronization</name> | ||||
<t>When a PE, either DF or non-DF, receives an IGMP Leave Group message | ||||
for (x,G) from the attached CE on a given multihomed ES | ||||
operating in All-Active redundancy mode, it determines the BD to which th | ||||
e | ||||
IGMPv2 Leave Group belongs. Regardless of whether it has the IGMP Member | ||||
ship Request | ||||
(x,G) state for that (ES,BD), it initiates the (x,G) leave group | ||||
synchronization procedure, which consists of the following steps: | ||||
</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>It computes the Maximum Response Time, which is the duration of the | ||||
(x,G) leave group synchronization procedure. This is the product of | ||||
two locally configured values, Last Member Query Count and Last | ||||
Member Query Interval (described in <xref target="RFC2236" section="3" | ||||
sectionFormat="of"/>), plus a | ||||
delta corresponding to the time it takes for a BGP advertisement to | ||||
propagate between the PEs attached to the multihomed ES (delta is a | ||||
consistently configured value on all PEs attached to the multihomed | ||||
ES). | ||||
</li> | ||||
<li>It starts the Maximum Response Time timer. Note that the receipt | ||||
of subsequent IGMP Leave Group messages or BGP Leave Synch routes for | ||||
(x,G) do not change the value of a currently running Maximum Response | ||||
Time timer and are ignored by the PE. | ||||
</li> | ||||
<li>It initiates the Last Member Query procedure described in | ||||
<xref target="RFC2236" section="3" sectionFormat="of"/>; viz., it | ||||
sends a number of Group-Specific Query (x,G) | ||||
messages (Last Member Query Count) at a fixed interval (Last Member | ||||
Query Interval) to the attached CE.</li> | ||||
<li>It advertises an IGMP Leave Synch route for that (ES,BD). | ||||
This route notifies the other multihomed PEs attached to the given | ||||
multihomed ES that it has initiated an (x,G) leave group | ||||
synchronization procedure, i.e., it carries the ES-Import RT for the | ||||
ES on which the IGMP Leave Group was received. It also contains the | ||||
Maximum Response Time. | ||||
</li> | ||||
<li>When the Maximum Response Time timer expires, the PE that has | ||||
advertised the IGMP Leave Synch route withdraws it. | ||||
</li> | ||||
</ol> | ||||
<section numbered="true" toc="default"> | ||||
<name>Remote Leave Group Synchronization</name> | ||||
<t>When a PE, either DF or non-DF, receives an IGMP Leave Synch route, | ||||
it | ||||
installs that route and it starts a timer for (x,G) on the specified | ||||
(ES,BD), whose value is set to the Maximum Response Time in the | ||||
received IGMP Leave Synch route. Note that the receipt of subsequent | ||||
IGMPv2 Leave Group messages or BGP Leave Synch routes for (x,G) do | ||||
not change the value of a currently running Maximum Response Time | ||||
timer and are ignored by the PE. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Common Leave Group Synchronization</name> | ||||
<t>If a PE attached to the multihomed ES receives an IGMP Membership | ||||
Report for (x,G) before the Maximum Response Time timer expires, it | ||||
advertises a BGP IGMP Membership Report Synch route for that (ES,BD). I | ||||
f it | ||||
doesn't already have the local IGMP Membership Request (x,G) state for | ||||
that (ES,BD), | ||||
it instantiates that local IGMP Membership Request (x,G) state. If the | ||||
DF is not | ||||
currently advertising (originating) a SMET route for that (x,G) group | ||||
in that BD, it does so now. | ||||
</t> | ||||
<t>If a PE attached to the multihomed ES receives an IGMP Membership R | ||||
eport Synch | ||||
route for (x,G) before the Maximum Response Time timer expires, it | ||||
installs that route, and if it doesn't already have the IGMP Membership | ||||
Request (x,G) | ||||
state for that BD on that ES, it instantiates that IGMP Membership Requ | ||||
est (x,G) | ||||
state. If the DF has not already advertised (originated) a SMET route | ||||
for that (x,G) group in that BD, it does so now. | ||||
</t> | ||||
<t>When the Maximum Response Time timer expires, a PE that has adverti | ||||
sed an | ||||
IGMP Leave Synch route withdraws it. Any PE attached to the | ||||
multihomed ES, which started the Maximum Response Time and has no | ||||
local IGMP Membership Request (x,G) state and no installed IGMP Members | ||||
hip Report | ||||
Synch routes, | ||||
removes the IGMP Membership Request (x,G) state for that (ES,BD). If t | ||||
he DF no | ||||
longer has the IGMP Membership Request (x,G) state for that BD on any E | ||||
S for which it | ||||
is the DF, it withdraws its SMET route for that (x,G) group in that BD. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Mass Withdraw of the Multicast Membership Report Synch Route in Ca | ||||
se of Failure</name> | ||||
<t>A PE that has received an IGMP Membership Request would have synced t | ||||
he IGMP | ||||
Membership Report by the procedure defined in <xref target="local-igmp-ml | ||||
d" | ||||
format="default"/>. If a PE with the local Membership Report | ||||
state goes down or the PE to CE link goes down, it would lead to a | ||||
mass withdraw of multicast routes. Remote PEs (PEs where these routes | ||||
were remote IGMP Membership Reports) <bcp14>SHOULD NOT</bcp14> remove the | ||||
state immediately; | ||||
instead, General Query <bcp14>SHOULD</bcp14> be generated to refresh the | ||||
states. | ||||
There are several ways to detect failure at a | ||||
peer, e.g., using IGP next-hop tracking or ES route withdraw. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Single-Active Multihoming</name> | ||||
<t>Note that to facilitate state synchronization after failover, the PEs | ||||
attached to a multihomed ES operating in Single-Active redundancy mode | ||||
<bcp14>SHOULD</bcp14> also coordinate the IGMP Membership Report (x,G) sta | ||||
te. | ||||
In this case, all IGMP | ||||
Membership Report messages are received by the DF and distributed to the n | ||||
on-DF | ||||
PEs using the procedures described above. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Selective Multicast Procedures for IR Tunnels</name> | ||||
<t>If an ingress PE uses ingress replication, then for a given (x,G) | ||||
group in a given BD: | ||||
</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>It sends (x,G) traffic to the set of PEs not supporting IGMP or MLD | ||||
Proxies. This set consists of any PE that has advertised an Inclusive Mul | ||||
ticast | ||||
Ethernet Tag (IMET) route for the BD | ||||
without a Multicast Flags extended community or with a Multicast Flags e | ||||
xtended | ||||
community in which neither the IGMP Proxy support nor the MLD Proxy supp | ||||
ort flags are set. | ||||
</li> | ||||
<li>It sends (x,G) traffic to the set of PEs supporting IGMP or MLD Prox | ||||
ies | ||||
and has listeners for that (x,G) group in that BD. This set consists of a | ||||
ny PE | ||||
that has advertised an IMET route for the BD | ||||
with a Multicast Flags extended community in which the IGMP Proxy support | ||||
and/or | ||||
the MLD Proxy support flags are set and that has advertised a SMET route | ||||
for that (x,G) | ||||
group in that BD. | ||||
</li> | ||||
</ol> | ||||
</section> | ||||
<section anchor="bgp-encoding" numbered="true" toc="default"> | ||||
<name>BGP Encoding</name> | ||||
<t>This document defines three new BGP EVPN routes to carry IGMP | ||||
Membership Reports. The route types are known as: | ||||
</t> | ||||
<section title="Default Selective Multicast Route"> | <dl newline="false" spacing="normal"> | |||
<t> | <dt>6 -</dt> | |||
If there is multicast router connected behind | <dd>Selective Multicast Ethernet Tag Route </dd> | |||
the EVPN domain, the PE | <dt>7 -</dt> | |||
MAY originate a default SMET (*,*) to get all | <dd>Multicast Membership Report Synch Route </dd> | |||
multicast traffic in | <dt>8 -</dt> | |||
domain. | <dd>Multicast Leave Synch Route </dd> | |||
</t> | </dl> | |||
<figure > | <t>The detailed encoding and procedures for these route types are | |||
<artwork ><![CDATA[ | described in subsequent sections. | |||
</t> | ||||
<section anchor="SMET" numbered="true" toc="default"> | ||||
<name>Selective Multicast Ethernet Tag Route</name> | ||||
<t>A SMET route-type-specific EVPN NLRI | ||||
consists of the following: | ||||
</t> | ||||
<artwork name="" type="" align="center" alt=""><![CDATA[ | ||||
+---------------------------------------+ | ||||
| RD (8 octets) | | ||||
+---------------------------------------+ | ||||
| Ethernet Tag ID (4 octets) | | ||||
+---------------------------------------+ | ||||
| Multicast Source Length (1 octet) | | ||||
+---------------------------------------+ | ||||
| Multicast Source Address (variable) | | ||||
+---------------------------------------+ | ||||
| Multicast Group Length (1 octet) | | ||||
+---------------------------------------+ | ||||
| Multicast Group Address (Variable) | | ||||
+---------------------------------------+ | ||||
| Originator Router Length (1 octet) | | ||||
+---------------------------------------+ | ||||
| Originator Router Address (variable) | | ||||
+---------------------------------------+ | ||||
| Flags (1 octet) | | ||||
+---------------------------------------+ | ||||
]]></artwork> | ||||
<t>For the purpose of BGP route key processing, all the fields are | ||||
considered to be part of the prefix in the NLRI, except for the 1-octet | ||||
Flags field. The Flags fields are defined as follows: | ||||
</t> | ||||
<artwork name="" type="" align="center" alt=""><![CDATA[ | ||||
0 1 2 3 4 5 6 7 | ||||
+--+--+--+--+--+--+--+--+ | ||||
| reserved |IE|v3|v2|v1| | ||||
+--+--+--+--+--+--+--+--+ | ||||
]]></artwork> | ||||
<ul spacing="normal"> | ||||
<li>The least significant bit (bit 7) indicates support for IGMP versi | ||||
on | ||||
1. Since IGMPv1 is being deprecated, the sender <bcp14>MUST</bcp14> set | ||||
it to 0 for IGMP and the receiver <bcp14>MUST</bcp14> ignore it. | ||||
</li> | ||||
<li>The second least significant bit (bit 6) indicates support for IGM | ||||
P | ||||
version 2. | ||||
</li> | ||||
<li>The third least significant bit (bit 5) indicates support for IGMP | ||||
version 3. | ||||
</li> | ||||
<li>The fourth least significant bit (bit 4) indicates whether the (S, | ||||
G) | ||||
information carried within the route-type is of an Include Group type | ||||
(bit value 0) or an Exclude Group type (bit value 1). The Exclude | ||||
Group type bit <bcp14>MUST</bcp14> be ignored if bit 5 is not set. | ||||
</li> | ||||
<li>This EVPN route type is used to carry tenant IGMP multicast group | ||||
information. The Flags field assists in distributing the IGMP Membershi | ||||
p | ||||
Report of a given host for a given multicast route. The version | ||||
bits help associate the IGMP version of receivers participating within | ||||
the EVPN domain. | ||||
</li> | ||||
<li>The IE bit helps in creating filters for a given | ||||
multicast route. | ||||
</li> | ||||
<li>If the route is used for IPv6 (MLD), then bit 7 indicates support | ||||
for MLD | ||||
version 1. The second least significant bit (bit 6) indicates support | ||||
for MLD version 2. Since there is no MLD version 3, in case of IPv6 | ||||
routes, the third least significant bit <bcp14>MUST</bcp14> be 0. In ca | ||||
se of IPv6 routes, | ||||
the fourth least significant bit <bcp14>MUST</bcp14> be ignored if bit | ||||
6 is not | ||||
set. | ||||
</li> | ||||
<li> Reserved bits <bcp14>MUST</bcp14> be set to 0 by the sender, and | ||||
the receiver | ||||
<bcp14>MUST</bcp14> ignore the Reserved bits. | ||||
</li> | ||||
</ul> | ||||
<section numbered="true" toc="default"> | ||||
<name>Constructing the Selective Multicast Ethernet Tag Route</name> | ||||
<t>This section describes the procedures used to construct the SMET ro | ||||
ute. | ||||
</t> | ||||
<t>The Route Distinguisher (RD) <bcp14>SHOULD</bcp14> be a Type 1 RD < | ||||
xref | ||||
target="RFC4364" format="default"/>. The | ||||
value field comprises an IP address of the PE (typically, the | ||||
loopback address), followed by a number unique to the PE. | ||||
</t> | ||||
<t>The Ethernet Tag ID <bcp14>MUST</bcp14> be set, as per the procedur | ||||
e | ||||
defined in <xref target="RFC7432" format="default"/>. | ||||
</t> | ||||
<t>The Multicast Source Length <bcp14>MUST</bcp14> be set to the lengt | ||||
h of the Multicast | ||||
Source Address in bits. If the Multicast Source Address field | ||||
contains an IPv4 address, then the value of the Multicast Source | ||||
Length field is 32. If the Multicast Source Address field contains an | ||||
IPv6 address, then the value of the Multicast Source Length field is | ||||
128. In case of a (*,G) Membership Report, the Multicast Source Length | ||||
is set to | ||||
0. | ||||
</t> | ||||
<t>The Multicast Source Address is the source IP address from the IGMP | ||||
Membership Report. | ||||
In case of a (*,G) Membership Report, this field is not used. | ||||
</t> | ||||
<t>The Multicast Group Length <bcp14>MUST</bcp14> be set to the length | ||||
of the Multicast Group | ||||
Address in bits. If the Multicast Group Address field contains an | ||||
IPv4 address, then the value of the Multicast Group Length field is | ||||
32. If the Multicast Group Address field contains an IPv6 address, | ||||
then the value of the Multicast Group Length field is 128. | ||||
</t> | ||||
<t>The Multicast Group Address is the group address from the IGMP or M | ||||
LD | ||||
Membership Report. | ||||
</t> | ||||
<t>The Originator Router Length is the length of the Originator Router | ||||
Address in bits. | ||||
</t> | ||||
<t>The Originator Router Address is the IP address of the router origi | ||||
nating this route. | ||||
The SMET Originator Router IP address <bcp14>MUST</bcp14> match that of | ||||
the IMET (or | ||||
S-PMSI Authentic Data (AD)) | ||||
route originated for the same EVI by the same downstream PE. | ||||
</t> | ||||
<t>The Flags field indicates the version of IGMP protocol from which t | ||||
he | ||||
Membership Report was received. It also indicates whether the | ||||
multicast group had the INCLUDE or EXCLUDE bit set. | ||||
</t> | ||||
<t> Reserved bits <bcp14>MUST</bcp14> be set to 0. They can be defined | ||||
by other documents in the future. </t> | ||||
+--------------+ | <!--[rfced] Does "ToRs" stand for "Top-of-the-Rack (ToR) switches"? If | |||
| | | not, please let us know how to expand this term. | |||
| | | ||||
| | +----+ | ||||
| | | |---- H1(*,G1)v2 | ||||
| IP/MPLS | | PE1|---- H2(S2,G2)v3 | ||||
| Network | | |---- S2 | ||||
| | | | | ||||
| | +----+ | ||||
| | | ||||
+----+ | | | ||||
+----+ | | | | | ||||
| | S1 ---| PE2| | | | ||||
|PIM |----R1 ---| | | | | ||||
|ASM | +----+ | | | ||||
| | | | | ||||
+----+ +--------------+ | ||||
Figure 2: Multicast Router behind EVPN domain | Original: | |||
IGMP is used to receive group membership information from hosts by | ||||
ToRs. | ||||
]]></artwork> | Perhaps: | |||
</figure> | IGMP is used to receive group membership information from hosts by | |||
Top-of-the-Rack (ToR) switches. | ||||
--> | ||||
<t> | <t>IGMP is used to receive group membership information from hosts | |||
Consider the EVPN network of Figure-2, where there is an EVPN | by ToRs. Upon receiving the host's expression of interest in a | |||
particular group membership, this information is then forwarded using t | ||||
he | ||||
SMET route. The NLRI also keeps track | ||||
of the receiver's IGMP protocol version and any source filtering for a | ||||
given group membership. All EVPN SMET routes are announced per EVI | ||||
Route Target extended communities (EVI-RT ECs). | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Reconstructing IGMP/MLD Membership Reports from the Selective Mu | ||||
lticast Route</name> | ||||
<t> This section describes the procedures used to reconstruct IGMP/ML | ||||
D Membership | ||||
Reports from the SMET route. | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li> If the Multicast Group Length is 32, the route would be | ||||
translated to the IGMP membership request. If the Multicast Group | ||||
Length is 128, the route would be translated to an MLD | ||||
membership request. </li> | ||||
<li>The Multicast Group Address field would be translated to | ||||
the IGMP/MLD group address.</li> | ||||
<li> If the Multicast Source Length is set to 0, it would be transla | ||||
ted to any source | ||||
(*). | ||||
If the Multicast Source Length is non-zero, the Multicast Source Add | ||||
ress field would be | ||||
translated to the IGMP/MLD source address.</li> | ||||
<li> If flag bit 7 is set, it translates the Membership report to be | ||||
IGMPv1 or | ||||
MLDv1.</li> | ||||
<li> If flag bit 6 is set, it translates the Membership report to be | ||||
IGMPv2 or MLDv2.</li> | ||||
<li> Flag bit 5 is only valid for the IGMP Membership report; if it i | ||||
s set, it | ||||
translates to the IGMPv3 report.</li> | ||||
<li> If the IE flag is set, it translates to the IGMP/MLD Exclude | ||||
mode membership report. If the IE flag is not set (0), it | ||||
translates to the Include mode membership report. </li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Default Selective Multicast Route</name> | ||||
<t>If there is a multicast router connected behind the EVPN domain, th | ||||
e PE | ||||
<bcp14>MAY</bcp14> originate a default SMET (*,*) to get all multicast | ||||
traffic in | ||||
the domain.</t> | ||||
<figure anchor="EVPN-domain"> | ||||
<name>Multicast Router behind the EVPN Domain</name> | ||||
<artwork name="" type="" align="center" alt=""><![CDATA[ | ||||
+--------------+ | ||||
| | | ||||
| | | ||||
| | +----+ | ||||
| | | |---- H1(*,G1)v2 | ||||
| IP/MPLS | | PE1|---- H2(S2,G2)v3 | ||||
| Network | | |---- S2 | ||||
| | | | | ||||
| | +----+ | ||||
| | | ||||
+----+ | | | ||||
+----+ | | | | | ||||
| | S1 ---| PE2| | | | ||||
|PIM |----R1 ---| | | | | ||||
|ASM | +----+ | | | ||||
| | | | | ||||
+----+ +--------------+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t>Consider the EVPN network in <xref target="EVPN-domain"/>, where th | ||||
ere is an EVPN | ||||
instance configured across the PEs. Let's consider that PE2 is connect ed to | instance configured across the PEs. Let's consider that PE2 is connect ed to | |||
multicast router R1 and there is a network running PIM ASM behind R1. | multicast router R1 and there is a network running PIM ASM behind R1. | |||
If there are receivers behind the PIM ASM network the PIM Join would | If there are receivers behind the PIM ASM network, the PIM Join would | |||
be forwarded to the PIM RP (Rendezvous Point). If receivers behind | be forwarded to the PIM Rendezvous Point (RP). If receivers behind the | |||
PIM ASM network are interested in a multicast flow originated by | PIM ASM network are interested in a multicast flow originated by | |||
multicast source S2 (behind PE1), it is necessary for PE2 to receive | multicast source S2 (behind PE1), it is necessary for PE2 to receive | |||
multicast traffic. In this case PE2 MUST originate a (*,*) SMET route | multicast traffic. In this case, PE2 <bcp14>MUST</bcp14> originate a ( *,*) SMET route | |||
to receive all of the multicast traffic in the EVPN domain. To generat e | to receive all of the multicast traffic in the EVPN domain. To generat e | |||
Wildcards (*,*) routes, the procedure from <xref target="RFC6625"/> MU | wildcard (*,*) routes, the procedure from <xref target="RFC6625" forma | |||
ST be used. | t="default"/> | |||
</t> | <bcp14>MUST</bcp14> be used.</t> | |||
</section> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
</section> | <name>Multicast Membership Report Synch Route</name> | |||
<t>This EVPN route type is used to coordinate the IGMP Membership Report | ||||
<section title="Multicast Membership Report Synch Route"> | (x,G) | |||
state for a given BD between the PEs attached to a given ES operating in | ||||
<t> | All-Active (or Single-Active) redundancy mode, and it consists of the | |||
This EVPN route type is used to coordinate IG | following:</t> | |||
MP Membership Report (x,G) state for | <artwork name="" type="" align="center" alt=""><![CDATA[+----------------------- | |||
a given BD between the PEs attached to a give | ---------------------------+ | |||
n ES operating in All- | | RD (8 octets) | | |||
Active (or Single-Active) redundancy mode and | +--------------------------------------------------+ | |||
it consists of | | Ethernet Segment Identifier (10 octets) | | |||
following: | +--------------------------------------------------+ | |||
</t> | | Ethernet Tag ID (4 octets) | | |||
+--------------------------------------------------+ | ||||
<figure > | | Multicast Source Length (1 octet) | | |||
<artwork ><![CDATA[ | +--------------------------------------------------+ | |||
| Multicast Source Address (variable) | | ||||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| RD (8 octets) | | | Multicast Group Length (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Ethernet Segment Identifier (10 octets) | | | Multicast Group Address (Variable) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Ethernet Tag ID (4 octets) | | | Originator Router Length (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Source Length (1 octet) | | | Originator Router Address (variable) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Source Address (variable) | | | Flags (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Group Length (1 octet) | | ]]></artwork> | |||
+--------------------------------------------------+ | <t>For the purpose of BGP route key processing, all the fields are | |||
| Multicast Group Address (Variable) | | considered to be part of the prefix in the NLRI, except for the 1-octet | |||
+--------------------------------------------------+ | Flags field, whose fields are defined as follows:</t> | |||
| Originator Router Length (1 octet) | | <artwork name="" type="" align="center" alt=""><![CDATA[ | |||
+--------------------------------------------------+ | 0 1 2 3 4 5 6 7 | |||
| Originator Router Address (variable) | | +--+--+--+--+--+--+--+--+ | |||
+--------------------------------------------------+ | | reserved |IE|v3|v2|v1| | |||
| Flags (1 octet) | | +--+--+--+--+--+--+--+--+ | |||
+--------------------------------------------------+ | ]]></artwork> | |||
<ul spacing="normal"> | ||||
]]></artwork> | <li> The least significant bit (bit 7) indicates support for IGMP vers | |||
</figure> | ion 1. </li> | |||
<li> The second least significant bit (bit 6) indicates support for IG | ||||
<t> | MP version 2. </li> | |||
For the purpose of BGP route key processing, a | <li> The third least significant bit (bit 5) indicates support for IGM | |||
ll the fields are | P version 3. </li> | |||
considered to be part of the prefix in the NLR | <li> The fourth least significant bit (bit 4) indicates whether the (S | |||
I except for the one- | , G) information | |||
octet Flags field, whose fields are defined as | carried within the route-type is of an Include Group type (bit value 0) | |||
follows: | or an Exclude Group | |||
</t> | type (bit value 1). The Exclude Group type bit <bcp14>MUST</bcp14> be i | |||
<figure > | gnored if bit 5 is | |||
<artwork ><![CDATA[ | not set. </li> | |||
<li> Reserved bits <bcp14>MUST</bcp14> be set to 0.</li> | ||||
0 1 2 3 4 5 6 7 | </ul> | |||
+--+--+--+--+--+--+--+--+ | <t>The Flags field assists in distributing the IGMP Membership Report of | |||
| reserved |IE|v3|v2|v1| | a | |||
+--+--+--+--+--+--+--+--+ | given host for a given multicast route. The version bits help | |||
associate the IGMP version of receivers participating within the EVPN | ||||
]]></artwork> | domain. The include/exclude bit helps in creating filters for a | |||
</figure> | given multicast route.</t> | |||
<t>If the route is being prepared for IPv6 (MLD), then bit 7 indicates | ||||
<t> | support for MLD version 1. The second least significant bit (bit 6) | |||
<list style="symbols"> | indicates support for MLD version 2. Since there is no MLD version 3, | |||
<t> The least significant bit, bit 7 indicates support | in case of the IPv6 route, the third least significant bit <bcp14>MUST</b | |||
for IGMP version 1. </t> | cp14> | |||
<t> The second least significant bit, bit 6 indica | be 0. In case of the IPv6 route, the fourth least significant bit <bcp14> | |||
tes support for IGMP version 2. </t> | MUST</bcp14> | |||
<t> The third least significant bit, bit 5 indicat | be ignored if bit 6 is not set.</t> | |||
es support for IGMP version 3. </t> | <section numbered="true" toc="default"> | |||
<t> The fourth least significant bit, bit 4 indica | <name>Constructing the Multicast Membership Report Synch Route</name> | |||
tes whether the (S, G) information | <t>This section describes the procedures used to construct the IGMP Me | |||
carried within the route-type is of Includ | mbership Report | |||
e Group type (bit value 0) or an Exclude Group type | Synch route. Support for these route types is optional. If a PE does | |||
(bit value 1). The Exclude Group type bit | not support this route, then it <bcp14>MUST NOT</bcp14> indicate that i | |||
MUST be ignored if bit 5 is | t supports | |||
not set. </t> | "IGMP proxy" in the Multicast Flags extended community for the EVIs | |||
<t> Reserved bits MUST be set to 0. | corresponding to its multihomed ESs.</t> | |||
</t> | <t>An IGMP Membership Report Synch route <bcp14>MUST</bcp14> carry exa | |||
</list> | ctly one | |||
ES-Import Route | ||||
</t> | Target extended community, i.e., the one that corresponds to the ES on | |||
which the IGMP Membership Report was received. It <bcp14>MUST</bcp14> | ||||
<t> | also carry | |||
The Flags field assists in distributing IGMP Membership Re | exactly one EVI-RT EC, i.e., the one that corresponds to the EVI on | |||
port of a | which the IGMP Membership Report | |||
given host for a given multicast route. The version bits h | was received. See <xref target="evi-rt" format="default"/> for details | |||
elp | on how to | |||
associate IGMP version of receivers participating within t | encode and construct the EVI-RT EC.</t> | |||
he EVPN | <t>The RD <bcp14>SHOULD</bcp14> be Type 1 <xref | |||
domain. The include/exclude bit helps in creating filters | target="RFC4364" format="default"/>. The | |||
for a | value field comprises an IP address of the PE (typically, the | |||
given multicast route. | loopback address), followed by a number unique to the PE.</t> | |||
</t> | <t>The Ethernet Segment Identifier (ESI) <bcp14>MUST</bcp14> be set to | |||
the 10-octet | ||||
<t> | value defined for the ES.</t> | |||
If route is being prepared for IPv6 (MLD) then bit 7 | <t>The Ethernet Tag ID <bcp14>MUST</bcp14> be set, as per the procedur | |||
indicates | e defined in | |||
support for MLD version 1. The second least signific | <xref target="RFC7432" format="default"/>.</t> | |||
ant bit, bit 6 | <t>The Multicast Source Length <bcp14>MUST</bcp14> be set to the | |||
indicates support for MLD version 2. Since there is | length of the Multicast Source | |||
no MLD version 3, | Address in bits. If the Multicast Source field contains an IPv4 | |||
in case of IPv6 route third least significant bit MU | address, then the value of the Multicast Source Length field is 32. | |||
ST be 0. In case | If the Multicast Source field contains an IPv6 address, then the | |||
of IPv6 route, the fourth least significant bit MUST | value of the Multicast Source Length field is 128. In case of a (*,G) | |||
be ignored if | Membership Report, the Multicast Source Length is set to 0.</t> | |||
bit 6 is not set. | <t>The Multicast Source is the Source IP address of the IGMP Membershi | |||
</t> | p | |||
Report. In case of a (*,G) Membership Report, this field does not exis | ||||
<section title="Constructing the Multicast Membership Report S | t.</t> | |||
ynch Route"> | <t>The Multicast Group Length <bcp14>MUST</bcp14> be set to the length | |||
<t> | of the | |||
This section describes the procedures used | Multicast Group | |||
to construct the IGMP Membership Report | Address in bits. If the Multicast Group field contains an IPv4 | |||
Synch route. Support for these route types | address, then the value of the Multicast Group Length field is 32. | |||
is optional. If a PE does | If the Multicast Group field contains an IPv6 address, then the value | |||
not support this route, then it MUST NOT in | of the Multicast Group Length field is 128.</t> | |||
dicate that it supports | <t>The Multicast Group is the group address of the IGMP Membership | |||
'IGMP proxy' in the Multicast Flag extended | Report.</t> | |||
community for the EVIs | <t>The Originator Router Length is the length of the Originator Router | |||
corresponding to its multi-homed Ethernet S | Address in bits.</t> | |||
egments (ESs). | <t>The Originator Router Address is the IP address of the router origi | |||
</t> | nating the prefix.</t> | |||
<t>The Flags field indicates the version of IGMP protocol from which t | ||||
<t> | he | |||
An IGMP Membership Report Synch route MUST | Membership Report was received. It also indicates whether the | |||
carry exactly one ES-Import Route | multicast group had the INCLUDE or EXCLUDE bit set.</t> | |||
Target extended community, the one that cor | <t> Reserved bits <bcp14>MUST</bcp14> be set to 0.</t> | |||
responds to the ES on | </section> | |||
which the IGMP Membership Report was receiv | <section numbered="true" toc="default"> | |||
ed. It MUST also carry exactly one | <name>Reconstructing IGMP/MLD Membership Reports from a Multicast Memb | |||
EVI-RT EC, the one that corresponds to the | ership | |||
EVI on which the IGMP Membership Report | Report Synch Route</name> | |||
was received. See <xref target="evi-rt"/> | <t> This section describes the procedures used to reconstruct IGMP/ML | |||
for details on how to encode and | D | |||
construct the EVI-RT EC. | Membership Reports from the Multicast Membership Report Synch route.</t | |||
</t> | > | |||
<ul spacing="normal"> | ||||
<t> | <li> If the Multicast Group Length is 32, the route would be transla | |||
The Route Distinguisher (RD) SHOULD be a Ty | ted | |||
pe 1 RD <xref target="RFC4364"/>. The | to the IGMP membership request. If the Multicast Group Length is 128, | |||
value field comprises an IP address of the | the route would be translated to an MLD membership request. </li> | |||
PE (typically, the | <li> The Multicast Group Address field would be translated to the | |||
loopback address) followed by a number uniq | IGMP/MLD group address.</li> | |||
ue to the PE. | <li> If the Multicast Source Length is set to 0, it would be transla | |||
</t> | ted to | |||
any source (*). If the Multicast Source Length is non-zero, the Multi | ||||
<t> | cast Source | |||
The Ethernet Segment Identifier (ESI) MUST | Address field would be translated to the IGMP/MLD source address.</li | |||
be set to the 10-octet | > | |||
value defined for the ES. | <li> If flag bit 7 is set, it translates the Membership report to be | |||
</t> | IGMPv1 | |||
or MLDv1.</li> | ||||
<t> | <li> If flag bit 6 is set, it translates the Membership report to be | |||
The Ethernet Tag ID MUST be set as per procedu | IGMPv2 | |||
re defined in <xref target="RFC7432"/>. | or MLDv2.</li> | |||
</t> | <li> Flag bit 5 is only valid for the IGMP Membership report; if it | |||
is set, | ||||
<t> | it translates to the IGMPv3 report.</li> | |||
The Multicast Source length MUST be set to length o | <li> If the IE flag is set, it translates to the IGMP/MLD Exclude mo | |||
f Multicast Source | de membership | |||
address in bits. If the Multicast Source field cont | report. If the IE flag is not set (0), it translates to the Include m | |||
ains an IPv4 | ode | |||
address, then the value of the Multicast Source Len | membership report. </li> | |||
gth field is 32. | </ul> | |||
If the Multicast Source field contains an IPv6 addr | </section> | |||
ess, then the | </section> | |||
value of the Multicast Source Length field is 128. | <section numbered="true" toc="default"> | |||
In case of a (*,G) | <name>Multicast Leave Synch Route</name> | |||
Membership Report, the Multicast Source Length is s | <t>This EVPN route type is used to coordinate the IGMP Leave Group (x,G) | |||
et to 0. | state for a given BD between the PEs attached to a given ES operating | |||
in an All-Active (or Single-Active) redundancy mode, and it consists of t | ||||
</t> | he | |||
following:</t> | ||||
<t> | <artwork name="" type="" align="center" alt=""><![CDATA[ | |||
The Multicast Source is the Source IP address | +--------------------------------------------------+ | |||
of the IGMP Membership | | RD (8 octets) | | |||
Report. In case of a (*,G) Membership Report, | +--------------------------------------------------+ | |||
this field does not exist. | | Ethernet Segment Identifier (10 octets) | | |||
</t> | +--------------------------------------------------+ | |||
| Ethernet Tag ID (4 octets) | | ||||
<t> | +--------------------------------------------------+ | |||
The Multicast Group length MUST be set to l | | Multicast Source Length (1 octet) | | |||
ength of multicast group | +--------------------------------------------------+ | |||
address in bits. If the Multicast Group fie | | Multicast Source Address (variable) | | |||
ld contains an IPv4 | +--------------------------------------------------+ | |||
address, then the value of the Multicast Gr | | Multicast Group Length (1 octet) | | |||
oup Length field is 32. | +--------------------------------------------------+ | |||
If the Multicast Group field contains an IP | | Multicast Group Address (Variable) | | |||
v6 address, then the value | +--------------------------------------------------+ | |||
of the Multicast Group Length field is 128. | | Originator Router Length (1 octet) | | |||
</t> | +--------------------------------------------------+ | |||
| Originator Router Address (variable) | | ||||
<t> | +--------------------------------------------------+ | |||
The Multicast Group is the Group address | | Reserved (4 octets) | | |||
of the IGMP Membership | +--------------------------------------------------+ | |||
Report. | | Maximum Response Time (1 octet) | | |||
</t> | +--------------------------------------------------+ | |||
| Flags (1 octet) | | ||||
<t> | +--------------------------------------------------+ | |||
The Originator Router Length is the le | ]]></artwork> | |||
ngth of the Originator Router | <t>For the purpose of BGP route key processing, all the fields are | |||
address in bits. | considered to be part of the prefix in the NLRI, except for the Reserved, | |||
</t> | Maximum Response Time, and 1-octet Flags fields, which are defined as fol | |||
lows:</t> | ||||
<t> | <artwork name="" type="" align="center" alt=""><![CDATA[ | |||
The Originator Router Address is the IP add | 0 1 2 3 4 5 6 7 | |||
ress of Router Originating the prefix. | +--+--+--+--+--+--+--+--+ | |||
</t> | | reserved |IE|v3|v2|v1| | |||
+--+--+--+--+--+--+--+--+ | ||||
<t> | ]]></artwork> | |||
The Flags field indicates the version of IG | <ul spacing="normal"> | |||
MP protocol from which the | <li> The least significant bit (bit 7) indicates support for IGMP ver | |||
Membership Report was received. It also ind | sion 1. </li> | |||
icates whether the | <li> The second least significant bit (bit 6) indicates support for I | |||
multicast group had INCLUDE or EXCLUDE bit | GMP version 2. </li> | |||
set. | <li> The third least significant bit (bit 5) indicates support for IG | |||
</t> | MP version 3. </li> | |||
<t> Reserved bits MUST be set to | <li> The fourth least significant bit (bit 4) indicates whether the ( | |||
0. | S, G) information | |||
</t> | carried within the route-type is of an Include Group type (bit value 0) | |||
or an Exclude Group | ||||
</section> | type (bit value 1). The Exclude Group type bit <bcp14>MUST</bcp14> be | |||
<section title="Reconstructing I | ignored if bit 5 | |||
GMP / MLD Membership Reports from Multicast Membership Report Sync Route"> | is not set. </li> | |||
<t> Th | <li> Reserved bits <bcp14>MUST</bcp14> be set to 0. They can be define | |||
is section describes the procedures used to reconstruct IGMP / MLD Membership Re | d by | |||
ports from Multicast Membership Report Sync route. | other documents in the future. </li> | |||
</t> | </ul> | |||
<t> | <t>The Flags field assists in distributing the IGMP Membership Report of | |||
<list style="symbols"> | a | |||
<t> If multicast group length is 32, rou | given host for a given multicast route. The version bits help | |||
te would be translated to IGMP membership request. If multicast group length is | associate the IGMP version of the receivers participating within the EVPN | |||
128, route would be translated to MLD membership request. | domain. The include/exclude bit helps in creating filters for a | |||
</t> | given multicast route.</t> | |||
<t>If the route is being prepared for IPv6 (MLD), then bit 7 indicates | ||||
<t> Multicast group address field would be translated | support for MLD version 1. The second least significant bit (bit 6) | |||
to IGMP / MLD group address. | indicates support for MLD version 2. Since there is no MLD version 3, | |||
</t> | in case of the IPv6 route, the third least significant bit <bcp14>MUST</b | |||
<t> If Multicast source length is set to zero it would | cp14> be 0. In case | |||
be translated to any source (*). | of the IPv6 route, the fourth least significant bit <bcp14>MUST</bcp14> b | |||
If multicast source length is non zero, Multica | e ignored if | |||
st source address field would be translated to IGMP / MLD source address. | bit 6 is not set.</t> | |||
</t> | <t> Reserved bits in the flag <bcp14>MUST</bcp14> be set to 0. They can | |||
<t> If flag bit 7 is set, it translates Membership repo | be | |||
rt to be IGMP V1 or MLD V1. | defined by other documents in the future. </t> | |||
</t> | <section numbered="true" toc="default"> | |||
<t> If flag bit 6 is set, it translates Membership repo | <name>Constructing the Multicast Leave Synch Route</name> | |||
rt to be IGMP V2 or MLD V2. | <t>This section describes the procedures used to construct the IGMP | |||
</t> | Leave Synch route. Support for these route types is optional. If a PE | |||
<t> Flag bit 5 is only valid for IGMP Membership report | does not support this route, then it <bcp14>MUST NOT</bcp14> indicate t | |||
and if it is set, it translates to IGMP V3 report. | hat it | |||
</t> | supports "IGMP proxy" in the Multicast Flags extended community for the | |||
<t> If IE flag is set, it translate to IGMP / MLD Exc | EVIs corresponding to its multihomed Ethernet Segments.</t> | |||
lude mode membership report. If IE flag is not set (zero), it translates to Incl | <t>An IGMP Leave Synch route <bcp14>MUST</bcp14> carry exactly one ES- | |||
ude mode membership report. | Import Route | |||
</t> | Target extended community, i.e., the one that corresponds to the ES on | |||
</list> | which the IGMP Leave was received. It <bcp14>MUST</bcp14> also carry e | |||
</t> | xactly one | |||
EVI-RT EC, i.e., the one that corresponds to the EVI on which the IGMP | ||||
</section> | Leave was received. See <xref target="evi-rt"/> for details on how to | |||
</section> | form the | |||
EVI-RT EC.</t> | ||||
<section title="Multicast Leave Synch Route"> | <t>The RD <bcp14>SHOULD</bcp14> be Type 1 <xref | |||
<t> | target="RFC4364" format="default"/>. The | |||
This EVPN route type is used to coordinate IGMP | value field comprises an IP address of the PE (typically, the | |||
Leave Group (x,G) | loopback address), followed by a number unique to the PE.</t> | |||
state for a given BD between the PEs attached to | <t>The ESI <bcp14>MUST</bcp14> be set to the 10-octet | |||
a given ES operating | value defined for the ES.</t> | |||
in All-Active (or Single-Active) redundancy mode | <t>The Ethernet Tag ID <bcp14>MUST</bcp14> be set, as per the procedur | |||
and it consists of | e | |||
following: | defined in <xref target="RFC7432" format="default"/>.</t> | |||
</t> | <t>The Multicast Source Length <bcp14>MUST</bcp14> be set to the lengt | |||
h | ||||
<figure > | of the Multicast Source | |||
<artwork ><![CDATA[ | Address in bits. If the Multicast Source field contains an IPv4 | |||
address, then the value of the Multicast Source Length field is 32. | ||||
+--------------------------------------------------+ | If the Multicast Source field contains an IPv6 address, then the | |||
| RD (8 octets) | | value of the Multicast Source Length field is 128. In case of a (*,G) | |||
+--------------------------------------------------+ | Membership Report, the Multicast Source Length is set to 0.</t> | |||
| Ethernet Segment Identifier (10 octets) | | <t>The Multicast Source is the Source IP address of the IGMP Membershi | |||
+--------------------------------------------------+ | p | |||
| Ethernet Tag ID (4 octets) | | Report. In case of a (*,G) Membership Report, this field does not exis | |||
+--------------------------------------------------+ | t.</t> | |||
| Multicast Source Length (1 octet) | | <t>The Multicast Group Length <bcp14>MUST</bcp14> be set to the length | |||
+--------------------------------------------------+ | of the | |||
| Multicast Source Address (variable) | | Multicast Group | |||
+--------------------------------------------------+ | Address in bits. If the Multicast Group field contains an IPv4 | |||
| Multicast Group Length (1 octet) | | address, then the value of the Multicast Group Length field is 32. | |||
+--------------------------------------------------+ | If the Multicast Group field contains an IPv6 address, then the value | |||
| Multicast Group Address (Variable) | | of the Multicast Group Length field is 128.</t> | |||
+--------------------------------------------------+ | <t>The Multicast Group is the group address of the IGMP Membership Rep | |||
| Originator Router Length (1 octet) | | ort.</t> | |||
+--------------------------------------------------+ | <t>The Originator Router Length is the length of the Originator Router | |||
| Originator Router Address (variable) | | Address | |||
+--------------------------------------------------+ | in bits.</t> | |||
| Reserved (4 octet) | | <t>The Originator Router Address is the IP address of the router | |||
+--------------------------------------------------+ | originating the prefix.</t> | |||
| Maximum Response Time (1 octet) | | <t> The Reserved field is not part of the route key. The originator <b | |||
+--------------------------------------------------+ | cp14>MUST</bcp14> set | |||
| Flags (1 octet) | | the Reserved field to 0; | |||
+--------------------------------------------------+ | the receiver <bcp14>SHOULD</bcp14> ignore it, and if it needs to be pro | |||
pagated, it | ||||
]]></artwork> | <bcp14>MUST</bcp14> propagate it unchanged.</t> | |||
</figure> | <t> The Maximum Response Time is the value to be used while sending a | |||
query, as defined in | ||||
<t> | <xref target="RFC2236" format="default"/>.</t> | |||
For the purpose of BGP route key processing, all the fields | <t>The Flags field indicates the version of IGMP protocol from which t | |||
are | he | |||
considered to be part of the prefix in the NLRI except for t | Membership Report was received. It also indicates whether the | |||
he Reserved, | multicast group had an INCLUDE or EXCLUDE bit set.</t> | |||
Maximum Response Time and the one-octet Flags field, whose f | </section> | |||
ields are | <section numbered="true" toc="default"> | |||
defined as follows: | <name>Reconstructing IGMP/MLD Leave from a Multicast Leave Synch Route | |||
</t> | </name> | |||
<t>This section describes the procedures used to reconstruct IGMP/MLD | ||||
<figure | Leave from | |||
> | the Multicast Leave Synch route.</t> | |||
<artwork ><![CDATA[ | ||||
0 1 2 3 4 5 6 7 | ||||
+--+--+--+--+--+--+--+--+ | ||||
| reserved |IE|v3|v2|v1| | ||||
+--+--+--+--+--+--+--+--+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
<list style="symbols"> | ||||
<t> The least significant bit, bit 7 indicates su | ||||
pport for IGMP version 1. </t> | ||||
<t> The second least significant bit, bit 6 indic | ||||
ates support for IGMP version 2. </t> | ||||
<t> The third least significant bit, bit 5 indica | ||||
tes support for IGMP version 3. </t> | ||||
<t> The fourth least significant bit, bit 4 indic | ||||
ates whether the (S, G) information carried | ||||
within the route-type is of Include Group | ||||
type (bit value 0) or an Exclude Group type | ||||
(bit value 1). The Exclude Group type bit | ||||
MUST be ignored if bit 5 is not set. </t> | ||||
<t> Reserved bits MUST be set to 0. They can b | ||||
e defined in future by other document. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
The Flags field assists in distributing IGMP Membershi | ||||
p Report of a | ||||
given host for a given multicast route. The version bi | ||||
ts help | ||||
associate IGMP version of receivers participating with | ||||
in the EVPN | ||||
domain. The include/exclude bit helps in creating fil | ||||
ters for a | ||||
given multicast route. | ||||
</t> | ||||
<t> | ||||
If route is being prepared for IPv6 (MLD) then bit | ||||
7 indicates | ||||
support for MLD version 1. The second least signif | ||||
icant bit, bit 6 | ||||
indicates support for MLD version 2. Since there i | ||||
s no MLD version 3, | ||||
in case of IPv6 route third least significant bit | ||||
MUST be 0. In case | ||||
of IPv6 route, the fourth least significant bit M | ||||
UST be ignored if | ||||
bit 6 is not set. | ||||
</t> | ||||
<t> Reserved bits in flag MUST be set to 0. They can be d | ||||
efined in future by other document. | ||||
</t> | ||||
<section title="Constructing the Multicast Leave Synch Ro | ||||
ute"> | ||||
<t> | ||||
This section describes the procedures use | ||||
d to construct the IGMP | ||||
Leave Synch route. Support for these ro | ||||
ute types is optional. If a PE | ||||
does not support this route, then it MUS | ||||
T NOT indicate that it | ||||
supports 'IGMP proxy' in Multicast Flag | ||||
extended community for the | ||||
EVIs corresponding to its multi-homed Et | ||||
hernet Segments. | ||||
</t> | ||||
<t> | ||||
An IGMP Leave Synch route MUST carry exact | ||||
ly one ES-Import Route | ||||
Target extended community, the one that co | ||||
rresponds to the ES on | ||||
which the IGMP Leave was received. It MUS | ||||
T also carry exactly one | ||||
EVI-RT EC, the one that corresponds to the | ||||
EVI on which the IGMP | ||||
Leave was received. See Section 9.5 for d | ||||
etails on how to form the | ||||
EVI-RT EC. | ||||
</t> | ||||
<t> | ||||
The Route Distinguisher (RD) SHOULD be | ||||
a Type 1 RD <xref target="RFC4364"/>. The | ||||
value field comprises an IP address of | ||||
the PE (typically, the | ||||
loopback address) followed by a number | ||||
unique to the PE. | ||||
</t> | ||||
<t> | ||||
The Ethernet Segment Identifier (ESI) MUST | ||||
be set to the 10-octet | ||||
value defined for the ES. | ||||
</t> | ||||
<t> | ||||
The Ethernet Tag ID MUST be set as per pr | ||||
ocedure defined in <xref target="RFC7432"/>. | ||||
</t> | ||||
<t> | ||||
The Multicast Source length MUST be set t | ||||
o length of multicast source | ||||
address in bits. If the Multicast Source | ||||
field contains an IPv4 | ||||
address, then the value of the Multicast | ||||
Source Length field is 32. | ||||
If the Multicast Source field contains an | ||||
IPv6 address, then the | ||||
value of the Multicast Source Length fiel | ||||
d is 128. In case of a (*,G) | ||||
Membership Report, the Multicast Source | ||||
Length is set to 0. | ||||
</t> | ||||
<t> | ||||
The Multicast Source is the Source IP | ||||
address of the IGMP Membership | ||||
Report. In case of a (*,G) Membership | ||||
Report, this field does not exist. | ||||
</t> | ||||
<t> | ||||
The Multicast Group length MUST be set | ||||
to length of multicast group | ||||
address in bits. If the Multicast Grou | ||||
p field contains an IPv4 | ||||
address, then the value of the Multica | ||||
st Group Length field is 32. | ||||
If the Multicast Group field contains | ||||
an IPv6 address, then the value | ||||
of the Multicast Group Length field is | ||||
128. | ||||
</t> | ||||
<t> | ||||
The Multicast Group is the Group addre | ||||
ss of the IGMP Membership Report. | ||||
</t> | ||||
<t> | ||||
The Originator Router Length is the length | ||||
of the Originator Router | ||||
address in bits. | ||||
</t> | ||||
<t> | ||||
The Originator Router Address is the I | ||||
P address of Router Originating the prefix. | ||||
</t> | ||||
<t> Reserved field is not part of the route key. | ||||
The originator MUST set the reserved field to Zero , | ||||
the receiver SHOULD ignore it and if it n | ||||
eeds to be propagated, it MUST propagate it unchanged | ||||
</t> | ||||
<t> Maximum Response Time is value to be used whi | ||||
le sending query as defined in <xref target="RFC2236"/> | ||||
</t> | ||||
<t> | ||||
The Flags field indicates the version | ||||
of IGMP protocol from which the | ||||
Membership Report was received. It als | ||||
o indicates whether the | ||||
multicast group had INCLUDE or EXCLUDE | ||||
bit set. | ||||
</t> | ||||
</section> | ||||
<section title="Reconstructing IGMP / MLD Leave from Multicast Leave Sync Route" | ||||
> | ||||
<t> Th | ||||
is section describes the procedures used to reconstruct IGMP / MLD Leave from M | ||||
ulticast Leave Sync route. | ||||
</t> | ||||
<t> | ||||
<list style="symbols"> | ||||
<t> If multicast group length is 32, rou | ||||
te would be translated to IGMP Leave. If multicast group length is 128, route wo | ||||
uld be translated to MLD Leave. | ||||
</t> | ||||
<t> Multicast group address field would be translated | ||||
to IGMP / MLD group address. | ||||
</t> | ||||
<t> If Multicast source length is set to zero it would | ||||
be translated to any source (*). | ||||
If multicast source length is non zero, Multica | ||||
st source address field would be translated to IGMP / MLD source address. | ||||
</t> | ||||
<t> If flag bit 7 is set, it translates Membership repo | ||||
rt to be IGMP V1 or MLD V1. | ||||
</t> | ||||
<t> If flag bit 6 is set, it translates Membership repo | ||||
rt to be IGMP V2 or MLD V2. | ||||
</t> | ||||
<t> Flag bit 5 is only valid for IGMP Membership report | ||||
and if it is set, it translates to IGMP V3 report. | ||||
</t> | ||||
<t> If IE flag is set, it translate to IGMP / MLD Exc | ||||
lude mode Leave. If IE flag is not set (zero), it translates to Include mode Lea | ||||
ve. | ||||
</t> | ||||
<t> | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section title="Multicast Flags Extended Community"> | ||||
<t> | ||||
The 'Multicast Flags' extended community is a | ||||
new EVPN extended | ||||
community. EVPN extended communities are tra | ||||
nsitive extended | ||||
communities with a Type field value of 6. IA | ||||
NA will assign a Sub-Type | ||||
from the 'EVPN Extended Community Sub-Types' | ||||
registry. | ||||
</t> | ||||
<t> | ||||
A PE that supports IGMP and/or MLD Proxy on a gi | ||||
ven BD | ||||
MUST attach this extended community to the IMET | ||||
route it advertises | ||||
advertises for that BD and it MUST set the IGMP | ||||
and/or MLD Proxy | ||||
Support flags to 1. Note that an <xref target="R | ||||
FC7432"/> compliant PE will not advertise this | ||||
extended community so its absence indicates that | ||||
the advertising PE | ||||
does not support either IGMP or MLD Proxy. | ||||
</t> | ||||
<t> | ||||
The advertisement of this extended community enab | ||||
les more efficient | ||||
multicast tunnel setup from the source PE special | ||||
ly for ingress | ||||
replication - i.e., if an egress PE supports IGMP | ||||
proxy but doesn't | ||||
have any interest in a given (x,G), it advertises | ||||
its IGMP proxy | ||||
capability using this extended community but it d | ||||
oes not advertise | ||||
any SMET route for that (x,G). When the source PE | ||||
(ingress PE) | ||||
receives such advertisements from the egress PE, | ||||
it does not | ||||
replicate the multicast traffic to that egress PE | ||||
; however, it does | ||||
replicate the multicast traffic to the egress PEs | ||||
that don't | ||||
advertise such capability even if they don't have | ||||
any interests in | ||||
that (x,G). | ||||
</t> | ||||
<t> | ||||
A Multicast Flags extended community is encode | ||||
d as an 8-octet value, | ||||
as follows: | ||||
</t> | ||||
<figure > | ||||
<artwork ><![CDATA[ | ||||
0 1 2 3 | ||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type=0x06 |Sub-Type=0x09 | Flags (2 Octets) |M|I| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Reserved=0 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
The low-order (lease significant) two bits are defined as th | ||||
e "IGMP | ||||
Proxy Support and MLD Proxy Support" bit. The absence of thi | ||||
s | ||||
extended community also means that the PE does not support I | ||||
GMP | ||||
proxy. where: | ||||
</t> | ||||
<t> | ||||
<list style="symbols"> | ||||
<t> Type is 0x06 as registered with IANA for EVPN Exten | ||||
ded Communities. </t> | ||||
<t> Sub-Type : 0x09</t> | ||||
<t> | ||||
Flags are two Octets value. | ||||
<list style="symbols"> | ||||
<t> Bit 15 (shown as I) def | ||||
ines IGMP Proxy Support. Value of 1 for | ||||
bit 15 means that P | ||||
E supports IGMP Proxy. Value of 0 for bit 15 | ||||
means that PE does | ||||
not supports IGMP Proxy.</t> | ||||
<t>Bit 14 (shown as M) defi | ||||
nes MLD Proxy Support. Value of 1 for | ||||
bit 14 means that | ||||
PE supports MLD Proxy. Value of 0 for bit 14 | ||||
means that PE does | ||||
not support MLD proxy. </t> | ||||
<t>Bit 0 to 13 are reserved | ||||
for future. Sender MUST set it 0 and receiver MUST ignore it. </t> | ||||
</list> | ||||
</t> | ||||
<t> Reserved bits are set to 0. Sender MUST set i | ||||
t to 0 and receiver MUST ignore it.</t> | ||||
</list> | ||||
</t> | ||||
<t> If a router does not support this specification, it MUST NOT ad | ||||
d Multicast Flags Extended Community | ||||
in BGP route. A router receiving BGP update, | ||||
if M and I both flag are zero (0), the router MUST treat th | ||||
is Update as malformed. Receiver of such | ||||
update MUST ignore the extended community. | ||||
</t> | ||||
</section> | ||||
<section title="EVI-RT Extended Community" anchor="evi-rt"> | ||||
<t> | ||||
In EVPN, every EVI is associated with one | ||||
or more Route Targets | ||||
(RTs). These Route Targets serve two fun | ||||
ctions: | ||||
<list style="numbers"> | ||||
<t> | ||||
Distribution control: RTs | ||||
control the distribution of the | ||||
routes. If a route carri | ||||
es the RT associated with a particular | ||||
EVI, it will be distribu | ||||
ted to all the PEs on which that EVI | ||||
exists. | ||||
</t> | ||||
<t> | ||||
EVI identification: O | ||||
nce a route has been received by a | ||||
particular PE, the RT | ||||
is used to identify the EVI to which it | ||||
applies. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
An IGMP Membership Report Synch or IGMP L | ||||
eave Synch route is associated with a | ||||
particular combination of ES and EVI. T | ||||
hese routes need to be | ||||
distributed only to PEs that are attache | ||||
d to the associated ES. | ||||
Therefore these routes carry the ES-Imp | ||||
ort RT for that ES. | ||||
</t> | ||||
<t> | ||||
Since an IGMP Membership Report Synch or I | ||||
GMP Leave Synch route does not need | ||||
to be distributed to all the PEs on which | ||||
the associated EVI | ||||
exists, these routes cannot carry the RT a | ||||
ssociated with that | ||||
EVI. Therefore, when such a route arrives | ||||
at a particular PE, the | ||||
route's RTs cannot be used to identify the | ||||
EVI to which the route | ||||
applies. Some other means of associating | ||||
the route with an EVI | ||||
must be used. | ||||
</t> | ||||
<t> | ||||
This document specifies four new Extended Comm | ||||
unities (EC) that | ||||
can be used to identify the EVI with which a | ||||
route is associated, | ||||
but which do not have any effect on the distr | ||||
ibution of the | ||||
route. These new ECs are known as the "Type | ||||
0 EVI-RT EC", the | ||||
"Type 1 EVI-RT EC", the "Type 2 EVI-RT EC", a | ||||
nd the "Type 3 EVI-RT EC". | ||||
<list style="numbers"> | ||||
<t> A Type 0 EVI-RT EC is an EVPN EC | ||||
(type 6) of sub-type 0xA.</t> | ||||
<t> A Type 1 EVI-RT EC is an EVPN EC | ||||
(type 6) of sub-type 0xB.</t> | ||||
<t> A Type 2 EVI-RT EC is an EVPN EC | ||||
(type 6) of sub-type 0xC.</t> | ||||
<t> A Type 3 EVI-RT EC is an EVPN EC | ||||
(type 6) of sub-type 0xD</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Each IGMP Membership Report Synch or IGMP Leave S | ||||
ynch route MUST carry exactly | ||||
one EVI-RT EC. The EVI-RT EC carried by a partic | ||||
ular route is | ||||
constructed as follows. Each such route is the r | ||||
esult of having | ||||
received an IGMP Membership Report or an IGMP Lea | ||||
ve message from a particular | ||||
BD. The route is said to be associated with that | ||||
BD. | ||||
For each BD, there is a corresponding RT that is | ||||
used to ensure | ||||
that routes "about" that BD are distributed to al | ||||
l PEs attached | ||||
to that BD. So suppose a given IGMP Membership R | ||||
eport Synch or Leave Synch | ||||
route is associated with a given BD, say BD1, and | ||||
suppose that | ||||
the corresponding RT for BD1 is RT1. Then: | ||||
<list style="symbols"> | ||||
<t> 0. If RT1 is a Transitive Two-Octet A | ||||
S-specific EC, then the EVI- | ||||
RT EC carried by the route is a T | ||||
ype 0 EVI-RT EC. The value | ||||
field of the Type 0 EVI-RT EC is | ||||
identical to the value field of | ||||
RT1. </t> | ||||
<t> 1. If RT1 is a Transitive IPv4-Addres | <!--[rfced] In Section 9.3.2, we notice mixed tense in the list of | |||
s-specific EC, then the EVI- | procedures, i.e., "would be translated" vs. "it translates | |||
RT EC carried by the route is a T | to". May we update this list to reflect the present tense? Only | |||
ype 1 EVI-RT EC. The value | the first three bullets would be updated as follows: | |||
field of the Type 1 EVI-RT EC is | ||||
identical to the value field of | ||||
RT1. </t> | ||||
<t> 2. If RT1 is a Transitive Four-Octet- | ||||
specific EC, then the EVI-RT | ||||
EC carried by the route is a Type | ||||
2 EVI-RT EC. The value field | ||||
of the Type 2 EVI-RT EC is identi | ||||
cal to the value field of RT1.</t> | ||||
<t> 3. If RT1 is a Transitive IPv6-Addres | Original: | |||
s-specific EC, then the EVI-RT | * If the Multicast Group Length is 32, the route would be translated | |||
EC carried by the route is a Type | to IGMP Leave. If the Multicast Group Length is 128, the route | |||
3 EVI-RT EC. The value | would be translated to MLD Leave. | |||
field of the Type 3 EVI-RT EC is | ||||
identical to the value field of | ||||
RT1. | ||||
</t> | ||||
</list> | * The Multicast Group Address field would be translated to an IGMP/ | |||
</t> | MLD group address. | |||
<t> | * If the Multicast Source Length is set to 0, it would be translated | |||
An IGMP Membership Report Synch or Leave S | to any source (*). If the Multicast Source Length is non zero, | |||
ynch route MUST carry exactly one EVI-RT EC. | the Multicast Source Address field would be translated to the | |||
</t> | IGMP/MLD source address. | |||
<t> | Perhaps: | |||
Suppose a PE receives a particular IGMP Me | * If the Multicast Group Length is 32, the route is translated | |||
mbership Report Synch or IGMP Leave | to IGMP Leave. If the Multicast Group Length is 128, the route | |||
Synch route, say R1, and suppose that R1 | is translated to MLD Leave. | |||
carries an ES-Import RT | ||||
that is one of the PE's Import RTs. If | ||||
R1 has no EVI-RT EC, or | ||||
has more than one EVI-RT EC, the PE MUST | ||||
apply the "treat-as-withdraw" | ||||
procedure of <xref target="RFC7606"/>. | ||||
</t> | ||||
<t> | * The Multicast Group Address field is translated to an IGMP/ | |||
Note that an EVI-RT EC is not a Route Targ | MLD group address. | |||
et Extended Community, | ||||
is not visible to the RT Constrain mechani | ||||
sm <xref target="RFC4684"/>, and is | ||||
not intended to influence the propagation | ||||
of routes by BGP. | ||||
</t> | ||||
<figure > | * If the Multicast Source Length is set to 0, it is translated | |||
<artwork ><![CDATA[ | to any source (*). If the Multicast Source Length is non-zero, | |||
1 2 3 | the Multicast Source Address field is translated to the | |||
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 | IGMP/MLD source address. | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | --> | |||
| Type=0x06 | Sub-Type=n | RT associated with EVI | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| RT associated with the EVI (cont.) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
]]></artwork> | <ul spacing="normal"> | |||
</figure> | <li> If the Multicast Group Length is 32, the route would be transla | |||
ted | ||||
to IGMP Leave. If the | ||||
Multicast Group Length is 128, the route would be translated to MLD L | ||||
eave. </li> | ||||
<li> The Multicast Group Address field would be translated to an IGM | ||||
P/MLD group | ||||
address.</li> | ||||
<li> If the Multicast Source Length is set to 0, it would be transla | ||||
ted to | ||||
any source (*). | ||||
If the Multicast Source Length is non-zero, the Multicast Source Add | ||||
ress field would be | ||||
translated to the IGMP/MLD source address.</li> | ||||
<li> If flag bit 7 is set, it translates the Membership report to be | ||||
IGMPv1 or MLDv1.</li> | ||||
<li> If flag bit 6 is set, it translates the Membership report to be | ||||
IGMPv2 or MLDv2.</li> | ||||
<li> Flag bit 5 is only valid for the IGMP Membership report; if it | ||||
is set, it | ||||
translates to the IGMPv3 report.</li> | ||||
<li> If the IE flag is set, it translates to the IGMP/MLD Exclude mo | ||||
de Leave. | ||||
If the IE flag is not set (0), it translates to the Include mode Leav | ||||
e. </li> | ||||
</ul> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Multicast Flags Extended Community</name> | ||||
<t>The Multicast Flags extended community is a new EVPN extended | ||||
community. EVPN extended communities are transitive extended | ||||
communities with a Type Value of 0x06. IANA has assigned 0x09 to Multica | ||||
st Flags Extended Community in the "EVPN Extended Community Sub-Types" subregist | ||||
ry.</t> | ||||
<t>A PE that supports IGMP and/or the MLD Proxy on a given BD | ||||
<bcp14>MUST</bcp14> attach this extended community to the IMET route it | ||||
advertises for that BD, and it <bcp14>MUST</bcp14> set the IGMP and/or ML | ||||
D Proxy | ||||
Support flags to 1. Note that a PE compliant with <xref target="RFC7432" | ||||
format="default"/> | ||||
will not advertise this | ||||
extended community, so its absence indicates that the advertising PE | ||||
does not support either IGMP or MLD Proxies.</t> | ||||
<t>The advertisement of this extended community enables a more efficient | ||||
multicast tunnel setup from the source PE specially for ingress | ||||
replication, i.e., if an egress PE supports the IGMP proxy but doesn't | ||||
have any interest in a given (x,G), it advertises its IGMP proxy | ||||
capability using this extended community, but it does not advertise | ||||
any SMET route for that (x,G). When the source PE (ingress PE) | ||||
receives such advertisements from the egress PE, it does not | ||||
replicate the multicast traffic to that egress PE; however, it does | ||||
replicate the multicast traffic to the egress PEs that don't | ||||
advertise such capability, even if they don't have any interests in | ||||
that (x,G).</t> | ||||
<t>A Multicast Flags extended community is encoded as an 8-octet value | ||||
as follows:</t> | ||||
<artwork name="" type="" align="center" alt=""><![CDATA[ | ||||
0 1 2 3 | ||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type=0x06 |Sub-Type=0x09 | Flags (2 Octets) |M|I| | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Reserved=0 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
]]></artwork> | ||||
<t> | <t>The low-order (least significant) 2 bits are defined as the "IGMP | |||
Where the value of 'n' is 0x0A, 0x0B, 0x0C, or 0x0D corr | Proxy Support" and "MLD Proxy Support" bits (see <xref target="multicast_ | |||
esponding | flags_extended_community"/>. The absence of this | |||
to EVI-RT type 0, 1, 2, or 3 respectively. | extended community also means that the PE does not support the IGMP | |||
</t> | proxy, where:</t> | |||
<ul spacing="normal"> | ||||
<li> The Type is 0x06, as registered with IANA for EVPN Extended Commu | ||||
nities. </li> | ||||
<li> The Sub-Type is 0x09.</li> | ||||
<li> | ||||
<t>Flags are 2-octet values.</t> | ||||
</section> | <ul spacing="normal"> | |||
<li> Bit 15 (shown as I) defines IGMP Proxy Support. The value of | ||||
1 for | ||||
bit 15 means that the PE supports the IGMP Proxy. The value of 0 fo | ||||
r bit 15 | ||||
means that the PE does not support the IGMP Proxy.</li> | ||||
<li>Bit 14 (shown as M) defines MLD Proxy Support. The value of 1 | ||||
for | ||||
bit 14 means that the PE supports the MLD Proxy. The value of 0 for | ||||
bit 14 | ||||
means that the PE does not support the MLD proxy. </li> | ||||
<li>Bits 0 to 13 are reserved for the future. The sender <bcp14>MU | ||||
ST</bcp14> | ||||
set it to 0, and the receiver <bcp14>MUST</bcp14> ignore it. </li> | ||||
</ul> | ||||
</li> | ||||
<li> Reserved bits are set to 0. The sender <bcp14>MUST</bcp14> set it | ||||
to 0, | ||||
and the receiver <bcp14>MUST</bcp14> ignore it.</li> | ||||
</ul> | ||||
<t> If a router does not support this specification, it <bcp14>MUST NOT< | ||||
/bcp14> add | ||||
the Multicast Flags Extended Community | ||||
in the BGP route. When a router receives a BGP update, | ||||
if both M and I flags are 0, the router <bcp14>MUST</bcp14> treat this up | ||||
date as | ||||
malformed. The receiver of such an | ||||
update <bcp14>MUST</bcp14> ignore the extended community. </t> | ||||
</section> | ||||
<section anchor="evi-rt" numbered="true" toc="default"> | ||||
<name>EVI-RT Extended Community</name> | ||||
<t>In EVPN, every EVI is associated with one or more Route Targets. The | ||||
se RTs serve two functions:</t> | ||||
<ol spacing="normal" type="1"> | ||||
<li>Distribution control: RTs control the distribution of the | ||||
routes. If a route carries the RT associated with a particular | ||||
EVI, it will be distributed to all the PEs on which that EVI | ||||
exists.</li> | ||||
<li>EVI identification: Once a route has been received by a | ||||
particular PE, the RT is used to identify the EVI to which it | ||||
applies.</li> | ||||
</ol> | ||||
<t>An IGMP Membership Report Synch or IGMP Leave Synch route is associat | ||||
ed with a | ||||
particular combination of ES and EVI. These routes need to be | ||||
distributed only to PEs that are attached to the associated ES. | ||||
Therefore, these routes carry the ES-Import RT for that ES.</t> | ||||
<t>Since an IGMP Membership Report Synch or IGMP Leave Synch route does | ||||
not need | ||||
to be distributed to all the PEs on which the associated EVI | ||||
exists, these routes cannot carry the RT associated with that | ||||
EVI. Therefore, when such a route arrives at a particular PE, the | ||||
route's RTs cannot be used to identify the EVI to which the route | ||||
applies. Some other means of associating the route with an EVI | ||||
must be used.</t> | ||||
<t>This document specifies four new ECs that | ||||
can be used to identify the EVI with which a route is associated | ||||
but do not have any effect on the distribution of the | ||||
route. These new ECs are known as "Type 0 EVI-RT EC", | ||||
"Type 1 EVI-RT EC", "Type 2 EVI-RT EC", and "Type 3 EVI-RT EC".</t> | ||||
<section title="Rewriting of RT ECs and EVI-RT ECs by ASBRs"> | <ol spacing="normal" type="1"> | |||
<t> | <li> A Type 0 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xA.</li> | |||
There are certain situations in which an | <li> A Type 1 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xB.</li> | |||
ES is attached to a set | <li> A Type 2 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xC.</li> | |||
of PEs that are not all in the same AS, o | <li> A Type 3 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xD</li> | |||
r not all operated by | </ol> | |||
the same provider. In some such situati | <t>Each IGMP Membership Report Synch or IGMP Leave Synch route <bcp14>MU | |||
ons, the RT that | ST</bcp14> | |||
corresponds to a particular EVI may be d | carry exactly | |||
ifferent in each AS. If | one EVI-RT EC. The EVI-RT EC carried by a particular route is | |||
a route is propagated from AS1 to AS2, a | constructed as follows. Each such route is the result of having | |||
n ASBR at the AS1/AS2 | received an IGMP Membership Report or an IGMP Leave message from a partic | |||
border may be provisioned with a policy | ular | |||
that removes the RTs that | BD. The route is said to be associated with that BD. | |||
are meaningful in AS1 and replaces them | For each BD, there is a corresponding RT that is used to ensure | |||
with the corresponding | that routes "about" that BD are distributed to all PEs attached | |||
(i.e., RTs corresponding to the same EVI | to that BD. So suppose a given IGMP Membership Report Synch or Leave Syn | |||
s) RTs that are | ch | |||
meaningful in AS2. This is known as RT- | route is associated with a given BD, say BD1, and suppose that | |||
rewriting. | the corresponding RT for BD1 is RT1. Then:</t> | |||
</t> | ||||
<t> | <!--[rfced] For consistency, we updated "Two-Octet" and "Four-Octet" | |||
Note that if a given route's RTs are rewri | to "2-octet" and "4-octet". Please let us know of any | |||
tten, and the route | objections. | |||
carries an EVI-RT EC, the EVI-RT EC needs | ||||
to be rewritten as | ||||
well. | ||||
</t> | ||||
</section> | ||||
<section title="BGP Error Handling"> | Original: | |||
<t> | * If RT1 is a Transitive Two-Octet AS-specific EC, then the EVI-RT | |||
If a received BGP update contains Flags not in a | EC carried by the route is a Type 0 EVI-RT EC. | |||
ccordance with IGMP/MLD version-X expectation, | ||||
the PE MUST apply the "treat-as-withdraw" proced | ||||
ure as per <xref target="RFC7606"/> | ||||
</t> | ||||
<t> | ||||
If a received BGP update is malformed such that | ||||
BGP route keys cannot be extracted, then | ||||
BGP update MUST be considered as invalid. Receiv | ||||
ing PE MUST apply the "Session reset" procedure of <xref target="RFC7606"/>. | ||||
</t> | ||||
</section> | * If RT1 is a Transitive Four-Octet-specific EC, then the EVI-RT EC | |||
carried by the route is a Type 2 EVI-RT EC. | ||||
</section> | Perhaps: | |||
* If RT1 is a Transitive 2-octet AS-specific EC, then the EVI-RT | ||||
EC carried by the route is a Type 0 EVI-RT EC. | ||||
<section title="IGMP Version 1 Membership Report"> | * If RT1 is a Transitive 4-octet-specific EC, then the EVI-RT EC | |||
<t> | carried by the route is a Type 2 EVI-RT EC. | |||
This document does not provide any detail about IGMPv1 p | --> | |||
rocessing. | <ul spacing="normal"> | |||
Implementations are expected to only use IGMPv2 and above for IPv4 and | <li>If RT1 is a Transitive 2-octet AS-specific EC, then the EVI-RT | |||
MLDv1 and above for IPv6. IGMPv1 routes are considered invalid and the | EC carried by the route is a Type 0 EVI-RT EC. The value | |||
PE MUST apply the "treat-as-withdraw" procedure as per <xref target="RFC7606" | field of the Type 0 EVI-RT EC is identical to the value field of | |||
/>. | RT1. </li> | |||
<li>If RT1 is a Transitive IPv4-Address-specific EC, then the EVI-RT | ||||
EC carried by the route is a Type 1 EVI-RT EC. The value | ||||
field of the Type 1 EVI-RT EC is identical to the value field of | ||||
RT1. </li> | ||||
<li>If RT1 is a Transitive 4-octet-specific EC, then the EVI-RT | ||||
EC carried by the route is a Type 2 EVI-RT EC. The value field | ||||
of the Type 2 EVI-RT EC is identical to the value field of RT1.</li> | ||||
<li>If RT1 is a Transitive IPv6-Address-specific EC, then the EVI-RT | ||||
EC carried by the route is a Type 3 EVI-RT EC. The value | ||||
field of the Type 3 EVI-RT EC is identical to the value field of | ||||
RT1.</li> | ||||
</ul> | ||||
<t>An IGMP Membership Report Synch or Leave Synch route <bcp14>MUST</bcp | ||||
14> | ||||
carry exactly one EVI-RT EC.</t> | ||||
<t>Suppose a PE receives a particular IGMP Membership Report Synch or IG | ||||
MP Leave | ||||
Synch route, say R1, and suppose that R1 carries an ES-Import RT | ||||
that is one of the PE's Import RTs. If R1 has no EVI-RT EC or | ||||
has more than one EVI-RT EC, the PE <bcp14>MUST</bcp14> apply the "treat- | ||||
as-withdraw" | ||||
procedure per <xref target="RFC7606" format="default"/>.</t> | ||||
<t>Note that an EVI-RT EC is not a Route Target extended community, | ||||
is not visible to the RT Constrain mechanism <xref target="RFC4684" forma | ||||
t="default"/>, | ||||
and is not intended to influence the propagation of routes by BGP.</t> | ||||
<artwork name="" type="" align="center" alt=""><![CDATA[ | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type=0x06 | Sub-Type=n | RT associated with EVI | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| RT associated with the EVI (cont.) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
]]></artwork> | ||||
</t> | <t>The value of "n" is 0x0A, 0x0B, 0x0C, or 0x0D, corresponding | |||
</section> | to EVI-RT types 0, 1, 2, or 3, respectively.</t> | |||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Rewriting of RT ECs and EVI-RT ECs by ASBRs</name> | ||||
<!-- Note: text updated per mail from John E Drake <jdrake@juniper.net> | ||||
on 5/18/2022. --> | ||||
<section title="Security Considerations"> | <!-- [rfced] AD, Section 9.6 was updated per a request from the author. Please | |||
<t> | review and let us know if the changes are approved. Note that you can also view | |||
This document describes a means to efficiently operate IGMP and ML | the changes in the diff files. | |||
D on a subnet | ||||
constructed across multiple PODs or DCs via an EVPN solution. The | ||||
security | ||||
considerations for the operation of the underlying EVPN and BGP su | ||||
bstrate are | ||||
described in <xref target="RFC7432"/>, and specific multicast cons | ||||
iderations are outlined in | ||||
<xref target="RFC6513"/> and <xref target="RFC6514"/>. The EVPN a | ||||
nd associated IGMP proxy provides a single | ||||
broadcast domain so the same security considerations of IGMPv2 <xr | ||||
ef target="RFC2236"/>, | ||||
<xref target="RFC3376"/>, MLD <xref target="RFC2710"/>, or MLDv2 < | ||||
xref target="RFC3810"/> apply. | ||||
</t> | Original: | |||
</section> | There are certain situations in which an ES is attached to a set of | |||
PEs that are not all in the same AS, or not all operated by the same | ||||
provider. In some such situations, the RT that corresponds to a | ||||
particular EVI may be different in each AS. If a route is propagated | ||||
from AS1 to AS2, an ASBR at the AS1/AS2 border may be provisioned | ||||
with a policy that removes the RTs that are meaningful in AS1 and | ||||
replaces them with the corresponding (i.e., RTs corresponding to the | ||||
same EVIs) RTs that are meaningful in AS2. This is known as RT- | ||||
rewriting. | ||||
<section title="IANA Considerations"> | Note that if a given route's RTs are rewritten, and the route carries | |||
an EVI-RT EC, the EVI-RT EC needs to be rewritten as well. | ||||
<section title="EVPN Extended Community Sub-Types Registrations"> | Current: | |||
<t> | There are certain situations in which an ES is attached to a set of | |||
IANA has allocated the following codepoints from the EVPN Extended Co | PEs that are not all in the same AS, or not all operated by the same | |||
mmunity Sub-Types | provider. In this situation, the RT that corresponds to a particular | |||
sub-registry of the BGP Extended Communities registry. </t> | EVI may be different in each AS. If a route is propagated from AS1 | |||
to AS2, an ASBR at the AS1/AS2 border may be configured with a policy | ||||
that replaces the EVI RTs for AS1 with the corresponding EVI RTs | ||||
for AS2. This is known as RT-rewriting. | ||||
<figure> | If an ASBR is configured to perform RT-rewriting of the EVI RTs in | |||
<artwork ><![CDATA[ | EVPN routes, it MUST be configured to perform RT-rewriting of the | |||
corresponding EVI-RT extended communities in IGMP Join Synch and IGMP | ||||
Leave Synch Routes. | ||||
--> | ||||
0x09 Multicast Flags Extended Community [this document] | <t>There are certain situations in which an ES is attached to a set of P | |||
0x0A EVI-RT Type 0 [this document] | Es that are not all in the same AS, or not all operated by the same provider. I | |||
0x0B EVI-RT Type 1 [this document] | n this situation, the RT that corresponds to a particular EVI may be different i | |||
0x0C EVI-RT Type 2 [this document] | n each AS. If a route is propagated from AS1 to AS2, an ASBR at the AS1/AS2 bor | |||
der may be configured with a policy that replaces the EVI RTs for AS1 with the c | ||||
orresponding EVI RTs for AS2. This is known | ||||
as RT-rewriting.</t> | ||||
<t>If an ASBR is configured to perform RT-rewriting of the EVI RTs in EV | ||||
PN routes, it <bcp14>MUST</bcp14> be configured to perform RT-rewriting of the c | ||||
orresponding EVI-RT extended communities in IGMP Join Synch and IGMP Leave Sync | ||||
h Routes.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>BGP Error Handling</name> | ||||
<t>If a received BGP update contains Flags not in accordance with the IG | ||||
MP/MLD | ||||
version-X expectation, | ||||
the PE <bcp14>MUST</bcp14> apply the "treat-as-withdraw" procedure per <x | ||||
ref | ||||
target="RFC7606" format="default"/>.</t> | ||||
<t>If a received BGP update is malformed such that BGP route keys cannot | ||||
be extracted, | ||||
then the BGP update <bcp14>MUST</bcp14> be considered invalid. The receiv | ||||
ing PE | ||||
<bcp14>MUST</bcp14> apply the "session reset" procedure per <xref target= | ||||
"RFC7606" | ||||
format="default"/>.</t> | ||||
</section> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>IGMP Version 1 Membership Report</name> | ||||
<t>This document does not provide any detail about IGMPv1 processing. | ||||
Implementations are expected to only use IGMPv2 and above for IPv4 and | ||||
MLDv1 and above for IPv6. IGMPv1 routes are considered invalid, and the | ||||
PE <bcp14>MUST</bcp14> apply the "treat-as-withdraw" procedure per | ||||
<xref target="RFC7606" format="default"/>.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t>This document describes a means to efficiently operate IGMP and MLD on | ||||
a subnet | ||||
constructed across multiple PODs or DCs via an EVPN solution. The securit | ||||
y | ||||
considerations for the operation of the underlying EVPN and BGP substrates | ||||
are | ||||
described in <xref target="RFC7432" format="default"/>, and specific multi | ||||
cast | ||||
considerations are outlined in | ||||
<xref target="RFC6513" format="default"/> and <xref target="RFC6514" forma | ||||
t="default"/>. | ||||
]]></artwork> | <!--[rfced] As RFC 3376 specifies IGMPv3, may we update this sentence as follows | |||
</figure> | ? | |||
<t> | Original: | |||
IANA is requested to allocate a new codepoint from the EVP | The EVPN and associated IGMP proxy provides a single | |||
N | broadcast domain so the same security considerations of IGMPv2 | |||
Extended Community sub-types registry for the following. | [RFC2236], [RFC3376], MLD [RFC2710], or MLDv2 [RFC3810] apply. | |||
</t> | ||||
<figure> | Perhaps: | |||
<artwork ><![CDATA[ | The EVPN and associated IGMP proxy provides a single | |||
0x0D EVI-RT Type 3 [this document] | broadcast domain so the same security considerations of IGMPv2 | |||
[RFC2236], IGMPv3 [RFC3376], MLD [RFC2710], or MLDv2 [RFC3810] apply. | ||||
--> | ||||
]]></artwork> | The EVPN and associated IGMP proxy provides a single | |||
</figure> | broadcast domain so the same security considerations of IGMPv2 <xref targe | |||
</section> | t="RFC2236" | |||
<section title="EVPN Route Type Registration"> | format="default"/> | |||
<xref target="RFC3376" format="default"/>, MLD <xref target="RFC2710" form | ||||
at="default"/>, | ||||
or MLDv2 <xref target="RFC3810" format="default"/> apply.</t> | ||||
</section> | ||||
<t> | <section numbered="true" toc="default"> | |||
IANA has allocated the following EVPN route types from the EVPN | <name>IANA Considerations</name> | |||
Route Type registry. | <section numbered="true" toc="default"> | |||
</t> | <name>EVPN Extended Community Sub-Types Registration</name> | |||
<t>IANA has allocated the following codepoints in the "EVPN Extended Com | ||||
munity Sub-Types" | ||||
subregistry under the "Border Gateway Protocol (BGP) Extended Communitie | ||||
s" registry. </t> | ||||
<figure> | <table> | |||
<artwork ><![CDATA[ | <name>EVPN Extended Community Sub-Types Subregistry Allocated Codepoint | |||
6 - Selective Multicast Ethernet Tag Route | s</name> | |||
7 - Multicast Membership Report Synch Route | <thead> | |||
8 - Multicast Leave Synch Route | <tr> | |||
<th>Sub-Type Value</th> | ||||
<th>Name</th> | ||||
<th>Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>0x09</td> | ||||
<td>Multicast Flags Extended Community</td> | ||||
<td>RFC 9251</td> | ||||
</tr> | ||||
<tr> | ||||
<td>0x0A</td> | ||||
<td>EVI-RT Type 0</td> | ||||
<td>RFC 9251</td> | ||||
</tr> | ||||
<tr> | ||||
<td>0x0B</td> | ||||
<td>EVI-RT Type 1</td> | ||||
<td>RFC 9251</td> | ||||
</tr> | ||||
<tr> | ||||
<td>0x0C</td> | ||||
<td>EVI-RT Type 2</td> | ||||
<td>RFC 9251</td> | ||||
</tr> | ||||
<tr> | ||||
<td>0x0D</td> | ||||
<td>EVI-RT Type 3</td> | ||||
<td>RFC 9251</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>EVPN Route Types Registration</name> | ||||
<t>IANA has allocated the following EVPN route types in the "EVPN | ||||
Route Types" subregistry.</t> | ||||
]]></artwork> | <dl newline="false" spacing="normal"> | |||
</figure> | <dt>6 -</dt> | |||
</section> | <dd>Selective Multicast Ethernet Tag Route</dd> | |||
<section title="Multicast Flags Extended Community Registry"> | <dt>7 -</dt> | |||
<dd>Multicast Membership Report Synch Route</dd> | ||||
<dt>8 -</dt> | ||||
<dd> Multicast Leave Synch Route</dd> | ||||
</dl> | ||||
<t> | </section> | |||
The Multicast Flags Extended Community contains a 16-bit Fl | <section anchor="multicast_flags_extended_community" numbered="true" toc=" | |||
ags | default"> | |||
field. The bits are numbered 0-15, from high-order to low-o | <name>Multicast Flags Extended Community Registry</name> | |||
rder. | <t>IANA has created and now maintains a new subregistry called "Multicas | |||
</t> | t Flags Extended Community" under the "Border Gateway Protocol (BGP) Extended Co | |||
mmunities" registry. The registration procedure is First Come First Served <xref | ||||
target="RFC8126"/>. For the 16-bit Flags field, the bits are numbered 0-15, fro | ||||
m high order to low order. The registry was initialized as follows:</t> | ||||
<figure> | <table> | |||
<artwork ><![CDATA[ | <name>Multicast Flags Extended Community</name> | |||
The registry should be initialized as follows: | <thead> | |||
<tr> | ||||
<th>Bit</th> | ||||
<th>Name</th> | ||||
<th>Reference</th> | ||||
<th>Change Controller</th> | ||||
</tr> | ||||
</thead> | ||||
Bit Name Reference Change | <tbody> | |||
Controller | <tr> | |||
---- -------------- ------------- ------- | <td>0-13</td> | |||
----------- | <td>Unassigned</td> | |||
0 - 13 Unassigned | <td></td> | |||
14 MLD Proxy Support This document. IE | <td></td> | |||
TF | </tr> | |||
15 IGMP Proxy Support This document IE | ||||
TF | ||||
The registration policy should be "First Come First Served". | <tr> | |||
<td> 14</td> | ||||
<td>MLD Proxy Support</td> | ||||
<td>RFC 9251</td> | ||||
<td>IETF</td> | ||||
</tr> | ||||
]]></artwork> | <tr> | |||
</figure> | <td> 15</td> | |||
</section> | <td>IGMP Proxy Support</td> | |||
<td>RFC 9251</td> | ||||
<td>IETF</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
</section> | ||||
</middle> | ||||
<back> | ||||
<displayreference target="I-D.ietf-bess-evpn-bum-procedure-updates" to="EVPN | ||||
-BUM"/> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7432.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3376.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2710.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3810.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7606.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4684.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2236.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4364.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6625.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6513.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6514.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4541.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8126.xml"/> | ||||
</section> | <!-- draft-ietf-bess-evpn-bum-procedure-updates-14: in MISSREF as of 5/26 | |||
/22--> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-bess-evpn-bum-procedure-updates.xml"/> | ||||
</references> | ||||
</references> | ||||
<section numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t>The authors would like to thank <contact fullname="Stephane Litkowski"/ | ||||
>, <contact | ||||
fullname="Jorge Rabadan"/>, | ||||
<contact fullname="Anoop Ghanwani"/>, <contact fullname="Jeffrey Haas"/>, | ||||
<contact | ||||
fullname="Krishna Muddenahally Ananthamurthy"/>, and <contact fullname="Sw | ||||
adesh Agrawal"/> | ||||
for their reviews and valuable comments.</t> | ||||
</section> | ||||
<section numbered="false" toc="default"> | ||||
<name>Contributors</name> | ||||
<section title="Acknowledgement"> | <contact fullname="Derek Yeung"> | |||
<t> | <organization>Arrcus</organization> | |||
The authors would like to thank Stephane Litkowski, Jor | <address> | |||
ge Rabadan, | <email>derek@arrcus.com</email> | |||
Anoop Ghanwani, Jeffrey Haas, Krishna Muddenahally Anan | </address> | |||
thamurthy, Swadesh Agrawal | </contact> | |||
for reviewing and providing valuable | ||||
comment. | ||||
</t> | ||||
</section> | </section> | |||
</back> | ||||
<section title="Contributors"> | <!--[rfced] Please review the "Inclusive Language" portion of the | |||
online Style Guide | ||||
<https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. Note that our script | ||||
did not flag any words in particular, but this should still be | ||||
reviewed as a best practice. --> | ||||
<t> | <!--[rfced] Throughout the text, the following terminology appears to be used in | |||
Derek Yeung </t> | consistently. Please review these occurrences and let us know if/how these shoul | |||
<t> Arrcus </t> | d be made consistent. | |||
<t> Email: derek@arrcus.com | ||||
</t> | ||||
</section> | ||||
</middle> | - Ethernet Segment vs. Ethernet segment | |||
<!-- *****BACK MATTER ***** --> | - EVPN Extended Community vs. EVPN extended community | |||
[Note that RFC 7432 uses "EVPN Extended Community" (capitalized)] | ||||
<back> | - IGMP/MLD Proxy vs. IGMP/MLD proxy | |||
<references title='Normative References'> | - IGMP Report vs. IGMP report | |||
<?rfc include='reference.RFC.2119' ?> | - include/exclude bit vs. INCLUDE or EXCLUDE bit | |||
<?rfc include='reference.RFC.7432' ?> | - Membership Report vs. Membership report vs. membership report | |||
<?rfc include='reference.RFC.3376' ?> | - Membership Queries vs. membership queries | |||
<?rfc include='reference.RFC.2710' ?> | - Membership Request vs. membership request | |||
<?rfc include='reference.RFC.3810' ?> | ||||
<?rfc include='reference.RFC.7606' ?> | ||||
<?rfc include='reference.RFC.4684' ?> | ||||
<?rfc include='reference.RFC.2236' ?> | ||||
<?rfc include='reference.RFC.8174' ?> | ||||
<?rfc include='reference.RFC.4364' ?> | ||||
<?rfc include='reference.RFC.6625' ?> | ||||
<?rfc include='reference.RFC.6513' ?> | ||||
<?rfc include='reference.RFC.6514' ?> | ||||
</references> | - Multicast Flags extended community vs. Multicast Flags Extended Community | |||
<references title="Informative References"> | [Note that we recommend using "Multicast Flags Extended Community" (capitalize | |||
<?rfc include='reference.RFC.4541' ?> | d) | |||
<?rfc include="reference.I-D.ietf-bess-evpn-bum-procedure-updates"?> | to match the IANA registry] | |||
</references> | ||||
</back> | - proxy reporting vs. Proxy-reporting | |||
- route type vs. route-type | ||||
- Source IP address vs. source IP address | ||||
--> | ||||
</rfc> | </rfc> | |||
End of changes. 103 change blocks. | ||||
2513 lines changed or deleted | 2041 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |