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): EVPN Multicast L3 (OISM) Support #2276

Merged
merged 24 commits into from
Dec 22, 2022

Conversation

jonxstill
Copy link
Contributor

@jonxstill jonxstill commented Nov 10, 2022

Change Summary

Add support for:

  • EVPN Multicast L3 Support
  • PIM External Gateway
  • Transit Mode
  • Configuring static RPs

Related Issue(s)

Fixes #2031

Component(s) name

arista.avd.eos_designs

Proposed changes

This PR builds on @carlbuchmann's existing multicast underlay support and follows the evpn_l2_multicast configuration very closely. This requires evpn_multicast to be set. In addition to the EVPN-specific functionality, this PR adds an independent key for setting VRF RP addresses on specific nodes (or all nodes, if none specified).

EVPN L3 Multicast and PEG Transit configuration:

  <Tenant>:

    # Enable L3 Multicast for all SVIs and l3vlans within Tenant | Optional
    # - In the evpn-l3ls design type, this enables L3 EVPN Multicast (aka OISM)
    # - 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

    l3_multicast:
      enabled: < true | false | default false >
      evpn_underlay_l3_multicast_group_ipv4_pool: < IPv4_address/Mask > # Required
      evpn_underlay_l3_multicast_group_ipv4_pool_offset: < int > # Optional
      evpn_peg:
        # For each group of nodes, allow configuration of EVPN PEG options | Optional
        # At least one RP address must be configured for EVPN PEG to be configured.
        - nodes: [ < node_1 >, < node_2 >, < node_N > ]                # Optional - will apply to all nodes with RP addresses configured if not set.
          transit: < true | false | default false >                    # Enable EVPN PEG transit mode
      rp_addresses:
        # For each group of nodes, allow configuration of RP Addresses & associated groups
        - nodes: [ < node_1 >, < node_2 >, < node_N > ]                # Optional - will apply to all nodes if not set.
          rps: [ < rp_address_1 >, < rp_address_2 > ]                  # A minimum of one RP must be specified
          groups: [ < group_prefix_1/mask >, < group_prefix_1/mask > ] # Optional
    vrfs:
      <vrf>:
        l3_multicast:
          enabled: < true | false >
          evpn_peg:
            # For each group of nodes, allow configuration of EVPN PEG features | Optional
            # At least one RP address must be configured for EVPN PEG to be configured.
            - nodes: [ < node_1 >, < node_2 >, < node_N > ]                # Optional - will apply to all nodes with RP addresses configured if not set.
              transit: < true | false | default false >                    # Enable EVPN PEG transit mode
          rp_addresses:                                                    # For each group of nodes, allow configuration of RP Addresses & associated groups
            - nodes: [ < node_1 >, < node_2 >, < node_N > ]                # Optional - will apply to all nodes if not set.
              rps: [ < rp_address_1 >, < rp_address_2 > ]                  # A minimum of one RP must be specified
              groups: [ < group_prefix_1/mask >, < group_prefix_1/mask > ] # Optional
        svis:
          <svi>:
            l3_multicast:
              enabled: < true | false >

PEG interface configuration:

<Tenant>:
  vrfs:
    <vrf>:
      l3_interfaces:
        - interfaces: [<interface>, <interface>]
          nodes: [ < node_1 >, < node_2 >, < node_N > ]
          pim:
            enabled: true

How to test

  • Molecule tests added to EVPN_MULTICAST_TESTS.yml in eos_designs_unit_tests scenario.
  • Tested in EMEA SE lab.

Checklist

User Checklist

  • N/A

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
Copy link

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

@github-actions
Copy link

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

@ClausHolbechArista ClausHolbechArista added this to the v3.8.0 milestone Nov 11, 2022
@github-actions github-actions bot added the state: conflict PR with conflict label Nov 23, 2022
@github-actions
Copy link

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

@github-actions
Copy link

github-actions bot commented Dec 1, 2022

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

@jonxstill jonxstill force-pushed the evpn_multicast_l3 branch 3 times, most recently from efab4a2 to 827ccee Compare December 6, 2022 09:00
@jonxstill jonxstill marked this pull request as ready for review December 6, 2022 17:41
@jonxstill jonxstill requested a review from a team as a code owner December 6, 2022 17:41
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.

PArtial review comments ... don;'t hesitate to reach out for questions! Will come back to it later!

@jonxstill jonxstill force-pushed the evpn_multicast_l3 branch 3 times, most recently from a0c7b61 to 851529d Compare December 9, 2022 16:10
@@ -304,6 +560,62 @@ interface Vlan3021
vrf MULTICAST_ENABLED_3_DISABLED_4
ip address 10.255.251.0/31
!
interface Vlan3030
Copy link
Contributor

Choose a reason for hiding this comment

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

Would be nice if you could also test the combination with l2_multicast

Copy link
Member

@carlbuchmann carlbuchmann left a comment

Choose a reason for hiding this comment

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

LGTM!

@carlbuchmann carlbuchmann merged commit 29f2a02 into aristanetworks:devel Dec 22, 2022
@jonxstill jonxstill deleted the evpn_multicast_l3 branch December 28, 2022 11:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rn: Feat(eos_designs) 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.

Multicast EVPN IRB/OISM Support
7 participants