| module ietf-te-topology { |
| //yang-version 1.1; |
| namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; |
| // replace with IANA namespace when assigned |
| |
| prefix "tet"; |
| |
| import ietf-inet-types { |
| prefix "inet"; |
| } |
| |
| import ietf-schedule { |
| prefix "sch"; |
| } |
| |
| import ietf-te-types { |
| prefix "te-types"; |
| } |
| |
| import ietf-network { |
| prefix "nw"; |
| } |
| |
| import ietf-network-topology { |
| prefix "nt"; |
| } |
| |
| organization |
| "Traffic Engineering Architecture and Signaling (TEAS) |
| Working Group"; |
| |
| contact |
| "WG Web: <http://tools.ietf.org/wg/teas/> |
| WG List: <mailto:teas@ietf.org> |
| |
| WG Chair: Lou Berger |
| <mailto:lberger@labn.net> |
| |
| WG Chair: Vishnu Pavan Beeram |
| <mailto:vbeeram@juniper.net> |
| |
| Editor: Xufeng Liu |
| <mailto:xliu@kuatrotech.com> |
| |
| Editor: Igor Bryskin |
| <mailto:Igor.Bryskin@huawei.com> |
| |
| Editor: Vishnu Pavan Beeram |
| <mailto:vbeeram@juniper.net> |
| |
| Editor: Tarek Saad |
| <mailto:tsaad@cisco.com> |
| |
| Editor: Himanshu Shah |
| <mailto:hshah@ciena.com> |
| |
| Editor: Oscar Gonzalez De Dios |
| <mailto:oscar.gonzalezdedios@telefonica.com>"; |
| |
| description "TE topology model"; |
| |
| revision "2016-07-08" { |
| description "Initial revision"; |
| reference "TBD"; |
| } |
| |
| /* |
| * Features |
| */ |
| |
| feature configuration-schedule { |
| description |
| "This feature indicates that the system supports |
| configuration scheduling."; |
| } |
| |
| feature te-topology-hierarchy { |
| description |
| "This feature indicates that the system allows underlay |
| and/or overlay TE topology hierarchy."; |
| } |
| |
| feature te-performance-metric { |
| description |
| "This feature indicates that the system supports |
| TE performance metric."; |
| reference |
| "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. |
| RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. |
| RFC7823: Performance-Based Path Selection for Explicitly |
| Routed Label Switched Paths (LSPs) Using TE Metric |
| Extensions"; |
| } |
| |
| feature template { |
| description |
| "This feature indicates that the system supports |
| template configuration."; |
| } |
| |
| /* |
| * Typedefs |
| */ |
| |
| /* |
| * Identities |
| */ |
| |
| /* |
| * Groupings |
| */ |
| grouping connectivity-label-restriction-list { |
| description |
| "List of abel restrictions specifying what labels may or may |
| not be used on a link connectivity."; |
| list label-restriction { |
| key "inclusive-exclusive label-start"; |
| description |
| "List of abel restrictions specifying what labels may or may |
| not be used on a link connectivity."; |
| reference |
| "RFC7579: General Network Element Constraint Encoding |
| for GMPLS-Controlled Networks"; |
| leaf inclusive-exclusive { |
| type enumeration { |
| enum inclusive { |
| description "The label or label range is inclusive."; |
| } |
| enum exclusive { |
| description "The label or label range is exclusive."; |
| } |
| } |
| description |
| "Whether the list item is inclusive or exclusive."; |
| } |
| leaf label-start { |
| type te-types:generalized-label; |
| description |
| "This is the starting lable if a lable range is specified. |
| This is the lable value if a single lable is specified, |
| in which case, attribute 'label-end' is not set."; |
| } |
| leaf label-end { |
| type te-types:generalized-label; |
| description |
| "The ending lable if a lable range is specified; |
| This attribute is not set, If a single lable is specified."; |
| } |
| leaf range-bitmap { |
| type binary; |
| description |
| "When there are gaps between label-start and label-end, |
| this attribute is used to specified the possitions |
| of the used labels."; |
| } |
| } |
| } // connectivity-label-restrictions |
| |
| grouping information-source-attributes { |
| description |
| "The attributes identifying source that has provided the |
| related information, and the source credibility."; |
| leaf information-source { |
| type enumeration { |
| enum "unknown" { |
| description "The source is unknown."; |
| } |
| enum "locally-configured" { |
| description "Configured entity."; |
| } |
| enum "ospfv2" { |
| description "OSPFv2."; |
| } |
| enum "ospfv3" { |
| description "OSPFv3."; |
| } |
| enum "isis" { |
| description "ISIS."; |
| } |
| enum "system-processed" { |
| description "System processed entity."; |
| } |
| enum "other" { |
| description "Other source."; |
| } |
| } |
| description |
| "Indicates the source of the information."; |
| } |
| container information-source-state { |
| description |
| "The container contains state attributes related to |
| the information source."; |
| leaf credibility-preference { |
| type uint16; |
| description |
| "The preference value to calculate the traffic |
| engineering database credibility value used for |
| tie-break selection between different |
| information-source values. |
| Higher value is more preferable."; |
| } |
| container topology { |
| description |
| "When the information is processed by the system, |
| the attributes in this container indicate which topology |
| is used to process to generate the result information."; |
| uses te-topology-ref; |
| } // topology |
| leaf routing-instance { |
| type string; |
| description |
| "When applicable, this is the name of a routing instance |
| from which the information is learned."; |
| } // routing-information |
| } |
| } // information-source-attributes |
| |
| grouping interface-switching-capability-list { |
| description |
| "List of Interface Switching Capabilities Descriptors (ISCD)"; |
| |
| list interface-switching-capability { |
| key "switching-capability"; |
| description |
| "List of Interface Switching Capabilities Descriptors (ISCD) |
| for this link."; |
| reference |
| "RFC3471: Generalized Multi-Protocol Label Switching (GMPLS) |
| Signaling Functional Description. |
| RFC4203: OSPF Extensions in Support of Generalized |
| Multi-Protocol Label Switching (GMPLS)."; |
| leaf switching-capability { |
| type identityref { |
| base te-types:switching-capabilities; |
| } |
| description |
| "Switching Capability for this interface."; |
| } |
| leaf encoding { |
| type identityref { |
| base te-types:lsp-encoding-types; |
| } |
| description |
| "Encoding supported by this interface."; |
| } |
| list max-lsp-bandwidth { |
| key "priority"; |
| max-elements "8"; |
| description |
| "Maximum LSP Bandwidth at priorities 0-7."; |
| leaf priority { |
| type uint8 { |
| range "0..7"; |
| } |
| description "Priority."; |
| } |
| leaf bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Max LSP Bandwidth for this level"; |
| } |
| } |
| container time-division-multiplex-capable { |
| when "../switching-capability = 'TDM'" { |
| description "Valid only for TDM"; |
| } |
| description |
| "Interface has time-division multiplex capabilities."; |
| |
| leaf minimum-lsp-bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Minimum LSP Bandwidth. Units in bytes per second."; |
| } |
| leaf indication { |
| type enumeration { |
| enum "standard" { |
| description |
| "Indicates support of standard SONET/SDH."; |
| } |
| enum "arbitrary" { |
| description |
| "Indicates support of arbitrary SONET/SDH."; |
| } |
| } |
| description |
| "Indication whether the interface supports Standard or |
| Arbitrary SONET/SDH"; |
| } |
| } // time-division-multiplex-capable |
| } // interface-switching-capability |
| } // interface-switching-capability-list |
| |
| grouping performance-metric-attributes { |
| description |
| "Link performance information in real time."; |
| reference |
| "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. |
| RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. |
| RFC7823: Performance-Based Path Selection for Explicitly |
| Routed Label Switched Paths (LSPs) Using TE Metric |
| Extensions"; |
| leaf unidirectional-delay { |
| type uint32 { |
| range 0..16777215; |
| } |
| description "Delay or latency in micro seconds."; |
| } |
| leaf unidirectional-min-delay { |
| type uint32 { |
| range 0..16777215; |
| } |
| description "Minimum delay or latency in micro seconds."; |
| } |
| leaf unidirectional-max-delay { |
| type uint32 { |
| range 0..16777215; |
| } |
| description "Maximum delay or latency in micro seconds."; |
| } |
| leaf unidirectional-delay-variation { |
| type uint32 { |
| range 0..16777215; |
| } |
| description "Delay variation in micro seconds."; |
| } |
| leaf unidirectional-packet-loss { |
| type decimal64 { |
| fraction-digits 6; |
| range "0 .. 50.331642"; |
| } |
| description |
| "Packet loss as a percentage of the total traffic sent |
| over a configurable interval. The finest precision is |
| 0.000003%."; |
| } |
| leaf unidirectional-residual-bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Residual bandwidth that subtracts tunnel |
| reservations from Maximum Bandwidth (or link capacity) |
| [RFC3630] and provides an aggregated remainder across QoS |
| classes."; |
| } |
| leaf unidirectional-available-bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Available bandwidth that is defined to be residual |
| bandwidth minus the measured bandwidth used for the |
| actual forwarding of non-RSVP-TE LSP packets. For a |
| bundled link, available bandwidth is defined to be the |
| sum of the component link available bandwidths."; |
| } |
| leaf unidirectional-utilized-bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Bandwidth utilization that represents the actual |
| utilization of the link (i.e. as measured in the router). |
| For a bundled link, bandwidth utilization is defined to |
| be the sum of the component link bandwidth |
| utilizations."; |
| } |
| } // performance-metric-attributes |
| |
| grouping performance-metric-normality-attributes { |
| description |
| "Link performance metric normality attributes."; |
| reference |
| "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. |
| RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. |
| RFC7823: Performance-Based Path Selection for Explicitly |
| Routed Label Switched Paths (LSPs) Using TE Metric |
| Extensions"; |
| leaf unidirectional-delay { |
| type te-types:performance-metric-normality; |
| description "Delay normality."; |
| } |
| leaf unidirectional-min-delay { |
| type te-types:performance-metric-normality; |
| description "Minimum delay or latency normality."; |
| } |
| leaf unidirectional-max-delay { |
| type te-types:performance-metric-normality; |
| description "Maximum delay or latency normality."; |
| } |
| leaf unidirectional-delay-variation { |
| type te-types:performance-metric-normality; |
| description "Delay variation normality."; |
| } |
| leaf unidirectional-packet-loss { |
| type te-types:performance-metric-normality; |
| description "Packet loss normality."; |
| } |
| leaf unidirectional-residual-bandwidth { |
| type te-types:performance-metric-normality; |
| description "Residual bandwidth normality."; |
| } |
| leaf unidirectional-available-bandwidth { |
| type te-types:performance-metric-normality; |
| description "Available bandwidth normality."; |
| } |
| leaf unidirectional-utilized-bandwidth { |
| type te-types:performance-metric-normality; |
| description "Bandwidth utilization normality."; |
| } |
| } // performance-metric-normality-attributes |
| |
| grouping performance-metric-throttle-container { |
| description |
| "A container controlling performance metric throttle."; |
| container performance-metric-throttle { |
| if-feature te-performance-metric; |
| must "suppression-interval >= measure-interval" { |
| error-message |
| "suppression-interval cannot be less then |
| measure-interval."; |
| description |
| "Constraint on suppression-interval and |
| measure-interval."; |
| } |
| description |
| "Link performance information in real time."; |
| reference |
| "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. |
| RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. |
| RFC7823: Performance-Based Path Selection for Explicitly |
| Routed Label Switched Paths (LSPs) Using TE Metric |
| Extensions"; |
| leaf unidirectional-delay-offset { |
| type uint32 { |
| range 0..16777215; |
| } |
| description |
| "Offset value to be added to the measured delay value."; |
| } |
| leaf measure-interval { |
| type uint32; |
| default 30; |
| description |
| "Interval in seconds to measure the extended metric |
| values."; |
| } |
| leaf advertisement-interval { |
| type uint32; |
| description |
| "Interval in seconds to advertise the extended metric |
| values."; |
| } |
| leaf suppression-interval { |
| type uint32 { |
| range "1 .. max"; |
| } |
| default 120; |
| description |
| "Interval in seconds to suppress advertising the extended |
| metric values."; |
| } |
| container threshold-out { |
| uses performance-metric-attributes; |
| description |
| "If the measured parameter falls outside an upper bound |
| for all but the min delay metric (or lower bound for |
| min-delay metric only) and the advertised value is not |
| already outside that bound, anomalous announcement will be |
| triggered."; |
| } |
| container threshold-in { |
| uses performance-metric-attributes; |
| description |
| "If the measured parameter falls inside an upper bound |
| for all but the min delay metric (or lower bound for |
| min-delay metric only) and the advertised value is not |
| already inside that bound, normal (anomalous-flag cleared) |
| announcement will be triggered."; |
| } |
| container threshold-accelerated-advertisement { |
| description |
| "When the difference between the last advertised value and |
| current measured value exceed this threshold, anomalous |
| announcement will be triggered."; |
| uses performance-metric-attributes; |
| } |
| } |
| } // performance-metric-throttle-container |
| |
| grouping te-link-augment { |
| description |
| "Augmentation for TE link."; |
| |
| container te { |
| presence "TE support."; |
| description |
| "Indicates TE support."; |
| |
| container config { |
| description |
| "Configuration data."; |
| uses te-link-config; |
| } // config |
| container state { |
| config false; |
| description |
| "Operational state data."; |
| uses te-link-config; |
| uses te-link-state-derived; |
| } // state |
| } // te |
| } // te-link-augment |
| |
| grouping te-link-config { |
| description |
| "TE link configuration grouping."; |
| choice bundle-stack-level { |
| description |
| "The TE link can be partitioned into bundled |
| links, or component links."; |
| case bundle { |
| container bundled-links { |
| description |
| "A set of bundled links."; |
| reference |
| "RFC4201: Link Bundling in MPLS Traffic Engineering |
| (TE)."; |
| list bundled-link { |
| key "sequence"; |
| description |
| "Specify a bundled interface that is |
| further partitioned."; |
| leaf sequence { |
| type uint32; |
| description |
| "Identify the sequence in the bundle."; |
| } |
| leaf src-tp-ref { |
| type leafref { |
| path "../../../../../../nw:node[nw:node-id = " |
| + "current()/../../../../../nt:source/" |
| + "nt:source-node]/" |
| + "nt:termination-point/nt:tp-id"; |
| require-instance true; |
| } |
| description |
| "Reference to another TE termination point on the |
| same souruce node."; |
| } |
| leaf des-tp-ref { |
| type leafref { |
| path "../../../../../../nw:node[nw:node-id = " |
| + "current()/../../../../../nt:destination/" |
| + "nt:dest-node]/" |
| + "nt:termination-point/nt:tp-id"; |
| require-instance true; |
| } |
| description |
| "Reference to another TE termination point on the |
| same destination node."; |
| } |
| } // list bundled-link |
| } |
| } |
| case component { |
| container component-links { |
| description |
| "A set of component links"; |
| list component-link { |
| key "sequence"; |
| description |
| "Specify a component interface that is |
| sufficient to unambiguously identify the |
| appropriate resources"; |
| |
| leaf sequence { |
| type uint32; |
| description |
| "Identify the sequence in the bundle."; |
| } |
| leaf src-interface-ref { |
| type string; |
| description |
| "Reference to component link interface on the |
| source node."; |
| } |
| leaf des-interface-ref { |
| type string; |
| description |
| "Reference to component link interface on the |
| destinatioin node."; |
| } |
| } |
| } |
| } |
| } // bundle-stack-level |
| |
| leaf-list te-link-template { |
| if-feature template; |
| type leafref { |
| path "../../../../../te/templates/link-template/name"; |
| } |
| description |
| "The reference to a TE link template."; |
| } |
| uses te-link-config-attributes; |
| } // te-link-config |
| |
| grouping te-link-config-attributes { |
| description |
| "Link configuration attributes in a TE topology."; |
| container te-link-attributes { |
| description "Link attributes in a TE topology."; |
| uses sch:schedules; |
| leaf access-type { |
| type te-types:te-link-access-type; |
| description |
| "Link access type, which can be point-to-point or |
| multi-access."; |
| } |
| container external-domain { |
| description |
| "For an inter-domain link, specify the attributes of |
| the remote end of link, to facilitate the signalling at |
| local end."; |
| leaf remote-te-node-id { |
| type te-types:te-node-id; |
| description |
| "Remote TE node identifier, used together with |
| remote-te-link-id to identify the remote link |
| termination point in a different domain."; |
| } |
| leaf remote-te-link-tp-id { |
| type te-types:te-tp-id; |
| description |
| "Remote TE link termination point identifier, used |
| together with remote-te-node-id to identify the remote |
| link termination point in a different domain."; |
| } |
| leaf plug-id { |
| type uint32; |
| description |
| "A topology-wide unique number that identifies on the |
| network a connectivity supporting a given inter-domain |
| TE link. This is more flexible alternative to specifying |
| remote-te-node-id and remote-te-link-tp-id, when the |
| provider does not know remote-te-node-id and |
| remote-te-link-tp-id or need to give client the |
| flexibility to mix-n-match multiple topologies."; |
| } |
| } |
| leaf is-abstract { |
| type empty; |
| description "Present if the link is abstract."; |
| } |
| leaf name { |
| type string; |
| description "Link Name."; |
| } |
| container underlay { |
| if-feature te-topology-hierarchy; |
| presence |
| "Indicates the underlay exists for this link."; |
| description "Attributes of the te-link underlay."; |
| reference |
| "RFC4206: Label Switched Paths (LSP) Hierarchy with |
| Generalized Multi-Protocol Label Switching (GMPLS) |
| Traffic Engineering (TE)"; |
| |
| uses te-link-underlay-attributes; |
| } // underlay |
| leaf admin-status { |
| type te-types:te-admin-status; |
| description |
| "The administrative state of the link."; |
| } |
| |
| uses performance-metric-throttle-container; |
| uses te-link-info-attributes; |
| } // te-link-attributes |
| } // te-link-config-attributes |
| |
| grouping te-link-connectivity-attributes { |
| description |
| "Advertised TE connectivity attributes."; |
| leaf max-link-bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Maximum bandwidth that can be seen on this link in this |
| direction. Units in bytes per second."; |
| reference |
| "RFC3630: Traffic Engineering (TE) Extensions to OSPF |
| Version 2. |
| RFC5305: IS-IS Extensions for Traffic Engineering."; |
| } |
| leaf max-resv-link-bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Maximum amount of bandwidth that can be reserved in this |
| direction in this link. Units in bytes per second."; |
| reference |
| "RFC3630: Traffic Engineering (TE) Extensions to OSPF |
| Version 2. |
| RFC5305: IS-IS Extensions for Traffic Engineering."; |
| } |
| list unreserved-bandwidth { |
| key "priority"; |
| max-elements "8"; |
| description |
| "Unreserved bandwidth for 0-7 priority levels. Units in |
| bytes per second."; |
| reference |
| "RFC3630: Traffic Engineering (TE) Extensions to OSPF |
| Version 2. |
| RFC5305: IS-IS Extensions for Traffic Engineering."; |
| leaf priority { |
| type uint8 { |
| range "0..7"; |
| } |
| description "Priority."; |
| } |
| leaf bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Unreserved bandwidth for this level."; |
| } |
| } |
| leaf te-default-metric { |
| type uint32; |
| description |
| "Traffic Engineering Metric."; |
| } |
| container performance-metric { |
| if-feature te-performance-metric; |
| description |
| "Link performance information in real time."; |
| reference |
| "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. |
| RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. |
| RFC7823: Performance-Based Path Selection for Explicitly |
| Routed Label Switched Paths (LSPs) Using TE Metric |
| Extensions"; |
| container measurement { |
| description |
| "Measured performance metric values. Static configuration |
| and manual overrides of these measurements are also |
| allowed."; |
| uses performance-metric-attributes; |
| } |
| container normality |
| { |
| description |
| "Performance metric normality values."; |
| uses performance-metric-normality-attributes; |
| } |
| } |
| container te-srlgs { |
| description |
| "A list of SLRGs."; |
| leaf-list value { |
| type te-types:srlg; |
| description "SRLG value."; |
| reference |
| "RFC4202: Routing Extensions in Support of |
| Generalized Multi-Protocol Label Switching (GMPLS)."; |
| } |
| } |
| } // te-link-connectivity-attributes |
| |
| grouping te-link-info-attributes { |
| description |
| "Advertised TE information attributes."; |
| leaf link-index { |
| type uint64; |
| description |
| "The link identifier. If OSPF is used, this represents an |
| ospfLsdbID. If IS-IS is used, this represents an isisLSPID. |
| If a locally configured link is used, this object represents |
| a unique value, which is locally defined in a router."; |
| } |
| leaf administrative-group { |
| type te-types:admin-groups; |
| description |
| "Administrative group or color of the link. |
| This attribute covers both administrative group (defined in |
| RFC3630, RFC5329, and RFC5305), and extended administrative |
| group (defined in RFC7308)."; |
| } |
| uses interface-switching-capability-list; |
| leaf link-protection-type { |
| type enumeration { |
| enum "unprotected" { |
| description "Unprotected."; |
| } |
| enum "extra-traffic" { |
| description "Extra traffic."; |
| } |
| enum "shared" { |
| description "Shared."; |
| } |
| enum "1-for-1" { |
| description "One for one protection."; |
| } |
| enum "1-plus-1" { |
| description "One plus one protection."; |
| } |
| enum "enhanced" { |
| description "Enhanced protection."; |
| } |
| } |
| description |
| "Link Protection Type desired for this link."; |
| reference |
| "RFC4202: Routing Extensions in Support of |
| Generalized Multi-Protocol Label Switching (GMPLS)."; |
| } |
| uses te-link-connectivity-attributes; |
| } // te-link-info-attributes |
| |
| grouping te-link-state-derived { |
| description |
| "Link state attributes in a TE topology."; |
| leaf oper-status { |
| type te-types:te-oper-status; |
| description |
| "The current operational state of the link."; |
| } |
| leaf is-transitional { |
| type empty; |
| description |
| "Present if the link is transitional, used as an |
| alternative approach in lieu of inter-layer-lock-id |
| for path computation in a TE topology covering multiple |
| layers or multiple regions."; |
| reference |
| "RFC5212: Requirements for GMPLS-Based Multi-Region and |
| Multi-Layer Networks (MRN/MLN). |
| RFC6001: Generalized MPLS (GMPLS) Protocol Extensions |
| for Multi-Layer and Multi-Region Networks (MLN/MRN)."; |
| } |
| uses information-source-attributes; |
| list information-source-entry { |
| key "information-source"; |
| description |
| "A list of information sources learned, including the one |
| used."; |
| uses information-source-attributes; |
| uses te-link-info-attributes; |
| } |
| container recovery { |
| description |
| "Status of the recovery process."; |
| leaf restoration-status { |
| type te-types:te-recovery-status; |
| description |
| "Restoration status."; |
| } |
| leaf protection-status { |
| type te-types:te-recovery-status; |
| description |
| "Protection status."; |
| } |
| } |
| container underlay { |
| if-feature te-topology-hierarchy; |
| description "State attributes for te-link underlay."; |
| uses te-link-state-underlay-attributes; |
| } |
| } // te-link-state-derived |
| |
| grouping te-link-state-underlay-attributes { |
| description "State attributes for te-link underlay."; |
| leaf dynamic { |
| type boolean; |
| description |
| "true if the underlay is dynamically created."; |
| } |
| leaf committed { |
| type boolean; |
| description |
| "true if the underlay is committed."; |
| } |
| } // te-link-state-underlay-attributes |
| |
| grouping te-link-underlay-attributes { |
| description "Attributes for te-link underlay."; |
| reference |
| "RFC4206: Label Switched Paths (LSP) Hierarchy with |
| Generalized Multi-Protocol Label Switching (GMPLS) |
| Traffic Engineering (TE)"; |
| container underlay-primary-path { |
| description |
| "The service path on the underlay topology that |
| supports this link."; |
| uses te-topology-ref; |
| list path-element { |
| key "path-element-id"; |
| description |
| "A list of path elements describing the service path."; |
| leaf path-element-id { |
| type uint32; |
| description "To identify the element in a path."; |
| } |
| uses te-path-element; |
| } |
| } // underlay-primary-path |
| list underlay-backup-path { |
| key "index"; |
| description |
| "A list of backup service paths on the underlay topology that |
| protect the underlay primary path. If the primary path is |
| not protected, the list contains zero elements. If the |
| primary path is protected, the list contains one or more |
| elements."; |
| leaf index { |
| type uint32; |
| description |
| "A sequence number to identify a backup path."; |
| } |
| uses te-topology-ref; |
| list path-element { |
| key "path-element-id"; |
| description |
| "A list of path elements describing the backup service |
| path"; |
| leaf path-element-id { |
| type uint32; |
| description "To identify the element in a path."; |
| } |
| uses te-path-element; |
| } |
| } // underlay-backup-path |
| leaf underlay-protection-type { |
| type uint16; |
| description |
| "Underlay protection type desired for this link"; |
| } |
| container underlay-trail-src { |
| uses nt:tp-ref; |
| description |
| "Source TE link of the underlay trail."; |
| } |
| container underlay-trail-des { |
| uses nt:tp-ref; |
| description |
| "Destination TE link of the underlay trail."; |
| } |
| } // te-link-underlay-attributes |
| |
| grouping te-node-augment { |
| description |
| "Augmentation for TE node."; |
| |
| container te { |
| presence "TE support."; |
| description |
| "Indicates TE support."; |
| |
| leaf te-node-id { |
| type te-types:te-node-id; |
| mandatory true; |
| description |
| "The identifier of a node in the TE topology. |
| A node is specific to a topology to which it belongs."; |
| } |
| |
| container config { |
| description |
| "Configuration data."; |
| uses te-node-config; |
| } // config |
| container state { |
| config false; |
| description |
| "Operational state data."; |
| |
| uses te-node-config; |
| uses te-node-state-derived; |
| } // state |
| |
| list tunnel-termination-point { |
| key "tunnel-tp-id"; |
| description |
| "A termination point can terminate a tunnel."; |
| leaf tunnel-tp-id { |
| type binary; |
| description |
| "Tunnel termination point identifier."; |
| } |
| |
| container config { |
| description |
| "Configuration data."; |
| uses te-node-tunnel-termination-capability; |
| } |
| |
| container state { |
| config false; |
| description |
| "Operational state data."; |
| |
| uses te-node-tunnel-termination-capability; |
| } // state |
| |
| } // tunnel-termination-point |
| } // te |
| } // te-node-augment |
| |
| grouping te-node-config { |
| description "TE node configuration grouping."; |
| |
| leaf-list te-node-template { |
| if-feature template; |
| type leafref { |
| path "../../../../../te/templates/node-template/name"; |
| } |
| description |
| "The reference to a TE node template."; |
| } |
| uses te-node-config-attributes; |
| } // te-node-config |
| |
| grouping te-node-config-attributes { |
| description "Configuration node attributes in a TE topology."; |
| container te-node-attributes { |
| description "Containing node attributes in a TE topology."; |
| uses sch:schedules; |
| leaf admin-status { |
| type te-types:te-admin-status; |
| description |
| "The administrative state of the link."; |
| } |
| uses te-node-connectivity-matrix; |
| uses te-node-info-attributes; |
| } // te-node-attributes |
| } // te-node-config-attributes |
| |
| grouping te-node-config-attributes-notification { |
| description |
| "Configuration node attributes for template in a TE topology."; |
| container te-node-attributes { |
| description "Containing node attributes in a TE topology."; |
| uses sch:schedules; |
| leaf admin-status { |
| type te-types:te-admin-status; |
| description |
| "The administrative state of the link."; |
| } |
| uses te-node-connectivity-matrix-abs; |
| uses te-node-info-attributes; |
| } // te-node-attributes |
| } // te-node-config-attributes-notification |
| |
| grouping te-node-config-attributes-template { |
| description |
| "Configuration node attributes for template in a TE topology."; |
| container te-node-attributes { |
| description "Containing node attributes in a TE topology."; |
| uses sch:schedules; |
| leaf admin-status { |
| type te-types:te-admin-status; |
| description |
| "The administrative state of the link."; |
| } |
| uses te-node-info-attributes; |
| } // te-node-attributes |
| } // te-node-config-attributes-template |
| |
| grouping te-node-connectivity-matrix { |
| description "Connectivity matrix on a TE node."; |
| list connectivity-matrix { |
| key "id"; |
| description |
| "Represents node's switching limitations, i.e. limitations |
| in interconnecting network TE links across the node."; |
| reference |
| "RFC7579: General Network Element Constraint Encoding |
| for GMPLS-Controlled Networks."; |
| leaf id { |
| type uint32; |
| description "Identifies the connectivity-matrix entry."; |
| } |
| container from { |
| leaf tp-ref { |
| type leafref { |
| path "../../../../../../nt:termination-point/nt:tp-id"; |
| } |
| description |
| "Relative reference to source termination point."; |
| } |
| description |
| "Reference to source NTP."; |
| } |
| container to { |
| leaf tp-ref { |
| type leafref { |
| path "../../../../../../nt:termination-point/nt:tp-id"; |
| } |
| description |
| "Relative reference to destination termination point."; |
| } |
| description |
| "Reference to destination NTP."; |
| } |
| leaf is-allowed { |
| type boolean; |
| description |
| "true - switching is allowed, |
| false - switching is disallowed."; |
| } |
| uses connectivity-label-restriction-list; |
| uses te-link-connectivity-attributes; |
| } |
| } // te-node-connectivity-matrix |
| |
| grouping te-node-connectivity-matrix-abs { |
| description |
| "Connectivity matrix on a TE node, using absolute |
| paths to reference termination points."; |
| list connectivity-matrix { |
| key "id"; |
| description |
| "Represents node's switching limitations, i.e. limitations |
| in interconnecting network TE links across the node."; |
| reference |
| "RFC7579: General Network Element Constraint Encoding |
| for GMPLS-Controlled Networks."; |
| leaf id { |
| type uint32; |
| description "Identifies the connectivity-matrix entry."; |
| } |
| container from { |
| uses nt:tp-ref; |
| description |
| "Reference to source NTP."; |
| } |
| container to { |
| uses nt:tp-ref; |
| description |
| "Reference to destination NTP."; |
| } |
| leaf is-allowed { |
| type boolean; |
| description |
| "true - switching is allowed, |
| false - switching is disallowed."; |
| } |
| } |
| } // te-node-connectivity-matrix-abs |
| |
| grouping te-node-info-attributes { |
| description |
| "Advertised TE information attributes."; |
| leaf domain-id { |
| type uint32; |
| description |
| "Identifies the domain that this node belongs. |
| This attribute is used to support inter-domain links."; |
| reference |
| "RFC5152: A Per-Domain Path Computation Method for |
| Establishing Inter-Domain Traffic Engineering (TE) |
| Label Switched Paths (LSPs). |
| RFC5392: OSPF Extensions in Support of Inter-Autonomous |
| System (AS) MPLS and GMPLS Traffic Engineering. |
| RFC5316: ISIS Extensions in Support of Inter-Autonomous |
| System (AS) MPLS and GMPLS Traffic Engineering."; |
| } |
| leaf is-abstract { |
| type empty; |
| description |
| "Present if the node is abstract, not present if the node |
| is actual."; |
| } |
| leaf name { |
| type inet:domain-name; |
| description "Node name."; |
| } |
| leaf-list signaling-address { |
| type inet:ip-address; |
| description "Node signaling address."; |
| } |
| container underlay-topology { |
| if-feature te-topology-hierarchy; |
| description |
| "When an abstract node encapsulates a topology, |
| the attributes in this container point to said topology."; |
| uses te-topology-ref; |
| } |
| } // te-node-info-attributes |
| |
| grouping te-node-state-derived { |
| description "Node state attributes in a TE topology."; |
| leaf oper-status { |
| type te-types:te-oper-status; |
| description |
| "The current operational state of the node."; |
| } |
| leaf is-multi-access-dr { |
| type empty; |
| description |
| "The presence of this attribute indicates that this TE node |
| is a pseudonode elected as a designated router."; |
| reference |
| "RFC3630: Traffic Engineering (TE) Extensions to OSPF |
| Version 2. |
| RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual |
| Environments."; |
| } |
| uses information-source-attributes; |
| list information-source-entry { |
| key "information-source"; |
| description |
| "A list of information sources learned, including the one |
| used."; |
| uses information-source-attributes; |
| uses te-node-connectivity-matrix; |
| uses te-node-info-attributes; |
| } |
| } // te-node-state-derived |
| |
| grouping te-node-state-derived-notification { |
| description "Node state attributes in a TE topology."; |
| leaf oper-status { |
| type te-types:te-oper-status; |
| description |
| "The current operational state of the node."; |
| } |
| leaf is-multi-access-dr { |
| type empty; |
| description |
| "The presence of this attribute indicates that this TE node |
| is a pseudonode elected as a designated router."; |
| reference |
| "RFC3630: Traffic Engineering (TE) Extensions to OSPF |
| Version 2. |
| RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual |
| Environments."; |
| } |
| uses information-source-attributes; |
| list information-source-entry { |
| key "information-source"; |
| description |
| "A list of information sources learned, including the one |
| used."; |
| uses information-source-attributes; |
| uses te-node-connectivity-matrix-abs; |
| uses te-node-info-attributes; |
| } |
| } // te-node-state-derived-notification |
| |
| grouping te-node-tunnel-termination-capability { |
| description |
| "Termination capability of a tunnel termination point on a |
| TE node."; |
| |
| leaf switching-capability { |
| type identityref { |
| base te-types:switching-capabilities; |
| } |
| description |
| "Switching Capability for this interface."; |
| } |
| leaf encoding { |
| type identityref { |
| base te-types:lsp-encoding-types; |
| } |
| description |
| "Encoding supported by this interface."; |
| } |
| leaf inter-layer-lock-id { |
| type uint32; |
| description |
| "Inter layer lock ID, used for path computation in a TE |
| topology covering multiple layers or multiple regions."; |
| reference |
| "RFC5212: Requirements for GMPLS-Based Multi-Region and |
| Multi-Layer Networks (MRN/MLN). |
| RFC6001: Generalized MPLS (GMPLS) Protocol Extensions |
| for Multi-Layer and Multi-Region Networks (MLN/MRN)."; |
| } |
| leaf protection-type { |
| type identityref { |
| base te-types:lsp-prot-type; |
| } |
| description |
| "The protection type that this tunnel termination point |
| is capable of."; |
| } |
| |
| list termination-capability { |
| key "link-tp"; |
| description |
| "The termination capabilities between |
| tunnel-termination-point and link termination-point. |
| The capability information can be used to compute |
| the tunnel path. |
| The Interface Adjustment Capability Descriptors (IACD) |
| [RFC6001] on each link-tp can be derived from this |
| termination-capability list."; |
| reference |
| "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions |
| for Multi-Layer and Multi-Region Networks (MLN/MRN)."; |
| leaf link-tp { |
| type leafref { |
| path "../../../../../nt:termination-point/nt:tp-id"; |
| } |
| description |
| "Link termination point."; |
| } |
| |
| uses connectivity-label-restriction-list; |
| |
| list max-lsp-bandwidth { |
| key "priority"; |
| max-elements "8"; |
| description |
| "Maximum LSP Bandwidth at priorities 0-7."; |
| reference |
| "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions |
| for Multi-Layer and Multi-Region Networks (MLN/MRN)."; |
| leaf priority { |
| type uint8 { |
| range "0..7"; |
| } |
| description "Priority."; |
| } |
| leaf bandwidth { |
| type decimal64 { |
| fraction-digits 2; |
| } |
| description |
| "Max LSP Bandwidth for this level."; |
| } |
| } // max-lsp-bandwidth |
| } // termination-capability |
| } // te-node-tunnel-termination-capability |
| |
| grouping te-path-element { |
| description |
| "A group of attributes defining an element in a TE path |
| such as TE node, TE link, TE atomic resource or label."; |
| uses te-types:explicit-route-subobject; |
| } // te-path-element |
| |
| grouping te-termination-point-augment { |
| description |
| "Augmentation for TE termination point."; |
| |
| container te { |
| presence "TE support."; |
| description |
| "Indicates TE support."; |
| |
| leaf te-tp-id { |
| type te-types:te-tp-id; |
| mandatory true; |
| description |
| "An identifier to uniquely identify a TE termination |
| point."; |
| } |
| |
| container config { |
| description |
| "Configuration data."; |
| uses te-termination-point-config; |
| } // config |
| container state { |
| config false; |
| description |
| "Operational state data."; |
| uses te-termination-point-config; |
| } // state |
| } // te |
| } // te-termination-point-augment |
| |
| grouping te-termination-point-config { |
| description |
| "TE termination point configuration grouping."; |
| uses sch:schedules; |
| uses interface-switching-capability-list; |
| leaf inter-layer-lock-id { |
| type uint32; |
| description |
| "Inter layer lock ID, used for path computation in a TE |
| topology covering multiple layers or multiple regions."; |
| reference |
| "RFC5212: Requirements for GMPLS-Based Multi-Region and |
| Multi-Layer Networks (MRN/MLN). |
| RFC6001: Generalized MPLS (GMPLS) Protocol Extensions |
| for Multi-Layer and Multi-Region Networks (MLN/MRN)."; |
| } |
| } // te-termination-point-config |
| |
| grouping te-topologies-augment { |
| description |
| "Augmentation for TE topologies."; |
| |
| container te { |
| presence "TE support."; |
| description |
| "Indicates TE support."; |
| |
| container templates { |
| description |
| "Configuration parameters for templates used for TE |
| topology."; |
| |
| list node-template { |
| if-feature template; |
| key "name"; |
| leaf name { |
| type te-types:te-template-name; |
| description |
| "The name to identify a TE node template."; |
| } |
| description |
| "The list of TE node templates used to define sharable |
| and reusable TE node attributes."; |
| uses template-attributes; |
| uses te-node-config-attributes-template; |
| } // node-template |
| |
| list link-template { |
| if-feature template; |
| key "name"; |
| leaf name { |
| type te-types:te-template-name; |
| description |
| "The name to identify a TE link template."; |
| } |
| description |
| "The list of TE link templates used to define sharable |
| and reusable TE link attributes."; |
| uses template-attributes; |
| uses te-link-config-attributes; |
| } // link-template |
| } // templates |
| } // te |
| } // te-topologies-augment |
| |
| grouping te-topology-augment { |
| description |
| "Augmentation for TE topology."; |
| |
| container te { |
| presence "TE support."; |
| description |
| "Indicates TE support."; |
| |
| leaf provider-id { |
| type te-types:te-global-id; |
| mandatory true; |
| description |
| "An identifier to uniquely identify a provider."; |
| } |
| leaf client-id { |
| type te-types:te-global-id; |
| mandatory true; |
| description |
| "An identifier to uniquely identify a client."; |
| } |
| leaf te-topology-id { |
| type te-types:te-topology-id; |
| mandatory true; |
| description |
| "It is presumed that a datastore will contain many |
| topologies. To distinguish between topologies it is |
| vital to have UNIQUE topology identifiers."; |
| } |
| |
| container config { |
| description |
| "Configuration data."; |
| uses te-topology-config; |
| } // config |
| container state { |
| config false; |
| description |
| "Operational state data."; |
| uses te-topology-config; |
| } // state |
| } // te |
| } // te-topology-augment |
| |
| grouping te-topology-config { |
| description |
| "TE topology configuration grouping."; |
| uses sch:schedules; |
| leaf preference { |
| type uint8 { |
| range "1..255"; |
| } |
| description |
| "Specifies a preference for this topology. A lower number |
| indicates a higher preference."; |
| } |
| leaf optimization-criterion { |
| type identityref { |
| base te-types:te-optimization-criterion; |
| } |
| description |
| "Optimization criterion applied to this topology."; |
| reference |
| "RFC3272: Overview and Principles of Internet Traffic |
| Engineering."; |
| } |
| } // te-topology-config |
| |
| grouping te-topology-ref { |
| description |
| "References a TE topology."; |
| leaf provider-id-ref { |
| type leafref { |
| path "/nw:networks/nw:network[nw:network-id = " |
| + "current()/../network-id-ref]/tet:te/tet:provider-id"; |
| require-instance false; |
| } |
| description |
| "A reference to a provider-id."; |
| } |
| leaf client-id-ref { |
| type leafref { |
| path "/nw:networks/nw:network[nw:network-id = " |
| + "current()/../network-id-ref]/tet:te/tet:client-id"; |
| require-instance false; |
| } |
| description |
| "A reference to a client-id."; |
| } |
| leaf te-topology-id-ref { |
| type leafref { |
| path "/nw:networks/nw:network[nw:network-id = " |
| + "current()/../network-id-ref]/tet:te/tet:te-topology-id"; |
| require-instance false; |
| } |
| description |
| "A reference to a te-topology-id."; |
| } |
| leaf network-id-ref { |
| type leafref { |
| path "/nw:networks/nw:network/nw:network-id"; |
| require-instance false; |
| } |
| description |
| "A reference to a network-id in base ietf-network module."; |
| } |
| } // te-topology-ref |
| |
| grouping te-topology-type { |
| description |
| "Identifies the TE topology type."; |
| container te-topology { |
| presence "Indicates TE topology."; |
| description |
| "Its presence identifies the TE topology type."; |
| } |
| } // te-topology-type |
| |
| grouping template-attributes { |
| description |
| "Common attributes for all templates."; |
| |
| leaf priority { |
| type uint16; |
| description |
| "The preference value to resolve conflicts between different |
| templates. When two or more templates specify values for |
| one configuration attribute, the value from the template |
| with the highest priority is used."; |
| } |
| leaf reference-change-policy { |
| type enumeration { |
| enum no-action { |
| description |
| "When an attribute changes in this template, the |
| configuration node referring to this template does |
| not take any action."; |
| } |
| enum not-allowed { |
| description |
| "When any configuration object has a reference to this |
| template, changing this template is not allowed."; |
| } |
| enum cascade { |
| description |
| "When an attribute changes in this template, the |
| configuration object referring to this template applies |
| the new attribute value to the corresponding |
| configuration."; |
| } |
| } |
| description |
| "This attribute specifies the action taken to a configuration |
| node that has a reference to this template."; |
| } |
| } // template-attributes |
| |
| /* |
| * Configuration data nodes |
| */ |
| augment "/nw:networks/nw:network/nw:network-types" { |
| description |
| "Introduce new network type for TE topology."; |
| uses te-topology-type; |
| } |
| |
| augment "/nw:networks" { |
| description |
| "Augmentation parameters for TE topologies."; |
| uses te-topologies-augment; |
| } |
| |
| augment "/nw:networks/nw:network" { |
| when "nw:network-types/te-topology" { |
| description |
| "Augmentation parameters apply only for networks with |
| TE topology type."; |
| } |
| description |
| "Configuration parameters for TE topology."; |
| uses te-topology-augment; |
| } |
| |
| augment "/nw:networks/nw:network/nw:node" { |
| when "../nw:network-types/te-topology" { |
| description |
| "Augmentation parameters apply only for networks with |
| TE topology type."; |
| } |
| description |
| "Configuration parameters for TE at node level."; |
| uses te-node-augment; |
| } |
| |
| augment "/nw:networks/nw:network/nt:link" { |
| when "../nw:network-types/te-topology" { |
| description |
| "Augmentation parameters apply only for networks with |
| TE topology type."; |
| } |
| description |
| "Configuration parameters for TE at link level"; |
| uses te-link-augment; |
| } |
| |
| augment "/nw:networks/nw:network/nw:node/" |
| + "nt:termination-point" { |
| when "../../nw:network-types/te-topology" { |
| description |
| "Augmentation parameters apply only for networks with |
| TE topology type."; |
| } |
| description |
| "Configuration parameters for TE at termination point level"; |
| uses te-termination-point-augment; |
| } |
| |
| /* |
| * Operational state data nodes |
| */ |
| |
| /* |
| * Notifications |
| */ |
| |
| notification te-node-event { |
| description "Notification event for TE node."; |
| leaf event-type { |
| type te-types:te-topology-event-type; |
| description "Event type."; |
| } |
| uses nw:node-ref; |
| uses te-topology-type; |
| uses tet:te-node-config-attributes-notification; |
| uses tet:te-node-state-derived-notification; |
| } |
| |
| notification te-link-event { |
| description "Notification event for TE link."; |
| leaf event-type { |
| type te-types:te-topology-event-type; |
| description "Event type"; |
| } |
| uses nt:link-ref; |
| uses te-topology-type; |
| uses tet:te-link-config-attributes; |
| uses tet:te-link-state-derived; |
| } |
| |
| augment "/te-link-event/te-link-attributes/underlay" { |
| description "Add state attributes to te-link underlay."; |
| uses te-link-state-underlay-attributes; |
| } |
| } |