aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-mpls-te.yang
diff options
context:
space:
mode:
authorHongjun Ni <hongjun.ni@intel.com>2018-12-21 04:48:35 +0000
committerGerrit Code Review <gerrit@fd.io>2018-12-21 04:48:35 +0000
commit8791f3211bd61d213e4ea4a0af66a14bb2e3a239 (patch)
tree846a89e6ca81d639d024e5509654766d3581b7ea /src/plugins/yang/openconfig/openconfig-mpls-te.yang
parentde7bb8f2b0cdd2dfeba0586213bd415c9bb3fd18 (diff)
parent639509ad42f8bd6baf9b6f5b668a9bbfb05108d4 (diff)
Merge "Add Openconfig YANG modules."
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-mpls-te.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-mpls-te.yang1381
1 files changed, 1381 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-mpls-te.yang b/src/plugins/yang/openconfig/openconfig-mpls-te.yang
new file mode 100644
index 0000000..e5142f1
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-mpls-te.yang
@@ -0,0 +1,1381 @@
+submodule openconfig-mpls-te {
+
+ yang-version "1";
+
+ belongs-to "openconfig-mpls" {
+ prefix "oc-mpls";
+ }
+
+
+ // import some basic types
+ import openconfig-inet-types { prefix inet; }
+ import openconfig-mpls-rsvp { prefix oc-rsvp; }
+ import openconfig-mpls-sr { prefix oc-sr; }
+ import openconfig-mpls-types {prefix oc-mplst; }
+ import openconfig-types { prefix oc-types; }
+ import openconfig-yang-types { prefix yang; }
+ import openconfig-extensions { prefix oc-ext; }
+
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ netopenconfig@googlegroups.com";
+
+ description
+ "Configuration related to constrained-path LSPs and traffic
+ engineering. These definitions are not specific to a particular
+ signaling protocol or mechanism (see related submodules for
+ signaling protocol-specific configuration).";
+
+ oc-ext:openconfig-version "3.0.0";
+
+ revision "2018-07-02" {
+ description
+ "Add new RSVP-TE statistics, remove associated-rsvp-session
+ leaf. Remove use of date-and-time.";
+ reference "3.0.0";
+ }
+
+ revision "2018-06-16" {
+ description
+ "Included attributes for base LDP configuration.";
+ reference "2.6.0";
+ }
+
+ revision "2018-06-13" {
+ description
+ "Add ttl-propagation to global MPLS config";
+ reference "2.5.0";
+ }
+
+ revision "2018-06-05" {
+ description
+ "Fixed bugs in when statements on RSVP-TE attributes";
+ reference "2.4.2";
+ }
+
+ revision "2017-08-24" {
+ description
+ "Minor formatting fixes.";
+ reference "2.4.1";
+ }
+
+ revision "2017-06-21" {
+ description
+ "Add TC bits typedef.";
+ reference "2.4.0";
+ }
+
+ revision "2017-03-22" {
+ description
+ "Add RSVP calculated-absolute-subscription-bw";
+ reference "2.3.0";
+ }
+
+ revision "2017-01-26" {
+ description
+ "Add RSVP Tspec, clarify units for RSVP, remove unused LDP";
+ reference "2.2.0";
+ }
+
+ revision "2016-12-15" {
+ description
+ "Add additional MPLS parameters";
+ reference "2.1.0";
+ }
+
+ revision "2016-09-01" {
+ description
+ "Revisions based on implementation feedback";
+ reference "2.0.0";
+ }
+
+ revision "2016-08-08" {
+ description
+ "Public release of MPLS models";
+ reference "1.0.1";
+ }
+
+ // typedef statements
+
+ typedef te-bandwidth-type {
+ type enumeration {
+ enum SPECIFIED {
+ description
+ "Bandwidth is explicitly specified";
+ }
+ enum AUTO {
+ description
+ "Bandwidth is automatically computed";
+ }
+ }
+ description
+ "enumerated type for specifying whether bandwidth is
+ explicitly specified or automatically computed";
+ }
+
+ typedef mpls-srlg-flooding-type {
+ type enumeration {
+ enum FLOODED_SRLG {
+ description
+ "SRLG is flooded in the IGP";
+ }
+ enum STATIC_SRLG {
+ description
+ "SRLG is not flooded, the members are
+ statically configured";
+ }
+ }
+ description
+ "Enumerated bype for specifying how the SRLG is flooded";
+ }
+
+ typedef mpls-hop-type {
+ type enumeration {
+ enum LOOSE {
+ description
+ "loose hop in an explicit path";
+ }
+ enum STRICT {
+ description
+ "strict hop in an explicit path";
+ }
+ }
+ description
+ "enumerated type for specifying loose or strict
+ paths";
+ }
+
+ typedef te-metric-type {
+ type union {
+ type enumeration {
+ enum IGP {
+ description
+ "set the LSP metric to track the underlying
+ IGP metric";
+ }
+ }
+ type uint32;
+ }
+ description
+ "union type for setting the LSP TE metric to a
+ static value, or to track the IGP metric";
+ }
+
+ typedef cspf-tie-breaking {
+ type enumeration {
+ enum RANDOM {
+ description
+ "CSPF calculation selects a random path among
+ multiple equal-cost paths to the destination";
+ }
+ enum LEAST_FILL {
+ description
+ "CSPF calculation selects the path with greatest
+ available bandwidth";
+ }
+ enum MOST_FILL {
+ description
+ "CSPF calculation selects the path with the least
+ available bandwidth";
+ }
+ }
+ default RANDOM;
+ description
+ "type to indicate the CSPF selection policy when
+ multiple equal cost paths are available";
+ }
+
+
+ // grouping statements
+
+ grouping te-tunnel-reoptimize-config {
+ description
+ "Definition for reoptimize timer configuration";
+
+ leaf reoptimize-timer {
+ type uint16;
+ units seconds;
+ description
+ "frequency of reoptimization of
+ a traffic engineered LSP";
+ }
+ }
+
+ grouping te-lsp-auto-bandwidth-config {
+ description
+ "Configuration parameters related to autobandwidth";
+
+ leaf enabled {
+ type boolean;
+ default false;
+ description
+ "enables mpls auto-bandwidth on the
+ lsp";
+ }
+
+ leaf min-bw {
+ type oc-mplst:bandwidth-kbps;
+ description
+ "set the minimum bandwidth in Kbps for an
+ auto-bandwidth LSP";
+ }
+
+ leaf max-bw {
+ type oc-mplst:bandwidth-kbps;
+ description
+ "set the maximum bandwidth in Kbps for an
+ auto-bandwidth LSP";
+ }
+
+ leaf adjust-interval {
+ type uint32;
+ description
+ "time in seconds between adjustments to
+ LSP bandwidth";
+ }
+
+ leaf adjust-threshold {
+ type oc-types:percentage;
+ 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";
+ }
+ }
+
+ grouping te-lsp-auto-bandwidth-state {
+ description
+ "Operational state parameters relating to auto-bandwidth";
+
+ leaf interval-high-bw {
+ type oc-mplst:bandwidth-kbps;
+ description
+ "The maximum measured bandwidth during the current
+ auto-bandwidth adjust interval expressed in kilobits
+ per second.";
+ }
+ }
+
+ grouping te-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 oc-types:percentage;
+ 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 te-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 oc-types:percentage;
+ 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 te-path-placement-constraints-config {
+ description
+ "Configuration data for link affinities";
+
+ leaf-list exclude-group {
+ type leafref {
+ path "../../../../../../../../../../te-global-attributes" +
+ "/mpls-admin-groups/admin-group/admin-group-name";
+ }
+ description
+ "list of references to named admin-groups to exclude in
+ path calculation.";
+ }
+
+ leaf-list include-all-group {
+ type leafref {
+ path "../../../../../../../../../../te-global-attributes" +
+ "/mpls-admin-groups/admin-group/admin-group-name";
+ }
+ description
+ "list of references to named admin-groups of which all must
+ be included";
+ }
+
+ leaf-list include-any-group {
+ type leafref {
+ path "../../../../../../../../../../te-global-attributes" +
+ "/mpls-admin-groups/admin-group/admin-group-name";
+ }
+ description
+ "list of references to named admin-groups of which one must
+ be included";
+ }
+ }
+
+ grouping te-path-placement-constraints-state {
+ description
+ "Operational state data for link affinities";
+ //TODO: currently a placeholder
+ }
+
+ grouping te-path-placement-constraints-top {
+ description
+ "Top-level grouping ";
+
+ container admin-groups {
+ description
+ "Top-level container for include/exclude constraints for
+ link affinities";
+
+ container config {
+ description
+ "Configuration data ";
+
+ uses te-path-placement-constraints-config;
+ }
+
+ container state {
+ config false;
+
+ description
+ "Operational state data ";
+
+ uses te-path-placement-constraints-config;
+ uses te-path-placement-constraints-state;
+ }
+ }
+ }
+
+ grouping te-tunnel-protection-config {
+ description
+ "Configuration parameters related to LSP
+ protection";
+ leaf protection-style-requested {
+ type identityref {
+ base oc-mplst:PROTECTION_TYPE;
+ }
+ default oc-mplst:UNPROTECTED;
+ description
+ "style of mpls frr protection desired: can be
+ link, link-node or unprotected.";
+ }
+ }
+
+ grouping explicit-route-subobject-config {
+ description
+ "The explicit route subobject grouping";
+
+ leaf address {
+ type inet:ip-address;
+ description
+ "router hop for the LSP path";
+ }
+
+ leaf hop-type {
+ type mpls-hop-type;
+ description
+ "strict or loose hop";
+ }
+
+ leaf index {
+ type uint8 {
+ range "0..255";
+ }
+ description
+ "Index of this explicit route object to express
+ the order of hops in the path";
+ }
+
+ }
+
+ grouping named-explicit-path-config {
+ description
+ "Configuration parameters relating to a named
+ explicit path";
+
+ leaf name {
+ type string;
+ description
+ "A string name that uniquely identifies an explicit
+ path";
+ }
+ }
+
+ // Explicit paths config somewhat following the IETF model
+ grouping explicit-paths-top {
+ description
+ "Top level global explicit path configuration
+ grouping";
+
+ container named-explicit-paths {
+ description
+ "Enclosing container for the named explicit paths";
+ list named-explicit-path {
+ key "name";
+ description
+ "A list of explicit paths";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ }
+ description
+ "A string name that uniquely identifies
+ an explicit path";
+ }
+
+ container config {
+ description
+ "Configuration parameters relating to named explicit
+ paths";
+ uses named-explicit-path-config;
+ uses oc-sr:sr-path-attributes-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the named
+ explicit paths";
+ uses named-explicit-path-config;
+ uses oc-sr:sr-path-attributes-config;
+ }
+
+ container explicit-route-objects {
+ description
+ "Enclosing container for EROs";
+
+ list explicit-route-object {
+ key "index";
+ description
+ "List of explicit route objects";
+
+ leaf index {
+ type leafref {
+ path "../config/index";
+ }
+
+ description
+ "Index of this explicit route object,
+ to express the order of hops in path";
+ }
+
+ container config {
+ description
+ "Configuration parameters relating to an explicit
+ route";
+ uses explicit-route-subobject-config;
+ }
+
+
+ container state {
+ config false;
+ description
+ "State parameters relating to an explicit route";
+ uses explicit-route-subobject-config;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ grouping mpls-te-srlg-config {
+ description
+ "Configuration of various attributes associated
+ with the SRLG";
+
+ leaf name {
+ type string;
+ description
+ "SRLG group identifier";
+ }
+
+ leaf value {
+ type uint32;
+ description
+ "group ID for the SRLG";
+ }
+
+ leaf cost {
+ type uint32;
+ description
+ "The cost of the SRLG to the computation
+ algorithm";
+ }
+
+ leaf flooding-type {
+ type mpls-srlg-flooding-type;
+ default FLOODED_SRLG;
+ description
+ "The type of SRLG, either flooded in the IGP or
+ statically configured";
+ }
+ }
+
+ grouping mpls-te-srlg-members-config {
+ description
+ "Configuration of the membership of the SRLG";
+
+ leaf from-address {
+ type inet:ip-address;
+ description
+ "IP address of the a-side of the SRLG link";
+ }
+
+ leaf to-address {
+ type inet:ip-address;
+ description
+ "IP address of the z-side of the SRLG link";
+ }
+ }
+
+ grouping mpls-te-srlg-top {
+ description
+ "Top level grouping for MPLS shared
+ risk link groups.";
+
+ container srlgs {
+ description
+ "Shared risk link groups attributes";
+ list srlg {
+ key "name";
+ description
+ "List of shared risk link groups";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ // Requires YANG 1.1
+ //require-instance true;
+ }
+ description
+ "The SRLG group identifier";
+ }
+
+ container config {
+ description
+ "Configuration parameters related to the SRLG";
+ uses mpls-te-srlg-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State parameters related to the SRLG";
+ uses mpls-te-srlg-config;
+ }
+
+ container static-srlg-members {
+ when "../config/flooding-type = 'STATIC_SRLG'" {
+ description
+ "Include this container for static
+ SRLG specific configuration";
+ }
+ description
+ "SRLG members for static (not flooded) SRLGs ";
+
+ list members-list {
+ key "from-address";
+ description
+ "List of SRLG members, which are expressed
+ as IP address endpoints of links contained in the
+ SRLG";
+
+ leaf from-address {
+ type leafref {
+ path "../config/from-address";
+ // Requires YANG 1.1
+ //require-instance true;
+ }
+ description
+ "The from address of the link in the SRLG";
+ }
+
+ container config {
+ description
+ "Configuration parameters relating to the
+ SRLG members";
+ uses mpls-te-srlg-members-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State parameters relating to the SRLG
+ members";
+ uses mpls-te-srlg-members-config;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ grouping te-global-tunnel-config {
+ description
+ "Configuration parameters relevant to a single
+ traffic engineered tunnel.";
+
+ leaf name {
+ type string;
+ description
+ "The tunnel name";
+ }
+
+ leaf type {
+ type identityref {
+ base oc-mplst:TUNNEL_TYPE;
+ }
+ description
+ "Tunnel type, p2p or p2mp";
+ }
+
+ leaf signaling-protocol {
+ type identityref {
+ base oc-mplst:PATH_SETUP_PROTOCOL;
+ }
+ description
+ "Signaling protocol used to set up this tunnel";
+ }
+
+ leaf description {
+ type string;
+ description
+ "optional text description for the tunnel";
+ }
+
+ leaf admin-status {
+ type identityref {
+ base oc-mplst:TUNNEL_ADMIN_STATUS;
+ }
+ default oc-mplst:ADMIN_UP;
+ description
+ "TE tunnel administrative state.";
+ }
+
+ leaf preference {
+ type uint8 {
+ range "1..255";
+ }
+ description
+ "Specifies a preference for this tunnel.
+ A lower number signifies a better preference";
+ }
+
+ leaf metric-type {
+ type identityref {
+ base oc-mplst:LSP_METRIC_TYPE;
+ }
+ default oc-mplst:LSP_METRIC_INHERITED;
+ description
+ "The type of metric specification that should be used to set
+ the LSP(s) metric";
+ }
+
+ leaf metric {
+ type int32;
+ description
+ "The value of the metric that should be specified. The value
+ supplied in this leaf is used in conjunction with the metric
+ type to determine the value of the metric used by the system.
+ Where the metric-type is set to LSP_METRIC_ABSOLUTE - the
+ value of this leaf is used directly; where it is set to
+ LSP_METRIC_RELATIVE, the relevant (positive or negative)
+ offset is used to formulate the metric; where metric-type
+ is LSP_METRIC_INHERITED, the value of this leaf is not
+ utilised";
+ }
+
+ leaf shortcut-eligible {
+ type boolean;
+ default "true";
+ description
+ "Whether this LSP is considered to be eligible for us as a
+ shortcut in the IGP. In the case that this leaf is set to
+ true, the IGP SPF calculation uses the metric specified to
+ determine whether traffic should be carried over this LSP";
+ }
+
+ leaf protection-style-requested {
+ type identityref {
+ base oc-mplst:PROTECTION_TYPE;
+ }
+ default oc-mplst:UNPROTECTED;
+ description
+ "style of mpls frr protection desired: can be
+ link, link-node or unprotected.";
+ }
+
+ uses te-tunnel-reoptimize-config;
+ uses oc-rsvp:rsvp-p2p-tunnel-attributes-config;
+
+ }
+
+ grouping tunnel-p2p-attributes-config {
+ description
+ "Configuration related to p2p LSPs";
+ leaf destination {
+ type inet:ip-address;
+ description
+ "P2P tunnel destination address";
+ }
+ }
+
+ grouping p2p-path-state {
+ description
+ "Operational state parameters for p2p paths";
+
+ leaf-list associated-rsvp-sessions {
+ type leafref {
+ path "../../../../../../../../../signaling-protocols/" +
+ "rsvp-te/sessions/session/local-index";
+ }
+ description
+ "If the signalling protocol specified for this path is
+ RSVP-TE, this leaf-list provides a reference to the associated
+ sessions within the RSVP-TE protocol sessions list, such
+ that details of the signaling can be retrieved. More than
+ one session may exist during re-signalling such as
+ make-before-break.";
+ }
+
+ leaf spf-metric {
+ type uint64;
+ description
+ "The IGP metric of the shortest path to the LSP destination.
+ This value is used to compare the current metric of the
+ constrained path to the shortest path that is available in
+ the network topology.";
+ }
+
+ leaf cspf-metric {
+ type uint64;
+ description
+ "The IGP metric of the path currently used by the LSP.
+ This value is used to represent the metric of the path
+ used by the LSP following the execution of the CSPF
+ algorithm and signalling of the LSP.";
+ }
+ }
+
+ grouping p2p-path-config {
+ description
+ "Configuration parameters for p2p paths";
+
+ leaf name {
+ type string;
+ description
+ "Path name";
+ }
+
+ leaf path-computation-method {
+ type identityref {
+ base oc-mplst:PATH_COMPUTATION_METHOD;
+ }
+ default oc-mplst:LOCALLY_COMPUTED;
+ description
+ "The method used for computing the path, either
+ locally computed, queried from a server or not
+ computed at all (explicitly configured).";
+ }
+
+ leaf use-cspf {
+ when "../path-computation-method = 'LOCALLY_COMPUTED'" {
+ description
+ "The use of cspf when the path-computation method is
+ local computation";
+ }
+ type boolean;
+ description
+ "Flag to enable CSPF for locally computed LSPs";
+ }
+
+ leaf cspf-tiebreaker {
+ when "../path-computation-method = 'LOCALLY_COMPUTED'" {
+ description
+ "The cspf tiebreaking method when the path is
+ locally computed";
+ }
+ type cspf-tie-breaking;
+ description
+ "Determine the tie-breaking method to choose between
+ equally desirable paths during CSFP computation";
+ }
+
+
+ leaf path-computation-server {
+ when "../path-computation-method = 'EXTERNALLY_QUERIED'" {
+ description
+ "The path-computation server when the path is
+ externally queried";
+ }
+ type inet:ip-address;
+ description
+ "Address of the external path computation
+ server";
+ }
+
+ leaf explicit-path-name {
+ when "../path-computation-method = 'EXPLICITLY_DEFINED'" {
+ description
+ "The name of the explicitly defined path used";
+ }
+
+ type leafref {
+ path "../../../../../../../"
+ + "named-explicit-paths/named-explicit-path/"
+ + "config/name";
+ // Requires YANG 1.1
+ //require-instance true;
+ }
+ description
+ "reference to a defined path";
+ }
+
+ leaf preference {
+ type uint8 {
+ range "1..255";
+ }
+ description
+ "Specifies a preference for this path. The lower the
+ number higher the preference";
+ }
+
+ uses oc-rsvp:rsvp-p2p-path-attributes-config;
+ }
+
+
+ grouping te-tunnel-p2p-top {
+ description
+ "Top level grouping for p2p configuration";
+
+ container p2p-tunnel-attributes {
+ when "../config/type = 'P2P'" {
+ description
+ "Include this container for LSPs of type P2P";
+ }
+ description
+ "Parameters related to LSPs of type P2P";
+
+ container config {
+ description
+ "Configuration parameters for P2P LSPs";
+ uses tunnel-p2p-attributes-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State parameters for P2P LSPs";
+ uses tunnel-p2p-attributes-config;
+ }
+
+ uses p2p-primary-paths-top;
+ uses p2p-secondary-paths-top;
+ }
+ }
+
+
+ grouping te-tunnel-state {
+ description
+ "Counters and statistical data relevent to a single
+ tunnel.";
+
+ leaf oper-status {
+ type identityref {
+ base oc-mplst:LSP_OPER_STATUS;
+ }
+ description
+ "The operational status of the TE tunnel";
+ }
+
+ leaf role {
+ type identityref {
+ base oc-mplst:LSP_ROLE;
+ }
+ description
+ "The lsp role at the current node, whether it is headend,
+ transit or tailend.";
+ }
+
+ leaf auto-generated {
+ type boolean;
+ description
+ "If the LSP was auto-generated by the system this leaf
+ should be set to true. Examples of auto-generated LSPs
+ are dynamically created backup LSPs to meet a FRR
+ policy.";
+ }
+
+ container counters {
+ description
+ "State data for MPLS label switched paths. This state
+ data is specific to a single label switched path.";
+
+ leaf bytes {
+ type yang:counter64;
+ description
+ "Number of bytes that have been forwarded over the
+ label switched path.";
+ }
+
+ leaf packets {
+ type yang:counter64;
+ description
+ "Number of pacets that have been forwarded over the
+ label switched path.";
+ }
+
+ leaf path-changes {
+ type yang:counter64;
+ description
+ "Number of path changes for the label switched path";
+ }
+
+ leaf state-changes {
+ type yang:counter64;
+ description
+ "Number of state changes for the label switched path";
+ }
+
+ leaf online-time {
+ type oc-types:timeticks64;
+ description
+ "Indication of the time the label switched path
+ transitioned to an Oper Up or in-service state.
+
+ The value is the timestamp in nanoseconds relative to
+ the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
+ }
+
+ leaf current-path-time {
+ type oc-types:timeticks64;
+ description
+ "Indicates the time the LSP switched onto its
+ current path. The value is reset upon a LSP path
+ change.
+
+ The value is the timestamp in nanoseconds relative to
+ the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
+
+ }
+
+ leaf next-reoptimization-time {
+ type oc-types:timeticks64;
+ description
+ "Indicates the next scheduled time the LSP
+ will be reoptimized.
+
+ The value is the timestamp in nanoseconds relative to
+ the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
+
+ }
+ }
+ }
+
+ grouping te-tunnel-bandwidth-config {
+ description
+ "Configuration parameters related to bandwidth for a tunnel";
+
+ leaf specification-type {
+ type te-bandwidth-type;
+ default SPECIFIED;
+ description
+ "The method used for settign the bandwidth, either explicitly
+ specified or configured";
+ }
+
+ leaf set-bandwidth {
+ when "../specification-type = 'SPECIFIED'" {
+ description
+ "The bandwidth value when bandwidth is explicitly
+ specified";
+ }
+ type oc-mplst:bandwidth-kbps;
+ description
+ "set bandwidth explicitly, e.g., using
+ offline calculation";
+ }
+ }
+
+ grouping te-tunnel-bandwidth-state {
+ description
+ "Operational state parameters relating to bandwidth for a tunnel";
+
+ leaf signaled-bandwidth {
+ type oc-mplst:bandwidth-kbps;
+ description
+ "The currently signaled bandwidth of the LSP. In the case where
+ the bandwidth is specified explicitly, then this will match the
+ value of the set-bandwidth leaf; in cases where the bandwidth is
+ dynamically computed by the system, the current value of the
+ bandwidth should be reflected.";
+ }
+ }
+
+ grouping te-tunnel-bandwidth-top {
+ description
+ "Top level grouping for specifying bandwidth for a tunnel";
+
+ container bandwidth {
+ description
+ "Bandwidth configuration for TE LSPs";
+
+ container config {
+ description
+ "Configuration parameters related to bandwidth on TE
+ tunnels:";
+ uses te-tunnel-bandwidth-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State parameters related to bandwidth
+ configuration of TE tunnels";
+ uses te-tunnel-bandwidth-config;
+ uses te-tunnel-bandwidth-state;
+ }
+
+ container auto-bandwidth {
+ when "../config/specification-type = 'AUTO'" {
+ description
+ "Include this container for auto bandwidth
+ specific configuration";
+ }
+ description
+ "Parameters related to auto-bandwidth";
+
+ container config {
+ description
+ "Configuration parameters relating to MPLS
+ auto-bandwidth on the tunnel.";
+ uses te-lsp-auto-bandwidth-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State parameters relating to MPLS
+ auto-bandwidth on the tunnel.";
+ uses te-lsp-auto-bandwidth-config;
+ uses te-lsp-auto-bandwidth-state;
+ }
+
+ container overflow {
+ description
+ "configuration of MPLS overflow bandwidth
+ adjustement for the LSP";
+
+ container config {
+ description
+ "Config information for MPLS overflow bandwidth
+ adjustment";
+ uses te-lsp-overflow-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Config information for MPLS overflow bandwidth
+ adjustment";
+ uses te-lsp-overflow-config;
+ }
+ }
+
+ container underflow {
+ description
+ "configuration of MPLS underflow bandwidth
+ adjustement for the LSP";
+
+ container config {
+ description
+ "Config information for MPLS underflow bandwidth
+ adjustment";
+ uses te-lsp-underflow-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State information for MPLS underflow bandwidth
+ adjustment";
+ uses te-lsp-underflow-config;
+ }
+ }
+ }
+ }
+ }
+
+ grouping p2p-path-candidate-secondary-path-config {
+ description
+ "Configuration parameters relating to a secondary path which
+ is a candidate for a particular primary path";
+
+ leaf secondary-path {
+ type leafref {
+ path "../../../../../../p2p-secondary-paths/" +
+ "p2p-secondary-path/config/name";
+ }
+ description
+ "A reference to the secondary path that should be utilised
+ when the containing primary path option is in use";
+ }
+
+ leaf priority {
+ type uint16;
+ description
+ "The priority of the specified secondary path option. Higher
+ priority options are less preferable - such that a secondary
+ path reference with a priority of 0 is the most preferred";
+ }
+ }
+
+ grouping p2p-path-candidate-secondary-path-state {
+ description
+ "Operational state parameters relating to a secondary path
+ which is a candidate for a particular primary path";
+
+ leaf active {
+ type boolean;
+ description
+ "Indicates the current active path option that has
+ been selected of the candidate secondary paths";
+ }
+ }
+
+ grouping p2p-primary-paths-top {
+ description
+ "Top level grouping for p2p primary paths";
+
+ container p2p-primary-path {
+ description
+ "Primary paths associated with the LSP";
+
+ list p2p-primary-path {
+ key "name";
+ description
+ "List of p2p primary paths for a tunnel";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ // Requires YANG 1.1
+ //require-instance true;
+ }
+ description
+ "Path name";
+ }
+
+ container config {
+ description
+ "Configuration parameters related to paths";
+ uses p2p-path-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State parameters related to paths";
+ uses p2p-path-config;
+ uses p2p-path-state;
+ }
+
+ container candidate-secondary-paths {
+ description
+ "The set of candidate secondary paths which may be used
+ for this primary path. When secondary paths are specified
+ in the list the path of the secondary LSP in use must be
+ restricted to those path options referenced. The
+ priority of the secondary paths is specified within the
+ list. Higher priority values are less preferred - that is
+ to say that a path with priority 0 is the most preferred
+ path. In the case that the list is empty, any secondary
+ path option may be utilised when the current primary path
+ is in use.";
+
+ list candidate-secondary-path {
+ key "secondary-path";
+
+ description
+ "List of secondary paths which may be utilised when the
+ current primary path is in use";
+
+ leaf secondary-path {
+ type leafref {
+ path "../config/secondary-path";
+ }
+ description
+ "A reference to the secondary path option reference
+ which acts as the key of the candidate-secondary-path
+ list";
+ }
+
+ container config {
+ description
+ "Configuration parameters relating to the candidate
+ secondary path";
+
+ uses p2p-path-candidate-secondary-path-config;
+ }
+
+ container state {
+ config false;
+ description
+ "Operational state parameters relating to the candidate
+ secondary path";
+
+ uses p2p-path-candidate-secondary-path-config;
+ uses p2p-path-candidate-secondary-path-state;
+ }
+ }
+ }
+
+ uses te-path-placement-constraints-top;
+
+ }
+ }
+ }
+
+ grouping p2p-secondary-paths-top {
+ description
+ "Top level grouping for p2p secondary paths";
+
+ container p2p-secondary-paths {
+ description
+ "Secondary paths for the LSP";
+
+ list p2p-secondary-path {
+ key "name";
+ description
+ "List of p2p primary paths for a tunnel";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ // Requires YANG 1.1
+ //require-instance true;
+ }
+ description
+ "Path name";
+ }
+
+ container config {
+ description
+ "Configuration parameters related to paths";
+ uses p2p-path-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State parameters related to paths";
+ uses p2p-path-config;
+ uses p2p-path-state;
+ }
+
+ uses te-path-placement-constraints-top;
+ }
+ }
+ }
+
+ grouping te-tunnels-top {
+ description
+ "Top level grouping for TE tunnels";
+
+ container tunnels {
+ description
+ "Enclosing container for tunnels";
+ list tunnel {
+ key "name";
+ description
+ "List of TE tunnels. This list contains only the LSPs that the
+ current device originates (i.e., for which it is the head-end).
+ Where the signaling protocol utilised for an LSP allows a mid-point
+ or tail device to be aware of the LSP (e.g., RSVP-TE), then the
+ associated sessions are maintained per protocol";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ // Requires YANG 1.1
+ //require-instance true;
+ }
+ description
+ "The tunnel name";
+ }
+
+ container config {
+ description
+ "Configuration parameters related to TE tunnels:";
+ uses te-global-tunnel-config;
+ }
+
+ container state {
+ config false;
+ description
+ "State parameters related to TE tunnels";
+ uses te-global-tunnel-config;
+ uses te-tunnel-state;
+
+ }
+
+ uses te-tunnel-bandwidth-top;
+ uses te-tunnel-p2p-top;
+ // TODO - add the p2mp configuration
+ }
+ }
+ }
+
+// data definition statements
+
+// augment statements
+
+// rpc statements
+
+// notification statements
+
+}