TEAS Working Group Xufeng Liu Internet Draft Ericsson Intended status: Standards Track Igor Bryskin Huawei Technologies Vishnu Pavan Beeram Juniper Networks Tarek Saad Cisco Systems Inc Himanshu Shah Ciena Oscar Gonzalez De Dios Telefonica Expires:September 21, 2016 March 21,January 8, 2017 July 8, 2016 YANG Data Model for TE Topologiesdraft-ietf-teas-yang-te-topo-04draft-ietf-teas-yang-te-topo-05 Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html This Internet-Draft will expire onSeptember 21, 2016.January 8, 2017. Copyright Notice Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Abstract This document defines a YANG data model for representing, retrieving and manipulating TE Topologies. The model serves as a base model that other technology specific TE Topology models can augment. Conventions used in this document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119 [RFC2119]. Table of Contents 1. Introduction...................................................3 1.1. Terminology...............................................4 1.2. Tree Structure - Legend...................................4 1.3. Prefixes in Data Node Names...............................5 2. Characterizing TE Topologies...................................5 3. Modeling Abstractions and Transformations......................7 3.1. TE Topology...............................................7 3.2. TE Node...................................................7 3.3. TE Link...................................................8 3.4. Transitional TE Link for Multi-Layer Topologies...........8 3.5. TE Link Termination Point(LTP)...........................8 3.5.(LTP)..........................10 3.6. TE Tunnel Termination Point(TTP).........................8 3.6.(TTP)........................10 3.7. TE Node ConnectivityMatrix...............................8 3.7.Matrix..............................11 3.8. TTP Local Link Connectivity List(LLCL)...................9 3.8. TE Path...................................................9(LLCL)..................11 3.9.UnderlayTEtopology......................................9Path..................................................11 3.10.OverlayTEtopology......................................9Inter-Layer Lock.....................................11 3.11. Underlay TE topology....................................13 3.12. Overlay TE topology.....................................13 3.13. Abstract TEtopology.....................................9topology....................................13 4. ModelApplicability...........................................11Applicability...........................................14 4.1. Native TETopologies.....................................11Topologies.....................................14 4.2. Customized TETopologies.................................13Topologies.................................16 4.3. Merging TE Topologies Provided by Multiple Providers.....18 4.4. Dealing with Multiple Abstract TE Topologies Provided by the Same Provider.................................................22 5. ModelingConsiderations.......................................15Considerations.......................................25 5.1. Generic network topology buildingblocks.................15blocks.................25 5.2. Technology agnostic TE Topologymodel....................16model....................25 5.3. ModelStructure..........................................16Structure..........................................26 5.4. TopologyIdentifiers.....................................18Identifiers.....................................27 5.5. Generic TE LinkAttributes...............................18Attributes...............................28 5.6. Generic TE NodeAttributes...............................19Attributes...............................28 5.7. TED InformationSources..................................19Sources..................................29 5.8. Overlay/UnderlayRelationship............................20Relationship............................30 5.9. SchedulingParameters....................................22Parameters....................................31 5.10.Templates...............................................22Templates...............................................31 5.11.Notifications...........................................23Notifications...........................................32 5.12. OpenItems..............................................23Items..............................................33 6. TreeStructure................................................23 6.1. Base TE Topology Module..................................23 6.2. Packet Switching TE Topology Module......................49Structure................................................33 7. TE Topology YangModules......................................50 7.1. Base TE Topology Module..................................50 7.2. Packet Switching TE Topology Module......................94Module.......................................62 8. SecurityConsiderations.......................................98Considerations......................................105 9. IANAConsiderations...........................................98Considerations..........................................105 10.References...................................................99References..................................................106 10.1. NormativeReferences....................................99References...................................106 10.2. InformativeReferences..................................99References.................................106 11.Acknowledgments.............................................100 Contributors....................................................100Acknowledgments.............................................107 Contributors....................................................107 Authors'Addresses..............................................100Addresses..............................................107 1. Introduction The Traffic Engineering Database (TED) is an essential component of Traffic Engineered (TE) systems that are based on MPLS-TE [RFC2702] and GMPLS [RFC3945]. The TED is a collection of all TE information about all TE nodes and TE links in the network. The TE Topology is a schematic arrangement of TE nodes and TE links present in a given TED. There could be one or more TE Topologies present in a given Traffic Engineered system. The TE Topology is the topology on which path computational algorithms are run to compute Traffic Engineered Paths (TE Paths). This document defines a YANG [RFC6020] data model for representing and manipulating TE Topologies. This model contains technology agnostic TE Topology building blocks that can be augmented and used by other technology-specific TE Topology models. 1.1. Terminology TED: The Traffic Engineering Database is a collection of all TE information about all TE nodes and TE links in a given network. TE-Topology: The TE Topology is a schematic arrangement of TE nodes and TE links in a given TED. It forms the basis for a graph suitable for TE path computations. Native TE Topology: Native TE Topology is a topology that is native to a given provider network. Native TE topology could be discovered via various routing protocols and/or subscribe/publish techniques. This is the topology on which path computational algorithms are run to compute TE Paths. Customized TE Topology: Customized TE Topology is a custom topology that is produced by a provider for a given Client. This topology typically augments the Client's Native TE Topology. Path computational algorithms aren't typically run on the Customized TE Topology; they are run on the Client's augmented Native TE Topology. 1.2. Tree Structure - Legend A simplified graphical representation of the data model is presented in Section 6. of this document. The following notations are used for the YANG model data tree representation. <status> <flags> <name> <opts> <type> <status> is one of: + for current x for deprecated o for obsolete <flags> is one of: rw for read-write configuration data ro for read-only non-configuration data -x for execution rpcs -n for notifications <name> is the name of the node If the node is augmented into the tree from another module, its name is printed as <prefix>:<name> <opts> is one of: ? for an optional leaf or node ! for a presence container * for a leaf-list or list Brackets [<keys>] for a list's keys Curly braces {<condition>} for optional feature that make node conditional Colon : for marking case nodes Ellipses ("...") subtree contents not shown Parentheses enclose choice and case nodes, and case nodes are also marked with a colon (":"). <type> is the name of the type for leafs and leaf-lists. 1.3. Prefixes in Data Node Names In this document, names of data nodes and other data model objects are prefixed using the standard prefix associated with the corresponding YANG imported modules, as shown in Table 1. +--------+-----------------+-----------+ | Prefix | YANG module | Reference | +--------+-----------------+-----------+ | yang | ietf-yang-types | [RFC6991] | | inet | ietf-inet-types | [RFC6991] | +--------+-----------------+-----------+ Table 1: Prefixes and corresponding YANG modules 2. Characterizing TE Topologies The data model proposed by this document takes the following characteristics of TE Topologies into account: - TE Topology is an abstract control-plane representation of the data-plane topology. Hence attributes specific to the data-plane must make their way into the corresponding TE Topology modeling. The TE Topology comprises of dynamic auto-discovered data (data that may change frequently - example: unreserved bandwidth available on data-plane links) as well as fairly static data (data that rarely changes- examples: layer network identification, switching and adaptation capabilities and limitations, fate sharing, administrative colors) associated with data-plane nodes and links. It is possible for a single TE Topology to encompass TE information at multiple switching layers. - TE Topologies are protocol independent. Information about topological elements may be learnt via link-state protocols, but the topology can exist without being dependent on any particular protocol. - TE Topology may not be congruent to the routing topology (topology constructed based on routing adjacencies) in a given TE System. There isn't always a one-to-one association between a TE-link and a routing adjacency. For example, the presence of a TE link between a pair of nodes doesn't necessarily imply the existence of a routing-adjacency between these nodes. - Each TE Topological element has an information source associated with it. In some scenarios, there could be more than one information source associated with each topological element. - TE Topologies can be hierarchical. Each node and link of a given TE Topology can be associated with respective underlay topology. This means that each node and link of a given TE Topology can be associated with an independent stack of supporting TE Topologies. - TE Topologies can be customized. TE topologies of a given network presented by the network provider to its client could be customized on per-client request basis. This customization could be performed by provider, by client or by provider/client negotiation. The relationship between a customized topology (as presented to the client) and provider's native topology (as known in its entirety to the provider itself) could be captured as hierarchical (overlay-underlay), but otherwise the two topologies are decoupled from each other. 3. Modeling Abstractions and Transformations Node-1 Node-3 +------------+ +------------+ | TTP-1 | | TTP-1 | |LTP __ | TE-Tunel-1 | __ | |-6 \/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\/ | o * * oLTP-1 Node-2 LTP-6o * * o | * * | +------------+ | * * | | * TTP-2* | | | | * TTP-2* | | * __ * |LTP-2 LTP-6| |LTP-1 LTP-5| * __ * | o* \/ *o-----------o************o-----------o* \/ *o |LTP * * | Link-12 | * | Link-23 | * * | |-5 * * | LTP-5| * |LTP-2 | * * | +--o------o--+ o************o +--o------o--+ LTP-4 LTP-3 | * * * | LTP-4 LTP-3 | ** * | +--o------o--+ LTP-4 LTP-3 Figure 1: TE Topology Modeling Abstractions 3.1. TE Topology TE topology is a traffic engineering representation of one or more layers of network topologies. TE topology is comprised of TE nodes (TE graph vertices) interconnected via TE links (TE graph edges). A TE topology is mapped to a TE graph. 3.2. TE Node TE node is an element of a TE topology (presented as a vertex on TE graph). TE node represents one or several nodes (physical switches), or a fraction of a node. TE node belongs to and is fully defined in exactly one TE topology. TE node is assigned with the TE topology scope unique ID. TE node attributes include information related to the data plane aspects of the associated node(s) (e.g. connectivity matrix), as well as configuration data (such as TE node name). A given TE node can be reached on the TE graph over one of TE links terminated by the TE node. Multi-layer TE nodes providing switching functions at multiple network layers are an example where a physical node can be decomposed into multiple logical TE nodes (fractions of a node). Some of these (logical) TE nodes may reside in the client layer TE topology while the remaining TE nodes belong to the server layer TE topology. In Figure 1, Node-1, Node-2, and Node-3 are TE nodes. 3.3. TE Link TE link is an element of a TE topology (presented as an edge on TE graph, arrows indicate one or both directions of the TE link). TE link represents one or several (physical) links or a fraction of a link. TE link belongs to and is fully defined in exactly one TE topology. TE link is assigned with the TE topology scope unique ID. TE link attributes include parameters related to the data plane aspects of the associated link(s) (e.g. unreserved bandwidth, resource maps/pools, etc.), as well as the configuration data (such as remote node/link IDs, SRLGs, administrative colors, etc.). TE link is connected to TE node, terminating the TE link via exactly one TE link termination point (LTP). In Figure 1, Link-12 and Link-23 are TE links. 3.4. Transitional TE LinkTermination Point (LTP) TE link termination point (LTP) is a conceptual point of connectionfor Multi-Layer Topologies Networks are typically composed ofa TE node tomultiple network layers where oneofor multiple signals in theTE links, terminated byclient layer network can be multiplexed and encapsulated into a server layer signal. The server layer signal can be carried in theTE node. Cardinality between an LTPserver layer network across multiple nodes until the server layer signal is terminated and theassociatedclient layer signals reappear in the node that terminates the server layer signal. Examples of multi-layer networks are: IP over MPLS over Ethernet, low order ODUk signals multiplexed into a high order ODUl (l>k) carried over an OCh signal (optical transport network). TElink is 1:0..1. In Figure 1, Node-2 has six LTPs: LTP-1links as defined in 3.3. can be used toLTP-6. 3.5.represent links within a network layer. In case of a multi-layer network, TETunnel Termination Point (TTP)nodes and TEtunnel termination point (TTP) is an elementlinks only allow representation of each network layer as a separate TE topologyrepresenting one or severalEach ofpotential transport service termination points (i.e. servicethese single layer TE topologies would be isolated from their clientadaptation points such as WDM/OCh transponder). TTP is associated with (hosted by) exactly oneand their server layer TEnode. TTP is assigned withtopology, if present (the highest and theTElowest network layer in the hierarchy only have a single adjacent layer below or above, respectively). Multiplexing of client layer signals and encapsulating them into a server layer signal requires a function that is provided inside a nodescope unique ID. Depending on(typically realized in hardware). This function is also called layer transition. One of theTE node's internal constraints,key requirements for path computation is to be able to calculate agiven TTP hosted bypath between two endpoints across a multi-layer network based on the TEnode could be accessed via one, several or alltopology representing this multi-layer network. This means that an additional TElinks terminated byconstruct is needed that represents potential layer transitions in the multi-layer TE-topology that connects the TE-topologies representing each separate network layer. The so-called transitional TEnode. In Figure 1, Node-1 has two TTPs: TTP-1link is such a construct andTTP-2. 3.6. TE Node Connectivity Matrix TEit represents the layer transition function residing inside a nodeconnectivity matrixthat is decomposed into multiple logical nodes that are represented as TE nodes. Hence, a transitional TEnode's attribute describing thelink connects a client layer node with a server layer node. A TEnode's switching limitationslink as defined ina form of valid switching combinations3.3. has LTPs of exactly the same kind on each link end whereas the transitional TEnode'slink has client layer LTPs(see below). Fromon thepoint of viewclient side ofa potential TE path arriving attheTE node attransitional link and in most cases agiven inbound LTP, the node's connectivity matrix describes valid (permissible) outbound LTPs forsingle server layer LTP on theTE path to leaveserver side. It should be noted that transitional links are a helper construct in the multi-layer TEnode from. In Figure 1, the connectivity matrix on Node-2 is: {<LTP-6, LTP-1>, <LTP-5, LTP-2>, <LTP-5, LTP-4>, <LTP-4, LTP-1>, <LTP-3, LTP-2>} 3.7. TTP Local Link Connectivity List (LLCL) TTP Local Link Connectivity List (LLCL) is a Listtopology and they only exist as long as they are not in use (as they represent potential connectivity). When the server layer trail has been established between the server layer LTP ofTEtwo transitional linksterminated byin theTTP hosting TE node (i.e. list ofserver layer network, theTEresulting client layer linkLTPs), whichin theTTP coulddata plane will beconnected to. Fromrepresented as a normal TE link in the client layer topology. The transitional TE links will re-appear when the server layer trail has been torn down. +------------------+ | +------+ | +------+ -----|Client|------+ | Client -----|Client| | |Layer |---+ | | Layer |Layer | -----|Switch|-+ | | | Links -----|Node | | +------+ | | | | +------+ | | | | | Client | | | | | | ---_| Layer --- --- ***|**********|*| \ /*|***************************\ /*\ /**** | --- | | Server Transitional | | | Layer \ / | | Layer Links | | | Term. | | | | | | | | | | | | +------+ | +------+ =============|Server|===== Server ====|Server|==== | |Layer | | Layer |Layer | =============|Switch|===== Links ====|Node |==== | +------+ | +------+ +------------------+ Physical Node View TE-Topology View Figure 2: Modeling a Multi-Layer Node (Dual-Layer Example) 3.5. TE Link Termination Point (LTP) TE link termination point (LTP) is a conceptual point ofviewconnection of apotentialTEpath LLCL provides a listnode to one ofvalid TE linksthe TEpath needs to start/stop on for the connection, takinglinks, terminated by the TEpath, to be successfully terminated onnode. Cardinality between an LTP and theTTP in question.associated TE link is 1:0..1. In Figure 1,the LLCL on Node-1 is: {<TTP-1, LTP-5>, <TTP-1, LTP-2>, <TTP-2, LTP-3>, <TTP-2, LTP4>} 3.8. TE PathNode-2 has six LTPs: LTP-1 to LTP-6. 3.6. TEpathTunnel Termination Point (TTP) TE tunnel termination point (TTP) is anordered listelement of TElinks and/ortopology representing one or several of potential transport service termination points (i.e. service client adaptation points such as WDM/OCh transponder). TTP is associated with (hosted by) exactly one TEnodesnode. TTP is assigned with the TE node scope unique ID. Depending on the TEtopology graph, inter-connectingnode's internal constraints, apair of TTPs to be takengiven TTP hosted bya potential connection.the TEpaths, for example,node could bea product of successful path computation performed for a given transport service.accessed via one, several or all TE links terminated by the TE node. In Figure 1,the TE Path for TE-Tunnel-1 is: {Node-1:TTP-1, Link-12, Node-2, Link-23, Node-3:TTP1} 3.9. UnderlayNode-1 has two TTPs: TTP-1 and TTP-2. 3.7. TEtopology UnderlayNode Connectivity Matrix TEtopologynode connectivity matrix is a TEtopology that serves as a base for constructing of overlay TE topologies 3.10. Overlay TE topology Overlaynode's attribute describing the TEtopology isnode's switching limitations in aTE topology constructed based on one or more underlay TE topologies. Each TE nodeform of valid switching combinations of theoverlayTEtopology represents an arbitrary segmentnode's LTPs (see below). From the point ofan underlay TE topology; each TE linkview ofthe overlay TE topology represents an arbitrarya potential TE pathin one ofarriving at theunderlay TE topologies. The overlayTEtopology andnode at a given inbound LTP, thesupporting underlay TE topologies may represent distinct layer networks (e.g. OTN/ODUk and WDM/OCh respectively) ornode's connectivity matrix describes valid (permissible) outbound LTPs for thesame layer network. 3.11. AbstractTEtopology Abstractpath to leave the TEtopologynode from. In Figure 1, the connectivity matrix on Node-2 is: {<LTP-6, LTP-1>, <LTP-5, LTP-2>, <LTP-5, LTP-4>, <LTP-4, LTP-1>, <LTP-3, LTP-2>} 3.8. TTP Local Link Connectivity List (LLCL) TTP Local Link Connectivity List (LLCL) isan overlaya List of TEtopology createdlinks terminated by the TTP hosting TE node (i.e. list of the TE link LTPs), which the TTP could be connected to. From the point of view of atopology provider and customized forpotential TE path LLCL provides atopology provider's client based on one or morelist of valid TE links theprovider's nativeTEtopologies (underlaypath needs to start/stop on for the connection, taking the TEtopologies),path, to be successfully terminated on theprovider's policies andTTP in question. In Figure 1, theclient's preferences. For example, a first level topology provider (such as Domain Controller) can createLLCL on Node-1 is: {<TTP-1, LTP-5>, <TTP-1, LTP-2>, <TTP-2, LTP-3>, <TTP-2, LTP4>} 3.9. TE Path TE path is anabstractordered list of TE links and/or TE nodes on the TE topology graph, inter-connecting a pair of TTPs to be taken by a potential connection. TE paths, forits client (e.g. Super Controller) based onexample, could be a product of successful path computation performed for a given transport service. In Figure 1, theprovider's one or more nativeTEtopologies, local policies/profilesPath for TE-Tunnel-1 is: {Node-1:TTP-1, Link-12, Node-2, Link-23, Node-3:TTP1} 3.10. TE Inter-Layer Lock TE inter-layer lock is a modeling concept describing client-server layer adaptation relationships and hence important for theclient's TE topology configuration requests Figure 2 showsmulti- layer traffic engineering. It is anexampleassociation ofabstract TE topology. +---+ +---+ |s31|--------------|S5 | +---+\ / +---+ \ / \ / \+---+/ +---+ /|AN1|\----------------|S8 | / +---+ \ +---+ +---+ / \ +---+ |S9 |-------------|S11| +---+ +---+ Abstract TE Topology +---+ +---+ |S1 |--------------------|S2 | +---+ +---+ / \ / \ +---+ / +---+ \ +---+ |s3 |--------------------|S4 |---------|S5 | +---+\ +---+ +---+ \ \ \ \ \ \ \+---+ +---+ +---+ /|S6 |\ |S7 |---------|S8 | / +---+ \ +---+\ /+---+ +---+ / \ +---+ +---+ / |S9 |-------------|S10|--------------|S11|/ +---+ +---+ +---+ Native TE Topology Figure 2: AbstractM client layer LTPs and N server layer TTPs, within which data arriving at any of the client layer LTPs could be adopted onto any of the server layer TTPs. TETopology 4. Model Applicability 4.1. Nativeinter-layer lock is identified by inter-layer lock ID, which is unique across all TETopologiestopologies provided by the same provider. Themodel discussed in this draft can be used to representclient layer LIPs andretrieve native TE topologies onthe server layer TTPs associated within a given TEsystem. +---+ +---+ +---+ +---+ +---+inter-layer lock are decorated with the same inter-layer lock ID attribute. (IL-1) C-LTP-1 +------------+ C-LTP-2 (IL-1) --------O (IL-1) O-------- (IL-1) C-LTP-3 | S-TTP-1 | C-LTP-4 (IL-1) --------O __ 0-------- (IL-1) C-LTP-5 | *\/* | C-LTP-5 (IL-1) --------O * * O-------- |R1|-------| R2|--------| R3|---------| R4|---------| R5| +---+ +---+ +---+ +---+ +---+*(IL-1)* |/ \ / \ /S-LTP-3 |/ \ / \ /* S-TTP-2* |/ \ / \ /S-LTP-4 --------o* __ *o-------- |/ \ / \ /*\/* |/ \ / \ / +---+ +---+ +---+ +---+|R6|-------------| R7|* * |R8|---------| R9| +---+ +---+ +---+ +---++--o------o--+ S-LTP-1 | | S-LTP-2 Figure3a: Example Network Topology Consider3: TE Inter-Layer Lock ID Associations On thenetwork topology depicted in Figure 3a (R1 .. R9 are nodes representing routers). An implementation MAY choose to constructpicture above anativeTETopology using all nodes and links present in the given TED as depicted in Figure 3b. The data model proposed in this document can be used to retrieve/represent this TE topology. --------------- | Native | | [ ] TE Node | TE-Topology | | +++ TE Link --------------- o-------------- [R1] ++++ [R2] ++++ [R3] ++++ [R4] ++++ [R5] + + + + + + + + + + + + + + ++ ++ [R6] +++++++++ [R7] [R8] ++++ [R9] Figure 3b: Native TE Topology as seen on Node R3 Consider the case ofinter-layer lock with IL_1 ID associates 6 client layer LTPs (C-LTP-1 - C-LTP-6) with two server layer TTPs (S- TTP-1 and S-TTP-2). They all have thetopology being split in a way that some nodes participate in OSPF-TE while others participate in ISIS-TE (Figure 4a). An implementation MAY choose to construct separatesame attribute - TETopologies based oninter-layer lock ID: IL-1, which is theinformation source. The native TE Topologies constructed usingonlynodes and linksthing thatwere learnt via a specific information source are depicted in Figure 4b. The data model proposed inindicates the association. A given LTP may have 0, 1 or more inter-layer lock IDs. In the latter case thisdocument can be used to retrieve/represent these TE topologies. Similarly,means that the datamodel canarriving at the LTP may beused to represent/retrieve a TE Topologyadopted onto any of TTPs associated with all specified inter-layer locks. For example, C-LTP-1 could have two inter-layer lock IDs - IL- 1 and IL-2. This would mean thatis constructed using only nodesC-LTP-1 for adaptation purposes could use not just TTPs associated with inter-layer lock IL-1 (i.e. S-TTP-1 andlinksS-TTP-2 on the picture), but any of TTPs associated with inter-layer lock IL-2 as well. Likewise, a given TTP may have one or more inter-layer lock IDs, meaning thatbelongit can offer the adaptation service toa particular technology layer. The data model is flexible enough to retrieveany of client layer LTPs with inter-layer lock ID matching one of its own. Additionally, each TTP has an attribute - Unreserved Adaptation Bandwidth, which announces its remaining adaptation resources sharable between all potential client LTPs. LTPs andrepresent many such native TE Topologies. : TE info distributed via ISIS-TE : TE info distributed via OSPF-TE : +---+ +---+ +---+ +---+ +---+ | R1|-------| R2|--------| R3|---------| R4|---------| R5| +---+ +---+ +---+ +---+ +---+ | / : \ / \ / | / : \ / \ / | / : \ / \ / | / : \ / \ / | / : \ / \ / +---+ +---+ : +---+ +---+ | R6|-------------| R7| : | R8|---------| R9| +---+ +---+ : +---+ +---+ : Figure 4a: Example Network Topology ----------------------- : ----------------------- |Native TE Topology | : |NativeTTPs associated within the same TETopology | |Info-Source: ISIS-TE | : |Info-Source: OSPF-TE | ----------------------- : ----------------------- : [R1] ++++ [R2] ++++ [R3] : [R3'] ++++ [R4] ++++ [R5] + + : + + + + + + : + + + + + + : ++ ++ [R6] +++++++++ [R7] : [R8] ++++ [R9] Figure 4b: Nativeinter-layer lock may be hosted by the same (hybrid, multi-layer) TETopologies as seen on Node R3 4.2. Customizednode or multiple TETopologies The model discussednodes located inthis draft can be used to represent, retrieve and manipulate customizedthe same or separate TETopologies.topologies. Themodel allowslatter is especially important since TE topologies of different layer networks could be modeled by separate augmentations of theproviderbasic (common topresent the network in abstractall layers) TETerms on a per client basis. These customized topologies contain sufficient informationtopology model. 3.11. Underlay TE topology Underlay TE topology is a TE topology that serves as a base for constructing of overlay TE topologies 3.12. Overlay TE topology Overlay TE topology is a TE topology constructed based on one or more underlay TE topologies. Each TE node of the overlay TE topology represents an arbitrary segment of an underlay TE topology; each TE link of the overlay TE topology represents an arbitrary TE pathcomputingin one of the underlay TE topologies. The overlay TE topology and the supporting underlay TE topologies may represent distinct layer networks (e.g. OTN/ODUk and WDM/OCh respectively) or the same layer network. 3.13. Abstract TE topology Abstract TE topology is an overlay TE topology created by a topology provider and customized for a topology provider's clientto select paths according tobased on one or more of the provider's native TE topologies (underlay TE topologies), the provider's policies and the client's preferences. For example, a first level topology provider (such as Domain Controller) can create an abstract TE topology for itspolicies. | +---+ /-\ | | | Router ( ) WDM | +---+ Node \-/ node | o----------------------------client (e.g. Super Controller) based on the provider's one or more native TE topologies, local policies/profiles and the client's TE topology configuration requests Figure 4 shows an example of abstract TE topology. +---+/-\ /-\ /-\+---+ |s31|--------------|S5 |R1|-------( A )--------( C )---------( E )---------| R3| +---+ \-/ \-/ \-/ +---+ / \ / \+---+\ / +---+ \ / \ /\\+---+/ +---+ /|AN1|\----------------|S8 | / +---+ \ +---+ +---+ / \/+---+ |S9 |-------------|S11| +---+ +---+ Abstract TE Topology +---+ +---+ |S1 |--------------------|S2 | +---+ +---+ / \ / \ +---+ / +---+ \ +---+/-\ /-\ /-\|s3 |--------------------|S4 |---------|S5 | +---+\ +---+ +---+ \ \ \ \ \ \ \+---+ +---+ +---+ /|S6 |\ |S7 |---------|S8 |R2|---------( B )---------( D )---------( F )---------| R4|/ +---+ \ +---+\ /+---+ +---+ / \ +---+ +---+ / |S9 |-------------|S10|--------------|S11|/ +---+\-/ \-/ \-/+---+ +---+ Native TE Topology Figure5: Example packet optical topology Consider the network topology depicted4: Abstract TE Topology 4. Model Applicability 4.1. Native TE Topologies The model discussed inFigure 5. This is a typical packet optical transport deployment scenario where the WDM layer network domain serves as a Server Network Domain providing transport connectivity to the packet layer network Domain (Client Network Domain). Nodes R1, R2, R3 and R4 are IP routers that are connectedthis draft can be used toan Optical WDM transport network. A, B, C, D, Erepresent andF are WDM nodes that constitute the Server Network Domain. | ***** B-F WDM Path | @@@@@ B-E WDM Path | $$$$$ A-E WDM Path o--------------------retrieve native TE topologies on a given TE system. +---+ +---+ +---+ +---+/-\ $$$$$$$$ /-\ $$$$$$$$$ /-\+---+ |R1|-------( A )--------( C )---------( E )---------| R3|R1|-------| R2|--------| R3|---------| R4|---------| R5| +---+\-/ @\-/ @@@@@@@@@ \-/+---+@/+---+ +---+ +---+ | / \ / \@// | / \ / \@// | / \ / \@// | / \ / \@// | / \ / \ / +---+ +---+ +---+ +---+ | R6|-------------| R7| | R8|---------| R9| +---+/-\ ********* /-\ ********* /-\+---+| R2|---------( B )---------( D )---------( F )---------| R4|+---+\-/ \-/ \-/+---+ Figure6a: Paths within the provider domain ++++++++ [A] ++++++++++++++++++++ [E] +++++++++ +++++ ++++ ++++ ++++ ++++ ++++++++ [B] ++++++++++++++++++++ [F] +++++++++ Figure 6b: Customized TE5a: Example Network Topologyprovided toConsider theClient The goal here isnetwork topology depicted in Figure 5a (R1 .. R9 are nodes representing routers). An implementation MAY choose toaugment the Client TE Topology withconstruct acustomizednative TE Topologyprovided by the WDM network. Given the availability of the paths A-E, B-Fusing all nodes andB-E (Figure 6a), a customized TE Topologylinks present in the given TED as depicted in Figure6b is provided5b. The data model proposed in this document can be used tothe Client. This customizedretrieve/represent this TETopology is merged with the Client'stopology. --------------- | Native | | [ ] TETopology and the resulting topology is depicted in Figure 6c.Node | TE-Topology | | +++ TE Link --------------- o-------------- [R1]++++++++ [A] ++++++++++++++++++++ [E] +++++++++ [R3] +++++++++ [R2] ++++ [R3] ++++ [R4] ++++[R2] ++++++++ [B] ++++++++++++++++++++ [F][R5] + + + + + + + + + + + + + + ++ ++ [R6] +++++++++[R4][R7] [R8] ++++ [R9] Figure6c: Customized5b: Native TE Topologymerged withas seen on Node R3 Consider theClient's Nativecase of the topology being split in a way that some nodes participate in OSPF-TE while others participate in ISIS-TE (Figure 6a). An implementation MAY choose to construct separate TETopologyTopologies based on the information source. The native TE Topologies constructed using only nodes and links that were learnt via a specific information source are depicted in Figure 6b. The data model proposed in this document can be used toretrieve/represent/manipulate the customizedretrieve/represent these TETopology depicted in Figure 6b. 5. Modeling Considerations 5.1. Generic network topology building blocks The generic network topology building blocks are discussed in [YANG- NET-TOPO]. Thetopologies. Similarly, the data model can be used to represent/retrieve a TE Topology that is constructed using only nodes and links that belong to a particular technology layer. The data modelproposed in this document augmentsis flexible enough to retrieve anduses the ietf-network-topology module defined in [YANG-NET-TOPO]. +------------------------+ | Genericrepresent many such native TE Topologies. : TE info distributed via ISIS-TE : TE info distributed via OSPF-TE : +---+ +---+ +---+ +---+ +---+ | R1|-------| R2|--------| R3|---------| R4|---------| R5| +---+ +---+ +---+ +---+ +---+ |Network Topology Model/ : \ / \ / | / : \ / \ / |(ietf-network-topology)| +------------------------+/ : \ / \ / | / : \ / \ / | / : \ / \ / +---+ +---+ : +---+ +---+ |V +------------------------+R6|-------------| R7| : | R8|---------| R9| +---+ +---+ : +---+ +---+ : Figure 6a: Example Network Topology ----------------------- : ----------------------- |Native TE Topology | : |Native TE Topology |Model ||Info-Source: ISIS-TE | : |Info-Source: OSPF-TE |+------------------------+----------------------- : ----------------------- : [R1] ++++ [R2] ++++ [R3] : [R3'] ++++ [R4] ++++ [R5] + + : + + + + + + : + + + + + + : ++ ++ [R6] +++++++++ [R7] : [R8] ++++ [R9] Figure7: Augmenting the Generic Network Topology Model 5.2. Technology agnostic6b: Native TETopology model TheTopologies as seen on Node R3 4.2. Customized TETopologyTopologies The modelproposeddiscussed in thisdocument is meant to be technology agnostic. Other technology specific TE Topology modelsdraft canaugmentbe used to represent, retrieve andusemanipulate customized TE Topologies. The model allows thebuilding blocks provided byprovider to present theproposed model. +-------------------+ | Generic | |network in abstract TETopology Model | +-------------------+ | +-------------+-------------+-------------+ | | | | V V V V +------------+ +------------+ | Technology | | Technology | | Specific | ......................Terms on a per client basis. These customized topologies contain sufficient information for the path computing client to select paths according to its policies. |Specific+---+ /-\ | |TE Topology||TE Topology|Router ( ) WDM |Model 1+---+ Node \-/ node | o---------------------------- +---+ /-\ /-\ /-\ +---+ |Model nR1|-------( A )--------( C )---------( E )---------| R3| +---+ \-/ \-/ \-/ +---+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ +---+ /-\ /-\ /-\ +---+ |+------------+ +------------+R2|---------( B )---------( D )---------( F )---------| R4| +---+ \-/ \-/ \-/ +---+ Figure8: Augmenting7: Example packet optical topology Consider theTechnology agnostic TE Topology model 5.3. Model Structure The high-level model structure proposed by this documentnetwork topology depicted in Figure 7. This is a typical packet optical transport deployment scenario where the WDM layer network domain serves asshown below: module: ietf-te-topology augment /nw:networks/nw:network/nw:network-types: +--rw te-topology! augment /nw:networks: +--rw te! +--rw templates +--rw node-template* [name] {template}? | ............ +--rw link-template* [name] {template}? ............ augment /nw:networks/nw:network: +--rw te! +--rw provider-id te-global-id +--rw client-id te-global-id +--rw te-topology-id te-topology-id +--rw config | ............ +--ro state ............ augment /nw:networks/nw:network/nw:node: +--rw te! +--rw te-node-id te-node-id +--rw config | ............ +--ro statea Server Network Domain providing transport connectivity to the packet layer network Domain (Client Network Domain). Nodes R1, R2, R3 and R4 are IP routers that are connected to an Optical WDM transport network. A, B, C, D, E and F are WDM nodes that constitute the Server Network Domain. |............ +--rw tunnel-termination-point* [tunnel-tp-id] +--rw tunnel-tp-id binary +--rw config***** B-F WDM Path |............ +--ro state augment /nw:networks/nw:network/nt:link: +--rw te! +--rw config@@@@@ B-E WDM Path |.......... +--ro state .......... augment /nw:networks/nw:network/nw:node/nt:termination-point: +--rw te! +--rw te-tp-id te-tp-id +--rw config$$$$$ A-E WDM Path o-------------------- +---+ /-\ $$$$$$$$ /-\ $$$$$$$$$ /-\ +---+ |............ +--ro state ............ notifications: +---n te-node-eventR1|-------( A )--------( C )---------( E )---------| R3| +---+ \-/ @\-/ @@@@@@@@@ \-/ +---+ @/ \ / \ @/ \ / \ @/ \ / \ @/ \ / \ @/ \ / \ +---+ /-\ ********* /-\ ********* /-\ +---+ |............ +---n te-link-event ............ 5.4.R2|---------( B )---------( D )---------( F )---------| R4| +---+ \-/ \-/ \-/ +---+ Figure 8a: Paths within the provider domain ++++++++ [A] ++++++++++++++++++++ [E] +++++++++ +++++ ++++ ++++ ++++ ++++ ++++++++ [B] ++++++++++++++++++++ [F] +++++++++ Figure 8b: Customized TE TopologyIdentifiersprovided to the Client TheTE-Topologygoal here isuniquely identified by a key that has 3 constituents - te-topology-id, provider-id and client-id. The combination of provider-id and te-topology-id uniquely identifies a nativeto augment the Client TE Topologyonwith agiven provider. The client-id is used only when Customizedcustomized TETopologies come into play; a valueTopology provided by the WDM network. Given the availability of"0" is used astheclient-id for nativepaths A-E, B-F and B-E (Figure 8a), a customized TETopologies. augment /nw:networks/nw:network: +--rw te! +--rw provider-id te-global-id +--rw client-id te-global-id +--rw te-topology-id te-topology-id 5.5. GenericTopology as depicted in Figure 8b is provided to the Client. This customized TELink Attributes The model coversTopology is merged with thedefinitions for genericClient's Native TELink attributes - bandwidth, admin groups, SRLGs, switching capabilities,Topology and the resulting topology is depicted in Figure 8c. [R1] ++++++++ [A] ++++++++++++++++++++ [E] +++++++++ [R3] +++++ ++++ ++++ ++++ ++++ [R2] ++++++++ [B] ++++++++++++++++++++ [F] +++++++++ [R4] Figure 8c: Customized TEmetric extensions etc. +--rw te-link-attributes ..................... +--rw admin-status? te-admin-status +--rw performance-metric-throttle {te-performance-metric}? | ..................... +--rw link-index? uint64 +--rw administrative-group? te-types:admin-groups +--rw max-link-bandwidth? decimal64 +--rw max-resv-link-bandwidth? decimal64 +--rw unreserved-bandwidth* [priority] | ..................... +--rw te-default-metric? uint32 +--rw performance-metric {te-performance-metric}? | ..................... +--rw link-protection-type? enumeration +--rw interface-switching-capability* [switching-capability] | ..................... +--rw te-srlgs ..................... 5.6. GenericTopology merged with the Client's Native TENode AttributesTopology The data modelcoversproposed in this document can be used to retrieve/represent/manipulate thedefinitions for genericcustomized TENode attributes. The definitionTopology depicted in Figure 8b. 4.3. Merging TE Topologies Provided by Multiple Providers A client may receive TE topologies provided by multiple providers, each of which managing ageneric connectivity matrix is shown below: +--rw te-node-attributes ........... +--rw connectivity-matrix* [id] | +--rw id uint32 | +--rw from | | +--rw tp-ref? leafref | +--rwseparate domain of multi-domain network. In order to| | +--rw tp-ref? leafref | +--rw is-allowed? boolean The definitionmake use ofa TTP Local Link Connectivity List is shown below: +--rw tunnel-termination-point* [tunnel-tp-id] +--rw tunnel-tp-id binary +--rw config | +--rw termination-capability* [link-tp] | +--rw link-tp leafref +--ro state +--ro termination-capability* [link-tp] | +--ro link-tp leafref +--ro switching-capability identityref +--ro encoding identityref 5.7. TED Information Sources The model allows each TE topological element to have multiple TE information sources (OSPF-TE, ISIS-TE, BGP-LS, User-Configured, System-Processed, Other). Each information sourcesaid topologies, the client isassociated with a credibility preferenceexpected toindicate precedence. In scenarios where a customizedmerge the provided TETopology is mergedtopologies intoa Client'sone or more client's native TETopology,topologies, each of which homogeneously representing themerged topological elements would point tomulti-domain network. This makes it possible for thecorresponding customizedclient to select end-to-end TETopology aspaths for itsinformation source. augment /nw:networks/nw:network/nw:node: +--rw te! ........... +--ro state ........ +--ro information-source? enumeration +--ro information-source-state +--ro credibility-preference? uint16 +--ro topology | +--ro provider-id-ref? leafref | +--ro client-id-ref? leafref | +--ro te-topology-id-ref? leafref | +--ro network-id-ref? leafref +--ro routing-instance? string augment /nw:networks/nw:network/nt:link: +--rw te! ........... +--ro state ......... +--ro information-source? enumeration +--ro information-source-state | +--ro credibility-preference? uint16 | +--ro topology | | +--ro provider-id-ref? leafref | | +--ro client-id-ref? leafref | | +--ro te-topology-id-ref? leafref | | +--ro network-id-ref? leafref | +--ro routing-instance? string +--ro alt-information-sources* [information-source] | ............ 5.8. Overlay/Underlay Relationship The model captures overlayservices traversing multiple domains. In particular, the process of merging TE topologies includes: - Identifying neighboring domains andunderlay relationship forlocking their topologies horizontally by connecting their inter-domain open-ended TEnodes/links. For examplelinks; -in networks where multipleRenaming TETopologies are built hierarchically, this model allows the usernode, link, and SRLG IDs tostartones allocated from aspecific topological element in the top most topology and traverseseparate name space; this is necessary because all TE topologies are considered to be, generally speaking, independent with a possibility of clashes among TE node, link or SRLG IDs; - Locking, vertically, TE topologies associated with different layer networks, according to provided topology inter-layer locks; this is to facilitate inter-layer path computations across multiple TE topologies provided by theway downsame topology provider. /---\ +---+ +---+ +---+ +---+ /---\ |s3 |------|S13|----|S15|------|S23|----|S25|------|C21| \---/ +---+\ +---+ +---+ /+---+ \---/ \ / \ / \+---+ +---+/ +---+ /---\ |S18|------|S24| |S28|------|C22| +---+ +---+\ /+---+ \---/ \/ /\ /---\ +---+ +---+ +---+/ \+---+ /---\ |C12|------|S19|----|S17|------|S29|----|S27|------|C23| \---/ +---+ +---+ +---+ +---+ \---/ Domain 1 TE Topology Domain 2 TE Topology +---+ +---+ +---+ +---+ -----|S13|----|S15|---- ----|S23|----|S25|---- +---+\ +---+ +---+ /+---+ \ / \ / \+---+ +---+/ +---+ |S18|---- ----|S24| |S28|---- +---+ +---+\ /+---+ \/ /\ +---+ +---+ +---+/ \+---+ -----|S19|----|S17|---- ----|S29|----|S27|---- +---+ +---+ +---+ +---+ Figure 9: Merging Domain TE Topologies Figure 9 illustrates the process of merging, by the client, of TE topologies provided by the client's providers. In the Figure, each of the two providers caters to thesupporting topological elements inclient (abstract or native) TE topology, describing thebottom most topology. This relationshipnetwork domain under the respective provider's control. The client, by consulting the attributes of the inter-domain TE links - such as inter-domain plug IDs or remote TE node/link IDs (as defined by the TE Topology model) - iscapturedable to determine that: a) the two domains are adjacent and are inter-connected via three inter-domain TE links, and; b) each domain is connected to a separate customer site, connecting the"underlay-topology" field forleft domain in thenodeFigure to customer devices C-11 and C-12, andviathe"underlay" field forright domain to customer devices C-21, C-22 and C-23. Therefore, thelink. The useclient inter-connects the open-ended TE links, as shown on the upper part ofthese fieldsthe Figure. As mentioned, one way to inter-connect the open-ended inter-domain TE links of neighboring domains isoptional andto mandate the providers to specify remote nodeID/linkID attribute in the provided inter-domain TE links. This, however, may prove to be not flexible. For example, the providers may not know the respective remote nodeIDs/ linkIDs. More importantly, thisfunctionality is tagged as a "feature" ("te-topology-hierarchy"). augment /nw:networks/nw:network/nw:node: +--rw te! +--rw te-node-id te-node-id +--rw config | +--rw te-node-template* leafref {template}? | +--rw te-node-attributes | .................... | +--rw underlay-topology {te-topology-hierarchy}? | +--rw provider-id-ref? leafref | +--rw client-id-ref? leafref | +--rw te-topology-id-ref? leafref | +--rw network-id-ref? leafref augment /nw:networks/nw:network/nt:link: +--rw te! +--rw config | ......... | +--rw te-link-attributes | .................... | +--rw underlay! {te-topology-hierarchy}? | | +--rw underlay-primary-path | | | +--rw provider-id-ref? leafref | | | +--rw client-id-ref? leafref | | | +--rw te-topology-id-ref? leafref | | | +--rw network-id-ref? leafref | | | +--rw path-element* [path-element-id] | | | ............... | | +--rw underlay-backup-path* [index] | | | +--rw index uint32 | | | +--rw provider-id-ref? leafref | | | +--rw client-id-ref? leafref | | | +--rw te-topology-id-ref? leafref | | | +--rw network-id-ref? leafref | | | +--rw path-element* [path-element-id] | | | ............... | | +--rw underlay-protection-type? uint16 | | +--rw underlay-trail-src | | | ........... | | | +--rw network-ref? leafref | | +--rw underlay-trail-des | | ........... 5.9. Scheduling Parameters The model allows time scheduling parameters to be specified for each topological element or for the topology as a whole. These parametersoption does not allow for theproviderclient topresent different topological viewsmix-n-match multiple (more than one) topologies catered by the same providers (see below). Another, more flexible, option to resolve theclient at different time slots. The use of "scheduling parameters" is optional and this functionality is tagged as a "feature" ("configuration-schedule"). The YANG data model for configuration schedulingopen-ended inter-domain TE links isdefined in [YANG-SCHEDULE] and importedby decorating them with theTE Topology module. 5.10. Templates The data model providesinter-domain plug ID attribute. Inter-domain plug ID is a network-wide unique number that identifies on theusersnetwork a connectivity supporting a given inter-domain TE link. Instead of specifying remote node ID/link ID, an inter-domain TE link may provide a non-zero inert-domain plug ID. It is expected that two neighboring domain TE topologies (provided by separate providers) will have each at least one open- ended inter-domain TE link withthe ability to define templates and apply theman inter-domain plug ID matching to one provided by its neighbor. For example, the inter-domain TE link originating from node S5 of the Domain 1 TE topology (Figure 1) and the inter-domain TE link coming from nodeconfigurations. The useS3 of"template" configuration is optionalDomain2 TE topology may specify matching inter-domain plug ID (e.g. 175344) This allows for the client to identify adjacent nodes in the separate neighboring TE topologies andthis functionality is taggedresolve the inter-domain TE links connecting them regardless of their respective nodeIDs/linkIDs (which, asa "feature" ("template"). +--rw topology* [provider-id client-id te-topology-id] | ........... | +--rw node* [te-node-id] | | +--rw te-node-template? leafref {template}? | | .......... | +--rw link* [source-te-node-id source-te-link-id dest-te-node-id dest-te-link-id] | +--rw te-link-template? leafref {template}? | .......... +--rw node-template* [name] {template}? | +--rw name te-template-name | +--rw priority? uint16 | +--rw reference-change-policy? enumeration | +--rw te-node-attributes | .......... +--rw link-template* [name] {template}? +--rwmentioned, could be allocated from independent namete-template-name +--rw priority? uint16 +--rw reference-change-policy? enumeration +--rw te-link-attributes .......... Multiple templates canspaces). Inter-domain plug IDs may bespecified toassigned and managed by aconfiguration element. When two or more templates specify values forcentral network authority. Alternatively, inter-domain plug IDs could be dynamically auto- discovered (e.g. via LMP protocol). Furthermore, thesame configuration field,client renames thevalue fromTE nodes, links and SRLGs offered in thetemplate withabstract TE topologies by assigning to them IDs allocated from a separate name space managed by thehighest priorityclient. Such renaming isused. The reference-change-policy specifies the action that needs to be taken when the template changes on a configuration element that has a reference to this template. The choices of action include taking no action, rejectingnecessary, because thechange totwo abstract TE topologies may have their own name spaces, generally speaking, independent one from another; hence, ID overlaps/clashes are possible. For example, both TE topologies have TE nodes named S7, which, after renaming, appear in thetemplatemerged TE topology as S17 andapplyingS27, respectively. Once thechange to the corresponding configuration. [Editor's Note: The notion of "templates" has wider applicability. Itmerging process ispossiblecomplete, the client can use the merged TE topology forthispath computations across both domains, for example, tobe discussed incompute aseparate document.] 5.11. Notifications Notifications areTE path connecting C-11 to C-23. 4.4. Dealing with Multiple Abstract TE Topologies Provided by the Same Provider Domain 1 Abstract TE Topology 1 Domain 2 Abstract TE Topology 1 +---+ +---+ +---+ +---+ -----|S13|----|S15|---- ----|S23|----|S25|---- +---+\ +---+ +---+ /+---+ \ / \ / \+---+ +---+/ +---+ |S18|---- ----|S24| |S28|---- +---+ +---+\ /+---+ \/ /\ +---+ +---+ +---+/ \+---+ -----|S19|----|S17|---- ----|S29|----|S27|---- +---+ +---+ +---+ +---+ Domain 1 Abstract TE Topology 1 Domain 2 Abstract TE Topology 1 +------------+ +------------+ -----| |---- ----| |---- | | | | | AN1 |---- ----| AN1 |---- | | | | -----| |---- ----| |---- +------------+ +------------+ Figure 10: Merging Domain TE Topologies Based on local configuration, templates and/or policies pushed by the client, akey component of anygiven provider may expose more than one abstract TE topologydata model. [YANG-PUSH] defines a subscription and push mechanism for YANG datastores. This mechanism currently allowsto theuser to: - Subscribe notificationsclient. For example, one abstract TE topology could be optimized based on aper client basis - Specify subtree filters or xpath filters so that only interested contents willlowest-cost criterion, while another one could besent. - Specify either periodicbased on best possible delay metrics, while yet another one could be based on maximum bandwidth availability for the client services. Furthermore, the client may request all oron-demand notifications. The authors would likesome providers torecommend the useexpose additional abstract TE topologies, possibly ofthis mechanism for the TE-Topology notifications. They would also likea different type and/or optimized differently, as compared tosuggestalready-provided TE topologies. In any case, thefollowing extensionsclient should be prepared for a provider to offer to[YANG-PUSH] - Specify specific entities that will triggerthepush notifications. These entities canclient more than one abstract TE topology. It should bespecified by xpath, likeup to theway a filter is specified. - Specify or limitclient (based on thetriggering event type, e.g. "add", "delete", "modify", or "all". The system sendsclient's local configuration and/or policies conveyed to thepush notifications only when such events happen onclient by thetriggering entities. - Have an optionclient's clients) torequest either "incremental"decide how to mix-and-match multiple abstract TE topologies provided by each or"full" notifications for an entity. For "incremental", the notification will contain onlysome of thechanged attributes. 5.12. Open Items - Coordinating changesproviders, as well as how to[YANG-PUSH]:merge them into the client's native TE topologies. Thechangesclient also decides how many such merged TE topologies it needs to[YANG-PUSH] discussedproduce and maintain. For example, inSection 4.10 will needaddition tobe coordinated withtheauthorsmerged TE topology depicted in the upper part of Figure 1, the client may merge the abstract TE topologies received from the two providers, as shown in Figure 10, into the client's additional native TE topologies, as shown in Figure 11. Note thatdraft. 6. Tree Structure 6.1. Baseallowing for the client mix-n-matching of multiple TETopology Module module: ietf-te-topology augment /nw:networks/nw:network/nw:network-types: +--rw te-topology! augment /nw:networks: +--rw te! +--rw templates +--rw node-template* [name] {template}? | +--rw name te-template-name | +--rw priority? uint16 | +--rw reference-change-policy? enumeration | +--rw te-node-attributes | +--rw schedules | | +--rw schedule* [schedule-id] | | +--rw schedule-id uint32 | | +--rw start? yang:date-and-time | | +--rw schedule-duration? string | | +--rw repeat-interval? string | +--rw admin-status? te-admin-status | +--rw domain-id? uint32 | +--rw is-abstract? empty | +--rw name? inet:domain-name | +--rw signaling-address* inet:ip-address | +--rw underlay-topology {te-topology-hierarchy}? | +--rw provider-id-ref? leafref | +--rw client-id-ref? leafref | +--rw te-topology-id-ref? leafref | +--rw network-id-ref? leafref +--rw link-template* [name] {template}? +--rw name te-template-name +--rw priority? uint16 +--rw reference-change-policy? enumeration +--rw te-link-attributes +--rw schedules | +--rw schedule* [schedule-id] | +--rw schedule-id uint32 | +--rw start? yang:date-and-time | +--rw schedule-duration? string | +--rw repeat-interval? string +--rw access-type? te-link- access-type +--rw is-abstract? empty +--rw name? string +--rw underlay! {te-topology-hierarchy}? | +--rw underlay-primary-path | | +--rw provider-id-ref? leafref | | +--rw client-id-ref? leafref | | +--rw te-topology-id-ref? leafreftopologies assumes that inter-domain plug IDs (rather than remote nodeID/linkID) option is used for identifying neighboring domains and inter-domain TE link resolution. Client's Merged TE Topology 2 /---\ +------------+ +------------+ /---\ |s3 |------| |------| |------|C21| \---/ | |+--rw network-id-ref? leafref| |+--rw path-element* [path-element-id]\---/ | |+--rw path-element-id uint32| |+--rw (type)?| |+--:(ipv4-address)| | |+--rw v4-address? inet:ipv4- address| | |+--rw v4-prefix-length? uint8/---\ | AN11 |------| AN21 |------|C22| | |+--rw v4-loose? boolean| |+--:(ipv6-address)\---/ | | |+--rw v6-address? inet:ipv6- address| | |+--rw v6-prefix-length? uint8| | /---\ |+--rw v6-loose? boolean| |+--:(as-number)| /---\ |C12|------| |------| |------|C23| \---/ +------------+ +------------+ \---/ Client's Merged TE Topology 3 /---\ +------------+ +---+ +---+ /---\ |s3 |------| |------|S23|----|S25|------|C21| \---/ | |+--rw as-number? uint16+---+ /+---+ \---/ | |+--:(unnumbered-link)/ | | / |+--rw router-id? inet:ip- address| +---+/ +---+ /---\ | AN11 |------|S24| |S28|------|C22| |+--rw interface-id? uint32| +---+\ /+---+ \---/ |+--:(label)| \/ |+--rw value? uint32|+--rw underlay-backup-path* [index]/\ /---\ | |+--rw index uint32 | | +--rw provider-id-ref? leafref | | +--rw client-id-ref? leafref+---+/ \+---+ /---\ |C12|------| |------|S29|----|S27|------|C23| \---/ +------------+ +---+ +---+ \---/ Figure 11: Multiple Native (Merged) Client's TE Topologies It is important to note that each of the three native (merged) TE topologies could be used by the client for computing TE paths for any of the multi-domain services. The choice as to which topology to use for a given service depends on the service parameters/requirements and the topology's style, optimization criteria and the level of details. 5. Modeling Considerations 5.1. Generic network topology building blocks The generic network topology building blocks are discussed in [YANG- NET-TOPO]. The TE Topology model proposed in this document augments and uses the ietf-network-topology module defined in [YANG-NET-TOPO]. +------------------------+ | Generic |+--rw te-topology-id-ref? leafref| Network Topology Model |+--rw network-id-ref? leafref| (ietf-network-topology)| +------------------------+ |+--rw path-element* [path-element-id]| |+--rw path-element-id uint32V +------------------------+ | TE Topology |+--rw (type)?| Model |+--:(ipv4-address)| | +------------------------+ Figure 12: Augmenting the Generic Network Topology Model 5.2. Technology agnostic TE Topology model The TE Topology model proposed in this document is meant to be technology agnostic. Other technology specific TE Topology models can augment and use the building blocks provided by the proposed model. +-------------------+ |+--rw v4-address? inet:ipv4- addressGeneric | | TE Topology Model |+--rw v4-prefix-length? uint8+-------------------+ | +-------------+-------------+-------------+ | |+--rw v4-loose? boolean| |+--:(ipv6-address)V V V V +------------+ +------------+ | Technology | |+--rw v6-address? inet:ipv6- addressTechnology | | Specific |+--rw v6-prefix-length? uint8...................... | Specific | |+--rw v6-loose? booleanTE Topology| | TE Topology| |+--:(as-number)Model 1 | | Model n | +------------+ +------------+ Figure 13: Augmenting the Technology agnostic TE Topology model 5.3. Model Structure The high-level model structure proposed by this document is as shown below: module: ietf-te-topology augment /nw:networks/nw:network/nw:network-types: +--rwas-number? uint16 | | +--:(unnumbered-link) | | |te-topology! augment /nw:networks: +--rwrouter-id? inet:ip- address | | |te! +--rwinterface-id? uint32 | | +--:(label) | |templates +--rwvalue? uint32node-template* [name] {template}? | ............ +--rwunderlay-protection-type? uint16link-template* [name] {template}? ............ augment /nw:networks/nw:network: +--rw te! +--rw provider-id te-global-id +--rw client-id te-global-id +--rw te-topology-id te-topology-id +--rw config | ............ +--ro state ............ augment /nw:networks/nw:network/nw:node: +--rwunderlay-trail-srcte! +--rw te-node-id te-node-id +--rw config | ............ +--ro state | ............ +--rwtp-ref? leafreftunnel-termination-point* [tunnel-tp-id] +--rw tunnel-tp-id binary +--rw config | ............ +--ro state augment /nw:networks/nw:network/nt:link: +--rw te! +--rw config | .......... +--ro state .......... augment /nw:networks/nw:network/nw:node/nt:termination-point: +--rwnode-ref? leafrefte! +--rw te-tp-id te-tp-id +--rw config | ............ +--ro state ............ notifications: +---n te-node-event | ............ +---n te-link-event ............ 5.4. Topology Identifiers The TE-Topology is uniquely identified by a key that has 3 constituents - te-topology-id, provider-id and client-id. The combination of provider-id and te-topology-id uniquely identifies a native TE Topology on a given provider. The client-id is used only when Customized TE Topologies come into play; a value of "0" is used as the client-id for native TE Topologies. augment /nw:networks/nw:network: +--rwnetwork-ref? leafref |te! +--rwunderlay-trail-des |provider-id te-global-id +--rwtp-ref? leafref |client-id te-global-id +--rwnode-ref? leafref |te-topology-id te-topology-id 5.5. Generic TE Link Attributes The model covers the definitions for generic TE Link attributes - bandwidth, admin groups, SRLGs, switching capabilities, TE metric extensions etc. +--rwnetwork-ref? leafrefte-link-attributes ..................... +--rw admin-status?te-admin- statuste-admin-status +--rw performance-metric-throttle{te-performance- metric}?{te-performance-metric}? | ..................... +--rwunidirectional-delay-offset? uint32 |link-index? uint64 +--rwmeasure-interval? uint32 |administrative-group? te-types:admin-groups +--rwadvertisement-interval? uint32 |max-link-bandwidth? decimal64 +--rwsuppression-interval? uint32 |max-resv-link-bandwidth? decimal64 +--rwthreshold-out |unreserved-bandwidth* [priority] | ..................... +--rwunidirectional-delay?te-default-metric? uint32| |+--rwunidirectional-min-delay? uint32 |performance-metric {te-performance-metric}? | ..................... +--rwunidirectional-max-delay? uint32link-protection-type? enumeration +--rw interface-switching-capability* [switching-capability] | ..................... +--rw te-srlgs ..................... 5.6. Generic TE Node Attributes The model covers the definitions for generic TE Node attributes. The definition of a generic connectivity matrix is shown below: +--rw te-node-attributes ........... +--rw connectivity-matrix* [id] | +--rwunidirectional-delay-variation?id uint32 ||+--rwunidirectional-packet-loss? decimal64from | | +--rwunidirectional-residual-bandwidth? decimal64 |tp-ref? leafref | +--rwunidirectional-available-bandwidth? decimal64to | | +--rwunidirectional-utilized-bandwidth? decimal64tp-ref? leafref | +--rwthreshold-in | |is-allowed? boolean The definition of a TTP Local Link Connectivity List is shown below: +--rwunidirectional-delay? uint32 |tunnel-termination-point* [tunnel-tp-id] +--rw tunnel-tp-id binary +--rw config | +--rwunidirectional-min-delay? uint32termination-capability* [link-tp] | +--rw link-tp leafref +--ro state +--ro termination-capability* [link-tp] | +--ro link-tp leafref +--ro switching-capability identityref +--ro encoding identityref 5.7. TED Information Sources The model allows each TE topological element to have multiple TE information sources (OSPF-TE, ISIS-TE, BGP-LS, User-Configured, System-Processed, Other). Each information source is associated with a credibility preference to indicate precedence. In scenarios where a customized TE Topology is merged into a Client's native TE Topology, the merged topological elements would point to the corresponding customized TE Topology as its information source. augment /nw:networks/nw:network/nw:node: +--rwunidirectional-max-delay? uint32te! ........... +--ro state ........ +--ro information-source? enumeration +--ro information-source-state +--ro credibility-preference? uint16 +--ro topology | +--ro provider-id-ref? leafref |+--rw unidirectional-delay-variation? uint32+--ro client-id-ref? leafref | +--ro te-topology-id-ref? leafref | +--ro network-id-ref? leafref +--ro routing-instance? string augment /nw:networks/nw:network/nt:link: +--rwunidirectional-packet-loss? decimal64te! ........... +--ro state ......... +--ro information-source? enumeration +--ro information-source-state | +--ro credibility-preference? uint16 |+--rw unidirectional-residual-bandwidth? decimal64+--ro topology | |+--rw unidirectional-available-bandwidth? decimal64+--ro provider-id-ref? leafref | |+--rw unidirectional-utilized-bandwidth? decimal64+--ro client-id-ref? leafref |+--rw threshold-accelerated-advertisement|+--rw unidirectional-delay? uint32+--ro te-topology-id-ref? leafref |+--rw unidirectional-min-delay? uint32|+--rw unidirectional-max-delay? uint32+--ro network-id-ref? leafref |+--rw unidirectional-delay-variation? uint32+--ro routing-instance? string +--ro alt-information-sources* [information-source] | ............ 5.8. Overlay/Underlay Relationship The model captures overlay and underlay relationship for TE nodes/links. For example - in networks where multiple TE Topologies are built hierarchically, this model allows the user to start from a specific topological element in the top most topology and traverse all the way down to the supporting topological elements in the bottom most topology. This relationship is captured via the "underlay-topology" field for the node and via the "underlay" field for the link. The use of these fields is optional and this functionality is tagged as a "feature" ("te-topology-hierarchy"). augment /nw:networks/nw:network/nw:node: +--rwunidirectional-packet-loss? decimal64 |te! +--rwunidirectional-residual-bandwidth? decimal64 |te-node-id te-node-id +--rwunidirectional-available-bandwidth? decimal64config | +--rwunidirectional-utilized-bandwidth? decimal64 +--rw link-index? uint64te-node-template* leafref {template}? | +--rwadministrative-group? te- types:admin-groupste-node-attributes | .................... | +--rwmax-link-bandwidth? decimal64underlay-topology {te-topology-hierarchy}? | +--rwmax-resv-link-bandwidth? decimal64provider-id-ref? leafref | +--rwunreserved-bandwidth* [priority]client-id-ref? leafref | +--rwpriority uint8te-topology-id-ref? leafref | +--rwbandwidth? decimal64network-id-ref? leafref augment /nw:networks/nw:network/nt:link: +--rwte-default-metric? uint32te! +--rwperformance-metric {te-performance-metric}?config | ......... | +--rwmeasurementte-link-attributes | .................... | +--rwunidirectional-delay? uint32underlay! {te-topology-hierarchy}? | | +--rwunidirectional-min-delay? uint32underlay-primary-path | | | +--rwunidirectional-max-delay? uint32provider-id-ref? leafref | | | +--rwunidirectional-delay-variation? uint32client-id-ref? leafref | | | +--rwunidirectional-packet-loss? decimal64te-topology-id-ref? leafref | | | +--rwunidirectional-residual-bandwidth? decimal64network-id-ref? leafref | | | +--rwunidirectional-available-bandwidth? decimal64path-element* [path-element-id] | |+--rw unidirectional-utilized-bandwidth? decimal64|+--rw normality............... |+--rw unidirectional-delay? performance-metric-normality| +--rwunidirectional-min-delay? performance-metric-normalityunderlay-backup-path* [index] |+--rw unidirectional-max-delay? performance-metric-normality|+--rw unidirectional-delay-variation? performance-metric-normality| +--rwunidirectional-packet-loss? performance-metric-normalityindex uint32 |+--rw unidirectional-residual-bandwidth? performance-metric-normality|+--rw unidirectional-available-bandwidth? performance-metric-normality| +--rwunidirectional-utilized-bandwidth? performance-metric-normality +--rw link-protection-type? enumeration +--rw interface-switching-capability* [switching- capability]provider-id-ref? leafref |+--rw switching-capability identityref|+--rw encoding? identityref| +--rwmax-lsp-bandwidth* [priority]client-id-ref? leafref | | | +--rwpriority uint8te-topology-id-ref? leafref | |+--rw bandwidth? decimal64| +--rwtime-division-multiplex-capable |network-id-ref? leafref |+--rw minimum-lsp-bandwidth? decimal64| | +--rwindication? enumerationpath-element* [path-element-id] |+--rw interface-adjustment-capability* [upper-sc]|+--rw upper-sc identityref|+--rw upper-encoding? identityref............... |+--rw max-lsp-bandwidth* [priority]| +--rwpriority uint8underlay-protection-type? uint16 |+--rw bandwidth? decimal64 +--rw te-srlgs +--rw values* te-types:srlg augment /nw:networks/nw:network: +--rw te! +--rw provider-id te-global-id +--rw client-id te-global-id +--rw te-topology-id te-topology-id +--rw config| +--rwschedulesunderlay-trail-src | |+--rw schedule* [schedule-id]| ........... |+--rw schedule-id uint32| | +--rwstart? yang:date-and-timenetwork-ref? leafref | | +--rwschedule-duration? stringunderlay-trail-des | | ........... 5.9. Scheduling Parameters The model allows time scheduling parameters to be specified for each topological element or for the topology as a whole. These parameters allow the provider to present different topological views to the client at different time slots. The use of "scheduling parameters" is optional and this functionality is tagged as a "feature" ("configuration-schedule"). The YANG data model for configuration scheduling is defined in [YANG-SCHEDULE] and imported by the TE Topology module. 5.10. Templates The data model provides the users with the ability to define templates and apply them to link and node configurations. The use of "template" configuration is optional and this functionality is tagged as a "feature" ("template"). +--rwrepeat-interval? stringtopology* [provider-id client-id te-topology-id] | ........... | +--rwpreference? uint8 +--ro state +--ro schedulesnode* [te-node-id] |+--ro schedule* [schedule-id]|+--ro schedule-id uint32+--rw te-node-template? leafref {template}? |+--ro start? yang:date-and-time|+--ro schedule-duration? string.......... |+--ro repeat-interval? string +--ro preference? uint8 augment /nw:networks/nw:network/nw:node: +--rw te! +--rw te-node-id te-node-id+--rwconfiglink* [source-te-node-id source-te-link-id dest-te-node-id dest-te-link-id] | +--rwte-node-template*te-link-template? leafref {template}? | .......... +--rwte-node-attributesnode-template* [name] {template}? | +--rwschedules |name te-template-name | +--rwschedule* [schedule-id] |priority? uint16 | +--rwschedule-id uint32 |reference-change-policy? enumeration | +--rwstart? yang:date-and-time | | +--rw schedule-duration? string | | +--rw repeat-interval? string | +--rw admin-status? te-admin-statuste-node-attributes | .......... +--rwconnectivity-matrix* [id] | |link-template* [name] {template}? +--rwid uint32 | |name te-template-name +--rwfrom | | |priority? uint16 +--rwtp-ref? leafref | |reference-change-policy? enumeration +--rw te-link-attributes .......... Multiple templates can be specified to| | | +--rw tp-ref? leafref | | +--rw is-allowed? boolean | +--rw domain-id? uint32 | +--rw is-abstract? empty | +--rw name? inet:domain-name | +--rw signaling-address* inet:ip-address | +--rw underlay-topology {te-topology-hierarchy}? | +--rw provider-id-ref? leafref | +--rw client-id-ref? leafref | +--rw te-topology-id-ref? leafref | +--rw network-id-ref? leafref +--ro state | +--ro te-node-template* leafref {template}? | +--ro te-node-attributes | | +--ro schedules | | | +--ro schedule* [schedule-id] | | | +--ro schedule-id uint32 | | | +--ro start? yang:date-and-time | | | +--ro schedule-duration? string | | | +--ro repeat-interval? string | | +--ro admin-status? te-admin-status | | +--ro connectivity-matrix* [id] | | | +--ro id uint32 | | | +--roa configuration element. When two or more templates specify values for the same configuration field, the value from| | | | +--ro tp-ref? leafref | | | +--rothe template with the highest priority is used. The reference-change-policy specifies the action that needs to be taken when the template changes on a configuration element that has a reference to this template. The choices of action include taking no action, rejecting the change to the template and applying the change to the corresponding configuration. [Editor's Note: The notion of "templates" has wider applicability. It is possible for this to be discussed in a separate document.] 5.11. Notifications Notifications are a key component of any topology data model. [YANG-PUSH] defines a subscription and push mechanism for YANG datastores. This mechanism currently allows the user to: - Subscribe notifications on a per client basis - Specify subtree filters or xpath filters so that only interested contents will be sent. - Specify either periodic or on-demand notifications. The authors would like to recommend the use of this mechanism for the TE-Topology notifications. They would also like to suggest the following extensions to [YANG-PUSH] - Specify specific entities that will trigger the push notifications. These entities can be specified by xpath, like the way a filter is specified. - Specify or limit the triggering event type, e.g. "add", "delete", "modify", or "all". The system sends the push notifications only when such events happen on the triggering entities. - Have an option to request either "incremental" or "full" notifications for an entity. For "incremental", the notification will contain only the changed attributes. 5.12. Open Items - Coordinating changes to [YANG-PUSH]: The changes to [YANG-PUSH] discussed in Section 4.10 will need to be coordinated with the authors of that draft. 6. Tree Structure module: ietf-te-topology augment /nw:networks/nw:network/nw:network-types: +--rw te-topology! augment /nw:networks: +--rw te! +--rw templates +--rw node-template* [name] {template}? | +--rw name te-types:te-template- name | +--rw priority? uint16 | +--rw reference-change-policy? enumeration | +--rw te-node-attributes | +--rw schedules | | +--rw schedule* [schedule-id] | | +--rw schedule-id uint32 | | +--rw start? yang:date-and-time | | +--rw schedule-duration? string | | +--rw repeat-interval? string | +--rw admin-status? te-types:te-admin-status | +--rw domain-id? uint32 | +--rw is-abstract? empty | +--rw name? inet:domain-name | +--rw signaling-address* inet:ip-address | +--rw underlay-topology {te-topology-hierarchy}? | +--rw provider-id-ref? leafref | +--rw client-id-ref? leafref | +--rw te-topology-id-ref? leafref | +--rw network-id-ref? leafref +--rw link-template* [name] {template}? +--rw name te-types:te-template- name +--rw priority? uint16 +--rw reference-change-policy? enumeration +--rw te-link-attributes +--rw schedules | +--rw schedule* [schedule-id] | +--rw schedule-id uint32 | +--rw start? yang:date-and-time | +--rw schedule-duration? string | +--rw repeat-interval? string +--rw access-type? te-types:te- link-access-type +--rw external-domain | +--rw remote-te-node-id? te-types:te-node-id | +--rw remote-te-link-tp-id? te-types:te-tp-id | +--rw plug-id? uint32 +--rw is-abstract? empty +--rw name? string +--rw underlay! {te-topology-hierarchy}? | +--rw underlay-primary-path | | +--rw provider-id-ref? leafref | | +--rw client-id-ref? leafref | | +--rw te-topology-id-ref? leafref | | +--rw network-id-ref? leafref | | +--rw path-element* [path-element-id] | | +--rw path-element-id uint32 | | +--rw (type)? | | +--:(ipv4-address) | | | +--rw v4-address? inet:ipv4- address | | | +--rw v4-prefix-length? uint8 | | | +--rw v4-loose? boolean | | +--:(ipv6-address) | | | +--rw v6-address? inet:ipv6- address | | | +--rw v6-prefix-length? uint8 | | | +--rw v6-loose? boolean | | +--:(as-number) | | | +--rw as-number? uint16 | | +--:(unnumbered-link) | | | +--rw router-id? inet:ip- address | | | +--rw interface-id? uint32 | | +--:(label) | | +--rw value? uint32 | +--rw underlay-backup-path* [index] | | +--rw index uint32 | | +--rw provider-id-ref? leafref | | +--rw client-id-ref? leafref | | +--rw te-topology-id-ref? leafref | | +--rw network-id-ref? leafref | | +--rw path-element* [path-element-id] | | +--rw path-element-id uint32 | | +--rw (type)? | | +--:(ipv4-address) | | | +--rw v4-address? inet:ipv4- address | | | +--rw v4-prefix-length? uint8 | | | +--rw v4-loose? boolean | | +--:(ipv6-address) | | | +--rw v6-address? inet:ipv6- address | | | +--rw v6-prefix-length? uint8 | | | +--rw v6-loose? boolean | | +--:(as-number) | | | +--rw as-number? uint16 | | +--:(unnumbered-link) | | | +--rw router-id? inet:ip- address | | | +--rw interface-id? uint32 | | +--:(label) | | +--rw value? uint32 | +--rw underlay-protection-type? uint16 | +--rw underlay-trail-src | | +--rw tp-ref? leafref | | +--rw node-ref? leafref | | +--rw network-ref? leafref | +--rw underlay-trail-des | +--rw tp-ref? leafref | +--rw node-ref? leafref | +--rw network-ref? leafref +--rw admin-status? te-types:te- admin-status +--rw performance-metric-throttle {te-performance- metric}? | +--rw unidirectional-delay-offset? uint32 | +--rw measure-interval? uint32 | +--rw advertisement-interval? uint32 | +--rw suppression-interval? uint32 | +--rw threshold-out | | +--rw unidirectional-delay? uint32 | | +--rw unidirectional-min-delay? uint32 | | +--rw unidirectional-max-delay? uint32 | | +--rw unidirectional-delay-variation? uint32 | | +--rw unidirectional-packet-loss? decimal64 | | +--rw unidirectional-residual-bandwidth? decimal64 | | +--rw unidirectional-available-bandwidth? decimal64 | | +--rw unidirectional-utilized-bandwidth? decimal64 | +--rw threshold-in | | +--rw unidirectional-delay? uint32 | | +--rw unidirectional-min-delay? uint32 | | +--rw unidirectional-max-delay? uint32 | | +--rw unidirectional-delay-variation? uint32 | | +--rw unidirectional-packet-loss? decimal64 | | +--rw unidirectional-residual-bandwidth? decimal64 | | +--rw unidirectional-available-bandwidth? decimal64 | | +--rw unidirectional-utilized-bandwidth? decimal64 | +--rw threshold-accelerated-advertisement | +--rw unidirectional-delay? uint32 | +--rw unidirectional-min-delay? uint32 | +--rw unidirectional-max-delay? uint32 | +--rw unidirectional-delay-variation? uint32 | +--rw unidirectional-packet-loss? decimal64 | +--rw unidirectional-residual-bandwidth? decimal64 | +--rw unidirectional-available-bandwidth? decimal64 | +--rw unidirectional-utilized-bandwidth? decimal64 +--rw link-index? uint64 +--rw administrative-group? te- types:admin-groups +--rw interface-switching-capability* [switching- capability] | +--rw switching-capability identityref | +--rw encoding? identityref | +--rw max-lsp-bandwidth* [priority] | | +--rw priority uint8 | | +--rw bandwidth? decimal64 | +--rw time-division-multiplex-capable | +--rw minimum-lsp-bandwidth? decimal64 | +--rw indication? enumeration +--rw link-protection-type? enumeration +--rw max-link-bandwidth? decimal64 +--rw max-resv-link-bandwidth? decimal64 +--rw unreserved-bandwidth* [priority] | +--rw priority uint8 | +--rw bandwidth? decimal64 +--rw te-default-metric? uint32 +--rw performance-metric {te-performance-metric}? | +--rw measurement | | +--rw unidirectional-delay? uint32 | | +--rw unidirectional-min-delay? uint32 | | +--rw unidirectional-max-delay? uint32 | | +--rw unidirectional-delay-variation? uint32 | | +--rw unidirectional-packet-loss? decimal64 | | +--rw unidirectional-residual-bandwidth? decimal64 | | +--rw unidirectional-available-bandwidth? decimal64 | | +--rw unidirectional-utilized-bandwidth? decimal64 | +--rw normality | +--rw unidirectional-delay? te- types:performance-metric-normality | +--rw unidirectional-min-delay? te- types:performance-metric-normality | +--rw unidirectional-max-delay? te- types:performance-metric-normality | +--rw unidirectional-delay-variation? te- types:performance-metric-normality | +--rw unidirectional-packet-loss? te- types:performance-metric-normality | +--rw unidirectional-residual-bandwidth? te- types:performance-metric-normality | +--rw unidirectional-available-bandwidth? te- types:performance-metric-normality | +--rw unidirectional-utilized-bandwidth? te- types:performance-metric-normality +--rw te-srlgs +--rw value* te-types:srlg augment /nw:networks/nw:network: +--rw te! +--rw provider-id te-types:te-global-id +--rw client-id te-types:te-global-id +--rw te-topology-id te-types:te-topology-id +--rw config | +--rw schedules | | +--rw schedule* [schedule-id] | | +--rw schedule-id uint32 | | +--rw start? yang:date-and-time | | +--rw schedule-duration? string | | +--rw repeat-interval? string | +--rw preference? uint8 | +--rw optimization-criterion? identityref +--ro state +--ro schedules | +--ro schedule* [schedule-id] | +--ro schedule-id uint32 | +--ro start? yang:date-and-time | +--ro schedule-duration? string | +--ro repeat-interval? string +--ro preference? uint8 +--ro optimization-criterion? identityref augment /nw:networks/nw:network/nw:node: +--rw te! +--rw te-node-id te-types:te-node-id +--rw config | +--rw te-node-template* leafref {template}? | +--rw te-node-attributes | +--rw schedules | | +--rw schedule* [schedule-id] | | +--rw schedule-id uint32 | | +--rw start? yang:date-and-time | | +--rw schedule-duration? string | | +--rw repeat-interval? string | +--rw admin-status? te-types:te-admin-status | +--rw connectivity-matrix* [id] | | +--rw id uint32 | | +--rw from | | | +--rw tp-ref? leafref | | +--rw to | | | +--rw tp-ref? leafref | | +--rw is-allowed? boolean | | +--rw label-restriction* [inclusive-exclusive label- start] | | | +--rw inclusive-exclusive enumeration | | | +--rw label-start te-types:generalized- label | | | +--rw label-end? te-types:generalized- label | | | +--rw range-bitmap? binary | | +--rw max-link-bandwidth? decimal64 | | +--rw max-resv-link-bandwidth? decimal64 | | +--rw unreserved-bandwidth* [priority] | | | +--rw priority uint8 | | | +--rw bandwidth? decimal64 | | +--rw te-default-metric? uint32 | | +--rw performance-metric {te-performance-metric}? | | | +--rw measurement | | | | +--rw unidirectional-delay? uint32 | | | | +--rw unidirectional-min-delay? uint32 | | | | +--rw unidirectional-max-delay? uint32 | | | | +--rw unidirectional-delay-variation? uint32 | | | | +--rw unidirectional-packet-loss? decimal64 | | | | +--rw unidirectional-residual-bandwidth? decimal64 | | | | +--rw unidirectional-available-bandwidth? decimal64 | | | | +--rw unidirectional-utilized-bandwidth? decimal64 | | | +--rw normality | | | +--rw unidirectional-delay? te- types:performance-metric-normality | | | +--rw unidirectional-min-delay? te- types:performance-metric-normality | | | +--rw unidirectional-max-delay? te- types:performance-metric-normality | | | +--rw unidirectional-delay-variation? te- types:performance-metric-normality | | | +--rw unidirectional-packet-loss? te- types:performance-metric-normality | | | +--rw unidirectional-residual-bandwidth? te- types:performance-metric-normality | | | +--rw unidirectional-available-bandwidth? te- types:performance-metric-normality | | | +--rw unidirectional-utilized-bandwidth? te- types:performance-metric-normality | | +--rw te-srlgs | | +--rw value* te-types:srlg | +--rw domain-id? uint32 | +--rw is-abstract? empty | +--rw name? inet:domain-name | +--rw signaling-address* inet:ip-address | +--rw underlay-topology {te-topology-hierarchy}? | +--rw provider-id-ref? leafref || | +--ro tp-ref? leafref | | | +--ro is-allowed? boolean | | +--ro domain-id? uint32 | | +--ro is-abstract? empty | | +--ro name? inet:domain-name | | +--ro signaling-address* inet:ip-address | | +--ro underlay-topology {te-topology-hierarchy}? | | +--ro provider-id-ref? leafref | | +--ro client-id-ref? leafref | | +--ro te-topology-id-ref? leafref | | +--ro+--rw client-id-ref? leafref | +--rw te-topology-id-ref? leafref | +--rw network-id-ref? leafref +--ro state | +--rooper-status? te-oper-statuste-node-template* leafref {template}? | +--rois-multi-access-dr? emptyte-node-attributes | | +--roinformation-source? enumerationschedules | | | +--roinformation-source-stateschedule* [schedule-id] | | | +--rocredibility-preference? uint16schedule-id uint32 | | | +--rotopologystart? yang:date-and-time | | | +--roprovider-id-ref? leafrefschedule-duration? string | | | +--roclient-id-ref? leafrefrepeat-interval? string | | +--ro admin-status? te-types:te-admin-status | | +--rote-topology-id-ref?connectivity-matrix* [id] | | | +--ro id uint32 | | | +--ro from | | | | +--ro tp-ref? leafref | | | +--ronetwork-id-ref?to | | | | +--ro tp-ref? leafref | | | +--rorouting-instance? stringis-allowed? boolean | | | +--roalt-information-sources* [information-source]label-restriction* [inclusive-exclusive label- start] | | | | +--roinformation-sourceinclusive-exclusive enumeration | | | | +--roinformation-source-statelabel-start te-types:generalized- label | | | | +--rocredibility-preference? uint16label-end? te-types:generalized- label | | | | +--rotopologyrange-bitmap? binary | | | +--roprovider-id-ref? leafrefmax-link-bandwidth? decimal64 | | | +--roclient-id-ref? leafrefmax-resv-link-bandwidth? decimal64 | | | +--rote-topology-id-ref? leafrefunreserved-bandwidth* [priority] | | | | +--ronetwork-id-ref? leafrefpriority uint8 | | | | +--rorouting-instance? stringbandwidth? decimal64 | | | +--roconnectivity-matrix* [id]te-default-metric? uint32 | | | +--roidperformance-metric {te-performance-metric}? | | | | +--ro measurement | | | | | +--ro unidirectional-delay? uint32 | | | | | +--ro unidirectional-min-delay? uint32 | | | | | +--ro unidirectional-max-delay? uint32 | | | | | +--ro unidirectional-delay-variation? uint32 | | | | | +--ro unidirectional-packet-loss? decimal64 | | | | | +--ro unidirectional-residual-bandwidth? decimal64 | | | | | +--ro unidirectional-available-bandwidth? decimal64 | | | | | +--ro unidirectional-utilized-bandwidth? decimal64 | | | | +--ro normality | | | | +--ro unidirectional-delay? te- types:performance-metric-normality | | | | +--ro unidirectional-min-delay? te- types:performance-metric-normality | | | | +--ro unidirectional-max-delay? te- types:performance-metric-normality | | | | +--ro unidirectional-delay-variation? te- types:performance-metric-normality | | | | +--ro unidirectional-packet-loss? te- types:performance-metric-normality | | | | +--ro unidirectional-residual-bandwidth? te- types:performance-metric-normality | | | | +--rofrom |unidirectional-available-bandwidth? te- types:performance-metric-normality | |+--ro tp-ref? leafref| | +--rotounidirectional-utilized-bandwidth? te- types:performance-metric-normality | | | +--rotp-ref? leafrefte-srlgs | | | +--rois-allowed? booleanvalue* te-types:srlg | | +--ro domain-id? uint32 | | +--ro is-abstract? empty | | +--ro name? inet:domain-name | | +--ro signaling-address* inet:ip-address | | +--ro underlay-topology {te-topology-hierarchy}? | | +--ro provider-id-ref? leafref | | +--ro client-id-ref? leafref | | +--ro te-topology-id-ref? leafref | | +--ro network-id-ref? leafref+--rw tunnel-termination-point* [tunnel-tp-id] +--rw tunnel-tp-id binary +--rw config | +--rw termination-capability* [link-tp]|+--rw link-tp leafref +--ro state+--rotermination-capability* [link-tp]oper-status? te-types:te-oper-status | +--rolink-tp leafref +--ro switching-capability identityref +--ro encoding identityref augment /nw:networks/nw:network/nt:link: +--rw te! +--rw config | +--rw (bundle-stack-level)? | | +--:(bundle) | | | +--rw bundled-linksis-multi-access-dr? empty | +--ro information-source? enumeration | +--ro information-source-state |+--rw bundled-link* [sequence]| +--ro credibility-preference? uint16 | |+--rw sequence uint32+--ro topology | | |+--rw src-tp-ref?+--ro provider-id-ref? leafref | | |+--rw des-tp-ref?+--ro client-id-ref? leafref | |+--:(component) | | +--rw component-links | | +--rw component-link* [sequence] | | +--rw sequence uint32 | | +--rw src-interface-ref? string | | +--rw des-interface-ref? string|+--rw te-link-template*+--ro te-topology-id-ref? leafref{template}? | +--rw te-link-attributes | +--rw schedules | | +--rw schedule* [schedule-id]| |+--rw schedule-id uint32 ||+--rw start? yang:date-and-time+--ro network-id-ref? leafref | |+--rw schedule-duration?+--ro routing-instance? string | +--ro information-source-entry* [information-source] |+--rw repeat-interval? string | +--rw access-type? te-link-access- type+--ro information-source enumeration |+--rw is-abstract? empty+--ro information-source-state |+--rw name? string|+--rw underlay! {te-topology-hierarchy}?+--ro credibility-preference? uint16 | |+--rw underlay-primary-path+--ro topology | | |+--rw+--ro provider-id-ref? leafref | | |+--rw+--ro client-id-ref? leafref | | |+--rw+--ro te-topology-id-ref? leafref | | |+--rw+--ro network-id-ref? leafref | | +--ro routing-instance? string |+--rw path-element* [path-element-id] |+--ro connectivity-matrix* [id] | |+--rw path-element-id+--ro id uint32 | | +--ro from |+--rw (type)?| | +--ro tp-ref? leafref |+--:(ipv4-address)| +--ro to | | |+--rw v4-address? inet:ipv4- address+--ro tp-ref? leafref | | +--ro is-allowed? boolean | | +--ro label-restriction* [inclusive-exclusive label- start] | |+--rw v4-prefix-length? uint8| +--ro inclusive-exclusive enumeration | | | +--ro label-start te-types:generalized- label | |+--rw v4-loose? boolean| +--ro label-end? te-types:generalized- label | |+--:(ipv6-address)| +--ro range-bitmap? binary | | +--ro max-link-bandwidth? decimal64 | | +--ro max-resv-link-bandwidth? decimal64 |+--rw v6-address? inet:ipv6- address| +--ro unreserved-bandwidth* [priority] | | |+--rw v6-prefix-length?+--ro priority uint8 | | | +--ro bandwidth? decimal64 |+--rw v6-loose? boolean| +--ro te-default-metric? uint32 | |+--:(as-number)+--ro performance-metric {te-performance-metric}? | | | +--ro measurement |+--rw as-number? uint16| | |+--:(unnumbered-link)+--ro unidirectional-delay? uint32 | | | |+--rw router-id? inet:ip-address+--ro unidirectional-min-delay? uint32 | | | |+--rw interface-id?+--ro unidirectional-max-delay? uint32 | | |+--:(label)| +--ro unidirectional-delay-variation? uint32 | |+--rw value? uint32| |+--rw underlay-backup-path* [index]+--ro unidirectional-packet-loss? decimal64 | | |+--rw index uint32| +--ro unidirectional-residual-bandwidth? decimal64 | |+--rw provider-id-ref? leafref| | +--ro unidirectional-available-bandwidth? decimal64 |+--rw client-id-ref? leafref| | |+--rw te-topology-id-ref? leafref+--ro unidirectional-utilized-bandwidth? decimal64 | | |+--rw network-id-ref? leafref+--ro normality | | |+--rw path-element* [path-element-id]+--ro unidirectional-delay? te- types:performance-metric-normality | | |+--rw path-element-id uint32+--ro unidirectional-min-delay? te- types:performance-metric-normality | | |+--rw (type)?+--ro unidirectional-max-delay? te- types:performance-metric-normality | | |+--:(ipv4-address)+--ro unidirectional-delay-variation? te- types:performance-metric-normality | | | +--ro unidirectional-packet-loss? te- types:performance-metric-normality |+--rw v4-address? inet:ipv4- address| | +--ro unidirectional-residual-bandwidth? te- types:performance-metric-normality | |+--rw v4-prefix-length? uint8| +--ro unidirectional-available-bandwidth? te- types:performance-metric-normality | | | +--ro unidirectional-utilized-bandwidth? te- types:performance-metric-normality |+--rw v4-loose? boolean| +--ro te-srlgs | |+--:(ipv6-address)+--ro value* te-types:srlg | +--ro domain-id? uint32 | +--ro is-abstract? empty | +--ro name? inet:domain-name | +--ro signaling-address* inet:ip-address |+--rw v6-address? inet:ipv6- address+--ro underlay-topology {te-topology-hierarchy}? | +--ro provider-id-ref? leafref | +--ro client-id-ref? leafref | +--ro te-topology-id-ref? leafref | +--ro network-id-ref? leafref +--rwv6-prefix-length? uint8tunnel-termination-point* [tunnel-tp-id] +--rw tunnel-tp-id binary +--rw config | +--rw switching-capability? identityref | +--rw encoding? identityref | +--rw inter-layer-lock-id? uint32 | +--rwv6-loose? booleanprotection-type? identityref | +--rw termination-capability* [link-tp] | +--rw link-tp leafref |+--:(as-number)+--rw label-restriction* [inclusive-exclusive label- start] | | +--rw inclusive-exclusive enumeration | | +--rwas-number? uint16label-start te-types:generalized- label | | +--rw label-end? te-types:generalized- label |+--:(unnumbered-link)| +--rw range-bitmap? binary | +--rw max-lsp-bandwidth* [priority] | +--rw priority uint8 | +--rwrouter-id? inet:ip-addressbandwidth? decimal64 +--ro state +--ro switching-capability? identityref +--ro encoding? identityref +--ro inter-layer-lock-id? uint32 +--ro protection-type? identityref +--ro termination-capability* [link-tp] +--ro link-tp leafref +--ro label-restriction* [inclusive-exclusive label- start] | +--ro inclusive-exclusive enumeration | +--ro label-start te-types:generalized- label | +--ro label-end? te-types:generalized- label | +--ro range-bitmap? binary +--ro max-lsp-bandwidth* [priority] +--ro priority uint8 +--ro bandwidth? decimal64 augment /nw:networks/nw:network/nt:link: +--rwinterface-id? uint32te! +--rw config | +--rw (bundle-stack-level)? | |+--:(label)+--:(bundle) | | | +--rwvalue? uint32bundled-links | | | +--rwunderlay-protection-type? uint16bundled-link* [sequence] | | | +--rwunderlay-trail-srcsequence uint32 | | | +--rwtp-ref?src-tp-ref? leafref | | | +--rwnode-ref?des-tp-ref? leafref | | +--:(component) | | +--rwnetwork-ref? leafrefcomponent-links | | +--rwunderlay-trail-descomponent-link* [sequence] | | +--rwtp-ref? leafrefsequence uint32 | | +--rwnode-ref? leafrefsrc-interface-ref? string | | +--rwnetwork-ref? leafrefdes-interface-ref? string | +--rwadmin-status? te-admin-statuste-link-template* leafref {template}? | +--rwperformance-metric-throttle {te-performance- metric}? |te-link-attributes | +--rwunidirectional-delay-offset? uint32schedules | | +--rwmeasure-interval? uint32schedule* [schedule-id] | | +--rwadvertisement-interval?schedule-id uint32 | | +--rwsuppression-interval? uint32start? yang:date-and-time | | +--rwthreshold-outschedule-duration? string | | +--rw repeat-interval? string | +--rwunidirectional-delay? uint32access-type? te-types:te-link- access-type | +--rw external-domain | | +--rwunidirectional-min-delay? uint32remote-te-node-id? te-types:te-node-id | | +--rw remote-te-link-tp-id? te-types:te-tp-id | | +--rwunidirectional-max-delay?plug-id? uint32 ||+--rw is-abstract? empty | +--rwunidirectional-delay-variation? uint32name? string | +--rw underlay! {te-topology-hierarchy}? | | +--rwunidirectional-packet-loss? decimal64underlay-primary-path | | | +--rwunidirectional-residual-bandwidth? decimal64provider-id-ref? leafref | | | +--rwunidirectional-available-bandwidth? decimal64client-id-ref? leafref | | | +--rwunidirectional-utilized-bandwidth? decimal64te-topology-id-ref? leafref | | | +--rwthreshold-innetwork-id-ref? leafref | | | +--rwunidirectional-delay? uint32path-element* [path-element-id] | | | +--rwunidirectional-min-delay?path-element-id uint32 | | | +--rwunidirectional-max-delay? uint32(type)? | | |+--rw unidirectional-delay-variation? uint32+--:(ipv4-address) | | | | +--rwunidirectional-packet-loss? decimal64v4-address? inet:ipv4- address | | | | +--rwunidirectional-residual-bandwidth? decimal64v4-prefix-length? uint8 | | | | +--rwunidirectional-available-bandwidth? decimal64v4-loose? boolean | | |+--rw unidirectional-utilized-bandwidth? decimal64+--:(ipv6-address) | |+--rw threshold-accelerated-advertisement| | +--rwunidirectional-delay? uint32v6-address? inet:ipv6- address | |+--rw unidirectional-min-delay? uint32| | +--rwunidirectional-max-delay? uint32v6-prefix-length? uint8 | |+--rw unidirectional-delay-variation? uint32| | +--rwunidirectional-packet-loss? decimal64v6-loose? boolean | |+--rw unidirectional-residual-bandwidth? decimal64| +--:(as-number) |+--rw unidirectional-available-bandwidth? decimal64| |+--rw unidirectional-utilized-bandwidth? decimal64| +--rwlink-index? uint64as-number? uint16 |+--rw administrative-group? te-types:admin- groups|+--rw max-link-bandwidth? decimal64|+--rw max-resv-link-bandwidth? decimal64+--:(unnumbered-link) | |+--rw unreserved-bandwidth* [priority]| | +--rwpriority uint8router-id? inet:ip-address | | |+--rw bandwidth? decimal64| +--rwte-default-metric?interface-id? uint32 |+--rw performance-metric {te-performance-metric}?| |+--rw measurement+--:(label) | | | +--rwunidirectional-delay?value? uint32 | ||+--rwunidirectional-min-delay? uint32underlay-backup-path* [index] | | | +--rwunidirectional-max-delay?index uint32 | | | +--rwunidirectional-delay-variation? uint32provider-id-ref? leafref | | | +--rwunidirectional-packet-loss? decimal64client-id-ref? leafref | | | +--rwunidirectional-residual-bandwidth? decimal64te-topology-id-ref? leafref | | | +--rwunidirectional-available-bandwidth? decimal64network-id-ref? leafref | | | +--rwunidirectional-utilized-bandwidth? decimal64 |path-element* [path-element-id] |+--rw normality| | +--rwunidirectional-delay? performance-metric-normality |path-element-id uint32 |+--rw unidirectional-min-delay? performance-metric-normality| | +--rwunidirectional-max-delay? performance-metric-normality(type)? | |+--rw unidirectional-delay-variation? performance-metric-normality| +--:(ipv4-address) | |+--rw unidirectional-packet-loss? performance-metric-normality| | +--rwunidirectional-residual-bandwidth? performance-metric-normalityv4-address? inet:ipv4- address | |+--rw unidirectional-available-bandwidth? performance-metric-normality| | +--rwunidirectional-utilized-bandwidth? performance-metric-normalityv4-prefix-length? uint8 |+--rw link-protection-type? enumeration|+--rw interface-switching-capability* [switching- capability]| | +--rwswitching-capability identityrefv4-loose? boolean | |+--rw encoding? identityref| +--:(ipv6-address) |+--rw max-lsp-bandwidth* [priority]| | | +--rwpriority uint8 |v6-address? inet:ipv6- address | |+--rw bandwidth? decimal64| | +--rwtime-division-multiplex-capablev6-prefix-length? uint8 | | | | +--rwminimum-lsp-bandwidth? decimal64v6-loose? boolean | | |+--rw indication? enumeration+--:(as-number) | |+--rw interface-adjustment-capability* [upper-sc]| | +--rwupper-sc identityrefas-number? uint16 | |+--rw upper-encoding? identityref| +--:(unnumbered-link) | |+--rw max-lsp-bandwidth* [priority]| | +--rwpriority uint8router-id? inet:ip-address | |+--rw bandwidth? decimal64|+--rw te-srlgs| +--rwvalues* te-types:srlg +--ro state +--ro (bundle-stack-level)? | +--:(bundle)interface-id? uint32 | |+--ro bundled-links| +--:(label) |+--ro bundled-link* [sequence]| |+--ro sequence+--rw value? uint32 | |+--ro src-tp-ref? leafref+--rw underlay-protection-type? uint16 | |+--ro des-tp-ref? leafref+--rw underlay-trail-src |+--:(component)|+--ro component-links|+--ro component-link* [sequence]+--rw tp-ref? leafref |+--ro sequence uint32|+--ro src-interface-ref? string|+--ro des-interface-ref? string +--ro te-link-template*+--rw node-ref? leafref{template}? +--ro te-link-attributes|+--ro schedules| |+--ro schedule* [schedule-id]+--rw network-ref? leafref | |+--ro schedule-id uint32+--rw underlay-trail-des | |+--ro start? yang:date-and-time+--rw tp-ref? leafref | |+--ro schedule-duration? string+--rw node-ref? leafref | |+--ro repeat-interval? string+--rw network-ref? leafref |+--ro access-type? te-link-access- type+--rw admin-status? te-types:te- admin-status |+--ro is-abstract? empty+--rw performance-metric-throttle {te-performance- metric}? |+--ro name? string|+--ro underlay! {te-topology-hierarchy}?+--rw unidirectional-delay-offset? uint32 | |+--ro underlay-primary-path+--rw measure-interval? uint32 | | +--rw advertisement-interval? uint32 |+--ro provider-id-ref? leafref| +--rw suppression-interval? uint32 | |+--ro client-id-ref? leafref+--rw threshold-out | | |+--ro te-topology-id-ref? leafref+--rw unidirectional-delay? uint32 | | |+--ro network-id-ref? leafref+--rw unidirectional-min-delay? uint32 | | |+--ro path-element* [path-element-id]+--rw unidirectional-max-delay? uint32 | | |+--ro path-element-id+--rw unidirectional-delay-variation? uint32 | | |+--ro (type)?+--rw unidirectional-packet-loss? decimal64 | | |+--:(ipv4-address)+--rw unidirectional-residual-bandwidth? decimal64 | | | +--rw unidirectional-available-bandwidth? decimal64 |+--ro v4-address? inet:ipv4- address| | +--rw unidirectional-utilized-bandwidth? decimal64 | |+--ro v4-prefix-length? uint8+--rw threshold-in | | | +--rw unidirectional-delay? uint32 |+--ro v4-loose? boolean| | +--rw unidirectional-min-delay? uint32 |+--:(ipv6-address)| | +--rw unidirectional-max-delay? uint32 | |+--ro v6-address? inet:ipv6- address| +--rw unidirectional-delay-variation? uint32 | | |+--ro v6-prefix-length? uint8+--rw unidirectional-packet-loss? decimal64 | | | +--rw unidirectional-residual-bandwidth? decimal64 | | |+--ro v6-loose? boolean+--rw unidirectional-available-bandwidth? decimal64 | | |+--:(as-number)+--rw unidirectional-utilized-bandwidth? decimal64 | | +--rw threshold-accelerated-advertisement | |+--ro as-number? uint16+--rw unidirectional-delay? uint32 | | +--rw unidirectional-min-delay? uint32 |+--:(unnumbered-link)| +--rw unidirectional-max-delay? uint32 | | +--rw unidirectional-delay-variation? uint32 |+--ro router-id? inet:ip-address| +--rw unidirectional-packet-loss? decimal64 | | +--rw unidirectional-residual-bandwidth? decimal64 |+--ro interface-id? uint32| +--rw unidirectional-available-bandwidth? decimal64 | |+--:(label)+--rw unidirectional-utilized-bandwidth? decimal64 | +--rw link-index? uint64 | +--rw administrative-group? te-types:admin- groups |+--ro value? uint32+--rw interface-switching-capability* [switching- capability] | |+--ro underlay-backup-path* [index]+--rw switching-capability identityref | | +--rw encoding? identityref |+--ro index uint32| +--rw max-lsp-bandwidth* [priority] | |+--ro provider-id-ref? leafref| +--rw priority uint8 | |+--ro client-id-ref? leafref| +--rw bandwidth? decimal64 | |+--ro te-topology-id-ref? leafref+--rw time-division-multiplex-capable | | +--rw minimum-lsp-bandwidth? decimal64 |+--ro network-id-ref? leafref| +--rw indication? enumeration | +--rw link-protection-type? enumeration |+--ro path-element* [path-element-id]+--rw max-link-bandwidth? decimal64 | +--rw max-resv-link-bandwidth? decimal64 | +--rw unreserved-bandwidth* [priority] |+--ro path-element-id uint32| +--rw priority uint8 | |+--ro (type)?+--rw bandwidth? decimal64 | +--rw te-default-metric? uint32 | +--rw performance-metric {te-performance-metric}? |+--:(ipv4-address)| +--rw measurement | | |+--ro v4-address? inet:ipv4- address+--rw unidirectional-delay? uint32 | | | +--rw unidirectional-min-delay? uint32 |+--ro v4-prefix-length? uint8| | +--rw unidirectional-max-delay? uint32 | |+--ro v4-loose? boolean| +--rw unidirectional-delay-variation? uint32 | |+--:(ipv6-address)| +--rw unidirectional-packet-loss? decimal64 | | |+--ro v6-address? inet:ipv6- address+--rw unidirectional-residual-bandwidth? decimal64 | | | +--rw unidirectional-available-bandwidth? decimal64 |+--ro v6-prefix-length? uint8| | +--rw unidirectional-utilized-bandwidth? decimal64 | |+--ro v6-loose? boolean+--rw normality | | +--rw unidirectional-delay? te- types:performance-metric-normality |+--:(as-number)| +--rw unidirectional-min-delay? te- types:performance-metric-normality | | +--rw unidirectional-max-delay? te- types:performance-metric-normality |+--ro as-number? uint16| +--rw unidirectional-delay-variation? te- types:performance-metric-normality | |+--:(unnumbered-link)+--rw unidirectional-packet-loss? te- types:performance-metric-normality | | +--rw unidirectional-residual-bandwidth? te- types:performance-metric-normality | |+--ro router-id? inet:ip-address+--rw unidirectional-available-bandwidth? te- types:performance-metric-normality | | +--rw unidirectional-utilized-bandwidth? te- types:performance-metric-normality | +--rw te-srlgs | +--rw value* te-types:srlg +--rointerface-id? uint32state +--ro (bundle-stack-level)? | +--:(bundle) | |+--:(label)+--ro bundled-links | | +--ro bundled-link* [sequence] | | +--rovalue?sequence uint32 | | +--rounderlay-protection-type? uint16src-tp-ref? leafref | | +--rounderlay-trail-srcdes-tp-ref? leafref | +--:(component) | +--ro component-links | +--rotp-ref? leafrefcomponent-link* [sequence] | +--ro sequence uint32 | +--ro src-interface-ref? string | +--ronode-ref?des-interface-ref? string +--ro te-link-template* leafref {template}? +--ro te-link-attributes | +--ro schedules | | +--ronetwork-ref? leafrefschedule* [schedule-id] | | +--rounderlay-trail-desschedule-id uint32 | | +--rotp-ref? leafrefstart? yang:date-and-time | | +--ronode-ref? leafrefschedule-duration? string | | +--ronetwork-ref? leafrefrepeat-interval? string | +--roadmin-status? te-admin-statusaccess-type? te-types:te-link- access-type | +--roperformance-metric-throttle {te-performance- metric}?external-domain | | +--rounidirectional-delay-offset? uint32remote-te-node-id? te-types:te-node-id | | +--romeasure-interval? uint32remote-te-link-tp-id? te-types:te-tp-id | | +--roadvertisement-interval?plug-id? uint32 ||+--rosuppression-interval? uint32 |is-abstract? empty | +--rothreshold-outname? string | +--ro underlay! {te-topology-hierarchy}? | | +--rounidirectional-delay? uint32underlay-primary-path | | | +--rounidirectional-min-delay? uint32provider-id-ref? leafref | | | +--rounidirectional-max-delay? uint32client-id-ref? leafref | | | +--rounidirectional-delay-variation? uint32te-topology-id-ref? leafref | | | +--rounidirectional-packet-loss? decimal64network-id-ref? leafref | | | +--rounidirectional-residual-bandwidth? decimal64path-element* [path-element-id] | | | +--rounidirectional-available-bandwidth? decimal64path-element-id uint32 | | | +--rounidirectional-utilized-bandwidth? decimal64 |(type)? |+--ro threshold-in| | +--:(ipv4-address) |+--ro unidirectional-delay? uint32| | | +--rounidirectional-min-delay? uint32v4-address? inet:ipv4- address | | | | +--rounidirectional-max-delay? uint32v4-prefix-length? uint8 | | | | +--rounidirectional-delay-variation? uint32v4-loose? boolean | | |+--ro unidirectional-packet-loss? decimal64+--:(ipv6-address) | | | | +--rounidirectional-residual-bandwidth? decimal64v6-address? inet:ipv6- address | | |+--ro unidirectional-available-bandwidth? decimal64| +--ro v6-prefix-length? uint8 | |+--ro unidirectional-utilized-bandwidth? decimal64| | +--rothreshold-accelerated-advertisementv6-loose? boolean | |+--ro unidirectional-delay? uint32| +--:(as-number) | |+--ro unidirectional-min-delay? uint32| | +--rounidirectional-max-delay? uint32as-number? uint16 | |+--ro unidirectional-delay-variation? uint32| +--:(unnumbered-link) | |+--ro unidirectional-packet-loss? decimal64| | +--rounidirectional-residual-bandwidth? decimal64router-id? inet:ip-address | |+--ro unidirectional-available-bandwidth? decimal64| | +--rounidirectional-utilized-bandwidth? decimal64interface-id? uint32 |+--ro link-index? uint64|+--ro administrative-group? te-types:admin- groups|+--ro max-link-bandwidth? decimal64+--:(label) | |+--ro max-resv-link-bandwidth? decimal64| +--rounreserved-bandwidth* [priority]value? uint32 | | +--ropriority uint8underlay-backup-path* [index] | |+--ro bandwidth? decimal64| +--rote-default-metric?index uint32 |+--ro performance-metric {te-performance-metric}?| | +--romeasurementprovider-id-ref? leafref | | | +--rounidirectional-delay? uint32client-id-ref? leafref | | | +--rounidirectional-min-delay? uint32te-topology-id-ref? leafref | | | +--rounidirectional-max-delay? uint32network-id-ref? leafref | | | +--rounidirectional-delay-variation? uint32path-element* [path-element-id] | | | +--rounidirectional-packet-loss? decimal64path-element-id uint32 | | | +--rounidirectional-residual-bandwidth? decimal64(type)? | | |+--ro unidirectional-available-bandwidth? decimal64+--:(ipv4-address) | | | | +--rounidirectional-utilized-bandwidth? decimal64v4-address? inet:ipv4- address | |+--ro normality| | +--rounidirectional-delay? performance-metric-normalityv4-prefix-length? uint8 | |+--ro unidirectional-min-delay? performance-metric-normality| | +--rounidirectional-max-delay? performance-metric-normalityv4-loose? boolean | |+--ro unidirectional-delay-variation? performance-metric-normality| +--:(ipv6-address) | |+--ro unidirectional-packet-loss? performance-metric-normality| | +--rounidirectional-residual-bandwidth? performance-metric-normalityv6-address? inet:ipv6- address | |+--ro unidirectional-available-bandwidth? performance-metric-normality| | +--rounidirectional-utilized-bandwidth? performance-metric-normalityv6-prefix-length? uint8 |+--ro link-protection-type? enumeration|+--ro interface-switching-capability* [switching- capability]| | +--roswitching-capability identityrefv6-loose? boolean | |+--ro encoding? identityref| +--:(as-number) |+--ro max-lsp-bandwidth* [priority]| | | +--ropriority uint8 |as-number? uint16 | |+--ro bandwidth? decimal64| +--:(unnumbered-link) |+--ro time-division-multiplex-capable| | | +--rominimum-lsp-bandwidth? decimal64router-id? inet:ip-address | | | | +--roindication? enumerationinterface-id? uint32 | |+--ro interface-adjustment-capability* [upper-sc]| +--:(label) |+--ro upper-sc identityref| | +--roupper-encoding? identityrefvalue? uint32 | | +--romax-lsp-bandwidth* [priority]underlay-protection-type? uint16 | | +--ropriority uint8underlay-trail-src | |+--ro bandwidth? decimal64| +--rote-srlgstp-ref? leafref |+--ro values* te-types:srlg +--ro oper-status? te-oper-status +--ro information-source? enumeration +--ro information-source-state|+--ro credibility-preference? uint16| +--rotopologynode-ref? leafref | | | +--roprovider-id-ref?network-ref? leafref | | +--roclient-id-ref? leafrefunderlay-trail-des | | +--rote-topology-id-ref?tp-ref? leafref | | +--ronetwork-id-ref?node-ref? leafref | | +--rorouting-instance? stringnetwork-ref? leafref | +--roalt-information-sources* [information-source]admin-status? te-types:te- admin-status | +--roinformation-source enumerationperformance-metric-throttle {te-performance- metric}? | | +--roinformation-source-stateunidirectional-delay-offset? uint32 | | +--rocredibility-preference? uint16measure-interval? uint32 | | +--rotopologyadvertisement-interval? uint32 | | +--ro suppression-interval? uint32 | | +--roprovider-id-ref? leafrefthreshold-out | | | +--roclient-id-ref? leafrefunidirectional-delay? uint32 | | | +--rote-topology-id-ref? leafrefunidirectional-min-delay? uint32 | | | +--ronetwork-id-ref? leafrefunidirectional-max-delay? uint32 | |+--ro routing-instance? string| +--rolink-index? uint64unidirectional-delay-variation? uint32 |+--ro administrative-group? te-types:admin- groups|+--ro max-link-bandwidth? decimal64| +--romax-resv-link-bandwidth?unidirectional-packet-loss? decimal64 |+--ro unreserved-bandwidth* [priority]| | +--ropriority uint8unidirectional-residual-bandwidth? decimal64 | | | +--robandwidth?unidirectional-available-bandwidth? decimal64 |+--ro te-default-metric? uint32| | +--roperformance-metric {te-performance-metric}?unidirectional-utilized-bandwidth? decimal64 | | +--romeasurementthreshold-in | | | +--ro unidirectional-delay? uint32 | | | +--ro unidirectional-min-delay? uint32 | | | +--ro unidirectional-max-delay? uint32 | | | +--ro unidirectional-delay-variation? uint32 | | | +--ro unidirectional-packet-loss? decimal64 | | | +--ro unidirectional-residual-bandwidth? decimal64 | | | +--ro unidirectional-available-bandwidth? decimal64 | | | +--ro unidirectional-utilized-bandwidth? decimal64 | | +--ronormalitythreshold-accelerated-advertisement | | +--ro unidirectional-delay?performance-metric-normalityuint32 | | +--ro unidirectional-min-delay?performance-metric-normalityuint32 | | +--ro unidirectional-max-delay?performance-metric-normalityuint32 | | +--ro unidirectional-delay-variation?performance-metric-normalityuint32 | | +--ro unidirectional-packet-loss?performance-metric-normalitydecimal64 | | +--ro unidirectional-residual-bandwidth?performance-metric-normalitydecimal64 | | +--ro unidirectional-available-bandwidth?performance-metric-normalitydecimal64 | | +--ro unidirectional-utilized-bandwidth?performance-metric-normalitydecimal64 | +--rolink-protection-type? enumerationlink-index? uint64 | +--ro administrative-group? te-types:admin- groups | +--ro interface-switching-capability* [switching- capability] | | +--ro switching-capability identityref | | +--ro encoding? identityref | | +--ro max-lsp-bandwidth* [priority] | | | +--ro priority uint8 | | | +--ro bandwidth? decimal64 | | +--ro time-division-multiplex-capable | ||+--ro minimum-lsp-bandwidth? decimal64 | ||+--ro indication? enumeration | +--ro link-protection-type? enumeration | +--ro max-link-bandwidth? decimal64 | +--ro max-resv-link-bandwidth? decimal64 | +--ro unreserved-bandwidth* [priority] | | +--ro priority uint8 | | +--ro bandwidth? decimal64 | +--ro te-default-metric? uint32 | +--ro performance-metric {te-performance-metric}? | | +--ro measurement | | | +--ro unidirectional-delay? uint32 | | | +--ro unidirectional-min-delay? uint32 | | | +--ro unidirectional-max-delay? uint32 | | | +--ro unidirectional-delay-variation? uint32 | | | +--ro unidirectional-packet-loss? decimal64 | | | +--ro unidirectional-residual-bandwidth? decimal64 | | | +--rointerface-adjustment-capability* [upper-sc]unidirectional-available-bandwidth? decimal64 | | | +--roupper-sc identityrefunidirectional-utilized-bandwidth? decimal64 | | +--roupper-encoding? identityrefnormality | | +--romax-lsp-bandwidth* [priority]unidirectional-delay? te- types:performance-metric-normality | | +--ropriority uint8unidirectional-min-delay? te- types:performance-metric-normality | | +--robandwidth? decimal64unidirectional-max-delay? te- types:performance-metric-normality |+--ro te-srlgs| +--rovalues* te-types:srlg +--ro recoveryunidirectional-delay-variation? te- types:performance-metric-normality |+--ro restoration-status? te-recovery-status| +--roprotection-status? te-recovery-status +--ro underlay {te-topology-hierarchy}? +--ro dynamic? boolean +--ro committed? boolean augment /nw:networks/nw:network/nw:node/nt:termination-point: +--rw te! +--rw te-tp-id te-tp-id +--rw configunidirectional-packet-loss? te- types:performance-metric-normality |+--rw schedules|+--rw schedule* [schedule-id]+--ro unidirectional-residual-bandwidth? te- types:performance-metric-normality |+--rw schedule-id uint32|+--rw start? yang:date-and-time+--ro unidirectional-available-bandwidth? te- types:performance-metric-normality |+--rw schedule-duration? string|+--rw repeat-interval? string+--rostateunidirectional-utilized-bandwidth? te- types:performance-metric-normality | +--roscheduleste-srlgs | +--roschedule* [schedule-id]value* te-types:srlg +--roschedule-id uint32oper-status? te-types:te-oper-status +--rostart? yang:date-and-timeis-transitional? empty +--roschedule-duration? stringinformation-source? enumeration +--rorepeat-interval? string notifications: +---n te-node-eventinformation-source-state | +--roevent-type? te-topology-event-typecredibility-preference? uint16 | +--ronode-ref? leafreftopology | | +--ronetwork-ref?provider-id-ref? leafref |+--ro te-topology!| +--rote-node-attributesclient-id-ref? leafref | | +--roschedules |te-topology-id-ref? leafref | | +--roschedule* [schedule-id] | |network-id-ref? leafref | +--roschedule-id uint32 | | |routing-instance? string +--rostart? yang:date-and-time | |information-source-entry* [information-source] | +--roschedule-duration? string | |information-source enumeration | +--rorepeat-interval? stringinformation-source-state | | +--roadmin-status? te-admin-statuscredibility-preference? uint16 | | +--roconnectivity-matrix* [id]topology | | | +--roid uint32provider-id-ref? leafref | | | +--rofrom |client-id-ref? leafref | | | +--rotp-ref?te-topology-id-ref? leafref | | ||+--ronode-ref?network-id-ref? leafref | | +--ro routing-instance? string | +--ro link-index? uint64 | +--ronetwork-ref? leafrefadministrative-group? te-types:admin- groups | +--ro interface-switching-capability* [switching- capability] | | +--rotoswitching-capability identityref | | +--ro encoding? identityref | | +--rotp-ref? leafref |max-lsp-bandwidth* [priority] | | | +--ronode-ref? leafref |priority uint8 | | | +--ronetwork-ref? leafref |bandwidth? decimal64 | | +--rois-allowed? booleantime-division-multiplex-capable | | +--rodomain-id? uint32minimum-lsp-bandwidth? decimal64 | | +--rois-abstract? emptyindication? enumeration | +--ro link-protection-type? enumeration | +--roname? inet:domain-namemax-link-bandwidth? decimal64 | +--ro max-resv-link-bandwidth? decimal64 | +--rosignaling-address* inet:ip-addressunreserved-bandwidth* [priority] | | +--rounderlay-topology {te-topology-hierarchy}?priority uint8 | | +--roprovider-id-ref? leafrefbandwidth? decimal64 | +--ro te-default-metric? uint32 | +--roclient-id-ref? leafrefperformance-metric {te-performance-metric}? | | +--rote-topology-id-ref? leafrefmeasurement | |+--ro network-id-ref? leafref| +--rooper-status? te-oper-statusunidirectional-delay? uint32 |+--ro is-multi-access-dr? empty|+--ro information-source? enumeration| +--roinformation-source-state |unidirectional-min-delay? uint32 |+--ro credibility-preference? uint16| | +--rotopologyunidirectional-max-delay? uint32 | | | +--roprovider-id-ref? leafrefunidirectional-delay-variation? uint32 | | | +--roclient-id-ref? leafrefunidirectional-packet-loss? decimal64 | | | +--rote-topology-id-ref? leafrefunidirectional-residual-bandwidth? decimal64 | | | +--ronetwork-id-ref? leafrefunidirectional-available-bandwidth? decimal64 | |+--ro routing-instance? string| +--roalt-information-sources* [information-source]unidirectional-utilized-bandwidth? decimal64 |+--ro information-source enumeration| +--roinformation-source-statenormality | | +--rocredibility-preference? uint16unidirectional-delay? te- types:performance-metric-normality | | +--rotopology |unidirectional-min-delay? te- types:performance-metric-normality | | +--roprovider-id-ref? leafref |unidirectional-max-delay? te- types:performance-metric-normality | | +--roclient-id-ref? leafref |unidirectional-delay-variation? te- types:performance-metric-normality | | +--rote-topology-id-ref? leafref |unidirectional-packet-loss? te- types:performance-metric-normality | | +--ronetwork-id-ref? leafrefunidirectional-residual-bandwidth? te- types:performance-metric-normality | | +--rorouting-instance? stringunidirectional-available-bandwidth? te- types:performance-metric-normality | | +--roconnectivity-matrix* [id]unidirectional-utilized-bandwidth? te- types:performance-metric-normality | +--ro te-srlgs | +--roid uint32value* te-types:srlg +--ro recovery | +--ro restoration-status? te-types:te-recovery-status | +--rofromprotection-status? te-types:te-recovery-status +--ro underlay {te-topology-hierarchy}? +--ro dynamic? boolean +--ro committed? boolean augment /nw:networks/nw:network/nw:node/nt:termination-point: +--rw te! +--rw te-tp-id te-types:te-tp-id +--rw config | +--rw schedules | |+--ro tp-ref? leafref+--rw schedule* [schedule-id] | | +--rw schedule-id uint32 |+--ro node-ref? leafref| +--rw start? yang:date-and-time | |+--ro network-ref? leafref+--rw schedule-duration? string | |+--ro to+--rw repeat-interval? string | +--rw interface-switching-capability* [switching-capability] | |+--ro tp-ref? leafref+--rw switching-capability identityref | | +--rw encoding? identityref |+--ro node-ref? leafref| +--rw max-lsp-bandwidth* [priority] | |+--ro network-ref? leafref| +--rw priority uint8 |+--ro is-allowed? boolean|+--ro domain-id? uint32|+--ro is-abstract? empty+--rw bandwidth? decimal64 |+--ro name? inet:domain-name|+--ro signaling-address* inet:ip-address+--rw time-division-multiplex-capable |+--ro underlay-topology {te-topology-hierarchy}?|+--ro provider-id-ref? leafref+--rw minimum-lsp-bandwidth? decimal64 |+--ro client-id-ref? leafref|+--ro te-topology-id-ref? leafref+--rw indication? enumeration | +--rw inter-layer-lock-id? uint32 +--ronetwork-id-ref? leafref +---n te-link-event +--ro event-type? te-topology-event-type +--ro link-ref? leafref +--ro network-ref? leafref +--ro te-topology! +--ro te-link-attributes |state +--ro schedules ||+--ro schedule* [schedule-id] ||+--ro schedule-id uint32 ||+--ro start? yang:date-and-time ||+--ro schedule-duration? string ||+--ro repeat-interval? string|+--roaccess-type? te-link-access-typeinterface-switching-capability* [switching-capability] | +--rois-abstract? emptyswitching-capability identityref | +--roname? stringencoding? identityref | +--rounderlay! {te-topology-hierarchy}?max-lsp-bandwidth* [priority] | | +--rounderlay-primary-path |priority uint8 | | +--roprovider-id-ref? leafrefbandwidth? decimal64 | +--ro time-division-multiplex-capable | +--ro minimum-lsp-bandwidth? decimal64 | +--roclient-id-ref? leafrefindication? enumeration +--ro inter-layer-lock-id? uint32 notifications: +---n te-node-event | +--ro event-type? te-types:te-topology-event- type | +--ro node-ref? leafref | +--rote-topology-id-ref?network-ref? leafref | +--ro te-topology! | +--ro te-node-attributes | | +--ronetwork-id-ref? leafrefschedules | | | +--ropath-element* [path-element-id]schedule* [schedule-id] | | | +--ropath-element-idschedule-id uint32 | | | +--ro(type)? |start? yang:date-and-time | |+--:(ipv4-address)| +--ro schedule-duration? string | | | +--rov4-address? inet:ipv4-addressrepeat-interval? string | | +--ro admin-status? te-types:te-admin-status | | +--rov4-prefix-length? uint8 |connectivity-matrix* [id] | | | +--rov4-loose? booleanid uint32 | | |+--:(ipv6-address)+--ro from | | | | +--rov6-address? inet:ipv6-addresstp-ref? leafref | | | | +--rov6-prefix-length? uint8node-ref? leafref | | | | +--rov6-loose? booleannetwork-ref? leafref | | |+--:(as-number)+--ro to | | | | +--roas-number? uint16 | | | +--:(unnumbered-link)tp-ref? leafref | | | | +--rorouter-id? inet:ip-addressnode-ref? leafref | | | | +--rointerface-id? uint32 |network-ref? leafref | |+--:(label)| +--ro is-allowed? boolean | | +--rovalue?domain-id? uint32 | | +--rounderlay-backup-path* [index]is-abstract? empty | | +--ro name? inet:domain-name | | +--roindex uint32signaling-address* inet:ip-address | | +--ro underlay-topology {te-topology-hierarchy}? | | +--ro provider-id-ref? leafref | ||+--ro client-id-ref? leafref | ||+--ro te-topology-id-ref? leafref | ||+--ro network-id-ref? leafref | +--ro oper-status? te-types:te-oper-status | +--ro is-multi-access-dr? empty | +--ropath-element* [path-element-id]information-source? enumeration | +--ro information-source-state | | +--ropath-element-id uint32 |credibility-preference? uint16 | | +--ro(type)? |topology | |+--:(ipv4-address)| +--ro provider-id-ref? leafref | | | +--rov4-address? inet:ipv4-address |client-id-ref? leafref | | | +--rov4-prefix-length? uint8 |te-topology-id-ref? leafref | | | +--rov4-loose? boolean | |network-id-ref? leafref |+--:(ipv6-address)| +--ro routing-instance? string | +--ro information-source-entry* [information-source] | +--ro information-source enumeration | +--rov6-address? inet:ipv6-addressinformation-source-state | | +--ro credibility-preference? uint16 | | +--rov6-prefix-length? uint8 |topology | | | +--rov6-loose? boolean |provider-id-ref? leafref | |+--:(as-number)| +--ro client-id-ref? leafref | | | +--roas-number? uint16 |te-topology-id-ref? leafref | |+--:(unnumbered-link)| +--ro network-id-ref? leafref | | +--ro routing-instance? string | +--rorouter-id? inet:ip-addressconnectivity-matrix* [id] | | +--ro id uint32 | | +--rointerface-id? uint32from | | |+--:(label)+--ro tp-ref? leafref | | | +--rovalue? uint32node-ref? leafref | | | +--rounderlay-protection-type? uint16network-ref? leafref | | +--rounderlay-trail-srcto | | | +--ro tp-ref? leafref | | | +--ro node-ref? leafref | | | +--ro network-ref? leafref | | +--rounderlay-trail-desis-allowed? boolean | +--ro domain-id? uint32 | +--ro is-abstract? empty | +--ro name? inet:domain-name | +--ro signaling-address* inet:ip-address | +--rotp-ref?underlay-topology {te-topology-hierarchy}? | +--ro provider-id-ref? leafref | +--ro client-id-ref? leafref | +--ro te-topology-id-ref? leafref | +--ronode-ref?network-id-ref? leafref +---n te-link-event +--ro event-type? te-types:te-topology-event- type +--ro link-ref? leafref +--ro network-ref? leafref +--ro te-topology! +--ro te-link-attributes | +--ro schedules | | +--ro schedule* [schedule-id] | | +--ronetwork-ref? leafrefschedule-id uint32 | | +--rodynamic? booleanstart? yang:date-and-time | | +--rocommitted? booleanschedule-duration? string |+--ro admin-status? te-admin-status| +--roperformance-metric-throttle {te-performance-metric}?repeat-interval? string | +--ro access-type? te-types:te-link- access-type | +--rounidirectional-delay-offset? uint32external-domain | | +--romeasure-interval? uint32remote-te-node-id? te-types:te-node-id | | +--roadvertisement-interval? uint32remote-te-link-tp-id? te-types:te-tp-id | | +--rosuppression-interval?plug-id? uint32 | +--ro is-abstract? empty | +--rothreshold-outname? string | +--ro underlay! {te-topology-hierarchy}? | | +--rounidirectional-delay? uint32underlay-primary-path | | | +--rounidirectional-min-delay? uint32provider-id-ref? leafref | | | +--rounidirectional-max-delay? uint32client-id-ref? leafref | | | +--rounidirectional-delay-variation? uint32te-topology-id-ref? leafref | | | +--rounidirectional-packet-loss? decimal64network-id-ref? leafref | | | +--rounidirectional-residual-bandwidth? decimal64path-element* [path-element-id] | | | +--rounidirectional-available-bandwidth? decimal64path-element-id uint32 | | | +--rounidirectional-utilized-bandwidth? decimal64 |(type)? |+--ro threshold-in| | +--:(ipv4-address) |+--ro unidirectional-delay? uint32| | | +--rounidirectional-min-delay? uint32v4-address? inet:ipv4-address | | | | +--rounidirectional-max-delay? uint32v4-prefix-length? uint8 | | | | +--rounidirectional-delay-variation? uint32v4-loose? boolean | | |+--ro unidirectional-packet-loss? decimal64+--:(ipv6-address) | | | | +--rounidirectional-residual-bandwidth? decimal64v6-address? inet:ipv6-address | | |+--ro unidirectional-available-bandwidth? decimal64| +--ro v6-prefix-length? uint8 | |+--ro unidirectional-utilized-bandwidth? decimal64| | +--rothreshold-accelerated-advertisementv6-loose? boolean | |+--ro unidirectional-delay? uint32| +--:(as-number) | |+--ro unidirectional-min-delay? uint32| | +--rounidirectional-max-delay? uint32as-number? uint16 | |+--ro unidirectional-delay-variation? uint32| +--:(unnumbered-link) | |+--ro unidirectional-packet-loss? decimal64| | +--rounidirectional-residual-bandwidth? decimal64router-id? inet:ip-address | |+--ro unidirectional-available-bandwidth? decimal64| | +--rounidirectional-utilized-bandwidth? decimal64interface-id? uint32 |+--ro link-index? uint64|+--ro administrative-group? te-types:admin- groups|+--ro max-link-bandwidth? decimal64+--:(label) | |+--ro max-resv-link-bandwidth? decimal64| +--rounreserved-bandwidth* [priority]value? uint32 | | +--ropriority uint8underlay-backup-path* [index] | |+--ro bandwidth? decimal64| +--rote-default-metric?index uint32 |+--ro performance-metric {te-performance-metric}?| | +--romeasurementprovider-id-ref? leafref | | | +--rounidirectional-delay? uint32client-id-ref? leafref | | | +--rounidirectional-min-delay? uint32te-topology-id-ref? leafref | | | +--rounidirectional-max-delay? uint32network-id-ref? leafref | | | +--rounidirectional-delay-variation? uint32path-element* [path-element-id] | | | +--rounidirectional-packet-loss? decimal64path-element-id uint32 | | | +--rounidirectional-residual-bandwidth? decimal64(type)? | | |+--ro unidirectional-available-bandwidth? decimal64+--:(ipv4-address) | | | | +--rounidirectional-utilized-bandwidth? decimal64v4-address? inet:ipv4-address | |+--ro normality| | +--rounidirectional-delay? performance-metric-normalityv4-prefix-length? uint8 | |+--ro unidirectional-min-delay? performance-metric-normality| | +--rounidirectional-max-delay? performance-metric-normalityv4-loose? boolean | |+--ro unidirectional-delay-variation? performance-metric-normality| +--:(ipv6-address) | |+--ro unidirectional-packet-loss? performance-metric-normality| | +--rounidirectional-residual-bandwidth? performance-metric-normalityv6-address? inet:ipv6-address | |+--ro unidirectional-available-bandwidth? performance-metric-normality| | +--rounidirectional-utilized-bandwidth? performance-metric-normalityv6-prefix-length? uint8 |+--ro link-protection-type? enumeration|+--ro interface-switching-capability* [switching-capability]| | +--roswitching-capability identityrefv6-loose? boolean | |+--ro encoding? identityref| +--:(as-number) |+--ro max-lsp-bandwidth* [priority]| | | +--ropriority uint8as-number? uint16 | | | +--:(unnumbered-link) | |+--ro bandwidth? decimal64| | +--rotime-division-multiplex-capablerouter-id? inet:ip-address | | | | +--rominimum-lsp-bandwidth? decimal64interface-id? uint32 | | |+--ro indication? enumeration+--:(label) | | | +--rointerface-adjustment-capability* [upper-sc]value? uint32 | | +--roupper-sc identityrefunderlay-protection-type? uint16 | | +--roupper-encoding? identityrefunderlay-trail-src | | | +--romax-lsp-bandwidth* [priority]tp-ref? leafref | | | +--ropriority uint8node-ref? leafref | |+--ro bandwidth? decimal64| +--rote-srlgsnetwork-ref? leafref |+--ro values* te-types:srlg +--ro oper-status? te-oper-status +--ro information-source? enumeration +--ro information-source-state| +--rocredibility-preference? uint16underlay-trail-des |+--ro topology| | +--roprovider-id-ref?tp-ref? leafref | | | +--roclient-id-ref?node-ref? leafref | | | +--rote-topology-id-ref?network-ref? leafref | | +--ronetwork-id-ref? leafrefdynamic? boolean | | +--rorouting-instance? stringcommitted? boolean | +--roalt-information-sources* [information-source]admin-status? te-types:te-admin- status | +--roinformation-source enumerationperformance-metric-throttle {te-performance-metric}? | | +--roinformation-source-stateunidirectional-delay-offset? uint32 | | +--rocredibility-preference? uint16measure-interval? uint32 | | +--rotopologyadvertisement-interval? uint32 | | +--ro suppression-interval? uint32 | | +--roprovider-id-ref? leafrefthreshold-out | | | +--roclient-id-ref? leafrefunidirectional-delay? uint32 | | | +--rote-topology-id-ref? leafrefunidirectional-min-delay? uint32 | | | +--ronetwork-id-ref? leafrefunidirectional-max-delay? uint32 | |+--ro routing-instance? string| +--rolink-index? uint64unidirectional-delay-variation? uint32 |+--ro administrative-group? te-types:admin- groups|+--ro max-link-bandwidth? decimal64| +--romax-resv-link-bandwidth?unidirectional-packet-loss? decimal64 |+--ro unreserved-bandwidth* [priority]| | +--ropriority uint8unidirectional-residual-bandwidth? decimal64 | | | +--robandwidth?unidirectional-available-bandwidth? decimal64 |+--ro te-default-metric? uint32| | +--roperformance-metric {te-performance-metric}?unidirectional-utilized-bandwidth? decimal64 | | +--romeasurementthreshold-in | | | +--ro unidirectional-delay? uint32 | | | +--ro unidirectional-min-delay? uint32 | | | +--ro unidirectional-max-delay? uint32 | | | +--ro unidirectional-delay-variation? uint32 | | | +--ro unidirectional-packet-loss? decimal64 | | | +--ro unidirectional-residual-bandwidth? decimal64 | | | +--ro unidirectional-available-bandwidth? decimal64 | | | +--ro unidirectional-utilized-bandwidth? decimal64 | | +--ronormalitythreshold-accelerated-advertisement | | +--ro unidirectional-delay?performance-metric-normalityuint32 | | +--ro unidirectional-min-delay?performance-metric-normalityuint32 | | +--ro unidirectional-max-delay?performance-metric-normalityuint32 | | +--ro unidirectional-delay-variation?performance-metric-normalityuint32 | | +--ro unidirectional-packet-loss?performance-metric-normalitydecimal64 | | +--ro unidirectional-residual-bandwidth?performance-metric-normalitydecimal64 | | +--ro unidirectional-available-bandwidth?performance-metric-normalitydecimal64 | | +--ro unidirectional-utilized-bandwidth?performance-metric-normalitydecimal64 | +--rolink-protection-type? enumerationlink-index? uint64 | +--ro administrative-group? te-types:admin- groups | +--ro interface-switching-capability* [switching-capability] | | +--ro switching-capability identityref | | +--ro encoding? identityref | | +--ro max-lsp-bandwidth* [priority] | | | +--ro priority uint8 | | | +--ro bandwidth? decimal64 | | +--ro time-division-multiplex-capable | ||+--ro minimum-lsp-bandwidth? decimal64 | ||+--ro indication? enumeration ||+--rointerface-adjustment-capability* [upper-sc] |link-protection-type? enumeration | +--roupper-sc identityref |max-link-bandwidth? decimal64 | +--roupper-encoding? identityref |max-resv-link-bandwidth? decimal64 | +--romax-lsp-bandwidth*unreserved-bandwidth* [priority] | | +--ro priority uint8 | | +--ro bandwidth? decimal64 | +--rote-srlgste-default-metric? uint32 | +--rovalues* te-types:srlgperformance-metric {te-performance-metric}? | | +--rorecoverymeasurement | | | +--rorestoration-status? te-recovery-statusunidirectional-delay? uint32 | | | +--roprotection-status? te-recovery-statusunidirectional-min-delay? uint32 | | | +--rounderlay {te-topology-hierarchy}?unidirectional-max-delay? uint32 | | | +--rodynamic? booleanunidirectional-delay-variation? uint32 | | | +--rocommitted? Boolean 6.2. Packet Switching TE Topology Module module: ietf-te-topology-psc augment /nw:networks/tet:te/tet:templates/tet:link-template/tet:te- link-attributes/tet:interface-switching-capability: +--rw packet-switch-capable +--rw minimum-lsp-bandwidth?unidirectional-packet-loss? decimal64+--rw interface-mtu? uint16 augment /nw:networks/nw:network/nt:link/tet:te/tet:config/tet:te- link-attributes/tet:interface-switching-capability: +--rw packet-switch-capable +--rw minimum-lsp-bandwidth?| | | +--ro unidirectional-residual-bandwidth? decimal64+--rw interface-mtu? uint16 augment /nw:networks/nw:network/nt:link/tet:te/tet:state/tet:te-link- attributes/tet:interface-switching-capability:| | | +--ro unidirectional-available-bandwidth? decimal64 | | | +--ro unidirectional-utilized-bandwidth? decimal64 | | +--ropacket-switch-capablenormality | | +--rominimum-lsp-bandwidth? decimal64unidirectional-delay? te- types:performance-metric-normality | | +--rointerface-mtu? uint16 augment /nw:networks/nw:network/nt:link/tet:te/tet:state/tet:alt- information-sources/tet:interface-switching-capability:unidirectional-min-delay? te- types:performance-metric-normality | | +--ropacket-switch-capableunidirectional-max-delay? te- types:performance-metric-normality | | +--rominimum-lsp-bandwidth? decimal64unidirectional-delay-variation? te- types:performance-metric-normality | | +--rointerface-mtu? uint16 augment /tet:te-link-event/tet:te-link-attributes/tet:interface- switching-capability: +---- packet-switch-capable +---- minimum-lsp-bandwidth? decimal64 +---- interface-mtu? uint16 augment /tet:te-link-event/tet:alt-information-sources/tet:interface- switching-capability: +---- packet-switch-capable +---- minimum-lsp-bandwidth? decimal64 +---- interface-mtu? uint16 7. TE Topology Yang Modules 7.1. Base TE Topology Module <CODE BEGINS> file "ietf-te-topology@2016-03-17.yang" 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-03-17" { 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 defined in RFC7471: OSPF Traffic Engineering (TE) Metric Extensions."; } feature template { description "This feature indicates that the system supports template configuration."; } /* * Typedefs */ typedef performance-metric-normality { typeunidirectional-packet-loss? te- types:performance-metric-normality | | +--ro unidirectional-residual-bandwidth? te- types:performance-metric-normality | | +--ro unidirectional-available-bandwidth? te- types:performance-metric-normality | | +--ro unidirectional-utilized-bandwidth? te- types:performance-metric-normality | +--ro te-srlgs | +--ro value* te-types:srlg +--ro oper-status? te-types:te-oper-status +--ro is-transitional? empty +--ro information-source? enumeration{ enum "unknown" { value 0; description "Unknown."; } enum "normal" { value 1; description "Normal."; } enum "abnormal" { value 2; description "Abnormal. The anomalous bit is set."; } } description "Indicates whether a performance metric is normal, abnormal, or unknown."; reference "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions."; } typedef te-admin-status { type+--ro information-source-state | +--ro credibility-preference? uint16 | +--ro topology | | +--ro provider-id-ref? leafref | | +--ro client-id-ref? leafref | | +--ro te-topology-id-ref? leafref | | +--ro network-id-ref? leafref | +--ro routing-instance? string +--ro information-source-entry* [information-source] | +--ro information-source enumeration{ enum up { description "Enabled."; } enum down { description "Disabled."; } enum testing { description "In some test mode."; } enum preparing-maintenance { description "Resource is disabled in the control plane to prepare for graceful shutdown for maintenance purposes."; reference "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS Traffic Engineering Networks"; } enum maintenance { description "Resource is disabled in the data plane for maintenance purposes."; } } description "Defines a type representing the administrative status of a TE resource."; } typedef te-global-id { type uint32; description "An identifier to uniquely identify an operator, which can be either a provider or a client. The definition of this type is taken from RFC6370 and RFC5003. This attribute type is used solely to provide a globally unique context for TE topologies."; } typedef te-link-access-type { type| +--ro information-source-state | | +--ro credibility-preference? uint16 | | +--ro topology | | | +--ro provider-id-ref? leafref | | | +--ro client-id-ref? leafref | | | +--ro te-topology-id-ref? leafref | | | +--ro network-id-ref? leafref | | +--ro routing-instance? string | +--ro link-index? uint64 | +--ro administrative-group? te-types:admin- groups | +--ro interface-switching-capability* [switching-capability] | | +--ro switching-capability identityref | | +--ro encoding? identityref | | +--ro max-lsp-bandwidth* [priority] | | | +--ro priority uint8 | | | +--ro bandwidth? decimal64 | | +--ro time-division-multiplex-capable | | +--ro minimum-lsp-bandwidth? decimal64 | | +--ro indication? enumeration{ enum point-to-point { description "The link is point-to-point."; } enum multi-access { description "The link is multi-access, including broacast and NBMA."; } } description "Defines a type representing the access type of a TE link."; reference "RFC3630: Traffic Engineering (TE) Extensions to OSPF Version 2."; } typedef te-node-id { type inet:ip-address; description "An identifier for a node in a topology. The identifier is represented as an IPv4 or IPv6 address. This attribute is mapped to Router ID in RFC3630, RFC5329, RFC5305, and RFC 6119."; } typedef te-oper-status { type| +--ro link-protection-type? enumeration{ enum up { description "Operational up."; } enum down { description "Operational down."; } enum testing { description "In some test mode."; } enum unknown { description "Status cannot be determined for some reason."; } enum preparing-maintenance { description "Resource is disabled in the control plane to prepare for graceful shutdown for maintenance purposes."; reference "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS Traffic Engineering Networks"; } enum maintenance { description "Resource is disabled in the data plane for maintenance purposes."; } } description "Defines a type representing the operational status of a| +--ro max-link-bandwidth? decimal64 | +--ro max-resv-link-bandwidth? decimal64 | +--ro unreserved-bandwidth* [priority] | | +--ro priority uint8 | | +--ro bandwidth? decimal64 | +--ro te-default-metric? uint32 | +--ro performance-metric {te-performance-metric}? | | +--ro measurement | | | +--ro unidirectional-delay? uint32 | | | +--ro unidirectional-min-delay? uint32 | | | +--ro unidirectional-max-delay? uint32 | | | +--ro unidirectional-delay-variation? uint32 | | | +--ro unidirectional-packet-loss? decimal64 | | | +--ro unidirectional-residual-bandwidth? decimal64 | | | +--ro unidirectional-available-bandwidth? decimal64 | | | +--ro unidirectional-utilized-bandwidth? decimal64 | | +--ro normality | | +--ro unidirectional-delay? te- types:performance-metric-normality | | +--ro unidirectional-min-delay? te- types:performance-metric-normality | | +--ro unidirectional-max-delay? te- types:performance-metric-normality | | +--ro unidirectional-delay-variation? te- types:performance-metric-normality | | +--ro unidirectional-packet-loss? te- types:performance-metric-normality | | +--ro unidirectional-residual-bandwidth? te- types:performance-metric-normality | | +--ro unidirectional-available-bandwidth? te- types:performance-metric-normality | | +--ro unidirectional-utilized-bandwidth? te- types:performance-metric-normality | +--ro te-srlgs | +--ro value* te-types:srlg +--ro recovery | +--ro restoration-status? te-types:te-recovery-status | +--ro protection-status? te-types:te-recovery-status +--ro underlay {te-topology-hierarchy}? +--ro dynamic? boolean +--ro committed? Boolean 7. TEresource."; } typedef te-recovery-status { type enumerationTopology Yang Module <CODE BEGINS> file "ietf-te-topology@2016-07-08.yang" module ietf-te-topology {enum normalyang-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 {description "Both the recovery and working spans are fully allocated and active, data traffic is being transported over (or selected from) the working span, and no trigger events are reported.";prefix "inet"; }enum recovery-startedimport ietf-schedule {description "The recovery action has been started, but not completed.";prefix "sch"; }enum recovery-succeededimport ietf-te-types {description "The recovery action has succeeded. The working span has reported a failure/degrade condition and the user traffic is being transported (or selected) on the recovery span.";prefix "te-types"; }enum recovery-failedimport ietf-network {description "The recovery action has failed.";prefix "nw"; }enum reversion-startedimport ietf-network-topology {description "The reversion has started.";prefix "nt"; }enum reversion-failed {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"The reversion has failed."; } enum recovery-unavailable"TE topology model"; revision "2016-07-08" { description"The recovery is unavailable -- either as a result of an operator Lockout command or a failure condition detected on the recovery span.";"Initial revision"; reference "TBD"; }enum recovery-admin/* * Features */ feature configuration-schedule { description"The operator has issued a command switching the user traffic to"This feature indicates that therecovery span.";system supports configuration scheduling."; }enum wait-to-restorefeature te-topology-hierarchy { description"The recovery domain is recovering from a failuer/degrade condition on the working span"This feature indicates thatis being controlled bytheWait-to-Restore (WTR) timer."; }system allows underlay and/or overlay TE topology hierarchy."; } feature te-performance-metric { description"Defines"This feature indicates that thestatus of a recovery action.";system supports TE performance metric."; reference"RFC4427: Recovery (Protection and Restoration) Terminology"RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. RFC7823: Performance-Based Path Selection forGeneralized Multi-ProtocolExplicitly Routed LabelSwitching (GMPLS). RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection";Switched Paths (LSPs) Using TE Metric Extensions"; }typedef te-template-name { type stringfeature template {pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; }description"A type for"This feature indicates that thename of a TE nodesystem supports templateor TE link template."; } typedef te-topology-event-type { type enumeration { enum "add" { value 0; description "A TE node or te-link has been added."; } enum "remove" { value 1; description "A TE node or te-link has been removed."; } enum "update" { value 2; description "A TE node or te-link has been updated."; } } description "TE Event type for notifications"; } // te-topology-event-type typedef te-topology-id { type string { pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; } description "An identifier for a topology."; } typedef te-tp-id { type union { type uint32; // Unnumbered type inet:ip-address; // IPv4 or IPv6 address } description "An identifier for a TE link endpoint on a node. This attribute is mapped to local or remote link identifier in RFC3630 and RFC5305.";configuration."; } /* * Typedefs */ /* * Identities */ /* * Groupings */ groupinginformation-source-attributesconnectivity-label-restriction-list { description"The attributes identifying source that has provided the related information, and the source credibility.";"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"; leafinformation-sourceinclusive-exclusive { type enumeration { enum"unknown"inclusive { description "Thesourcelabel or label range isunknown."; } 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.";inclusive."; } enum"other"exclusive { description"Other source.";"The label or label range is exclusive."; } } description"Indicates the source of"Whether theinformation.";list item is inclusive or exclusive."; }container information-source-state { description "The container contains state attributes related to the information source.";leafcredibility-preferencelabel-start { typeuint16;te-types:generalized-label; description"The preference value to calculate"This is thetraffic engineering database credibility value used for tie-break selection between different information-source values. Higherstarting lable if a lable range is specified. This is the lable value if a single lable ismore preferable.";specified, in which case, attribute 'label-end' is not set."; }container topologyleaf label-end { type te-types:generalized-label; description"When the information"The ending lable if a lable range isprocessed by the system, the attributes in this container indicate which topologyspecified; This attribute isused to process to generate the result information."; uses te-topology-ref;not set, If a single lable is specified."; }// topologyleafrouting-instancerange-bitmap { typestring;binary; description "Whenapplicable,there are gaps between label-start and label-end, this attribute is used to specified thenamepossitions ofa routing instance from whichtheinformation is learned.";used labels."; }// routing-information} } //information-source-attributesconnectivity-label-restrictions groupingperformance-metric-attributes { description "Link performance information in real time."; reference "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions."; leaf unidirectional-delay { type uint32 { range 0..16777215; } description "Delay or latency in micro seconds."; } leaf unidirectional-min-delay { type uint32information-source-attributes {range 0..16777215; }description"Minimum delay or latency in micro seconds."; }"The attributes identifying source that has provided the related information, and the source credibility."; leafunidirectional-max-delayinformation-source { typeuint32enumeration {range 0..16777215;enum "unknown" { description "The source is unknown."; } enum "locally-configured" { description"Maximum delay or latency in micro seconds.";"Configured entity."; }leaf unidirectional-delay-variationenum "ospfv2" {type uint32description "OSPFv2."; } enum "ospfv3" {range 0..16777215;description "OSPFv3."; } enum "isis" { description"Delay variation in micro seconds.";"ISIS."; }leaf unidirectional-packet-lossenum "system-processed" {type decimal64description "System processed entity."; } enum "other" {fraction-digits 6; range "0 .. 50.331642";description "Other source."; } } description"Packet loss as a percentage"Indicates the source of thetotal traffic sent over a configurable interval. The finest precision is 0.000003%.";information."; }leaf unidirectional-residual-bandwidth { type decimal64container information-source-state {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."; }"The container contains state attributes related to the information source."; leafunidirectional-available-bandwidthcredibility-preference { typedecimal64 { fraction-digits 2; }uint16; description"Available bandwidth that is defined"The preference value tobe residual bandwidth minuscalculate themeasured bandwidthtraffic engineering database credibility value used forthe actual forwarding of non-RSVP-TE LSP packets. For a bundled link, available bandwidthtie-break selection between different information-source values. Higher value isdefined to be the sum of the component link available bandwidths.";more preferable."; }leaf unidirectional-utilized-bandwidth { type decimal64container topology {fraction-digits 2; }description"Bandwidth utilization that represents"When theactual utilization ofinformation is processed by thelink (i.e. as measuredsystem, the attributes in this container indicate which topology is used to process to generate therouter). For a bundled link, bandwidth utilizationresult information."; uses te-topology-ref; } // topology leaf routing-instance { type string; description "When applicable, this isdefined to bethesumname of a routing instance from which thecomponent link bandwidth utilizations.";information is learned."; } // routing-information } } //performance-metric-attributesinformation-source-attributes groupingperformance-metric-normality-attributesinterface-switching-capability-list { description"Link performance metric normality attributes.";"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"RFC7471:"RFC3471: Generalized Multi-Protocol Label Switching (GMPLS) Signaling Functional Description. RFC4203: OSPFTraffic Engineering (TE) Metric Extensions.";Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)."; leafunidirectional-delayswitching-capability { typeperformance-metric-normality;identityref { base te-types:switching-capabilities; } description"Delay normality.";"Switching Capability for this interface."; } leafunidirectional-min-delayencoding { typeperformance-metric-normality;identityref { base te-types:lsp-encoding-types; } description"Minimum delay or latency normality.";"Encoding supported by this interface."; }leaf unidirectional-max-delaylist max-lsp-bandwidth {type performance-metric-normality;key "priority"; max-elements "8"; description "Maximumdelay or latency normality."; }LSP Bandwidth at priorities 0-7."; leafunidirectional-delay-variationpriority { typeperformance-metric-normality;uint8 { range "0..7"; } description"Delay variation normality.";"Priority."; } leafunidirectional-packet-lossbandwidth { typeperformance-metric-normality;decimal64 { fraction-digits 2; } description"Packet loss normality.";"Max LSP Bandwidth for this level"; }leaf unidirectional-residual-bandwidth} container time-division-multiplex-capable { when "../switching-capability = 'TDM'" {type performance-metric-normality;description"Residual bandwidth normality.";"Valid only for TDM"; } description "Interface has time-division multiplex capabilities."; leafunidirectional-available-bandwidthminimum-lsp-bandwidth { typeperformance-metric-normality;decimal64 { fraction-digits 2; } description"Available bandwidth normality.";"Minimum LSP Bandwidth. Units in bytes per second."; } leafunidirectional-utilized-bandwidthindication { typeperformance-metric-normality;enumeration { enum "standard" { description"Bandwidth utilization normality."; }"Indicates support of standard SONET/SDH."; }// performance-metric-normality-attributes grouping performance-metric-throttle-containerenum "arbitrary" { 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.";"Indicates support of arbitrary SONET/SDH."; } } description"Constraint on suppression-interval and measure-interval.";"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) MetricExtensions.";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"; leafunidirectional-delay-offsetunidirectional-delay { type uint32 { range 0..16777215; } description"Offset value to be added to the measured delay value.";"Delay or latency in micro seconds."; } leafmeasure-intervalunidirectional-min-delay { typeuint32; default 30;uint32 { range 0..16777215; } description"Interval"Minimum delay or latency inseconds to measure the extended metric values.";micro seconds."; } leafadvertisement-intervalunidirectional-max-delay { typeuint32;uint32 { range 0..16777215; } description"Interval"Maximum delay or latency inseconds to advertise the extended metric values.";micro seconds."; } leafsuppression-intervalunidirectional-delay-variation { type uint32 { range"1 .. max";0..16777215; }default 120;description"Interval"Delay variation inseconds to suppress advertising the extended metric values.";micro seconds."; }container threshold-outleaf unidirectional-packet-loss {uses performance-metric-attributes;type decimal64 { fraction-digits 6; range "0 .. 50.331642"; } 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"Packet loss as a percentage of theadvertised valuetotal traffic sent over a configurable interval. The finest precision isnot already outside that bound, anomalous announcement will be triggered.";0.000003%."; }container threshold-inleaf unidirectional-residual-bandwidth {uses performance-metric-attributes;type decimal64 { fraction-digits 2; } description"If the measured parameter falls inside an upper bound for all but the min delay metric"Residual bandwidth that subtracts tunnel reservations from Maximum Bandwidth (orlower boundlink 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 formin-delay metric only) andtheadvertised valueactual forwarding of non-RSVP-TE LSP packets. For a bundled link, available bandwidth isnot already inside that bound, normal (anomalous-flag cleared) announcement willdefined to betriggered.";the sum of the component link available bandwidths."; }container threshold-accelerated-advertisementleaf unidirectional-utilized-bandwidth { type decimal64 { fraction-digits 2; } description"When"Bandwidth utilization that represents thedifference betweenactual utilization of thelast advertised value and currentlink (i.e. as measuredvalue exceed this threshold, anomalous announcement willin the router). For a bundled link, bandwidth utilization is defined to betriggered."; uses performance-metric-attributes; }the sum of the component link bandwidth utilizations."; } } //performance-metric-throttle-containerperformance-metric-attributes groupingte-link-augmentperformance-metric-normality-attributes { description"Augmentation"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 TElink."; container teMetric Extensions"; leaf unidirectional-delay {presence "TE support.";type te-types:performance-metric-normality; description"Indicates TE support."; container config"Delay normality."; } leaf unidirectional-min-delay { type te-types:performance-metric-normality; description"Configuration data."; uses te-link-config;"Minimum delay or latency normality."; }// config container stateleaf unidirectional-max-delay {config false;type te-types:performance-metric-normality; description"Operational state data."; uses te-link-config; uses te-link-state-derived;"Maximum delay or latency normality."; }// stateleaf unidirectional-delay-variation { type te-types:performance-metric-normality; description "Delay variation normality."; }// teleaf unidirectional-packet-loss { type te-types:performance-metric-normality; description "Packet loss normality."; }// te-link-augment grouping te-link-configleaf unidirectional-residual-bandwidth { type te-types:performance-metric-normality; description"TE link configuration grouping."; choice bundle-stack-level"Residual bandwidth normality."; } leaf unidirectional-available-bandwidth { type te-types:performance-metric-normality; description"The TE link can be partitioned into bundled links, or component links."; case bundle"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."; containerbundled-linksperformance-metric-throttle { if-feature te-performance-metric; must "suppression-interval >= measure-interval" { error-message "suppression-interval cannot be less then measure-interval."; description"A set of bundled links."; reference "RFC4201: Link Bundling"Constraint on suppression-interval and measure-interval."; } description "Link performance information inMPLSreal time."; reference "RFC7471: OSPF Traffic Engineering(TE)."; list bundled-link(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 {key "sequence";type uint32 { range 0..16777215; } description"Specify a bundled interface that is further partitioned.";"Offset value to be added to the measured delay value."; } leafsequencemeasure-interval { type uint32; default 30; description"Identify the sequence"Interval in seconds to measure thebundle.";extended metric values."; } leafsrc-tp-refadvertisement-interval { typeleafref { path "../../../../../../nw:node[nw:node-id = " + "current()/../../../../../nt:source/" + "nt:source-node]/" + "nt:termination-point/nt:tp-id"; require-instance true; }uint32; description"Reference"Interval in seconds toanother TE termination point onadvertise thesame souruce node.";extended metric values."; } leafdes-tp-refsuppression-interval { typeleafrefuint32 {path "../../../../../../nw:node[nw:node-id = " + "current()/../../../../../nt:destination/" + "nt:dest-node]/" + "nt:termination-point/nt:tp-id"; require-instance true;range "1 .. max"; } default 120; description"Reference"Interval in seconds toanother TE termination point onsuppress advertising thesame destination node."; } } // list bundled-link }extended metric values."; }case component {containercomponent-links { description "A set of component links"; list component-linkthreshold-out {key "sequence";uses performance-metric-attributes; description"Specify a component interface that is sufficient to unambiguously identify"If theappropriate resources"; leaf sequence { type uint32; description "Identifymeasured parameter falls outside an upper bound for all but thesequence inmin delay metric (or lower bound for min-delay metric only) and thebundle.";advertised value is not already outside that bound, anomalous announcement will be triggered."; }leaf src-interface-refcontainer threshold-in {type string;uses performance-metric-attributes; description"Reference to component link interface on"If thesource node.";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."; }leaf des-interface-refcontainer threshold-accelerated-advertisement {type string;description"Reference to component link interface on"When thedestinatioin node."; } } } } } // bundle-stack-level leaf-list te-link-template { if-feature template; type leafref { path "../../../../../te/templates/link-template/name";difference between the last advertised value and current measured value exceed this threshold, anomalous announcement will be triggered."; uses performance-metric-attributes; }description "The reference to a TE link template.";}uses te-link-config-attributes;} //te-link-configperformance-metric-throttle-container groupingte-link-config-attributeste-link-augment { description"Link configuration attributes in a"Augmentation for TEtopology.";link."; containerte-link-attributeste { presence "TE support."; description"Link attributes in a"Indicates TEtopology."; uses sch:schedules; leaf access-type { type te-link-access-type; description "Link access type, which can be point-to-point or multi-access."; } leaf is-abstract { type empty; description "Present if the link is abstract."; } leaf name { type string; description "Link Name."; }support."; containerunderlayconfig {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)";"Configuration data."; useste-link-underlay-attributes;te-link-config; } //underlay leaf admin-statusconfig container state {type te-admin-status;config false; description"The administrative"Operational stateof the link."; }data."; usesperformance-metric-throttle-container;te-link-config; useste-link-info-attributes;te-link-state-derived; } //te-link-attributesstate } //te-link-config-attributeste } // te-link-augment groupingte-link-info-attributeste-link-config { description "TE link configuration grouping."; choice bundle-stack-level { description"Advertised"The TEinformation attributes."; leaf link-indexlink can be partitioned into bundled links, or component links."; case bundle { container bundled-links {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"A set of bundled links."; reference "RFC4201: Link Bundling in MPLS Traffic Engineering (TE)."; list bundled-link { key "sequence"; description "Specify arouter."; }bundled interface that is further partitioned."; leafadministrative-groupsequence { typete-types:admin-groups;uint32; description"Administrative group or color of"Identify thelink. This attribute covers both administrative group (defined in RFC3630, RFC5329, and RFC5305), and extended administrative group (definedsequence inRFC7308).";the bundle."; } leafmax-link-bandwidthsrc-tp-ref { typedecimal64leafref {fraction-digits 2;path "../../../../../../nw:node[nw:node-id = " + "current()/../../../../../nt:source/" + "nt:source-node]/" + "nt:termination-point/nt:tp-id"; require-instance true; } description"Maximum bandwidth that can be seen on this link in this direction. Units in bytes per second."; reference "RFC3630: Traffic Engineering (TE) Extensions"Reference toOSPF Version 2. RFC5305: IS-IS Extensions for Traffic Engineering.";another TE termination point on the same souruce node."; } leafmax-resv-link-bandwidthdes-tp-ref { typedecimal64leafref {fraction-digits 2;path "../../../../../../nw:node[nw:node-id = " + "current()/../../../../../nt:destination/" + "nt:dest-node]/" + "nt:termination-point/nt:tp-id"; require-instance true; } 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"Reference toOSPF Version 2. RFC5305: IS-IS Extensions for Traffic Engineering.";another TE termination point on the same destination node."; } } // list bundled-link } } case component { container component-links { description "A set of component links"; listunreserved-bandwidthcomponent-link { key"priority"; max-elements "8";"sequence"; description"Unreserved bandwidth for 0-7 priority levels. Units in bytes per second."; reference "RFC3630: Traffic Engineering (TE) Extensions"Specify a component interface that is sufficient toOSPF Version 2. RFC5305: IS-IS Extensions for Traffic Engineering.";unambiguously identify the appropriate resources"; leafprioritysequence { typeuint8 { range "0..7"; }uint32; description"Priority.";"Identify the sequence in the bundle."; } leafbandwidthsrc-interface-ref { typedecimal64 { fraction-digits 2; }string; description"Unreserved bandwidth for this level."; }"Reference to component link interface on the source node."; } leafte-default-metricdes-interface-ref { typeuint32;string; description"Traffic Engineering Metric.";"Reference to component link interface on the destinatioin node."; }container performance-metric} } } } // bundle-stack-level leaf-list te-link-template { if-featurete-performance-metric;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 "Linkperformance informationconfiguration attributes inreal time."; reference "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";a TE topology."; containermeasurementte-link-attributes { description"Measured performance metric values. Static configuration and manual overrides of these measurements are also allowed.";"Link attributes in a TE topology."; usesperformance-metric-attributes;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."; } containernormalityexternal-domain { description"Performance metric normality values."; uses performance-metric-normality-attributes; } }"For an inter-domain link, specify the attributes of the remote end of link, to facilitate the signalling at local end."; leaflink-protection-typeremote-te-node-id { typeenumeration { enum "unprotected"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"Unprotected.";"Remote TE link termination point identifier, used together with remote-te-node-id to identify the remote link termination point in a different domain."; }enum "extra-traffic"leaf plug-id { type uint32; description"Extra traffic.";"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."; }enum "shared" { description "Shared.";}enum "1-for-1"leaf is-abstract { type empty; description"One for one protection.";"Present if the link is abstract."; }enum "1-plus-1"leaf name { type string; description"One plus one protection.";"Link Name."; }enum "enhanced"container underlay {description "Enhanced protection."; } } description "Link Protection Type desiredif-feature te-topology-hierarchy; presence "Indicates the underlay exists for this link.";reference "RFC4202: Routing Extensions in Supportdescription "Attributes of the te-link underlay."; reference "RFC4206: Label Switched Paths (LSP) Hierarchy with Generalized Multi-Protocol Label Switching(GMPLS).";(GMPLS) Traffic Engineering (TE)"; uses te-link-underlay-attributes; }list interface-switching-capability// underlay leaf admin-status {key "switching-capability";type te-types:te-admin-status; description"List"The administrative state ofInterface Switching Capabilities Descriptors (ISCD) for thisthe link.";reference "RFC3471: Generalized Multi-Protocol Label Switching (GMPLS) Signaling Functional Description. RFC4203: OSPF Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS).";} 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."; leafswitching-capabilitymax-link-bandwidth { typeidentityrefdecimal64 {base te-types:switching-capabilities;fraction-digits 2; } description"Switching Capability for"Maximum bandwidth that can be seen on thisinterface.";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."; } leafencodingmax-resv-link-bandwidth { typeidentityrefdecimal64 {base te-types:lsp-encoding-types;fraction-digits 2; } description"Encoding supported by"Maximum amount of bandwidth that can be reserved in thisinterface.";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."; } listmax-lsp-bandwidthunreserved-bandwidth { key "priority"; max-elements "8"; description"Maximum LSP Bandwidth at priorities 0-7.";"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"Max LSP Bandwidth"Unreserved bandwidth for thislevel";level."; } }container time-division-multiplex-capableleaf te-default-metric {when "../switching-capability = 'TDM'"type uint32; description "Traffic Engineering Metric."; } container performance-metric { if-feature te-performance-metric; description"Valid only"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 forTDM";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"Interface has time-division multiplex capabilities."; leaf minimum-lsp-bandwidth"A list of SLRGs."; leaf-list value { typedecimal64te-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 {fraction-digits 2;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"Minimum LSP Bandwidth. Units"Administrative group or color of the link. This attribute covers both administrative group (defined in RFC3630, RFC5329, and RFC5305), and extended administrative group (defined inbytes per second.";RFC7308)."; } uses interface-switching-capability-list; leafindicationlink-protection-type { type enumeration { enum"standard""unprotected" { description"Indicates support of standard SONET/SDH.";"Unprotected."; } enum"arbitrary""extra-traffic" { description"Indicates support of arbitrary SONET/SDH."; } } description "Indication whether the interface supports Standard or Arbitrary SONET/SDH"; }"Extra traffic."; }list interface-adjustment-capabilityenum "shared" {key "upper-sc";description"List of Interface Adjustment Capability Descriptors (IACD) for this link."; reference "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions for Multi-Layer and Multi-Region Networks (MLN/MRN)."; leaf upper-sc { type identityref { base te-types:switching-capabilities;"Shared."; } enum "1-for-1" { description"Switching Capability"One forthis interface.";one protection."; }leaf upper-encoding { type identityrefenum "1-plus-1" {base te-types:lsp-encoding-types; }description"Encoding supported by this interface.";"One plus one protection."; }list max-lsp-bandwidth { key "priority"; max-elements "8"; description "Maximum LSP Bandwidth at priorities 0-7."; leaf priority { type uint8enum "enhanced" {range "0..7"; }description"Priority.";"Enhanced protection."; }leaf bandwidth { type decimal64 { fraction-digits 2;} description"Max LSP Bandwidth"Link Protection Type desired for thislevel."; } } } // interface-adjustment-capability } // interface-switching-capability container te-srlgs { description "A list of SLRGs."; leaf-list values { type te-types:srlg; description "SRLG value.";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 { typete-oper-status;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; listalt-information-sourcesinformation-source-entry { key "information-source"; description "A list of information sourceslearned but notlearned, including the one used."; uses information-source-attributes; uses te-link-info-attributes; } container recovery { description "Status of the recovery process."; leaf restoration-status { typete-recovery-status;te-types:te-recovery-status; description "Restoration status."; } leaf protection-status { typete-recovery-status;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 { typete-node-id;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; leaf switching-capability { type identityref { base te-types:switching-capabilities; } mandatory true; description "Switching Capability."; } leaf encoding { type identityref { base te-types:lsp-encoding-types; } mandatory true; description "Encoding type."; }"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 { typete-admin-status;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 { typete-admin-status;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 { typete-admin-status;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 { typete-oper-status;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; listalt-information-sourcesinformation-source-entry { key "information-source"; description "A list of information sourceslearned but notlearned, 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 { typete-oper-status;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; listalt-information-sourcesinformation-source-entry { key "information-source"; description "A list of information sourceslearned but notlearned, 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.";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.";leaflink-tpswitching-capability { typeleafrefidentityref {path "../../../../../nt:termination-point/nt:tp-id";base te-types:switching-capabilities; } description"Link termination point.";"Switching Capability for this interface."; } leaf encoding { type identityref { base te-types:lsp-encoding-types; }// termination-capabilitydescription "Encoding supported by this interface."; }// te-node-tunnel-termination-capability grouping te-path-elementleaf inter-layer-lock-id { type uint32; description"A group of attributes defining an element"Inter layer lock ID, used for path computation in a TEpath such as TE node, TE link, TE atomic resourcetopology covering multiple layers orlabel."; uses te-types:explicit-route-subobject; } // te-path-element grouping te-termination-point-augment { description "Augmentationmultiple regions."; reference "RFC5212: Requirements forTE termination point."; container te { presence "TE support."; description "Indicates TE support.";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)."; } leafte-tp-idprotection-type { typete-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 stateidentityref {config false; description "Operational state data."; uses te-termination-point-config; } // state } // tebase te-types:lsp-prot-type; }// te-termination-point-augment grouping te-termination-point-config {description"TE"The protection type that this tunnel termination pointconfiguration grouping."; uses sch:schedules;is capable of."; }// te-termination-point-config grouping te-topologies-augmentlist termination-capability { key "link-tp"; description"Augmentation"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 forTE topologies."; container teMulti-Layer and Multi-Region Networks (MLN/MRN)."; leaf link-tp {presence "TE support."; description "Indicates TE support."; container templatestype leafref { path "../../../../../nt:termination-point/nt:tp-id"; } description"Configuration parameters for templates used for TE topology.";"Link termination point."; } uses connectivity-label-restriction-list; listnode-templatemax-lsp-bandwidth {if-feature template;key"name";"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)."; leafnamepriority { typete-template-name; description "The name to identify a TE node template.";uint8 { range "0..7"; } 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;"Priority."; }// node-template list link-template { if-feature template; key "name";leafnamebandwidth { typete-template-name; description "The name to identify a TE link template.";decimal64 { fraction-digits 2; } description"The list of TE link templates used to define sharable and reusable TE link attributes."; uses template-attributes; uses te-link-config-attributes;"Max LSP Bandwidth for this level."; } } //link-templatemax-lsp-bandwidth } //templatestermination-capability } //tete-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-topologies-augmentte-path-element groupingte-topology-augmentte-termination-point-augment { description "Augmentation for TEtopology.";termination point."; container te { presence "TEsupport."; description "Indicates TE support."; leaf provider-id { type te-global-id; mandatory true; description "An identifier to uniquely identify a provider."; } leaf client-id { type te-global-id; mandatory true; description "An identifier to uniquely identify a client."; } leaf te-topology-id { type te-topology-id; mandatory true; description "It is presumed that a datastore will contain many topologies. To distinguish between topologies it is vitalsupport."; description "Indicates TE support."; leaf te-tp-id { type te-types:te-tp-id; mandatory true; description "An identifier tohave UNIQUE topology identifiers.";uniquely identify a TE termination point."; } container config { description "Configuration data."; useste-topology-config;te-termination-point-config; } // config container state { config false; description "Operational state data."; useste-topology-config;te-termination-point-config; } // state } // te } //te-topology-augmentte-termination-point-augment groupingte-topology-configte-termination-point-config { description "TEtopologytermination point configuration grouping."; uses sch:schedules; uses interface-switching-capability-list; leafpreferenceinter-layer-lock-id { typeuint8 { range "1..255"; }uint32; description"Specifies a preference"Inter layer lock ID, used forthis topology. A lower number indicates a higher preference."; } } // 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 tocomputation in ate-topology-id."; } leaf network-id-ref { type leafref { path "/nw:networks/nw:network/nw:network-id"; require-instance false; } description "ATE topology covering multiple layers or multiple regions."; referenceto a network-id in base ietf-network module.";"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-topology-refte-termination-point-config groupingte-topology-typete-topologies-augment { description"Identifies the"Augmentation for TEtopology type.";topologies."; containerte-topologyte { presence"Indicates TE topology.";"TE support."; description"Its presence identifies the"Indicates TEtopology type."; } } // te-topology-type grouping template-attributes { description "Common attributes for all templates."; leaf prioritysupport."; container templates {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."; }"Configuration parameters for templates used for TE topology."; list node-template { if-feature template; key "name"; leafreference-change-policyname { typeenumeration { enum no-action {te-types:te-template-name; description"When an attribute changes in this template, the configuration node referring"The name tothis template does not take any action.";identify a TE node template."; }enum not-allowed {description"When any configuration object has a reference"The list of TE node templates used tothis template, changing this template is not allowed.";define sharable and reusable TE node attributes."; uses template-attributes; uses te-node-config-attributes-template; }enum cascade// node-template list link-template { if-feature template; key "name"; leaf name { type te-types:te-template-name; description"When an attribute changes in this template, the configuration object referring to this template applies the new attribute value"The name tothe corresponding configuration."; }identify a TE link template."; } description"This attribute specifies the action taken to a configuration node that has a reference"The list of TE link templates used tothis template.";define sharable and reusable TE link attributes."; uses template-attributes; uses te-link-config-attributes; } // link-template } // templates } //template-attributes /* * Configuration data nodes */ augment "/nw:networks/nw:network/nw:network-types"te } // te-topologies-augment grouping te-topology-augment { description"Introduce new network type"Augmentation for TE topology.";uses te-topology-type; } augment "/nw:networks"container te { presence "TE support."; description"Augmentation parameters for"Indicates TEtopologies."; uses te-topologies-augment;support."; leaf provider-id { type te-types:te-global-id; mandatory true; description "An identifier to uniquely identify a provider."; }augment "/nw:networks/nw:network"leaf client-id {when "nw:network-types/te-topology"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"Augmentation parameters apply only for networks with TE"It is presumed that a datastore will contain many topologies. To distinguish between topologies it is vital to have UNIQUE topologytype.";identifiers."; } container config { description "Configurationparameters for TE topology.";data."; useste-topology-augment;te-topology-config; }augment "/nw:networks/nw:network/nw:node" { when "../nw:network-types/te-topology"// config container state { config false; description"Augmentation parameters apply only for networks with TE topology type."; } description "Configuration parameters for TE at node level.";"Operational state data."; useste-node-augment;te-topology-config; }augment "/nw:networks/nw:network/nt:link" { when "../nw:network-types/te-topology"// state } // te } // te-topology-augment grouping te-topology-config { description"Augmentation parameters apply only for networks with TE"TE topologytype.";configuration grouping."; uses sch:schedules; leaf preference { type uint8 { range "1..255"; } description"Configuration parameters"Specifies a preference forTE at link level"; uses te-link-augment;this topology. A lower number indicates a higher preference."; }augment "/nw:networks/nw:network/nw:node/" + "nt:termination-point"leaf optimization-criterion {when "../../nw:network-types/te-topology"type identityref {description "Augmentation parameters apply only for networks with TE topology type.";base te-types:te-optimization-criterion; } description"Configuration parameters for TE at termination point level"; uses te-termination-point-augment;"Optimization criterion applied to this topology."; reference "RFC3272: Overview and Principles of Internet Traffic Engineering."; }/* * Operational state data nodes */ /* * Notifications */ notification te-node-event} // te-topology-config grouping te-topology-ref { description"Notification event for"References a TEnode.";topology."; leafevent-typeprovider-id-ref { typete-topology-event-type;leafref { path "/nw:networks/nw:network[nw:network-id = " + "current()/../network-id-ref]/tet:te/tet:provider-id"; require-instance false; } description"Event type.";"A reference to a provider-id."; }uses nw:node-ref; uses te-topology-type; uses tet:te-node-config-attributes-notification; uses tet:te-node-state-derived-notification;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; }notification te-link-eventdescription "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"Notification event for TE link.";"A reference to a te-topology-id."; } leafevent-typenetwork-id-ref { typete-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"leafref { path "/nw:networks/nw:network/nw:network-id"; require-instance false; } description"Add state attributes"A reference tote-link underlay."; uses te-link-state-underlay-attributes; } } <CODE ENDS> 7.2. Packet Switching TE Topology Module <CODE BEGINS> file "ietf-te-topology-psc@2016-03-17.yang" module ietf-te-topology-psc { yang-version 1; namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-psc"; // replace with IANA namespace when assigned prefix "tet-psc"; importa network-id in base ietf-network{ prefix "nw";module."; }import ietf-network-topology { prefix "nt";}import ietf-te-topology// te-topology-ref grouping te-topology-type {prefix "tet"; } 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> Editors: Xufeng Liu <mailto:xliu@kuatrotech.com> Igor Bryskin <mailto:Igor.Bryskin@huawei.com> Vishnu Pavan Beeram <mailto:vbeeram@juniper.net> Tarek Saad <mailto:tsaad@cisco.com> Himanshu Shah <mailto:hshah@ciena.com> Oscar Gonzalez De Dios <mailto:oscar.gonzalezdedios@telefonica.com>";description"TE"Identifies the TE topologymodel"; revision "2016-03-17"type."; container te-topology { presence "Indicates TE topology."; description"Initial revision"; reference "TBD";"Its presence identifies the TE topology type."; }/* * Groupings */} // te-topology-type groupingpacket-switch-capable-containertemplate-attributes { description"The container of packet switch capable attributes."; container packet-switch-capable"Common attributes for all templates."; leaf priority { type uint16; description"Interface has packet-switching capabilities.";"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."; } leafminimum-lsp-bandwidthreference-change-policy { typedecimal64enumeration {fraction-digits 2;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"Minimum LSP Bandwidth. Units"When an attribute changes inbytes per second";this template, the configuration object referring to this template applies the new attribute value to the corresponding configuration."; }leaf interface-mtu { type uint16; description "Interface MTU.";} 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/tet:te/tet:templates/" + "tet:link-template/tet:te-link-attributes/" + "tet:interface-switching-capability" { when "switching-capability = 'switching-psc1' ""/nw:networks/nw:network/nw:network-types" { description"Valid only"Introduce new network type forPSC";TE topology."; uses te-topology-type; } augment "/nw:networks" { description"Parameters"Augmentation parameters forPSCTEtopology.";topologies."; usespacket-switch-capable-container;te-topologies-augment; } augment"/nw:networks/nw:network/nt:link/tet:te/tet:config/" + "tet:te-link-attributes/" + "tet:interface-switching-capability""/nw:networks/nw:network" { when"switching-capability = 'switching-psc1' ""nw:network-types/te-topology" { description"Valid"Augmentation parameters apply only forPSC";networks with TE topology type."; } description"Parameters"Configuration parameters forPSCTE topology."; usespacket-switch-capable-container;te-topology-augment; }/* * Operational state data nodes */augment"/nw:networks/nw:network/nt:link/tet:te/tet:state/" + "tet:te-link-attributes/" + "tet:interface-switching-capability""/nw:networks/nw:network/nw:node" { when"switching-capability = 'switching-psc1' ""../nw:network-types/te-topology" { description"Valid"Augmentation parameters apply only forPSC";networks with TE topology type."; } description"Parameters"Configuration parameters forPSCTEtopology.";at node level."; usespacket-switch-capable-container;te-node-augment; } augment"/nw:networks/nw:network/nt:link/tet:te/tet:state/" + "tet:alt-information-sources/" + "tet:interface-switching-capability""/nw:networks/nw:network/nt:link" { when"switching-capability = 'switching-psc1' ""../nw:network-types/te-topology" { description"Valid"Augmentation parameters apply only forPSC";networks with TE topology type."; } description"Parameters"Configuration parameters forPSCTEtopology.";at link level"; usespacket-switch-capable-container;te-link-augment; }/* * Notifications */augment"/tet:te-link-event/tet:te-link-attributes/""/nw:networks/nw:network/nw:node/" +"tet:interface-switching-capability""nt:termination-point" { when"switching-capability = 'switching-psc1' ""../../nw:network-types/te-topology" { description"Valid"Augmentation parameters apply only forPSC";networks with TE topology type."; } description"Parameters"Configuration parameters forPSCTEtopology.";at termination point level"; usespacket-switch-capable-container;te-termination-point-augment; }augment "/tet:te-link-event/tet:alt-information-sources/" + "tet:interface-switching-capability" { when "switching-capability = 'switching-psc1' "/* * Operational state data nodes */ /* * Notifications */ notification te-node-event { description"Valid only"Notification event forPSC";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"Parameters"Notification event forPSCTEtopology.";link."; leaf event-type { type te-types:te-topology-event-type; description "Event type"; } uses nt:link-ref; uses te-topology-type; usespacket-switch-capable-container;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; } } <CODE ENDS> 8. Security Considerations The transport protocol used for retrieving/manipulating the TE topology data MUST support authentication and SHOULD support encryption. The data-model by itself does not create any security implications. 9. IANA Considerations This document registers the following URIs in the IETF XML registry [RFC3688]. Following the format in [RFC3688], the following registration is requested to be made. URI: urn:ietf:params:xml:ns:yang:ietf-te-topology XML: N/A, the requested URI is an XML namespace. This document registers a YANG module in the YANG Module Names registry [RFC6020]. name: ietf-te-topology namespace: urn:ietf:params:xml:ns:yang:ietf-te-topology prefix: tet 10. References 10.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, January 2004. [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010. [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, July 2013. [RFC3945] Mannie, E., "Generalized Multi-Protocol Label Switching (GMPLS) Architecture", October 2004. [YANG-NET-TOPO] Clemm, A., "A Data Model for Network Topologies", draft-ietf-i2rs-yang-network-topo (Work in Progress). [YANG-PUSH] Clemm, A., "Subscribing to YANG datastore push updates", draft-clemm-netconf-yang-push (Work in Progress). [YANG-SCHEDULE] Liu, X., " A YANG Data Model for Configuration Scheduling", draft-liu-netmod-yang-schedule-00 (Work in Progress). 10.2. Informative References [RFC2702] Awduche, D., "Requirements for Traffic Engineering Over MPLS", RFC 2702, September 1999. 11. Acknowledgments The authors would like to thank Lou Berger, Sue Hares, Mazen Khaddam, Cyril Margaria and Zafar Ali for participating in design discussions and providing valuable insights. Contributors Sergio BelottiAlcatel LucentNokia Email:sergio.belotti@alcatel-lucent.comsergio.belotti@nokia.com Dieter BellerAlcatel LucentNokia Email:dieter.beller@alcatel-lucent.comDieter.Beller@nokia.com Authors' Addresses Xufeng Liu Ericsson Email: xliu@kuatrotech.com Igor Bryskin Huawei Technologies Email: Igor.Bryskin@huawei.com Vishnu Pavan Beeram Juniper Networks Email: vbeeram@juniper.net Tarek Saad Cisco Systems Inc Email: tsaad@cisco.com Himanshu Shah Ciena Email: hshah@ciena.com Oscar Gonzalez De Dios Telefonica Email: oscar.gonzalezdedios@telefonica.com