| module ietf-te-topology { |
| //yang-version 1.1; |
| namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology"; |
| |
| prefix "tet"; |
| |
| import ietf-yang-types { |
| prefix "yang"; |
| } |
| |
| import ietf-inet-types { |
| prefix "inet"; |
| } |
| |
| 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 "2017-01-10" { |
| description "Initial revision"; |
| reference "TBD"; |
| } |
| |
| /* |
| * Features |
| */ |
| feature nsrlg { |
| description |
| "This feature indicates that the system supports NSRLG |
| (Not Sharing Risk Link Group)."; |
| } |
| |
| feature te-topology-hierarchy { |
| description |
| "This feature indicates that the system allows underlay |
| and/or overlay TE topology hierarchy."; |
| } |
| |
| feature template { |
| description |
| "This feature indicates that the system supports |
| template configuration."; |
| } |
| |
| /* |
| * Typedefs |
| */ |
| typedef geographic-coordinate-degree { |
| type decimal64 { |
| fraction-digits 8; |
| } |
| description |
| "Decimal degree (DD) used to express latitude and longitude |
| geographic coordinates."; |
| } // geographic-coordinate-degree |
| |
| typedef te-bandwidth { |
| type string { |
| pattern |
| '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' |
| + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' |
| + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+' |
| + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' |
| + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' |
| + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*'; |
| } |
| description |
| "This is the generic bandwidth type that is a string containing |
| a list of numbers separated by commas, with each of these |
| number can be non-negative decimal, hex integer, or hex float: |
| (dec | hex | float)[*(','(dec | hex | float))] |
| For packet switching type, a float number is used, such as |
| 0x1p10. |
| For OTN switching type, a list of integers can be used, such |
| as '0,2,3,1', indicating 2 odu0's and 1 odu3. |
| For DWDM, a list of pairs of slot number and width can be |
| used, such as '0, 2, 3, 3', indicating a frequency slot 0 with |
| slot width 2 and a frequency slot 3 with slot width 3."; |
| } // te-bandwidth |
| |
| typedef te-info-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 "bgp-ls" { |
| description "BGP-LS."; |
| reference |
| "RFC7752: North-Bound Distribution of Link-State and |
| Traffic Engineering (TE) Information Using BGP"; |
| } |
| enum "system-processed" { |
| description "System processed entity."; |
| } |
| enum "other" { |
| description "Other source."; |
| } |
| } |
| description |
| "Describining the type of source that has provided the |
| related information, and the source credibility."; |
| } // te-info-source |
| |
| typedef te-path-disjointness { |
| type bits { |
| bit node { |
| position 0; |
| description "Node disjoint."; |
| } |
| bit link { |
| position 1; |
| description "Link disjoint."; |
| } |
| bit srlg { |
| position 2; |
| description "SRLG (Shared Risk Link Group) disjoint."; |
| } |
| } |
| description |
| "Type of the resource disjointness for a TE tunnel path."; |
| reference |
| "RFC4872: RSVP-TE Extensions in Support of End-to-End |
| Generalized Multi-Protocol Label Switching (GMPLS) |
| Recovery"; |
| } // te-path-disjointness |
| |
| /* |
| * 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 connectivity-matrix-entry-attributes { |
| description |
| "Attributes of connectivity matrix entry."; |
| leaf is-allowed { |
| type boolean; |
| description |
| "true - switching is allowed, |
| false - switching is disallowed."; |
| } |
| uses connectivity-label-restriction-list; |
| 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 |
| uses te-link-iscd-attributes; |
| uses te-link-connectivity-attributes; |
| } // connectivity-matrix-entry-attributes |
| |
| grouping geolocation-container { |
| description |
| "A container containing a GPS location."; |
| container geolocation{ |
| description |
| "A container containing a GPS location."; |
| leaf altitude { |
| type int64; |
| units millimeter; |
| description |
| "Distance above the sea level."; |
| } |
| leaf latitude { |
| type geographic-coordinate-degree { |
| range "-90..90"; |
| } |
| description |
| "Relative position north or south on the Earth's surface."; |
| } |
| leaf longitude { |
| type geographic-coordinate-degree { |
| range "-180..180"; |
| } |
| description |
| "Angular distance east or west on the Earth's surface."; |
| } |
| } // gps-location |
| } // geolocation-container |
| |
| grouping information-source-state-attributes { |
| description |
| "The attributes identifying source that has provided the |
| related information, and the source credibility."; |
| 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."; |
| } |
| leaf logical-network-element { |
| type string; |
| description |
| "When applicable, this is the name of a logical network |
| element from which the information is learned."; |
| } // logical-network-element |
| leaf network-instance { |
| type string; |
| description |
| "When applicable, this is the name of a network-instance |
| from which the information is learned."; |
| } // network-instance |
| } // information-source-state-attributes |
| |
| grouping information-source-per-link-attributes { |
| description |
| "Per node container of the attributes identifying source that |
| has provided the related information, and the source |
| credibility."; |
| leaf information-source { |
| type te-info-source; |
| description |
| "Indicates the source of the information."; |
| } |
| container information-source-state { |
| description |
| "The container contains state attributes related to |
| the information source."; |
| uses information-source-state-attributes; |
| 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; |
| leaf link-ref { |
| type leafref { |
| path "/nw:networks/nw:network[nw:network-id = " |
| + "current()/../network-ref]/nt:link/nt:link-id"; |
| require-instance false; |
| } |
| description |
| "A reference to a link-id."; |
| } |
| } // topology |
| } // information-source-state |
| } // information-source-per-link-attributes |
| |
| grouping information-source-per-node-attributes { |
| description |
| "Per node container of the attributes identifying source that |
| has provided the related information, and the source |
| credibility."; |
| leaf information-source { |
| type te-info-source; |
| description |
| "Indicates the source of the information."; |
| } |
| container information-source-state { |
| description |
| "The container contains state attributes related to |
| the information source."; |
| uses information-source-state-attributes; |
| 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; |
| leaf node-ref { |
| type leafref { |
| path "/nw:networks/nw:network[nw:network-id = " |
| + "current()/../network-ref]/nw:node/nw:node-id"; |
| require-instance false; |
| } |
| description |
| "A reference to a node-id."; |
| } |
| } // topology |
| } // information-source-state |
| } // information-source-per-node-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."; |
| } |
| uses te-link-iscd-attributes; |
| } // interface-switching-capability |
| } // interface-switching-capability-list |
| |
| grouping statistics-per-link { |
| description |
| "Statistics attributes per TE link."; |
| leaf discontinuity-time { |
| type yang:date-and-time; |
| mandatory true; |
| description |
| "The time on the most recent occasion at which any one or |
| more of this interface's counters suffered a |
| discontinuity. If no such discontinuities have occurred |
| since the last re-initialization of the local management |
| subsystem, then this node contains the time the local |
| management subsystem re-initialized itself."; |
| } |
| /* Administrative attributes */ |
| leaf disables { |
| type yang:counter32; |
| description |
| "Number of times that link was disabled."; |
| } |
| leaf enables { |
| type yang:counter32; |
| description |
| "Number of times that link was enabled."; |
| } |
| leaf maintenance-clears { |
| type yang:counter32; |
| description |
| "Number of times that link was put out of maintenance."; |
| } |
| leaf maintenance-sets { |
| type yang:counter32; |
| description |
| "Number of times that link was put in maintenance."; |
| } |
| leaf modifies { |
| type yang:counter32; |
| description |
| "Number of times that link was modified."; |
| } |
| /* Operational attributes */ |
| leaf downs { |
| type yang:counter32; |
| description |
| "Number of times that link was set to operational down."; |
| } |
| leaf ups { |
| type yang:counter32; |
| description |
| "Number of times that link was set to operational up."; |
| } |
| /* Recovery attributes */ |
| leaf fault-clears { |
| type yang:counter32; |
| description |
| "Number of times that link experienced fault clear event."; |
| } |
| leaf fault-detects { |
| type yang:counter32; |
| description |
| "Number of times that link experienced fault detection."; |
| } |
| leaf protection-switches { |
| type yang:counter32; |
| description |
| "Number of times that link experienced protection |
| switchover."; |
| } |
| leaf protection-reverts { |
| type yang:counter32; |
| description |
| "Number of times that link experienced protection |
| reversion."; |
| } |
| leaf restoration-failures { |
| type yang:counter32; |
| description |
| "Number of times that link experienced restoration |
| failure."; |
| } |
| leaf restoration-starts { |
| type yang:counter32; |
| description |
| "Number of times that link experienced restoration |
| start."; |
| } |
| leaf restoration-successes { |
| type yang:counter32; |
| description |
| "Number of times that link experienced restoration |
| success."; |
| } |
| leaf restoration-reversion-failures { |
| type yang:counter32; |
| description |
| "Number of times that link experienced restoration reversion |
| failure."; |
| } |
| leaf restoration-reversion-starts { |
| type yang:counter32; |
| description |
| "Number of times that link experienced restoration reversion |
| start."; |
| } |
| leaf restoration-reversion-successes { |
| type yang:counter32; |
| description |
| "Number of times that link experienced restoration reversion |
| success."; |
| } |
| } // statistics-per-link |
| |
| grouping statistics-per-node { |
| description |
| "Statistics attributes per TE node."; |
| leaf discontinuity-time { |
| type yang:date-and-time; |
| mandatory true; |
| description |
| "The time on the most recent occasion at which any one or |
| more of this interface's counters suffered a |
| discontinuity. If no such discontinuities have occurred |
| since the last re-initialization of the local management |
| subsystem, then this node contains the time the local |
| management subsystem re-initialized itself."; |
| } |
| container node { |
| description |
| "Containing TE node level statistics attributes."; |
| leaf disables { |
| type yang:counter32; |
| description |
| "Number of times that node was disabled."; |
| } |
| leaf enables { |
| type yang:counter32; |
| description |
| "Number of times that node was enabled."; |
| } |
| leaf maintenance-sets { |
| type yang:counter32; |
| description |
| "Number of times that node was put in maintenance."; |
| } |
| leaf maintenance-clears { |
| type yang:counter32; |
| description |
| "Number of times that node was put out of maintenance."; |
| } |
| leaf modifies { |
| type yang:counter32; |
| description |
| "Number of times that node was modified."; |
| } |
| } // node |
| container connectivity-matrix-entry { |
| description |
| "Containing connectivity matrix entry level statistics |
| attributes."; |
| leaf creates { |
| type yang:counter32; |
| description |
| "Number of times that a connectivity matrix entry was |
| created."; |
| reference |
| "RFC6241. Section 7.2 for 'create' operation. "; |
| } |
| leaf deletes { |
| type yang:counter32; |
| description |
| "Number of times that a connectivity matrix entry was |
| deleted."; |
| reference |
| "RFC6241. Section 7.2 for 'delete' operation. "; |
| } |
| leaf disables { |
| type yang:counter32; |
| description |
| "Number of times that a connectivity matrix entry was |
| disabled."; |
| } |
| leaf enables { |
| type yang:counter32; |
| description |
| "Number of times that a connectivity matrix entry was |
| enabled."; |
| } |
| leaf modifies { |
| type yang:counter32; |
| description |
| "Number of times that a connectivity matrix entry was |
| modified."; |
| } |
| } // connectivity-matrix-entry |
| } // statistics-per-node |
| |
| grouping statistics-per-ttp { |
| description |
| "Statistics attributes per TE TTP (Tunnel Termination Point)."; |
| leaf discontinuity-time { |
| type yang:date-and-time; |
| mandatory true; |
| description |
| "The time on the most recent occasion at which any one or |
| more of this interface's counters suffered a |
| discontinuity. If no such discontinuities have occurred |
| since the last re-initialization of the local management |
| subsystem, then this node contains the time the local |
| management subsystem re-initialized itself."; |
| } |
| container tunnel-termination-point { |
| description |
| "Containing TE TTP (Tunnel Termination Point) level |
| statistics attributes."; |
| /* Administrative attributes */ |
| leaf disables { |
| type yang:counter32; |
| description |
| "Number of times that TTP was disabled."; |
| } |
| leaf enables { |
| type yang:counter32; |
| description |
| "Number of times that TTP was enabled."; |
| } |
| leaf maintenance-clears { |
| type yang:counter32; |
| description |
| "Number of times that TTP was put out of maintenance."; |
| } |
| leaf maintenance-sets { |
| type yang:counter32; |
| description |
| "Number of times that TTP was put in maintenance."; |
| } |
| leaf modifies { |
| type yang:counter32; |
| description |
| "Number of times that TTP was modified."; |
| } |
| /* Operational attributes */ |
| leaf downs { |
| type yang:counter32; |
| description |
| "Number of times that TTP was set to operational down."; |
| } |
| leaf ups { |
| type yang:counter32; |
| description |
| "Number of times that TTP was set to operational up."; |
| } |
| leaf in-service-clears { |
| type yang:counter32; |
| description |
| "Number of times that TTP was taken out of service |
| (TE tunnel was released)."; |
| } |
| leaf in-service-sets { |
| type yang:counter32; |
| description |
| "Number of times that TTP was put in service by a TE |
| tunnel (TE tunnel was set up)."; |
| } |
| } // tunnel-termination-point |
| |
| container local-link-connectivity { |
| description |
| "Containing TE LLCL (Local Link Connectivity List) level |
| statistics attributes."; |
| leaf creates { |
| type yang:counter32; |
| description |
| "Number of times that an LLCL entry was created."; |
| reference |
| "RFC6241. Section 7.2 for 'create' operation. "; |
| } |
| leaf deletes { |
| type yang:counter32; |
| description |
| "Number of times that an LLCL entry was deleted."; |
| reference |
| "RFC6241. Section 7.2 for 'delete' operation."; |
| } |
| leaf disables { |
| type yang:counter32; |
| description |
| "Number of times that an LLCL entry was disabled."; |
| } |
| leaf enables { |
| type yang:counter32; |
| description |
| "Number of times that an LLCL entry was enabled."; |
| } |
| leaf modifies { |
| type yang:counter32; |
| description |
| "Number of times that an LLCL entry was modified."; |
| } |
| } // local-link-connectivity |
| } // statistics-per-ttp |
| |
| grouping te-link-augment { |
| description |
| "Augmentation for TE link."; |
| |
| container te { |
| must "count(../nt:supporting-link)<=1" { |
| description |
| "For a link in a TE topology, there cannot be more |
| than 1 supporting link. If one or more link paths are |
| abstracted, the underlay is used."; |
| } |
| 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 |
| container statistics { |
| config false; |
| description |
| "Statistics data."; |
| uses statistics-per-link; |
| } // statistics |
| } // 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."; |
| 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."; |
| uses te-topology-ref; |
| 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 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 te-bandwidth; |
| 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 te-bandwidth; |
| 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 te-bandwidth; |
| description |
| "Unreserved bandwidth for this level."; |
| } |
| } |
| leaf te-default-metric { |
| type uint32; |
| description |
| "Traffic engineering metric."; |
| } |
| leaf te-delay-metric { |
| type uint32; |
| description |
| "Traffic engineering delay metric."; |
| } |
| container te-srlgs { |
| description |
| "Containing 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)."; |
| } |
| } |
| container te-nsrlgs { |
| if-feature nsrlg; |
| description |
| "Containing a list of NSRLGs (Not Sharing Risk Link |
| Groups). |
| When an abstract TE link is configured, this list specifies |
| the request that underlay TE paths need to be mutually |
| disjoint with other TE links in the same groups."; |
| leaf-list id { |
| type uint32; |
| description |
| "NSRLG ID, uniquely configured within a topology."; |
| reference |
| "RFC4872: RSVP-TE Extensions in Support of End-to-End |
| Generalized Multi-Protocol Label Switching (GMPLS) |
| Recovery"; |
| } |
| } |
| } // 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-iscd-attributes { |
| description |
| "TE link ISCD (Interface Switching Capability Descriptor) |
| attributes."; |
| reference |
| "Sec 1.4, RFC4203: OSPF Extensions in Support of Generalized |
| Multi-Protocol Label Switching (GMPLS). Section 1.4."; |
| 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 te-bandwidth; |
| description |
| "Max LSP Bandwidth for this level"; |
| } |
| } |
| } // te-link-iscd-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-per-link-attributes; |
| list information-source-entry { |
| key "information-source"; |
| description |
| "A list of information sources learned, including the one |
| used."; |
| uses information-source-per-link-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 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; |
| } |
| } // primary-path |
| list 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 protection-type { |
| type uint16; |
| description |
| "Underlay protection type desired for this link"; |
| } |
| container tunnel-src { |
| uses te-tunnel-tp-ref; |
| description |
| "Source tunnel termination point of the underlay |
| tunnel."; |
| } |
| container tunnel-des { |
| uses te-tunnel-tp-ref; |
| description |
| "Destination tunnel termination point of the underlay |
| tunnel."; |
| } |
| leaf tunnel-id { |
| type uint16; |
| description |
| "Tunnel identifier used in the SESSION that remains constant |
| over the life of the tunnel. |
| This attribute is used together with underlay tunnel-src |
| and underlay tunnel-src. |
| The detailed information of this tunnel can be retrieved |
| from the ietf-te model."; |
| reference "RFC3209"; |
| } |
| leaf tunnel-sharing { |
| type boolean; |
| description |
| "'true' if the underlay tunnel can be shared with other |
| TE links; |
| 'false' if the underlay tunnel is dedicated to this |
| TE link."; |
| } |
| } // te-link-underlay-attributes |
| |
| grouping te-node-augment { |
| description |
| "Augmentation for TE node."; |
| |
| leaf te-node-id { |
| type te-types:te-node-id; |
| description |
| "The identifier of a node in the TE topology. |
| A node is specific to a topology to which it belongs."; |
| } |
| |
| container te { |
| must "../te-node-id" { |
| description |
| "te-node-id is mandatory."; |
| } |
| must "count(../nw:supporting-node)<=1" { |
| description |
| "For a node in a TE topology, there cannot be more |
| than 1 supporting node. If multiple nodes are abstracted, |
| the underlay-topology is used."; |
| } |
| presence "TE support."; |
| description |
| "Indicates TE support."; |
| |
| 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 |
| container statistics { |
| config false; |
| description |
| "Statistics data."; |
| uses statistics-per-node; |
| } // statistics |
| |
| 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-attributes; |
| } |
| container state { |
| config false; |
| description |
| "Operational state data."; |
| |
| uses te-node-tunnel-termination-attributes; |
| uses geolocation-container; |
| } // state |
| container statistics { |
| config false; |
| description |
| "Statistics data."; |
| uses statistics-per-ttp; |
| } // statistics |
| |
| // Relations to other tunnel termination points |
| list supporting-tunnel-termination-point { |
| // key "node-ref tunnel-tp-ref"; |
| key "network-ref node-ref tunnel-tp-ref"; |
| description |
| "Identifies the tunnel termination points, that this |
| tunnel termination point is depending on."; |
| // leaf node-ref { |
| // type leafref { |
| // path "../../../../nw:supporting-node/nw:node-ref"; |
| // require-instance false; |
| // } |
| // description |
| // "This leaf identifies in which node the supporting |
| // tunnel termination point is present."; |
| // } |
| uses nw:node-ref; |
| leaf tunnel-tp-ref { |
| type leafref { |
| path "/nw:networks/nw:network"+ |
| "[nw:network-id="+ |
| "current()/../../../../nw:supporting-node/"+ |
| "nw:network-ref]/"+ |
| "nw:node[nw:node-id=current()/../node-ref]/te/"+ |
| "tunnel-termination-point/tunnel-tp-id"; |
| require-instance false; |
| } |
| description |
| "Reference to the underlay node, must be in a |
| different topology"; |
| } |
| } // supporting-tunnel-termination-point |
| } // 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."; |
| 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-template { |
| description |
| "Configuration node attributes for template in a TE topology."; |
| container te-node-attributes { |
| description "Containing node attributes in a TE topology."; |
| 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."; |
| container connectivity-matrices { |
| description |
| "Containing connectivity matrix on a TE node."; |
| leaf number-of-entries { |
| type uint16; |
| description |
| "The number of connectivity matrix entries. |
| If this number is speficied in the configuration request, |
| the number is requested number of entries, which may not |
| all be listed in the list; |
| if this number is reported in the state data, |
| the number is the current number of operational entries."; |
| } |
| uses connectivity-matrix-entry-attributes; |
| 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."; |
| } |
| uses connectivity-matrix-entry-attributes; |
| } // connectivity-matrix |
| } // connectivity-matrices |
| } // 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."; |
| } |
| uses geolocation-container; |
| 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-per-node-attributes; |
| list information-source-entry { |
| key "information-source"; |
| description |
| "A list of information sources learned, including the one |
| used."; |
| uses information-source-per-node-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-per-node-attributes; |
| list information-source-entry { |
| key "information-source"; |
| description |
| "A list of information sources learned, including the one |
| used."; |
| uses information-source-per-node-attributes; |
| uses te-node-connectivity-matrix-abs; |
| uses te-node-info-attributes; |
| } |
| } // te-node-state-derived-notification |
| |
| grouping te-node-tunnel-termination-attributes { |
| 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."; |
| } |
| |
| container local-link-connectivities { |
| description |
| "Containing local link connectivity list for |
| a tunnel termination point on a TE node."; |
| leaf number-of-entries { |
| type uint16; |
| description |
| "The number of local link connectivity list entries. |
| If this number is speficied in the configuration request, |
| the number is requested number of entries, which may not |
| all be listed in the list; |
| if this number is reported in the state data, |
| the number is the current number of operational entries."; |
| } |
| uses connectivity-matrix-entry-attributes; |
| list local-link-connectivity { |
| key "link-tp-ref"; |
| 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 |
| local-link-connectivity list."; |
| reference |
| "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions |
| for Multi-Layer and Multi-Region Networks (MLN/MRN)."; |
| leaf link-tp-ref { |
| type leafref { |
| path "../../../../../../nt:termination-point/nt:tp-id"; |
| } |
| description |
| "Link termination point."; |
| } |
| |
| uses connectivity-matrix-entry-attributes; |
| } // local-link-connectivity |
| } // local-link-connectivities |
| } // te-node-tunnel-termination-attributes |
| |
| 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."; |
| |
| leaf te-tp-id { |
| type te-types:te-tp-id; |
| description |
| "An identifier to uniquely identify a TE termination |
| point."; |
| } |
| |
| container te { |
| must "../te-tp-id"; |
| presence "TE support."; |
| description |
| "Indicates TE support."; |
| |
| container config { |
| description |
| "Configuration data."; |
| uses te-termination-point-config; |
| } // config |
| container state { |
| config false; |
| description |
| "Operational state data."; |
| uses te-termination-point-config; |
| uses geolocation-container; |
| } // state |
| } // te |
| } // te-termination-point-augment |
| |
| grouping te-termination-point-config { |
| description |
| "TE termination point configuration grouping."; |
| 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."; |
| |
| leaf provider-id { |
| type te-types:te-global-id; |
| description |
| "An identifier to uniquely identify a provider."; |
| } |
| leaf client-id { |
| type te-types:te-global-id; |
| description |
| "An identifier to uniquely identify a client."; |
| } |
| leaf te-topology-id { |
| type te-types:te-topology-id; |
| description |
| "It is presumed that a datastore will contain many |
| topologies. To distinguish between topologies it is |
| vital to have UNIQUE topology identifiers."; |
| } |
| |
| container te { |
| must "../provider-id and ../client-id and ../te-topology-id"; |
| presence "TE support."; |
| description |
| "Indicates TE support."; |
| |
| container config { |
| description |
| "Configuration data."; |
| uses te-topology-config; |
| } // config |
| container state { |
| config false; |
| description |
| "Operational state data."; |
| uses te-topology-config; |
| uses geolocation-container; |
| } // state |
| } // te |
| } // te-topology-augment |
| |
| grouping te-topology-config { |
| description |
| "TE topology configuration grouping."; |
| 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."; |
| } |
| list nsrlg { |
| if-feature nsrlg; |
| key "id"; |
| description |
| "List of NSRLGs (Not Sharing Risk Link Groups)."; |
| reference |
| "RFC4872: RSVP-TE Extensions in Support of End-to-End |
| Generalized Multi-Protocol Label Switching (GMPLS) |
| Recovery"; |
| leaf id { |
| type uint32; |
| description |
| "Identify the NSRLG entry."; |
| } |
| leaf disjointness { |
| type te-path-disjointness; |
| description |
| "The type of resource disjointness."; |
| } |
| } // nsrlg |
| } // te-topology-config |
| |
| grouping te-topology-ref { |
| description |
| "References a TE topology."; |
| leaf network-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 te-tunnel-tp-ref { |
| description |
| "References a tunnel termination point in a TE topology."; |
| leaf tunnel-tp-ref { |
| type leafref { |
| path "/nw:networks/nw:network[nw:network-id=current()/../"+ |
| "network-ref]/nw:node[nw:node-id=current()/../node-ref]/"+ |
| "te/tunnel-termination-point/tunnel-tp-id"; |
| require-instance false; |
| } |
| description |
| "An absolute reference to a tunnel termination point. |
| (This should not be used for relative references. |
| In such a case, a relative path should be used instead.)"; |
| } |
| uses nw:node-ref; |
| } // te-tunnel-tp-ref |
| |
| 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; |
| } |
| |
| /* |
| * Notifications |
| */ |
| 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."; |
| 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 |
| |
| 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; |
| } |
| |
| } |