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

Updates to network-instance EVPN models for EVPN redist support #1126

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

abamberger-arista
Copy link
Contributor

Change Scope

This is part 3 of splitting the original PR #1108 into 3 separate PRs. This one targets changes required to configure redistribution of routes into EVPN

MACVRFs and IPVRFs can be configured to redistribute different types of MACs and IP Prefixes to their peers. For instance, a MACVRF might be configured to redistribute routes for dynamic MACs learned in the associated local VLANs, but not static MACs configured in those same VLANs.

To support the ability to configure these distribution settings, this change proposes the addition of a “redistribute” leaf list to the EVI subtree, along with a new identity type for types of redistributions to support. This initial proposal has 3 types of redistributions defined, REDISTRIBUTE_LEARNED and REDISTRIBUTE_STATIC, for redistributing dynamically learned and statically configured MACs, respectively, into a MACVRF, and REDISTRIBUTE_CONNECTED, for redistributing connected IP routes into an IPVRF. Additional types of redistribution could be added in later changes.

Because this is a new leaf being added, this change is fully backwards compatible.

New tree state after proposed change (additions in bold):

module: openconfig-network-instance
+--rw network-instances
   +--rw network-instance* [name]
      +--rw evpn
         +--rw evpn-instances
            +--rw evpn-instance* [evi]
               +--rw evi                     -> ../config/evi
                  +--rw config
                  |  +--rw evi?                    string
                  |  +--rw encapsulation-type?     identityref
                  |  +--rw service-type?           identityref
                  |  +--rw multicast-group?        oc-inet:ipaddress
                  |  +--rw multicast-mask?         oc-inet:ipaddress
                  |  +--rw replication-mode?       enumeration
                  |  +--rw route-distinguisher?    union
                  |  +--rw control-word-enabled?   boolean
                  |  +--rw redistribute*           oc-evpn-types:redistribute-type
                  +--ro state
                  |  +--ro evi?                    string
                  |  +--ro encapsulation-type?     identityref
                  |  +--ro service-type?           identityref
                  |  +--ro multicast-group?        oc-inet:ip-address
                  |  +--ro multicast-mask?         oc-inet:ip-address
                  |  +--ro replication-mode?       enumeration
                  |  +--ro route-distinguisher?    union
                  |  +--ro control-word-enabled?   boolean
                  |  +--ro redistribute*           oc-evpn-types:redistribute-type

New Yang Paths:

  • network-instances/network-instance/evpn/evpn-instances/evpn-instance/config/redistribute
  • network-instances/network-instance/evpn/evpn-instances/evpn-instance/status/redistribute

Platform Implementations

Arista EOS

Redistribution config:
https://www.arista.com/en/um-eos/eos-sample-configurations#xx1247650

router bgp 65002
   vlan 10
      rd 1.1.1.11:1010
      route-target both 1010:1010
      redistribute learned
   !
   vlan 11
      rd 1.1.1.11:1011
      route-target both 1011:1011
      redistribute learned
      redistribute static
   !
   vrf red
   ...
      redistribute connected

* Add a new conditional leaf-lest, "vni-list", to the EVI Vxlan model,
  to allow the configuration of VLAN-aware-bundle MACVRFs
* Make the existing "vni" leaf conditional on the MACVRF being a
  VLAN-based MACVRF.  Since this is the only type of MACVRF currently
  supported by the model, this is a backwards compatible change
* Introduce new container "local-endpoint-vnis" in Vxlan endpoint model
  to allow the local configuration of VLAN-to-VNI and VRF-to-VNI mappings
* Add new identity, EVPN_REDISTRIBUTE_TYPE, with values of
  REDISTRIBUTE_LEARNED, REDISTRIBUTE_STATIC, and REDISTRIBUTE_CONNECTED,
  for use in configuring types of routes to redistribute in EVPN MACVRFs
  and IPVRFs
* Add new leaf-list "redistribute" to EVI model (which will use the
  aforementioned EVPN_REDISTRIBUTE_TYPE) for configring types of routes
  to redistribute in an EVPN MACVRF or IPVRF
@wenovus
Copy link
Contributor

wenovus commented Jun 25, 2024

/gcbrun

@OpenConfigBot
Copy link

No major YANG version changes in commit ffe479e

@wenovus
Copy link
Contributor

wenovus commented Jun 28, 2024

/gcbrun

@dplore
Copy link
Member

dplore commented Aug 14, 2024

Hi @abamberger-arista, the state tree doesn't match this PR? Where is vni-list?

type oc-evpn-types:vni-id;
description
"List of VNIs participating in a VLAN-aware-bundle EVI";
}
Copy link
Member

Choose a reason for hiding this comment

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

Add reference "RFC 7432: BGP MPLS-Based Ethernet VPN section-6.3";

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This was part of one of the previous PRs that has already merged

../../../config/service-type = 'oc-evpn-types:VLAN_BUNDLE'" {
description
"For VLAN-based and VLAN-bundle EVIs, use a single VNI";
}
Copy link
Member

Choose a reason for hiding this comment

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

Add reference "RFC 7432: BGP MPLS-Based Ethernet VPN section-6";

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Likewise, one of the previous PRs that has already merged

@abamberger-arista
Copy link
Contributor Author

Hi @abamberger-arista, the state tree doesn't match this PR? Where is vni-list?

That was part of the previous PR (#1125)

@LimeHat
Copy link

LimeHat commented Oct 8, 2024

I have the same comment as in the original PR: I don't believe the redistribution is a fundamentally correct approach to control mac/type-2 route distribution. It is an implementation of a specific vendor's CLI, but it doesn't mean it should be adopted in OC as it is.

IMO, the baseline EVPN implies that locally learned mac addresses are advertised to neighbors (that's the core rfc7432/rfc8365 behavior). And to my knowledge, this is what most implementations do. A typical L2 EVPN instance will not be properly functioning without the type-2 routes.

While it is true that there are certain use cases where an operator may wish to limit type-2 advertisements, that should not be the default behavior, and the use of redistribution to control that is highly questionable.
Some implementations (I'm aware of 2 vendors) offer a single bool knob to disable mac-advertisements/type-2 routes for the limited number of use cases where it may be needed.
Is there a second reference that has static/dynamic granularity?

Last but not least, can you elaborate on this part?

REDISTRIBUTE_CONNECTED, for redistributing connected IP routes into an IPVRF. Additional types of redistribution could be added in later changes.

If we are talking about the regular redistribution, then it is already defined by OpenConfig standards. If this is something specific to EVPN, please provide more details as to what, exactly, this feature is supposed to do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Waiting for author
Development

Successfully merging this pull request may close these issues.

5 participants