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