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