module ietf-rsvp {
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp";
/* Replace with IANA when assigned */
prefix "rsvp";
import ietf-interfaces {
prefix "if";
}
import ietf-inet-types {
prefix inet;
}
import ietf-yang-types {
prefix "yang";
}
import ietf-routing {
prefix "rt";
}
import ietf-key-chain {
prefix "key-chain";
}
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 YANG data model.";
revision "2017-10-29" {
description "Latest revision of RSVP yang module.";
reference "RFC2205";
}
identity rsvp {
base "rt:routing-protocol";
description "RSVP protocol";
}
identity rsvp-session-type {
description "Base RSVP session type";
}
identity rsvp-session-ipv4 {
base rsvp-session-type;
description "RSVP IPv4 session type";
}
identity rsvp-session-ipv6 {
base rsvp-session-type;
description "RSVP IPv4 session type";
}
identity reservation-style {
description "Base identity for reservation style";
}
identity reservation-wildcard-filter {
base reservation-style;
description "Wildcard-Filter (WF) Style";
reference "RFC2205";
}
identity reservation-fixed-filter {
base reservation-style;
description "Fixed-Filter (FF) Style";
reference "RFC2205";
}
identity reservation-shared-explicit {
base reservation-style;
description "Shared Explicit (SE) Style";
reference "RFC2205";
}
grouping graceful-restart_config {
description
"Base configuration parameters relating to RSVP
Graceful-Restart";
leaf enabled {
type boolean;
description
"'true' if RSVP Graceful Restart is enabled.
'false' if RSVP Graceful Restart is disabled.";
}
}
grouping graceful-restart {
description
"RSVP graceful restart parameters grouping";
container graceful-restart {
description
"RSVP graceful restart parameters container";
uses graceful-restart_config;
}
}
grouping refresh-reduction_config {
description
"Configuration parameters relating to RSVP
refresh reduction";
leaf enabled {
type boolean;
description
"'true' if RSVP Refresh Reduction is enabled.
'false' if RSVP Refresh Reduction is disabled.";
}
}
grouping refresh-reduction {
description
"Top level grouping for RSVP refresh reduction
parameters";
container refresh-reduction {
description
"Top level container for RSVP refresh reduction
parameters";
uses refresh-reduction_config;
}
}
grouping authentication_config {
description
"Configuration parameters relating to RSVP
authentication";
leaf enabled {
type boolean;
description
"'true' if RSVP Authentication is enabled.
'false' if RSVP Authentication is disabled.";
}
leaf authentication-key {
type string;
description
"An authentication key string";
reference
"RFC 2747: RSVP Cryptographic Authentication";
}
leaf crypto-algorithm {
type identityref {
base key-chain:crypto-algorithm;
}
mandatory true;
description
"Cryptographic algorithm associated with key.";
}
}
grouping authentication {
description
"Top level grouping for RSVP authentication parameters";
container authentication {
description
"Top level container for RSVP authentication
parameters";
uses authentication_config;
}
}
grouping hellos_config {
description
"Configuration parameters relating to RSVP
hellos";
leaf enabled {
type boolean;
description
"'true' if RSVP Hello is enabled.
'false' if RSVP Hello is disabled.";
}
}
grouping hellos {
description
"Top level grouping for RSVP hellos parameters";
container hellos {
description
"Top level container for RSVP hello parameters";
uses hellos_config;
}
}
grouping signaling-parameters_config {
description
"Configuration parameters relating to RSVP
signaling";
}
grouping signaling-parameters {
description
"Top level grouping for RSVP signaling parameters";
uses signaling-parameters_config;
}
grouping session-attributes_state {
description
"Top level grouping for RSVP session properties";
leaf local-index {
type uint64;
description
"The index used to identify the RSVP session
on the local network element. This index is
generated by the device and is unique only
to the local network element.";
}
leaf destination-port {
type inet:port-number;
description "RSVP destination port";
reference "RFC2205";
}
leaf source {
type inet:ip-address;
description "RSVP source address";
reference "RFC2205";
}
leaf destination {
type inet:ip-address;
description "RSVP destination address";
reference "RFC2205";
}
leaf session-name {
type string;
description
"The signaled name of this RSVP session.";
}
leaf session-state {
type enumeration {
enum "up" {
description
"RSVP session is up";
}
enum "down" {
description
"RSVP session is down";
}
}
description
"Enumeration of RSVP session states";
}
leaf session-type {
type identityref {
base rsvp-session-type;
}
description "RSVP session type";
}
container psbs {
description "Path State Block container";
list psb {
description "List of path state blocks";
leaf source-port {
type inet:port-number;
description "RSVP source port";
reference "RFC2205";
}
leaf expires-in {
type uint32;
units seconds;
description "Time to reservation expiry (in seconds)";
}
}
}
container rsbs {
description "Reservation State Block container";
list rsb {
description "List of reservation state blocks";
leaf source-port {
type inet:port-number;
description "RSVP source port";
reference "RFC2205";
}
leaf reservation-style {
type identityref {
base reservation-style;
}
description "RSVP reservation style";
}
leaf expires-in {
type uint32;
units seconds;
description "Time to reservation expiry (in seconds)";
}
}
}
}
grouping neighbor-attributes {
description
"Top level grouping for RSVP neighbor properties";
leaf address {
type inet:ip-address;
description
"Address of RSVP neighbor";
}
container state {
config false;
description
"State information associated with RSVP
neighbor properties";
uses neighbor-derived_state;
}
}
grouping packets_state {
description
"Packet statistics grouping";
container packets {
description
"Packet statistics container";
leaf sent {
type yang:counter64;
description
"Packet sent count";
}
leaf received {
type yang:counter64;
description
"Packet received count";
}
}
}
grouping protocol_state {
description
"RSVP protocol statistics grouping";
container messages {
description
"RSVP protocol statistics container";
leaf ack-sent {
type yang:counter64;
description
"Hello sent count";
}
leaf ack-received {
type yang:counter64;
description
"Hello received count";
}
leaf bundle-sent {
type yang:counter64;
description
"Bundle sent count";
}
leaf bundle-received {
type yang:counter64;
description
"Bundle received count";
}
leaf hello-sent {
type yang:counter64;
description
"Hello sent count";
}
leaf hello-received {
type yang:counter64;
description
"Hello received count";
}
leaf integrity-challenge-sent {
type yang:counter64;
description
"Integrity Challenge sent count";
}
leaf integrity-challenge-received {
type yang:counter64;
description
"Integrity Challenge received count";
}
leaf integrity-response-sent {
type yang:counter64;
description
"Integrity Response sent count";
}
leaf integrity-response-received {
type yang:counter64;
description
"Integrity Response received count";
}
leaf notify-sent {
type yang:counter64;
description
"Notify sent count";
}
leaf notify-received {
type yang:counter64;
description
"Notify received count";
}
leaf path-sent {
type yang:counter64;
description
"Path sent count";
}
leaf path-received {
type yang:counter64;
description
"Path received count";
}
leaf path-err-sent {
type yang:counter64;
description
"Path error sent count";
}
leaf path-err-received {
type yang:counter64;
description
"Path error received count";
}
leaf path-tear-sent {
type yang:counter64;
description
"Path tear sent count";
}
leaf path-tear-received {
type yang:counter64;
description
"Path tear received count";
}
leaf resv-sent {
type yang:counter64;
description
"Resv sent count";
}
leaf resv-received {
type yang:counter64;
description
"Resv received count";
}
leaf resv-confirm-sent {
type yang:counter64;
description
"Confirm sent count";
}
leaf resv-confirm-received {
type yang:counter64;
description
"Confirm received count";
}
leaf resv-err-sent {
type yang:counter64;
description
"Resv error sent count";
}
leaf resv-err-received {
type yang:counter64;
description
"Resv error received count";
}
leaf resv-tear-sent {
type yang:counter64;
description
"Resv tear sent count";
}
leaf resv-tear-received {
type yang:counter64;
description
"Resv tear received count";
}
leaf summary-refresh-sent {
type yang:counter64;
description
"Summary refresh sent count";
}
leaf summary-refresh-received {
type yang:counter64;
description
"Summary refresh received count";
}
leaf unknown-messages-received {
type yang:counter64;
description
"Unknown packet received count";
}
}
}
grouping errors_state {
description
"Error statistics state grouping";
container errors {
description
"Error statistics state container";
leaf authenticate {
type yang:counter64;
description
"The total number of packets received with an
authentication failure.";
}
leaf checksum {
type yang:counter64;
description
"The total number of packets received with an invalid
checksum value.";
}
leaf packet-len {
type yang:counter64;
description
"The total number of packets received with an invalid
packet length.";
}
}
}
grouping statistics_state {
description "RSVP statistic attributes.";
container statistics {
description
"statistics state container";
container state {
config false;
description
"State information associated with RSVP
hello parameters";
uses protocol_state;
uses packets_state;
uses errors_state;
}
}
}
grouping neighbor-derived_state {
description
"Derived state at neighbor level.";
leaf address {
type inet:ip-address;
description
"Address of RSVP neighbor";
}
leaf epoch {
type uint32;
description
"Neighbor epoch.";
}
leaf expiry-time {
type uint32;
units seconds;
description
"Neighbor expiry time after which the neighbor state
is purged if no states associated with it";
}
container graceful-restart {
description
"Graceful restart information.";
leaf enabled {
type boolean;
description
"'true' if graceful restart is enabled for the
neighbor.";
}
leaf local-restart-time {
type uint32;
units seconds;
description
"Local node restart time";
}
leaf local-recovery-time {
type uint32;
units seconds;
description
"Local node recover time";
}
leaf neighbor-restart-time {
type uint32;
units seconds;
description
"Neighbor restart time";
}
leaf neighbor-recovery-time {
type uint32;
units seconds;
description
"Neighbor recover time";
}
container helper-mode {
description
"Helper mode information ";
leaf enabled {
type boolean;
description
"'true' if helper mode is enabled.";
}
leaf max-helper-restart-time {
type uint32;
units seconds;
description
"The time the router or switch waits after it
discovers that a neighboring router has gone down
before it declares the neighbor down";
}
leaf max-helper-recovery-time {
type uint32;
units seconds;
description
"The amount of time the router retains the state of its
RSVP neighbors while they undergo a graceful restart";
}
leaf neighbor-restart-time-remaining {
type uint32;
units seconds;
description
"Number of seconds remaining for neighbor to send
Hello message after restart.";
}
leaf neighbor-recovery-time-remaining {
type uint32;
units seconds;
description
"Number of seconds remaining for neighbor to
refresh.";
}
} // helper-mode
} // graceful-restart
leaf hello-status {
type enumeration {
enum "enabled" {
description
"Enabled";
}
enum "disabled" {
description
"Disabled";
}
enum "restarting" {
description
"Restarting";
}
}
description
"Hello status";
}
leaf interface {
type if:interface-ref;
description
"Interface where RSVP neighbor was detected";
}
leaf neighbor-state {
type enumeration {
enum "up" {
description
"up";
}
enum "down" {
description
"down";
}
enum "hello-disable" {
description
"hello-disable";
}
enum "restarting" {
description
"restarting";
}
}
description
"Neighbor state";
}
leaf refresh-reduction-capable {
type boolean;
description
"enables all RSVP refresh reduction message
bundling, RSVP message ID, reliable message delivery
and summary refresh";
reference
"RFC 2961 RSVP Refresh Overhead Reduction
Extensions";
}
leaf restart-count {
type yang:counter32;
description
"Number of times this neighbor restart";
}
leaf restart-time {
type yang:date-and-time;
description
"Last restart time of the neighbor";
}
}
grouping global-attributes {
description
"Top level grouping for RSVP global properties";
container sessions {
description
"RSVP sessions container";
list session {
key "local-index";
config false;
description
"List of RSVP sessions";
leaf local-index {
type leafref {
path "../state/local-index";
}
description
"Reference to the local index for the RSVP
session";
}
container state {
config false;
description
"State information associated with RSVP
session parameters";
uses session-attributes_state;
}
}
}
uses statistics_state;
}
grouping intf-attributes {
description
"Top level grouping for RSVP interface properties";
uses signaling-parameters;
uses refresh-reduction;
uses hellos;
uses authentication;
uses statistics_state;
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol" {
when "rt:type = 'rsvp:rsvp'" {
description
"This augment is only valid when routing protocol
instance type is RSVP.";
}
description
"RSVP protocol augmentation";
container rsvp {
presence "Enable RSVP feature";
description "RSVP feature container";
container globals {
description "RSVP global properties.";
uses global-attributes;
uses graceful-restart;
}
container interfaces {
description
"RSVP interfaces container";
uses intf-attributes;
list interface {
key "interface";
description
"RSVP interfaces.";
leaf interface {
type if:interface-ref;
description
"RSVP interface.";
}
uses intf-attributes;
}
}
container neighbors {
description "RSVP neighbors container";
list neighbor {
key "address";
description "List of RSVP neighbors";
uses neighbor-attributes;
}
}
}
}
}