-
Notifications
You must be signed in to change notification settings - Fork 236
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat(eos_designs): Support EVPN multihoming features link-tracking and lacp port-id range #1441
Conversation
ee73807
to
772267a
Compare
ansible_collections/arista/avd/roles/eos_designs/doc/fabric-topology.md
Outdated
Show resolved
Hide resolved
ansible_collections/arista/avd/roles/eos_designs/doc/fabric-topology.md
Outdated
Show resolved
Hide resolved
I have added new molecule scenario. Need some help with the review. If everything is good, let me know how to add it to the workflow. Thank you! |
Please do not add extra molecule scenarios. We are trying to get fewer, since the CI runtime is getting very long (and expensive). Best would be to just add the data you need in a hostvars file and add the device(s) under the unit_test scenario. Avoid using any existing groups. Just add a new |
@ClausHolbechArista , I saw an example of UNIT_TESTS in eos_designs_unit_tests. But for the multihoming example, I need the whole spine-leaf-end_point architecture to test link_tracking_groups and just a l3leaf to test lacp_port_id_range. But I am working to move this to eos_designs_unit_tests. |
@ClausHolbechArista let me know if these artifacts looks good to you. I will try to remove few more knobs in the example to make it a unit test only for those new knobs. |
ansible_collections/arista/avd/roles/eos_designs/templates/facts/switch/switch.j2
Outdated
Show resolved
Hide resolved
ansible_collections/arista/avd/roles/eos_designs/doc/fabric-topology.md
Outdated
Show resolved
Hide resolved
...ollections/arista/avd/roles/eos_designs/templates/connected_endpoints/ethernet-interfaces.j2
Outdated
Show resolved
Hide resolved
{% for lt_group in switch_data.combined.link_tracking.groups %} | ||
{% if lt_group.name is arista.avd.defined %} | ||
- name: {{ lt_group.name }} | ||
recovery_delay: {{ lt_group.recovery_delay | arista.avd.default(500) }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should default to 0 / no delay. If this is seconds, it will have severe impacts on the network.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, recovery_delay is required as far as I understand. 500 was the value used in document. We are allowing the BGP to come up and then LAGs to work to avoid the traffic arrival before the network is actually up. I understand you are presenting the generic config, but I think mostly this knob is going to be used for multihoming as far as I guess.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Even for a regular use case, I think there should be a delay to allow for route convergence unless if static routing is used.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For l3 devices (check switch.underlay_router) I think the default should be 300 to match the default mlag reload delay. For pure l2 devices where we just have a port-channel uplink, IMO the delay should be minimum. Maybe 10 seconds. Just for spanning-tree to settle.
ansible_collections/arista/avd/roles/eos_designs/templates/facts/switch/switch.j2
Outdated
Show resolved
Hide resolved
ansible_collections/arista/avd/roles/eos_designs/templates/facts/topology/p2p-uplinks.j2
Show resolved
Hide resolved
...ollections/arista/avd/roles/eos_designs/templates/underlay/interfaces/ethernet-interfaces.j2
Show resolved
Hide resolved
…d lacp port-id range
Tested link_tracking on a l2leaf. It works now. Couldn't test on SPINE though! |
1e74df3
to
a277010
Compare
...collections/arista/avd/molecule/eos_designs_unit_tests/documentation/devices/MHGRP1_LEAF1.md
Outdated
Show resolved
Hide resolved
ansible_collections/arista/avd/roles/eos_designs/doc/fabric-topology.md
Outdated
Show resolved
Hide resolved
ansible_collections/arista/avd/roles/eos_designs/doc/fabric-topology.md
Outdated
Show resolved
Hide resolved
{% for lt_group in switch_data.combined.link_tracking.groups %} | ||
{% if lt_group.name is arista.avd.defined %} | ||
- name: {{ lt_group.name }} | ||
recovery_delay: {{ lt_group.recovery_delay | arista.avd.default(500) }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For l3 devices (check switch.underlay_router) I think the default should be 300 to match the default mlag reload delay. For pure l2 devices where we just have a port-channel uplink, IMO the delay should be minimum. Maybe 10 seconds. Just for spanning-tree to settle.
...ollections/arista/avd/roles/eos_designs/templates/underlay/interfaces/ethernet-interfaces.j2
Show resolved
Hide resolved
Mlag reload delay: Here is the info I found on https://www.arista.com/en/um-eos/eos-multi-chassis-link-aggregation?searchword=mlag%20timer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thank you for this great contribution.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Change Summary
The PR #1285 and #1301 were related to the eos_cli_config_gen role and the same features were supported in eos_designs now. These features are related to the EVPN multihoming, 1) Link-Tracking Group 2) LACP Port-id
Design Guide Page 16 and 17
Related Issue(s)
Fixes #1043 #1074
Component(s) name
arista.avd.eos_designs
Proposed changes
Need to support: 1) Link tracking groups 2) Different Lacp Port-id in different vtep groups
A) Fabric variables:
To create Link tracking groups under any type of node as well as adds all the switch uplink interfaces as upstream interfaces in that group:
Lacp Port-id range must be set in Vteps only (l3leaf) to make sure the end-point can differentiate the different switches(l3leafs), it is connected to in the ES-LAG group.
To support different lacp port-id in different Vtep groups:
B) On connected-endpoints we set up the link tracking group downstream interfaces:
How to test
Molecule
Checklist
User Checklist
Repository Checklist