blob: 40374fefb968491a361b37c0d0bb988c83889030 [file] [log] [blame]
module ietf-te {
namespace "urn:ietf:params:xml:ns:yang:ietf-te";
/* Replace with IANA when assigned */
prefix "te";
/* Import TE generic types */
import ietf-te-types {
prefix te-types;
}
import ietf-inet-types {
prefix inet;
}
organization
"IETF Traffic Engineering Architecture and Signaling (TEAS)
Working Group";
contact
"WG Web: <http://tools.ietf.org/wg/teas/>
WG List: <mailto:teas@ietf.org>
WG Chair: Lou Berger
<mailto:lberger@labn.net>
WG Chair: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net>
Editor: Tarek Saad
<mailto:tsaad@cisco.com>
Editor: Rakesh Gandhi
<mailto:rgandhi@cisco.com>
Editor: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net>
Editor: Himanshu Shah
<mailto:hshah@ciena.com>
Editor: Xufeng Liu
<mailto:xufeng.liu@ericsson.com>
Editor: Xia Chen
<mailto:jescia.chenxia@huawei.com>
Editor: Raqib Jones
<mailto:raqib@Brocade.com>
Editor: Bin Wen
<mailto:Bin_Wen@cable.comcast.com>";
description
"YANG data module for TE configuration,
state, RPC and notifications.";
revision "2016-07-05" {
description "Latest update to TE generic YANG module.";
reference "TBD";
}
typedef tunnel-ref {
type leafref {
path "/te:te/te:tunnels/te:tunnel/te:name";
}
description
"This type is used by data models that need to reference
configured TE tunnel.";
}
/**
* TE tunnel generic groupings
*/
grouping p2p-secondary-path-params {
description
"tunnel path properties.";
container config {
description
"Configuration parameters relating to
tunnel properties";
uses path-properties_config;
uses path-params_config;
}
container state {
config false;
description
"State information associated with tunnel
properties";
uses path-properties_config;
uses path-params_config;
uses p2p-secondary-path-params_state;
}
}
grouping p2p-primary-path-params {
description
"TE tunnel primary path properties grouping";
container config {
description
"Configuration parameters relating to
tunnel properties";
uses path-properties_config;
uses path-params_config;
}
container state {
config false;
description
"State information associated with tunnel
properties";
uses path-params_config;
uses p2p-primary-path-params_state;
}
}
grouping p2p-primary-path-params_state {
description "TE primary path state parameters";
list lsp {
key
"source destination tunnel-id lsp-id "+
"extended-tunnel-id type";
description "List of LSPs associated with the tunnel.";
leaf source {
type leafref {
path "../../../../../../lsps-state/lsp/source";
}
description
"Tunnel sender address extracted from
SENDER_TEMPLATE object";
reference "RFC3209";
}
leaf destination {
type leafref {
path "../../../../../../lsps-state/lsp/destination";
}
description
"Tunnel endpoint address extracted from
SESSION object";
reference "RFC3209";
}
leaf tunnel-id {
type leafref {
path "../../../../../../lsps-state/lsp/tunnel-id";
}
description
"Tunnel identifier used in the SESSION
that remains constant over the life
of the tunnel.";
reference "RFC3209";
}
leaf lsp-id {
type leafref {
path "../../../../../../lsps-state/lsp/lsp-id";
}
description
"Identifier used in the SENDER_TEMPLATE
and the FILTER_SPEC that can be changed
to allow a sender to share resources with
itself.";
reference "RFC3209";
}
leaf extended-tunnel-id {
type leafref {
path "../../../../../../lsps-state/lsp/extended-tunnel-id";
}
description
"Extended Tunnel ID of the LSP.";
reference "RFC3209";
}
leaf type {
type leafref {
path "../../../../../../lsps-state/lsp/type";
}
description "LSP type P2P or P2MP";
}
}
}
grouping p2p-secondary-path-params_state {
description "TE secondary path state parameters";
list lsp {
key "source";
description "List of LSPs associated with the tunnel.";
leaf source {
type leafref {
path "../../../../../../../lsps-state/lsp/source";
}
description
"Tunnel sender address extracted from
SENDER_TEMPLATE object";
reference "RFC3209";
}
leaf destination {
type leafref {
path "../../../../../../../lsps-state/lsp/destination";
}
description
"Tunnel endpoint address extracted from
SESSION object";
reference "RFC3209";
}
leaf tunnel-id {
type leafref {
path "../../../../../../../lsps-state/lsp/tunnel-id";
}
description
"Tunnel identifier used in the SESSION
that remains constant over the life
of the tunnel.";
reference "RFC3209";
}
leaf lsp-id {
type leafref {
path "../../../../../../../lsps-state/lsp/lsp-id";
}
description
"Identifier used in the SENDER_TEMPLATE
and the FILTER_SPEC that can be changed
to allow a sender to share resources with
itself.";
reference "RFC3209";
}
leaf extended-tunnel-id {
type leafref {
path "../../../../../../../lsps-state/lsp/extended-tunnel-id";
}
description
"Extended Tunnel ID of the LSP.";
reference "RFC3209";
}
leaf type {
type leafref {
path "../../../../../../../lsps-state/lsp/type";
}
description "LSP type P2P or P2MP";
}
}
}
grouping path-params_config {
description
"TE tunnel path parameters configuration grouping";
leaf path-named-constraint {
if-feature te-types:named-path-constraints;
type string;
description
"Reference to a globally defined named path
constraint set";
}
uses te-types:tunnel-path-selection;
choice type {
description
"Describes the path type";
case dynamic {
leaf dynamic {
type empty;
description
"A CSPF dynamically computed path";
}
}
case explicit {
leaf explicit-path-name {
type string;
description
"The explicit-path name";
}
list explicit-route-objects {
key "index";
description
"List of explicit route objects";
leaf index {
type uint8 {
range "0..255";
}
description
"Index of this explicit route object";
}
leaf explicit-route-usage {
type identityref {
base te-types:route-usage-type;
}
description "An explicit-route hop action.";
}
uses te-types:explicit-route-subobject;
}
}
}
leaf no-cspf {
type empty;
description
"Indicates no CSPF is to be attempted on this
path.";
}
leaf lockdown {
type empty;
description
"Indicates no reoptimization to be attempted for
this path.";
}
}
/* TE tunnel configuration data */
grouping tunnel-params_config {
description
"Configuration parameters relating to TE tunnel";
leaf name {
type string;
description "TE tunnel name.";
}
leaf type {
type identityref {
base te-types:tunnel-type;
}
description "TE tunnel type.";
}
leaf identifier {
type uint16;
description
"TE tunnel Identifier.";
}
leaf description {
type string;
description
"Textual description for this TE tunnel";
}
leaf lsp-priority-setup {
type uint8 {
range "0..7";
}
description
"TE LSP setup priority";
}
leaf lsp-priority-hold {
type uint8 {
range "0..7";
}
description
"TE LSP hold priority";
}
leaf lsp-protection-type {
type identityref {
base te-types:lsp-prot-type;
}
description "LSP protection type.";
}
leaf admin-status {
type identityref {
base te-types:state-type;
}
default te-types:state-up;
description "TE tunnel administrative state.";
}
leaf source {
type inet:ip-address;
description
"TE tunnel source address.";
}
leaf destination {
/* Add when check */
type inet:ip-address;
description
"P2P tunnel destination address";
}
leaf src-tp-id {
type binary;
description
"TE tunnel source termination point identifier.";
}
leaf dst-tp-id {
/* Add when check */
type binary;
description
"TE tunnel destination termination point identifier.";
}
container hierarchical-link-id {
description
"Identifies a hierarchical link (in server layer)
that this tunnel is associated with.";
leaf local-te-node-id {
type te-types:te-node-id;
description
"Local TE node identifier";
}
leaf local-te-link-tp-id {
type te-types:te-tp-id;
description
"Local TE link termination point identifier";
}
leaf remote-te-node-id {
type te-types:te-node-id;
description
"Remote TE node identifier";
}
leaf te-topology-id {
type te-types:te-topology-id;
description
"It is presumed that a datastore will contain many
topologies. To distinguish between topologies it is
vital to have UNIQUE topology identifiers.";
}
}
uses te-types:tunnel-bidir-assoc-properties;
}
grouping tunnel-params_state {
description
"State parameters relating to TE tunnel";
leaf oper-status {
type identityref {
base te-types:state-type;
}
description "TE tunnel operational state.";
}
}
grouping path-properties_config {
description "TE path properties grouping";
leaf name {
type string;
description "TE path name";
}
leaf preference {
type uint8 {
range "1..255";
}
description
"Specifies a preference for this path. The lower the
number higher the preference";
}
}
/* TE tunnel configuration/state grouping */
grouping tunnel-properties {
description
"Top level grouping for tunnel properties.";
container config {
description
"Configuration parameters relating to
tunnel properties";
uses tunnel-params_config;
}
container state {
config false;
description
"State information associated with tunnel
properties";
uses tunnel-params_config;
uses tunnel-params_state;
}
list primary-paths {
key "name";
description
"List of primary paths for this tunnel.";
leaf name {
type leafref {
path "../config/name";
}
description "TE path name";
}
leaf preference {
type leafref {
path "../config/preference";
}
description
"Specifies a preference for this path. The lower the
number higher the preference";
}
uses p2p-primary-path-params;
list secondary-paths {
key "name";
description
"List of secondary paths for this tunnel.";
leaf name {
type leafref {
path "../config/name";
}
description "TE path name";
}
leaf preference {
type leafref {
path "../config/preference";
}
description
"Specifies a preference for this path. The lower the
number higher the preference";
}
uses p2p-secondary-path-params;
}
}
}
/*** End of TE tunnel groupings ***/
/**
* LSP related generic groupings
*/
grouping lsp-record-route-information_state {
description "recorded route information grouping";
container lsp-record-route {
description "RSVP recorded route object information";
list record-route-subobjects {
when "../origin-type != 'ingress'" {
description "Applicable on non-ingress LSPs only";
}
key "subobject-index";
description "";
leaf subobject-index {
type uint32;
description "RRO subobject index";
}
uses te-types:record-route-subobject;
}
}
}
grouping lsp-properties_state {
description
"State parameters relating to LSP";
leaf oper-status {
type identityref {
base te-types:state-type;
}
description "LSP operational state.";
}
leaf origin-type {
type enumeration {
enum ingress {
description
"Origin ingress";
}
enum egress {
description
"Origin egress";
}
enum transit {
description
"transit";
}
}
description
"Origin type of LSP relative to the location
of the local switch in the path.";
}
leaf lsp-resource-status {
type enumeration {
enum primary {
description
"A primary LSP is a fully established LSP for
which the resource allocation has been committed
at the data plane";
}
enum secondary {
description
"A secondary LSP is an LSP that has been provisioned
in the control plane only; e.g. resource allocation
has not been committed at the data plane";
}
}
description "LSP resource allocation type";
reference "rfc4872, section 4.2.1";
}
leaf lsp-protection-role {
type enumeration {
enum working {
description
"A working LSP must be a primary LSP whilst a protecting
LSP can be either a primary or a secondary LSP. Also,
known as protected LSPs when working LSPs are associated
with protecting LSPs.";
}
enum protecting {
description
"A secondary LSP is an LSP that has been provisioned
in the control plane only; e.g. resource allocation
has not been committed at the data plane";
}
}
description "LSP role type";
reference "rfc4872, section 4.2.1";
}
leaf lsp-operational-status {
type empty;
description
"This bit is set when a protecting LSP is carrying the normal
traffic after protection switching";
}
}
/*** End of TE LSP groupings ***/
/**
* TE global generic groupings
*/
/* Global named admin-groups configuration data */
grouping named-admin-groups_config {
description
"Global named administrative groups configuration
grouping";
list named-admin-groups {
if-feature te-types:extended-admin-groups;
if-feature te-types:named-extended-admin-groups;
key "name";
description
"List of named TE admin-groups";
leaf name {
type string;
description
"A string name that uniquely identifies a TE
interface named admin-group";
}
leaf bit-position {
type uint32;
description
"Bit position representing the administrative group";
}
}
}
/* Global named admin-srlgs configuration data */
grouping named-srlgs_config {
description
"Global named SRLGs configuration
grouping";
list named-srlgs {
if-feature te-types:named-srlg-groups;
key "name";
description
"A list of named SRLG groups";
leaf name {
type string;
description
"A string name that uniquely identifies a TE
interface named srlg";
}
leaf group {
type te-types:srlg;
description "An SRLG value";
}
}
}
/* Global named explicit-paths configuration data */
grouping named-explicit-paths_config {
description
"Global explicit path configuration
grouping";
list named-explicit-paths {
key "name";
description
"A list of explicit paths";
leaf name {
type string;
description
"A string name that uniquely identifies an
explicit path";
}
list explicit-route-objects {
key "index";
description
"List of explicit route objects";
leaf index {
type uint8 {
range "0..255";
}
description
"Index of this explicit route object";
}
leaf explicit-route-usage {
type identityref {
base te-types:route-usage-type;
}
description "An explicit-route hop action.";
}
uses te-types:explicit-route-subobject;
}
}
}
/* Global named paths constraints configuration data */
grouping named-path-constraints_config {
description
"Global named path constraints configuration
grouping";
list named-constraints {
if-feature te-types:named-path-constraints;
key "name";
description
"A list of named path constraints";
leaf name {
type string;
description
"A string name that uniquely identifies a
path constraint set";
}
uses te-types:tunnel-path-selection;
}
}
/* TE globals container data */
grouping globals-grouping {
description
"Globals TE system-wide configuration data grouping";
container globals {
description
"Globals TE system-wide configuration data container";
container config {
description
"Configuration parameters for system-wide
parameters";
uses named-admin-groups_config;
uses named-srlgs_config;
uses named-explicit-paths_config;
uses named-path-constraints_config;
}
container state {
config false;
description
"State for system-wide parameters";
uses named-admin-groups_config;
uses named-srlgs_config;
uses named-explicit-paths_config;
uses named-path-constraints_config;
}
}
}
/* TE tunnels container data */
grouping tunnels-grouping {
description
"Tunnels TE configuration data grouping";
container tunnels {
description
"Tunnels TE configuration data container";
list tunnel {
key "name type";
unique "identifier";
description "TE tunnel.";
leaf name {
type leafref {
path "../config/name";
}
description "TE tunnel name.";
}
leaf type {
type leafref {
path "../config/type";
}
description "TE tunnel type.";
}
leaf identifier {
type leafref {
path "../config/identifier";
}
description
"TE tunnel Identifier.";
}
uses tunnel-properties;
}
}
}
/* TE LSPs ephemeral state container data */
grouping lsps-state-grouping {
description
"LSPs state operational data grouping";
container lsps-state {
config "false";
description "LSPs operational state data.";
list lsp {
key
"source destination tunnel-id lsp-id "+
"extended-tunnel-id type";
description
"List of LSPs associated with the tunnel.";
leaf source {
type inet:ip-address;
description
"Tunnel sender address extracted from
SENDER_TEMPLATE object";
reference "RFC3209";
}
leaf destination {
type inet:ip-address;
description
"Tunnel endpoint address extracted from
SESSION object";
reference "RFC3209";
}
leaf tunnel-id {
type uint16;
description
"Tunnel identifier used in the SESSION
that remains constant over the life
of the tunnel.";
reference "RFC3209";
}
leaf lsp-id {
type uint16;
description
"Identifier used in the SENDER_TEMPLATE
and the FILTER_SPEC that can be changed
to allow a sender to share resources with
itself.";
reference "RFC3209";
}
leaf extended-tunnel-id {
type inet:ip-address;
description
"Extended Tunnel ID of the LSP.";
reference "RFC3209";
}
leaf type {
type identityref {
base te-types:tunnel-type;
}
description "The LSP type P2P or P2MP";
}
uses lsp-properties_state;
uses lsp-record-route-information_state;
}
}
}
/*** End of TE global groupings ***/
/**
* TE configurations container
*/
container te {
presence "Enable TE feature.";
description
"TE global container.";
/* TE Global Configuration Data */
uses globals-grouping;
/* TE Tunnel Configuration Data */
uses tunnels-grouping;
/* TE LSPs State Data */
uses lsps-state-grouping;
}
/* TE Global RPCs/execution Data */
rpc globals-rpc {
description
"Execution data for TE global.";
}
/* TE interfaces RPCs/execution Data */
rpc interfaces-rpc {
description
"Execution data for TE interfaces.";
}
/* TE Tunnel RPCs/execution Data */
rpc tunnels-rpc {
description
"TE tunnels RPC nodes";
}
/* TE Global Notification Data */
notification globals-notif {
description
"Notification messages for Global TE.";
}
/* TE Tunnel Notification Data */
notification tunnels-notif {
description
"Notification messages for TE tunnels.";
}
}