-
Notifications
You must be signed in to change notification settings - Fork 219
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): l3_edge with rfc5549 underlay and next-hop address-family ipv6 #4491
base: devel
Are you sure you want to change the base?
Feat(eos_designs): l3_edge with rfc5549 underlay and next-hop address-family ipv6 #4491
Conversation
Review docs on Read the Docs To test this pull request: # Create virtual environment for this testing below the current directory
python -m venv test-avd-pr-4491
# Activate the virtual environment
source test-avd-pr-4491/bin/activate
# Install all requirements including PyAVD
pip install "pyavd[ansible] @ git+https://github.com/nathanmusser/avd.git@issue4379_p2p_links#subdirectory=python-avd" --force
# Point Ansible collections path to the Python virtual environment
export ANSIBLE_COLLECTIONS_PATH=$VIRTUAL_ENV/ansible_collections
# Install Ansible collection
ansible-galaxy collection install git+https://github.com/nathanmusser/avd.git#/ansible_collections/arista/avd/,issue4379_p2p_links --force
# Optional: Install AVD examples
cd test-avd-pr-4491
ansible-playbook arista.avd.install_examples |
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.
Please update the description for the routing_protocol
key in the schema fragment to explain the new behavior.
Also please add a test in molecule for this scenario. It should be enough to add another interface to one of the existing tests. I suggest
|
Started a refactor of this after a discussion with @ClausHolbechArista . New iteration is such that when the underlay is set to RFC5549 and eos_cli_config_gen had the next-hop ipv6 knob for peer groups in I haven't done extensive testing of the latest commit yet, just verified it did what I wanted against a prod fabric. Need to finish testing the various edge cases and make sure it's implemented correctly. Need to update molecule, probably need to flesh out the documentation to correctly describe the eos_cli_config_gen keys as well as the behavior in eos_designs. Ultimately I still want to explore having the ability to override the peer group for l3_edge neighbors, but not sure I want to tackle that here. |
Thanks Nathan
We would not want that capability in the |
Respectfully I disagree here. I started to type a novel justifying my thoughts, but I figure we can revisit after 5.0. I did successfully prototype custom peer_groups yesterday after my initial comment. I'm sure I haven't considered all the implications but it wasn't as difficult as I imagined. In the meantime I'll keep this PR focused on the above solution, I'll update the title and description today to better reflect the new focus. |
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
…erlay" is set to False and the protocol is ebgp.
for more information, see https://pre-commit.ci
37f3bf0
to
7126f28
Compare
…eos for `port-channel-interfaces` (aristanetworks#4557) Co-authored-by: Laxmikant Chintakindi <[email protected]> Co-authored-by: Claus Holbech <[email protected]> Co-authored-by: Guillaume Mulocher <[email protected]>
…ion templates (aristanetworks#4558) Co-authored-by: JulioPDX <[email protected]> Co-authored-by: Claus Holbech <[email protected]>
…gregation to match with EOS (aristanetworks#4585) Co-authored-by: Claus Holbech <[email protected]>
…et-interfaces to match with EOS (aristanetworks#4569)
Conflicts have been resolved. A maintainer will review the pull request shortly. |
Quality Gate passedIssues Measures |
Added a new molecule test |
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
include_in_underlay_protocol: false | ||
routing_protocol: ebgp |
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.
Not sure why we are rendering BGP for this neighbor
@@ -250,6 +250,7 @@ router bgp 65104 | |||
no neighbor EVPN-OVERLAY-PEERS activate | |||
neighbor UNDERLAY_PEERS activate | |||
neighbor UNDERLAY_PEERS next-hop address-family ipv6 originate | |||
no neighbor 10.23.23.2 next-hop address-family ipv6 |
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.
@kornoa you implemented this 9 months ago. If we implement this change, we will no add this extra line, but as I see it, the config would actually be more correct with this change. Do you have a running network using the rfc5549 + the ebgp
knob under l3_edge without ipv6_enable?
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.
Sorry, the customer's project had finished. I don't have access to this implementation anymore.
I think this line is redundant. An IPv4-based neighbor session with an IPv4 address-family defaults to a IPv4 next-hop within the NLRI. But anyway, it doesn't harm.
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.
An IPv4-based neighbor session with an IPv4 address-family defaults to a IPv4 next-hop within the NLRI.
This is true, but if the neighbor is is a member of the UNDERLAY_PEERS group (which l3_edge does) then line 252 forces the advertisements to advertise with ipv6 next-hops instead. Or at least this was my experience in my testing. Hence the need for the suggested 253.
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.
Copy. :-)
@@ -251,6 +251,7 @@ router bgp 65105 | |||
no neighbor EVPN-OVERLAY-PEERS activate | |||
neighbor UNDERLAY_PEERS activate | |||
neighbor UNDERLAY_PEERS next-hop address-family ipv6 originate | |||
no neighbor 10.23.23.6 next-hop address-family ipv6 |
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.
@nathanmusser I think we need to keep this neighbor with the next-hop, since we have ipv6_enable. Now I understand why you asked about this a long time ago :-/
{% if neighbor.next_hop.address_family_ipv6.enabled is arista.avd.defined %} | ||
{% if neighbor.next_hop.address_family_ipv6.enabled is arista.avd.defined(true) %} | ||
{% set ipv6_originate_cli = "neighbor " ~ neighbor.ip_address ~ " next-hop address-family ipv6" %} | ||
{% if neighbor.next_hop.address_family_ipv6.originate is arista.avd.defined(true) %} | ||
{% set ipv6_originate_cli = ipv6_originate_cli ~ " originate" %} | ||
{% endif %} | ||
{% elif neighbor.next_hop.address_family_ipv6.enabled is arista.avd.defined(false) %} | ||
{% set ipv6_originate_cli = "no neighbor " ~ neighbor.ip_address ~ " next-hop address-family ipv6" %} | ||
{% endif %} | ||
{{ ipv6_originate_cli }} | ||
{% endif %} |
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.
{% if neighbor.next_hop.address_family_ipv6.enabled is arista.avd.defined %} | |
{% if neighbor.next_hop.address_family_ipv6.enabled is arista.avd.defined(true) %} | |
{% set ipv6_originate_cli = "neighbor " ~ neighbor.ip_address ~ " next-hop address-family ipv6" %} | |
{% if neighbor.next_hop.address_family_ipv6.originate is arista.avd.defined(true) %} | |
{% set ipv6_originate_cli = ipv6_originate_cli ~ " originate" %} | |
{% endif %} | |
{% elif neighbor.next_hop.address_family_ipv6.enabled is arista.avd.defined(false) %} | |
{% set ipv6_originate_cli = "no neighbor " ~ neighbor.ip_address ~ " next-hop address-family ipv6" %} | |
{% endif %} | |
{{ ipv6_originate_cli }} | |
{% endif %} | |
{% if neighbor.next_hop.address_family_ipv6.enabled is arista.avd.defined(true) %} | |
{% set ipv6_originate_cli = "neighbor " ~ neighbor.ip_address ~ " next-hop address-family ipv6" %} | |
{% if neighbor.next_hop.address_family_ipv6.originate is arista.avd.defined(true) %} | |
{% set ipv6_originate_cli = ipv6_originate_cli ~ " originate" %} | |
{% endif %} | |
{{ ipv6_originate_cli }} | |
{% elif neighbor.next_hop.address_family_ipv6.enabled is arista.avd.defined(false) %} | |
{% set ipv6_originate_cli = "no neighbor " ~ neighbor.ip_address ~ " next-hop address-family ipv6" %} | |
{{ ipv6_originate_cli }} | |
{% endif %} |
Moving to draft until comments have been addressed. |
I will likely not have the cycles for this until mid/late December or January. I plan to complete at that time but just adding that for transparency here. |
Change Summary
When
routing_protocol
is set toebgp
and the underlay is set torfc5549
we now override thenext-hop address-family ipv6
directive the neighbor inherits from the underlay peer-group.Related Issue(s)
Partially fixes #4379
Component(s) name
arista.avd.eos_designs
Proposed changes
Override the
next-hop address-family ipv6
directive the neighbor inherits from the underlay peer-group.How to test
Checklist
User Checklist
Repository Checklist