module ietf-rsvp-te-mpls {
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls";
prefix "rsvp-te-mpls";
import ietf-rsvp {
prefix "rsvp";
}
import ietf-routing {
prefix "rt";
}
import ietf-te-mpls-types {
prefix "te-mpls-types";
}
import ietf-te-types {
prefix "te-types";
}
import ietf-te {
prefix "te";
}
import ietf-te-device {
prefix "te-dev";
}
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: Vishnu Pavan Beeram
Editor: Tarek Saad
Editor: Rakesh Gandhi
Editor: Himanshu Shah
Editor: Xufeng Liu
Editor: Xia Chen
Editor: Raqib Jones
Editor: Bin Wen
";
description
"Latest update to MPLS RSVP-TE YANG data model.";
revision "2017-10-29" {
description "Update to MPLS RSVP-TE YANG initial revision.";
reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090";
}
/* RSVP-TE MPLS LSPs groupings */
grouping lsp-attributes-flags-mpls_config {
description
"Configuration parameters relating to RSVP-TE MPLS LSP
attribute flags";
leaf non-php-desired {
type empty;
description
"Non-PHP is desired";
reference "RFC6511";
}
leaf entropy-label-cap {
type empty;
description "Entropy label capability";
reference "RFC6790";
}
leaf oam-mep-entities-desired {
type empty;
description "OAM MEP entities desired";
reference "RFC7260";
}
leaf oam-mip-entities-desired {
type empty;
description "OAM MIP entities desired";
reference "RFC7260";
}
}
grouping lsp-session-attributes-obj-flags-mpls_config {
description
"Configuration parameters relating to RSVP-TE MPLS LSP
session attribute flags";
reference
"RFC4859: Registry for RSVP-TE Session Flags";
leaf local-protection-desired {
type empty;
description "Fastreroute local protection is desired.";
reference
"RFC4859: Registry for RSVP-TE Session Flags";
}
leaf bandwidth-protection-desired {
type empty;
description
"Request FRR bandwidth protection on LSRs if
present.";
reference "RFC4090";
}
leaf node-protection-desired {
type empty;
description
"Request FRR node protection on LSRs if
present.";
reference "RFC4090";
}
}
grouping tunnel-properties-mpls_config {
description
"Top level grouping for LSP properties.";
uses lsp-session-attributes-obj-flags-mpls_config;
uses lsp-attributes-flags-mpls_config;
}
grouping lsp-properties-mpls {
description
"Top level grouping for LSP properties.";
container state {
config false;
description
"Configuration applied parameters and state";
uses lsp-session-attributes-obj-flags-mpls_config;
uses lsp-attributes-flags-mpls_config;
}
}
/* End of RSVP-TE MPLS LSPs groupings */
/* MPLS RSVP-TE interface groupings */
grouping rsvp-te-interface_state {
description
"The RSVP-TE interface state grouping";
leaf over-subscribed-bandwidth {
type uint32;
description
"The amount of over-subscribed bandwidth on
the interface";
}
}
grouping rsvp-te-interface-softpreemption_state {
description
"The RSVP-TE interface preeemptions state grouping";
container interface-softpreemption-state {
description
"The RSVP-TE interface preeemptions state grouping";
leaf soft-preempted-bandwidth {
type uint32;
description
"The amount of soft-preempted bandwidth on
this interface";
}
list lsps {
key
"source destination tunnel-id lsp-id "+
"extended-tunnel-id";
description
"List of LSPs that are soft-preempted";
leaf source {
type leafref {
path "/te:te/te:lsps-state/te:lsp/"+
"te:source";
}
description
"Tunnel sender address extracted from
SENDER_TEMPLATE object";
reference "RFC3209";
}
leaf destination {
type leafref {
path "/te:te/te:lsps-state/te:lsp/"+
"te:destination";
}
description
"Tunnel endpoint address extracted from
SESSION object";
reference "RFC3209";
}
leaf tunnel-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/"+
"te: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 "/te:te/te:lsps-state/te:lsp/"+
"te: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 "/te:te/te:lsps-state/te:lsp/"+
"te:extended-tunnel-id";
}
description
"Extended Tunnel ID of the LSP.";
reference "RFC3209";
}
leaf type {
type leafref {
path "/te:te/te:lsps-state/te:lsp/"+
"te:type";
}
description "LSP type P2P or P2MP";
}
}
}
}
grouping bandwidth-mpls-constraints {
description "Bandwidth constraints.";
container bandwidth-mpls-constraints {
description
"Holds the bandwidth constraints properties";
leaf maximum-reservable {
type uint32 {
range "0..4294967295";
}
description
"The maximum reservable bandwidth on the
interface";
}
leaf-list bc-value {
type uint32 {
range "0..4294967295";
}
max-elements 8;
description
"The bandwidth constraint type";
}
}
}
grouping bandwidth-constraint-values {
description
"Packet bandwidth contraints values";
choice value-type {
description
"Value representation";
case percentages {
container perc-values {
uses bandwidth-mpls-constraints;
description
"Percentage values";
}
}
case absolutes {
container abs-values {
uses bandwidth-mpls-constraints;
description
"Absolute values";
}
}
}
}
grouping bandwidth-mpls-reservable_config {
description
"Interface bandwidth reservable configuration grouping";
choice bandwidth-value {
description "Reservable bandwidth configuration choice";
case absolute {
leaf absolute-value {
type uint32;
description "Absolute value of the bandwidth";
}
}
case percentage {
leaf percent-value {
type uint32 {
range "0..4294967295";
}
description "Percentage reservable bandwidth";
}
description
"The maximum reservable bandwidth on the
interface";
}
}
choice bc-model-type {
description
"Reservable bandwidth percentage capacity
values.";
case bc-model-rdm {
container bc-model-rdm {
description
"Russian Doll Model Bandwidth Constraints.";
uses bandwidth-mpls-constraints;
}
}
case bc-model-mam {
container bc-model-mam {
uses bandwidth-mpls-constraints;
description
"Maximum Allocation Model Bandwidth
Constraints.";
}
}
case bc-model-mar {
container bc-model-mar {
uses bandwidth-mpls-constraints;
description
"Maximum Allocation with Reservation Model
Bandwidth Constraints.";
}
}
}
}
grouping bandwidth-mpls-reservable {
description
"Packet reservable bandwidth";
container bandwidth-mpls-reservable {
description
"Interface bandwidth reservable container";
uses bandwidth-mpls-reservable_config;
}
}
/* End of RSVP-TE interface groupings */
/* RSVP-TE FRR groupings */
grouping rsvp-te-frr-auto-tunnel-backup_config {
description
"Auto-tunnel backup configuration grouping";
leaf auto-backup-protection {
type identityref {
base te-mpls-types:backup-protection-type;
}
default
te-mpls-types:backup-protection-node-link;
description
"Describes whether the backup should offer
protection against link, node, or either";
}
leaf auto-backup-path-computation {
type identityref {
base
te-types:path-computation-srlg-type;
}
description
"FRR backup computation type";
}
}
grouping rsvp-te-frr-backups_config {
description
"Top level container for RSVP-TE FRR backup parameters";
choice type {
description
"FRR backup tunnel type";
case static-tunnel {
container static-backups {
description "List of static backups";
list static-backup {
key "backup-tunnel-name";
description
"List of static backup tunnels that
protect the RSVP-TE interface.";
leaf backup-tunnel-name {
type leafref {
path "/te:te/te:tunnels/te:tunnel/te:name";
}
description "FRR Backup tunnel name";
}
}
}
}
case auto-tunnel {
container auto-tunnel-backups {
description "Auto-tunnel choice";
uses rsvp-te-frr-auto-tunnel-backup_config;
}
}
}
}
grouping rsvp-te-frr-backups {
description
"RSVP-TE facility backup grouping";
container rsvp-te-frr-backups {
description
"RSVP-TE facility backup properties";
uses rsvp-te-frr-backups_config;
}
}
grouping lsp-backup-info_state {
description "LSP backup information grouping";
leaf backup-tunnel-name {
type string;
description
"If an LSP has an FRR backup LSP that can protect it,
this field identifies the tunnel name of the backup LSP.
Otherwise, this field is empty.";
}
leaf backup-frr-on {
type uint8;
description
"Whether currently this backup is carrying traffic";
}
leaf backup-protected-lsp-num {
type uint32;
description
"Number of LSPs protected by this backup";
}
}
grouping lsp-backup-info {
description "Backup/bypass LSP related information";
container backup-info {
description
"backup information";
container state {
config false;
description
"Configuration applied parameters and state";
uses lsp-backup-info_state;
}
}
}
grouping fast-reroute-local-revertive_config {
description "RSVP-TE FRR local revertive grouping";
leaf rsvp-frr-local-revert-delay {
type uint32;
description
"Time to wait after primary link is restored
before node attempts local revertive
procedures.";
}
}
/*** End of RSVP-TE FRR backup information ***/
grouping fast-reroute-local-revertive {
description
"Top level grouping for globals properties";
container fast-reroute-local-revertive {
description "RSVP-TE FRR local revertive container";
uses fast-reroute-local-revertive_config;
}
}
/* RSVP-TE global properties */
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp" {
description
"RSVP-TE augmentation to RSVP globals";
uses fast-reroute-local-revertive;
}
/* Linkage to the base RSVP all interfaces */
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" {
description
"Augmentations for RSVP-TE MPLS all interfaces properties";
/* To be added */
}
/* Linkage to per RSVP interface */
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface" {
description
"Augmentations for RSVP-TE MPLS per interface properties";
/* To be added */
}
/* add augmentation for sessions neighbors */
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/"
+ "rsvp:sessions/rsvp:session/rsvp:state" {
description
"Augmentations for RSVP-TE MPLS sessions";
/* To be added */
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" {
description
"Augmentations for RSVP-TE MPLS neighbors properties";
/* To be added */
}
/**
* Augmentation to TE generic module
*/
augment "/te:te/te:tunnels/te:tunnel" {
description
"Augmentations for RSVP-TE MPLS TE tunnel properties";
uses tunnel-properties-mpls_config;
}
augment "/te:te/te:lsps-state/te:lsp" {
when "/te:te/te:lsps-state/te:lsp" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE MPLS LSP state properties";
uses lsp-properties-mpls;
uses lsp-backup-info;
}
augment "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" +
"/te:p2p-primary-path/te:state/te:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-secondary-paths/te:p2p-secondary-path/" +
"te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE MPLS LSP state properties";
uses lsp-properties-mpls;
uses lsp-backup-info;
}
augment "/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths" +
"/te:p2p-secondary-path/te:state/te:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-secondary-paths/te:p2p-secondary-path/" +
"te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE MPLS LSP state properties";
uses lsp-properties-mpls;
uses lsp-backup-info;
}
augment "/te:te/te-dev:interfaces/te-dev:interface" {
description
"RSVP reservable bandwidth configuration properties";
uses bandwidth-mpls-reservable;
}
augment "/te:te/te-dev:interfaces/te-dev:interface" {
description
"RSVP reservable bandwidth configuration properties";
uses rsvp-te-frr-backups;
}
}