idnits 2.17.1 draft-ietf-teas-yang-te-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 150 has weird spacing: '... rw for r...' == Line 151 has weird spacing: '... ro for r...' == Line 786 has weird spacing: '...rw name str...' == Line 797 has weird spacing: '...rw name str...' == Line 852 has weird spacing: '...ro name str...' == (23 more instances...) == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (October 26, 2016) is 2737 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-25) exists of draft-ietf-netmod-routing-cfg-24 == Outdated reference: A later version (-19) exists of draft-ietf-teas-yang-rsvp-04 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-06) exists of draft-clemm-netmod-mount-05 Summary: 1 error (**), 0 flaws (~~), 11 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group T. Saad, Ed. 3 Internet-Draft R. Gandhi 4 Intended status: Standards Track Cisco Systems Inc 5 Expires: April 29, 2017 X. Liu 6 Ericsson 7 V. Beeram 8 Juniper Networks 9 H. Shah 10 Ciena 11 I. Bryskin 12 X. Chen 13 Huawei Technologies 14 R. Jones 15 Brocade 16 B. Wen 17 Comcast 18 October 26, 2016 20 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 21 draft-ietf-teas-yang-te-05 23 Abstract 25 This document defines a YANG data model for the configuration and 26 management of Traffic Engineering (TE) interfaces, tunnels and Label 27 Switched Paths (LSPs). The model is divided into YANG modules that 28 classify data into generic, device-specific, technology agnostic, and 29 technology-specific elements. The model also includes module(s) that 30 contain reusable TE data types and data groupings. 32 This model covers the configuration, operational state, remote 33 procedural calls, and event notifications data. 35 Status of This Memo 37 This Internet-Draft is submitted in full conformance with the 38 provisions of BCP 78 and BCP 79. 40 Internet-Drafts are working documents of the Internet Engineering 41 Task Force (IETF). Note that other groups may also distribute 42 working documents as Internet-Drafts. The list of current Internet- 43 Drafts is at http://datatracker.ietf.org/drafts/current/. 45 Internet-Drafts are draft documents valid for a maximum of six months 46 and may be updated, replaced, or obsoleted by other documents at any 47 time. It is inappropriate to use Internet-Drafts as reference 48 material or to cite them other than as "work in progress." 49 This Internet-Draft will expire on April 29, 2017. 51 Copyright Notice 53 Copyright (c) 2016 IETF Trust and the persons identified as the 54 document authors. All rights reserved. 56 This document is subject to BCP 78 and the IETF Trust's Legal 57 Provisions Relating to IETF Documents 58 (http://trustee.ietf.org/license-info) in effect on the date of 59 publication of this document. Please review these documents 60 carefully, as they describe your rights and restrictions with respect 61 to this document. Code Components extracted from this document must 62 include Simplified BSD License text as described in Section 4.e of 63 the Trust Legal Provisions and are provided without warranty as 64 described in the Simplified BSD License. 66 Table of Contents 68 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 69 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 70 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 71 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 72 1.4. Open Issues and Next Steps . . . . . . . . . . . . . . . 5 73 1.4.1. TE Technology Models . . . . . . . . . . . . . . . . 5 74 1.4.2. State Data Organization . . . . . . . . . . . . . . . 6 75 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 6 76 2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 7 77 2.2. Design Considerations . . . . . . . . . . . . . . . . . . 9 78 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 10 79 2.4. Configuration Inheritance . . . . . . . . . . . . . . . . 10 80 2.5. Routing Instance Support . . . . . . . . . . . . . . . . 10 81 3. TE Generic Model Organization . . . . . . . . . . . . . . . . 10 82 3.1. Global Configuration and State Data . . . . . . . . . . . 12 83 3.2. Interfaces Configuration and State Data . . . . . . . . . 13 84 3.3. Tunnels Configuration and State Data . . . . . . . . . . 14 85 3.3.1. Tunnel Compute-Only Mode . . . . . . . . . . . . . . 15 86 3.3.2. Tunnel Hierarchical Link Endpoint . . . . . . . . . . 15 87 3.4. TE LSPs State Data . . . . . . . . . . . . . . . . . . . 15 88 3.5. Global RPC Data . . . . . . . . . . . . . . . . . . . . . 15 89 3.6. Interface RPC Data . . . . . . . . . . . . . . . . . . . 16 90 3.7. Tunnel RPC Data . . . . . . . . . . . . . . . . . . . . . 16 91 3.8. Global Notifications Data . . . . . . . . . . . . . . . . 16 92 3.9. Interfaces Notifications Data . . . . . . . . . . . . . . 16 93 3.10. Tunnel Notification Data . . . . . . . . . . . . . . . . 16 94 4. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 33 95 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 106 96 6. Security Considerations . . . . . . . . . . . . . . . . . . . 107 97 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 107 98 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 108 99 8.1. Normative References . . . . . . . . . . . . . . . . . . 108 100 8.2. Informative References . . . . . . . . . . . . . . . . . 109 101 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 109 103 1. Introduction 105 YANG [RFC6020] is a data definition language that was introduced to 106 define the contents of a conceptual data store that allows networked 107 devices to be managed using NETCONF [RFC6241]. YANG is proving 108 relevant beyond its initial confines, as bindings to other interfaces 109 (e.g. RESTCONF [I-D.ietf-netconf-restconf]) and encoding other than 110 XML (e.g. JSON) are being defined. Furthermore, YANG data models 111 can be used as the basis of implementation for other interface, such 112 as CLI and programmatic APIs. 114 This document describes the YANG data models for TE Tunnels, Label 115 Switched Paths (LSPs) and TE interfaces that cover data applicable to 116 generic or device-independent, device-specific, Multiprotocol Label 117 Switching (MPLS) technology specific, and Segment Routing (SR) TE 118 technology. It also describes helper modules that define TE 119 grouping(s) and data types that can be imported by other modules. 121 The document defines the high-level relationship between the modules 122 defined in this document, as well as other external protocol modules. 123 It is expected other data plane technology model(s) will augment the 124 TE generic model. Also, the TE generic model does not include any 125 data specific to a signaling protocol. It is expected YANG modles 126 for TE signaling protocols, such as RSVP-TE ([RFC3209], [RFC3473]), 127 or Segment-Routing TE (SR-TE) will augment the TE generic module. 129 1.1. Terminology 131 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 132 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 133 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 134 [RFC2119]. 136 1.2. Tree Diagram 138 A simplified graphical representation of the data model is presented 139 in each section of the model. The following notations are used for 140 the YANG model data tree representation. 142 144 is one of: 145 + for current 146 x for deprecated 147 o for obsolete 149 is one of: 150 rw for read-write configuration data 151 ro for read-only non-configuration data 152 -x for execution rpcs 153 -n for notifications 155 is the name of the node 157 If the node is augmented into the tree from another module, its name 158 is printed as : 160 is one of: 161 ? for an optional leaf or node 162 ! for a presence container 163 * for a leaf-list or list 164 Brackets [] for a list's keys 165 Curly braces {} for optional feature that make node 166 conditional 167 Colon : for marking case nodes 168 Ellipses ("...") subtree contents not shown 170 Parentheses enclose choice and case nodes, and case nodes are also 171 marked with a colon (":"). 173 is the name of the type for leafs and leaf-lists. 175 1.3. Prefixes in Data Node Names 177 In this document, names of data nodes and other data model objects 178 are prefixed using the standard prefix associated with the 179 corresponding YANG imported modules, as shown in Table 1. 181 +---------------+--------------------+---------------+ 182 | Prefix | YANG module | Reference | 183 +---------------+--------------------+---------------+ 184 | yang | ietf-yang-types | [RFC6991] | 185 | inet | ietf-inet-types | [RFC6991] | 186 | te | ietf-te | this document | 187 | te-types | ietf-te-types | this document | 188 | te-mpls-types | ietf-te-mpls-types | this document | 189 | te-dev | ietf-te-device | this document | 190 | te-mpls | ietf-te-mpls | this document | 191 | te-sr-mpls | ietf-te-sr-mpls | this document | 192 +---------------+--------------------+---------------+ 194 Table 1: Prefixes and corresponding YANG modules 196 1.4. Open Issues and Next Steps 198 This section describes the number of open issues that are under 199 consideration. As issues are resolved, this section will be updated 200 to reflect this and be left there for reference. It is expected that 201 all the issues in this section will be addressed before the document 202 will be ready for final publication. 204 1.4.1. TE Technology Models 206 This document describes the generic TE YANG data model that is 207 independent of any dataplane technology. One of the design 208 objectives is to allow specific data plane technologies models to 209 reuse the generic TE data model and possibly augment it with 210 technology specific data model(s).There are multiple options being 211 considered to achieve this: 213 o The generic TE model, including the lists of TE tunnels, LSPs, and 214 interfaces can be defined and rooted at the top of the YANG tree. 215 Specific leaf(s) under the TE tunnel, LSP, or interface, in this 216 case, can identify the specific technology layer that it belongs 217 to. This approach implies a single list for each of TE tunnel(s), 218 LSP(s), and interface(s) in the model carries elements of 219 different technology layers. 221 o An instance of the generic TE YANG model can be mounted in the 222 YANG tree once for each TE technology layer(s). This approach 223 provides separation of elements belonging to different technology 224 layers into separate lists per layer in the data model. For 225 example, the proposal in [I-D.clemm-netmod-mount] allows for this 226 capability by "mounting" the YANG data model at a specific target. 228 o The generic TE data node(s) and TE list(s) for tunnels, LSPs, and 229 interfaces are defined as grouping(s) in a separate module. The 230 specific technology layer imports the generic TE groupings and 231 uses them their respective technology specific module. 233 The options above are currently under investigation to determine the 234 best suited approach. 236 Finally, the TE generic model does not include signaling protocol 237 data. It is expected TE signaling protocol modules defined in other 238 document(s) that cover RSVP-TE ([RFC3209], [RFC3473]), and Segment- 239 Routing TE (SR-TE) will augment the TE generic model. 241 1.4.2. State Data Organization 243 Pure state data (for example, ephemeral or protocol derived state 244 objects) can be modeled using one of the options below: 246 o Contained inside a read-write container, in a "state" sub- 247 container, as shown in Figure 3 249 o Contained inside a separate read-only container, for example a 250 lsps-state container 252 The first option allows for placing configuration data in the read- 253 write "config" sub-container, and by placing state data under the 254 read-only "state" sub-container of the parent container. However, 255 when using approach for ephemeral or purely derived state (e.g. auto 256 tunnels), and since in this case the state sub-container hangs off a 257 read-write parent container, it will be possible to delete or modify 258 the parent container and subsequently the ephemeral read-only state 259 contained within (see Figure 3). 261 The second option entails defining a new read-only parent container 262 in the model (e.g. neighbors-state) that holds the data. 264 This revision of the draft adopts the first option for ephemeral or 265 state derived tunnels. Further discussions on this topic are 266 expected to close on the best choice to adopt. 268 2. Model Overview 270 The data model defined in this document covers the core TE features 271 that are commonly supported across different vendor implementations. 272 The support of extended or vendor specific TE feature(s) are expected 273 to be in augmentations to the data models defined in this document. 275 Throughout the model, the approach described in 276 [I-D.openconfig-netmod-opstate] is adopted to represent data 277 pertaining to configuration intended state, applied state and derived 278 state data elements. Each container in the model hold a "config" and 279 "state" sub-container. The "config" sub-container is used to 280 represent the intended configurable parameters, and the state sub- 281 container is used to represent both the applied configurable 282 parameters and any derived state, such as counters or statistics 283 information. 285 The decision to use this approach was made to better align with the 286 MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model] 287 and maximize reusability of groupings defined in this document and 288 allow for possible convergence between the two models. 290 2.1. Module(s) Relationship 292 The TE generic model defined in "ietf-te.yang" covers the building 293 blocks that are device independent and agnostic of any specific 294 technology or control plane instances. The TE device model defined 295 in "ietf-te-device.yang" augments the TE generic model and covers 296 data that is specific to a device - for example, attributes of TE 297 interfaces, or TE timers that are local to a TE node. 299 The TE data relevant to a specific instantiations of data plane 300 technology exists in a separate YANG module(s) that augment the TE 301 generic model. For example, the MPLS-TE module "ietf-te-mpls.yang" 302 is defined in Figure 10 and augments the TE generic model as shown in 303 Figure 1. Similarly, the module "ietf-te-sr-mpls.yang" models the 304 Segment Routing (SR) TE specific data and augments the TE generic and 305 MPLS-TE model(s). 307 The TE data relevant to a TE specific signaling protocol 308 instantiation is outside the scope and is covered in other documents. 309 For example, the RSVP-TE [RFC3209] YANG model augmentation of the TE 310 model is covered in [I-D.ietf-teas-yang-rsvp], and other signaling 311 protocol model(s) (e.g. for Segment-Routing TE) are expected to also 312 augment the TE generic model. 314 ^: import 315 TE generic +---------+ o: augment 316 module | ietf-te |o-------------+ 317 +---------+ \ 318 | o \ \ 319 | |\ \ \ 320 | | \ V \ 321 | | +----------------+ \ 322 | | | ietf-te-device | TE device module 323 | | +----------------+ \ 324 | | o o \ 325 | | / \ \ 326 v | / V V 327 +--------------+ +---------------+ 328 RSVP-TE module | ietf-rsvp-te |o . | ietf-te-mpls | 329 +--------------+ \ +---------------+ 330 ^ \ o 331 | \ +-----------------+ 332 | \ | ietf-te-sr-mpls | 333 | \ +-----------------+ 334 | \ 335 o +-------------------+ 336 +-----------+ | ietf-rsvp-otn-te | 337 RSVP module | ietf-rsvp | +-------------------+ 338 +-----------+ RSVP-TE with OTN 339 extensions 340 (shown for illustration 341 not in this document) 343 Figure 1: Relationship of TE module(s) with other signaling protocol 344 modules 346 +---------+ 347 | ietf-te | ^: import 348 +---------+ o: augment 349 import ^ 350 | 351 | 352 +---------------+ 353 | ietf-te-types | 354 +---------------+ 355 o o 356 | \ 357 | \ 358 +-------------------+ +-------------------+ 359 | ietf-te-mpls-types | | ietf-te-otn-types | 360 +-------------------+ +-------------------+ 361 (shown for illustration 362 not in this document) 364 Figure 2: Relationship between generic and technology specific TE 365 types modules 367 2.2. Design Considerations 369 The following considerations with respect data organization are taken 370 into account: 372 o reusable data elements are grouped into separate TE types 373 module(s) that can be readily imported by other modules whenever 374 needed 376 o reusable TE data types that are data plane independent are grouped 377 in the TE generic types module "ietf-te-types.yang" 379 o reusable TE data elements that are data plane specific (e.g. 380 packet MPLS or switching technologies as defined in [RFC3473]) are 381 expected to be grouped in a technology- specific types module, 382 e.g. "ietf-te-mpls-types.yang". It is expected that technology 383 specific types will augment TE generic types as shown in Figure 2 385 o The TE generic model contains device independent data and can be 386 used to model data off a device (e.g. on a controller). The TE 387 data that is device-specific are grouped in a separate module as 388 shown in Figure 1. 390 o In general, little information in the model is designated as 391 "mandatory", to allow freedom to vendors to adapt the data model 392 to their specific product implementation. 394 2.3. Optional Features 396 Optional features that are beyond the base TE model and are left to 397 the specific vendor to decide support using vendor model augmentation 398 and/or using feature checks. 400 This model declares a number of TE functions as features (such as 401 P2MP-TE, soft-preemption etc.). 403 2.4. Configuration Inheritance 405 The defined data model supports configuration inheritance for 406 tunnels, paths, and interfaces. Data elements defined in the main 407 container (e.g. that encompasses the list of tunnels, interfaces, or 408 paths) are assumed to apply equally to all elements of the list, 409 unless overridden explicitly for a certain element of a list (e.g. a 410 tunnel, interface or path). 412 2.5. Routing Instance Support 414 There two main popular types of routing protocol configuration that 415 vendors may support: 417 o protocol centric - all the protocol related configuration is 418 contained within the protocol itself. Configuration belonging to 419 multiple instances of the protocol running in different routing- 420 instances (e.g. VRFs) are contained under the default routing 421 instance [I-D.ietf-netmod-routing-cfg]: 423 o VRF centric - all the protocol related configuration for a 424 routing- instance is contained within this routing-instance. 426 On-going discussions within the IETF community have converged on 427 adopting the VRF centric approach. The proposed model in this 428 document adheres to this conclusion. 430 3. TE Generic Model Organization 432 The TE generic model covers configuration, state, RPCs, and 433 notifications data pertaining to TE global parameters, interfaces, 434 tunnels and LSPs parameters that are device independent. 436 The container "te" is the top level container in this data model. 437 The presence of this container is expected to enable TE function 438 system wide. 440 The approach described in [I-D.openconfig-netmod-opstate] allows for 441 modeling the intended and respective applied and derived state. The 442 TE state data in this model falls into one of the following 443 categories: 445 o State corresponding to applied configuration 447 o State corresponding to derived state, counters, stats, etc. 449 o State corresponding to ephemeral data (e.g. LSPs, etc.) 451 Data for the first two categories are contained under the respective 452 "state" sub-container of the intended (e.g. tunnel). The last 453 category falls under a separate - e.g. lsps-state- container that 454 contains the attributes of a purely derived state data (e.g. 455 ephemeral objects) that are not associated with any configuration as 456 shown in Figure 3. 458 module: ietf-te 459 +--rw te! 460 +--rw globals 461 +-- rw config 462 <> 463 . 464 +-- ro state 465 <> 466 <> 467 . 468 . 470 +--rw tunnels 471 +-- rw config 472 <> 473 . 474 +-- ro state 475 <> 476 <> 477 . 478 . 479 rpcs: 480 +---x globals-rpc 481 +---x tunnels-rpc 482 notifications: 483 +---n globals-notif 484 +---n tunnels-notif 486 Figure 3: TE generic highlevel model view 488 3.1. Global Configuration and State Data 490 This branch of the data model covers configurations that control TE 491 features behavior system-wide, and its respective state. Examples of 492 such configuration data are: 494 o Table of named SRLG mappings 496 o Table of named (extended) administrative groups mappings 498 o Table of named explicit paths to be referenced by TE tunnels 500 o Table of named path-constraints sets 502 o Auto-bandwidth global parameters 504 o TE diff-serve TE-class maps 506 o System-wide capabilities for LSP reoptimization (included in the 507 TE device model) 509 * Reoptimization timers (periodic interval, LSP installation and 510 cleanup) 512 o System-wide capabilities for TE state flooding (included in the TE 513 device model) 515 * Periodic flooding interval 517 o Global capabilities that affect the originating, traversing and 518 terminating LSPs. For example: 520 * Path selection parameters (e.g. metric to optimize, etc.) 522 * Path or segment protection parameters 524 The approach described in [I-D.openconfig-netmod-opstate] is utilized 525 to include the global state data under the global "state" sub- 526 container as shown in Figure 3. 528 Examples of such states are: 530 o Global statistics (signaling, admission, preemption, flooding) 532 o Global counters (number of tunnels/LSPs/interfaces) 534 3.2. Interfaces Configuration and State Data 536 This branch of the model covers configuration and state data items 537 corresponding to TE interfaces that are present on a specific device. 538 A new module is introduced that holds the TE device specific 539 properties. 541 Examples of TE interface properties are: 543 o Maximum reservable bandwidth, bandwidth constraints (BC) 545 o Flooding parameters 547 * Flooding intervals and threshold values 549 o Fast reroute backup tunnel properties (such as static, auto- 550 tunnel) 552 o interface attributes 554 * (Extended) administrative groups 556 * SRLG values 558 * TE metric value 560 The state corresponding to the TE interfaces applied configuration, 561 protocol derived state, and stats and counters all fall under the 562 interface "state" sub-container as shown in Figure 4 below: 564 module: ietf-te 565 +--rw te! 566 +--rw interfaces 567 . 568 +-- rw te-attributes 569 +-- rw config 570 <> 571 . 572 +-- ro state 573 <> 574 <> 576 Figure 4: TE interface state 578 This covers state data for TE interfaces such as: 580 o Bandwidth information: maximum bandwidth, available bandwidth at 581 different priorities and for each class-type (CT) 583 o List of admitted LSPs 585 * Name, bandwidth value and pool, time, priority 587 o Statistics: state counters, flooding counters, admission counters 588 (accepted/rejected), preemption counters 590 o Adjacency information 592 * Neighbor address 594 * Metric value 596 3.3. Tunnels Configuration and State Data 598 This branch of the model covers intended, and corresponding applied 599 configuration for tunnels. As well, it holds possible derived state 600 pertaining to TE tunnels. 602 The approach described in [I-D.openconfig-netmod-opstate] is utilized 603 for the inclusion of operational and statistical data as shown in 604 Figure 5. 606 module: ietf-te 607 +--rw te! 608 +--rw tunnels 609 . 610 +-- rw config 611 <> 612 . 613 +-- ro state 614 <> 615 <> 617 Figure 5: TE interface state tree 619 Examples of tunnel configuration date for TE tunnels: 621 o Name and type (e.g. P2P, P2MP) of the TE tunnel 623 o Admin-state 625 o Set of primary and corresponding secondary paths 627 o Routing usage (auto-route announce, forwarding adjacency) 629 o Policy based routing (PBR) parameters 631 3.3.1. Tunnel Compute-Only Mode 633 By default, a configured TE tunnel is provisioned so it can carry 634 traffic as soon as a valid path is computed and an LSP instantiated 635 in the network. In other cases, a TE tunnel may be provisioned for 636 computed path reporting purposes without the need to instantiate an 637 LSP or commit resources in the network. In such a case, a tunnel 638 configuration in "compute-only" mode to distinguish it from default 639 tunnel behavior. 641 A "compute-only" TE tunnel is configured as a usual TE tunnel with 642 associated path constraint(s) and properties on a device or 643 controller. The device or controller is expected to compute the 644 feasible path(s) subject to configured constraints for of "compute- 645 only" tunnel and reflect the computed path(s) in the LSP(s) Record- 646 Route Object (RRO) list. A client may query "on-demand" the 647 "compute-only" TE tunnel computed path(s) properties by querying the 648 state of the tunnel. Alternatively, the client can subscribe on the 649 "compute-only" TE tunnel to be notified of computed path(s) and 650 whenever it changes. 652 3.3.2. Tunnel Hierarchical Link Endpoint 654 TE LSPs can be set up in MPLS or Generalized MPLS (GMPLS) networks to 655 be used to form links to carry traffic in in other (client) networks 656 [RFC6107]. In this case, the model introduces the TE tunnel 657 hierarchical link endpoint parameters to identify the specific link 658 in the client layer that the TE tunnel is associated with. 660 3.4. TE LSPs State Data 662 TE LSPs are derived state data that is usually instantiated via 663 signaling protocols. TE LSPs exists on routers as ingress (starting 664 point of LSP), transit (mid-point of LSP ), or egress (termination 665 point of the LSP). TE LSPs are distinguished by the 5 tuple, and LSP 666 type (P2P or P2MP). In the model, the nodes holding LSPs data exist 667 in the read-only lsps-state list as show in Figure 6. 669 3.5. Global RPC Data 671 This branch of the model covers system-wide RPC execution data to 672 trigger actions and optionally expect responses. Examples of such TE 673 commands are to: 675 o Clear global TE statistics of various features 677 3.6. Interface RPC Data 679 This collection of data in the model defines TE interface RPC 680 execution commands. Examples of these are to: 682 o Clear TE statistics for all or for individual TE interfaces 684 o Trigger immediate flooding for one or all TE interfaces 686 3.7. Tunnel RPC Data 688 This branch of the model covers TE tunnel RPC execution data to 689 trigger actions and optionally expect responses. Examples of such TE 690 commands are: 692 o Clear statistics for all or for individual tunnels 694 o Trigger the tear and setup of existing tunnels or LSPs. 696 3.8. Global Notifications Data 698 This branch of the model covers system-wide notifications data. The 699 node notifies the registered events to the server using the defined 700 notification messages. 702 3.9. Interfaces Notifications Data 704 This branch of the model covers TE interfaces related notifications 705 data. The TE interface configuration is used for specific events 706 registration. Notifications are sent for registered events to the 707 server. Example events for TE interfaces are: 709 o Interface creation and deletion 711 o Interface state transitions 713 o (Soft) preemption triggers 715 o Fast reroute activation 717 3.10. Tunnel Notification Data 719 This branch of the model covers TE tunnels related notifications 720 data. The TE tunnels configuration is used for specific events 721 registration. Notifications are sent for registered events to the 722 server. Example events for TE tunnels are: 724 o Tunnel creation and deletion events 725 o Tunnel state up/down changes 727 o Tunnel state reoptimization changes 729 Figure Figure 6 below shows the tree diagram of the YANG model 730 defined in modules: ietf-te.yang, ietf-te-device.yang, ietf-te- 731 mpls.yang, and ietf-te-sr.yang. 733 module: ietf-te 734 +--rw te! 735 +--rw globals 736 | +--rw config 737 | | +--rw named-admin-groups* [name] 738 {te-types:extended-admin-groups,te-types: 739 named-extended-admin-groups}? 740 | | | +--rw name string 741 | | | +--rw bit-position? uint32 742 | | +--rw named-srlgs* [name] {te-types:named-srlg-groups}? 743 | | | +--rw name string 744 | | | +--rw group? te-types:srlg 745 | | +--rw named-explicit-paths* [name] 746 | | | +--rw name string 747 | | | +--rw explicit-route-objects* [index] 748 | | | +--rw index uint8 749 | | | +--rw explicit-route-usage? identityref 750 | | | +--rw (type)? 751 | | | +--:(ipv4-address) 752 | | | | +--rw v4-address? inet:ipv4-address 753 | | | | +--rw v4-prefix-length? uint8 754 | | | | +--rw v4-loose? boolean 755 | | | +--:(ipv6-address) 756 | | | | +--rw v6-address? inet:ipv6-address 757 | | | | +--rw v6-prefix-length? uint8 758 | | | | +--rw v6-loose? boolean 759 | | | +--:(as-number) 760 | | | | +--rw as-number? uint16 761 | | | +--:(unnumbered-link) 762 | | | | +--rw router-id? inet:ip-address 763 | | | | +--rw interface-id? uint32 764 | | | +--:(label) 765 | | | +--rw value? uint32 766 | | +--rw named-constraints* [name] 767 {te-types:named-path-constraints}? 768 | | | +--rw name string 769 | | | +--rw path-constraints 770 | | | | +--rw topology-id? te-types:te-topology-id 771 | | | | +--rw cost-limit? uint32 772 | | | | +--rw hop-limit? uint8 773 | | | | +--rw metric-type? identityref 774 | | | | +--rw tiebreaker-type? identityref 775 | | | | +--rw ignore-overload? boolean 776 | | | | +--rw path-affinities {named-path-affinities}? 777 | | | | | +--rw (style)? 778 | | | | | +--:(values) 779 | | | | | | +--rw value? uint32 780 | | | | | | +--rw mask? uint32 781 | | | | | +--:(named) 782 | | | | | +--rw constraints* [usage] 783 | | | | | +--rw usage identityref 784 | | | | | +--rw constraint 785 | | | | | +--rw affinity-names* [name] 786 | | | | | +--rw name string 787 | | | | +--rw path-srlgs 788 | | | | +--rw (style)? 789 | | | | +--:(values) 790 | | | | | +--rw usage? identityref 791 | | | | | +--rw values* te-types:srlg 792 | | | | +--:(named) 793 | | | | +--rw constraints* [usage] 794 | | | | +--rw usage identityref 795 | | | | +--rw constraint 796 | | | | +--rw srlg-names* [name] 797 | | | | +--rw name string 798 | | | +--rw te-sr-mpls:adjacency-protection? identityref 799 | | +--rw te-dev:lsp-install-interval? uint32 800 | | +--rw te-dev:lsp-cleanup-interval? uint32 801 | | +--rw te-dev:lsp-invalidation-interval? uint32 802 | +--ro state 803 | +--ro named-admin-groups* [name] 804 {te-types:extended-admin-groups,te-types: 805 named-extended-admin-groups}? 806 | | +--ro name string 807 | | +--ro bit-position? uint32 808 | +--ro named-srlgs* [name] {te-types:named-srlg-groups}? 809 | | +--ro name string 810 | | +--ro group? te-types:srlg 811 | +--ro named-explicit-paths* [name] 812 | | +--ro name string 813 | | +--ro explicit-route-objects* [index] 814 | | +--ro index uint8 815 | | +--ro explicit-route-usage? identityref 816 | | +--ro (type)? 817 | | +--:(ipv4-address) 818 | | | +--ro v4-address? inet:ipv4-address 819 | | | +--ro v4-prefix-length? uint8 820 | | | +--ro v4-loose? boolean 821 | | +--:(ipv6-address) 822 | | | +--ro v6-address? inet:ipv6-address 823 | | | +--ro v6-prefix-length? uint8 824 | | | +--ro v6-loose? boolean 825 | | +--:(as-number) 826 | | | +--ro as-number? uint16 827 | | +--:(unnumbered-link) 828 | | | +--ro router-id? inet:ip-address 829 | | | +--ro interface-id? uint32 830 | | +--:(label) 831 | | +--ro value? uint32 832 | +--ro named-constraints* [name] 833 {te-types:named-path-constraints}? 834 | | +--ro name string 835 | | +--ro path-constraints 836 | | | +--ro topology-id? te-types:te-topology-id 837 | | | +--ro cost-limit? uint32 838 | | | +--ro hop-limit? uint8 839 | | | +--ro metric-type? identityref 840 | | | +--ro tiebreaker-type? identityref 841 | | | +--ro ignore-overload? boolean 842 | | | +--ro path-affinities {named-path-affinities}? 843 | | | | +--ro (style)? 844 | | | | +--:(values) 845 | | | | | +--ro value? uint32 846 | | | | | +--ro mask? uint32 847 | | | | +--:(named) 848 | | | | +--ro constraints* [usage] 849 | | | | +--ro usage identityref 850 | | | | +--ro constraint 851 | | | | +--ro affinity-names* [name] 852 | | | | +--ro name string 853 | | | +--ro path-srlgs 854 | | | +--ro (style)? 855 | | | +--:(values) 856 | | | | +--ro usage? identityref 857 | | | | +--ro values* te-types:srlg 858 | | | +--:(named) 859 | | | +--ro constraints* [usage] 860 | | | +--ro usage identityref 861 | | | +--ro constraint 862 | | | +--ro srlg-names* [name] 863 | | | +--ro name string 864 | | +--ro te-sr-mpls:adjacency-protection? identityref 865 | +--ro te-dev:lsp-install-interval? uint32 866 | +--ro te-dev:lsp-cleanup-interval? uint32 867 | +--ro te-dev:lsp-invalidation-interval? uint32 868 | +--ro te-dev:tunnels-counter? uint32 869 | +--ro te-dev:lsps-counter? uint32 870 +--rw tunnels 871 | +--rw tunnel* [name] 872 | | +--rw name -> ../config/name 873 | | +--rw identifier? -> ../config/identifier 874 | | +--rw config 875 | | | +--rw name? string 876 | | | +--rw type? identityref 877 | | | +--rw identifier? uint16 878 | | | +--rw description? string 879 | | | +--rw lsp-priority-setup? uint8 880 | | | +--rw lsp-priority-hold? uint8 881 | | | +--rw lsp-protection-type? identityref 882 | | | +--rw admin-status? identityref 883 | | | +--rw source? inet:ip-address 884 | | | +--rw destination? inet:ip-address 885 | | | +--rw src-tp-id? binary 886 | | | +--rw dst-tp-id? binary 887 | | | +--rw hierarchical-link-id 888 | | | | +--rw local-te-node-id? te-types:te-node-id 889 | | | | +--rw local-te-link-tp-id? te-types:te-tp-id 890 | | | | +--rw remote-te-node-id? te-types:te-node-id 891 | | | | +--rw te-topology-id? te-types:te-topology-id 892 | | | +--rw bidirectional 893 | | | | +--rw association 894 | | | | +--rw id? uint16 895 | | | | +--rw source? inet:ip-address 896 | | | | +--rw global-source? inet:ip-address 897 | | | | +--rw type? identityref 898 | | | | +--rw provisioing? identityref 899 | | | +--rw te-dev:lsp-install-interval? uint32 900 | | | +--rw te-dev:lsp-cleanup-interval? uint32 901 | | | +--rw te-dev:lsp-invalidation-interval? uint32 902 | | | +--rw (te-mpls:routing-choice)? 903 | | | | +--:(te-mpls:autoroute) 904 | | | | | +--rw te-mpls:autoroute-announce! 905 | | | | | +--rw te-mpls:routing-afs* inet:ip-version 906 | | | | | +--rw (te-mpls:metric-type)? 907 | | | | | +--:(te-mpls:metric) 908 | | | | | | +--rw te-mpls:metric? uint32 909 | | | | | +--:(te-mpls:relative-metric) 910 | | | | | | +--rw te-mpls:relative-metric? int32 911 | | | | | +--:(te-mpls:absolute-metric) 912 | | | | | +--rw te-mpls:absolute-metric? uint32 913 | | | | +--:(te-mpls:forwarding-adjacency) 914 | | | | +--rw te-mpls:forwarding-adjacency! 915 | | | | +--rw te-mpls:holdtime? uint32 916 | | | | +--rw te-mpls:routing-afs* inet:ip-version 917 | | | +--rw te-mpls:forwarding 918 | | | +--rw te-mpls:binding-label? mpls:mpls-label 919 | | | +--rw te-mpls:load-share? uint32 920 | | | +--rw (te-mpls:policy-type)? 921 | | | +--:(te-mpls:class) 922 | | | | +--rw te-mpls:class 923 | | | | +--rw te-mpls:class? uint8 924 | | | +--:(te-mpls:group) 925 | | | +--rw te-mpls:group 926 | | | +--rw te-mpls:classes* uint8 927 | | +--ro state 928 | | | +--ro name? string 929 | | | +--ro type? identityref 930 | | | +--ro identifier? uint16 931 | | | +--ro description? string 932 | | | +--ro lsp-priority-setup? uint8 933 | | | +--ro lsp-priority-hold? uint8 934 | | | +--ro lsp-protection-type? identityref 935 | | | +--ro admin-status? identityref 936 | | | +--ro source? inet:ip-address 937 | | | +--ro destination? inet:ip-address 938 | | | +--ro src-tp-id? binary 939 | | | +--ro dst-tp-id? binary 940 | | | +--ro hierarchical-link-id 941 | | | | +--ro local-te-node-id? te-types:te-node-id 942 | | | | +--ro local-te-link-tp-id? te-types:te-tp-id 943 | | | | +--ro remote-te-node-id? te-types:te-node-id 944 | | | | +--ro te-topology-id? te-types:te-topology-id 945 | | | +--ro bidirectional 946 | | | | +--ro association 947 | | | | +--ro id? uint16 948 | | | | +--ro source? inet:ip-address 949 | | | | +--ro global-source? inet:ip-address 950 | | | | +--ro type? identityref 951 | | | | +--ro provisioing? identityref 952 | | | +--ro oper-status? identityref 953 | | | +--ro te-dev:lsp-install-interval? uint32 954 | | | +--ro te-dev:lsp-cleanup-interval? uint32 955 | | | +--ro te-dev:lsp-invalidation-interval? uint32 956 | | | +--ro (te-mpls:routing-choice)? 957 | | | | +--:(te-mpls:autoroute) 958 | | | | | +--ro te-mpls:autoroute-announce! 959 | | | | | +--ro te-mpls:routing-afs* inet:ip-version 960 | | | | | +--ro (te-mpls:metric-type)? 961 | | | | | +--:(te-mpls:metric) 962 | | | | | | +--ro te-mpls:metric? uint32 963 | | | | | +--:(te-mpls:relative-metric) 964 | | | | | | +--ro te-mpls:relative-metric? int32 965 | | | | | +--:(te-mpls:absolute-metric) 966 | | | | | +--ro te-mpls:absolute-metric? uint32 967 | | | | +--:(te-mpls:forwarding-adjacency) 968 | | | | +--ro te-mpls:forwarding-adjacency! 969 | | | | +--ro te-mpls:holdtime? uint32 970 | | | | +--ro te-mpls:routing-afs* inet:ip-version 971 | | | +--ro te-mpls:forwarding 972 | | | +--ro te-mpls:binding-label? mpls:mpls-label 973 | | | +--ro te-mpls:load-share? uint32 974 | | | +--ro (te-mpls:policy-type)? 975 | | | +--:(te-mpls:class) 976 | | | | +--ro te-mpls:class 977 | | | | +--ro te-mpls:class? uint8 978 | | | +--:(te-mpls:group) 979 | | | +--ro te-mpls:group 980 | | | +--ro te-mpls:classes* uint8 981 | | +--rw primary-paths* [name] 982 | | | +--rw name -> ../config/name 983 | | | +--rw preference? -> ../config/preference 984 | | | +--rw config 985 | | | | +--rw name? string 986 | | | | +--rw preference? uint8 987 | | | | +--rw compute-only? empty 988 | | | | +--rw named-path-constraint? string 989 {te-types:named-path-constraints}? 990 | | | | +--rw path-constraints 991 | | | | | +--rw topology-id? te-types:te-topology-id 992 | | | | | +--rw cost-limit? uint32 993 | | | | | +--rw hop-limit? uint8 994 | | | | | +--rw metric-type? identityref 995 | | | | | +--rw tiebreaker-type? identityref 996 | | | | | +--rw ignore-overload? boolean 997 | | | | | +--rw path-affinities {named-path-affinities}? 998 | | | | | | +--rw (style)? 999 | | | | | | +--:(values) 1000 | | | | | | | +--rw value? uint32 1001 | | | | | | | +--rw mask? uint32 1002 | | | | | | +--:(named) 1003 | | | | | | +--rw constraints* [usage] 1004 | | | | | | +--rw usage identityref 1005 | | | | | | +--rw constraint 1006 | | | | | | +--rw affinity-names* [name] 1007 | | | | | | +--rw name string 1008 | | | | | +--rw path-srlgs 1009 | | | | | +--rw (style)? 1010 | | | | | +--:(values) 1011 | | | | | | +--rw usage? identityref 1012 | | | | | | +--rw values* te-types:srlg 1013 | | | | | +--:(named) 1014 | | | | | +--rw constraints* [usage] 1015 | | | | | +--rw usage identityref 1016 | | | | | +--rw constraint 1017 | | | | | +--rw srlg-names* [name] 1018 | | | | | +--rw name string 1019 | | | | +--rw (type)? 1020 | | | | | +--:(dynamic) 1021 | | | | | | +--rw dynamic? empty 1022 | | | | | +--:(explicit) 1023 | | | | | +--rw explicit-path-name? string 1024 | | | | | +--rw explicit-route-objects* [index] 1025 | | | | | +--rw index uint8 1026 | | | | | +--rw explicit-route-usage? identityref 1027 | | | | | +--rw (type)? 1028 | | | | | +--:(ipv4-address) 1029 | | | | | | +--rw v4-address?inet:ipv4-address 1030 | | | | | | +--rw v4-prefix-length? uint8 1031 | | | | | | +--rw v4-loose? boolean 1032 | | | | | +--:(ipv6-address) 1033 | | | | | | +--rw v6-address?inet:ipv6-address 1034 | | | | | | +--rw v6-prefix-length? uint8 1035 | | | | | | +--rw v6-loose? boolean 1036 | | | | | +--:(as-number) 1037 | | | | | | +--rw as-number? uint16 1038 | | | | | +--:(unnumbered-link) 1039 | | | | | | +--rw router-id? inet:ip-address 1040 | | | | | | +--rw interface-id? uint32 1041 | | | | | +--:(label) 1042 | | | | | +--rw value? uint32 1043 | | | | +--rw no-cspf? empty 1044 | | | | +--rw lockdown? empty 1045 | | | +--ro state 1046 | | | | +--ro name? string 1047 | | | | +--ro preference? uint8 1048 | | | | +--ro compute-only? empty 1049 | | | | +--ro named-path-constraint? string 1050 {te-types:named-path-constraints}? 1051 | | | | +--ro path-constraints 1052 | | | | | +--ro topology-id? te-types:te-topology-id 1053 | | | | | +--ro cost-limit? uint32 1054 | | | | | +--ro hop-limit? uint8 1055 | | | | | +--ro metric-type? identityref 1056 | | | | | +--ro tiebreaker-type? identityref 1057 | | | | | +--ro ignore-overload? boolean 1058 | | | | | +--ro path-affinities {named-path-affinities}? 1059 | | | | | | +--ro (style)? 1060 | | | | | | +--:(values) 1061 | | | | | | | +--ro value? uint32 1062 | | | | | | | +--ro mask? uint32 1063 | | | | | | +--:(named) 1064 | | | | | | +--ro constraints* [usage] 1065 | | | | | | +--ro usage identityref 1066 | | | | | | +--ro constraint 1067 | | | | | | +--ro affinity-names* [name] 1068 | | | | | | +--ro name string 1069 | | | | | +--ro path-srlgs 1070 | | | | | +--ro (style)? 1071 | | | | | +--:(values) 1072 | | | | | | +--ro usage? identityref 1073 | | | | | | +--ro values* te-types:srlg 1074 | | | | | +--:(named) 1075 | | | | | +--ro constraints* [usage] 1076 | | | | | +--ro usage identityref 1077 | | | | | +--ro constraint 1078 | | | | | +--ro srlg-names* [name] 1079 | | | | | +--ro name string 1080 | | | | +--ro (type)? 1081 | | | | | +--:(dynamic) 1082 | | | | | | +--ro dynamic? empty 1083 | | | | | +--:(explicit) 1084 | | | | | +--ro explicit-path-name? string 1085 | | | | | +--ro explicit-route-objects* [index] 1086 | | | | | +--ro index uint8 1087 | | | | | +--ro explicit-route-usage? identityref 1088 | | | | | +--ro (type)? 1089 | | | | | +--:(ipv4-address) 1090 | | | | | | +--ro v4-address?inet:ipv4-address 1091 | | | | | | +--ro v4-prefix-length? uint8 1092 | | | | | | +--ro v4-loose? boolean 1093 | | | | | +--:(ipv6-address) 1094 | | | | | | +--ro v6-address?inet:ipv6-address 1095 | | | | | | +--ro v6-prefix-length? uint8 1096 | | | | | | +--ro v6-loose? boolean 1097 | | | | | +--:(as-number) 1098 | | | | | | +--ro as-number? uint16 1099 | | | | | +--:(unnumbered-link) 1100 | | | | | | +--ro router-id? inet:ip-address 1101 | | | | | | +--ro interface-id? uint32 1102 | | | | | +--:(label) 1103 | | | | | +--ro value? uint32 1104 | | | | +--ro no-cspf? empty 1105 | | | | +--ro lockdown? empty 1106 | | | | +--ro lsp* [source destination tunnel-id lsp-id 1107 extended-tunnel-id type] 1108 | | | | +--ro source -> 1109 ../../../../../../lsps-state/lsp/source 1110 | | | | +--ro destination -> 1111 ../../../../../../lsps-state/lsp/destination 1112 | | | | +--ro tunnel-id -> 1113 ../../../../../../lsps-state/lsp/tunnel-id 1114 | | | | +--ro lsp-id -> 1115 ../../../../../../lsps-state/lsp/lsp-id 1116 | | | | +--ro extended-tunnel-id -> 1117 ../../../../../../lsps-state/lsp/extended-tunnel-id 1118 | | | | +--ro type -> 1119 ../../../../../../lsps-state/lsp/type 1120 | | | +--rw secondary-paths* [name] 1121 | | | | +--rw name -> 1122 ../config/name 1123 | | | | +--rw preference? -> 1124 ../config/preference 1125 | | | | +--rw config 1126 | | | | | +--rw name? string 1127 | | | | | +--rw preference? uint8 1128 | | | | | +--rw compute-only? empty 1129 | | | | | +--rw named-path-constraint? string 1130 {te-types:named-path-constraints}? 1131 | | | | | +--rw path-constraints 1132 | | | | | | +--rw topology-id?te-types:te-topology-id 1133 | | | | | | +--rw cost-limit? uint32 1134 | | | | | | +--rw hop-limit? uint8 1135 | | | | | | +--rw metric-type? identityref 1136 | | | | | | +--rw tiebreaker-type? identityref 1137 | | | | | | +--rw ignore-overload? boolean 1138 | | | | | | +--rw path-affinities {named-path-affinities}? 1139 | | | | | | | +--rw (style)? 1140 | | | | | | | +--:(values) 1141 | | | | | | | | +--rw value? uint32 1142 | | | | | | | | +--rw mask? uint32 1143 | | | | | | | +--:(named) 1144 | | | | | | | +--rw constraints* [usage] 1145 | | | | | | | +--rw usage identityref 1146 | | | | | | | +--rw constraint 1147 | | | | | | | +--rw affinity-names* [name] 1148 | | | | | | | +--rw name string 1149 | | | | | | +--rw path-srlgs 1150 | | | | | | +--rw (style)? 1151 | | | | | | +--:(values) 1152 | | | | | | | +--rw usage? identityref 1153 | | | | | | | +--rw values* te-types:srlg 1154 | | | | | | +--:(named) 1155 | | | | | | +--rw constraints* [usage] 1156 | | | | | | +--rw usage identityref 1157 | | | | | | +--rw constraint 1158 | | | | | | +--rw srlg-names* [name] 1159 | | | | | | +--rw name string 1160 | | | | | +--rw (type)? 1161 | | | | | | +--:(dynamic) 1162 | | | | | | | +--rw dynamic? empty 1163 | | | | | | +--:(explicit) 1164 | | | | | | +--rw explicit-path-name? string 1165 | | | | | | +--rw explicit-route-objects* [index] 1166 | | | | | | +--rw index uint8 1167 | | | | | | +--rw explicit-route-usage?identityref 1168 | | | | | | +--rw (type)? 1169 | | | | | | +--:(ipv4-address) 1170 | | | | | | | +--rw v4-address?inet:ipv4-address 1171 | | | | | | | +--rw v4-prefix-length? uint8 1172 | | | | | | | +--rw v4-loose? boolean 1173 | | | | | | +--:(ipv6-address) 1174 | | | | | | | +--rw v6-address?inet:ipv6-address 1175 | | | | | | | +--rw v6-prefix-length? uint8 1176 | | | | | | | +--rw v6-loose? boolean 1177 | | | | | | +--:(as-number) 1178 | | | | | | | +--rw as-number? uint16 1179 | | | | | | +--:(unnumbered-link) 1180 | | | | | | | +--rw router-id? inet:ip-address 1181 | | | | | | | +--rw interface-id? uint32 1182 | | | | | | +--:(label) 1183 | | | | | | +--rw value? uint32 1184 | | | | | +--rw no-cspf? empty 1185 | | | | | +--rw lockdown? empty 1186 | | | | +--ro state 1187 | | | | | +--ro name? string 1188 | | | | | +--ro preference? uint8 1189 | | | | | +--ro compute-only? empty 1190 | | | | | +--ro named-path-constraint? string 1191 {te-types:named-path-constraints}? 1192 | | | | | +--ro path-constraints 1193 | | | | | | +--ro topology-id?te-types:te-topology-id 1194 | | | | | | +--ro cost-limit? uint32 1195 | | | | | | +--ro hop-limit? uint8 1196 | | | | | | +--ro metric-type? identityref 1197 | | | | | | +--ro tiebreaker-type? identityref 1198 | | | | | | +--ro ignore-overload? boolean 1199 | | | | | | +--ro path-affinities {named-path-affinities}? 1200 | | | | | | | +--ro (style)? 1201 | | | | | | | +--:(values) 1202 | | | | | | | | +--ro value? uint32 1203 | | | | | | | | +--ro mask? uint32 1204 | | | | | | | +--:(named) 1205 | | | | | | | +--ro constraints* [usage] 1206 | | | | | | | +--ro usage identityref 1207 | | | | | | | +--ro constraint 1208 | | | | | | | +--ro affinity-names* [name] 1209 | | | | | | | +--ro name string 1210 | | | | | | +--ro path-srlgs 1211 | | | | | | +--ro (style)? 1212 | | | | | | +--:(values) 1213 | | | | | | | +--ro usage? identityref 1214 | | | | | | | +--ro values* te-types:srlg 1215 | | | | | | +--:(named) 1216 | | | | | | +--ro constraints* [usage] 1217 | | | | | | +--ro usage identityref 1218 | | | | | | +--ro constraint 1219 | | | | | | +--ro srlg-names* [name] 1220 | | | | | | +--ro name string 1221 | | | | | +--ro (type)? 1222 | | | | | | +--:(dynamic) 1223 | | | | | | | +--ro dynamic? empty 1224 | | | | | | +--:(explicit) 1225 | | | | | | +--ro explicit-path-name? string 1226 | | | | | | +--ro explicit-route-objects* [index] 1227 | | | | | | +--ro index uint8 1228 | | | | | | +--ro explicit-route-usage?identityref 1229 | | | | | | +--ro (type)? 1230 | | | | | | +--:(ipv4-address) 1231 | | | | | | | +--ro v4-address?inet:ipv4-address 1232 | | | | | | | +--ro v4-prefix-length?uint8 1233 | | | | | | | +--ro v4-loose? boolean 1234 | | | | | | +--:(ipv6-address) 1235 | | | | | | | +--ro v6-address?inet:ipv6-address 1236 | | | | | | | +--ro v6-prefix-length?uint8 1237 | | | | | | | +--ro v6-loose? boolean 1238 | | | | | | +--:(as-number) 1239 | | | | | | | +--ro as-number? uint16 1240 | | | | | | +--:(unnumbered-link) 1241 | | | | | | | +--ro router-id?inet:ip-address 1242 | | | | | | | +--ro interface-id? uint32 1243 | | | | | | +--:(label) 1244 | | | | | | +--ro value? uint32 1245 | | | | | +--ro no-cspf? empty 1246 | | | | | +--ro lockdown? empty 1247 | | | | | +--ro lsp* [source] 1248 | | | | | +--ro source -> 1249 ../../../../../../../lsps-state/lsp/source 1250 | | | | | +--ro destination? -> 1251 ../../../../../../../lsps-state/lsp/destination 1252 | | | | | +--ro tunnel-id? -> 1253 ../../../../../../../lsps-state/lsp/tunnel-id 1254 | | | | | +--ro lsp-id? -> 1255 ../../../../../../../lsps-state/lsp/lsp-id 1256 | | | | | +--ro extended-tunnel-id? -> 1257 ../../../../../../../lsps-state/lsp/extended-tunnel-id 1258 | | | | | +--ro type? -> 1259 ../../../../../../../lsps-state/lsp/type 1260 | | | | +--rw te-sr-mpls:path-signaling-type? identityref 1261 | | | +--rw te-sr-mpls:path-signaling-type? identityref 1262 | | +---x tunnel-action 1263 | | +---w input 1264 | | | +---w action-type? identityref 1265 | | +--ro output 1266 | | +--ro action-result? identityref 1267 | +--rw tunnel-p2mp* [name] 1268 | +--rw name -> ../config/name 1269 | +--rw identifier? -> ../config/identifier 1270 | +--rw config 1271 | | +--rw name? string 1272 | | +--rw type? identityref 1273 | | +--rw identifier? uint16 1274 | | +--rw description? string 1275 | | +--rw lsp-priority-setup? uint8 1276 | | +--rw lsp-priority-hold? uint8 1277 | | +--rw lsp-protection-type? identityref 1278 | | +--rw admin-status? identityref 1279 | +--ro state 1280 | +--ro name? string 1281 | +--ro type? identityref 1282 | +--ro identifier? uint16 1283 | +--ro description? string 1284 | +--ro lsp-priority-setup? uint8 1285 | +--ro lsp-priority-hold? uint8 1286 | +--ro lsp-protection-type? identityref 1287 | +--ro admin-status? identityref 1288 +--ro lsps-state 1289 | +--ro lsp* [source destination tunnel-id lsp-id 1290 extended-tunnel-id type] 1291 | +--ro source inet:ip-address 1292 | +--ro destination inet:ip-address 1293 | +--ro tunnel-id uint16 1294 | +--ro lsp-id uint16 1295 | +--ro extended-tunnel-id inet:ip-address 1296 | +--ro type identityref 1297 | +--ro oper-status? identityref 1298 | +--ro origin-type? enumeration 1299 | +--ro lsp-resource-status? enumeration 1300 | +--ro lsp-protection-role? enumeration 1301 | +--ro lsp-carry-normal-traffic? empty 1302 | +--ro lsp-record-route 1303 | | +--ro record-route-subobjects* [subobject-index] 1304 | | +--ro subobject-index uint32 1305 | | +--ro (type)? 1306 | | +--:(ipv4-address) 1307 | | | +--ro v4-address? inet:ipv4-address 1308 | | | +--ro v4-prefix-length? uint8 1309 | | | +--ro v4-flags? uint8 1310 | | +--:(ipv6-address) 1311 | | | +--ro v6-address? inet:ipv6-address 1312 | | | +--ro v6-prefix-length? uint8 1313 | | | +--ro v6-flags? uint8 1314 | | +--:(unnumbered-link) 1315 | | | +--ro router-id? inet:ip-address 1316 | | | +--ro interface-id? uint32 1317 | | +--:(label) 1318 | | +--ro value? uint32 1319 | | +--ro flags? uint8 1320 | +--ro te-dev:lsp-timers 1321 | | +--ro te-dev:life-time? uint32 1322 | | +--ro te-dev:time-to-install? uint32 1323 | | +--ro te-dev:time-to-die? uint32 1324 | +--ro te-dev:downstream-info 1325 | | +--ro te-dev:nhop? inet:ip-address 1326 | | +--ro te-dev:outgoing-interface? if:interface-ref 1327 | | +--ro te-dev:neighbor? inet:ip-address 1328 | | +--ro te-dev:label? uint32 1329 | +--ro te-dev:upstream-info 1330 | +--ro te-dev:phop? inet:ip-address 1331 | +--ro te-dev:neighbor? inet:ip-address 1332 | +--ro te-dev:label? uint32 1333 +--rw te-dev:interfaces 1334 +--rw te-dev:config 1335 | +--rw te-dev:thresholds 1336 | +--rw (te-dev:type)? 1337 | +--:(te-dev:equal-steps) 1338 | | +--rw (te-dev:equal-step-type)? 1339 | | +--:(te-dev:up-down-different-step) 1340 | | | +--rw te-dev:up-step? uint8 1341 | | | +--rw te-dev:down-step? uint8 1342 | | +--:(te-dev:up-down-same-step) 1343 | | +--rw te-dev:step? uint8 1344 | +--:(te-dev:unequal-steps) 1345 | +--rw te-dev:up-steps* [value] 1346 | | +--rw te-dev:value uint8 1347 | +--rw te-dev:down-steps* [value] 1348 | +--rw te-dev:value uint8 1349 +--ro te-dev:state 1350 | +--ro te-dev:thresholds 1351 | +--ro (te-dev:type)? 1352 | +--:(te-dev:equal-steps) 1353 | | +--ro (te-dev:equal-step-type)? 1354 | | +--:(te-dev:up-down-different-step) 1355 | | | +--ro te-dev:up-step? uint8 1356 | | | +--ro te-dev:down-step? uint8 1357 | | +--:(te-dev:up-down-same-step) 1358 | | +--ro te-dev:step? uint8 1359 | +--:(te-dev:unequal-steps) 1360 | +--ro te-dev:up-steps* [value] 1361 | | +--ro te-dev:value uint8 1362 | +--ro te-dev:down-steps* [value] 1363 | +--ro te-dev:value uint8 1364 +--rw te-dev:interface* [interface] 1365 +--rw te-dev:interface if:interface-ref 1366 +--rw te-dev:config 1367 | +--rw te-dev:te-metric?te-types:te-metric 1368 | +--rw (te-dev:admin-group-type)? 1369 | | +--:(te-dev:value-admin-groups) 1370 | | | +--rw (te-dev:value-admin-group-type)? 1371 | | | +--:(te-dev:admin-groups) 1372 | | | | +--rw te-dev:admin-group? 1373 te-types:admin-group 1374 | | | +--:(te-dev:extended-admin-groups) 1375 {te-types:extended-admin-groups}? 1376 | | | +--rw te-dev:extended-admin-group? 1377 te-types:extended-admin-group 1378 | | +--:(te-dev:named-admin-groups) 1379 | | +--rw te-dev:named-admin-groups* 1380 [named-admin-group] {te-types:extended-admin-groups, 1381 te-types:named-extended-admin-groups}? 1382 | | +--rw te-dev:named-admin-group -> 1383 ../../../../../te:globals/config/named-admin-groups/name 1384 | +--rw (te-dev:srlg-type)? 1385 | | +--:(te-dev:value-srlgs) 1386 | | | +--rw te-dev:values* [value] 1387 | | | +--rw te-dev:value uint32 1388 | | +--:(te-dev:named-srlgs) 1389 | | +--rw te-dev:named-srlgs* [named-srlg] 1390 {te-types:named-srlg-groups}? 1391 | | +--rw te-dev:named-srlg -> 1392 ../../../../../te:globals/config/named-srlgs/name 1393 | +--rw te-dev:switching-capabilities* 1394 [switching-capability] 1395 | | +--rw te-dev:switching-capability identityref 1396 | | +--rw te-dev:encoding? identityref 1397 | +--rw te-dev:thresholds 1398 | +--rw (te-dev:type)? 1399 | +--:(te-dev:equal-steps) 1400 | | +--rw (te-dev:equal-step-type)? 1401 | | +--:(te-dev:up-down-different-step) 1402 | | | +--rw te-dev:up-step? uint8 1403 | | | +--rw te-dev:down-step? uint8 1404 | | +--:(te-dev:up-down-same-step) 1405 | | +--rw te-dev:step? uint8 1406 | +--:(te-dev:unequal-steps) 1407 | +--rw te-dev:up-steps* [value] 1408 | | +--rw te-dev:value uint8 1409 | +--rw te-dev:down-steps* [value] 1410 | +--rw te-dev:value uint8 1411 +--ro te-dev:state 1412 +--ro te-dev:te-metric?te-types:te-metric 1413 +--ro (te-dev:admin-group-type)? 1414 | +--:(te-dev:value-admin-groups) 1415 | | +--ro (te-dev:value-admin-group-type)? 1416 | | +--:(te-dev:admin-groups) 1417 | | | +--ro te-dev:admin-group? 1418 te-types:admin-group 1419 | | +--:(te-dev:extended-admin-groups) 1420 {te-types:extended-admin-groups}? 1421 | | +--ro te-dev:extended-admin-group? 1422 te-types:extended-admin-group 1423 | +--:(te-dev:named-admin-groups) 1424 | +--ro te-dev:named-admin-groups* 1425 [named-admin-group] {te-types:extended-admin-groups, 1426 te-types:named-extended-admin-groups}? 1427 | +--ro te-dev:named-admin-group -> 1428 ../../../../../te:globals/config/named-admin-groups/name 1429 +--ro (te-dev:srlg-type)? 1430 | +--:(te-dev:value-srlgs) 1431 | | +--ro te-dev:values* [value] 1432 | | +--ro te-dev:value uint32 1433 | +--:(te-dev:named-srlgs) 1434 | +--ro te-dev:named-srlgs* [named-srlg] 1435 {te-types:named-srlg-groups}? 1436 | +--ro te-dev:named-srlg -> 1437 ../../../../../te:globals/config/named-srlgs/name 1438 +--ro te-dev:switching-capabilities* 1439 [switching-capability] 1440 | +--ro te-dev:switching-capability identityref 1441 | +--ro te-dev:encoding? identityref 1442 +--ro te-dev:thresholds 1443 | +--ro (te-dev:type)? 1444 | +--:(te-dev:equal-steps) 1445 | | +--ro (te-dev:equal-step-type)? 1446 | | +--:(te-dev:up-down-different-step) 1447 | | | +--ro te-dev:up-step? uint8 1448 | | | +--ro te-dev:down-step? uint8 1449 | | +--:(te-dev:up-down-same-step) 1450 | | +--ro te-dev:step? uint8 1451 | +--:(te-dev:unequal-steps) 1452 | +--ro te-dev:up-steps* [value] 1453 | | +--ro te-dev:value uint8 1454 | +--ro te-dev:down-steps* [value] 1455 | +--ro te-dev:value uint8 1456 +--ro te-dev:te-advertisements_state 1457 +--ro te-dev:flood-interval? uint32 1458 +--ro te-dev:last-flooded-time? uint32 1459 +--ro te-dev:next-flooded-time? uint32 1460 +--ro te-dev:last-flooded-trigger? enumeration 1461 +--ro te-dev:advertized-level-areas* [level-area] 1462 +--ro te-dev:level-area uint32 1463 rpcs: 1464 +---x globals-rpc 1465 +---x interfaces-rpc 1466 +---x tunnels-rpc 1467 +---w input 1468 | +---w tunnel-info 1469 | +---w (type)? 1470 | +--:(tunnel-p2p) 1471 | | +---w p2p-id? te:tunnel-ref 1472 | +--:(tunnel-p2mp) 1473 | +---w p2mp-id? te:tunnel-p2mp-ref 1474 +--ro output 1475 +--ro result 1476 +--ro result? enumeration 1477 notifications: 1478 +---n globals-notif 1479 +---n tunnels-notif 1480 module: ietf-te-device 1481 rpcs: 1482 +---x interfaces-rpc 1483 notifications: 1484 +---n interfaces-notif 1486 Figure 6: TE generic model configuration and state tree 1488 4. TE Generic and Helper YANG Modules 1490 file "ietf-te-types@2016-10-26.yang" 1491 module ietf-te-types { 1493 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; 1495 /* Replace with IANA when assigned */ 1496 prefix "te-types"; 1498 import ietf-inet-types { 1499 prefix inet; 1500 } 1502 import ietf-yang-types { 1503 prefix "yang"; 1504 } 1506 organization 1507 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1508 Working Group"; 1510 contact 1511 "WG Web: 1512 WG List: 1514 WG Chair: Lou Berger 1515 1517 WG Chair: Vishnu Pavan Beeram 1518 1520 Editor: Tarek Saad 1521 1523 Editor: Rakesh Gandhi 1524 1526 Editor: Vishnu Pavan Beeram 1527 1529 Editor: Himanshu Shah 1530 1532 Editor: Xufeng Liu 1533 1535 Editor: Xia Chen 1536 1538 Editor: Raqib Jones 1539 1541 Editor: Bin Wen 1542 "; 1544 description 1545 "This module contains a collection of generally 1546 useful TE specific YANG data type defintions."; 1548 revision "2016-10-26" { 1549 description "Latest revision of TE basic types"; 1550 reference "RFC3209"; 1551 } 1553 /* 1554 * Identities 1555 */ 1556 identity tunnel-type { 1557 description 1558 "Base identity from which specific tunnel types are 1559 derived."; 1560 } 1562 identity tunnel-p2p { 1563 base tunnel-type; 1564 description 1565 "TE point-to-point tunnel type."; 1566 } 1568 identity tunnel-p2mp { 1569 base tunnel-type; 1570 description 1571 "TE point-to-multipoint tunnel type."; 1572 } 1574 identity tunnel-action-type { 1575 description 1576 "Base identity from which specific tunnel action types 1577 are derived."; 1578 } 1580 identity tunnel-action-resetup { 1581 base tunnel-action-type; 1582 description 1583 "TE tunnel action resetup. Tears the 1584 tunnel's current LSP (if any) and 1585 attempts to re-establish a new LSP"; 1586 } 1588 identity tunnel-action-reoptimize { 1589 base tunnel-action-type; 1590 description 1591 "TE tunnel action reoptimize. 1592 Reoptimizes placement of the tunnel LSP(s)"; 1593 } 1595 identity tunnel-action-switchpath { 1596 base tunnel-action-type; 1597 description 1598 "TE tunnel action reoptimize 1599 Switches the tunnel's LSP to use the specified path"; 1600 } 1602 identity te-action-result { 1603 description 1604 "Base identity from which specific TE action results 1605 are derived."; 1606 } 1608 identity te-action-success { 1609 base te-action-result; 1610 description "TE action successul."; 1611 } 1613 identity te-action-fail { 1614 base te-action-result; 1615 description "TE action failed."; 1616 } 1618 identity tunnel-action-inprogress { 1619 base te-action-result; 1620 description "TE action inprogress."; 1621 } 1623 identity state-type { 1624 description 1625 "Base identity for TE states"; 1626 } 1628 identity state-up { 1629 base state-type; 1630 description 1631 "State up"; 1633 } 1635 identity state-down { 1636 base state-type; 1637 description 1638 "State down"; 1639 } 1641 identity path-invalidation-action-type { 1642 description 1643 "Base identity for TE path invalidation action types"; 1644 } 1646 identity path-invalidation-action-drop-type { 1647 base path-invalidation-action-type; 1648 description 1649 "TE path invalidation action drop"; 1650 } 1652 identity path-invalidation-action-drop-tear { 1653 base path-invalidation-action-type; 1654 description 1655 "TE path invalidation action tear"; 1656 } 1658 identity lsp-prot-type { 1659 description 1660 "Base identity from which LSP protection types are 1661 derived."; 1662 } 1664 identity lsp-prot-unprotected { 1665 base lsp-prot-type; 1666 description 1667 "LSP protection 'Unprotected'"; 1668 reference "RFC4872"; 1669 } 1671 identity lsp-prot-reroute-extra { 1672 base lsp-prot-type; 1673 description 1674 "LSP protection '(Full) Rerouting'"; 1675 reference "RFC4872"; 1676 } 1678 identity lsp-prot-reroute { 1679 base lsp-prot-type; 1680 description 1681 "LSP protection 'Rerouting without Extra-Traffic'"; 1682 reference "RFC4872"; 1683 } 1685 identity lsp-prot-1-for-n { 1686 base lsp-prot-type; 1687 description 1688 "LSP protection '1:N Protection with Extra-Traffic'"; 1689 reference "RFC4872"; 1690 } 1692 identity lsp-prot-unidir-1-to-1 { 1693 base lsp-prot-type; 1694 description 1695 "LSP protection '1+1 Unidirectional Protection'"; 1696 reference "RFC4872"; 1697 } 1699 identity lsp-prot-bidir-1-to-1 { 1700 base lsp-prot-type; 1701 description 1702 "LSP protection '1+1 Bidirectional Protection'"; 1703 reference "RFC4872"; 1704 } 1706 identity switching-capabilities { 1707 description 1708 "Base identity for interface switching capabilities"; 1709 } 1711 identity switching-psc1 { 1712 base switching-capabilities; 1713 description 1714 "Packet-Switch Capable-1 (PSC-1)"; 1715 } 1717 identity switching-evpl { 1718 base switching-capabilities; 1719 description 1720 "Ethernet Virtual Private Line (EVPL)"; 1721 } 1723 identity switching-l2sc { 1724 base switching-capabilities; 1725 description 1726 "Layer-2 Switch Capable (L2SC)"; 1727 } 1728 identity switching-tdm { 1729 base switching-capabilities; 1730 description 1731 "Time-Division-Multiplex Capable (TDM)"; 1732 } 1734 identity switching-otn { 1735 base switching-capabilities; 1736 description 1737 "OTN-TDM capable"; 1738 } 1740 identity switching-dcsc { 1741 base switching-capabilities; 1742 description 1743 "Data Channel Switching Capable (DCSC)"; 1744 } 1746 identity switching-lsc { 1747 base switching-capabilities; 1748 description 1749 "Lambda-Switch Capable (LSC)"; 1750 } 1752 identity switching-fsc { 1753 base switching-capabilities; 1754 description 1755 "Fiber-Switch Capable (FSC)"; 1756 } 1758 identity lsp-encoding-types { 1759 description 1760 "Base identity for encoding types"; 1761 } 1763 identity lsp-encoding-packet { 1764 base lsp-encoding-types; 1765 description 1766 "Packet LSP encoding"; 1767 } 1769 identity lsp-encoding-ethernet { 1770 base lsp-encoding-types; 1771 description 1772 "Ethernet LSP encoding"; 1773 } 1775 identity lsp-encoding-pdh { 1776 base lsp-encoding-types; 1777 description 1778 "ANSI/ETSI LSP encoding"; 1779 } 1781 identity lsp-encoding-sdh { 1782 base lsp-encoding-types; 1783 description 1784 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; 1785 } 1787 identity lsp-encoding-digital-wrapper { 1788 base lsp-encoding-types; 1789 description 1790 "Digital Wrapper LSP encoding"; 1791 } 1793 identity lsp-encoding-lambda { 1794 base lsp-encoding-types; 1795 description 1796 "Lambda (photonic) LSP encoding"; 1797 } 1799 identity lsp-encoding-fiber { 1800 base lsp-encoding-types; 1801 description 1802 "Fiber LSP encoding"; 1803 } 1805 identity lsp-encoding-fiber-channel { 1806 base lsp-encoding-types; 1807 description 1808 "FiberChannel LSP encoding"; 1809 } 1811 identity lsp-encoding-oduk { 1812 base lsp-encoding-types; 1813 description 1814 "G.709 ODUk (Digital Path)LSP encoding"; 1815 } 1817 identity lsp-encoding-optical-channel { 1818 base lsp-encoding-types; 1819 description 1820 "Line (e.g., 8B/10B) LSP encoding"; 1821 } 1823 identity lsp-encoding-line { 1824 base lsp-encoding-types; 1825 description 1826 "Line (e.g., 8B/10B) LSP encoding"; 1827 } 1829 identity path-signaling-type { 1830 description 1831 "Base identity from which specific path signaling 1832 types are derived."; 1833 } 1835 identity path-signaling-rsvpte { 1836 base tunnel-type; 1837 description 1838 "RSVP-TE path signaling type"; 1839 } 1841 identity path-signaling-sr { 1842 base tunnel-type; 1843 description 1844 "Segment-routing path signaling type"; 1845 } 1847 /* TE basic features */ 1848 feature p2mp-te { 1849 description 1850 "Indicates support for P2MP-TE"; 1851 } 1853 feature frr-te { 1854 description 1855 "Indicates support for TE FastReroute (FRR)"; 1856 } 1858 feature extended-admin-groups { 1859 description 1860 "Indicates support for TE link extended admin 1861 groups."; 1862 } 1864 feature named-path-affinities { 1865 description 1866 "Indicates support for named path affinities"; 1867 } 1869 feature named-extended-admin-groups { 1870 description 1871 "Indicates support for named extended admin groups"; 1873 } 1875 feature named-srlg-groups { 1876 description 1877 "Indicates support for named SRLG groups"; 1878 } 1880 feature named-path-constraints { 1881 description 1882 "Indicates support for named path constraints"; 1883 } 1885 grouping explicit-route-subobject { 1886 description 1887 "The explicit route subobject grouping"; 1888 choice type { 1889 description 1890 "The explicit route subobject type"; 1891 case ipv4-address { 1892 description 1893 "IPv4 address explicit route subobject"; 1894 leaf v4-address { 1895 type inet:ipv4-address; 1896 description 1897 "An IPv4 address. This address is 1898 treated as a prefix based on the 1899 prefix length value below. Bits beyond 1900 the prefix are ignored on receipt and 1901 SHOULD be set to zero on transmission."; 1902 } 1903 leaf v4-prefix-length { 1904 type uint8; 1905 description 1906 "Length in bits of the IPv4 prefix"; 1907 } 1908 leaf v4-loose { 1909 type boolean; 1910 description 1911 "Describes whether the object is loose 1912 if set, or otherwise strict"; 1913 } 1914 } 1915 case ipv6-address { 1916 description 1917 "IPv6 address Explicit Route Object"; 1918 leaf v6-address { 1919 type inet:ipv6-address; 1920 description 1921 "An IPv6 address. This address is 1922 treated as a prefix based on the 1923 prefix length value below. Bits 1924 beyond the prefix are ignored on 1925 receipt and SHOULD be set to zero 1926 on transmission."; 1927 } 1928 leaf v6-prefix-length { 1929 type uint8; 1930 description 1931 "Length in bits of the IPv4 prefix"; 1932 } 1933 leaf v6-loose { 1934 type boolean; 1935 description 1936 "Describes whether the object is loose 1937 if set, or otherwise strict"; 1938 } 1939 } 1940 case as-number { 1941 leaf as-number { 1942 type uint16; 1943 description "AS number"; 1944 } 1945 description 1946 "Autonomous System explicit route subobject"; 1947 } 1948 case unnumbered-link { 1949 leaf router-id { 1950 type inet:ip-address; 1951 description 1952 "A router-id address"; 1953 } 1954 leaf interface-id { 1955 type uint32; 1956 description "The interface identifier"; 1957 } 1958 description 1959 "Unnumbered link explicit route subobject"; 1960 reference 1961 "RFC3477: Signalling Unnumbered Links in 1962 RSVP-TE"; 1963 } 1964 case label { 1965 leaf value { 1966 type uint32; 1967 description "the label value"; 1968 } 1969 description 1970 "The Label ERO subobject"; 1971 } 1972 /* AS domain sequence..? */ 1973 } 1974 } 1976 grouping record-route-subobject { 1977 description 1978 "The record route subobject grouping"; 1979 choice type { 1980 description 1981 "The record route subobject type"; 1982 case ipv4-address { 1983 leaf v4-address { 1984 type inet:ipv4-address; 1985 description 1986 "An IPv4 address. This address is 1987 treated as a prefix based on the prefix 1988 length value below. Bits beyond the 1989 prefix are ignored on receipt and 1990 SHOULD be set to zero on transmission."; 1991 } 1992 leaf v4-prefix-length { 1993 type uint8; 1994 description 1995 "Length in bits of the IPv4 prefix"; 1996 } 1997 leaf v4-flags { 1998 type uint8; 1999 description 2000 "IPv4 address sub-object flags"; 2001 reference "RFC3209"; 2002 } 2003 } 2004 case ipv6-address { 2005 leaf v6-address { 2006 type inet:ipv6-address; 2007 description 2008 "An IPv6 address. This address is 2009 treated as a prefix based on the 2010 prefix length value below. Bits 2011 beyond the prefix are ignored on 2012 receipt and SHOULD be set to zero 2013 on transmission."; 2014 } 2015 leaf v6-prefix-length { 2016 type uint8; 2017 description 2018 "Length in bits of the IPv4 prefix"; 2019 } 2020 leaf v6-flags { 2021 type uint8; 2022 description 2023 "IPv6 address sub-object flags"; 2024 reference "RFC3209"; 2025 } 2026 } 2027 case unnumbered-link { 2028 leaf router-id { 2029 type inet:ip-address; 2030 description 2031 "A router-id address"; 2032 } 2033 leaf interface-id { 2034 type uint32; 2035 description "The interface identifier"; 2036 } 2037 description 2038 "Unnumbered link record route subobject"; 2039 reference 2040 "RFC3477: Signalling Unnumbered Links in 2041 RSVP-TE"; 2042 } 2043 case label { 2044 leaf value { 2045 type uint32; 2046 description "the label value"; 2047 } 2048 leaf flags { 2049 type uint8; 2050 description 2051 "Label sub-object flags"; 2052 reference "RFC3209"; 2053 } 2054 description 2055 "The Label ERO subobject"; 2056 } 2057 } 2058 } 2060 identity route-usage-type { 2061 description 2062 "Base identity for route usage"; 2063 } 2064 identity route-include-ero { 2065 base route-usage-type; 2066 description 2067 "Include ERO from route"; 2068 } 2070 identity route-exclude-ero { 2071 base route-usage-type; 2072 description 2073 "Exclude ERO from route"; 2074 } 2076 identity route-exclude-srlg { 2077 base route-usage-type; 2078 description 2079 "Exclude SRLG from route"; 2080 } 2082 identity path-metric-type { 2083 description 2084 "Base identity for path metric type"; 2085 } 2087 identity path-metric-te { 2088 base path-metric-type; 2089 description 2090 "TE path metric"; 2091 } 2093 identity path-metric-igp { 2094 base path-metric-type; 2095 description 2096 "IGP path metric"; 2097 } 2099 identity path-metric-hop { 2100 base path-metric-type; 2101 description 2102 "Hop path metric"; 2103 } 2105 identity path-tiebreaker-type { 2106 description 2107 "Base identity for path tie-breaker type"; 2108 } 2110 identity path-tiebreaker-minfill { 2111 base path-tiebreaker-type; 2112 description 2113 "Min-Fill LSP path placement"; 2114 } 2116 identity path-tiebreaker-maxfill { 2117 base path-tiebreaker-type; 2118 description 2119 "Max-Fill LSP path placement"; 2120 } 2122 identity path-tiebreaker-randoom { 2123 base path-tiebreaker-type; 2124 description 2125 "Random LSP path placement"; 2126 } 2128 identity bidir-provisioning-mode { 2129 description 2130 "Base identity for bidirectional provisioning 2131 mode."; 2132 } 2134 identity bidir-provisioning-single-sided { 2135 base bidir-provisioning-mode; 2136 description 2137 "Single-sided bidirectional provioning mode"; 2138 } 2140 identity bidir-provisioning-double-sided { 2141 base bidir-provisioning-mode; 2142 description 2143 "Double-sided bidirectional provioning mode"; 2144 } 2146 identity bidir-association-type { 2147 description 2148 "Base identity for bidirectional association type"; 2149 } 2151 identity bidir-assoc-corouted { 2152 base bidir-association-type; 2153 description 2154 "Co-routed bidirectional association type"; 2155 } 2157 identity bidir-assoc-non-corouted { 2158 base bidir-association-type; 2159 description 2160 "Non co-routed bidirectional association type"; 2161 } 2163 identity resource-affinities-type { 2164 description 2165 "Base identity for resource affinities"; 2166 } 2168 identity resource-aff-include-all { 2169 base resource-affinities-type; 2170 description 2171 "The set of attribute filters associated with a 2172 tunnel all of which must be present for a link 2173 to be acceptable"; 2174 } 2176 identity resource-aff-include-any { 2177 base resource-affinities-type; 2178 description 2179 "The set of attribute filters associated with a 2180 tunnel any of which must be present for a link 2181 to be acceptable"; 2182 } 2184 identity resource-aff-exclude-any { 2185 base resource-affinities-type; 2186 description 2187 "The set of attribute filters associated with a 2188 tunnel any of which renders a link unacceptable"; 2189 } 2191 identity te-optimization-criterion { 2192 description 2193 "Base identity for TE optimization criterion."; 2194 reference 2195 "RFC3272: Overview and Principles of Internet Traffic 2196 Engineering."; 2197 } 2199 identity not-optimized { 2200 base te-optimization-criterion; 2201 description "Optimization is not applied."; 2202 } 2204 identity cost { 2205 base te-optimization-criterion; 2206 description "Optimized on cost."; 2207 } 2208 identity delay { 2209 base te-optimization-criterion; 2210 description "Optimized on delay."; 2211 } 2213 /* 2214 * Typedefs 2215 */ 2216 typedef performance-metric-normality { 2217 type enumeration { 2218 enum "unknown" { 2219 value 0; 2220 description 2221 "Unknown."; 2222 } 2223 enum "normal" { 2224 value 1; 2225 description 2226 "Normal."; 2227 } 2228 enum "abnormal" { 2229 value 2; 2230 description 2231 "Abnormal. The anomalous bit is set."; 2232 } 2233 } 2234 description 2235 "Indicates whether a performance metric is normal, abnormal, or 2236 unknown."; 2237 reference 2238 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 2239 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 2240 RFC7823: Performance-Based Path Selection for Explicitly 2241 Routed Label Switched Paths (LSPs) Using TE Metric 2242 Extensions"; 2243 } 2245 typedef te-admin-status { 2246 type enumeration { 2247 enum up { 2248 description 2249 "Enabled."; 2250 } 2251 enum down { 2252 description 2253 "Disabled."; 2254 } 2255 enum testing { 2256 description 2257 "In some test mode."; 2258 } 2259 enum preparing-maintenance { 2260 description 2261 "Resource is disabled in the control plane to prepare for 2262 graceful shutdown for maintenance purposes."; 2263 reference 2264 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2265 Traffic Engineering Networks"; 2266 } 2267 enum maintenance { 2268 description 2269 "Resource is disabled in the data plane for maintenance 2270 purposes."; 2271 } 2272 } 2273 description 2274 "Defines a type representing the administrative status of 2275 a TE resource."; 2276 } 2278 typedef te-global-id { 2279 type uint32; 2280 description 2281 "An identifier to uniquely identify an operator, which can be 2282 either a provider or a client. 2283 The definition of this type is taken from RFC6370 and RFC5003. 2284 This attribute type is used solely to provide a globally 2285 unique context for TE topologies."; 2286 } 2288 typedef te-link-access-type { 2289 type enumeration { 2290 enum point-to-point { 2291 description 2292 "The link is point-to-point."; 2293 } 2294 enum multi-access { 2295 description 2296 "The link is multi-access, including broacast and NBMA."; 2297 } 2298 } 2299 description 2300 "Defines a type representing the access type of a TE link."; 2301 reference 2302 "RFC3630: Traffic Engineering (TE) Extensions to OSPF 2303 Version 2."; 2305 } 2307 typedef te-node-id { 2308 type yang:dotted-quad; 2309 description 2310 "An identifier for a node in a topology. 2311 The identifier is represented as 32-bit unsigned integer in 2312 the dotted-quad notation. 2313 This attribute is mapped to Router ID in 2314 RFC3630, RFC5329, RFC5305, and RFC6119."; 2315 } 2317 typedef te-oper-status { 2318 type enumeration { 2319 enum up { 2320 description 2321 "Operational up."; 2322 } 2323 enum down { 2324 description 2325 "Operational down."; 2326 } 2327 enum testing { 2328 description 2329 "In some test mode."; 2330 } 2331 enum unknown { 2332 description 2333 "Status cannot be determined for some reason."; 2334 } 2335 enum preparing-maintenance { 2336 description 2337 "Resource is disabled in the control plane to prepare for 2338 graceful shutdown for maintenance purposes."; 2339 reference 2340 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2341 Traffic Engineering Networks"; 2342 } 2343 enum maintenance { 2344 description 2345 "Resource is disabled in the data plane for maintenance 2346 purposes."; 2347 } 2348 } 2349 description 2350 "Defines a type representing the operational status of 2351 a TE resource."; 2352 } 2353 typedef te-recovery-status { 2354 type enumeration { 2355 enum normal { 2356 description 2357 "Both the recovery and working spans are fully 2358 allocated and active, data traffic is being 2359 transported over (or selected from) the working 2360 span, and no trigger events are reported."; 2361 } 2362 enum recovery-started { 2363 description 2364 "The recovery action has been started, but not completed."; 2365 } 2366 enum recovery-succeeded { 2367 description 2368 "The recovery action has succeeded. The working span has 2369 reported a failure/degrade condition and the user traffic 2370 is being transported (or selected) on the recovery span."; 2371 } 2372 enum recovery-failed { 2373 description 2374 "The recovery action has failed."; 2375 } 2376 enum reversion-started { 2377 description 2378 "The reversion has started."; 2379 } 2380 enum reversion-failed { 2381 description 2382 "The reversion has failed."; 2383 } 2384 enum recovery-unavailable { 2385 description 2386 "The recovery is unavailable -- either as a result of an 2387 operator Lockout command or a failure condition detected 2388 on the recovery span."; 2389 } 2390 enum recovery-admin { 2391 description 2392 "The operator has issued a command switching the user 2393 traffic to the recovery span."; 2394 } 2395 enum wait-to-restore { 2396 description 2397 "The recovery domain is recovering from a failuer/degrade 2398 condition on the working span that is being controlled by 2399 the Wait-to-Restore (WTR) timer."; 2400 } 2402 } 2403 description 2404 "Defines the status of a recovery action."; 2405 reference 2406 "RFC4427: Recovery (Protection and Restoration) Terminology 2407 for Generalized Multi-Protocol Label Switching (GMPLS). 2408 RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection"; 2409 } 2411 typedef te-template-name { 2412 type string { 2413 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2414 } 2415 description 2416 "A type for the name of a TE node template or TE link 2417 template."; 2418 } 2420 typedef te-topology-event-type { 2421 type enumeration { 2422 enum "add" { 2423 value 0; 2424 description 2425 "A TE node or te-link has been added."; 2426 } 2427 enum "remove" { 2428 value 1; 2429 description 2430 "A TE node or te-link has been removed."; 2431 } 2432 enum "update" { 2433 value 2; 2434 description 2435 "A TE node or te-link has been updated."; 2436 } 2437 } 2438 description "TE Event type for notifications"; 2439 } // te-topology-event-type 2441 typedef te-topology-id { 2442 type string { 2443 pattern 2444 '([a-zA-Z0-9\-_.]+:)*' 2445 + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2446 } 2447 description 2448 "An identifier for a topology. 2449 It is optional to have one or more prefixes at the begining, 2450 separated by colons. The prefixes can be the network-types, 2451 defined in ietf-network.yang, to help user to understand the 2452 topology better before further inquiry."; 2453 } 2455 typedef te-tp-id { 2456 type union { 2457 type uint32; // Unnumbered 2458 type inet:ip-address; // IPv4 or IPv6 address 2459 } 2460 description 2461 "An identifier for a TE link endpoint on a node. 2462 This attribute is mapped to local or remote link identifier in 2463 RFC3630 and RFC5305."; 2464 } 2466 typedef generalized-label { 2467 type binary; 2468 description 2469 "Generalized label. Nodes sending and receiving the 2470 Generalized Label know what kinds of link they are 2471 using, the Generalized Label does not identify its 2472 type. Instead, nodes are expected to know from the 2473 context what type of label to expect."; 2474 reference "rfc3471: section 3.2"; 2475 } 2477 typedef admin-group { 2478 type binary { 2479 length 4; 2480 } 2481 description 2482 "Administrative group/Resource class/Color."; 2483 } 2485 typedef extended-admin-group { 2486 type binary; 2487 description 2488 "Extended administrative group/Resource class/Color."; 2489 } 2491 typedef admin-groups { 2492 type union { 2493 type admin-group; 2494 type extended-admin-group; 2495 } 2496 description "TE administrative group derived type"; 2497 } 2498 typedef srlg { 2499 type uint32; 2500 description "SRLG type"; 2501 } 2503 identity path-computation-srlg-type { 2504 description 2505 "Base identity for SRLG path computation"; 2506 } 2508 identity srlg-ignore { 2509 base path-computation-srlg-type; 2510 description 2511 "Ignores SRLGs in path computation"; 2512 } 2514 identity srlg-strict { 2515 base path-computation-srlg-type; 2516 description 2517 "Include strict SRLG check in path computation"; 2518 } 2520 identity srlg-preferred { 2521 base path-computation-srlg-type; 2522 description 2523 "Include preferred SRLG check in path computation"; 2524 } 2526 identity srlg-weighted { 2527 base path-computation-srlg-type; 2528 description 2529 "Include weighted SRLG check in path computation"; 2530 } 2532 typedef te-metric { 2533 type uint32; 2534 description 2535 "TE link metric"; 2536 } 2538 /** 2539 * TE tunnel generic groupings 2540 **/ 2542 /* Tunnel path selection parameters */ 2543 grouping path-constraints { 2544 description 2545 "Tunnel path selection properties grouping"; 2547 container path-constraints { 2548 description 2549 "Tunnel path selection properties container"; 2550 leaf topology-id { 2551 type te-types:te-topology-id; 2552 description 2553 "The tunnel path is computed using the specific 2554 topology identified by this identifier"; 2555 } 2556 leaf cost-limit { 2557 type uint32 { 2558 range "1..4294967295"; 2559 } 2560 description 2561 "The tunnel path cost limit."; 2562 } 2563 leaf hop-limit { 2564 type uint8 { 2565 range "1..255"; 2566 } 2567 description 2568 "The tunnel path hop limit."; 2569 } 2570 leaf metric-type { 2571 type identityref { 2572 base path-metric-type; 2573 } 2574 default path-metric-te; 2575 description 2576 "The tunnel path metric type."; 2577 } 2578 leaf tiebreaker-type { 2579 type identityref { 2580 base path-tiebreaker-type; 2581 } 2582 default path-tiebreaker-maxfill; 2583 description 2584 "The tunnel path computation tie breakers."; 2585 } 2586 leaf ignore-overload { 2587 type boolean; 2588 description 2589 "The tunnel path can traverse overloaded node."; 2590 } 2591 uses path-affinities; 2592 uses path-srlgs; 2593 } 2594 } 2595 grouping path-affinities { 2596 description 2597 "Path affinities grouping"; 2598 container path-affinities { 2599 if-feature named-path-affinities; 2600 description 2601 "Path affinities container"; 2602 choice style { 2603 description 2604 "Path affinities representation style"; 2605 case values { 2606 leaf value { 2607 type uint32 { 2608 range "0..4294967295"; 2609 } 2610 description 2611 "Affinity value"; 2612 } 2613 leaf mask { 2614 type uint32 { 2615 range "0..4294967295"; 2616 } 2617 description 2618 "Affinity mask"; 2619 } 2620 } 2621 case named { 2622 list constraints { 2623 key "usage"; 2624 leaf usage { 2625 type identityref { 2626 base resource-affinities-type; 2627 } 2628 description "Affinities usage"; 2629 } 2630 container constraint { 2631 description 2632 "Container for named affinities"; 2633 list affinity-names { 2634 key "name"; 2635 leaf name { 2636 type string; 2637 description 2638 "Affinity name"; 2639 } 2640 description 2641 "List of named affinities"; 2642 } 2644 } 2645 description 2646 "List of named affinity constraints"; 2647 } 2648 } 2649 } 2650 } 2651 } 2653 grouping path-srlgs { 2654 description 2655 "Path SRLG properties grouping"; 2656 container path-srlgs { 2657 description 2658 "Path SRLG properties container"; 2659 choice style { 2660 description 2661 "Type of SRLG representation"; 2662 case values { 2663 leaf usage { 2664 type identityref { 2665 base route-exclude-srlg; 2666 } 2667 description "SRLG usage"; 2668 } 2669 leaf-list values { 2670 type te-types:srlg; 2671 description "SRLG value"; 2672 } 2673 } 2674 case named { 2675 list constraints { 2676 key "usage"; 2677 leaf usage { 2678 type identityref { 2679 base route-exclude-srlg; 2680 } 2681 description "SRLG usage"; 2682 } 2683 container constraint { 2684 description 2685 "Container for named SRLG list"; 2686 list srlg-names { 2687 key "name"; 2688 leaf name { 2689 type string; 2690 description 2691 "The SRLG name"; 2693 } 2694 description 2695 "List named SRLGs"; 2696 } 2697 } 2698 description 2699 "List of named SRLG constraints"; 2700 } 2701 } 2702 } 2703 } 2704 } 2706 grouping bidir-assoc-properties { 2707 description 2708 "TE tunnel associated bidirectional properties 2709 grouping"; 2710 container bidirectional { 2711 description 2712 "TE tunnel associated bidirectional attributes."; 2713 container association { 2714 description 2715 "Tunnel bidirectional association properties"; 2716 leaf id { 2717 type uint16; 2718 description 2719 "The TE tunnel association identifier."; 2720 } 2721 leaf source { 2722 type inet:ip-address; 2723 description 2724 "The TE tunnel association source."; 2725 } 2726 leaf global-source { 2727 type inet:ip-address; 2728 description 2729 "The TE tunnel association global 2730 source."; 2731 } 2732 leaf type { 2733 type identityref { 2734 base bidir-association-type; 2735 } 2736 default bidir-assoc-non-corouted; 2737 description 2738 "The TE tunnel association type."; 2739 } 2740 leaf provisioing { 2741 type identityref { 2742 base bidir-provisioning-mode; 2743 } 2744 description 2745 "Describes the provisioning model of the 2746 associated bidirectional LSP"; 2747 reference 2748 "draft-ietf-teas-mpls-tp-rsvpte-ext- 2749 associated-lsp, section-3.2"; 2750 } 2751 } 2752 } 2753 } 2754 /*** End of TE tunnel groupings ***/ 2756 /** 2757 * TE interface generic groupings 2758 **/ 2759 } 2760 2762 Figure 7: TE basic types YANG module 2764 file "ietf-te@2016-10-26.yang" 2765 module ietf-te { 2766 yang-version 1.1; 2768 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 2770 /* Replace with IANA when assigned */ 2771 prefix "te"; 2773 /* Import TE generic types */ 2774 import ietf-te-types { 2775 prefix te-types; 2776 } 2778 import ietf-inet-types { 2779 prefix inet; 2780 } 2782 organization 2783 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2784 Working Group"; 2786 contact 2787 "WG Web: 2788 WG List: 2789 WG Chair: Lou Berger 2790 2792 WG Chair: Vishnu Pavan Beeram 2793 2795 Editor: Tarek Saad 2796 2798 Editor: Rakesh Gandhi 2799 2801 Editor: Vishnu Pavan Beeram 2802 2804 Editor: Himanshu Shah 2805 2807 Editor: Xufeng Liu 2808 2810 Editor: Xia Chen 2811 2813 Editor: Raqib Jones 2814 2816 Editor: Bin Wen 2817 "; 2819 description 2820 "YANG data module for TE configuration, 2821 state, RPC and notifications."; 2823 revision "2016-10-26" { 2824 description "Latest update to TE generic YANG module."; 2825 reference "TBD"; 2826 } 2828 typedef tunnel-ref { 2829 type leafref { 2830 path "/te:te/te:tunnels/te:tunnel/te:name"; 2831 } 2832 description 2833 "This type is used by data models that need to reference 2834 configured TE tunnel."; 2835 } 2836 typedef tunnel-p2mp-ref { 2837 type leafref { 2838 path "/te:te/te:tunnels/te:tunnel-p2mp/te:name"; 2839 } 2840 description 2841 "This type is used by data models that need to reference 2842 configured P2MP TE tunnel."; 2843 } 2845 /** 2846 * TE tunnel generic groupings 2847 */ 2849 grouping p2p-secondary-path-params { 2850 description 2851 "tunnel path properties."; 2852 container config { 2853 description 2854 "Configuration parameters relating to 2855 tunnel properties"; 2856 uses path-properties_config; 2857 } 2858 container state { 2859 config false; 2860 description 2861 "State information associated with tunnel 2862 properties"; 2863 uses path-properties_config; 2864 uses p2p-secondary-path-params_state; 2865 } 2866 } 2868 grouping p2p-primary-path-params { 2869 description 2870 "TE tunnel primary path properties grouping"; 2871 container config { 2872 description 2873 "Configuration parameters relating to 2874 tunnel properties"; 2875 uses path-properties_config; 2876 } 2877 container state { 2878 config false; 2879 description 2880 "State information associated with tunnel 2881 properties"; 2882 uses path-properties_config; 2883 uses p2p-primary-path-params_state; 2885 } 2886 } 2888 grouping p2p-primary-path-params_state { 2889 description "TE primary path state parameters"; 2890 list lsp { 2891 key 2892 "source destination tunnel-id lsp-id "+ 2893 "extended-tunnel-id type"; 2894 description "List of LSPs associated with the tunnel."; 2896 leaf source { 2897 type leafref { 2898 path "../../../../../../lsps-state/lsp/source"; 2899 } 2900 description 2901 "Tunnel sender address extracted from 2902 SENDER_TEMPLATE object"; 2903 reference "RFC3209"; 2904 } 2905 leaf destination { 2906 type leafref { 2907 path "../../../../../../lsps-state/lsp/destination"; 2908 } 2909 description 2910 "Tunnel endpoint address extracted from 2911 SESSION object"; 2912 reference "RFC3209"; 2913 } 2914 leaf tunnel-id { 2915 type leafref { 2916 path "../../../../../../lsps-state/lsp/tunnel-id"; 2917 } 2918 description 2919 "Tunnel identifier used in the SESSION 2920 that remains constant over the life 2921 of the tunnel."; 2922 reference "RFC3209"; 2923 } 2924 leaf lsp-id { 2925 type leafref { 2926 path "../../../../../../lsps-state/lsp/lsp-id"; 2927 } 2928 description 2929 "Identifier used in the SENDER_TEMPLATE 2930 and the FILTER_SPEC that can be changed 2931 to allow a sender to share resources with 2932 itself."; 2934 reference "RFC3209"; 2935 } 2936 leaf extended-tunnel-id { 2937 type leafref { 2938 path "../../../../../../lsps-state/lsp/extended-tunnel-id"; 2939 } 2940 description 2941 "Extended Tunnel ID of the LSP."; 2942 reference "RFC3209"; 2943 } 2944 leaf type { 2945 type leafref { 2946 path "../../../../../../lsps-state/lsp/type"; 2947 } 2948 description "LSP type P2P or P2MP"; 2949 } 2950 } 2951 } 2953 grouping p2p-secondary-path-params_state { 2954 description "TE secondary path state parameters"; 2955 list lsp { 2956 key "source"; 2957 description "List of LSPs associated with the tunnel."; 2959 leaf source { 2960 type leafref { 2961 path "../../../../../../../lsps-state/lsp/source"; 2962 } 2963 description 2964 "Tunnel sender address extracted from 2965 SENDER_TEMPLATE object"; 2966 reference "RFC3209"; 2967 } 2968 leaf destination { 2969 type leafref { 2970 path "../../../../../../../lsps-state/lsp/destination"; 2971 } 2972 description 2973 "Tunnel endpoint address extracted from 2974 SESSION object"; 2975 reference "RFC3209"; 2976 } 2977 leaf tunnel-id { 2978 type leafref { 2979 path "../../../../../../../lsps-state/lsp/tunnel-id"; 2980 } 2981 description 2982 "Tunnel identifier used in the SESSION 2983 that remains constant over the life 2984 of the tunnel."; 2985 reference "RFC3209"; 2986 } 2987 leaf lsp-id { 2988 type leafref { 2989 path "../../../../../../../lsps-state/lsp/lsp-id"; 2990 } 2991 description 2992 "Identifier used in the SENDER_TEMPLATE 2993 and the FILTER_SPEC that can be changed 2994 to allow a sender to share resources with 2995 itself."; 2996 reference "RFC3209"; 2997 } 2998 leaf extended-tunnel-id { 2999 type leafref { 3000 path "../../../../../../../lsps-state/lsp" + 3001 "/extended-tunnel-id"; 3002 } 3003 description 3004 "Extended Tunnel ID of the LSP."; 3005 reference "RFC3209"; 3006 } 3007 leaf type { 3008 type leafref { 3009 path "../../../../../../../lsps-state/lsp/type"; 3010 } 3011 description "LSP type P2P or P2MP"; 3012 } 3013 } 3014 } 3016 grouping path-properties_config { 3017 description 3018 "TE tunnel path properties configuration grouping"; 3019 leaf name { 3020 type string; 3021 description "TE path name"; 3022 } 3023 leaf preference { 3024 type uint8 { 3025 range "1..255"; 3026 } 3027 description 3028 "Specifies a preference for this path. The lower the 3029 number higher the preference"; 3031 } 3032 leaf compute-only { 3033 type empty; 3034 description 3035 "When set, the path is computed and updated whenever 3036 the topology is updated. No resources are committed 3037 or reserved in the network."; 3038 } 3039 leaf named-path-constraint { 3040 if-feature te-types:named-path-constraints; 3041 type string; 3042 description 3043 "Reference to a globally defined named path 3044 constraint set"; 3045 } 3046 uses te-types:path-constraints; 3047 choice type { 3048 description 3049 "Describes the path type"; 3050 case dynamic { 3051 leaf dynamic { 3052 type empty; 3053 description 3054 "A CSPF dynamically computed path"; 3055 } 3056 } 3057 case explicit { 3058 leaf explicit-path-name { 3059 type string; 3060 description 3061 "The explicit-path name"; 3062 } 3064 list explicit-route-objects { 3065 key "index"; 3066 description 3067 "List of explicit route objects"; 3068 leaf index { 3069 type uint8 { 3070 range "0..255"; 3071 } 3072 description 3073 "Index of this explicit route object"; 3074 } 3075 leaf explicit-route-usage { 3076 type identityref { 3077 base te-types:route-usage-type; 3078 } 3079 description "An explicit-route hop action."; 3080 } 3081 uses te-types:explicit-route-subobject; 3082 } 3083 } 3084 } 3085 leaf no-cspf { 3086 type empty; 3087 description 3088 "Indicates no CSPF is to be attempted on this 3089 path."; 3090 } 3091 leaf lockdown { 3092 type empty; 3093 description 3094 "Indicates no reoptimization to be attempted for 3095 this path."; 3096 } 3097 } 3099 /* TE tunnel configuration data */ 3100 grouping tunnel-p2mp-params_config { 3101 description 3102 "Configuration parameters relating to TE tunnel"; 3103 leaf name { 3104 type string; 3105 description "TE tunnel name."; 3106 } 3107 leaf type { 3108 type identityref { 3109 base te-types:tunnel-type; 3110 } 3111 description "TE tunnel type."; 3112 } 3113 leaf identifier { 3114 type uint16; 3115 description 3116 "TE tunnel Identifier."; 3117 } 3118 leaf description { 3119 type string; 3120 description 3121 "Textual description for this TE tunnel"; 3122 } 3123 leaf lsp-priority-setup { 3124 type uint8 { 3125 range "0..7"; 3126 } 3127 description 3128 "TE LSP setup priority"; 3129 } 3130 leaf lsp-priority-hold { 3131 type uint8 { 3132 range "0..7"; 3133 } 3134 description 3135 "TE LSP hold priority"; 3136 } 3137 leaf lsp-protection-type { 3138 type identityref { 3139 base te-types:lsp-prot-type; 3140 } 3141 description "LSP protection type."; 3142 } 3143 leaf admin-status { 3144 type identityref { 3145 base te-types:state-type; 3146 } 3147 default te-types:state-up; 3148 description "TE tunnel administrative state."; 3149 } 3150 } 3152 grouping tunnel-params_config { 3153 description 3154 "Configuration parameters relating to TE tunnel"; 3155 leaf name { 3156 type string; 3157 description "TE tunnel name."; 3158 } 3159 leaf type { 3160 type identityref { 3161 base te-types:tunnel-type; 3162 } 3163 description "TE tunnel type."; 3164 } 3165 leaf identifier { 3166 type uint16; 3167 description 3168 "TE tunnel Identifier."; 3169 } 3170 leaf description { 3171 type string; 3172 description 3173 "Textual description for this TE tunnel"; 3174 } 3175 leaf lsp-priority-setup { 3176 type uint8 { 3177 range "0..7"; 3178 } 3179 description 3180 "TE LSP setup priority"; 3181 } 3182 leaf lsp-priority-hold { 3183 type uint8 { 3184 range "0..7"; 3185 } 3186 description 3187 "TE LSP hold priority"; 3188 } 3189 leaf lsp-protection-type { 3190 type identityref { 3191 base te-types:lsp-prot-type; 3192 } 3193 description "LSP protection type."; 3194 } 3195 leaf admin-status { 3196 type identityref { 3197 base te-types:state-type; 3198 } 3199 default te-types:state-up; 3200 description "TE tunnel administrative state."; 3201 } 3202 leaf source { 3203 type inet:ip-address; 3204 description 3205 "TE tunnel source address."; 3206 } 3207 leaf destination { 3208 /* Add when check */ 3209 type inet:ip-address; 3210 description 3211 "P2P tunnel destination address"; 3212 } 3213 leaf src-tp-id { 3214 type binary; 3215 description 3216 "TE tunnel source termination point identifier."; 3217 } 3218 leaf dst-tp-id { 3219 /* Add when check */ 3220 type binary; 3221 description 3222 "TE tunnel destination termination point identifier."; 3224 } 3225 container hierarchical-link-id { 3226 description 3227 "Identifies a hierarchical link (in server layer) 3228 that this tunnel is associated with."; 3229 leaf local-te-node-id { 3230 type te-types:te-node-id; 3231 description 3232 "Local TE node identifier"; 3233 } 3234 leaf local-te-link-tp-id { 3235 type te-types:te-tp-id; 3236 description 3237 "Local TE link termination point identifier"; 3238 } 3239 leaf remote-te-node-id { 3240 type te-types:te-node-id; 3241 description 3242 "Remote TE node identifier"; 3243 } 3244 leaf te-topology-id { 3245 type te-types:te-topology-id; 3246 description 3247 "It is presumed that a datastore will contain many 3248 topologies. To distinguish between topologies it is 3249 vital to have UNIQUE topology identifiers."; 3250 } 3251 } 3252 uses te-types:bidir-assoc-properties; 3253 } 3255 grouping tunnel-params_state { 3256 description 3257 "State parameters relating to TE tunnel"; 3258 leaf oper-status { 3259 type identityref { 3260 base te-types:state-type; 3261 } 3262 description "TE tunnel operational state."; 3263 } 3264 } 3266 /* TE tunnel configuration/state grouping */ 3267 grouping tunnel-p2mp-properties { 3268 description 3269 "Top level grouping for P2MP tunnel properties."; 3270 container config { 3271 description 3272 "Configuration parameters relating to 3273 tunnel P2MP properties"; 3274 uses tunnel-p2mp-params_config; 3275 } 3276 container state { 3277 config false; 3278 description 3279 "State information associated with tunnel 3280 properties"; 3281 uses tunnel-p2mp-params_config; 3282 } 3283 } 3285 grouping tunnel-p2p-properties { 3286 description 3287 "Top level grouping for tunnel properties."; 3288 container config { 3289 description 3290 "Configuration parameters relating to 3291 tunnel properties"; 3292 uses tunnel-params_config; 3293 } 3294 container state { 3295 config false; 3296 description 3297 "State information associated with tunnel 3298 properties"; 3299 uses tunnel-params_config; 3300 uses tunnel-params_state; 3301 } 3302 list primary-paths { 3303 key "name"; 3304 description 3305 "List of primary paths for this tunnel."; 3306 leaf name { 3307 type leafref { 3308 path "../config/name"; 3309 } 3310 description "TE path name"; 3311 } 3312 leaf preference { 3313 type leafref { 3314 path "../config/preference"; 3315 } 3316 description 3317 "Specifies a preference for this path. The lower the 3318 number higher the preference"; 3319 } 3320 uses p2p-primary-path-params; 3321 list secondary-paths { 3322 key "name"; 3323 description 3324 "List of secondary paths for this tunnel."; 3325 leaf name { 3326 type leafref { 3327 path "../config/name"; 3328 } 3329 description "TE path name"; 3330 } 3331 leaf preference { 3332 type leafref { 3333 path "../config/preference"; 3334 } 3335 description 3336 "Specifies a preference for this path. The lower the 3337 number higher the preference"; 3338 } 3339 uses p2p-secondary-path-params; 3340 } 3341 } 3342 } 3344 grouping tunnel-actions { 3345 description "Tunnel actions"; 3346 action tunnel-action { 3347 description "Tunnel action"; 3348 input { 3349 leaf action-type { 3350 type identityref { 3351 base te-types:tunnel-action-type; 3352 } 3353 description "Tunnel action type"; 3354 } 3355 } 3356 output { 3357 leaf action-result { 3358 type identityref { 3359 base te-types:te-action-result; 3360 } 3361 description "The result of the RPC operation"; 3362 } 3363 } 3364 } 3365 } 3366 /*** End of TE tunnel groupings ***/ 3367 /** 3368 * LSP related generic groupings 3369 */ 3370 grouping lsp-record-route-information_state { 3371 description "recorded route information grouping"; 3372 container lsp-record-route { 3373 description "RSVP recorded route object information"; 3374 list record-route-subobjects { 3375 when "../../origin-type != 'ingress'" { 3376 description "Applicable on non-ingress LSPs only"; 3377 } 3378 key "subobject-index"; 3379 description ""; 3380 leaf subobject-index { 3381 type uint32; 3382 description "RRO subobject index"; 3383 } 3384 uses te-types:record-route-subobject; 3385 } 3386 } 3387 } 3389 grouping lsp-properties_state { 3390 description 3391 "State parameters relating to LSP"; 3392 leaf oper-status { 3393 type identityref { 3394 base te-types:state-type; 3395 } 3396 description "LSP operational state."; 3397 } 3399 leaf origin-type { 3400 type enumeration { 3401 enum ingress { 3402 description 3403 "Origin ingress"; 3404 } 3405 enum egress { 3406 description 3407 "Origin egress"; 3408 } 3409 enum transit { 3410 description 3411 "transit"; 3412 } 3413 } 3414 description 3415 "Origin type of LSP relative to the location 3416 of the local switch in the path."; 3417 } 3419 leaf lsp-resource-status { 3420 type enumeration { 3421 enum primary { 3422 description 3423 "A primary LSP is a fully established LSP for 3424 which the resource allocation has been committed 3425 at the data plane"; 3426 } 3427 enum secondary { 3428 description 3429 "A secondary LSP is an LSP that has been provisioned 3430 in the control plane only; e.g. resource allocation 3431 has not been committed at the data plane"; 3432 } 3433 } 3434 description "LSP resource allocation type"; 3435 reference "rfc4872, section 4.2.1"; 3436 } 3438 leaf lsp-protection-role { 3439 type enumeration { 3440 enum working { 3441 description 3442 "A working LSP must be a primary LSP whilst a protecting 3443 LSP can be either a primary or a secondary LSP. Also, 3444 known as protected LSPs when working LSPs are associated 3445 with protecting LSPs."; 3446 } 3447 enum protecting { 3448 description 3449 "A secondary LSP is an LSP that has been provisioned 3450 in the control plane only; e.g. resource allocation 3451 has not been committed at the data plane"; 3452 } 3453 } 3454 description "LSP role type"; 3455 reference "rfc4872, section 4.2.1"; 3456 } 3458 leaf lsp-carry-normal-traffic { 3459 type empty; 3460 description 3461 "This bit is set when a protecting LSP is carrying the normal 3462 traffic after protection switching"; 3464 } 3465 } 3466 /*** End of TE LSP groupings ***/ 3468 /** 3469 * TE global generic groupings 3470 */ 3472 /* Global named admin-groups configuration data */ 3473 grouping named-admin-groups_config { 3474 description 3475 "Global named administrative groups configuration 3476 grouping"; 3477 list named-admin-groups { 3478 if-feature te-types:extended-admin-groups; 3479 if-feature te-types:named-extended-admin-groups; 3480 key "name"; 3481 description 3482 "List of named TE admin-groups"; 3483 leaf name { 3484 type string; 3485 description 3486 "A string name that uniquely identifies a TE 3487 interface named admin-group"; 3488 } 3489 leaf bit-position { 3490 type uint32; 3491 description 3492 "Bit position representing the administrative group"; 3493 } 3494 } 3495 } 3497 /* Global named admin-srlgs configuration data */ 3498 grouping named-srlgs_config { 3499 description 3500 "Global named SRLGs configuration 3501 grouping"; 3502 list named-srlgs { 3503 if-feature te-types:named-srlg-groups; 3504 key "name"; 3505 description 3506 "A list of named SRLG groups"; 3507 leaf name { 3508 type string; 3509 description 3510 "A string name that uniquely identifies a TE 3511 interface named srlg"; 3513 } 3514 leaf group { 3515 type te-types:srlg; 3516 description "An SRLG value"; 3517 } 3518 } 3519 } 3521 /* Global named explicit-paths configuration data */ 3522 grouping named-explicit-paths_config { 3523 description 3524 "Global explicit path configuration 3525 grouping"; 3526 list named-explicit-paths { 3527 key "name"; 3528 description 3529 "A list of explicit paths"; 3530 leaf name { 3531 type string; 3532 description 3533 "A string name that uniquely identifies an 3534 explicit path"; 3535 } 3536 list explicit-route-objects { 3537 key "index"; 3538 description 3539 "List of explicit route objects"; 3540 leaf index { 3541 type uint8 { 3542 range "0..255"; 3543 } 3544 description 3545 "Index of this explicit route object"; 3546 } 3547 leaf explicit-route-usage { 3548 type identityref { 3549 base te-types:route-usage-type; 3550 } 3551 description "An explicit-route hop action."; 3552 } 3553 uses te-types:explicit-route-subobject; 3554 } 3555 } 3556 } 3558 /* Global named paths constraints configuration data */ 3559 grouping named-path-constraints_config { 3560 description 3561 "Global named path constraints configuration 3562 grouping"; 3563 list named-constraints { 3564 if-feature te-types:named-path-constraints; 3565 key "name"; 3566 description 3567 "A list of named path constraints"; 3568 leaf name { 3569 type string; 3570 description 3571 "A string name that uniquely identifies a 3572 path constraint set"; 3573 } 3574 uses te-types:path-constraints; 3575 } 3576 } 3578 /* TE globals container data */ 3579 grouping globals-grouping { 3580 description 3581 "Globals TE system-wide configuration data grouping"; 3582 container globals { 3583 description 3584 "Globals TE system-wide configuration data container"; 3585 container config { 3586 description 3587 "Configuration parameters for system-wide 3588 parameters"; 3589 uses named-admin-groups_config; 3590 uses named-srlgs_config; 3591 uses named-explicit-paths_config; 3592 uses named-path-constraints_config; 3593 } 3594 container state { 3595 config false; 3596 description 3597 "State for system-wide parameters"; 3598 uses named-admin-groups_config; 3599 uses named-srlgs_config; 3600 uses named-explicit-paths_config; 3601 uses named-path-constraints_config; 3602 } 3603 } 3604 } 3606 /* TE tunnels container data */ 3607 grouping tunnels-grouping { 3608 description 3609 "Tunnels TE configuration data grouping"; 3610 container tunnels { 3611 description 3612 "Tunnels TE configuration data container"; 3614 list tunnel { 3615 key "name"; 3616 unique "identifier"; 3617 description "P2P TE tunnels list."; 3618 leaf name { 3619 type leafref { 3620 path "../config/name"; 3621 } 3622 description "TE tunnel name."; 3623 } 3624 leaf identifier { 3625 type leafref { 3626 path "../config/identifier"; 3627 } 3628 description 3629 "TE tunnel Identifier."; 3630 } 3631 uses tunnel-p2p-properties; 3632 uses tunnel-actions; 3633 } 3634 list tunnel-p2mp { 3635 key "name"; 3636 unique "identifier"; 3637 description "P2MP TE tunnels list."; 3638 leaf name { 3639 type leafref { 3640 path "../config/name"; 3641 } 3642 description "TE tunnel name."; 3643 } 3644 leaf identifier { 3645 type leafref { 3646 path "../config/identifier"; 3647 } 3648 description 3649 "TE tunnel Identifier."; 3650 } 3651 uses tunnel-p2mp-properties; 3652 } 3653 } 3654 } 3656 /* TE LSPs ephemeral state container data */ 3657 grouping lsps-state-grouping { 3658 description 3659 "LSPs state operational data grouping"; 3660 container lsps-state { 3661 config "false"; 3662 description "LSPs operational state data."; 3664 list lsp { 3665 key 3666 "source destination tunnel-id lsp-id "+ 3667 "extended-tunnel-id type"; 3668 description 3669 "List of LSPs associated with the tunnel."; 3670 leaf source { 3671 type inet:ip-address; 3672 description 3673 "Tunnel sender address extracted from 3674 SENDER_TEMPLATE object"; 3675 reference "RFC3209"; 3676 } 3677 leaf destination { 3678 type inet:ip-address; 3679 description 3680 "Tunnel endpoint address extracted from 3681 SESSION object"; 3682 reference "RFC3209"; 3683 } 3684 leaf tunnel-id { 3685 type uint16; 3686 description 3687 "Tunnel identifier used in the SESSION 3688 that remains constant over the life 3689 of the tunnel."; 3690 reference "RFC3209"; 3691 } 3692 leaf lsp-id { 3693 type uint16; 3694 description 3695 "Identifier used in the SENDER_TEMPLATE 3696 and the FILTER_SPEC that can be changed 3697 to allow a sender to share resources with 3698 itself."; 3699 reference "RFC3209"; 3700 } 3701 leaf extended-tunnel-id { 3702 type inet:ip-address; 3703 description 3704 "Extended Tunnel ID of the LSP."; 3706 reference "RFC3209"; 3707 } 3708 leaf type { 3709 type identityref { 3710 base te-types:tunnel-type; 3711 } 3712 description "The LSP type P2P or P2MP"; 3713 } 3714 uses lsp-properties_state; 3715 uses lsp-record-route-information_state; 3716 } 3717 } 3718 } 3719 /*** End of TE global groupings ***/ 3721 /** 3722 * TE configurations container 3723 */ 3724 container te { 3725 presence "Enable TE feature."; 3726 description 3727 "TE global container."; 3729 /* TE Global Configuration Data */ 3730 uses globals-grouping; 3732 /* TE Tunnel Configuration Data */ 3733 uses tunnels-grouping; 3735 /* TE LSPs State Data */ 3736 uses lsps-state-grouping; 3737 } 3739 /* TE Global RPCs/execution Data */ 3740 rpc globals-rpc { 3741 description 3742 "Execution data for TE global."; 3743 } 3745 /* TE interfaces RPCs/execution Data */ 3746 rpc interfaces-rpc { 3747 description 3748 "Execution data for TE interfaces."; 3749 } 3751 /* TE Tunnel RPCs/execution Data */ 3752 rpc tunnels-rpc { 3753 description "TE tunnels RPC nodes"; 3754 input { 3755 container tunnel-info { 3756 description "Tunnel Identification"; 3757 choice type { 3758 description "Tunnel information type"; 3759 case tunnel-p2p { 3760 leaf p2p-id { 3761 type te:tunnel-ref; 3762 description "P2P TE tunnel"; 3763 } 3764 } 3765 case tunnel-p2mp { 3766 leaf p2mp-id { 3767 type te:tunnel-p2mp-ref; 3768 description "P2MP TE tunnel"; 3769 } 3770 } 3771 } 3772 } 3773 } 3774 output { 3775 container result { 3776 description 3777 "The container result of the RPC operation"; 3778 leaf result { 3779 type enumeration { 3780 enum success { 3781 description "Origin ingress"; 3782 } 3783 enum in-progress { 3784 description "Origin egress"; 3785 } 3786 enum fail { 3787 description "transit"; 3788 } 3789 } 3790 description "The result of the RPC operation"; 3791 } 3792 } 3793 } 3794 } 3796 /* TE Global Notification Data */ 3797 notification globals-notif { 3798 description 3799 "Notification messages for Global TE."; 3800 } 3801 /* TE Tunnel Notification Data */ 3802 notification tunnels-notif { 3803 description 3804 "Notification messages for TE tunnels."; 3805 } 3806 } 3807 3809 Figure 8: TE generic YANG module 3811 file "ietf-te-device@2016-10-26.yang" 3812 module ietf-te-device { 3814 namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; 3816 /* Replace with IANA when assigned */ 3817 prefix "te-dev"; 3819 /* Import TE generic types */ 3820 import ietf-te { 3821 prefix te; 3822 } 3824 /* Import TE generic types */ 3825 import ietf-te-types { 3826 prefix te-types; 3827 } 3829 import ietf-interfaces { 3830 prefix if; 3831 } 3833 import ietf-inet-types { 3834 prefix inet; 3835 } 3837 organization 3838 "IETF Traffic Engineering Architecture and Signaling (TEAS) 3839 Working Group"; 3841 contact 3842 "WG Web: 3843 WG List: 3845 WG Chair: Lou Berger 3846 3848 WG Chair: Vishnu Pavan Beeram 3849 3851 Editor: Tarek Saad 3852 3854 Editor: Rakesh Gandhi 3855 3857 Editor: Vishnu Pavan Beeram 3858 3860 Editor: Himanshu Shah 3861 3863 Editor: Xufeng Liu 3864 3866 Editor: Xia Chen 3867 3869 Editor: Raqib Jones 3870 3872 Editor: Bin Wen 3873 "; 3875 description 3876 "YANG data module for TE device configurations, 3877 state, RPC and notifications."; 3879 revision "2016-10-26" { 3880 description "Latest update to TE device YANG module."; 3881 reference "TBD"; 3882 } 3884 /** 3885 * TE LSP device state grouping 3886 */ 3887 grouping lsps-device_state { 3888 description "TE LSP device state grouping"; 3889 container lsp-timers { 3890 when "../te:origin-type = 'ingress'" { 3891 description "Applicable to ingress LSPs only"; 3892 } 3893 description "Ingress LSP timers"; 3894 leaf life-time { 3895 type uint32; 3896 units seconds; 3897 description 3898 "lsp life time"; 3899 } 3901 leaf time-to-install { 3902 type uint32; 3903 units seconds; 3904 description 3905 "lsp installation delay time"; 3906 } 3908 leaf time-to-die { 3909 type uint32; 3910 units seconds; 3911 description 3912 "lsp expire delay time"; 3913 } 3914 } 3916 container downstream-info { 3917 when "../te:origin-type != 'egress'" { 3918 description "Applicable to ingress LSPs only"; 3919 } 3920 description 3921 "downstream information"; 3923 leaf nhop { 3924 type inet:ip-address; 3925 description 3926 "downstream nexthop."; 3927 } 3929 leaf outgoing-interface { 3930 type if:interface-ref; 3931 description 3932 "downstream interface."; 3933 } 3935 leaf neighbor { 3936 type inet:ip-address; 3937 description 3938 "downstream neighbor."; 3939 } 3941 leaf label { 3942 type uint32; 3943 description 3944 "downstream label."; 3945 } 3946 } 3948 container upstream-info { 3949 when "../te:origin-type != 'ingress'" { 3950 description "Applicable to non-ingress LSPs only"; 3951 } 3952 description 3953 "upstream information"; 3955 leaf phop { 3956 type inet:ip-address; 3957 description 3958 "upstream nexthop or previous-hop."; 3959 } 3961 leaf neighbor { 3962 type inet:ip-address; 3963 description 3964 "upstream neighbor."; 3965 } 3967 leaf label { 3968 type uint32; 3969 description 3970 "upstream label."; 3971 } 3972 } 3973 } 3975 /** 3976 * Device general groupings. 3977 */ 3978 grouping tunnel-device_config { 3979 description "Device TE tunnel configs"; 3980 leaf path-invalidation-action { 3981 type identityref { 3982 base te-types:path-invalidation-action-type; 3983 } 3984 description "Tunnel path invalidtion action"; 3985 } 3986 } 3988 grouping lsp-device-timers_config { 3989 description "Device TE LSP timers configs"; 3990 leaf lsp-install-interval { 3991 type uint32; 3992 units seconds; 3993 description 3994 "lsp installation delay time"; 3995 } 3996 leaf lsp-cleanup-interval { 3997 type uint32; 3998 units seconds; 3999 description 4000 "lsp cleanup delay time"; 4001 } 4002 leaf lsp-invalidation-interval { 4003 type uint32; 4004 units seconds; 4005 description 4006 "lsp path invalidation before taking action delay time"; 4007 } 4008 } 4010 /** 4011 * TE global device generic groupings 4012 */ 4014 /* Global device specific configuration data */ 4015 grouping globals-device_config { 4016 description "Device globals configs"; 4017 uses lsp-device-timers_config; 4018 } 4020 /* Global device specific state data */ 4021 grouping globals-device_state { 4022 description 4023 "Top level grouping for global state data."; 4024 leaf tunnels-counter { 4025 type uint32; 4026 description "Tunnels count"; 4027 } 4028 leaf lsps-counter { 4029 type uint32; 4030 description "Tunnels count"; 4031 } 4032 } 4034 /* TE interface container data */ 4035 grouping interfaces-grouping { 4036 description 4037 "Interface TE configuration data grouping"; 4038 container interfaces { 4039 description 4040 "Configuration data model for TE interfaces."; 4041 uses te-all-attributes; 4042 list interface { 4043 key "interface"; 4044 description "TE interfaces."; 4045 leaf interface { 4046 type if:interface-ref; 4047 description 4048 "TE interface name."; 4049 } 4050 /* TE interface parameters */ 4051 uses te-attributes; 4052 } 4053 } 4054 } 4056 /** 4057 * TE interface device generic groupings 4058 */ 4059 grouping te-admin-groups_config { 4060 description 4061 "TE interface affinities grouping"; 4062 choice admin-group-type { 4063 description 4064 "TE interface administrative groups 4065 representation type"; 4066 case value-admin-groups { 4067 choice value-admin-group-type { 4068 description "choice of admin-groups"; 4069 case admin-groups { 4070 description 4071 "Administrative group/Resource 4072 class/Color."; 4073 leaf admin-group { 4074 type te-types:admin-group; 4075 description 4076 "TE interface administrative group"; 4077 } 4078 } 4079 case extended-admin-groups { 4080 if-feature te-types:extended-admin-groups; 4081 description 4082 "Extended administrative group/Resource 4083 class/Color."; 4084 leaf extended-admin-group { 4085 type te-types:extended-admin-group; 4086 description 4087 "TE interface extended administrativei 4088 group"; 4089 } 4090 } 4091 } 4092 } 4093 case named-admin-groups { 4094 list named-admin-groups { 4095 if-feature te-types:extended-admin-groups; 4096 if-feature te-types:named-extended-admin-groups; 4097 key named-admin-group; 4098 description 4099 "A list of named admin-group entries"; 4100 leaf named-admin-group { 4101 type leafref { 4102 path "../../../../../te:globals/te:config/" + 4103 "te:named-admin-groups/te:name"; 4104 } 4105 description "A named admin-group entry"; 4106 } 4107 } 4108 } 4109 } 4110 } 4112 /* TE interface SRLGs */ 4113 grouping te-srlgs_config { 4114 description "TE interface SRLG grouping"; 4115 choice srlg-type { 4116 description "Choice of SRLG configuration"; 4117 case value-srlgs { 4118 list values { 4119 key "value"; 4120 description "List of SRLG values that 4121 this link is part of."; 4122 leaf value { 4123 type uint32 { 4124 range "0..4294967295"; 4125 } 4126 description 4127 "Value of the SRLG"; 4128 } 4129 } 4130 } 4131 case named-srlgs { 4132 list named-srlgs { 4133 if-feature te-types:named-srlg-groups; 4134 key named-srlg; 4135 description 4136 "A list of named SRLG entries"; 4137 leaf named-srlg { 4138 type leafref { 4139 path "../../../../../te:globals/te:config/" + 4140 "te:named-srlgs/te:name"; 4141 } 4142 description 4143 "A named SRLG entry"; 4144 } 4145 } 4146 } 4147 } 4148 } 4150 /* TE interface flooding parameters */ 4151 grouping te-flooding-parameters_config { 4152 description "Interface TE flooding properties."; 4153 container thresholds { 4154 description "Flooding threshold values in percentages."; 4155 choice type { 4156 description 4157 "Describes the flooding threshold step method"; 4158 case equal-steps { 4159 choice equal-step-type { 4160 description 4161 "Describes whether up and down equal step 4162 size are same or different"; 4163 case up-down-different-step { 4164 leaf up-step { 4165 type uint8 { 4166 range "0..100"; 4167 } 4168 description 4169 "Set single percentage threshold 4170 for increasing resource 4171 allocation"; 4172 } 4173 leaf down-step { 4174 type uint8 { 4175 range "0..100"; 4176 } 4177 description 4178 "Set single percentage threshold 4179 for decreasing resource 4180 allocation"; 4181 } 4182 } 4183 case up-down-same-step { 4184 leaf step { 4185 type uint8 { 4186 range "0..100"; 4187 } 4188 description 4189 "Set single percentage threshold 4190 for increasing and decreasing 4191 resource allocation"; 4192 } 4193 } 4194 } 4195 } 4196 case unequal-steps { 4197 list up-steps { 4198 key "value"; 4199 description 4200 "Set nultuple percentage thresholds for 4201 increasing resource allocation"; 4202 leaf value { 4203 type uint8 { 4204 range "0..100"; 4205 } 4206 description 4207 "Percentage value"; 4208 } 4209 } 4210 list down-steps { 4211 key "value"; 4212 description 4213 "Set nultuple percentage thresholds for 4214 decreasing resource allocation"; 4215 leaf value { 4216 type uint8 { 4217 range "0..100"; 4218 } 4219 description 4220 "Percentage value"; 4221 } 4222 } 4223 } 4224 } 4225 } 4226 } 4228 /* TE interface metric */ 4229 grouping te-metric_config { 4230 description "Interface TE metric grouping"; 4231 leaf te-metric { 4232 type te-types:te-metric; 4233 description "Interface TE metric."; 4234 } 4235 } 4237 /* TE interface switching capabilities */ 4238 grouping te-switching-cap_config { 4239 description 4240 "TE interface switching capabilities"; 4241 list switching-capabilities { 4242 key "switching-capability"; 4243 description 4244 "List of interface capabilities for this interface"; 4245 leaf switching-capability { 4246 type identityref { 4247 base te-types:switching-capabilities; 4248 } 4249 description 4250 "Switching Capability for this interface"; 4251 } 4252 leaf encoding { 4253 type identityref { 4254 base te-types:lsp-encoding-types; 4255 } 4256 description 4257 "Encoding supported by this interface"; 4258 } 4259 } 4260 } 4262 grouping te-advertisements_state { 4263 description 4264 "TE interface advertisements state grouping"; 4265 container te-advertisements_state { 4266 description 4267 "TE interface advertisements state container"; 4268 leaf flood-interval { 4269 type uint32; 4270 description 4271 "The periodic flooding interval"; 4272 } 4273 leaf last-flooded-time { 4274 type uint32; 4275 units seconds; 4276 description 4277 "Time elapsed since last flooding in seconds"; 4278 } 4279 leaf next-flooded-time { 4280 type uint32; 4281 units seconds; 4282 description 4283 "Time remained for next flooding in seconds"; 4284 } 4285 leaf last-flooded-trigger { 4286 type enumeration { 4287 enum link-up { 4288 description "Link-up flooding trigger"; 4289 } 4290 enum link-down { 4291 description "Link-up flooding trigger"; 4292 } 4293 enum threshold-up { 4294 description 4295 "Bandwidth reservation up threshold"; 4296 } 4297 enum threshold-down { 4298 description 4299 "Bandwidth reservation down threshold"; 4300 } 4301 enum bandwidth-change { 4302 description "Banwidth capacity change"; 4303 } 4304 enum user-initiated { 4305 description "Initiated by user"; 4306 } 4307 enum srlg-change { 4308 description "SRLG property change"; 4309 } 4310 enum periodic-timer { 4311 description "Periodic timer expired"; 4312 } 4313 } 4314 description "Trigger for the last flood"; 4315 } 4316 list advertized-level-areas { 4317 key level-area; 4318 description 4319 "List of areas the TE interface is advertised 4320 in"; 4321 leaf level-area { 4322 type uint32; 4323 description 4324 "The IGP area or level where the TE 4325 interface state is advertised in"; 4326 } 4327 } 4329 } 4330 } 4332 /* TE interface attributes grouping */ 4333 grouping te-attributes { 4334 description "TE attributes configuration grouping"; 4335 container config { 4336 description 4337 "Configuration parameters for interface TE 4338 attributes"; 4339 uses te-metric_config; 4340 uses te-admin-groups_config; 4341 uses te-srlgs_config; 4342 uses te-switching-cap_config; 4343 uses te-flooding-parameters_config; 4344 } 4345 container state { 4346 config false; 4347 description 4348 "State parameters for interface TE metric"; 4349 uses te-metric_config; 4350 uses te-admin-groups_config; 4351 uses te-srlgs_config; 4352 uses te-switching-cap_config; 4353 uses te-flooding-parameters_config; 4354 uses te-advertisements_state; 4355 } 4356 } 4358 grouping te-all-attributes { 4359 description 4360 "TE attributes configuration grouping for all 4361 interfaces"; 4362 container config { 4363 description 4364 "Configuration parameters for all interface TE 4365 attributes"; 4366 uses te-flooding-parameters_config; 4367 } 4368 container state { 4369 config false; 4370 description 4371 "State parameters for all interface TE metric"; 4372 uses te-flooding-parameters_config; 4373 } 4374 } 4375 /*** End of TE interfaces device groupings ***/ 4376 /** 4377 * TE device augmentations 4378 */ 4379 augment "/te:te" { 4380 description "TE global container."; 4381 /* TE Interface Configuration Data */ 4382 uses interfaces-grouping; 4383 } 4385 /* TE globals device augmentation */ 4386 augment "/te:te/te:globals/te:config" { 4387 description 4388 "Global TE device specific configuration parameters"; 4389 uses globals-device_config; 4390 } 4391 augment "/te:te/te:globals/te:state" { 4392 description 4393 "Global TE device specific state parameters"; 4394 uses globals-device_config; 4395 uses globals-device_state; 4396 } 4398 /* TE tunnels device configuration augmentation */ 4399 augment "/te:te/te:tunnels/te:tunnel/te:config" { 4400 description 4401 "Tunnel device dependent augmentation"; 4402 uses lsp-device-timers_config; 4403 } 4404 augment "/te:te/te:tunnels/te:tunnel/te:state" { 4405 description 4406 "Tunnel device dependent augmentation"; 4407 uses lsp-device-timers_config; 4408 } 4410 /* TE LSPs device state augmentation */ 4411 augment "/te:te/te:lsps-state/te:lsp" { 4412 description 4413 "LSP device dependent augmentation"; 4414 uses lsps-device_state; 4415 } 4417 /* TE interfaces RPCs/execution Data */ 4418 rpc interfaces-rpc { 4419 description 4420 "Execution data for TE interfaces."; 4421 } 4423 /* TE Interfaces Notification Data */ 4424 notification interfaces-notif { 4425 description 4426 "Notification messages for TE interfaces."; 4427 } 4428 } 4429 4431 Figure 9: TE MPLS specific types YANG module 4433 file "ietf-te-mpls@2016-10-26.yang" 4434 module ietf-te-mpls { 4436 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls"; 4438 /* Replace with IANA when assigned */ 4439 prefix "te-mpls"; 4441 /* Import TE generic types */ 4442 import ietf-te { 4443 prefix te; 4444 } 4446 /* Import MPLS TE specific types */ 4447 import ietf-te-mpls-types { 4448 prefix te-mpls-type; 4449 } 4451 organization 4452 "IETF Traffic Engineering Architecture and Signaling (TEAS) 4453 Working Group"; 4455 contact 4456 "WG Web: 4457 WG List: 4459 WG Chair: Lou Berger 4460 4462 WG Chair: Vishnu Pavan Beeram 4463 4465 Editor: Tarek Saad 4466 4468 Editor: Rakesh Gandhi 4469 4471 Editor: Vishnu Pavan Beeram 4472 4474 Editor: Himanshu Shah 4475 4477 Editor: Xufeng Liu 4478 4480 Editor: Xia Chen 4481 4483 Editor: Raqib Jones 4484 4486 Editor: Bin Wen 4487 "; 4489 description 4490 "YANG data module for MPLS TE configurations, 4491 state, RPC and notifications."; 4493 revision "2016-10-26" { 4494 description "Latest update to MPLS TE YANG module."; 4495 reference "TBD"; 4496 } 4498 /* MPLS TE tunnel properties*/ 4499 grouping tunnel-mpls-properties_config { 4500 description "MPLS TE tunnel properties"; 4501 uses te-mpls-type:tunnel-routing-properties; 4502 uses te-mpls-type:tunnel-forwarding-properties; 4503 } 4505 /*** End of MPLS TE tunnel configuration/state */ 4507 /** 4508 * MPLS TE augmentations 4509 */ 4511 /* MPLS TE tunnel augmentations */ 4512 augment "/te:te/te:tunnels/te:tunnel/te:config" { 4513 description "MPLS TE tunnel config augmentations"; 4514 uses tunnel-mpls-properties_config; 4515 } 4516 augment "/te:te/te:tunnels/te:tunnel/te:state" { 4517 description "MPLS TE tunnel state augmentations"; 4518 uses tunnel-mpls-properties_config; 4520 } 4522 /* MPLS TE LSPs augmentations */ 4523 } 4524 4526 Figure 10: TE MPLS YANG module 4528 file "ietf-te-mpls-types@2016-10-26.yang" 4529 module ietf-te-mpls-types { 4531 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls-types"; 4533 /* Replace with IANA when assigned */ 4534 prefix "te-mpls-types"; 4536 import ietf-inet-types { 4537 prefix inet; 4538 } 4540 import ietf-mpls { 4541 prefix mpls; 4542 } 4544 organization 4545 "IETF TEAS Working Group"; 4547 contact "Fill me"; 4549 description 4550 "This module contains a collection of generally 4551 useful TE specific YANG data type defintions."; 4553 revision "2016-10-26" { 4554 description "Latest revision of TE MPLS types"; 4555 reference "RFC3209"; 4556 } 4558 identity backup-protection-type { 4559 description 4560 "Base identity for backup protection type"; 4561 } 4563 identity backup-protection-link { 4564 base backup-protection-type; 4565 description 4566 "backup provides link protection only"; 4567 } 4568 identity backup-protection-node-link { 4569 base backup-protection-type; 4570 description 4571 "backup offers node (preferred) or link protection"; 4572 } 4574 identity bc-model-type { 4575 description 4576 "Base identity for Diffserv-TE bandwidth constraint 4577 model type"; 4578 } 4580 identity bc-model-rdm { 4581 base bc-model-type; 4582 description 4583 "Russian Doll bandwidth constraint model type."; 4584 } 4586 identity bc-model-mam { 4587 base bc-model-type; 4588 description 4589 "Maximum Allocation bandwidth constraint 4590 model type."; 4591 } 4593 identity bc-model-mar { 4594 base bc-model-type; 4595 description 4596 "Maximum Allocation with Reservation 4597 bandwidth constraint model type."; 4598 } 4600 grouping bandwidth-constraint-values { 4601 description 4602 "Packet bandwidth contraints values"; 4603 choice value-type { 4604 description 4605 "Value representation"; 4606 case percentages { 4607 container perc-values { 4608 uses bandwidth-mpls-constraints; 4609 description 4610 "Percentage values"; 4611 } 4612 } 4613 case absolutes { 4614 container abs-values { 4615 uses bandwidth-mpls-constraints; 4616 description 4617 "Absolute values"; 4618 } 4619 } 4620 } 4621 } 4623 grouping bandwidth-mpls-reservable { 4624 description 4625 "Packet reservable bandwidth"; 4626 choice bandwidth-value { 4627 description "Reservable bandwidth configuraiton choice"; 4628 case absolute { 4629 leaf absolute-value { 4630 type uint32; 4631 description "Absolute value of the bandwidth"; 4632 } 4633 } 4634 case precentage { 4635 leaf percent-value { 4636 type uint32 { 4637 range "0..4294967295"; 4638 } 4639 description "Percentage reservable bandwidth"; 4640 } 4641 description 4642 "The maximum reservable bandwidth on the 4643 interface"; 4644 } 4645 } 4646 choice bc-model-type { 4647 description 4648 "Reservable bandwidth percentage capacity 4649 values."; 4650 case bc-model-rdm { 4651 container bc-model-rdm { 4652 description 4653 "Russian Doll Model Bandwidth Constraints."; 4654 uses bandwidth-mpls-constraints; 4655 } 4656 } 4657 case bc-model-mam { 4658 container bc-model-mam { 4659 uses bandwidth-mpls-constraints; 4660 description 4661 "Maximum Allocation Model Bandwidth 4662 Constraints."; 4663 } 4665 } 4666 case bc-model-mar { 4667 container bc-model-mar { 4668 uses bandwidth-mpls-constraints; 4669 description 4670 "Maximum Allocation with Reservation Model 4671 Bandwidth Constraints."; 4672 } 4673 } 4674 } 4675 } 4677 typedef bfd-type { 4678 type enumeration { 4679 enum classical { 4680 description "BFD classical session type."; 4681 } 4682 enum seamless { 4683 description "BFD seamless session type."; 4684 } 4685 } 4686 default "classical"; 4687 description 4688 "Type of BFD session"; 4689 } 4691 typedef bfd-encap-mode-type { 4692 type enumeration { 4693 enum gal { 4694 description 4695 "BFD with GAL mode"; 4696 } 4697 enum ip { 4698 description 4699 "BFD with IP mode"; 4700 } 4701 } 4702 default ip; 4703 description 4704 "Possible BFD transport modes when running over TE 4705 LSPs."; 4706 } 4708 grouping bandwidth-mpls-constraints { 4709 description "Bandwidth constraints."; 4710 container bandwidth-mpls-constraints { 4711 description 4712 "Holds the bandwidth contraints properties"; 4714 leaf maximum-reservable { 4715 type uint32 { 4716 range "0..4294967295"; 4717 } 4718 description 4719 "The maximum reservable bandwidth on the 4720 interface"; 4721 } 4722 leaf-list bc-value { 4723 type uint32 { 4724 range "0..4294967295"; 4725 } 4726 max-elements 8; 4727 description 4728 "The bandwidth contraint type"; 4729 } 4730 } 4731 } 4733 grouping tunnel-forwarding-properties { 4734 description "Properties for using tunnel in forwarding."; 4735 container forwarding { 4736 description 4737 "Tunnel forwarding properties container"; 4738 leaf binding-label { 4739 type mpls:mpls-label; 4740 description "MPLS tunnel binding label"; 4741 } 4742 leaf load-share { 4743 type uint32 { 4744 range "1..4294967295"; 4745 } 4746 description "ECMP tunnel forwarding 4747 load-share factor."; 4748 } 4749 choice policy-type { 4750 description 4751 "Tunnel policy type"; 4752 container class { 4753 description 4754 "Tunnel forwarding per class properties"; 4755 leaf class { 4756 type uint8 { 4757 range "1..7"; 4758 } 4759 description 4760 "The class associated with this tunnel"; 4761 } 4763 } 4764 container group { 4765 description 4766 "Tunnel frowarding per group properties"; 4767 leaf-list classes { 4768 type uint8 { 4769 range "1..7"; 4770 } 4771 description 4772 "The forwarding class"; 4773 } 4774 } 4775 } 4776 } 4777 } 4779 grouping tunnel-routing-properties { 4780 description 4781 "TE tunnel routing properties"; 4782 choice routing-choice { 4783 description 4784 "Announces the tunnel to IGP as either 4785 autoroute or forwarding adjacency."; 4786 case autoroute { 4787 container autoroute-announce { 4788 presence "Enable autoroute announce."; 4789 description 4790 "Announce the TE tunnel as autoroute to 4791 IGP for use as IGP shortcut."; 4792 leaf-list routing-afs { 4793 type inet:ip-version; 4794 description 4795 "Address families"; 4796 } 4797 choice metric-type { 4798 description 4799 "Type of metric to use when announcing 4800 the tunnel as shortcut"; 4801 leaf metric { 4802 type uint32 { 4803 range "1..2147483647"; 4804 } 4805 description 4806 "Describes the metric to use when 4807 announcing the tunnel as shortcut"; 4808 } 4809 leaf relative-metric { 4810 type int32 { 4811 range "-10..10"; 4812 } 4813 description 4814 "Relative TE metric to use when 4815 announcing the tunnel as shortcut"; 4816 } 4817 leaf absolute-metric { 4818 type uint32 { 4819 range "1..2147483647"; 4820 } 4821 description 4822 "Absolute TE metric to use when 4823 announcing the tunnel as shortcut"; 4824 } 4825 } 4826 } 4827 } 4828 case forwarding-adjacency { 4829 container forwarding-adjacency { 4830 presence "Enable forwarding adjacency 4831 on the tunnel."; 4832 description 4833 "Announce the TE tunnel 4834 as forwarding adjacency."; 4835 leaf holdtime { 4836 type uint32 { 4837 range "0..4294967295"; 4838 } 4839 description 4840 "Holdtime in seconds after 4841 tunnel becomes UP."; 4842 } 4843 leaf-list routing-afs { 4844 type inet:ip-version; 4845 description 4846 "Address families"; 4847 } 4848 } 4849 } 4850 } 4851 } 4852 } 4853 4855 Figure 11: TE MPLS types YANG module 4857 file "ietf-te-sr-mpls@2016-10-26.yang" 4858 module ietf-te-sr-mpls { 4859 namespace "urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls"; 4861 /* Replace with IANA when assigned */ 4862 prefix "te-sr-mpls"; 4864 /* Import TE generic types */ 4865 import ietf-te { 4866 prefix te; 4867 } 4869 /* Import TE generic types */ 4870 import ietf-te-types { 4871 prefix te-types; 4872 } 4874 organization 4875 "IETF Traffic Engineering Architecture and Signaling (TEAS) 4876 Working Group"; 4878 contact 4879 "WG Web: 4880 WG List: 4882 WG Chair: Lou Berger 4883 4885 WG Chair: Vishnu Pavan Beeram 4886 4888 Editor: Tarek Saad 4889 4891 Editor: Rakesh Gandhi 4892 4894 Editor: Vishnu Pavan Beeram 4895 4897 Editor: Himanshu Shah 4898 4900 Editor: Xufeng Liu 4901 4903 Editor: Xia Chen 4904 4906 Editor: Raqib Jones 4907 4909 Editor: Bin Wen 4910 "; 4912 description 4913 "YANG data module for MPLS TE configurations, 4914 state, RPC and notifications."; 4916 revision "2016-10-26" { 4917 description "Latest update to MPLS TE YANG module."; 4918 reference "TBD"; 4919 } 4921 identity sr-adjacency-protection-type { 4922 description 4923 "The Adj-SID base protection types"; 4924 } 4926 identity sr-adjacency-protection-type-protected { 4927 base sr-adjacency-protection-type; 4928 description 4929 "The Adj-SID is eligible for protection (e.g.: using 4930 IPFRR or MPLS-FRR)"; 4931 } 4933 identity sr-adjacency-protection-type-unprotected { 4934 base sr-adjacency-protection-type; 4935 description 4936 "The Adj-SID is not eligible for protection (e.g.: using 4937 IPFRR or MPLS-FRR)"; 4938 } 4940 /* MPLS SR-TE tunnel properties*/ 4941 grouping tunnel-sr-mpls-properties_config { 4942 description "MPLS TE SR tunnel properties"; 4943 leaf path-signaling-type { 4944 type identityref { 4945 base te-types:path-signaling-type; 4946 } 4947 description "TE tunnel path signaling type"; 4948 } 4949 } 4951 grouping named-sr-path-constraints_config { 4952 description "foo"; 4953 leaf adjacency-protection { 4954 type identityref { 4955 base sr-adjacency-protection-type; 4956 } 4957 description "foo"; 4958 } 4960 } 4962 /*** End of MPLS SR-TE tunnel configuration/state */ 4964 /** 4965 * MPLS TE augmentations 4966 */ 4968 /* MPLS TE global augmentations */ 4969 augment "/te:te/te:globals/te:config/te:named-constraints" { 4970 description 4971 "Augmentations for MPLS SR-TE config named constraints"; 4972 uses named-sr-path-constraints_config; 4973 } 4975 augment "/te:te/te:globals/te:state/te:named-constraints" { 4976 description 4977 "Augmentations for MPLS SR-TE state named constraints"; 4978 uses named-sr-path-constraints_config; 4979 } 4981 /* MPLS TE tunnel augmentations */ 4982 augment "/te:te/te:tunnels/te:tunnel/te:primary-paths" { 4983 description 4984 "Augmentations for MPLS SR-TE tunnel primary paths"; 4985 uses tunnel-sr-mpls-properties_config; 4986 } 4987 augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/" + 4988 "te:secondary-paths" { 4989 description 4990 "Augmentations for MPLS SR-TE tunnel secondary paths"; 4991 uses tunnel-sr-mpls-properties_config; 4992 } 4994 /* MPLS TE LSPs augmentations */ 4995 } 4996 4998 Figure 12: SR TE MPLS YANG module 5000 5. IANA Considerations 5002 This document registers the following URIs in the IETF XML registry 5003 [RFC3688]. Following the format in [RFC3688], the following 5004 registration is requested to be made. 5006 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 5007 is an XML namespace. 5009 URI: urn:ietf:params:xml:ns:yang:ietf-te-device XML: N/A, the 5010 requested URI is an XML namespace. 5012 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls XML: N/A, the requested 5013 URI is an XML namespace. 5015 URI: urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls XML: N/A, the 5016 requested URI is an XML namespace. 5018 URI: urn:ietf:params:xml:ns:yang:ietf-te-types XML: N/A, the 5019 requested URI is an XML namespace. 5021 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls-types XML: N/A, the 5022 requested URI is an XML namespace. 5024 This document registers a YANG module in the YANG Module Names 5025 registry [RFC6020]. 5027 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 5028 ietf-te reference: RFC3209 5030 name: ietf-te-device namespace: urn:ietf:params:xml:ns:yang:ietf-te 5031 prefix: ietf-te-device reference: RFC3209 5033 name: ietf-te-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 5034 mpls prefix: ietf-te-mpls reference: RFC3209 5036 name: ietf-te-sr-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 5037 sr-mpls prefix: ietf-te-sr-mpls 5039 name: ietf-te-types namespace: urn:ietf:params:xml:ns:yang:ietf-te- 5040 types prefix: ietf-te-types reference: RFC3209 5042 name: ietf-te-mpls-types namespace: urn:ietf:params:xml:ns:yang:ietf- 5043 te-mpls-types prefix: ietf-te-mpls-types reference: RFC3209 5045 6. Security Considerations 5047 The YANG module defined in this memo is designed to be accessed via 5048 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 5049 secure transport layer and the mandatory-to-implement secure 5050 transport is SSH [RFC6242]. The NETCONF access control model 5051 [RFC6536] provides means to restrict access for particular NETCONF 5053 users to a pre-configured subset of all available NETCONF protocol 5054 operations and content. 5056 There are a number of data nodes defined in the YANG module which are 5057 writable/creatable/deletable (i.e., config true, which is the 5058 default). These data nodes may be considered sensitive or vulnerable 5059 in some network environments. Write operations (e.g., ) 5060 to these data nodes without proper protection can have a negative 5061 effect on network operations. Following are the subtrees and data 5062 nodes and their sensitivity/vulnerability: 5064 "/te/globals": This module specifies the global TE configurations on 5065 a device. Unauthorized access to this container could cause the 5066 device to ignore packets it should receive and process. 5068 "/te/tunnels": This list specifies the configured TE tunnels on a 5069 device. Unauthorized access to this list could cause the device to 5070 ignore packets it should receive and process. 5072 "/te/lsps-state": This list specifies the state derived LSPs. 5073 Unauthorized access to this list could cause the device to ignore 5074 packets it should receive and process. 5076 "/te/interfaces": This list specifies the configured TE interfaces on 5077 a device. Unauthorized access to this list could cause the device to 5078 ignore packets it should receive and process. 5080 7. Acknowledgement 5082 The authors would like to thank the members of the multi-vendor YANG 5083 design team who are involved in the definition of this model. 5085 The authors would also like to thank Loa Andersson, Lou Berger, Aihua 5086 Guo, Dhruv Dhody, Anurag Sharma, and Xian Zhang for their comments 5087 and providing valuable feedback on this document. 5089 8. References 5091 8.1. Normative References 5093 [I-D.ietf-netconf-restconf] 5094 Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5095 Protocol", draft-ietf-netconf-restconf-18 (work in 5096 progress), October 2016. 5098 [I-D.ietf-netmod-routing-cfg] 5099 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 5100 Management", draft-ietf-netmod-routing-cfg-24 (work in 5101 progress), October 2016. 5103 [I-D.ietf-teas-yang-rsvp] 5104 Beeram, V., Saad, T., Gandhi, R., Liu, X., Shah, H., Chen, 5105 X., Jones, R., and B. Wen, "A YANG Data Model for Resource 5106 Reservation Protocol (RSVP)", draft-ietf-teas-yang-rsvp-04 5107 (work in progress), October 2016. 5109 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5110 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 5111 RFC2119, March 1997, 5112 . 5114 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 5115 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 5116 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 5117 . 5119 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 5120 Switching (GMPLS) Signaling Resource ReserVation Protocol- 5121 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 5122 10.17487/RFC3473, January 2003, 5123 . 5125 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5126 DOI 10.17487/RFC3688, January 2004, 5127 . 5129 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5130 the Network Configuration Protocol (NETCONF)", RFC 6020, 5131 DOI 10.17487/RFC6020, October 2010, 5132 . 5134 [RFC6107] Shiomoto, K., Ed. and A. Farrel, Ed., "Procedures for 5135 Dynamically Signaled Hierarchical Label Switched Paths", 5136 RFC 6107, DOI 10.17487/RFC6107, February 2011, 5137 . 5139 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5140 and A. Bierman, Ed., "Network Configuration Protocol 5141 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5142 . 5144 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5145 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5146 . 5148 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 5149 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 5150 10.17487/RFC6536, March 2012, 5151 . 5153 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 5154 6991, DOI 10.17487/RFC6991, July 2013, 5155 . 5157 8.2. Informative References 5159 [I-D.clemm-netmod-mount] 5160 Clemm, A., Medved, J., and E. Voit, "Mounting YANG-Defined 5161 Information from Remote Datastores", draft-clemm-netmod- 5162 mount-05 (work in progress), September 2016. 5164 [I-D.openconfig-mpls-consolidated-model] 5165 George, J., Fang, L., eric.osborne@level3.com, e., and R. 5166 Shakir, "MPLS / TE Model for Service Provider Networks", 5167 draft-openconfig-mpls-consolidated-model-02 (work in 5168 progress), October 2015. 5170 [I-D.openconfig-netmod-opstate] 5171 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 5172 of Operational State Data in YANG", draft-openconfig- 5173 netmod-opstate-01 (work in progress), July 2015. 5175 Authors' Addresses 5177 Tarek Saad (editor) 5178 Cisco Systems Inc 5180 Email: tsaad@cisco.com 5181 Rakesh Gandhi 5182 Cisco Systems Inc 5184 Email: rgandhi@cisco.com 5186 Xufeng Liu 5187 Ericsson 5189 Email: xufeng.liu@ericsson.com 5191 Vishnu Pavan Beeram 5192 Juniper Networks 5194 Email: vbeeram@juniper.net 5196 Himanshu Shah 5197 Ciena 5199 Email: hshah@ciena.com 5201 Igor Bryskin 5202 Huawei Technologies 5204 Email: Igor.Bryskin@huawei.com 5206 Xia Chen 5207 Huawei Technologies 5209 Email: jescia.chenxia@huawei.com 5211 Raqib Jones 5212 Brocade 5214 Email: raqib@Brocade.com 5216 Bin Wen 5217 Comcast 5219 Email: Bin_Wen@cable.comcast.com