rfc9251.original | rfc9251.txt | |||
---|---|---|---|---|
BESS WorkGroup A. Sajassi | Internet Engineering Task Force (IETF) A. Sajassi | |||
Internet-Draft S. Thoria | Request for Comments: 9251 S. Thoria | |||
Intended status: Standards Track M. Mishra | Category: Standards Track M. Mishra | |||
Expires: September 23, 2022 Cisco Systems | ISSN: 2070-1721 Cisco Systems | |||
K. Patel | K. Patel | |||
Arrcus | Arrcus | |||
J. Drake | J. Drake | |||
W. Lin | W. Lin | |||
Juniper Networks | Juniper Networks | |||
March 22, 2022 | May 2022 | |||
IGMP and MLD Proxy for EVPN | Internet Group Management Protocol (IGMP) and Multicast Listener | |||
draft-ietf-bess-evpn-igmp-mld-proxy-21 | Discovery (MLD) Proxies for Ethernet VPN (EVPN) | |||
Abstract | Abstract | |||
This document describes how to support efficiently endpoints running | This document describes how to support endpoints running the Internet | |||
IGMP(Internet Group Management Protocol) or MLD (Multicast Listener | Group Management Protocol (IGMP) or Multicast Listener Discovery | |||
Discovery) for the multicast services over an EVPN network by | (MLD) efficiently for the multicast services over an Ethernet VPN | |||
incorporating IGMP/MLD proxy procedures on EVPN (Ethernet VPN) PEs. | (EVPN) network by incorporating IGMP/MLD Proxy procedures on EVPN | |||
Provider Edges (PEs). | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on September 23, 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9251. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Revised BSD License text as described in Section 4.e of the | |||
the Trust Legal Provisions and are provided without warranty as | Trust Legal Provisions and are provided without warranty as described | |||
described in the Simplified BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. Specification of Requirements . . . . . . . . . . . . . . . . 4 | 2. Specification of Requirements | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Terminology | |||
4. IGMP/MLD Proxy . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. IGMP/MLD Proxy | |||
4.1. Proxy Reporting . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Proxy Reporting | |||
4.1.1. IGMP/MLD Membership Report Advertisement in BGP . . . 7 | 4.1.1. IGMP/MLD Membership Report Advertisement in BGP | |||
4.1.2. IGMP/MLD Leave Group Advertisement in BGP . . . . . . 9 | 4.1.2. IGMP/MLD Leave Group Advertisement in BGP | |||
4.2. Proxy Querier . . . . . . . . . . . . . . . . . . . . . . 9 | 4.2. Proxy Querier | |||
5. Operation . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 5. Operation | |||
5.1. PE with only attached hosts for a given subnet . . . . . 11 | 5.1. PE with Only Attached Hosts for a Given Subnet | |||
5.2. PE with a mix of attached hosts and multicast source . . 12 | 5.2. PE with a Mix of Attached Hosts and a Multicast Source | |||
5.3. PE with a mix of attached hosts, a multicast source and a | 5.3. PE with a Mix of Attached Hosts, a Multicast Source, and a | |||
router . . . . . . . . . . . . . . . . . . . . . . . . . 12 | Router | |||
6. All-Active Multi-Homing . . . . . . . . . . . . . . . . . . . 12 | 6. All-Active Multihoming | |||
6.1. Local IGMP/MLD Membership Report Synchronization . . . . 12 | 6.1. Local IGMP/MLD Membership Report Synchronization | |||
6.2. Local IGMP/MLD Leave Group Synchronization . . . . . . . 13 | 6.2. Local IGMP/MLD Leave Group Synchronization | |||
6.2.1. Remote Leave Group Synchronization . . . . . . . . . 14 | 6.2.1. Remote Leave Group Synchronization | |||
6.2.2. Common Leave Group Synchronization . . . . . . . . . 14 | 6.2.2. Common Leave Group Synchronization | |||
6.3. Mass Withdraw of Multicast Membership Report Sync route | 6.3. Mass Withdraw of the Multicast Membership Report Synch | |||
in case of failure . . . . . . . . . . . . . . . . . . . 15 | Route in Case of Failure | |||
7. Single-Active Multi-Homing . . . . . . . . . . . . . . . . . 15 | 7. Single-Active Multihoming | |||
8. Selective Multicast Procedures for IR tunnels . . . . . . . . 15 | 8. Selective Multicast Procedures for IR Tunnels | |||
9. BGP Encoding . . . . . . . . . . . . . . . . . . . . . . . . 16 | 9. BGP Encoding | |||
9.1. Selective Multicast Ethernet Tag Route . . . . . . . . . 16 | 9.1. Selective Multicast Ethernet Tag Route | |||
9.1.1. Constructing the Selective Multicast Ethernet Tag | 9.1.1. Constructing the Selective Multicast Ethernet Tag Route | |||
route . . . . . . . . . . . . . . . . . . . . . . . . 18 | 9.1.2. Reconstructing IGMP/MLD Membership Reports from the | |||
9.1.2. Reconstructing IGMP / MLD Membership Reports from | Selective Multicast Route | |||
Selective Multicast Route . . . . . . . . . . . . . . 19 | 9.1.3. Default Selective Multicast Route | |||
9.1.3. Default Selective Multicast Route . . . . . . . . . . 20 | 9.2. Multicast Membership Report Synch Route | |||
9.2. Multicast Membership Report Synch Route . . . . . . . . . 21 | ||||
9.2.1. Constructing the Multicast Membership Report Synch | 9.2.1. Constructing the Multicast Membership Report Synch | |||
Route . . . . . . . . . . . . . . . . . . . . . . . . 22 | Route | |||
9.2.2. Reconstructing IGMP / MLD Membership Reports from | 9.2.2. Reconstructing IGMP/MLD Membership Reports from a | |||
Multicast Membership Report Sync Route . . . . . . . 23 | Multicast Membership Report Synch Route | |||
9.3. Multicast Leave Synch Route . . . . . . . . . . . . . . . 24 | 9.3. Multicast Leave Synch Route | |||
9.3.1. Constructing the Multicast Leave Synch Route . . . . 26 | 9.3.1. Constructing the Multicast Leave Synch Route | |||
9.3.2. Reconstructing IGMP / MLD Leave from Multicast Leave | 9.3.2. Reconstructing IGMP/MLD Leave from a Multicast Leave | |||
Sync Route . . . . . . . . . . . . . . . . . . . . . 27 | Synch Route | |||
9.4. Multicast Flags Extended Community . . . . . . . . . . . 28 | 9.4. Multicast Flags Extended Community | |||
9.5. EVI-RT Extended Community . . . . . . . . . . . . . . . . 29 | 9.5. EVI-RT Extended Community | |||
9.6. Rewriting of RT ECs and EVI-RT ECs by ASBRs . . . . . . . 31 | 9.6. Rewriting of RT ECs and EVI-RT ECs by ASBRs | |||
9.7. BGP Error Handling . . . . . . . . . . . . . . . . . . . 32 | 9.7. BGP Error Handling | |||
10. IGMP Version 1 Membership Report . . . . . . . . . . . . . . 32 | 10. IGMP Version 1 Membership Report | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | 11. Security Considerations | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | 12. IANA Considerations | |||
12.1. EVPN Extended Community Sub-Types Registrations . . . . 32 | 12.1. EVPN Extended Community Sub-Types Registration | |||
12.2. EVPN Route Type Registration . . . . . . . . . . . . . . 33 | 12.2. EVPN Route Types Registration | |||
12.3. Multicast Flags Extended Community Registry . . . . . . 33 | 12.3. Multicast Flags Extended Community Registry | |||
13. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 33 | 13. References | |||
14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 34 | 13.1. Normative References | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 | 13.2. Informative References | |||
15.1. Normative References . . . . . . . . . . . . . . . . . . 34 | Acknowledgements | |||
15.2. Informative References . . . . . . . . . . . . . . . . . 35 | Contributors | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
In DC applications, a point of delivery (POD) can consist of a | In data center (DC) applications, a point of delivery (POD) can | |||
collection of servers supported by several top of rack (ToR) and | consist of a collection of servers supported by several top-of-rack | |||
spine switches. This collection of servers and switches are self | (ToR) and spine switches. This collection of servers and switches | |||
contained and may have their own control protocol for intra-POD | are self-contained and may have their own control protocol for intra- | |||
communication and orchestration. However, EVPN is used as standard | POD communication and orchestration. However, EVPN is used as a | |||
way of inter-POD communication for both intra-DC and inter-DC. A | standard way of inter-POD communication for both intra-DC and inter- | |||
subnet can span across multiple PODs and DCs. EVPN provides a robust | DC. A subnet can span across multiple PODs and DCs. EVPN provides a | |||
multi-tenant solution with extensive multi-homing capabilities to | robust multi-tenant solution with extensive multihoming capabilities | |||
stretch a subnet (VLAN) across multiple PODs and DCs. There can be | to stretch a subnet (VLAN) across multiple PODs and DCs. There can | |||
many hosts (several hundreds) attached to a subnet that is stretched | be many hosts (several hundreds) attached to a subnet that is | |||
across several PODs and DCs. | stretched across several PODs and DCs. | |||
These hosts express their interests in multicast groups on a given | These hosts express their interests in multicast groups on a given | |||
subnet/VLAN by sending IGMP/MLD Membership Reports for their | subnet/VLAN by sending IGMP/MLD Membership Reports for their | |||
interested multicast group(s). Furthermore, an IGMP/MLD router | interested multicast group(s). Furthermore, an IGMP/MLD router | |||
periodically sends membership queries to find out if there are hosts | periodically sends Membership Queries to find out if there are hosts | |||
on that subnet that are still interested in receiving multicast | on that subnet that are still interested in receiving multicast | |||
traffic for that group. The IGMP/MLD Proxy solution described in | traffic for that group. The IGMP/MLD Proxy solution described in | |||
this document accomplishes three objectives: | this document accomplishes three objectives: | |||
1. Reduce flooding of IGMP/MLD messages: just like the ARP/ND | 1. Reduce flooding of IGMP/MLD messages: Just like the ARP / | |||
suppression mechanism in EVPN to reduce the flooding of ARP | Neighbor Discovery (ND) suppression mechanism in EVPN to reduce | |||
messages over EVPN, it is also desired to have a mechanism to | the flooding of ARP messages over EVPN, it is also desired to | |||
reduce the flooding of IGMP/MLD messages (both Queries and | have a mechanism to reduce the flooding of IGMP/MLD messages | |||
Membership Reports) in EVPN. | (both Queries and Membership Reports) in EVPN. | |||
2. Distributed anycast multicast proxy: it is desirable for the EVPN | 2. Distributed anycast multicast proxy: It is desirable for the EVPN | |||
network to act as a distributed anycast multicast router with | network to act as a distributed anycast multicast router with | |||
respect to IGMP/MLD proxy function for all the hosts attached to | respect to IGMP/MLD Proxy function for all the hosts attached to | |||
that subnet. | that subnet. | |||
3. Selective Multicast: to forward multicast traffic over EVPN | 3. Selective multicast: This describes forwarding multicast traffic | |||
network such that it only gets forwarded to the PEs that have | over the EVPN network such that it only gets forwarded to the PEs | |||
interest in the multicast group(s). This document shows how this | that have interests in the multicast group(s). This document | |||
objective may be achieved when Ingress Replication is used to | shows how this objective may be achieved when ingress replication | |||
distribute the multicast traffic among the PEs. Procedures for | is used to distribute the multicast traffic among the PEs. | |||
supporting selective multicast using P2MP tunnels can be found in | Procedures for supporting selective multicast using Point-to- | |||
[I-D.ietf-bess-evpn-bum-procedure-updates] | Multipoint (P2MP) tunnels can be found in [EVPN-BUM]. | |||
The first two objectives are achieved by using IGMP/MLD proxy on the | The first two objectives are achieved by using the IGMP/MLD Proxy on | |||
PE. The third objective is achieved by setting up a multicast tunnel | the PE. The third objective is achieved by setting up a multicast | |||
only among the PEs that have interest in that multicast group(s) | tunnel among only the PEs that have interest in the multicast | |||
based on the trigger from IGMP/MLD proxy processes. The proposed | group(s) based on the trigger from IGMP/MLD Proxy processes. The | |||
solutions for each of these objectives are discussed in the following | proposed solutions for each of these objectives are discussed in the | |||
sections. | following sections. | |||
2. Specification of Requirements | 2. Specification of Requirements | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Terminology | 3. Terminology | |||
o AC: Attachment Circuit. | AC: Attachment Circuit | |||
o All-Active Redundancy Mode: When all PEs attached to an Ethernet | All-Active Redundancy Mode: When all PEs attached to an Ethernet | |||
segment are allowed to forward known unicast traffic to/from that | segment are allowed to forward known unicast traffic to/from that | |||
Ethernet segment for a given VLAN, then the Ethernet segment is | Ethernet segment for a given VLAN, then the Ethernet segment is | |||
defined to be operating in All-Active redundancy mode. | defined to be operating in All-Active redundancy mode. | |||
o BD: Broadcast Domain. As per [RFC7432], an EVI consists of a | BD: Broadcast Domain. As per [RFC7432], an EVPN instance (EVI) | |||
single or multiple BDs. In case of VLAN-bundle and VLAN-aware | consists of a single BD or multiple BDs. In case of a VLAN bundle | |||
bundle service model, an EVI contains multiple BDs. Also, in this | and a VLAN-aware bundle service model, an EVI contains multiple | |||
document, BD and subnet are equivalent terms. | BDs. Also, in this document, BD and subnet are equivalent terms. | |||
o DC: Data Center | DC: Data Center | |||
o Ethernet Segment (ES): When a customer site (device or network) is | ES: Ethernet segment. This is when a customer site (device or | |||
connected to one or more PEs via a set of Ethernet links. | network) is connected to one or more PEs via a set of Ethernet | |||
links. | ||||
o Ethernet Segment Identifier (ESI): A unique non-zero identifier | ESI: Ethernet Segment Identifier. This is a unique non-zero | |||
that identifies an Ethernet Segment. | identifier that identifies an Ethernet segment. | |||
o Ethernet Tag: It identifies a particular broadcast domain, e.g., a | Ethernet Tag: It identifies a particular broadcast domain, e.g., a | |||
VLAN. An EVPN instance consists of one or more broadcast domains. | VLAN. An EVPN instance consists of one or more broadcast domains. | |||
o EVI: An EVPN instance spanning the Provider Edge (PE) devices | EVI: EVPN Instance. This spans the Provider Edge (PE) devices | |||
participating in that EVPN | participating in that EVPN. | |||
o EVPN: Ethernet Virtual Private Network | EVPN: Ethernet Virtual Private Network | |||
o IGMP: Internet Group Management Protocol | IGMP: Internet Group Management Protocol | |||
o IR: Ingress Replication | IR: Ingress Replication | |||
o MLD: Multicast Listener Discovery | MLD: Multicast Listener Discovery | |||
o OIF: Outgoing Interface for multicast. It can be physical | OIF: Outgoing Interface for multicast. It can be a physical | |||
interface, virtual interface or tunnel. | interface, virtual interface, or tunnel. | |||
o PE: Provider Edge. | PE: Provider Edge | |||
o POD: Point of Delivery | POD: Point of Delivery | |||
o S-PMSI: Selective P-Multicast Service Interface - a conceptual | S-PMSI: Selective P-Multicast Service Interface. This is a | |||
interface for a PE to send customer multicast traffic to some of | conceptual interface for a PE to send customer multicast traffic | |||
the PEs in the same VPN. | to some of the PEs in the same VPN. | |||
o Single-Active Redundancy Mode: When only a single PE, among all | Single-Active Redundancy Mode: When only a single PE, among all the | |||
the PEs attached to an Ethernet segment, is allowed to forward | PEs attached to an Ethernet segment, is allowed to forward traffic | |||
traffic to/from that Ethernet segment for a given VLAN, then the | to/from that Ethernet segment for a given VLAN, then the Ethernet | |||
Ethernet segment is defined to be operating in Single-Active | segment is defined to be operating in Single-Active redundancy | |||
redundancy mode. | mode. | |||
o SMET: Selective Multicast Ethernet Tag | SMET: Selective Multicast Ethernet Tag | |||
o ToR: Top of Rack | ToR: Top of Rack | |||
This document also assumes familiarity with the terminology of | This document also assumes familiarity with the terminology of | |||
[RFC7432], [RFC3376], [RFC2236] . Though most of the place this | [RFC7432], [RFC3376], and [RFC2236]. When this document uses the | |||
document uses term IGMP Membership Report, the text applies equally | term "IGMP Membership Report", the text equally applies to the MLD | |||
for MLD Membership Report too. Similarly, text for IGMPv2 applies to | Membership Report. Similarly, text for IGMPv2 applies to MLDv1, and | |||
MLDv1 and text for IGMPv3 applies to MLDv2. IGMP / MLD version | text for IGMPv3 applies to MLDv2. IGMP/MLD version encoding in the | |||
encoding in BGP update is stated in Section 9 | BGP update is stated in Section 9. | |||
It is important to note when there is text considering whether a PE | It is important to note that when there is text considering whether a | |||
indicates support for IGMP proxying, the corresponding behavior has a | PE indicates support for IGMP proxying, the corresponding behavior | |||
natural analogue for indication of support for MLD proxying, and the | has a natural analog for indicating support for MLD proxying, and the | |||
analogous requirements apply as well. | analogous requirements apply as well. | |||
4. IGMP/MLD Proxy | 4. IGMP/MLD Proxy | |||
The IGMP Proxy mechanism is used to reduce the flooding of IGMP | The IGMP Proxy mechanism is used to reduce the flooding of IGMP | |||
messages over an EVPN network similar to ARP proxy used in reducing | messages over an EVPN network, similar to the ARP proxy used in | |||
the flooding of ARP messages over EVPN. It also provides a | reducing the flooding of ARP messages over EVPN. It also provides a | |||
triggering mechanism for the PEs to setup their underlay multicast | triggering mechanism for the PEs to set up their underlay multicast | |||
tunnels. The IGMP Proxy mechanism consists of two components: | tunnels. The IGMP Proxy mechanism consists of two components: | |||
1. Proxy for IGMP Membership Reports. | 1. Proxy for IGMP Membership Reports | |||
2. Proxy for IGMP Membership Queries. | 2. Proxy for IGMP Membership Queries | |||
The goal of IGMP and MLD proxying is to make the EVPN behave | The goal of IGMP and MLD proxying is to make the EVPN behave | |||
seamlessly for the tenant systems with respect to multicast | seamlessly for the tenant systems with respect to multicast | |||
operations, while using a more efficient delivery system for | operations while using a more efficient delivery system for signaling | |||
signaling and delivery across the VPN. Accordingly, group state must | and delivery across the VPN. Accordingly, group state must be | |||
be tracked synchronously among the PEs serving the VPN, with join and | tracked synchronously among the PEs serving the VPN, with join and | |||
leave events propagated to the peer PEs, and each PE tracking the | leave events propagated to the peer PEs and each PE tracking the | |||
state of each of its peer PEs with respect whether there are locally | state of each of its peer PEs with respect to whether there are | |||
attached group members (and in some cases, senders), what version(s) | locally attached group members (and in some cases, senders), what | |||
of IGMP/MLD are in use for those locally attached group members, etc. | version(s) of IGMP/MLD are in use for those locally attached group | |||
In order to perform this translation, each PE acts as an IGMP router | members, etc. In order to perform this translation, each PE acts as | |||
for the locally attached domain, and maintains the requisite state on | an IGMP router for the locally attached domain, maintains the | |||
locally attached nodes, sends periodic membership queries, etc. The | requisite state on locally attached nodes, sends periodic Membership | |||
role of EVPN SMET route propagation is to ensure that each PE's local | Queries, etc. The role of EVPN Selective Multicast Ethernet Tag | |||
state is propagated to the other PEs so that they share a consistent | (SMET) route propagation is to ensure that each PE's local state is | |||
view of the overall IGMP Membership Request and Leave Group state. | propagated to the other PEs so that they share a consistent view of | |||
It is important to note that the need to keep such local state can be | 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 | triggered by either local IGMP traffic or BGP EVPN signaling. In | |||
most cases a local IGMP event will need to be signaled over EVPN, | most cases, a local IGMP event will need to be signaled over EVPN, | |||
though state initiated by received EVPN traffic will not always need | though state initiated by received EVPN traffic will not always need | |||
to be relayed to the locally attached domain. | to be relayed to the locally attached domain. | |||
4.1. Proxy Reporting | 4.1. Proxy Reporting | |||
When IGMP protocol is used between hosts and their first hop EVPN | When IGMP is used between hosts and their first hop EVPN router (EVPN | |||
router (EVPN PE), Proxy-reporting is used by the EVPN PE to summarize | PE), proxy reporting is used by the EVPN PE to summarize (when | |||
(when possible) reports received from downstream hosts and propagate | possible) reports received from downstream hosts and propagate them | |||
them in BGP to other PEs that are interested in the information. | in BGP to other PEs that are interested in the information. This is | |||
This is done by terminating the IGMP Reports in the first hop PE, and | done by terminating the IGMP Membership Reports in the first hop PE | |||
translating and exchanging the relevant information among EVPN BGP | and translating and exchanging the relevant information among EVPN | |||
speakers. The information is again translated back to IGMP message | BGP speakers. The information is again translated back to an IGMP | |||
at the recipient EVPN speaker. Thus it helps create an IGMP overlay | message at the recipient EVPN speaker. Thus, it helps create an IGMP | |||
subnet using BGP. In order to facilitate such an overlay, this | overlay subnet using BGP. In order to facilitate such an overlay, | |||
document also defines a new EVPN route type NLRI, the EVPN Selective | this document also defines a new EVPN route type Network Layer | |||
Multicast Ethernet Tag route, along with its procedures to help | Reachability Information (NLRI) and the EVPN SMET route, along with | |||
exchange and register IGMP multicast groups Section 9. | its procedures to help exchange and register IGMP multicast groups; | |||
see Section 9. | ||||
4.1.1. IGMP/MLD Membership Report Advertisement in BGP | 4.1.1. IGMP/MLD Membership Report Advertisement in BGP | |||
When a PE wants to advertise an IGMP Membership Report using the BGP | When a PE wants to advertise an IGMP Membership Report using the BGP | |||
EVPN route, it follows the following rules (BGP encoding stated in | EVPN route, it follows the proceeding rules (BGP encoding is stated | |||
Section 9). Where first four rules are applicable to originator PE | in Section 9). The first four rules are applicable to the originator | |||
and last three rules are applicable to remote PE processing SMET | PE, and the last three rules are applicable to remote PE processing | |||
routes: | SMET routes: | |||
Processing at BGP route originator: | Processing at the BGP route originator: | |||
1. When the first hop PE receives IGMP Membership Reports , | 1. When the first hop PE receives IGMP Membership Reports belonging | |||
belonging to the same IGMP version, from different attached hosts | to the same IGMP version from different attached hosts for the | |||
for the same (*,G) or (S,G), it SHOULD send a single BGP message | same (*,G) or (S,G), it SHOULD send a single BGP message | |||
corresponding to the very first IGMP Membership Request (BGP | corresponding to the very first IGMP Membership Request (BGP | |||
update as soon as possible) for that (*,G) or (S,G). This is | update as soon as possible) for that (*,G) or (S,G). This is | |||
because BGP is a stateful protocol and no further transmission of | because BGP is a stateful protocol, and no further transmission | |||
the same report is needed. If the IGMP Membership Request is for | of the same report is needed. If the IGMP Membership Request is | |||
(*,G), then multicast group address MUST be sent along with the | for (*,G), then the Multicast Group Address MUST be sent along | |||
corresponding version flag (v2 or v3) set. In case of IGMPv3, | with the corresponding version flag (v2 or v3) set. In case of | |||
the exclude flag MUST also be set to indicate that no source IP | IGMPv3, the exclude flag MUST also be set to indicate that no | |||
address must be excluded (include all sources "*"). If the IGMP | source IP address must be excluded (include all sources "*"). If | |||
Membership Report is for (S,G), then besides setting multicast | the IGMP Membership Report is for (S,G), then besides setting the | |||
group address along with the version flag v3, the source IP | Multicast Group Address along with the v3 flag, the source IP | |||
address and the IE flag MUST be set. It should be noted that | address and the Include/Exclude (IE) flag MUST be set. It should | |||
when advertising the EVPN route for (S,G), the only valid version | be noted that, when advertising the EVPN route for (S,G), the | |||
flag is v3 (v2 flags MUST be set to zero). | only valid version flag is v3 (v2 flags MUST be set to 0). | |||
2. When the first hop PE receives an IGMPv3 Membership Report for | 2. When the first hop PE receives an IGMPv3 Membership Report for | |||
(S,G) on a given BD, it MUST advertise the corresponding EVPN | (S,G) on a given BD, it MUST advertise the corresponding EVPN | |||
Selective Multicast Ethernet Tag (SMET) route regardless of | SMET route, regardless of whether the source (S) is attached to | |||
whether the source (S) is attached to itself or not in order to | itself or not, in order to facilitate the source move in the | |||
facilitate the source move in the future. | future. | |||
3. When the first hop PE receives an IGMP version-X Membership | 3. When the first hop PE receives an IGMP version-X Membership | |||
Report first for (*,G) and then later it receives an IGMP | Report first for (*,G) and then later receives an IGMP version-Y | |||
version-Y Membership Report for the same (*,G), then it MUST re- | Membership Report for the same (*,G), then it MUST re-advertise | |||
advertise the same EVPN SMET route with flag for version-Y set in | the same EVPN SMET route with the flag for version-Y set in | |||
addition to any previously-set version flag(s). In other words, | addition to any previously set version flag(s). In other words, | |||
the first hop PE MUST NOT withdraw the EVPN route before sending | the first hop PE MUST NOT withdraw the EVPN route before sending | |||
the new route because the flag field is not part of BGP route key | the new route because the Flags field is not part of BGP route | |||
processing. | key processing. | |||
4. When the first hop PE receives an IGMP version-X Membership | 4. When the first hop PE receives an IGMP version-X Membership | |||
Report first for (*,G) and then later it receives an IGMPv3 | Report first for (*,G) and then later receives an IGMPv3 | |||
Membership Report for the same multicast group address but for a | Membership Report for the same Multicast Group Address but for a | |||
specific source address S, then the PE MUST advertise a new EVPN | specific source address S, then the PE MUST advertise a new EVPN | |||
SMET route with v3 flag set (and v2 reset). The IE flag also | SMET route with the v3 flag set (and v2 reset). The IE flag also | |||
need to be set accordingly. Since source IP address is used as | needs to be set accordingly. Since the source IP address is used | |||
part of BGP route key processing it is considered as a new BGP | as part of BGP route key processing, it is considered to be a new | |||
route advertisement. When different version of IGMP Membership | BGP route advertisement. When different versions of IGMP | |||
Report are received, final state MUST be as per section 5.1 of | Membership Report are received, the final state MUST be as per | |||
[RFC3376]. At the end of route processing local and remote group | Section 5.1 of [RFC3376]. At the end of the route processing, | |||
record state MUST be as per section 5.1 of [RFC3376]. | local and remote group record state MUST be as per Section 5.1 of | |||
[RFC3376]. | ||||
Processing at BGP route receiver: | Processing at the BGP route receiver: | |||
1. When a PE receives an EVPN SMET route with more than one version | 1. When a PE receives an EVPN SMET route with more than one version | |||
flag set, it will generate the corresponding IGMP report for | flag set, it will generate the corresponding IGMP Report for | |||
(*,G) for each version specified in the flags field. With | (*,G) for each version specified in the Flags field. With | |||
multiple version flags set, there must not be source IP address | multiple version flags set, there must not be a source IP address | |||
in the received EVPN route. If there is, then an error SHOULD be | in the received EVPN route. If there is, then an error SHOULD be | |||
logged. If the v3 flag is set (in addition to v2), then the IE | 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 | flag MUST indicate "exclude". If not, then an error SHOULD be | |||
logged. The PE MUST generate an IGMP Membership Report for that | logged. The PE MUST generate an IGMP Membership Report for that | |||
(*,G) and each IGMP version in the version flag. | (*,G) and each IGMP version in the version flag. | |||
2. When a PE receives a list of EVPN SMET NLRIs in its BGP update | 2. 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 | message, each with a different source IP address and the same | |||
multicast group address, and the version flag is set to v3, then | Multicast Group Address, and the version flag is set to v3, then | |||
the PE generates an IGMPv3 Membership Report with a record | the PE generates an IGMPv3 Membership Report with a record | |||
corresponding to the list of source IP addresses and the group | corresponding to the list of source IP addresses and the group | |||
address along with the proper indication of inclusion/exclusion. | address, along with the proper indication of inclusion/exclusion. | |||
3. Upon receiving EVPN SMET route(s) and before generating the | 3. Upon receiving an EVPN SMET route(s) and before generating the | |||
corresponding IGMP Membership Request(s), the PE checks to see | corresponding IGMP Membership Request(s), the PE checks to see | |||
whether it has any CE multicast router for that BD on any of its | whether it has a Customer Edge (CE) multicast router for that BD | |||
ES's . The PE provides such a check by listening for PIM Hello | on any of its ESs . The PE provides such a check by listening for | |||
messages on that AC (i.e, ES,BD). If the PE does have the | PIM Hello messages on that AC, i.e., (ES,BD). If the PE does | |||
router's ACs, then the generated IGMP Membership Request(s) are | have the router's ACs, then the generated IGMP Membership | |||
sent to those ACs. If it doesn't have any of the router's AC, | Request(s) is sent to those ACs. If it doesn't have any of the | |||
then no IGMP Membership Request(s) needs to be generated. This | router's ACs, then no IGMP Membership Request(s) needs to be | |||
is because sending IGMP Membership Requests to other hosts can | generated. This is because sending IGMP Membership Requests to | |||
result in unintentionally preventing a host from joining a | other hosts can result in unintentionally preventing a host from | |||
specific multicast group using IGMPv2 - i.e., if the PE does not | joining a specific multicast group using IGMPv2, i.e., if the PE | |||
receive a Membership Report from the host it will not forward | does not receive a Membership Report from the host, it will not | |||
multicast data to it. Per [RFC4541] , when an IGMPv2 host | forward multicast data to it. Per [RFC4541] , when an IGMPv2 | |||
receives a Membership Report for a group address that it intends | host receives a Membership Report for a group address that it | |||
to join, the host will suppress its own membership report for the | intends to join, the host will suppress its own Membership Report | |||
same group, and if the PE does not receive an IGMP Membership | for the same group, and if the PE does not receive an IGMP | |||
Report from the host it will not forward multicast data to it. | Membership Report from the host, it will not forward multicast | |||
In other words, an IGMPv2 Membership Report MUST NOT be sent on | data to it. In other words, an IGMPv2 Membership Report MUST NOT | |||
an AC that does not lead to a CE multicast router. This message | be sent on an AC that does not lead to a CE multicast router. | |||
suppression is a requirement for IGMPv2 hosts. This is not a | This message suppression is a requirement for IGMPv2 hosts. This | |||
problem for hosts running IGMPv3 because there is no suppression | is not a problem for hosts running IGMPv3, because there is no | |||
of IGMP Membership Reports. | suppression of IGMP Membership Reports. | |||
4.1.2. IGMP/MLD Leave Group Advertisement in BGP | 4.1.2. IGMP/MLD Leave Group Advertisement in BGP | |||
When a PE wants to withdraw an EVPN SMET route corresponding to an | When a PE wants to withdraw an EVPN SMET route corresponding to an | |||
IGMPv2 Leave Group or IGMPv3 "Leave" equivalent message, it follows | IGMPv2 Leave Group or IGMPv3 "Leave" equivalent message, it follows | |||
the following rules, where first rule defines the procedure at | the rules below. The first rule defines the procedure at the | |||
originator PE and last two rules talk about procedures at remote PE: | originator PE, and the last two rules talk about procedures at the | |||
remote PE: | ||||
Processing at BGP route originator: | Processing at the BGP route originator: | |||
1. When a PE receives an IGMPv2 Leave Group or its "Leave" | 1. When a PE receives an IGMPv2 Leave Group or its "Leave" | |||
equivalent message for IGMPv3 from its attached host, it checks | equivalent message for IGMPv3 from its attached host, it checks | |||
to see if this host is the last host that is interested in this | to see if this host is the last host that is interested in this | |||
multicast group by sending a query for the multicast group. If | multicast group by sending a query for the multicast group. If | |||
the host was indeed the last one (i.e. no responses are received | the host was indeed the last one (i.e., no responses are received | |||
for the query), then the PE MUST re-advertises EVPN SMET | for the query), then the PE MUST re-advertise the EVPN SMET route | |||
Multicast route with the corresponding version flag reset. If | with the corresponding version flag reset. If this is the last | |||
this is the last version flag to be reset, then instead of re- | version flag to be reset, then instead of re-advertising the EVPN | |||
advertising the EVPN route with all version flags reset, the PE | route with all version flags reset, the PE MUST withdraw the EVPN | |||
MUST withdraw the EVPN route for that (*,G). | route for that (*,G). | |||
Processing at BGP route receiver: | Processing at the BGP route receiver: | |||
1. When a PE receives an EVPN SMET route for a given (*,G), it | 1. When a PE receives an EVPN SMET route for a given (*,G), it | |||
compares the received version flags from the route with its per- | compares the received version flags from the route with its per- | |||
PE stored version flags. If the PE finds that a version flag | 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 | associated with the (*,G) for the remote PE is reset, then the PE | |||
MUST generate IGMP Leave for that (*,G) toward its local | MUST generate IGMP Leave for that (*,G) toward its local | |||
interface (if any) attached to the multicast router for that | interface (if any), which is attached to the multicast router for | |||
multicast group. It should be noted that the received EVPN route | that multicast group. It should be noted that the received EVPN | |||
MUST at least have one version flag set. If all version flags | route MUST have at least one version flag set. If all version | |||
are reset, it is an error because the PE should have received an | flags are reset, it is an error because the PE should have | |||
EVPN route withdraw for the last version flag. Error MUST be | received an EVPN route withdraw for the last version flag. An | |||
considered as a BGP error and the PE MUST apply the "treat-as- | error MUST be considered as a BGP error, and the PE MUST apply | |||
withdraw" procedure of [RFC7606]. | the "treat-as-withdraw" procedure per [RFC7606]. | |||
2. When a PE receives an EVPN SMET route withdraw, it removes the | 2. 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 | remote PE from its OIF list for that multicast group, and if | |||
are no more OIF entries for that multicast group (either locally | there are no more OIF entries for that multicast group (either | |||
or remotely), then the PE MUST stop responding to Membership | locally or remotely), then the PE MUST stop responding to | |||
Queries from the locally attached router (if any). If there is a | Membership Queries from the locally attached router (if any). If | |||
source for that multicast group, the PE stops sending multicast | there is a source for that multicast group, the PE stops sending | |||
traffic for that source. | multicast traffic for that source. | |||
4.2. Proxy Querier | 4.2. Proxy Querier | |||
As mentioned in the previous sections, each PE MUST have proxy | As mentioned in the previous sections, each PE MUST have proxy | |||
querier functionality for the following reasons: | querier functionality for the following reasons: | |||
1. To enable the collection of EVPN PEs providing L2VPN service to | 1. to enable the collection of EVPN PEs providing Layer 2 Virtual | |||
act as distributed multicast router with Anycast IP address for | Private Network (L2VPN) service to act as a distributed multicast | |||
all attached hosts in that subnet. | router with an anycast IP address for all attached hosts in that | |||
subnet | ||||
2. To enable suppression of IGMP Membership Reports and Membership | 2. to enable suppression of IGMP Membership Reports and Membership | |||
Queries over MPLS/IP core. | Queries over MPLS/IP core | |||
5. Operation | 5. Operation | |||
Consider the EVPN network of Figure-1, where there is an EVPN | Consider the EVPN network in Figure 1, where there is an EVPN | |||
instance configured across the PEs shown in this figure (namely PE1, | instance configured across the PEs (namely PE1, PE2, and PE3). Let's | |||
PE2, and PE3). Let's consider that this EVPN instance consists of a | consider that this EVPN instance consists of a single bridge domain | |||
single bridge domain (single subnet) with all the hosts, sources, and | (single subnet) with all the hosts and sources and the multicast | |||
the multicast router connected to this subnet. PE1 only has | router connected to this subnet. PE1 only has hosts (host denoted by | |||
hosts(host denoted by Hx) connected to it. PE2 has a mix of hosts | Hx) connected to it. PE2 has a mix of hosts and a multicast source. | |||
and a multicast source. PE3 has a mix of hosts, a multicast source | PE3 has a mix of hosts, a multicast source (source denoted by Sx), | |||
(source denoted by Sx), and a multicast router (router denoted by | and a multicast router (router denoted by Rx). Furthermore, let's | |||
Rx). Furthermore, let's consider that for (S1,G1), R1 is used as the | consider that for (S1,G1), R1 is used as the multicast router. The | |||
multicast router. The following subsections describe the IGMP proxy | following subsections describe the IGMP Proxy operation in different | |||
operation in different PEs with regard to whether the locally | PEs with regard to whether the locally attached devices for that | |||
attached devices for that subnet are: | subnet are: | |||
o only hosts | * only hosts, | |||
o mix of hosts and multicast source | * a mix of hosts and a multicast source, or | |||
o mix of hosts, multicast source, and multicast router | * a mix of hosts, a multicast source, and a multicast router. | |||
+--------------+ | ||||
| | | ||||
| | | ||||
+----+ | | +----+ | ||||
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 | +--------------+ | |||
| | | ||||
| | | ||||
+----+ | | +----+ | ||||
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 ---| | | | | ||||
+----+ | | | ||||
| | | ||||
+--------------+ | ||||
5.1. PE with only attached hosts for a given subnet | Figure 1: EVPN Network | |||
5.1. PE with Only Attached Hosts for a Given Subnet | ||||
When PE1 receives an IGMPv2 Membership Report from H1, it does not | When PE1 receives an IGMPv2 Membership Report from H1, it does not | |||
forward this Membership Report to any of its other ports (for this | forward this Membership Report to any of its other ports (for this | |||
subnet) because all these local ports are associated with the hosts. | subnet) because all these local ports are associated with the hosts. | |||
PE1 sends an EVPN Multicast Group route corresponding to this | PE1 sends an EVPN SMET route corresponding to this Membership Report | |||
Membership Report for (*,G1) and setting v2 flag. This EVPN route is | for (*,G1) and sets the v2 flag. This EVPN route is received by PE2 | |||
received by PE2 and PE3 that are the members of the same BD (i.e., | and PE3, which are the members of the same BD (i.e., same EVI in case | |||
same EVI in case of VLAN-based service or EVI,VLAN in case of VLAN- | of a VLAN-based service or EVI and VLAN in case of a VLAN-aware | |||
aware bundle service). PE3 reconstructs the IGMPv2 Membership Report | bundle service). PE3 reconstructs the IGMPv2 Membership Report from | |||
from this EVPN BGP route and only sends it to the port(s) with | this EVPN BGP route and only sends it to the port(s) with multicast | |||
multicast routers attached to it (for that subnet). In this example, | routers attached to it (for that subnet). In this example, PE3 sends | |||
PE3 sends the reconstructed IGMPv2 Membership Report for (*,G1) only | the reconstructed IGMPv2 Membership Report for (*,G1) only to R1. | |||
to R1. Furthermore, even though PE2 receives the EVPN BGP route, it | Furthermore, even though PE2 receives the EVPN BGP route, it does not | |||
does not send it to any of its ports for that subnet; viz, ports | send it to any of its ports for that subnet (viz., ports associated | |||
associated with H6 and H7. | with H6 and H7). | |||
When PE1 receives the second IGMPv2 Membership Report from H2 for the | 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 | 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 change in | but it doesn't send any EVPN BGP routes because there is no change in | |||
information. However, when it receives the IGMPv3 Membership Report | information. However, when it receives the IGMPv3 Membership Report | |||
from H3 for the same (*,G1). Besides adding the corresponding port | from H3 for the same (*,G1), besides adding the corresponding port to | |||
to its OIF list, it re-advertises the previously sent EVPN SMET route | its OIF list, it re-advertises the previously sent EVPN SMET route | |||
with the v3 and exclude flag set. | with the v3 and exclude flag set. | |||
Finally when PE1 receives the IGMPv3 Membership Report from H4 for | Finally, when PE1 receives the IGMPv3 Membership Report from H4 for | |||
(S2,G2), it advertises a new EVPN SMET route corresponding to it. | (S2,G2), it advertises a new EVPN SMET route corresponding to it. | |||
5.2. PE with a mix of attached hosts and multicast source | 5.2. PE with a Mix of Attached Hosts and a Multicast Source | |||
The main difference in this case is that when PE2 receives the IGMPv3 | The main difference in this case is that when PE2 receives the IGMPv3 | |||
Membership Report from H7 for (S2,G2), it does advertise it in BGP to | Membership Report from H7 for (S2,G2), it advertises it in BGP to | |||
support source move even though PE2 knows that S2 is attached to its | support the source moving, even though PE2 knows that S2 is attached | |||
local AC. PE2 adds the port associated with H7 to its OIF list for | to its local AC. PE2 adds the port associated with H7 to its OIF | |||
(S2,G2). The processing for IGMPv2 received from H6 is the same as | list for (S2,G2). The processing for IGMPv2 received from H6 is the | |||
the IGMPv2 Membership Report described in previous section. | same as the IGMPv2 Membership Report described in the previous | |||
section. | ||||
5.3. PE with a mix of attached hosts, a multicast source and a router | 5.3. PE with a Mix of Attached Hosts, a Multicast Source, and a Router | |||
The main difference in this case relative to the previous two | The main difference in this case relative to the previous two | |||
sections is that IGMP v2/v3 Membership Report messages received | sections is that IGMPv2/v3 Membership Report messages received | |||
locally need to be sent to the port associated with router R1. | locally need to be sent to the port associated with router R1. | |||
Furthermore, the Membership Reports received via BGP (SMET) need to | Furthermore, the Membership Reports received via BGP (SMET) need to | |||
be passed to the R1 port but filtered for all other ports. | be passed to the R1 port but filtered for all other ports. | |||
6. All-Active Multi-Homing | 6. All-Active Multihoming | |||
Because the LAG flow hashing algorithm used by the CE is unknown at | Because the Link Aggregation Group (LAG) flow hashing algorithm used | |||
the PE, in an All-Active redundancy mode it must be assumed that the | by the CE is unknown at the PE, in an All-Active redundancy mode, it | |||
CE can send a given IGMP message to any one of the multi-homed PEs, | must be assumed that the CE can send a given IGMP message to any one | |||
either DF or non-DF; i.e., different IGMP Membership Request messages | of the multihomed PEs, either Designated Forwarder (DF) or non-DF, | |||
can arrive at different PEs in the redundancy group and furthermore | i.e., different IGMP Membership Request messages can arrive at | |||
their corresponding Leave messages can arrive at PEs that are | different PEs in the redundancy group. Furthermore, their | |||
different from the ones that received the Membership Report. | corresponding Leave messages can arrive at PEs that are different | |||
Therefore, all PEs attached to a given ES must coordinate IGMP | from the ones that received the Membership Report. Therefore, all | |||
Membership Request and Leave Group (x,G) state, where x may be either | PEs attached to a given Ethernet segment (ES) must coordinate the | |||
'*' or a particular source S, for each BD on that ES. Each PE has a | IGMP Membership Request and Leave Group (x,G) state, where x may be | |||
local copy of that state and the EVPN signaling serves to synchronize | either "*" or a particular source S for each BD on that ES. Each PE | |||
state across PEs. This allows the DF for that (ES,BD) to correctly | has a local copy of that state, and the EVPN signaling serves to | |||
advertise or withdraw a Selective Multicast Ethernet Tag (SMET) route | synchronize that state across PEs. This allows the DF for that | |||
for that (x,G) group in that BD when needed. All-Active multihoming | (ES,BD) to correctly advertise or withdraw a SMET route for that | |||
PEs for a given ES MUST support IGMP synchronization procedures | (x,G) group in that BD when needed. All-Active multihoming PEs for a | |||
described in this section if they need to perform IGMP proxy for | given ES MUST support IGMP synchronization procedures described in | |||
hosts connected to that ES. | this section if they need to perform IGMP Proxy for hosts connected | |||
to that ES. | ||||
6.1. Local IGMP/MLD Membership Report Synchronization | 6.1. Local IGMP/MLD Membership Report Synchronization | |||
When a PE, either DF or non-DF, receives on a given multihomed ES | When a PE, either DF or non-DF, receives an IGMP Membership Report | |||
operating in All-Active redundancy mode, an IGMP Membership Report | for (x,G) on a given multihomed ES operating in All-Active redundancy | |||
for (x,G), it determines the BD to which the IGMP Membership Report | mode, it determines the BD to which the IGMP Membership Report | |||
belongs. If the PE doesn't already have local IGMP Membership | belongs. If the PE doesn't already have the local IGMP Membership | |||
Request (x,G) state for that BD on that ES, it MUST instantiate local | Request (x,G) state for that BD on that ES, it MUST instantiate that | |||
IGMP Membership Request (x,G) state and MUST advertise a BGP IGMP | local IGMP Membership Request (x,G) state and MUST advertise a BGP | |||
Membership Report Synch route for that (ES,BD). Local IGMP | IGMP Membership Report Synch route for that (ES,BD). The local IGMP | |||
Membership Request (x,G) state refers to IGMP Membership Request | Membership Request (x,G) state refers to the IGMP Membership Request | |||
(x,G) state that is created as a result of processing an IGMP | (x,G) state that is created as a result of processing an IGMP | |||
Membership Report for (x,G). | Membership Report for (x,G). | |||
The IGMP Membership Report Synch route MUST carry the ES-Import RT | The IGMP Membership Report Synch route MUST carry the ES-Import Route | |||
for the ES on which the IGMP Membership Report was received. Thus it | Target (RT) for the ES on which the IGMP Membership Report was | |||
MUST only be imported by the PEs attached to that ES and not any | received. Thus, it MUST only be imported by the PEs attached to that | |||
other PEs. | ES and not any other PEs. | |||
When a PE, either DF or non-DF, receives an IGMP Membership Report | When a PE, either DF or non-DF, receives an IGMP Membership Report | |||
Synch route it installs that route and if it doesn't already have | 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 | the IGMP Membership Request (x,G) state for that (ES,BD), it MUST | |||
instantiate that IGMP Membership Request (x,G) state - i.e., IGMP | instantiate that IGMP Membership Request (x,G) state, i.e., the IGMP | |||
Membership Request (x,G) state is the union of the local IGMP | Membership Request (x,G) state is the union of the local IGMP | |||
Membership Report (x,G) state and the installed IGMP Membership | Membership Report (x,G) state and the installed IGMP Membership | |||
Report Synch route. If the DF did not already advertise (originate) | 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. | a SMET route for that (x,G) group in that BD, it MUST do so now. | |||
When a PE, either DF or non-DF, deletes its local IGMP Membership | When a PE, either DF or non-DF, deletes its local IGMP Membership | |||
Request (x,G) state for that (ES,BD), it MUST withdraw its BGP IGMP | Request (x,G) state for that (ES,BD), it MUST withdraw its BGP IGMP | |||
Membership Report Synch route for that (ES,BD). | Membership Report Synch route for that (ES,BD). | |||
When a PE, either DF or non-DF, receives the withdrawal of an IGMP | When a PE, either DF or non-DF, receives the withdrawal of an IGMP | |||
Membership Report Synch route from another PE it MUST remove that | Membership Report Synch route from another PE, it MUST remove that | |||
route. When a PE has no local IGMP Membership Request (x,G) state | 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 | 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 | remove that IGMP Membership Request (x,G) state for that (ES,BD). If | |||
DF no longer has IGMP Membership Request (x,G) state for that BD on | the DF no longer has the IGMP Membership Request (x,G) state for that | |||
any ES for which it is DF, it MUST withdraw its SMET route for that | BD on any ES for which it is the DF, it MUST withdraw its SMET route | |||
(x,G) group in that BD. | for that (x,G) group in that BD. | |||
In other words, a PE advertises an SMET route for that (x,G) group in | In other words, a PE advertises a SMET route for that (x,G) group in | |||
that BD when it has IGMP Membership Request (x,G) state in that BD on | that BD when it has the IGMP Membership Request (x,G) state on at | |||
at least one ES for which it is DF and it withdraws that SMET route | least one ES for which it is the DF, and it withdraws that SMET route | |||
when it does not have IGMP Membership Request (x,G) state in that BD | when it does not have an IGMP Membership Request (x,G) state in that | |||
on any ES for which it is DF. | BD on any ES for which it is the DF. | |||
6.2. Local IGMP/MLD Leave Group Synchronization | 6.2. Local IGMP/MLD Leave Group Synchronization | |||
When a PE, either DF or non-DF, receives, on a given multihomed ES | When a PE, either DF or non-DF, receives an IGMP Leave Group message | |||
operating in All-Active redundancy mode, an IGMP Leave Group message | for (x,G) from the attached CE on a given multihomed ES operating in | |||
for (x,G) from the attached CE, it determines the BD to which the | All-Active redundancy mode, it determines the BD to which the IGMPv2 | |||
IGMPv2 Leave Group belongs. Regardless of whether it has IGMP | Leave Group belongs. Regardless of whether it has the IGMP | |||
Membership Request (x,G) state for that (ES,BD), it initiates the | Membership Request (x,G) state for that (ES,BD), it initiates the | |||
(x,G) leave group synchronization procedure, which consists of the | (x,G) leave group synchronization procedure, which consists of the | |||
following steps: | following steps: | |||
1. It computes the Maximum Response Time, which is the duration of | 1. It computes the Maximum Response Time, which is the duration of | |||
(x,G) leave group synchronization procedure. This is the product | the (x,G) leave group synchronization procedure. This is the | |||
of two locally configured values, Last Member Query Count and | product of two locally configured values, Last Member Query Count | |||
Last Member Query Interval (described in Section 3 of [RFC2236]), | and Last Member Query Interval (described in Section 3 of | |||
plus a delta corresponding to the time it takes for a BGP | [RFC2236]), plus a delta corresponding to the time it takes for a | |||
advertisement to propagate between the PEs attached to the | BGP advertisement to propagate between the PEs attached to the | |||
multihomed ES (delta is a consistently configured value on all | multihomed ES (delta is a consistently configured value on all | |||
PEs attached to the multihomed ES). | PEs attached to the multihomed ES). | |||
2. It starts the Maximum Response Time timer. Note that the receipt | 2. It starts the Maximum Response Time timer. Note that the receipt | |||
of subsequent IGMP Leave Group messages or BGP Leave Synch routes | of subsequent IGMP Leave Group messages or BGP Leave Synch routes | |||
for (x,G) do not change the value of a currently running Maximum | for (x,G) do not change the value of a currently running Maximum | |||
Response Time timer and are ignored by the PE. | Response Time timer and are ignored by the PE. | |||
3. It initiates the Last Member Query procedure described in | 3. It initiates the Last Member Query procedure described in | |||
Section 3 of [RFC2236]; viz, it sends a number of Group-Specific | Section 3 of [RFC2236]; viz., it sends a number of Group-Specific | |||
Query (x,G) messages (Last Member Query Count) at a fixed | Query (x,G) messages (Last Member Query Count) at a fixed | |||
interval (Last Member Query Interval) to the attached CE. | interval (Last Member Query Interval) to the attached CE. | |||
4. It advertises an IGMP Leave Synch route for that that (ES,BD). | 4. It advertises an IGMP Leave Synch route for that (ES,BD). This | |||
This route notifies the other multihomed PEs attached to the | route notifies the other multihomed PEs attached to the given | |||
given multihomed ES that it has initiated an (x,G) leave group | multihomed ES that it has initiated an (x,G) leave group | |||
synchronization procedure; i.e., it carries the ES-Import RT for | synchronization procedure, i.e., it carries the ES-Import RT for | |||
the ES on which the IGMP Leave Group was received. It also | the ES on which the IGMP Leave Group was received. It also | |||
contains the Maximum Response Time. | contains the Maximum Response Time. | |||
5. When the Maximum Response Timer expires, the PE that has | 5. When the Maximum Response Time timer expires, the PE that has | |||
advertised the IGMP Leave Synch route withdraws it. | advertised the IGMP Leave Synch route withdraws it. | |||
6.2.1. Remote Leave Group Synchronization | 6.2.1. Remote Leave Group Synchronization | |||
When a PE, either DF or non-DF, receives an IGMP Leave Synch route it | When a PE, either DF or non-DF, receives an IGMP Leave Synch route, | |||
installs that route and it starts a timer for (x,G) on the specified | it installs that route and it starts a timer for (x,G) on the | |||
(ES,BD) whose value is set to the Maximum Response Time in the | specified (ES,BD), whose value is set to the Maximum Response Time in | |||
received IGMP Leave Synch route. Note that the receipt of subsequent | the received IGMP Leave Synch route. Note that the receipt of | |||
IGMPv2 Leave Group messages or BGP Leave Synch routes for (x,G) do | subsequent IGMPv2 Leave Group messages or BGP Leave Synch routes for | |||
not change the value of a currently running Maximum Response Time | (x,G) do not change the value of a currently running Maximum Response | |||
timer and are ignored by the PE. | Time timer and are ignored by the PE. | |||
6.2.2. Common Leave Group Synchronization | 6.2.2. Common Leave Group Synchronization | |||
If a PE attached to the multihomed ES receives an IGMP Membership | If a PE attached to the multihomed ES receives an IGMP Membership | |||
Report for (x,G) before the Maximum Response Time timer expires, it | Report for (x,G) before the Maximum Response Time timer expires, it | |||
advertises a BGP IGMP Membership Report Synch route for that (ES,BD). | advertises a BGP IGMP Membership Report Synch route for that (ES,BD). | |||
If it doesn't already have local IGMP Membership Request (x,G) state | If it doesn't already have the local IGMP Membership Request (x,G) | |||
for that (ES,BD), it instantiates local IGMP Membership Request (x,G) | state for that (ES,BD), it instantiates that local IGMP Membership | |||
state. If the DF is not currently advertising (originating) a SMET | Request (x,G) state. If the DF is not currently advertising | |||
route for that (x,G) group in that BD, it does so now. | (originating) a SMET route for that (x,G) group in that BD, it does | |||
so now. | ||||
If a PE attached to the multihomed ES receives an IGMP Membership | If a PE attached to the multihomed ES receives an IGMP Membership | |||
Report Synch route for (x,G) before the Maximum Response Time timer | Report Synch route for (x,G) before the Maximum Response Time timer | |||
expires, it installs that route and if it doesn't already have IGMP | expires, it installs that route, and if it doesn't already have the | |||
Membership Request (x,G) state for that BD on that ES, it | IGMP Membership Request (x,G) state for that BD on that ES, it | |||
instantiates that IGMP Membership Request (x,G) state. If the DF has | instantiates that IGMP Membership Request (x,G) state. If the DF has | |||
not already advertised (originated) a SMET route for that (x,G) group | not already advertised (originated) a SMET route for that (x,G) group | |||
in that BD, it does so now. | in that BD, it does so now. | |||
When the Maximum Response Timer expires a PE that has advertised an | When the Maximum Response Time timer expires, a PE that has | |||
IGMP Leave Synch route, withdraws it. Any PE attached to the | advertised an IGMP Leave Synch route withdraws it. Any PE attached | |||
multihomed ES, that started the Maximum Response Time and has no | to the multihomed ES, which started the Maximum Response Time and has | |||
local IGMP Membership Request (x,G) state and no installed IGMP | no local IGMP Membership Request (x,G) state and no installed IGMP | |||
Membership Report Synch routes, it removes IGMP Membership Request | Membership Report Synch routes, removes the IGMP Membership Request | |||
(x,G) state for that (ES,BD). If the DF no longer has IGMP | (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 | Membership Request (x,G) state for that BD on any ES for which it is | |||
DF, it withdraws its SMET route for that (x,G) group in that BD. | the DF, it withdraws its SMET route for that (x,G) group in that BD. | |||
6.3. Mass Withdraw of Multicast Membership Report Sync route in case of | 6.3. Mass Withdraw of the Multicast Membership Report Synch Route in | |||
failure | Case of Failure | |||
A PE which has received an IGMP Membership Request would have synced | A PE that has received an IGMP Membership Request would have synced | |||
the IGMP Membership Report by the procedure defined in section 6.1. | the IGMP Membership Report by the procedure defined in Section 6.1. | |||
If a PE with local Membership Report state goes down or the PE to CE | If a PE with the local Membership Report state goes down or the PE to | |||
link goes down, it would lead to a mass withdraw of multicast routes. | CE link goes down, it would lead to a mass withdraw of multicast | |||
Remote PEs (PEs where these routes were remote IGMP Membership | routes. Remote PEs (PEs where these routes were remote IGMP | |||
Reports) SHOULD NOT remove the state immediately; instead General | Membership Reports) SHOULD NOT remove the state immediately; instead, | |||
Query SHOULD be generated to refresh the states. There are several | General Query SHOULD be generated to refresh the states. There are | |||
ways to detect failure at a peer, e.g. using IGP next hop tracking or | several ways to detect failure at a peer, e.g., using IGP next-hop | |||
ES route withdraw. | tracking or ES route withdraw. | |||
7. Single-Active Multi-Homing | 7. Single-Active Multihoming | |||
Note that to facilitate state synchronization after failover, the PEs | Note that to facilitate state synchronization after failover, the PEs | |||
attached to a multihomed ES operating in Single-Active redundancy | attached to a multihomed ES operating in Single-Active redundancy | |||
mode SHOULD also coordinate IGMP Membership Report (x,G) state. In | mode SHOULD also coordinate the IGMP Membership Report (x,G) state. | |||
this case all IGMP Membership Report messages are received by the DF | In this case, all IGMP Membership Report messages are received by the | |||
and distributed to the non-DF PEs using the procedures described | DF and distributed to the non-DF PEs using the procedures described | |||
above. | above. | |||
8. Selective Multicast Procedures for IR tunnels | 8. Selective Multicast Procedures for IR Tunnels | |||
If an ingress PE uses ingress replication, then for a given (x,G) | If an ingress PE uses ingress replication, then for a given (x,G) | |||
group in a given BD: | group in a given BD: | |||
1. It sends (x,G) traffic to the set of PEs not supporting IGMP or | 1. It sends (x,G) traffic to the set of PEs not supporting IGMP or | |||
MLD Proxy. This set consists of any PE that has advertised an | MLD Proxies. This set consists of any PE that has advertised an | |||
IMET route for the BD without a Multicast Flags extended | Inclusive Multicast Ethernet Tag (IMET) route for the BD without | |||
community or with a Multicast Flags extended community in which | a Multicast Flags Extended Community or with a Multicast Flags | |||
neither the IGMP Proxy support nor the MLD Proxy support flags | Extended Community in which neither the IGMP Proxy support nor | |||
are set. | the MLD Proxy support flags are set. | |||
2. It sends (x,G) traffic to the set of PEs supporting IGMP or MLD | 2. It sends (x,G) traffic to the set of PEs supporting IGMP or MLD | |||
Proxy and having listeners for that (x,G) group in that BD. This | Proxies and has listeners for that (x,G) group in that BD. This | |||
set consists of any PE that has advertised an IMET route for the | set consists of any PE that has advertised an IMET route for the | |||
BD with a Multicast Flags extended community in which the IGMP | BD with a Multicast Flags Extended Community in which the IGMP | |||
Proxy support and/or the MLD Proxy support flags are set and that | 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. | has advertised a SMET route for that (x,G) group in that BD. | |||
9. BGP Encoding | 9. BGP Encoding | |||
This document defines three new BGP EVPN routes to carry IGMP | This document defines three new BGP EVPN routes to carry IGMP | |||
Membership Reports. The route types are known as: | Membership Reports. The route types are known as: | |||
+ 6 - Selective Multicast Ethernet Tag Route | 6 - Selective Multicast Ethernet Tag Route | |||
+ 7 - Multicast Membership Report Synch Route | 7 - Multicast Membership Report Synch Route | |||
+ 8 - Multicast Leave Synch Route | 8 - Multicast Leave Synch Route | |||
The detailed encoding and procedures for these route types are | The detailed encoding and procedures for these route types are | |||
described in subsequent sections. | described in subsequent sections. | |||
9.1. Selective Multicast Ethernet Tag Route | 9.1. Selective Multicast Ethernet Tag Route | |||
A Selective Multicast Ethernet Tag route type specific EVPN NLRI | A SMET route-type-specific EVPN NLRI consists of the following: | |||
consists of the following: | ||||
+---------------------------------------+ | +---------------------------------------+ | |||
| RD (8 octets) | | | RD (8 octets) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
| Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
| Multicast Source Length (1 octet) | | | Multicast Source Length (1 octet) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
| Multicast Source Address (variable) | | | Multicast Source Address (variable) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
| Multicast Group Length (1 octet) | | | Multicast Group Length (1 octet) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
| Multicast Group Address (Variable) | | | Multicast Group Address (Variable) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
| Originator Router Length (1 octet) | | | Originator Router Length (1 octet) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
| Originator Router Address (variable) | | | Originator Router Address (variable) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
| Flags (1 octet) | | | Flags (1 octet) | | |||
+---------------------------------------+ | +---------------------------------------+ | |||
For the purpose of BGP route key processing, all the fields are | 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 one- | considered to be part of the prefix in the NLRI, except for the | |||
octet flag field. The Flags fields are defined as follows: | 1-octet Flags field. The Flags fields are defined as follows: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
| reserved |IE|v3|v2|v1| | | reserved |IE|v3|v2|v1| | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
o The least significant bit, bit 7 indicates support for IGMP | * The least significant bit (bit 7) indicates support for IGMP | |||
version 1. Since IGMP V1 is being deprecated sender MUST set it | version 1. Since IGMPv1 is being deprecated, the sender MUST set | |||
as 0 for IGMP and receiver MUST ignore it. | it to 0 for IGMP and the receiver MUST ignore it. | |||
o The second least significant bit, bit 6 indicates support for IGMP | * The second least significant bit (bit 6) indicates support for | |||
version 2. | IGMP version 2. | |||
o The third least significant bit, bit 5 indicates support for IGMP | * The third least significant bit (bit 5) indicates support for IGMP | |||
version 3. | version 3. | |||
o The fourth least significant bit, bit 4 indicates whether the | * The fourth least significant bit (bit 4) indicates whether the | |||
(S,G) information carried within the route-type is of an Include | (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). | 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. | The Exclude Group type bit MUST be ignored if bit 5 is not set. | |||
o This EVPN route type is used to carry tenant IGMP multicast group | * This EVPN route type is used to carry tenant IGMP multicast group | |||
information. The flag field assists in distributing IGMP | information. The Flags field assists in distributing the IGMP | |||
Membership Report of a given host for a given multicast route. | Membership Report of a given host for a given multicast route. | |||
The version bits help associate IGMP version of receivers | The version bits help associate the IGMP version of receivers | |||
participating within the EVPN domain. | participating within the EVPN domain. | |||
o The include/exclude (IE) bit helps in creating filters for a given | * The IE bit helps in creating filters for a given multicast route. | |||
multicast route. | ||||
o If route is used for IPv6 (MLD) then bit 7 indicates support for | * If the route is used for IPv6 (MLD), then bit 7 indicates support | |||
MLD version 1. The second least significant bit, bit 6 indicates | for MLD version 1. The second least significant bit (bit 6) | |||
support for MLD version 2. Since there is no MLD version 3, in | indicates support for MLD version 2. Since there is no MLD | |||
case of IPv6 route third least significant bit MUST be 0. In case | version 3, in case of IPv6 routes, the third least significant bit | |||
of IPv6 routes, the fourth least significant bit MUST be ignored | MUST be 0. In case of IPv6 routes, the fourth least significant | |||
if bit 6 is not set. | bit MUST be ignored if bit 6 is not set. | |||
o Reserved bits MUST be set to 0 by sender. And receiver MUST | * Reserved bits MUST be set to 0 by the sender, and the receiver | |||
ignore the Reserved bits. | MUST ignore the Reserved bits. | |||
9.1.1. Constructing the Selective Multicast Ethernet Tag route | 9.1.1. Constructing the Selective Multicast Ethernet Tag Route | |||
This section describes the procedures used to construct the Selective | This section describes the procedures used to construct the SMET | |||
Multicast Ethernet Tag (SMET) route. | route. | |||
The Route Distinguisher (RD) SHOULD be a Type 1 RD [RFC4364]. The | The Route Distinguisher (RD) SHOULD be a Type 1 RD [RFC4364]. The | |||
value field comprises an IP address of the PE (typically, the | value field comprises an IP address of the PE (typically, the | |||
loopback address) followed by a number unique to the PE. | loopback address), followed by a number unique to the PE. | |||
The Ethernet Tag ID MUST be set as procedure defined in [RFC7432]. | The Ethernet Tag ID MUST be set, as per the procedure defined in | |||
[RFC7432]. | ||||
The Multicast Source Length MUST be set to length of the multicast | The Multicast Source Length MUST be set to the length of the | |||
Source address in bits. If the Multicast Source Address field | Multicast Source Address in bits. If the Multicast Source Address | |||
contains an IPv4 address, then the value of the Multicast Source | field contains an IPv4 address, then the value of the Multicast | |||
Length field is 32. If the Multicast Source Address field contains | Source Length field is 32. If the Multicast Source Address field | |||
an IPv6 address, then the value of the Multicast Source Length field | contains an IPv6 address, then the value of the Multicast Source | |||
is 128. In case of a (*,G) Membership Report, the Multicast Source | Length field is 128. In case of a (*,G) Membership Report, the | |||
Length is set to 0. | Multicast Source Length is set to 0. | |||
The Multicast Source Address is the source IP address from the IGMP | The Multicast Source Address is the source IP address from the IGMP | |||
Membership Report. In case of a (*,G), this field is not used. | Membership Report. In case of a (*,G) Membership Report, this field | |||
is not used. | ||||
The Multicast Group Length MUST be set to length of multicast group | The Multicast Group Length MUST be set to the length of the Multicast | |||
address in bits. If the Multicast Group Address field contains an | Group Address in bits. If the Multicast Group Address field contains | |||
IPv4 address, then the value of the Multicast Group Length field is | an IPv4 address, then the value of the Multicast Group Length field | |||
32. If the Multicast Group Address field contains an IPv6 address, | is 32. If the Multicast Group Address field contains an IPv6 | |||
then the value of the Multicast Group Length field is 128. | address, then the value of the Multicast Group Length field is 128. | |||
The Multicast Group Address is the Group address from the IGMP or MLD | The Multicast Group Address is the group address from the IGMP or MLD | |||
Membership Report. | Membership Report. | |||
The Originator Router Length is the length of the Originator Router | The Originator Router Length is the length of the Originator Router | |||
Address in bits. | Address in bits. | |||
The Originator Router Address is the IP address of router originating | The Originator Router Address is the IP address of the router | |||
this route. The SMET Originator Router IP address MUST match that of | originating this route. The SMET Originator Router IP address MUST | |||
the IMET (or S-PMSI AD) route originated for the same EVI by the same | match that of the IMET (or S-PMSI Authentic Data (AD)) route | |||
downstream PE. | originated for the same EVI by the same downstream PE. | |||
The Flags field indicates the version of IGMP protocol from which the | The Flags field indicates the version of IGMP from which the | |||
Membership Report was received. It also indicates whether the | Membership Report was received. It also indicates whether the | |||
multicast group had the INCLUDE or EXCLUDE bit set. | multicast group had the Include/Exclude bit set. | |||
Reserved bits MUST be set to 0. They can be defined in future by | Reserved bits MUST be set to 0. They can be defined by other | |||
other document. | documents in the future. | |||
IGMP is used to receive group membership information from hosts by | IGMP is used to receive group membership information from hosts by | |||
TORs. Upon receiving the hosts expression of interest of a | Top-of-the-Rack (ToR) switches. Upon receiving the host's expression | |||
particular group membership, this information is then forwarded using | of interest in a particular group membership, this information is | |||
SMET route. The NLRI also keeps track of receiver's IGMP protocol | then forwarded using the SMET route. The NLRI also keeps track of | |||
version and any source filtering for a given group membership. All | the receiver's IGMP version and any source filtering for a given | |||
EVPN SMET routes are announced with per- EVI Route Target extended | group membership. All EVPN SMET routes are announced per EVI Route | |||
communities. | Target extended communities (EVI-RT ECs). | |||
9.1.2. Reconstructing IGMP / MLD Membership Reports from Selective | 9.1.2. Reconstructing IGMP/MLD Membership Reports from the Selective | |||
Multicast Route | Multicast Route | |||
This section describes the procedures used to reconstruct IGMP / MLD | This section describes the procedures used to reconstruct IGMP/MLD | |||
Membership Reports from SMET route. | Membership Reports from the SMET route. | |||
o If multicast group length is 32, route would be translated to IGMP | * If the Multicast Group Length is 32, the route is translated to | |||
membership request. If multicast group length is 128, route would | the IGMP Membership Request. If the Multicast Group Length is | |||
be translated to MLD membership request. | 128, the route is translated to an MLD Membership Request. | |||
o Multicast group address field would be translated to IGMP / MLD | * The Multicast Group Address field is translated to the IGMP/MLD | |||
group address. | group address. | |||
o If Multicast source length is set to zero it would be translated | * If the Multicast Source Length is set to 0, it is translated to | |||
to any source (*). If multicast source length is non zero, | any source (*). If the Multicast Source Length is non-zero, the | |||
Multicast source address field would be translated to IGMP / MLD | Multicast Source Address field is translated to the IGMP/MLD | |||
source address. | source address. | |||
o If flag bit 7 is set, it translates Membership report to be IGMP | * If flag bit 7 is set, it translates the Membership Report to be | |||
V1 or MLD V1. | IGMPv1 or MLDv1. | |||
o If flag bit 6 is set, it translates Membership report to be IGMP | * If flag bit 6 is set, it translates the Membership Report to be | |||
V2 or MLD V2. | IGMPv2 or MLDv2. | |||
o Flag bit 5 is only valid for IGMP Membership report and if it is | * Flag bit 5 is only valid for the IGMP Membership Report; if it is | |||
set, it translates to IGMP V3 report. | set, it translates to the IGMPv3 report. | |||
o If IE flag is set, it translate to IGMP / MLD Exclude mode | * If the IE flag is set, it translates to the IGMP/MLD Exclude mode | |||
membership report. If IE flag is not set (zero), it translates to | Membership Report. If the IE flag is not set (0), it translates | |||
Include mode membership report. | to the Include mode Membership Report. | |||
9.1.3. Default Selective Multicast Route | 9.1.3. Default Selective Multicast Route | |||
If there is multicast router connected behind the EVPN domain, the PE | If there is a multicast router connected behind the EVPN domain, the | |||
MAY originate a default SMET (*,*) to get all multicast traffic in | PE MAY originate a default SMET (*,*) to get all multicast traffic in | |||
domain. | the domain. | |||
+--------------+ | +--------------+ | |||
| | | | | | |||
| | | | | | |||
| | +----+ | | | +----+ | |||
| | | |---- H1(*,G1)v2 | | | | |---- H1(*,G1)v2 | |||
| IP/MPLS | | PE1|---- H2(S2,G2)v3 | | IP/MPLS | | PE1|---- H2(S2,G2)v3 | |||
| Network | | |---- S2 | | Network | | |---- S2 | |||
| | | | | | | | | | |||
| | +----+ | | | +----+ | |||
| | | | | | |||
+----+ | | | +----+ | | | |||
+----+ | | | | | +----+ | | | | | |||
| | S1 ---| PE2| | | | | | S1 ---| PE2| | | | |||
|PIM |----R1 ---| | | | | |PIM |----R1 ---| | | | | |||
|ASM | +----+ | | | |ASM | +----+ | | | |||
| | | | | | | | | | |||
+----+ +--------------+ | +----+ +--------------+ | |||
Figure 2: Multicast Router behind EVPN domain | Figure 2: Multicast Router behind the EVPN Domain | |||
Consider the EVPN network of Figure-2, where there is an EVPN | Consider the EVPN network in Figure 2, where there is an EVPN | |||
instance configured across the PEs. Let's consider that PE2 is | instance configured across the PEs. Let's consider that PE2 is | |||
connected to multicast router R1 and there is a network running PIM | connected to multicast router R1 and there is a network running PIM | |||
ASM behind R1. If there are receivers behind the PIM ASM network the | ASM behind R1. If there are receivers behind the PIM ASM network, | |||
PIM Join would be forwarded to the PIM RP (Rendezvous Point). If | the PIM Join would be forwarded to the PIM Rendezvous Point (RP). If | |||
receivers behind PIM ASM network are interested in a multicast flow | receivers behind the PIM ASM network are interested in a multicast | |||
originated by multicast source S2 (behind PE1), it is necessary for | flow originated by multicast source S2 (behind PE1), it is necessary | |||
PE2 to receive multicast traffic. In this case PE2 MUST originate a | for PE2 to receive multicast traffic. In this case, PE2 MUST | |||
(*,*) SMET route to receive all of the multicast traffic in the EVPN | originate a (*,*) SMET route to receive all of the multicast traffic | |||
domain. To generate Wildcards (*,*) routes, the procedure from | in the EVPN domain. To generate wildcard (*,*) routes, the procedure | |||
[RFC6625] MUST be used. | from [RFC6625] MUST be used. | |||
9.2. Multicast Membership Report Synch Route | 9.2. Multicast Membership Report Synch Route | |||
This EVPN route type is used to coordinate IGMP Membership Report | This EVPN route type is used to coordinate the IGMP Membership Report | |||
(x,G) state for a given BD between the PEs attached to a given ES | (x,G) state for a given BD between the PEs attached to a given ES | |||
operating in All- Active (or Single-Active) redundancy mode and it | operating in All-Active (or Single-Active) redundancy mode, and it | |||
consists of following: | consists of the following: | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| RD (8 octets) | | | RD (8 octets) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Ethernet Segment Identifier (10 octets) | | | Ethernet Segment Identifier (10 octets) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Source Length (1 octet) | | | Multicast Source Length (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Source Address (variable) | | | Multicast Source Address (variable) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Group Length (1 octet) | | | Multicast Group Length (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Group Address (Variable) | | | Multicast Group Address (Variable) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Originator Router Length (1 octet) | | | Originator Router Length (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Originator Router Address (variable) | | | Originator Router Address (variable) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Flags (1 octet) | | | Flags (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
For the purpose of BGP route key processing, all the fields are | 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 one- | considered to be part of the prefix in the NLRI, except for the | |||
octet Flags field, whose fields are defined as follows: | 1-octet Flags field, whose fields are defined as follows: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
| reserved |IE|v3|v2|v1| | | reserved |IE|v3|v2|v1| | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
o The least significant bit, bit 7 indicates support for IGMP | * The least significant bit (bit 7) indicates support for IGMP | |||
version 1. | version 1. | |||
o The second least significant bit, bit 6 indicates support for IGMP | * The second least significant bit (bit 6) indicates support for | |||
version 2. | IGMP version 2. | |||
o The third least significant bit, bit 5 indicates support for IGMP | * The third least significant bit (bit 5) indicates support for IGMP | |||
version 3. | version 3. | |||
o The fourth least significant bit, bit 4 indicates whether the (S, | * The fourth least significant bit (bit 4) indicates whether the (S, | |||
G) information carried within the route-type is of Include Group | G) information carried within the route type is of an Include | |||
type (bit value 0) or an Exclude Group type (bit value 1). The | Group type (bit value 0) or an Exclude Group type (bit value 1). | |||
Exclude Group type bit MUST be ignored if bit 5 is not set. | The Exclude Group type bit MUST be ignored if bit 5 is not set. | |||
o Reserved bits MUST be set to 0. | * Reserved bits MUST be set to 0. | |||
The Flags field assists in distributing IGMP Membership Report of a | The Flags field assists in distributing the IGMP Membership Report of | |||
given host for a given multicast route. The version bits help | a given host for a given multicast route. The version bits help | |||
associate IGMP version of receivers participating within the EVPN | associate the IGMP version of receivers participating within the EVPN | |||
domain. The include/exclude bit helps in creating filters for a | domain. The Include/Exclude bit helps in creating filters for a | |||
given multicast route. | given multicast route. | |||
If route is being prepared for IPv6 (MLD) then bit 7 indicates | If the route is being prepared for IPv6 (MLD), then bit 7 indicates | |||
support for MLD version 1. The second least significant bit, bit 6 | support for MLD version 1. The second least significant bit (bit 6) | |||
indicates support for MLD version 2. Since there is no MLD version | indicates support for MLD version 2. Since there is no MLD version | |||
3, in case of IPv6 route third least significant bit MUST be 0. In | 3, in case of the IPv6 route, the third least significant bit MUST be | |||
case of IPv6 route, the fourth least significant bit MUST be ignored | 0. In case of the IPv6 route, the fourth least significant bit MUST | |||
if bit 6 is not set. | be ignored if bit 6 is not set. | |||
9.2.1. Constructing the Multicast Membership Report Synch Route | 9.2.1. Constructing the Multicast Membership Report Synch Route | |||
This section describes the procedures used to construct the IGMP | This section describes the procedures used to construct the IGMP | |||
Membership Report Synch route. Support for these route types is | Membership Report Synch route. Support for these route types is | |||
optional. If a PE does not support this route, then it MUST NOT | optional. If a PE does not support this route, then it MUST NOT | |||
indicate that it supports 'IGMP proxy' in the Multicast Flag extended | indicate that it supports "IGMP Proxy" in the Multicast Flags | |||
community for the EVIs corresponding to its multi-homed Ethernet | Extended Community for the EVIs corresponding to its multihomed ESs. | |||
Segments (ESs). | ||||
An IGMP Membership Report Synch route MUST carry exactly one ES- | An IGMP Membership Report Synch route MUST carry exactly one ES- | |||
Import Route Target extended community, the one that corresponds to | Import Route Target extended community, i.e., the one that | |||
the ES on which the IGMP Membership Report was received. It MUST | corresponds to the ES on which the IGMP Membership Report was | |||
also carry exactly one EVI-RT EC, the one that corresponds to the EVI | received. It MUST also carry exactly one EVI-RT EC, i.e., the one | |||
on which the IGMP Membership Report was received. See Section 9.5 | that corresponds to the EVI on which the IGMP Membership Report was | |||
for details on how to encode and construct the EVI-RT EC. | received. See Section 9.5 for details on how to encode and construct | |||
the EVI-RT EC. | ||||
The Route Distinguisher (RD) SHOULD be a Type 1 RD [RFC4364]. The | The RD SHOULD be Type 1 [RFC4364]. The value field comprises an IP | |||
value field comprises an IP address of the PE (typically, the | address of the PE (typically, the loopback address), followed by a | |||
loopback address) followed by a number unique to the PE. | number unique to the PE. | |||
The Ethernet Segment Identifier (ESI) MUST be set to the 10-octet | The Ethernet Segment Identifier (ESI) MUST be set to the 10-octet | |||
value defined for the ES. | value defined for the ES. | |||
The Ethernet Tag ID MUST be set as per procedure defined in | The Ethernet Tag ID MUST be set, as per the procedure defined in | |||
[RFC7432]. | [RFC7432]. | |||
The Multicast Source length MUST be set to length of Multicast Source | The Multicast Source Length MUST be set to the length of the | |||
address in bits. If the Multicast Source field contains an IPv4 | Multicast Source Address in bits. If the Multicast Source field | |||
address, then the value of the Multicast Source Length field is 32. | contains an IPv4 address, then the value of the Multicast Source | |||
If the Multicast Source field contains an IPv6 address, then the | Length field is 32. If the Multicast Source field contains an IPv6 | |||
value of the Multicast Source Length field is 128. In case of a | address, then the value of the Multicast Source Length field is 128. | |||
(*,G) Membership Report, the Multicast Source Length is set to 0. | In case of a (*,G) Membership Report, the Multicast Source Length is | |||
set to 0. | ||||
The Multicast Source is the Source IP address of the IGMP Membership | The Multicast Source is the source IP address of the IGMP Membership | |||
Report. In case of a (*,G) Membership Report, this field does not | Report. In case of a (*,G) Membership Report, this field does not | |||
exist. | exist. | |||
The Multicast Group length MUST be set to length of multicast group | The Multicast Group Length MUST be set to the length of the Multicast | |||
address in bits. If the Multicast Group field contains an IPv4 | Group Address in bits. If the Multicast Group field contains an IPv4 | |||
address, then the value of the Multicast Group Length field is 32. | address, then the value of the Multicast Group Length field is 32. | |||
If the Multicast Group field contains an IPv6 address, then the value | If the Multicast Group field contains an IPv6 address, then the value | |||
of the Multicast Group Length field is 128. | of the Multicast Group Length field is 128. | |||
The Multicast Group is the Group address of the IGMP Membership | The Multicast Group is the group address of the IGMP Membership | |||
Report. | Report. | |||
The Originator Router Length is the length of the Originator Router | The Originator Router Length is the length of the Originator Router | |||
address in bits. | Address in bits. | |||
The Originator Router Address is the IP address of Router Originating | The Originator Router Address is the IP address of the router | |||
the prefix. | originating the prefix. | |||
The Flags field indicates the version of IGMP protocol from which the | The Flags field indicates the version of IGMP from which the | |||
Membership Report was received. It also indicates whether the | Membership Report was received. It also indicates whether the | |||
multicast group had INCLUDE or EXCLUDE bit set. | multicast group had the Include/Exclude bit set. | |||
Reserved bits MUST be set to 0. | Reserved bits MUST be set to 0. | |||
9.2.2. Reconstructing IGMP / MLD Membership Reports from Multicast | 9.2.2. Reconstructing IGMP/MLD Membership Reports from a Multicast | |||
Membership Report Sync Route | Membership Report Synch Route | |||
This section describes the procedures used to reconstruct IGMP / MLD | This section describes the procedures used to reconstruct IGMP/MLD | |||
Membership Reports from Multicast Membership Report Sync route. | Membership Reports from the Multicast Membership Report Synch route. | |||
o If multicast group length is 32, route would be translated to IGMP | * If the Multicast Group Length is 32, the route is translated to | |||
membership request. If multicast group length is 128, route would | the IGMP Membership Request. If the Multicast Group Length is | |||
be translated to MLD membership request. | 128, the route is translated to an MLD Membership Request. | |||
o Multicast group address field would be translated to IGMP / MLD | * The Multicast Group Address field is translated to the IGMP/MLD | |||
group address. | group address. | |||
o If Multicast source length is set to zero it would be translated | * If the Multicast Source Length is set to 0, it is translated to | |||
to any source (*). If multicast source length is non zero, | any source (*). If the Multicast Source Length is non-zero, the | |||
Multicast source address field would be translated to IGMP / MLD | Multicast Source Address field is translated to the IGMP/MLD | |||
source address. | source address. | |||
o If flag bit 7 is set, it translates Membership report to be IGMP | * If flag bit 7 is set, it translates the Membership Report to be | |||
V1 or MLD V1. | IGMPv1 or MLDv1. | |||
o If flag bit 6 is set, it translates Membership report to be IGMP | * If flag bit 6 is set, it translates the Membership Report to be | |||
V2 or MLD V2. | IGMPv2 or MLDv2. | |||
o Flag bit 5 is only valid for IGMP Membership report and if it is | * Flag bit 5 is only valid for the IGMP Membership Report; if it is | |||
set, it translates to IGMP V3 report. | set, it translates to the IGMPv3 report. | |||
o If IE flag is set, it translate to IGMP / MLD Exclude mode | * If the IE flag is set, it translates to the IGMP/MLD Exclude mode | |||
membership report. If IE flag is not set (zero), it translates to | Membership Report. If the IE flag is not set (0), it translates | |||
Include mode membership report. | to the Include mode Membership Report. | |||
9.3. Multicast Leave Synch Route | 9.3. Multicast Leave Synch Route | |||
This EVPN route type is used to coordinate IGMP Leave Group (x,G) | This EVPN route type is used to coordinate the IGMP Leave Group (x,G) | |||
state for a given BD between the PEs attached to a given ES operating | state for a given BD between the PEs attached to a given ES operating | |||
in All-Active (or Single-Active) redundancy mode and it consists of | in an All-Active (or Single-Active) redundancy mode, and it consists | |||
following: | of the following: | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| RD (8 octets) | | | RD (8 octets) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Ethernet Segment Identifier (10 octets) | | | Ethernet Segment Identifier (10 octets) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Ethernet Tag ID (4 octets) | | | Ethernet Tag ID (4 octets) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Source Length (1 octet) | | | Multicast Source Length (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Source Address (variable) | | | Multicast Source Address (variable) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Group Length (1 octet) | | | Multicast Group Length (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Multicast Group Address (Variable) | | | Multicast Group Address (Variable) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Originator Router Length (1 octet) | | | Originator Router Length (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Originator Router Address (variable) | | | Originator Router Address (variable) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Reserved (4 octet) | | | Reserved (4 octets) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Maximum Response Time (1 octet) | | | Maximum Response Time (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
| Flags (1 octet) | | | Flags (1 octet) | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
For the purpose of BGP route key processing, all the fields are | 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 | considered to be part of the prefix in the NLRI, except for the | |||
Reserved, Maximum Response Time and the one-octet Flags field, whose | Reserved, Maximum Response Time, and 1-octet Flags fields, which are | |||
fields are defined as follows: | defined as follows: | |||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
| reserved |IE|v3|v2|v1| | | reserved |IE|v3|v2|v1| | |||
+--+--+--+--+--+--+--+--+ | +--+--+--+--+--+--+--+--+ | |||
o The least significant bit, bit 7 indicates support for IGMP | * The least significant bit (bit 7) indicates support for IGMP | |||
version 1. | version 1. | |||
o The second least significant bit, bit 6 indicates support for IGMP | * The second least significant bit (bit 6) indicates support for | |||
version 2. | IGMP version 2. | |||
o The third least significant bit, bit 5 indicates support for IGMP | * The third least significant bit (bit 5) indicates support for IGMP | |||
version 3. | version 3. | |||
o The fourth least significant bit, bit 4 indicates whether the (S, | * The fourth least significant bit (bit 4) indicates whether the (S, | |||
G) information carried within the route-type is of Include Group | G) information carried within the route type is of an Include | |||
type (bit value 0) or an Exclude Group type (bit value 1). The | Group type (bit value 0) or an Exclude Group type (bit value 1). | |||
Exclude Group type bit MUST be ignored if bit 5 is not set. | The Exclude Group type bit MUST be ignored if bit 5 is not set. | |||
o Reserved bits MUST be set to 0. They can be defined in future by | * Reserved bits MUST be set to 0. They can be defined by other | |||
other document. | documents in the future. | |||
The Flags field assists in distributing IGMP Membership Report of a | The Flags field assists in distributing the IGMP Membership Report of | |||
given host for a given multicast route. The version bits help | a given host for a given multicast route. The version bits help | |||
associate IGMP version of receivers participating within the EVPN | associate the IGMP version of the receivers participating within the | |||
domain. The include/exclude bit helps in creating filters for a | EVPN domain. The Include/Exclude bit helps in creating filters for a | |||
given multicast route. | given multicast route. | |||
If route is being prepared for IPv6 (MLD) then bit 7 indicates | If the route is being prepared for IPv6 (MLD), then bit 7 indicates | |||
support for MLD version 1. The second least significant bit, bit 6 | support for MLD version 1. The second least significant bit (bit 6) | |||
indicates support for MLD version 2. Since there is no MLD version | indicates support for MLD version 2. Since there is no MLD version | |||
3, in case of IPv6 route third least significant bit MUST be 0. In | 3, in case of the IPv6 route, the third least significant bit MUST be | |||
case of IPv6 route, the fourth least significant bit MUST be ignored | 0. In case of the IPv6 route, the fourth least significant bit MUST | |||
if bit 6 is not set. | be ignored if bit 6 is not set. | |||
Reserved bits in flag MUST be set to 0. They can be defined in | Reserved bits in the flag MUST be set to 0. They can be defined by | |||
future by other document. | other documents in the future. | |||
9.3.1. Constructing the Multicast Leave Synch Route | 9.3.1. Constructing the Multicast Leave Synch Route | |||
This section describes the procedures used to construct the IGMP | This section describes the procedures used to construct the IGMP | |||
Leave Synch route. Support for these route types is optional. If a | Leave Synch route. Support for these route types is optional. If a | |||
PE does not support this route, then it MUST NOT indicate that it | PE does not support this route, then it MUST NOT indicate that it | |||
supports 'IGMP proxy' in Multicast Flag extended community for the | supports "IGMP Proxy" in the Multicast Flags Extended Community for | |||
EVIs corresponding to its multi-homed Ethernet Segments. | the EVIs corresponding to its multihomed Ethernet segments. | |||
An IGMP Leave Synch route MUST carry exactly one ES-Import Route | An IGMP Leave Synch route MUST carry exactly one ES-Import Route | |||
Target extended community, the one that corresponds to the ES on | Target extended community, i.e., the one that corresponds to the ES | |||
which the IGMP Leave was received. It MUST also carry exactly one | on which the IGMP Leave was received. It MUST also carry exactly one | |||
EVI-RT EC, the one that corresponds to the EVI on which the IGMP | EVI-RT EC, i.e., the one that corresponds to the EVI on which the | |||
Leave was received. See Section 9.5 for details on how to form the | IGMP Leave was received. See Section 9.5 for details on how to form | |||
EVI-RT EC. | the EVI-RT EC. | |||
The Route Distinguisher (RD) SHOULD be a Type 1 RD [RFC4364]. The | The RD SHOULD be Type 1 [RFC4364]. The value field comprises an IP | |||
value field comprises an IP address of the PE (typically, the | address of the PE (typically, the loopback address), followed by a | |||
loopback address) followed by a number unique to the PE. | number unique to the PE. | |||
The Ethernet Segment Identifier (ESI) MUST be set to the 10-octet | The ESI MUST be set to the 10-octet value defined for the ES. | |||
value defined for the ES. | ||||
The Ethernet Tag ID MUST be set as per procedure defined in | The Ethernet Tag ID MUST be set, as per the procedure defined in | |||
[RFC7432]. | [RFC7432]. | |||
The Multicast Source length MUST be set to length of multicast source | The Multicast Source Length MUST be set to the length of the | |||
address in bits. If the Multicast Source field contains an IPv4 | Multicast Source Address in bits. If the Multicast Source field | |||
address, then the value of the Multicast Source Length field is 32. | contains an IPv4 address, then the value of the Multicast Source | |||
If the Multicast Source field contains an IPv6 address, then the | Length field is 32. If the Multicast Source field contains an IPv6 | |||
value of the Multicast Source Length field is 128. In case of a | address, then the value of the Multicast Source Length field is 128. | |||
(*,G) Membership Report, the Multicast Source Length is set to 0. | In case of a (*,G) Membership Report, the Multicast Source Length is | |||
set to 0. | ||||
The Multicast Source is the Source IP address of the IGMP Membership | The Multicast Source is the source IP address of the IGMP Membership | |||
Report. In case of a (*,G) Membership Report, this field does not | Report. In case of a (*,G) Membership Report, this field does not | |||
exist. | exist. | |||
The Multicast Group length MUST be set to length of multicast group | The Multicast Group Length MUST be set to the length of the Multicast | |||
address in bits. If the Multicast Group field contains an IPv4 | Group Address in bits. If the Multicast Group field contains an IPv4 | |||
address, then the value of the Multicast Group Length field is 32. | address, then the value of the Multicast Group Length field is 32. | |||
If the Multicast Group field contains an IPv6 address, then the value | If the Multicast Group field contains an IPv6 address, then the value | |||
of the Multicast Group Length field is 128. | of the Multicast Group Length field is 128. | |||
The Multicast Group is the Group address of the IGMP Membership | The Multicast Group is the group address of the IGMP Membership | |||
Report. | Report. | |||
The Originator Router Length is the length of the Originator Router | The Originator Router Length is the length of the Originator Router | |||
address in bits. | Address in bits. | |||
The Originator Router Address is the IP address of Router Originating | The Originator Router Address is the IP address of the router | |||
the prefix. | originating the prefix. | |||
Reserved field is not part of the route key. The originator MUST set | The Reserved field is not part of the route key. The originator MUST | |||
the reserved field to Zero , the receiver SHOULD ignore it and if it | set the Reserved field to 0; the receiver SHOULD ignore it, and if it | |||
needs to be propagated, it MUST propagate it unchanged | needs to be propagated, it MUST propagate it unchanged. | |||
Maximum Response Time is value to be used while sending query as | The Maximum Response Time is the value to be used while sending a | |||
defined in [RFC2236] | query, as defined in [RFC2236]. | |||
The Flags field indicates the version of IGMP protocol from which the | The Flags field indicates the version of IGMP from which the | |||
Membership Report was received. It also indicates whether the | Membership Report was received. It also indicates whether the | |||
multicast group had INCLUDE or EXCLUDE bit set. | multicast group had an Include/Exclude bit set. | |||
9.3.2. Reconstructing IGMP / MLD Leave from Multicast Leave Sync Route | 9.3.2. Reconstructing IGMP/MLD Leave from a Multicast Leave Synch Route | |||
This section describes the procedures used to reconstruct IGMP / MLD | This section describes the procedures used to reconstruct IGMP/MLD | |||
Leave from Multicast Leave Sync route. | Leave from the Multicast Leave Synch route. | |||
o If multicast group length is 32, route would be translated to IGMP | * If the Multicast Group Length is 32, the route is translated to | |||
Leave. If multicast group length is 128, route would be | IGMP Leave. If the Multicast Group Length is 128, the route is | |||
translated to MLD Leave. | translated to MLD Leave. | |||
o Multicast group address field would be translated to IGMP / MLD | * The Multicast Group Address field is translated to an IGMP/MLD | |||
group address. | group address. | |||
o If Multicast source length is set to zero it would be translated | * If the Multicast Source Length is set to 0, it is translated to | |||
to any source (*). If multicast source length is non zero, | any source (*). If the Multicast Source Length is non-zero, the | |||
Multicast source address field would be translated to IGMP / MLD | Multicast Source Address field is translated to the IGMP/MLD | |||
source address. | source address. | |||
o If flag bit 7 is set, it translates Membership report to be IGMP | * If flag bit 7 is set, it translates the Membership Report to be | |||
V1 or MLD V1. | IGMPv1 or MLDv1. | |||
o If flag bit 6 is set, it translates Membership report to be IGMP | ||||
V2 or MLD V2. | ||||
o Flag bit 5 is only valid for IGMP Membership report and if it is | * If flag bit 6 is set, it translates the Membership Report to be | |||
set, it translates to IGMP V3 report. | IGMPv2 or MLDv2. | |||
o If IE flag is set, it translate to IGMP / MLD Exclude mode Leave. | * Flag bit 5 is only valid for the IGMP Membership Report; if it is | |||
If IE flag is not set (zero), it translates to Include mode Leave. | set, it translates to the IGMPv3 report. | |||
o | * If the IE flag is set, it translates to the IGMP/MLD Exclude mode | |||
Leave. If the IE flag is not set (0), it translates to the | ||||
Include mode Leave. | ||||
9.4. Multicast Flags Extended Community | 9.4. Multicast Flags Extended Community | |||
The 'Multicast Flags' extended community is a new EVPN extended | The Multicast Flags Extended Community is a new EVPN Extended | |||
community. EVPN extended communities are transitive extended | Community. EVPN Extended Communities are transitive extended | |||
communities with a Type field value of 6. IANA will assign a Sub- | communities with a Type Value of 0x06. IANA has assigned 0x09 to | |||
Type from the 'EVPN Extended Community Sub-Types' registry. | Multicast Flags Extended Community in the "EVPN Extended Community | |||
Sub-Types" subregistry. | ||||
A PE that supports IGMP and/or MLD Proxy on a given BD MUST attach | A PE that supports IGMP and/or the MLD Proxy on a given BD MUST | |||
this extended community to the IMET route it advertises advertises | attach this extended community to the IMET route it advertises for | |||
for that BD and it MUST set the IGMP and/or MLD Proxy Support flags | that BD, and it MUST set the IGMP and/or MLD Proxy Support flags to | |||
to 1. Note that an [RFC7432] compliant PE will not advertise this | 1. Note that a PE compliant with [RFC7432] will not advertise this | |||
extended community so its absence indicates that the advertising PE | extended community, so its absence indicates that the advertising PE | |||
does not support either IGMP or MLD Proxy. | does not support either IGMP or MLD Proxies. | |||
The advertisement of this extended community enables more efficient | The advertisement of this extended community enables a more efficient | |||
multicast tunnel setup from the source PE specially for ingress | multicast tunnel setup from the source PE specially for ingress | |||
replication - i.e., if an egress PE supports IGMP proxy but doesn't | replication, i.e., if an egress PE supports the IGMP Proxy but | |||
have any interest in a given (x,G), it advertises its IGMP proxy | doesn't have any interest in a given (x,G), it advertises its IGMP | |||
capability using this extended community but it does not advertise | Proxy capability using this extended community, but it does not | |||
any SMET route for that (x,G). When the source PE (ingress PE) | advertise any SMET route for that (x,G). When the source PE (ingress | |||
receives such advertisements from the egress PE, it does not | 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 that egress PE; however, it does | |||
replicate the multicast traffic to the egress PEs that don't | replicate the multicast traffic to the egress PEs that don't | |||
advertise such capability even if they don't have any interests in | advertise such capability, even if they don't have any interests in | |||
that (x,G). | that (x,G). | |||
A Multicast Flags extended community is encoded as an 8-octet value, | A Multicast Flags Extended Community is encoded as an 8-octet value | |||
as follows: | as follows: | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type=0x06 |Sub-Type=0x09 | Flags (2 Octets) |M|I| | | Type=0x06 |Sub-Type=0x09 | Flags (2 Octets) |M|I| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reserved=0 | | | Reserved=0 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
The low-order (lease significant) two bits are defined as the "IGMP | The low-order (least significant) 2 bits are defined as the "IGMP | |||
Proxy Support and MLD Proxy Support" bit. The absence of this | Proxy Support" and "MLD Proxy Support" bits (see Section 12.3. The | |||
extended community also means that the PE does not support IGMP | absence of this extended community also means that the PE does not | |||
proxy. where: | support the IGMP Proxy, where: | |||
o Type is 0x06 as registered with IANA for EVPN Extended | * The Type is 0x06, as registered with IANA for EVPN Extended | |||
Communities. | Communities. | |||
o Sub-Type : 0x09 | * The Sub-Type is 0x09. | |||
o Flags are two Octets value. | * Flags are 2-octet values. | |||
* Bit 15 (shown as I) defines IGMP Proxy Support. Value of 1 for | - Bit 15 (shown as I) defines IGMP Proxy Support. The value of 1 | |||
bit 15 means that PE supports IGMP Proxy. Value of 0 for bit | for bit 15 means that the PE supports the IGMP Proxy. The | |||
15 means that PE does not supports IGMP Proxy. | value of 0 for bit 15 means that the PE does not support the | |||
IGMP Proxy. | ||||
* Bit 14 (shown as M) defines MLD Proxy Support. Value of 1 for | - Bit 14 (shown as M) defines MLD Proxy Support. The value of 1 | |||
bit 14 means that PE supports MLD Proxy. Value of 0 for bit 14 | for bit 14 means that the PE supports the MLD Proxy. The value | |||
means that PE does not support MLD proxy. | of 0 for bit 14 means that the PE does not support the MLD | |||
Proxy. | ||||
* Bit 0 to 13 are reserved for future. Sender MUST set it 0 and | - Bits 0 to 13 are reserved for the future. The sender MUST set | |||
receiver MUST ignore it. | it to 0, and the receiver MUST ignore it. | |||
o Reserved bits are set to 0. Sender MUST set it to 0 and receiver | * Reserved bits are set to 0. The sender MUST set it to 0, and the | |||
MUST ignore it. | receiver MUST ignore it. | |||
If a router does not support this specification, it MUST NOT add | If a router does not support this specification, it MUST NOT add the | |||
Multicast Flags Extended Community in BGP route. A router receiving | Multicast Flags Extended Community in the BGP route. When a router | |||
BGP update, if M and I both flag are zero (0), the router MUST treat | receives a BGP update, if both M and I flags are 0, the router MUST | |||
this Update as malformed. Receiver of such update MUST ignore the | treat this update as malformed. The receiver of such an update MUST | |||
extended community. | ignore the extended community. | |||
9.5. EVI-RT Extended Community | 9.5. EVI-RT Extended Community | |||
In EVPN, every EVI is associated with one or more Route Targets | In EVPN, every EVI is associated with one or more Route Targets. | |||
(RTs). These Route Targets serve two functions: | These RTs serve two functions: | |||
1. Distribution control: RTs control the distribution of the routes. | 1. Distribution control: RTs control the distribution of the routes. | |||
If a route carries the RT associated with a particular EVI, it | If a route carries the RT associated with a particular EVI, it | |||
will be distributed to all the PEs on which that EVI exists. | will be distributed to all the PEs on which that EVI exists. | |||
2. EVI identification: Once a route has been received by a | 2. EVI identification: Once a route has been received by a | |||
particular PE, the RT is used to identify the EVI to which it | particular PE, the RT is used to identify the EVI to which it | |||
applies. | applies. | |||
An IGMP Membership Report Synch or IGMP Leave Synch route is | An IGMP Membership Report Synch or IGMP Leave Synch route is | |||
associated with a particular combination of ES and EVI. These routes | associated with a particular combination of ES and EVI. These routes | |||
need to be distributed only to PEs that are attached to the | need to be distributed only to PEs that are attached to the | |||
associated ES. Therefore these routes carry the ES-Import RT for | associated ES. Therefore, these routes carry the ES-Import RT for | |||
that ES. | that ES. | |||
Since an IGMP Membership Report Synch or IGMP Leave Synch route does | 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 | 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. | exists, these routes cannot carry the RT associated with that EVI. | |||
Therefore, when such a route arrives at a particular PE, the route's | 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. | 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. | Some other means of associating the route with an EVI must be used. | |||
This document specifies four new Extended Communities (EC) that can | This document specifies four new ECs that can be used to identify the | |||
be used to identify the EVI with which a route is associated, but | EVI with which a route is associated but do not have any effect on | |||
which do not have any effect on the distribution of the route. These | the distribution of the route. These new ECs are known as "Type 0 | |||
new ECs are known as the "Type 0 EVI-RT EC", the "Type 1 EVI-RT EC", | EVI-RT EC", "Type 1 EVI-RT EC", "Type 2 EVI-RT EC", and "Type 3 EVI- | |||
the "Type 2 EVI-RT EC", and the "Type 3 EVI-RT EC". | RT EC". | |||
1. A Type 0 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xA. | 1. A Type 0 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xA. | |||
2. A Type 1 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xB. | 2. A Type 1 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xB. | |||
3. A Type 2 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xC. | 3. A Type 2 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xC. | |||
4. A Type 3 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xD | 4. A Type 3 EVI-RT EC is an EVPN EC (type 6) of sub-type 0xD | |||
Each IGMP Membership Report Synch or IGMP Leave Synch route MUST | Each IGMP Membership Report Synch or IGMP Leave Synch route MUST | |||
carry exactly one EVI-RT EC. The EVI-RT EC carried by a particular | carry exactly one EVI-RT EC. The EVI-RT EC carried by a particular | |||
route is constructed as follows. Each such route is the result of | route is constructed as follows. Each such route is the result of | |||
having received an IGMP Membership Report or an IGMP Leave message | having received an IGMP Membership Report or an IGMP Leave message | |||
from a particular BD. The route is said to be associated with that | 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 | BD. For each BD, there is a corresponding RT that is used to ensure | |||
that routes "about" that BD are distributed to all PEs attached to | that routes "about" that BD are distributed to all PEs attached to | |||
that BD. So suppose a given IGMP Membership Report Synch or Leave | that BD. So suppose a given IGMP Membership Report Synch or Leave | |||
Synch route is associated with a given BD, say BD1, and suppose that | Synch route is associated with a given BD, say BD1, and suppose that | |||
the corresponding RT for BD1 is RT1. Then: | the corresponding RT for BD1 is RT1. Then: | |||
o 0. If RT1 is a Transitive Two-Octet AS-specific EC, then the EVI- | * If RT1 is a Transitive Two-Octet AS-specific EC, then the EVI-RT | |||
RT EC carried by the route is a Type 0 EVI-RT EC. The value field | EC carried by the route is a Type 0 EVI-RT EC. The value field of | |||
of the Type 0 EVI-RT EC is identical to the value field of RT1. | the Type 0 EVI-RT EC is identical to the value field of RT1. | |||
o 1. If RT1 is a Transitive IPv4-Address-specific EC, then the EVI- | * If RT1 is a Transitive IPv4-Address-specific EC, then the EVI-RT | |||
RT EC carried by the route is a Type 1 EVI-RT EC. The value field | EC carried by the route is a Type 1 EVI-RT EC. The value field of | |||
of the Type 1 EVI-RT EC is identical to the value field of RT1. | the Type 1 EVI-RT EC is identical to the value field of RT1. | |||
o 2. If RT1 is a Transitive Four-Octet-specific EC, then the EVI-RT | * If RT1 is a Transitive Four-Octet AS-specific EC, then the EVI-RT | |||
EC carried by the route is a Type 2 EVI-RT EC. The value field of | 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. | the Type 2 EVI-RT EC is identical to the value field of RT1. | |||
o 3. If RT1 is a Transitive IPv6-Address-specific EC, then the EVI- | * If RT1 is a Transitive IPv6-Address-specific EC, then the EVI-RT | |||
RT EC carried by the route is a Type 3 EVI-RT EC. The value field | EC carried by the route is a Type 3 EVI-RT EC. The value field of | |||
of the Type 3 EVI-RT EC is identical to the value field of RT1. | the Type 3 EVI-RT EC is identical to the value field of RT1. | |||
An IGMP Membership Report Synch or Leave Synch route MUST carry | An IGMP Membership Report Synch or Leave Synch route MUST carry | |||
exactly one EVI-RT EC. | exactly one EVI-RT EC. | |||
Suppose a PE receives a particular IGMP Membership Report Synch or | Suppose a PE receives a particular IGMP Membership Report Synch or | |||
IGMP Leave Synch route, say R1, and suppose that R1 carries an ES- | IGMP 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 | Import RT that is one of the PE's Import RTs. If R1 has no EVI-RT EC | |||
EC, or has more than one EVI-RT EC, the PE MUST apply the "treat-as- | or has more than one EVI-RT EC, the PE MUST apply the "treat-as- | |||
withdraw" procedure of [RFC7606]. | withdraw" procedure per [RFC7606]. | |||
Note that an EVI-RT EC is not a Route Target Extended Community, is | Note that an EVI-RT EC is not a Route Target extended community, is | |||
not visible to the RT Constrain mechanism [RFC4684], and is not | not visible to the RT Constrain mechanism [RFC4684], and is not | |||
intended to influence the propagation of routes by BGP. | intended to influence the propagation of routes by BGP. | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type=0x06 | Sub-Type=n | RT associated with EVI | | | Type=0x06 | Sub-Type=n | RT associated with EVI | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| RT associated with the EVI (cont.) | | | RT associated with the EVI (cont.) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Where the value of 'n' is 0x0A, 0x0B, 0x0C, or 0x0D corresponding to | The value of "n" is 0x0A, 0x0B, 0x0C, or 0x0D, corresponding to EVI- | |||
EVI-RT type 0, 1, 2, or 3 respectively. | RT types 0, 1, 2, or 3, respectively. | |||
9.6. Rewriting of RT ECs and EVI-RT ECs by ASBRs | 9.6. Rewriting of RT ECs and EVI-RT ECs by ASBRs | |||
There are certain situations in which an ES is attached to a set of | 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 | 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 | provider. In this situation, the RT that corresponds to a particular | |||
particular EVI may be different in each AS. If a route is propagated | EVI may be different in each AS. If a route is propagated from AS1 | |||
from AS1 to AS2, an ASBR at the AS1/AS2 border may be provisioned | to AS2, an ASBR at the AS1/AS2 border may be configured with a policy | |||
with a policy that removes the RTs that are meaningful in AS1 and | that replaces the EVI RTs for AS1 with the corresponding EVI RTs for | |||
replaces them with the corresponding (i.e., RTs corresponding to the | AS2. This is known as RT-rewriting. | |||
same EVIs) RTs that are meaningful in AS2. This is known as RT- | ||||
rewriting. | ||||
Note that if a given route's RTs are rewritten, and the route carries | If an ASBR is configured to perform RT-rewriting of the EVI RTs in | |||
an EVI-RT EC, the EVI-RT EC needs to be rewritten as well. | 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. | ||||
9.7. BGP Error Handling | 9.7. BGP Error Handling | |||
If a received BGP update contains Flags not in accordance with IGMP/ | If a received BGP update contains Flags not in accordance with the | |||
MLD version-X expectation, the PE MUST apply the "treat-as-withdraw" | IGMP/MLD version-X expectation, the PE MUST apply the "treat-as- | |||
procedure as per [RFC7606] | withdraw" procedure per [RFC7606]. | |||
If a received BGP update is malformed such that BGP route keys cannot | If a received BGP update is malformed such that BGP route keys cannot | |||
be extracted, then BGP update MUST be considered as invalid. | be extracted, then the BGP update MUST be considered invalid. The | |||
Receiving PE MUST apply the "Session reset" procedure of [RFC7606]. | receiving PE MUST apply the "session reset" procedure per [RFC7606]. | |||
10. IGMP Version 1 Membership Report | 10. IGMP Version 1 Membership Report | |||
This document does not provide any detail about IGMPv1 processing. | This document does not provide any detail about IGMPv1 processing. | |||
Implementations are expected to only use IGMPv2 and above for IPv4 | Implementations are expected to only use IGMPv2 and above for IPv4 | |||
and MLDv1 and above for IPv6. IGMPv1 routes are considered invalid | and MLDv1 and above for IPv6. IGMPv1 routes are considered invalid, | |||
and the PE MUST apply the "treat-as-withdraw" procedure as per | and the PE MUST apply the "treat-as-withdraw" procedure per | |||
[RFC7606]. | [RFC7606]. | |||
11. Security Considerations | 11. Security Considerations | |||
This document describes a means to efficiently operate IGMP and MLD | This document describes a means to efficiently operate IGMP and MLD | |||
on a subnet constructed across multiple PODs or DCs via an EVPN | on a subnet constructed across multiple PODs or DCs via an EVPN | |||
solution. The security considerations for the operation of the | solution. The security considerations for the operation of the | |||
underlying EVPN and BGP substrate are described in [RFC7432], and | underlying EVPN and BGP substrates are described in [RFC7432], and | |||
specific multicast considerations are outlined in [RFC6513] and | specific multicast considerations are outlined in [RFC6513] and | |||
[RFC6514]. The EVPN and associated IGMP proxy provides a single | [RFC6514]. The EVPN and associated IGMP Proxy provides a single | |||
broadcast domain so the same security considerations of IGMPv2 | broadcast domain so the same security considerations of IGMPv2 | |||
[RFC2236], [RFC3376], MLD [RFC2710], or MLDv2 [RFC3810] apply. | [RFC2236], IGMPv3 [RFC3376], MLD [RFC2710], or MLDv2 [RFC3810] apply. | |||
12. IANA Considerations | 12. IANA Considerations | |||
12.1. EVPN Extended Community Sub-Types Registrations | 12.1. EVPN Extended Community Sub-Types Registration | |||
IANA has allocated the following codepoints from the EVPN Extended | ||||
Community Sub-Types sub-registry of the BGP Extended Communities | ||||
registry. | ||||
0x09 Multicast Flags Extended Community [this document] | ||||
0x0A EVI-RT Type 0 [this document] | ||||
0x0B EVI-RT Type 1 [this document] | ||||
0x0C EVI-RT Type 2 [this document] | ||||
IANA is requested to allocate a new codepoint from the EVPN Extended | ||||
Community sub-types registry for the following. | ||||
0x0D EVI-RT Type 3 [this document] | ||||
12.2. EVPN Route Type Registration | ||||
IANA has allocated the following EVPN route types from the EVPN Route | ||||
Type registry. | ||||
6 - Selective Multicast Ethernet Tag Route | IANA has allocated the following codepoints in the "EVPN Extended | |||
7 - Multicast Membership Report Synch Route | Community Sub-Types" subregistry under the "Border Gateway Protocol | |||
8 - Multicast Leave Synch Route | (BGP) Extended Communities" registry. | |||
12.3. Multicast Flags Extended Community Registry | +================+====================================+===========+ | |||
| Sub-Type Value | Name | Reference | | ||||
+================+====================================+===========+ | ||||
| 0x09 | Multicast Flags Extended Community | RFC 9251 | | ||||
+----------------+------------------------------------+-----------+ | ||||
| 0x0A | EVI-RT Type 0 | RFC 9251 | | ||||
+----------------+------------------------------------+-----------+ | ||||
| 0x0B | EVI-RT Type 1 | RFC 9251 | | ||||
+----------------+------------------------------------+-----------+ | ||||
| 0x0C | EVI-RT Type 2 | RFC 9251 | | ||||
+----------------+------------------------------------+-----------+ | ||||
| 0x0D | EVI-RT Type 3 | RFC 9251 | | ||||
+----------------+------------------------------------+-----------+ | ||||
The Multicast Flags Extended Community contains a 16-bit Flags field. | Table 1: EVPN Extended Community Sub-Types Subregistry | |||
The bits are numbered 0-15, from high-order to low-order. | Allocated Codepoints | |||
The registry should be initialized as follows: | 12.2. EVPN Route Types Registration | |||
Bit Name Reference Change Controller | IANA has allocated the following EVPN route types in the "EVPN Route | |||
---- -------------- ------------- ------------------ | Types" subregistry. | |||
0 - 13 Unassigned | ||||
14 MLD Proxy Support This document. IETF | ||||
15 IGMP Proxy Support This document IETF | ||||
The registration policy should be "First Come First Served". | 6 - Selective Multicast Ethernet Tag Route | |||
13. Acknowledgement | 7 - Multicast Membership Report Synch Route | |||
The authors would like to thank Stephane Litkowski, Jorge Rabadan, | 8 - Multicast Leave Synch Route | |||
Anoop Ghanwani, Jeffrey Haas, Krishna Muddenahally Ananthamurthy, | ||||
Swadesh Agrawal for reviewing and providing valuable comment. | ||||
14. Contributors | 12.3. Multicast Flags Extended Community Registry | |||
Derek Yeung | IANA has created and now maintains a new subregistry called | |||
"Multicast Flags Extended Community" under the "Border Gateway | ||||
Protocol (BGP) Extended Communities" registry. The registration | ||||
procedure is First Come First Served [RFC8126]. For the 16-bit Flags | ||||
field, the bits are numbered 0-15, from high order to low order. The | ||||
registry was initialized as follows: | ||||
Arrcus | +======+====================+===========+===================+ | |||
| Bit | Name | Reference | Change Controller | | ||||
+======+====================+===========+===================+ | ||||
| 0-13 | Unassigned | | | | ||||
+------+--------------------+-----------+-------------------+ | ||||
| 14 | MLD Proxy Support | RFC 9251 | IETF | | ||||
+------+--------------------+-----------+-------------------+ | ||||
| 15 | IGMP Proxy Support | RFC 9251 | IETF | | ||||
+------+--------------------+-----------+-------------------+ | ||||
Email: derek@arrcus.com | Table 2: Multicast Flags Extended Community | |||
15. References | 13. References | |||
15.1. Normative References | 13.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC2236] Fenner, W., "Internet Group Management Protocol, Version | [RFC2236] Fenner, W., "Internet Group Management Protocol, Version | |||
2", RFC 2236, DOI 10.17487/RFC2236, November 1997, | 2", RFC 2236, DOI 10.17487/RFC2236, November 1997, | |||
<https://www.rfc-editor.org/info/rfc2236>. | <https://www.rfc-editor.org/info/rfc2236>. | |||
skipping to change at page 35, line 33 ¶ | skipping to change at line 1572 ¶ | |||
[RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. | [RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. | |||
Patel, "Revised Error Handling for BGP UPDATE Messages", | Patel, "Revised Error Handling for BGP UPDATE Messages", | |||
RFC 7606, DOI 10.17487/RFC7606, August 2015, | RFC 7606, DOI 10.17487/RFC7606, August 2015, | |||
<https://www.rfc-editor.org/info/rfc7606>. | <https://www.rfc-editor.org/info/rfc7606>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
15.2. Informative References | 13.2. Informative References | |||
[I-D.ietf-bess-evpn-bum-procedure-updates] | [EVPN-BUM] Zhang, Z., Lin, W., Rabadan, J., Patel, K., and A. | |||
Zhang, Z., Lin, W., Rabadan, J., Patel, K., and A. | Sajassi, "Updates on EVPN BUM Procedures", Work in | |||
Sajassi, "Updates on EVPN BUM Procedures", draft-ietf- | Progress, Internet-Draft, draft-ietf-bess-evpn-bum- | |||
bess-evpn-bum-procedure-updates-14 (work in progress), | procedure-updates-14, 18 November 2021, | |||
November 2021. | <https://datatracker.ietf.org/doc/html/draft-ietf-bess- | |||
evpn-bum-procedure-updates-14>. | ||||
[RFC4541] Christensen, M., Kimball, K., and F. Solensky, | [RFC4541] Christensen, M., Kimball, K., and F. Solensky, | |||
"Considerations for Internet Group Management Protocol | "Considerations for Internet Group Management Protocol | |||
(IGMP) and Multicast Listener Discovery (MLD) Snooping | (IGMP) and Multicast Listener Discovery (MLD) Snooping | |||
Switches", RFC 4541, DOI 10.17487/RFC4541, May 2006, | Switches", RFC 4541, DOI 10.17487/RFC4541, May 2006, | |||
<https://www.rfc-editor.org/info/rfc4541>. | <https://www.rfc-editor.org/info/rfc4541>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | ||||
Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
<https://www.rfc-editor.org/info/rfc8126>. | ||||
Acknowledgements | ||||
The authors would like to thank Stephane Litkowski, Jorge Rabadan, | ||||
Anoop Ghanwani, Jeffrey Haas, Krishna Muddenahally Ananthamurthy, and | ||||
Swadesh Agrawal for their reviews and valuable comments. | ||||
Contributors | ||||
Derek Yeung | ||||
Arrcus | ||||
Email: derek@arrcus.com | ||||
Authors' Addresses | Authors' Addresses | |||
Ali Sajassi | Ali Sajassi | |||
Cisco Systems | Cisco Systems | |||
821 Alder Drive, | 821 Alder Drive | |||
MILPITAS, CALIFORNIA 95035 | Milpitas, CA 95035 | |||
UNITED STATES | United States of America | |||
Email: sajassi@cisco.com | Email: sajassi@cisco.com | |||
Samir Thoria | Samir Thoria | |||
Cisco Systems | Cisco Systems | |||
821 Alder Drive, | 821 Alder Drive | |||
MILPITAS, CALIFORNIA 95035 | Milpitas, CA 95035 | |||
UNITED STATES | United States of America | |||
Email: sthoria@cisco.com | Email: sthoria@cisco.com | |||
Mankamana Mishra | Mankamana Mishra | |||
Cisco Systems | Cisco Systems | |||
821 Alder Drive, | 821 Alder Drive | |||
MILPITAS, CALIFORNIA 95035 | Milpitas, CA 95035 | |||
UNITED STATES | United States of America | |||
Email: mankamis@cisco.com | Email: mankamis@cisco.com | |||
Keyur PAtel | Keyur Patel | |||
Arrcus | Arrcus | |||
UNITED STATES | United States of America | |||
Email: keyur@arrcus.com | Email: keyur@arrcus.com | |||
John Drake | John Drake | |||
Juniper Networks | Juniper Networks | |||
Email: jdrake@juniper.net | Email: jdrake@juniper.net | |||
Wen Lin | Wen Lin | |||
Juniper Networks | Juniper Networks | |||
Email: wlin@juniper.net | Email: wlin@juniper.net | |||
End of changes. 283 change blocks. | ||||
933 lines changed or deleted | 957 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/ |