Configure Multicast Forwarding with IGMP Snooping in an EVPN-MPLS Environment
IGMP snooping with multicast forwarding ensures that IPv4 multicast traffic reaches all subscribed receivers within and between bridge domains or VLANs, and preserves bandwidth on the access side by reducing the amount of multicast control and data traffic being forwarded.
You can configure multicast with IGMP snooping on provider edge (PE) devices in an Ethernet VPN (EVPN) over MPLS environment. You must enable IGMP snooping in this environment to support IPv4 multicast traffic for receivers that are multihomed to EVPN PE devices as follows:
Peer PE devices must be operating in all-active multihoming mode.
You enable IGMP snooping in proxy mode.
You configure and commit the same configuration on each multihoming peer PE device.
MX Series routers and EX9200 switches in this environment only support IGMPv2 with any-source multicast (ASM) membership reports. ACX Series routers in this environment support processing IGMPv2 and IGMPv3 membership reports in ASM mode and IGMPv3 membership reports in source-specific multicast (SSM) mode with a special configuration option. See IGMP or MLD Versions and Supported Group Membership Report Modes for details on how PEs process IGMP reports.
In addition, to route multicast traffic between bridge domains or VLANs, PEs with hosts in multicast groups that span bridge domains or VLANs use PIM distributed designated router (PIM DDR) mode on IRB interfaces. You set up IRB interfaces associated with each bridge domain or VLAN with interested receivers in a multicast group. With PIM DDR configured on the IRB interfaces, the PE devices send the traffic locally through the IRB interfaces to their interested receivers on the corresponding bridge domains or VLANs even if an IRB is not the elected PIM designated router (DR) for that bridge domain or VLAN.
This topic describes configuration tasks to set up IGMP snooping in proxy mode, and configure the IRB interfaces for routing between bridge domains or VLANs on EVPN PE devices. It also summarizes the CLI commands you can use to verify IGMP snooping and multicast operation in this environment.
Configure IGMP Snooping for an EVPN or Virtual Switch Routing Instance
On ACX Series routers, you can configure IGMP snooping on one
or more routing instances of type evpn
. On other types
of devices, you can configure IGMP snooping for routing instances
of type evpn
or virtual-switch
.
To configure IGMP snooping in proxy mode on a PE device for a routing instance with
instance-type evpn
(for any or all bridge domains or VLANs):user@device# set routing-instances routing-instance-name protocols igmp-snooping proxy
For example, the following configuration includes enabling IGMP snooping in proxy mode for EVPN routing instance evpn-A configured as
instance-type evpn
:routing-instances { evpn-A { instance-type evpn; vlan-id 600 interface ge-0/0/2.600; route-distinguisher 10.255.255.1:100; vrf-target target:64510:100; protocols { evpn { interface ge-0/0/2.600; label-allocation per-instance; } igmp-snooping proxy; } } }
To configure IGMP snooping on a PE device for specific bridge domains or VLANs for an EVPN instance with
instance-type virtual-switch
:user@device# set routing-instances routing-instance-name bridge-domain bridge-domain-name protocols igmp-snooping proxy
For example, the following configuration includes enabling IGMP snooping in proxy mode for bridge domains V200, V201, and V202 in EVPN routing instance EVPN-2, which is configured as
instance-type virtual-switch
:routing-instances { ... EVPN-2 { instance-type virtual-switch; route-distinguisher 90.90.90.10:2; vrf-target target:64510:2; protocols { evpn { encapsulation mpls; extended-vlan-list 200-202; default-gateway advertise; } } bridge-domains { V200 { domain-type bridge; vlan-id 200; interface ae1.200; routing-interface irb.200; protocols { igmp-snooping proxy; } } V201 { domain-type bridge; vlan-id 201; interface ae1.201; routing-interface irb.201; protocols { igmp-snooping proxy; } } V202 { domain-type bridge; vlan-id 202; interface ae1.202; routing-interface irb.202; protocols { igmp-snooping proxy; } } } } ... }
Configure IGMP Snooping with IGMPv3 on ACX Series Routers to Process Source-Specific Multicast Group Membership Reports Only
By default, the EVPN-MPLS network processes only ASM (*,G) membership
reports with IGMPv2. ACX Series PE routers also support processing
IGMPv3 membership reports in ASM (*,G) mode. You can alternatively
configure ACX Series PEs to process only IGMPv3 SSM (S,G) membership
reports in an EVPN-MPLS network that supports intersubnet multicast.
To do this, use the evpn-ssm-reports-only
option in
the [edit protocols igmp-snooping]
configuration statement
hierarchy when you configure IGMP snooping.
When you enable this option, the device doesn’t process ASM reports and drops those packets. See IGMP or MLD Versions and Supported Group Membership Report Modes for details on how PEs process IGMP membership reports in this environment.
You can enable SSM-only processing when you configure IGMP snooping
with IGMPv3 for all bridge domains or VLANs in a routing instance
of type evpn
.
For example, to configure IGMP snooping with IGMPv3 to process only SSM membership reports for all bridge domains or VLANs in a routing instance:
user@device# set routing-instances routing-instance-name protocols igmp-snooping evpn-ssm-reports-only
In the following sample configuration, IGMP snooping is configured
to process only SSM membership reports for a routing instance of type evpn
named EVPN-4:
. . . EVPN-4 { instance-type evpn; protocols { evpn { remote-ip-host-routes; designated-forwarder-preference-least; } igmp-snooping { evpn-ssm-reports-only; proxy; } } vlan-id 400; interface ae2.400; l3-interface irb.400; route-distinguisher 90.90.90.10:2; vrf-target target:64510:4; } . . .
Configure Multicast Routing Across Bridge Domains or VLANs with PIM in EVPN-MPLS
PE devices in EVPN-MPLS environments use IRB interfaces and PIM to route multicast traffic between bridge domains or VLANs (intersubnet multicast).
On ACX Series routers, any multicast sources must be outside of the EVPN-MPLS data center in a Layer 3 PIM domain. Each ACX Series PE device receives the multicast source traffic through a Layer 3 interface connected to an external PIM domain gateway router. The receivers must be within the EVPN-MPLS datacenter.
With other platforms, all multicast sources and receivers must be within the EVPN-MPLS data center, and each PE device either receives the multicast traffic locally or through the EVPN core.
In either case (multicast sources outside or inside the EVPN instance), you enable PIM in distributed DR mode on the IRB interfaces in an EVPN instance, and the IRB interfaces send the multicast group traffic to any receivers on the associated bridge domains or VLANs.
To configure IRB interfaces to use PIM DDR mode to route multicast traffic between bridge domains or VLANs in an EVPN routing instance:
user@device# set routing-instances routing-instance-name protocols pim interface irb-interface-name distributed-dr
For example, the following configuration shows PIM DDR mode enabled on interfaces irb.400, irb.401, and irb.402 in an
instance-type evpn
routing instance named evpn-400 on ACX Series routers (which require a Layer 3 interface on which to receive source traffic from an external PIM domain):routing-instances { evpn-400 { instance-type evpn; vlan-id 400; interface xe-0/0/32.400; l3-interface irb.400; route-distinguisher 10.255.65.227:400; vrf-target target:64510:400; protocols { evpn { interface xe-0/0/32.400; } igmp-snooping proxy; } } protocols { pim { rp { static { address 10.255.67.48; } } interface lo0.0; interface all { mode { sparse; } } ... interface irb.400 { distributed-dr; } interface irb.401 { distributed-dr; } interface irb.402 { distributed-dr; } } } ... }
The following configuration example shows PIM DDR mode enabled on interfaces irb.200, irb.201, and irb.202 in the VRF routing instance IPVPN-2:
routing-instances { ... IPVPN-2 { instance-type vrf; interface irb.200; interface irb.201; interface irb.202; interface lo0.2; route-distinguisher 90.90.90.10:222; vrf-target target:64510:2; vrf-table-label; protocols { pim { rp { local { address 10.88.88.10; } } interface irb.200 { distributed-dr; } interface irb.201 { distributed-dr; } interface irb.202 { distributed-dr; } } } }
Viewing IGMP Snooping Multicast Information for EVPN-MPLS in the CLI
The following EVPN commands are supported to view IGMP snooping multicast information in an EVPN-MPLS environment. The output of these commands includes information learned from native IGMP snooping on a PE device and learned from EVPN Type 7 Join Sync Route and Type 8 Leave Sync Route messages.
show evpn multicast-snooping next-hops
show igmp snooping evpn database
show igmp snooping evpn membership
The following CLI commands are supported to view the native IGMP snooping information on a PE. The output of these commands will not include information learned from the exchange of EVPN Type 7 and Type 8 IGMP messages.
show igmp snooping interface
show igmp snooping membership
show igmp snooping statistics
The following commands can be used to view EVPN Type 7 IGMP Join Sync Routes or Type 8 Leave Sync Routes in BGP and EVPN routing tables:
show route table bgp.evpn.0 match-prefix 7*
show route table __default_evpn__.evpn.0 match-prefix 7:*
show route table __default_evpn__.evpn.0 match-prefix 7:* protocol evpn
show route table __default_evpn__.evpn.0 match-prefix 7:* protocol bgp
show route table bgp.evpn.0 match-prefix 8:*
show route table __default_evpn__.evpn.0 match-prefix 8:*
show route table __default_evpn__.evpn.0 match-prefix 8:* protocol evpn
show route table __default_evpn__.evpn.0 match-prefix 8:* protocol bgp
For example, to view EVPN Type 7 IGMP routes in the __default_evpn__.evpn.0
routing table, use the following
command:
user@host> show route table __default_evpn__.evpn.0 protocol evpn match-prefix 7:* extensive Sep 21 02:25:12 __default_evpn__.evpn.0: 32 destinations, 32 routes (32 active, 0 holddown, 0 hidden) 7:90.90.90.10:1::111111111111111111::100::0.0.0.0::233.252.0.1::90.90.90.10/600 (1 entry, 1 announced) TSI: Page 0 idx 0, (group IBGP type Internal) Type 1 val 0xb23c68c (adv_entry) Advertised metrics: Nexthop: 90.90.90.10 Localpref: 100 AS path: [64510] I Communities: es-import-target:11-11-11-11-11-11 evi-rt:64510:1 Path 7:90.90.90.10:1::111111111111111111::100::0.0.0.0::233.252.0.1::90.90.90.10 Vector len 4. Val: 0 *EVPN Preference: 170 Next hop type: Indirect, Next hop index: 0 Address: 0xb2e5e10 Next-hop reference count: 61 Protocol next hop: 90.90.90.10 Indirect next hop: 0x0 - INH Session ID: 0x0 State: <Active Int Ext> Age: 2:12:30 Validation State: unverified Task: __default_evpn__-evpn Announcement bits (1): 1-BGP_RT_Background AS path: I Communities: es-import-target:11-11-11-11-11-11 evi-rt:65530:1 IGMP flags: 0x2 7:90.90.90.10:3::333333333333333333::100::0.0.0.0::233.252.0.1::90.90.90.10/600 (1 entry, 1 announced) TSI: Page 0 idx 0, (group IBGP type Internal) Type 1 val 0xb23c6a8 (adv_entry) Advertised metrics: Nexthop: 90.90.90.10 Localpref: 100 AS path: [64510] I Communities: es-import-target:33-33-33-33-33-33 evi-rt:64510:3 Path 7:90.90.90.10:3::333333333333333333::100::0.0.0.0::233.252.0.1::90.90.90.10 Vector len 4. Val: 0 *EVPN Preference: 170 Next hop type: Indirect, Next hop index: 0 Address: 0xb2e5e10 Next-hop reference count: 61 Protocol next hop: 90.90.90.10 Indirect next hop: 0x0 - INH Session ID: 0x0 State: <Active Int Ext> Age: 2:12:30 Validation State: unverified Task: __default_evpn__-evpn Announcement bits (1): 1-BGP_RT_Background AS path: I Communities: es-import-target:33-33-33-33-33-33 evi-rt:65530:3 IGMP flags: 0x2