idnits 2.17.1 draft-ietf-teas-yang-te-11.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 (February 15, 2018) is 2262 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: August 19, 2018 X. Liu 6 Jabil 7 V. Beeram 8 Juniper Networks 9 H. Shah 10 Ciena 11 I. Bryskin 12 Huawei Technologies 13 February 15, 2018 15 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 16 draft-ietf-teas-yang-te-11 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 https://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 August 19, 2018. 47 Copyright Notice 49 Copyright (c) 2018 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 (https://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 . . . . . . . . . . . . . 36 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 . . . . . . . . . . . . . . . . . . . . . . . 151 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,te-types:named-extended- 663 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 lockout-of-normal? boolean 889 | | | +--rw freeze? boolean 890 | | +--rw restoration 891 | | | +--rw enable? boolean 892 | | | +--rw restoration-type? identityref 893 | | | +--rw restoration-scheme? identityref 894 | | | +--rw restoration-reversion-disable? boolean 895 | | | +--rw hold-off-time? uint32 896 | | | +--rw wait-to-restore? uint16 897 | | | +--rw wait-to-revert? uint16 898 | | +--rw topology-id? 899 te-types:te-topology-id 900 | | +--rw bandwidth-generic 901 | | | +--rw te-bandwidth 902 | | | +--rw (technology)? 903 | | | +--:(psc) 904 | | | | +--rw psc? 905 rt-types:bandwidth-ieee-float32 906 | | | +--:(otn) 907 | | | | +--rw otn* [rate-type] 908 | | | | +--rw rate-type identityref 909 | | | | +--rw counter? uint16 910 | | | +--:(lsc) 911 | | | | +--rw wdm* [spectrum slot] 912 | | | | +--rw spectrum identityref 913 | | | | +--rw slot int16 914 | | | | +--rw width? uint16 915 | | | +--:(generic) 916 | | | +--rw generic? te-bandwidth 917 | | +--rw disjointness? 918 te-types:te-path-disjointness 919 | | +--rw setup-priority? uint8 920 | | +--rw hold-priority? uint8 921 | | +--rw signaling-type? identityref 922 | | +--rw dependency-tunnels 923 | | | +--rw dependency-tunnel* [name] 924 | | | +--rw name -> 925 ../../../../../tunnels/tunnel/name 926 | | | +--rw encoding? identityref 927 | | | +--rw switching-type? identityref 928 | | +--ro state 929 | | | +--ro operational-state? identityref 930 | | | +--ro te-dev:lsp-install-interval? uint32 931 | | | +--ro te-dev:lsp-cleanup-interval? uint32 932 | | | +--ro te-dev:lsp-invalidation-interval? uint32 933 | | +--rw bidirectional 934 | | | +--rw association 935 | | | +--rw id? uint16 936 | | | +--rw source? inet:ip-address 937 | | | +--rw global-source? inet:ip-address 938 | | | +--rw type? identityref 939 | | | +--rw provisioning? identityref 940 | | +--rw p2p-primary-paths 941 | | | +--rw p2p-primary-path* [name] 942 | | | +--rw hierarchical-link 943 | | | | +--rw local-te-node-id? te-types:te-node-id 944 | | | | +--rw local-te-link-tp-id? te-types:te-tp-id 945 | | | | +--rw remote-te-node-id? te-types:te-node-id 946 | | | | +--rw te-topology-id? 947 te-types:te-topology-id 948 | | | +--rw name string 949 | | | +--rw preference? uint8 950 | | | +--rw path-setup-protocol? identityref 951 | | | +--rw path-computation-method? identityref 952 | | | +--rw path-computation-server? 953 inet:ip-address 954 | | | +--rw compute-only? empty 955 | | | +--rw use-path-computation? boolean 956 | | | +--rw lockdown? empty 957 | | | +--rw path-scope? identityref 958 | | | +--rw named-explicit-path? -> 959 ../../../../../globals/named-explicit-paths/named-explicit-path/ 960 name 961 | | | +--rw named-path-constraint? -> 962 ../../../../../globals/named-path-constraints/ 963 named-path-constraint/name 964 {te-types:named-path-constraints}? 965 | | | +--ro state 966 | | | | +--ro computed-path-properties 967 | | | | | +--ro path-metric* [metric-type] 968 | | | | | | +--ro metric-type -> ../state/metric-type 969 | | | | | | +--ro state 970 | | | | | | +--ro metric-type? identityref 971 | | | | | | +--ro accumulative-value? uint64 972 | | | | | +--ro path-affinities 973 | | | | | | +--ro constraints* [usage] 974 | | | | | | +--ro usage -> ../state/usage 975 | | | | | | +--ro state 976 | | | | | | +--ro usage? identityref 977 | | | | | | +--ro (style)? 978 | | | | | | +--:(value) 979 | | | | | | | +--ro value? 980 te-types:admin-groups 981 | | | | | | +--:(named) 982 | | | | | | +--ro affinity-names* [name] 983 | | | | | | +--ro name string 984 | | | | | +--ro path-srlgs 985 | | | | | | +--ro (style)? 986 | | | | | | +--:(values) 987 | | | | | | | +--ro state 988 | | | | | | | +--ro usage? identityref 989 | | | | | | | +--ro values* te-types:srlg 990 | | | | | | +--:(named) 991 | | | | | | +--ro constraints 992 | | | | | | +--ro constraint* [usage] 993 | | | | | | +--ro usage -> 994 ../state/usage 995 | | | | | | +--ro state 996 | | | | | | | +--ro usage? identityref 997 | | | | | | +--ro srlg-names 998 | | | | | | +--ro srlg-name* [name] 999 | | | | | | +--ro name -> 1000 ../state/name 1001 | | | | | | +--ro state 1002 | | | | | | +--ro name? string 1003 | | | | | +--ro path-computed-route-objects 1004 | | | | | | +--ro path-computed-route-object* [index] 1005 | | | | | | +--ro index -> ../state/index 1006 | | | | | | +--ro state 1007 | | | | | | +--ro index? uint32 1008 | | | | | | +--ro (type)? 1009 | | | | | | +--:(numbered) 1010 | | | | | | | +--ro numbered-hop 1011 | | | | | | | +--ro address? 1012 te-types:te-tp-id 1013 | | | | | | | +--ro hop-type? te-hop-type 1014 | | | | | | +--:(as-number) 1015 | | | | | | | +--ro as-number-hop 1016 | | | | | | | +--ro as-number? binary 1017 | | | | | | | +--ro hop-type? 1018 te-hop-type 1019 | | | | | | +--:(unnumbered) 1020 | | | | | | | +--ro unnumbered-hop 1021 | | | | | | | +--ro node-id? 1022 te-types:te-node-id 1023 | | | | | | | +--ro link-tp-id? 1024 te-types:te-tp-id 1025 | | | | | | | +--ro hop-type? 1026 te-hop-type 1027 | | | | | | +--:(label) 1028 | | | | | | | +--ro label-hop 1029 | | | | | | | +--ro value? 1030 rt-types:generalized-label 1031 | | | | | | +--:(sid) 1032 | | | | | | +--ro sid-hop 1033 | | | | | | +--ro sid? 1034 rt-types:generalized-label 1035 | | | | | +--ro shared-resources-tunnels 1036 | | | | | +--ro lsp-shared-resources-tunnel* 1037 te:tunnel-ref 1038 | | | | +--ro lsps 1039 | | | | | +--ro lsp* [source destination tunnel-id 1040 lsp-id 1041 extended-tunnel-id] 1042 | | | | | +--ro source 1043 inet:ip-address 1044 | | | | | +--ro destination 1045 inet:ip-address 1046 | | | | | +--ro tunnel-id uint16 1047 | | | | | +--ro lsp-id uint16 1048 | | | | | +--ro extended-tunnel-id 1049 inet:ip-address 1050 | | | | | +--ro operational-state? 1051 identityref 1052 | | | | | +--ro path-setup-protocol? 1053 identityref 1054 | | | | | +--ro origin-type? 1055 enumeration 1056 | | | | | +--ro lsp-resource-status? 1057 enumeration 1058 | | | | | +--ro lsp-protection-role? 1059 enumeration 1060 | | | | | +--ro lsp-protection-state? 1061 identityref 1062 | | | | | +--ro shared-resources-tunnels 1063 | | | | | | +--ro lsp-shared-resources-tunnel* 1064 te:tunnel-ref 1065 | | | | | +--ro lsp-record-route-subobjects 1066 | | | | | | +--ro record-route-subobject* [index] 1067 | | | | | | +--ro index -> ../state/index 1068 | | | | | | +--ro state 1069 | | | | | | +--ro index? uint32 1070 | | | | | | +--ro (type)? 1071 | | | | | | +--:(numbered) 1072 | | | | | | | +--ro address? 1073 te-types:te-tp-id 1074 | | | | | | | +--ro ip-flags? binary 1075 | | | | | | +--:(unnumbered) 1076 | | | | | | | +--ro node-id? 1077 te-types:te-node-id 1078 | | | | | | | +--ro link-tp-id? 1079 te-types:te-tp-id 1080 | | | | | | +--:(label) 1081 | | | | | | +--ro value? 1082 rt-types:generalized-label 1083 | | | | | | +--ro label-flags? binary 1084 | | | | | +--ro te-dev:lsp-timers 1085 | | | | | | +--ro te-dev:life-time? uint32 1086 | | | | | | +--ro te-dev:time-to-install? uint32 1087 | | | | | | +--ro te-dev:time-to-destroy? uint32 1088 | | | | | +--ro te-dev:downstream-info 1089 | | | | | | +--ro te-dev:nhop? 1090 inet:ip-address 1091 | | | | | | +--ro te-dev:outgoing-interface? 1092 if:interface-ref 1093 | | | | | | +--ro te-dev:neighbor? 1094 inet:ip-address 1095 | | | | | | +--ro te-dev:label? 1096 rt-types:generalized-label 1097 | | | | | +--ro te-dev:upstream-info 1098 | | | | | +--ro te-dev:phop? inet:ip-address 1099 | | | | | +--ro te-dev:neighbor? inet:ip-address 1100 | | | | | +--ro te-dev:label? 1101 rt-types:generalized-label 1102 | | | | +--ro te-mpls:static-lsp-name? 1103 mpls-static:static-lsp-ref 1104 | | | +--rw p2p-reverse-primary-path 1105 | | | | +--rw name? string 1106 | | | | +--rw preference? uint8 1107 | | | | +--rw path-setup-protocol? identityref 1108 | | | | +--rw path-computation-method? identityref 1109 | | | | +--rw path-computation-server? inet:ip-address 1110 | | | | +--rw compute-only? empty 1111 | | | | +--rw use-path-computation? boolean 1112 | | | | +--rw lockdown? empty 1113 | | | | +--rw path-scope? identityref 1114 | | | | +--rw named-explicit-path? -> 1115 ../../../../../../globals/named-explicit-paths/ 1116 named-explicit-path/name 1117 | | | | +--rw named-path-constraint? -> 1118 ../../../../../../globals/named-path-constraints/ 1119 named-path-constraint/name 1120 {te-types:named-path-constraints}? 1121 | | | | +--ro state 1122 | | | | +--ro computed-path-properties 1123 | | | | | +--ro path-metric* [metric-type] 1124 | | | | | | +--ro metric-type -> 1125 ../state/metric-type 1126 | | | | | | +--ro state 1127 | | | | | | +--ro metric-type? 1128 identityref 1129 | | | | | | +--ro accumulative-value? uint64 1130 | | | | | +--ro path-affinities 1131 | | | | | | +--ro constraints* [usage] 1132 | | | | | | +--ro usage -> ../state/usage 1133 | | | | | | +--ro state 1134 | | | | | | +--ro usage? identityref 1135 | | | | | | +--ro (style)? 1136 | | | | | | +--:(value) 1137 | | | | | | | +--ro value? 1138 te-types:admin-groups 1139 | | | | | | +--:(named) 1140 | | | | | | +--ro affinity-names* [name] 1141 | | | | | | +--ro name string 1142 | | | | | +--ro path-srlgs 1143 | | | | | | +--ro (style)? 1144 | | | | | | +--:(values) 1145 | | | | | | | +--ro state 1146 | | | | | | | +--ro usage? identityref 1147 | | | | | | | +--ro values* te-types:srlg 1148 | | | | | | +--:(named) 1149 | | | | | | +--ro constraints 1150 | | | | | | +--ro constraint* [usage] 1151 | | | | | | +--ro usage -> 1152 ../state/usage 1153 | | | | | | +--ro state 1154 | | | | | | | +--ro usage? identityref 1155 | | | | | | +--ro srlg-names 1156 | | | | | | +--ro srlg-name* [name] 1157 | | | | | | +--ro name -> 1158 ../state/name 1159 | | | | | | +--ro state 1160 | | | | | | +--ro name? string 1161 | | | | | +--ro path-computed-route-objects 1162 | | | | | | +--ro path-computed-route-object* [index] 1163 | | | | | | +--ro index -> ../state/index 1164 | | | | | | +--ro state 1165 | | | | | | +--ro index? uint32 1166 | | | | | | +--ro (type)? 1167 | | | | | | +--:(numbered) 1168 | | | | | | | +--ro numbered-hop 1169 | | | | | | | +--ro address? 1170 te-types:te-tp-id 1171 | | | | | | | +--ro hop-type? 1172 te-hop-type 1173 | | | | | | +--:(as-number) 1174 | | | | | | | +--ro as-number-hop 1175 | | | | | | | +--ro as-number? binary 1176 | | | | | | | +--ro hop-type? 1177 te-hop-type 1178 | | | | | | +--:(unnumbered) 1179 | | | | | | | +--ro unnumbered-hop 1180 | | | | | | | +--ro node-id? 1181 te-types:te-node-id 1182 | | | | | | | +--ro link-tp-id? 1183 te-types:te-tp-id 1184 | | | | | | | +--ro hop-type? 1185 te-hop-type 1186 | | | | | | +--:(label) 1187 | | | | | | | +--ro label-hop 1188 | | | | | | | +--ro value? 1189 rt-types:generalized-label 1190 | | | | | | +--:(sid) 1191 | | | | | | +--ro sid-hop 1192 | | | | | | +--ro sid? 1193 rt-types:generalized-label 1194 | | | | | +--ro shared-resources-tunnels 1195 | | | | | +--ro lsp-shared-resources-tunnel* 1196 te:tunnel-ref 1197 | | | | +--ro lsps 1198 | | | | +--ro lsp* [source destination tunnel-id 1199 lsp-id extended-tunnel-id] 1200 | | | | +--ro source 1201 inet:ip-address 1202 | | | | +--ro destination 1203 inet:ip-address 1204 | | | | +--ro tunnel-id 1205 uint16 1206 | | | | +--ro lsp-id 1207 uint16 1208 | | | | +--ro extended-tunnel-id 1209 inet:ip-address 1210 | | | | +--ro operational-state? 1211 identityref 1212 | | | | +--ro path-setup-protocol? 1213 identityref 1214 | | | | +--ro origin-type? 1215 enumeration 1216 | | | | +--ro lsp-resource-status? 1217 enumeration 1218 | | | | +--ro lsp-protection-role? 1219 enumeration 1220 | | | | +--ro lsp-protection-state? 1221 identityref 1222 | | | | +--ro shared-resources-tunnels 1223 | | | | | +--ro lsp-shared-resources-tunnel* 1224 te:tunnel-ref 1225 | | | | +--ro lsp-record-route-subobjects 1226 | | | | +--ro record-route-subobject* [index] 1227 | | | | +--ro index -> ../state/index 1228 | | | | +--ro state 1229 | | | | +--ro index? uint32 1230 | | | | +--ro (type)? 1231 | | | | +--:(numbered) 1232 | | | | | +--ro address? 1233 te-types:te-tp-id 1234 | | | | | +--ro ip-flags? 1235 binary 1236 | | | | +--:(unnumbered) 1237 | | | | | +--ro node-id? 1238 te-types:te-node-id 1239 | | | | | +--ro link-tp-id? 1240 te-types:te-tp-id 1241 | | | | +--:(label) 1242 | | | | +--ro value? 1243 rt-types:generalized-label 1244 | | | | +--ro label-flags? 1245 binary 1246 | | | +--rw p2p-reverse-secondary-path 1247 | | | | +--rw secondary-path? -> 1248 ../../../../p2p-secondary-paths/p2p-secondary-path/name 1249 | | | | +--rw path-setup-protocol? identityref 1250 | | | +--rw candidate-p2p-secondary-paths 1251 | | | | +--rw candidate-p2p-secondary-path* 1252 [secondary-path] 1253 | | | | +--rw secondary-path -> 1254 ../../../../../p2p-secondary-paths/p2p-secondary-path/name 1255 | | | | +--rw path-setup-protocol? identityref 1256 | | | | +--ro state 1257 | | | | +--ro active? boolean 1258 | | | +--rw te-mpls:static-lsp-name? 1259 mpls-static:static-lsp-ref 1260 | | +--rw p2p-secondary-paths 1261 | | | +--rw p2p-secondary-path* [name] 1262 | | | +--rw name string 1263 | | | +--rw preference? uint8 1264 | | | +--rw path-setup-protocol? identityref 1265 | | | +--rw path-computation-method? identityref 1266 | | | +--rw path-computation-server? inet:ip-address 1267 | | | +--rw compute-only? empty 1268 | | | +--rw use-path-computation? boolean 1269 | | | +--rw lockdown? empty 1270 | | | +--rw path-scope? identityref 1271 | | | +--rw named-explicit-path? -> 1272 ../../../../../globals/named-explicit-paths/named-explicit-path/ 1273 name 1274 | | | +--rw named-path-constraint? -> 1275 ../../../../../globals/named-path-constraints/ 1276 named-path-constraint/name 1277 {te-types:named-path-constraints}? 1278 | | | +--rw protection 1279 | | | | +--rw enable? boolean 1280 | | | | +--rw protection-type? identityref 1281 | | | | +--rw protection-reversion-disable? boolean 1282 | | | | +--rw hold-off-time? uint32 1283 | | | | +--rw wait-to-revert? uint16 1284 | | | | +--rw lockout-of-normal? boolean 1285 | | | | +--rw freeze? boolean 1286 | | | +--rw restoration 1287 | | | | +--rw enable? boolean 1288 | | | | +--rw restoration-type? identityref 1289 | | | | +--rw restoration-scheme? identityref 1290 | | | | +--rw restoration-reversion-disable? boolean 1291 | | | | +--rw hold-off-time? uint32 1292 | | | | +--rw wait-to-restore? uint16 1293 | | | | +--rw wait-to-revert? uint16 1294 | | | +--rw protection-external-commands 1295 | | | | +--rw lockout-of-protection? boolean 1296 | | | | +--rw manual-switch 1297 | | | | | +--rw manual-switch? boolean 1298 | | | | | +--rw manual-swith-tunnel? te:tunnel-ref 1299 | | | | +--rw forced-switch 1300 | | | | +--rw forced-switch? boolean 1301 | | | | +--rw forced-swith-tunnel? te:tunnel-ref 1302 | | | +--ro state 1303 | | | | +--ro computed-path-properties 1304 | | | | | +--ro path-metric* [metric-type] 1305 | | | | | | +--ro metric-type -> ../state/metric-type 1306 | | | | | | +--ro state 1307 | | | | | | +--ro metric-type? identityref 1308 | | | | | | +--ro accumulative-value? uint64 1309 | | | | | +--ro path-affinities 1310 | | | | | | +--ro constraints* [usage] 1311 | | | | | | +--ro usage -> ../state/usage 1312 | | | | | | +--ro state 1313 | | | | | | +--ro usage? identityref 1314 | | | | | | +--ro (style)? 1315 | | | | | | +--:(value) 1316 | | | | | | | +--ro value? 1317 te-types:admin-groups 1318 | | | | | | +--:(named) 1319 | | | | | | +--ro affinity-names* [name] 1320 | | | | | | +--ro name string 1321 | | | | | +--ro path-srlgs 1322 | | | | | | +--ro (style)? 1323 | | | | | | +--:(values) 1324 | | | | | | | +--ro state 1325 | | | | | | | +--ro usage? identityref 1326 | | | | | | | +--ro values* te-types:srlg 1327 | | | | | | +--:(named) 1328 | | | | | | +--ro constraints 1329 | | | | | | +--ro constraint* [usage] 1330 | | | | | | +--ro usage -> 1331 ../state/usage 1332 | | | | | | +--ro state 1333 | | | | | | | +--ro usage? identityref 1334 | | | | | | +--ro srlg-names 1335 | | | | | | +--ro srlg-name* [name] 1336 | | | | | | +--ro name -> 1337 ../state/name 1338 | | | | | | +--ro state 1339 | | | | | | +--ro name? string 1340 | | | | | +--ro path-computed-route-objects 1341 | | | | | | +--ro path-computed-route-object* [index] 1342 | | | | | | +--ro index -> ../state/index 1343 | | | | | | +--ro state 1344 | | | | | | +--ro index? uint32 1345 | | | | | | +--ro (type)? 1346 | | | | | | +--:(numbered) 1347 | | | | | | | +--ro numbered-hop 1348 | | | | | | | +--ro address? 1349 te-types:te-tp-id 1350 | | | | | | | +--ro hop-type? te-hop-type 1351 | | | | | | +--:(as-number) 1352 | | | | | | | +--ro as-number-hop 1353 | | | | | | | +--ro as-number? binary 1354 | | | | | | | +--ro hop-type? 1355 te-hop-type 1356 | | | | | | +--:(unnumbered) 1357 | | | | | | | +--ro unnumbered-hop 1358 | | | | | | | +--ro node-id? 1359 te-types:te-node-id 1360 | | | | | | | +--ro link-tp-id? 1361 te-types:te-tp-id 1362 | | | | | | | +--ro hop-type? 1363 te-hop-type 1364 | | | | | | +--:(label) 1365 | | | | | | | +--ro label-hop 1366 | | | | | | | +--ro value? 1367 rt-types:generalized-label 1368 | | | | | | +--:(sid) 1369 | | | | | | +--ro sid-hop 1370 | | | | | | +--ro sid? 1371 rt-types:generalized-label 1372 | | | | | +--ro shared-resources-tunnels 1373 | | | | | +--ro lsp-shared-resources-tunnel* 1374 te:tunnel-ref 1375 | | | | +--ro lsps 1376 | | | | | +--ro lsp* [source destination tunnel-id 1377 lsp-id 1378 extended-tunnel-id] 1379 | | | | | +--ro source 1380 inet:ip-address 1381 | | | | | +--ro destination 1382 inet:ip-address 1383 | | | | | +--ro tunnel-id uint16 1384 | | | | | +--ro lsp-id uint16 1385 | | | | | +--ro extended-tunnel-id 1386 inet:ip-address 1387 | | | | | +--ro operational-state? 1388 identityref 1389 | | | | | +--ro path-setup-protocol? 1390 identityref 1391 | | | | | +--ro origin-type? 1392 enumeration 1393 | | | | | +--ro lsp-resource-status? 1394 enumeration 1395 | | | | | +--ro lsp-protection-role? 1396 enumeration 1397 | | | | | +--ro lsp-protection-state? 1398 identityref 1399 | | | | | +--ro shared-resources-tunnels 1400 | | | | | | +--ro lsp-shared-resources-tunnel* 1401 te:tunnel-ref 1402 | | | | | +--ro lsp-record-route-subobjects 1403 | | | | | | +--ro record-route-subobject* [index] 1404 | | | | | | +--ro index -> ../state/index 1405 | | | | | | +--ro state 1406 | | | | | | +--ro index? uint32 1407 | | | | | | +--ro (type)? 1408 | | | | | | +--:(numbered) 1409 | | | | | | | +--ro address? 1410 te-types:te-tp-id 1411 | | | | | | | +--ro ip-flags? binary 1412 | | | | | | +--:(unnumbered) 1413 | | | | | | | +--ro node-id? 1414 te-types:te-node-id 1415 | | | | | | | +--ro link-tp-id? 1416 te-types:te-tp-id 1417 | | | | | | +--:(label) 1418 | | | | | | +--ro value? 1419 rt-types:generalized-label 1420 | | | | | | +--ro label-flags? binary 1421 | | | | | +--ro te-dev:lsp-timers 1422 | | | | | | +--ro te-dev:life-time? uint32 1423 | | | | | | +--ro te-dev:time-to-install? uint32 1424 | | | | | | +--ro te-dev:time-to-destroy? uint32 1425 | | | | | +--ro te-dev:downstream-info 1426 | | | | | | +--ro te-dev:nhop? 1427 inet:ip-address 1428 | | | | | | +--ro te-dev:outgoing-interface? 1429 if:interface-ref 1430 | | | | | | +--ro te-dev:neighbor? 1431 inet:ip-address 1432 | | | | | | +--ro te-dev:label? 1433 rt-types:generalized-label 1434 | | | | | +--ro te-dev:upstream-info 1435 | | | | | +--ro te-dev:phop? inet:ip-address 1436 | | | | | +--ro te-dev:neighbor? inet:ip-address 1437 | | | | | +--ro te-dev:label? 1438 rt-types:generalized-label 1439 | | | | +--ro te-mpls:static-lsp-name? 1440 mpls-static:static-lsp-ref 1441 | | | +--rw te-mpls:static-lsp-name? 1442 mpls-static:static-lsp-ref 1443 | | +---x tunnel-action 1444 | | | +---w input 1445 | | | | +---w action-type? identityref 1446 | | | +--ro output 1447 | | | +--ro action-result? identityref 1448 | | +--rw te-dev:lsp-install-interval? uint32 1449 | | +--rw te-dev:lsp-cleanup-interval? uint32 1450 | | +--rw te-dev:lsp-invalidation-interval? uint32 1451 | | +--rw te-mpls:tunnel-igp-shortcut 1452 | | | +--rw te-mpls:shortcut-eligible? boolean 1453 | | | +--rw te-mpls:metric-type? identityref 1454 | | | +--rw te-mpls:metric? int32 1455 | | | +--rw te-mpls:routing-afs* inet:ip-version 1456 | | +--rw te-mpls:forwarding 1457 | | | +--rw te-mpls:binding-label? rt-types:mpls-label 1458 | | | +--rw te-mpls:load-share? uint32 1459 | | | +--rw te-mpls:policy-class? uint8 1460 | | +--rw te-mpls:bandwidth-mpls 1461 | | +--rw te-mpls:specification-type? 1462 te-mpls-types:te-bandwidth-type 1463 | | +--rw te-mpls:set-bandwidth? 1464 te-mpls-types:bandwidth-kbps 1465 | | +--rw te-mpls:class-type? te-types:te-ds-class 1466 | | +--ro te-mpls:state 1467 | | | +--ro te-mpls:signaled-bandwidth? 1468 te-mpls-types:bandwidth-kbps 1469 | | +--rw te-mpls:auto-bandwidth 1470 | | +--rw te-mpls:enabled? boolean 1471 | | +--rw te-mpls:min-bw? 1472 te-mpls-types:bandwidth-kbps 1473 | | +--rw te-mpls:max-bw? 1474 te-mpls-types:bandwidth-kbps 1475 | | +--rw te-mpls:adjust-interval? uint32 1476 | | +--rw te-mpls:adjust-threshold? te-types:percentage 1477 | | +--rw te-mpls:overflow 1478 | | | +--rw te-mpls:enabled? boolean 1479 | | | +--rw te-mpls:overflow-threshold? 1480 te-types:percentage 1481 | | | +--rw te-mpls:trigger-event-count? uint16 1482 | | +--rw te-mpls:underflow 1483 | | +--rw te-mpls:enabled? boolean 1484 | | +--rw te-mpls:underflow-threshold? 1485 te-types:percentage 1486 | | +--rw te-mpls:trigger-event-count? uint16 1487 | +--rw tunnel-p2mp* [name] 1488 | +--rw name string 1489 | +--rw identifier? uint16 1490 | +--rw description? string 1491 | +--ro state 1492 | +--ro operational-state? identityref 1493 +--ro lsps-state 1494 | +--ro lsp* [source destination tunnel-id lsp-id 1495 extended-tunnel-id] 1496 | +--ro source inet:ip-address 1497 | +--ro destination inet:ip-address 1498 | +--ro tunnel-id uint16 1499 | +--ro lsp-id uint16 1500 | +--ro extended-tunnel-id inet:ip-address 1501 | +--ro operational-state? identityref 1502 | +--ro path-setup-protocol? identityref 1503 | +--ro origin-type? enumeration 1504 | +--ro lsp-resource-status? enumeration 1505 | +--ro lsp-protection-role? enumeration 1506 | +--ro lsp-protection-state? identityref 1507 | +--ro lsp-record-route-subobjects 1508 | | +--ro record-route-subobject* [index] 1509 | | +--ro index -> ../state/index 1510 | | +--ro state 1511 | | +--ro index? uint32 1512 | | +--ro (type)? 1513 | | +--:(numbered) 1514 | | | +--ro address? te-types:te-tp-id 1515 | | | +--ro ip-flags? binary 1516 | | +--:(unnumbered) 1517 | | | +--ro node-id? te-types:te-node-id 1518 | | | +--ro link-tp-id? te-types:te-tp-id 1519 | | +--:(label) 1520 | | +--ro value? 1521 rt-types:generalized-label 1522 | | +--ro label-flags? binary 1523 | +--ro te-dev:lsp-timers 1524 | | +--ro te-dev:life-time? uint32 1525 | | +--ro te-dev:time-to-install? uint32 1526 | | +--ro te-dev:time-to-destroy? uint32 1527 | +--ro te-dev:downstream-info 1528 | | +--ro te-dev:nhop? inet:ip-address 1529 | | +--ro te-dev:outgoing-interface? if:interface-ref 1530 | | +--ro te-dev:neighbor? inet:ip-address 1531 | | +--ro te-dev:label? 1532 rt-types:generalized-label 1533 | +--ro te-dev:upstream-info 1534 | +--ro te-dev:phop? inet:ip-address 1535 | +--ro te-dev:neighbor? inet:ip-address 1536 | +--ro te-dev:label? rt-types:generalized-label 1537 +---x protection-external-commands 1538 | +---w input 1539 | +---w protection-external-command? identityref 1540 | +---w tunnel-using-lsp-resources? te:tunnel-ref 1541 +--rw te-dev:interfaces 1542 +--rw te-dev:threshold-type? enumeration 1543 +--rw te-dev:delta-percentage? te-types:percentage 1544 +--rw te-dev:threshold-specification? enumeration 1545 +--rw te-dev:up-thresholds* te-types:percentage 1546 +--rw te-dev:down-thresholds* te-types:percentage 1547 +--rw te-dev:up-down-thresholds* te-types:percentage 1548 +--rw te-dev:interface* [interface] 1549 +--rw te-dev:interface if:interface-ref 1550 +--rw te-dev:te-metric? te-types:te-metric 1551 +--rw (te-dev:admin-group-type)? 1552 | +--:(te-dev:value-admin-groups) 1553 | | +--rw (te-dev:value-admin-group-type)? 1554 | | +--:(te-dev:admin-groups) 1555 | | | +--rw te-dev:admin-group? 1556 te-types:admin-group 1557 | | +--:(te-dev:extended-admin-groups) 1558 {te-types:extended-admin-groups}? 1559 | | +--rw te-dev:extended-admin-group? 1560 te-types:extended-admin-group 1561 | +--:(te-dev:named-admin-groups) 1562 | +--rw te-dev:named-admin-groups* [named-admin-group] 1563 {te-types:extended-admin-groups,te-types: 1564 named-extended-admin-groups}? 1565 | +--rw te-dev:named-admin-group -> 1566 ../../../../te:globals/named-admin-groups/ 1567 named-admin-group/name 1568 +--rw (te-dev:srlg-type)? 1569 | +--:(te-dev:value-srlgs) 1570 | | +--rw te-dev:values* [value] 1571 | | +--rw te-dev:value uint32 1572 | +--:(te-dev:named-srlgs) 1573 | +--rw te-dev:named-srlgs* [named-srlg] 1574 {te-types:named-srlg-groups}? 1575 | +--rw te-dev:named-srlg -> 1576 ../../../../te:globals/named-srlgs/named-srlg/name 1577 +--rw te-dev:threshold-type? enumeration 1578 +--rw te-dev:delta-percentage? te-types:percentage 1579 +--rw te-dev:threshold-specification? enumeration 1580 +--rw te-dev:up-thresholds* te-types:percentage 1581 +--rw te-dev:down-thresholds* te-types:percentage 1582 +--rw te-dev:up-down-thresholds* te-types:percentage 1583 +--rw te-dev:switching-capabilities* [switching-capability] 1584 | +--rw te-dev:switching-capability identityref 1585 | +--rw te-dev:encoding? identityref 1586 +--ro te-dev:state 1587 +--ro te-dev:te-advertisements_state 1588 +--ro te-dev:flood-interval? uint32 1589 +--ro te-dev:last-flooded-time? uint32 1590 +--ro te-dev:next-flooded-time? uint32 1591 +--ro te-dev:last-flooded-trigger? enumeration 1592 +--ro te-dev:advertized-level-areas* [level-area] 1593 +--ro te-dev:level-area uint32 1595 rpcs: 1596 +---x globals-rpc 1597 +---x interfaces-rpc 1598 +---x tunnels-rpc 1599 +---w input 1600 | +---w tunnel-info 1601 | +---w (type)? 1602 | +--:(tunnel-p2p) 1603 | | +---w p2p-id? te:tunnel-ref 1604 | +--:(tunnel-p2mp) 1605 | +---w p2mp-id? te:tunnel-p2mp-ref 1606 +--ro output 1607 +--ro result 1608 +--ro result? enumeration 1610 notifications: 1611 +---n globals-notif 1612 +---n tunnels-notif 1613 module: ietf-te-device 1615 rpcs: 1616 +---x interfaces-rpc 1618 notifications: 1619 +---n interfaces-notif 1621 Figure 6: TE generic model configuration and state tree 1623 4. TE Generic and Helper YANG Modules 1625 file "ietf-te-types@2018-02-15.yang" 1626 module ietf-te-types { 1628 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; 1630 /* Replace with IANA when assigned */ 1631 prefix "te-types"; 1633 import ietf-inet-types { 1634 prefix inet; 1635 } 1637 import ietf-yang-types { 1638 prefix "yang"; 1639 } 1641 import ietf-routing-types { 1642 prefix "rt-types"; 1643 } 1645 organization 1646 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1647 Working Group"; 1649 contact 1650 "WG Web: 1651 WG List: 1653 WG Chair: Lou Berger 1654 1656 WG Chair: Vishnu Pavan Beeram 1657 1659 Editor: Tarek Saad 1660 1662 Editor: Rakesh Gandhi 1663 1665 Editor: Vishnu Pavan Beeram 1666 1668 Editor: Himanshu Shah 1669 1671 Editor: Xufeng Liu 1672 1674 Editor: Igor Bryskin 1675 "; 1677 description 1678 "This module contains a collection of generally 1679 useful TE specific YANG data type defintions."; 1681 revision "2018-02-15" { 1682 description "Latest revision of TE types"; 1683 reference "RFC3209"; 1684 } 1686 /* 1687 * Identities 1688 */ 1689 identity objective-function-type { 1690 description "Base objective function type"; 1691 } 1692 identity of-minimize-cost-path { 1693 base objective-function-type; 1694 description 1695 "Mimimuze cost of path objective function"; 1696 } 1697 identity of-minimize-load-path { 1698 base objective-function-type; 1699 description 1700 "Minimize the load on path(s) objective 1701 function"; 1702 } 1703 identity of-maximize-residual-bandwidth { 1704 base objective-function-type; 1705 description 1706 "Maximize the residual bandwidth objective 1707 function"; 1708 } 1709 identity of-minimize-agg-bandwidth-consumption { 1710 base objective-function-type; 1711 description 1712 "minimize the aggregate bandwidth consumption 1713 objective function"; 1714 } 1715 identity of-minimize-load-most-loaded-link { 1716 base objective-function-type; 1717 description 1718 "Minimize the load on the most loaded link 1719 objective function"; 1720 } 1721 identity of-minimize-cost-path-set { 1722 base objective-function-type; 1723 description 1724 "Minimize the cost on a path set objective 1725 function"; 1726 } 1728 identity path-computation-method { 1729 description 1730 "base identity for supported path computation 1731 mechanisms"; 1732 } 1734 identity path-locally-computed { 1735 base path-computation-method; 1736 description 1737 "indicates a constrained-path LSP in which the 1738 path is computed by the local LER"; 1739 } 1741 identity path-externally-queried { 1742 base path-computation-method; 1743 description 1744 "Constrained-path LSP in which the path is 1745 obtained by querying an external source, such as a PCE server. 1746 In the case that an LSP is defined to be externally queried, it 1747 may also have associated explicit definitions (provided 1748 to the external source to aid computation); and the path that is 1749 returned by the external source is not required to provide a 1750 wholly resolved path back to the originating system - that is to 1751 say, some local computation may also be required"; 1752 } 1754 identity path-explicitly-defined { 1755 base path-computation-method; 1756 description 1757 "constrained-path LSP in which the path is 1758 explicitly specified as a collection of strict or/and loose 1759 hops"; 1760 } 1762 /** 1763 * Typedefs 1764 */ 1766 typedef te-bandwidth { 1767 type string { 1768 pattern 1769 '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' 1770 + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' 1771 + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+' 1772 + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' 1773 + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' 1774 + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*'; 1775 } 1776 description 1777 "This is the generic bandwidth type that is a string containing 1778 a list of numbers separated by commas, with each of these 1779 number can be non-negative decimal, hex integer, or hex float: 1780 (dec | hex | float)[*(','(dec | hex | float))] 1781 For packet switching type, a float number is used, such as 1782 0x1p10. 1783 For OTN switching type, a list of integers can be used, such 1784 as '0,2,3,1', indicating 2 odu0's and 1 odu3. 1785 For DWDM, a list of pairs of slot number and width can be 1786 used, such as '0, 2, 3, 3', indicating a frequency slot 0 with 1787 slot width 2 and a frequency slot 3 with slot width 3."; 1788 } // te-bandwidth 1790 typedef te-ds-class { 1791 type uint8 { 1792 range "0..7"; 1793 } 1794 description 1795 "The Differentiatied Class-Type of traffic."; 1796 reference "RFC4124: section-4.3.1"; 1797 } 1799 typedef te-hop-type { 1800 type enumeration { 1801 enum LOOSE { 1802 description 1803 "loose hop in an explicit path"; 1804 } 1805 enum STRICT { 1806 description 1807 "strict hop in an explicit path"; 1808 } 1809 } 1810 description 1811 "enumerated type for specifying loose or strict 1812 paths"; 1813 } 1814 identity LSP_METRIC_TYPE { 1815 description 1816 "Base identity for types of LSP metric specification"; 1817 } 1819 identity LSP_METRIC_RELATIVE { 1820 base LSP_METRIC_TYPE; 1821 description 1822 "The metric specified for the LSPs to which this identity refers 1823 is specified as a relative value to the IGP metric cost to the 1824 LSP's tail-end."; 1825 } 1827 identity LSP_METRIC_ABSOLUTE { 1828 base LSP_METRIC_TYPE; 1829 description 1830 "The metric specified for the LSPs to which this identity refers 1831 is specified as an absolute value"; 1832 } 1834 identity LSP_METRIC_INHERITED { 1835 base LSP_METRIC_TYPE; 1836 description 1837 "The metric for for the LSPs to which this identity refers is 1838 not specified explicitly - but rather inherited from the IGP 1839 cost directly"; 1840 } 1842 identity tunnel-type { 1843 description 1844 "Base identity from which specific tunnel types are 1845 derived."; 1846 } 1848 identity tunnel-p2p { 1849 base tunnel-type; 1850 description 1851 "TE point-to-point tunnel type."; 1852 } 1854 identity tunnel-p2mp { 1855 base tunnel-type; 1856 description 1857 "TE point-to-multipoint tunnel type."; 1858 } 1860 identity tunnel-action-type { 1861 description 1862 "Base identity from which specific tunnel action types 1863 are derived."; 1864 } 1866 identity tunnel-action-resetup { 1867 base tunnel-action-type; 1868 description 1869 "TE tunnel action resetup. Tears the 1870 tunnel's current LSP (if any) and 1871 attempts to re-establish a new LSP"; 1872 } 1874 identity tunnel-action-reoptimize { 1875 base tunnel-action-type; 1876 description 1877 "TE tunnel action reoptimize. 1878 Reoptimizes placement of the tunnel LSP(s)"; 1879 } 1881 identity tunnel-action-switchpath { 1882 base tunnel-action-type; 1883 description 1884 "TE tunnel action reoptimize 1885 Switches the tunnel's LSP to use the specified path"; 1886 } 1888 identity te-action-result { 1889 description 1890 "Base identity from which specific TE action results 1891 are derived."; 1892 } 1894 identity te-action-success { 1895 base te-action-result; 1896 description "TE action successul."; 1897 } 1899 identity te-action-fail { 1900 base te-action-result; 1901 description "TE action failed."; 1902 } 1904 identity tunnel-action-inprogress { 1905 base te-action-result; 1906 description "TE action inprogress."; 1907 } 1909 identity tunnel-admin-state-type { 1910 description 1911 "Base identity for TE tunnel admin states"; 1912 } 1914 identity tunnel-admin-state-up { 1915 base tunnel-admin-state-type; 1916 description "Tunnel administratively state up"; 1917 } 1919 identity tunnel-admin-state-down { 1920 base tunnel-admin-state-type; 1921 description "Tunnel administratively state down"; 1922 } 1924 identity tunnel-state-type { 1925 description 1926 "Base identity for TE tunnel states"; 1927 } 1929 identity tunnel-state-up { 1930 base tunnel-state-type; 1931 description "Tunnel state up"; 1932 } 1934 identity tunnel-state-down { 1935 base tunnel-state-type; 1936 description "Tunnel state down"; 1937 } 1939 identity lsp-state-type { 1940 description 1941 "Base identity for TE LSP states"; 1942 } 1944 identity lsp-path-computing { 1945 base lsp-state-type; 1946 description 1947 "State path compute in progress"; 1948 } 1950 identity lsp-path-computation-ok { 1951 base lsp-state-type; 1952 description 1953 "State path compute successful"; 1954 } 1956 identity lsp-path-computatione-failed { 1957 base lsp-state-type; 1958 description 1959 "State path compute failed"; 1960 } 1962 identity lsp-state-setting-up { 1963 base lsp-state-type; 1964 description 1965 "State setting up"; 1966 } 1968 identity lsp-state-setup-ok { 1969 base lsp-state-type; 1970 description 1971 "State setup successful"; 1972 } 1974 identity lsp-state-setup-failed { 1975 base lsp-state-type; 1976 description 1977 "State setup failed"; 1978 } 1980 identity lsp-state-up { 1981 base lsp-state-type; 1982 description "State up"; 1983 } 1985 identity lsp-state-tearing-down { 1986 base lsp-state-type; 1987 description 1988 "State tearing down"; 1989 } 1991 identity lsp-state-down { 1992 base lsp-state-type; 1993 description "State down"; 1994 } 1996 identity path-invalidation-action-type { 1997 description 1998 "Base identity for TE path invalidation action types"; 1999 } 2001 identity path-invalidation-action-drop-type { 2002 base path-invalidation-action-type; 2003 description 2004 "TE path invalidation action drop"; 2005 } 2006 identity path-invalidation-action-drop-tear { 2007 base path-invalidation-action-type; 2008 description 2009 "TE path invalidation action tear"; 2010 } 2012 identity lsp-restoration-type { 2013 description 2014 "Base identity from which LSP restoration types are 2015 derived."; 2016 } 2018 identity lsp-restoration-restore-any { 2019 base lsp-restoration-type; 2020 description 2021 "Restores when any of the LSPs is affected by a failure"; 2022 } 2024 identity lsp-restoration-restore-all { 2025 base lsp-restoration-type; 2026 description 2027 "Restores when all the tunnel LSPs are affected by failure"; 2028 } 2030 identity restoration-scheme-type { 2031 description 2032 "Base identity for LSP restoration schemes"; 2033 } 2035 identity restoration-scheme-preconfigured { 2036 base restoration-scheme-type; 2037 description 2038 "Restoration LSP is preconfigured prior to the failure"; 2039 } 2041 identity restoration-scheme-precomputed { 2042 base restoration-scheme-type; 2043 description 2044 "Restoration LSP is precomputed prior to the failure"; 2045 } 2047 identity restoration-scheme-presignaled { 2048 base restoration-scheme-type; 2049 description 2050 "Restoration LSP is presignaledd prior to the failure"; 2051 } 2053 identity lsp-protection-type { 2054 description 2055 "Base identity from which LSP protection types are 2056 derived."; 2057 } 2059 identity lsp-protection-unprotected { 2060 base lsp-protection-type; 2061 description 2062 "LSP protection 'Unprotected'"; 2063 reference "RFC4872"; 2064 } 2066 identity lsp-protection-reroute-extra { 2067 base lsp-protection-type; 2068 description 2069 "LSP protection '(Full) Rerouting'"; 2070 reference "RFC4872"; 2071 } 2073 identity lsp-protection-reroute { 2074 base lsp-protection-type; 2075 description 2076 "LSP protection 'Rerouting without Extra-Traffic'"; 2077 reference "RFC4872"; 2078 } 2080 identity lsp-protection-1-for-n { 2081 base lsp-protection-type; 2082 description 2083 "LSP protection '1:N Protection with Extra-Traffic'"; 2084 reference "RFC4872"; 2085 } 2087 identity lsp-protection-unidir-1-to-1 { 2088 base lsp-protection-type; 2089 description 2090 "LSP protection '1+1 Unidirectional Protection'"; 2091 reference "RFC4872"; 2092 } 2094 identity lsp-protection-bidir-1-to-1 { 2095 base lsp-protection-type; 2096 description 2097 "LSP protection '1+1 Bidirectional Protection'"; 2098 reference "RFC4872"; 2099 } 2101 identity lsp-protection-state { 2102 description 2103 "Base identity of protection states for reporting 2104 purposes."; 2105 } 2107 identity lsp-protection-extra-traffic { 2108 base lsp-protection-type; 2109 description 2110 "LSP protection 'Extra-Traffic'"; 2111 reference 2112 "ITU-T G.808, RFC 4427."; 2113 } 2115 identity normal { 2116 base lsp-protection-state; 2117 description "Normal state."; 2118 } 2120 identity signal-fail-of-protection { 2121 base lsp-protection-state; 2122 description 2123 "There is a SF condition on the protection transport 2124 entity which has higher priority than the FS command."; 2125 reference 2126 "ITU-T G.873.1, G.8031, G.8131"; 2127 } 2129 identity lockout-of-protection { 2130 base lsp-protection-state; 2131 description 2132 "A Loss of Protection (LoP) command is active."; 2133 reference 2134 "ITU-T G.808, RFC 4427"; 2135 } 2137 identity forced-switch { 2138 base lsp-protection-state; 2139 description 2140 "A forced switch (FS) command is active."; 2141 reference 2142 "ITU-T G.808, RFC 4427"; 2143 } 2145 identity signal-fail { 2146 base lsp-protection-state; 2147 description 2148 "There is a SF condition on either the working 2149 or the protection path."; 2151 reference 2152 "ITU-T G.808, RFC 4427"; 2153 } 2155 identity signal-degrade { 2156 base lsp-protection-state; 2157 description 2158 "There is an SD condition on either the working or the 2159 protection path."; 2160 reference 2161 "ITU-T G.808, RFC 4427"; 2162 } 2164 identity local-wait-to-restore { 2165 base lsp-protection-state; 2166 description 2167 "A local WTR is running."; 2168 reference 2169 "ITU-T G.808, RFC 4427"; 2170 } 2172 identity remote-wait-to-restore { 2173 base lsp-protection-state; 2174 description 2175 "A remote WTR is running."; 2176 reference 2177 "ITU-T G.808, RFC 4427"; 2178 } 2180 identity do-not-revert { 2181 base lsp-protection-state; 2182 description 2183 "A DNR condition is active because of a non-revertive 2184 behavior."; 2185 reference 2186 "ITU-T G.808, RFC 4427"; 2187 } 2189 identity failure-of-protocol { 2190 base lsp-protection-state; 2191 description 2192 "The protection is not working because of a failure of 2193 protocol condition."; 2194 reference 2195 "ITU-T G.873.1, G.8031, G.8131"; 2196 } 2198 identity protection-external-commands { 2199 description 2200 "Protection external commands for trouble shooting 2201 purposes."; 2202 } 2204 identity action-lockout-of-protection { 2205 base protection-external-commands; 2206 description 2207 "A temporary configuration action initiated by an operator 2208 command to ensure that the protection transport entity is 2209 temporarily not available to transport a traffic signal 2210 (either normal or extra traffic)."; 2211 reference 2212 "ITU-T G.808, RFC 4427"; 2213 } 2215 identity action-forced-switch { 2216 base protection-external-commands; 2217 description 2218 "A switch action initiated by an operator command to swith 2219 the extra traffic signal, the normal traffic signal, or the 2220 null signal to the protection transport entity, unless an 2221 equal or higher priority switch command is in effect."; 2222 reference 2223 "ITU-T G.808, RFC 4427"; 2224 } 2226 identity action-manual-switch { 2227 base protection-external-commands; 2228 description 2229 "A switch action initiated by an operator command to swith 2230 the extra traffic signal, the normal traffic signal #i, or 2231 the null signal to the protection transport entity, unless 2232 a fault condition exists on other transport entities or an 2233 equal or higher priority switch command is in effect."; 2234 reference 2235 "ITU-T G.808, RFC 4427"; 2236 } 2238 identity action-exercise { 2239 base protection-external-commands; 2240 description 2241 "An action to start testing if the APS communication is 2242 operating correctly. It is lower priority than any other 2243 state or command."; 2244 reference 2245 "ITU-T G.808, RFC 4427"; 2246 } 2247 identity clear { 2248 base protection-external-commands; 2249 description 2250 "An action that clears the active near-end lockout of 2251 protection, forced switch, manual switch, WTR state, 2252 or exercise command."; 2253 reference 2254 "ITU-T G.808, RFC 4427"; 2255 } 2257 identity switching-capabilities { 2258 description 2259 "Base identity for interface switching capabilities"; 2260 } 2262 identity switching-psc1 { 2263 base switching-capabilities; 2264 description 2265 "Packet-Switch Capable-1 (PSC-1)"; 2266 } 2268 identity switching-evpl { 2269 base switching-capabilities; 2270 description 2271 "Ethernet Virtual Private Line (EVPL)"; 2272 } 2274 identity switching-l2sc { 2275 base switching-capabilities; 2276 description 2277 "Layer-2 Switch Capable (L2SC)"; 2278 } 2280 identity switching-tdm { 2281 base switching-capabilities; 2282 description 2283 "Time-Division-Multiplex Capable (TDM)"; 2284 } 2286 identity switching-otn { 2287 base switching-capabilities; 2288 description 2289 "OTN-TDM capable"; 2290 } 2292 identity switching-dcsc { 2293 base switching-capabilities; 2294 description 2295 "Data Channel Switching Capable (DCSC)"; 2296 } 2298 identity switching-lsc { 2299 base switching-capabilities; 2300 description 2301 "Lambda-Switch Capable (LSC)"; 2302 } 2304 identity switching-fsc { 2305 base switching-capabilities; 2306 description 2307 "Fiber-Switch Capable (FSC)"; 2308 } 2310 identity lsp-encoding-types { 2311 description 2312 "Base identity for encoding types"; 2313 } 2315 identity lsp-encoding-packet { 2316 base lsp-encoding-types; 2317 description 2318 "Packet LSP encoding"; 2319 } 2321 identity lsp-encoding-ethernet { 2322 base lsp-encoding-types; 2323 description 2324 "Ethernet LSP encoding"; 2325 } 2327 identity lsp-encoding-pdh { 2328 base lsp-encoding-types; 2329 description 2330 "ANSI/ETSI LSP encoding"; 2331 } 2333 identity lsp-encoding-sdh { 2334 base lsp-encoding-types; 2335 description 2336 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; 2337 } 2339 identity lsp-encoding-digital-wrapper { 2340 base lsp-encoding-types; 2341 description 2342 "Digital Wrapper LSP encoding"; 2343 } 2345 identity lsp-encoding-lambda { 2346 base lsp-encoding-types; 2347 description 2348 "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"; 2397 } 2399 identity path-setup-sr { 2400 base path-signaling-type; 2401 description 2402 "Segment-routing path setup"; 2403 } 2405 identity path-scope-type { 2406 description 2407 "base identity from which specific path 2408 scope types are derived"; 2409 } 2411 identity path-scope-segment { 2412 base path-scope-type; 2413 description 2414 "Path scope segment"; 2415 } 2417 identity path-scope-end-to-end { 2418 base path-scope-type; 2419 description 2420 "Path scope end to end"; 2421 } 2423 /* TE basic features */ 2424 feature p2mp-te { 2425 description 2426 "Indicates support for P2MP-TE"; 2427 } 2429 feature frr-te { 2430 description 2431 "Indicates support for TE FastReroute (FRR)"; 2432 } 2434 feature extended-admin-groups { 2435 description 2436 "Indicates support for TE link extended admin 2437 groups."; 2438 } 2440 feature named-path-affinities { 2441 description 2442 "Indicates support for named path affinities"; 2443 } 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"; 2486 } 2488 identity route-exclude-srlg { 2489 base route-usage-type; 2490 description 2491 "Exclude SRLG from route"; 2492 } 2494 identity path-metric-type { 2495 description 2496 "Base identity for path metric type"; 2497 } 2499 identity path-metric-te { 2500 base path-metric-type; 2501 description 2502 "TE path metric"; 2503 } 2505 identity path-metric-igp { 2506 base path-metric-type; 2507 description 2508 "IGP path metric"; 2509 } 2511 identity path-metric-hop { 2512 base path-metric-type; 2513 description 2514 "Hop path metric"; 2515 } 2517 identity path-metric-delay-average { 2518 base path-metric-type; 2519 description 2520 "Unidirectional average link delay"; 2521 reference "RFC7471"; 2522 } 2524 identity path-metric-residual-bandwidth { 2525 base path-metric-type; 2526 description 2527 "Unidirectional Residual Bandwidth, which is defined to be 2528 Maximum Bandwidth [RFC3630] minus the bandwidth currently 2529 allocated to LSPs."; 2530 reference "RFC7471"; 2531 } 2533 identity path-tiebreaker-type { 2534 description 2535 "Base identity for path tie-breaker type"; 2536 } 2538 identity path-tiebreaker-minfill { 2539 base path-tiebreaker-type; 2540 description 2541 "Min-Fill LSP path placement"; 2542 } 2544 identity path-tiebreaker-maxfill { 2545 base path-tiebreaker-type; 2546 description 2547 "Max-Fill LSP path placement"; 2548 } 2550 identity path-tiebreaker-randoom { 2551 base path-tiebreaker-type; 2552 description 2553 "Random LSP path placement"; 2554 } 2556 identity bidir-provisioning-mode { 2557 description 2558 "Base identity for bidirectional provisioning 2559 mode."; 2560 } 2562 identity bidir-provisioning-single-sided { 2563 base bidir-provisioning-mode; 2564 description 2565 "Single-sided bidirectional provioning mode"; 2566 } 2568 identity bidir-provisioning-double-sided { 2569 base bidir-provisioning-mode; 2570 description 2571 "Double-sided bidirectional provioning mode"; 2572 } 2574 identity bidir-association-type { 2575 description 2576 "Base identity for bidirectional association type"; 2577 } 2579 identity bidir-assoc-corouted { 2580 base bidir-association-type; 2581 description 2582 "Co-routed bidirectional association type"; 2583 } 2585 identity bidir-assoc-non-corouted { 2586 base bidir-association-type; 2587 description 2588 "Non co-routed bidirectional association type"; 2589 } 2591 identity resource-affinities-type { 2592 description 2593 "Base identity for resource affinities"; 2594 } 2596 identity resource-aff-include-all { 2597 base resource-affinities-type; 2598 description 2599 "The set of attribute filters associated with a 2600 tunnel all of which must be present for a link 2601 to be acceptable"; 2602 } 2604 identity resource-aff-include-any { 2605 base resource-affinities-type; 2606 description 2607 "The set of attribute filters associated with a 2608 tunnel any of which must be present for a link 2609 to be acceptable"; 2610 } 2612 identity resource-aff-exclude-any { 2613 base resource-affinities-type; 2614 description 2615 "The set of attribute filters associated with a 2616 tunnel any of which renders a link unacceptable"; 2617 } 2619 typedef optimization-goal { 2620 type enumeration { 2621 enum minimize { 2622 description "Pick lowest path metric goal"; 2623 } 2624 enum maximize { 2625 description "Pick highest path metric goal"; 2626 } 2627 enum randomize { 2628 description 2629 "Pick a path at random from list of 2630 equally favorable ones"; 2631 } 2632 } 2633 description "TE optimization goal"; 2634 } 2636 identity te-optimization-criterion { 2637 description 2638 "Base identity for TE optimization criterion."; 2639 reference 2640 "RFC3272: Overview and Principles of Internet Traffic 2641 Engineering."; 2642 } 2644 identity not-optimized { 2645 base te-optimization-criterion; 2646 description "Optimization is not applied."; 2647 } 2649 identity cost { 2650 base te-optimization-criterion; 2651 description "Optimized on cost."; 2652 } 2654 identity delay { 2655 base te-optimization-criterion; 2656 description "Optimized on delay."; 2657 } 2659 /* 2660 * Typedefs 2661 */ 2663 typedef percentage { 2664 type uint8 { 2665 range "0..100"; 2666 } 2667 description 2668 "Integer indicating a percentage value"; 2669 } 2671 typedef performance-metric-normality { 2672 type enumeration { 2673 enum "unknown" { 2674 value 0; 2675 description 2676 "Unknown."; 2677 } 2678 enum "normal" { 2679 value 1; 2680 description 2681 "Normal."; 2682 } 2683 enum "abnormal" { 2684 value 2; 2685 description 2686 "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."; 2727 } 2728 } 2729 description 2730 "Defines a type representing the administrative status of 2731 a TE resource."; 2732 } 2734 typedef te-global-id { 2735 type uint32; 2736 description 2737 "An identifier to uniquely identify an operator, which can be 2738 either a provider or a client. 2739 The definition of this type is taken from RFC6370 and RFC5003. 2740 This attribute type is used solely to provide a globally 2741 unique context for TE topologies."; 2742 } 2744 typedef te-link-access-type { 2745 type enumeration { 2746 enum point-to-point { 2747 description 2748 "The link is point-to-point."; 2749 } 2750 enum multi-access { 2751 description 2752 "The link is multi-access, including broacast and NBMA."; 2753 } 2754 } 2755 description 2756 "Defines a type representing the access type of a TE link."; 2757 reference 2758 "RFC3630: Traffic Engineering (TE) Extensions to OSPF 2759 Version 2."; 2760 } 2762 typedef te-node-id { 2763 type yang:dotted-quad; 2764 description 2765 "An identifier for a node in a topology. 2766 The identifier is represented as 32-bit unsigned integer in 2767 the dotted-quad notation. 2768 This attribute is mapped to Router ID in 2769 RFC3630, RFC5329, RFC5305, and RFC6119."; 2770 } 2772 typedef te-oper-status { 2773 type enumeration { 2774 enum up { 2775 description 2776 "Operational up."; 2777 } 2778 enum down { 2779 description 2780 "Operational down."; 2781 } 2782 enum testing { 2783 description 2784 "In some test mode."; 2785 } 2786 enum unknown { 2787 description 2788 "Status cannot be determined for some reason."; 2789 } 2790 enum preparing-maintenance { 2791 description 2792 "Resource is disabled in the control plane to prepare for 2793 graceful shutdown for maintenance purposes."; 2794 reference 2795 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2796 Traffic Engineering Networks"; 2797 } 2798 enum maintenance { 2799 description 2800 "Resource is disabled in the data plane for maintenance 2801 purposes."; 2802 } 2803 } 2804 description 2805 "Defines a type representing the operational status of 2806 a TE resource."; 2807 } 2809 typedef te-path-disjointness { 2810 type bits { 2811 bit node { 2812 position 0; 2813 description "Node disjoint."; 2814 } 2815 bit link { 2816 position 1; 2817 description "Link disjoint."; 2818 } 2819 bit srlg { 2820 position 2; 2821 description "SRLG (Shared Risk Link Group) disjoint."; 2822 } 2824 } 2825 description 2826 "Type of the resource disjointness for a TE tunnel path."; 2827 reference 2828 "RFC4872: RSVP-TE Extensions in Support of End-to-End 2829 Generalized Multi-Protocol Label Switching (GMPLS) 2830 Recovery"; 2831 } // te-path-disjointness 2833 typedef te-recovery-status { 2834 type enumeration { 2835 enum normal { 2836 description 2837 "Both the recovery and working spans are fully 2838 allocated and active, data traffic is being 2839 transported over (or selected from) the working 2840 span, and no trigger events are reported."; 2841 } 2842 enum recovery-started { 2843 description 2844 "The recovery action has been started, but not completed."; 2845 } 2846 enum recovery-succeeded { 2847 description 2848 "The recovery action has succeeded. The working span has 2849 reported a failure/degrade condition and the user traffic 2850 is being transported (or selected) on the recovery span."; 2851 } 2852 enum recovery-failed { 2853 description 2854 "The recovery action has failed."; 2855 } 2856 enum reversion-started { 2857 description 2858 "The reversion has started."; 2859 } 2860 enum reversion-failed { 2861 description 2862 "The reversion has failed."; 2863 } 2864 enum recovery-unavailable { 2865 description 2866 "The recovery is unavailable -- either as a result of an 2867 operator Lockout command or a failure condition detected 2868 on the recovery span."; 2869 } 2870 enum recovery-admin { 2871 description 2872 "The operator has issued a command switching the user 2873 traffic to the recovery span."; 2874 } 2875 enum wait-to-restore { 2876 description 2877 "The recovery domain is recovering from a failuer/degrade 2878 condition on the working span that is being controlled by 2879 the Wait-to-Restore (WTR) timer."; 2880 } 2881 } 2882 description 2883 "Defines the status of a recovery action."; 2884 reference 2885 "RFC4427: Recovery (Protection and Restoration) Terminology 2886 for Generalized Multi-Protocol Label Switching (GMPLS). 2887 RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection"; 2888 } 2890 typedef te-template-name { 2891 type string { 2892 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2893 } 2894 description 2895 "A type for the name of a TE node template or TE link 2896 template."; 2897 } 2899 typedef te-topology-event-type { 2900 type enumeration { 2901 enum "add" { 2902 value 0; 2903 description 2904 "A TE node or te-link has been added."; 2905 } 2906 enum "remove" { 2907 value 1; 2908 description 2909 "A TE node or te-link has been removed."; 2910 } 2911 enum "update" { 2912 value 2; 2913 description 2914 "A TE node or te-link has been updated."; 2915 } 2916 } 2917 description "TE Event type for notifications"; 2918 } // te-topology-event-type 2919 typedef te-topology-id { 2920 type string { 2921 pattern 2922 '([a-zA-Z0-9\-_.]+:)*' 2923 + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2924 } 2925 description 2926 "An identifier for a topology. 2927 It is optional to have one or more prefixes at the begining, 2928 separated by colons. The prefixes can be the network-types, 2929 defined in ietf-network.yang, to help user to understand the 2930 topology better before further inquiry."; 2931 } 2933 typedef te-tp-id { 2934 type union { 2935 type uint32; // Unnumbered 2936 type inet:ip-address; // IPv4 or IPv6 address 2937 } 2938 description 2939 "An identifier for a TE link endpoint on a node. 2940 This attribute is mapped to local or remote link identifier in 2941 RFC3630 and RFC5305."; 2942 } 2944 typedef admin-group { 2945 type binary { 2946 length 4; 2947 } 2948 description 2949 "Administrative group/Resource class/Color."; 2950 } 2952 typedef extended-admin-group { 2953 type binary; 2954 description 2955 "Extended administrative group/Resource class/Color."; 2956 } 2958 typedef admin-groups { 2959 type union { 2960 type admin-group; 2961 type extended-admin-group; 2962 } 2963 description "TE administrative group derived type"; 2964 } 2966 typedef srlg { 2967 type uint32; 2968 description "SRLG type"; 2969 } 2971 identity path-computation-srlg-type { 2972 description 2973 "Base identity for SRLG path computation"; 2974 } 2976 identity srlg-ignore { 2977 base path-computation-srlg-type; 2978 description 2979 "Ignores SRLGs in path computation"; 2980 } 2982 identity srlg-strict { 2983 base path-computation-srlg-type; 2984 description 2985 "Include strict SRLG check in path computation"; 2986 } 2988 identity srlg-preferred { 2989 base path-computation-srlg-type; 2990 description 2991 "Include preferred SRLG check in path computation"; 2992 } 2994 identity srlg-weighted { 2995 base path-computation-srlg-type; 2996 description 2997 "Include weighted SRLG check in path computation"; 2998 } 3000 typedef te-metric { 3001 type uint32; 3002 description 3003 "TE link metric"; 3004 } 3006 /** 3007 * TE bandwidth groupings 3008 **/ 3009 identity otn-rate-type { 3010 description 3011 "Base type to identify OTN bit rates of various information 3012 structures."; 3013 } 3014 identity odu0 { 3015 base otn-rate-type; 3016 description 3017 "ODU0 bit rate."; 3018 } 3019 identity odu1 { 3020 base otn-rate-type; 3021 description 3022 "ODU1 bit rate."; 3023 } 3024 identity odu2 { 3025 base otn-rate-type; 3026 description 3027 "ODU2 bit rate."; 3028 } 3029 identity odu3 { 3030 base otn-rate-type; 3031 description 3032 "ODU3 bit rate."; 3033 } 3034 identity odu4 { 3035 base otn-rate-type; 3036 description 3037 "ODU4 bit rate."; 3038 } 3039 identity odu2e { 3040 base otn-rate-type; 3041 description 3042 "ODU2e bit rate."; 3043 } 3044 identity oduc { 3045 base otn-rate-type; 3046 description 3047 "ODUCn bit rate."; 3048 } 3049 identity oduflex { 3050 base otn-rate-type; 3051 description 3052 "ODUflex bit rate."; 3053 } 3055 identity wdm-spectrum-type { 3056 description 3057 "Base type to identify WDM spectrum type."; 3058 } 3059 identity cwdm { 3060 base wdm-spectrum-type; 3061 description 3062 "CWDM."; 3064 } 3065 identity dwdm { 3066 base wdm-spectrum-type; 3067 description 3068 "DWDM."; 3069 } 3070 identity flexible-grid { 3071 base wdm-spectrum-type; 3072 description 3073 "Flexible grid."; 3074 } 3076 grouping te-bandwidth { 3077 description 3078 "This grouping defines the generic TE bandwidth. 3079 For some known data plane technologies, specific modeling 3080 structures are specified. The string encoded te-bandwidth 3081 type is used for un-specified technologies. 3082 The modeling structure can be augmented later for other 3083 technologies."; 3084 container te-bandwidth { 3085 description 3086 "Container that specifies TE bandwidth."; 3087 choice technology { 3088 default generic; 3089 description 3090 "Data plane technology type."; 3091 case psc { 3092 leaf psc { 3093 type rt-types:bandwidth-ieee-float32; 3094 description 3095 "Bandwidth in packet switching networks."; 3096 reference 3097 "RFC3630: Traffic Engineering (TE) Extensions to OSPF 3098 Version 2. 3099 RFC5305: IS-IS Extensions for Traffic Engineering."; 3100 } 3101 } 3102 case otn { 3103 list otn { 3104 key "rate-type"; 3105 description 3106 "Bandwidth in OTN (Optical Transport Network)."; 3107 reference 3108 "ITU-T G.709/Y.1331: Interfaces for the optical 3109 transport network."; 3110 leaf rate-type { 3111 type identityref { 3112 base otn-rate-type; 3113 } 3114 description 3115 "OTN bit rate types of various information 3116 structures."; 3117 } 3118 leaf counter { 3119 type uint16; 3120 description 3121 "Number of channels."; 3122 } 3123 } 3124 } 3125 case lsc { 3126 list wdm { 3127 key "spectrum slot"; 3128 description 3129 "Bandwidth in Lambda Switch Capable (LSC) networks."; 3130 reference 3131 "ITU-t G.694.1: Spectral grids for WDM applications: 3132 DWDM frequency grid."; 3133 leaf spectrum { 3134 type identityref { 3135 base wdm-spectrum-type; 3136 } 3137 description 3138 "Optical spectrum allocation type."; 3139 reference 3140 "RFC7699: Generalized Labels for the Flexi-Grid in 3141 Lambda Switch Capable (LSC) Label Switching 3142 Routers"; 3143 } 3144 leaf slot { 3145 type int16; 3146 description 3147 "The value identifies the central frenquency of a 3148 frequency slot."; 3149 reference 3150 "RFC7792: RSVP-TE Signaling Extensions in Support of 3151 Flexi-Grid Dense Wavelength Division Multiplexing 3152 (DWDM) Networks."; 3153 } 3154 leaf width { 3155 type uint16; 3156 description 3157 "The slot width is calculated as this value times 3158 12.5 GHz."; 3159 reference 3160 "RFC7792: RSVP-TE Signaling Extensions in Support of 3161 Flexi-Grid Dense Wavelength Division Multiplexing 3162 (DWDM) Networks."; 3163 } 3164 } 3165 } 3166 case generic { 3167 leaf generic { 3168 type te-bandwidth; 3169 description 3170 "Bandwidth specified in a generic format."; 3171 } 3172 } 3173 } 3174 } 3175 } 3177 /** 3178 * TE performance metric groupings 3179 **/ 3180 grouping performance-metric-container { 3181 description 3182 "A container containing performance metric attributes."; 3183 container performance-metric { 3184 description 3185 "Link performance information in real time."; 3186 reference 3187 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 3188 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 3189 RFC7823: Performance-Based Path Selection for Explicitly 3190 Routed Label Switched Paths (LSPs) Using TE Metric 3191 Extensions"; 3192 container measurement { 3193 description 3194 "Measured performance metric values. Static configuration 3195 and manual overrides of these measurements are also 3196 allowed."; 3197 uses performance-metric-attributes; 3198 } 3199 container normality 3200 { 3201 description 3202 "Performance metric normality values."; 3203 uses performance-metric-normality-attributes; 3204 } 3205 uses performance-metric-throttle-container; 3206 } 3207 } // performance-metric-container 3208 grouping performance-metric-attributes { 3209 description 3210 "Link performance information in real time."; 3211 reference 3212 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 3213 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 3214 RFC7823: Performance-Based Path Selection for Explicitly 3215 Routed Label Switched Paths (LSPs) Using TE Metric 3216 Extensions"; 3217 leaf unidirectional-delay { 3218 type uint32 { 3219 range 0..16777215; 3220 } 3221 description "Delay or latency in micro seconds."; 3222 } 3223 leaf unidirectional-min-delay { 3224 type uint32 { 3225 range 0..16777215; 3226 } 3227 description "Minimum delay or latency in micro seconds."; 3228 } 3229 leaf unidirectional-max-delay { 3230 type uint32 { 3231 range 0..16777215; 3232 } 3233 description "Maximum delay or latency in micro seconds."; 3234 } 3235 leaf unidirectional-delay-variation { 3236 type uint32 { 3237 range 0..16777215; 3238 } 3239 description "Delay variation in micro seconds."; 3240 } 3241 leaf unidirectional-packet-loss { 3242 type decimal64 { 3243 fraction-digits 6; 3244 range "0 .. 50.331642"; 3245 } 3246 description 3247 "Packet loss as a percentage of the total traffic sent 3248 over a configurable interval. The finest precision is 3249 0.000003%."; 3250 } 3251 leaf unidirectional-residual-bandwidth { 3252 type rt-types:bandwidth-ieee-float32; 3253 description 3254 "Residual bandwidth that subtracts tunnel 3255 reservations from Maximum Bandwidth (or link capacity) 3257 [RFC3630] and provides an aggregated remainder across QoS 3258 classes."; 3259 } 3260 leaf unidirectional-available-bandwidth { 3261 type rt-types:bandwidth-ieee-float32; 3262 description 3263 "Available bandwidth that is defined to be residual 3264 bandwidth minus the measured bandwidth used for the 3265 actual forwarding of non-RSVP-TE LSP packets. For a 3266 bundled link, available bandwidth is defined to be the 3267 sum of the component link available bandwidths."; 3268 } 3269 leaf unidirectional-utilized-bandwidth { 3270 type rt-types:bandwidth-ieee-float32; 3271 description 3272 "Bandwidth utilization that represents the actual 3273 utilization of the link (i.e. as measured in the router). 3274 For a bundled link, bandwidth utilization is defined to 3275 be the sum of the component link bandwidth 3276 utilizations."; 3277 } 3278 } // performance-metric-attributes 3280 grouping performance-metric-normality-attributes { 3281 description 3282 "Link performance metric normality attributes."; 3283 reference 3284 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 3285 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 3286 RFC7823: Performance-Based Path Selection for Explicitly 3287 Routed Label Switched Paths (LSPs) Using TE Metric 3288 Extensions"; 3289 leaf unidirectional-delay { 3290 type te-types:performance-metric-normality; 3291 description "Delay normality."; 3292 } 3293 leaf unidirectional-min-delay { 3294 type te-types:performance-metric-normality; 3295 description "Minimum delay or latency normality."; 3296 } 3297 leaf unidirectional-max-delay { 3298 type te-types:performance-metric-normality; 3299 description "Maximum delay or latency normality."; 3300 } 3301 leaf unidirectional-delay-variation { 3302 type te-types:performance-metric-normality; 3303 description "Delay variation normality."; 3304 } 3305 leaf unidirectional-packet-loss { 3306 type te-types:performance-metric-normality; 3307 description "Packet loss normality."; 3308 } 3309 leaf unidirectional-residual-bandwidth { 3310 type te-types:performance-metric-normality; 3311 description "Residual bandwidth normality."; 3312 } 3313 leaf unidirectional-available-bandwidth { 3314 type te-types:performance-metric-normality; 3315 description "Available bandwidth normality."; 3316 } 3317 leaf unidirectional-utilized-bandwidth { 3318 type te-types:performance-metric-normality; 3319 description "Bandwidth utilization normality."; 3320 } 3321 } // performance-metric-normality-attributes 3323 grouping performance-metric-throttle-container { 3324 description 3325 "A container controlling performance metric throttle."; 3326 container throttle { 3327 must "suppression-interval >= measure-interval" { 3328 error-message 3329 "suppression-interval cannot be less then 3330 measure-interval."; 3331 description 3332 "Constraint on suppression-interval and 3333 measure-interval."; 3334 } 3335 description 3336 "Link performance information in real time."; 3337 reference 3338 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 3339 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 3340 RFC7823: Performance-Based Path Selection for Explicitly 3341 Routed Label Switched Paths (LSPs) Using TE Metric 3342 Extensions"; 3343 leaf unidirectional-delay-offset { 3344 type uint32 { 3345 range 0..16777215; 3346 } 3347 description 3348 "Offset value to be added to the measured delay value."; 3349 } 3350 leaf measure-interval { 3351 type uint32; 3352 default 30; 3353 description 3354 "Interval in seconds to measure the extended metric 3355 values."; 3356 } 3357 leaf advertisement-interval { 3358 type uint32; 3359 description 3360 "Interval in seconds to advertise the extended metric 3361 values."; 3362 } 3363 leaf suppression-interval { 3364 type uint32 { 3365 range "1 .. max"; 3366 } 3367 default 120; 3368 description 3369 "Interval in seconds to suppress advertising the extended 3370 metric values."; 3371 } 3372 container threshold-out { 3373 uses performance-metric-attributes; 3374 description 3375 "If the measured parameter falls outside an upper bound 3376 for all but the min delay metric (or lower bound for 3377 min-delay metric only) and the advertised value is not 3378 already outside that bound, anomalous announcement will be 3379 triggered."; 3380 } 3381 container threshold-in { 3382 uses performance-metric-attributes; 3383 description 3384 "If the measured parameter falls inside an upper bound 3385 for all but the min delay metric (or lower bound for 3386 min-delay metric only) and the advertised value is not 3387 already inside that bound, normal (anomalous-flag cleared) 3388 announcement will be triggered."; 3389 } 3390 container threshold-accelerated-advertisement { 3391 description 3392 "When the difference between the last advertised value and 3393 current measured value exceed this threshold, anomalous 3394 announcement will be triggered."; 3395 uses performance-metric-attributes; 3396 } 3397 } 3398 } // performance-metric-throttle-container 3400 /** 3401 * TE tunnel generic groupings 3402 **/ 3404 /* Tunnel path selection parameters */ 3405 grouping explicit-route-hop_config { 3406 description 3407 "The explicit route subobject grouping"; 3408 leaf index { 3409 type uint32; 3410 description "ERO subobject index"; 3411 } 3412 choice type { 3413 description 3414 "The explicit route subobject type"; 3415 case numbered { 3416 description 3417 "Numbered link explicit route subobject"; 3418 container numbered-hop { 3419 description "Numbered link hop type"; 3420 leaf address { 3421 type te-types:te-tp-id; 3422 description 3423 "Numbered link TE termination point address."; 3424 } 3425 leaf hop-type { 3426 type te-hop-type; 3427 description 3428 "strict or loose hop"; 3429 } 3430 } 3431 } 3432 case as-number { 3433 container as-number-hop { 3434 leaf as-number { 3435 type binary { 3436 length 16; 3437 } 3438 description "AS number"; 3439 } 3440 leaf hop-type { 3441 type te-hop-type; 3442 description 3443 "strict or loose hop"; 3444 } 3445 description 3446 "Autonomous System explicit route subobject"; 3447 } 3448 } 3449 case unnumbered { 3450 container unnumbered-hop { 3451 leaf node-id { 3452 type te-types:te-node-id; 3453 description 3454 "The identifier of a node in the TE topology."; 3455 } 3456 leaf link-tp-id { 3457 type te-types:te-tp-id; 3458 description 3459 "TE link termination point identifier, used 3460 together with te-node-id to identify the 3461 link termination point"; 3462 } 3463 leaf hop-type { 3464 type te-hop-type; 3465 description 3466 "strict or loose hop"; 3467 } 3468 description 3469 "Unnumbered link explicit route subobject"; 3470 reference 3471 "RFC3477: Signalling Unnumbered Links in 3472 RSVP-TE"; 3473 } 3474 } 3475 case label { 3476 container label-hop { 3477 description "Label hop type"; 3478 leaf value { 3479 type rt-types:generalized-label; 3480 description "the label value"; 3481 } 3482 } 3483 description 3484 "The Label ERO subobject"; 3485 } 3486 case sid { 3487 container sid-hop { 3488 description "Segment routing SID hop"; 3489 leaf sid { 3490 type rt-types:generalized-label; 3491 description "Segment-routing identifier"; 3492 } 3493 } 3494 description "Segment-routing identifier"; 3495 } 3496 } 3498 } 3500 grouping record-route-subobject_state { 3501 description 3502 "The record route subobject grouping"; 3503 leaf index { 3504 type uint32; 3505 description "RRO subobject index"; 3506 } 3507 choice type { 3508 description 3509 "The record route subobject type"; 3510 case numbered { 3511 leaf address { 3512 type te-types:te-tp-id; 3513 description 3514 "Numbered link TE termination point address."; 3515 } 3516 leaf ip-flags { 3517 type binary { 3518 length 8; 3519 } 3520 description 3521 "RRO IP address sub-object flags"; 3522 reference "RFC3209"; 3523 } 3524 } 3525 case unnumbered { 3526 leaf node-id { 3527 type te-types:te-node-id; 3528 description 3529 "The identifier of a node in the TE topology."; 3530 } 3531 leaf link-tp-id { 3532 type te-types:te-tp-id; 3533 description 3534 "TE link termination point identifier, used 3535 together with te-node-id to identify the 3536 link termination point"; 3537 } 3538 description 3539 "Unnumbered link record route subobject"; 3540 reference 3541 "RFC3477: Signalling Unnumbered Links in 3542 RSVP-TE"; 3543 } 3544 case label { 3545 leaf value { 3546 type rt-types:generalized-label; 3547 description "the label value"; 3548 } 3549 leaf label-flags { 3550 type binary { 3551 length 8; 3552 } 3553 description 3554 "Label sub-object flags"; 3555 reference "RFC3209"; 3556 } 3557 description 3558 "The Label ERO subobject"; 3559 } 3560 } 3561 } 3563 grouping label-set-item-info { 3564 description "Label set item info"; 3565 leaf inclusive-exclusive { 3566 type enumeration { 3567 enum inclusive { 3568 description "The label or label range is inclusive."; 3569 } 3570 enum exclusive { 3571 description "The label or label range is exclusive."; 3572 } 3573 } 3574 description 3575 "Whether the list item is inclusive or exclusive."; 3576 } 3577 leaf label-start { 3578 type rt-types:generalized-label; 3579 description 3580 "This is the starting lable if a lable range is specified. 3581 This is the lable value if a single lable is specified, 3582 in which case, attribute 'label-end' is not set."; 3583 } 3584 leaf label-end { 3585 type rt-types:generalized-label; 3586 description 3587 "The ending lable if a lable range is specified; 3588 This attribute is not set, If a single lable is 3589 specified."; 3590 } 3591 leaf range-bitmap { 3592 type binary; 3593 description 3594 "When there are gaps between label-start and label-end, 3595 this attribute is used to specified the possitions 3596 of the used labels."; 3597 } 3598 } 3600 grouping label-set-info { 3601 description "Label set info grouping"; 3602 list label-set { 3603 key "inclusive-exclusive label-start"; 3604 description 3605 "The absence of label-set implies that all labels are 3606 acceptable; otherwise only restricted labels are 3607 available."; 3609 uses label-set-item-info; 3610 } 3611 } 3613 /*** End of TE tunnel groupings ***/ 3615 grouping optimizations_config { 3616 description "Optimization metrics configuration grouping"; 3617 leaf metric-type { 3618 type identityref { 3619 base te-types:path-metric-type; 3620 } 3621 description "TE path metric type"; 3622 } 3623 leaf weight { 3624 type uint8; 3625 description "TE path metric normalization weight"; 3626 } 3627 } 3629 grouping common-constraints_config { 3630 description 3631 "Common constraints grouping that can be set on 3632 a constraint set or directly on the tunnel"; 3633 leaf topology-id { 3634 type te-types:te-topology-id; 3635 description 3636 "The tunnel path is computed using the specific 3637 topology identified by this identifier"; 3638 } 3639 container bandwidth-generic { 3640 uses te-types:te-bandwidth; 3641 description 3642 "A technology agnostic requested bandwidth to use 3643 for path computation"; 3644 } 3645 leaf disjointness { 3646 type te-types:te-path-disjointness; 3647 description 3648 "The type of resource disjointness."; 3649 } 3650 leaf setup-priority { 3651 type uint8 { 3652 range "0..7"; 3653 } 3654 description 3655 "TE LSP requested setup priority"; 3656 } 3657 leaf hold-priority { 3658 type uint8 { 3659 range "0..7"; 3660 } 3661 description 3662 "TE LSP requested hold priority"; 3663 } 3664 leaf signaling-type { 3665 type identityref { 3666 base te-types:path-signaling-type; 3667 } 3668 description "TE tunnel path signaling type"; 3669 } 3670 } 3672 grouping path-metrics-bounds_config { 3673 description "TE path metric bounds grouping"; 3674 leaf metric-type { 3675 type identityref { 3676 base te-types:path-metric-type; 3677 } 3678 description "TE path metric type"; 3679 } 3680 leaf upper-bound { 3681 type uint64; 3682 description "Upper bound on end-to-end TE path metric"; 3683 } 3684 } 3686 grouping path-objective-function_config { 3687 description "Optimization metrics configuration grouping"; 3688 leaf objective-function-type { 3689 type identityref { 3690 base te-types:objective-function-type; 3691 } 3692 description 3693 "Objective function entry"; 3694 } 3695 } 3697 /** 3698 * TE interface generic groupings 3699 **/ 3700 grouping generic-path-optimization { 3701 description "TE generic path optimization grouping"; 3703 container optimizations { 3704 description 3705 "The objective function container that includes 3706 attributes to impose when computing a TE path"; 3708 choice algorithm { 3709 description "Optimizations algorithm."; 3710 case metric { 3711 if-feature path-optimization-metric; 3712 /* Optimize by metric */ 3713 list optimization-metric { 3714 key "metric-type"; 3715 description "TE path metric type"; 3716 uses optimizations_config; 3717 } 3718 /* Tiebreakers */ 3719 container tiebreakers { 3720 description 3721 "The list of tiebreaker criterion to apply 3722 on an equally favored set of paths to pick best"; 3723 list tiebreaker { 3724 key "tiebreaker-type"; 3725 description 3726 "The list of tiebreaker criterion to apply 3727 on an equally favored set of paths to pick best"; 3728 leaf tiebreaker-type { 3729 type identityref { 3730 base te-types:path-metric-type; 3731 } 3732 description "The objective function"; 3733 } 3734 } 3735 } 3736 } 3737 case objective-function { 3738 if-feature path-optimization-objective-function; 3739 /* Objective functions */ 3740 container objective-function { 3741 description 3742 "The objective function container that includes 3743 attributes to impose when computing a TE path"; 3744 uses path-objective-function_config; 3745 } 3746 } 3747 } 3748 } 3749 } 3751 grouping generic-path-affinities { 3752 description 3753 "Path affinities grouping"; 3754 container path-affinities { 3755 description 3756 "Path affinities container"; 3757 list constraint { 3758 key "usage"; 3759 description 3760 "List of named affinity constraints"; 3761 leaf usage { 3762 type identityref { 3763 base resource-affinities-type; 3764 } 3765 description "Affinities usage"; 3766 } 3767 leaf value { 3768 type admin-groups; 3769 description "Affinity value"; 3770 } 3771 } 3772 } 3773 } 3775 grouping generic-path-srlgs { 3776 description 3777 "Path SRLG grouping"; 3778 container path-srlgs { 3779 description 3780 "Path SRLG properties container"; 3781 leaf usage { 3782 type identityref { 3783 base te-types:route-exclude-srlg; 3784 } 3785 description "SRLG usage"; 3787 } 3788 leaf-list values { 3789 type srlg; 3790 description "SRLG value"; 3791 } 3792 } 3793 } 3795 grouping generic-path-constraints { 3796 description 3797 "Global named path constraints configuration 3798 grouping"; 3799 container path-constraints { 3800 description "TE named path constraints container"; 3801 list path-metric-bound { 3802 key metric-type; 3803 description "List of TE path metrics"; 3804 uses path-metrics-bounds_config; 3805 } 3807 uses common-constraints_config; 3808 uses generic-path-affinities; 3809 uses generic-path-srlgs; 3810 } 3811 } 3813 grouping generic-computed-path-properties { 3814 description "TE generic computed path properties grouping"; 3815 container computed-path-properties { 3816 config false; 3817 description "The TE path computed properties"; 3818 list path-metric { 3819 key metric-type; 3820 description "TE path metric type"; 3821 leaf metric-type { 3822 type identityref { 3823 base te-types:path-metric-type; 3824 } 3825 description "TE path metric type"; 3826 } 3827 leaf accumulative-value { 3828 type uint64; 3829 description "TE path metric accumulative value"; 3830 } 3831 } 3832 uses generic-path-affinities; 3833 uses generic-path-srlgs; 3834 container path-computed-route-objects { 3835 description 3836 "Container for the list of computed route objects 3837 as returned by the computation engine"; 3838 list path-computed-route-object { 3839 key index; 3840 description 3841 "List of computed route objects returned by the 3842 computation engine"; 3843 uses explicit-route-hop_config; 3844 } 3845 } 3846 } 3847 } 3848 } 3849 3851 Figure 7: TE basic types YANG module 3853 file "ietf-te@2018-02-15.yang" 3854 module ietf-te { 3855 yang-version 1.1; 3857 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 3859 /* Replace with IANA when assigned */ 3860 prefix "te"; 3862 /* Import TE generic types */ 3863 import ietf-te-types { 3864 prefix te-types; 3865 } 3867 import ietf-inet-types { 3868 prefix inet; 3869 } 3871 organization 3872 "IETF Traffic Engineering Architecture and Signaling (TEAS) 3873 Working Group"; 3875 contact 3876 "WG Web: 3877 WG List: 3879 WG Chair: Lou Berger 3880 3882 WG Chair: Vishnu Pavan Beeram 3883 3885 Editor: Tarek Saad 3886 3888 Editor: Rakesh Gandhi 3889 3891 Editor: Vishnu Pavan Beeram 3892 3894 Editor: Himanshu Shah 3895 3897 Editor: Xufeng Liu 3898 3900 Editor: Igor Bryskin 3901 "; 3903 description 3904 "YANG data module for TE configuration, 3905 state, RPC and notifications."; 3907 revision "2018-02-15" { 3908 description "Latest update to TE generic YANG module."; 3909 reference "TBA"; 3910 } 3912 typedef tunnel-ref { 3913 type leafref { 3914 path "/te:te/te:tunnels/te:tunnel/te:name"; 3915 } 3916 description 3917 "This type is used by data models that need to reference 3918 configured TE tunnel."; 3919 } 3921 typedef tunnel-p2mp-ref { 3922 type leafref { 3923 path "/te:te/te:tunnels/te:tunnel-p2mp/te:name"; 3924 } 3925 description 3926 "This type is used by data models that need to reference 3927 configured P2MP TE tunnel."; 3928 } 3930 /** 3931 * TE tunnel generic groupings 3932 */ 3933 grouping path-route-objects { 3934 description 3935 "List of EROs to be included or excluded when performing 3936 the path computation."; 3937 container explicit-route-objects { 3938 description 3939 "Container for the exclude route object list"; 3940 list route-object-exclude-always { 3941 key index; 3942 description 3943 "List of explicit route objects to always exclude 3944 from path computation"; 3945 uses te-types:explicit-route-hop_config; 3946 } 3947 list route-object-include-exclude { 3948 key index; 3949 description 3950 "List of explicit route objects to include or 3951 exclude in path computation"; 3952 leaf explicit-route-usage { 3953 type identityref { 3954 base te-types:route-usage-type; 3955 } 3956 description "Explicit-route usage."; 3957 } 3958 uses te-types:explicit-route-hop_config; 3959 } 3960 } 3961 } 3963 grouping path-affinities-contents_config { 3964 description 3965 "Path affinities constraints grouping"; 3966 leaf usage { 3967 type identityref { 3968 base te-types:resource-affinities-type; 3969 } 3970 description "Affinities usage"; 3971 } 3972 choice style { 3973 description 3974 "Path affinities representation style"; 3975 case value { 3976 leaf value { 3977 type te-types:admin-groups; 3978 description 3979 "Bitmap indicating what bits are of significance"; 3980 } 3981 } 3982 case named { 3983 list affinity-names { 3984 key "name"; 3985 leaf name { 3986 type string; 3987 description "Affinity name"; 3988 } 3989 description "List of named affinities"; 3990 } 3991 } 3992 } 3993 } 3995 grouping path-affinities_state { 3996 description "Path affinities grouping"; 3997 container path-affinities { 3998 description "Path affinities container"; 3999 list constraints { 4000 key "usage"; 4001 description "List of named affinity constraints"; 4002 leaf usage { 4003 type leafref { 4004 path "../state/usage"; 4005 } 4006 description "Affinities usage"; 4007 } 4008 container state { 4009 config false; 4010 description 4011 "Configuration applied parameters and state"; 4012 uses path-affinities-contents_config; 4013 } 4014 } 4015 } 4016 } 4018 grouping path-srlgs_state { 4019 description "Path SRLG properties grouping"; 4020 container path-srlgs { 4021 description "Path SRLG properties container"; 4022 choice style { 4023 description "Type of SRLG representation"; 4024 case values { 4025 container state { 4026 config false; 4027 description 4028 "Configuration applied parameters and state"; 4029 uses path-affinities-values_config; 4030 } 4031 } 4032 case named { 4033 container constraints { 4034 description "SRLG named constraints"; 4035 list constraint { 4036 key "usage"; 4037 leaf usage { 4038 type leafref { 4039 path "../state/usage"; 4040 } 4041 description "Affinity resource usage"; 4042 } 4043 container state { 4044 config false; 4045 description 4046 "Configuration applied parameters and state"; 4047 leaf usage { 4048 type identityref { 4049 base te-types:route-exclude-srlg; 4050 } 4051 description "SRLG usage"; 4052 } 4053 } 4054 container srlg-names { 4055 description "Container for named SRLG list"; 4056 list srlg-name { 4057 key "name"; 4058 leaf name { 4059 type leafref { 4060 path "../state/name"; 4061 } 4062 description "The SRLG name"; 4063 } 4064 container state { 4065 config false; 4066 description 4067 "Configuration applied parameters and 4068 state"; 4069 leaf name { 4070 type string; 4071 description "The SRLG name"; 4072 } 4073 } 4074 description "List named SRLGs"; 4076 } 4077 } 4078 description "List of named SRLG constraints"; 4079 } 4080 } 4081 } 4082 } 4083 } 4084 } 4086 grouping path-affinities { 4087 description "Path affinities grouping"; 4088 container path-affinities { 4089 description "Path affinities container"; 4090 list constraints { 4091 key "usage"; 4092 description "List of named affinity constraints"; 4093 uses path-affinities-contents_config; 4094 } 4095 } 4096 } 4098 grouping path-affinities-values_config { 4099 description "Path affinities values configuration grouping"; 4100 leaf usage { 4101 type identityref { 4102 base te-types:route-exclude-srlg; 4103 } 4104 description "SRLG usage"; 4105 } 4106 leaf-list values { 4107 type te-types:srlg; 4108 description "SRLG value"; 4109 } 4110 } 4112 grouping path-srlgs { 4113 description "Path SRLG properties grouping"; 4114 container path-srlgs { 4115 description "Path SRLG properties container"; 4116 choice style { 4117 description "Type of SRLG representation"; 4118 case values { 4119 uses path-affinities-values_config; 4120 } 4121 case named { 4122 list constraints { 4123 key "usage"; 4124 leaf usage { 4125 type identityref { 4126 base te-types:route-exclude-srlg; 4127 } 4128 description "SRLG usage"; 4129 } 4130 container constraint { 4131 description "Container for named SRLG list"; 4132 list srlg-names { 4133 key "name"; 4134 leaf name { 4135 type string; 4136 description "The SRLG name"; 4137 } 4138 description "List named SRLGs"; 4139 } 4140 } 4141 description "List of named SRLG constraints"; 4142 } 4143 } 4144 } 4145 } 4146 } 4148 grouping bidirectional-association_config { 4149 description 4150 "TE tunnel associated bidirectional leaves 4151 grouping"; 4152 leaf id { 4153 type uint16; 4154 description 4155 "The TE tunnel association identifier."; 4156 } 4157 leaf source { 4158 type inet:ip-address; 4159 description "The TE tunnel association source."; 4160 } 4161 leaf global-source { 4162 type inet:ip-address; 4163 description "The TE tunnel association global source."; 4164 } 4165 leaf type { 4166 type identityref { 4167 base te-types:bidir-association-type; 4168 } 4169 default te-types:bidir-assoc-non-corouted; 4170 description "The TE tunnel association type."; 4171 } 4172 leaf provisioning { 4173 type identityref { 4174 base te-types:bidir-provisioning-mode; 4175 } 4176 description 4177 "Describes the provisioning model of the 4178 associated bidirectional LSP"; 4179 reference 4180 "draft-ietf-teas-mpls-tp-rsvpte-ext- 4181 associated-lsp, section-3.2"; 4182 } 4183 } 4185 grouping bidir-assoc-properties { 4186 description 4187 "TE tunnel associated bidirectional properties 4188 grouping"; 4189 container bidirectional { 4190 description 4191 "TE tunnel associated bidirectional attributes."; 4192 container association { 4193 description 4194 "Tunnel bidirectional association properties"; 4195 uses bidirectional-association_config; 4196 } 4197 } 4198 } 4200 grouping p2p-reverse-primary-path-properties { 4201 description "tunnel path properties."; 4202 container p2p-reverse-primary-path { 4203 description "Tunnel reverse primary path properties"; 4204 uses p2p-path-reverse-properties_config; 4205 container state { 4206 config false; 4207 description 4208 "Configuration applied parameters and state"; 4209 uses p2p-path-properties_state; 4210 } 4211 } 4212 container p2p-reverse-secondary-path { 4213 description "Tunnel reverse secondary path properties"; 4214 uses p2p-reverse-path-candidate-secondary-path-config; 4215 } 4216 } 4218 grouping p2p-secondary-path-properties { 4219 description "tunnel path properties."; 4220 uses p2p-path-properties_config; 4221 uses protection-restoration-params_config; 4222 uses protection-external-commands; 4223 container state { 4224 config false; 4225 description 4226 "Configuration applied parameters and state"; 4227 uses p2p-path-properties_state; 4228 } 4229 } 4231 grouping p2p-primary-path-properties { 4232 description 4233 "TE tunnel primary path properties grouping"; 4234 uses hierarchical-link; 4235 uses p2p-path-properties_config; 4236 container state { 4237 config false; 4238 description 4239 "Configuration applied parameters and state"; 4240 uses p2p-path-properties_state; 4241 } 4242 } 4244 grouping computed-path-properties_state { 4245 description "Computed path properties grouping"; 4246 leaf metric-type { 4247 type identityref { 4248 base te-types:path-metric-type; 4249 } 4250 description "TE path metric type"; 4251 } 4252 leaf accumulative-value { 4253 type uint64; 4254 description "TE path metric accumulative value"; 4255 } 4256 } 4258 grouping computed-path-properties { 4259 description "TE computed path properties grouping"; 4260 container computed-path-properties { 4261 description "The TE path computed properties"; 4262 list path-metric { 4263 key metric-type; 4264 description "TE path metric type"; 4265 leaf metric-type { 4266 type leafref { 4267 path "../state/metric-type"; 4269 } 4270 description "TE path metric type"; 4271 } 4272 container state { 4273 config false; 4274 description 4275 "Configuration applied parameters and state"; 4276 uses computed-path-properties_state; 4277 } 4278 } 4279 uses path-affinities_state; 4280 uses path-srlgs_state; 4281 container path-computed-route-objects { 4282 description 4283 "Container for the list of computed route objects 4284 as returned by the computation engine"; 4285 list path-computed-route-object { 4286 key index; 4287 description 4288 "List of computed route objects returned by the 4289 computation engine"; 4290 leaf index { 4291 type leafref { 4292 path "../state/index"; 4293 } 4294 description "Index of computed route object"; 4295 } 4296 container state { 4297 config false; 4298 description 4299 "Configuration applied parameters and state"; 4300 uses te-types:explicit-route-hop_config; 4301 } 4302 } 4303 } 4304 uses shared-resources-tunnels; 4305 } 4306 } 4308 grouping p2p-path-properties_state { 4309 description "TE per path state parameters"; 4310 uses computed-path-properties; 4311 container lsps { 4312 description "TE LSPs container"; 4313 list lsp { 4314 key 4315 "source destination tunnel-id lsp-id "+ 4316 "extended-tunnel-id"; 4318 description "List of LSPs associated with the tunnel."; 4319 uses lsp-properties_state; 4320 uses shared-resources-tunnels; 4321 uses lsp-record-route-information_state; 4322 } 4323 } 4324 } 4326 grouping p2p-path-properties-common_config { 4327 description 4328 "TE tunnel common path properties configuration grouping"; 4329 leaf name { 4330 type string; 4331 description "TE path name"; 4332 } 4333 leaf preference { 4334 type uint8 { 4335 range "1..255"; 4336 } 4337 description 4338 "Specifies a preference for this path. The lower the 4339 number higher the preference"; 4340 } 4341 leaf path-setup-protocol { 4342 type identityref { 4343 base te-types:path-signaling-type; 4344 } 4345 description 4346 "Signaling protocol used to set up this tunnel"; 4347 } 4348 leaf path-computation-method { 4349 type identityref { 4350 base te-types:path-computation-method; 4351 } 4352 default te-types:path-locally-computed; 4353 description 4354 "The method used for computing the path, either 4355 locally computed, queried from a server or not 4356 computed at all (explicitly configured)."; 4357 } 4358 leaf path-computation-server { 4359 when "../path-computation-method = "+ 4360 "'te-types:path-externally-queried'" { 4361 description 4362 "The path-computation server when the path is 4363 externally queried"; 4364 } 4365 type inet:ip-address; 4366 description 4367 "Address of the external path computation 4368 server"; 4369 } 4370 leaf compute-only { 4371 type empty; 4372 description 4373 "When set, the path is computed and updated whenever 4374 the topology is updated. No resources are committed 4375 or reserved in the network."; 4376 } 4377 leaf use-path-computation { 4378 when "../path-computation-method =" + 4379 " 'te-types:path-locally-computed'"; 4380 type boolean; 4381 description "A CSPF dynamically computed path"; 4382 } 4383 leaf lockdown { 4384 type empty; 4385 description 4386 "Indicates no reoptimization to be attempted for 4387 this path."; 4388 } 4389 leaf path-scope { 4390 type identityref { 4391 base te-types:path-scope-type; 4392 } 4393 description "Path scope"; 4394 } 4395 } 4397 grouping p2p-path-reverse-properties_config { 4398 description 4399 "TE tunnel reverse path properties configuration 4400 grouping"; 4401 uses p2p-path-properties-common_config; 4402 leaf named-explicit-path { 4403 when "../path-computation-method =" + 4404 " 'te-types:path-explicitly-defined'"; 4405 type leafref { 4406 path "../../../../../../globals/named-explicit-paths/" 4407 + "named-explicit-path/name"; 4408 } 4409 description "The explicit-path name"; 4410 } 4411 leaf named-path-constraint { 4412 if-feature te-types:named-path-constraints; 4413 type leafref { 4414 path "../../../../../../globals/" 4415 + "named-path-constraints/named-path-constraint/" 4416 + "name"; 4417 } 4418 description 4419 "Reference to a globally defined named path 4420 constraint set"; 4421 } 4422 } 4424 grouping p2p-path-properties_config { 4425 description 4426 "TE tunnel path properties configuration grouping"; 4427 uses p2p-path-properties-common_config; 4428 leaf named-explicit-path { 4429 when "../path-computation-method =" + 4430 " 'te-types:path-explicitly-defined'"; 4431 type leafref { 4432 path "../../../../../globals/named-explicit-paths/" 4433 + "named-explicit-path/name"; 4434 } 4435 description "The explicit-path name"; 4436 } 4437 leaf named-path-constraint { 4438 if-feature te-types:named-path-constraints; 4439 type leafref { 4440 path "../../../../../globals/" 4441 + "named-path-constraints/named-path-constraint/" 4442 + "name"; 4443 } 4444 description 4445 "Reference to a globally defined named path 4446 constraint set"; 4447 } 4448 } 4450 /* TE tunnel configuration data */ 4451 grouping tunnel-p2mp-params_config { 4452 description 4453 "Configuration parameters relating to TE tunnel"; 4454 leaf name { 4455 type string; 4456 description "TE tunnel name."; 4457 } 4458 leaf identifier { 4459 type uint16; 4460 description 4461 "TE tunnel Identifier."; 4463 } 4464 leaf description { 4465 type string; 4466 description 4467 "Textual description for this TE tunnel"; 4468 } 4469 } 4471 grouping hierarchical-link_config { 4472 description 4473 "Hierarchical link configuration grouping"; 4474 leaf local-te-node-id { 4475 type te-types:te-node-id; 4476 description 4477 "Local TE node identifier"; 4478 } 4479 leaf local-te-link-tp-id { 4480 type te-types:te-tp-id; 4481 description 4482 "Local TE link termination point identifier"; 4483 } 4484 leaf remote-te-node-id { 4485 type te-types:te-node-id; 4486 description 4487 "Remote TE node identifier"; 4488 } 4489 leaf te-topology-id { 4490 type te-types:te-topology-id; 4491 description 4492 "It is presumed that a datastore will contain many 4493 topologies. To distinguish between topologies it is 4494 vital to have UNIQUE topology identifiers."; 4495 } 4496 } 4498 grouping hierarchical-link { 4499 description 4500 "Hierarchical link grouping"; 4501 container hierarchical-link { 4502 description 4503 "Identifies a hierarchical link (in client layer) 4504 that this tunnel is associated with."; 4505 uses hierarchical-link_config; 4506 } 4507 } 4509 grouping protection-restoration-params_config { 4510 description "Protection and restoration parameters"; 4511 container protection { 4512 description "Protection parameters"; 4513 leaf enable { 4514 type boolean; 4515 default 'false'; 4516 description 4517 "A flag to specify if LSP protection is enabled"; 4518 reference "rfc4427"; 4519 } 4520 leaf protection-type { 4521 type identityref { 4522 base te-types:lsp-protection-type; 4523 } 4524 description "LSP protection type."; 4525 } 4526 leaf protection-reversion-disable { 4527 type boolean; 4528 description "Disable protection reversion to working path"; 4529 } 4530 leaf hold-off-time { 4531 type uint32; 4532 units "milli-seconds"; 4533 default 0; 4534 description 4535 "The time between the declaration of an SF or SD condition 4536 and the initialization of the protection switching 4537 algorithm."; 4538 } 4539 leaf wait-to-revert { 4540 type uint16; 4541 units seconds; 4542 description 4543 "Time to wait before attempting LSP reversion"; 4544 } 4545 leaf lockout-of-normal { 4546 type boolean; 4547 description 4548 " 4549 When set to 'True', it represents a lockout of normal 4550 traffic external command. When set to 'False', it 4551 represents a clear lockout of normal traffic external 4552 command. The lockout of normal traffic command applies 4553 to this Tunnel. 4554 "; 4555 reference 4556 "ITU-T G.808, RFC 4427"; 4557 } 4558 leaf freeze { 4559 type boolean; 4560 description 4561 " 4562 When set to 'True', it represents a freeze external 4563 command. When set to 'False', it represents a clear 4564 freeze external command. The freeze command command 4565 applies to all the Tunnels which are sharing the 4566 protection resources with this Tunnel. 4567 "; 4568 reference 4569 "ITU-T G.808, RFC 4427"; 4570 } 4571 } 4572 container restoration { 4573 description "Restoration parameters"; 4574 leaf enable { 4575 type boolean; 4576 default 'false'; 4577 description 4578 "A flag to specify if LSP restoration is enabled"; 4579 reference "rfc4427"; 4580 } 4581 leaf restoration-type { 4582 type identityref { 4583 base te-types:lsp-restoration-type; 4584 } 4585 description "LSP restoration type."; 4586 } 4587 leaf restoration-scheme { 4588 type identityref { 4589 base te-types:restoration-scheme-type; 4590 } 4591 description "LSP restoration scheme."; 4592 } 4593 leaf restoration-reversion-disable { 4594 type boolean; 4595 description "Disable restoration reversion to working path"; 4596 } 4597 leaf hold-off-time { 4598 type uint32; 4599 units "milli-seconds"; 4600 description 4601 "The time between the declaration of an SF or SD condition 4602 and the initialization of the protection switching 4603 algorithm."; 4604 } 4605 leaf wait-to-restore { 4606 type uint16; 4607 units seconds; 4608 description 4609 "Time to wait before attempting LSP restoration"; 4610 } 4611 leaf wait-to-revert { 4612 type uint16; 4613 units seconds; 4614 description 4615 "Time to wait before attempting LSP reversion"; 4616 } 4617 } 4618 } 4620 grouping protection-external-commands { 4621 description 4622 "Path protection external commands grouping"; 4623 container protection-external-commands { 4624 description 4625 "Path protection external commands grouping"; 4626 leaf lockout-of-protection { 4627 type boolean; 4628 description 4629 "A LoP command is applied locally."; 4630 reference 4631 "ITU-T G.808; RFC 4427."; 4632 } 4633 container manual-switch { 4634 description 4635 "Manual switch (MS) command properties"; 4636 leaf manual-switch { 4637 type boolean; 4638 description 4639 "A MS command is applied locally."; 4640 reference 4641 "ITU-T G.808; RFC 4427."; 4642 } 4643 leaf manual-swith-tunnel { 4644 type te:tunnel-ref; 4645 description 4646 "The tunnel which this MS command applies. 4647 It can be either a normal traffic tunnel 4648 or an extra-traffic tunnel. If it is not 4649 specified the MS command applies to the 4650 Null signal (i.e., manual switch to null)."; 4651 reference 4652 "ITU-T G.808; RFC 4427."; 4653 } 4654 } 4655 container forced-switch { 4656 description 4657 "The forced switch (FS) command properties"; 4658 leaf forced-switch { 4659 type boolean; 4660 description 4661 "A FS command is applied locally."; 4662 reference 4663 "ITU-T G.808; RFC 4427."; 4664 } 4665 leaf forced-swith-tunnel { 4666 type te:tunnel-ref; 4667 description 4668 "The tunnel which this FS command applies. 4669 It can be either a normal traffic tunnel 4670 or an extra-traffic tunnel. If it is not 4671 specified the FS command applies to the 4672 Null signal (i.e., forced switch to null). 4673 "; 4674 reference 4675 "ITU-T G.808; RFC 4427."; 4676 } 4677 } 4678 } 4679 } 4681 grouping tunnel-p2p-depency-tunnels_config { 4682 description 4683 "Groupong for tunnel dependency list of tunnels"; 4684 container dependency-tunnels { 4685 description "Dependency tunnels list"; 4686 list dependency-tunnel { 4687 key "name"; 4688 description "Dependency tunnel entry"; 4689 leaf name { 4690 type leafref { 4691 path "../../../../../tunnels/tunnel/name"; 4692 require-instance false; 4693 } 4694 description "Dependency tunnel name"; 4695 } 4696 leaf encoding { 4697 type identityref { 4698 base te-types:lsp-encoding-types; 4699 } 4700 description "LSP encoding type"; 4701 } 4702 leaf switching-type { 4703 type identityref { 4704 base te-types:switching-capabilities; 4705 } 4706 description "LSP switching type"; 4707 reference "RFC3945"; 4708 } 4709 } 4710 } 4711 } 4713 grouping tunnel-p2p-params_config { 4714 description 4715 "Configuration parameters relating to TE tunnel"; 4716 leaf name { 4717 type string; 4718 description "TE tunnel name."; 4719 } 4720 leaf identifier { 4721 type uint16; 4722 description 4723 "TE tunnel Identifier."; 4724 } 4725 leaf description { 4726 type string; 4727 description 4728 "Textual description for this TE tunnel"; 4729 } 4730 leaf encoding { 4731 type identityref { 4732 base te-types:lsp-encoding-types; 4733 } 4734 description "LSP encoding type"; 4735 } 4736 leaf switching-type { 4737 type identityref { 4738 base te-types:switching-capabilities; 4739 } 4740 description "LSP switching type"; 4741 reference "RFC3945"; 4742 } 4743 leaf provisioning-state { 4744 type identityref { 4745 base te-types:tunnel-state-type; 4746 } 4747 default te-types:tunnel-state-up; 4748 description "TE tunnel administrative state."; 4749 } 4750 leaf preference { 4751 type uint8 { 4752 range "1..255"; 4753 } 4754 description 4755 "Specifies a preference for this tunnel. 4756 A lower number signifies a better preference"; 4757 } 4758 leaf reoptimize-timer { 4759 type uint16; 4760 units seconds; 4761 description 4762 "frequency of reoptimization of 4763 a traffic engineered LSP"; 4764 } 4765 leaf source { 4766 type inet:ip-address; 4767 description 4768 "TE tunnel source address."; 4769 } 4770 leaf destination { 4771 type inet:ip-address; 4772 description 4773 "P2P tunnel destination address"; 4774 } 4775 leaf src-tp-id { 4776 type binary; 4777 description 4778 "TE tunnel source termination point identifier."; 4779 } 4780 leaf dst-tp-id { 4781 type binary; 4782 description 4783 "TE tunnel destination termination point identifier."; 4784 } 4785 leaf ignore-overload { 4786 type boolean; 4787 description 4788 "The tunnel path can traverse overloaded node."; 4789 } 4790 uses protection-restoration-params_config; 4791 uses te-types:common-constraints_config; 4792 uses tunnel-p2p-depency-tunnels_config; 4793 } 4795 grouping tunnel-p2p-params_state { 4796 description 4797 "State parameters relating to TE tunnel"; 4798 leaf operational-state { 4799 type identityref { 4800 base te-types:tunnel-state-type; 4801 } 4802 default te-types:tunnel-state-up; 4803 description "TE tunnel administrative state."; 4804 } 4805 } 4807 grouping access-segment-info { 4808 description 4809 "info related to a segment"; 4810 container forward { 4811 description 4812 "for the forward direction of this tunnel"; 4813 uses te-types:label-set-info; 4814 } 4815 container reverse { 4816 description 4817 "for the reverse direction of this tunnel"; 4818 uses te-types:label-set-info; 4819 } 4820 } 4822 grouping path-access-segment-info { 4823 description 4824 "If an end-to-end tunnel crosses multiple domains using 4825 the same technology, some additional constraints have to be 4826 taken in consideration in each domain"; 4827 container path-in-segment { 4828 presence 4829 "The end-to-end tunnel starts in a previous domain; 4830 this tunnel is a segment in the current domain."; 4831 description 4832 "This tunnel is a segment that needs to be coordinated 4833 with previous segment stitched on head-end side."; 4834 uses access-segment-info; 4835 } 4836 container path-out-segment { 4837 presence 4838 "The end-to-end tunnel is not terminated in this domain; 4839 this tunnel is a segment in the current domain."; 4840 description 4841 "This tunnel is a segment that needs to be coordinated 4842 with previous segment stitched on head-end side."; 4843 uses access-segment-info; 4844 } 4845 } 4846 /* TE tunnel configuration/state grouping */ 4847 grouping tunnel-p2mp-properties { 4848 description 4849 "Top level grouping for P2MP tunnel properties."; 4850 uses tunnel-p2mp-params_config; 4851 container state { 4852 config false; 4853 description 4854 "Configuration applied parameters and state"; 4855 leaf operational-state { 4856 type identityref { 4857 base te-types:tunnel-state-type; 4858 } 4859 default te-types:tunnel-state-up; 4860 description "TE tunnel administrative state."; 4861 } 4862 } 4863 } 4865 grouping p2p-path-candidate-secondary-path-config { 4866 description 4867 "Configuration parameters relating to a secondary path which 4868 is a candidate for a particular primary path"; 4870 leaf secondary-path { 4871 type leafref { 4872 path "../../../../../p2p-secondary-paths/" + 4873 "p2p-secondary-path/name"; 4874 } 4875 description 4876 "A reference to the secondary path that should be utilised 4877 when the containing primary path option is in use"; 4878 } 4880 leaf path-setup-protocol { 4881 type identityref { 4882 base te-types:path-signaling-type; 4883 } 4884 description 4885 "Signaling protocol used to set up this tunnel"; 4886 } 4887 } 4889 grouping p2p-reverse-path-candidate-secondary-path-config { 4890 description 4891 "Configuration parameters relating to a secondary path which 4892 is a candidate for a particular primary path"; 4894 leaf secondary-path { 4895 type leafref { 4896 path "../../../../p2p-secondary-paths/" + 4897 "p2p-secondary-path/name"; 4898 } 4899 description 4900 "A reference to the secondary path that should be utilised 4901 when the containing primary path option is in use"; 4902 } 4904 leaf path-setup-protocol { 4905 type identityref { 4906 base te-types:path-signaling-type; 4907 } 4908 description 4909 "Signaling protocol used to set up this tunnel"; 4910 } 4911 } 4913 grouping p2p-path-candidate-secondary-path-state { 4914 description 4915 "Operational state parameters relating to a secondary path 4916 which is a candidate for a particular primary path"; 4918 leaf active { 4919 type boolean; 4920 description 4921 "Indicates the current active path option that has 4922 been selected of the candidate secondary paths"; 4923 } 4924 } 4926 grouping tunnel-p2p-properties { 4927 description 4928 "Top level grouping for tunnel properties."; 4929 uses tunnel-p2p-params_config; 4930 container state { 4931 config false; 4932 description 4933 "Configuration applied parameters and state"; 4934 uses tunnel-p2p-params_state; 4935 } 4936 uses bidir-assoc-properties; 4937 container p2p-primary-paths { 4938 description "Set of P2P primary aths container"; 4939 list p2p-primary-path { 4940 key "name"; 4941 description 4942 "List of primary paths for this tunnel."; 4943 uses p2p-primary-path-properties; 4944 uses p2p-reverse-primary-path-properties; 4945 container candidate-p2p-secondary-paths { 4946 description 4947 "The set of candidate secondary paths which may be used 4948 for this primary path. When secondary paths are specified 4949 in the list the path of the secondary LSP in use must be 4950 restricted to those path options referenced. The 4951 priority of the secondary paths is specified within the 4952 list. Higher priority values are less preferred - that is 4953 to say that a path with priority 0 is the most preferred 4954 path. In the case that the list is empty, any secondary 4955 path option may be utilised when the current primary path 4956 is in use."; 4957 list candidate-p2p-secondary-path { 4958 key "secondary-path"; 4959 description 4960 "List of secondary paths for this tunnel."; 4961 uses p2p-path-candidate-secondary-path-config; 4963 container state { 4964 config false; 4965 description 4966 "Configuration applied parameters and state"; 4967 uses p2p-path-candidate-secondary-path-state; 4968 } 4969 } 4970 } 4971 } 4972 } 4973 container p2p-secondary-paths { 4974 description "Set of P2P secondary paths container"; 4975 list p2p-secondary-path { 4976 key "name"; 4977 description 4978 "List of secondary paths for this tunnel."; 4979 uses p2p-secondary-path-properties; 4980 } 4981 } 4982 } 4984 grouping shared-resources-tunnels { 4985 description 4986 "Set of tunnels that share secondary path resources with 4987 this tunnnel"; 4988 container shared-resources-tunnels { 4989 description 4990 "Set of tunnels that share secondary path resources with 4991 this tunnnel"; 4992 leaf-list lsp-shared-resources-tunnel { 4993 type te:tunnel-ref; 4994 description 4995 "Reference to the tunnel that sharing secondary path 4996 resources with this tunnel"; 4997 } 4998 } 4999 } 5001 grouping tunnel-actions { 5002 description "Tunnel actions"; 5003 action tunnel-action { 5004 description "Tunnel action"; 5005 input { 5006 leaf action-type { 5007 type identityref { 5008 base te-types:tunnel-action-type; 5009 } 5010 description "Tunnel action type"; 5011 } 5012 } 5013 output { 5014 leaf action-result { 5015 type identityref { 5016 base te-types:te-action-result; 5017 } 5018 description "The result of the RPC operation"; 5019 } 5020 } 5021 } 5022 } 5023 grouping protection-actions { 5024 description 5025 "Protection external command actions"; 5026 action protection-external-commands { 5027 input { 5028 leaf protection-external-command { 5029 type identityref { 5030 base te-types:protection-external-commands; 5031 } 5032 description 5033 "Protection external command"; 5034 } 5035 leaf tunnel-using-lsp-resources { 5036 type te:tunnel-ref; 5037 description 5038 "The tunnel which this external command applies. 5039 It can be either a normal traffic tunnel or an 5040 extra-traffic tunnel. It is not specified if the 5041 external command does not apply to a specific tunnel 5042 (e.g., a clear command) or if it applies to the Null 5043 signal (e.g., forced switch to null)."; 5044 } 5045 } 5046 } 5047 } 5049 /*** End of TE tunnel groupings ***/ 5051 /** 5052 * LSP related generic groupings 5053 */ 5054 grouping lsp-record-route-information_state { 5055 description "recorded route information grouping"; 5056 container lsp-record-route-subobjects { 5057 description "RSVP recorded route object information"; 5058 list record-route-subobject { 5059 when "../../origin-type = 'ingress'" { 5060 description "Applicable on non-ingress LSPs only"; 5061 } 5062 key "index"; 5063 description "Record route sub-object list"; 5064 leaf index { 5065 type leafref { 5066 path "../state/index"; 5067 } 5068 description "Index of record-route object"; 5069 } 5070 container state { 5071 config false; 5072 description 5073 "Configuration applied parameters and state"; 5074 uses te-types:record-route-subobject_state; 5075 } 5076 } 5077 } 5078 } 5080 grouping lsps-state-grouping { 5081 description 5082 "LSPs state operational data grouping"; 5083 container lsps-state { 5084 config false; 5085 description "TE LSPs state container"; 5086 list lsp { 5087 key 5088 "source destination tunnel-id lsp-id "+ 5089 "extended-tunnel-id"; 5090 description "List of LSPs associated with the tunnel."; 5091 uses lsp-properties_state; 5092 uses lsp-record-route-information_state; 5093 } 5094 } 5095 } 5097 /*** End of TE LSP groupings ***/ 5099 /** 5100 * TE global generic groupings 5101 */ 5103 /* Global named admin-groups configuration data */ 5104 grouping named-admin-groups_config { 5105 description 5106 "Global named administrative groups configuration 5107 grouping"; 5108 leaf name { 5109 type string; 5110 description 5111 "A string name that uniquely identifies a TE 5112 interface named admin-group"; 5113 } 5114 leaf bit-position { 5115 type uint32; 5116 description 5117 "Bit position representing the administrative group"; 5118 } 5119 } 5120 grouping named-admin-groups { 5121 description 5122 "Global named administrative groups configuration 5123 grouping"; 5124 container named-admin-groups { 5125 description "TE named admin groups container"; 5126 list named-admin-group { 5127 if-feature te-types:extended-admin-groups; 5128 if-feature te-types:named-extended-admin-groups; 5129 key "name"; 5130 description 5131 "List of named TE admin-groups"; 5132 uses named-admin-groups_config; 5133 } 5135 } 5136 } 5138 /* Global named admin-srlgs configuration data */ 5139 grouping named-srlgs_config { 5140 description 5141 "Global named SRLGs configuration grouping"; 5142 leaf name { 5143 type string; 5144 description 5145 "A string name that uniquely identifies a TE 5146 interface named srlg"; 5147 } 5148 leaf group { 5149 type te-types:srlg; 5150 description "An SRLG value"; 5151 } 5152 leaf cost { 5153 type uint32; 5154 description 5155 "SRLG associated cost. Used during path to append 5156 the path cost when traversing a link with this SRLG"; 5157 } 5158 } 5160 grouping named-srlgs { 5161 description 5162 "Global named SRLGs configuration grouping"; 5163 container named-srlgs { 5164 description "TE named SRLGs container"; 5165 list named-srlg { 5166 if-feature te-types:named-srlg-groups; 5167 key "name"; 5168 description 5169 "A list of named SRLG groups"; 5170 uses named-srlgs_config; 5171 } 5172 } 5173 } 5175 /* Global named explicit-paths configuration data */ 5176 grouping named-explicit-paths_config { 5177 description 5178 "Global explicit path configuration 5179 grouping"; 5180 leaf name { 5181 type string; 5182 description 5183 "A string name that uniquely identifies an 5184 explicit path"; 5185 } 5186 } 5188 grouping named-explicit-paths { 5189 description 5190 "Global explicit path configuration 5191 grouping"; 5192 container named-explicit-paths { 5193 description "TE named explicit path container"; 5194 list named-explicit-path { 5195 key "name"; 5196 description 5197 "A list of explicit paths"; 5198 uses named-explicit-paths_config; 5199 container explicit-route-objects { 5200 description "Explicit route objects container"; 5201 list explicit-route-object { 5202 key "index"; 5203 description 5204 "List of explicit route objects"; 5205 leaf explicit-route-usage { 5206 type identityref { 5207 base te-types:route-usage-type; 5208 } 5209 description "An explicit-route hop action."; 5210 } 5211 uses te-types:explicit-route-hop_config; 5212 } 5213 } 5214 } 5215 } 5216 } 5218 /* Global named paths constraints configuration data */ 5219 grouping path-metrics-bounds_config { 5220 description "TE path metric bounds grouping"; 5221 leaf metric-type { 5222 type identityref { 5223 base te-types:path-metric-type; 5224 } 5225 description "TE path metric type"; 5226 } 5227 leaf upper-bound { 5228 type uint64; 5229 description "Upper bound on end-to-end TE path metric"; 5230 } 5232 } 5234 grouping path-objective-function_config { 5235 description "Optimization metrics configuration grouping"; 5236 leaf objective-function-type { 5237 type identityref { 5238 base te-types:objective-function-type; 5239 } 5240 description 5241 "Objective function entry"; 5242 } 5243 } 5245 grouping path-metric-bounds { 5246 description "TE path metric bounds grouping"; 5247 container path-metric-bounds { 5248 description "TE path metric bounds container"; 5249 list path-metric-bound { 5250 key metric-type; 5251 description "List of TE path metrics"; 5252 uses path-metrics-bounds_config; 5253 } 5254 } 5255 } 5257 grouping path-constraints_state { 5258 description 5259 "TE path constraints state"; 5260 leaf bandwidth-generic_state { 5261 type te-types:te-bandwidth; 5262 description 5263 "A technology agnostic requested bandwidth to use 5264 for path computation"; 5265 } 5266 leaf disjointness_state { 5267 type te-types:te-path-disjointness; 5268 description 5269 "The type of resource disjointness."; 5270 } 5271 } 5273 grouping path-constraints_config { 5274 description 5275 "Global named path constraints configuration 5276 grouping"; 5277 leaf name { 5278 type string; 5279 description 5280 "A string name that uniquely identifies a 5281 path constraint set"; 5282 } 5283 uses te-types:common-constraints_config; 5284 uses path-metric-bounds; 5285 uses te-types:generic-path-optimization; 5286 uses path-affinities; 5287 uses path-srlgs; 5288 uses path-route-objects; 5289 uses shared-resources-tunnels { 5290 description 5291 "Set of tunnels that are allowed to share secondary path 5292 resources of this tunnel"; 5293 } 5294 uses path-access-segment-info { 5295 description 5296 "Tunnel constraints induced by other segments."; 5297 } 5298 } 5300 grouping named-path-constraints { 5301 description 5302 "Global named path constraints configuration 5303 grouping"; 5304 container named-path-constraints { 5305 description "TE named path constraints container"; 5306 list named-path-constraint { 5307 if-feature te-types:named-path-constraints; 5308 key "name"; 5309 description 5310 "A list of named path constraints"; 5311 uses path-constraints_config; 5312 container state { 5313 config false; 5314 description 5315 "Configuration applied parameters and state"; 5316 uses path-constraints_state; 5317 } 5318 } 5319 } 5320 } 5322 /* TE globals container data */ 5323 grouping globals-grouping { 5324 description 5325 "Globals TE system-wide configuration data grouping"; 5326 container globals { 5327 description 5328 "Globals TE system-wide configuration data container"; 5329 uses named-admin-groups; 5330 uses named-srlgs; 5331 uses named-explicit-paths; 5332 uses named-path-constraints; 5333 } 5334 } 5336 /* TE tunnels container data */ 5337 grouping tunnels-grouping { 5338 description 5339 "Tunnels TE configuration data grouping"; 5340 container tunnels { 5341 description 5342 "Tunnels TE configuration data container"; 5344 list tunnel { 5345 key "name"; 5346 description "P2P TE tunnels list."; 5347 uses tunnel-p2p-properties; 5348 uses tunnel-actions; 5349 } 5350 list tunnel-p2mp { 5351 key "name"; 5352 unique "identifier"; 5353 description "P2MP TE tunnels list."; 5354 uses tunnel-p2mp-properties; 5355 } 5356 } 5357 } 5359 /* TE LSPs ephemeral state container data */ 5360 grouping lsp-properties_state { 5361 description 5362 "LSPs state operational data grouping"; 5363 leaf source { 5364 type inet:ip-address; 5365 description 5366 "Tunnel sender address extracted from 5367 SENDER_TEMPLATE object"; 5368 reference "RFC3209"; 5369 } 5370 leaf destination { 5371 type inet:ip-address; 5372 description 5373 "Tunnel endpoint address extracted from 5374 SESSION object"; 5375 reference "RFC3209"; 5377 } 5378 leaf tunnel-id { 5379 type uint16; 5380 description 5381 "Tunnel identifier used in the SESSION 5382 that remains constant over the life 5383 of the tunnel."; 5384 reference "RFC3209"; 5385 } 5386 leaf lsp-id { 5387 type uint16; 5388 description 5389 "Identifier used in the SENDER_TEMPLATE 5390 and the FILTER_SPEC that can be changed 5391 to allow a sender to share resources with 5392 itself."; 5393 reference "RFC3209"; 5394 } 5395 leaf extended-tunnel-id { 5396 type inet:ip-address; 5397 description 5398 "Extended Tunnel ID of the LSP."; 5399 reference "RFC3209"; 5400 } 5401 leaf operational-state { 5402 type identityref { 5403 base te-types:lsp-state-type; 5404 } 5405 description "LSP operational state."; 5406 } 5407 leaf path-setup-protocol { 5408 type identityref { 5409 base te-types:path-signaling-type; 5410 } 5411 description 5412 "Signaling protocol used to set up this tunnel"; 5413 } 5414 leaf origin-type { 5415 type enumeration { 5416 enum ingress { 5417 description 5418 "Origin ingress"; 5419 } 5420 enum egress { 5421 description 5422 "Origin egress"; 5423 } 5424 enum transit { 5425 description 5426 "transit"; 5427 } 5428 } 5429 description 5430 "Origin type of LSP relative to the location 5431 of the local switch in the path."; 5432 } 5434 leaf lsp-resource-status { 5435 type enumeration { 5436 enum primary { 5437 description 5438 "A primary LSP is a fully established LSP for 5439 which the resource allocation has been committed 5440 at the data plane"; 5441 } 5442 enum secondary { 5443 description 5444 "A secondary LSP is an LSP that has been provisioned 5445 in the control plane only; e.g. resource allocation 5446 has not been committed at the data plane"; 5447 } 5448 } 5449 description "LSP resource allocation type"; 5450 reference "rfc4872, section 4.2.1"; 5451 } 5453 leaf lsp-protection-role { 5454 type enumeration { 5455 enum working { 5456 description 5457 "A working LSP must be a primary LSP whilst a protecting 5458 LSP can be either a primary or a secondary LSP. Also, 5459 known as protected LSPs when working LSPs are associated 5460 with protecting LSPs."; 5461 } 5462 enum protecting { 5463 description 5464 "A secondary LSP is an LSP that has been provisioned 5465 in the control plane only; e.g. resource allocation 5466 has not been committed at the data plane"; 5467 } 5468 } 5469 description "LSP role type"; 5470 reference "rfc4872, section 4.2.1"; 5471 } 5472 leaf lsp-protection-state { 5473 type identityref { 5474 base te-types:lsp-protection-state; 5475 } 5476 description 5477 "The state of the APS state machine controlling which 5478 tunnels is using the resources of the protecting LSP."; 5479 } 5480 } 5481 /*** End of TE global groupings ***/ 5483 /** 5484 * TE configurations container 5485 */ 5486 container te { 5487 presence "Enable TE feature."; 5488 description 5489 "TE global container."; 5491 /* TE Global Configuration Data */ 5492 uses globals-grouping; 5494 /* TE Tunnel Configuration Data */ 5495 uses tunnels-grouping; 5497 /* TE LSPs State Data */ 5498 uses lsps-state-grouping; 5500 /* Protection actions */ 5501 uses protection-actions; 5502 } 5504 /* TE Global RPCs/execution Data */ 5505 rpc globals-rpc { 5506 description 5507 "Execution data for TE global."; 5508 } 5510 /* TE interfaces RPCs/execution Data */ 5511 rpc interfaces-rpc { 5512 description 5513 "Execution data for TE interfaces."; 5514 } 5516 /* TE Tunnel RPCs/execution Data */ 5517 rpc tunnels-rpc { 5518 description "TE tunnels RPC nodes"; 5519 input { 5520 container tunnel-info { 5521 description "Tunnel Identification"; 5522 choice type { 5523 description "Tunnel information type"; 5524 case tunnel-p2p { 5525 leaf p2p-id { 5526 type te:tunnel-ref; 5527 description "P2P TE tunnel"; 5528 } 5529 } 5530 case tunnel-p2mp { 5531 leaf p2mp-id { 5532 type te:tunnel-p2mp-ref; 5533 description "P2MP TE tunnel"; 5534 } 5535 } 5536 } 5537 } 5538 } 5539 output { 5540 container result { 5541 description 5542 "The container result of the RPC operation"; 5543 leaf result { 5544 type enumeration { 5545 enum success { 5546 description "Origin ingress"; 5547 } 5548 enum in-progress { 5549 description "Origin egress"; 5550 } 5551 enum fail { 5552 description "transit"; 5553 } 5554 } 5555 description "The result of the RPC operation"; 5556 } 5557 } 5558 } 5559 } 5561 /* TE Global Notification Data */ 5562 notification globals-notif { 5563 description 5564 "Notification messages for Global TE."; 5565 } 5567 /* TE Tunnel Notification Data */ 5568 notification tunnels-notif { 5569 description 5570 "Notification messages for TE tunnels."; 5571 } 5572 } 5573 5575 Figure 8: TE generic YANG module 5577 file "ietf-te-device@2018-02-15.yang" 5578 module ietf-te-device { 5580 namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; 5582 /* Replace with IANA when assigned */ 5583 prefix "te-dev"; 5585 /* Import TE generic types */ 5586 import ietf-te { 5587 prefix te; 5588 } 5590 /* Import TE generic types */ 5591 import ietf-te-types { 5592 prefix te-types; 5593 } 5595 import ietf-interfaces { 5596 prefix if; 5597 } 5599 import ietf-inet-types { 5600 prefix inet; 5601 } 5603 import ietf-routing-types { 5604 prefix "rt-types"; 5605 } 5607 organization 5608 "IETF Traffic Engineering Architecture and Signaling (TEAS) 5609 Working Group"; 5611 contact 5612 "WG Web: 5613 WG List: 5615 WG Chair: Lou Berger 5616 5618 WG Chair: Vishnu Pavan Beeram 5619 5621 Editor: Tarek Saad 5622 5624 Editor: Rakesh Gandhi 5625 5627 Editor: Vishnu Pavan Beeram 5628 5630 Editor: Himanshu Shah 5631 5633 Editor: Xufeng Liu 5634 5636 Editor: Xia Chen 5637 5639 Editor: Raqib Jones 5640 5642 Editor: Bin Wen 5643 "; 5645 description 5646 "YANG data module for TE device configurations, 5647 state, RPC and notifications."; 5649 revision "2018-02-15" { 5650 description "Latest update to TE device YANG module."; 5651 reference "TBA"; 5652 } 5654 /** 5655 * TE LSP device state grouping 5656 */ 5657 grouping lsps-device_state { 5658 description "TE LSP device state grouping"; 5659 container lsp-timers { 5660 when "../te:origin-type = 'ingress'" { 5661 description "Applicable to ingress LSPs only"; 5662 } 5663 description "Ingress LSP timers"; 5664 leaf life-time { 5665 type uint32; 5666 units seconds; 5667 description 5668 "lsp life time"; 5669 } 5671 leaf time-to-install { 5672 type uint32; 5673 units seconds; 5674 description 5675 "lsp installation delay time"; 5676 } 5678 leaf time-to-destroy { 5679 type uint32; 5680 units seconds; 5681 description 5682 "lsp expiration delay time"; 5683 } 5684 } 5686 container downstream-info { 5687 when "../te:origin-type != 'egress'" { 5688 description "Applicable to ingress LSPs only"; 5689 } 5690 description 5691 "downstream information"; 5693 leaf nhop { 5694 type inet:ip-address; 5695 description 5696 "downstream nexthop."; 5697 } 5699 leaf outgoing-interface { 5700 type if:interface-ref; 5701 description 5702 "downstream interface."; 5703 } 5705 leaf neighbor { 5706 type inet:ip-address; 5707 description 5708 "downstream neighbor."; 5709 } 5710 leaf label { 5711 type rt-types:generalized-label; 5712 description 5713 "downstream label."; 5714 } 5715 } 5717 container upstream-info { 5718 when "../te:origin-type != 'ingress'" { 5719 description "Applicable to non-ingress LSPs only"; 5720 } 5721 description 5722 "upstream information"; 5724 leaf phop { 5725 type inet:ip-address; 5726 description 5727 "upstream nexthop or previous-hop."; 5728 } 5730 leaf neighbor { 5731 type inet:ip-address; 5732 description 5733 "upstream neighbor."; 5734 } 5736 leaf label { 5737 type rt-types:generalized-label; 5738 description 5739 "upstream label."; 5740 } 5741 } 5742 } 5744 /** 5745 * Device general groupings. 5746 */ 5747 grouping tunnel-device_config { 5748 description "Device TE tunnel configs"; 5749 leaf path-invalidation-action { 5750 type identityref { 5751 base te-types:path-invalidation-action-type; 5752 } 5753 description "Tunnel path invalidtion action"; 5754 } 5755 } 5757 grouping lsp-device-timers_config { 5758 description "Device TE LSP timers configs"; 5759 leaf lsp-install-interval { 5760 type uint32; 5761 units seconds; 5762 description 5763 "lsp installation delay time"; 5764 } 5765 leaf lsp-cleanup-interval { 5766 type uint32; 5767 units seconds; 5768 description 5769 "lsp cleanup delay time"; 5770 } 5771 leaf lsp-invalidation-interval { 5772 type uint32; 5773 units seconds; 5774 description 5775 "lsp path invalidation before taking action delay time"; 5776 } 5777 } 5778 grouping lsp-device-timers { 5779 description "TE LSP timers configuration"; 5780 uses lsp-device-timers_config; 5781 } 5783 /** 5784 * TE global device generic groupings 5785 */ 5787 /* TE interface container data */ 5788 grouping interfaces-grouping { 5789 description 5790 "Interface TE configuration data grouping"; 5791 container interfaces { 5792 description 5793 "Configuration data model for TE interfaces."; 5794 uses te-all-attributes; 5795 list interface { 5796 key "interface"; 5797 description "TE interfaces."; 5798 leaf interface { 5799 type if:interface-ref; 5800 description 5801 "TE interface name."; 5802 } 5803 /* TE interface parameters */ 5804 uses te-attributes; 5805 } 5807 } 5808 } 5810 /** 5811 * TE interface device generic groupings 5812 */ 5813 grouping te-admin-groups_config { 5814 description 5815 "TE interface affinities grouping"; 5816 choice admin-group-type { 5817 description 5818 "TE interface administrative groups 5819 representation type"; 5820 case value-admin-groups { 5821 choice value-admin-group-type { 5822 description "choice of admin-groups"; 5823 case admin-groups { 5824 description 5825 "Administrative group/Resource 5826 class/Color."; 5827 leaf admin-group { 5828 type te-types:admin-group; 5829 description 5830 "TE interface administrative group"; 5831 } 5832 } 5833 case extended-admin-groups { 5834 if-feature te-types:extended-admin-groups; 5835 description 5836 "Extended administrative group/Resource 5837 class/Color."; 5838 leaf extended-admin-group { 5839 type te-types:extended-admin-group; 5840 description 5841 "TE interface extended administrativei 5842 group"; 5843 } 5844 } 5845 } 5846 } 5847 case named-admin-groups { 5848 list named-admin-groups { 5849 if-feature te-types:extended-admin-groups; 5850 if-feature te-types:named-extended-admin-groups; 5851 key named-admin-group; 5852 description 5853 "A list of named admin-group entries"; 5854 leaf named-admin-group { 5855 type leafref { 5856 path "../../../../te:globals/" + 5857 "te:named-admin-groups/te:named-admin-group/" + 5858 "te:name"; 5859 } 5860 description "A named admin-group entry"; 5861 } 5862 } 5863 } 5864 } 5865 } 5867 /* TE interface SRLGs */ 5868 grouping te-srlgs_config { 5869 description "TE interface SRLG grouping"; 5870 choice srlg-type { 5871 description "Choice of SRLG configuration"; 5872 case value-srlgs { 5873 list values { 5874 key "value"; 5875 description "List of SRLG values that 5876 this link is part of."; 5877 leaf value { 5878 type uint32 { 5879 range "0..4294967295"; 5880 } 5881 description 5882 "Value of the SRLG"; 5883 } 5884 } 5885 } 5886 case named-srlgs { 5887 list named-srlgs { 5888 if-feature te-types:named-srlg-groups; 5889 key named-srlg; 5890 description 5891 "A list of named SRLG entries"; 5892 leaf named-srlg { 5893 type leafref { 5894 path "../../../../te:globals/" + 5895 "te:named-srlgs/te:named-srlg/te:name"; 5896 } 5897 description 5898 "A named SRLG entry"; 5899 } 5900 } 5901 } 5902 } 5904 } 5906 grouping te-igp-flooding-bandwidth_config { 5907 description 5908 "Configurable items for igp flooding bandwidth 5909 threshold configuration."; 5910 leaf threshold-type { 5911 type enumeration { 5912 enum DELTA { 5913 description 5914 "DELTA indicates that the local 5915 system should flood IGP updates when a 5916 change in reserved bandwidth >= the specified 5917 delta occurs on the interface."; 5918 } 5919 enum THRESHOLD_CROSSED { 5920 description 5921 "THRESHOLD-CROSSED indicates that 5922 the local system should trigger an update (and 5923 hence flood) the reserved bandwidth when the 5924 reserved bandwidth changes such that it crosses, 5925 or becomes equal to one of the threshold values."; 5926 } 5927 } 5928 description 5929 "The type of threshold that should be used to specify the 5930 values at which bandwidth is flooded. DELTA indicates that 5931 the local system should flood IGP updates when a change in 5932 reserved bandwidth >= the specified delta occurs on the 5933 interface. Where THRESHOLD_CROSSED is specified, the local 5934 system should trigger an update (and hence flood) the 5935 reserved bandwidth when the reserved bandwidth changes such 5936 that it crosses, or becomes equal to one of the threshold 5937 values"; 5938 } 5940 leaf delta-percentage { 5941 when "../threshold-type = 'DELTA'" { 5942 description 5943 "The percentage delta can only be specified when the 5944 threshold type is specified to be a percentage delta of 5945 the reserved bandwidth"; 5946 } 5947 type te-types:percentage; 5948 description 5949 "The percentage of the maximum-reservable-bandwidth 5950 considered as the delta that results in an IGP update 5951 being flooded"; 5953 } 5954 leaf threshold-specification { 5955 when "../threshold-type = 'THRESHOLD_CROSSED'" { 5956 description 5957 "The selection of whether mirrored or separate threshold 5958 values are to be used requires user specified thresholds to 5959 be set"; 5960 } 5961 type enumeration { 5962 enum MIRRORED_UP_DOWN { 5963 description 5964 "MIRRORED_UP_DOWN indicates that a single set of 5965 threshold values should be used for both increasing 5966 and decreasing bandwidth when determining whether 5967 to trigger updated bandwidth values to be flooded 5968 in the IGP TE extensions."; 5969 } 5970 enum SEPARATE_UP_DOWN { 5971 description 5972 "SEPARATE_UP_DOWN indicates that a separate 5973 threshold values should be used for the 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 } 5979 description 5980 "This value specifies whether a single set of threshold 5981 values should be used for both increasing and decreasing 5982 bandwidth when determining whether to trigger updated 5983 bandwidth values to be flooded in the IGP TE extensions. 5984 MIRRORED-UP-DOWN indicates that a single value (or set of 5985 values) should be used for both increasing and decreasing 5986 values, where SEPARATE-UP-DOWN specifies that the increasing 5987 and decreasing values will be separately specified"; 5988 } 5990 leaf-list up-thresholds { 5991 when "../threshold-type = 'THRESHOLD_CROSSED'" + 5992 "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { 5993 description 5994 "A list of up-thresholds can only be specified when the 5995 bandwidth update is triggered based on crossing a 5996 threshold and separate up and down thresholds are 5997 required"; 5998 } 5999 type te-types:percentage; 6000 description 6001 "The thresholds (expressed as a percentage of the maximum 6002 reservable bandwidth) at which bandwidth updates are to be 6003 triggered when the bandwidth is increasing."; 6004 } 6006 leaf-list down-thresholds { 6007 when "../threshold-type = 'THRESHOLD_CROSSED'" + 6008 "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { 6009 description 6010 "A list of down-thresholds can only be specified when the 6011 bandwidth update is triggered based on crossing a 6012 threshold and separate up and down thresholds are 6013 required"; 6014 } 6015 type te-types:percentage; 6016 description 6017 "The thresholds (expressed as a percentage of the maximum 6018 reservable bandwidth) at which bandwidth updates are to be 6019 triggered when the bandwidth is decreasing."; 6020 } 6022 leaf-list up-down-thresholds { 6023 when "../threshold-type = 'THRESHOLD_CROSSED'" + 6024 "and ../threshold-specification = 'MIRRORED_UP_DOWN'" { 6025 description 6026 "A list of thresholds corresponding to both increasing 6027 and decreasing bandwidths can be specified only when an 6028 update is triggered based on crossing a threshold, and 6029 the same up and down thresholds are required."; 6030 } 6031 type te-types:percentage; 6032 description 6033 "The thresholds (expressed as a percentage of the maximum 6034 reservable bandwidth of the interface) at which bandwidth 6035 updates are flooded - used both when the bandwidth is 6036 increasing and decreasing"; 6037 } 6038 } 6040 /* TE interface metric */ 6041 grouping te-metric_config { 6042 description "Interface TE metric grouping"; 6043 leaf te-metric { 6044 type te-types:te-metric; 6045 description "Interface TE metric."; 6046 } 6047 } 6048 /* TE interface switching capabilities */ 6049 grouping te-switching-cap_config { 6050 description 6051 "TE interface switching capabilities"; 6052 list switching-capabilities { 6053 key "switching-capability"; 6054 description 6055 "List of interface capabilities for this interface"; 6056 leaf switching-capability { 6057 type identityref { 6058 base te-types:switching-capabilities; 6059 } 6060 description 6061 "Switching Capability for this interface"; 6062 } 6063 leaf encoding { 6064 type identityref { 6065 base te-types:lsp-encoding-types; 6066 } 6067 description 6068 "Encoding supported by this interface"; 6069 } 6070 } 6071 } 6073 grouping te-advertisements_state { 6074 description 6075 "TE interface advertisements state grouping"; 6076 container te-advertisements_state { 6077 description 6078 "TE interface advertisements state container"; 6079 leaf flood-interval { 6080 type uint32; 6081 description 6082 "The periodic flooding interval"; 6083 } 6084 leaf last-flooded-time { 6085 type uint32; 6086 units seconds; 6087 description 6088 "Time elapsed since last flooding in seconds"; 6089 } 6090 leaf next-flooded-time { 6091 type uint32; 6092 units seconds; 6093 description 6094 "Time remained for next flooding in seconds"; 6095 } 6096 leaf last-flooded-trigger { 6097 type enumeration { 6098 enum link-up { 6099 description "Link-up flooding trigger"; 6100 } 6101 enum link-down { 6102 description "Link-up flooding trigger"; 6103 } 6104 enum threshold-up { 6105 description 6106 "Bandwidth reservation up threshold"; 6107 } 6108 enum threshold-down { 6109 description 6110 "Bandwidth reservation down threshold"; 6111 } 6112 enum bandwidth-change { 6113 description "Banwidth capacity change"; 6114 } 6115 enum user-initiated { 6116 description "Initiated by user"; 6117 } 6118 enum srlg-change { 6119 description "SRLG property change"; 6120 } 6121 enum periodic-timer { 6122 description "Periodic timer expired"; 6123 } 6124 } 6125 description "Trigger for the last flood"; 6126 } 6127 list advertized-level-areas { 6128 key level-area; 6129 description 6130 "List of areas the TE interface is advertised 6131 in"; 6132 leaf level-area { 6133 type uint32; 6134 description 6135 "The IGP area or level where the TE 6136 interface state is advertised in"; 6137 } 6138 } 6139 } 6140 } 6142 /* TE interface attributes grouping */ 6143 grouping te-attributes { 6144 description "TE attributes configuration grouping"; 6145 uses te-metric_config; 6146 uses te-admin-groups_config; 6147 uses te-srlgs_config; 6148 uses te-igp-flooding-bandwidth_config; 6149 uses te-switching-cap_config; 6150 container state { 6151 config false; 6152 description 6153 "State parameters for interface TE metric"; 6154 uses te-advertisements_state; 6155 } 6156 } 6158 grouping te-all-attributes { 6159 description 6160 "TE attributes configuration grouping for all 6161 interfaces"; 6162 uses te-igp-flooding-bandwidth_config; 6163 } 6164 /*** End of TE interfaces device groupings ***/ 6166 /** 6167 * TE device augmentations 6168 */ 6169 augment "/te:te" { 6170 description "TE global container."; 6171 /* TE Interface Configuration Data */ 6172 uses interfaces-grouping; 6173 } 6175 /* TE globals device augmentation */ 6176 augment "/te:te/te:globals" { 6177 description 6178 "Global TE device specific configuration parameters"; 6179 uses lsp-device-timers; 6180 } 6182 /* TE tunnels device configuration augmentation */ 6183 augment "/te:te/te:tunnels/te:tunnel" { 6184 description 6185 "Tunnel device dependent augmentation"; 6186 uses lsp-device-timers_config; 6187 } 6188 augment "/te:te/te:tunnels/te:tunnel/te:state" { 6189 description 6190 "Tunnel device dependent augmentation"; 6192 uses lsp-device-timers_config; 6193 } 6195 /* TE LSPs device state augmentation */ 6196 augment "/te:te/te:lsps-state/te:lsp" { 6197 description 6198 "LSP device dependent augmentation"; 6199 uses lsps-device_state; 6200 } 6202 augment "/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths" + 6203 "/te:p2p-secondary-path/te:state/te:lsps/te:lsp" { 6204 description 6205 "LSP device dependent augmentation"; 6206 uses lsps-device_state; 6207 } 6209 augment "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + 6210 "/te:p2p-primary-path/te:state/te:lsps/te:lsp" { 6211 description 6212 "LSP device dependent augmentation"; 6213 uses lsps-device_state; 6214 } 6216 /* TE interfaces RPCs/execution Data */ 6217 rpc interfaces-rpc { 6218 description 6219 "Execution data for TE interfaces."; 6220 } 6222 /* TE Interfaces Notification Data */ 6223 notification interfaces-notif { 6224 description 6225 "Notification messages for TE interfaces."; 6226 } 6227 } 6228 6230 Figure 9: TE MPLS specific types YANG module 6232 file "ietf-te-mpls@2018-02-15.yang" 6233 module ietf-te-mpls { 6235 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls"; 6237 /* Replace with IANA when assigned */ 6238 prefix "te-mpls"; 6239 /* Import TE base model */ 6240 import ietf-te { 6241 prefix te; 6242 } 6244 /* Import TE MPLS types */ 6245 import ietf-te-mpls-types { 6246 prefix "te-mpls-types"; 6247 } 6249 /* Import TE generic types */ 6250 import ietf-te-types { 6251 prefix te-types; 6252 } 6254 /* Import routing types */ 6255 import ietf-routing-types { 6256 prefix "rt-types"; 6257 } 6259 import ietf-mpls-static { 6260 prefix mpls-static; 6261 } 6263 import ietf-inet-types { 6264 prefix inet; 6265 } 6267 organization 6268 "IETF Traffic Engineering Architecture and Signaling (TEAS) 6269 Working Group"; 6271 contact 6272 "WG Web: 6273 WG List: 6275 WG Chair: Lou Berger 6276 6278 WG Chair: Vishnu Pavan Beeram 6279 6281 Editor: Tarek Saad 6282 6284 Editor: Rakesh Gandhi 6285 6287 Editor: Vishnu Pavan Beeram 6288 6290 Editor: Himanshu Shah 6291 6293 Editor: Xufeng Liu 6294 6296 Editor: Xia Chen 6297 6299 Editor: Raqib Jones 6300 6302 Editor: Bin Wen 6303 "; 6305 description 6306 "YANG data module for MPLS TE configurations, 6307 state, RPC and notifications."; 6309 revision "2018-02-15" { 6310 description "Latest update to MPLS TE YANG module."; 6311 reference "TBD"; 6312 } 6314 /* MPLS TE tunnel properties*/ 6316 grouping tunnel-igp-shortcut_config { 6317 description "TE tunnel IGP shortcut configs"; 6318 leaf shortcut-eligible { 6319 type boolean; 6320 default "true"; 6321 description 6322 "Whether this LSP is considered to be eligible for us as a 6323 shortcut in the IGP. In the case that this leaf is set to 6324 true, the IGP SPF calculation uses the metric specified to 6325 determine whether traffic should be carried over this LSP"; 6326 } 6327 leaf metric-type { 6328 type identityref { 6329 base te-types:LSP_METRIC_TYPE; 6330 } 6331 default te-types:LSP_METRIC_INHERITED; 6332 description 6333 "The type of metric specification that should be used to set 6334 the LSP(s) metric"; 6336 } 6337 leaf metric { 6338 type int32; 6339 description 6340 "The value of the metric that should be specified. The value 6341 supplied in this leaf is used in conjunction with the metric 6342 type to determine the value of the metric used by the system. 6343 Where the metric-type is set to LSP_METRIC_ABSOLUTE - the 6344 value of this leaf is used directly; where it is set to 6345 LSP_METRIC_RELATIVE, the relevant (positive or negative) 6346 offset is used to formulate the metric; where metric-type 6347 is LSP_METRIC_INHERITED, the value of this leaf is not 6348 utilised"; 6349 } 6350 leaf-list routing-afs { 6351 type inet:ip-version; 6352 description 6353 "Address families"; 6354 } 6355 } 6357 grouping tunnel-igp-shortcuts { 6358 description 6359 "TE tunnel IGP shortcut grouping"; 6360 container tunnel-igp-shortcut { 6361 description 6362 "Tunnel IGP shortcut properties"; 6363 uses tunnel-igp-shortcut_config; 6364 } 6365 } 6367 grouping tunnel-forwarding-adjacency_configs { 6368 description "Tunnel forwarding adjacency grouping"; 6369 leaf binding-label { 6370 type rt-types:mpls-label; 6371 description "MPLS tunnel binding label"; 6372 } 6373 leaf load-share { 6374 type uint32 { 6375 range "1..4294967295"; 6376 } 6377 description "ECMP tunnel forwarding 6378 load-share factor."; 6379 } 6380 leaf policy-class { 6381 type uint8 { 6382 range "1..7"; 6383 } 6384 description 6385 "The class associated with this tunnel"; 6386 } 6387 } 6389 grouping tunnel-forwarding-adjacency { 6390 description "Properties for using tunnel in forwarding."; 6391 container forwarding { 6392 description 6393 "Tunnel forwarding properties container"; 6394 uses tunnel-forwarding-adjacency_configs; 6395 } 6396 } 6398 /*** End of MPLS TE tunnel configuration/state */ 6399 grouping te-lsp-auto-bandwidth_config { 6400 description 6401 "Configuration parameters related to autobandwidth"; 6403 leaf enabled { 6404 type boolean; 6405 default false; 6406 description 6407 "enables mpls auto-bandwidth on the 6408 lsp"; 6409 } 6411 leaf min-bw { 6412 type te-mpls-types:bandwidth-kbps; 6413 description 6414 "set the minimum bandwidth in Kbps for an 6415 auto-bandwidth LSP"; 6416 } 6418 leaf max-bw { 6419 type te-mpls-types:bandwidth-kbps; 6420 description 6421 "set the maximum bandwidth in Kbps for an 6422 auto-bandwidth LSP"; 6423 } 6425 leaf adjust-interval { 6426 type uint32; 6427 description 6428 "time in seconds between adjustments to 6429 LSP bandwidth"; 6430 } 6431 leaf adjust-threshold { 6432 type te-types:percentage; 6433 description 6434 "percentage difference between the LSP's 6435 specified bandwidth and its current bandwidth 6436 allocation -- if the difference is greater than the 6437 specified percentage, auto-bandwidth adjustment is 6438 triggered"; 6439 } 6440 } 6442 grouping te-lsp-overflow_config { 6443 description 6444 "configuration for mpls lsp bandwidth 6445 overflow adjustment"; 6447 leaf enabled { 6448 type boolean; 6449 default false; 6450 description 6451 "enables mpls lsp bandwidth overflow 6452 adjustment on the lsp"; 6453 } 6455 leaf overflow-threshold { 6456 type te-types:percentage; 6457 description 6458 "bandwidth percentage change to trigger 6459 an overflow event"; 6461 } 6463 leaf trigger-event-count { 6464 type uint16; 6465 description 6466 "number of consecutive overflow sample 6467 events needed to trigger an overflow adjustment"; 6468 } 6469 } 6471 grouping te-lsp-underflow_config { 6472 description 6473 "configuration for mpls lsp bandwidth 6474 underflow adjustment"; 6476 leaf enabled { 6477 type boolean; 6478 default false; 6479 description 6480 "enables bandwidth underflow 6481 adjustment on the lsp"; 6482 } 6484 leaf underflow-threshold { 6485 type te-types:percentage; 6486 description 6487 "bandwidth percentage change to trigger 6488 and underflow event"; 6489 } 6491 leaf trigger-event-count { 6492 type uint16; 6493 description 6494 "number of consecutive underflow sample 6495 events needed to trigger an underflow adjustment"; 6496 } 6497 } 6498 grouping te-tunnel-bandwidth_config { 6499 description 6500 "Configuration parameters related to bandwidth for a tunnel"; 6502 leaf specification-type { 6503 type te-mpls-types:te-bandwidth-type; 6504 default SPECIFIED; 6505 description 6506 "The method used for settign the bandwidth, either explicitly 6507 specified or configured"; 6508 } 6510 leaf set-bandwidth { 6511 when "../specification-type = 'SPECIFIED'" { 6512 description 6513 "The bandwidth value when bandwidth is explicitly 6514 specified"; 6515 } 6516 type te-mpls-types:bandwidth-kbps; 6517 description 6518 "set bandwidth explicitly, e.g., using 6519 offline calculation"; 6520 } 6521 leaf class-type { 6522 type te-types:te-ds-class; 6523 description 6524 "The Class-Type of traffic transported by the LSP."; 6525 reference "RFC4124: section-4.3.1"; 6526 } 6528 } 6530 grouping te-tunnel-bandwidth_state { 6531 description 6532 "Operational state parameters relating to bandwidth for a tunnel"; 6534 leaf signaled-bandwidth { 6535 type te-mpls-types:bandwidth-kbps; 6536 description 6537 "The currently signaled bandwidth of the LSP. In the case where 6538 the bandwidth is specified explicitly, then this will match the 6539 value of the set-bandwidth leaf; in cases where the bandwidth is 6540 dynamically computed by the system, the current value of the 6541 bandwidth should be reflected."; 6542 } 6543 } 6545 grouping tunnel-bandwidth_top { 6546 description 6547 "Top level grouping for specifying bandwidth for a tunnel"; 6549 container bandwidth-mpls { 6550 description 6551 "Bandwidth configuration for TE LSPs"; 6553 uses te-tunnel-bandwidth_config; 6555 container state { 6556 config false; 6557 description 6558 "State parameters related to bandwidth 6559 configuration of TE tunnels"; 6560 uses te-tunnel-bandwidth_state; 6561 } 6563 container auto-bandwidth { 6564 when "../specification-type = 'AUTO'" { 6565 description 6566 "Include this container for auto bandwidth 6567 specific configuration"; 6568 } 6569 description 6570 "Parameters related to auto-bandwidth"; 6572 uses te-lsp-auto-bandwidth_config; 6574 container overflow { 6575 description 6576 "configuration of MPLS overflow bandwidth 6577 adjustement for the LSP"; 6579 uses te-lsp-overflow_config; 6580 } 6582 container underflow { 6583 description 6584 "configuration of MPLS underflow bandwidth 6585 adjustement for the LSP"; 6587 uses te-lsp-underflow_config; 6588 } 6589 } 6590 } 6591 } 6593 grouping te-path-bandwidth_top { 6594 description 6595 "Top level grouping for specifying bandwidth for a TE path"; 6597 container bandwidth { 6598 description 6599 "Bandwidth configuration for TE LSPs"; 6601 uses te-tunnel-bandwidth_config; 6602 container state { 6603 config false; 6604 description 6605 "State parameters related to bandwidth 6606 configuration of TE tunnels"; 6607 uses te-tunnel-bandwidth_state; 6608 } 6609 } 6610 } 6612 /** 6613 * MPLS TE augmentations 6614 */ 6616 /* MPLS TE tunnel augmentations */ 6617 augment "/te:te/te:tunnels/te:tunnel" { 6618 description "MPLS TE tunnel config augmentations"; 6619 uses tunnel-igp-shortcuts; 6620 uses tunnel-forwarding-adjacency; 6621 uses tunnel-bandwidth_top; 6623 } 6625 /* MPLS TE LSPs augmentations */ 6626 augment "/te:te/te:tunnels/te:tunnel/" + 6627 "te:p2p-primary-paths/te:p2p-primary-path" { 6628 when "/te:te/te:tunnels/te:tunnel" + 6629 "/te:p2p-primary-paths/te:p2p-primary-path" + 6630 "/te:path-setup-protocol = 'te-types:path-setup-static'" { 6631 description 6632 "When the path is statically provisioned"; 6633 } 6634 description "MPLS TE LSP augmentation"; 6635 leaf static-lsp-name { 6636 type mpls-static:static-lsp-ref; 6637 description "Static LSP name"; 6638 } 6639 } 6641 augment "/te:te/te:tunnels/te:tunnel/" + 6642 "te:p2p-primary-paths/te:p2p-primary-path/" + 6643 "te:state" { 6644 description "MPLS TE LSP augmentation"; 6645 leaf static-lsp-name { 6646 type mpls-static:static-lsp-ref; 6647 description "Static LSP name"; 6648 } 6649 } 6650 augment "/te:te/te:tunnels/te:tunnel/" + 6651 "te:p2p-secondary-paths/te:p2p-secondary-path" { 6652 when "/te:te/te:tunnels/te:tunnel" + 6653 "/te:p2p-secondary-paths/te:p2p-secondary-path/" + 6654 "te:path-setup-protocol = 'te-types:path-setup-static'" { 6655 description 6656 "When the path is statically provisioned"; 6657 } 6658 description "MPLS TE LSP augmentation"; 6659 leaf static-lsp-name { 6660 type mpls-static:static-lsp-ref; 6661 description "Static LSP name"; 6662 } 6663 } 6664 augment "/te:te/te:tunnels/te:tunnel/" + 6665 "te:p2p-secondary-paths/te:p2p-secondary-path/" + 6666 "te:state" { 6667 description "MPLS TE LSP augmentation"; 6668 leaf static-lsp-name { 6669 type mpls-static:static-lsp-ref; 6670 description "Static LSP name"; 6672 } 6673 } 6675 augment "/te:te/te:globals/te:named-path-constraints/" + 6676 "te:named-path-constraint" { 6677 description "foo"; 6678 uses te-path-bandwidth_top; 6679 } 6680 } 6681 6683 Figure 10: TE MPLS YANG module 6685 file "ietf-te-mpls-types@2018-02-15.yang" 6686 module ietf-te-mpls-types { 6688 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls-types"; 6690 /* Replace with IANA when assigned */ 6691 prefix "te-mpls-types"; 6693 organization 6694 "IETF TEAS Working Group"; 6696 contact "Fill me"; 6698 description 6699 "This module contains a collection of generally 6700 useful TE specific YANG data type defintions."; 6702 revision "2018-02-15" { 6703 description "Latest revision of TE MPLS types"; 6704 reference "RFC3209"; 6705 } 6707 identity backup-protection-type { 6708 description 6709 "Base identity for backup protection type"; 6710 } 6712 identity backup-protection-link { 6713 base backup-protection-type; 6714 description 6715 "backup provides link protection only"; 6716 } 6718 identity backup-protection-node-link { 6719 base backup-protection-type; 6720 description 6721 "backup offers node (preferred) or link protection"; 6722 } 6724 identity bc-model-type { 6725 description 6726 "Base identity for Diffserv-TE bandwidth constraint 6727 model type"; 6728 } 6730 identity bc-model-rdm { 6731 base bc-model-type; 6732 description 6733 "Russian Doll bandwidth constraint model type."; 6734 } 6736 identity bc-model-mam { 6737 base bc-model-type; 6738 description 6739 "Maximum Allocation bandwidth constraint 6740 model type."; 6741 } 6743 identity bc-model-mar { 6744 base bc-model-type; 6745 description 6746 "Maximum Allocation with Reservation 6747 bandwidth constraint model type."; 6748 } 6750 typedef bandwidth-kbps { 6751 type uint64; 6752 units "Kbps"; 6753 description 6754 "Bandwidth values expressed in kilobits per second"; 6755 } 6757 typedef bandwidth-mbps { 6758 type uint64; 6759 units "Mbps"; 6760 description 6761 "Bandwidth values expressed in megabits per second"; 6762 } 6764 typedef bandwidth-gbps { 6765 type uint64; 6766 units "Gbps"; 6767 description 6768 "Bandwidth values expressed in gigabits per second"; 6769 } 6771 typedef te-bandwidth-type { 6772 type enumeration { 6773 enum SPECIFIED { 6774 description 6775 "Bandwidth is explicitly specified"; 6776 } 6777 enum AUTO { 6778 description 6779 "Bandwidth is automatically computed"; 6780 } 6781 } 6782 description 6783 "enumerated type for specifying whether bandwidth is 6784 explicitly specified or automatically computed"; 6785 } 6787 typedef bfd-type { 6788 type enumeration { 6789 enum classical { 6790 description "BFD classical session type."; 6791 } 6792 enum seamless { 6793 description "BFD seamless session type."; 6794 } 6795 } 6796 default "classical"; 6797 description 6798 "Type of BFD session"; 6799 } 6801 typedef bfd-encap-mode-type { 6802 type enumeration { 6803 enum gal { 6804 description 6805 "BFD with GAL mode"; 6806 } 6807 enum ip { 6808 description 6809 "BFD with IP mode"; 6810 } 6811 } 6812 default ip; 6813 description 6814 "Possible BFD transport modes when running over TE 6815 LSPs."; 6817 } 6818 } 6819 6821 Figure 11: TE MPLS types YANG module 6823 file "ietf-te-sr-mpls@2018-02-15.yang" 6824 module ietf-te-sr-mpls { 6826 namespace "urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls"; 6828 /* Replace with IANA when assigned */ 6829 prefix "te-sr-mpls"; 6831 /* Import TE generic types */ 6832 import ietf-te { 6833 prefix te; 6834 } 6836 /* Import TE generic types */ 6837 import ietf-te-types { 6838 prefix te-types; 6839 } 6841 organization 6842 "IETF Traffic Engineering Architecture and Signaling (TEAS) 6843 Working Group"; 6845 contact 6846 "WG Web: 6847 WG List: 6849 WG Chair: Lou Berger 6850 6852 WG Chair: Vishnu Pavan Beeram 6853 6855 Editor: Tarek Saad 6856 6858 Editor: Rakesh Gandhi 6859 6861 Editor: Vishnu Pavan Beeram 6862 6864 Editor: Himanshu Shah 6865 6867 Editor: Xufeng Liu 6868 6870 Editor: Xia Chen 6871 6873 Editor: Raqib Jones 6874 6876 Editor: Bin Wen 6877 "; 6879 description 6880 "YANG data module for MPLS TE configurations, 6881 state, RPC and notifications."; 6883 revision "2018-02-15" { 6884 description "Latest update to MPLS TE YANG module."; 6885 reference "TBD"; 6886 } 6888 identity sr-protection-type { 6889 description 6890 "The Adj-SID base protection types"; 6891 } 6893 identity sr-protection-type-protected { 6894 base sr-protection-type; 6895 description 6896 "The Adj-SID is eligible if protected"; 6897 } 6899 identity sr-protection-type-unprotected { 6900 base sr-protection-type; 6901 description 6902 "The Adj-SID is eligible if unprotected"; 6903 } 6905 identity sr-protection-type-any { 6906 base sr-protection-type; 6907 description 6908 "The Adj-SID is eligible if protected or unprotected"; 6909 } 6911 typedef te-sid-selection-mode { 6912 type enumeration { 6913 enum ADJ_SID_ONLY { 6914 description 6915 "The SR-TE tunnel should only use adjacency SIDs 6916 to build the SID stack to be pushed for the LSP"; 6917 } 6918 enum MIXED_MODE { 6919 description 6920 "The SR-TE tunnel can use a mix of adjacency 6921 and prefix SIDs to build the SID stack to be pushed 6922 to the LSP"; 6923 } 6924 } 6925 description "SID selection mode type"; 6926 } 6928 /* MPLS SR-TE tunnel properties*/ 6929 grouping tunnel-sr-mpls-properties_config { 6930 description "MPLS TE SR tunnel properties"; 6931 leaf path-signaling-type { 6932 type identityref { 6933 base te-types:path-signaling-type; 6934 } 6935 description "TE tunnel path signaling type"; 6936 } 6937 } 6939 grouping te-sr-named-path-constraints_config { 6940 description 6941 "Configuration parameters relating to SR-TE LSPs"; 6943 leaf sid-selection-mode { 6944 type te-sid-selection-mode; 6945 default MIXED_MODE; 6946 description 6947 "The restrictions placed on the SIDs to be selected by the 6948 calculation method for the explicit path when it is 6949 instantiated for a SR-TE LSP"; 6950 } 6952 leaf sid-protection { 6953 type identityref { 6954 base sr-protection-type; 6955 } 6956 default sr-protection-type-any; 6957 description 6958 "When set to protected only SIDs that are 6959 protected are to be selected by the calculating method 6960 when the explicit path is instantiated by a SR-TE LSP."; 6962 } 6963 } 6965 grouping te-sr-named-path-constraints { 6966 description "Named TE SR path constraints grouping"; 6967 uses te-sr-named-path-constraints_config; 6968 } 6970 /*** End of MPLS SR-TE tunnel configuration/state */ 6972 /** 6973 * MPLS TE augmentations 6974 */ 6975 augment "/te:te/te:globals/te:named-path-constraints" + 6976 "/te:named-path-constraint" { 6977 description 6978 "Augmentations for MPLS SR-TE config named constraints"; 6979 uses te-sr-named-path-constraints; 6980 } 6982 /* MPLS TE tunnel augmentations */ 6984 /* MPLS TE LSPs augmentations */ 6985 } 6986 6988 Figure 12: SR TE MPLS YANG module 6990 5. IANA Considerations 6992 This document registers the following URIs in the IETF XML registry 6993 [RFC3688]. Following the format in [RFC3688], the following 6994 registration is requested to be made. 6996 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 6997 is an XML namespace. 6999 URI: urn:ietf:params:xml:ns:yang:ietf-te-device XML: N/A, the 7000 requested URI is an XML namespace. 7002 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls XML: N/A, the requested 7003 URI is an XML namespace. 7005 URI: urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls XML: N/A, the 7006 requested URI is an XML namespace. 7008 URI: urn:ietf:params:xml:ns:yang:ietf-te-types XML: N/A, the 7009 requested URI is an XML namespace. 7011 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls-types XML: N/A, the 7012 requested URI is an XML namespace. 7014 This document registers a YANG module in the YANG Module Names 7015 registry [RFC6020]. 7017 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 7018 ietf-te reference: RFC3209 7020 name: ietf-te-device namespace: urn:ietf:params:xml:ns:yang:ietf-te 7021 prefix: ietf-te-device reference: RFC3209 7023 name: ietf-te-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 7024 mpls prefix: ietf-te-mpls reference: RFC3209 7026 name: ietf-te-sr-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 7027 sr-mpls prefix: ietf-te-sr-mpls 7029 name: ietf-te-types namespace: urn:ietf:params:xml:ns:yang:ietf-te- 7030 types prefix: ietf-te-types reference: RFC3209 7032 name: ietf-te-mpls-types namespace: urn:ietf:params:xml:ns:yang:ietf- 7033 te-mpls-types prefix: ietf-te-mpls-types reference: RFC3209 7035 6. Security Considerations 7037 The YANG module defined in this memo is designed to be accessed via 7038 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 7039 secure transport layer and the mandatory-to-implement secure 7040 transport is SSH [RFC6242]. The NETCONF access control model 7041 [RFC6536] provides means to restrict access for particular NETCONF 7043 users to a pre-configured subset of all available NETCONF protocol 7044 operations and content. 7046 There are a number of data nodes defined in the YANG module which are 7047 writable/creatable/deletable (i.e., config true, which is the 7048 default). These data nodes may be considered sensitive or vulnerable 7049 in some network environments. Write operations (e.g., ) 7050 to these data nodes without proper protection can have a negative 7051 effect on network operations. Following are the subtrees and data 7052 nodes and their sensitivity/vulnerability: 7054 "/te/globals": This module specifies the global TE configurations on 7055 a device. Unauthorized access to this container could cause the 7056 device to ignore packets it should receive and process. 7058 "/te/tunnels": This list specifies the configured TE tunnels on a 7059 device. Unauthorized access to this list could cause the device to 7060 ignore packets it should receive and process. 7062 "/te/lsps-state": This list specifies the state derived LSPs. 7063 Unauthorized access to this list could cause the device to ignore 7064 packets it should receive and process. 7066 "/te/interfaces": This list specifies the configured TE interfaces on 7067 a device. Unauthorized access to this list could cause the device to 7068 ignore packets it should receive and process. 7070 7. Acknowledgement 7072 The authors would like to thank the members of the multi-vendor YANG 7073 design team who are involved in the definition of this model. 7075 The authors would also like to thank Loa Andersson, Lou Berger, 7076 Sergio Belotti, Italo Busi, Aihua Guo, Dhruv Dhody, Anurag Sharma, 7077 and Xian Zhang for their comments and providing valuable feedback on 7078 this document. 7080 8. Contributors 7082 Xia Chen 7083 Huawei Technologies 7085 Email: jescia.chenxia@huawei.com 7087 Raqib Jones 7088 Brocade 7090 Email: raqib@Brocade.com 7092 Bin Wen 7093 Comcast 7095 Email: Bin_Wen@cable.comcast.com 7097 9. Normative References 7099 [I-D.ietf-teas-yang-rsvp] 7100 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 7101 and H. Shah, "A YANG Data Model for Resource Reservation 7102 Protocol (RSVP)", draft-ietf-teas-yang-rsvp-08 (work in 7103 progress), October 2017. 7105 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 7106 Requirement Levels", BCP 14, RFC 2119, 7107 DOI 10.17487/RFC2119, March 1997, 7108 . 7110 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 7111 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 7112 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 7113 . 7115 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 7116 Switching (GMPLS) Signaling Resource ReserVation Protocol- 7117 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, 7118 DOI 10.17487/RFC3473, January 2003, 7119 . 7121 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 7122 DOI 10.17487/RFC3688, January 2004, 7123 . 7125 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 7126 the Network Configuration Protocol (NETCONF)", RFC 6020, 7127 DOI 10.17487/RFC6020, October 2010, 7128 . 7130 [RFC6107] Shiomoto, K., Ed. and A. Farrel, Ed., "Procedures for 7131 Dynamically Signaled Hierarchical Label Switched Paths", 7132 RFC 6107, DOI 10.17487/RFC6107, February 2011, 7133 . 7135 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 7136 and A. Bierman, Ed., "Network Configuration Protocol 7137 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 7138 . 7140 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 7141 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 7142 . 7144 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 7145 Protocol (NETCONF) Access Control Model", RFC 6536, 7146 DOI 10.17487/RFC6536, March 2012, 7147 . 7149 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 7150 RFC 6991, DOI 10.17487/RFC6991, July 2013, 7151 . 7153 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 7154 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 7155 . 7157 Authors' Addresses 7159 Tarek Saad (editor) 7160 Cisco Systems Inc 7162 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 7183 Igor Bryskin 7184 Huawei Technologies 7186 Email: Igor.Bryskin@huawei.com