Skip to content
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): Single-Active EVPN Multihoming #1864

Merged
merged 12 commits into from
Jul 1, 2022

Conversation

jonxstill
Copy link
Contributor

@jonxstill jonxstill commented Jun 9, 2022

Change Summary

Support single-active EVPN Multihoming.

Related Issue(s)

Fixes #1771

Component(s) name

arista.avd.eos_designs

Proposed changes

This PR introduces a new data model for ESIs in AVD which affects port-channel and ethernet interfaces. Subinterfaces of port-channels are unaffected.

< connected_endpoints_keys.key >:
  < endpoint_1 >:
    adapters:
        # Settings for all- or single-active EVPN multihoming
      - ethernet_segment:

          # Define a manual short-esi (be careful using this on profiles) or auto-generate an ESI | required
          short_esi: < 0000:0000:0000 | auto >

          # Configure this Ethernet Segment for all-active or single-active forwarding | optional
          # If omitted, Port-Channels use the EOS default of all-active
          # If omitted, Ethernet interfaces are explicitly configured as single-active
          redundancy: < all-active | single-active >

          # Configure DF algorithm and preferences | optional
          #  - auto: Use preference-based algorithm and assign preference based on position of 
          #          the device in the 'switches' list
          #          e.g. assuming a list of three switches, this would assign a preference of
          #          200 to the first switch, 100 to the 2nd and 0 to the third
          #  - preference: Set preference for each switch manually using designated_forwarder_preferences key
          #  - modulus: Use the default modulus-based algorithm
          #  - Alternatively a list of preferences can be provided - [500, 250] for example which will be
          #    mapped according the 'switches' list
          # If omitted, Port-Channels use the EOS default of modulus
          # If omitted, Ethernet interfaces default to the 'auto' mechanism detailed above
          designated_forwarder_algorithm: < "auto" | "modulus" | "preference" >
          # manual preference as described above | required only for preference algorithm
          designated_forwarder_preferences: [ < df_preference_for_each_switch > ]
          # Disable preemption for single-active forwarding when auto/manual DF preference is configured | optional
          dont_preempt: < true | false >

If a short_esi is defined under the port_channel key, it will be overridden by the short_esi defined under ethernet_segment. Configuration using the new scheme is identical regardless of whether a port-channel or ethernet interface is being configured. Port-channels still require setting a port_channel key and mode subkey as before.

This model is designed to assume sensible defaults, allowing minimal configuration to be set in most cases, but always allowing for this behaviour to be overridden.

How to test

  • A number of new molecule test cases have been added to the MH* leaf switches.
  • A separate AVD inventory was used to test generated configuration in vEOS-lab.

Checklist

Repository Checklist

  • My code has been rebased from devel before I start
  • I have read the CONTRIBUTING document.
  • My change requires a change to the documentation and documentation have been updated accordingly.
  • I have updated molecule CI testing accordingly. (check the box if not applicable)

@github-actions github-actions bot added role: eos_designs issue related to eos_designs role state: CI Updated CI scenario have been updated in the PR state: Documentation role Updated labels Jun 9, 2022
@jonxstill jonxstill marked this pull request as ready for review June 9, 2022 09:09
@jonxstill jonxstill requested a review from a team as a code owner June 9, 2022 09:09
@jonxstill jonxstill marked this pull request as draft June 9, 2022 13:08
@jonxstill
Copy link
Contributor Author

Added support fordont_preempt.

@jonxstill jonxstill force-pushed the esi_single_active branch 2 times, most recently from 15e5e45 to 8e5eb95 Compare June 9, 2022 18:44
@jonxstill jonxstill marked this pull request as ready for review June 9, 2022 18:44
Copy link
Contributor

@gmuloc gmuloc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@github-actions github-actions bot added the state: conflict PR with conflict label Jul 1, 2022
@github-actions
Copy link

github-actions bot commented Jul 1, 2022

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@jonxstill jonxstill force-pushed the esi_single_active branch from 9485b34 to 6a31131 Compare July 1, 2022 10:55
@github-actions github-actions bot removed the state: conflict PR with conflict label Jul 1, 2022
@github-actions
Copy link

github-actions bot commented Jul 1, 2022

Conflicts have been resolved. A maintainer will review the pull request shortly.

Copy link
Contributor

@ClausHolbechArista ClausHolbechArista left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ClausHolbechArista ClausHolbechArista merged commit 608b957 into aristanetworks:devel Jul 1, 2022
@jonxstill jonxstill deleted the esi_single_active branch July 1, 2022 12:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
role: eos_designs issue related to eos_designs role state: CI Updated CI scenario have been updated in the PR state: Documentation role Updated
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support for EVPN single-active in eos_designs role
3 participants