diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg
index 2e311082a1b..4deff4e5184 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-DISABLED.cfg
@@ -2,6 +2,13 @@
!
vlan internal order ascending range 1006 1199
!
+ip igmp snooping vlan 230 querier
+ip igmp snooping vlan 230 querier address 192.168.255.8
+ip igmp snooping vlan 230 fast-leave
+ip igmp snooping vlan 256 querier
+ip igmp snooping vlan 256 querier address 192.168.255.8
+ip igmp snooping vlan 256 fast-leave
+!
transceiver qsfp default-mode 4x10G
!
service routing protocols model multi-agent
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg
index 0427a28179e..6ff5bf52ea5 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1A.cfg
@@ -5,6 +5,7 @@ vlan internal order ascending range 1006 1199
ip igmp snooping vlan 1 querier
ip igmp snooping vlan 1 querier address 1.1.1.1
ip igmp snooping vlan 1 querier version 3
+ip igmp snooping vlan 1 fast-leave
ip igmp snooping vlan 2 querier
ip igmp snooping vlan 2 querier address 1.1.1.1
ip igmp snooping vlan 2 querier version 3
@@ -19,14 +20,25 @@ ip igmp snooping vlan 9 querier address 2.2.2.2
ip igmp snooping vlan 9 querier version 1
ip igmp snooping vlan 110 querier
ip igmp snooping vlan 110 querier address 192.168.255.3
+ip igmp snooping vlan 110 fast-leave
ip igmp snooping vlan 111 querier
ip igmp snooping vlan 111 querier address 192.168.255.3
+ip igmp snooping vlan 111 fast-leave
ip igmp snooping vlan 210 querier
ip igmp snooping vlan 210 querier address 192.168.255.3
+ip igmp snooping vlan 210 fast-leave
+ip igmp snooping vlan 230 querier
+ip igmp snooping vlan 230 querier address 192.168.255.3
+ip igmp snooping vlan 230 fast-leave
+ip igmp snooping vlan 256 querier
+ip igmp snooping vlan 256 querier address 192.168.255.3
+ip igmp snooping vlan 256 fast-leave
ip igmp snooping vlan 257 querier
ip igmp snooping vlan 257 querier address 192.168.255.3
+ip igmp snooping vlan 257 fast-leave
ip igmp snooping vlan 4092 querier
ip igmp snooping vlan 4092 querier address 192.168.255.3
+ip igmp snooping vlan 4092 fast-leave
!
transceiver qsfp default-mode 4x10G
!
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg
index 1451a377635..c8380f65595 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF1B.cfg
@@ -5,6 +5,7 @@ vlan internal order ascending range 1006 1199
ip igmp snooping vlan 1 querier
ip igmp snooping vlan 1 querier address 1.1.1.1
ip igmp snooping vlan 1 querier version 3
+ip igmp snooping vlan 1 fast-leave
ip igmp snooping vlan 2 querier
ip igmp snooping vlan 2 querier address 1.1.1.1
ip igmp snooping vlan 2 querier version 3
@@ -19,14 +20,25 @@ ip igmp snooping vlan 9 querier address 2.2.2.2
ip igmp snooping vlan 9 querier version 1
ip igmp snooping vlan 110 querier
ip igmp snooping vlan 110 querier address 192.168.255.4
+ip igmp snooping vlan 110 fast-leave
ip igmp snooping vlan 111 querier
ip igmp snooping vlan 111 querier address 192.168.255.4
+ip igmp snooping vlan 111 fast-leave
ip igmp snooping vlan 210 querier
ip igmp snooping vlan 210 querier address 192.168.255.4
+ip igmp snooping vlan 210 fast-leave
+ip igmp snooping vlan 230 querier
+ip igmp snooping vlan 230 querier address 192.168.255.4
+ip igmp snooping vlan 230 fast-leave
+ip igmp snooping vlan 256 querier
+ip igmp snooping vlan 256 querier address 192.168.255.4
+ip igmp snooping vlan 256 fast-leave
ip igmp snooping vlan 257 querier
ip igmp snooping vlan 257 querier address 192.168.255.4
+ip igmp snooping vlan 257 fast-leave
ip igmp snooping vlan 4092 querier
ip igmp snooping vlan 4092 querier address 192.168.255.4
+ip igmp snooping vlan 4092 fast-leave
!
transceiver qsfp default-mode 4x10G
!
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg
index 46b5f85ccbd..633cd9ec858 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF2A.cfg
@@ -5,6 +5,7 @@ vlan internal order ascending range 1006 1199
ip igmp snooping vlan 1 querier
ip igmp snooping vlan 1 querier address 1.1.1.1
ip igmp snooping vlan 1 querier version 3
+ip igmp snooping vlan 1 fast-leave
ip igmp snooping vlan 2 querier
ip igmp snooping vlan 2 querier address 1.1.1.1
ip igmp snooping vlan 2 querier version 3
@@ -19,14 +20,25 @@ ip igmp snooping vlan 9 querier address 2.2.2.2
ip igmp snooping vlan 9 querier version 1
ip igmp snooping vlan 110 querier
ip igmp snooping vlan 110 querier address 192.168.255.5
+ip igmp snooping vlan 110 fast-leave
ip igmp snooping vlan 111 querier
ip igmp snooping vlan 111 querier address 192.168.255.5
+ip igmp snooping vlan 111 fast-leave
ip igmp snooping vlan 210 querier
ip igmp snooping vlan 210 querier address 192.168.255.5
+ip igmp snooping vlan 210 fast-leave
+ip igmp snooping vlan 230 querier
+ip igmp snooping vlan 230 querier address 192.168.255.5
+ip igmp snooping vlan 230 fast-leave
+ip igmp snooping vlan 256 querier
+ip igmp snooping vlan 256 querier address 192.168.255.5
+ip igmp snooping vlan 256 fast-leave
ip igmp snooping vlan 257 querier
ip igmp snooping vlan 257 querier address 192.168.255.5
+ip igmp snooping vlan 257 fast-leave
ip igmp snooping vlan 4092 querier
ip igmp snooping vlan 4092 querier address 192.168.255.5
+ip igmp snooping vlan 4092 fast-leave
!
transceiver qsfp default-mode 4x10G
!
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg
index 61c2b0843e1..dfaabca8158 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3A.cfg
@@ -5,6 +5,7 @@ vlan internal order ascending range 1006 1199
ip igmp snooping vlan 1 querier
ip igmp snooping vlan 1 querier address 1.1.1.1
ip igmp snooping vlan 1 querier version 3
+ip igmp snooping vlan 1 fast-leave
ip igmp snooping vlan 2 querier
ip igmp snooping vlan 2 querier address 1.1.1.1
ip igmp snooping vlan 2 querier version 3
@@ -19,14 +20,25 @@ ip igmp snooping vlan 9 querier address 2.2.2.2
ip igmp snooping vlan 9 querier version 1
ip igmp snooping vlan 110 querier
ip igmp snooping vlan 110 querier address 192.168.255.6
+ip igmp snooping vlan 110 fast-leave
ip igmp snooping vlan 111 querier
ip igmp snooping vlan 111 querier address 192.168.255.6
+ip igmp snooping vlan 111 fast-leave
ip igmp snooping vlan 210 querier
ip igmp snooping vlan 210 querier address 192.168.255.6
+ip igmp snooping vlan 210 fast-leave
+ip igmp snooping vlan 230 querier
+ip igmp snooping vlan 230 querier address 192.168.255.6
+ip igmp snooping vlan 230 fast-leave
+ip igmp snooping vlan 256 querier
+ip igmp snooping vlan 256 querier address 192.168.255.6
+ip igmp snooping vlan 256 fast-leave
ip igmp snooping vlan 257 querier
ip igmp snooping vlan 257 querier address 192.168.255.6
+ip igmp snooping vlan 257 fast-leave
ip igmp snooping vlan 4092 querier
ip igmp snooping vlan 4092 querier address 192.168.255.6
+ip igmp snooping vlan 4092 fast-leave
!
transceiver qsfp default-mode 4x10G
!
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg
index b8c6daf8923..033aa9b349d 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/configs/EVPN-MULTICAST-L3LEAF3B.cfg
@@ -5,6 +5,7 @@ vlan internal order ascending range 1006 1199
ip igmp snooping vlan 1 querier
ip igmp snooping vlan 1 querier address 1.1.1.1
ip igmp snooping vlan 1 querier version 3
+ip igmp snooping vlan 1 fast-leave
ip igmp snooping vlan 2 querier
ip igmp snooping vlan 2 querier address 1.1.1.1
ip igmp snooping vlan 2 querier version 3
@@ -19,14 +20,25 @@ ip igmp snooping vlan 9 querier address 2.2.2.2
ip igmp snooping vlan 9 querier version 1
ip igmp snooping vlan 110 querier
ip igmp snooping vlan 110 querier address 192.168.255.7
+ip igmp snooping vlan 110 fast-leave
ip igmp snooping vlan 111 querier
ip igmp snooping vlan 111 querier address 192.168.255.7
+ip igmp snooping vlan 111 fast-leave
ip igmp snooping vlan 210 querier
ip igmp snooping vlan 210 querier address 192.168.255.7
+ip igmp snooping vlan 210 fast-leave
+ip igmp snooping vlan 230 querier
+ip igmp snooping vlan 230 querier address 192.168.255.7
+ip igmp snooping vlan 230 fast-leave
+ip igmp snooping vlan 256 querier
+ip igmp snooping vlan 256 querier address 192.168.255.7
+ip igmp snooping vlan 256 fast-leave
ip igmp snooping vlan 257 querier
ip igmp snooping vlan 257 querier address 192.168.255.7
+ip igmp snooping vlan 257 fast-leave
ip igmp snooping vlan 4092 querier
ip igmp snooping vlan 4092 querier address 192.168.255.7
+ip igmp snooping vlan 4092 fast-leave
!
transceiver qsfp default-mode 4x10G
!
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml
index 0c6ba7c97d7..8f05ad871d3 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-DISABLED.yml
@@ -799,6 +799,17 @@ vlans:
tenant: Tenant_E
ip_igmp_snooping:
globally_enabled: true
+ vlans:
+ - id: 256
+ querier:
+ enabled: true
+ address: 192.168.255.8
+ fast_leave: true
+ - id: 230
+ querier:
+ enabled: true
+ address: 192.168.255.8
+ fast_leave: true
ip_virtual_router_mac_address: 00:dc:00:00:00:0a
vlan_interfaces:
- name: Vlan310
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml
index 14a24e0e470..a09f26e3d10 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1A.yml
@@ -1406,27 +1406,38 @@ ip_igmp_snooping:
querier:
enabled: true
address: 192.168.255.3
+ fast_leave: true
- id: 111
querier:
enabled: true
address: 192.168.255.3
+ fast_leave: true
- id: 210
querier:
enabled: true
address: 192.168.255.3
+ fast_leave: true
+ - id: 256
+ querier:
+ enabled: true
+ address: 192.168.255.3
+ fast_leave: true
- id: 257
querier:
enabled: true
address: 192.168.255.3
+ fast_leave: true
- id: 4092
querier:
enabled: true
address: 192.168.255.3
+ fast_leave: true
- id: 1
querier:
enabled: true
address: 1.1.1.1
version: 3
+ fast_leave: true
- id: 2
querier:
enabled: true
@@ -1447,6 +1458,11 @@ ip_igmp_snooping:
enabled: true
address: 2.2.2.2
version: 1
+ - id: 230
+ querier:
+ enabled: true
+ address: 192.168.255.3
+ fast_leave: true
ip_virtual_router_mac_address: 00:dc:00:00:00:0a
vxlan_interface:
Vxlan1:
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml
index 5541f1c9bd8..445e79d5ca0 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF1B.yml
@@ -1406,27 +1406,38 @@ ip_igmp_snooping:
querier:
enabled: true
address: 192.168.255.4
+ fast_leave: true
- id: 111
querier:
enabled: true
address: 192.168.255.4
+ fast_leave: true
- id: 210
querier:
enabled: true
address: 192.168.255.4
+ fast_leave: true
+ - id: 256
+ querier:
+ enabled: true
+ address: 192.168.255.4
+ fast_leave: true
- id: 257
querier:
enabled: true
address: 192.168.255.4
+ fast_leave: true
- id: 4092
querier:
enabled: true
address: 192.168.255.4
+ fast_leave: true
- id: 1
querier:
enabled: true
address: 1.1.1.1
version: 3
+ fast_leave: true
- id: 2
querier:
enabled: true
@@ -1447,6 +1458,11 @@ ip_igmp_snooping:
enabled: true
address: 2.2.2.2
version: 1
+ - id: 230
+ querier:
+ enabled: true
+ address: 192.168.255.4
+ fast_leave: true
ip_virtual_router_mac_address: 00:dc:00:00:00:0a
vxlan_interface:
Vxlan1:
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml
index 0966ead4c1c..414ff89c72b 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF2A.yml
@@ -839,27 +839,38 @@ ip_igmp_snooping:
querier:
enabled: true
address: 192.168.255.5
+ fast_leave: true
- id: 111
querier:
enabled: true
address: 192.168.255.5
+ fast_leave: true
- id: 210
querier:
enabled: true
address: 192.168.255.5
+ fast_leave: true
+ - id: 256
+ querier:
+ enabled: true
+ address: 192.168.255.5
+ fast_leave: true
- id: 257
querier:
enabled: true
address: 192.168.255.5
+ fast_leave: true
- id: 4092
querier:
enabled: true
address: 192.168.255.5
+ fast_leave: true
- id: 1
querier:
enabled: true
address: 1.1.1.1
version: 3
+ fast_leave: true
- id: 2
querier:
enabled: true
@@ -880,6 +891,11 @@ ip_igmp_snooping:
enabled: true
address: 2.2.2.2
version: 1
+ - id: 230
+ querier:
+ enabled: true
+ address: 192.168.255.5
+ fast_leave: true
ip_virtual_router_mac_address: 00:dc:00:00:00:0a
vlan_interfaces:
- name: Vlan310
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml
index 0cd1162e660..5bff882ed66 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3A.yml
@@ -871,27 +871,38 @@ ip_igmp_snooping:
querier:
enabled: true
address: 192.168.255.6
+ fast_leave: true
- id: 111
querier:
enabled: true
address: 192.168.255.6
+ fast_leave: true
- id: 210
querier:
enabled: true
address: 192.168.255.6
+ fast_leave: true
+ - id: 256
+ querier:
+ enabled: true
+ address: 192.168.255.6
+ fast_leave: true
- id: 257
querier:
enabled: true
address: 192.168.255.6
+ fast_leave: true
- id: 4092
querier:
enabled: true
address: 192.168.255.6
+ fast_leave: true
- id: 1
querier:
enabled: true
address: 1.1.1.1
version: 3
+ fast_leave: true
- id: 2
querier:
enabled: true
@@ -912,6 +923,11 @@ ip_igmp_snooping:
enabled: true
address: 2.2.2.2
version: 1
+ - id: 230
+ querier:
+ enabled: true
+ address: 192.168.255.6
+ fast_leave: true
ip_virtual_router_mac_address: 00:dc:00:00:00:0a
vlan_interfaces:
- name: Vlan310
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml
index ca2931a418f..f0d0da1341e 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/intended/structured_configs/EVPN-MULTICAST-L3LEAF3B.yml
@@ -871,27 +871,38 @@ ip_igmp_snooping:
querier:
enabled: true
address: 192.168.255.7
+ fast_leave: true
- id: 111
querier:
enabled: true
address: 192.168.255.7
+ fast_leave: true
- id: 210
querier:
enabled: true
address: 192.168.255.7
+ fast_leave: true
+ - id: 256
+ querier:
+ enabled: true
+ address: 192.168.255.7
+ fast_leave: true
- id: 257
querier:
enabled: true
address: 192.168.255.7
+ fast_leave: true
- id: 4092
querier:
enabled: true
address: 192.168.255.7
+ fast_leave: true
- id: 1
querier:
enabled: true
address: 1.1.1.1
version: 3
+ fast_leave: true
- id: 2
querier:
enabled: true
@@ -912,6 +923,11 @@ ip_igmp_snooping:
enabled: true
address: 2.2.2.2
version: 1
+ - id: 230
+ querier:
+ enabled: true
+ address: 192.168.255.7
+ fast_leave: true
ip_virtual_router_mac_address: 00:dc:00:00:00:0a
vlan_interfaces:
- name: Vlan310
diff --git a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/EVPN_MULTICAST_TESTS.yml b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/EVPN_MULTICAST_TESTS.yml
index cee7d875c5f..2255070fb7b 100644
--- a/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/EVPN_MULTICAST_TESTS.yml
+++ b/ansible_collections/arista/avd/molecule/eos_designs_unit_tests/inventory/group_vars/EVPN_MULTICAST_TESTS.yml
@@ -17,6 +17,8 @@ tenants:
evpn_l2_multicast:
enabled: true
underlay_l2_multicast_group_ipv4_pool: 232.0.0.0/20
+ igmp_snooping_querier:
+ fast_leave: true
vrfs:
- name: MULTICAST_ENABLED_110_111
description: "MULTICAST_ENABLED_110_111"
@@ -95,6 +97,9 @@ tenants:
tags: ['test_l2']
evpn_l2_multicast:
enabled: false
+ igmp_snooping_querier:
+ enabled: true
+ fast_leave: true
- id: 257
name: "MULTICAST_ENABLED_257"
tags: ['test_l2']
@@ -134,6 +139,8 @@ tenants:
ip_address_virtual: 10.0.1.1/24
evpn_l2_multicast:
enabled: true
+ igmp_snooping_querier:
+ fast_leave: true
- id: 2
name: "MULTICAST_ENABLED_2"
tags: ['test_l3']
@@ -291,6 +298,9 @@ tenants:
tags: ['test_l3']
enabled: true
ip_address_virtual: 10.2.23.1/24
+ igmp_snooping_querier:
+ enabled: true
+ fast_leave: true
- id: 231
name: "L3_MULTICAST_DISABLED_231"
tags: ['test_l3']
diff --git a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md
index ffe0448a527..a801b520d39 100644
--- a/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md
+++ b/ansible_collections/arista/avd/roles/eos_designs/docs/tables/network-services-multicast-settings.md
@@ -13,6 +13,7 @@
| [ enabled](## ".[].evpn_l2_multicast.enabled") | Boolean | | | | |
| [ underlay_l2_multicast_group_ipv4_pool](## ".[].evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool") | String | | | | IPv4_address/Mask. |
| [ underlay_l2_multicast_group_ipv4_pool_offset](## ".[].evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset") | Integer | | | | |
+ | [ fast_leave](## ".[].evpn_l2_multicast.fast_leave") | Boolean | | | | Enable fast-leave processing on specified VLANs. |
| [ evpn_l3_multicast](## ".[].evpn_l3_multicast") | Dictionary | | | | Enable L3 Multicast for all SVIs and l3vlans within Tenant.
- In the evpn-l3ls design type, this enables L3 EVPN Multicast (aka OISM)'.
- Multicast group binding for VRF is created only for Multicast traffic. BULL traffic will use ingress-replication.
- Configures binding between VXLAN, VLAN, and multicast group IPv4 address using the following formula:
< l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool > + < vrf_vni - 1 > + < l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool_offset >.
- The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range.
- If enabled on an SVI using the anycast default gateway feature, a diagnostic loopback (see below) MUST be configured to source IGMP traffic.
- Enables `evpn multicast` on the router bgp VRF.
- When enabled on an SVI:
- If switch is part of an MLAG pair, enables "pim ipv4 sparse-mode" on the SVI.
- If switch is standalone or A-A MH, enables "ip igmp" on the SVI.
- If "ip address virtual" is configured, enables "pim ipv4 local-interface" and uses the diagnostic Loopback defined in the VRF
- Requires `evpn_multicast` to also be set to `true`.
|
| [ enabled](## ".[].evpn_l3_multicast.enabled") | Boolean | | | | |
| [ evpn_underlay_l3_multicast_group_ipv4_pool](## ".[].evpn_l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool") | String | Required | | | IPv4_address/Mask. |
@@ -33,6 +34,7 @@
| [ enabled](## ".[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if "evpn_l2_multicast" is enabled. |
| [ source_address](## ".[].igmp_snooping_querier.source_address") | String | | | Format: ipv4 | Default IP address of Loopback0. |
| [ version](## ".[].igmp_snooping_querier.version") | Integer | | `2` | Valid Values:
- 1
- 2
- 3
| |
+ | [ fast_leave](## ".[].igmp_snooping_querier.fast_leave") | Boolean | | | | Enable fast-leave processing on specified VLANs. |
| [ vrfs](## ".[].vrfs") | List, items: Dictionary | | | | VRFs will only be configured on a node if any of the underlying objects like `svis` or `l3_interfaces` apply to the node.
It is recommended to only define a VRF in one Tenant. If the same VRF name is used across multiple tenants and those tenants
are accepted by `filter.tenants` on the node, any object set under the duplicate VRFs must either be unique or be an exact match.
VRF "default" is partially supported under network-services. Currently the supported options for "default" vrf are route-target,
route-distinguisher settings, structured_config, raw_eos_cli in bgp and SVIs are the only supported interface type.
Vlan-aware-bundles are supported as well inside default vrf. OSPF is not supported currently.
|
| [ - name](## ".[].vrfs.[].name") | String | Required, Unique | | | |
| [ evpn_l3_multicast](## ".[].vrfs.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled`.
Allow override of `.[].evpn_l3_multicast` node_settings.
Requires `evpn_multicast` to also be set to `true`.
|
@@ -63,6 +65,7 @@
| [ enabled](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. |
| [ source_address](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
|
| [ version](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3
| IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). |
+ | [ fast_leave](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.fast_leave") | Boolean | | | | Enable fast-leave processing on specified VLANs. |
| [ evpn_l2_multicast](## ".[].vrfs.[].svis.[].evpn_l2_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.
When evpn_l2_multicast.enabled is set to true for a vlan or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled, overriding those individual settings.
Requires `evpn_multicast` to also be set to `true`.
|
| [ enabled](## ".[].vrfs.[].svis.[].evpn_l2_multicast.enabled") | Boolean | | | | |
| [ evpn_l3_multicast](## ".[].vrfs.[].svis.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.
Requires `evpn_multicast` to also be set to `true`.
|
@@ -72,6 +75,7 @@
| [ enabled](## ".[].vrfs.[].svis.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. |
| [ source_address](## ".[].vrfs.[].svis.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
|
| [ version](## ".[].vrfs.[].svis.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3
| IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). |
+ | [ fast_leave](## ".[].vrfs.[].svis.[].igmp_snooping_querier.fast_leave") | Boolean | | | | Enable fast-leave processing on specified VLANs. |
| [ l2vlans](## ".[].l2vlans") | List, items: Dictionary | | | | Define L2 network services organized by vlan id. |
| [ - id](## ".[].l2vlans.[].id") | Integer | Required | | Min: 1
Max: 4094 | VLAN ID. |
| [ evpn_l2_multicast](## ".[].l2vlans.[].evpn_l2_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.
When evpn_l2_multicast.enabled is set to true for a vlan or a tenant, igmp snooping and igmp snooping querier will always be enabled, overriding those individual settings.
Requires `evpn_multicast` to also be set to `true`.
|
@@ -81,6 +85,7 @@
| [ enabled](## ".[].l2vlans.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. |
| [ source_address](## ".[].l2vlans.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
|
| [ version](## ".[].l2vlans.[].igmp_snooping_querier.version") | Integer | | `2` | Valid Values:
- 1
- 2
- 3
| |
+ | [ fast_leave](## ".[].l2vlans.[].igmp_snooping_querier.fast_leave") | Boolean | | | | Enable fast-leave processing on specified VLANs. |
| [svi_profiles](## "svi_profiles") | List, items: Dictionary | | | | Profiles to share common settings for SVIs under `.[].vrfs.svis`.
Keys are the same used under SVIs. Keys defined under SVIs take precedence.
Note: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:
1. svi.nodes[inventory_hostname].structured_config
2. svi_profile.nodes[inventory_hostname].structured_config
3. svi_parent_profile.nodes[inventory_hostname].structured_config
4. svi.structured_config
5. svi_profile.structured_config
6. svi_parent_profile.structured_config
|
| [ - profile](## "svi_profiles.[].profile") | String | Required, Unique | | | Profile name. |
| [ nodes](## "svi_profiles.[].nodes") | List, items: Dictionary | | | | Define node specific configuration, such as unique IP addresses.
Any keys set here will be merged onto the SVI config, except `structured_config` keys which will replace the `structured_config` set on SVI level.
|
@@ -94,6 +99,7 @@
| [ enabled](## "svi_profiles.[].nodes.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. |
| [ source_address](## "svi_profiles.[].nodes.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
|
| [ version](## "svi_profiles.[].nodes.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3
| IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). |
+ | [ fast_leave](## "svi_profiles.[].nodes.[].igmp_snooping_querier.fast_leave") | Boolean | | | | Enable fast-leave processing on specified VLANs. |
| [ evpn_l2_multicast](## "svi_profiles.[].evpn_l2_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.
When evpn_l2_multicast.enabled is set to true for a vlan or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled, overriding those individual settings.
Requires `evpn_multicast` to also be set to `true`.
|
| [ enabled](## "svi_profiles.[].evpn_l2_multicast.enabled") | Boolean | | | | |
| [ evpn_l3_multicast](## "svi_profiles.[].evpn_l3_multicast") | Dictionary | | | | Explicitly enable or disable evpn_l3_multicast to override setting of `.[].evpn_l3_multicast.enabled` and `.[].vrfs.[].evpn_l3_multicast.enabled`.
Requires `evpn_multicast` to also be set to `true`.
|
@@ -103,6 +109,7 @@
| [ enabled](## "svi_profiles.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. |
| [ source_address](## "svi_profiles.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
|
| [ version](## "svi_profiles.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3
| IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). |
+ | [ fast_leave](## "svi_profiles.[].igmp_snooping_querier.fast_leave") | Boolean | | | | Enable fast-leave processing on specified VLANs. |
=== "YAML"
@@ -129,6 +136,9 @@
underlay_l2_multicast_group_ipv4_pool:
underlay_l2_multicast_group_ipv4_pool_offset:
+ # Enable fast-leave processing on specified VLANs.
+ fast_leave:
+
# Enable L3 Multicast for all SVIs and l3vlans within Tenant.
# - In the evpn-l3ls design type, this enables L3 EVPN Multicast (aka OISM)'.
# - Multicast group binding for VRF is created only for Multicast traffic. BULL traffic will use ingress-replication.
@@ -194,6 +204,9 @@
source_address:
version:
+ # Enable fast-leave processing on specified VLANs.
+ fast_leave:
+
# VRFs will only be configured on a node if any of the underlying objects like `svis` or `l3_interfaces` apply to the node.
#
# It is recommended to only define a VRF in one Tenant. If the same VRF name is used across multiple tenants and those tenants
@@ -288,6 +301,9 @@
# IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).
version:
+ # Enable fast-leave processing on specified VLANs.
+ fast_leave:
+
# Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.
# When evpn_l2_multicast.enabled is set to true for a vlan or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled, overriding those individual settings.
# Requires `evpn_multicast` to also be set to `true`.
@@ -313,6 +329,9 @@
# IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).
version:
+ # Enable fast-leave processing on specified VLANs.
+ fast_leave:
+
# Define L2 network services organized by vlan id.
l2vlans:
@@ -340,6 +359,9 @@
source_address:
version:
+ # Enable fast-leave processing on specified VLANs.
+ fast_leave:
+
# Profiles to share common settings for SVIs under `.[].vrfs.svis`.
# Keys are the same used under SVIs. Keys defined under SVIs take precedence.
# Note: structured configuration is not merged recursively and will be taken directly from the most specific level in the following order:
@@ -386,6 +408,9 @@
# IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).
version:
+ # Enable fast-leave processing on specified VLANs.
+ fast_leave:
+
# Explicitly enable or disable evpn_l2_multicast to override setting of `.[].evpn_l2_multicast.enabled`.
# When evpn_l2_multicast.enabled is set to true for a vlan or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled, overriding those individual settings.
# Requires `evpn_multicast` to also be set to `true`.
@@ -410,4 +435,7 @@
# IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).
version:
+
+ # Enable fast-leave processing on specified VLANs.
+ fast_leave:
```
diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json
index 44131dff2b7..08e8792d00f 100644
--- a/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json
+++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.jsonschema.json
@@ -56451,6 +56451,11 @@
3
],
"title": "Version"
+ },
+ "fast_leave": {
+ "type": "boolean",
+ "description": "Enable fast-leave processing on specified VLANs.",
+ "title": "Fast Leave"
}
},
"additionalProperties": false,
@@ -58359,6 +58364,11 @@
3
],
"title": "Version"
+ },
+ "fast_leave": {
+ "type": "boolean",
+ "description": "Enable fast-leave processing on specified VLANs.",
+ "title": "Fast Leave"
}
},
"additionalProperties": false,
diff --git a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml
index 31ee7c55a96..938bb0fa124 100644
--- a/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/eos_designs.schema.yml
@@ -5671,6 +5671,9 @@ $defs:
type: int
convert_types:
- str
+ fast_leave:
+ type: bool
+ description: Enable fast-leave processing on specified VLANs.
evpn_l3_multicast:
documentation_options:
table: network-services-multicast-settings
@@ -5798,6 +5801,9 @@ $defs:
- 2
- 3
default: 2
+ fast_leave:
+ type: bool
+ description: Enable fast-leave processing on specified VLANs.
evpn_l2_multi_domain:
type: bool
default: true
@@ -6988,6 +6994,9 @@ $defs:
- 2
- 3
default: 2
+ fast_leave:
+ type: bool
+ description: Enable fast-leave processing on specified VLANs.
bgp:
type: dict
keys:
@@ -9482,6 +9491,9 @@ $defs:
- 1
- 2
- 3
+ fast_leave:
+ type: bool
+ description: Enable fast-leave processing on specified VLANs.
vxlan:
type: bool
default: true
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml
index 7a4a5b1fd92..d820d78bb98 100644
--- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_network_services.schema.yml
@@ -172,6 +172,9 @@ $defs:
type: int
convert_types:
- str
+ fast_leave:
+ type: bool
+ description: Enable fast-leave processing on specified VLANs.
evpn_l3_multicast:
documentation_options:
table: network-services-multicast-settings
@@ -276,6 +279,9 @@ $defs:
- 2
- 3
default: 2
+ fast_leave:
+ type: bool
+ description: Enable fast-leave processing on specified VLANs.
evpn_l2_multi_domain:
type: bool
default: true
@@ -1249,6 +1255,9 @@ $defs:
- 2
- 3
default: 2
+ fast_leave:
+ type: bool
+ description: Enable fast-leave processing on specified VLANs.
bgp:
type: dict
keys:
diff --git a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi_settings.schema.yml b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi_settings.schema.yml
index 311e63d6002..b5a41e9cacd 100644
--- a/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi_settings.schema.yml
+++ b/python-avd/pyavd/_eos_designs/schema/schema_fragments/defs_svi_settings.schema.yml
@@ -202,6 +202,9 @@ $defs:
- 1
- 2
- 3
+ fast_leave:
+ type: bool
+ description: Enable fast-leave processing on specified VLANs.
vxlan:
type: bool
default: true
diff --git a/python-avd/pyavd/_eos_designs/structured_config/network_services/ip_igmp_snooping.py b/python-avd/pyavd/_eos_designs/structured_config/network_services/ip_igmp_snooping.py
index 2508a039b09..543144095b5 100644
--- a/python-avd/pyavd/_eos_designs/structured_config/network_services/ip_igmp_snooping.py
+++ b/python-avd/pyavd/_eos_designs/structured_config/network_services/ip_igmp_snooping.py
@@ -114,6 +114,14 @@ def _ip_igmp_snooping_vlan(self: AvdStructuredConfigNetworkServices, vlan, tenan
if version is not None:
ip_igmp_snooping_vlan["querier"]["version"] = version
+ fast_leave = default(
+ igmp_snooping_querier.get("fast_leave"),
+ tenant_igmp_snooping_querier.get("fast_leave"),
+ get(tenant, "evpn_l2_multicast.fast_leave"),
+ )
+ if fast_leave is not None:
+ ip_igmp_snooping_vlan["fast_leave"] = fast_leave
+
if ip_igmp_snooping_vlan:
return {"id": int(vlan["id"]), **ip_igmp_snooping_vlan}