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"; } }