298 lines
9.3 KiB
YANG
298 lines
9.3 KiB
YANG
module openconfig-pf-srte {
|
|
yang-version "1";
|
|
namespace "http://openconfig.net/yang/policy-forwarding/sr-te";
|
|
prefix "oc-pf-srte";
|
|
|
|
import openconfig-extensions { prefix "oc-ext"; }
|
|
import openconfig-network-instance { prefix "oc-ni"; }
|
|
import openconfig-mpls-types { prefix "oc-mplst"; }
|
|
import openconfig-inet-types { prefix "oc-inet"; }
|
|
import openconfig-segment-routing-types { prefix "oc-srt"; }
|
|
|
|
organization
|
|
"OpenConfig working group";
|
|
|
|
contact
|
|
"OpenConfig Working group
|
|
www.openconfig.net";
|
|
|
|
description
|
|
"This module defines extensions to the OpenConfig policy forwarding
|
|
module to support static segment routing traffic engineering policy
|
|
definitions. Extensions are provided to match:
|
|
|
|
- Ingress binding SIDs, such that traffic can be mapped based on
|
|
an ingress label.
|
|
- A colour community and endpoint combination, such that the
|
|
routes can be resolved according to the policy forwarding
|
|
entries that are to be installed.
|
|
|
|
In addition, policy forwarding actions associated with next-hops are
|
|
added to the model. The next-hop set to be forwarded to is augmented
|
|
to cover a set of lists of segments. The most common application of
|
|
such segment lists is to express stacks of MPLS labels which are used
|
|
as SR segments. In addition, they may be used to expressed segments
|
|
in the form of IPv6 addresses.";
|
|
|
|
oc-ext:openconfig-version "0.2.0";
|
|
|
|
revision "2019-10-15" {
|
|
description
|
|
"Change imported segment-routing module.";
|
|
reference "0.2.0";
|
|
}
|
|
|
|
revision "2018-11-21" {
|
|
description
|
|
"Add OpenConfig module metadata extensions.";
|
|
reference "0.1.1";
|
|
}
|
|
|
|
revision 2017-10-01 {
|
|
description
|
|
"Initial revision of the SR-TE policy SAFI model.";
|
|
reference "0.1.0";
|
|
}
|
|
|
|
// OpenConfig specific extensions for module metadata.
|
|
oc-ext:regexp-posix;
|
|
oc-ext:catalog-organization "openconfig";
|
|
oc-ext:origin "openconfig";
|
|
|
|
grouping oc-pf-srte-match-top {
|
|
description
|
|
"Top-level grouping used for SR-TE policy match criteria within
|
|
a policy forwarding rule.";
|
|
|
|
container srte {
|
|
description
|
|
"Match criteria associated with Segment Routing Traffic Engineering
|
|
policies.";
|
|
|
|
container config {
|
|
description
|
|
"Configuration parameters associated with SR-TE policies.";
|
|
uses oc-pf-srte-match-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters associated with SR-TE policies.";
|
|
uses oc-pf-srte-match-config;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping oc-pf-srte-match-config {
|
|
description
|
|
"Configuration parameters specific to Segment Routing traffic
|
|
Engineering.";
|
|
|
|
leaf mpls-bsid {
|
|
type oc-mplst:mpls-label;
|
|
description
|
|
"The Binding SID (BSID) to be matched expressed as an MPLS label. Packets
|
|
that are ingress to the system with the top-most label matching
|
|
the SID value specified in this leaf should be forwarded according
|
|
to the policy. The top-most label (the specified Binding SID)
|
|
must be popped from the label stack by the system.";
|
|
}
|
|
|
|
leaf srte-endpoint {
|
|
type oc-inet:ip-address;
|
|
description
|
|
"When the policy forwarding rule is used for RIB resolution
|
|
to a Segment Routing Traffic Engineering path, the policy is used
|
|
when the required endpoint (which may be the protocol next-hop)
|
|
matches the endpoint address specified in this
|
|
leaf. When the leaf is set to all zeros (0.0.0.0 or ::), the endpoint
|
|
acts as a wildcard in the policy resolution.";
|
|
}
|
|
|
|
leaf srte-color {
|
|
type uint32;
|
|
description
|
|
"When the policy forwarding rule is used for RIB resolution to a
|
|
specific Segment Routing Traffic Engineering path, the policy is
|
|
used when the colour required in the policy (which may be specified
|
|
based on the value of a BGP extended colour community) matches the
|
|
value of this leaf. The colour being set to 0 indicates that the
|
|
colour is a wildcard in the policy resolution.";
|
|
}
|
|
|
|
leaf srte-preference {
|
|
type uint32;
|
|
description
|
|
"When there are multiple policy forwarding rules specified for
|
|
a particular SR-TE endpoint. The preference is used to resolve
|
|
between them. These rules may be learnt from a dynamic routing
|
|
protocol, or interface to the device, or from other static
|
|
entries configured on the system.";
|
|
}
|
|
}
|
|
|
|
grouping oc-pf-srte-segment-list-top {
|
|
description
|
|
"Top-level grouping for specifying segment lists under a policy
|
|
forwarding action.";
|
|
|
|
container segment-lists {
|
|
description
|
|
"A list of SR-TE segment lists that should be applied as an
|
|
action within this policy. Where a system selects the SR-TE
|
|
policy to be used, the list of segment lists that is specified
|
|
should be used as forwarding next-hops.";
|
|
|
|
list segment-list {
|
|
key "index";
|
|
description
|
|
"An individual segment list within the list of segment
|
|
lists used for SR-TE policies.";
|
|
|
|
leaf index {
|
|
type leafref {
|
|
path "../config/index";
|
|
}
|
|
description
|
|
"Reference to the index leaf which act as a key to the
|
|
segment-list list.";
|
|
}
|
|
|
|
container config {
|
|
description
|
|
"Configuration parameters for the SR-TE segment list.";
|
|
uses oc-pf-srte-segment-list-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters relating to the SR-TE
|
|
segment list.";
|
|
uses oc-pf-srte-segment-list-config;
|
|
}
|
|
|
|
container sids {
|
|
description
|
|
"Surrounding container for the list of SIDs that makes up the
|
|
segment list.";
|
|
|
|
list sid {
|
|
key "index";
|
|
|
|
description
|
|
"List of SIDs that make up the segment list. The segment list
|
|
is formed by ordering the set of SIDs that are specified by
|
|
their index in ascending numerical order.";
|
|
|
|
leaf index {
|
|
type leafref {
|
|
path "../config/index";
|
|
}
|
|
description
|
|
"Reference to the SID's index within the segment list which
|
|
acts as the key of the list.";
|
|
}
|
|
|
|
container config {
|
|
description
|
|
"Configuration parameters relating to the SID within the
|
|
segment list.";
|
|
uses oc-pf-srte-segment-list-sid-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters relating to the SID within
|
|
the segment list.";
|
|
uses oc-pf-srte-segment-list-sid-config;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping oc-pf-srte-segment-list-config {
|
|
description
|
|
"Configuration parameters relating to a segment list.";
|
|
|
|
leaf index {
|
|
type uint64;
|
|
description
|
|
"Unique integer identifying the segment list within the set
|
|
of segment lists used for the SR-TE policy action.";
|
|
}
|
|
|
|
leaf weight {
|
|
type uint32;
|
|
description
|
|
"The weight of the segment list within the set of segment lists
|
|
specified for the policy. The traffic that is forwarded according
|
|
to the policy is distributed across the set of paths such that
|
|
each list receives weight/(sum of all weights) traffic.";
|
|
}
|
|
}
|
|
|
|
grouping oc-pf-srte-segment-list-sid-config {
|
|
description
|
|
"Configuration parameters relating to a SID within an SR-TE segment
|
|
list";
|
|
|
|
leaf index {
|
|
type uint64;
|
|
description
|
|
"The index of the SID within the segment list. The segment list is
|
|
applied by ordering the SID entries in ascending numerical order
|
|
beginning at 0.";
|
|
}
|
|
|
|
leaf value {
|
|
type oc-srt:sr-sid-type;
|
|
description
|
|
"The value of the SID that is to be used. Specified as an MPLS
|
|
label or IPv6 address.";
|
|
}
|
|
|
|
leaf mpls-ttl {
|
|
type uint8;
|
|
default 0;
|
|
description
|
|
"The TTL to be set if the type of the SID is an MPLS label. If the
|
|
value of the TTL is set to be 0, the value is picked by the local
|
|
implementation.";
|
|
}
|
|
|
|
leaf mpls-tc {
|
|
type uint8 {
|
|
range "0..7";
|
|
}
|
|
default 0;
|
|
description
|
|
"The value of the MPLS Traffic Class (TC) bits to be used if the
|
|
value of the SID is an MPLS label. In the case that the value is
|
|
set to 0, then the local implementation should choose the value.";
|
|
}
|
|
}
|
|
|
|
augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:policy-forwarding/" +
|
|
"oc-ni:policies/oc-ni:policy/oc-ni:rules/oc-ni:rule" {
|
|
description
|
|
"Add the SR-TE specific policy forwarding match criteria to the
|
|
policy forwarding model.";
|
|
|
|
uses oc-pf-srte-match-top;
|
|
}
|
|
|
|
augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:policy-forwarding/" +
|
|
"oc-ni:policies/oc-ni:policy/oc-ni:rules/oc-ni:rule/oc-ni:action" {
|
|
description
|
|
"Add the SR-TE specific policy forwarding actions to the
|
|
policy forwarding model.";
|
|
|
|
uses oc-pf-srte-segment-list-top;
|
|
}
|
|
}
|