idnits 2.17.1 draft-ietf-teas-yang-te-09.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 146 has weird spacing: '... rw for r...' == Line 147 has weird spacing: '... ro for r...' == Line 717 has weird spacing: '...te-type ide...' == Line 721 has weird spacing: '...pectrum ide...' == Line 733 has weird spacing: '...ic-type ide...' == (16 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (October 29, 2017) is 2368 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 (-19) exists of draft-ietf-teas-yang-rsvp-07 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 9 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: May 2, 2018 X. Liu 6 Jabil 7 V. Beeram 8 Juniper Networks 9 H. Shah 10 Ciena 11 I. Bryskin 12 Huawei Technologies 13 October 29, 2017 15 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 16 draft-ietf-teas-yang-te-09 18 Abstract 20 This document defines a YANG data model for the configuration and 21 management of Traffic Engineering (TE) interfaces, tunnels and Label 22 Switched Paths (LSPs). The model is divided into YANG modules that 23 classify data into generic, device-specific, technology agnostic, and 24 technology-specific elements. The model also includes module(s) that 25 contain reusable TE data types and data groupings. 27 This model covers data for configuration, operational state, remote 28 procedural calls, and event notifications. 30 Status of This Memo 32 This Internet-Draft is submitted in full conformance with the 33 provisions of BCP 78 and BCP 79. 35 Internet-Drafts are working documents of the Internet Engineering 36 Task Force (IETF). Note that other groups may also distribute 37 working documents as Internet-Drafts. The list of current Internet- 38 Drafts is at http://datatracker.ietf.org/drafts/current/. 40 Internet-Drafts are draft documents valid for a maximum of six months 41 and may be updated, replaced, or obsoleted by other documents at any 42 time. It is inappropriate to use Internet-Drafts as reference 43 material or to cite them other than as "work in progress." 45 This Internet-Draft will expire on May 2, 2018. 47 Copyright Notice 49 Copyright (c) 2017 IETF Trust and the persons identified as the 50 document authors. All rights reserved. 52 This document is subject to BCP 78 and the IETF Trust's Legal 53 Provisions Relating to IETF Documents 54 (http://trustee.ietf.org/license-info) in effect on the date of 55 publication of this document. Please review these documents 56 carefully, as they describe your rights and restrictions with respect 57 to this document. Code Components extracted from this document must 58 include Simplified BSD License text as described in Section 4.e of 59 the Trust Legal Provisions and are provided without warranty as 60 described in the Simplified BSD License. 62 Table of Contents 64 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 65 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 66 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 67 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 68 1.4. Open Issues and Next Steps . . . . . . . . . . . . . . . 5 69 1.4.1. TE Technology Models . . . . . . . . . . . . . . . . 5 70 1.4.2. State Data Organization . . . . . . . . . . . . . . . 6 71 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 6 72 2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 6 73 2.2. Design Considerations . . . . . . . . . . . . . . . . . . 9 74 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 10 75 2.4. Configuration Inheritance . . . . . . . . . . . . . . . . 10 76 3. TE Generic Model Organization . . . . . . . . . . . . . . . . 10 77 3.1. Global Configuration and State Data . . . . . . . . . . . 11 78 3.2. Interfaces Configuration and State Data . . . . . . . . . 12 79 3.3. Tunnels Configuration and State Data . . . . . . . . . . 13 80 3.3.1. Tunnel Compute-Only Mode . . . . . . . . . . . . . . 14 81 3.3.2. Tunnel Hierarchical Link Endpoint . . . . . . . . . . 15 82 3.4. TE LSPs State Data . . . . . . . . . . . . . . . . . . . 15 83 3.5. Global RPC Data . . . . . . . . . . . . . . . . . . . . . 15 84 3.6. Interface RPC Data . . . . . . . . . . . . . . . . . . . 15 85 3.7. Tunnel RPC Data . . . . . . . . . . . . . . . . . . . . . 15 86 3.8. Global Notifications Data . . . . . . . . . . . . . . . . 16 87 3.9. Interfaces Notifications Data . . . . . . . . . . . . . . 16 88 3.10. Tunnel Notification Data . . . . . . . . . . . . . . . . 16 89 4. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 37 90 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 148 91 6. Security Considerations . . . . . . . . . . . . . . . . . . . 149 92 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 150 93 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 150 94 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 150 95 9.1. Normative References . . . . . . . . . . . . . . . . . . 151 96 9.2. Informative References . . . . . . . . . . . . . . . . . 152 97 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 152 99 1. Introduction 101 YANG [RFC6020] is a data definition language that was introduced to 102 define the contents of a conceptual data store that allows networked 103 devices to be managed using NETCONF [RFC6241]. YANG is proving 104 relevant beyond its initial confines, as bindings to other interfaces 105 (e.g. RESTCONF [RFC8040]) and encoding other than XML (e.g. JSON) 106 are being defined. Furthermore, YANG data models can be used as the 107 basis of implementation for other interfaces, such as CLI and 108 programmatic APIs. 110 This document describes the YANG data models for TE Tunnels, Label 111 Switched Paths (LSPs) and TE interfaces that cover data applicable to 112 generic or device-independent, device-specific, Multiprotocol Label 113 Switching (MPLS) technology specific, and Segment Routing (SR) TE 114 technology. It also describes helper modules that define TE 115 grouping(s) and data types that can be imported by other modules. 117 The document defines the high-level relationship between the modules 118 defined in this document, as well as other external protocol modules. 119 It is expected other data plane technology model(s) will augment the 120 TE generic model. Also, the TE generic model does not include any 121 data specific to a signaling protocol. It is expected YANG models 122 for TE signaling protocols, such as RSVP-TE ([RFC3209], [RFC3473]), 123 or Segment-Routing TE (SR-TE) will augment the TE generic module. 125 1.1. Terminology 127 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 128 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 129 document are to be interpreted as described in BCP 14, RFC 2119 130 [RFC2119]. 132 1.2. Tree Diagram 134 A simplified graphical representation of the data model is presented 135 in each section of the model. The following notations are used for 136 the YANG model data tree representation. 138 140 is one of: 141 + for current 142 x for deprecated 143 o for obsolete 145 is one of: 146 rw for read-write configuration data 147 ro for read-only non-configuration data 148 -x for execution rpcs 149 -n for notifications 151 is the name of the node 153 If the node is augmented into the tree from another module, its name 154 is printed as : 156 is one of: 157 ? for an optional leaf or node 158 ! for a presence container 159 * for a leaf-list or list 160 Brackets [] for a list's keys 161 Curly braces {} for optional feature that make node 162 conditional 163 Colon : for marking case nodes 164 Ellipses ("...") subtree contents not shown 166 Parentheses enclose choice and case nodes, and case nodes are also 167 marked with a colon (":"). 169 is the name of the type for leafs and leaf-lists. 171 1.3. Prefixes in Data Node Names 173 In this document, names of data nodes and other data model objects 174 are prefixed using the standard prefix associated with the 175 corresponding YANG imported modules, as shown in Table 1. 177 +---------------+--------------------+---------------+ 178 | Prefix | YANG module | Reference | 179 +---------------+--------------------+---------------+ 180 | yang | ietf-yang-types | [RFC6991] | 181 | inet | ietf-inet-types | [RFC6991] | 182 | te | ietf-te | this document | 183 | te-types | ietf-te-types | this document | 184 | te-mpls-types | ietf-te-mpls-types | this document | 185 | te-dev | ietf-te-device | this document | 186 | te-mpls | ietf-te-mpls | this document | 187 | te-sr-mpls | ietf-te-sr-mpls | this document | 188 +---------------+--------------------+---------------+ 190 Table 1: Prefixes and corresponding YANG modules 192 1.4. Open Issues and Next Steps 194 This section describes the number of open issues that are under 195 consideration. As issues are resolved, this section will be updated 196 to reflect this and be left there for reference. It is expected that 197 all the issues in this section will be addressed before the document 198 will be ready for final publication. 200 1.4.1. TE Technology Models 202 This document describes the generic TE YANG data model that is 203 independent of any dataplane technology. One of the design 204 objectives is to allow specific data plane technologies models to 205 reuse the generic TE data model and possibly augment it with 206 technology specific data model(s). There are multiple options being 207 considered to achieve this: 209 o The generic TE model, including the lists of TE tunnels, LSPs, and 210 interfaces can be defined and rooted at the top of the YANG tree. 211 Specific leaf(s) under the TE tunnel, LSP, or interface, in this 212 case, can identify the specific technology layer that it belongs 213 to. This approach implies a single list for each of TE tunnel(s), 214 LSP(s), and interface(s) in the model carries elements of 215 different technology layers. 217 o An instance of the generic TE YANG model can be mounted in the 218 YANG tree once for each TE technology layer(s). This approach 219 provides separation of elements belonging to different technology 220 layers into separate lists per layer in the data model. For 221 example, the proposal in [I-D.clemm-netmod-mount] allows for this 222 capability by "mounting" the YANG data model at a specific target. 224 o The generic TE data node(s) and TE list(s) for tunnels, LSPs, and 225 interfaces are defined as grouping(s) in a separate module. The 226 specific technology layer imports the generic TE groupings and 227 uses them their respective technology specific module. 229 This revision of the model leverages the LSP encoding type of a 230 tunnel (and interfaces) to identify the specific technology 231 associated with the a TE interfaces, tunnel(s) and the LSP(s). For 232 example, for an MPLS TE LSP, the LSP encoding type is assumed to be 233 "lsp-encoding-packet". 235 Finally, the TE generic model does not include any signaling protocol 236 data. It is expected that TE signaling protocol module(s) will be 237 defined in other document(s) that will cover the RSVP-TE ([RFC3209], 238 [RFC3473]), and Segment-Routing TE (SR-TE) model and that augment the 239 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 Network Management Datastore Architecture (NMDA) 253 [I-D.dsdt-nmda-guidelines] addresses the "OpState" that was discussed 254 in the IETF. As per NMDA guidelines for new models and models that 255 are not concerned with the operational state of configuration 256 information, this revision of the draft adopts the NMDA proposal for 257 configuration and state data of this model. 259 2. Model Overview 261 The data model defined in this document covers the core TE features 262 that are commonly supported across different vendor implementations. 263 The support of extended or vendor specific TE feature(s) are expected 264 to be in augmentations to the data models defined in this document. 266 2.1. Module(s) Relationship 268 The TE generic model defined in "ietf-te.yang" covers the building 269 blocks that are device independent and agnostic of any specific 270 technology or control plane instances. The TE device model defined 271 in "ietf-te-device.yang" augments the TE generic model and covers 272 data that is specific to a device - for example, attributes of TE 273 interfaces, or TE timers that are local to a TE node. 275 The TE data relevant to a specific instantiations of data plane 276 technology exists in a separate YANG module(s) that augment the TE 277 generic model. For example, the MPLS-TE module "ietf-te-mpls.yang" 278 is defined in Figure 10 and augments the TE generic model as shown in 279 Figure 1. Similarly, the module "ietf-te-sr-mpls.yang" models the 280 Segment Routing (SR) TE specific data and augments the TE generic and 281 MPLS-TE model(s). 283 The TE data relevant to a TE specific signaling protocol 284 instantiation is outside the scope and is covered in other documents. 285 For example, the RSVP-TE [RFC3209] YANG model augmentation of the TE 286 model is covered in [I-D.ietf-teas-yang-rsvp], and other signaling 287 protocol model(s) (e.g. for Segment-Routing TE) are expected to also 288 augment the TE generic model. 290 ^: import 291 TE generic +---------+ o: augment 292 module | ietf-te |o-------------+ 293 +---------+ \ 294 | o \ \ 295 | |\ \ \ 296 | | \ V \ 297 | | +----------------+ \ 298 | | | ietf-te-device | TE device module 299 | | +----------------+ \ 300 | | o o \ 301 | | / \ \ 302 v | / V V 303 +--------------+ +---------------+ 304 RSVP-TE module | ietf-rsvp-te |o . | ietf-te-mpls | 305 +--------------+ \ +---------------+ 306 ^ \ o 307 | \ +-----------------+ 308 | \ | ietf-te-sr-mpls | 309 | \ +-----------------+ 310 | \ 311 o +-------------------+ 312 +-----------+ | ietf-rsvp-otn-te | 313 RSVP module | ietf-rsvp | +-------------------+ 314 +-----------+ RSVP-TE with OTN 315 extensions 316 (shown for illustration 317 not in this document) 319 Figure 1: Relationship of TE module(s) with other signaling protocol 320 modules 322 +---------+ 323 | ietf-te | ^: import 324 +---------+ o: augment 325 import ^ 326 | 327 | 328 +---------------+ 329 | ietf-te-types | 330 +---------------+ 331 o o 332 | \ 333 | \ 334 +-------------------+ +-------------------+ 335 | ietf-te-mpls-types | | ietf-te-otn-types | 336 +-------------------+ +-------------------+ 337 (shown for illustration 338 not in this document) 340 Figure 2: Relationship between generic and technology specific TE 341 types modules 343 2.2. Design Considerations 345 The following considerations with respect data organization are taken 346 into account: 348 o reusable data elements are grouped into separate TE types 349 module(s) that can be readily imported by other modules whenever 350 needed 352 o reusable TE data types that are data plane independent are grouped 353 in the TE generic types module "ietf-te-types.yang" 355 o reusable TE data elements that are data plane specific (e.g. 356 packet MPLS or switching technologies as defined in [RFC3473]) are 357 expected to be grouped in a technology- specific types module, 358 e.g. "ietf-te-mpls-types.yang". It is expected that technology 359 specific types will augment TE generic types as shown in Figure 2 361 o The TE generic model contains device independent data and can be 362 used to model data off a device (e.g. on a controller). The TE 363 data that is device-specific are grouped in a separate module as 364 shown in Figure 1. 366 o In general, little information in the model is designated as 367 "mandatory", to allow freedom to vendors to adapt the data model 368 to their specific product implementation. 370 2.3. Optional Features 372 Optional features that are beyond the base TE model are left to the 373 specific vendor to decide support using vendor model augmentation 374 and/or using feature checks. 376 This model declares a number of TE functions as features (such as 377 P2MP-TE, soft-preemption etc.). 379 2.4. Configuration Inheritance 381 The defined data model supports configuration inheritance for 382 tunnels, paths, and interfaces. Data elements defined in the main 383 container (e.g. that encompasses the list of tunnels, interfaces, or 384 paths) are assumed to apply equally to all elements of the list, 385 unless overridden explicitly for a certain element of a list (e.g. a 386 tunnel, interface or path). 388 3. TE Generic Model Organization 390 The TE generic model covers configuration, state, RPCs, and 391 notifications data pertaining to TE global parameters, interfaces, 392 tunnels and LSPs parameters that are device independent. 394 The container "te" is the top level container in this data model. 395 The presence of this container is expected to enable TE function 396 system wide. 398 The model follows the guidelines in [I-D.dsdt-nmda-guidelines] for 399 modeling the intended, applied and derived state. 401 module: ietf-te 402 +--rw te! 403 +--rw globals 404 . 405 . 407 +--rw tunnels 408 . 409 . 411 +-- lsps-state 413 rpcs: 414 +---x globals-rpc 415 +---x tunnels-rpc 416 notifications: 417 +---n globals-notif 418 +---n tunnels-notif 420 Figure 3: TE generic highlevel model view 422 3.1. Global Configuration and State Data 424 This branch of the data model covers configurations that control TE 425 features behavior system-wide, and its respective state. Examples of 426 such configuration data are: 428 o Table of named SRLG mappings 430 o Table of named (extended) administrative groups mappings 432 o Table of named explicit paths to be referenced by TE tunnels 434 o Table of named path-constraints sets 436 o Auto-bandwidth global parameters 438 o TE diff-serve TE-class maps 440 o System-wide capabilities for LSP reoptimization (included in the 441 TE device model) 443 * Reoptimization timers (periodic interval, LSP installation and 444 cleanup) 446 o System-wide capabilities for TE state flooding (included in the TE 447 device model) 448 * Periodic flooding interval 450 o Global capabilities that affect the originating, traversing and 451 terminating LSPs. For example: 453 * Path selection parameters (e.g. metric to optimize, etc.) 455 * Path or segment protection parameters 457 The global state data is represented under the global "state" sub- 458 container as shown in Figure 3. 460 Examples of such states are: 462 o Global statistics (signaling, admission, preemption, flooding) 464 o Global counters (number of tunnels/LSPs/interfaces) 466 3.2. Interfaces Configuration and State Data 468 This branch of the model covers configuration and state data items 469 corresponding to TE interfaces that are present on a specific device. 470 A new module is introduced that holds the TE device specific 471 properties. 473 Examples of TE interface properties are: 475 o Maximum reservable bandwidth, bandwidth constraints (BC) 477 o Flooding parameters 479 * Flooding intervals and threshold values 481 o Fast reroute backup tunnel properties (such as static, auto- 482 tunnel) 484 o interface attributes 486 * (Extended) administrative groups 488 * SRLG values 490 * TE metric value 492 The state corresponding to the TE interfaces applied configuration, 493 protocol derived state, and stats and counters all fall under the 494 interface "state" sub-container as shown in Figure 4 below: 496 module: ietf-te 497 +--rw te! 498 +--rw interfaces 499 . 500 +-- rw te-attributes 501 +-- rw config 502 <> 503 . 504 +-- ro state 505 <> 506 <> 508 Figure 4: TE interface state 510 This covers state data for TE interfaces such as: 512 o Bandwidth information: maximum bandwidth, available bandwidth at 513 different priorities and for each class-type (CT) 515 o List of admitted LSPs 517 * Name, bandwidth value and pool, time, priority 519 o Statistics: state counters, flooding counters, admission counters 520 (accepted/rejected), preemption counters 522 o Adjacency information 524 * Neighbor address 526 * Metric value 528 3.3. Tunnels Configuration and State Data 530 This branch of the model covers intended, and corresponding applied 531 configuration for tunnels. As well, it holds possible derived state 532 pertaining to TE tunnels. 534 module: ietf-te 535 +--rw te! 536 +--rw tunnels 537 . 538 +-- rw config 539 <> 540 . 541 +-- ro state 542 <> 543 <> 545 Figure 5: TE interface state tree 547 Examples of tunnel configuration date for TE tunnels: 549 o Name and type (e.g. P2P, P2MP) of the TE tunnel 551 o Admin-state 553 o Set of primary and corresponding secondary paths 555 o Routing usage (auto-route announce, forwarding adjacency) 557 o Policy based routing (PBR) parameters 559 3.3.1. Tunnel Compute-Only Mode 561 By default, a configured TE tunnel is provisioned so it can carry 562 traffic as soon as a valid path is computed and an LSP instantiated 563 in the network. In other cases, a TE tunnel may be provisioned for 564 computed path reporting purposes without the need to instantiate an 565 LSP or commit resources in the network. In such a case, a tunnel 566 configuration in "compute-only" mode to distinguish it from default 567 tunnel behavior. 569 A "compute-only" TE tunnel is configured as a usual TE tunnel with 570 associated path constraint(s) and properties on a device or 571 controller. The device or controller is expected to compute the 572 feasible path(s) subject to configured constraints for of "compute- 573 only" tunnel and reflect the computed path(s) in the LSP(s) Record- 574 Route Object (RRO) list. A client may query "on-demand" the 575 "compute-only" TE tunnel computed path(s) properties by querying the 576 state of the tunnel. Alternatively, the client can subscribe on the 577 "compute-only" TE tunnel to be notified of computed path(s) and 578 whenever it changes. 580 3.3.2. Tunnel Hierarchical Link Endpoint 582 TE LSPs can be set up in MPLS or Generalized MPLS (GMPLS) networks to 583 be used to form links to carry traffic in in other (client) networks 584 [RFC6107]. In this case, the model introduces the TE tunnel 585 hierarchical link endpoint parameters to identify the specific link 586 in the client layer that the TE tunnel is associated with. 588 3.4. TE LSPs State Data 590 TE LSPs are derived state data that is usually instantiated via 591 signaling protocols. TE LSPs exists on routers as ingress (starting 592 point of LSP), transit (mid-point of LSP ), or egress (termination 593 point of the LSP). TE LSPs are distinguished by the 5 tuple, and LSP 594 type (P2P or P2MP). In the model, the nodes holding LSPs data exist 595 in the read-only lsps-state list as show in Figure 6. 597 3.5. Global RPC Data 599 This branch of the model covers system-wide RPC execution data to 600 trigger actions and optionally expect responses. Examples of such TE 601 commands are to: 603 o Clear global TE statistics of various features 605 3.6. Interface RPC Data 607 This collection of data in the model defines TE interface RPC 608 execution commands. Examples of these are to: 610 o Clear TE statistics for all or for individual TE interfaces 612 o Trigger immediate flooding for one or all TE interfaces 614 3.7. Tunnel RPC Data 616 This branch of the model covers TE tunnel RPC execution data to 617 trigger actions and optionally expect responses. Examples of such TE 618 commands are: 620 o Clear statistics for all or for individual tunnels 622 o Trigger the tear and setup of existing tunnels or LSPs. 624 3.8. Global Notifications Data 626 This branch of the model covers system-wide notifications data. The 627 node notifies the registered events to the server using the defined 628 notification messages. 630 3.9. Interfaces Notifications Data 632 This branch of the model covers TE interfaces related notifications 633 data. The TE interface configuration is used for specific events 634 registration. Notifications are sent for registered events to the 635 server. Example events for TE interfaces are: 637 o Interface creation and deletion 639 o Interface state transitions 641 o (Soft) preemption triggers 643 o Fast reroute activation 645 3.10. Tunnel Notification Data 647 This branch of the model covers TE tunnels related notifications 648 data. The TE tunnels configuration is used for specific events 649 registration. Notifications are sent for registered events to the 650 server. Example events for TE tunnels are: 652 o Tunnel creation and deletion events 654 o Tunnel state up/down changes 656 o Tunnel state reoptimization changes 658 Figure Figure 6 below shows the tree diagram of the YANG model 659 defined in modules: ietf-te.yang, ietf-te-device.yang, ietf-te- 660 mpls.yang, and ietf-te-sr.yang. 662 module: ietf-te 663 +--rw te! 664 +--rw globals 665 | +--rw named-admin-groups 666 | | +--rw named-admin-group* [name] 667 {te-types:extended-admin-groups,te-types:named-extended- 668 admin-groups}? 669 | | +--rw name string 670 | | +--rw bit-position? uint32 671 | +--rw named-srlgs 672 | | +--rw named-srlg* [name] {te-types:named-srlg-groups}? 673 | | +--rw name string 674 | | +--rw group? te-types:srlg 675 | | +--rw cost? uint32 676 | +--rw named-explicit-paths 677 | | +--rw named-explicit-path* [name] 678 | | +--rw name string 679 | | +--rw explicit-route-objects 680 | | +--rw explicit-route-object* [index] 681 | | +--rw explicit-route-usage? identityref 682 | | +--rw index uint32 683 | | +--rw (type)? 684 | | +--:(numbered) 685 | | | +--rw numbered-hop 686 | | | +--rw address? te-types:te-tp-id 687 | | | +--rw hop-type? te-hop-type 688 | | +--:(as-number) 689 | | | +--rw as-number-hop 690 | | | +--rw as-number? binary 691 | | | +--rw hop-type? te-hop-type 692 | | +--:(unnumbered) 693 | | | +--rw unnumbered-hop 694 | | | +--rw node-id? te-types:te-node-id 695 | | | +--rw link-tp-id? te-types:te-tp-id 696 | | | +--rw hop-type? te-hop-type 697 | | +--:(label) 698 | | | +--rw label-hop 699 | | | +--rw value? rt-types:generalized-label 700 | | +--:(sid) 701 | | +--rw sid-hop 702 | | +--rw sid? rt-types:generalized-label 703 | +--rw named-path-constraints 704 | | +--rw named-path-constraint* [name] 705 {te-types:named-path-constraints}? 706 | | +--rw name string 707 | | +--rw topology-id? 708 te-types:te-topology-id 709 | | +--rw bandwidth-generic 710 | | | +--rw te-bandwidth 711 | | | +--rw (technology)? 712 | | | +--:(psc) 713 | | | | +--rw psc? 714 rt-types:bandwidth-ieee-float32 715 | | | +--:(otn) 716 | | | | +--rw otn* [rate-type] 717 | | | | +--rw rate-type identityref 718 | | | | +--rw counter? uint16 719 | | | +--:(lsc) 720 | | | | +--rw wdm* [spectrum slot] 721 | | | | +--rw spectrum identityref 722 | | | | +--rw slot int16 723 | | | | +--rw width? uint16 724 | | | +--:(generic) 725 | | | +--rw generic? te-bandwidth 726 | | +--rw disjointness? 727 te-types:te-path-disjointness 728 | | +--rw setup-priority? uint8 729 | | +--rw hold-priority? uint8 730 | | +--rw signaling-type? identityref 731 | | +--rw path-metric-bounds 732 | | | +--rw path-metric-bound* [metric-type] 733 | | | +--rw metric-type identityref 734 | | | +--rw upper-bound? uint64 735 | | +--rw optimizations 736 | | | +--rw (algorithm)? 737 | | | +--:(metric) {path-optimization-metric}? 738 | | | | +--rw optimization-metric* [metric-type] 739 | | | | | +--rw metric-type identityref 740 | | | | | +--rw weight? uint8 741 | | | | +--rw tiebreakers 742 | | | | +--rw tiebreaker* [tiebreaker-type] 743 | | | | +--rw tiebreaker-type identityref 744 | | | +--:(objective-function) 745 {path-optimization-objective-function}? 746 | | | +--rw objective-function 747 | | | +--rw objective-function-type? identityref 748 | | +--rw path-affinities 749 | | | +--rw constraints* [usage] 750 | | | +--rw usage identityref 751 | | | +--rw (style)? 752 | | | +--:(value) 753 | | | | +--rw value? 754 te-types:admin-groups 755 | | | +--:(named) 756 | | | +--rw affinity-names* [name] 757 | | | +--rw name string 758 | | +--rw path-srlgs 759 | | | +--rw (style)? 760 | | | +--:(values) 761 | | | | +--rw usage? identityref 762 | | | | +--rw values* te-types:srlg 763 | | | +--:(named) 764 | | | +--rw constraints* [usage] 765 | | | +--rw usage identityref 766 | | | +--rw constraint 767 | | | +--rw srlg-names* [name] 768 | | | +--rw name string 769 | | +--rw explicit-route-objects 770 | | | +--rw route-object-exclude-always* [index] 771 | | | | +--rw index uint32 772 | | | | +--rw (type)? 773 | | | | +--:(numbered) 774 | | | | | +--rw numbered-hop 775 | | | | | +--rw address? te-types:te-tp-id 776 | | | | | +--rw hop-type? te-hop-type 777 | | | | +--:(as-number) 778 | | | | | +--rw as-number-hop 779 | | | | | +--rw as-number? binary 780 | | | | | +--rw hop-type? te-hop-type 781 | | | | +--:(unnumbered) 782 | | | | | +--rw unnumbered-hop 783 | | | | | +--rw node-id? te-types:te-node-id 784 | | | | | +--rw link-tp-id? te-types:te-tp-id 785 | | | | | +--rw hop-type? te-hop-type 786 | | | | +--:(label) 787 | | | | | +--rw label-hop 788 | | | | | +--rw value? rt-types:generalized-label 789 | | | | +--:(sid) 790 | | | | +--rw sid-hop 791 | | | | +--rw sid? rt-types:generalized-label 792 | | | +--rw route-object-include-exclude* [index] 793 | | | +--rw explicit-route-usage? identityref 794 | | | +--rw index uint32 795 | | | +--rw (type)? 796 | | | +--:(numbered) 797 | | | | +--rw numbered-hop 798 | | | | +--rw address? te-types:te-tp-id 799 | | | | +--rw hop-type? te-hop-type 800 | | | +--:(as-number) 801 | | | | +--rw as-number-hop 802 | | | | +--rw as-number? binary 803 | | | | +--rw hop-type? te-hop-type 804 | | | +--:(unnumbered) 805 | | | | +--rw unnumbered-hop 806 | | | | +--rw node-id? te-types:te-node-id 807 | | | | +--rw link-tp-id? te-types:te-tp-id 808 | | | | +--rw hop-type? te-hop-type 809 | | | +--:(label) 810 | | | | +--rw label-hop 811 | | | | +--rw value? rt-types:generalized-label 812 | | | +--:(sid) 813 | | | +--rw sid-hop 814 | | | +--rw sid? rt-types:generalized-label 815 | | +--rw shared-resources-tunnels 816 | | | +--rw lsp-shared-resources-tunnel* te:tunnel-ref 817 | | +--rw path-in-segment! 818 | | | +--rw forward 819 | | | | +--rw label-set* [inclusive-exclusive label-start] 820 | | | | +--rw inclusive-exclusive enumeration 821 | | | | +--rw label-start 822 rt-types:generalized-label 823 | | | | +--rw label-end? 824 rt-types:generalized-label 825 | | | | +--rw range-bitmap? binary 826 | | | +--rw reverse 827 | | | +--rw label-set* [inclusive-exclusive label-start] 828 | | | +--rw inclusive-exclusive enumeration 829 | | | +--rw label-start 830 rt-types:generalized-label 831 | | | +--rw label-end? 832 rt-types:generalized-label 833 | | | +--rw range-bitmap? binary 834 | | +--rw path-out-segment! 835 | | | +--rw forward 836 | | | | +--rw label-set* [inclusive-exclusive label-start] 837 | | | | +--rw inclusive-exclusive enumeration 838 | | | | +--rw label-start 839 rt-types:generalized-label 840 | | | | +--rw label-end? 841 rt-types:generalized-label 842 | | | | +--rw range-bitmap? binary 843 | | | +--rw reverse 844 | | | +--rw label-set* [inclusive-exclusive label-start] 845 | | | +--rw inclusive-exclusive enumeration 846 | | | +--rw label-start 847 rt-types:generalized-label 848 | | | +--rw label-end? 849 rt-types:generalized-label 850 | | | +--rw range-bitmap? binary 851 | | +--ro state 852 | | | +--ro bandwidth-generic_state? 853 te-types:te-bandwidth 854 | | | +--ro disjointness_state? 855 te-types:te-path-disjointness 856 | | +--rw te-mpls:bandwidth 857 | | | +--rw te-mpls:specification-type? 858 te-mpls-types:te-bandwidth-type 859 | | | +--rw te-mpls:set-bandwidth? 860 te-mpls-types:bandwidth-kbps 861 | | | +--rw te-mpls:class-type? 862 te-types:te-ds-class 863 | | | +--ro te-mpls:state 864 | | | +--ro te-mpls:signaled-bandwidth? 865 te-mpls-types:bandwidth-kbps 866 | | +--rw te-sr-mpls:sid-selection-mode? 867 te-sid-selection-mode 868 | | +--rw te-sr-mpls:sid-protection? identityref 869 | +--rw te-dev:lsp-install-interval? uint32 870 | +--rw te-dev:lsp-cleanup-interval? uint32 871 | +--rw te-dev:lsp-invalidation-interval? uint32 872 +--rw tunnels 873 | +--rw tunnel* [name] 874 | | +--rw name string 875 | | +--rw identifier? uint16 876 | | +--rw description? string 877 | | +--rw encoding? identityref 878 | | +--rw switching-type? identityref 879 | | +--rw provisioning-state? identityref 880 | | +--rw preference? uint8 881 | | +--rw reoptimize-timer? uint16 882 | | +--rw source? inet:ip-address 883 | | +--rw destination? inet:ip-address 884 | | +--rw src-tp-id? binary 885 | | +--rw dst-tp-id? binary 886 | | +--rw ignore-overload? boolean 887 | | +--rw protection 888 | | | +--rw enable? boolean 889 | | | +--rw protection-type? identityref 890 | | | +--rw protection-reversion-disable? boolean 891 | | | +--rw hold-off-time? uint32 892 | | | +--rw wait-to-revert? uint16 893 | | | +--rw lockout-of-normal? boolean 894 | | | +--rw freeze? boolean 895 | | +--rw restoration 896 | | | +--rw enable? boolean 897 | | | +--rw restoration-type? identityref 898 | | | +--rw restoration-scheme? identityref 899 | | | +--rw restoration-reversion-disable? boolean 900 | | | +--rw hold-off-time? uint32 901 | | | +--rw wait-to-restore? uint16 902 | | | +--rw wait-to-revert? uint16 903 | | +--rw topology-id? 904 te-types:te-topology-id 905 | | +--rw bandwidth-generic 906 | | | +--rw te-bandwidth 907 | | | +--rw (technology)? 908 | | | +--:(psc) 909 | | | | +--rw psc? 910 rt-types:bandwidth-ieee-float32 911 | | | +--:(otn) 912 | | | | +--rw otn* [rate-type] 913 | | | | +--rw rate-type identityref 914 | | | | +--rw counter? uint16 915 | | | +--:(lsc) 916 | | | | +--rw wdm* [spectrum slot] 917 | | | | +--rw spectrum identityref 918 | | | | +--rw slot int16 919 | | | | +--rw width? uint16 920 | | | +--:(generic) 921 | | | +--rw generic? te-bandwidth 922 | | +--rw disjointness? 923 te-types:te-path-disjointness 924 | | +--rw setup-priority? uint8 925 | | +--rw hold-priority? uint8 926 | | +--rw signaling-type? identityref 927 | | +--rw dependency-tunnels 928 | | | +--rw dependency-tunnel* [name] 929 | | | +--rw name -> 930 ../../../../../tunnels/tunnel/name 931 | | | +--rw encoding? identityref 932 | | | +--rw switching-type? identityref 933 | | +--ro state 934 | | | +--ro operational-state? identityref 935 | | | +--ro te-dev:lsp-install-interval? uint32 936 | | | +--ro te-dev:lsp-cleanup-interval? uint32 937 | | | +--ro te-dev:lsp-invalidation-interval? uint32 938 | | +--rw bidirectional 939 | | | +--rw association 940 | | | +--rw id? uint16 941 | | | +--rw source? inet:ip-address 942 | | | +--rw global-source? inet:ip-address 943 | | | +--rw type? identityref 944 | | | +--rw provisioning? identityref 945 | | +--rw p2p-primary-paths 946 | | | +--rw p2p-primary-path* [name] 947 | | | +--rw hierarchical-link 948 | | | | +--rw local-te-node-id? te-types:te-node-id 949 | | | | +--rw local-te-link-tp-id? te-types:te-tp-id 950 | | | | +--rw remote-te-node-id? te-types:te-node-id 951 | | | | +--rw te-topology-id? 952 te-types:te-topology-id 953 | | | +--rw name string 954 | | | +--rw preference? uint8 955 | | | +--rw path-setup-protocol? identityref 956 | | | +--rw path-computation-method? identityref 957 | | | +--rw path-computation-server? 958 inet:ip-address 959 | | | +--rw compute-only? empty 960 | | | +--rw use-path-computation? boolean 961 | | | +--rw lockdown? empty 962 | | | +--rw path-scope? identityref 963 | | | +--rw named-explicit-path? -> 964 ../../../../../globals/named-explicit-paths/named-explicit-path/ 965 name 966 | | | +--rw named-path-constraint? -> 967 ../../../../../globals/named-path-constraints/ 968 named-path-constraint/name 969 {te-types:named-path-constraints}? 970 | | | +--ro state 971 | | | | +--ro computed-path-properties 972 | | | | | +--ro path-metric* [metric-type] 973 | | | | | | +--ro metric-type -> ../state/metric-type 974 | | | | | | +--ro state 975 | | | | | | +--ro metric-type? identityref 976 | | | | | | +--ro accumulative-value? uint64 977 | | | | | +--ro path-affinities 978 | | | | | | +--ro constraints* [usage] 979 | | | | | | +--ro usage -> ../state/usage 980 | | | | | | +--ro state 981 | | | | | | +--ro usage? identityref 982 | | | | | | +--ro (style)? 983 | | | | | | +--:(value) 984 | | | | | | | +--ro value? 985 te-types:admin-groups 986 | | | | | | +--:(named) 987 | | | | | | +--ro affinity-names* [name] 988 | | | | | | +--ro name string 989 | | | | | +--ro path-srlgs 990 | | | | | | +--ro (style)? 991 | | | | | | +--:(values) 992 | | | | | | | +--ro state 993 | | | | | | | +--ro usage? identityref 994 | | | | | | | +--ro values* te-types:srlg 995 | | | | | | +--:(named) 996 | | | | | | +--ro constraints 997 | | | | | | +--ro constraint* [usage] 998 | | | | | | +--ro usage -> 999 ../state/usage 1000 | | | | | | +--ro state 1001 | | | | | | | +--ro usage? identityref 1002 | | | | | | +--ro srlg-names 1003 | | | | | | +--ro srlg-name* [name] 1004 | | | | | | +--ro name -> 1005 ../state/name 1006 | | | | | | +--ro state 1007 | | | | | | +--ro name? string 1008 | | | | | +--ro path-computed-route-objects 1009 | | | | | | +--ro path-computed-route-object* [index] 1010 | | | | | | +--ro index -> ../state/index 1011 | | | | | | +--ro state 1012 | | | | | | +--ro index? uint32 1013 | | | | | | +--ro (type)? 1014 | | | | | | +--:(numbered) 1015 | | | | | | | +--ro numbered-hop 1016 | | | | | | | +--ro address? 1017 te-types:te-tp-id 1018 | | | | | | | +--ro hop-type? te-hop-type 1019 | | | | | | +--:(as-number) 1020 | | | | | | | +--ro as-number-hop 1021 | | | | | | | +--ro as-number? binary 1022 | | | | | | | +--ro hop-type? 1023 te-hop-type 1024 | | | | | | +--:(unnumbered) 1025 | | | | | | | +--ro unnumbered-hop 1026 | | | | | | | +--ro node-id? 1027 te-types:te-node-id 1028 | | | | | | | +--ro link-tp-id? 1029 te-types:te-tp-id 1030 | | | | | | | +--ro hop-type? 1031 te-hop-type 1032 | | | | | | +--:(label) 1033 | | | | | | | +--ro label-hop 1034 | | | | | | | +--ro value? 1035 rt-types:generalized-label 1036 | | | | | | +--:(sid) 1037 | | | | | | +--ro sid-hop 1038 | | | | | | +--ro sid? 1039 rt-types:generalized-label 1040 | | | | | +--ro shared-resources-tunnels 1041 | | | | | +--ro lsp-shared-resources-tunnel* 1042 te:tunnel-ref 1043 | | | | +--ro lsps 1044 | | | | | +--ro lsp* [source destination tunnel-id 1045 lsp-id 1046 extended-tunnel-id] 1047 | | | | | +--ro source 1048 inet:ip-address 1049 | | | | | +--ro destination 1050 inet:ip-address 1051 | | | | | +--ro tunnel-id uint16 1052 | | | | | +--ro lsp-id uint16 1053 | | | | | +--ro extended-tunnel-id 1054 inet:ip-address 1055 | | | | | +--ro operational-state? 1056 identityref 1057 | | | | | +--ro path-setup-protocol? 1058 identityref 1059 | | | | | +--ro origin-type? 1060 enumeration 1061 | | | | | +--ro lsp-resource-status? 1062 enumeration 1063 | | | | | +--ro lsp-protection-role? 1064 enumeration 1065 | | | | | +--ro lsp-protection-state? 1066 identityref 1067 | | | | | +--ro shared-resources-tunnels 1068 | | | | | | +--ro lsp-shared-resources-tunnel* 1069 te:tunnel-ref 1070 | | | | | +--ro lsp-record-route-subobjects 1071 | | | | | | +--ro record-route-subobject* [index] 1072 | | | | | | +--ro index -> ../state/index 1073 | | | | | | +--ro state 1074 | | | | | | +--ro index? uint32 1075 | | | | | | +--ro (type)? 1076 | | | | | | +--:(numbered) 1077 | | | | | | | +--ro address? 1078 te-types:te-tp-id 1079 | | | | | | | +--ro ip-flags? binary 1080 | | | | | | +--:(unnumbered) 1081 | | | | | | | +--ro node-id? 1082 te-types:te-node-id 1083 | | | | | | | +--ro link-tp-id? 1084 te-types:te-tp-id 1085 | | | | | | +--:(label) 1086 | | | | | | +--ro value? 1087 rt-types:generalized-label 1088 | | | | | | +--ro label-flags? binary 1089 | | | | | +--ro te-dev:lsp-timers 1090 | | | | | | +--ro te-dev:life-time? uint32 1091 | | | | | | +--ro te-dev:time-to-install? uint32 1092 | | | | | | +--ro te-dev:time-to-destroy? uint32 1093 | | | | | +--ro te-dev:downstream-info 1094 | | | | | | +--ro te-dev:nhop? 1095 inet:ip-address 1096 | | | | | | +--ro te-dev:outgoing-interface? 1097 if:interface-ref 1098 | | | | | | +--ro te-dev:neighbor? 1099 inet:ip-address 1100 | | | | | | +--ro te-dev:label? 1101 rt-types:generalized-label 1102 | | | | | +--ro te-dev:upstream-info 1103 | | | | | +--ro te-dev:phop? inet:ip-address 1104 | | | | | +--ro te-dev:neighbor? inet:ip-address 1105 | | | | | +--ro te-dev:label? 1106 rt-types:generalized-label 1107 | | | | +--ro te-mpls:static-lsp-name? 1108 mpls-static:static-lsp-ref 1109 | | | +--rw p2p-reverse-primary-path 1110 | | | | +--rw name? string 1111 | | | | +--rw preference? uint8 1112 | | | | +--rw path-setup-protocol? identityref 1113 | | | | +--rw path-computation-method? identityref 1114 | | | | +--rw path-computation-server? inet:ip-address 1115 | | | | +--rw compute-only? empty 1116 | | | | +--rw use-path-computation? boolean 1117 | | | | +--rw lockdown? empty 1118 | | | | +--rw path-scope? identityref 1119 | | | | +--rw named-explicit-path? -> 1120 ../../../../../../globals/named-explicit-paths/ 1121 named-explicit-path/name 1122 | | | | +--rw named-path-constraint? -> 1123 ../../../../../../globals/named-path-constraints/ 1124 named-path-constraint/name 1125 {te-types:named-path-constraints}? 1126 | | | | +--ro state 1127 | | | | +--ro computed-path-properties 1128 | | | | | +--ro path-metric* [metric-type] 1129 | | | | | | +--ro metric-type -> 1130 ../state/metric-type 1131 | | | | | | +--ro state 1132 | | | | | | +--ro metric-type? 1133 identityref 1134 | | | | | | +--ro accumulative-value? uint64 1135 | | | | | +--ro path-affinities 1136 | | | | | | +--ro constraints* [usage] 1137 | | | | | | +--ro usage -> ../state/usage 1138 | | | | | | +--ro state 1139 | | | | | | +--ro usage? identityref 1140 | | | | | | +--ro (style)? 1141 | | | | | | +--:(value) 1142 | | | | | | | +--ro value? 1143 te-types:admin-groups 1144 | | | | | | +--:(named) 1145 | | | | | | +--ro affinity-names* [name] 1146 | | | | | | +--ro name string 1147 | | | | | +--ro path-srlgs 1148 | | | | | | +--ro (style)? 1149 | | | | | | +--:(values) 1150 | | | | | | | +--ro state 1151 | | | | | | | +--ro usage? identityref 1152 | | | | | | | +--ro values* te-types:srlg 1153 | | | | | | +--:(named) 1154 | | | | | | +--ro constraints 1155 | | | | | | +--ro constraint* [usage] 1156 | | | | | | +--ro usage -> 1157 ../state/usage 1158 | | | | | | +--ro state 1159 | | | | | | | +--ro usage? identityref 1160 | | | | | | +--ro srlg-names 1161 | | | | | | +--ro srlg-name* [name] 1162 | | | | | | +--ro name -> 1163 ../state/name 1164 | | | | | | +--ro state 1165 | | | | | | +--ro name? string 1166 | | | | | +--ro path-computed-route-objects 1167 | | | | | | +--ro path-computed-route-object* [index] 1168 | | | | | | +--ro index -> ../state/index 1169 | | | | | | +--ro state 1170 | | | | | | +--ro index? uint32 1171 | | | | | | +--ro (type)? 1172 | | | | | | +--:(numbered) 1173 | | | | | | | +--ro numbered-hop 1174 | | | | | | | +--ro address? 1175 te-types:te-tp-id 1176 | | | | | | | +--ro hop-type? 1177 te-hop-type 1178 | | | | | | +--:(as-number) 1179 | | | | | | | +--ro as-number-hop 1180 | | | | | | | +--ro as-number? binary 1181 | | | | | | | +--ro hop-type? 1182 te-hop-type 1183 | | | | | | +--:(unnumbered) 1184 | | | | | | | +--ro unnumbered-hop 1185 | | | | | | | +--ro node-id? 1186 te-types:te-node-id 1187 | | | | | | | +--ro link-tp-id? 1188 te-types:te-tp-id 1189 | | | | | | | +--ro hop-type? 1190 te-hop-type 1191 | | | | | | +--:(label) 1192 | | | | | | | +--ro label-hop 1193 | | | | | | | +--ro value? 1194 rt-types:generalized-label 1195 | | | | | | +--:(sid) 1196 | | | | | | +--ro sid-hop 1197 | | | | | | +--ro sid? 1198 rt-types:generalized-label 1199 | | | | | +--ro shared-resources-tunnels 1200 | | | | | +--ro lsp-shared-resources-tunnel* 1201 te:tunnel-ref 1202 | | | | +--ro lsps 1203 | | | | +--ro lsp* [source destination tunnel-id 1204 lsp-id extended-tunnel-id] 1205 | | | | +--ro source 1206 inet:ip-address 1207 | | | | +--ro destination 1208 inet:ip-address 1209 | | | | +--ro tunnel-id 1210 uint16 1211 | | | | +--ro lsp-id 1212 uint16 1213 | | | | +--ro extended-tunnel-id 1214 inet:ip-address 1215 | | | | +--ro operational-state? 1216 identityref 1217 | | | | +--ro path-setup-protocol? 1218 identityref 1219 | | | | +--ro origin-type? 1220 enumeration 1221 | | | | +--ro lsp-resource-status? 1222 enumeration 1223 | | | | +--ro lsp-protection-role? 1224 enumeration 1225 | | | | +--ro lsp-protection-state? 1226 identityref 1227 | | | | +--ro shared-resources-tunnels 1228 | | | | | +--ro lsp-shared-resources-tunnel* 1229 te:tunnel-ref 1230 | | | | +--ro lsp-record-route-subobjects 1231 | | | | +--ro record-route-subobject* [index] 1232 | | | | +--ro index -> ../state/index 1233 | | | | +--ro state 1234 | | | | +--ro index? uint32 1235 | | | | +--ro (type)? 1236 | | | | +--:(numbered) 1237 | | | | | +--ro address? 1238 te-types:te-tp-id 1239 | | | | | +--ro ip-flags? 1240 binary 1241 | | | | +--:(unnumbered) 1242 | | | | | +--ro node-id? 1243 te-types:te-node-id 1244 | | | | | +--ro link-tp-id? 1245 te-types:te-tp-id 1246 | | | | +--:(label) 1247 | | | | +--ro value? 1248 rt-types:generalized-label 1249 | | | | +--ro label-flags? 1250 binary 1251 | | | +--rw p2p-reverse-secondary-path 1252 | | | | +--rw secondary-path? -> 1253 ../../../../p2p-secondary-paths/p2p-secondary-path/name 1254 | | | | +--rw path-setup-protocol? identityref 1255 | | | +--rw candidate-p2p-secondary-paths 1256 | | | | +--rw candidate-p2p-secondary-path* 1257 [secondary-path] 1258 | | | | +--rw secondary-path -> 1259 ../../../../../p2p-secondary-paths/p2p-secondary-path/name 1260 | | | | +--rw path-setup-protocol? identityref 1261 | | | | +--ro state 1262 | | | | +--ro active? boolean 1263 | | | +--rw te-mpls:static-lsp-name? 1264 mpls-static:static-lsp-ref 1265 | | +--rw p2p-secondary-paths 1266 | | | +--rw p2p-secondary-path* [name] 1267 | | | +--rw name string 1268 | | | +--rw preference? uint8 1269 | | | +--rw path-setup-protocol? identityref 1270 | | | +--rw path-computation-method? identityref 1271 | | | +--rw path-computation-server? inet:ip-address 1272 | | | +--rw compute-only? empty 1273 | | | +--rw use-path-computation? boolean 1274 | | | +--rw lockdown? empty 1275 | | | +--rw path-scope? identityref 1276 | | | +--rw named-explicit-path? -> 1277 ../../../../../globals/named-explicit-paths/named-explicit-path/ 1278 name 1279 | | | +--rw named-path-constraint? -> 1280 ../../../../../globals/named-path-constraints/ 1281 named-path-constraint/name 1282 {te-types:named-path-constraints}? 1283 | | | +--rw protection 1284 | | | | +--rw enable? boolean 1285 | | | | +--rw protection-type? identityref 1286 | | | | +--rw protection-reversion-disable? boolean 1287 | | | | +--rw hold-off-time? uint32 1288 | | | | +--rw wait-to-revert? uint16 1289 | | | | +--rw lockout-of-normal? boolean 1290 | | | | +--rw freeze? boolean 1291 | | | +--rw restoration 1292 | | | | +--rw enable? boolean 1293 | | | | +--rw restoration-type? identityref 1294 | | | | +--rw restoration-scheme? identityref 1295 | | | | +--rw restoration-reversion-disable? boolean 1296 | | | | +--rw hold-off-time? uint32 1297 | | | | +--rw wait-to-restore? uint16 1298 | | | | +--rw wait-to-revert? uint16 1299 | | | +--rw protection-external-commands 1300 | | | | +--rw lockout-of-protection? boolean 1301 | | | | +--rw manual-switch 1302 | | | | | +--rw manual-switch? boolean 1303 | | | | | +--rw manual-swith-tunnel? te:tunnel-ref 1304 | | | | +--rw forced-switch 1305 | | | | +--rw forced-switch? boolean 1306 | | | | +--rw forced-swith-tunnel? te:tunnel-ref 1307 | | | +--ro state 1308 | | | | +--ro computed-path-properties 1309 | | | | | +--ro path-metric* [metric-type] 1310 | | | | | | +--ro metric-type -> ../state/metric-type 1311 | | | | | | +--ro state 1312 | | | | | | +--ro metric-type? identityref 1313 | | | | | | +--ro accumulative-value? uint64 1314 | | | | | +--ro path-affinities 1315 | | | | | | +--ro constraints* [usage] 1316 | | | | | | +--ro usage -> ../state/usage 1317 | | | | | | +--ro state 1318 | | | | | | +--ro usage? identityref 1319 | | | | | | +--ro (style)? 1320 | | | | | | +--:(value) 1321 | | | | | | | +--ro value? 1322 te-types:admin-groups 1323 | | | | | | +--:(named) 1324 | | | | | | +--ro affinity-names* [name] 1325 | | | | | | +--ro name string 1326 | | | | | +--ro path-srlgs 1327 | | | | | | +--ro (style)? 1328 | | | | | | +--:(values) 1329 | | | | | | | +--ro state 1330 | | | | | | | +--ro usage? identityref 1331 | | | | | | | +--ro values* te-types:srlg 1332 | | | | | | +--:(named) 1333 | | | | | | +--ro constraints 1334 | | | | | | +--ro constraint* [usage] 1335 | | | | | | +--ro usage -> 1336 ../state/usage 1337 | | | | | | +--ro state 1338 | | | | | | | +--ro usage? identityref 1339 | | | | | | +--ro srlg-names 1340 | | | | | | +--ro srlg-name* [name] 1341 | | | | | | +--ro name -> 1342 ../state/name 1343 | | | | | | +--ro state 1344 | | | | | | +--ro name? string 1345 | | | | | +--ro path-computed-route-objects 1346 | | | | | | +--ro path-computed-route-object* [index] 1347 | | | | | | +--ro index -> ../state/index 1348 | | | | | | +--ro state 1349 | | | | | | +--ro index? uint32 1350 | | | | | | +--ro (type)? 1351 | | | | | | +--:(numbered) 1352 | | | | | | | +--ro numbered-hop 1353 | | | | | | | +--ro address? 1354 te-types:te-tp-id 1355 | | | | | | | +--ro hop-type? te-hop-type 1356 | | | | | | +--:(as-number) 1357 | | | | | | | +--ro as-number-hop 1358 | | | | | | | +--ro as-number? binary 1359 | | | | | | | +--ro hop-type? 1360 te-hop-type 1361 | | | | | | +--:(unnumbered) 1362 | | | | | | | +--ro unnumbered-hop 1363 | | | | | | | +--ro node-id? 1364 te-types:te-node-id 1365 | | | | | | | +--ro link-tp-id? 1366 te-types:te-tp-id 1367 | | | | | | | +--ro hop-type? 1368 te-hop-type 1369 | | | | | | +--:(label) 1370 | | | | | | | +--ro label-hop 1371 | | | | | | | +--ro value? 1372 rt-types:generalized-label 1373 | | | | | | +--:(sid) 1374 | | | | | | +--ro sid-hop 1375 | | | | | | +--ro sid? 1376 rt-types:generalized-label 1377 | | | | | +--ro shared-resources-tunnels 1378 | | | | | +--ro lsp-shared-resources-tunnel* 1379 te:tunnel-ref 1380 | | | | +--ro lsps 1381 | | | | | +--ro lsp* [source destination tunnel-id 1382 lsp-id 1383 extended-tunnel-id] 1384 | | | | | +--ro source 1385 inet:ip-address 1386 | | | | | +--ro destination 1387 inet:ip-address 1388 | | | | | +--ro tunnel-id uint16 1389 | | | | | +--ro lsp-id uint16 1390 | | | | | +--ro extended-tunnel-id 1391 inet:ip-address 1392 | | | | | +--ro operational-state? 1393 identityref 1394 | | | | | +--ro path-setup-protocol? 1395 identityref 1396 | | | | | +--ro origin-type? 1397 enumeration 1398 | | | | | +--ro lsp-resource-status? 1399 enumeration 1400 | | | | | +--ro lsp-protection-role? 1401 enumeration 1402 | | | | | +--ro lsp-protection-state? 1403 identityref 1404 | | | | | +--ro shared-resources-tunnels 1405 | | | | | | +--ro lsp-shared-resources-tunnel* 1406 te:tunnel-ref 1407 | | | | | +--ro lsp-record-route-subobjects 1408 | | | | | | +--ro record-route-subobject* [index] 1409 | | | | | | +--ro index -> ../state/index 1410 | | | | | | +--ro state 1411 | | | | | | +--ro index? uint32 1412 | | | | | | +--ro (type)? 1413 | | | | | | +--:(numbered) 1414 | | | | | | | +--ro address? 1415 te-types:te-tp-id 1416 | | | | | | | +--ro ip-flags? binary 1417 | | | | | | +--:(unnumbered) 1418 | | | | | | | +--ro node-id? 1419 te-types:te-node-id 1420 | | | | | | | +--ro link-tp-id? 1421 te-types:te-tp-id 1422 | | | | | | +--:(label) 1423 | | | | | | +--ro value? 1424 rt-types:generalized-label 1425 | | | | | | +--ro label-flags? binary 1426 | | | | | +--ro te-dev:lsp-timers 1427 | | | | | | +--ro te-dev:life-time? uint32 1428 | | | | | | +--ro te-dev:time-to-install? uint32 1429 | | | | | | +--ro te-dev:time-to-destroy? uint32 1430 | | | | | +--ro te-dev:downstream-info 1431 | | | | | | +--ro te-dev:nhop? 1432 inet:ip-address 1433 | | | | | | +--ro te-dev:outgoing-interface? 1434 if:interface-ref 1435 | | | | | | +--ro te-dev:neighbor? 1436 inet:ip-address 1437 | | | | | | +--ro te-dev:label? 1438 rt-types:generalized-label 1439 | | | | | +--ro te-dev:upstream-info 1440 | | | | | +--ro te-dev:phop? inet:ip-address 1441 | | | | | +--ro te-dev:neighbor? inet:ip-address 1442 | | | | | +--ro te-dev:label? 1443 rt-types:generalized-label 1444 | | | | +--ro te-mpls:static-lsp-name? 1445 mpls-static:static-lsp-ref 1446 | | | +--rw te-mpls:static-lsp-name? 1447 mpls-static:static-lsp-ref 1448 | | +---x tunnel-action 1449 | | | +---w input 1450 | | | | +---w action-type? identityref 1451 | | | +--ro output 1452 | | | +--ro action-result? identityref 1453 | | +--rw te-dev:lsp-install-interval? uint32 1454 | | +--rw te-dev:lsp-cleanup-interval? uint32 1455 | | +--rw te-dev:lsp-invalidation-interval? uint32 1456 | | +--rw te-mpls:tunnel-igp-shortcut 1457 | | | +--rw te-mpls:shortcut-eligible? boolean 1458 | | | +--rw te-mpls:metric-type? identityref 1459 | | | +--rw te-mpls:metric? int32 1460 | | | +--rw te-mpls:routing-afs* inet:ip-version 1461 | | +--rw te-mpls:forwarding 1462 | | | +--rw te-mpls:binding-label? rt-types:mpls-label 1463 | | | +--rw te-mpls:load-share? uint32 1464 | | | +--rw te-mpls:policy-class? uint8 1465 | | +--rw te-mpls:bandwidth-mpls 1466 | | +--rw te-mpls:specification-type? 1467 te-mpls-types:te-bandwidth-type 1468 | | +--rw te-mpls:set-bandwidth? 1469 te-mpls-types:bandwidth-kbps 1470 | | +--rw te-mpls:class-type? te-types:te-ds-class 1471 | | +--ro te-mpls:state 1472 | | | +--ro te-mpls:signaled-bandwidth? 1473 te-mpls-types:bandwidth-kbps 1474 | | +--rw te-mpls:auto-bandwidth 1475 | | +--rw te-mpls:enabled? boolean 1476 | | +--rw te-mpls:min-bw? 1477 te-mpls-types:bandwidth-kbps 1478 | | +--rw te-mpls:max-bw? 1479 te-mpls-types:bandwidth-kbps 1480 | | +--rw te-mpls:adjust-interval? uint32 1481 | | +--rw te-mpls:adjust-threshold? te-types:percentage 1482 | | +--rw te-mpls:overflow 1483 | | | +--rw te-mpls:enabled? boolean 1484 | | | +--rw te-mpls:overflow-threshold? 1485 te-types:percentage 1486 | | | +--rw te-mpls:trigger-event-count? uint16 1487 | | +--rw te-mpls:underflow 1488 | | +--rw te-mpls:enabled? boolean 1489 | | +--rw te-mpls:underflow-threshold? 1490 te-types:percentage 1491 | | +--rw te-mpls:trigger-event-count? uint16 1492 | +--rw tunnel-p2mp* [name] 1493 | +--rw name string 1494 | +--rw identifier? uint16 1495 | +--rw description? string 1496 | +--ro state 1497 | +--ro operational-state? identityref 1498 +--ro lsps-state 1499 | +--ro lsp* [source destination tunnel-id lsp-id 1500 extended-tunnel-id] 1501 | +--ro source inet:ip-address 1502 | +--ro destination inet:ip-address 1503 | +--ro tunnel-id uint16 1504 | +--ro lsp-id uint16 1505 | +--ro extended-tunnel-id inet:ip-address 1506 | +--ro operational-state? identityref 1507 | +--ro path-setup-protocol? identityref 1508 | +--ro origin-type? enumeration 1509 | +--ro lsp-resource-status? enumeration 1510 | +--ro lsp-protection-role? enumeration 1511 | +--ro lsp-protection-state? identityref 1512 | +--ro lsp-record-route-subobjects 1513 | | +--ro record-route-subobject* [index] 1514 | | +--ro index -> ../state/index 1515 | | +--ro state 1516 | | +--ro index? uint32 1517 | | +--ro (type)? 1518 | | +--:(numbered) 1519 | | | +--ro address? te-types:te-tp-id 1520 | | | +--ro ip-flags? binary 1521 | | +--:(unnumbered) 1522 | | | +--ro node-id? te-types:te-node-id 1523 | | | +--ro link-tp-id? te-types:te-tp-id 1524 | | +--:(label) 1525 | | +--ro value? 1526 rt-types:generalized-label 1527 | | +--ro label-flags? binary 1528 | +--ro te-dev:lsp-timers 1529 | | +--ro te-dev:life-time? uint32 1530 | | +--ro te-dev:time-to-install? uint32 1531 | | +--ro te-dev:time-to-destroy? uint32 1532 | +--ro te-dev:downstream-info 1533 | | +--ro te-dev:nhop? inet:ip-address 1534 | | +--ro te-dev:outgoing-interface? if:interface-ref 1535 | | +--ro te-dev:neighbor? inet:ip-address 1536 | | +--ro te-dev:label? 1537 rt-types:generalized-label 1538 | +--ro te-dev:upstream-info 1539 | +--ro te-dev:phop? inet:ip-address 1540 | +--ro te-dev:neighbor? inet:ip-address 1541 | +--ro te-dev:label? rt-types:generalized-label 1542 +---x protection-external-commands 1543 | +---w input 1544 | +---w protection-external-command? identityref 1545 | +---w tunnel-using-lsp-resources? te:tunnel-ref 1546 +--rw te-dev:interfaces 1547 +--rw te-dev:threshold-type? enumeration 1548 +--rw te-dev:delta-percentage? te-types:percentage 1549 +--rw te-dev:threshold-specification? enumeration 1550 +--rw te-dev:up-thresholds* te-types:percentage 1551 +--rw te-dev:down-thresholds* te-types:percentage 1552 +--rw te-dev:up-down-thresholds* te-types:percentage 1553 +--rw te-dev:interface* [interface] 1554 +--rw te-dev:interface if:interface-ref 1555 +--rw te-dev:te-metric? te-types:te-metric 1556 +--rw (te-dev:admin-group-type)? 1557 | +--:(te-dev:value-admin-groups) 1558 | | +--rw (te-dev:value-admin-group-type)? 1559 | | +--:(te-dev:admin-groups) 1560 | | | +--rw te-dev:admin-group? 1561 te-types:admin-group 1562 | | +--:(te-dev:extended-admin-groups) 1563 {te-types:extended-admin-groups}? 1564 | | +--rw te-dev:extended-admin-group? 1565 te-types:extended-admin-group 1566 | +--:(te-dev:named-admin-groups) 1567 | +--rw te-dev:named-admin-groups* [named-admin-group] 1568 {te-types:extended-admin-groups,te-types: 1569 named-extended-admin-groups}? 1570 | +--rw te-dev:named-admin-group -> 1571 ../../../../te:globals/named-admin-groups/ 1572 named-admin-group/name 1573 +--rw (te-dev:srlg-type)? 1574 | +--:(te-dev:value-srlgs) 1575 | | +--rw te-dev:values* [value] 1576 | | +--rw te-dev:value uint32 1577 | +--:(te-dev:named-srlgs) 1578 | +--rw te-dev:named-srlgs* [named-srlg] 1579 {te-types:named-srlg-groups}? 1580 | +--rw te-dev:named-srlg -> 1581 ../../../../te:globals/named-srlgs/named-srlg/name 1582 +--rw te-dev:threshold-type? enumeration 1583 +--rw te-dev:delta-percentage? te-types:percentage 1584 +--rw te-dev:threshold-specification? enumeration 1585 +--rw te-dev:up-thresholds* te-types:percentage 1586 +--rw te-dev:down-thresholds* te-types:percentage 1587 +--rw te-dev:up-down-thresholds* te-types:percentage 1588 +--rw te-dev:switching-capabilities* [switching-capability] 1589 | +--rw te-dev:switching-capability identityref 1590 | +--rw te-dev:encoding? identityref 1591 +--ro te-dev:state 1592 +--ro te-dev:te-advertisements_state 1593 +--ro te-dev:flood-interval? uint32 1594 +--ro te-dev:last-flooded-time? uint32 1595 +--ro te-dev:next-flooded-time? uint32 1596 +--ro te-dev:last-flooded-trigger? enumeration 1597 +--ro te-dev:advertized-level-areas* [level-area] 1598 +--ro te-dev:level-area uint32 1600 rpcs: 1601 +---x globals-rpc 1602 +---x interfaces-rpc 1603 +---x tunnels-rpc 1604 +---w input 1605 | +---w tunnel-info 1606 | +---w (type)? 1607 | +--:(tunnel-p2p) 1608 | | +---w p2p-id? te:tunnel-ref 1609 | +--:(tunnel-p2mp) 1610 | +---w p2mp-id? te:tunnel-p2mp-ref 1611 +--ro output 1612 +--ro result 1613 +--ro result? enumeration 1615 notifications: 1616 +---n globals-notif 1617 +---n tunnels-notif 1618 module: ietf-te-device 1620 rpcs: 1621 +---x interfaces-rpc 1623 notifications: 1624 +---n interfaces-notif 1626 Figure 6: TE generic model configuration and state tree 1628 4. TE Generic and Helper YANG Modules 1630 file "ietf-te-types@2017-10-29.yang" 1631 module ietf-te-types { 1633 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; 1635 /* Replace with IANA when assigned */ 1636 prefix "te-types"; 1638 import ietf-inet-types { 1639 prefix inet; 1640 } 1642 import ietf-yang-types { 1643 prefix "yang"; 1644 } 1646 import ietf-routing-types { 1647 prefix "rt-types"; 1648 } 1650 organization 1651 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1652 Working Group"; 1654 contact 1655 "WG Web: 1656 WG List: 1658 WG Chair: Lou Berger 1659 1661 WG Chair: Vishnu Pavan Beeram 1662 1664 Editor: Tarek Saad 1665 1667 Editor: Rakesh Gandhi 1668 1670 Editor: Vishnu Pavan Beeram 1671 1673 Editor: Himanshu Shah 1674 1676 Editor: Xufeng Liu 1677 1679 Editor: Igor Bryskin 1680 "; 1682 description 1683 "This module contains a collection of generally 1684 useful TE specific YANG data type defintions."; 1686 revision "2017-10-29" { 1687 description "Latest revision of TE types"; 1688 reference "RFC3209"; 1689 } 1691 /* 1692 * Identities 1693 */ 1694 identity objective-function-type { 1695 description "Base objective function type"; 1696 } 1697 identity of-minimize-cost-path { 1698 base objective-function-type; 1699 description 1700 "Mimimuze cost of path objective function"; 1701 } 1702 identity of-minimize-load-path { 1703 base objective-function-type; 1704 description 1705 "Minimize the load on path(s) objective 1706 function"; 1707 } 1708 identity of-maximize-residual-bandwidth { 1709 base objective-function-type; 1710 description 1711 "Maximize the residual bandwidth objective 1712 function"; 1713 } 1714 identity of-minimize-agg-bandwidth-consumption { 1715 base objective-function-type; 1716 description 1717 "minimize the aggregate bandwidth consumption 1718 objective function"; 1719 } 1720 identity of-minimize-load-most-loaded-link { 1721 base objective-function-type; 1722 description 1723 "Minimize the load on the most loaded link 1724 objective function"; 1725 } 1726 identity of-minimize-cost-path-set { 1727 base objective-function-type; 1728 description 1729 "Minimize the cost on a path set objective 1730 function"; 1731 } 1733 identity path-computation-method { 1734 description 1735 "base identity for supported path computation 1736 mechanisms"; 1737 } 1739 identity path-locally-computed { 1740 base path-computation-method; 1741 description 1742 "indicates a constrained-path LSP in which the 1743 path is computed by the local LER"; 1744 } 1746 identity path-externally-queried { 1747 base path-computation-method; 1748 description 1749 "Constrained-path LSP in which the path is 1750 obtained by querying an external source, such as a PCE server. 1751 In the case that an LSP is defined to be externally queried, it 1752 may also have associated explicit definitions (provided 1753 to the external source to aid computation); and the path that is 1754 returned by the external source is not required to provide a 1755 wholly resolved path back to the originating system - that is to 1756 say, some local computation may also be required"; 1757 } 1759 identity path-explicitly-defined { 1760 base path-computation-method; 1761 description 1762 "constrained-path LSP in which the path is 1763 explicitly specified as a collection of strict or/and loose 1764 hops"; 1765 } 1767 /** 1768 * Typedefs 1769 */ 1771 typedef te-bandwidth { 1772 type string { 1773 pattern 1774 '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' 1775 + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' 1776 + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+' 1777 + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' 1778 + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' 1779 + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*'; 1780 } 1781 description 1782 "This is the generic bandwidth type that is a string containing 1783 a list of numbers separated by commas, with each of these 1784 number can be non-negative decimal, hex integer, or hex float: 1785 (dec | hex | float)[*(','(dec | hex | float))] 1786 For packet switching type, a float number is used, such as 1787 0x1p10. 1788 For OTN switching type, a list of integers can be used, such 1789 as '0,2,3,1', indicating 2 odu0's and 1 odu3. 1790 For DWDM, a list of pairs of slot number and width can be 1791 used, such as '0, 2, 3, 3', indicating a frequency slot 0 with 1792 slot width 2 and a frequency slot 3 with slot width 3."; 1793 } // te-bandwidth 1795 typedef te-ds-class { 1796 type uint8 { 1797 range "0..7"; 1798 } 1799 description 1800 "The Differentiatied Class-Type of traffic."; 1801 reference "RFC4124: section-4.3.1"; 1802 } 1804 typedef te-hop-type { 1805 type enumeration { 1806 enum LOOSE { 1807 description 1808 "loose hop in an explicit path"; 1809 } 1810 enum STRICT { 1811 description 1812 "strict hop in an explicit path"; 1813 } 1814 } 1815 description 1816 "enumerated type for specifying loose or strict 1817 paths"; 1818 } 1819 identity LSP_METRIC_TYPE { 1820 description 1821 "Base identity for types of LSP metric specification"; 1822 } 1824 identity LSP_METRIC_RELATIVE { 1825 base LSP_METRIC_TYPE; 1826 description 1827 "The metric specified for the LSPs to which this identity refers 1828 is specified as a relative value to the IGP metric cost to the 1829 LSP's tail-end."; 1830 } 1832 identity LSP_METRIC_ABSOLUTE { 1833 base LSP_METRIC_TYPE; 1834 description 1835 "The metric specified for the LSPs to which this identity refers 1836 is specified as an absolute value"; 1837 } 1839 identity LSP_METRIC_INHERITED { 1840 base LSP_METRIC_TYPE; 1841 description 1842 "The metric for for the LSPs to which this identity refers is 1843 not specified explicitly - but rather inherited from the IGP 1844 cost directly"; 1845 } 1847 identity tunnel-type { 1848 description 1849 "Base identity from which specific tunnel types are 1850 derived."; 1851 } 1853 identity tunnel-p2p { 1854 base tunnel-type; 1855 description 1856 "TE point-to-point tunnel type."; 1857 } 1859 identity tunnel-p2mp { 1860 base tunnel-type; 1861 description 1862 "TE point-to-multipoint tunnel type."; 1863 } 1865 identity tunnel-action-type { 1866 description 1867 "Base identity from which specific tunnel action types 1868 are derived."; 1869 } 1871 identity tunnel-action-resetup { 1872 base tunnel-action-type; 1873 description 1874 "TE tunnel action resetup. Tears the 1875 tunnel's current LSP (if any) and 1876 attempts to re-establish a new LSP"; 1877 } 1879 identity tunnel-action-reoptimize { 1880 base tunnel-action-type; 1881 description 1882 "TE tunnel action reoptimize. 1883 Reoptimizes placement of the tunnel LSP(s)"; 1884 } 1886 identity tunnel-action-switchpath { 1887 base tunnel-action-type; 1888 description 1889 "TE tunnel action reoptimize 1890 Switches the tunnel's LSP to use the specified path"; 1891 } 1893 identity te-action-result { 1894 description 1895 "Base identity from which specific TE action results 1896 are derived."; 1897 } 1899 identity te-action-success { 1900 base te-action-result; 1901 description "TE action successul."; 1902 } 1904 identity te-action-fail { 1905 base te-action-result; 1906 description "TE action failed."; 1907 } 1909 identity tunnel-action-inprogress { 1910 base te-action-result; 1911 description "TE action inprogress."; 1912 } 1914 identity tunnel-admin-state-type { 1915 description 1916 "Base identity for TE tunnel admin states"; 1917 } 1919 identity tunnel-admin-state-up { 1920 base tunnel-admin-state-type; 1921 description "Tunnel administratively state up"; 1922 } 1924 identity tunnel-admin-state-down { 1925 base tunnel-admin-state-type; 1926 description "Tunnel administratively state down"; 1927 } 1929 identity tunnel-state-type { 1930 description 1931 "Base identity for TE tunnel states"; 1932 } 1934 identity tunnel-state-up { 1935 base tunnel-state-type; 1936 description "Tunnel state up"; 1937 } 1939 identity tunnel-state-down { 1940 base tunnel-state-type; 1941 description "Tunnel state down"; 1942 } 1944 identity lsp-state-type { 1945 description 1946 "Base identity for TE LSP states"; 1947 } 1949 identity lsp-path-computing { 1950 base lsp-state-type; 1951 description 1952 "State path compute in progress"; 1953 } 1955 identity lsp-path-computation-ok { 1956 base lsp-state-type; 1957 description 1958 "State path compute successful"; 1959 } 1961 identity lsp-path-computatione-failed { 1962 base lsp-state-type; 1963 description 1964 "State path compute failed"; 1965 } 1967 identity lsp-state-setting-up { 1968 base lsp-state-type; 1969 description 1970 "State setting up"; 1971 } 1973 identity lsp-state-setup-ok { 1974 base lsp-state-type; 1975 description 1976 "State setup successful"; 1977 } 1979 identity lsp-state-setup-failed { 1980 base lsp-state-type; 1981 description 1982 "State setup failed"; 1983 } 1985 identity lsp-state-up { 1986 base lsp-state-type; 1987 description "State up"; 1988 } 1990 identity lsp-state-tearing-down { 1991 base lsp-state-type; 1992 description 1993 "State tearing down"; 1994 } 1996 identity lsp-state-down { 1997 base lsp-state-type; 1998 description "State down"; 1999 } 2001 identity path-invalidation-action-type { 2002 description 2003 "Base identity for TE path invalidation action types"; 2004 } 2006 identity path-invalidation-action-drop-type { 2007 base path-invalidation-action-type; 2008 description 2009 "TE path invalidation action drop"; 2010 } 2011 identity path-invalidation-action-drop-tear { 2012 base path-invalidation-action-type; 2013 description 2014 "TE path invalidation action tear"; 2015 } 2017 identity lsp-restoration-type { 2018 description 2019 "Base identity from which LSP restoration types are 2020 derived."; 2021 } 2023 identity lsp-restoration-restore-any { 2024 base lsp-restoration-type; 2025 description 2026 "Restores when any of the LSPs is affected by a failure"; 2027 } 2029 identity lsp-restoration-restore-all { 2030 base lsp-restoration-type; 2031 description 2032 "Restores when all the tunnel LSPs are affected by failure"; 2033 } 2035 identity restoration-scheme-type { 2036 description 2037 "Base identity for LSP restoration schemes"; 2038 } 2040 identity restoration-scheme-preconfigured { 2041 base restoration-scheme-type; 2042 description 2043 "Restoration LSP is preconfigured prior to the failure"; 2044 } 2046 identity restoration-scheme-precomputed { 2047 base restoration-scheme-type; 2048 description 2049 "Restoration LSP is precomputed prior to the failure"; 2050 } 2052 identity restoration-scheme-presignaled { 2053 base restoration-scheme-type; 2054 description 2055 "Restoration LSP is presignaledd prior to the failure"; 2056 } 2058 identity lsp-protection-type { 2059 description 2060 "Base identity from which LSP protection types are 2061 derived."; 2062 } 2064 identity lsp-protection-unprotected { 2065 base lsp-protection-type; 2066 description 2067 "LSP protection 'Unprotected'"; 2068 reference "RFC4872"; 2069 } 2071 identity lsp-protection-reroute-extra { 2072 base lsp-protection-type; 2073 description 2074 "LSP protection '(Full) Rerouting'"; 2075 reference "RFC4872"; 2076 } 2078 identity lsp-protection-reroute { 2079 base lsp-protection-type; 2080 description 2081 "LSP protection 'Rerouting without Extra-Traffic'"; 2082 reference "RFC4872"; 2083 } 2085 identity lsp-protection-1-for-n { 2086 base lsp-protection-type; 2087 description 2088 "LSP protection '1:N Protection with Extra-Traffic'"; 2089 reference "RFC4872"; 2090 } 2092 identity lsp-protection-unidir-1-to-1 { 2093 base lsp-protection-type; 2094 description 2095 "LSP protection '1+1 Unidirectional Protection'"; 2096 reference "RFC4872"; 2097 } 2099 identity lsp-protection-bidir-1-to-1 { 2100 base lsp-protection-type; 2101 description 2102 "LSP protection '1+1 Bidirectional Protection'"; 2103 reference "RFC4872"; 2104 } 2106 identity lsp-protection-state { 2107 description 2108 "Base identity of protection states for reporting 2109 purposes."; 2110 } 2112 identity lsp-protection-extra-traffic { 2113 base lsp-protection-type; 2114 description 2115 "LSP protection 'Extra-Traffic'"; 2116 reference 2117 "ITU-T G.808, RFC 4427."; 2118 } 2120 identity normal { 2121 base lsp-protection-state; 2122 description "Normal state."; 2123 } 2125 identity signal-fail-of-protection { 2126 base lsp-protection-state; 2127 description 2128 "There is a SF condition on the protection transport 2129 entity which has higher priority than the FS command."; 2130 reference 2131 "ITU-T G.873.1, G.8031, G.8131"; 2132 } 2134 identity lockout-of-protection { 2135 base lsp-protection-state; 2136 description 2137 "A Loss of Protection (LoP) command is active."; 2138 reference 2139 "ITU-T G.808, RFC 4427"; 2140 } 2142 identity forced-switch { 2143 base lsp-protection-state; 2144 description 2145 "A forced switch (FS) command is active."; 2146 reference 2147 "ITU-T G.808, RFC 4427"; 2148 } 2150 identity signal-fail { 2151 base lsp-protection-state; 2152 description 2153 "There is a SF condition on either the working 2154 or the protection path."; 2156 reference 2157 "ITU-T G.808, RFC 4427"; 2158 } 2160 identity signal-degrade { 2161 base lsp-protection-state; 2162 description 2163 "There is an SD condition on either the working or the 2164 protection path."; 2165 reference 2166 "ITU-T G.808, RFC 4427"; 2167 } 2169 identity local-wait-to-restore { 2170 base lsp-protection-state; 2171 description 2172 "A local WTR is running."; 2173 reference 2174 "ITU-T G.808, RFC 4427"; 2175 } 2177 identity remote-wait-to-restore { 2178 base lsp-protection-state; 2179 description 2180 "A remote WTR is running."; 2181 reference 2182 "ITU-T G.808, RFC 4427"; 2183 } 2185 identity do-not-revert { 2186 base lsp-protection-state; 2187 description 2188 "A DNR condition is active because of a non-revertive 2189 behavior."; 2190 reference 2191 "ITU-T G.808, RFC 4427"; 2192 } 2194 identity failure-of-protocol { 2195 base lsp-protection-state; 2196 description 2197 "The protection is not working because of a failure of 2198 protocol condition."; 2199 reference 2200 "ITU-T G.873.1, G.8031, G.8131"; 2201 } 2203 identity protection-external-commands { 2204 description 2205 "Protection external commands for trouble shooting 2206 purposes."; 2207 } 2209 identity action-lockout-of-protection { 2210 base protection-external-commands; 2211 description 2212 "A temporary configuration action initiated by an operator 2213 command to ensure that the protection transport entity is 2214 temporarily not available to transport a traffic signal 2215 (either normal or extra traffic)."; 2216 reference 2217 "ITU-T G.808, RFC 4427"; 2218 } 2220 identity action-forced-switch { 2221 base protection-external-commands; 2222 description 2223 "A switch action initiated by an operator command to swith 2224 the extra traffic signal, the normal traffic signal, or the 2225 null signal to the protection transport entity, unless an 2226 equal or higher priority switch command is in effect."; 2227 reference 2228 "ITU-T G.808, RFC 4427"; 2229 } 2231 identity action-manual-switch { 2232 base protection-external-commands; 2233 description 2234 "A switch action initiated by an operator command to swith 2235 the extra traffic signal, the normal traffic signal #i, or 2236 the null signal to the protection transport entity, unless 2237 a fault condition exists on other transport entities or an 2238 equal or higher priority switch command is in effect."; 2239 reference 2240 "ITU-T G.808, RFC 4427"; 2241 } 2243 identity action-exercise { 2244 base protection-external-commands; 2245 description 2246 "An action to start testing if the APS communication is 2247 operating correctly. It is lower priority than any other 2248 state or command."; 2249 reference 2250 "ITU-T G.808, RFC 4427"; 2251 } 2252 identity clear { 2253 base protection-external-commands; 2254 description 2255 "An action that clears the active near-end lockout of 2256 protection, forced switch, manual switch, WTR state, 2257 or exercise command."; 2258 reference 2259 "ITU-T G.808, RFC 4427"; 2260 } 2262 identity switching-capabilities { 2263 description 2264 "Base identity for interface switching capabilities"; 2265 } 2267 identity switching-psc1 { 2268 base switching-capabilities; 2269 description 2270 "Packet-Switch Capable-1 (PSC-1)"; 2271 } 2273 identity switching-evpl { 2274 base switching-capabilities; 2275 description 2276 "Ethernet Virtual Private Line (EVPL)"; 2277 } 2279 identity switching-l2sc { 2280 base switching-capabilities; 2281 description 2282 "Layer-2 Switch Capable (L2SC)"; 2283 } 2285 identity switching-tdm { 2286 base switching-capabilities; 2287 description 2288 "Time-Division-Multiplex Capable (TDM)"; 2289 } 2291 identity switching-otn { 2292 base switching-capabilities; 2293 description 2294 "OTN-TDM capable"; 2295 } 2297 identity switching-dcsc { 2298 base switching-capabilities; 2299 description 2300 "Data Channel Switching Capable (DCSC)"; 2301 } 2303 identity switching-lsc { 2304 base switching-capabilities; 2305 description 2306 "Lambda-Switch Capable (LSC)"; 2307 } 2309 identity switching-fsc { 2310 base switching-capabilities; 2311 description 2312 "Fiber-Switch Capable (FSC)"; 2313 } 2315 identity lsp-encoding-types { 2316 description 2317 "Base identity for encoding types"; 2318 } 2320 identity lsp-encoding-packet { 2321 base lsp-encoding-types; 2322 description 2323 "Packet LSP encoding"; 2324 } 2326 identity lsp-encoding-ethernet { 2327 base lsp-encoding-types; 2328 description 2329 "Ethernet LSP encoding"; 2330 } 2332 identity lsp-encoding-pdh { 2333 base lsp-encoding-types; 2334 description 2335 "ANSI/ETSI LSP encoding"; 2336 } 2338 identity lsp-encoding-sdh { 2339 base lsp-encoding-types; 2340 description 2341 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; 2342 } 2344 identity lsp-encoding-digital-wrapper { 2345 base lsp-encoding-types; 2346 description 2347 "Digital Wrapper LSP encoding"; 2348 } 2350 identity lsp-encoding-lambda { 2351 base lsp-encoding-types; 2352 description 2353 "Lambda (photonic) LSP encoding"; 2354 } 2356 identity lsp-encoding-fiber { 2357 base lsp-encoding-types; 2358 description 2359 "Fiber LSP encoding"; 2360 } 2362 identity lsp-encoding-fiber-channel { 2363 base lsp-encoding-types; 2364 description 2365 "FiberChannel LSP encoding"; 2366 } 2368 identity lsp-encoding-oduk { 2369 base lsp-encoding-types; 2370 description 2371 "G.709 ODUk (Digital Path)LSP encoding"; 2372 } 2374 identity lsp-encoding-optical-channel { 2375 base lsp-encoding-types; 2376 description 2377 "Line (e.g., 8B/10B) LSP encoding"; 2378 } 2380 identity lsp-encoding-line { 2381 base lsp-encoding-types; 2382 description 2383 "Line (e.g., 8B/10B) LSP encoding"; 2384 } 2386 identity path-signaling-type { 2387 description 2388 "base identity from which specific LSPs path 2389 setup types are derived"; 2390 } 2392 identity path-setup-static { 2393 base path-signaling-type; 2394 description 2395 "Static LSP provisioning path setup"; 2396 } 2398 identity path-setup-rsvp { 2399 base path-signaling-type; 2400 description 2401 "RSVP-TE signaling path setup"; 2402 } 2404 identity path-setup-sr { 2405 base path-signaling-type; 2406 description 2407 "Segment-routing path setup"; 2408 } 2410 identity path-scope-type { 2411 description 2412 "base identity from which specific path 2413 scope types are derived"; 2414 } 2416 identity path-scope-segment { 2417 base path-scope-type; 2418 description 2419 "Path scope segment"; 2420 } 2422 identity path-scope-end-to-end { 2423 base path-scope-type; 2424 description 2425 "Path scope end to end"; 2426 } 2428 /* TE basic features */ 2429 feature p2mp-te { 2430 description 2431 "Indicates support for P2MP-TE"; 2432 } 2434 feature frr-te { 2435 description 2436 "Indicates support for TE FastReroute (FRR)"; 2437 } 2439 feature extended-admin-groups { 2440 description 2441 "Indicates support for TE link extended admin 2442 groups."; 2443 } 2445 feature named-path-affinities { 2446 description 2447 "Indicates support for named path affinities"; 2448 } 2450 feature named-extended-admin-groups { 2451 description 2452 "Indicates support for named extended admin groups"; 2453 } 2455 feature named-srlg-groups { 2456 description 2457 "Indicates support for named SRLG groups"; 2458 } 2460 feature named-path-constraints { 2461 description 2462 "Indicates support for named path constraints"; 2463 } 2465 feature path-optimization-metric { 2466 description 2467 "Indicates support for path optimization metric"; 2468 } 2470 feature path-optimization-objective-function { 2471 description 2472 "Indicates support for path optimization objective function"; 2473 } 2475 identity route-usage-type { 2476 description 2477 "Base identity for route usage"; 2478 } 2480 identity route-include-ero { 2481 base route-usage-type; 2482 description 2483 "Include ERO from route"; 2484 } 2486 identity route-exclude-ero { 2487 base route-usage-type; 2488 description 2489 "Exclude ERO from route"; 2491 } 2493 identity route-exclude-srlg { 2494 base route-usage-type; 2495 description 2496 "Exclude SRLG from route"; 2497 } 2499 identity path-metric-type { 2500 description 2501 "Base identity for path metric type"; 2502 } 2504 identity path-metric-te { 2505 base path-metric-type; 2506 description 2507 "TE path metric"; 2508 } 2510 identity path-metric-igp { 2511 base path-metric-type; 2512 description 2513 "IGP path metric"; 2514 } 2516 identity path-metric-hop { 2517 base path-metric-type; 2518 description 2519 "Hop path metric"; 2520 } 2522 identity path-metric-delay-average { 2523 base path-metric-type; 2524 description 2525 "Unidirectional average link delay"; 2526 reference "RFC7471"; 2527 } 2529 identity path-metric-residual-bandwidth { 2530 base path-metric-type; 2531 description 2532 "Unidirectional Residual Bandwidth, which is defined to be 2533 Maximum Bandwidth [RFC3630] minus the bandwidth currently 2534 allocated to LSPs."; 2535 reference "RFC7471"; 2536 } 2538 identity path-tiebreaker-type { 2539 description 2540 "Base identity for path tie-breaker type"; 2541 } 2543 identity path-tiebreaker-minfill { 2544 base path-tiebreaker-type; 2545 description 2546 "Min-Fill LSP path placement"; 2547 } 2549 identity path-tiebreaker-maxfill { 2550 base path-tiebreaker-type; 2551 description 2552 "Max-Fill LSP path placement"; 2553 } 2555 identity path-tiebreaker-randoom { 2556 base path-tiebreaker-type; 2557 description 2558 "Random LSP path placement"; 2559 } 2561 identity bidir-provisioning-mode { 2562 description 2563 "Base identity for bidirectional provisioning 2564 mode."; 2565 } 2567 identity bidir-provisioning-single-sided { 2568 base bidir-provisioning-mode; 2569 description 2570 "Single-sided bidirectional provioning mode"; 2571 } 2573 identity bidir-provisioning-double-sided { 2574 base bidir-provisioning-mode; 2575 description 2576 "Double-sided bidirectional provioning mode"; 2577 } 2579 identity bidir-association-type { 2580 description 2581 "Base identity for bidirectional association type"; 2582 } 2584 identity bidir-assoc-corouted { 2585 base bidir-association-type; 2586 description 2587 "Co-routed bidirectional association type"; 2588 } 2590 identity bidir-assoc-non-corouted { 2591 base bidir-association-type; 2592 description 2593 "Non co-routed bidirectional association type"; 2594 } 2596 identity resource-affinities-type { 2597 description 2598 "Base identity for resource affinities"; 2599 } 2601 identity resource-aff-include-all { 2602 base resource-affinities-type; 2603 description 2604 "The set of attribute filters associated with a 2605 tunnel all of which must be present for a link 2606 to be acceptable"; 2607 } 2609 identity resource-aff-include-any { 2610 base resource-affinities-type; 2611 description 2612 "The set of attribute filters associated with a 2613 tunnel any of which must be present for a link 2614 to be acceptable"; 2615 } 2617 identity resource-aff-exclude-any { 2618 base resource-affinities-type; 2619 description 2620 "The set of attribute filters associated with a 2621 tunnel any of which renders a link unacceptable"; 2622 } 2624 typedef optimization-goal { 2625 type enumeration { 2626 enum minimize { 2627 description "Pick lowest path metric goal"; 2628 } 2629 enum maximize { 2630 description "Pick highest path metric goal"; 2631 } 2632 enum randomize { 2633 description 2634 "Pick a path at random from list of 2635 equally favorable ones"; 2636 } 2637 } 2638 description "TE optimization goal"; 2639 } 2641 identity te-optimization-criterion { 2642 description 2643 "Base identity for TE optimization criterion."; 2644 reference 2645 "RFC3272: Overview and Principles of Internet Traffic 2646 Engineering."; 2647 } 2649 identity not-optimized { 2650 base te-optimization-criterion; 2651 description "Optimization is not applied."; 2652 } 2654 identity cost { 2655 base te-optimization-criterion; 2656 description "Optimized on cost."; 2657 } 2659 identity delay { 2660 base te-optimization-criterion; 2661 description "Optimized on delay."; 2662 } 2664 /* 2665 * Typedefs 2666 */ 2668 typedef percentage { 2669 type uint8 { 2670 range "0..100"; 2671 } 2672 description 2673 "Integer indicating a percentage value"; 2674 } 2676 typedef performance-metric-normality { 2677 type enumeration { 2678 enum "unknown" { 2679 value 0; 2680 description 2681 "Unknown."; 2682 } 2683 enum "normal" { 2684 value 1; 2685 description 2686 "Normal."; 2687 } 2688 enum "abnormal" { 2689 value 2; 2690 description 2691 "Abnormal. The anomalous bit is set."; 2692 } 2693 } 2694 description 2695 "Indicates whether a performance metric is normal, abnormal, or 2696 unknown."; 2697 reference 2698 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 2699 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 2700 RFC7823: Performance-Based Path Selection for Explicitly 2701 Routed Label Switched Paths (LSPs) Using TE Metric 2702 Extensions"; 2703 } 2705 typedef te-admin-status { 2706 type enumeration { 2707 enum up { 2708 description 2709 "Enabled."; 2710 } 2711 enum down { 2712 description 2713 "Disabled."; 2714 } 2715 enum testing { 2716 description 2717 "In some test mode."; 2718 } 2719 enum preparing-maintenance { 2720 description 2721 "Resource is disabled in the control plane to prepare for 2722 graceful shutdown for maintenance purposes."; 2723 reference 2724 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2725 Traffic Engineering Networks"; 2726 } 2727 enum maintenance { 2728 description 2729 "Resource is disabled in the data plane for maintenance 2730 purposes."; 2732 } 2733 } 2734 description 2735 "Defines a type representing the administrative status of 2736 a TE resource."; 2737 } 2739 typedef te-global-id { 2740 type uint32; 2741 description 2742 "An identifier to uniquely identify an operator, which can be 2743 either a provider or a client. 2744 The definition of this type is taken from RFC6370 and RFC5003. 2745 This attribute type is used solely to provide a globally 2746 unique context for TE topologies."; 2747 } 2749 typedef te-link-access-type { 2750 type enumeration { 2751 enum point-to-point { 2752 description 2753 "The link is point-to-point."; 2754 } 2755 enum multi-access { 2756 description 2757 "The link is multi-access, including broacast and NBMA."; 2758 } 2759 } 2760 description 2761 "Defines a type representing the access type of a TE link."; 2762 reference 2763 "RFC3630: Traffic Engineering (TE) Extensions to OSPF 2764 Version 2."; 2765 } 2767 typedef te-node-id { 2768 type yang:dotted-quad; 2769 description 2770 "An identifier for a node in a topology. 2771 The identifier is represented as 32-bit unsigned integer in 2772 the dotted-quad notation. 2773 This attribute is mapped to Router ID in 2774 RFC3630, RFC5329, RFC5305, and RFC6119."; 2775 } 2777 typedef te-oper-status { 2778 type enumeration { 2779 enum up { 2780 description 2781 "Operational up."; 2782 } 2783 enum down { 2784 description 2785 "Operational down."; 2786 } 2787 enum testing { 2788 description 2789 "In some test mode."; 2790 } 2791 enum unknown { 2792 description 2793 "Status cannot be determined for some reason."; 2794 } 2795 enum preparing-maintenance { 2796 description 2797 "Resource is disabled in the control plane to prepare for 2798 graceful shutdown for maintenance purposes."; 2799 reference 2800 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2801 Traffic Engineering Networks"; 2802 } 2803 enum maintenance { 2804 description 2805 "Resource is disabled in the data plane for maintenance 2806 purposes."; 2807 } 2808 } 2809 description 2810 "Defines a type representing the operational status of 2811 a TE resource."; 2812 } 2814 typedef te-path-disjointness { 2815 type bits { 2816 bit node { 2817 position 0; 2818 description "Node disjoint."; 2819 } 2820 bit link { 2821 position 1; 2822 description "Link disjoint."; 2823 } 2824 bit srlg { 2825 position 2; 2826 description "SRLG (Shared Risk Link Group) disjoint."; 2827 } 2829 } 2830 description 2831 "Type of the resource disjointness for a TE tunnel path."; 2832 reference 2833 "RFC4872: RSVP-TE Extensions in Support of End-to-End 2834 Generalized Multi-Protocol Label Switching (GMPLS) 2835 Recovery"; 2836 } // te-path-disjointness 2838 typedef te-recovery-status { 2839 type enumeration { 2840 enum normal { 2841 description 2842 "Both the recovery and working spans are fully 2843 allocated and active, data traffic is being 2844 transported over (or selected from) the working 2845 span, and no trigger events are reported."; 2846 } 2847 enum recovery-started { 2848 description 2849 "The recovery action has been started, but not completed."; 2850 } 2851 enum recovery-succeeded { 2852 description 2853 "The recovery action has succeeded. The working span has 2854 reported a failure/degrade condition and the user traffic 2855 is being transported (or selected) on the recovery span."; 2856 } 2857 enum recovery-failed { 2858 description 2859 "The recovery action has failed."; 2860 } 2861 enum reversion-started { 2862 description 2863 "The reversion has started."; 2864 } 2865 enum reversion-failed { 2866 description 2867 "The reversion has failed."; 2868 } 2869 enum recovery-unavailable { 2870 description 2871 "The recovery is unavailable -- either as a result of an 2872 operator Lockout command or a failure condition detected 2873 on the recovery span."; 2874 } 2875 enum recovery-admin { 2876 description 2877 "The operator has issued a command switching the user 2878 traffic to the recovery span."; 2879 } 2880 enum wait-to-restore { 2881 description 2882 "The recovery domain is recovering from a failuer/degrade 2883 condition on the working span that is being controlled by 2884 the Wait-to-Restore (WTR) timer."; 2885 } 2886 } 2887 description 2888 "Defines the status of a recovery action."; 2889 reference 2890 "RFC4427: Recovery (Protection and Restoration) Terminology 2891 for Generalized Multi-Protocol Label Switching (GMPLS). 2892 RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection"; 2893 } 2895 typedef te-template-name { 2896 type string { 2897 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2898 } 2899 description 2900 "A type for the name of a TE node template or TE link 2901 template."; 2902 } 2904 typedef te-topology-event-type { 2905 type enumeration { 2906 enum "add" { 2907 value 0; 2908 description 2909 "A TE node or te-link has been added."; 2910 } 2911 enum "remove" { 2912 value 1; 2913 description 2914 "A TE node or te-link has been removed."; 2915 } 2916 enum "update" { 2917 value 2; 2918 description 2919 "A TE node or te-link has been updated."; 2920 } 2921 } 2922 description "TE Event type for notifications"; 2923 } // te-topology-event-type 2924 typedef te-topology-id { 2925 type string { 2926 pattern 2927 '([a-zA-Z0-9\-_.]+:)*' 2928 + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2929 } 2930 description 2931 "An identifier for a topology. 2932 It is optional to have one or more prefixes at the begining, 2933 separated by colons. The prefixes can be the network-types, 2934 defined in ietf-network.yang, to help user to understand the 2935 topology better before further inquiry."; 2936 } 2938 typedef te-tp-id { 2939 type union { 2940 type uint32; // Unnumbered 2941 type inet:ip-address; // IPv4 or IPv6 address 2942 } 2943 description 2944 "An identifier for a TE link endpoint on a node. 2945 This attribute is mapped to local or remote link identifier in 2946 RFC3630 and RFC5305."; 2947 } 2949 typedef admin-group { 2950 type binary { 2951 length 4; 2952 } 2953 description 2954 "Administrative group/Resource class/Color."; 2955 } 2957 typedef extended-admin-group { 2958 type binary; 2959 description 2960 "Extended administrative group/Resource class/Color."; 2961 } 2963 typedef admin-groups { 2964 type union { 2965 type admin-group; 2966 type extended-admin-group; 2967 } 2968 description "TE administrative group derived type"; 2969 } 2971 typedef srlg { 2972 type uint32; 2973 description "SRLG type"; 2974 } 2976 identity path-computation-srlg-type { 2977 description 2978 "Base identity for SRLG path computation"; 2979 } 2981 identity srlg-ignore { 2982 base path-computation-srlg-type; 2983 description 2984 "Ignores SRLGs in path computation"; 2985 } 2987 identity srlg-strict { 2988 base path-computation-srlg-type; 2989 description 2990 "Include strict SRLG check in path computation"; 2991 } 2993 identity srlg-preferred { 2994 base path-computation-srlg-type; 2995 description 2996 "Include preferred SRLG check in path computation"; 2997 } 2999 identity srlg-weighted { 3000 base path-computation-srlg-type; 3001 description 3002 "Include weighted SRLG check in path computation"; 3003 } 3005 typedef te-metric { 3006 type uint32; 3007 description 3008 "TE link metric"; 3009 } 3011 /** 3012 * TE bandwidth groupings 3013 **/ 3014 identity otn-rate-type { 3015 description 3016 "Base type to identify OTN bit rates of various information 3017 structures."; 3018 } 3019 identity odu0 { 3020 base otn-rate-type; 3021 description 3022 "ODU0 bit rate."; 3023 } 3024 identity odu1 { 3025 base otn-rate-type; 3026 description 3027 "ODU1 bit rate."; 3028 } 3029 identity odu2 { 3030 base otn-rate-type; 3031 description 3032 "ODU2 bit rate."; 3033 } 3034 identity odu3 { 3035 base otn-rate-type; 3036 description 3037 "ODU3 bit rate."; 3038 } 3039 identity odu4 { 3040 base otn-rate-type; 3041 description 3042 "ODU4 bit rate."; 3043 } 3044 identity odu2e { 3045 base otn-rate-type; 3046 description 3047 "ODU2e bit rate."; 3048 } 3049 identity oduc { 3050 base otn-rate-type; 3051 description 3052 "ODUCn bit rate."; 3053 } 3054 identity oduflex { 3055 base otn-rate-type; 3056 description 3057 "ODUflex bit rate."; 3058 } 3060 identity wdm-spectrum-type { 3061 description 3062 "Base type to identify WDM spectrum type."; 3063 } 3064 identity cwdm { 3065 base wdm-spectrum-type; 3066 description 3067 "CWDM."; 3069 } 3070 identity dwdm { 3071 base wdm-spectrum-type; 3072 description 3073 "DWDM."; 3074 } 3075 identity flexible-grid { 3076 base wdm-spectrum-type; 3077 description 3078 "Flexible grid."; 3079 } 3081 grouping te-bandwidth { 3082 description 3083 "This grouping defines the generic TE bandwidth. 3084 For some known data plane technologies, specific modeling 3085 structures are specified. The string encoded te-bandwidth 3086 type is used for un-specified technologies. 3087 The modeling structure can be augmented later for other 3088 technologies."; 3089 container te-bandwidth { 3090 description 3091 "Container that specifies TE bandwidth."; 3092 choice technology { 3093 default generic; 3094 description 3095 "Data plane technology type."; 3096 case psc { 3097 leaf psc { 3098 type rt-types:bandwidth-ieee-float32; 3099 description 3100 "Bandwidth in packet switching networks."; 3101 reference 3102 "RFC3630: Traffic Engineering (TE) Extensions to OSPF 3103 Version 2. 3104 RFC5305: IS-IS Extensions for Traffic Engineering."; 3105 } 3106 } 3107 case otn { 3108 list otn { 3109 key "rate-type"; 3110 description 3111 "Bandwidth in OTN (Optical Transport Network)."; 3112 reference 3113 "ITU-T G.709/Y.1331: Interfaces for the optical 3114 transport network."; 3115 leaf rate-type { 3116 type identityref { 3117 base otn-rate-type; 3118 } 3119 description 3120 "OTN bit rate types of various information 3121 structures."; 3122 } 3123 leaf counter { 3124 type uint16; 3125 description 3126 "Number of channels."; 3127 } 3128 } 3129 } 3130 case lsc { 3131 list wdm { 3132 key "spectrum slot"; 3133 description 3134 "Bandwidth in Lambda Switch Capable (LSC) networks."; 3135 reference 3136 "ITU-t G.694.1: Spectral grids for WDM applications: 3137 DWDM frequency grid."; 3138 leaf spectrum { 3139 type identityref { 3140 base wdm-spectrum-type; 3141 } 3142 description 3143 "Optical spectrum allocation type."; 3144 reference 3145 "RFC7699: Generalized Labels for the Flexi-Grid in 3146 Lambda Switch Capable (LSC) Label Switching 3147 Routers"; 3148 } 3149 leaf slot { 3150 type int16; 3151 description 3152 "The value identifies the central frenquency of a 3153 frequency slot."; 3154 reference 3155 "RFC7792: RSVP-TE Signaling Extensions in Support of 3156 Flexi-Grid Dense Wavelength Division Multiplexing 3157 (DWDM) Networks."; 3158 } 3159 leaf width { 3160 type uint16; 3161 description 3162 "The slot width is calculated as this value times 3163 12.5 GHz."; 3164 reference 3165 "RFC7792: RSVP-TE Signaling Extensions in Support of 3166 Flexi-Grid Dense Wavelength Division Multiplexing 3167 (DWDM) Networks."; 3168 } 3169 } 3170 } 3171 case generic { 3172 leaf generic { 3173 type te-bandwidth; 3174 description 3175 "Bandwidth specified in a generic format."; 3176 } 3177 } 3178 } 3179 } 3180 } 3182 /** 3183 * TE performance metric groupings 3184 **/ 3185 grouping performance-metric-container { 3186 description 3187 "A container containing performance metric attributes."; 3188 container performance-metric { 3189 description 3190 "Link performance information in real time."; 3191 reference 3192 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 3193 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 3194 RFC7823: Performance-Based Path Selection for Explicitly 3195 Routed Label Switched Paths (LSPs) Using TE Metric 3196 Extensions"; 3197 container measurement { 3198 description 3199 "Measured performance metric values. Static configuration 3200 and manual overrides of these measurements are also 3201 allowed."; 3202 uses performance-metric-attributes; 3203 } 3204 container normality 3205 { 3206 description 3207 "Performance metric normality values."; 3208 uses performance-metric-normality-attributes; 3209 } 3210 uses performance-metric-throttle-container; 3211 } 3212 } // performance-metric-container 3213 grouping performance-metric-attributes { 3214 description 3215 "Link performance information in real time."; 3216 reference 3217 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 3218 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 3219 RFC7823: Performance-Based Path Selection for Explicitly 3220 Routed Label Switched Paths (LSPs) Using TE Metric 3221 Extensions"; 3222 leaf unidirectional-delay { 3223 type uint32 { 3224 range 0..16777215; 3225 } 3226 description "Delay or latency in micro seconds."; 3227 } 3228 leaf unidirectional-min-delay { 3229 type uint32 { 3230 range 0..16777215; 3231 } 3232 description "Minimum delay or latency in micro seconds."; 3233 } 3234 leaf unidirectional-max-delay { 3235 type uint32 { 3236 range 0..16777215; 3237 } 3238 description "Maximum delay or latency in micro seconds."; 3239 } 3240 leaf unidirectional-delay-variation { 3241 type uint32 { 3242 range 0..16777215; 3243 } 3244 description "Delay variation in micro seconds."; 3245 } 3246 leaf unidirectional-packet-loss { 3247 type decimal64 { 3248 fraction-digits 6; 3249 range "0 .. 50.331642"; 3250 } 3251 description 3252 "Packet loss as a percentage of the total traffic sent 3253 over a configurable interval. The finest precision is 3254 0.000003%."; 3255 } 3256 leaf unidirectional-residual-bandwidth { 3257 type rt-types:bandwidth-ieee-float32; 3258 description 3259 "Residual bandwidth that subtracts tunnel 3260 reservations from Maximum Bandwidth (or link capacity) 3262 [RFC3630] and provides an aggregated remainder across QoS 3263 classes."; 3264 } 3265 leaf unidirectional-available-bandwidth { 3266 type rt-types:bandwidth-ieee-float32; 3267 description 3268 "Available bandwidth that is defined to be residual 3269 bandwidth minus the measured bandwidth used for the 3270 actual forwarding of non-RSVP-TE LSP packets. For a 3271 bundled link, available bandwidth is defined to be the 3272 sum of the component link available bandwidths."; 3273 } 3274 leaf unidirectional-utilized-bandwidth { 3275 type rt-types:bandwidth-ieee-float32; 3276 description 3277 "Bandwidth utilization that represents the actual 3278 utilization of the link (i.e. as measured in the router). 3279 For a bundled link, bandwidth utilization is defined to 3280 be the sum of the component link bandwidth 3281 utilizations."; 3282 } 3283 } // performance-metric-attributes 3285 grouping performance-metric-normality-attributes { 3286 description 3287 "Link performance metric normality attributes."; 3288 reference 3289 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 3290 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 3291 RFC7823: Performance-Based Path Selection for Explicitly 3292 Routed Label Switched Paths (LSPs) Using TE Metric 3293 Extensions"; 3294 leaf unidirectional-delay { 3295 type te-types:performance-metric-normality; 3296 description "Delay normality."; 3297 } 3298 leaf unidirectional-min-delay { 3299 type te-types:performance-metric-normality; 3300 description "Minimum delay or latency normality."; 3301 } 3302 leaf unidirectional-max-delay { 3303 type te-types:performance-metric-normality; 3304 description "Maximum delay or latency normality."; 3305 } 3306 leaf unidirectional-delay-variation { 3307 type te-types:performance-metric-normality; 3308 description "Delay variation normality."; 3309 } 3310 leaf unidirectional-packet-loss { 3311 type te-types:performance-metric-normality; 3312 description "Packet loss normality."; 3313 } 3314 leaf unidirectional-residual-bandwidth { 3315 type te-types:performance-metric-normality; 3316 description "Residual bandwidth normality."; 3317 } 3318 leaf unidirectional-available-bandwidth { 3319 type te-types:performance-metric-normality; 3320 description "Available bandwidth normality."; 3321 } 3322 leaf unidirectional-utilized-bandwidth { 3323 type te-types:performance-metric-normality; 3324 description "Bandwidth utilization normality."; 3325 } 3326 } // performance-metric-normality-attributes 3328 grouping performance-metric-throttle-container { 3329 description 3330 "A container controlling performance metric throttle."; 3331 container throttle { 3332 must "suppression-interval >= measure-interval" { 3333 error-message 3334 "suppression-interval cannot be less then 3335 measure-interval."; 3336 description 3337 "Constraint on suppression-interval and 3338 measure-interval."; 3339 } 3340 description 3341 "Link performance information in real time."; 3342 reference 3343 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 3344 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 3345 RFC7823: Performance-Based Path Selection for Explicitly 3346 Routed Label Switched Paths (LSPs) Using TE Metric 3347 Extensions"; 3348 leaf unidirectional-delay-offset { 3349 type uint32 { 3350 range 0..16777215; 3351 } 3352 description 3353 "Offset value to be added to the measured delay value."; 3354 } 3355 leaf measure-interval { 3356 type uint32; 3357 default 30; 3358 description 3359 "Interval in seconds to measure the extended metric 3360 values."; 3361 } 3362 leaf advertisement-interval { 3363 type uint32; 3364 description 3365 "Interval in seconds to advertise the extended metric 3366 values."; 3367 } 3368 leaf suppression-interval { 3369 type uint32 { 3370 range "1 .. max"; 3371 } 3372 default 120; 3373 description 3374 "Interval in seconds to suppress advertising the extended 3375 metric values."; 3376 } 3377 container threshold-out { 3378 uses performance-metric-attributes; 3379 description 3380 "If the measured parameter falls outside an upper bound 3381 for all but the min delay metric (or lower bound for 3382 min-delay metric only) and the advertised value is not 3383 already outside that bound, anomalous announcement will be 3384 triggered."; 3385 } 3386 container threshold-in { 3387 uses performance-metric-attributes; 3388 description 3389 "If the measured parameter falls inside an upper bound 3390 for all but the min delay metric (or lower bound for 3391 min-delay metric only) and the advertised value is not 3392 already inside that bound, normal (anomalous-flag cleared) 3393 announcement will be triggered."; 3394 } 3395 container threshold-accelerated-advertisement { 3396 description 3397 "When the difference between the last advertised value and 3398 current measured value exceed this threshold, anomalous 3399 announcement will be triggered."; 3400 uses performance-metric-attributes; 3401 } 3402 } 3403 } // performance-metric-throttle-container 3405 /** 3406 * TE tunnel generic groupings 3407 **/ 3409 /* Tunnel path selection parameters */ 3410 grouping explicit-route-hop_config { 3411 description 3412 "The explicit route subobject grouping"; 3413 leaf index { 3414 type uint32; 3415 description "ERO subobject index"; 3416 } 3417 choice type { 3418 description 3419 "The explicit route subobject type"; 3420 case numbered { 3421 description 3422 "Numbered link explicit route subobject"; 3423 container numbered-hop { 3424 description "Numbered link hop type"; 3425 leaf address { 3426 type te-types:te-tp-id; 3427 description 3428 "Numbered link TE termination point address."; 3429 } 3430 leaf hop-type { 3431 type te-hop-type; 3432 description 3433 "strict or loose hop"; 3434 } 3435 } 3436 } 3437 case as-number { 3438 container as-number-hop { 3439 leaf as-number { 3440 type binary { 3441 length 16; 3442 } 3443 description "AS number"; 3444 } 3445 leaf hop-type { 3446 type te-hop-type; 3447 description 3448 "strict or loose hop"; 3449 } 3450 description 3451 "Autonomous System explicit route subobject"; 3452 } 3453 } 3454 case unnumbered { 3455 container unnumbered-hop { 3456 leaf node-id { 3457 type te-types:te-node-id; 3458 description 3459 "The identifier of a node in the TE topology."; 3460 } 3461 leaf link-tp-id { 3462 type te-types:te-tp-id; 3463 description 3464 "TE link termination point identifier, used 3465 together with te-node-id to identify the 3466 link termination point"; 3467 } 3468 leaf hop-type { 3469 type te-hop-type; 3470 description 3471 "strict or loose hop"; 3472 } 3473 description 3474 "Unnumbered link explicit route subobject"; 3475 reference 3476 "RFC3477: Signalling Unnumbered Links in 3477 RSVP-TE"; 3478 } 3479 } 3480 case label { 3481 container label-hop { 3482 description "Label hop type"; 3483 leaf value { 3484 type rt-types:generalized-label; 3485 description "the label value"; 3486 } 3487 } 3488 description 3489 "The Label ERO subobject"; 3490 } 3491 case sid { 3492 container sid-hop { 3493 description "Segment routing SID hop"; 3494 leaf sid { 3495 type rt-types:generalized-label; 3496 description "Segment-routing identifier"; 3497 } 3498 } 3499 description "Segment-routing identifier"; 3500 } 3501 } 3503 } 3505 grouping record-route-subobject_state { 3506 description 3507 "The record route subobject grouping"; 3508 leaf index { 3509 type uint32; 3510 description "RRO subobject index"; 3511 } 3512 choice type { 3513 description 3514 "The record route subobject type"; 3515 case numbered { 3516 leaf address { 3517 type te-types:te-tp-id; 3518 description 3519 "Numbered link TE termination point address."; 3520 } 3521 leaf ip-flags { 3522 type binary { 3523 length 8; 3524 } 3525 description 3526 "RRO IP address sub-object flags"; 3527 reference "RFC3209"; 3528 } 3529 } 3530 case unnumbered { 3531 leaf node-id { 3532 type te-types:te-node-id; 3533 description 3534 "The identifier of a node in the TE topology."; 3535 } 3536 leaf link-tp-id { 3537 type te-types:te-tp-id; 3538 description 3539 "TE link termination point identifier, used 3540 together with te-node-id to identify the 3541 link termination point"; 3542 } 3543 description 3544 "Unnumbered link record route subobject"; 3545 reference 3546 "RFC3477: Signalling Unnumbered Links in 3547 RSVP-TE"; 3548 } 3549 case label { 3550 leaf value { 3551 type rt-types:generalized-label; 3552 description "the label value"; 3553 } 3554 leaf label-flags { 3555 type binary { 3556 length 8; 3557 } 3558 description 3559 "Label sub-object flags"; 3560 reference "RFC3209"; 3561 } 3562 description 3563 "The Label ERO subobject"; 3564 } 3565 } 3566 } 3568 grouping label-set-item-info { 3569 description "Label set item info"; 3570 leaf inclusive-exclusive { 3571 type enumeration { 3572 enum inclusive { 3573 description "The label or label range is inclusive."; 3574 } 3575 enum exclusive { 3576 description "The label or label range is exclusive."; 3577 } 3578 } 3579 description 3580 "Whether the list item is inclusive or exclusive."; 3581 } 3582 leaf label-start { 3583 type rt-types:generalized-label; 3584 description 3585 "This is the starting lable if a lable range is specified. 3586 This is the lable value if a single lable is specified, 3587 in which case, attribute 'label-end' is not set."; 3588 } 3589 leaf label-end { 3590 type rt-types:generalized-label; 3591 description 3592 "The ending lable if a lable range is specified; 3593 This attribute is not set, If a single lable is 3594 specified."; 3595 } 3596 leaf range-bitmap { 3597 type binary; 3598 description 3599 "When there are gaps between label-start and label-end, 3600 this attribute is used to specified the possitions 3601 of the used labels."; 3602 } 3603 } 3605 grouping label-set-info { 3606 description "Label set info grouping"; 3607 list label-set { 3608 key "inclusive-exclusive label-start"; 3609 description 3610 "The absence of label-set implies that all labels are 3611 acceptable; otherwise only restricted labels are 3612 available."; 3614 uses label-set-item-info; 3615 } 3616 } 3618 /*** End of TE tunnel groupings ***/ 3620 grouping optimizations_config { 3621 description "Optimization metrics configuration grouping"; 3622 leaf metric-type { 3623 type identityref { 3624 base te-types:path-metric-type; 3625 } 3626 description "TE path metric type"; 3627 } 3628 leaf weight { 3629 type uint8; 3630 description "TE path metric normalization weight"; 3631 } 3632 } 3634 grouping common-constraints_config { 3635 description 3636 "Common constraints grouping that can be set on 3637 a constraint set or directly on the tunnel"; 3638 leaf topology-id { 3639 type te-types:te-topology-id; 3640 description 3641 "The tunnel path is computed using the specific 3642 topology identified by this identifier"; 3643 } 3644 container bandwidth-generic { 3645 uses te-types:te-bandwidth; 3646 description 3647 "A technology agnostic requested bandwidth to use 3648 for path computation"; 3649 } 3650 leaf disjointness { 3651 type te-types:te-path-disjointness; 3652 description 3653 "The type of resource disjointness."; 3654 } 3655 leaf setup-priority { 3656 type uint8 { 3657 range "0..7"; 3658 } 3659 description 3660 "TE LSP requested setup priority"; 3661 } 3662 leaf hold-priority { 3663 type uint8 { 3664 range "0..7"; 3665 } 3666 description 3667 "TE LSP requested hold priority"; 3668 } 3669 leaf signaling-type { 3670 type identityref { 3671 base te-types:path-signaling-type; 3672 } 3673 description "TE tunnel path signaling type"; 3674 } 3675 } 3677 grouping path-metrics-bounds_config { 3678 description "TE path metric bounds grouping"; 3679 leaf metric-type { 3680 type identityref { 3681 base te-types:path-metric-type; 3682 } 3683 description "TE path metric type"; 3684 } 3685 leaf upper-bound { 3686 type uint64; 3687 description "Upper bound on end-to-end TE path metric"; 3688 } 3689 } 3691 grouping path-objective-function_config { 3692 description "Optimization metrics configuration grouping"; 3693 leaf objective-function-type { 3694 type identityref { 3695 base te-types:objective-function-type; 3696 } 3697 description 3698 "Objective function entry"; 3699 } 3700 } 3702 /** 3703 * TE interface generic groupings 3704 **/ 3705 grouping generic-path-optimization { 3706 description "TE generic path optimization grouping"; 3708 container optimizations { 3709 description 3710 "The objective function container that includes 3711 attributes to impose when computing a TE path"; 3713 choice algorithm { 3714 description "Optimizations algorithm."; 3715 case metric { 3716 if-feature path-optimization-metric; 3717 /* Optimize by metric */ 3718 list optimization-metric { 3719 key "metric-type"; 3720 description "TE path metric type"; 3721 uses optimizations_config; 3722 } 3723 /* Tiebreakers */ 3724 container tiebreakers { 3725 description 3726 "The list of tiebreaker criterion to apply 3727 on an equally favored set of paths to pick best"; 3728 list tiebreaker { 3729 key "tiebreaker-type"; 3730 description 3731 "The list of tiebreaker criterion to apply 3732 on an equally favored set of paths to pick best"; 3733 leaf tiebreaker-type { 3734 type identityref { 3735 base te-types:path-metric-type; 3736 } 3737 description "The objective function"; 3738 } 3739 } 3740 } 3741 } 3742 case objective-function { 3743 if-feature path-optimization-objective-function; 3744 /* Objective functions */ 3745 container objective-function { 3746 description 3747 "The objective function container that includes 3748 attributes to impose when computing a TE path"; 3749 uses path-objective-function_config; 3750 } 3751 } 3752 } 3753 } 3754 } 3756 grouping generic-path-affinities { 3757 description 3758 "Path affinities grouping"; 3759 container path-affinities { 3760 description 3761 "Path affinities container"; 3762 list constraint { 3763 key "usage"; 3764 description 3765 "List of named affinity constraints"; 3766 leaf usage { 3767 type identityref { 3768 base resource-affinities-type; 3769 } 3770 description "Affinities usage"; 3771 } 3772 leaf value { 3773 type admin-groups; 3774 description "Affinity value"; 3775 } 3776 } 3777 } 3778 } 3780 grouping generic-path-srlgs { 3781 description 3782 "Path SRLG grouping"; 3783 container path-srlgs { 3784 description 3785 "Path SRLG properties container"; 3786 leaf usage { 3787 type identityref { 3788 base te-types:route-exclude-srlg; 3789 } 3790 description "SRLG usage"; 3792 } 3793 leaf-list values { 3794 type srlg; 3795 description "SRLG value"; 3796 } 3797 } 3798 } 3800 grouping generic-path-constraints { 3801 description 3802 "Global named path constraints configuration 3803 grouping"; 3804 container path-constraints { 3805 description "TE named path constraints container"; 3806 list path-metric-bound { 3807 key metric-type; 3808 description "List of TE path metrics"; 3809 uses path-metrics-bounds_config; 3810 } 3812 uses common-constraints_config; 3813 uses generic-path-affinities; 3814 uses generic-path-srlgs; 3815 } 3816 } 3818 grouping generic-computed-path-properties { 3819 description "TE generic computed path properties grouping"; 3820 container computed-path-properties { 3821 config false; 3822 description "The TE path computed properties"; 3823 list path-metric { 3824 key metric-type; 3825 description "TE path metric type"; 3826 leaf metric-type { 3827 type identityref { 3828 base te-types:path-metric-type; 3829 } 3830 description "TE path metric type"; 3831 } 3832 leaf accumulative-value { 3833 type uint64; 3834 description "TE path metric accumulative value"; 3835 } 3836 } 3837 uses generic-path-affinities; 3838 uses generic-path-srlgs; 3839 container path-computed-route-objects { 3840 description 3841 "Container for the list of computed route objects 3842 as returned by the computation engine"; 3843 list path-computed-route-object { 3844 key index; 3845 description 3846 "List of computed route objects returned by the 3847 computation engine"; 3848 uses explicit-route-hop_config; 3849 } 3850 } 3851 } 3852 } 3853 } 3854 3856 Figure 7: TE basic types YANG module 3858 file "ietf-te@2017-10-29.yang" 3859 module ietf-te { 3860 yang-version 1.1; 3862 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 3864 /* Replace with IANA when assigned */ 3865 prefix "te"; 3867 /* Import TE generic types */ 3868 import ietf-te-types { 3869 prefix te-types; 3870 } 3872 import ietf-inet-types { 3873 prefix inet; 3874 } 3876 organization 3877 "IETF Traffic Engineering Architecture and Signaling (TEAS) 3878 Working Group"; 3880 contact 3881 "WG Web: 3882 WG List: 3884 WG Chair: Lou Berger 3885 3887 WG Chair: Vishnu Pavan Beeram 3888 3890 Editor: Tarek Saad 3891 3893 Editor: Rakesh Gandhi 3894 3896 Editor: Vishnu Pavan Beeram 3897 3899 Editor: Himanshu Shah 3900 3902 Editor: Xufeng Liu 3903 3905 Editor: Igor Bryskin 3906 "; 3908 description 3909 "YANG data module for TE configuration, 3910 state, RPC and notifications."; 3912 revision "2017-10-29" { 3913 description "Latest update to TE generic YANG module."; 3914 reference "TBA"; 3915 } 3917 typedef tunnel-ref { 3918 type leafref { 3919 path "/te:te/te:tunnels/te:tunnel/te:name"; 3920 } 3921 description 3922 "This type is used by data models that need to reference 3923 configured TE tunnel."; 3924 } 3926 typedef tunnel-p2mp-ref { 3927 type leafref { 3928 path "/te:te/te:tunnels/te:tunnel-p2mp/te:name"; 3929 } 3930 description 3931 "This type is used by data models that need to reference 3932 configured P2MP TE tunnel."; 3933 } 3935 /** 3936 * TE tunnel generic groupings 3937 */ 3938 grouping path-route-objects { 3939 description 3940 "List of EROs to be included or excluded when performing 3941 the path computation."; 3942 container explicit-route-objects { 3943 description 3944 "Container for the exclude route object list"; 3945 list route-object-exclude-always { 3946 key index; 3947 description 3948 "List of explicit route objects to always exclude 3949 from path computation"; 3950 uses te-types:explicit-route-hop_config; 3951 } 3952 list route-object-include-exclude { 3953 key index; 3954 description 3955 "List of explicit route objects to include or 3956 exclude in path computation"; 3957 leaf explicit-route-usage { 3958 type identityref { 3959 base te-types:route-usage-type; 3960 } 3961 description "Explicit-route usage."; 3962 } 3963 uses te-types:explicit-route-hop_config; 3964 } 3965 } 3966 } 3968 grouping path-affinities-contents_config { 3969 description 3970 "Path affinities constraints grouping"; 3971 leaf usage { 3972 type identityref { 3973 base te-types:resource-affinities-type; 3974 } 3975 description "Affinities usage"; 3976 } 3977 choice style { 3978 description 3979 "Path affinities representation style"; 3980 case value { 3981 leaf value { 3982 type te-types:admin-groups; 3983 description 3984 "Bitmap indicating what bits are of significance"; 3985 } 3986 } 3987 case named { 3988 list affinity-names { 3989 key "name"; 3990 leaf name { 3991 type string; 3992 description "Affinity name"; 3993 } 3994 description "List of named affinities"; 3995 } 3996 } 3997 } 3998 } 4000 grouping path-affinities_state { 4001 description "Path affinities grouping"; 4002 container path-affinities { 4003 description "Path affinities container"; 4004 list constraints { 4005 key "usage"; 4006 description "List of named affinity constraints"; 4007 leaf usage { 4008 type leafref { 4009 path "../state/usage"; 4010 } 4011 description "Affinities usage"; 4012 } 4013 container state { 4014 config false; 4015 description 4016 "Configuration applied parameters and state"; 4017 uses path-affinities-contents_config; 4018 } 4019 } 4020 } 4021 } 4023 grouping path-srlgs_state { 4024 description "Path SRLG properties grouping"; 4025 container path-srlgs { 4026 description "Path SRLG properties container"; 4027 choice style { 4028 description "Type of SRLG representation"; 4029 case values { 4030 container state { 4031 config false; 4032 description 4033 "Configuration applied parameters and state"; 4034 uses path-affinities-values_config; 4035 } 4036 } 4037 case named { 4038 container constraints { 4039 description "SRLG named constraints"; 4040 list constraint { 4041 key "usage"; 4042 leaf usage { 4043 type leafref { 4044 path "../state/usage"; 4045 } 4046 description "Affinity resource usage"; 4047 } 4048 container state { 4049 config false; 4050 description 4051 "Configuration applied parameters and state"; 4052 leaf usage { 4053 type identityref { 4054 base te-types:route-exclude-srlg; 4055 } 4056 description "SRLG usage"; 4057 } 4058 } 4059 container srlg-names { 4060 description "Container for named SRLG list"; 4061 list srlg-name { 4062 key "name"; 4063 leaf name { 4064 type leafref { 4065 path "../state/name"; 4066 } 4067 description "The SRLG name"; 4068 } 4069 container state { 4070 config false; 4071 description 4072 "Configuration applied parameters and 4073 state"; 4074 leaf name { 4075 type string; 4076 description "The SRLG name"; 4077 } 4078 } 4079 description "List named SRLGs"; 4081 } 4082 } 4083 description "List of named SRLG constraints"; 4084 } 4085 } 4086 } 4087 } 4088 } 4089 } 4091 grouping path-affinities { 4092 description "Path affinities grouping"; 4093 container path-affinities { 4094 description "Path affinities container"; 4095 list constraints { 4096 key "usage"; 4097 description "List of named affinity constraints"; 4098 uses path-affinities-contents_config; 4099 } 4100 } 4101 } 4103 grouping path-affinities-values_config { 4104 description "Path affinities values configuration grouping"; 4105 leaf usage { 4106 type identityref { 4107 base te-types:route-exclude-srlg; 4108 } 4109 description "SRLG usage"; 4110 } 4111 leaf-list values { 4112 type te-types:srlg; 4113 description "SRLG value"; 4114 } 4115 } 4117 grouping path-srlgs { 4118 description "Path SRLG properties grouping"; 4119 container path-srlgs { 4120 description "Path SRLG properties container"; 4121 choice style { 4122 description "Type of SRLG representation"; 4123 case values { 4124 uses path-affinities-values_config; 4125 } 4126 case named { 4127 list constraints { 4128 key "usage"; 4129 leaf usage { 4130 type identityref { 4131 base te-types:route-exclude-srlg; 4132 } 4133 description "SRLG usage"; 4134 } 4135 container constraint { 4136 description "Container for named SRLG list"; 4137 list srlg-names { 4138 key "name"; 4139 leaf name { 4140 type string; 4141 description "The SRLG name"; 4142 } 4143 description "List named SRLGs"; 4144 } 4145 } 4146 description "List of named SRLG constraints"; 4147 } 4148 } 4149 } 4150 } 4151 } 4153 grouping bidirectional-association_config { 4154 description 4155 "TE tunnel associated bidirectional leaves 4156 grouping"; 4157 leaf id { 4158 type uint16; 4159 description 4160 "The TE tunnel association identifier."; 4161 } 4162 leaf source { 4163 type inet:ip-address; 4164 description "The TE tunnel association source."; 4165 } 4166 leaf global-source { 4167 type inet:ip-address; 4168 description "The TE tunnel association global source."; 4169 } 4170 leaf type { 4171 type identityref { 4172 base te-types:bidir-association-type; 4173 } 4174 default te-types:bidir-assoc-non-corouted; 4175 description "The TE tunnel association type."; 4176 } 4177 leaf provisioning { 4178 type identityref { 4179 base te-types:bidir-provisioning-mode; 4180 } 4181 description 4182 "Describes the provisioning model of the 4183 associated bidirectional LSP"; 4184 reference 4185 "draft-ietf-teas-mpls-tp-rsvpte-ext- 4186 associated-lsp, section-3.2"; 4187 } 4188 } 4190 grouping bidir-assoc-properties { 4191 description 4192 "TE tunnel associated bidirectional properties 4193 grouping"; 4194 container bidirectional { 4195 description 4196 "TE tunnel associated bidirectional attributes."; 4197 container association { 4198 description 4199 "Tunnel bidirectional association properties"; 4200 uses bidirectional-association_config; 4201 } 4202 } 4203 } 4205 grouping p2p-reverse-primary-path-properties { 4206 description "tunnel path properties."; 4207 container p2p-reverse-primary-path { 4208 description "Tunnel reverse primary path properties"; 4209 uses p2p-path-reverse-properties_config; 4210 container state { 4211 config false; 4212 description 4213 "Configuration applied parameters and state"; 4214 uses p2p-path-properties_state; 4215 } 4216 } 4217 container p2p-reverse-secondary-path { 4218 description "Tunnel reverse secondary path properties"; 4219 uses p2p-reverse-path-candidate-secondary-path-config; 4220 } 4221 } 4223 grouping p2p-secondary-path-properties { 4224 description "tunnel path properties."; 4225 uses p2p-path-properties_config; 4226 uses protection-restoration-params_config; 4227 uses protection-external-commands; 4228 container state { 4229 config false; 4230 description 4231 "Configuration applied parameters and state"; 4232 uses p2p-path-properties_state; 4233 } 4234 } 4236 grouping p2p-primary-path-properties { 4237 description 4238 "TE tunnel primary path properties grouping"; 4239 uses hierarchical-link; 4240 uses p2p-path-properties_config; 4241 container state { 4242 config false; 4243 description 4244 "Configuration applied parameters and state"; 4245 uses p2p-path-properties_state; 4246 } 4247 } 4249 grouping computed-path-properties_state { 4250 description "Computed path properties grouping"; 4251 leaf metric-type { 4252 type identityref { 4253 base te-types:path-metric-type; 4254 } 4255 description "TE path metric type"; 4256 } 4257 leaf accumulative-value { 4258 type uint64; 4259 description "TE path metric accumulative value"; 4260 } 4261 } 4263 grouping computed-path-properties { 4264 description "TE computed path properties grouping"; 4265 container computed-path-properties { 4266 description "The TE path computed properties"; 4267 list path-metric { 4268 key metric-type; 4269 description "TE path metric type"; 4270 leaf metric-type { 4271 type leafref { 4272 path "../state/metric-type"; 4274 } 4275 description "TE path metric type"; 4276 } 4277 container state { 4278 config false; 4279 description 4280 "Configuration applied parameters and state"; 4281 uses computed-path-properties_state; 4282 } 4283 } 4284 uses path-affinities_state; 4285 uses path-srlgs_state; 4286 container path-computed-route-objects { 4287 description 4288 "Container for the list of computed route objects 4289 as returned by the computation engine"; 4290 list path-computed-route-object { 4291 key index; 4292 description 4293 "List of computed route objects returned by the 4294 computation engine"; 4295 leaf index { 4296 type leafref { 4297 path "../state/index"; 4298 } 4299 description "Index of computed route object"; 4300 } 4301 container state { 4302 config false; 4303 description 4304 "Configuration applied parameters and state"; 4305 uses te-types:explicit-route-hop_config; 4306 } 4307 } 4308 } 4309 uses shared-resources-tunnels; 4310 } 4311 } 4313 grouping p2p-path-properties_state { 4314 description "TE per path state parameters"; 4315 uses computed-path-properties; 4316 container lsps { 4317 description "TE LSPs container"; 4318 list lsp { 4319 key 4320 "source destination tunnel-id lsp-id "+ 4321 "extended-tunnel-id"; 4323 description "List of LSPs associated with the tunnel."; 4324 uses lsp-properties_state; 4325 uses shared-resources-tunnels; 4326 uses lsp-record-route-information_state; 4327 } 4328 } 4329 } 4331 grouping p2p-path-properties-common_config { 4332 description 4333 "TE tunnel common path properties configuration grouping"; 4334 leaf name { 4335 type string; 4336 description "TE path name"; 4337 } 4338 leaf preference { 4339 type uint8 { 4340 range "1..255"; 4341 } 4342 description 4343 "Specifies a preference for this path. The lower the 4344 number higher the preference"; 4345 } 4346 leaf path-setup-protocol { 4347 type identityref { 4348 base te-types:path-signaling-type; 4349 } 4350 description 4351 "Signaling protocol used to set up this tunnel"; 4352 } 4353 leaf path-computation-method { 4354 type identityref { 4355 base te-types:path-computation-method; 4356 } 4357 default te-types:path-locally-computed; 4358 description 4359 "The method used for computing the path, either 4360 locally computed, queried from a server or not 4361 computed at all (explicitly configured)."; 4362 } 4363 leaf path-computation-server { 4364 when "../path-computation-method = "+ 4365 "'te-types:path-externally-queried'" { 4366 description 4367 "The path-computation server when the path is 4368 externally queried"; 4369 } 4370 type inet:ip-address; 4371 description 4372 "Address of the external path computation 4373 server"; 4374 } 4375 leaf compute-only { 4376 type empty; 4377 description 4378 "When set, the path is computed and updated whenever 4379 the topology is updated. No resources are committed 4380 or reserved in the network."; 4381 } 4382 leaf use-path-computation { 4383 when "../path-computation-method =" + 4384 " 'te-types:path-locally-computed'"; 4385 type boolean; 4386 description "A CSPF dynamically computed path"; 4387 } 4388 leaf lockdown { 4389 type empty; 4390 description 4391 "Indicates no reoptimization to be attempted for 4392 this path."; 4393 } 4394 leaf path-scope { 4395 type identityref { 4396 base te-types:path-scope-type; 4397 } 4398 description "Path scope"; 4399 } 4400 } 4402 grouping p2p-path-reverse-properties_config { 4403 description 4404 "TE tunnel reverse path properties configuration 4405 grouping"; 4406 uses p2p-path-properties-common_config; 4407 leaf named-explicit-path { 4408 when "../path-computation-method =" + 4409 " 'te-types:path-explicitly-defined'"; 4410 type leafref { 4411 path "../../../../../../globals/named-explicit-paths/" 4412 + "named-explicit-path/name"; 4413 } 4414 description "The explicit-path name"; 4415 } 4416 leaf named-path-constraint { 4417 if-feature te-types:named-path-constraints; 4418 type leafref { 4419 path "../../../../../../globals/" 4420 + "named-path-constraints/named-path-constraint/" 4421 + "name"; 4422 } 4423 description 4424 "Reference to a globally defined named path 4425 constraint set"; 4426 } 4427 } 4429 grouping p2p-path-properties_config { 4430 description 4431 "TE tunnel path properties configuration grouping"; 4432 uses p2p-path-properties-common_config; 4433 leaf named-explicit-path { 4434 when "../path-computation-method =" + 4435 " 'te-types:path-explicitly-defined'"; 4436 type leafref { 4437 path "../../../../../globals/named-explicit-paths/" 4438 + "named-explicit-path/name"; 4439 } 4440 description "The explicit-path name"; 4441 } 4442 leaf named-path-constraint { 4443 if-feature te-types:named-path-constraints; 4444 type leafref { 4445 path "../../../../../globals/" 4446 + "named-path-constraints/named-path-constraint/" 4447 + "name"; 4448 } 4449 description 4450 "Reference to a globally defined named path 4451 constraint set"; 4452 } 4453 } 4455 /* TE tunnel configuration data */ 4456 grouping tunnel-p2mp-params_config { 4457 description 4458 "Configuration parameters relating to TE tunnel"; 4459 leaf name { 4460 type string; 4461 description "TE tunnel name."; 4462 } 4463 leaf identifier { 4464 type uint16; 4465 description 4466 "TE tunnel Identifier."; 4468 } 4469 leaf description { 4470 type string; 4471 description 4472 "Textual description for this TE tunnel"; 4473 } 4474 } 4476 grouping hierarchical-link_config { 4477 description 4478 "Hierarchical link configuration grouping"; 4479 leaf local-te-node-id { 4480 type te-types:te-node-id; 4481 description 4482 "Local TE node identifier"; 4483 } 4484 leaf local-te-link-tp-id { 4485 type te-types:te-tp-id; 4486 description 4487 "Local TE link termination point identifier"; 4488 } 4489 leaf remote-te-node-id { 4490 type te-types:te-node-id; 4491 description 4492 "Remote TE node identifier"; 4493 } 4494 leaf te-topology-id { 4495 type te-types:te-topology-id; 4496 description 4497 "It is presumed that a datastore will contain many 4498 topologies. To distinguish between topologies it is 4499 vital to have UNIQUE topology identifiers."; 4500 } 4501 } 4503 grouping hierarchical-link { 4504 description 4505 "Hierarchical link grouping"; 4506 container hierarchical-link { 4507 description 4508 "Identifies a hierarchical link (in client layer) 4509 that this tunnel is associated with."; 4510 uses hierarchical-link_config; 4511 } 4512 } 4514 grouping protection-restoration-params_config { 4515 description "Protection and restoration parameters"; 4516 container protection { 4517 description "Protection parameters"; 4518 leaf enable { 4519 type boolean; 4520 default 'false'; 4521 description 4522 "A flag to specify if LSP protection is enabled"; 4523 reference "rfc4427"; 4524 } 4525 leaf protection-type { 4526 type identityref { 4527 base te-types:lsp-protection-type; 4528 } 4529 description "LSP protection type."; 4530 } 4531 leaf protection-reversion-disable { 4532 type boolean; 4533 description "Disable protection reversion to working path"; 4534 } 4535 leaf hold-off-time { 4536 type uint32; 4537 units "milli-seconds"; 4538 default 0; 4539 description 4540 "The time between the declaration of an SF or SD condition 4541 and the initialization of the protection switching 4542 algorithm."; 4543 } 4544 leaf wait-to-revert { 4545 type uint16; 4546 units seconds; 4547 description 4548 "Time to wait before attempting LSP reversion"; 4549 } 4550 leaf lockout-of-normal { 4551 type boolean; 4552 description 4553 " 4554 When set to 'True', it represents a lockout of normal 4555 traffic external command. When set to 'False', it 4556 represents a clear lockout of normal traffic external 4557 command. The lockout of normal traffic command applies 4558 to this Tunnel. 4559 "; 4560 reference 4561 "ITU-T G.808, RFC 4427"; 4562 } 4563 leaf freeze { 4564 type boolean; 4565 description 4566 " 4567 When set to 'True', it represents a freeze external 4568 command. When set to 'False', it represents a clear 4569 freeze external command. The freeze command command 4570 applies to all the Tunnels which are sharing the 4571 protection resources with this Tunnel. 4572 "; 4573 reference 4574 "ITU-T G.808, RFC 4427"; 4575 } 4576 } 4577 container restoration { 4578 description "Restoration parameters"; 4579 leaf enable { 4580 type boolean; 4581 default 'false'; 4582 description 4583 "A flag to specify if LSP restoration is enabled"; 4584 reference "rfc4427"; 4585 } 4586 leaf restoration-type { 4587 type identityref { 4588 base te-types:lsp-restoration-type; 4589 } 4590 description "LSP restoration type."; 4591 } 4592 leaf restoration-scheme { 4593 type identityref { 4594 base te-types:restoration-scheme-type; 4595 } 4596 description "LSP restoration scheme."; 4597 } 4598 leaf restoration-reversion-disable { 4599 type boolean; 4600 description "Disable restoration reversion to working path"; 4601 } 4602 leaf hold-off-time { 4603 type uint32; 4604 units "milli-seconds"; 4605 description 4606 "The time between the declaration of an SF or SD condition 4607 and the initialization of the protection switching 4608 algorithm."; 4609 } 4610 leaf wait-to-restore { 4611 type uint16; 4612 units seconds; 4613 description 4614 "Time to wait before attempting LSP restoration"; 4615 } 4616 leaf wait-to-revert { 4617 type uint16; 4618 units seconds; 4619 description 4620 "Time to wait before attempting LSP reversion"; 4621 } 4622 } 4623 } 4625 grouping protection-external-commands { 4626 description 4627 "Path protection external commands grouping"; 4628 container protection-external-commands { 4629 description 4630 "Path protection external commands grouping"; 4631 leaf lockout-of-protection { 4632 type boolean; 4633 description 4634 "A LoP command is applied locally."; 4635 reference 4636 "ITU-T G.808; RFC 4427."; 4637 } 4638 container manual-switch { 4639 description 4640 "Manual switch (MS) command properties"; 4641 leaf manual-switch { 4642 type boolean; 4643 description 4644 "A MS command is applied locally."; 4645 reference 4646 "ITU-T G.808; RFC 4427."; 4647 } 4648 leaf manual-swith-tunnel { 4649 type te:tunnel-ref; 4650 description 4651 "The tunnel which this MS command applies. 4652 It can be either a normal traffic tunnel 4653 or an extra-traffic tunnel. If it is not 4654 specified the MS command applies to the 4655 Null signal (i.e., manual switch to null)."; 4656 reference 4657 "ITU-T G.808; RFC 4427."; 4658 } 4659 } 4660 container forced-switch { 4661 description 4662 "The forced switch (FS) command properties"; 4663 leaf forced-switch { 4664 type boolean; 4665 description 4666 "A FS command is applied locally."; 4667 reference 4668 "ITU-T G.808; RFC 4427."; 4669 } 4670 leaf forced-swith-tunnel { 4671 type te:tunnel-ref; 4672 description 4673 "The tunnel which this FS command applies. 4674 It can be either a normal traffic tunnel 4675 or an extra-traffic tunnel. If it is not 4676 specified the FS command applies to the 4677 Null signal (i.e., forced switch to null). 4678 "; 4679 reference 4680 "ITU-T G.808; RFC 4427."; 4681 } 4682 } 4683 } 4684 } 4686 grouping tunnel-p2p-depency-tunnels_config { 4687 description 4688 "Groupong for tunnel dependency list of tunnels"; 4689 container dependency-tunnels { 4690 description "Dependency tunnels list"; 4691 list dependency-tunnel { 4692 key "name"; 4693 description "Dependency tunnel entry"; 4694 leaf name { 4695 type leafref { 4696 path "../../../../../tunnels/tunnel/name"; 4697 require-instance false; 4698 } 4699 description "Dependency tunnel name"; 4700 } 4701 leaf encoding { 4702 type identityref { 4703 base te-types:lsp-encoding-types; 4704 } 4705 description "LSP encoding type"; 4706 } 4707 leaf switching-type { 4708 type identityref { 4709 base te-types:switching-capabilities; 4710 } 4711 description "LSP switching type"; 4712 reference "RFC3945"; 4713 } 4714 } 4715 } 4716 } 4718 grouping tunnel-p2p-params_config { 4719 description 4720 "Configuration parameters relating to TE tunnel"; 4721 leaf name { 4722 type string; 4723 description "TE tunnel name."; 4724 } 4725 leaf identifier { 4726 type uint16; 4727 description 4728 "TE tunnel Identifier."; 4729 } 4730 leaf description { 4731 type string; 4732 description 4733 "Textual description for this TE tunnel"; 4734 } 4735 leaf encoding { 4736 type identityref { 4737 base te-types:lsp-encoding-types; 4738 } 4739 description "LSP encoding type"; 4740 } 4741 leaf switching-type { 4742 type identityref { 4743 base te-types:switching-capabilities; 4744 } 4745 description "LSP switching type"; 4746 reference "RFC3945"; 4747 } 4748 leaf provisioning-state { 4749 type identityref { 4750 base te-types:tunnel-state-type; 4751 } 4752 default te-types:tunnel-state-up; 4753 description "TE tunnel administrative state."; 4754 } 4755 leaf preference { 4756 type uint8 { 4757 range "1..255"; 4758 } 4759 description 4760 "Specifies a preference for this tunnel. 4761 A lower number signifies a better preference"; 4762 } 4763 leaf reoptimize-timer { 4764 type uint16; 4765 units seconds; 4766 description 4767 "frequency of reoptimization of 4768 a traffic engineered LSP"; 4769 } 4770 leaf source { 4771 type inet:ip-address; 4772 description 4773 "TE tunnel source address."; 4774 } 4775 leaf destination { 4776 type inet:ip-address; 4777 description 4778 "P2P tunnel destination address"; 4779 } 4780 leaf src-tp-id { 4781 type binary; 4782 description 4783 "TE tunnel source termination point identifier."; 4784 } 4785 leaf dst-tp-id { 4786 type binary; 4787 description 4788 "TE tunnel destination termination point identifier."; 4789 } 4790 leaf ignore-overload { 4791 type boolean; 4792 description 4793 "The tunnel path can traverse overloaded node."; 4794 } 4795 uses protection-restoration-params_config; 4796 uses te-types:common-constraints_config; 4797 uses tunnel-p2p-depency-tunnels_config; 4798 } 4800 grouping tunnel-p2p-params_state { 4801 description 4802 "State parameters relating to TE tunnel"; 4803 leaf operational-state { 4804 type identityref { 4805 base te-types:tunnel-state-type; 4806 } 4807 default te-types:tunnel-state-up; 4808 description "TE tunnel administrative state."; 4809 } 4810 } 4812 grouping access-segment-info { 4813 description 4814 "info related to a segment"; 4815 container forward { 4816 description 4817 "for the forward direction of this tunnel"; 4818 uses te-types:label-set-info; 4819 } 4820 container reverse { 4821 description 4822 "for the reverse direction of this tunnel"; 4823 uses te-types:label-set-info; 4824 } 4825 } 4827 grouping path-access-segment-info { 4828 description 4829 "If an end-to-end tunnel crosses multiple domains using 4830 the same technology, some additional constraints have to be 4831 taken in consideration in each domain"; 4832 container path-in-segment { 4833 presence 4834 "The end-to-end tunnel starts in a previous domain; 4835 this tunnel is a segment in the current domain."; 4836 description 4837 "This tunnel is a segment that needs to be coordinated 4838 with previous segment stitched on head-end side."; 4839 uses access-segment-info; 4840 } 4841 container path-out-segment { 4842 presence 4843 "The end-to-end tunnel is not terminated in this domain; 4844 this tunnel is a segment in the current domain."; 4845 description 4846 "This tunnel is a segment that needs to be coordinated 4847 with previous segment stitched on head-end side."; 4848 uses access-segment-info; 4849 } 4850 } 4851 /* TE tunnel configuration/state grouping */ 4852 grouping tunnel-p2mp-properties { 4853 description 4854 "Top level grouping for P2MP tunnel properties."; 4855 uses tunnel-p2mp-params_config; 4856 container state { 4857 config false; 4858 description 4859 "Configuration applied parameters and state"; 4860 leaf operational-state { 4861 type identityref { 4862 base te-types:tunnel-state-type; 4863 } 4864 default te-types:tunnel-state-up; 4865 description "TE tunnel administrative state."; 4866 } 4867 } 4868 } 4870 grouping p2p-path-candidate-secondary-path-config { 4871 description 4872 "Configuration parameters relating to a secondary path which 4873 is a candidate for a particular primary path"; 4875 leaf secondary-path { 4876 type leafref { 4877 path "../../../../../p2p-secondary-paths/" + 4878 "p2p-secondary-path/name"; 4879 } 4880 description 4881 "A reference to the secondary path that should be utilised 4882 when the containing primary path option is in use"; 4883 } 4885 leaf path-setup-protocol { 4886 type identityref { 4887 base te-types:path-signaling-type; 4888 } 4889 description 4890 "Signaling protocol used to set up this tunnel"; 4891 } 4892 } 4894 grouping p2p-reverse-path-candidate-secondary-path-config { 4895 description 4896 "Configuration parameters relating to a secondary path which 4897 is a candidate for a particular primary path"; 4899 leaf secondary-path { 4900 type leafref { 4901 path "../../../../p2p-secondary-paths/" + 4902 "p2p-secondary-path/name"; 4903 } 4904 description 4905 "A reference to the secondary path that should be utilised 4906 when the containing primary path option is in use"; 4907 } 4909 leaf path-setup-protocol { 4910 type identityref { 4911 base te-types:path-signaling-type; 4912 } 4913 description 4914 "Signaling protocol used to set up this tunnel"; 4915 } 4916 } 4918 grouping p2p-path-candidate-secondary-path-state { 4919 description 4920 "Operational state parameters relating to a secondary path 4921 which is a candidate for a particular primary path"; 4923 leaf active { 4924 type boolean; 4925 description 4926 "Indicates the current active path option that has 4927 been selected of the candidate secondary paths"; 4928 } 4929 } 4931 grouping tunnel-p2p-properties { 4932 description 4933 "Top level grouping for tunnel properties."; 4934 uses tunnel-p2p-params_config; 4935 container state { 4936 config false; 4937 description 4938 "Configuration applied parameters and state"; 4939 uses tunnel-p2p-params_state; 4940 } 4941 uses bidir-assoc-properties; 4942 container p2p-primary-paths { 4943 description "Set of P2P primary aths container"; 4944 list p2p-primary-path { 4945 key "name"; 4946 description 4947 "List of primary paths for this tunnel."; 4948 uses p2p-primary-path-properties; 4949 uses p2p-reverse-primary-path-properties; 4950 container candidate-p2p-secondary-paths { 4951 description 4952 "The set of candidate secondary paths which may be used 4953 for this primary path. When secondary paths are specified 4954 in the list the path of the secondary LSP in use must be 4955 restricted to those path options referenced. The 4956 priority of the secondary paths is specified within the 4957 list. Higher priority values are less preferred - that is 4958 to say that a path with priority 0 is the most preferred 4959 path. In the case that the list is empty, any secondary 4960 path option may be utilised when the current primary path 4961 is in use."; 4962 list candidate-p2p-secondary-path { 4963 key "secondary-path"; 4964 description 4965 "List of secondary paths for this tunnel."; 4966 uses p2p-path-candidate-secondary-path-config; 4968 container state { 4969 config false; 4970 description 4971 "Configuration applied parameters and state"; 4972 uses p2p-path-candidate-secondary-path-state; 4973 } 4974 } 4975 } 4976 } 4977 } 4978 container p2p-secondary-paths { 4979 description "Set of P2P secondary paths container"; 4980 list p2p-secondary-path { 4981 key "name"; 4982 description 4983 "List of secondary paths for this tunnel."; 4984 uses p2p-secondary-path-properties; 4985 } 4986 } 4987 } 4989 grouping shared-resources-tunnels { 4990 description 4991 "Set of tunnels that share secondary path resources with 4992 this tunnnel"; 4993 container shared-resources-tunnels { 4994 description 4995 "Set of tunnels that share secondary path resources with 4996 this tunnnel"; 4997 leaf-list lsp-shared-resources-tunnel { 4998 type te:tunnel-ref; 4999 description 5000 "Reference to the tunnel that sharing secondary path 5001 resources with this tunnel"; 5002 } 5003 } 5004 } 5006 grouping tunnel-actions { 5007 description "Tunnel actions"; 5008 action tunnel-action { 5009 description "Tunnel action"; 5010 input { 5011 leaf action-type { 5012 type identityref { 5013 base te-types:tunnel-action-type; 5014 } 5015 description "Tunnel action type"; 5016 } 5017 } 5018 output { 5019 leaf action-result { 5020 type identityref { 5021 base te-types:te-action-result; 5022 } 5023 description "The result of the RPC operation"; 5024 } 5025 } 5026 } 5027 } 5028 grouping protection-actions { 5029 description 5030 "Protection external command actions"; 5031 action protection-external-commands { 5032 input { 5033 leaf protection-external-command { 5034 type identityref { 5035 base te-types:protection-external-commands; 5036 } 5037 description 5038 "Protection external command"; 5039 } 5040 leaf tunnel-using-lsp-resources { 5041 type te:tunnel-ref; 5042 description 5043 "The tunnel which this external command applies. 5044 It can be either a normal traffic tunnel or an 5045 extra-traffic tunnel. It is not specified if the 5046 external command does not apply to a specific tunnel 5047 (e.g., a clear command) or if it applies to the Null 5048 signal (e.g., forced switch to null)."; 5049 } 5050 } 5051 } 5052 } 5054 /*** End of TE tunnel groupings ***/ 5056 /** 5057 * LSP related generic groupings 5058 */ 5059 grouping lsp-record-route-information_state { 5060 description "recorded route information grouping"; 5061 container lsp-record-route-subobjects { 5062 description "RSVP recorded route object information"; 5063 list record-route-subobject { 5064 when "../../origin-type = 'ingress'" { 5065 description "Applicable on non-ingress LSPs only"; 5066 } 5067 key "index"; 5068 description "Record route sub-object list"; 5069 leaf index { 5070 type leafref { 5071 path "../state/index"; 5072 } 5073 description "Index of record-route object"; 5074 } 5075 container state { 5076 config false; 5077 description 5078 "Configuration applied parameters and state"; 5079 uses te-types:record-route-subobject_state; 5080 } 5081 } 5082 } 5083 } 5085 grouping lsps-state-grouping { 5086 description 5087 "LSPs state operational data grouping"; 5088 container lsps-state { 5089 config false; 5090 description "TE LSPs state container"; 5091 list lsp { 5092 key 5093 "source destination tunnel-id lsp-id "+ 5094 "extended-tunnel-id"; 5095 description "List of LSPs associated with the tunnel."; 5096 uses lsp-properties_state; 5097 uses lsp-record-route-information_state; 5098 } 5099 } 5100 } 5102 /*** End of TE LSP groupings ***/ 5104 /** 5105 * TE global generic groupings 5106 */ 5108 /* Global named admin-groups configuration data */ 5109 grouping named-admin-groups_config { 5110 description 5111 "Global named administrative groups configuration 5112 grouping"; 5113 leaf name { 5114 type string; 5115 description 5116 "A string name that uniquely identifies a TE 5117 interface named admin-group"; 5118 } 5119 leaf bit-position { 5120 type uint32; 5121 description 5122 "Bit position representing the administrative group"; 5123 } 5124 } 5125 grouping named-admin-groups { 5126 description 5127 "Global named administrative groups configuration 5128 grouping"; 5129 container named-admin-groups { 5130 description "TE named admin groups container"; 5131 list named-admin-group { 5132 if-feature te-types:extended-admin-groups; 5133 if-feature te-types:named-extended-admin-groups; 5134 key "name"; 5135 description 5136 "List of named TE admin-groups"; 5137 uses named-admin-groups_config; 5138 } 5140 } 5141 } 5143 /* Global named admin-srlgs configuration data */ 5144 grouping named-srlgs_config { 5145 description 5146 "Global named SRLGs configuration grouping"; 5147 leaf name { 5148 type string; 5149 description 5150 "A string name that uniquely identifies a TE 5151 interface named srlg"; 5152 } 5153 leaf group { 5154 type te-types:srlg; 5155 description "An SRLG value"; 5156 } 5157 leaf cost { 5158 type uint32; 5159 description 5160 "SRLG associated cost. Used during path to append 5161 the path cost when traversing a link with this SRLG"; 5162 } 5163 } 5165 grouping named-srlgs { 5166 description 5167 "Global named SRLGs configuration grouping"; 5168 container named-srlgs { 5169 description "TE named SRLGs container"; 5170 list named-srlg { 5171 if-feature te-types:named-srlg-groups; 5172 key "name"; 5173 description 5174 "A list of named SRLG groups"; 5175 uses named-srlgs_config; 5176 } 5177 } 5178 } 5180 /* Global named explicit-paths configuration data */ 5181 grouping named-explicit-paths_config { 5182 description 5183 "Global explicit path configuration 5184 grouping"; 5185 leaf name { 5186 type string; 5187 description 5188 "A string name that uniquely identifies an 5189 explicit path"; 5190 } 5191 } 5193 grouping named-explicit-paths { 5194 description 5195 "Global explicit path configuration 5196 grouping"; 5197 container named-explicit-paths { 5198 description "TE named explicit path container"; 5199 list named-explicit-path { 5200 key "name"; 5201 description 5202 "A list of explicit paths"; 5203 uses named-explicit-paths_config; 5204 container explicit-route-objects { 5205 description "Explicit route objects container"; 5206 list explicit-route-object { 5207 key "index"; 5208 description 5209 "List of explicit route objects"; 5210 leaf explicit-route-usage { 5211 type identityref { 5212 base te-types:route-usage-type; 5213 } 5214 description "An explicit-route hop action."; 5215 } 5216 uses te-types:explicit-route-hop_config; 5217 } 5218 } 5219 } 5220 } 5221 } 5223 /* Global named paths constraints configuration data */ 5224 grouping path-metrics-bounds_config { 5225 description "TE path metric bounds grouping"; 5226 leaf metric-type { 5227 type identityref { 5228 base te-types:path-metric-type; 5229 } 5230 description "TE path metric type"; 5231 } 5232 leaf upper-bound { 5233 type uint64; 5234 description "Upper bound on end-to-end TE path metric"; 5235 } 5237 } 5239 grouping path-objective-function_config { 5240 description "Optimization metrics configuration grouping"; 5241 leaf objective-function-type { 5242 type identityref { 5243 base te-types:objective-function-type; 5244 } 5245 description 5246 "Objective function entry"; 5247 } 5248 } 5250 grouping path-metric-bounds { 5251 description "TE path metric bounds grouping"; 5252 container path-metric-bounds { 5253 description "TE path metric bounds container"; 5254 list path-metric-bound { 5255 key metric-type; 5256 description "List of TE path metrics"; 5257 uses path-metrics-bounds_config; 5258 } 5259 } 5260 } 5262 grouping path-constraints_state { 5263 description 5264 "TE path constraints state"; 5265 leaf bandwidth-generic_state { 5266 type te-types:te-bandwidth; 5267 description 5268 "A technology agnostic requested bandwidth to use 5269 for path computation"; 5270 } 5271 leaf disjointness_state { 5272 type te-types:te-path-disjointness; 5273 description 5274 "The type of resource disjointness."; 5275 } 5276 } 5278 grouping path-constraints_config { 5279 description 5280 "Global named path constraints configuration 5281 grouping"; 5282 leaf name { 5283 type string; 5284 description 5285 "A string name that uniquely identifies a 5286 path constraint set"; 5287 } 5288 uses te-types:common-constraints_config; 5289 uses path-metric-bounds; 5290 uses te-types:generic-path-optimization; 5291 uses path-affinities; 5292 uses path-srlgs; 5293 uses path-route-objects; 5294 uses shared-resources-tunnels { 5295 description 5296 "Set of tunnels that are allowed to share secondary path 5297 resources of this tunnel"; 5298 } 5299 uses path-access-segment-info { 5300 description 5301 "Tunnel constraints induced by other segments."; 5302 } 5303 } 5305 grouping named-path-constraints { 5306 description 5307 "Global named path constraints configuration 5308 grouping"; 5309 container named-path-constraints { 5310 description "TE named path constraints container"; 5311 list named-path-constraint { 5312 if-feature te-types:named-path-constraints; 5313 key "name"; 5314 description 5315 "A list of named path constraints"; 5316 uses path-constraints_config; 5317 container state { 5318 config false; 5319 description 5320 "Configuration applied parameters and state"; 5321 uses path-constraints_state; 5322 } 5323 } 5324 } 5325 } 5327 /* TE globals container data */ 5328 grouping globals-grouping { 5329 description 5330 "Globals TE system-wide configuration data grouping"; 5331 container globals { 5332 description 5333 "Globals TE system-wide configuration data container"; 5334 uses named-admin-groups; 5335 uses named-srlgs; 5336 uses named-explicit-paths; 5337 uses named-path-constraints; 5338 } 5339 } 5341 /* TE tunnels container data */ 5342 grouping tunnels-grouping { 5343 description 5344 "Tunnels TE configuration data grouping"; 5345 container tunnels { 5346 description 5347 "Tunnels TE configuration data container"; 5349 list tunnel { 5350 key "name"; 5351 description "P2P TE tunnels list."; 5352 uses tunnel-p2p-properties; 5353 uses tunnel-actions; 5354 } 5355 list tunnel-p2mp { 5356 key "name"; 5357 unique "identifier"; 5358 description "P2MP TE tunnels list."; 5359 uses tunnel-p2mp-properties; 5360 } 5361 } 5362 } 5364 /* TE LSPs ephemeral state container data */ 5365 grouping lsp-properties_state { 5366 description 5367 "LSPs state operational data grouping"; 5368 leaf source { 5369 type inet:ip-address; 5370 description 5371 "Tunnel sender address extracted from 5372 SENDER_TEMPLATE object"; 5373 reference "RFC3209"; 5374 } 5375 leaf destination { 5376 type inet:ip-address; 5377 description 5378 "Tunnel endpoint address extracted from 5379 SESSION object"; 5380 reference "RFC3209"; 5382 } 5383 leaf tunnel-id { 5384 type uint16; 5385 description 5386 "Tunnel identifier used in the SESSION 5387 that remains constant over the life 5388 of the tunnel."; 5389 reference "RFC3209"; 5390 } 5391 leaf lsp-id { 5392 type uint16; 5393 description 5394 "Identifier used in the SENDER_TEMPLATE 5395 and the FILTER_SPEC that can be changed 5396 to allow a sender to share resources with 5397 itself."; 5398 reference "RFC3209"; 5399 } 5400 leaf extended-tunnel-id { 5401 type inet:ip-address; 5402 description 5403 "Extended Tunnel ID of the LSP."; 5404 reference "RFC3209"; 5405 } 5406 leaf operational-state { 5407 type identityref { 5408 base te-types:lsp-state-type; 5409 } 5410 description "LSP operational state."; 5411 } 5412 leaf path-setup-protocol { 5413 type identityref { 5414 base te-types:path-signaling-type; 5415 } 5416 description 5417 "Signaling protocol used to set up this tunnel"; 5418 } 5419 leaf origin-type { 5420 type enumeration { 5421 enum ingress { 5422 description 5423 "Origin ingress"; 5424 } 5425 enum egress { 5426 description 5427 "Origin egress"; 5428 } 5429 enum transit { 5430 description 5431 "transit"; 5432 } 5433 } 5434 description 5435 "Origin type of LSP relative to the location 5436 of the local switch in the path."; 5437 } 5439 leaf lsp-resource-status { 5440 type enumeration { 5441 enum primary { 5442 description 5443 "A primary LSP is a fully established LSP for 5444 which the resource allocation has been committed 5445 at the data plane"; 5446 } 5447 enum secondary { 5448 description 5449 "A secondary LSP is an LSP that has been provisioned 5450 in the control plane only; e.g. resource allocation 5451 has not been committed at the data plane"; 5452 } 5453 } 5454 description "LSP resource allocation type"; 5455 reference "rfc4872, section 4.2.1"; 5456 } 5458 leaf lsp-protection-role { 5459 type enumeration { 5460 enum working { 5461 description 5462 "A working LSP must be a primary LSP whilst a protecting 5463 LSP can be either a primary or a secondary LSP. Also, 5464 known as protected LSPs when working LSPs are associated 5465 with protecting LSPs."; 5466 } 5467 enum protecting { 5468 description 5469 "A secondary LSP is an LSP that has been provisioned 5470 in the control plane only; e.g. resource allocation 5471 has not been committed at the data plane"; 5472 } 5473 } 5474 description "LSP role type"; 5475 reference "rfc4872, section 4.2.1"; 5476 } 5477 leaf lsp-protection-state { 5478 type identityref { 5479 base te-types:lsp-protection-state; 5480 } 5481 description 5482 "The state of the APS state machine controlling which 5483 tunnels is using the resources of the protecting LSP."; 5484 } 5485 } 5486 /*** End of TE global groupings ***/ 5488 /** 5489 * TE configurations container 5490 */ 5491 container te { 5492 presence "Enable TE feature."; 5493 description 5494 "TE global container."; 5496 /* TE Global Configuration Data */ 5497 uses globals-grouping; 5499 /* TE Tunnel Configuration Data */ 5500 uses tunnels-grouping; 5502 /* TE LSPs State Data */ 5503 uses lsps-state-grouping; 5505 /* Protection actions */ 5506 uses protection-actions; 5507 } 5509 /* TE Global RPCs/execution Data */ 5510 rpc globals-rpc { 5511 description 5512 "Execution data for TE global."; 5513 } 5515 /* TE interfaces RPCs/execution Data */ 5516 rpc interfaces-rpc { 5517 description 5518 "Execution data for TE interfaces."; 5519 } 5521 /* TE Tunnel RPCs/execution Data */ 5522 rpc tunnels-rpc { 5523 description "TE tunnels RPC nodes"; 5524 input { 5525 container tunnel-info { 5526 description "Tunnel Identification"; 5527 choice type { 5528 description "Tunnel information type"; 5529 case tunnel-p2p { 5530 leaf p2p-id { 5531 type te:tunnel-ref; 5532 description "P2P TE tunnel"; 5533 } 5534 } 5535 case tunnel-p2mp { 5536 leaf p2mp-id { 5537 type te:tunnel-p2mp-ref; 5538 description "P2MP TE tunnel"; 5539 } 5540 } 5541 } 5542 } 5543 } 5544 output { 5545 container result { 5546 description 5547 "The container result of the RPC operation"; 5548 leaf result { 5549 type enumeration { 5550 enum success { 5551 description "Origin ingress"; 5552 } 5553 enum in-progress { 5554 description "Origin egress"; 5555 } 5556 enum fail { 5557 description "transit"; 5558 } 5559 } 5560 description "The result of the RPC operation"; 5561 } 5562 } 5563 } 5564 } 5566 /* TE Global Notification Data */ 5567 notification globals-notif { 5568 description 5569 "Notification messages for Global TE."; 5570 } 5572 /* TE Tunnel Notification Data */ 5573 notification tunnels-notif { 5574 description 5575 "Notification messages for TE tunnels."; 5576 } 5577 } 5578 5580 Figure 8: TE generic YANG module 5582 file "ietf-te-device@2017-10-29.yang" 5583 module ietf-te-device { 5585 namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; 5587 /* Replace with IANA when assigned */ 5588 prefix "te-dev"; 5590 /* Import TE generic types */ 5591 import ietf-te { 5592 prefix te; 5593 } 5595 /* Import TE generic types */ 5596 import ietf-te-types { 5597 prefix te-types; 5598 } 5600 import ietf-interfaces { 5601 prefix if; 5602 } 5604 import ietf-inet-types { 5605 prefix inet; 5606 } 5608 import ietf-routing-types { 5609 prefix "rt-types"; 5610 } 5612 organization 5613 "IETF Traffic Engineering Architecture and Signaling (TEAS) 5614 Working Group"; 5616 contact 5617 "WG Web: 5618 WG List: 5620 WG Chair: Lou Berger 5621 5623 WG Chair: Vishnu Pavan Beeram 5624 5626 Editor: Tarek Saad 5627 5629 Editor: Rakesh Gandhi 5630 5632 Editor: Vishnu Pavan Beeram 5633 5635 Editor: Himanshu Shah 5636 5638 Editor: Xufeng Liu 5639 5641 Editor: Xia Chen 5642 5644 Editor: Raqib Jones 5645 5647 Editor: Bin Wen 5648 "; 5650 description 5651 "YANG data module for TE device configurations, 5652 state, RPC and notifications."; 5654 revision "2017-10-29" { 5655 description "Latest update to TE device YANG module."; 5656 reference "TBA"; 5657 } 5659 /** 5660 * TE LSP device state grouping 5661 */ 5662 grouping lsps-device_state { 5663 description "TE LSP device state grouping"; 5664 container lsp-timers { 5665 when "../te:origin-type = 'ingress'" { 5666 description "Applicable to ingress LSPs only"; 5667 } 5668 description "Ingress LSP timers"; 5669 leaf life-time { 5670 type uint32; 5671 units seconds; 5672 description 5673 "lsp life time"; 5674 } 5676 leaf time-to-install { 5677 type uint32; 5678 units seconds; 5679 description 5680 "lsp installation delay time"; 5681 } 5683 leaf time-to-destroy { 5684 type uint32; 5685 units seconds; 5686 description 5687 "lsp expiration delay time"; 5688 } 5689 } 5691 container downstream-info { 5692 when "../te:origin-type != 'egress'" { 5693 description "Applicable to ingress LSPs only"; 5694 } 5695 description 5696 "downstream information"; 5698 leaf nhop { 5699 type inet:ip-address; 5700 description 5701 "downstream nexthop."; 5702 } 5704 leaf outgoing-interface { 5705 type if:interface-ref; 5706 description 5707 "downstream interface."; 5708 } 5710 leaf neighbor { 5711 type inet:ip-address; 5712 description 5713 "downstream neighbor."; 5714 } 5715 leaf label { 5716 type rt-types:generalized-label; 5717 description 5718 "downstream label."; 5719 } 5720 } 5722 container upstream-info { 5723 when "../te:origin-type != 'ingress'" { 5724 description "Applicable to non-ingress LSPs only"; 5725 } 5726 description 5727 "upstream information"; 5729 leaf phop { 5730 type inet:ip-address; 5731 description 5732 "upstream nexthop or previous-hop."; 5733 } 5735 leaf neighbor { 5736 type inet:ip-address; 5737 description 5738 "upstream neighbor."; 5739 } 5741 leaf label { 5742 type rt-types:generalized-label; 5743 description 5744 "upstream label."; 5745 } 5746 } 5747 } 5749 /** 5750 * Device general groupings. 5751 */ 5752 grouping tunnel-device_config { 5753 description "Device TE tunnel configs"; 5754 leaf path-invalidation-action { 5755 type identityref { 5756 base te-types:path-invalidation-action-type; 5757 } 5758 description "Tunnel path invalidtion action"; 5759 } 5760 } 5762 grouping lsp-device-timers_config { 5763 description "Device TE LSP timers configs"; 5764 leaf lsp-install-interval { 5765 type uint32; 5766 units seconds; 5767 description 5768 "lsp installation delay time"; 5769 } 5770 leaf lsp-cleanup-interval { 5771 type uint32; 5772 units seconds; 5773 description 5774 "lsp cleanup delay time"; 5775 } 5776 leaf lsp-invalidation-interval { 5777 type uint32; 5778 units seconds; 5779 description 5780 "lsp path invalidation before taking action delay time"; 5781 } 5782 } 5783 grouping lsp-device-timers { 5784 description "TE LSP timers configuration"; 5785 uses lsp-device-timers_config; 5786 } 5788 /** 5789 * TE global device generic groupings 5790 */ 5792 /* TE interface container data */ 5793 grouping interfaces-grouping { 5794 description 5795 "Interface TE configuration data grouping"; 5796 container interfaces { 5797 description 5798 "Configuration data model for TE interfaces."; 5799 uses te-all-attributes; 5800 list interface { 5801 key "interface"; 5802 description "TE interfaces."; 5803 leaf interface { 5804 type if:interface-ref; 5805 description 5806 "TE interface name."; 5807 } 5808 /* TE interface parameters */ 5809 uses te-attributes; 5810 } 5812 } 5813 } 5815 /** 5816 * TE interface device generic groupings 5817 */ 5818 grouping te-admin-groups_config { 5819 description 5820 "TE interface affinities grouping"; 5821 choice admin-group-type { 5822 description 5823 "TE interface administrative groups 5824 representation type"; 5825 case value-admin-groups { 5826 choice value-admin-group-type { 5827 description "choice of admin-groups"; 5828 case admin-groups { 5829 description 5830 "Administrative group/Resource 5831 class/Color."; 5832 leaf admin-group { 5833 type te-types:admin-group; 5834 description 5835 "TE interface administrative group"; 5836 } 5837 } 5838 case extended-admin-groups { 5839 if-feature te-types:extended-admin-groups; 5840 description 5841 "Extended administrative group/Resource 5842 class/Color."; 5843 leaf extended-admin-group { 5844 type te-types:extended-admin-group; 5845 description 5846 "TE interface extended administrativei 5847 group"; 5848 } 5849 } 5850 } 5851 } 5852 case named-admin-groups { 5853 list named-admin-groups { 5854 if-feature te-types:extended-admin-groups; 5855 if-feature te-types:named-extended-admin-groups; 5856 key named-admin-group; 5857 description 5858 "A list of named admin-group entries"; 5859 leaf named-admin-group { 5860 type leafref { 5861 path "../../../../te:globals/" + 5862 "te:named-admin-groups/te:named-admin-group/" + 5863 "te:name"; 5864 } 5865 description "A named admin-group entry"; 5866 } 5867 } 5868 } 5869 } 5870 } 5872 /* TE interface SRLGs */ 5873 grouping te-srlgs_config { 5874 description "TE interface SRLG grouping"; 5875 choice srlg-type { 5876 description "Choice of SRLG configuration"; 5877 case value-srlgs { 5878 list values { 5879 key "value"; 5880 description "List of SRLG values that 5881 this link is part of."; 5882 leaf value { 5883 type uint32 { 5884 range "0..4294967295"; 5885 } 5886 description 5887 "Value of the SRLG"; 5888 } 5889 } 5890 } 5891 case named-srlgs { 5892 list named-srlgs { 5893 if-feature te-types:named-srlg-groups; 5894 key named-srlg; 5895 description 5896 "A list of named SRLG entries"; 5897 leaf named-srlg { 5898 type leafref { 5899 path "../../../../te:globals/" + 5900 "te:named-srlgs/te:named-srlg/te:name"; 5901 } 5902 description 5903 "A named SRLG entry"; 5904 } 5905 } 5906 } 5907 } 5909 } 5911 grouping te-igp-flooding-bandwidth_config { 5912 description 5913 "Configurable items for igp flooding bandwidth 5914 threshold configuration."; 5915 leaf threshold-type { 5916 type enumeration { 5917 enum DELTA { 5918 description 5919 "DELTA indicates that the local 5920 system should flood IGP updates when a 5921 change in reserved bandwidth >= the specified 5922 delta occurs on the interface."; 5923 } 5924 enum THRESHOLD_CROSSED { 5925 description 5926 "THRESHOLD-CROSSED indicates that 5927 the local system should trigger an update (and 5928 hence flood) the reserved bandwidth when the 5929 reserved bandwidth changes such that it crosses, 5930 or becomes equal to one of the threshold values."; 5931 } 5932 } 5933 description 5934 "The type of threshold that should be used to specify the 5935 values at which bandwidth is flooded. DELTA indicates that 5936 the local system should flood IGP updates when a change in 5937 reserved bandwidth >= the specified delta occurs on the 5938 interface. Where THRESHOLD_CROSSED is specified, the local 5939 system should trigger an update (and hence flood) the 5940 reserved bandwidth when the reserved bandwidth changes such 5941 that it crosses, or becomes equal to one of the threshold 5942 values"; 5943 } 5945 leaf delta-percentage { 5946 when "../threshold-type = 'DELTA'" { 5947 description 5948 "The percentage delta can only be specified when the 5949 threshold type is specified to be a percentage delta of 5950 the reserved bandwidth"; 5951 } 5952 type te-types:percentage; 5953 description 5954 "The percentage of the maximum-reservable-bandwidth 5955 considered as the delta that results in an IGP update 5956 being flooded"; 5958 } 5959 leaf threshold-specification { 5960 when "../threshold-type = 'THRESHOLD_CROSSED'" { 5961 description 5962 "The selection of whether mirrored or separate threshold 5963 values are to be used requires user specified thresholds to 5964 be set"; 5965 } 5966 type enumeration { 5967 enum MIRRORED_UP_DOWN { 5968 description 5969 "MIRRORED_UP_DOWN indicates that a single set of 5970 threshold values should be used for both increasing 5971 and decreasing bandwidth when determining whether 5972 to trigger updated bandwidth values to be flooded 5973 in the IGP TE extensions."; 5974 } 5975 enum SEPARATE_UP_DOWN { 5976 description 5977 "SEPARATE_UP_DOWN indicates that a separate 5978 threshold values should be used for the increasing 5979 and decreasing bandwidth when determining whether 5980 to trigger updated bandwidth values to be flooded 5981 in the IGP TE extensions."; 5982 } 5983 } 5984 description 5985 "This value specifies whether a single set of threshold 5986 values should be used for both increasing and decreasing 5987 bandwidth when determining whether to trigger updated 5988 bandwidth values to be flooded in the IGP TE extensions. 5989 MIRRORED-UP-DOWN indicates that a single value (or set of 5990 values) should be used for both increasing and decreasing 5991 values, where SEPARATE-UP-DOWN specifies that the increasing 5992 and decreasing values will be separately specified"; 5993 } 5995 leaf-list up-thresholds { 5996 when "../threshold-type = 'THRESHOLD_CROSSED'" + 5997 "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { 5998 description 5999 "A list of up-thresholds can only be specified when the 6000 bandwidth update is triggered based on crossing a 6001 threshold and separate up and down thresholds are 6002 required"; 6003 } 6004 type te-types:percentage; 6005 description 6006 "The thresholds (expressed as a percentage of the maximum 6007 reservable bandwidth) at which bandwidth updates are to be 6008 triggered when the bandwidth is increasing."; 6009 } 6011 leaf-list down-thresholds { 6012 when "../threshold-type = 'THRESHOLD_CROSSED'" + 6013 "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { 6014 description 6015 "A list of down-thresholds can only be specified when the 6016 bandwidth update is triggered based on crossing a 6017 threshold and separate up and down thresholds are 6018 required"; 6019 } 6020 type te-types:percentage; 6021 description 6022 "The thresholds (expressed as a percentage of the maximum 6023 reservable bandwidth) at which bandwidth updates are to be 6024 triggered when the bandwidth is decreasing."; 6025 } 6027 leaf-list up-down-thresholds { 6028 when "../threshold-type = 'THRESHOLD_CROSSED'" + 6029 "and ../threshold-specification = 'MIRRORED_UP_DOWN'" { 6030 description 6031 "A list of thresholds corresponding to both increasing 6032 and decreasing bandwidths can be specified only when an 6033 update is triggered based on crossing a threshold, and 6034 the same up and down thresholds are required."; 6035 } 6036 type te-types:percentage; 6037 description 6038 "The thresholds (expressed as a percentage of the maximum 6039 reservable bandwidth of the interface) at which bandwidth 6040 updates are flooded - used both when the bandwidth is 6041 increasing and decreasing"; 6042 } 6043 } 6045 /* TE interface metric */ 6046 grouping te-metric_config { 6047 description "Interface TE metric grouping"; 6048 leaf te-metric { 6049 type te-types:te-metric; 6050 description "Interface TE metric."; 6051 } 6052 } 6053 /* TE interface switching capabilities */ 6054 grouping te-switching-cap_config { 6055 description 6056 "TE interface switching capabilities"; 6057 list switching-capabilities { 6058 key "switching-capability"; 6059 description 6060 "List of interface capabilities for this interface"; 6061 leaf switching-capability { 6062 type identityref { 6063 base te-types:switching-capabilities; 6064 } 6065 description 6066 "Switching Capability for this interface"; 6067 } 6068 leaf encoding { 6069 type identityref { 6070 base te-types:lsp-encoding-types; 6071 } 6072 description 6073 "Encoding supported by this interface"; 6074 } 6075 } 6076 } 6078 grouping te-advertisements_state { 6079 description 6080 "TE interface advertisements state grouping"; 6081 container te-advertisements_state { 6082 description 6083 "TE interface advertisements state container"; 6084 leaf flood-interval { 6085 type uint32; 6086 description 6087 "The periodic flooding interval"; 6088 } 6089 leaf last-flooded-time { 6090 type uint32; 6091 units seconds; 6092 description 6093 "Time elapsed since last flooding in seconds"; 6094 } 6095 leaf next-flooded-time { 6096 type uint32; 6097 units seconds; 6098 description 6099 "Time remained for next flooding in seconds"; 6100 } 6101 leaf last-flooded-trigger { 6102 type enumeration { 6103 enum link-up { 6104 description "Link-up flooding trigger"; 6105 } 6106 enum link-down { 6107 description "Link-up flooding trigger"; 6108 } 6109 enum threshold-up { 6110 description 6111 "Bandwidth reservation up threshold"; 6112 } 6113 enum threshold-down { 6114 description 6115 "Bandwidth reservation down threshold"; 6116 } 6117 enum bandwidth-change { 6118 description "Banwidth capacity change"; 6119 } 6120 enum user-initiated { 6121 description "Initiated by user"; 6122 } 6123 enum srlg-change { 6124 description "SRLG property change"; 6125 } 6126 enum periodic-timer { 6127 description "Periodic timer expired"; 6128 } 6129 } 6130 description "Trigger for the last flood"; 6131 } 6132 list advertized-level-areas { 6133 key level-area; 6134 description 6135 "List of areas the TE interface is advertised 6136 in"; 6137 leaf level-area { 6138 type uint32; 6139 description 6140 "The IGP area or level where the TE 6141 interface state is advertised in"; 6142 } 6143 } 6144 } 6145 } 6147 /* TE interface attributes grouping */ 6148 grouping te-attributes { 6149 description "TE attributes configuration grouping"; 6150 uses te-metric_config; 6151 uses te-admin-groups_config; 6152 uses te-srlgs_config; 6153 uses te-igp-flooding-bandwidth_config; 6154 uses te-switching-cap_config; 6155 container state { 6156 config false; 6157 description 6158 "State parameters for interface TE metric"; 6159 uses te-advertisements_state; 6160 } 6161 } 6163 grouping te-all-attributes { 6164 description 6165 "TE attributes configuration grouping for all 6166 interfaces"; 6167 uses te-igp-flooding-bandwidth_config; 6168 } 6169 /*** End of TE interfaces device groupings ***/ 6171 /** 6172 * TE device augmentations 6173 */ 6174 augment "/te:te" { 6175 description "TE global container."; 6176 /* TE Interface Configuration Data */ 6177 uses interfaces-grouping; 6178 } 6180 /* TE globals device augmentation */ 6181 augment "/te:te/te:globals" { 6182 description 6183 "Global TE device specific configuration parameters"; 6184 uses lsp-device-timers; 6185 } 6187 /* TE tunnels device configuration augmentation */ 6188 augment "/te:te/te:tunnels/te:tunnel" { 6189 description 6190 "Tunnel device dependent augmentation"; 6191 uses lsp-device-timers_config; 6192 } 6193 augment "/te:te/te:tunnels/te:tunnel/te:state" { 6194 description 6195 "Tunnel device dependent augmentation"; 6197 uses lsp-device-timers_config; 6198 } 6200 /* TE LSPs device state augmentation */ 6201 augment "/te:te/te:lsps-state/te:lsp" { 6202 description 6203 "LSP device dependent augmentation"; 6204 uses lsps-device_state; 6205 } 6207 augment "/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths" + 6208 "/te:p2p-secondary-path/te:state/te:lsps/te:lsp" { 6209 description 6210 "LSP device dependent augmentation"; 6211 uses lsps-device_state; 6212 } 6214 augment "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + 6215 "/te:p2p-primary-path/te:state/te:lsps/te:lsp" { 6216 description 6217 "LSP device dependent augmentation"; 6218 uses lsps-device_state; 6219 } 6221 /* TE interfaces RPCs/execution Data */ 6222 rpc interfaces-rpc { 6223 description 6224 "Execution data for TE interfaces."; 6225 } 6227 /* TE Interfaces Notification Data */ 6228 notification interfaces-notif { 6229 description 6230 "Notification messages for TE interfaces."; 6231 } 6232 } 6233 6235 Figure 9: TE MPLS specific types YANG module 6237 file "ietf-te-mpls@2017-10-29.yang" 6238 module ietf-te-mpls { 6240 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls"; 6242 /* Replace with IANA when assigned */ 6243 prefix "te-mpls"; 6244 /* Import TE base model */ 6245 import ietf-te { 6246 prefix te; 6247 } 6249 /* Import TE MPLS types */ 6250 import ietf-te-mpls-types { 6251 prefix "te-mpls-types"; 6252 } 6254 /* Import TE generic types */ 6255 import ietf-te-types { 6256 prefix te-types; 6257 } 6259 /* Import routing types */ 6260 import ietf-routing-types { 6261 prefix "rt-types"; 6262 } 6264 import ietf-mpls-static { 6265 prefix mpls-static; 6266 } 6268 import ietf-inet-types { 6269 prefix inet; 6270 } 6272 organization 6273 "IETF Traffic Engineering Architecture and Signaling (TEAS) 6274 Working Group"; 6276 contact 6277 "WG Web: 6278 WG List: 6280 WG Chair: Lou Berger 6281 6283 WG Chair: Vishnu Pavan Beeram 6284 6286 Editor: Tarek Saad 6287 6289 Editor: Rakesh Gandhi 6290 6292 Editor: Vishnu Pavan Beeram 6293 6295 Editor: Himanshu Shah 6296 6298 Editor: Xufeng Liu 6299 6301 Editor: Xia Chen 6302 6304 Editor: Raqib Jones 6305 6307 Editor: Bin Wen 6308 "; 6310 description 6311 "YANG data module for MPLS TE configurations, 6312 state, RPC and notifications."; 6314 revision "2017-10-29" { 6315 description "Latest update to MPLS TE YANG module."; 6316 reference "TBD"; 6317 } 6319 /* MPLS TE tunnel properties*/ 6321 grouping tunnel-igp-shortcut_config { 6322 description "TE tunnel IGP shortcut configs"; 6323 leaf shortcut-eligible { 6324 type boolean; 6325 default "true"; 6326 description 6327 "Whether this LSP is considered to be eligible for us as a 6328 shortcut in the IGP. In the case that this leaf is set to 6329 true, the IGP SPF calculation uses the metric specified to 6330 determine whether traffic should be carried over this LSP"; 6331 } 6332 leaf metric-type { 6333 type identityref { 6334 base te-types:LSP_METRIC_TYPE; 6335 } 6336 default te-types:LSP_METRIC_INHERITED; 6337 description 6338 "The type of metric specification that should be used to set 6339 the LSP(s) metric"; 6341 } 6342 leaf metric { 6343 type int32; 6344 description 6345 "The value of the metric that should be specified. The value 6346 supplied in this leaf is used in conjunction with the metric 6347 type to determine the value of the metric used by the system. 6348 Where the metric-type is set to LSP_METRIC_ABSOLUTE - the 6349 value of this leaf is used directly; where it is set to 6350 LSP_METRIC_RELATIVE, the relevant (positive or negative) 6351 offset is used to formulate the metric; where metric-type 6352 is LSP_METRIC_INHERITED, the value of this leaf is not 6353 utilised"; 6354 } 6355 leaf-list routing-afs { 6356 type inet:ip-version; 6357 description 6358 "Address families"; 6359 } 6360 } 6362 grouping tunnel-igp-shortcuts { 6363 description 6364 "TE tunnel IGP shortcut grouping"; 6365 container tunnel-igp-shortcut { 6366 description 6367 "Tunnel IGP shortcut properties"; 6368 uses tunnel-igp-shortcut_config; 6369 } 6370 } 6372 grouping tunnel-forwarding-adjacency_configs { 6373 description "Tunnel forwarding adjacency grouping"; 6374 leaf binding-label { 6375 type rt-types:mpls-label; 6376 description "MPLS tunnel binding label"; 6377 } 6378 leaf load-share { 6379 type uint32 { 6380 range "1..4294967295"; 6381 } 6382 description "ECMP tunnel forwarding 6383 load-share factor."; 6384 } 6385 leaf policy-class { 6386 type uint8 { 6387 range "1..7"; 6388 } 6389 description 6390 "The class associated with this tunnel"; 6391 } 6392 } 6394 grouping tunnel-forwarding-adjacency { 6395 description "Properties for using tunnel in forwarding."; 6396 container forwarding { 6397 description 6398 "Tunnel forwarding properties container"; 6399 uses tunnel-forwarding-adjacency_configs; 6400 } 6401 } 6403 /*** End of MPLS TE tunnel configuration/state */ 6404 grouping te-lsp-auto-bandwidth_config { 6405 description 6406 "Configuration parameters related to autobandwidth"; 6408 leaf enabled { 6409 type boolean; 6410 default false; 6411 description 6412 "enables mpls auto-bandwidth on the 6413 lsp"; 6414 } 6416 leaf min-bw { 6417 type te-mpls-types:bandwidth-kbps; 6418 description 6419 "set the minimum bandwidth in Kbps for an 6420 auto-bandwidth LSP"; 6421 } 6423 leaf max-bw { 6424 type te-mpls-types:bandwidth-kbps; 6425 description 6426 "set the maximum bandwidth in Kbps for an 6427 auto-bandwidth LSP"; 6428 } 6430 leaf adjust-interval { 6431 type uint32; 6432 description 6433 "time in seconds between adjustments to 6434 LSP bandwidth"; 6435 } 6436 leaf adjust-threshold { 6437 type te-types:percentage; 6438 description 6439 "percentage difference between the LSP's 6440 specified bandwidth and its current bandwidth 6441 allocation -- if the difference is greater than the 6442 specified percentage, auto-bandwidth adjustment is 6443 triggered"; 6444 } 6445 } 6447 grouping te-lsp-overflow_config { 6448 description 6449 "configuration for mpls lsp bandwidth 6450 overflow adjustment"; 6452 leaf enabled { 6453 type boolean; 6454 default false; 6455 description 6456 "enables mpls lsp bandwidth overflow 6457 adjustment on the lsp"; 6458 } 6460 leaf overflow-threshold { 6461 type te-types:percentage; 6462 description 6463 "bandwidth percentage change to trigger 6464 an overflow event"; 6466 } 6468 leaf trigger-event-count { 6469 type uint16; 6470 description 6471 "number of consecutive overflow sample 6472 events needed to trigger an overflow adjustment"; 6473 } 6474 } 6476 grouping te-lsp-underflow_config { 6477 description 6478 "configuration for mpls lsp bandwidth 6479 underflow adjustment"; 6481 leaf enabled { 6482 type boolean; 6483 default false; 6484 description 6485 "enables bandwidth underflow 6486 adjustment on the lsp"; 6487 } 6489 leaf underflow-threshold { 6490 type te-types:percentage; 6491 description 6492 "bandwidth percentage change to trigger 6493 and underflow event"; 6494 } 6496 leaf trigger-event-count { 6497 type uint16; 6498 description 6499 "number of consecutive underflow sample 6500 events needed to trigger an underflow adjustment"; 6501 } 6502 } 6503 grouping te-tunnel-bandwidth_config { 6504 description 6505 "Configuration parameters related to bandwidth for a tunnel"; 6507 leaf specification-type { 6508 type te-mpls-types:te-bandwidth-type; 6509 default SPECIFIED; 6510 description 6511 "The method used for settign the bandwidth, either explicitly 6512 specified or configured"; 6513 } 6515 leaf set-bandwidth { 6516 when "../specification-type = 'SPECIFIED'" { 6517 description 6518 "The bandwidth value when bandwidth is explicitly 6519 specified"; 6520 } 6521 type te-mpls-types:bandwidth-kbps; 6522 description 6523 "set bandwidth explicitly, e.g., using 6524 offline calculation"; 6525 } 6526 leaf class-type { 6527 type te-types:te-ds-class; 6528 description 6529 "The Class-Type of traffic transported by the LSP."; 6530 reference "RFC4124: section-4.3.1"; 6531 } 6533 } 6535 grouping te-tunnel-bandwidth_state { 6536 description 6537 "Operational state parameters relating to bandwidth for a tunnel"; 6539 leaf signaled-bandwidth { 6540 type te-mpls-types:bandwidth-kbps; 6541 description 6542 "The currently signaled bandwidth of the LSP. In the case where 6543 the bandwidth is specified explicitly, then this will match the 6544 value of the set-bandwidth leaf; in cases where the bandwidth is 6545 dynamically computed by the system, the current value of the 6546 bandwidth should be reflected."; 6547 } 6548 } 6550 grouping tunnel-bandwidth_top { 6551 description 6552 "Top level grouping for specifying bandwidth for a tunnel"; 6554 container bandwidth-mpls { 6555 description 6556 "Bandwidth configuration for TE LSPs"; 6558 uses te-tunnel-bandwidth_config; 6560 container state { 6561 config false; 6562 description 6563 "State parameters related to bandwidth 6564 configuration of TE tunnels"; 6565 uses te-tunnel-bandwidth_state; 6566 } 6568 container auto-bandwidth { 6569 when "../specification-type = 'AUTO'" { 6570 description 6571 "Include this container for auto bandwidth 6572 specific configuration"; 6573 } 6574 description 6575 "Parameters related to auto-bandwidth"; 6577 uses te-lsp-auto-bandwidth_config; 6579 container overflow { 6580 description 6581 "configuration of MPLS overflow bandwidth 6582 adjustement for the LSP"; 6584 uses te-lsp-overflow_config; 6585 } 6587 container underflow { 6588 description 6589 "configuration of MPLS underflow bandwidth 6590 adjustement for the LSP"; 6592 uses te-lsp-underflow_config; 6593 } 6594 } 6595 } 6596 } 6598 grouping te-path-bandwidth_top { 6599 description 6600 "Top level grouping for specifying bandwidth for a TE path"; 6602 container bandwidth { 6603 description 6604 "Bandwidth configuration for TE LSPs"; 6606 uses te-tunnel-bandwidth_config; 6607 container state { 6608 config false; 6609 description 6610 "State parameters related to bandwidth 6611 configuration of TE tunnels"; 6612 uses te-tunnel-bandwidth_state; 6613 } 6614 } 6615 } 6617 /** 6618 * MPLS TE augmentations 6619 */ 6621 /* MPLS TE tunnel augmentations */ 6622 augment "/te:te/te:tunnels/te:tunnel" { 6623 description "MPLS TE tunnel config augmentations"; 6624 uses tunnel-igp-shortcuts; 6625 uses tunnel-forwarding-adjacency; 6626 uses tunnel-bandwidth_top; 6628 } 6630 /* MPLS TE LSPs augmentations */ 6631 augment "/te:te/te:tunnels/te:tunnel/" + 6632 "te:p2p-primary-paths/te:p2p-primary-path" { 6633 when "/te:te/te:tunnels/te:tunnel" + 6634 "/te:p2p-primary-paths/te:p2p-primary-path" + 6635 "/te:path-setup-protocol = 'te-types:path-setup-static'" { 6636 description 6637 "When the path is statically provisioned"; 6638 } 6639 description "MPLS TE LSP augmentation"; 6640 leaf static-lsp-name { 6641 type mpls-static:static-lsp-ref; 6642 description "Static LSP name"; 6643 } 6644 } 6646 augment "/te:te/te:tunnels/te:tunnel/" + 6647 "te:p2p-primary-paths/te:p2p-primary-path/" + 6648 "te:state" { 6649 description "MPLS TE LSP augmentation"; 6650 leaf static-lsp-name { 6651 type mpls-static:static-lsp-ref; 6652 description "Static LSP name"; 6653 } 6654 } 6655 augment "/te:te/te:tunnels/te:tunnel/" + 6656 "te:p2p-secondary-paths/te:p2p-secondary-path" { 6657 when "/te:te/te:tunnels/te:tunnel" + 6658 "/te:p2p-secondary-paths/te:p2p-secondary-path/" + 6659 "te:path-setup-protocol = 'te-types:path-setup-static'" { 6660 description 6661 "When the path is statically provisioned"; 6662 } 6663 description "MPLS TE LSP augmentation"; 6664 leaf static-lsp-name { 6665 type mpls-static:static-lsp-ref; 6666 description "Static LSP name"; 6667 } 6668 } 6669 augment "/te:te/te:tunnels/te:tunnel/" + 6670 "te:p2p-secondary-paths/te:p2p-secondary-path/" + 6671 "te:state" { 6672 description "MPLS TE LSP augmentation"; 6673 leaf static-lsp-name { 6674 type mpls-static:static-lsp-ref; 6675 description "Static LSP name"; 6677 } 6678 } 6680 augment "/te:te/te:globals/te:named-path-constraints/" + 6681 "te:named-path-constraint" { 6682 description "foo"; 6683 uses te-path-bandwidth_top; 6684 } 6685 } 6686 6688 Figure 10: TE MPLS YANG module 6690 file "ietf-te-mpls-types@2017-10-29.yang" 6691 module ietf-te-mpls-types { 6693 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls-types"; 6695 /* Replace with IANA when assigned */ 6696 prefix "te-mpls-types"; 6698 organization 6699 "IETF TEAS Working Group"; 6701 contact "Fill me"; 6703 description 6704 "This module contains a collection of generally 6705 useful TE specific YANG data type defintions."; 6707 revision "2017-10-29" { 6708 description "Latest revision of TE MPLS types"; 6709 reference "RFC3209"; 6710 } 6712 identity backup-protection-type { 6713 description 6714 "Base identity for backup protection type"; 6715 } 6717 identity backup-protection-link { 6718 base backup-protection-type; 6719 description 6720 "backup provides link protection only"; 6721 } 6723 identity backup-protection-node-link { 6724 base backup-protection-type; 6725 description 6726 "backup offers node (preferred) or link protection"; 6727 } 6729 identity bc-model-type { 6730 description 6731 "Base identity for Diffserv-TE bandwidth constraint 6732 model type"; 6733 } 6735 identity bc-model-rdm { 6736 base bc-model-type; 6737 description 6738 "Russian Doll bandwidth constraint model type."; 6739 } 6741 identity bc-model-mam { 6742 base bc-model-type; 6743 description 6744 "Maximum Allocation bandwidth constraint 6745 model type."; 6746 } 6748 identity bc-model-mar { 6749 base bc-model-type; 6750 description 6751 "Maximum Allocation with Reservation 6752 bandwidth constraint model type."; 6753 } 6755 typedef bandwidth-kbps { 6756 type uint64; 6757 units "Kbps"; 6758 description 6759 "Bandwidth values expressed in kilobits per second"; 6760 } 6762 typedef bandwidth-mbps { 6763 type uint64; 6764 units "Mbps"; 6765 description 6766 "Bandwidth values expressed in megabits per second"; 6767 } 6769 typedef bandwidth-gbps { 6770 type uint64; 6771 units "Gbps"; 6772 description 6773 "Bandwidth values expressed in gigabits per second"; 6774 } 6776 typedef te-bandwidth-type { 6777 type enumeration { 6778 enum SPECIFIED { 6779 description 6780 "Bandwidth is explicitly specified"; 6781 } 6782 enum AUTO { 6783 description 6784 "Bandwidth is automatically computed"; 6785 } 6786 } 6787 description 6788 "enumerated type for specifying whether bandwidth is 6789 explicitly specified or automatically computed"; 6790 } 6792 typedef bfd-type { 6793 type enumeration { 6794 enum classical { 6795 description "BFD classical session type."; 6796 } 6797 enum seamless { 6798 description "BFD seamless session type."; 6799 } 6800 } 6801 default "classical"; 6802 description 6803 "Type of BFD session"; 6804 } 6806 typedef bfd-encap-mode-type { 6807 type enumeration { 6808 enum gal { 6809 description 6810 "BFD with GAL mode"; 6811 } 6812 enum ip { 6813 description 6814 "BFD with IP mode"; 6815 } 6816 } 6817 default ip; 6818 description 6819 "Possible BFD transport modes when running over TE 6820 LSPs."; 6822 } 6823 } 6824 6826 Figure 11: TE MPLS types YANG module 6828 file "ietf-te-sr-mpls@2017-10-29.yang" 6829 module ietf-te-sr-mpls { 6831 namespace "urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls"; 6833 /* Replace with IANA when assigned */ 6834 prefix "te-sr-mpls"; 6836 /* Import TE generic types */ 6837 import ietf-te { 6838 prefix te; 6839 } 6841 /* Import TE generic types */ 6842 import ietf-te-types { 6843 prefix te-types; 6844 } 6846 organization 6847 "IETF Traffic Engineering Architecture and Signaling (TEAS) 6848 Working Group"; 6850 contact 6851 "WG Web: 6852 WG List: 6854 WG Chair: Lou Berger 6855 6857 WG Chair: Vishnu Pavan Beeram 6858 6860 Editor: Tarek Saad 6861 6863 Editor: Rakesh Gandhi 6864 6866 Editor: Vishnu Pavan Beeram 6867 6869 Editor: Himanshu Shah 6870 6872 Editor: Xufeng Liu 6873 6875 Editor: Xia Chen 6876 6878 Editor: Raqib Jones 6879 6881 Editor: Bin Wen 6882 "; 6884 description 6885 "YANG data module for MPLS TE configurations, 6886 state, RPC and notifications."; 6888 revision "2017-10-29" { 6889 description "Latest update to MPLS TE YANG module."; 6890 reference "TBD"; 6891 } 6893 identity sr-protection-type { 6894 description 6895 "The Adj-SID base protection types"; 6896 } 6898 identity sr-protection-type-protected { 6899 base sr-protection-type; 6900 description 6901 "The Adj-SID is eligible if protected"; 6902 } 6904 identity sr-protection-type-unprotected { 6905 base sr-protection-type; 6906 description 6907 "The Adj-SID is eligible if unprotected"; 6908 } 6910 identity sr-protection-type-any { 6911 base sr-protection-type; 6912 description 6913 "The Adj-SID is eligible if protected or unprotected"; 6914 } 6916 typedef te-sid-selection-mode { 6917 type enumeration { 6918 enum ADJ_SID_ONLY { 6919 description 6920 "The SR-TE tunnel should only use adjacency SIDs 6921 to build the SID stack to be pushed for the LSP"; 6922 } 6923 enum MIXED_MODE { 6924 description 6925 "The SR-TE tunnel can use a mix of adjacency 6926 and prefix SIDs to build the SID stack to be pushed 6927 to the LSP"; 6928 } 6929 } 6930 description "SID selection mode type"; 6931 } 6933 /* MPLS SR-TE tunnel properties*/ 6934 grouping tunnel-sr-mpls-properties_config { 6935 description "MPLS TE SR tunnel properties"; 6936 leaf path-signaling-type { 6937 type identityref { 6938 base te-types:path-signaling-type; 6939 } 6940 description "TE tunnel path signaling type"; 6941 } 6942 } 6944 grouping te-sr-named-path-constraints_config { 6945 description 6946 "Configuration parameters relating to SR-TE LSPs"; 6948 leaf sid-selection-mode { 6949 type te-sid-selection-mode; 6950 default MIXED_MODE; 6951 description 6952 "The restrictions placed on the SIDs to be selected by the 6953 calculation method for the explicit path when it is 6954 instantiated for a SR-TE LSP"; 6955 } 6957 leaf sid-protection { 6958 type identityref { 6959 base sr-protection-type; 6960 } 6961 default sr-protection-type-any; 6962 description 6963 "When set to protected only SIDs that are 6964 protected are to be selected by the calculating method 6965 when the explicit path is instantiated by a SR-TE LSP."; 6967 } 6968 } 6970 grouping te-sr-named-path-constraints { 6971 description "Named TE SR path constraints grouping"; 6972 uses te-sr-named-path-constraints_config; 6973 } 6975 /*** End of MPLS SR-TE tunnel configuration/state */ 6977 /** 6978 * MPLS TE augmentations 6979 */ 6980 augment "/te:te/te:globals/te:named-path-constraints" + 6981 "/te:named-path-constraint" { 6982 description 6983 "Augmentations for MPLS SR-TE config named constraints"; 6984 uses te-sr-named-path-constraints; 6985 } 6987 /* MPLS TE tunnel augmentations */ 6989 /* MPLS TE LSPs augmentations */ 6990 } 6991 6993 Figure 12: SR TE MPLS YANG module 6995 5. IANA Considerations 6997 This document registers the following URIs in the IETF XML registry 6998 [RFC3688]. Following the format in [RFC3688], the following 6999 registration is requested to be made. 7001 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 7002 is an XML namespace. 7004 URI: urn:ietf:params:xml:ns:yang:ietf-te-device XML: N/A, the 7005 requested URI is an XML namespace. 7007 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls XML: N/A, the requested 7008 URI is an XML namespace. 7010 URI: urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls XML: N/A, the 7011 requested URI is an XML namespace. 7013 URI: urn:ietf:params:xml:ns:yang:ietf-te-types XML: N/A, the 7014 requested URI is an XML namespace. 7016 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls-types XML: N/A, the 7017 requested URI is an XML namespace. 7019 This document registers a YANG module in the YANG Module Names 7020 registry [RFC6020]. 7022 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 7023 ietf-te reference: RFC3209 7025 name: ietf-te-device namespace: urn:ietf:params:xml:ns:yang:ietf-te 7026 prefix: ietf-te-device reference: RFC3209 7028 name: ietf-te-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 7029 mpls prefix: ietf-te-mpls reference: RFC3209 7031 name: ietf-te-sr-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 7032 sr-mpls prefix: ietf-te-sr-mpls 7034 name: ietf-te-types namespace: urn:ietf:params:xml:ns:yang:ietf-te- 7035 types prefix: ietf-te-types reference: RFC3209 7037 name: ietf-te-mpls-types namespace: urn:ietf:params:xml:ns:yang:ietf- 7038 te-mpls-types prefix: ietf-te-mpls-types reference: RFC3209 7040 6. Security Considerations 7042 The YANG module defined in this memo is designed to be accessed via 7043 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 7044 secure transport layer and the mandatory-to-implement secure 7045 transport is SSH [RFC6242]. The NETCONF access control model 7046 [RFC6536] provides means to restrict access for particular NETCONF 7048 users to a pre-configured subset of all available NETCONF protocol 7049 operations and content. 7051 There are a number of data nodes defined in the YANG module which are 7052 writable/creatable/deletable (i.e., config true, which is the 7053 default). These data nodes may be considered sensitive or vulnerable 7054 in some network environments. Write operations (e.g., ) 7055 to these data nodes without proper protection can have a negative 7056 effect on network operations. Following are the subtrees and data 7057 nodes and their sensitivity/vulnerability: 7059 "/te/globals": This module specifies the global TE configurations on 7060 a device. Unauthorized access to this container could cause the 7061 device to ignore packets it should receive and process. 7063 "/te/tunnels": This list specifies the configured TE tunnels on a 7064 device. Unauthorized access to this list could cause the device to 7065 ignore packets it should receive and process. 7067 "/te/lsps-state": This list specifies the state derived LSPs. 7068 Unauthorized access to this list could cause the device to ignore 7069 packets it should receive and process. 7071 "/te/interfaces": This list specifies the configured TE interfaces on 7072 a device. Unauthorized access to this list could cause the device to 7073 ignore packets it should receive and process. 7075 7. Acknowledgement 7077 The authors would like to thank the members of the multi-vendor YANG 7078 design team who are involved in the definition of this model. 7080 The authors would also like to thank Loa Andersson, Lou Berger, 7081 Sergio Belotti, Italo Busi, Aihua Guo, Dhruv Dhody, Anurag Sharma, 7082 and Xian Zhang for their comments and providing valuable feedback on 7083 this document. 7085 8. Contributors 7087 Xia Chen 7088 Huawei Technologies 7090 Email: jescia.chenxia@huawei.com 7092 Raqib Jones 7093 Brocade 7095 Email: raqib@Brocade.com 7097 Bin Wen 7098 Comcast 7100 Email: Bin_Wen@cable.comcast.com 7102 9. References 7103 9.1. Normative References 7105 [I-D.ietf-teas-yang-rsvp] 7106 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 7107 and H. Shah, "A YANG Data Model for Resource Reservation 7108 Protocol (RSVP)", draft-ietf-teas-yang-rsvp-07 (work in 7109 progress), March 2017. 7111 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 7112 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 7113 RFC2119, March 1997, . 7116 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 7117 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 7118 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 7119 . 7121 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 7122 Switching (GMPLS) Signaling Resource ReserVation Protocol- 7123 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 7124 10.17487/RFC3473, January 2003, . 7127 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 7128 DOI 10.17487/RFC3688, January 2004, . 7131 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 7132 the Network Configuration Protocol (NETCONF)", RFC 6020, 7133 DOI 10.17487/RFC6020, October 2010, . 7136 [RFC6107] Shiomoto, K., Ed. and A. Farrel, Ed., "Procedures for 7137 Dynamically Signaled Hierarchical Label Switched Paths", 7138 RFC 6107, DOI 10.17487/RFC6107, February 2011, 7139 . 7141 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 7142 and A. Bierman, Ed., "Network Configuration Protocol 7143 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 7144 . 7146 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 7147 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 7148 . 7150 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 7151 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 7152 10.17487/RFC6536, March 2012, . 7155 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 7156 6991, DOI 10.17487/RFC6991, July 2013, . 7159 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 7160 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 7161 . 7163 9.2. Informative References 7165 [I-D.clemm-netmod-mount] 7166 Clemm, A., Voit, E., and J. Medved, "Mounting YANG-Defined 7167 Information from Remote Datastores", draft-clemm-netmod- 7168 mount-06 (work in progress), March 2017. 7170 [I-D.dsdt-nmda-guidelines] 7171 Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 7172 and R. Wilton, "Guidelines for YANG Module Authors 7173 (NMDA)", draft-dsdt-nmda-guidelines-01 (work in progress), 7174 May 2017. 7176 Authors' Addresses 7178 Tarek Saad (editor) 7179 Cisco Systems Inc 7181 Email: tsaad@cisco.com 7183 Rakesh Gandhi 7184 Cisco Systems Inc 7186 Email: rgandhi@cisco.com 7188 Xufeng Liu 7189 Jabil 7191 Email: Xufeng_Liu@jabil.com 7192 Vishnu Pavan Beeram 7193 Juniper Networks 7195 Email: vbeeram@juniper.net 7197 Himanshu Shah 7198 Ciena 7200 Email: hshah@ciena.com 7202 Igor Bryskin 7203 Huawei Technologies 7205 Email: Igor.Bryskin@huawei.com