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/Vxlan support #1108

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion release/models/network-instance/openconfig-evpn-types.yang
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,14 @@ module openconfig-evpn-types {
policy. It can be imported by modules that make use of EVPN
attributes";

oc-ext:openconfig-version "0.2.0";
oc-ext:openconfig-version "0.3.0";

revision "2024-05-08" {
description
"Add new redistribute-type enumeration for configuring the types of routes
to be redistributed in either a MACRVRF or IPVRF.";
reference "0.3.0";
}

revision "2021-06-21" {
description
Expand Down Expand Up @@ -153,6 +160,28 @@ module openconfig-evpn-types {
reference "draft-ietf-bess-evpn-inter-subnet-forwarding-10";
}

identity EVPN_REDISTRIBUTE_TYPE {
description "Base identity for a type of evpn route to redistribute";
}

identity REDISTRIBUTE_LEARNED {
base EVPN_REDISTRIBUTE_TYPE;
description
"Redistribute dynamically learned routes";
}

identity REDISTRIBUTE_STATIC {
base EVPN_REDISTRIBUTE_TYPE;
description
"Redistribute statically configured routes";
}

identity REDISTRIBUTE_CONNECTED {
base EVPN_REDISTRIBUTE_TYPE;
description
"Redistribute connected routes";
}

typedef evi-id {
type uint32 {
range 1..16777215;
Expand Down
143 changes: 107 additions & 36 deletions release/models/network-instance/openconfig-evpn.yang
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,17 @@ module openconfig-evpn {
domains, this is not currently supported and requires an extension
of the model.";

oc-ext:openconfig-version "0.8.0";
oc-ext:openconfig-version "0.9.0";

revision "2024-05-08" {
description
"Add redistribute type leaf list to EVI config to support configuration of
various types of route distribution (for both L2 and L3).
Add new vni-list leaf list to EVI config to support VLAN-aware-bundle MACVRFs.
Add new local-endpoint-vnis config container to Vxlan connection point to allow
configuration of local VNI-to-VLAN and VNI-to-VRF maps";
reference "0.9.0";
}

revision "2024-04-03" {
description
Expand Down Expand Up @@ -555,6 +565,14 @@ module openconfig-evpn {
draft-ietf-bess-rfc7432bis-05 BGP MPLS-Based
Ethernet VPN";
}

leaf-list redistribute {
type identityref {
base oc-evpn-types:EVPN_REDISTRIBUTE_TYPE;
}
description
"Which types of MACs to redistribute on this EVI";
}
}

grouping evpn-import-export-config {
Expand Down Expand Up @@ -645,12 +663,27 @@ module openconfig-evpn {
Using Ethernet VPN";

leaf vni {
when "../../../config/service-type = 'oc-evpn-types:VLAN_BASED' or
../../../config/service-type = 'oc-evpn-types:VLAN_BUNDLE'" {
description
"For VLAN-based and VLAN-bundle EVIs, use a single VNI";
}
type oc-evpn-types:vni-id;
description
"Virtual Network Identifier (VNI) associated to the EVI. This VNI is used for
ingress and egress in the VXLAN domain.";
}

leaf-list vni-list {
when "../../../config/service-type = 'oc-evpn-types:VLAN_AWARE'" {
description
"For VLAN-aware-bundle EVIs, use a list of VNIs";
}
type oc-evpn-types:vni-id;
description
"List of VNIs participating in a VLAN-aware-bundle EVI";
}

leaf overlay-endpoint-network-instance {
type leafref {
path "/network-instances/network-instance/name";
Expand Down Expand Up @@ -993,13 +1026,47 @@ module openconfig-evpn {
config false;
description
"Container for state parameters related to this L2VNI or L3VNI";
uses evpn-endpoint-vni-config;
uses evpn-endpoint-vni-state;
}

uses ipv4-top;
uses ipv6-top;
}
}

container local-endpoint-vnis {
description
"Top level container for local configuration related to Layer 2 virtual
network identifiers (L2VNIs) and Layer 3 virtual network identifiers
(L3VNIs) in the default network instance";

list local-endpoint-vni {
key "vni";
description "List of L2VNIs and L3VNIs configured on the local VTEP";

leaf vni {
type leafref {
path '../config/vni';
}
description "L2VNI or L3VNI Identifier";
}

container config {
description
"Container for configuration parameters related to this local L2VNI or
L3VNI";
uses evpn-endpoint-vni-config;
}

container state {
config false;
description
"Container for state parameters related to this local L2VNI or L3VNI";
uses evpn-endpoint-vni-config;
}
}
}
}

grouping evpn-endpoint-peer-state {
Expand Down Expand Up @@ -1144,16 +1211,52 @@ module openconfig-evpn {
}
}

grouping evpn-endpoint-vni-state {
grouping evpn-endpoint-vni-config {
description
"Grouping for L2VNI and L3VNI state information learned on the
local VXLAN Tunnel End Point from remote VTEPs";
"Grouping for L2VNI and L3VNI configuration parameters";

leaf vni {
type oc-evpn-types:evi-id;
description "L2VNI or L3VNI Identifier";
}

leaf vni-type {
type enumeration {
enum L2 {
description
"This is a Layer 2 service virtual network identifier (L2VNI)
that is used for communication within the same subnet or
broadcast domain";
}
enum L3 {
description
"This is a Layer 3 service virtual network identifier (L3VNI)
or VRF VNI that is used for communication between subnets";
}
}
description "The type of virtual network identfier";
}

leaf bridge-domain {
type uint32;
description
"This reflects the configured VLAN or Bridge Domain that maps to this
L2VNI in the VXLAN fabric";
}

leaf l3-vrf-name {
type string;
description
"This refects the configured VRF instance that maps to this L3VNI
that is used for routing between subnets in the VXLAN fabric";
}
}

grouping evpn-endpoint-vni-state {
description
"Grouping for L2VNI and L3VNI state information learned on the
local VXLAN Tunnel End Point from remote VTEPs";

leaf multidestination-traffic {
type union {
type oc-inet:ip-address;
Expand Down Expand Up @@ -1187,23 +1290,6 @@ module openconfig-evpn {
control-plane or data-plane";
}

leaf vni-type {
type enumeration {
enum L2 {
description
"This is a Layer 2 service virtual network identifier (L2VNI)
that is used for communication within the same subnet or
broadcast domain";
}
enum L3 {
description
"This is a Layer 3 service virtual network identifier (L3VNI)
or VRF VNI that is used for communication between subnets";
}
}
description "The type of virtual network identfier";
}

leaf vni-state {
type enumeration {
enum UP {
Expand Down Expand Up @@ -1237,20 +1323,5 @@ module openconfig-evpn {
"Operational status of the SVI mapped to the L3VNI that is used for
routing between subnets in the VXLAN fabric";
}

leaf bridge-domain {
type uint32;
description
"This reflects the configured VLAN or Bridge Domain that maps to this
L2VNI in the VXLAN fabric";
}

leaf l3-vrf-name {
type string;
description
"This refects the configured VRF instance that maps to this L3VNI
that is used for routing between subnets in the VXLAN fabric";
}

}
}
Loading