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}