Skip to content

Commit

Permalink
Update to support multiple next-hops per L2RIB producer (openconfig#857)
Browse files Browse the repository at this point in the history
* Add L2RIB Per Producer Next-Hop Capability
* Make next-hop-groups a leaf-list
* mark l2rib next-hop property as deprecated
  • Loading branch information
mikewiebe committed Oct 19, 2023
1 parent 771cd19 commit 0bd6815
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 3 deletions.
127 changes: 125 additions & 2 deletions release/models/network-instance/openconfig-network-instance-l2.yang
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 {
Layer 2 network instance configuration and operational state
parameters.";

oc-ext:openconfig-version "4.1.1";
oc-ext:openconfig-version "4.2.0";

revision "2023-09-07" {
description
"Add L2RIB Per Producer Next-Hop Capability";
reference "4.2.0";
}

revision "2023-08-09" {
description
Expand Down Expand Up @@ -545,6 +551,7 @@ submodule openconfig-network-instance-l2 {
}
}
}
uses l2ni-l2rib-common-next-hop-group-state;
uses l2ni-l2rib-common-next-hop-state;
}

Expand Down Expand Up @@ -606,6 +613,7 @@ submodule openconfig-network-instance-l2 {
}
}
}
uses l2ni-l2rib-common-next-hop-group-state;
uses l2ni-l2rib-common-next-hop-state;
}
}
Expand Down Expand Up @@ -708,7 +716,10 @@ submodule openconfig-network-instance-l2 {

leaf esi {
type oc-evpn-types:esi;
description "Ethernet Segment Identifier for local and remote routes";
description
"Ethernet Segment Identifier (ESI) for local and remote routes.
ESI is used to resolve the next-hop-group. All mac-addresses
learned with the same ESI should point to the same next-hop-group";
}

leaf sticky {
Expand All @@ -721,8 +732,16 @@ submodule openconfig-network-instance-l2 {
type leafref {
path "../../../../../../next-hops/next-hop/index";
}
status deprecated;
description "Leafref next-hop for the MAC-IP table entry";
}

leaf-list next-hop-group {
type leafref {
path "../../../../../../next-hop-groups/next-hop-group/id";
}
description "Leafref next-hop-group for the MAC-IP table entry";
}
}

grouping l2ni-l2rib-common-next-hop-state {
Expand Down Expand Up @@ -757,11 +776,115 @@ submodule openconfig-network-instance-l2 {
type oc-evpn-types:evi-id;
description "Next hop label representing the l2vni for the route";
}
leaf esi {
type oc-evpn-types:esi;
description "Ethernet Segment Identifier (ESI)";
reference "RFC7432: BGP MPLS-Based Ethernet VPN";
}
leaf resolved {
type boolean;
description
"Indicates if the path is eligible for forwarding as per evpn mass
withdraw procedures as defined in RFC 7432";
}
uses oc-if:interface-ref-common;
}
}
}
}

grouping l2ni-l2rib-common-next-hop-group-state {
description "L2RIB Common Next Hop Group Attributes Operational State Data Grouping";

container next-hop-groups {
description "Surrounding container for groups of L2RIB next-hops.";
list next-hop-group {
key "id";
description
"An individual set of next-hops grouped into a common group.
Each entry within an L2RIB can optionally point to a
next-hop-group.";

leaf id {
type leafref {
path "../state/id";
}
description
"A reference to a unique identifier for the next-hop-group.";
}
container state {
description "State container for common next-hop-group attributes";
config false;
leaf id {
type uint64;
description
"A unique identifier for the next-hop-group. This index is not
expected to be consistent across reboots, or reprogramming of
the next-hop-group. When updating a next-hop-group, if the group
is removed by the system or assigned an alternate identifier, the
system should send telemetry notifications deleting the previous
identifier. If the identifier of the next-hop-group is changed,
all L2RIB entries that reference it must also be updated.";
}
leaf esi {
type oc-evpn-types:esi;
description "Ethernet Segment Identifier (ESI)";
reference "RFC7432: BGP MPLS-Based Ethernet VPN";
}
leaf type {
type enumeration {
enum ESI {
description
"Per ESI pathlist next-hop-group used for evpn mass withdraw procedures as defined in RFC 7432";
}
enum ESI_EVI {
description
"Per ESI,EVI pathlist next-hop-group used for evpn aliasing procedures as defined in RFC 7432";
}
enum BASE_ECMP {
description
"Base ECMP next-hop-group used in absence of evpn aliasing";
}
}
description "Type of next-hop-group";
}
}
container next-hops {
description
"Surrounding container for the list of next-hops within the next-hop-group.";
list next-hop {
key "index";
description
"An individual next-hop within the next-hop-group. Each next-hop is a
reference to an entry within the next-hop list.";

leaf index {
type leafref {
path "../state/index";
}
description
"A reference to the index for the next-hop within the the next-hop-group.";
}
container state {
description
"Operational state parameters related to a next-hop within the next-hop-group.";
config false;
leaf index {
type leafref {
path "../../../../../../next-hops/next-hop/index";
}
description
"A reference to the identifier for the next-hop to which the entry in the
next-hop group corresponds.";
}
}
}
}

}
}
}

grouping l2ni-l2rib-mac-table-producer-state {
description "L2RIB MAC Table Operational State Data Grouping";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,13 @@ module openconfig-network-instance {
virtual switch instance (VSI). Mixed Layer 2 and Layer 3
instances are also supported.";

oc-ext:openconfig-version "4.1.1";
oc-ext:openconfig-version "4.2.0";

revision "2023-09-07" {
description
"Add L2RIB Per Producer Next-Hop Capability";
reference "4.2.0";
}

revision "2023-08-09" {
description
Expand Down

0 comments on commit 0bd6815

Please sign in to comment.