Add support for static endpoint - #1530
Open
arun-arista wants to merge 1 commit into
Open
Conversation
Contributor
There was a problem hiding this comment.
Code Review
This pull request introduces a new STATIC endpoint type and its associated configuration and state attributes to the network instance model, including MPLS labels, control word settings, and transport references (tunnel interface or next-hop group). The feedback suggests adding a must statement to enforce mutual exclusion between tunnel-interface and next-hop-group to prevent invalid configurations.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Change Scope
The Static MPLS Pseudowire feature allows encapsulating (and decapsulating) L2 traffic from a given interface or subinterface over a GRE or GUE tunnel. Users can statically configure a pseudowire with a GRE tunnel or GUE/GRE Nexthop-group as the transport. Additionally, a local/decapsulating label and a neighbor/encapsulating MPLS label can be configured to identify the local interface the packet came in on for encapsulation/should egress out after decapsulation. A pseudowire connects a local port on the switch and the remote destination behind the tunnel at the other end. A tunnel can be configured as the transport under the pseudowire config using an existing tunnel interface configuration.
Today it is not possible to configure a Static MPLS Pseudowire via OpenConfig.
The proposal is to have a container named static under endpoint for supporting static mpls pseudowire. Today, there exists a local container and a remote container under endpoint. Hence, we would like to extend this by placing the static container at the same level, under endpoint.
This change is backwards compatible.
Platform Implementations
CLI Configuration:
Example show command:
Tree View
module: openconfig-network-instance +--rw network-instances +--rw network-instance* [name] +--rw connection-points +--rw connection-point* [connection-point-id] +--rw connection-point-id -> ../config/connection-point-id +--rw config +--ro state +--rw endpoints +--rw endpoint* [endpoint-id] +--rw endpoint-id -> ../config/endpoint-id +--rw config | +--rw endpoint-id? string | +--rw precedence? uint16 | +--rw type? identityref +--ro state | +--ro endpoint-id? string | +--ro precedence? uint16 | +--ro type? identityref | +--ro active? boolean +--rw local | +--rw config | | +--rw interface? -> /oc-if:interfaces/interface/name | | +--rw subinterface? -> /oc-if:interfaces/interface[oc-if:name=current()/../interface]/subinterfaces/subinterface/index | | +--rw site-id? uint16 | | +--rw site-label-block-offset? uint16 | | +--rw site-label-block-size? uint16 | +--ro state | +--ro interface? -> /oc-if:interfaces/interface/name | +--ro subinterface? -> /oc-if:interfaces/interface[oc-if:name=current()/../interface]/subinterfaces/subinterface/index | +--ro site-id? uint16 | +--ro site-label-block-offset? uint16 | +--ro site-label-block-size? uint16 +--rw remote | +--rw config | | +--rw remote-system? oc-inet:ip-address | | +--rw virtual-circuit-identifier? uint32 | | +--rw site-id? uint16 | +--ro state | +--ro remote-system? oc-inet:ip-address | +--ro virtual-circuit-identifier? uint32 | +--ro site-id? uint16 + +--rw static + | +--rw config + | | +--rw local-label? oc-mplst:mpls-label + | | +--rw neighbor-label? oc-mplst:mpls-label + | | +--rw control-word? boolean + | | +--rw tunnel-interface? -> /oc-if:interfaces/interface/name + | | +--rw next-hop-group? -> ../../../../../../../static/next-hop-groups/next-hop-group/config/name + | +--ro state + | +--ro local-label? oc-mplst:mpls-label + | +--ro neighbor-label? oc-mplst:mpls-label + | +--ro control-word? boolean + | +--ro tunnel-interface? -> /oc-if:interfaces/interface/name + | +--ro next-hop-group? -> ../../../../../../../static/next-hop-groups/next-hop-group/config/name +--rw vxlan