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