module ietf-rsvp-te-mpls {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls";
prefix "rsvp-te-mpls";
import ietf-rsvp {
prefix "rsvp";
reference "draft-ietf-teas-yang-rsvp: A YANG Data Model for
Resource Reservation Protocol (RSVP)";
}
import ietf-routing {
prefix "rt";
reference "RFC8349: A YANG Data Model for Routing Management";
}
import ietf-te-packet-types {
prefix "te-packet-types";
reference "draft-ietf-teas-yang-te-types: A YANG Data Model for
Common Traffic Engineering Types";
}
import ietf-te-types {
prefix "te-types";
reference "draft-ietf-teas-yang-te-types: A YANG Data Model for
Common Traffic Engineering Types";
}
import ietf-te {
prefix "te";
reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
}
import ietf-te-device {
prefix "te-dev";
reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
}
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: Xufeng Liu
Editor: Igor Bryskin
Editor: Himanshu Shah
";
description
"Latest update to MPLS RSVP-TE YANG data model.
The model fully conforms to the Network Management Datastore
Architecture (NMDA).
Copyright (c) 2018 IETF Trust and the persons
identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this
// note.
// RFC Ed.: update the date below with the date of RFC publication
// and remove this note.
revision "2019-07-06" {
description "Update to MPLS RSVP-TE YANG initial revision.";
reference
"RFCXXXX: A YANG Data Model for RSVP-TE Protocol";
}
/* RSVP-TE MPLS LSPs groupings */
grouping lsp-attributes-flags-mpls-config {
description
"Configuration parameters relating to RSVP-TE MPLS LSP
attribute flags";
}
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-list session-attribute {
when "../session-attribute =
'te-types:bandwidth-protection-desired' or
../session-attribute =
'te-types:soft-preemption-desired'";
type identityref {
base te-types:session-attributes-flags;
}
description "RSVP session attributes flags";
reference
"RFC4859: Registry for RSVP-TE Session Flags";
}
}
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.";
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 te-packet-types:bandwidth-kbps;
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 te-packet-types:bandwidth-kbps;
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 te-packet-types:bandwidth-kbps;
description
"The maximum reservable bandwidth on the
interface in kbps";
}
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 te-packet-types:bandwidth-kbps;
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-packet-types:backup-protection-type;
}
default
te-packet-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";
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" {
description
"Augmentation 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:path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSP-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:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-secondary-paths/te:p2p-secondary-path/" +
"te:path-setup-protocol = 'te-types: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:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-secondary-paths/te:p2p-secondary-path/" +
"te:path-setup-protocol = 'te-types: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;
}
}