From 8bd083341cdceb3e3ceabadcc0c787d1d21631a1 Mon Sep 17 00:00:00 2001 From: italobusi Date: Tue, 7 Apr 2020 21:24:13 +0200 Subject: [PATCH 01/17] Updated ietf-te-mpls.yang Aligned with the master branch --- ietf-te-mpls-topology.yang | 415 +++++++++++++++++++++++++++++++++++++ ietf-te-mpls.yang | 278 ++++++++++++++++++++++++- 2 files changed, 690 insertions(+), 3 deletions(-) create mode 100644 ietf-te-mpls-topology.yang diff --git a/ietf-te-mpls-topology.yang b/ietf-te-mpls-topology.yang new file mode 100644 index 0000000..647ea7f --- /dev/null +++ b/ietf-te-mpls-topology.yang @@ -0,0 +1,415 @@ +module ietf-te-mpls-topology { + //yang-version 1.1; + + namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-te-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 { + prefix "tet-pkt"; + } + + import ietf-te-topology-packet { + prefix "tet-pkt"; + } + + /* + * To be added when Identities and/or Type Definitions + * are moved to te-packet-types + * + import ietf-te-packet-types { + prefix "te-pkt-types"; + } + * + */ + + organization + "Internet Engineering Task Force (IETF) TEAS WG"; + contact + " + WG List: + + ID-draft editor: + Italo Busi (italo.busi@huawei.com); + Haomian Zheng (zhenghaomian@huawei.com); + "; + + description + "This module defines technology-specific MPLS-TE topology + data model."; + + revision 2019-10-11 { + description + "version -00 as an I-D"; + reference + "New draft to be submitted"; + } + + /* + * 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 (to be moved to te-packet-types?) + */ + + typedef ecmp-mode { + description + "The ECMP behavior supported by an MPLS-TE LTP"; + type enumeration { + enum unconstrained { + description + "The ECMP behavior is fully controlled by the LTP."; + } + enum disabled { + description + "ECMP is disabled on every LSPs transmitted + over the LTP Outgoing Link."; + } + enum disabled-per-lsp { + description + "ECMP can be disabled on each LSPs transmitted + over the LTP Outgoing Link."; + } + } + } + + typedef php-mode { + description + "The PHP behavior supported by an MPLS-TE LTP"; + type enumeration { + enum unconstrained { + description + "The PHP behavior is fully controlled by the LTP."; + } + enum disabled { + description + "PHP is disabled for every LSPs received + over the LTP Incoming Link."; + } + enum disabled-per-lsp { + description + "ECMP can be disabled on each LSPs received + over the LTP Incoming Link."; + } + } + } + + typedef gal-mode { + description + "The GAL behavior supported by an MPLS-TE LTP"; + type enumeration { + enum disabled { + description + "The LTP does not process GAL."; + } + enum receive-only { + description + "The LTP can only process GAL for the packets received + from the LTP Incoming Link."; + } + enum bidirectional { + description + "The LTP can only process GAL for both the packets received + from the LTP Incoming Link and transmitted + over the LTP Outgoing Link."; + } + } + } + + grouping te-packet-path-bandwidth { + description + "Path bandwidth for MPLS-TP. "; + 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 + "Bandwidth for MPLS-TP. "; + leaf mpls-tp-bandwidth { + type uint64{ + range "0..10000000000"; + } + units "Kbps"; + description + "Available bandwith value expressed in kilobits per + second"; + } + } + + /* + * Groupings + */ + + grouping mpls-te-ltp-attributes { + description + "MPLS-TE LTP attributes"; + + leaf ecmp-mode { + type link-ecmp-mode; + description + "The ECMP mode supported by the MPLS-TE LTP."; + } + leaf php-mode { + type link-php-mode; + description + "The PHP mode supported by the MPLS-TE LTP."; + } + leaf gal-mode { + type link-gal-mode; + description + "The GAL mode supported by the MPLS-TE LTP."; + } + } + + /* + * Augmentations (to be moved to te-topology-packet) + */ + + 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-topology" { + description "Augment Packet TE bandwidth."; + } + description "TE Packet bandwidth."; + case packet { + uses te-packet-path-bandwidth; + } + } + + 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-topology" { + description "Augment Packet TE bandwidth."; + } + description "TE Packet bandwidth."; + case packet { + uses 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-topology" { + description "Augment Packet TE bandwidth."; + } + description "TE Packet bandwidth."; + case packet { + uses 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-topology" { + description "Augment Packet TE bandwidth."; + } + description "TE Packet bandwidth."; + case packet { + uses 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-topology" { + description "Augment Packet TE bandwidth."; + } + description "TE Packet bandwidth."; + case packet { + uses te-packet-link-bandwidth; + } + } + + /* + * Augmentations + */ + + augment "/nw:networks/nw:network/nw:network-types/" + + "tet:te-topology/tet-pkt:packet-topology" { + 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/nw:node/nt:termination-point/" + + "tet:te" { + when "../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { + description "Augment MPLS-TE Topology."; + } + description "Augment Link with MPLS-TE specific attributes"; + + choice mpls-te-profile { + description + "Type of MPLS-TE profile supported by the MPLS-TE Link"; + + case mpls-tp { + container mpls-tp-attributes { + presence + "Indicates an MPLS-TE Link which supports only + the MPLS-TP profile where: + - the ecmp-mode must be 'disabled'; + - the php-mode must be 'disabled'; + - the gal-mode must be either 'receive-only' + or 'bidirectional' (by default). + "; + uses mpls-te-ltp-attributes { + refine ecmp-mode { + description "ECMP must be disabled on MPLS-TP LTPs"; + default "disabled"; + must + 'ecmp-mode = "disabled"'; + } + refine php-mode { + description "PHP must be disabled on MPLS-TP LTPs"; + default "disabled"; + must + 'php-mode = "disabled"'; + } + refine gal-mode { + default "bidirectional"; + must + 'gal-mode = "bidirectional" or '+ + 'gal-mode = "receive-only"'; + description + "GAL processing must be supported on MPLS-TP LTPs."; + } + } + } + } + + case generic { + container mpls-te-attributes { + description + "It contains the set of attributes to report + the behavior of a generic MPLS-TE LTP about: + - ecmp-mode: 'unconstrained' by default; + - php-mode: 'unconstrained' by default; + - gal-mode: 'disabled' by default. + "; + uses mpls-te-ltp-attributes { + refine ecmp-mode { + description + "ECMP is unconstrained by default on MPLS-TE LTPs"; + default "unconstrained"; + } + refine php-mode { + description + "PHP is unconstrained by default on MPLS-TE LTPs"; + default "unconstrained"; + } + refine gal-mode { + description + "GAL processing is disabled by default + on MPLS-TE LTPs"; + default "disabled"; + } + } + } + } + } + } +} diff --git a/ietf-te-mpls.yang b/ietf-te-mpls.yang index eb9b6d4..350d3ad 100644 --- a/ietf-te-mpls.yang +++ b/ietf-te-mpls.yang @@ -95,19 +95,104 @@ 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-04-07" { description "Latest update to MPLS TE YANG module."; reference "RFCXXXX: A YANG Data Model for MPLS-TE Tunnels and LSP(s)"; } + /* MPLS TE Identities */ identity tunnel-action-resetup { base te:tunnel-actions-type; description "Resetup tunnel action type"; + + /* + * Type Definitions + */ + + typedef lsp-ecmp-mode { + description + "The ECMP behavior requested for an MPLS-TE LSP"; + type enumeration { + enum allowed { + description + "ECMP is allowed for this MPLS-TE LSP. + Path computation can select any MPLS-TE Link + irrespectively of the ECMP modes + supported by their LTPs + "; + } + enum disabled { + description + "ECMP is not allowed for this MPLS-TE LSP. + Path computation can select only MPLS-TE Links + whose LTPs has either ECMP disabled or allows ECMP + to be disabled on LSP basis. In the latter case, + ECMP shall be disabled for this MPLS-TE LPS. + "; + } + } + } + + typedef lsp-php-mode { + description + "The PHP behavior requested for an MPLS-TE LSP"; + type enumeration { + enum allowed { + description + "PHP is allowed for this MPLS-TE LSP. + Path computation can select any MPLS-TE Link + irrespectively of the PHP modes + supported by their LTPs + "; + } + enum disabled { + description + "PHP is not allowed for this MPLS-TE LSP. + Path computation can select only MPLS-TE Links + whose LTPs has either PHP disabled or allows PHP + to be disabled on LSP basis. In the latter case, + PHP shall be disabled for this MPLS-TE LSP. + "; + } + } + } + + typedef lsp-gal-mode { + description + "The GAL capabilities requested for an MPLS-TE LSP"; + type enumeration { + enum not-required { + description + "GAL processing is not required for this MPLS-TE LSP. + Path computation can select any MPLS-TE Link + irrespectively of the GAL capabilities + supported by their LTPs. + "; + } + enum required { + description + "GAL processing is required for this MPLS-TE LSP. + Path computation can select only MPLS-TE Links + whose LTPs are capable to process GAL either + in 'receive-only' or in 'bidirectional' mode. + "; + } + enum bidirectional { + description + "Bidirectional GAL processing is required + for this MPLS-TE LSP. + Path computation can select only MPLS-TE Links + whose LTPs are capable to process GAL + in 'bidirectional' mode. + "; + } + } } /* MPLS TE tunnel properties*/ + grouping tunnel-igp-shortcut-config { description "TE tunnel IGP shortcut configs"; leaf shortcut-eligible { @@ -190,6 +275,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 +376,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"; @@ -403,11 +490,134 @@ module ietf-te-mpls { } } + grouping mpls-te-lsp-attributes { + description + "MPLS-TE LSP attributes"; + + leaf ecmp-mode { + type lsp-ecmp-mode; + description + "Represents whether ECMP is allowed or + should be disabled for the MPLS-TE LSPs."; + } + leaf php-mode { + type lsp-php-mode; + description + "Represents whether PHP is allowed or + should be disabled for the MPLS-TE LSPs."; + } + leaf gal-mode { + type lsp-gal-mode; + description + "Represents which GAL modes should be supported + by the MPLS-TE LSP hops."; + } + } + + grouping mpls-te-path-constraints { + description + "Path constraints for MPLS-TE LSP attributes"; + + choice mpls-te-profile { + description + "Type of MPLS-TE profile requested for the MPLS-TE LSP"; + + case mpls-tp { + container mpls-tp-attributes { + presence + "Indicates the request for an MPLS-TP LSP with: + - the ecmp-mode must be 'disabled'; + - the php-mode must be 'disabled'; + - the gal-mode must be either 'receive-only' + or 'bidirectional' (by default). + "; + uses mpls-te-lsp-attributes { + refine ecmp-mode { + description "ECMP must be disabled on MPLS-TP LTPs"; + default "disabled"; + must + 'ecmp-mode = "disabled"'; + } + refine php-mode { + description "PHP must be disabled on MPLS-TP LTPs"; + default "disabled"; + must + 'php-mode = "disabled"'; + } + refine gal-mode { + default "bidirectional"; + must + 'gal-mode = "bidirectional" or '+ + 'gal-mode = "required"'; + description + "GAL processing must be supported on MPLS-TP LTPs."; + } + } + } + } + + case generic { + container mpls-te-lsp-attributes { + description + "Requests for an MPLS-TE LSP technology-specific + path constraints/optimizations: + - ecmp-mode: 'allowed' by default; + - php-mode: 'allowed' by default; + - gal-mode: 'not-required' by default. + "; + uses mpls-te-ltp-attributes { + refine ecmp-mode { + description + "ECMP is allowed by default on MPLS-TE LTPs"; + default "allowed"; + } + refine php-mode { + description + "ECMP is allowed by default on MPLS-TE LTPs"; + default "unconstrained"; + } + refine gal-mode { + description + "GAL processing is not required by default + on MPLS-TE LTPs"; + default "not-required"; + } + } + } + } + } + } + + grouping mpls-te-path-label { + description + "Path Label for MPLS-TE. "; + choice mpls-hop-type { + description + "Whether the label-hop is a normal MPLS-TE + label-hop or a PHP hop"; + + case php { + leaf mpls-php { + type empty; + description + "MPLS-TE PHP Label Hop."; + } + } + case label-hop { + leaf mpls-label { + type rt-types:mpls-label-general-use; + description + "MPLS-TE Label Hop."; + } + } + } + } /** * MPLS TE augmentations */ + augment "/te:te/te-dev:performance-thresholds" { uses te-packet-types:performance-metrics-throttle-container-packet; description @@ -425,12 +635,19 @@ module ietf-te-mpls { uses tunnel-bandwidth_top; } + /* MPLS TE path augmentations */ + augment "/te:te/te:tunnels/te:tunnel/" + + "te:primary-paths/te:primary-path" { + description "MPLS TE path constraints"; + uses mpls-te-path-constraints; + } + /* MPLS TE LSPs augmentations */ augment "/te:te/te:tunnels/te:tunnel/" + "te:primary-paths/te:primary-path" { when "/te:te/te:tunnels/te:tunnel" + "/te:primary-paths/te:primary-path" + - "/te:signaling-type = 'te-types:path-setup-static'" { + "/te:path-setup-protocol = 'te-types:path-setup-static'" { description "When the path is statically provisioned"; } @@ -445,7 +662,7 @@ module ietf-te-mpls { "te:secondary-paths/te:secondary-path" { when "/te:te/te:tunnels/te:tunnel" + "/te:secondary-paths/te:secondary-path/" + - "te:signaling-type = 'te-types:path-setup-static'" { + "te:path-setup-protocol = 'te-types:path-setup-static'" { description "When the path is statically provisioned"; } @@ -469,4 +686,59 @@ 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-computed-route-object/te:type/te:label/" + + "te:label-hop/te:te-label/te:technology" { + description "MPLS-TE label."; + case mpls { + uses mpls-te-path-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-computed-route-object/te:type/te:label/" + + "te:label-hop/te:te-label/te:technology" { + description "MPLS-TE label."; + case mpls { + uses mpls-te-path-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-computed-route-object/te:type/te:label/" + + "te:label-hop/te:te-label/te:technology" { + description "MPLS-TE label."; + case mpls { + uses mpls-te-path-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-computed-route-object/te:type/te:label/" + + "te:label-hop/te:te-label/te:technology" { + description "MPLS-TE label."; + case mpls { + uses mpls-te-path-label; + } + } } + From 5784867e80affdbb324f88f8d2054ea504005c29 Mon Sep 17 00:00:00 2001 From: italobusi Date: Thu, 25 Jun 2020 12:21:50 +0200 Subject: [PATCH 02/17] Proposal update Proposal updated based on the discussion in the 2020-06-16 TEAS call: https://github.com/tsaad-dev/te/issues/60 --- ietf-mpls-te-types.yang | 207 +++++++++++++++++++++ ietf-te-mpls-topology.yang | 366 ++++++++----------------------------- ietf-te-mpls.yang | 226 ++--------------------- 3 files changed, 306 insertions(+), 493 deletions(-) create mode 100644 ietf-mpls-te-types.yang diff --git a/ietf-mpls-te-types.yang b/ietf-mpls-te-types.yang new file mode 100644 index 0000000..f2592b6 --- /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"; + + } + + organization + "Internet Engineering Task Force (IETF) TEAS WG"; + contact + " + WG List: + + ID-draft editor: + Italo Busi (italo.busi@huawei.com); + Haomian Zheng (zhenghaomian@huawei.com); + "; + + description + "This module defines technology-specific MPLS-TP types + data model."; + + revision 2020-06-25 { + description + "version -00 as an I-D"; + reference + "draft-busizheng-teas-mpls-tp-yang"; + } + +/* + * 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 { + description + "The type of load balancing used on bundled links."; + type enumeration { + enum per-flow { + description + "The load-balancing algorithm ensures that packets for + the same flow are forwarded on the same component link, + while packets for different flows can be forwarded on + different component links. + + Packets for different flows within the same LSP can be + forwarded on different component links."; + } + enum per-lsps { + description + "The load-balancing algorithm ensures that packets for + the same LSP are forwarded on the same component link, + while packets for different LSPs can be forwarded on + different component links. + + Packets for different flows within the same LSP are + forwarded on the same component link."; + } + } + } // typedef load-balancing-type + +/* + * Groupings (to be moved to te-packet-types?) + */ + + grouping te-packet-path-bandwidth { + description + "Path bandwidth for MPLS-TP. "; + 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 + "Bandwidth for MPLS-TP. "; + leaf mpls-tp-bandwidth { + type uint64{ + range "0..10000000000"; + } + units "Kbps"; + description + "Available bandwith value expressed in kilobits per + second"; + } + } + +/* + * Groupings (MPLS-TE) + */ + + grouping te-mpls-label { + description + "MPLS-TE label. "; + leaf mpls-label { + type rt-types:mpls-label; + description + "MPLS-TE Label."; + } + } + + grouping mpls-te-path-label { + description + "Path Label for MPLS-TE. "; + + choice mpls-hop-type { + description + "Whether the label-hop is a normal MPLS-TE + label-hop or a PHP hop"; + + case php { + leaf mpls-php { + type empty; + description + "MPLS-TE PHP Label Hop."; + } + } + case label-hop { + leaf mpls-label { + type rt-types:mpls-label-general-use; + description + "MPLS-TE Label Hop."; + } + } + } + } // grouping mpls-te-path-label +} \ No newline at end of file diff --git a/ietf-te-mpls-topology.yang b/ietf-te-mpls-topology.yang index 647ea7f..782f9d3 100644 --- a/ietf-te-mpls-topology.yang +++ b/ietf-te-mpls-topology.yang @@ -1,7 +1,7 @@ module ietf-te-mpls-topology { - //yang-version 1.1; + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls-topology"; - namespace "urn:ietf:params:xml:ns:yang:ietf-mpls-te-topology"; prefix "tet-mpls"; import ietf-network { @@ -16,23 +16,13 @@ module ietf-te-mpls-topology { prefix "tet"; } - import ietf-te-topology { - prefix "tet-pkt"; - } - import ietf-te-topology-packet { prefix "tet-pkt"; } - /* - * To be added when Identities and/or Type Definitions - * are moved to te-packet-types - * - import ietf-te-packet-types { - prefix "te-pkt-types"; + import ietf-mpls-te-types { + prefix "mte-types"; } - * - */ organization "Internet Engineering Task Force (IETF) TEAS WG"; @@ -49,208 +39,16 @@ module ietf-te-mpls-topology { "This module defines technology-specific MPLS-TE topology data model."; - revision 2019-10-11 { + revision 2020-06-25 { description "version -00 as an I-D"; reference "New draft to be submitted"; } - /* - * 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 (to be moved to te-packet-types?) - */ - - typedef ecmp-mode { - description - "The ECMP behavior supported by an MPLS-TE LTP"; - type enumeration { - enum unconstrained { - description - "The ECMP behavior is fully controlled by the LTP."; - } - enum disabled { - description - "ECMP is disabled on every LSPs transmitted - over the LTP Outgoing Link."; - } - enum disabled-per-lsp { - description - "ECMP can be disabled on each LSPs transmitted - over the LTP Outgoing Link."; - } - } - } - - typedef php-mode { - description - "The PHP behavior supported by an MPLS-TE LTP"; - type enumeration { - enum unconstrained { - description - "The PHP behavior is fully controlled by the LTP."; - } - enum disabled { - description - "PHP is disabled for every LSPs received - over the LTP Incoming Link."; - } - enum disabled-per-lsp { - description - "ECMP can be disabled on each LSPs received - over the LTP Incoming Link."; - } - } - } - - typedef gal-mode { - description - "The GAL behavior supported by an MPLS-TE LTP"; - type enumeration { - enum disabled { - description - "The LTP does not process GAL."; - } - enum receive-only { - description - "The LTP can only process GAL for the packets received - from the LTP Incoming Link."; - } - enum bidirectional { - description - "The LTP can only process GAL for both the packets received - from the LTP Incoming Link and transmitted - over the LTP Outgoing Link."; - } - } - } - - grouping te-packet-path-bandwidth { - description - "Path bandwidth for MPLS-TP. "; - 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 - "Bandwidth for MPLS-TP. "; - leaf mpls-tp-bandwidth { - type uint64{ - range "0..10000000000"; - } - units "Kbps"; - description - "Available bandwith value expressed in kilobits per - second"; - } - } - - /* - * Groupings - */ - - grouping mpls-te-ltp-attributes { - description - "MPLS-TE LTP attributes"; - - leaf ecmp-mode { - type link-ecmp-mode; - description - "The ECMP mode supported by the MPLS-TE LTP."; - } - leaf php-mode { - type link-php-mode; - description - "The PHP mode supported by the MPLS-TE LTP."; - } - leaf gal-mode { - type link-gal-mode; - description - "The GAL mode supported by the MPLS-TE LTP."; - } - } - - /* - * Augmentations (to be moved to te-topology-packet) - */ +/* + * Augmentations (to be moved to te-topology-packet?) + */ augment "/nw:networks/nw:network/nt:link/tet:te/" + "tet:te-link-attributes/" @@ -262,7 +60,7 @@ module ietf-te-mpls-topology { } description "TE Packet bandwidth."; case packet { - uses te-packet-path-bandwidth; + uses mte-types:te-packet-path-bandwidth; } } @@ -275,7 +73,7 @@ module ietf-te-mpls-topology { } description "TE Packet bandwidth."; case packet { - uses te-packet-path-bandwidth; + uses mte-types:te-packet-path-bandwidth; } } @@ -288,7 +86,7 @@ module ietf-te-mpls-topology { } description "TE Packet bandwidth."; case packet { - uses te-packet-link-bandwidth; + uses mte-types:te-packet-link-bandwidth; } } @@ -301,7 +99,7 @@ module ietf-te-mpls-topology { } description "TE Packet bandwidth."; case packet { - uses te-packet-link-bandwidth; + uses mte-types:te-packet-link-bandwidth; } } @@ -314,7 +112,7 @@ module ietf-te-mpls-topology { } description "TE Packet bandwidth."; case packet { - uses te-packet-link-bandwidth; + uses mte-types:te-packet-link-bandwidth; } } @@ -334,82 +132,78 @@ module ietf-te-mpls-topology { } } - augment "/nw:networks/nw:network/nw:node/nt:termination-point/" - + "tet:te" { +/* + * Where to add load-balancing-type for bundled Links? + */ + + augment "/nw:networks/nw:network/nt:link/tet:te" { when "../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { - description "Augment MPLS-TE Topology."; + + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { + description + "Augment MPLS-TE Topology."; } - description "Augment Link with MPLS-TE specific attributes"; + 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."; + } // leaf load-balancing-type + } + + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:bundle-stack-level/tet:bundle-stack-level/" + + "tet:bundled-links" { + when "../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { + description + "Augment MPLS-TE Topology."; + } + description + "Augment TE Bundled Links."; + + 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."; + } // leaf load-balancing-type + } - choice mpls-te-profile { + augment "/nw:networks/nw:network/nt:link/tet:te/" + + "tet:bundle-stack-level/tet:component/" + + "tet:component-links" { + when "../../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { description - "Type of MPLS-TE profile supported by the MPLS-TE Link"; + "Augment MPLS-TE Topology."; + } + description + "Augment TE Component Links."; - case mpls-tp { - container mpls-tp-attributes { - presence - "Indicates an MPLS-TE Link which supports only - the MPLS-TP profile where: - - the ecmp-mode must be 'disabled'; - - the php-mode must be 'disabled'; - - the gal-mode must be either 'receive-only' - or 'bidirectional' (by default). - "; - uses mpls-te-ltp-attributes { - refine ecmp-mode { - description "ECMP must be disabled on MPLS-TP LTPs"; - default "disabled"; - must - 'ecmp-mode = "disabled"'; - } - refine php-mode { - description "PHP must be disabled on MPLS-TP LTPs"; - default "disabled"; - must - 'php-mode = "disabled"'; - } - refine gal-mode { - default "bidirectional"; - must - 'gal-mode = "bidirectional" or '+ - 'gal-mode = "receive-only"'; - description - "GAL processing must be supported on MPLS-TP LTPs."; - } - } - } - } + 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."; + } // leaf load-balancing-type + } - case generic { - container mpls-te-attributes { - description - "It contains the set of attributes to report - the behavior of a generic MPLS-TE LTP about: - - ecmp-mode: 'unconstrained' by default; - - php-mode: 'unconstrained' by default; - - gal-mode: 'disabled' by default. - "; - uses mpls-te-ltp-attributes { - refine ecmp-mode { - description - "ECMP is unconstrained by default on MPLS-TE LTPs"; - default "unconstrained"; - } - refine php-mode { - description - "PHP is unconstrained by default on MPLS-TE LTPs"; - default "unconstrained"; - } - refine gal-mode { - description - "GAL processing is disabled by default - on MPLS-TE LTPs"; - default "disabled"; - } - } - } - } + augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + + "tet:te" { + when "../../../nw:network-types/tet:te-topology/" + + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { + description "Augment MPLS-TE Topology."; } + description "Augment LTP."; + + leaf uhp-incapable { + type empty; + 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 350d3ad..9fa8ebf 100644 --- a/ietf-te-mpls.yang +++ b/ietf-te-mpls.yang @@ -95,7 +95,7 @@ module ietf-te-mpls { // RFC Ed.: update the date below with the date of RFC publication // and remove this note. - revision "2020-04-07" { + revision "2020-06-25" { description "Latest update to MPLS TE YANG module."; reference "RFCXXXX: A YANG Data Model for MPLS-TE Tunnels and LSP(s)"; @@ -107,90 +107,6 @@ module ietf-te-mpls { base te:tunnel-actions-type; description "Resetup tunnel action type"; - /* - * Type Definitions - */ - - typedef lsp-ecmp-mode { - description - "The ECMP behavior requested for an MPLS-TE LSP"; - type enumeration { - enum allowed { - description - "ECMP is allowed for this MPLS-TE LSP. - Path computation can select any MPLS-TE Link - irrespectively of the ECMP modes - supported by their LTPs - "; - } - enum disabled { - description - "ECMP is not allowed for this MPLS-TE LSP. - Path computation can select only MPLS-TE Links - whose LTPs has either ECMP disabled or allows ECMP - to be disabled on LSP basis. In the latter case, - ECMP shall be disabled for this MPLS-TE LPS. - "; - } - } - } - - typedef lsp-php-mode { - description - "The PHP behavior requested for an MPLS-TE LSP"; - type enumeration { - enum allowed { - description - "PHP is allowed for this MPLS-TE LSP. - Path computation can select any MPLS-TE Link - irrespectively of the PHP modes - supported by their LTPs - "; - } - enum disabled { - description - "PHP is not allowed for this MPLS-TE LSP. - Path computation can select only MPLS-TE Links - whose LTPs has either PHP disabled or allows PHP - to be disabled on LSP basis. In the latter case, - PHP shall be disabled for this MPLS-TE LSP. - "; - } - } - } - - typedef lsp-gal-mode { - description - "The GAL capabilities requested for an MPLS-TE LSP"; - type enumeration { - enum not-required { - description - "GAL processing is not required for this MPLS-TE LSP. - Path computation can select any MPLS-TE Link - irrespectively of the GAL capabilities - supported by their LTPs. - "; - } - enum required { - description - "GAL processing is required for this MPLS-TE LSP. - Path computation can select only MPLS-TE Links - whose LTPs are capable to process GAL either - in 'receive-only' or in 'bidirectional' mode. - "; - } - enum bidirectional { - description - "Bidirectional GAL processing is required - for this MPLS-TE LSP. - Path computation can select only MPLS-TE Links - whose LTPs are capable to process GAL - in 'bidirectional' mode. - "; - } - } - } - /* MPLS TE tunnel properties*/ grouping tunnel-igp-shortcut-config { @@ -490,129 +406,25 @@ module ietf-te-mpls { } } - grouping mpls-te-lsp-attributes { - description - "MPLS-TE LSP attributes"; - - leaf ecmp-mode { - type lsp-ecmp-mode; - description - "Represents whether ECMP is allowed or - should be disabled for the MPLS-TE LSPs."; - } - leaf php-mode { - type lsp-php-mode; - description - "Represents whether PHP is allowed or - should be disabled for the MPLS-TE LSPs."; - } - leaf gal-mode { - type lsp-gal-mode; - description - "Represents which GAL modes should be supported - by the MPLS-TE LSP hops."; - } - } - - grouping mpls-te-path-constraints { + grouping te-mpls-path-constraints { description "Path constraints for MPLS-TE LSP attributes"; - - choice mpls-te-profile { + + leaf load-balancing-type { + type mte-types:load-balancing-type; + default 'per-flow'; description - "Type of MPLS-TE profile requested for the MPLS-TE LSP"; - - case mpls-tp { - container mpls-tp-attributes { - presence - "Indicates the request for an MPLS-TP LSP with: - - the ecmp-mode must be 'disabled'; - - the php-mode must be 'disabled'; - - the gal-mode must be either 'receive-only' - or 'bidirectional' (by default). - "; - uses mpls-te-lsp-attributes { - refine ecmp-mode { - description "ECMP must be disabled on MPLS-TP LTPs"; - default "disabled"; - must - 'ecmp-mode = "disabled"'; - } - refine php-mode { - description "PHP must be disabled on MPLS-TP LTPs"; - default "disabled"; - must - 'php-mode = "disabled"'; - } - refine gal-mode { - default "bidirectional"; - must - 'gal-mode = "bidirectional" or '+ - 'gal-mode = "required"'; - description - "GAL processing must be supported on MPLS-TP LTPs."; - } - } - } - } - - case generic { - container mpls-te-lsp-attributes { - description - "Requests for an MPLS-TE LSP technology-specific - path constraints/optimizations: - - ecmp-mode: 'allowed' by default; - - php-mode: 'allowed' by default; - - gal-mode: 'not-required' by default. - "; - uses mpls-te-ltp-attributes { - refine ecmp-mode { - description - "ECMP is allowed by default on MPLS-TE LTPs"; - default "allowed"; - } - refine php-mode { - description - "ECMP is allowed by default on MPLS-TE LTPs"; - default "unconstrained"; - } - refine gal-mode { - description - "GAL processing is not required by default - on MPLS-TE LTPs"; - default "not-required"; - } - } - } - } + "Indicates the type of load-balancing (per-flow or per-LSP) + that could be performed by the bundled TE Links along the + path."; } - } - - grouping mpls-te-path-label { - description - "Path Label for MPLS-TE. "; - - choice mpls-hop-type { + leaf uhp-requested { + type empty; description - "Whether the label-hop is a normal MPLS-TE - label-hop or a PHP hop"; - - case php { - leaf mpls-php { - type empty; - description - "MPLS-TE PHP Label Hop."; - } - } - case label-hop { - leaf mpls-label { - type rt-types:mpls-label-general-use; - description - "MPLS-TE Label Hop."; - } - } + "Indicates whether Ultimate Hop Popping (UHP) is requested + for the MPLS-TE LPS."; } - } + } // grouping te-mpls-path-constraints /** * MPLS TE augmentations @@ -639,7 +451,7 @@ module ietf-te-mpls { augment "/te:te/te:tunnels/te:tunnel/" + "te:primary-paths/te:primary-path" { description "MPLS TE path constraints"; - uses mpls-te-path-constraints; + uses te-mpls-path-constraints; } /* MPLS TE LSPs augmentations */ @@ -700,7 +512,7 @@ module ietf-te-mpls { + "te:label-hop/te:te-label/te:technology" { description "MPLS-TE label."; case mpls { - uses mpls-te-path-label; + uses mte-types:te-mpls-label; } } @@ -712,7 +524,7 @@ module ietf-te-mpls { + "te:label-hop/te:te-label/te:technology" { description "MPLS-TE label."; case mpls { - uses mpls-te-path-label; + uses mte-types:te-mpls-label; } } @@ -725,7 +537,7 @@ module ietf-te-mpls { + "te:label-hop/te:te-label/te:technology" { description "MPLS-TE label."; case mpls { - uses mpls-te-path-label; + uses mte-types:te-mpls-label; } } @@ -737,7 +549,7 @@ module ietf-te-mpls { + "te:label-hop/te:te-label/te:technology" { description "MPLS-TE label."; case mpls { - uses mpls-te-path-label; + uses mte-types:te-mpls-label; } } } From 98587c243df579f2127209ef56683bca6884fa2f Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 18:08:19 +0200 Subject: [PATCH 03/17] Update ietf-mpls-te-types.yang Updated as discussed during the TEAS call on 2020-06-26 --- ietf-mpls-te-types.yang | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/ietf-mpls-te-types.yang b/ietf-mpls-te-types.yang index f2592b6..26d5bea 100644 --- a/ietf-mpls-te-types.yang +++ b/ietf-mpls-te-types.yang @@ -24,7 +24,7 @@ module ietf-mpls-te-types { "This module defines technology-specific MPLS-TP types data model."; - revision 2020-06-25 { + revision 2020-06-26 { description "version -00 as an I-D"; reference @@ -75,19 +75,16 @@ module ietf-mpls-te-types { enum per-flow { description "The load-balancing algorithm ensures that packets for - the same flow are forwarded on the same component link, - while packets for different flows can be forwarded on - different component links. + the same flow are forwarded on the same component link. Packets for different flows within the same LSP can be forwarded on different component links."; } - enum per-lsps { + enum per-top-label { description - "The load-balancing algorithm ensures that packets for - the same LSP are forwarded on the same component link, - while packets for different LSPs can be forwarded on - different component links. + "The load-balancing algorithm ensures that packets, which + are forwarding based on the same label at the top of the + label stack, are forwarded on the same component link. Packets for different flows within the same LSP are forwarded on the same component link."; From bd50c79c14bbe1844d4cf067074b1913e1d5b2f3 Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 18:14:29 +0200 Subject: [PATCH 04/17] Update ietf-te-mpls-topology.yang Updated as discussed during the TEAS call on 2020-06-26 --- ietf-te-mpls-topology.yang | 50 +++++--------------------------------- 1 file changed, 6 insertions(+), 44 deletions(-) diff --git a/ietf-te-mpls-topology.yang b/ietf-te-mpls-topology.yang index 782f9d3..58c93b6 100644 --- a/ietf-te-mpls-topology.yang +++ b/ietf-te-mpls-topology.yang @@ -39,7 +39,7 @@ module ietf-te-mpls-topology { "This module defines technology-specific MPLS-TE topology data model."; - revision 2020-06-25 { + revision 2020-06-26 { description "version -00 as an I-D"; reference @@ -132,10 +132,6 @@ module ietf-te-mpls-topology { } } -/* - * Where to add load-balancing-type for bundled Links? - */ - augment "/nw:networks/nw:network/nt:link/tet:te" { when "../../../nw:network-types/tet:te-topology/" + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { @@ -149,45 +145,10 @@ module ietf-te-mpls-topology { 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."; - } // leaf load-balancing-type - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:bundle-stack-level/tet:bundle-stack-level/" - + "tet:bundled-links" { - when "../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { - description - "Augment MPLS-TE Topology."; - } - description - "Augment TE Bundled Links."; - - 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."; - } // leaf load-balancing-type - } - - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:bundle-stack-level/tet:component/" - + "tet:component-links" { - when "../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { - description - "Augment MPLS-TE Topology."; - } - description - "Augment TE Component Links."; - - 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."; + "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 } @@ -201,6 +162,7 @@ module ietf-te-mpls-topology { leaf uhp-incapable { type empty; + config false; description "When present, indicates that the LTP is not capable to support Ultimate Hop Popping (UHP)."; From 29f5e02a6caae486dba039d119e733ec5814d1fa Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 18:14:37 +0200 Subject: [PATCH 05/17] Update ietf-te-mpls.yang Updated as discussed during the TEAS call on 2020-06-26 --- ietf-te-mpls.yang | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ietf-te-mpls.yang b/ietf-te-mpls.yang index 9fa8ebf..8e4412b 100644 --- a/ietf-te-mpls.yang +++ b/ietf-te-mpls.yang @@ -95,7 +95,7 @@ module ietf-te-mpls { // RFC Ed.: update the date below with the date of RFC publication // and remove this note. - revision "2020-06-25" { + revision "2020-06-26" { description "Latest update to MPLS TE YANG module."; reference "RFCXXXX: A YANG Data Model for MPLS-TE Tunnels and LSP(s)"; @@ -418,11 +418,11 @@ module ietf-te-mpls { that could be performed by the bundled TE Links along the path."; } - leaf uhp-requested { + leaf uhp-required { type empty; description - "Indicates whether Ultimate Hop Popping (UHP) is requested - for the MPLS-TE LPS."; + "Indicates whether Ultimate Hop Popping (UHP) is required + for the MPLS-TE LSP."; } } // grouping te-mpls-path-constraints From 9436b608b59dba8e988666828bf7da3da8764a1c Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 18:20:42 +0200 Subject: [PATCH 06/17] Update ietf-mpls-te-types.yang Fixing an issue with MPLS-TE label definition --- ietf-mpls-te-types.yang | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/ietf-mpls-te-types.yang b/ietf-mpls-te-types.yang index 26d5bea..17ee998 100644 --- a/ietf-mpls-te-types.yang +++ b/ietf-mpls-te-types.yang @@ -166,19 +166,9 @@ module ietf-mpls-te-types { * Groupings (MPLS-TE) */ - grouping te-mpls-label { + grouping te-mpls-label-hop { description - "MPLS-TE label. "; - leaf mpls-label { - type rt-types:mpls-label; - description - "MPLS-TE Label."; - } - } - - grouping mpls-te-path-label { - description - "Path Label for MPLS-TE. "; + "MPLS-TE Label. "; choice mpls-hop-type { description @@ -200,5 +190,5 @@ module ietf-mpls-te-types { } } } - } // grouping mpls-te-path-label + } // grouping te-mpls-label-hop } \ No newline at end of file From 7ef928896af22585354d0342ced3ed10d3b79d40 Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 21:17:33 +0200 Subject: [PATCH 07/17] Create ietf-te-mpls.tree Fixing few issues: - MPLS-TE label augmentations - compilation errors --- ietf-te-mpls.tree | 197 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 ietf-te-mpls.tree diff --git a/ietf-te-mpls.tree b/ietf-te-mpls.tree new file mode 100644 index 0000000..41d84b7 --- /dev/null +++ b/ietf-te-mpls.tree @@ -0,0 +1,197 @@ + +module: ietf-te-mpls + augment /te:te/te-dev:performance-thresholds: + +--rw throttle + +--rw one-way-delay-offset? uint32 + +--rw measure-interval? uint32 + +--rw advertisement-interval? uint32 + +--rw suppression-interval? uint32 + +--rw threshold-out + | +--rw one-way-delay? uint32 + | +--rw one-way-residual-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--rw one-way-available-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--rw one-way-utilized-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--rw two-way-delay? uint32 + | +--rw one-way-min-delay? uint32 + | +--rw one-way-max-delay? uint32 + | +--rw one-way-delay-variation? uint32 + | +--rw one-way-packet-loss? decimal64 + | +--rw two-way-min-delay? uint32 + | +--rw two-way-max-delay? uint32 + | +--rw two-way-delay-variation? uint32 + | +--rw two-way-packet-loss? decimal64 + +--rw threshold-in + | +--rw one-way-delay? uint32 + | +--rw one-way-residual-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--rw one-way-available-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--rw one-way-utilized-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--rw two-way-delay? uint32 + | +--rw one-way-min-delay? uint32 + | +--rw one-way-max-delay? uint32 + | +--rw one-way-delay-variation? uint32 + | +--rw one-way-packet-loss? decimal64 + | +--rw two-way-min-delay? uint32 + | +--rw two-way-max-delay? uint32 + | +--rw two-way-delay-variation? uint32 + | +--rw two-way-packet-loss? decimal64 + +--rw threshold-accelerated-advertisement + +--rw one-way-delay? uint32 + +--rw one-way-residual-bandwidth? + | rt-types:bandwidth-ieee-float32 + +--rw one-way-available-bandwidth? + | rt-types:bandwidth-ieee-float32 + +--rw one-way-utilized-bandwidth? + | rt-types:bandwidth-ieee-float32 + +--rw two-way-delay? uint32 + +--rw one-way-min-delay? uint32 + +--rw one-way-max-delay? uint32 + +--rw one-way-delay-variation? uint32 + +--rw one-way-packet-loss? decimal64 + +--rw two-way-min-delay? uint32 + +--rw two-way-max-delay? uint32 + +--rw two-way-delay-variation? uint32 + +--rw two-way-packet-loss? decimal64 + augment /te:te/te:tunnels/te:tunnel: + +--rw tunnel-igp-shortcut + | +--rw shortcut-eligible? boolean + | +--rw metric-type? identityref + | +--rw metric? int32 + | +--rw routing-afs* inet:ip-version + +--rw forwarding + | +--rw binding-label? rt-types:mpls-label + | +--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 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: + +--rw static-lsp-name? mpls-static:static-lsp-ref + augment /te:te/te:globals/te:named-path-constraints + /te:named-path-constraint: + +--rw bandwidth + +--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 + 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? + | | te-types:performance-metrics-normality + | +--ro one-way-residual-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--ro one-way-residual-bandwidth-normality? + | | te-types:performance-metrics-normality + | +--ro one-way-available-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--ro one-way-available-bandwidth-normality? + | | te-types:performance-metrics-normality + | +--ro one-way-utilized-bandwidth? + | | rt-types:bandwidth-ieee-float32 + | +--ro one-way-utilized-bandwidth-normality? + | | te-types:performance-metrics-normality + | +--ro one-way-min-delay? uint32 + | +--ro one-way-min-delay-normality? + | | te-types:performance-metrics-normality + | +--ro one-way-max-delay? uint32 + | +--ro one-way-max-delay-normality? + | | te-types:performance-metrics-normality + | +--ro one-way-delay-variation? uint32 + | +--ro one-way-delay-variation-normality? + | | te-types:performance-metrics-normality + | +--ro one-way-packet-loss? decimal64 + | +--ro one-way-packet-loss-normality? + | te-types:performance-metrics-normality + +--ro performance-metrics-two-way + +--ro two-way-delay? uint32 + +--ro two-way-delay-normality? + | te-types:performance-metrics-normality + +--ro two-way-min-delay? uint32 + +--ro two-way-min-delay-normality? + | te-types:performance-metrics-normality + +--ro two-way-max-delay? uint32 + +--ro two-way-max-delay-normality? + | te-types:performance-metrics-normality + +--ro two-way-delay-variation? uint32 + +--ro two-way-delay-variation-normality? + | te-types:performance-metrics-normality + +--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-hop-type)? + +--:(php) + | +--ro mpls-php? empty + +--:(label-hop) + +--ro mpls-label? rt-types:mpls-label-general-use + 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-hop-type)? + +--:(php) + | +--ro mpls-php? empty + +--:(label-hop) + +--ro mpls-label? rt-types:mpls-label-general-use + 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-hop-type)? + +--:(php) + | +--ro mpls-php? empty + +--:(label-hop) + +--ro mpls-label? rt-types:mpls-label-general-use + 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-hop-type)? + +--:(php) + | +--ro mpls-php? empty + +--:(label-hop) + +--ro mpls-label? rt-types:mpls-label-general-use From 1aed457f9e7c7384daae63d07b035d00b61702ff Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 21:17:47 +0200 Subject: [PATCH 08/17] Update ietf-te-mpls-topology.yang Fixing compilation errors --- ietf-te-mpls-topology.yang | 67 +++++++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/ietf-te-mpls-topology.yang b/ietf-te-mpls-topology.yang index 58c93b6..25ce722 100644 --- a/ietf-te-mpls-topology.yang +++ b/ietf-te-mpls-topology.yang @@ -27,21 +27,35 @@ module ietf-te-mpls-topology { organization "Internet Engineering Task Force (IETF) TEAS WG"; contact - " - WG List: + "WG List: + WG List: - ID-draft editor: - Italo Busi (italo.busi@huawei.com); - Haomian Zheng (zhenghaomian@huawei.com); - "; + Editor: Italo Busi + + + Editor: Haomian Zheng + "; description "This module defines technology-specific MPLS-TE topology - data model."; + 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-06-26 { description - "version -00 as an I-D"; + "Initial Version"; reference "New draft to be submitted"; } @@ -54,37 +68,44 @@ module ietf-te-mpls-topology { + "tet:te-link-attributes/" + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + "tet:te-bandwidth/tet:technology" { - when "../../../../../../../nw:network-types/tet:te-topology/" + when "../../../../../../nw:network-types/tet:te-topology/" + "tet-pkt:packet-topology" { description "Augment Packet TE bandwidth."; } - description "TE Packet bandwidth."; + description + "Augment maximum LSP bandwidth of TE link."; case packet { uses mte-types:te-packet-path-bandwidth; } } - augment "/nw:networks/nw:network/nw:node/nt:termination-point/tet:te/" + 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/" + when "../../../../../../nw:network-types/tet:te-topology/" + "tet-pkt:packet-topology" { description "Augment Packet TE bandwidth."; } - description "TE Packet bandwidth."; + description + "Augment maximum LSP bandwidth of link termination point + (LTP)."; 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-link-attributes/" + + "tet:max-link-bandwidth/" + "tet:te-bandwidth/tet:technology" { - when "../../../../../../nw:network-types/tet:te-topology/" + when "../../../../../nw:network-types/tet:te-topology/" + "tet-pkt:packet-topology" { - description "Augment Packet TE bandwidth."; + description + "Augment Packet TE bandwidth."; } - description "TE Packet bandwidth."; + description + "Augment maximum bandwidth of TE link."; case packet { uses mte-types:te-packet-link-bandwidth; } @@ -93,11 +114,12 @@ module ietf-te-mpls-topology { 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/" + when "../../../../../nw:network-types/tet:te-topology/" + "tet-pkt:packet-topology" { description "Augment Packet TE bandwidth."; } - description "TE Packet bandwidth."; + description + "Augment maximum reservable bandwidth of TE link."; case packet { uses mte-types:te-packet-link-bandwidth; } @@ -106,11 +128,12 @@ module ietf-te-mpls-topology { 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/" + when "../../../../../nw:network-types/tet:te-topology/" + "tet-pkt:packet-topology" { description "Augment Packet TE bandwidth."; } - description "TE Packet bandwidth."; + description + "Augment unreserved bandwidth of TE Link."; case packet { uses mte-types:te-packet-link-bandwidth; } @@ -133,7 +156,7 @@ module ietf-te-mpls-topology { } augment "/nw:networks/nw:network/nt:link/tet:te" { - when "../../../nw:network-types/tet:te-topology/" + when "../../nw:network-types/tet:te-topology/" + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { description "Augment MPLS-TE Topology."; From ce29a9eaf5c66a61ee9383d2285fba8f3d81a43e Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 21:17:55 +0200 Subject: [PATCH 09/17] Update ietf-te-mpls.yang Fixing compilation errors --- ietf-te-mpls.yang | 49 ++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/ietf-te-mpls.yang b/ietf-te-mpls.yang index 8e4412b..8b622b8 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; @@ -101,11 +105,11 @@ module ietf-te-mpls { "RFCXXXX: A YANG Data Model for MPLS-TE Tunnels and LSP(s)"; } - /* MPLS TE Identities */ identity tunnel-action-resetup { base te:tunnel-actions-type; description "Resetup tunnel action type"; + } /* MPLS TE tunnel properties*/ @@ -326,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."; } } @@ -431,7 +436,8 @@ module ietf-te-mpls { */ 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"; } @@ -450,7 +456,7 @@ module ietf-te-mpls { /* MPLS TE path augmentations */ augment "/te:te/te:tunnels/te:tunnel/" + "te:primary-paths/te:primary-path" { - description "MPLS TE path constraints"; + description "Augment primary path constraints."; uses te-mpls-path-constraints; } @@ -459,7 +465,7 @@ module ietf-te-mpls { "te:primary-paths/te:primary-path" { when "/te:te/te:tunnels/te:tunnel" + "/te:primary-paths/te:primary-path" + - "/te:path-setup-protocol = 'te-types:path-setup-static'" { + "/te:signaling-type = 'te-types:path-setup-static'" { description "When the path is statically provisioned"; } @@ -474,7 +480,7 @@ module ietf-te-mpls { "te:secondary-paths/te:secondary-path" { when "/te:te/te:tunnels/te:tunnel" + "/te:secondary-paths/te:secondary-path/" + - "te:path-setup-protocol = 'te-types:path-setup-static'" { + "te:signaling-type = 'te-types:path-setup-static'" { description "When the path is statically provisioned"; } @@ -508,23 +514,23 @@ module ietf-te-mpls { + "te:computed-paths-properties/" + "te:computed-path-properties/" + "te:path-properties/te:path-route-objects/" - + "te:path-computed-route-object/te:type/te:label/" + + "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; + uses mte-types:te-mpls-label-hop; } } augment "/te:te/te:tunnels/te:tunnel/" - + "te:`primary-paths/te:primary-path/" + + "te:primary-paths/te:primary-path/" + "te:lsps/te:lsp/" + "te:path-properties/te:path-route-objects/" - + "te:path-computed-route-object/te:type/te:label/" + + "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; + uses mte-types:te-mpls-label-hop; } } @@ -533,11 +539,11 @@ module ietf-te-mpls { + "te:computed-paths-properties/" + "te:computed-path-properties/" + "te:path-properties/te:path-route-objects/" - + "te:path-computed-route-object/te:type/te:label/" + + "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; + uses mte-types:te-mpls-label-hop; } } @@ -545,12 +551,11 @@ module ietf-te-mpls { + "te:secondary-paths/te:secondary-path/" + "te:lsps/te:lsp/" + "te:path-properties/te:path-route-objects/" - + "te:path-computed-route-object/te:type/te:label/" + + "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; + uses mte-types:te-mpls-label-hop; } } -} - +} \ No newline at end of file From 2ed8c92a8db428d361dbaed4906b5e490cf2eac5 Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 21:18:07 +0200 Subject: [PATCH 10/17] Create ietf-te-mpls-topology.tree Fixing compilation errors --- ietf-te-mpls-topology.tree | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 ietf-te-mpls-topology.tree diff --git a/ietf-te-mpls-topology.tree b/ietf-te-mpls-topology.tree new file mode 100644 index 0000000..f171dbc --- /dev/null +++ b/ietf-te-mpls-topology.tree @@ -0,0 +1,46 @@ + +module: ietf-te-mpls-topology + 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/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/nt:link/tet:te + /tet:te-link-attributes/tet:max-link-bandwidth + /tet:te-bandwidth/tet:technology: + +--:(packet) + +--rw mpls-tp-bandwidth? uint64 + 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 mpls-tp-bandwidth? uint64 + augment /nw:networks/nw:network/nt:link/tet:te + /tet:te-link-attributes/tet:unreserved-bandwidth + /tet:te-bandwidth/tet:technology: + +--:(packet) + +--rw mpls-tp-bandwidth? uint64 + augment /nw:networks/nw:network/nw:network-types/tet:te-topology + /tet-pkt:packet-topology: + +--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 From 61d368e10c34f30077eeea5349939ef173679b8d Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 21:53:07 +0200 Subject: [PATCH 11/17] Update ietf-mpls-te-types.yang Removing references to MPLS-TP --- ietf-mpls-te-types.yang | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/ietf-mpls-te-types.yang b/ietf-mpls-te-types.yang index 17ee998..9b294e0 100644 --- a/ietf-mpls-te-types.yang +++ b/ietf-mpls-te-types.yang @@ -12,23 +12,37 @@ module ietf-mpls-te-types { organization "Internet Engineering Task Force (IETF) TEAS WG"; contact - " - WG List: + "WG List: + WG List: - ID-draft editor: - Italo Busi (italo.busi@huawei.com); - Haomian Zheng (zhenghaomian@huawei.com); - "; + Editor: Italo Busi + + + Editor: Haomian Zheng + "; description - "This module defines technology-specific MPLS-TP types - data model."; + "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-06-26 { description - "version -00 as an I-D"; + "Initial Version"; reference - "draft-busizheng-teas-mpls-tp-yang"; + "New draft to be submitted"; } /* @@ -98,7 +112,7 @@ module ietf-mpls-te-types { grouping te-packet-path-bandwidth { description - "Path bandwidth for MPLS-TP. "; + "Path bandwidth for Packet. "; leaf bandwidth-profile-name{ type string; description "Name of Bandwidth Profile."; @@ -150,8 +164,8 @@ module ietf-mpls-te-types { grouping te-packet-link-bandwidth { description - "Bandwidth for MPLS-TP. "; - leaf mpls-tp-bandwidth { + "Link Bandwidth for Packet. "; + leaf packet-bandwidth { type uint64{ range "0..10000000000"; } From 79aef79c4a29a7b3626e9b0ae63b42411e9ba39b Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 26 Jun 2020 21:53:23 +0200 Subject: [PATCH 12/17] Update ietf-te-mpls-topology.tree Output of pyang compilation --- ietf-te-mpls-topology.tree | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ietf-te-mpls-topology.tree b/ietf-te-mpls-topology.tree index f171dbc..d50ef96 100644 --- a/ietf-te-mpls-topology.tree +++ b/ietf-te-mpls-topology.tree @@ -25,17 +25,17 @@ module: ietf-te-mpls-topology /tet:te-link-attributes/tet:max-link-bandwidth /tet:te-bandwidth/tet:technology: +--:(packet) - +--rw mpls-tp-bandwidth? uint64 + +--rw packet-bandwidth? uint64 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 mpls-tp-bandwidth? uint64 + +--rw packet-bandwidth? uint64 augment /nw:networks/nw:network/nt:link/tet:te /tet:te-link-attributes/tet:unreserved-bandwidth /tet:te-bandwidth/tet:technology: +--:(packet) - +--rw mpls-tp-bandwidth? uint64 + +--rw packet-bandwidth? uint64 augment /nw:networks/nw:network/nw:network-types/tet:te-topology /tet-pkt:packet-topology: +--rw mpls-topology! From 47d1566e8dc6b5329c52685a801bd7f46ac5d226 Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 3 Jul 2020 19:00:45 +0200 Subject: [PATCH 13/17] Updated based on 2020-07-03 TEAS Call Models updated based on feedbacks received during the 2020-07-03 TEAS Call --- ietf-mpls-te-types.yang | 29 ++---- ietf-mpls-te.tree | 75 ++++++++++----- ietf-te-mpls.tree | 197 ---------------------------------------- ietf-te-mpls.yang | 13 +-- 4 files changed, 64 insertions(+), 250 deletions(-) delete mode 100644 ietf-te-mpls.tree diff --git a/ietf-mpls-te-types.yang b/ietf-mpls-te-types.yang index 9b294e0..5918e15 100644 --- a/ietf-mpls-te-types.yang +++ b/ietf-mpls-te-types.yang @@ -38,7 +38,7 @@ module ietf-mpls-te-types { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2020-06-26 { + revision 2020-07-03 { description "Initial Version"; reference @@ -83,8 +83,6 @@ module ietf-mpls-te-types { */ typedef load-balancing-type { - description - "The type of load balancing used on bundled links."; type enumeration { enum per-flow { description @@ -104,6 +102,8 @@ module ietf-mpls-te-types { forwarded on the same component link."; } } + description + "The type of load balancing used on bundled links."; } // typedef load-balancing-type /* @@ -182,27 +182,12 @@ module ietf-mpls-te-types { grouping te-mpls-label-hop { description - "MPLS-TE Label. "; + "MPLS-TE Label Hop."; - choice mpls-hop-type { + leaf mpls-label { + type rt-types:mpls-label; description - "Whether the label-hop is a normal MPLS-TE - label-hop or a PHP hop"; - - case php { - leaf mpls-php { - type empty; - description - "MPLS-TE PHP Label Hop."; - } - } - case label-hop { - leaf mpls-label { - type rt-types:mpls-label-general-use; - description - "MPLS-TE Label Hop."; - } - } + "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.tree b/ietf-te-mpls.tree deleted file mode 100644 index 41d84b7..0000000 --- a/ietf-te-mpls.tree +++ /dev/null @@ -1,197 +0,0 @@ - -module: ietf-te-mpls - augment /te:te/te-dev:performance-thresholds: - +--rw throttle - +--rw one-way-delay-offset? uint32 - +--rw measure-interval? uint32 - +--rw advertisement-interval? uint32 - +--rw suppression-interval? uint32 - +--rw threshold-out - | +--rw one-way-delay? uint32 - | +--rw one-way-residual-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--rw one-way-available-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--rw one-way-utilized-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--rw two-way-delay? uint32 - | +--rw one-way-min-delay? uint32 - | +--rw one-way-max-delay? uint32 - | +--rw one-way-delay-variation? uint32 - | +--rw one-way-packet-loss? decimal64 - | +--rw two-way-min-delay? uint32 - | +--rw two-way-max-delay? uint32 - | +--rw two-way-delay-variation? uint32 - | +--rw two-way-packet-loss? decimal64 - +--rw threshold-in - | +--rw one-way-delay? uint32 - | +--rw one-way-residual-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--rw one-way-available-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--rw one-way-utilized-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--rw two-way-delay? uint32 - | +--rw one-way-min-delay? uint32 - | +--rw one-way-max-delay? uint32 - | +--rw one-way-delay-variation? uint32 - | +--rw one-way-packet-loss? decimal64 - | +--rw two-way-min-delay? uint32 - | +--rw two-way-max-delay? uint32 - | +--rw two-way-delay-variation? uint32 - | +--rw two-way-packet-loss? decimal64 - +--rw threshold-accelerated-advertisement - +--rw one-way-delay? uint32 - +--rw one-way-residual-bandwidth? - | rt-types:bandwidth-ieee-float32 - +--rw one-way-available-bandwidth? - | rt-types:bandwidth-ieee-float32 - +--rw one-way-utilized-bandwidth? - | rt-types:bandwidth-ieee-float32 - +--rw two-way-delay? uint32 - +--rw one-way-min-delay? uint32 - +--rw one-way-max-delay? uint32 - +--rw one-way-delay-variation? uint32 - +--rw one-way-packet-loss? decimal64 - +--rw two-way-min-delay? uint32 - +--rw two-way-max-delay? uint32 - +--rw two-way-delay-variation? uint32 - +--rw two-way-packet-loss? decimal64 - augment /te:te/te:tunnels/te:tunnel: - +--rw tunnel-igp-shortcut - | +--rw shortcut-eligible? boolean - | +--rw metric-type? identityref - | +--rw metric? int32 - | +--rw routing-afs* inet:ip-version - +--rw forwarding - | +--rw binding-label? rt-types:mpls-label - | +--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 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: - +--rw static-lsp-name? mpls-static:static-lsp-ref - augment /te:te/te:globals/te:named-path-constraints - /te:named-path-constraint: - +--rw bandwidth - +--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 - 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? - | | te-types:performance-metrics-normality - | +--ro one-way-residual-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--ro one-way-residual-bandwidth-normality? - | | te-types:performance-metrics-normality - | +--ro one-way-available-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--ro one-way-available-bandwidth-normality? - | | te-types:performance-metrics-normality - | +--ro one-way-utilized-bandwidth? - | | rt-types:bandwidth-ieee-float32 - | +--ro one-way-utilized-bandwidth-normality? - | | te-types:performance-metrics-normality - | +--ro one-way-min-delay? uint32 - | +--ro one-way-min-delay-normality? - | | te-types:performance-metrics-normality - | +--ro one-way-max-delay? uint32 - | +--ro one-way-max-delay-normality? - | | te-types:performance-metrics-normality - | +--ro one-way-delay-variation? uint32 - | +--ro one-way-delay-variation-normality? - | | te-types:performance-metrics-normality - | +--ro one-way-packet-loss? decimal64 - | +--ro one-way-packet-loss-normality? - | te-types:performance-metrics-normality - +--ro performance-metrics-two-way - +--ro two-way-delay? uint32 - +--ro two-way-delay-normality? - | te-types:performance-metrics-normality - +--ro two-way-min-delay? uint32 - +--ro two-way-min-delay-normality? - | te-types:performance-metrics-normality - +--ro two-way-max-delay? uint32 - +--ro two-way-max-delay-normality? - | te-types:performance-metrics-normality - +--ro two-way-delay-variation? uint32 - +--ro two-way-delay-variation-normality? - | te-types:performance-metrics-normality - +--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-hop-type)? - +--:(php) - | +--ro mpls-php? empty - +--:(label-hop) - +--ro mpls-label? rt-types:mpls-label-general-use - 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-hop-type)? - +--:(php) - | +--ro mpls-php? empty - +--:(label-hop) - +--ro mpls-label? rt-types:mpls-label-general-use - 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-hop-type)? - +--:(php) - | +--ro mpls-php? empty - +--:(label-hop) - +--ro mpls-label? rt-types:mpls-label-general-use - 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-hop-type)? - +--:(php) - | +--ro mpls-php? empty - +--:(label-hop) - +--ro mpls-label? rt-types:mpls-label-general-use diff --git a/ietf-te-mpls.yang b/ietf-te-mpls.yang index 8b622b8..607d049 100644 --- a/ietf-te-mpls.yang +++ b/ietf-te-mpls.yang @@ -99,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-06-26" { + 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)"; @@ -411,9 +411,9 @@ module ietf-te-mpls { } } - grouping te-mpls-path-constraints { + grouping te-mpls-tunnel-attributes { description - "Path constraints for MPLS-TE LSP attributes"; + "MPLS-TE Tunnel attributes."; leaf load-balancing-type { type mte-types:load-balancing-type; @@ -451,14 +451,11 @@ 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 */ - augment "/te:te/te:tunnels/te:tunnel/" + - "te:primary-paths/te:primary-path" { - description "Augment primary path constraints."; - uses te-mpls-path-constraints; - } + /* MPLS TE LSPs augmentations */ augment "/te:te/te:tunnels/te:tunnel/" + From e85ec361a19ef7ccfa8c7f3b55bbb764380d2f5d Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 10 Jul 2020 13:58:58 +0200 Subject: [PATCH 14/17] Aligned with latest te-topology-packet YANG model aligned with the latest version of te-topology-packet --- ietf-te-mpls-topology.tree | 2 +- ietf-te-mpls-topology.yang | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ietf-te-mpls-topology.tree b/ietf-te-mpls-topology.tree index d50ef96..284a16b 100644 --- a/ietf-te-mpls-topology.tree +++ b/ietf-te-mpls-topology.tree @@ -37,7 +37,7 @@ module: ietf-te-mpls-topology +--:(packet) +--rw packet-bandwidth? uint64 augment /nw:networks/nw:network/nw:network-types/tet:te-topology - /tet-pkt:packet-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 diff --git a/ietf-te-mpls-topology.yang b/ietf-te-mpls-topology.yang index 25ce722..a6c2277 100644 --- a/ietf-te-mpls-topology.yang +++ b/ietf-te-mpls-topology.yang @@ -69,7 +69,7 @@ module ietf-te-mpls-topology { + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + "tet:te-bandwidth/tet:technology" { when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology" { + + "tet-pkt:packet" { description "Augment Packet TE bandwidth."; } description @@ -84,7 +84,7 @@ module ietf-te-mpls-topology { + "tet:interface-switching-capability/tet:max-lsp-bandwidth/" + "tet:te-bandwidth/tet:technology" { when "../../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology" { + + "tet-pkt:packet" { description "Augment Packet TE bandwidth."; } description @@ -100,7 +100,7 @@ module ietf-te-mpls-topology { + "tet:max-link-bandwidth/" + "tet:te-bandwidth/tet:technology" { when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology" { + + "tet-pkt:packet" { description "Augment Packet TE bandwidth."; } @@ -115,7 +115,7 @@ module ietf-te-mpls-topology { + "tet:te-link-attributes/tet:max-resv-link-bandwidth/" + "tet:te-bandwidth/tet:technology" { when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology" { + + "tet-pkt:packet" { description "Augment Packet TE bandwidth."; } description @@ -129,7 +129,7 @@ module ietf-te-mpls-topology { + "tet:te-link-attributes/tet:unreserved-bandwidth/" + "tet:te-bandwidth/tet:technology" { when "../../../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology" { + + "tet-pkt:packet" { description "Augment Packet TE bandwidth."; } description @@ -144,7 +144,7 @@ module ietf-te-mpls-topology { */ augment "/nw:networks/nw:network/nw:network-types/" - + "tet:te-topology/tet-pkt:packet-topology" { + + "tet:te-topology/tet-pkt:packet" { description "Augment network types to include MPLS-TE Topology Type"; container mpls-topology { @@ -157,7 +157,7 @@ module ietf-te-mpls-topology { augment "/nw:networks/nw:network/nt:link/tet:te" { when "../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { + + "tet-pkt:packet/tet-mpls:mpls-topology" { description "Augment MPLS-TE Topology."; } @@ -178,7 +178,7 @@ module ietf-te-mpls-topology { augment "/nw:networks/nw:network/nw:node/nt:termination-point/" + "tet:te" { when "../../../nw:network-types/tet:te-topology/" - + "tet-pkt:packet-topology/tet-mpls:mpls-topology" { + + "tet-pkt:packet/tet-mpls:mpls-topology" { description "Augment MPLS-TE Topology."; } description "Augment LTP."; From 40b7737bcccfe6f74181563870695cec804bcf55 Mon Sep 17 00:00:00 2001 From: italobusi Date: Fri, 10 Jul 2020 17:25:31 +0200 Subject: [PATCH 15/17] Updated mpls-te-types Updated mpls-te-types to address Tarek's review comments as discussed during the call on 2020-07-10 --- ietf-mpls-te-types.yang | 22 ++++++++++++---------- ietf-te-mpls-topology.tree | 6 +++--- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/ietf-mpls-te-types.yang b/ietf-mpls-te-types.yang index 5918e15..8b99dee 100644 --- a/ietf-mpls-te-types.yang +++ b/ietf-mpls-te-types.yang @@ -38,7 +38,7 @@ module ietf-mpls-te-types { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2020-07-03 { + revision 2020-07-10 { description "Initial Version"; reference @@ -86,17 +86,22 @@ module ietf-mpls-te-types { type enumeration { enum per-flow { description - "The load-balancing algorithm ensures that packets for - the same flow are forwarded on the same component link. + "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 that packets, which - are forwarding based on the same label at the top of the - label stack, are forwarded on the same component link. + "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."; @@ -166,10 +171,7 @@ module ietf-mpls-te-types { description "Link Bandwidth for Packet. "; leaf packet-bandwidth { - type uint64{ - range "0..10000000000"; - } - units "Kbps"; + type bandwidth-kbps; description "Available bandwith value expressed in kilobits per second"; diff --git a/ietf-te-mpls-topology.tree b/ietf-te-mpls-topology.tree index 284a16b..a64edc2 100644 --- a/ietf-te-mpls-topology.tree +++ b/ietf-te-mpls-topology.tree @@ -25,17 +25,17 @@ module: ietf-te-mpls-topology /tet:te-link-attributes/tet:max-link-bandwidth /tet:te-bandwidth/tet:technology: +--:(packet) - +--rw packet-bandwidth? uint64 + +--rw packet-bandwidth? 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? uint64 + +--rw packet-bandwidth? 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? uint64 + +--rw packet-bandwidth? bandwidth-kbps augment /nw:networks/nw:network/nw:network-types/tet:te-topology /tet-pkt:packet: +--rw mpls-topology! From 5ca616b59bd0f1d2427200b131e8bfa4b37aba55 Mon Sep 17 00:00:00 2001 From: italobusi Date: Mon, 13 Jul 2020 16:40:19 +0200 Subject: [PATCH 16/17] Updated for draft submission --- ietf-mpls-te-types.yang | 22 ++- ietf-te-mpls-topology.yang | 310 ++++++++++++++++++++++++++++++++++--- 2 files changed, 303 insertions(+), 29 deletions(-) diff --git a/ietf-mpls-te-types.yang b/ietf-mpls-te-types.yang index 8b99dee..a64f64c 100644 --- a/ietf-mpls-te-types.yang +++ b/ietf-mpls-te-types.yang @@ -9,17 +9,29 @@ module ietf-mpls-te-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 List: + "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 @@ -38,11 +50,11 @@ module ietf-mpls-te-types { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2020-07-10 { + revision 2020-07-13 { description "Initial Version"; reference - "New draft to be submitted"; + "draft-busizheng-teas-yang-te-mpls-topology"; } /* @@ -171,7 +183,7 @@ module ietf-mpls-te-types { description "Link Bandwidth for Packet. "; leaf packet-bandwidth { - type bandwidth-kbps; + type te-packet-types:bandwidth-kbps; description "Available bandwith value expressed in kilobits per second"; diff --git a/ietf-te-mpls-topology.yang b/ietf-te-mpls-topology.yang index a6c2277..eabe3f4 100644 --- a/ietf-te-mpls-topology.yang +++ b/ietf-te-mpls-topology.yang @@ -27,14 +27,20 @@ module ietf-te-mpls-topology { organization "Internet Engineering Task Force (IETF) TEAS WG"; contact - "WG List: + "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 @@ -53,43 +59,172 @@ module ietf-te-mpls-topology { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2020-06-26 { + revision 2020-07-13 { description "Initial Version"; reference - "New draft to be submitted"; + "draft-busizheng-teas-yang-te-mpls-topology"; } -/* - * Augmentations (to be moved to te-topology-packet?) - */ + /* + * Augment TE bandwidth (to be moved to te-topology-packet?) + */ - augment "/nw:networks/nw:network/nt:link/tet:te/" - + "tet:te-link-attributes/" + 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 "Augment Packet TE bandwidth."; + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; } description - "Augment maximum LSP bandwidth of TE link."; + "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/nt:termination-point/" - + "tet:te/" + 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 "Augment Packet TE bandwidth."; + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; } description - "Augment maximum LSP bandwidth of link termination point - (LTP)."; + "Augment maximum LSP TE bandwidth for the TE link."; case packet { uses mte-types:te-packet-path-bandwidth; } @@ -102,38 +237,165 @@ module ietf-te-mpls-topology { when "../../../../../nw:network-types/tet:te-topology/" + "tet-pkt:packet" { description - "Augment Packet TE bandwidth."; + "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 maximum bandwidth of TE link."; + "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:te-link-attributes/tet:max-resv-link-bandwidth/" + + "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 "Augment Packet TE bandwidth."; + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; } description - "Augment maximum reservable bandwidth of TE link."; + "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:te-link-attributes/tet:unreserved-bandwidth/" + + "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 "Augment Packet TE bandwidth."; + description + "Augmentation parameters apply only for networks with + Packet TE topology type."; } description - "Augment unreserved bandwidth of TE Link."; + "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; } From 0eba49fc297c43e38c61e20533dbf1c33d1531a2 Mon Sep 17 00:00:00 2001 From: italobusi Date: Mon, 13 Jul 2020 17:02:01 +0200 Subject: [PATCH 17/17] Update ietf-te-mpls-topology.tree Updated after compilation --- ietf-te-mpls-topology.tree | 105 ++++++++++++++++++++++++++++++++++--- 1 file changed, 99 insertions(+), 6 deletions(-) diff --git a/ietf-te-mpls-topology.tree b/ietf-te-mpls-topology.tree index a64edc2..22b9685 100644 --- a/ietf-te-mpls-topology.tree +++ b/ietf-te-mpls-topology.tree @@ -1,7 +1,6 @@ module: ietf-te-mpls-topology - augment /nw:networks/nw:network/nt:link/tet:te - /tet:te-link-attributes + 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) @@ -11,7 +10,49 @@ module: ietf-te-mpls-topology +--rw EIR? uint64 +--rw CBS? uint64 +--rw EBS? uint64 - augment /nw:networks/nw:network/nw:node/nt:termination-point/tet:te + 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) @@ -25,17 +66,69 @@ module: ietf-te-mpls-topology /tet:te-link-attributes/tet:max-link-bandwidth /tet:te-bandwidth/tet:technology: +--:(packet) - +--rw packet-bandwidth? bandwidth-kbps + +--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? bandwidth-kbps + +--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? bandwidth-kbps + +--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!