diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/vxlan-interface.md b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/vxlan-interface.md index 57666c957c8..ce4acda6f39 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/vxlan-interface.md +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/documentation/devices/vxlan-interface.md @@ -74,6 +74,10 @@ interface Management1 | VXLAN flood-lists learning from data-plane | Enabled | | Qos dscp propagation encapsulation | Enabled | | Qos map dscp to traffic-class decapsulation | Enabled | +| Remote VTEPs EVPN BFD transmission rate | 300ms | +| Remote VTEPs EVPN BFD expected minimum incoming rate (min-rx) | 300ms | +| Remote VTEPs EVPN BFD multiplier | 3 | +| Remote VTEPs EVPN BFD prefix-list | PL-TEST | #### VLAN to VNI, Flood List and Multicast Group Mappings @@ -111,6 +115,8 @@ interface Vxlan1 vxlan vrf Tenant_A_OP_Zone vni 10 vxlan vrf Tenant_A_WEB_Zone vni 11 vxlan mlag source-interface Loopback1 + bfd vtep evpn interval 300 min-rx 300 multiplier 3 + bfd vtep evpn prefix-list PL-TEST vxlan flood vtep 10.1.0.10 10.1.0.11 vxlan qos dscp propagation encapsulation vxlan qos map dscp to traffic-class decapsulation diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/vxlan-interface.cfg b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/vxlan-interface.cfg index e64058fcce8..a0d10459099 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/vxlan-interface.cfg +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/intended/configs/vxlan-interface.cfg @@ -24,6 +24,8 @@ interface Vxlan1 vxlan vrf Tenant_A_OP_Zone vni 10 vxlan vrf Tenant_A_WEB_Zone vni 11 vxlan mlag source-interface Loopback1 + bfd vtep evpn interval 300 min-rx 300 multiplier 3 + bfd vtep evpn prefix-list PL-TEST vxlan flood vtep 10.1.0.10 10.1.0.11 vxlan qos dscp propagation encapsulation vxlan qos map dscp to traffic-class decapsulation diff --git a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/vxlan-interface.yml b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/vxlan-interface.yml index 211d910cc3d..04f9fa2e971 100644 --- a/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/vxlan-interface.yml +++ b/ansible_collections/arista/avd/molecule/eos_cli_config_gen/inventory/host_vars/vxlan-interface.yml @@ -11,6 +11,11 @@ vxlan_interface: qos: dscp_propagation_encapsulation: true map_dscp_to_traffic_class_decapsulation: true + bfd_vtep_evpn: + interval: 300 + min_rx: 300 + multiplier: 3 + prefix_list: PL-TEST vlans: 110: vni: 10110 diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/README.md b/ansible_collections/arista/avd/roles/eos_cli_config_gen/README.md index df757e7c9bc..8c83c8d21c8 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/README.md +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/README.md @@ -1589,6 +1589,11 @@ vxlan_interface: mlag_source_interface: < source_interface_name > udp_port: < udp_port > virtual_router_encapsulation_mac_address: < mlag-system-id | ethernet_address (H.H.H) > + bfd_vtep_evpn: + interval: < integer > + min_rx: < integer > + multiplier: < 3-50 > + prefix_list: < prefix_list > qos: # !!!Warning, only few hardware types with software version >= 4.26.0 support the below knobs to configure Vxlan DSCP mapping. # For the Traffic Class to be derived based on the outer DSCP field of the incoming VxLan packet, the core ports must be in "DSCP Trust" mode. diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/vxlan-interface.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/vxlan-interface.j2 index b0d8b27d492..101d36329d7 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/vxlan-interface.j2 +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/documentation/vxlan-interface.j2 @@ -32,6 +32,20 @@ {% elif vxlan_interface.Vxlan1.vxlan.qos.map_dscp_to_traffic_class_decapsulation is arista.avd.defined(false) %} | Qos map dscp to traffic-class decapsulation | Disabled | {% endif %} +{% if vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn is arista.avd.defined %} +{% if vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.interval is arista.avd.defined %} +| Remote VTEPs EVPN BFD transmission rate | {{ vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.interval }}ms | +{% endif %} +{% if vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.min_rx is arista.avd.defined %} +| Remote VTEPs EVPN BFD expected minimum incoming rate (min-rx) | {{ vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.min_rx }}ms | +{% endif %} +{% if vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.multiplier is arista.avd.defined %} +| Remote VTEPs EVPN BFD multiplier | {{ vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.multiplier }} | +{% endif %} +{% if vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.prefix_list is arista.avd.defined %} +| Remote VTEPs EVPN BFD prefix-list | {{ vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.prefix_list }} | +{% endif %} +{% endif %} {% if vxlan_interface.Vxlan1.vxlan.vlans is arista.avd.defined %} #### VLAN to VNI, Flood List and Multicast Group Mappings diff --git a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/vxlan-interface.j2 b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/vxlan-interface.j2 index 84048f84c34..cdedbd43447 100644 --- a/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/vxlan-interface.j2 +++ b/ansible_collections/arista/avd/roles/eos_cli_config_gen/templates/eos/vxlan-interface.j2 @@ -32,6 +32,16 @@ interface Vxlan1 {% if vxlan_interface.Vxlan1.vxlan.mlag_source_interface is arista.avd.defined %} vxlan mlag source-interface {{ vxlan_interface.Vxlan1.vxlan.mlag_source_interface }} {% endif %} +{% if vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn is arista.avd.defined %} +{% if vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.interval is arista.avd.defined + and vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.min_rx is arista.avd.defined + and vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.multiplier is arista.avd.defined %} + bfd vtep evpn interval {{ vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.interval }} min-rx {{ vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.min_rx }} multiplier {{ vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.multiplier }} +{% endif %} +{% if vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.prefix_list is arista.avd.defined %} + bfd vtep evpn prefix-list {{ vxlan_interface.Vxlan1.vxlan.bfd_vtep_evpn.prefix_list }} +{% endif %} +{% endif %} {% if vxlan_interface.Vxlan1.vxlan.flood_vteps is arista.avd.defined %} vxlan flood vtep {{ vxlan_interface.Vxlan1.vxlan.flood_vteps | join(' ') }} {% endif %}