module ietf-te-device {
namespace "urn:ietf:params:xml:ns:yang:ietf-te-device";
/* Replace with IANA when assigned */
prefix "te-dev";
/* Import TE generic types */
import ietf-te {
prefix ietf-te;
}
/* Import TE generic types */
import ietf-te-types {
prefix te-types;
}
import ietf-interfaces {
prefix if;
}
import ietf-inet-types {
prefix inet;
}
organization
"IETF Traffic Engineering Architecture and Signaling (TEAS)
Working Group";
contact
"WG Web:
WG List:
WG Chair: Lou Berger
WG Chair: Vishnu Pavan Beeram
Editor: Tarek Saad
Editor: Rakesh Gandhi
Editor: Vishnu Pavan Beeram
Editor: Himanshu Shah
Editor: Xufeng Liu
Editor: Xia Chen
Editor: Raqib Jones
Editor: Bin Wen
";
description
"YANG data module for TE device configurations,
state, RPC and notifications.";
revision 2016-03-20 {
description "Latest update to TE device YANG module.";
reference "TBD";
}
/**
* TE LSP device state grouping
*/
grouping lsps-device_state {
description "TE LSP device state grouping";
container lsp-timers {
when "../origin-type = 'ingress'" {
description "Applicable to ingress LSPs only";
}
description "Ingress LSP timers";
leaf life-time {
type uint32;
units seconds;
description
"lsp life time";
}
leaf time-to-install {
type uint32;
units seconds;
description
"lsp installation delay time";
}
leaf time-to-die {
type uint32;
units seconds;
description
"lsp expire delay time";
}
}
container downstream-info {
when "../../origin-type != 'egress'" {
description "Applicable to ingress LSPs only";
}
description
"downstream information";
leaf nhop {
type inet:ip-address;
description
"downstream nexthop.";
}
leaf outgoing-interface {
type if:interface-ref;
description
"downstream interface.";
}
leaf neighbor {
type inet:ip-address;
description
"downstream neighbor.";
}
leaf label {
type uint32;
description
"downstream label.";
}
}
container upstream-info {
when "../../origin-type != 'ingress'" {
description "Applicable to non-ingress LSPs only";
}
description
"upstream information";
leaf phop {
type inet:ip-address;
description
"upstream nexthop or previous-hop.";
}
leaf neighbor {
type inet:ip-address;
description
"upstream neighbor.";
}
leaf label {
type uint32;
description
"upstream label.";
}
}
}
/**
* TE global device generic groupings
*/
/* Global device specific configuration data */
grouping globals-device_config {
description
"Top level grouping for global config data.";
leaf lsp-install-interval {
type uint32;
units seconds;
description
"lsp installation delay time";
}
leaf lsp-cleanup-interval {
type uint32;
units seconds;
description
"lsp cleanup delay time";
}
}
/* Global device specific state data */
grouping globals-device_state {
description
"Top level grouping for global state data.";
leaf tunnels-counter {
type uint32;
description "Tunnels count";
}
leaf lsps-counter {
type uint32;
description "Tunnels count";
}
}
/* TE interface container data */
grouping interfaces-grouping {
description
"Interface TE configuration data grouping";
container interfaces {
description
"Configuration data model for TE interfaces.";
uses te-all-attributes;
list interface {
key "interface";
description "TE interfaces.";
leaf interface {
type if:interface-ref;
description
"TE interface name.";
}
/* TE interface parameters */
uses te-attributes;
}
}
}
/**
* TE interface device generic groupings
*/
grouping te-admin-groups_config {
description
"TE interface affinities grouping";
choice admin-group-type {
description
"TE interface administrative groups
representation type";
case value-admin-groups {
choice value-admin-group-type {
description "choice of admin-groups";
case admin-groups {
description
"Administrative group/Resource
class/Color.";
leaf admin-group {
type te-types:admin-group;
description
"TE interface administrative group";
}
}
case extended-admin-groups {
if-feature te-types:extended-admin-groups;
description
"Extended administrative group/Resource
class/Color.";
leaf extended-admin-group {
type te-types:extended-admin-group;
description
"TE interface extended administrativei
group";
}
}
}
}
case named-admin-groups {
list named-admin-groups {
if-feature te-types:extended-admin-groups;
if-feature te-types:named-extended-admin-groups;
key named-admin-group;
description
"A list of named admin-group entries";
leaf named-admin-group {
type leafref {
path "../../../../../ietf-te:globals/ietf-te:config/" +
"ietf-te:named-admin-groups/ietf-te:name";
}
description "A named admin-group entry";
}
}
}
}
}
/* TE interface SRLGs */
grouping te-srlgs_config {
description "TE interface SRLG grouping";
choice srlg-type {
description "Choice of SRLG configuration";
case value-srlgs {
list values {
key "value";
description "List of SRLG values that
this link is part of.";
leaf value {
type uint32 {
range "0..4294967295";
}
description
"Value of the SRLG";
}
}
}
case named-srlgs {
list named-srlgs {
if-feature te-types:named-srlg-groups;
key named-srlg;
description
"A list of named SRLG entries";
leaf named-srlg {
type leafref {
path "../../../../../ietf-te:globals/ietf-te:config/" +
"ietf-te:named-srlgs/ietf-te:name";
}
description
"A named SRLG entry";
}
}
}
}
}
/* TE interface flooding parameters */
grouping te-flooding-parameters_config {
description "Interface TE flooding properties.";
container thresholds {
description "Flooding threshold values in percentages.";
choice type {
description
"Describes the flooding threshold step method";
case equal-steps {
choice equal-step-type {
description
"Describes whether up and down equal step
size are same or different";
case up-down-different-step {
leaf up-step {
type uint8 {
range "0..100";
}
description
"Set single percentage threshold
for increasing resource
allocation";
}
leaf down-step {
type uint8 {
range "0..100";
}
description
"Set single percentage threshold
for decreasing resource
allocation";
}
}
case up-down-same-step {
leaf step {
type uint8 {
range "0..100";
}
description
"Set single percentage threshold
for increasing and decreasing
resource allocation";
}
}
}
}
case unequal-steps {
list up-steps {
key "value";
description
"Set nultuple percentage thresholds for
increasing resource allocation";
leaf value {
type uint8 {
range "0..100";
}
description
"Percentage value";
}
}
list down-steps {
key "value";
description
"Set nultuple percentage thresholds for
decreasing resource allocation";
leaf value {
type uint8 {
range "0..100";
}
description
"Percentage value";
}
}
}
}
}
}
/* TE interface metric */
grouping te-metric_config {
description "Interface TE metric grouping";
leaf te-metric {
type te-types:te-metric;
description "Interface TE metric.";
}
}
/* TE interface switching capabilities */
grouping te-switching-cap_config {
description
"TE interface switching capabilities";
list switching-capabilities {
key "switching-capability";
description
"List of interface capabilities for this interface";
leaf switching-capability {
type identityref {
base te-types:switching-capabilities;
}
description
"Switching Capability for this interface";
}
leaf encoding {
type identityref {
base te-types:lsp-encoding-types;
}
description
"Encoding supported by this interface";
}
}
}
grouping te-advertisements_state {
description
"TE interface advertisements state grouping";
container te-advertisements_state {
description
"TE interface advertisements state container";
leaf flood-interval {
type uint32;
description
"The periodic flooding interval";
}
leaf last-flooded-time {
type uint32;
units seconds;
description
"Time elapsed since last flooding in seconds";
}
leaf next-flooded-time {
type uint32;
units seconds;
description
"Time remained for next flooding in seconds";
}
leaf last-flooded-trigger {
type enumeration {
enum link-up {
description "Link-up flooding trigger";
}
enum link-down {
description "Link-up flooding trigger";
}
enum threshold-up {
description
"Bandwidth reservation up threshold";
}
enum threshold-down {
description
"Bandwidth reservation down threshold";
}
enum bandwidth-change {
description "Banwidth capacity change";
}
enum user-initiated {
description "Initiated by user";
}
enum srlg-change {
description "SRLG property change";
}
enum periodic-timer {
description "Periodic timer expired";
}
}
description "Trigger for the last flood";
}
list advertized-level-areas {
key level-area;
description
"List of areas the TE interface is advertised
in";
leaf level-area {
type uint32;
description
"The IGP area or level where the TE
interface state is advertised in";
}
}
}
}
/* TE interface attributes grouping */
grouping te-attributes {
description "TE attributes configuration grouping";
container config {
description
"Configuration parameters for interface TE
attributes";
uses te-metric_config;
uses te-admin-groups_config;
uses te-srlgs_config;
uses te-switching-cap_config;
uses te-flooding-parameters_config;
}
container state {
config false;
description
"State parameters for interface TE metric";
uses te-metric_config;
uses te-admin-groups_config;
uses te-srlgs_config;
uses te-switching-cap_config;
uses te-flooding-parameters_config;
uses te-advertisements_state;
}
}
grouping te-all-attributes {
description
"TE attributes configuration grouping for all
interfaces";
container config {
description
"Configuration parameters for all interface TE
attributes";
uses te-flooding-parameters_config;
}
container state {
config false;
description
"State parameters for all interface TE metric";
uses te-flooding-parameters_config;
}
}
/*** End of TE interfaces device groupings ***/
/**
* TE device augmentations
*/
augment "/ietf-te:te" {
description "TE global container.";
/* TE Interface Configuration Data */
uses interfaces-grouping;
}
/* TE globals device augmentation */
augment "/ietf-te:te/ietf-te:globals/ietf-te:config" {
description
"Global TE device specific configuration parameters";
uses globals-device_config;
}
augment "/ietf-te:te/ietf-te:globals/ietf-te:state" {
description
"Global TE device specific state parameters";
uses globals-device_config;
uses globals-device_state;
}
/* TE LSPs device state augmentation */
augment "/ietf-te:te/ietf-te:lsps-state/ietf-te:lsp" {
description
"LSP device dependent downstream info augmentation";
uses lsps-device_state;
}
/* TE interfaces RPCs/execution Data */
rpc interfaces-rpc {
description
"Execution data for TE interfaces.";
}
/* TE Interfaces Notification Data */
notification interfaces-notif {
description
"Notification messages for TE interfaces.";
}
}