module ietf-rsvp-te {
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te";
prefix "rsvp-te";
import ietf-rsvp {
prefix rsvp;
}
import ietf-routing {
prefix "rt";
}
import ietf-routing-types {
prefix rt-types;
}
import ietf-te {
prefix te;
}
import ietf-te-device {
prefix te-dev;
}
/* Import TE generic types */
import ietf-te-types {
prefix te-types;
}
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
"This module contains the RSVP-TE YANG generic data model.";
revision "2017-10-29" {
description "Latest revision to RSVP-TE generic YANG module";
reference "RFC2205, RFC3209, etc.";
}
/**
* RSVP-TE LSPs groupings.
*/
grouping lsp-record-route-information_state {
description "recorded route information grouping";
container incoming-record-route-subobjects {
description "RSVP recorded route object incoming information";
list incoming-record-route-subobject {
when "../../te:origin-type != 'ingress'" {
description "Applicable on non-ingress LSPs only";
}
key "index";
description
"List of RSVP Path record-route objects";
leaf index {
type leafref {
path "../state/index";
}
description "RRO subobject index";
}
container state {
config false;
description
"State parameters for the record route hop";
uses te-types:record-route-subobject_state;
}
}
}
container outgoing-record-route-subobjects {
description "RSVP recorded route object outgoing information";
list outgoing-record-route-subobject {
when "../../te:origin-type != 'egress'" {
description "Applicable on non-egress LSPs only";
}
key "index";
description
"List of RSVP Resv record-route objects";
leaf index {
type leafref {
path "../state/index";
}
description "RRO subobject index";
}
container state {
config false;
description
"State parameters for the record route hop";
uses te-types:record-route-subobject_state;
}
}
}
}
grouping lsp-explicit-route-information_state {
description "RSVP-TE LSP explicit-route information";
container explicit-route-objects {
description "Explicit route object information";
list incoming-explicit-route-hop {
when "../../te:origin-type != 'ingress'" {
description "Applicable on non-ingress LSPs only";
}
key "index";
description
"List of incoming RSVP Path explicit-route objects";
leaf index {
type leafref {
path "../state/index";
}
description "ERO subobject index";
}
container state {
config false;
description
"State parameters for the explicit route hop";
uses te-types:explicit-route-hop_config;
}
}
list outgoing-explicit-route-hop {
when "../../te:origin-type != 'egress'" {
description "Applicable on non-egress LSPs only";
}
key "index";
description
"List of outgoing RSVP Path explicit-route objects";
leaf index {
type leafref {
path "../state/index";
}
description "ERO subobject index";
}
container state {
config false;
description
"State parameters for the explicit route hop";
uses te-types:explicit-route-hop_config;
}
}
}
}
grouping lsp-attributes-flags_config {
description
"Configuration parameters relating to RSVP-TE LSP
attribute flags";
leaf lsp-rerouting {
type enumeration {
enum end-to-end-routing {
description
"End-to-end routing desired";
reference "RFC4920, RFC5420";
}
enum boundary-rerouting {
description
"Boundary rerouting desired";
reference "RFC4920, RFC5420";
}
enum segment-based-rerouting {
description
"Segment-based rerouting desired";
reference "RFC4920, RFC5420";
}
}
description "LSP rerouting types";
}
leaf lsp-integrity-required {
type boolean;
description "LSP integrity desired";
reference "RFC4875";
}
leaf lsp-contiguous {
type boolean;
description "Contiguous LSP";
reference "RFC5151";
}
leaf lsp-stitching-desired {
type boolean;
description "Stitched LSP";
reference "RFC5150";
}
leaf lsp-preplanned {
type boolean;
description "Preplanned LSP";
reference "RFC6001";
}
leaf lsp-oob-mapping {
type boolean;
description
"Mapping is done out-of-band";
reference "RFC6511";
}
}
grouping lsp-session-attributes-obj-flags_config {
description
"Configuration parameters relating to RSVP-TE LSP
session attribute flags";
reference
"RFC4859: Registry for RSVP-TE Session Flags";
leaf local-recording-desired {
type boolean;
description "Path recording is desired.";
reference "RFC3209";
}
leaf se-style-desired {
type boolean;
description "SE Style desired";
reference "RFC3209";
}
leaf path-reevaluation-request {
type boolean;
description "Path re-evaluation request";
reference "RFC4736";
}
leaf soft-preemption-desired {
type boolean;
description "Soft-preemption is desired";
reference "RFC5712";
}
}
grouping lsp-properties_config {
description
"Configuration parameters relating to RSVP-TE LSP
session attribute flags";
leaf lsp-signaled-name {
type string;
description
"Sets the session name to use in the session
attribute object.";
}
uses lsp-session-attributes-obj-flags_config;
uses lsp-attributes-flags_config;
}
grouping tunnel-properties_config {
description "RSVP-TE Tunnel properties grouping";
leaf retry-timer {
type uint16 {
range 1..600;
}
units seconds;
description
"sets the time between attempts to establish the
LSP";
}
}
/*** End of RSVP-TE LSP groupings ***/
/**
* RSVP-TE generic global properties.
*/
grouping global-soft-preemption_config {
description
"Configuration for global RSVP-TE soft preemption";
leaf soft-preemption-timeout {
type uint16 {
range 0..300;
}
default 0;
description
"Timeout value for soft preemption to revert
to hard preemption";
}
}
grouping global-soft-preemption {
description
"Top level group for RSVP-TE soft-preemption";
container global-soft-preemption {
presence "Enables soft preemption on a node.";
description
"Top level container for RSVP-TE soft-preemption";
uses global-soft-preemption_config;
}
}
/*** End of RSVP-TE generic global properties. ***/
/**
* RSVP-TE interface generic groupings.
*/
grouping rsvp-te-interface-attributes {
description
"Top level grouping for RSVP-TE interface properties.";
container rsvp-te-interface-attributes {
description
"Top level container for RSVP-TE interface
properties";
container state {
config false;
description
"State information associated with RSVP-TE
bandwidth";
}
}
}
/*** End of RSVP-TE generic groupings ***/
/* RSVP-TE global properties */
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals" {
description
"RSVP-TE augmentation to RSVP globals";
uses global-soft-preemption;
}
/* Linkage to the base RSVP all links */
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" {
description
"RSVP-TE generic data augmentation pertaining to interfaces";
uses rsvp-te-interface-attributes;
}
/* Linkage to per RSVP interface */
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface" {
description
"RSVP-TE generic data augmentation pertaining to specific
interface";
uses rsvp-te-interface-attributes;
}
/* add augmentation for sessions and neighbors */
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/"
+ "rsvp:sessions/rsvp:session/rsvp:state/rsvp:psbs/rsvp:psb" {
description
"RSVP-TE generic data augmentation pertaining to session";
/* To be added */
leaf tspec-average-rate {
type rt-types:bandwidth-ieee-float32;
units "Bytes per second";
description "Tspec Token Bucket Average Rate";
reference "RFC2210: RSVP with INTSERV";
}
leaf tspec-size {
type rt-types:bandwidth-ieee-float32;
units "Bytes per second";
description "Tspec Token Bucket Burst Rate";
reference "RFC2210";
}
leaf tspec-peak-rate {
type rt-types:bandwidth-ieee-float32;
units "Bytes per second";
description "Tspec Token Bucket Peak Data Rate";
reference "RFC2210";
}
leaf min-policed-unit {
type uint32;
description "Tspec Minimum Policed Unit";
reference "RFC2210";
}
leaf max-packet-size {
type uint32;
description "Tspec Maximum Packet Size";
reference "RFC2210";
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/"
+ "rsvp:sessions/rsvp:session/rsvp:state/rsvp:rsbs/rsvp:rsb" {
description
"RSVP-TE generic data augmentation pertaining to session";
leaf fspec-average-rate {
type rt-types:bandwidth-ieee-float32;
units "Bytes per second";
description "Fspec Token Bucket Average Rate";
reference "RFC2210";
}
leaf fspec-size {
type rt-types:bandwidth-ieee-float32;
units "Bytes per second";
description "Fspec Token Bucket Burst Rate";
reference "RFC2210";
}
leaf fspec-peak-rate {
type rt-types:bandwidth-ieee-float32;
units "Bytes per second";
description "Fspec Token Bucket Peak Data Rate";
reference "RFC2210";
}
leaf min-policed-unit {
type uint32;
description "Fspec Minimum Policed Unit";
reference "RFC2210";
}
leaf max-packet-size {
type uint32;
description "Fspec Maximum Packet Size";
reference "RFC2210";
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" {
description
"RSVP-TE generic data augmentation pertaining to neighbors";
/* To be added */
}
/**
* RSVP-TE generic augmentations of generic TE model.
*/
/* TE tunnel augmentation */
augment "/te:te/te:tunnels/te:tunnel" {
when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-primary-paths/te:p2p-primary-path" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description
"When the path signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to TE tunnels";
uses lsp-properties_config;
uses tunnel-properties_config;
}
augment "/te:te/te:tunnels/te:tunnel/te:state" {
when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-primary-paths/te:p2p-primary-path" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description
"When the path signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to TE tunnels";
uses lsp-properties_config;
uses tunnel-properties_config;
}
/* TE LSP augmentation */
grouping rsvp-te-lsp-properties {
description "RSVP-TE LSP properties grouping";
leaf associated-rsvp-session {
type leafref {
path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/"
+ "rsvp:sessions/rsvp:session/rsvp:local-index";
}
description
"If the signalling protocol specified for this path is
RSVP-TE, this leaf provides a reference to the associated
session within the RSVP-TE protocol sessions list, such
that details of the signaling can be retrieved.";
}
uses lsp-properties_config;
uses lsp-explicit-route-information_state;
uses lsp-record-route-information_state;
}
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 generic data augmentation pertaining to specific TE
LSP";
uses rsvp-te-lsp-properties;
}
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-primary-paths" +
"/te:p2p-primary-path/te:state/te:lsps/te:lsp" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to specific TE
LSP";
uses rsvp-te-lsp-properties;
}
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-primary-paths" +
"/te:p2p-primary-path/te:state/te:lsps/te:lsp" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to specific TE
LSP";
uses rsvp-te-lsp-properties;
}
/* TE interface augmentation */
augment "/te:te/te-dev:interfaces/te-dev:interface" {
description
"RSVP-TE generic data augmentation pertaining to specific TE
interface";
}
}