diff --git a/ietf-mpls-te-types.yang b/ietf-mpls-te-types.yang
new file mode 100644
index 0000000..a64f64c
--- /dev/null
+++ b/ietf-mpls-te-types.yang
@@ -0,0 +1,207 @@
+module ietf-mpls-te-types {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-te-types";
+
+ prefix "mte-types";
+
+ import ietf-routing-types {
+ prefix "rt-types";
+
+ }
+
+ import ietf-te-packet-types {
+ prefix "te-packet-types";
+ reference
+ "RFC 8776: Common YANG Data Types for Traffic Engineering";
+ }
+
+ organization
+ "Internet Engineering Task Force (IETF) TEAS WG";
+ contact
+ "WG Web:
+ WG List:
+
+ Editor: Italo Busi
+
+
+ Editor: Haomian Zheng
+
+
+ Editor: Aihua Guo
+
+
+ Editor: Xufeng Liu
+ ";
+
+ description
+ "This module defines technology-specific MPLS-TE types
+ data model.
+
+ Copyright (c) 2020 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
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2020-07-13 {
+ description
+ "Initial Version";
+ reference
+ "draft-busizheng-teas-yang-te-mpls-topology";
+ }
+
+/*
+ * Identities (to be moved to te-packet-types?)
+ */
+
+ identity bandwidth-profile-type {
+ description
+ "Bandwidth Profile Types";
+ }
+
+ identity mef-10-bwp {
+ base bandwidth-profile-type;
+ description
+ "MEF 10 Bandwidth Profile";
+ }
+
+ identity rfc-2697-bwp {
+ base bandwidth-profile-type;
+ description
+ "RFC 2697 Bandwidth Profile";
+ }
+
+ identity rfc-2698-bwp {
+ base bandwidth-profile-type;
+ description
+ "RFC 2698 Bandwidth Profile";
+ }
+
+ identity rfc-4115-bwp {
+ base bandwidth-profile-type;
+ description
+ "RFC 4115 Bandwidth Profile";
+ }
+
+/*
+ * Type Definitions (MPLS-TE)
+ */
+
+ typedef load-balancing-type {
+ type enumeration {
+ enum per-flow {
+ description
+ "The load-balancing algorithm ensures that packets
+ characterized as the same flow (e.g. based on IP 5-tuple)
+ that egress on a LAG or a bundled TE link are forwarded
+ on the same component link.
+
+ Packets for different flows within the same LSP can be
+ forwarded on different component links.";
+ }
+ enum per-top-label {
+ description
+ "The load-balancing algorithm ensures incoming MPLS
+ packets with the same top MPLS label and that egress on
+ a on a LAG or bundled TE link are forwarded on the same
+ component link.
+
+
+
+ Packets for different flows within the same LSP are
+ forwarded on the same component link.";
+ }
+ }
+ description
+ "The type of load balancing used on bundled links.";
+ } // typedef load-balancing-type
+
+/*
+ * Groupings (to be moved to te-packet-types?)
+ */
+
+ grouping te-packet-path-bandwidth {
+ description
+ "Path bandwidth for Packet. ";
+ leaf bandwidth-profile-name{
+ type string;
+ description "Name of Bandwidth Profile.";
+ }
+ leaf bandwidth-profile-type {
+ type identityref {
+ base bandwidth-profile-type;
+ }
+ description "Type of Bandwidth Profile.";
+ }
+
+ leaf CIR {
+ type uint64;
+ description
+ "Committed Information Rate in Kbps";
+ }
+
+ leaf EIR {
+ type uint64;
+ /*
+ Need to indicate that EIR is not supported by RFC 2697
+
+ must
+ '../bw-profile-type = "etht-types:mef-10-bwp" or ' +
+ '../bw-profile-type = "etht-types:rfc-2698-bwp" or ' +
+ '../bw-profile-type = "etht-types:rfc-4115-bwp"'
+
+ must
+ '../bw-profile-type != "etht-types:rfc-2697-bwp"'
+ */
+ description
+ "Excess Information Rate in Kbps
+ In case of RFC 2698, PIR = CIR + EIR";
+ }
+
+ leaf CBS {
+ type uint64;
+ description
+ "Committed Burst Size in in KBytes";
+ }
+
+ leaf EBS {
+ type uint64;
+ description
+ "Excess Burst Size in KBytes.
+ In case of RFC 2698, PBS = CBS + EBS";
+ }
+ }
+
+ grouping te-packet-link-bandwidth {
+ description
+ "Link Bandwidth for Packet. ";
+ leaf packet-bandwidth {
+ type te-packet-types:bandwidth-kbps;
+ description
+ "Available bandwith value expressed in kilobits per
+ second";
+ }
+ }
+
+/*
+ * Groupings (MPLS-TE)
+ */
+
+ grouping te-mpls-label-hop {
+ description
+ "MPLS-TE Label Hop.";
+
+ leaf mpls-label {
+ type rt-types:mpls-label;
+ description
+ "MPLS Label.";
+ }
+ } // grouping te-mpls-label-hop
+}
\ No newline at end of file
diff --git a/ietf-mpls-te.tree b/ietf-mpls-te.tree
index 93d09f5..0b2c16e 100644
--- a/ietf-mpls-te.tree
+++ b/ietf-mpls-te.tree
@@ -68,27 +68,30 @@ module: ietf-te-mpls
| +--rw load-share? uint32
| +--rw policy-class? uint8
+--rw bandwidth-mpls
- +--rw specification-type?
- | te-packet-types:te-bandwidth-requested-type
- +--rw set-bandwidth? te-packet-types:bandwidth-kbps
- +--rw class-type? te-types:te-ds-class
- +--ro state
- | +--ro signaled-bandwidth? te-packet-types:bandwidth-kbps
- +--rw auto-bandwidth
- +--rw enabled? boolean
- +--rw min-bw? te-packet-types:bandwidth-kbps
- +--rw max-bw? te-packet-types:bandwidth-kbps
- +--rw adjust-interval? uint32
- +--rw adjust-threshold? rt-types:percentage
- +--rw overflow
- | +--rw enabled? boolean
- | +--rw overflow-threshold? rt-types:percentage
- | +--rw trigger-event-count? uint16
- +--rw underflow
- +--rw enabled? boolean
- +--rw underflow-threshold? rt-types:percentage
- +--rw trigger-event-count? uint16
- augment /te:te/te:tunnels/te:tunnel/te:primary-paths/te:primary-path:
+ | +--rw specification-type?
+ | | te-packet-types:te-bandwidth-requested-type
+ | +--rw set-bandwidth? te-packet-types:bandwidth-kbps
+ | +--rw class-type? te-types:te-ds-class
+ | +--ro state
+ | | +--ro signaled-bandwidth? te-packet-types:bandwidth-kbps
+ | +--rw auto-bandwidth
+ | +--rw enabled? boolean
+ | +--rw min-bw? te-packet-types:bandwidth-kbps
+ | +--rw max-bw? te-packet-types:bandwidth-kbps
+ | +--rw adjust-interval? uint32
+ | +--rw adjust-threshold? rt-types:percentage
+ | +--rw overflow
+ | | +--rw enabled? boolean
+ | | +--rw overflow-threshold? rt-types:percentage
+ | | +--rw trigger-event-count? uint16
+ | +--rw underflow
+ | +--rw enabled? boolean
+ | +--rw underflow-threshold? rt-types:percentage
+ | +--rw trigger-event-count? uint16
+ +--rw load-balancing-type? mte-types:load-balancing-type
+ +--rw uhp-required? empty
+ augment /te:te/te:tunnels/te:tunnel/te:primary-paths
+ /te:primary-path:
+--rw static-lsp-name? mpls-static:static-lsp-ref
augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
/te:secondary-path:
@@ -102,8 +105,8 @@ module: ietf-te-mpls
+--rw class-type? te-types:te-ds-class
+--ro state
+--ro signaled-bandwidth? te-packet-types:bandwidth-kbps
- augment /te:te/te:tunnels/te:tunnel/te:primary-paths/te:primary-path
- /te:lsps/te:lsp:
+ augment /te:te/te:tunnels/te:tunnel/te:primary-paths
+ /te:primary-path/te:lsps/te:lsp:
+--ro performance-metrics-one-way
| +--ro one-way-delay? uint32
| +--ro one-way-delay-normality?
@@ -148,3 +151,29 @@ module: ietf-te-mpls
+--ro two-way-packet-loss? decimal64
+--ro two-way-packet-loss-normality?
te-types:performance-metrics-normality
+ augment /te:te/te:tunnels/te:tunnel/te:primary-paths
+ /te:primary-path/te:computed-paths-properties
+ /te:computed-path-properties/te:path-properties
+ /te:path-route-objects/te:path-route-object/te:type
+ /te:label/te:label-hop/te:te-label/te:technology:
+ +--:(mpls)
+ +--ro mpls-label? rt-types:mpls-label
+ augment /te:te/te:tunnels/te:tunnel/te:primary-paths
+ /te:primary-path/te:lsps/te:lsp/te:path-properties
+ /te:path-route-objects/te:path-route-object/te:type
+ /te:label/te:label-hop/te:te-label/te:technology:
+ +--:(mpls)
+ +--ro mpls-label? rt-types:mpls-label
+ augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
+ /te:secondary-path/te:computed-paths-properties
+ /te:computed-path-properties/te:path-properties
+ /te:path-route-objects/te:path-route-object/te:type
+ /te:label/te:label-hop/te:te-label/te:technology:
+ +--:(mpls)
+ +--ro mpls-label? rt-types:mpls-label
+ augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
+ /te:secondary-path/te:lsps/te:lsp/te:path-properties
+ /te:path-route-objects/te:path-route-object/te:type
+ /te:label/te:label-hop/te:te-label/te:technology:
+ +--:(mpls)
+ +--ro mpls-label? rt-types:mpls-label
diff --git a/ietf-te-mpls-topology.tree b/ietf-te-mpls-topology.tree
new file mode 100644
index 0000000..22b9685
--- /dev/null
+++ b/ietf-te-mpls-topology.tree
@@ -0,0 +1,139 @@
+
+module: ietf-te-mpls-topology
+ augment /nw:networks/nw:network/nw:node/nt:termination-point/tet:te
+ /tet:interface-switching-capability/tet:max-lsp-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw bandwidth-profile-name? string
+ +--rw bandwidth-profile-type? identityref
+ +--rw CIR? uint64
+ +--rw EIR? uint64
+ +--rw CBS? uint64
+ +--rw EBS? uint64
+ augment /nw:networks/nw:network/nw:node/tet:te
+ /tet:te-node-attributes/tet:connectivity-matrices
+ /tet:path-constraints/tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nw:node/tet:te
+ /tet:te-node-attributes/tet:connectivity-matrices
+ /tet:connectivity-matrix/tet:path-constraints
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nw:node/tet:te
+ /tet:information-source-entry/tet:connectivity-matrices
+ /tet:path-constraints/tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--ro packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nw:node/tet:te
+ /tet:information-source-entry/tet:connectivity-matrices
+ /tet:connectivity-matrix/tet:path-constraints
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--ro packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nw:node/tet:te
+ /tet:tunnel-termination-point/tet:client-layer-adaptation
+ /tet:switching-capability/tet:te-bandwidth
+ /tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nw:node/tet:te
+ /tet:tunnel-termination-point
+ /tet:local-link-connectivities/tet:path-constraints
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nw:node/tet:te
+ /tet:tunnel-termination-point
+ /tet:local-link-connectivities
+ /tet:local-link-connectivity/tet:path-constraints
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nt:link/tet:te
+ /tet:te-link-attributes
+ /tet:interface-switching-capability/tet:max-lsp-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw bandwidth-profile-name? string
+ +--rw bandwidth-profile-type? identityref
+ +--rw CIR? uint64
+ +--rw EIR? uint64
+ +--rw CBS? uint64
+ +--rw EBS? uint64
+ augment /nw:networks/nw:network/nt:link/tet:te
+ /tet:te-link-attributes/tet:max-link-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nt:link/tet:te
+ /tet:te-link-attributes/tet:max-resv-link-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nt:link/tet:te
+ /tet:te-link-attributes/tet:unreserved-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nt:link/tet:te
+ /tet:information-source-entry
+ /tet:interface-switching-capability/tet:max-lsp-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--ro bandwidth-profile-name? string
+ +--ro bandwidth-profile-type? identityref
+ +--ro CIR? uint64
+ +--ro EIR? uint64
+ +--ro CBS? uint64
+ +--ro EBS? uint64
+ augment /nw:networks/nw:network/nt:link/tet:te
+ /tet:information-source-entry/tet:max-link-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--ro packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nt:link/tet:te
+ /tet:information-source-entry/tet:max-resv-link-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--ro packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nt:link/tet:te
+ /tet:information-source-entry/tet:unreserved-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--ro packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/tet:te/tet:templates/tet:link-template
+ /tet:te-link-attributes
+ /tet:interface-switching-capability/tet:max-lsp-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw bandwidth-profile-name? string
+ +--rw bandwidth-profile-type? identityref
+ +--rw CIR? uint64
+ +--rw EIR? uint64
+ +--rw CBS? uint64
+ +--rw EBS? uint64
+ augment /nw:networks/tet:te/tet:templates/tet:link-template
+ /tet:te-link-attributes/tet:max-link-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/tet:te/tet:templates/tet:link-template
+ /tet:te-link-attributes/tet:max-resv-link-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/tet:te/tet:templates/tet:link-template
+ /tet:te-link-attributes/tet:unreserved-bandwidth
+ /tet:te-bandwidth/tet:technology:
+ +--:(packet)
+ +--rw packet-bandwidth? te-packet-types:bandwidth-kbps
+ augment /nw:networks/nw:network/nw:network-types/tet:te-topology
+ /tet-pkt:packet:
+ +--rw mpls-topology!
+ augment /nw:networks/nw:network/nt:link/tet:te:
+ +--rw load-balancing-type? mte-types:load-balancing-type
+ augment /nw:networks/nw:network/nw:node/nt:termination-point
+ /tet:te:
+ +--ro uhp-incapable? empty
diff --git a/ietf-te-mpls-topology.yang b/ietf-te-mpls-topology.yang
new file mode 100644
index 0000000..eabe3f4
--- /dev/null
+++ b/ietf-te-mpls-topology.yang
@@ -0,0 +1,456 @@
+module ietf-te-mpls-topology {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls-topology";
+
+ prefix "tet-mpls";
+
+ import ietf-network {
+ prefix "nw";
+ }
+
+ import ietf-network-topology {
+ prefix "nt";
+ }
+
+ import ietf-te-topology {
+ prefix "tet";
+ }
+
+ import ietf-te-topology-packet {
+ prefix "tet-pkt";
+ }
+
+ import ietf-mpls-te-types {
+ prefix "mte-types";
+ }
+
+ organization
+ "Internet Engineering Task Force (IETF) TEAS WG";
+ contact
+ "WG Web:
+ WG List:
+
+ Editor: Italo Busi
+
+
+ Editor: Haomian Zheng
+
+
+ Editor: Aihua Guo
+
+
+ Editor: Xufeng Liu
+ ";
+
+ description
+ "This module defines technology-specific MPLS-TE topology
+ data model.
+
+ Copyright (c) 2020 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
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2020-07-13 {
+ description
+ "Initial Version";
+ reference
+ "draft-busizheng-teas-yang-te-mpls-topology";
+ }
+
+ /*
+ * Augment TE bandwidth (to be moved to te-topology-packet?)
+ */
+
+ augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+ + "tet:te/"
+ + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment maximum LSP TE bandwidth for the link termination
+ point (LTP).";
+ case packet {
+ uses mte-types:te-packet-path-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints of the TE node
+ connectivity matrices.";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints of the
+ connectivity matrix entry.";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints of the TE node
+ connectivity matrices information source.";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints of the
+ connectivity matrix entry information source";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:client-layer-adaptation/tet:switching-capability/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment client TE bandwidth of the tunnel termination point
+ (TTP)";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/tet:path-constraints/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints for the TTP
+ Local Link Connectivities.";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/tet:path-constraints/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints for the TTP
+ Local Link Connectivity entry.";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment maximum LSP TE bandwidth for the TE link.";
+ case packet {
+ uses mte-types:te-packet-path-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment maximum TE bandwidth for the TE link";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment maximum reservable TE bandwidth for the TE link";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment unreserved TE bandwidth for the TE Link";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:interface-switching-capability/"
+ + "tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment maximum LSP TE bandwidth for the TE link
+ information source";
+ case packet {
+ uses mte-types:te-packet-path-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment maximum TE bandwidth for the TE link
+ information source";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment maximum reservable TE bandwidth for the TE link
+ information-source";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet" {
+ description
+ "Augmentation parameters apply only for networks with
+ Packet TE topology type.";
+ }
+ description
+ "Augment unreserved TE bandwidth of the TE link
+ information source";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:interface-switching-capability/"
+ + "tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ description
+ "Augment maximum LSP TE bandwidth of the TE link
+ template";
+ case packet {
+ uses mte-types:te-packet-path-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ description
+ "Augment maximum TE bandwidth the TE link template";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ description
+ "Augment maximum reservable TE bandwidth for the TE link
+ template.";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ description
+ "Augment unreserved TE bandwidth the TE link template";
+ case packet {
+ uses mte-types:te-packet-link-bandwidth;
+ }
+ }
+
+ /*
+ * Augmentations
+ */
+
+ augment "/nw:networks/nw:network/nw:network-types/"
+ + "tet:te-topology/tet-pkt:packet" {
+ description
+ "Augment network types to include MPLS-TE Topology Type";
+ container mpls-topology {
+ presence
+ "Indicates an MPLS-TE Topology Type.";
+ description
+ "Its presence indicates an MPLS-TE Topology";
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te" {
+ when "../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet/tet-mpls:mpls-topology" {
+ description
+ "Augment MPLS-TE Topology.";
+ }
+ description
+ "Augment TE Link.";
+
+ leaf load-balancing-type {
+ type mte-types:load-balancing-type;
+ default 'per-flow';
+ description
+ "Indicates the type of load-balancing (per-flow or per-LSP)
+ performed by the bundled TE Link.
+
+ This leaf is not present when the TE Link is not bundled.";
+ } // leaf load-balancing-type
+ }
+
+ augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+ + "tet:te" {
+ when "../../../nw:network-types/tet:te-topology/"
+ + "tet-pkt:packet/tet-mpls:mpls-topology" {
+ description "Augment MPLS-TE Topology.";
+ }
+ description "Augment LTP.";
+
+ leaf uhp-incapable {
+ type empty;
+ config false;
+ description
+ "When present, indicates that the LTP is not capable to
+ support Ultimate Hop Popping (UHP).";
+ } // leaf uhp-incapable
+ }
+}
\ No newline at end of file
diff --git a/ietf-te-mpls.yang b/ietf-te-mpls.yang
index eb9b6d4..607d049 100644
--- a/ietf-te-mpls.yang
+++ b/ietf-te-mpls.yang
@@ -25,6 +25,10 @@ module ietf-te-mpls {
Common Traffic Engineering Types";
}
+ import ietf-mpls-te-types {
+ prefix "mte-types";
+ }
+
/* Import TE generic types */
import ietf-te-types {
prefix te-types;
@@ -95,7 +99,7 @@ module ietf-te-mpls {
// RFC Ed.: update the date below with the date of RFC publication
// and remove this note.
- revision "2020-03-09" {
+ revision "2020-07-03" {
description "Latest update to MPLS TE YANG module.";
reference
"RFCXXXX: A YANG Data Model for MPLS-TE Tunnels and LSP(s)";
@@ -108,6 +112,7 @@ module ietf-te-mpls {
}
/* MPLS TE tunnel properties*/
+
grouping tunnel-igp-shortcut-config {
description "TE tunnel IGP shortcut configs";
leaf shortcut-eligible {
@@ -190,6 +195,7 @@ module ietf-te-mpls {
}
/*** End of MPLS TE tunnel configuration/state */
+
grouping te-lsp-auto-bandwidth-config {
description
"Configuration parameters related to autobandwidth";
@@ -290,6 +296,7 @@ module ietf-te-mpls {
events needed to trigger an underflow adjustment";
}
}
+
grouping te-tunnel-bandwidth-config {
description
"Configuration parameters related to bandwidth for a tunnel";
@@ -323,16 +330,17 @@ module ietf-te-mpls {
grouping te-tunnel-bandwidth-state {
description
- "Operational state parameters relating to bandwidth for a tunnel";
+ "Operational state parameters relating to bandwidth
+ for a tunnel";
leaf signaled-bandwidth {
type te-packet-types: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.";
+ "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.";
}
}
@@ -403,13 +411,33 @@ module ietf-te-mpls {
}
}
-
+ grouping te-mpls-tunnel-attributes {
+ description
+ "MPLS-TE Tunnel attributes.";
+
+ leaf load-balancing-type {
+ type mte-types:load-balancing-type;
+ default 'per-flow';
+ description
+ "Indicates the type of load-balancing (per-flow or per-LSP)
+ that could be performed by the bundled TE Links along the
+ path.";
+ }
+ leaf uhp-required {
+ type empty;
+ description
+ "Indicates whether Ultimate Hop Popping (UHP) is required
+ for the MPLS-TE LSP.";
+ }
+ } // grouping te-mpls-path-constraints
/**
* MPLS TE augmentations
*/
+
augment "/te:te/te-dev:performance-thresholds" {
- uses te-packet-types:performance-metrics-throttle-container-packet;
+ uses "te-packet-types:performance-metrics-throttle-" +
+ "container-packet";
description
"Performance parameters configurable thresholds";
}
@@ -423,8 +451,12 @@ module ietf-te-mpls {
uses tunnel-igp-shortcuts;
uses tunnel-forwarding-adjacency;
uses tunnel-bandwidth_top;
+ uses te-mpls-tunnel-attributes;
}
+ /* MPLS TE path augmentations */
+
+
/* MPLS TE LSPs augmentations */
augment "/te:te/te:tunnels/te:tunnel/" +
"te:primary-paths/te:primary-path" {
@@ -469,4 +501,58 @@ module ietf-te-mpls {
LSP";
uses te-packet-types:performance-metrics-attributes-packet;
}
-}
+
+ /*
+ * Augment TE label.
+ */
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/"
+ + "te:path-properties/te:path-route-objects/"
+ + "te:path-route-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description "MPLS-TE label.";
+ case mpls {
+ uses mte-types:te-mpls-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:lsps/te:lsp/"
+ + "te:path-properties/te:path-route-objects/"
+ + "te:path-route-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description "MPLS-TE label.";
+ case mpls {
+ uses mte-types:te-mpls-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/"
+ + "te:path-properties/te:path-route-objects/"
+ + "te:path-route-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description "MPLS-TE label.";
+ case mpls {
+ uses mte-types:te-mpls-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:lsps/te:lsp/"
+ + "te:path-properties/te:path-route-objects/"
+ + "te:path-route-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description "MPLS-TE label.";
+ case mpls {
+ uses mte-types:te-mpls-label-hop;
+ }
+ }
+}
\ No newline at end of file