diff --git a/python-avd/pyavd/__init__.py b/python-avd/pyavd/__init__.py
index 5ccd53885f0..8b5862dd42b 100644
--- a/python-avd/pyavd/__init__.py
+++ b/python-avd/pyavd/__init__.py
@@ -17,7 +17,7 @@
__author__ = "Arista Networks"
__copyright__ = "Copyright 2023 Arista Networks"
__license__ = "Apache 2.0"
-__version__ = "4.4.0b2"
+__version__ = "4.5.0b2"
__all__ = [
"get_avd_facts",
diff --git a/python-avd/scripts/export_test_vars.yml b/python-avd/scripts/export_test_vars.yml
index a491335335c..4e833876a5c 100644
--- a/python-avd/scripts/export_test_vars.yml
+++ b/python-avd/scripts/export_test_vars.yml
@@ -31,27 +31,29 @@
- vars
- configs
- structured_configs
+ - documentation
delegate_to: localhost
- name: Copy structured_configs
ansible.builtin.shell:
- cmd: "cp -rT {{ scenario_dir }}/intended/structured_configs/ {{ pyavd_test_artifacts_dir }}/{{ testdir }}/structured_configs/"
+ cmd: "cp {{ scenario_dir }}/intended/structured_configs/*.yml {{ pyavd_test_artifacts_dir }}/{{ testdir }}/structured_configs/"
run_once: true
delegate_to: localhost
- when: lookup("ansible.builtin.first_found", scenario_dir ~ "/intended/structured_configs", skip=true)
+ when: lookup("ansible.builtin.fileglob", scenario_dir ~ "/intended/structured_configs/*.yml", skip=true)
- name: Copy configs
ansible.builtin.shell:
- cmd: "cp -rT {{ scenario_dir }}/intended/configs/ {{ pyavd_test_artifacts_dir }}/{{ testdir }}/configs/"
+ cmd: "cp {{ scenario_dir }}/intended/configs/*.cfg {{ pyavd_test_artifacts_dir }}/{{ testdir }}/configs/"
run_once: true
delegate_to: localhost
+ when: lookup("ansible.builtin.fileglob", scenario_dir ~ "/intended/configs/*.cfg", skip=true)
- name: Copy documentation
ansible.builtin.shell:
- cmd: "cp -rT {{ scenario_dir }}/documentation/devices/ {{ pyavd_test_artifacts_dir }}/{{ testdir }}/documentation/"
+ cmd: "cp {{ scenario_dir }}/documentation/devices/*.md {{ pyavd_test_artifacts_dir }}/{{ testdir }}/documentation/"
run_once: true
delegate_to: localhost
- when: lookup("ansible.builtin.first_found", scenario_dir ~ "/documentation/devices", skip=true)
+ when: lookup("ansible.builtin.fileglob", scenario_dir ~ "/documentation/devices/*.md", skip=true)
- name: Set fact with hostvars to force templating
ansible.builtin.set_fact:
diff --git a/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md b/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md
index 695ea560c91..b41d732eccb 100644
--- a/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md
+++ b/python-avd/tests/schema/artifacts/expected-network-services-multicast-settings.md
@@ -7,82 +7,82 @@
| Variable | Type | Required | Default | Value Restrictions | Description |
| -------- | ---- | -------- | ------- | ------------------ | ----------- |
- | [<network_services_keys.name>](## "<network_services_keys.name>") | List, items: Dictionary | | | | |
- | [ - name](## "<network_services_keys.name>.[].name") | String | Required, Unique | | | Specify a tenant name.
Tenant provide a construct to group L3 VRFs and L2 VLANs.
Networks services can be filtered by tenant name.
|
- | [ evpn_l2_multicast](## "<network_services_keys.name>.[].evpn_l2_multicast") | Dictionary | | | | Enable EVPN L2 Multicast for all SVIs and l2vlans within Tenant.
- Multicast group binding 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:
< evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool > + < vlan_id - 1 > + < evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset >.
- The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range.
- Enables `redistribute igmp` on the router bgp MAC VRF.
- When evpn_l2_multicast.enabled is true for a VLAN or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled - overriding those individual settings.
|
- | [ enabled](## "<network_services_keys.name>.[].evpn_l2_multicast.enabled") | Boolean | | | | |
- | [ underlay_l2_multicast_group_ipv4_pool](## "<network_services_keys.name>.[].evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool") | String | | | | IPv4_address/Mask |
- | [ underlay_l2_multicast_group_ipv4_pool_offset](## "<network_services_keys.name>.[].evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset") | Integer | | | | |
- | [ evpn_l3_multicast](## "<network_services_keys.name>.[].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
|
- | [ enabled](## "<network_services_keys.name>.[].evpn_l3_multicast.enabled") | Boolean | | | | |
- | [ evpn_underlay_l3_multicast_group_ipv4_pool](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool") | String | Required | | | IPv4_address/Mask |
- | [ evpn_underlay_l3_multicast_group_ipv4_pool_offset](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool_offset") | Integer | | | | |
- | [ evpn_peg](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_peg") | List, items: Dictionary | | | | For each group of nodes, allow configuration of EVPN PEG options.
The first group of settings where the device's hostname is present in the 'nodes' list will be used.
|
- | [ - nodes](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_peg.[].nodes") | List, items: String | | | | A description will be applied to all nodes with RP addresses configured if not set. |
- | [ - <str>](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_peg.[].nodes.[].<str>") | String | | | | |
- | [ transit](## "<network_services_keys.name>.[].evpn_l3_multicast.evpn_peg.[].transit") | Boolean | | | | Enable EVPN PEG transit mode. |
- | [ pim_rp_addresses](## "<network_services_keys.name>.[].pim_rp_addresses") | List, items: Dictionary | | | | For each group of nodes, allow configuration of RP Addresses & associated groups.
|
- | [ - rps](## "<network_services_keys.name>.[].pim_rp_addresses.[].rps") | List, items: String | | | Min Length: 1 | List of Rendevouz Points. |
- | [ - <str>](## "<network_services_keys.name>.[].pim_rp_addresses.[].rps.[].<str>") | String | | | | RP address. |
- | [ nodes](## "<network_services_keys.name>.[].pim_rp_addresses.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Configuration Will be applied to all nodes if not set.
|
- | [ - <str>](## "<network_services_keys.name>.[].pim_rp_addresses.[].nodes.[].<str>") | String | | | | |
- | [ groups](## "<network_services_keys.name>.[].pim_rp_addresses.[].groups") | List, items: String | | | | |
- | [ - <str>](## "<network_services_keys.name>.[].pim_rp_addresses.[].groups.[].<str>") | String | | | | Group_prefix/mask. |
- | [ igmp_snooping_querier](## "<network_services_keys.name>.[].igmp_snooping_querier") | Dictionary | | | | Enable IGMP snooping querier for each SVI/l2vlan within tenant, by default using IP address of Loopback 0.
When enabled, IGMP snooping querier will only be configured on L3 devices, i.e., uplink_type: p2p.
|
- | [ enabled](## "<network_services_keys.name>.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if "evpn_l2_multicast" is enabled. |
- | [ source_address](## "<network_services_keys.name>.[].igmp_snooping_querier.source_address") | String | | | Format: ipv4 | Default IP address of Loopback0 |
- | [ version](## "<network_services_keys.name>.[].igmp_snooping_querier.version") | Integer | | `2` | Valid Values:
- 1
- 2
- 3 | |
- | [ vrfs](## "<network_services_keys.name>.[].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](## "<network_services_keys.name>.[].vrfs.[].name") | String | Required, Unique | | | |
- | [ evpn_l3_multicast](## "<network_services_keys.name>.[].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`.
|
- | [ enabled](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.enabled") | Boolean | | | | |
- | [ evpn_peg](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.evpn_peg") | List, items: Dictionary | | | | For each group of nodes, allow configuration of EVPN PEG features. |
- | [ - nodes](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.evpn_peg.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Will apply to all nodes with RP addresses configured if not set.
|
- | [ - <str>](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.evpn_peg.[].nodes.[].<str>") | String | | | | |
- | [ transit](## "<network_services_keys.name>.[].vrfs.[].evpn_l3_multicast.evpn_peg.[].transit") | Boolean | | `False` | | Enable EVPN PEG transit mode. |
- | [ pim_rp_addresses](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses") | List, items: Dictionary | | | | For each group of nodes, allow configuration of RP Addresses & associated groups.
|
- | [ - rps](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].rps") | List, items: String | | | | A minimum of one RP must be specified. |
- | [ - <str>](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].rps.[].<str>") | String | | | | RP address. |
- | [ nodes](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Configuration Will be applied to all nodes if not set.
|
- | [ - <str>](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].nodes.[].<str>") | String | | | | |
- | [ groups](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].groups") | List, items: String | | | | |
- | [ - <str>](## "<network_services_keys.name>.[].vrfs.[].pim_rp_addresses.[].groups.[].<str>") | String | | | | Group_prefix/mask. |
- | [ evpn_l2_multi_domain](## "<network_services_keys.name>.[].vrfs.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains.
Overrides `.[].evpn_l2_multi_domain`.
|
- | [ svis](## "<network_services_keys.name>.[].vrfs.[].svis") | List, items: Dictionary | | | | List of SVIs.
This will create both the L3 SVI and L2 VLAN based on filters applied to the node.
|
- | [ - id](## "<network_services_keys.name>.[].vrfs.[].svis.[].id") | Integer | Required, Unique | | Min: 1
Max: 4096 | SVI interface id and VLAN id. |
- | [ nodes](## "<network_services_keys.name>.[].vrfs.[].svis.[].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.
|
- | [ - node](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname |
- | [ evpn_l2_multicast](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].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](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].evpn_l2_multicast.enabled") | Boolean | | | | |
- | [ evpn_l3_multicast](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].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`.
|
- | [ enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].evpn_l3_multicast.enabled") | Boolean | | | | |
- | [ igmp_snooping_enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_enabled") | Boolean | | | | Enable IGMP Snooping (Enabled by default on EOS). |
- | [ igmp_snooping_querier](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier") | Dictionary | | | | |
- | [ enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. |
- | [ source_address](## "<network_services_keys.name>.[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
|
- | [ version](## "<network_services_keys.name>.[].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). |
- | [ evpn_l2_multicast](## "<network_services_keys.name>.[].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](## "<network_services_keys.name>.[].vrfs.[].svis.[].evpn_l2_multicast.enabled") | Boolean | | | | |
- | [ evpn_l3_multicast](## "<network_services_keys.name>.[].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`.
|
- | [ enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].evpn_l3_multicast.enabled") | Boolean | | | | |
- | [ igmp_snooping_enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_enabled") | Boolean | | | | Enable IGMP Snooping (Enabled by default on EOS). |
- | [ igmp_snooping_querier](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_querier") | Dictionary | | | | |
- | [ enabled](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. |
- | [ source_address](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
|
- | [ version](## "<network_services_keys.name>.[].vrfs.[].svis.[].igmp_snooping_querier.version") | Integer | | | Valid Values:
- 1
- 2
- 3 | IGMP Version (By default EOS uses IGMP version 2 for IGMP querier). |
- | [ l2vlans](## "<network_services_keys.name>.[].l2vlans") | List, items: Dictionary | | | | Define L2 network services organized by vlan id. |
- | [ - id](## "<network_services_keys.name>.[].l2vlans.[].id") | Integer | Required, Unique | | Min: 1
Max: 4094 | VLAN ID |
- | [ evpn_l2_multicast](## "<network_services_keys.name>.[].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`.
|
- | [ enabled](## "<network_services_keys.name>.[].l2vlans.[].evpn_l2_multicast.enabled") | Boolean | | | | |
- | [ igmp_snooping_enabled](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_enabled") | Boolean | | `True` | | Activate or deactivate IGMP snooping. |
- | [ igmp_snooping_querier](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_querier") | Dictionary | | | | Enable igmp snooping querier, by default using IP address of Loopback 0.
When enabled, igmp snooping querier will only be configured on l3 devices, i.e., uplink_type: p2p.
|
- | [ enabled](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_querier.enabled") | Boolean | | | | Will be enabled automatically if evpn_l2_multicast is enabled. |
- | [ source_address](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_querier.source_address") | String | | | | IPv4_address
If not set, IP address of "Loopback0" will be used.
|
- | [ version](## "<network_services_keys.name>.[].l2vlans.[].igmp_snooping_querier.version") | Integer | | `2` | Valid Values:
- 1
- 2
- 3 | |
+ | [<network_services_keys.name>](## "") | List, items: Dictionary | | | | |
+ | [ - name](## ".[].name") | String | Required, Unique | | | Specify a tenant name.
Tenant provide a construct to group L3 VRFs and L2 VLANs.
Networks services can be filtered by tenant name.
|
+ | [ evpn_l2_multicast](## ".[].evpn_l2_multicast") | Dictionary | | | | Enable EVPN L2 Multicast for all SVIs and l2vlans within Tenant.
- Multicast group binding 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:
< evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool > + < vlan_id - 1 > + < evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset >.
- The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range.
- Enables `redistribute igmp` on the router bgp MAC VRF.
- When evpn_l2_multicast.enabled is true for a VLAN or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled - overriding those individual settings.
|
+ | [ 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 | | | | |
+ | [ 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
|
+ | [ 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 |
+ | [ evpn_underlay_l3_multicast_group_ipv4_pool_offset](## ".[].evpn_l3_multicast.evpn_underlay_l3_multicast_group_ipv4_pool_offset") | Integer | | | | |
+ | [ evpn_peg](## ".[].evpn_l3_multicast.evpn_peg") | List, items: Dictionary | | | | For each group of nodes, allow configuration of EVPN PEG options.
The first group of settings where the device's hostname is present in the 'nodes' list will be used.
|
+ | [ - nodes](## ".[].evpn_l3_multicast.evpn_peg.[].nodes") | List, items: String | | | | A description will be applied to all nodes with RP addresses configured if not set. |
+ | [ - <str>](## ".[].evpn_l3_multicast.evpn_peg.[].nodes.[]") | String | | | | |
+ | [ transit](## ".[].evpn_l3_multicast.evpn_peg.[].transit") | Boolean | | | | Enable EVPN PEG transit mode. |
+ | [ pim_rp_addresses](## ".[].pim_rp_addresses") | List, items: Dictionary | | | | For each group of nodes, allow configuration of RP Addresses & associated groups.
|
+ | [ - rps](## ".[].pim_rp_addresses.[].rps") | List, items: String | | | Min Length: 1 | List of Rendevouz Points. |
+ | [ - <str>](## ".[].pim_rp_addresses.[].rps.[]") | String | | | | RP address. |
+ | [ nodes](## ".[].pim_rp_addresses.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Configuration Will be applied to all nodes if not set.
|
+ | [ - <str>](## ".[].pim_rp_addresses.[].nodes.[]") | String | | | | |
+ | [ groups](## ".[].pim_rp_addresses.[].groups") | List, items: String | | | | |
+ | [ - <str>](## ".[].pim_rp_addresses.[].groups.[]") | String | | | | Group_prefix/mask. |
+ | [ igmp_snooping_querier](## ".[].igmp_snooping_querier") | Dictionary | | | | Enable IGMP snooping querier for each SVI/l2vlan within tenant, by default using IP address of Loopback 0.
When enabled, IGMP snooping querier will only be configured on L3 devices, i.e., uplink_type: p2p.
|
+ | [ 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
| |
+ | [ 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`.
|
+ | [ enabled](## ".[].vrfs.[].evpn_l3_multicast.enabled") | Boolean | | | | |
+ | [ evpn_peg](## ".[].vrfs.[].evpn_l3_multicast.evpn_peg") | List, items: Dictionary | | | | For each group of nodes, allow configuration of EVPN PEG features. |
+ | [ - nodes](## ".[].vrfs.[].evpn_l3_multicast.evpn_peg.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Will apply to all nodes with RP addresses configured if not set.
|
+ | [ - <str>](## ".[].vrfs.[].evpn_l3_multicast.evpn_peg.[].nodes.[]") | String | | | | |
+ | [ transit](## ".[].vrfs.[].evpn_l3_multicast.evpn_peg.[].transit") | Boolean | | `False` | | Enable EVPN PEG transit mode. |
+ | [ pim_rp_addresses](## ".[].vrfs.[].pim_rp_addresses") | List, items: Dictionary | | | | For each group of nodes, allow configuration of RP Addresses & associated groups.
|
+ | [ - rps](## ".[].vrfs.[].pim_rp_addresses.[].rps") | List, items: String | | | | A minimum of one RP must be specified. |
+ | [ - <str>](## ".[].vrfs.[].pim_rp_addresses.[].rps.[]") | String | | | | RP address. |
+ | [ nodes](## ".[].vrfs.[].pim_rp_addresses.[].nodes") | List, items: String | | | | Restrict configuration to specific nodes.
Configuration Will be applied to all nodes if not set.
|
+ | [ - <str>](## ".[].vrfs.[].pim_rp_addresses.[].nodes.[]") | String | | | | |
+ | [ groups](## ".[].vrfs.[].pim_rp_addresses.[].groups") | List, items: String | | | | |
+ | [ - <str>](## ".[].vrfs.[].pim_rp_addresses.[].groups.[]") | String | | | | Group_prefix/mask. |
+ | [ evpn_l2_multi_domain](## ".[].vrfs.[].evpn_l2_multi_domain") | Boolean | | | | Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains.
Overrides `.[].evpn_l2_multi_domain`.
|
+ | [ svis](## ".[].vrfs.[].svis") | List, items: Dictionary | | | | List of SVIs.
This will create both the L3 SVI and L2 VLAN based on filters applied to the node.
|
+ | [ - id](## ".[].vrfs.[].svis.[].id") | Integer | Required, Unique | | Min: 1
Max: 4096 | SVI interface id and VLAN id. |
+ | [ nodes](## ".[].vrfs.[].svis.[].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.
|
+ | [ - node](## ".[].vrfs.[].svis.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname |
+ | [ evpn_l2_multicast](## ".[].vrfs.[].svis.[].nodes.[].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.[].nodes.[].evpn_l2_multicast.enabled") | Boolean | | | | |
+ | [ evpn_l3_multicast](## ".[].vrfs.[].svis.[].nodes.[].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`.
|
+ | [ enabled](## ".[].vrfs.[].svis.[].nodes.[].evpn_l3_multicast.enabled") | Boolean | | | | |
+ | [ igmp_snooping_enabled](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_enabled") | Boolean | | | | Enable IGMP Snooping (Enabled by default on EOS). |
+ | [ igmp_snooping_querier](## ".[].vrfs.[].svis.[].nodes.[].igmp_snooping_querier") | Dictionary | | | | |
+ | [ 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). |
+ | [ 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`.
|
+ | [ enabled](## ".[].vrfs.[].svis.[].evpn_l3_multicast.enabled") | Boolean | | | | |
+ | [ igmp_snooping_enabled](## ".[].vrfs.[].svis.[].igmp_snooping_enabled") | Boolean | | | | Enable IGMP Snooping (Enabled by default on EOS). |
+ | [ igmp_snooping_querier](## ".[].vrfs.[].svis.[].igmp_snooping_querier") | Dictionary | | | | |
+ | [ 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). |
+ | [ l2vlans](## ".[].l2vlans") | List, items: Dictionary | | | | Define L2 network services organized by vlan id. |
+ | [ - id](## ".[].l2vlans.[].id") | Integer | Required, Unique | | 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`.
|
+ | [ enabled](## ".[].l2vlans.[].evpn_l2_multicast.enabled") | Boolean | | | | |
+ | [ igmp_snooping_enabled](## ".[].l2vlans.[].igmp_snooping_enabled") | Boolean | | `True` | | Activate or deactivate IGMP snooping. |
+ | [ igmp_snooping_querier](## ".[].l2vlans.[].igmp_snooping_querier") | Dictionary | | | | Enable igmp snooping querier, by default using IP address of Loopback 0.
When enabled, igmp snooping querier will only be configured on l3 devices, i.e., uplink_type: p2p.
|
+ | [ 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
| |
| [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 |
+ | [ - 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.
|
- | [ - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname |
+ | [ - node](## "svi_profiles.[].nodes.[].node") | String | Required, Unique | | | l3_leaf inventory hostname |
| [ evpn_l2_multicast](## "svi_profiles.[].nodes.[].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.[].nodes.[].evpn_l2_multicast.enabled") | Boolean | | | | |
| [ evpn_l3_multicast](## "svi_profiles.[].nodes.[].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`.
|
@@ -91,7 +91,7 @@
| [ igmp_snooping_querier](## "svi_profiles.[].nodes.[].igmp_snooping_querier") | Dictionary | | | | |
| [ 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). |
+ | [ 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). |
| [ 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`.
|
@@ -100,103 +100,300 @@
| [ igmp_snooping_querier](## "svi_profiles.[].igmp_snooping_querier") | Dictionary | | | | |
| [ 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). |
+ | [ 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). |
=== "YAML"
```yaml
:
- - name:
+
+ # Specify a tenant name.
+ # Tenant provide a construct to group L3 VRFs and L2 VLANs.
+ # Networks services can be filtered by tenant name.
+ - name:
+
+ # Enable EVPN L2 Multicast for all SVIs and l2vlans within Tenant.
+ # - Multicast group binding 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:
+ # < evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool > + < vlan_id - 1 > + < evpn_l2_multicast.underlay_l2_multicast_group_ipv4_pool_offset >.
+ # - The recommendation is to assign a /20 block within the 232.0.0.0/8 Source-Specific Multicast range.
+ # - Enables `redistribute igmp` on the router bgp MAC VRF.
+ # - When evpn_l2_multicast.enabled is true for a VLAN or a tenant, "igmp snooping" and "igmp snooping querier" will always be enabled - overriding those individual settings.
evpn_l2_multicast:
enabled:
+
+ # IPv4_address/Mask
underlay_l2_multicast_group_ipv4_pool:
underlay_l2_multicast_group_ipv4_pool_offset:
+
+ # 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
evpn_l3_multicast:
enabled:
- evpn_underlay_l3_multicast_group_ipv4_pool:
+
+ # IPv4_address/Mask
+ evpn_underlay_l3_multicast_group_ipv4_pool:
evpn_underlay_l3_multicast_group_ipv4_pool_offset:
+
+ # For each group of nodes, allow configuration of EVPN PEG options.
+ # The first group of settings where the device's hostname is present in the 'nodes' list will be used.
evpn_peg:
+
+ # A description will be applied to all nodes with RP addresses configured if not set.
- nodes:
-
+
+ # Enable EVPN PEG transit mode.
transit:
+
+ # For each group of nodes, allow configuration of RP Addresses & associated groups.
pim_rp_addresses:
- - rps:
+
+ # List of Rendevouz Points.
+ - rps: # >=1 items
+
+ # RP address.
-
+
+ # Restrict configuration to specific nodes.
+ # Configuration Will be applied to all nodes if not set.
nodes:
-
groups:
+
+ # Group_prefix/mask.
-
+
+ # Enable IGMP snooping querier for each SVI/l2vlan within tenant, by default using IP address of Loopback 0.
+ # When enabled, IGMP snooping querier will only be configured on L3 devices, i.e., uplink_type: p2p.
igmp_snooping_querier:
+
+ # Will be enabled automatically if "evpn_l2_multicast" is enabled.
enabled:
+
+ # Default IP address of Loopback0
source_address:
- version:
+ version:
+
+ # 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.
vrfs:
- - name:
+ - name:
+
+ # 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`.
evpn_l3_multicast:
enabled:
+
+ # For each group of nodes, allow configuration of EVPN PEG features.
evpn_peg:
+
+ # Restrict configuration to specific nodes.
+ # Will apply to all nodes with RP addresses configured if not set.
- nodes:
-
- transit:
+
+ # Enable EVPN PEG transit mode.
+ transit:
+
+ # For each group of nodes, allow configuration of RP Addresses & associated groups.
pim_rp_addresses:
+
+ # A minimum of one RP must be specified.
- rps:
+
+ # RP address.
-
+
+ # Restrict configuration to specific nodes.
+ # Configuration Will be applied to all nodes if not set.
nodes:
-
groups:
+
+ # Group_prefix/mask.
-
+
+ # Explicitly extend all VLANs/VLAN-Aware Bundles inside the VRF to remote EVPN domains.
+ # Overrides `.[].evpn_l2_multi_domain`.
evpn_l2_multi_domain:
+
+ # List of SVIs.
+ # This will create both the L3 SVI and L2 VLAN based on filters applied to the node.
svis:
- - id:
+
+ # SVI interface id and VLAN id.
+ - id:
+
+ # 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.
nodes:
- - node:
+
+ # l3_leaf inventory hostname
+ - node:
+
+ # 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`.
evpn_l2_multicast:
enabled:
+
+ # 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`.
evpn_l3_multicast:
enabled:
+
+ # Enable IGMP Snooping (Enabled by default on EOS).
igmp_snooping_enabled:
igmp_snooping_querier:
+
+ # Will be enabled automatically if evpn_l2_multicast is enabled.
enabled:
+
+ # IPv4_address
+ # If not set, IP address of "Loopback0" will be used.
source_address:
- version:
+
+ # IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).
+ version:
+
+ # 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`.
evpn_l2_multicast:
enabled:
+
+ # 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`.
evpn_l3_multicast:
enabled:
+
+ # Enable IGMP Snooping (Enabled by default on EOS).
igmp_snooping_enabled:
igmp_snooping_querier:
+
+ # Will be enabled automatically if evpn_l2_multicast is enabled.
enabled:
+
+ # IPv4_address
+ # If not set, IP address of "Loopback0" will be used.
source_address:
- version:
+
+ # IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).
+ version:
+
+ # Define L2 network services organized by vlan id.
l2vlans:
- - id:
+
+ # VLAN ID
+ - id:
+
+ # 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`.
evpn_l2_multicast:
enabled:
- igmp_snooping_enabled:
+
+ # Activate or deactivate IGMP snooping.
+ igmp_snooping_enabled:
+
+ # Enable igmp snooping querier, by default using IP address of Loopback 0.
+ # When enabled, igmp snooping querier will only be configured on l3 devices, i.e., uplink_type: p2p.
igmp_snooping_querier:
+
+ # Will be enabled automatically if evpn_l2_multicast is enabled.
enabled:
+
+ # IPv4_address
+ # If not set, IP address of "Loopback0" will be used.
source_address:
- version:
+ version:
+
+ # 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
svi_profiles:
- - profile:
+
+ # Profile name
+ - profile:
+
+ # 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.
nodes:
- - node:
+
+ # l3_leaf inventory hostname
+ - node:
+
+ # 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`.
evpn_l2_multicast:
enabled:
+
+ # 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`.
evpn_l3_multicast:
enabled:
+
+ # Enable IGMP Snooping (Enabled by default on EOS).
igmp_snooping_enabled:
igmp_snooping_querier:
+
+ # Will be enabled automatically if evpn_l2_multicast is enabled.
enabled:
+
+ # IPv4_address
+ # If not set, IP address of "Loopback0" will be used.
source_address:
- version:
+
+ # IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).
+ version:
+
+ # 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`.
evpn_l2_multicast:
enabled:
+
+ # 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`.
evpn_l3_multicast:
enabled:
+
+ # Enable IGMP Snooping (Enabled by default on EOS).
igmp_snooping_enabled:
igmp_snooping_querier:
+
+ # Will be enabled automatically if evpn_l2_multicast is enabled.
enabled:
+
+ # IPv4_address
+ # If not set, IP address of "Loopback0" will be used.
source_address:
- version:
+
+ # IGMP Version (By default EOS uses IGMP version 2 for IGMP querier).
+ version:
```