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 2016-03-20 {
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 lsp-overflow_config {
description "configuration for mpls lsp bandwidth
overflow adjustment";
leaf enabled {
type boolean;
default false;
description "enables mpls lsp bandwidth overflow
adjustment on the lsp";
}
leaf overflow-threshold {
type uint32;
description "bandwidth percentage change to trigger
an overflow event";
}
leaf trigger-event-count {
type uint16;
description "number of consecutive overflow sample
events needed to trigger an overflow adjustment";
}
}
grouping lsp-underflow_config {
description
"configuration for mpls lsp bandwidth
underflow adjustment";
leaf enabled {
type boolean;
default false;
description "enables bandwidth underflow
adjustment on the lsp";
}
leaf underflow-threshold {
type uint32;
description "bandwidth percentage change to trigger
and underflow event";
}
leaf trigger-event-count {
type uint16;
description "number of consecutive underflow sample
events needed to trigger an underflow adjustment";
}
}
grouping lsp-auto-bandwidth_config {
description
"Auto-Bandwidth grouping";
container auto-bandwidth {
description "configure auto-bandwidth operation in
which devices automatically adjust bandwidth to meet
requirements";
leaf enabled {
type boolean;
default false;
description "enables mpls auto-bandwidth on the
lsp";
}
leaf min-bw {
type uint32;
description "set the minimum bandwidth in Mbps for an
auto-bandwidth LSP";
}
leaf max-bw {
type uint32;
description "set the maximum bandwidth in Mbps for an
auto-bandwidth LSP";
}
leaf adjust-interval {
type uint32;
description "time in seconds between adjustments to
LSP bandwidth";
}
leaf adjust-threshold {
type uint32;
description "percentage difference between the LSP's
specified bandwidth and its current bandwidth
allocation -- if the difference is greater than the
specified percentage, auto-bandwidth adjustment is
triggered";
}
container overflow {
description "configuration of MPLS overflow bandwidth
adjustement for the LSP";
uses lsp-overflow_config;
}
container underflow {
description "configuration of MPLS underflow bandwidth
adjustement for the LSP";
uses lsp-underflow_config;
}
}
}
grouping lsp-bandwidth_config {
description
"LSP bandwidth grouping";
leaf static-bandwidth {
type uint32;
description
"Static bandwidth, e.g., using
offline calculation";
}
uses lsp-auto-bandwidth_config;
}
grouping tunnel-properties-mpls {
description
"Top level grouping for LSP properties.";
container config {
description
"Configuration parameters for tunnel RSVP-TE
properties";
uses lsp-bandwidth_config;
uses lsp-session-attributes-obj-flags-mpls_config;
uses lsp-attributes-flags-mpls_config;
}
container state {
description
"State parameters for tunnel RSVP-TE
properties";
uses lsp-bandwidth_config;
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.";
uses lsp-bandwidth_config;
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";
}
}
}
}
/* End of RSVP-TE interface groupings */
/* RSVP-TE FRR groupings */
grouping rsvp-te-frr-backups_config {
description
"Top level container for RSVP-TE FRR backup parameters";
leaf backup-bandwidth {
type uint32;
description
"Maximum bandwidth this facility backup
is allowed to protect";
}
leaf backup-bandwidth-classtype {
type uint32;
description
"Type of primary LSP bandwidth that the
backup is allowed to protect.";
}
choice type {
description
"FRR backup tunnel type";
case static-tunnel {
list static-backups {
key "tunnel-name";
description
"List of static backup tunnels that
protect the RSVP-TE interface.";
leaf tunnel-name {
type string;
description "FRR Backup tunnel";
}
}
}
case auto-tunnel {
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 {
description
"Top level grouping for RSVP-TE FRR backup properties.";
container rsvp-te-frr-backups {
if-feature te-types:frr-te;
description
"Top level container for RSVP-TE FRR backup
properties.";
container config {
description
"Configuration parameters for interface RSVP-TE
FRR backup properties";
uses rsvp-te-frr-backups_config;
}
container state {
config false;
description
"State parameters for interface RSVP-TE
FRR backup properties";
uses rsvp-te-frr-backups_config;
}
}
}
grouping lps-backup-info_state {
description "Backup/bypass LSP related information";
container backup-info {
description
"backup information";
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 rsvp-frr-local-revert_config {
description "RSVP-TE FRR local revertive grouping";
container rsvp-frr-local-revert {
presence "Enable RSVP FRR local revertive recovery
mode.";
description
"RSVP-TE global properties container";
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 globals-properties {
description
"Top level grouping for globals properties";
container config {
description
"Configuration parameters relating to
global MPLS RSVP-TE properties";
uses rsvp-frr-local-revert_config;
}
container state {
config false;
description
"State parameters relating to
global MPLS RSVP-TE properties";
uses rsvp-frr-local-revert_config;
}
}
/* RSVP-TE global propeerties */
augment "/rt:routing/rt:routing-protocols/"
+ "rt:routing-protocol/rsvp:rsvp" {
description
"RSVP-TE augmentation to RSVP globals";
uses globals-properties;
}
grouping rsvp-te-interface-attributes-mpls {
description
"Top level grouping for MPLS RSVP-TE interface
properties.";
container config {
description
"Configuration parameters relating to RSVP-TE
bandwidth";
uses te-mpls-types:bandwidth-mpls-reservable;
}
container state {
config false;
description
"State information associated with RSVP-TE
bandwidth";
uses te-mpls-types:bandwidth-mpls-reservable;
uses rsvp-te-interface-softpreemption_state;
uses rsvp-te-interface_state;
}
}
/* Linkage to the base RSVP all interfaces */
augment "/rt:routing/rt:routing-protocols/"
+ "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces" {
description "TBD";
/* To be added */
}
/* Linkage to per RSVP interface */
augment "/rt:routing/rt:routing-protocols/"
+ "rt:routing-protocol/rsvp:rsvp/rsvp:interfaces/rsvp:interface" {
description "TBD";
/* To be added */
}
/* add augmentation for sessions neighbors */
augment "/rt:routing/rt:routing-protocols/"
+ "rt:routing-protocol/rsvp:rsvp/rsvp:sessions" {
description "TBD";
/* To be added */
}
augment "/rt:routing/rt:routing-protocols/"
+ "rt:routing-protocol/rsvp:rsvp/rsvp:neighbors" {
description "TBD";
/* To be added */
}
/**
* Augmentation to TE generic module
*/
augment "/te:te/te:tunnels/te:tunnel" {
description "TBD";
uses tunnel-properties-mpls;
}
augment "/te:te/te:lsps-state/te:lsp" {
description
"RSVP-TE LSP state properties";
uses lsp-properties-mpls;
uses lps-backup-info_state;
}
augment "/te:te/te-dev:interfaces/te-dev:interface" {
description
"RSVP reservable bandwidth configuration properties";
uses rsvp-te-interface-attributes-mpls;
uses rsvp-te-frr-backups;
}
}