idnits 2.17.00 (12 Aug 2021) /tmp/idnits36208/draft-ietf-teas-yang-te-28.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 : ---------------------------------------------------------------------------- ** There are 93 instances of weird spacing in the document. Is it really formatted ragged-right, rather than justified? == There are 2 instances of lines with private range IPv4 addresses in the document. If these are generic example addresses, they should be changed to use any of the ranges defined in RFC 6890 (or successor): 192.0.2.x, 198.51.100.x or 203.0.113.x. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 722 has weird spacing: '...ry-path lea...' == Line 725 has weird spacing: '...ry-path lea...' == Line 877 has weird spacing: '...ic-type ide...' == Line 881 has weird spacing: '...w usage ide...' == Line 887 has weird spacing: '...rw name str...' == (88 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (25 October 2021) is 208 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 (-17) exists of draft-ietf-teas-yang-rsvp-16 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-policy-14 Summary: 1 error (**), 0 flaws (~~), 11 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group T. Saad 3 Internet-Draft Juniper Networks 4 Intended status: Standards Track R. Gandhi 5 Expires: 28 April 2022 Cisco Systems Inc 6 X. Liu 7 Volta Networks 8 V.P. Beeram 9 Juniper Networks 10 I. Bryskin 11 Individual 12 O. Gonzalez de Dios 13 Telefonica 14 25 October 2021 16 A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths 17 and Interfaces 18 draft-ietf-teas-yang-te-28 20 Abstract 22 This document defines a YANG data model for the provisioning and 23 management of Traffic Engineering (TE) tunnels, Label Switched Paths 24 (LSPs), and interfaces. The model is divided into YANG modules that 25 classify data into generic, device-specific, technology agnostic, and 26 technology-specific elements. 28 This model covers data for configuration, operational state, remote 29 procedural calls, and event notifications. 31 Status of This Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at https://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on 28 April 2022. 48 Copyright Notice 50 Copyright (c) 2021 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents (https://trustee.ietf.org/ 55 license-info) in effect on the date of publication of this document. 56 Please review these documents carefully, as they describe your rights 57 and restrictions with respect to this document. Code Components 58 extracted from this document must include Simplified BSD License text 59 as described in Section 4.e of the Trust Legal Provisions and are 60 provided without warranty as described in the Simplified BSD License. 62 Table of Contents 64 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 65 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 66 2.1. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 67 2.2. Model Tree Diagrams . . . . . . . . . . . . . . . . . . . 4 68 3. Design Considerations . . . . . . . . . . . . . . . . . . . . 5 69 3.1. State Data Organization . . . . . . . . . . . . . . . . . 5 70 4. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 6 71 4.1. Module Relationship . . . . . . . . . . . . . . . . . . . 6 72 5. TE YANG Model . . . . . . . . . . . . . . . . . . . . . . . . 7 73 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 7 74 5.1.1. TE Globals . . . . . . . . . . . . . . . . . . . . . 9 75 5.1.2. TE Tunnels . . . . . . . . . . . . . . . . . . . . . 12 76 5.1.3. TE LSPs . . . . . . . . . . . . . . . . . . . . . . . 19 77 5.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 19 78 5.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 60 79 6. TE Device YANG Model . . . . . . . . . . . . . . . . . . . . 98 80 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 99 81 6.1.1. TE Interfaces . . . . . . . . . . . . . . . . . . . . 99 82 6.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 100 83 6.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 102 84 7. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 116 85 8. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 117 86 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 117 87 10. Security Considerations . . . . . . . . . . . . . . . . . . . 117 88 11. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 119 89 12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 119 90 13. Appendix A: Examples . . . . . . . . . . . . . . . . . . . . 119 91 13.1. Basic Tunnel Setup . . . . . . . . . . . . . . . . . . . 120 92 13.2. Global Named Path Constraints . . . . . . . . . . . . . 121 93 13.3. Tunnel with Global Path Constraint . . . . . . . . . . . 121 94 13.4. Tunnel with Per-tunnel Path Constraint . . . . . . . . . 122 95 13.5. Tunnel State . . . . . . . . . . . . . . . . . . . . . . 123 97 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 124 98 14.1. Normative References . . . . . . . . . . . . . . . . . . 124 99 14.2. Informative References . . . . . . . . . . . . . . . . . 128 100 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 128 102 1. Introduction 104 YANG [RFC6020] and [RFC7950] is a data modeling language that was 105 introduced to define the contents of a conceptual data store that 106 allows networked devices to be managed using NETCONF [RFC6241]. YANG 107 has proved relevant beyond its initial confines, as bindings to other 108 interfaces (e.g. RESTCONF [RFC8040]) and encoding other than XML 109 (e.g. JSON) are being defined. Furthermore, YANG data models can be 110 used as the basis of implementation for other interfaces, such as CLI 111 and programmatic APIs. 113 This document describes YANG data model for Traffic Engineering (TE) 114 tunnels, Label Switched Paths (LSPs), and interfaces. The model 115 covers data applicable to generic or device-independent, device- 116 specific, and Multiprotocol Label Switching (MPLS) technology 117 specific. 119 The document describes a high-level relationship between the modules 120 defined in this document, as well as other external protocol YANG 121 modules. The TE generic YANG data model does not include any data 122 specific to a signaling protocol. It is expected other data plane 123 technology model(s) will augment the TE generic YANG data model. 125 Also, it is expected other YANG module(s) that model TE signaling 126 protocols, such as RSVP-TE ([RFC3209], [RFC3473]), or Segment-Routing 127 TE (SR-TE) [I-D.ietf-spring-segment-routing-policy] will augment the 128 generic TE YANG module. 130 2. Requirements Language 132 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 133 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 134 "OPTIONAL" in this document are to be interpreted as described in 135 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all 136 capitals, as shown here. 138 The following terms are defined in [RFC6241] and are used in this 139 specification: 141 * client 143 * configuration data 144 * state data 146 This document also makes use of the following terminology introduced 147 in the YANG Data Modeling Language [RFC7950]: 149 * augment 151 * data model 153 * data node 155 2.1. Prefixes in Data Node Names 157 In this document, names of data nodes and other data model objects 158 are prefixed using the standard prefix associated with the 159 corresponding YANG imported modules, as shown in Table 1. 161 +=================+======================+===============+ 162 | Prefix | YANG module | Reference | 163 +=================+======================+===============+ 164 | yang | ietf-yang-types | [RFC6991] | 165 +-----------------+----------------------+---------------+ 166 | inet | ietf-inet-types | [RFC6991] | 167 +-----------------+----------------------+---------------+ 168 | rt-types | ietf-routing-types | [RFC8294] | 169 +-----------------+----------------------+---------------+ 170 | te-types | ietf-te-types | [RFC8776] | 171 +-----------------+----------------------+---------------+ 172 | te-packet-types | ietf-te-packet-types | [RFC8776] | 173 +-----------------+----------------------+---------------+ 174 | te | ietf-te | this document | 175 +-----------------+----------------------+---------------+ 176 | te-dev | ietf-te-device | this document | 177 +-----------------+----------------------+---------------+ 179 Table 1 181 Table 1: Prefixes and corresponding YANG modules 183 2.2. Model Tree Diagrams 185 The tree diagrams extracted from the module(s) defined in this 186 document are given in subsequent sections as per the syntax defined 187 in [RFC8340]. 189 3. Design Considerations 191 This document describes a generic TE YANG data model that is 192 independent of any dataplane technology. One of the design 193 objectives is to allow specific data plane technology models to reuse 194 the TE generic data model and possibly augment it with technology 195 specific data. 197 The elements of the generic TE YANG data model, including TE Tunnels, 198 LSPs, and interfaces have leaf(s) that identify the technology layer 199 where they reside. For example, the LSP encoding type can identify 200 the technology associated with a TE Tunnel or LSP. 202 Also, the generic TE YANG data model does not cover signaling 203 protocol data. The signaling protocol used to instantiate TE LSPs 204 are outside the scope of this document and expected to be covered by 205 augmentations defined in other document(s). 207 The following other design considerations are taken into account with 208 respect data organization: 210 * The generic TE YANG data model 'ietf-te' contains device 211 independent data and can be used to model data off a device (e.g. 212 on a TE controller). The device-specific TE data is defined in 213 module 'ietf-te-device' as shown in Figure 1, 215 * In general, minimal elements in the model are designated as 216 "mandatory" to allow freedom to vendors to adapt the data model to 217 their specific product implementation. 219 * Suitable defaults are specified for all configurable elements. 221 * The model declares a number of TE functions as features that can 222 be optionally supported. 224 3.1. State Data Organization 226 The Network Management Datastore Architecture (NMDA) [RFC8342] 227 addresses modeling state data for ephemeral objects. This document 228 adopts the NMDA model for configuration and state data representation 229 as per IETF guidelines for new IETF YANG models. 231 4. Model Overview 233 The data models defined in this document cover the core TE features 234 that are commonly supported by different vendor implementations. The 235 support of extended or vendor specific TE feature(s) is expected to 236 be in either augmentations, or deviations to the model defined in 237 this document. 239 4.1. Module Relationship 241 The generic TE YANG data model that is defined in "ietf-te.yang" 242 covers the building blocks that are device independent and agnostic 243 of any specific technology or control plane instances. The TE device 244 model defined in "ietf-te-device.yang" augments the generic TE YANG 245 data model and covers data that is specific to a device - for 246 example, attributes of TE interfaces, or TE timers that are local to 247 a TE node. 249 The TE data model for specific instances of data plane technology 250 exist in a separate YANG module(s) that augment the generic TE YANG 251 data model. For example, the MPLS-TE module "ietf-te-mpls.yang" is 252 defined in another document and augments the TE generic model as 253 shown in Figure 1. 255 The TE data model for specific instances of signaling protocol are 256 outside the scope of this document and are defined in other 257 documents. For example, the RSVP-TE YANG model augmentation of the 258 TE model is covered in [I-D.ietf-teas-yang-rsvp]. 260 TE generic +---------+ o: augment 261 module | ietf-te |o-------------+ 262 +---------+ \ 263 o \ 264 |\ \ 265 | \ \ 266 | +----------------+ \ 267 | | ietf-te-device | TE device module 268 | +----------------+ \ 269 | o o \ 270 | / \ \ 271 | / \ \ 272 +--------------+ +---------------+ 273 RSVP-TE module | ietf-rsvp-te |o . | ietf-te-mpls^ | 274 +--------------+ \ +---------------+ 275 | \ 276 | \ 277 | \ 278 | \ 279 | \ 280 o +-------------------+ 281 +-----------+ | ietf-rsvp-otn-te^ | 282 RSVP module | ietf-rsvp | +-------------------+ 283 +-----------+ RSVP-TE with OTN 284 extensions 286 ^ shown for illustration 287 (not in this document) 289 Figure 1: Relationship of TE module(s) with signaling protocol 290 modules 292 5. TE YANG Model 294 The generic TE YANG module ('ietf-te') is meant to manage and operate 295 a TE network. This includes creating, modifying and retrieving TE 296 Tunnels, LSPs, and interfaces and their associated attributes (e.g. 297 Administrative-Groups, SRLGs, etc.). 299 The detailed tree structure is provided in Figure 2. 301 5.1. Module Structure 303 The 'ietf-te' uses three main containers grouped under the main 'te' 304 container (see Figure 2). The 'te' container is the top level 305 container in the data model. The presence of the 'te' container 306 enables TE function system wide. Below provides further descriptions 307 of containers that exist under the 'te' top level container. 309 globals: 311 The 'globals' container maintains the set of global TE attributes 312 that can be applicable to TE Tunnel(s) and interface(s). 314 tunnels: 316 The 'tunnels' container includes the list of TE Tunnels that are 317 instantiated. Refer to Section 5.1.2 for further details on the 318 properties of a TE Tunnel. 320 lsps: 322 The 'lsps' container includes the list of TE LSP(s) that are 323 instantiated for TE Tunnels. Refer to Section 5.1.3 for further 324 details on the properties of a TE LSP. 326 tunnels-path-compute: 328 A Remote Procedure Call (RPC) to request path computation for a 329 specific TE Tunnel. The RPC allows requesting path computation 330 using atomic and stateless operation. A tunnel may also be 331 configured in 'compute-only' mode to provide stateful path updates 332 - see Section 5.1.2 for further details. 334 tunnels-action: 336 An RPC to request a specific action (e.g. reoptimize, or tear-and- 337 setup) to be taken on a specific tunnel or all tunnels. 339 module: ietf-te 340 +--rw te! 341 +--rw globals 342 . 343 . 345 +--rw tunnels 346 . 347 . 349 +-- lsps 351 rpcs: 352 +---x tunnels-path-compute 353 +---x tunnels-action 355 Figure 2: TE Tunnel model high-level YANG tree view 357 5.1.1. TE Globals 359 The 'globals' container covers properties that control TE features 360 behavior system-wide, and its respective state (see Figure 3). The 361 TE globals configuration include: 363 +--rw globals 364 | +--rw named-admin-groups 365 | | +--rw named-admin-group* [name] 366 .. 367 | +--rw named-srlgs 368 | | +--rw named-srlg* [name] {te-types:named-srlg-groups}? 369 .. 370 | +--rw named-path-constraints 371 | | +--rw named-path-constraint* [name] 372 .. 374 Figure 3: TE globals YANG subtree high-level structure 376 named-admin-groups: 378 A YANG container for the list of named (extended) administrative 379 groups that may be applied to TE links. 381 named-srlgs: 383 A YANG container for the list named Shared Risk Link Groups 384 (SRLGs) that may be applied to TE links. 386 named-path-constraints: 388 A YANG container for a list of named path constraints. Each named 389 path constraint is composed of a set of constraints that can be 390 applied during path computation. A named path constraint can be 391 applied to multiple TE Tunnels. Path constraints may also be 392 specified directly under the TE Tunnel. The path constraint 393 specified under the TE Tunnel take precedence over the path 394 constraints derived from the referenced named path constraint. A 395 named path constraint entry can be formed up of the following path 396 constraints: 398 | +--rw named-path-constraints 399 | +--rw named-path-constraint* [name] 400 | +--rw name string 401 | +--rw te-bandwidth 402 // ... 403 | +--rw link-protection? identityref 404 | +--rw setup-priority? uint8 405 | +--rw hold-priority? uint8 406 | +--rw signaling-type? identityref 407 | +--rw path-metric-bounds 408 // ... 409 | +--rw path-affinities-values 410 // ... 411 | +--rw path-affinity-names 412 // ... 413 | +--rw path-srlgs-lists 414 // ... 415 | +--rw path-srlgs-names 416 // ... 417 | +--rw disjointness? 418 | | te-path-disjointness 419 // ... 420 | +--rw explicit-route-objects-always 421 // ... 422 | | +--rw route-object-exclude-always* [index] 424 | | +--rw route-object-include-exclude* [index] 426 Figure 4: Named path constraints YANG subtree 428 o te-bandwidth: A YANG container that holds the technology 429 agnostic TE bandwidth constraint. 431 o link-protection: A YANG leaf that holds the link protection 432 type constraint required for the links to be included in the 433 computed path. 435 o setup/hold priority: A YANG leaf that holds the LSP setup 436 and hold admission priority as defined in [RFC3209]. 438 o signaling-type: A YANG leaf that holds the LSP setup type, 439 such as RSVP-TE or SR. 441 o path-metric-bounds: A YANG container that holds the set of 442 metric bounds applicable on the computed TE tunnel path. 444 o path-affinities-values: A YANG container that holds the set 445 of affinity values and mask to be used during path 446 computation. 448 o path-affinity-names: A YANG container that holds the set of 449 named affinity constraints and corresponding inclusion or 450 exclusions instruction for each to be used during path 451 computation. 453 o path-srlgs-lists: A YANG container that holds the set of 454 SRLG values and corresponding inclusion or exclusions 455 instruction to be used during path computation. 457 o path-srlgs-names: A YANG container that holds the set of 458 named SRLG constraints and corresponding inclusion or 459 exclusions instruction for each to be used during path 460 computation. 462 o disjointness: The level of resource disjointness constraint 463 that the secondary path of a TE tunnel has to adhere to. 465 o explicit-route-objects-always: A YANG container that 466 contains two route objects lists: 468 + 'route-object-exclude-always': a list of route entries to 469 always exclude from the path computation. 471 + 'route-object-include-exclude': a list of route entries 472 to include or exclude in the path computation. 474 The 'route-object-include-exclude' is used to configure 475 constraints on which route objects (e.g., nodes, links) are 476 included or excluded in the path computation. 478 The interpretation of an empty 'route-object-include-exclude' 479 list depends on the TE Tunnel (end-to-end or Tunnel Segment) 480 and on the specific path, according to the following rules: 482 1. An empty 'route-object-include-exclude' list for the 483 primary path of an end-to-end TE Tunnel indicates that 484 there are no route objects to be included or excluded in 485 the path computation. 487 2. An empty 'route-object-include-exclude' list for the 488 primary path of a TE Tunnel Segment indicates that no 489 primary LSP is required for that TE Tunnel. 491 3. An empty 'route-object-include-exclude' list for a reverse 492 path means it always follows the forward path (i.e., the TE 493 Tunnel is co-routed). When the 'route-object-include- 494 exclude' list is not empty, the reverse path is routed 495 independently of the forward path. 497 4. An empty 'route-object-include-exclude' list for the 498 secondary (forward) path indicates that the secondary path 499 has the same endpoints as the primary path. 501 5.1.2. TE Tunnels 503 The 'tunnels' container holds the list of TE Tunnels that are 504 provisioned on devices in the network (see Figure 5). 506 A TE Tunnel in the list is uniquely identified by a name. When the 507 model is used to manage a specific device, the 'tunnels' list 508 contains the TE Tunnels originating from the specific device. When 509 the model is used to manage a TE controller, the 'tunnels' list 510 contains all TE Tunnels and TE tunnel segments originating from 511 device(s) that the TE controller manages. 513 The TE Tunnel model allows the configuration and management of the 514 following TE tunnel related objected: 516 TE Tunnel: 518 A YANG container of one or more LSPs established between the 519 source and destination TE Tunnel termination points. A TE Tunnel 520 LSP is a connection-oriented service provided by the network layer 521 for the delivery of client data between a source and the 522 destination of the TE Tunnel termination points. 524 TE Tunnel Segment: 526 A part of a multi-domain TE Tunnel that is within a specific 527 network domain. 529 +--rw tunnels 530 | +--rw tunnel* [name] 531 | +--rw tunnel* [name] 532 | +--rw name string 533 | +--rw alias? string 534 | +--rw identifier? uint32 535 | +--rw color? uint32 536 | +--rw description? string 537 | +--ro operational-state? identityref 538 | +--rw encoding? identityref 539 | +--rw switching-type? identityref 540 | +--rw admin-state? identityref 541 | +--rw reoptimize-timer? uint16 542 | +--rw source? te-types:te-node-id 543 | +--rw destination? te-types:te-node-id 544 | +--rw src-tunnel-tp-id? binary 545 | +--rw dst-tunnel-tp-id? binary 546 | +--rw controller 547 | | +--rw protocol-origin? identityref 548 | | +--rw controller-entity-id? string 549 | +--rw bidirectional? boolean 550 | +--rw association-objects 551 | | +--rw association-object* [association-key] 552 // .. 553 | | 554 | +--rw protection 555 // .. 556 | +--rw restoration 557 // .. 558 | +--rw te-topology-identifier 559 // .. 560 | +--rw hierarchy 561 // .. 563 Figure 5: TE Tunnel list YANG subtree structure 565 The TE Tunnel has a number of attributes that are set directly under 566 the tunnel (see Figure 5). The main attributes of a TE Tunnel are 567 described below: 569 operational-state: 571 A YANG leaf that holds the operational state of the tunnel. 573 name: 575 A YANG leaf that holds the name of a TE Tunnel. The name of the 576 TE Tunnel uniquely identifies the tunnel within the TE tunnel 577 list. The name of the TE Tunnel can be formatted as a Uniform 578 Resource Indicator (URI) by including the namespace to ensure 579 uniqueness of the name amongst all the TE Tunnels present on 580 devices and controllers. 582 alias: 584 A YANG leaf that holds an alternate name to the TE tunnel. Unlike 585 the TE tunnel name, the alias can be modified at any time during 586 the lifetime of the TE tunnel. 588 identifier: 590 A YANG leaf that holds an identifier of the tunnel. This 591 identifier is unique amongst tunnels originated from the same 592 ingress device. 594 color: 596 A YANG leaf that holds the color associated with the TE tunnel. 597 The color is used to map or steer services that carry matching 598 color on to the TE tunnel as described in [RFC9012]. 600 encoding/switching: 602 The 'encoding' and 'switching-type' are YANG leafs that define the 603 specific technology in which the tunnel operates in as described 604 in [RFC3945]. 606 reoptimize-timer: 608 A YANG leaf to set the inteval period for tunnel reoptimization. 610 source/destination: 612 YANG leafs that define the tunnel source and destination node 613 endpoints. 615 src-tunnel-tp-id/dst-tunnel-tp-id: 617 YANG leafs that hold the identifiers of source and destination TE 618 Tunnel Termination Points (TTPs) [RFC8795] residing on the source 619 and destination nodes. The TTP identifiers are optional on nodes 620 that have a single TTP per node. For example, TTP identifiers are 621 optional for packet (IP/MPLS) routers. 623 controller: 625 A YANG container that holds tunnel data relevant to an optional 626 external TE controller that may initiate or control a tunnel. 627 This target node may be augmented by external module(s), for 628 example, to add data for PCEP initiated and/or delegated tunnels. 630 bidirectional: 632 A YANG leaf that when present indicates the LSPs of a TE Tunnel 633 are bidirectional and co-routed. 635 association-objects: 637 A YANG container that holds the set of associations of the TE 638 Tunnel to other TE Tunnels. Associations at the TE Tunnel level 639 apply to all paths of the TE Tunnel. The TE tunnel associations 640 can be overridden by associations configured directly under the TE 641 Tunnel path. 643 protection: 645 A YANG container that holds the TE Tunnel protection properties. 647 restoration: 649 A YANG container that holds the TE Tunnel restoration properties. 651 te-topology-identifier: 653 A YANG container that holds the topology identifier associated 654 with the topology where paths for the TE tunnel are computed. 656 +--rw hierarchy 657 | +--rw dependency-tunnels 658 | | +--rw dependency-tunnel* [name] 659 | | +--rw name 660 | | | -> ../../../../../../tunnels/tunnel/name 661 | | +--rw encoding? identityref 662 | | +--rw switching-type? identityref 663 | +--rw hierarchical-link 664 | +--rw local-te-node-id? te-types:te-node-id 665 | +--rw local-te-link-tp-id? te-types:te-tp-id 666 | +--rw remote-te-node-id? te-types:te-node-id 667 | +--rw te-topology-identifier 668 | +--rw provider-id? te-global-id 669 | +--rw client-id? te-global-id 670 | +--rw topology-id? te-topology-id 671 Figure 6: TE Tunnel hierarchy YANG subtree 673 hierarchy: 675 A YANG container that holds hierarchy related properties of the TE 676 Tunnel (see Figure 6. A TE LSP can be set up in MPLS or 677 Generalized MPLS (GMPLS) networks to be used as a TE links to 678 carry traffic in other (client) networks [RFC6107]. In this case, 679 the model introduces the TE Tunnel hierarchical link endpoint 680 parameters to identify the specific link in the client layer that 681 the underlying TE Tunnel is associated with. The hierarchy 682 container includes the following: 684 o dependency-tunnels: A set of hierarchical TE Tunnels 685 provisioned or to be provisioned in the immediate lower 686 layer that this TE tunnel depends on for multi-layer path 687 computation. A dependency TE Tunnel is provisioned if and 688 only if it is used (selected by path computation) at least 689 by one client layer TE Tunnel. The TE link in the client 690 layer network topology supported by a dependent TE Tunnel is 691 dynamically created only when the dependency TE Tunnel is 692 actually provisioned. 694 o hierarchical-link: A YANG container that holds the identity 695 of the hierarchical link (in the client layer) that is 696 supported by this TE Tunnel. The endpoints of the 697 hierarchical link are defined by TE tunnel source and 698 destination node endpoints. The hierarchical link can be 699 identified by its source and destination link termination 700 point identifiers. 702 5.1.2.1. TE Tunnel Paths 704 The TE Tunnel can be configured with a set of paths that define the 705 tunnel forward and reverse paths as described in Figure 7. Moreover, 706 a primary path can be specified a set of candidate secondary paths 707 that can be visited to support path protection. The following 708 describe further the list of paths associated with a TE Tunnel. 710 | +--rw primary-paths 711 | | +--rw primary-path* [name] 712 | | +--rw name string 713 // .. 714 | | + 715 | | +--rw primary-reverse-path 716 | | | +--rw name? string 717 // .. 718 | | | | 719 | | | +--rw candidate-secondary-reverse-paths 720 | | | +--rw candidate-secondary-reverse-path* 721 | | | [secondary-path] 722 | | | +--rw secondary-path leafref 723 | | +--rw candidate-secondary-paths 724 | | +--rw candidate-secondary-path* [secondary-path] 725 | | +--rw secondary-path leafref 726 | | +--ro active? boolean 728 | +--rw secondary-paths 729 | | +--rw secondary-path* [name] 730 | | +--rw name string 731 // .. 732 | | 733 | +--rw secondary-reverse-paths 734 | | +--rw secondary-reverse-path* [name] 735 | | +--rw name string 737 Figure 7: TE Tunnel paths YANG tree structure 739 primary-paths: 741 A YANG container that holds the list of primary paths. A primary 742 path is identified by 'name'. A primary path is selected from the 743 list to instantiate a primary forwarding LSP for the tunnel. The 744 list of primary paths is visited by order of preference. A 745 primary path has the following attributes: 747 - primary-reverse-path: A YANG container that holds properties of 748 the primary reverse path. The reverse path is applicable to 749 bidirectional TE Tunnels. 751 - candidate-secondary-paths: A YANG container that holds a list 752 of candidate secondary paths which may be used for the primary 753 path to support path protection. The candidate secondary 754 path(s) reference path(s) from the tunnel secondary paths list. 755 The preference of the secondary paths is specified within the 756 list and dictates the order of visiting the secondary path from 757 the list. The attributes of a secondary path can be defined 758 separately from the primary path. The attributes of a 759 secondary path will be inherited from the associated 'active' 760 primary when not explicitly defined for the secondary path. 762 secondary-paths: 764 A YANG container that holds the set of secondary paths. A 765 secondary path is identified by 'name'. A secondary path can be 766 referenced from the TE Tunnel's 'candidate-secondary-path' list. 767 A secondary path contains attributes similar to a primary path. 769 secondary-reverse-paths: 771 A YANG container that holds teh set of secondary reverse paths. A 772 secondary reverse path is identified by 'name'. A secondary 773 reverse path can be referenced from the TE Tunnel's 'candidate- 774 secondary-reverse-paths' list. A secondary reverse path contains 775 attributes similar to a primary path. 777 The following set common path attributes are shared for primary 778 forward and reverse primary and secondary paths: 780 compute-only: 782 A path of TE Tunnel is, by default, provisioned so that it can is 783 instantiated in forwarding to carry traffic as soon as a valid 784 path is computed. In some cases, a TE path may be provisioned for 785 the only purpose of computing a path and reporting it without the 786 need to instantiate the LSP or commit any resources. In such a 787 case, the path is configured in 'compute-only' mode to distinguish 788 it from the default behavior. A 'compute-only' path is configured 789 as a usual with the associated per path constraint(s) and 790 properties on a device or TE controller. The device or TE 791 controller computes the feasible path(s) subject to configured 792 constraints. A client may query the 'compute-only' computed path 793 properties 'on-demand', or alternatively, can subscribe to be 794 notified of computed path(s) and whenever the path properties 795 change. 797 use-path-computation: 799 A YANG leaf that indicates whether or not path computation is to 800 be used for a specified path. 802 lockdown: 804 A YANG leaf that when set indicates the existing path should not 805 be reoptimized after a failure on any of its traversed links. 807 te-topology-identifier: 809 A YANG container that holds the topology identifier associated 810 with the tunnel. 812 optimizations: 814 a YANG container that holds the optimization objectives that path 815 computation will use to select a path. 817 computed-paths-properties: > A YANG container that holds properties 818 for the list of computed paths. 820 computed-path-error-infos: 822 A YANG container that holds a list of errors related to the path. 824 lsps: 826 a YANG container that holds a list of LSPs that are instantiated 827 for this specific path. 829 5.1.3. TE LSPs 831 The 'lsps' container includes the set of TE LSP(s) that are 832 instantiated. A TE LSP is identified by a 3-tuple ('tunnel-name', 833 'node', 'lsp-id'). 835 When the model is used to manage a specific device, the 'lsps' list 836 contains all TE LSP(s) that traverse the device (including 837 ingressing, transiting and egressing the device). 839 When the model is used to manage a TE controller, the 'lsps' list 840 contains all TE LSP(s) that traverse all network devices (including 841 ingressing, transiting and egressing the device) that the TE 842 controller manages. 844 5.2. Tree Diagram 846 Figure 8 shows the tree diagram of the generic TE YANG model defined 847 in modules 'ietf-te.yang'. 849 module: ietf-te 850 +--rw te! 851 +--rw globals 852 | +--rw named-admin-groups 853 | | +--rw named-admin-group* [name] 854 | | {te-types:extended-admin-groups,te-types:named-extend 855 ed-admin-groups}? 856 | | +--rw name string 857 | | +--rw bit-position? uint32 858 | +--rw named-srlgs 859 | | +--rw named-srlg* [name] {te-types:named-srlg-groups}? 860 | | +--rw name string 861 | | +--rw value? te-types:srlg 862 | | +--rw cost? uint32 863 | +--rw named-path-constraints 864 | +--rw named-path-constraint* [name] 865 | {te-types:named-path-constraints}? 866 | +--rw name string 867 | +--rw te-bandwidth 868 | | +--rw (technology)? 869 | | +--:(generic) 870 | | +--rw generic? te-bandwidth 871 | +--rw link-protection? identityref 872 | +--rw setup-priority? uint8 873 | +--rw hold-priority? uint8 874 | +--rw signaling-type? identityref 875 | +--rw path-metric-bounds 876 | | +--rw path-metric-bound* [metric-type] 877 | | +--rw metric-type identityref 878 | | +--rw upper-bound? uint64 879 | +--rw path-affinities-values 880 | | +--rw path-affinities-value* [usage] 881 | | +--rw usage identityref 882 | | +--rw value? admin-groups 883 | +--rw path-affinity-names 884 | | +--rw path-affinity-name* [usage] 885 | | +--rw usage identityref 886 | | +--rw affinity-name* [name] 887 | | +--rw name string 888 | +--rw path-srlgs-lists 889 | | +--rw path-srlgs-list* [usage] 890 | | +--rw usage identityref 891 | | +--rw values* srlg 892 | +--rw path-srlgs-names 893 | | +--rw path-srlgs-name* [usage] 894 | | +--rw usage identityref 895 | | +--rw names* string 896 | +--rw disjointness? 897 | | te-path-disjointness 898 | +--rw explicit-route-objects-always 899 | | +--rw route-object-exclude-always* [index] 900 | | | +--rw index uint32 901 | | | +--rw (type)? 902 | | | +--:(numbered-node-hop) 903 | | | | +--rw numbered-node-hop 904 | | | | +--rw node-id te-node-id 905 | | | | +--rw hop-type? te-hop-type 906 | | | +--:(numbered-link-hop) 907 | | | | +--rw numbered-link-hop 908 | | | | +--rw link-tp-id te-tp-id 909 | | | | +--rw hop-type? te-hop-type 910 | | | | +--rw direction? te-link-direction 911 | | | +--:(unnumbered-link-hop) 912 | | | | +--rw unnumbered-link-hop 913 | | | | +--rw link-tp-id te-tp-id 914 | | | | +--rw node-id te-node-id 915 | | | | +--rw hop-type? te-hop-type 916 | | | | +--rw direction? te-link-direction 917 | | | +--:(as-number) 918 | | | | +--rw as-number-hop 919 | | | | +--rw as-number inet:as-number 920 | | | | +--rw hop-type? te-hop-type 921 | | | +--:(label) 922 | | | +--rw label-hop 923 | | | +--rw te-label 924 | | | +--rw (technology)? 925 | | | | +--:(generic) 926 | | | | +--rw generic? 927 | | | | rt-types:generalized-label 928 | | | +--rw direction? 929 | | | te-label-direction 930 | | +--rw route-object-include-exclude* [index] 931 | | +--rw explicit-route-usage? identityref 932 | | +--rw index uint32 933 | | +--rw (type)? 934 | | +--:(numbered-node-hop) 935 | | | +--rw numbered-node-hop 936 | | | +--rw node-id te-node-id 937 | | | +--rw hop-type? te-hop-type 938 | | +--:(numbered-link-hop) 939 | | | +--rw numbered-link-hop 940 | | | +--rw link-tp-id te-tp-id 941 | | | +--rw hop-type? te-hop-type 942 | | | +--rw direction? te-link-direction 943 | | +--:(unnumbered-link-hop) 944 | | | +--rw unnumbered-link-hop 945 | | | +--rw link-tp-id te-tp-id 946 | | | +--rw node-id te-node-id 947 | | | +--rw hop-type? te-hop-type 948 | | | +--rw direction? te-link-direction 949 | | +--:(as-number) 950 | | | +--rw as-number-hop 951 | | | +--rw as-number inet:as-number 952 | | | +--rw hop-type? te-hop-type 953 | | +--:(label) 954 | | | +--rw label-hop 955 | | | +--rw te-label 956 | | | +--rw (technology)? 957 | | | | +--:(generic) 958 | | | | +--rw generic? 959 | | | | rt-types:generalized-label 960 | | | +--rw direction? 961 | | | te-label-direction 962 | | +--:(srlg) 963 | | +--rw srlg 964 | | +--rw srlg? uint32 965 | +--rw path-in-segment! 966 | | +--rw label-restrictions 967 | | +--rw label-restriction* [index] 968 | | +--rw restriction? enumeration 969 | | +--rw index uint32 970 | | +--rw label-start 971 | | | +--rw te-label 972 | | | +--rw (technology)? 973 | | | | +--:(generic) 974 | | | | +--rw generic? 975 | | | | rt-types:generalized-label 976 | | | +--rw direction? 977 | | | te-label-direction 978 | | +--rw label-end 979 | | | +--rw te-label 980 | | | +--rw (technology)? 981 | | | | +--:(generic) 982 | | | | +--rw generic? 983 | | | | rt-types:generalized-label 984 | | | +--rw direction? 985 | | | te-label-direction 986 | | +--rw label-step 987 | | | +--rw (technology)? 988 | | | +--:(generic) 989 | | | +--rw generic? int32 990 | | +--rw range-bitmap? yang:hex-string 991 | +--rw path-out-segment! 992 | +--rw label-restrictions 993 | +--rw label-restriction* [index] 994 | +--rw restriction? enumeration 995 | +--rw index uint32 996 | +--rw label-start 997 | | +--rw te-label 998 | | +--rw (technology)? 999 | | | +--:(generic) 1000 | | | +--rw generic? 1001 | | | rt-types:generalized-label 1002 | | +--rw direction? 1003 | | te-label-direction 1004 | +--rw label-end 1005 | | +--rw te-label 1006 | | +--rw (technology)? 1007 | | | +--:(generic) 1008 | | | +--rw generic? 1009 | | | rt-types:generalized-label 1010 | | +--rw direction? 1011 | | te-label-direction 1012 | +--rw label-step 1013 | | +--rw (technology)? 1014 | | +--:(generic) 1015 | | +--rw generic? int32 1016 | +--rw range-bitmap? yang:hex-string 1017 +--rw tunnels 1018 | +--rw tunnel* [name] 1019 | +--rw name string 1020 | +--rw alias? string 1021 | +--rw identifier? uint32 1022 | +--rw color? uint32 1023 | +--rw description? string 1024 | +--rw admin-state? identityref 1025 | +--ro operational-state? identityref 1026 | +--rw encoding? identityref 1027 | +--rw switching-type? identityref 1028 | +--rw source? te-types:te-node-id 1029 | +--rw destination? te-types:te-node-id 1030 | +--rw src-tunnel-tp-id? binary 1031 | +--rw dst-tunnel-tp-id? binary 1032 | +--rw bidirectional? boolean 1033 | +--rw controller 1034 | | +--rw protocol-origin? identityref 1035 | | +--rw controller-entity-id? string 1036 | +--rw reoptimize-timer? uint16 1037 | +--rw association-objects 1038 | | +--rw association-object* [association-key] 1039 | | | +--rw association-key string 1040 | | | +--rw type? identityref 1041 | | | +--rw id? uint16 1042 | | | +--rw source 1043 | | | +--rw id? te-gen-node-id 1044 | | | +--rw type? enumeration 1045 | | +--rw association-object-extended* [association-key] 1046 | | +--rw association-key string 1047 | | +--rw type? identityref 1048 | | +--rw id? uint16 1049 | | +--rw source 1050 | | | +--rw id? te-gen-node-id 1051 | | | +--rw type? enumeration 1052 | | +--rw global-source? uint32 1053 | | +--rw extended-id? yang:hex-string 1054 | +--rw protection 1055 | | +--rw enable? boolean 1056 | | +--rw protection-type? identityref 1057 | | +--rw protection-reversion-disable? boolean 1058 | | +--rw hold-off-time? uint32 1059 | | +--rw wait-to-revert? uint16 1060 | | +--rw aps-signal-id? uint8 1061 | +--rw restoration 1062 | | +--rw enable? boolean 1063 | | +--rw restoration-type? identityref 1064 | | +--rw restoration-scheme? identityref 1065 | | +--rw restoration-reversion-disable? boolean 1066 | | +--rw hold-off-time? uint32 1067 | | +--rw wait-to-restore? uint16 1068 | | +--rw wait-to-revert? uint16 1069 | +--rw te-topology-identifier 1070 | | +--rw provider-id? te-global-id 1071 | | +--rw client-id? te-global-id 1072 | | +--rw topology-id? te-topology-id 1073 | +--rw te-bandwidth 1074 | | +--rw (technology)? 1075 | | +--:(generic) 1076 | | +--rw generic? te-bandwidth 1077 | +--rw link-protection? identityref 1078 | +--rw setup-priority? uint8 1079 | +--rw hold-priority? uint8 1080 | +--rw signaling-type? identityref 1081 | +--rw hierarchy 1082 | | +--rw dependency-tunnels 1083 | | | +--rw dependency-tunnel* [name] 1084 | | | +--rw name 1085 | | | | -> /te/tunnels/tunnel/name 1086 | | | +--rw encoding? identityref 1087 | | | +--rw switching-type? identityref 1088 | | +--rw hierarchical-link 1089 | | +--rw local-te-node-id? te-types:te-node-id 1090 | | +--rw local-te-link-tp-id? te-types:te-tp-id 1091 | | +--rw remote-te-node-id? te-types:te-node-id 1092 | | +--rw te-topology-identifier 1093 | | +--rw provider-id? te-global-id 1094 | | +--rw client-id? te-global-id 1095 | | +--rw topology-id? te-topology-id 1096 | +--rw primary-paths 1097 | | +--rw primary-path* [name] 1098 | | +--rw name string 1099 | | +--rw path-computation-method? identityref 1100 | | +--rw path-computation-server 1101 | | | +--rw id? te-gen-node-id 1102 | | | +--rw type? enumeration 1103 | | +--rw compute-only? empty 1104 | | +--rw use-path-computation? boolean 1105 | | +--rw lockdown? empty 1106 | | +--ro path-scope? identityref 1107 | | +--rw preference? uint8 1108 | | +--rw k-requested-paths? uint8 1109 | | +--rw association-objects 1110 | | | +--rw association-object* [association-key] 1111 | | | | +--rw association-key string 1112 | | | | +--rw type? identityref 1113 | | | | +--rw id? uint16 1114 | | | | +--rw source 1115 | | | | +--rw id? te-gen-node-id 1116 | | | | +--rw type? enumeration 1117 | | | +--rw association-object-extended* 1118 | | | [association-key] 1119 | | | +--rw association-key string 1120 | | | +--rw type? identityref 1121 | | | +--rw id? uint16 1122 | | | +--rw source 1123 | | | | +--rw id? te-gen-node-id 1124 | | | | +--rw type? enumeration 1125 | | | +--rw global-source? uint32 1126 | | | +--rw extended-id? yang:hex-string 1127 | | +--rw optimizations 1128 | | | +--rw (algorithm)? 1129 | | | +--:(metric) {path-optimization-metric}? 1130 | | | | +--rw optimization-metric* [metric-type] 1131 | | | | | +--rw metric-type 1132 | | | | | | identityref 1133 | | | | | +--rw weight? 1134 | | | | | | uint8 1135 | | | | | +--rw explicit-route-exclude-objects 1136 | | | | | | +--rw route-object-exclude-object* 1137 | | | | | | [index] 1138 | | | | | | +--rw index 1139 | | | | | | | uint32 1140 | | | | | | +--rw (type)? 1141 | | | | | | +--:(numbered-node-hop) 1142 | | | | | | | +--rw numbered-node-hop 1143 | | | | | | | +--rw node-id 1144 | | | | | | | | te-node-id 1145 | | | | | | | +--rw hop-type? 1146 | | | | | | | te-hop-type 1147 | | | | | | +--:(numbered-link-hop) 1148 | | | | | | | +--rw numbered-link-hop 1149 | | | | | | | +--rw link-tp-id 1150 | | | | | | | | te-tp-id 1151 | | | | | | | +--rw hop-type? 1152 | | | | | | | | te-hop-type 1153 | | | | | | | +--rw direction? 1154 | | | | | | | te-link-direction 1155 | | | | | | +--:(unnumbered-link-hop) 1156 | | | | | | | +--rw unnumbered-link-hop 1157 | | | | | | | +--rw link-tp-id 1158 | | | | | | | | te-tp-id 1159 | | | | | | | +--rw node-id 1160 | | | | | | | | te-node-id 1161 | | | | | | | +--rw hop-type? 1162 | | | | | | | | te-hop-type 1163 | | | | | | | +--rw direction? 1164 | | | | | | | te-link-direction 1165 | | | | | | +--:(as-number) 1166 | | | | | | | +--rw as-number-hop 1167 | | | | | | | +--rw as-number 1168 | | | | | | | | inet:as-number 1169 | | | | | | | +--rw hop-type? 1170 | | | | | | | te-hop-type 1171 | | | | | | +--:(label) 1172 | | | | | | | +--rw label-hop 1173 | | | | | | | +--rw te-label 1174 | | | | | | | +--rw (technology)? 1175 | | | | | | | | +--:(generic) 1176 | | | | | | | | +--rw generic? 1177 | | | | | | | | rt-types:ge 1178 neralized-label 1179 | | | | | | | +--rw direction? 1180 | | | | | | | te-label-directio 1181 n 1182 | | | | | | +--:(srlg) 1183 | | | | | | +--rw srlg 1184 | | | | | | +--rw srlg? uint32 1185 | | | | | +--rw explicit-route-include-objects 1186 | | | | | +--rw route-object-include-object* 1187 | | | | | [index] 1188 | | | | | +--rw index 1189 | | | | | | uint32 1190 | | | | | +--rw (type)? 1191 | | | | | +--:(numbered-node-hop) 1192 | | | | | | +--rw numbered-node-hop 1193 | | | | | | +--rw node-id 1194 | | | | | | | te-node-id 1195 | | | | | | +--rw hop-type? 1196 | | | | | | te-hop-type 1197 | | | | | +--:(numbered-link-hop) 1198 | | | | | | +--rw numbered-link-hop 1199 | | | | | | +--rw link-tp-id 1200 | | | | | | | te-tp-id 1201 | | | | | | +--rw hop-type? 1202 | | | | | | | te-hop-type 1203 | | | | | | +--rw direction? 1204 | | | | | | te-link-direction 1205 | | | | | +--:(unnumbered-link-hop) 1206 | | | | | | +--rw unnumbered-link-hop 1207 | | | | | | +--rw link-tp-id 1208 | | | | | | | te-tp-id 1209 | | | | | | +--rw node-id 1210 | | | | | | | te-node-id 1211 | | | | | | +--rw hop-type? 1212 | | | | | | | te-hop-type 1213 | | | | | | +--rw direction? 1214 | | | | | | te-link-direction 1215 | | | | | +--:(as-number) 1216 | | | | | | +--rw as-number-hop 1217 | | | | | | +--rw as-number 1218 | | | | | | | inet:as-number 1219 | | | | | | +--rw hop-type? 1220 | | | | | | te-hop-type 1221 | | | | | +--:(label) 1222 | | | | | +--rw label-hop 1223 | | | | | +--rw te-label 1224 | | | | | +--rw (technology)? 1225 | | | | | | +--:(generic) 1226 | | | | | | +--rw generic? 1227 | | | | | | rt-types:ge 1228 neralized-label 1229 | | | | | +--rw direction? 1230 | | | | | te-label-directio 1231 n 1232 | | | | +--rw tiebreakers 1233 | | | | +--rw tiebreaker* [tiebreaker-type] 1234 | | | | +--rw tiebreaker-type identityref 1235 | | | +--:(objective-function) 1236 | | | {path-optimization-objective-function}? 1237 | | | +--rw objective-function 1238 | | | +--rw objective-function-type? 1239 | | | identityref 1240 | | +--rw named-path-constraint? leafref 1241 | | | {te-types:named-path-constraints}? 1242 | | +--rw te-bandwidth 1243 | | | +--rw (technology)? 1244 | | | +--:(generic) 1245 | | | +--rw generic? te-bandwidth 1246 | | +--rw link-protection? identityref 1247 | | +--rw setup-priority? uint8 1248 | | +--rw hold-priority? uint8 1249 | | +--rw signaling-type? identityref 1250 | | +--rw path-metric-bounds 1251 | | | +--rw path-metric-bound* [metric-type] 1252 | | | +--rw metric-type identityref 1253 | | | +--rw upper-bound? uint64 1254 | | +--rw path-affinities-values 1255 | | | +--rw path-affinities-value* [usage] 1256 | | | +--rw usage identityref 1257 | | | +--rw value? admin-groups 1258 | | +--rw path-affinity-names 1259 | | | +--rw path-affinity-name* [usage] 1260 | | | +--rw usage identityref 1261 | | | +--rw affinity-name* [name] 1262 | | | +--rw name string 1263 | | +--rw path-srlgs-lists 1264 | | | +--rw path-srlgs-list* [usage] 1265 | | | +--rw usage identityref 1266 | | | +--rw values* srlg 1267 | | +--rw path-srlgs-names 1268 | | | +--rw path-srlgs-name* [usage] 1269 | | | +--rw usage identityref 1270 | | | +--rw names* string 1271 | | +--rw disjointness? 1272 | | | te-path-disjointness 1273 | | +--rw explicit-route-objects-always 1274 | | | +--rw route-object-exclude-always* [index] 1275 | | | | +--rw index uint32 1276 | | | | +--rw (type)? 1277 | | | | +--:(numbered-node-hop) 1278 | | | | | +--rw numbered-node-hop 1279 | | | | | +--rw node-id te-node-id 1280 | | | | | +--rw hop-type? te-hop-type 1281 | | | | +--:(numbered-link-hop) 1282 | | | | | +--rw numbered-link-hop 1283 | | | | | +--rw link-tp-id te-tp-id 1284 | | | | | +--rw hop-type? te-hop-type 1285 | | | | | +--rw direction? te-link-direction 1286 | | | | +--:(unnumbered-link-hop) 1287 | | | | | +--rw unnumbered-link-hop 1288 | | | | | +--rw link-tp-id te-tp-id 1289 | | | | | +--rw node-id te-node-id 1290 | | | | | +--rw hop-type? te-hop-type 1291 | | | | | +--rw direction? te-link-direction 1292 | | | | +--:(as-number) 1293 | | | | | +--rw as-number-hop 1294 | | | | | +--rw as-number inet:as-number 1295 | | | | | +--rw hop-type? te-hop-type 1296 | | | | +--:(label) 1297 | | | | +--rw label-hop 1298 | | | | +--rw te-label 1299 | | | | +--rw (technology)? 1300 | | | | | +--:(generic) 1301 | | | | | +--rw generic? 1302 | | | | | rt-types:generalized-la 1303 bel 1304 | | | | +--rw direction? 1305 | | | | te-label-direction 1306 | | | +--rw route-object-include-exclude* [index] 1307 | | | +--rw explicit-route-usage? identityref 1308 | | | +--rw index uint32 1309 | | | +--rw (type)? 1310 | | | +--:(numbered-node-hop) 1311 | | | | +--rw numbered-node-hop 1312 | | | | +--rw node-id te-node-id 1313 | | | | +--rw hop-type? te-hop-type 1314 | | | +--:(numbered-link-hop) 1315 | | | | +--rw numbered-link-hop 1316 | | | | +--rw link-tp-id te-tp-id 1317 | | | | +--rw hop-type? te-hop-type 1318 | | | | +--rw direction? te-link-direction 1319 | | | +--:(unnumbered-link-hop) 1320 | | | | +--rw unnumbered-link-hop 1321 | | | | +--rw link-tp-id te-tp-id 1322 | | | | +--rw node-id te-node-id 1323 | | | | +--rw hop-type? te-hop-type 1324 | | | | +--rw direction? te-link-direction 1325 | | | +--:(as-number) 1326 | | | | +--rw as-number-hop 1327 | | | | +--rw as-number inet:as-number 1328 | | | | +--rw hop-type? te-hop-type 1329 | | | +--:(label) 1330 | | | | +--rw label-hop 1331 | | | | +--rw te-label 1332 | | | | +--rw (technology)? 1333 | | | | | +--:(generic) 1334 | | | | | +--rw generic? 1335 | | | | | rt-types:generalized-la 1336 bel 1337 | | | | +--rw direction? 1338 | | | | te-label-direction 1339 | | | +--:(srlg) 1340 | | | +--rw srlg 1341 | | | +--rw srlg? uint32 1342 | | +--rw path-in-segment! 1343 | | | +--rw label-restrictions 1344 | | | +--rw label-restriction* [index] 1345 | | | +--rw restriction? enumeration 1346 | | | +--rw index uint32 1347 | | | +--rw label-start 1348 | | | | +--rw te-label 1349 | | | | +--rw (technology)? 1350 | | | | | +--:(generic) 1351 | | | | | +--rw generic? 1352 | | | | | rt-types:generalized-label 1353 | | | | +--rw direction? 1354 | | | | te-label-direction 1355 | | | +--rw label-end 1356 | | | | +--rw te-label 1357 | | | | +--rw (technology)? 1358 | | | | | +--:(generic) 1359 | | | | | +--rw generic? 1360 | | | | | rt-types:generalized-label 1361 | | | | +--rw direction? 1362 | | | | te-label-direction 1363 | | | +--rw label-step 1364 | | | | +--rw (technology)? 1365 | | | | +--:(generic) 1366 | | | | +--rw generic? int32 1367 | | | +--rw range-bitmap? yang:hex-string 1368 | | +--rw path-out-segment! 1369 | | | +--rw label-restrictions 1370 | | | +--rw label-restriction* [index] 1371 | | | +--rw restriction? enumeration 1372 | | | +--rw index uint32 1373 | | | +--rw label-start 1374 | | | | +--rw te-label 1375 | | | | +--rw (technology)? 1376 | | | | | +--:(generic) 1377 | | | | | +--rw generic? 1378 | | | | | rt-types:generalized-label 1379 | | | | +--rw direction? 1380 | | | | te-label-direction 1381 | | | +--rw label-end 1382 | | | | +--rw te-label 1383 | | | | +--rw (technology)? 1384 | | | | | +--:(generic) 1385 | | | | | +--rw generic? 1386 | | | | | rt-types:generalized-label 1387 | | | | +--rw direction? 1388 | | | | te-label-direction 1389 | | | +--rw label-step 1390 | | | | +--rw (technology)? 1391 | | | | +--:(generic) 1392 | | | | +--rw generic? int32 1393 | | | +--rw range-bitmap? yang:hex-string 1394 | | +--ro computed-paths-properties 1395 | | | +--ro computed-path-properties* [k-index] 1396 | | | +--ro k-index uint8 1397 | | | +--ro path-properties 1398 | | | +--ro path-metric* [metric-type] 1399 | | | | +--ro metric-type identityref 1400 | | | | +--ro accumulative-value? uint64 1401 | | | +--ro path-affinities-values 1402 | | | | +--ro path-affinities-value* [usage] 1403 | | | | +--ro usage identityref 1404 | | | | +--ro value? admin-groups 1405 | | | +--ro path-affinity-names 1406 | | | | +--ro path-affinity-name* [usage] 1407 | | | | +--ro usage identityref 1408 | | | | +--ro affinity-name* [name] 1409 | | | | +--ro name string 1410 | | | +--ro path-srlgs-lists 1411 | | | | +--ro path-srlgs-list* [usage] 1412 | | | | +--ro usage identityref 1413 | | | | +--ro values* srlg 1414 | | | +--ro path-srlgs-names 1415 | | | | +--ro path-srlgs-name* [usage] 1416 | | | | +--ro usage identityref 1417 | | | | +--ro names* string 1418 | | | +--ro path-route-objects 1419 | | | | +--ro path-route-object* [index] 1420 | | | | +--ro index 1421 | | | | | uint32 1422 | | | | +--ro (type)? 1423 | | | | +--:(numbered-node-hop) 1424 | | | | | +--ro numbered-node-hop 1425 | | | | | +--ro node-id te-node-id 1426 | | | | | +--ro hop-type? 1427 | | | | | te-hop-type 1428 | | | | +--:(numbered-link-hop) 1429 | | | | | +--ro numbered-link-hop 1430 | | | | | +--ro link-tp-id te-tp-id 1431 | | | | | +--ro hop-type? 1432 | | | | | | te-hop-type 1433 | | | | | +--ro direction? 1434 | | | | | te-link-direction 1435 | | | | +--:(unnumbered-link-hop) 1436 | | | | | +--ro unnumbered-link-hop 1437 | | | | | +--ro link-tp-id te-tp-id 1438 | | | | | +--ro node-id 1439 | | | | | | te-node-id 1440 | | | | | +--ro hop-type? 1441 | | | | | | te-hop-type 1442 | | | | | +--ro direction? 1443 | | | | | te-link-direction 1444 | | | | +--:(as-number) 1445 | | | | | +--ro as-number-hop 1446 | | | | | +--ro as-number 1447 | | | | | | inet:as-number 1448 | | | | | +--ro hop-type? 1449 | | | | | te-hop-type 1450 | | | | +--:(label) 1451 | | | | +--ro label-hop 1452 | | | | +--ro te-label 1453 | | | | +--ro (technology)? 1454 | | | | | +--:(generic) 1455 | | | | | +--ro generic? 1456 | | | | | rt-types:gener 1457 alized-label 1458 | | | | +--ro direction? 1459 | | | | te-label-direction 1460 | | | +--ro te-bandwidth 1461 | | | | +--ro (technology)? 1462 | | | | +--:(generic) 1463 | | | | +--ro generic? te-bandwidth 1464 | | | +--ro disjointness-type? 1465 | | | te-types:te-path-disjointness 1466 | | +--ro computed-path-error-infos 1467 | | | +--ro computed-path-error-info* [] 1468 | | | +--ro error-description? string 1469 | | | +--ro error-timestamp? yang:date-and-time 1470 | | | +--ro error-reason? identityref 1471 | | +--ro lsp-provisioning-error-infos 1472 | | | +--ro lsp-provisioning-error-info* [] 1473 | | | +--ro error-description? string 1474 | | | +--ro error-timestamp? yang:date-and-time 1475 | | | +--ro error-node-id? te-types:te-node-id 1476 | | | +--ro error-link-id? te-types:te-tp-id 1477 | | | +--ro lsp-id? uint16 1478 | | +--ro lsps 1479 | | | +--ro lsp* [node lsp-id] 1480 | | | +--ro tunnel-name? 1481 | | | | -> /te/lsps/lsp/tunnel-name 1482 | | | +--ro node -> /te/lsps/lsp/node 1483 | | | +--ro lsp-id -> /te/lsps/lsp/lsp-id 1484 | | +--rw primary-reverse-path 1485 | | | +--rw name? string 1486 | | | +--rw path-computation-method? 1487 | | | | identityref 1488 | | | +--rw path-computation-server 1489 | | | | +--rw id? te-gen-node-id 1490 | | | | +--rw type? enumeration 1491 | | | +--rw compute-only? empty 1492 | | | +--rw use-path-computation? 1493 | | | | boolean 1494 | | | +--rw lockdown? empty 1495 | | | +--ro path-scope? 1496 | | | | identityref 1497 | | | +--rw association-objects 1498 | | | | +--rw association-object* [association-key] 1499 | | | | | +--rw association-key string 1500 | | | | | +--rw type? identityref 1501 | | | | | +--rw id? uint16 1502 | | | | | +--rw source 1503 | | | | | +--rw id? te-gen-node-id 1504 | | | | | +--rw type? enumeration 1505 | | | | +--rw association-object-extended* 1506 | | | | [association-key] 1507 | | | | +--rw association-key string 1508 | | | | +--rw type? identityref 1509 | | | | +--rw id? uint16 1510 | | | | +--rw source 1511 | | | | | +--rw id? te-gen-node-id 1512 | | | | | +--rw type? enumeration 1513 | | | | +--rw global-source? uint32 1514 | | | | +--rw extended-id? yang:hex-string 1515 | | | +--rw optimizations 1516 | | | | +--rw (algorithm)? 1517 | | | | +--:(metric) {path-optimization-metric}? 1518 | | | | | +--rw optimization-metric* [metric-type] 1519 | | | | | | +--rw metric-type 1520 | | | | | | | identityref 1521 | | | | | | +--rw weight? 1522 | | | | | | | uint8 1523 | | | | | | +--rw explicit-route-exclude-objects 1524 | | | | | | | +--rw route-object-exclude-object* 1525 | | | | | | | [index] 1526 | | | | | | | +--rw index 1527 | | | | | | | | uint32 1528 | | | | | | | +--rw (type)? 1529 | | | | | | | +--:(numbered-node-hop) 1530 | | | | | | | | +--rw numbered-node-hop 1531 | | | | | | | | +--rw node-id 1532 | | | | | | | | | te-node-id 1533 | | | | | | | | +--rw hop-type? 1534 | | | | | | | | te-hop-type 1535 | | | | | | | +--:(numbered-link-hop) 1536 | | | | | | | | +--rw numbered-link-hop 1537 | | | | | | | | +--rw link-tp-id 1538 | | | | | | | | | te-tp-id 1539 | | | | | | | | +--rw hop-type? 1540 | | | | | | | | | te-hop-type 1541 | | | | | | | | +--rw direction? 1542 | | | | | | | | te-link-direction 1543 | | | | | | | +--:(unnumbered-link-hop) 1544 | | | | | | | | +--rw unnumbered-link-hop 1545 | | | | | | | | +--rw link-tp-id 1546 | | | | | | | | | te-tp-id 1547 | | | | | | | | +--rw node-id 1548 | | | | | | | | | te-node-id 1549 | | | | | | | | +--rw hop-type? 1550 | | | | | | | | | te-hop-type 1551 | | | | | | | | +--rw direction? 1552 | | | | | | | | te-link-direction 1553 | | | | | | | +--:(as-number) 1554 | | | | | | | | +--rw as-number-hop 1555 | | | | | | | | +--rw as-number 1556 | | | | | | | | | inet:as-number 1557 | | | | | | | | +--rw hop-type? 1558 | | | | | | | | te-hop-type 1559 | | | | | | | +--:(label) 1560 | | | | | | | | +--rw label-hop 1561 | | | | | | | | +--rw te-label 1562 | | | | | | | | +--rw (technology)? 1563 | | | | | | | | | +--:(generic) 1564 | | | | | | | | | +--rw generic? 1565 | | | | | | | | | rt-types 1566 :generalized-label 1567 | | | | | | | | +--rw direction? 1568 | | | | | | | | te-label-direc 1570 tion 1571 | | | | | | | +--:(srlg) 1572 | | | | | | | +--rw srlg 1573 | | | | | | | +--rw srlg? uint32 1574 | | | | | | +--rw explicit-route-include-objects 1575 | | | | | | +--rw route-object-include-object* 1576 | | | | | | [index] 1577 | | | | | | +--rw index 1578 | | | | | | | uint32 1579 | | | | | | +--rw (type)? 1580 | | | | | | +--:(numbered-node-hop) 1581 | | | | | | | +--rw numbered-node-hop 1582 | | | | | | | +--rw node-id 1583 | | | | | | | | te-node-id 1584 | | | | | | | +--rw hop-type? 1585 | | | | | | | te-hop-type 1586 | | | | | | +--:(numbered-link-hop) 1587 | | | | | | | +--rw numbered-link-hop 1588 | | | | | | | +--rw link-tp-id 1589 | | | | | | | | te-tp-id 1590 | | | | | | | +--rw hop-type? 1591 | | | | | | | | te-hop-type 1592 | | | | | | | +--rw direction? 1593 | | | | | | | te-link-direction 1594 | | | | | | +--:(unnumbered-link-hop) 1595 | | | | | | | +--rw unnumbered-link-hop 1596 | | | | | | | +--rw link-tp-id 1597 | | | | | | | | te-tp-id 1598 | | | | | | | +--rw node-id 1599 | | | | | | | | te-node-id 1600 | | | | | | | +--rw hop-type? 1601 | | | | | | | | te-hop-type 1602 | | | | | | | +--rw direction? 1603 | | | | | | | te-link-direction 1604 | | | | | | +--:(as-number) 1605 | | | | | | | +--rw as-number-hop 1606 | | | | | | | +--rw as-number 1607 | | | | | | | | inet:as-number 1608 | | | | | | | +--rw hop-type? 1609 | | | | | | | te-hop-type 1610 | | | | | | +--:(label) 1611 | | | | | | +--rw label-hop 1612 | | | | | | +--rw te-label 1613 | | | | | | +--rw (technology)? 1614 | | | | | | | +--:(generic) 1615 | | | | | | | +--rw generic? 1616 | | | | | | | rt-types 1617 :generalized-label 1618 | | | | | | +--rw direction? 1619 | | | | | | te-label-direc 1620 tion 1621 | | | | | +--rw tiebreakers 1622 | | | | | +--rw tiebreaker* [tiebreaker-type] 1623 | | | | | +--rw tiebreaker-type 1624 | | | | | identityref 1625 | | | | +--:(objective-function) 1626 | | | | {path-optimization-objective-function 1627 }? 1628 | | | | +--rw objective-function 1629 | | | | +--rw objective-function-type? 1630 | | | | identityref 1631 | | | +--rw named-path-constraint? leafref 1632 | | | | {te-types:named-path-constraints}? 1633 | | | +--rw te-bandwidth 1634 | | | | +--rw (technology)? 1635 | | | | +--:(generic) 1636 | | | | +--rw generic? te-bandwidth 1637 | | | +--rw link-protection? 1638 | | | | identityref 1639 | | | +--rw setup-priority? uint8 1640 | | | +--rw hold-priority? uint8 1641 | | | +--rw signaling-type? 1642 | | | | identityref 1643 | | | +--rw path-metric-bounds 1644 | | | | +--rw path-metric-bound* [metric-type] 1645 | | | | +--rw metric-type identityref 1646 | | | | +--rw upper-bound? uint64 1647 | | | +--rw path-affinities-values 1648 | | | | +--rw path-affinities-value* [usage] 1649 | | | | +--rw usage identityref 1650 | | | | +--rw value? admin-groups 1651 | | | +--rw path-affinity-names 1652 | | | | +--rw path-affinity-name* [usage] 1653 | | | | +--rw usage identityref 1654 | | | | +--rw affinity-name* [name] 1655 | | | | +--rw name string 1656 | | | +--rw path-srlgs-lists 1657 | | | | +--rw path-srlgs-list* [usage] 1658 | | | | +--rw usage identityref 1659 | | | | +--rw values* srlg 1660 | | | +--rw path-srlgs-names 1661 | | | | +--rw path-srlgs-name* [usage] 1662 | | | | +--rw usage identityref 1663 | | | | +--rw names* string 1664 | | | +--rw disjointness? 1665 | | | | te-path-disjointness 1666 | | | +--rw explicit-route-objects-always 1667 | | | | +--rw route-object-exclude-always* [index] 1668 | | | | | +--rw index uint32 1669 | | | | | +--rw (type)? 1670 | | | | | +--:(numbered-node-hop) 1671 | | | | | | +--rw numbered-node-hop 1672 | | | | | | +--rw node-id te-node-id 1673 | | | | | | +--rw hop-type? te-hop-type 1674 | | | | | +--:(numbered-link-hop) 1675 | | | | | | +--rw numbered-link-hop 1676 | | | | | | +--rw link-tp-id te-tp-id 1677 | | | | | | +--rw hop-type? te-hop-type 1678 | | | | | | +--rw direction? 1679 | | | | | | te-link-direction 1680 | | | | | +--:(unnumbered-link-hop) 1681 | | | | | | +--rw unnumbered-link-hop 1682 | | | | | | +--rw link-tp-id te-tp-id 1683 | | | | | | +--rw node-id te-node-id 1684 | | | | | | +--rw hop-type? te-hop-type 1685 | | | | | | +--rw direction? 1686 | | | | | | te-link-direction 1687 | | | | | +--:(as-number) 1688 | | | | | | +--rw as-number-hop 1689 | | | | | | +--rw as-number inet:as-number 1690 | | | | | | +--rw hop-type? te-hop-type 1691 | | | | | +--:(label) 1692 | | | | | +--rw label-hop 1693 | | | | | +--rw te-label 1694 | | | | | +--rw (technology)? 1695 | | | | | | +--:(generic) 1696 | | | | | | +--rw generic? 1697 | | | | | | rt-types:generalized 1698 -label 1699 | | | | | +--rw direction? 1700 | | | | | te-label-direction 1701 | | | | +--rw route-object-include-exclude* [index] 1702 | | | | +--rw explicit-route-usage? 1703 | | | | | identityref 1704 | | | | +--rw index uint32 1705 | | | | +--rw (type)? 1706 | | | | +--:(numbered-node-hop) 1707 | | | | | +--rw numbered-node-hop 1708 | | | | | +--rw node-id te-node-id 1709 | | | | | +--rw hop-type? te-hop-type 1710 | | | | +--:(numbered-link-hop) 1711 | | | | | +--rw numbered-link-hop 1712 | | | | | +--rw link-tp-id te-tp-id 1713 | | | | | +--rw hop-type? te-hop-type 1714 | | | | | +--rw direction? 1715 | | | | | te-link-direction 1716 | | | | +--:(unnumbered-link-hop) 1717 | | | | | +--rw unnumbered-link-hop 1718 | | | | | +--rw link-tp-id te-tp-id 1719 | | | | | +--rw node-id te-node-id 1720 | | | | | +--rw hop-type? te-hop-type 1721 | | | | | +--rw direction? 1722 | | | | | te-link-direction 1723 | | | | +--:(as-number) 1724 | | | | | +--rw as-number-hop 1725 | | | | | +--rw as-number inet:as-number 1726 | | | | | +--rw hop-type? te-hop-type 1727 | | | | +--:(label) 1728 | | | | | +--rw label-hop 1729 | | | | | +--rw te-label 1730 | | | | | +--rw (technology)? 1731 | | | | | | +--:(generic) 1732 | | | | | | +--rw generic? 1733 | | | | | | rt-types:generalized 1734 -label 1735 | | | | | +--rw direction? 1736 | | | | | te-label-direction 1737 | | | | +--:(srlg) 1738 | | | | +--rw srlg 1739 | | | | +--rw srlg? uint32 1740 | | | +--rw path-in-segment! 1741 | | | | +--rw label-restrictions 1742 | | | | +--rw label-restriction* [index] 1743 | | | | +--rw restriction? enumeration 1744 | | | | +--rw index uint32 1745 | | | | +--rw label-start 1746 | | | | | +--rw te-label 1747 | | | | | +--rw (technology)? 1748 | | | | | | +--:(generic) 1749 | | | | | | +--rw generic? 1750 | | | | | | rt-types:generalized-la 1751 bel 1752 | | | | | +--rw direction? 1753 | | | | | te-label-direction 1754 | | | | +--rw label-end 1755 | | | | | +--rw te-label 1756 | | | | | +--rw (technology)? 1757 | | | | | | +--:(generic) 1758 | | | | | | +--rw generic? 1759 | | | | | | rt-types:generalized-la 1760 bel 1761 | | | | | +--rw direction? 1762 | | | | | te-label-direction 1763 | | | | +--rw label-step 1764 | | | | | +--rw (technology)? 1765 | | | | | +--:(generic) 1766 | | | | | +--rw generic? int32 1767 | | | | +--rw range-bitmap? yang:hex-string 1768 | | | +--rw path-out-segment! 1769 | | | | +--rw label-restrictions 1770 | | | | +--rw label-restriction* [index] 1771 | | | | +--rw restriction? enumeration 1772 | | | | +--rw index uint32 1773 | | | | +--rw label-start 1774 | | | | | +--rw te-label 1775 | | | | | +--rw (technology)? 1776 | | | | | | +--:(generic) 1777 | | | | | | +--rw generic? 1778 | | | | | | rt-types:generalized-la 1779 bel 1780 | | | | | +--rw direction? 1781 | | | | | te-label-direction 1782 | | | | +--rw label-end 1783 | | | | | +--rw te-label 1784 | | | | | +--rw (technology)? 1785 | | | | | | +--:(generic) 1786 | | | | | | +--rw generic? 1787 | | | | | | rt-types:generalized-la 1788 bel 1789 | | | | | +--rw direction? 1790 | | | | | te-label-direction 1791 | | | | +--rw label-step 1792 | | | | | +--rw (technology)? 1793 | | | | | +--:(generic) 1794 | | | | | +--rw generic? int32 1795 | | | | +--rw range-bitmap? yang:hex-string 1796 | | | +--ro computed-paths-properties 1797 | | | | +--ro computed-path-properties* [k-index] 1798 | | | | +--ro k-index uint8 1799 | | | | +--ro path-properties 1800 | | | | +--ro path-metric* [metric-type] 1801 | | | | | +--ro metric-type 1802 | | | | | | identityref 1803 | | | | | +--ro accumulative-value? uint64 1804 | | | | +--ro path-affinities-values 1805 | | | | | +--ro path-affinities-value* [usage] 1806 | | | | | +--ro usage identityref 1807 | | | | | +--ro value? admin-groups 1808 | | | | +--ro path-affinity-names 1809 | | | | | +--ro path-affinity-name* [usage] 1810 | | | | | +--ro usage identityref 1811 | | | | | +--ro affinity-name* [name] 1812 | | | | | +--ro name string 1813 | | | | +--ro path-srlgs-lists 1814 | | | | | +--ro path-srlgs-list* [usage] 1815 | | | | | +--ro usage identityref 1816 | | | | | +--ro values* srlg 1817 | | | | +--ro path-srlgs-names 1818 | | | | | +--ro path-srlgs-name* [usage] 1819 | | | | | +--ro usage identityref 1820 | | | | | +--ro names* string 1821 | | | | +--ro path-route-objects 1822 | | | | | +--ro path-route-object* [index] 1823 | | | | | +--ro index 1824 | | | | | | uint32 1825 | | | | | +--ro (type)? 1826 | | | | | +--:(numbered-node-hop) 1827 | | | | | | +--ro numbered-node-hop 1828 | | | | | | +--ro node-id 1829 | | | | | | | te-node-id 1830 | | | | | | +--ro hop-type? 1831 | | | | | | te-hop-type 1832 | | | | | +--:(numbered-link-hop) 1833 | | | | | | +--ro numbered-link-hop 1834 | | | | | | +--ro link-tp-id 1835 | | | | | | | te-tp-id 1836 | | | | | | +--ro hop-type? 1837 | | | | | | | te-hop-type 1838 | | | | | | +--ro direction? 1839 | | | | | | te-link-direction 1840 | | | | | +--:(unnumbered-link-hop) 1841 | | | | | | +--ro unnumbered-link-hop 1842 | | | | | | +--ro link-tp-id 1843 | | | | | | | te-tp-id 1844 | | | | | | +--ro node-id 1845 | | | | | | | te-node-id 1846 | | | | | | +--ro hop-type? 1847 | | | | | | | te-hop-type 1848 | | | | | | +--ro direction? 1849 | | | | | | te-link-direction 1850 | | | | | +--:(as-number) 1851 | | | | | | +--ro as-number-hop 1852 | | | | | | +--ro as-number 1853 | | | | | | | inet:as-number 1854 | | | | | | +--ro hop-type? 1855 | | | | | | te-hop-type 1856 | | | | | +--:(label) 1857 | | | | | +--ro label-hop 1858 | | | | | +--ro te-label 1859 | | | | | +--ro (technology)? 1860 | | | | | | +--:(generic) 1861 | | | | | | +--ro generic? 1862 | | | | | | rt-types:ge 1863 neralized-label 1864 | | | | | +--ro direction? 1865 | | | | | te-label-directio 1866 n 1867 | | | | +--ro te-bandwidth 1868 | | | | | +--ro (technology)? 1869 | | | | | +--:(generic) 1870 | | | | | +--ro generic? te-bandwidth 1871 | | | | +--ro disjointness-type? 1872 | | | | te-types:te-path-disjointness 1873 | | | +--ro computed-path-error-infos 1874 | | | | +--ro computed-path-error-info* [] 1875 | | | | +--ro error-description? string 1876 | | | | +--ro error-timestamp? 1877 | | | | | yang:date-and-time 1878 | | | | +--ro error-reason? identityref 1879 | | | +--ro lsp-provisioning-error-infos 1880 | | | | +--ro lsp-provisioning-error-info* [] 1881 | | | | +--ro error-description? string 1882 | | | | +--ro error-timestamp? 1883 | | | | | yang:date-and-time 1884 | | | | +--ro error-node-id? 1885 | | | | | te-types:te-node-id 1886 | | | | +--ro error-link-id? 1887 | | | | | te-types:te-tp-id 1888 | | | | +--ro lsp-id? uint16 1889 | | | +--ro lsps 1890 | | | | +--ro lsp* [node lsp-id] 1891 | | | | +--ro tunnel-name? 1892 | | | | | -> /te/lsps/lsp/tunnel-name 1893 | | | | +--ro node -> /te/lsps/lsp/node 1894 | | | | +--ro lsp-id -> /te/lsps/lsp/lsp-id 1895 | | | +--rw candidate-secondary-reverse-paths 1896 | | | +--rw candidate-secondary-reverse-path* 1897 | | | [secondary-path] 1898 | | | +--rw secondary-path leafref 1899 | | +--rw candidate-secondary-paths 1900 | | +--rw candidate-secondary-path* [secondary-path] 1901 | | +--rw secondary-path leafref 1902 | | +--ro active? boolean 1903 | +--rw secondary-paths 1904 | | +--rw secondary-path* [name] 1905 | | +--rw name string 1906 | | +--rw path-computation-method? identityref 1907 | | +--rw path-computation-server 1908 | | | +--rw id? te-gen-node-id 1909 | | | +--rw type? enumeration 1910 | | +--rw compute-only? empty 1911 | | +--rw use-path-computation? boolean 1912 | | +--rw lockdown? empty 1913 | | +--ro path-scope? identityref 1914 | | +--rw preference? uint8 1915 | | +--rw association-objects 1916 | | | +--rw association-object* [association-key] 1917 | | | | +--rw association-key string 1918 | | | | +--rw type? identityref 1919 | | | | +--rw id? uint16 1920 | | | | +--rw source 1921 | | | | +--rw id? te-gen-node-id 1922 | | | | +--rw type? enumeration 1923 | | | +--rw association-object-extended* 1924 | | | [association-key] 1925 | | | +--rw association-key string 1926 | | | +--rw type? identityref 1927 | | | +--rw id? uint16 1928 | | | +--rw source 1929 | | | | +--rw id? te-gen-node-id 1930 | | | | +--rw type? enumeration 1931 | | | +--rw global-source? uint32 1932 | | | +--rw extended-id? yang:hex-string 1933 | | +--rw optimizations 1934 | | | +--rw (algorithm)? 1935 | | | +--:(metric) {path-optimization-metric}? 1936 | | | | +--rw optimization-metric* [metric-type] 1937 | | | | | +--rw metric-type 1938 | | | | | | identityref 1939 | | | | | +--rw weight? 1940 | | | | | | uint8 1941 | | | | | +--rw explicit-route-exclude-objects 1942 | | | | | | +--rw route-object-exclude-object* 1943 | | | | | | [index] 1944 | | | | | | +--rw index 1945 | | | | | | | uint32 1946 | | | | | | +--rw (type)? 1947 | | | | | | +--:(numbered-node-hop) 1948 | | | | | | | +--rw numbered-node-hop 1949 | | | | | | | +--rw node-id 1950 | | | | | | | | te-node-id 1951 | | | | | | | +--rw hop-type? 1952 | | | | | | | te-hop-type 1953 | | | | | | +--:(numbered-link-hop) 1954 | | | | | | | +--rw numbered-link-hop 1955 | | | | | | | +--rw link-tp-id 1956 | | | | | | | | te-tp-id 1957 | | | | | | | +--rw hop-type? 1958 | | | | | | | | te-hop-type 1959 | | | | | | | +--rw direction? 1960 | | | | | | | te-link-direction 1961 | | | | | | +--:(unnumbered-link-hop) 1962 | | | | | | | +--rw unnumbered-link-hop 1963 | | | | | | | +--rw link-tp-id 1964 | | | | | | | | te-tp-id 1965 | | | | | | | +--rw node-id 1966 | | | | | | | | te-node-id 1967 | | | | | | | +--rw hop-type? 1968 | | | | | | | | te-hop-type 1969 | | | | | | | +--rw direction? 1970 | | | | | | | te-link-direction 1971 | | | | | | +--:(as-number) 1972 | | | | | | | +--rw as-number-hop 1973 | | | | | | | +--rw as-number 1974 | | | | | | | | inet:as-number 1975 | | | | | | | +--rw hop-type? 1976 | | | | | | | te-hop-type 1977 | | | | | | +--:(label) 1978 | | | | | | | +--rw label-hop 1979 | | | | | | | +--rw te-label 1980 | | | | | | | +--rw (technology)? 1981 | | | | | | | | +--:(generic) 1982 | | | | | | | | +--rw generic? 1983 | | | | | | | | rt-types:ge 1984 neralized-label 1985 | | | | | | | +--rw direction? 1986 | | | | | | | te-label-directio 1987 n 1988 | | | | | | +--:(srlg) 1989 | | | | | | +--rw srlg 1990 | | | | | | +--rw srlg? uint32 1991 | | | | | +--rw explicit-route-include-objects 1992 | | | | | +--rw route-object-include-object* 1993 | | | | | [index] 1994 | | | | | +--rw index 1995 | | | | | | uint32 1996 | | | | | +--rw (type)? 1997 | | | | | +--:(numbered-node-hop) 1998 | | | | | | +--rw numbered-node-hop 1999 | | | | | | +--rw node-id 2000 | | | | | | | te-node-id 2001 | | | | | | +--rw hop-type? 2002 | | | | | | te-hop-type 2003 | | | | | +--:(numbered-link-hop) 2004 | | | | | | +--rw numbered-link-hop 2005 | | | | | | +--rw link-tp-id 2006 | | | | | | | te-tp-id 2007 | | | | | | +--rw hop-type? 2008 | | | | | | | te-hop-type 2009 | | | | | | +--rw direction? 2010 | | | | | | te-link-direction 2011 | | | | | +--:(unnumbered-link-hop) 2012 | | | | | | +--rw unnumbered-link-hop 2013 | | | | | | +--rw link-tp-id 2014 | | | | | | | te-tp-id 2015 | | | | | | +--rw node-id 2016 | | | | | | | te-node-id 2017 | | | | | | +--rw hop-type? 2018 | | | | | | | te-hop-type 2019 | | | | | | +--rw direction? 2020 | | | | | | te-link-direction 2021 | | | | | +--:(as-number) 2022 | | | | | | +--rw as-number-hop 2023 | | | | | | +--rw as-number 2024 | | | | | | | inet:as-number 2025 | | | | | | +--rw hop-type? 2026 | | | | | | te-hop-type 2027 | | | | | +--:(label) 2028 | | | | | +--rw label-hop 2029 | | | | | +--rw te-label 2030 | | | | | +--rw (technology)? 2031 | | | | | | +--:(generic) 2032 | | | | | | +--rw generic? 2033 | | | | | | rt-types:ge 2034 neralized-label 2035 | | | | | +--rw direction? 2036 | | | | | te-label-directio 2037 n 2038 | | | | +--rw tiebreakers 2039 | | | | +--rw tiebreaker* [tiebreaker-type] 2040 | | | | +--rw tiebreaker-type identityref 2041 | | | +--:(objective-function) 2042 | | | {path-optimization-objective-function}? 2043 | | | +--rw objective-function 2044 | | | +--rw objective-function-type? 2045 | | | identityref 2046 | | +--rw named-path-constraint? leafref 2047 | | | {te-types:named-path-constraints}? 2048 | | +--rw te-bandwidth 2049 | | | +--rw (technology)? 2050 | | | +--:(generic) 2051 | | | +--rw generic? te-bandwidth 2052 | | +--rw link-protection? identityref 2053 | | +--rw setup-priority? uint8 2054 | | +--rw hold-priority? uint8 2055 | | +--rw signaling-type? identityref 2056 | | +--rw path-metric-bounds 2057 | | | +--rw path-metric-bound* [metric-type] 2058 | | | +--rw metric-type identityref 2059 | | | +--rw upper-bound? uint64 2060 | | +--rw path-affinities-values 2061 | | | +--rw path-affinities-value* [usage] 2062 | | | +--rw usage identityref 2063 | | | +--rw value? admin-groups 2064 | | +--rw path-affinity-names 2065 | | | +--rw path-affinity-name* [usage] 2066 | | | +--rw usage identityref 2067 | | | +--rw affinity-name* [name] 2068 | | | +--rw name string 2069 | | +--rw path-srlgs-lists 2070 | | | +--rw path-srlgs-list* [usage] 2071 | | | +--rw usage identityref 2072 | | | +--rw values* srlg 2073 | | +--rw path-srlgs-names 2074 | | | +--rw path-srlgs-name* [usage] 2075 | | | +--rw usage identityref 2076 | | | +--rw names* string 2077 | | +--rw disjointness? 2078 | | | te-path-disjointness 2079 | | +--rw explicit-route-objects-always 2080 | | | +--rw route-object-exclude-always* [index] 2081 | | | | +--rw index uint32 2082 | | | | +--rw (type)? 2083 | | | | +--:(numbered-node-hop) 2084 | | | | | +--rw numbered-node-hop 2085 | | | | | +--rw node-id te-node-id 2086 | | | | | +--rw hop-type? te-hop-type 2087 | | | | +--:(numbered-link-hop) 2088 | | | | | +--rw numbered-link-hop 2089 | | | | | +--rw link-tp-id te-tp-id 2090 | | | | | +--rw hop-type? te-hop-type 2091 | | | | | +--rw direction? te-link-direction 2092 | | | | +--:(unnumbered-link-hop) 2093 | | | | | +--rw unnumbered-link-hop 2094 | | | | | +--rw link-tp-id te-tp-id 2095 | | | | | +--rw node-id te-node-id 2096 | | | | | +--rw hop-type? te-hop-type 2097 | | | | | +--rw direction? te-link-direction 2098 | | | | +--:(as-number) 2099 | | | | | +--rw as-number-hop 2100 | | | | | +--rw as-number inet:as-number 2101 | | | | | +--rw hop-type? te-hop-type 2102 | | | | +--:(label) 2103 | | | | +--rw label-hop 2104 | | | | +--rw te-label 2105 | | | | +--rw (technology)? 2106 | | | | | +--:(generic) 2107 | | | | | +--rw generic? 2108 | | | | | rt-types:generalized-la 2109 bel 2110 | | | | +--rw direction? 2111 | | | | te-label-direction 2112 | | | +--rw route-object-include-exclude* [index] 2113 | | | +--rw explicit-route-usage? identityref 2114 | | | +--rw index uint32 2115 | | | +--rw (type)? 2116 | | | +--:(numbered-node-hop) 2117 | | | | +--rw numbered-node-hop 2118 | | | | +--rw node-id te-node-id 2119 | | | | +--rw hop-type? te-hop-type 2120 | | | +--:(numbered-link-hop) 2121 | | | | +--rw numbered-link-hop 2122 | | | | +--rw link-tp-id te-tp-id 2123 | | | | +--rw hop-type? te-hop-type 2124 | | | | +--rw direction? te-link-direction 2125 | | | +--:(unnumbered-link-hop) 2126 | | | | +--rw unnumbered-link-hop 2127 | | | | +--rw link-tp-id te-tp-id 2128 | | | | +--rw node-id te-node-id 2129 | | | | +--rw hop-type? te-hop-type 2130 | | | | +--rw direction? te-link-direction 2131 | | | +--:(as-number) 2132 | | | | +--rw as-number-hop 2133 | | | | +--rw as-number inet:as-number 2134 | | | | +--rw hop-type? te-hop-type 2135 | | | +--:(label) 2136 | | | | +--rw label-hop 2137 | | | | +--rw te-label 2138 | | | | +--rw (technology)? 2139 | | | | | +--:(generic) 2140 | | | | | +--rw generic? 2141 | | | | | rt-types:generalized-la 2142 bel 2143 | | | | +--rw direction? 2144 | | | | te-label-direction 2145 | | | +--:(srlg) 2146 | | | +--rw srlg 2147 | | | +--rw srlg? uint32 2148 | | +--rw path-in-segment! 2149 | | | +--rw label-restrictions 2150 | | | +--rw label-restriction* [index] 2151 | | | +--rw restriction? enumeration 2152 | | | +--rw index uint32 2153 | | | +--rw label-start 2154 | | | | +--rw te-label 2155 | | | | +--rw (technology)? 2156 | | | | | +--:(generic) 2157 | | | | | +--rw generic? 2158 | | | | | rt-types:generalized-label 2159 | | | | +--rw direction? 2160 | | | | te-label-direction 2161 | | | +--rw label-end 2162 | | | | +--rw te-label 2163 | | | | +--rw (technology)? 2164 | | | | | +--:(generic) 2165 | | | | | +--rw generic? 2166 | | | | | rt-types:generalized-label 2167 | | | | +--rw direction? 2168 | | | | te-label-direction 2169 | | | +--rw label-step 2170 | | | | +--rw (technology)? 2171 | | | | +--:(generic) 2172 | | | | +--rw generic? int32 2173 | | | +--rw range-bitmap? yang:hex-string 2174 | | +--rw path-out-segment! 2175 | | | +--rw label-restrictions 2176 | | | +--rw label-restriction* [index] 2177 | | | +--rw restriction? enumeration 2178 | | | +--rw index uint32 2179 | | | +--rw label-start 2180 | | | | +--rw te-label 2181 | | | | +--rw (technology)? 2182 | | | | | +--:(generic) 2183 | | | | | +--rw generic? 2184 | | | | | rt-types:generalized-label 2185 | | | | +--rw direction? 2186 | | | | te-label-direction 2187 | | | +--rw label-end 2188 | | | | +--rw te-label 2189 | | | | +--rw (technology)? 2190 | | | | | +--:(generic) 2191 | | | | | +--rw generic? 2192 | | | | | rt-types:generalized-label 2193 | | | | +--rw direction? 2194 | | | | te-label-direction 2195 | | | +--rw label-step 2196 | | | | +--rw (technology)? 2197 | | | | +--:(generic) 2198 | | | | +--rw generic? int32 2199 | | | +--rw range-bitmap? yang:hex-string 2200 | | +--rw protection 2201 | | | +--rw enable? boolean 2202 | | | +--rw protection-type? identityref 2203 | | | +--rw protection-reversion-disable? boolean 2204 | | | +--rw hold-off-time? uint32 2205 | | | +--rw wait-to-revert? uint16 2206 | | | +--rw aps-signal-id? uint8 2207 | | +--rw restoration 2208 | | | +--rw enable? boolean 2209 | | | +--rw restoration-type? 2210 | | | | identityref 2211 | | | +--rw restoration-scheme? 2212 | | | | identityref 2213 | | | +--rw restoration-reversion-disable? boolean 2214 | | | +--rw hold-off-time? uint32 2215 | | | +--rw wait-to-restore? uint16 2216 | | | +--rw wait-to-revert? uint16 2217 | | +--ro computed-paths-properties 2218 | | | +--ro computed-path-properties* [k-index] 2219 | | | +--ro k-index uint8 2220 | | | +--ro path-properties 2221 | | | +--ro path-metric* [metric-type] 2222 | | | | +--ro metric-type identityref 2223 | | | | +--ro accumulative-value? uint64 2224 | | | +--ro path-affinities-values 2225 | | | | +--ro path-affinities-value* [usage] 2226 | | | | +--ro usage identityref 2227 | | | | +--ro value? admin-groups 2228 | | | +--ro path-affinity-names 2229 | | | | +--ro path-affinity-name* [usage] 2230 | | | | +--ro usage identityref 2231 | | | | +--ro affinity-name* [name] 2232 | | | | +--ro name string 2233 | | | +--ro path-srlgs-lists 2234 | | | | +--ro path-srlgs-list* [usage] 2235 | | | | +--ro usage identityref 2236 | | | | +--ro values* srlg 2237 | | | +--ro path-srlgs-names 2238 | | | | +--ro path-srlgs-name* [usage] 2239 | | | | +--ro usage identityref 2240 | | | | +--ro names* string 2241 | | | +--ro path-route-objects 2242 | | | | +--ro path-route-object* [index] 2243 | | | | +--ro index 2244 | | | | | uint32 2245 | | | | +--ro (type)? 2246 | | | | +--:(numbered-node-hop) 2247 | | | | | +--ro numbered-node-hop 2248 | | | | | +--ro node-id te-node-id 2249 | | | | | +--ro hop-type? 2250 | | | | | te-hop-type 2251 | | | | +--:(numbered-link-hop) 2252 | | | | | +--ro numbered-link-hop 2253 | | | | | +--ro link-tp-id te-tp-id 2254 | | | | | +--ro hop-type? 2255 | | | | | | te-hop-type 2256 | | | | | +--ro direction? 2257 | | | | | te-link-direction 2258 | | | | +--:(unnumbered-link-hop) 2259 | | | | | +--ro unnumbered-link-hop 2260 | | | | | +--ro link-tp-id te-tp-id 2261 | | | | | +--ro node-id 2262 | | | | | | te-node-id 2263 | | | | | +--ro hop-type? 2264 | | | | | | te-hop-type 2265 | | | | | +--ro direction? 2266 | | | | | te-link-direction 2267 | | | | +--:(as-number) 2268 | | | | | +--ro as-number-hop 2269 | | | | | +--ro as-number 2270 | | | | | | inet:as-number 2271 | | | | | +--ro hop-type? 2272 | | | | | te-hop-type 2273 | | | | +--:(label) 2274 | | | | +--ro label-hop 2275 | | | | +--ro te-label 2276 | | | | +--ro (technology)? 2277 | | | | | +--:(generic) 2278 | | | | | +--ro generic? 2279 | | | | | rt-types:gener 2280 alized-label 2281 | | | | +--ro direction? 2282 | | | | te-label-direction 2283 | | | +--ro te-bandwidth 2284 | | | | +--ro (technology)? 2285 | | | | +--:(generic) 2286 | | | | +--ro generic? te-bandwidth 2287 | | | +--ro disjointness-type? 2288 | | | te-types:te-path-disjointness 2289 | | +--ro computed-path-error-infos 2290 | | | +--ro computed-path-error-info* [] 2291 | | | +--ro error-description? string 2292 | | | +--ro error-timestamp? yang:date-and-time 2293 | | | +--ro error-reason? identityref 2294 | | +--ro lsp-provisioning-error-infos 2295 | | | +--ro lsp-provisioning-error-info* [] 2296 | | | +--ro error-description? string 2297 | | | +--ro error-timestamp? yang:date-and-time 2298 | | | +--ro error-node-id? te-types:te-node-id 2299 | | | +--ro error-link-id? te-types:te-tp-id 2300 | | | +--ro lsp-id? uint16 2301 | | +--ro lsps 2302 | | +--ro lsp* [node lsp-id] 2303 | | +--ro tunnel-name? 2304 | | | -> /te/lsps/lsp/tunnel-name 2305 | | +--ro node -> /te/lsps/lsp/node 2306 | | +--ro lsp-id -> /te/lsps/lsp/lsp-id 2307 | +--rw secondary-reverse-paths 2308 | | +--rw secondary-reverse-path* [name] 2309 | | +--rw name string 2310 | | +--rw path-computation-method? identityref 2311 | | +--rw path-computation-server 2312 | | | +--rw id? te-gen-node-id 2313 | | | +--rw type? enumeration 2314 | | +--rw compute-only? empty 2315 | | +--rw use-path-computation? boolean 2316 | | +--rw lockdown? empty 2317 | | +--ro path-scope? identityref 2318 | | +--rw preference? uint8 2319 | | +--rw association-objects 2320 | | | +--rw association-object* [association-key] 2321 | | | | +--rw association-key string 2322 | | | | +--rw type? identityref 2323 | | | | +--rw id? uint16 2324 | | | | +--rw source 2325 | | | | +--rw id? te-gen-node-id 2326 | | | | +--rw type? enumeration 2327 | | | +--rw association-object-extended* 2328 | | | [association-key] 2329 | | | +--rw association-key string 2330 | | | +--rw type? identityref 2331 | | | +--rw id? uint16 2332 | | | +--rw source 2333 | | | | +--rw id? te-gen-node-id 2334 | | | | +--rw type? enumeration 2335 | | | +--rw global-source? uint32 2336 | | | +--rw extended-id? yang:hex-string 2337 | | +--rw optimizations 2338 | | | +--rw (algorithm)? 2339 | | | +--:(metric) {path-optimization-metric}? 2340 | | | | +--rw optimization-metric* [metric-type] 2341 | | | | | +--rw metric-type 2342 | | | | | | identityref 2343 | | | | | +--rw weight? 2344 | | | | | | uint8 2345 | | | | | +--rw explicit-route-exclude-objects 2346 | | | | | | +--rw route-object-exclude-object* 2347 | | | | | | [index] 2348 | | | | | | +--rw index 2349 | | | | | | | uint32 2350 | | | | | | +--rw (type)? 2351 | | | | | | +--:(numbered-node-hop) 2352 | | | | | | | +--rw numbered-node-hop 2353 | | | | | | | +--rw node-id 2354 | | | | | | | | te-node-id 2355 | | | | | | | +--rw hop-type? 2356 | | | | | | | te-hop-type 2357 | | | | | | +--:(numbered-link-hop) 2358 | | | | | | | +--rw numbered-link-hop 2359 | | | | | | | +--rw link-tp-id 2360 | | | | | | | | te-tp-id 2361 | | | | | | | +--rw hop-type? 2362 | | | | | | | | te-hop-type 2363 | | | | | | | +--rw direction? 2364 | | | | | | | te-link-direction 2365 | | | | | | +--:(unnumbered-link-hop) 2366 | | | | | | | +--rw unnumbered-link-hop 2367 | | | | | | | +--rw link-tp-id 2368 | | | | | | | | te-tp-id 2369 | | | | | | | +--rw node-id 2370 | | | | | | | | te-node-id 2371 | | | | | | | +--rw hop-type? 2372 | | | | | | | | te-hop-type 2373 | | | | | | | +--rw direction? 2374 | | | | | | | te-link-direction 2375 | | | | | | +--:(as-number) 2376 | | | | | | | +--rw as-number-hop 2377 | | | | | | | +--rw as-number 2378 | | | | | | | | inet:as-number 2379 | | | | | | | +--rw hop-type? 2380 | | | | | | | te-hop-type 2381 | | | | | | +--:(label) 2382 | | | | | | | +--rw label-hop 2383 | | | | | | | +--rw te-label 2384 | | | | | | | +--rw (technology)? 2385 | | | | | | | | +--:(generic) 2386 | | | | | | | | +--rw generic? 2387 | | | | | | | | rt-types:ge 2388 neralized-label 2389 | | | | | | | +--rw direction? 2390 | | | | | | | te-label-directio 2391 n 2392 | | | | | | +--:(srlg) 2393 | | | | | | +--rw srlg 2394 | | | | | | +--rw srlg? uint32 2395 | | | | | +--rw explicit-route-include-objects 2396 | | | | | +--rw route-object-include-object* 2397 | | | | | [index] 2398 | | | | | +--rw index 2399 | | | | | | uint32 2400 | | | | | +--rw (type)? 2401 | | | | | +--:(numbered-node-hop) 2402 | | | | | | +--rw numbered-node-hop 2403 | | | | | | +--rw node-id 2404 | | | | | | | te-node-id 2405 | | | | | | +--rw hop-type? 2406 | | | | | | te-hop-type 2407 | | | | | +--:(numbered-link-hop) 2408 | | | | | | +--rw numbered-link-hop 2409 | | | | | | +--rw link-tp-id 2410 | | | | | | | te-tp-id 2411 | | | | | | +--rw hop-type? 2412 | | | | | | | te-hop-type 2413 | | | | | | +--rw direction? 2414 | | | | | | te-link-direction 2415 | | | | | +--:(unnumbered-link-hop) 2416 | | | | | | +--rw unnumbered-link-hop 2417 | | | | | | +--rw link-tp-id 2418 | | | | | | | te-tp-id 2419 | | | | | | +--rw node-id 2420 | | | | | | | te-node-id 2421 | | | | | | +--rw hop-type? 2422 | | | | | | | te-hop-type 2423 | | | | | | +--rw direction? 2424 | | | | | | te-link-direction 2425 | | | | | +--:(as-number) 2426 | | | | | | +--rw as-number-hop 2427 | | | | | | +--rw as-number 2428 | | | | | | | inet:as-number 2429 | | | | | | +--rw hop-type? 2430 | | | | | | te-hop-type 2431 | | | | | +--:(label) 2432 | | | | | +--rw label-hop 2433 | | | | | +--rw te-label 2434 | | | | | +--rw (technology)? 2435 | | | | | | +--:(generic) 2436 | | | | | | +--rw generic? 2437 | | | | | | rt-types:ge 2438 neralized-label 2439 | | | | | +--rw direction? 2440 | | | | | te-label-directio 2441 n 2442 | | | | +--rw tiebreakers 2443 | | | | +--rw tiebreaker* [tiebreaker-type] 2444 | | | | +--rw tiebreaker-type identityref 2445 | | | +--:(objective-function) 2446 | | | {path-optimization-objective-function}? 2447 | | | +--rw objective-function 2448 | | | +--rw objective-function-type? 2449 | | | identityref 2450 | | +--rw named-path-constraint? leafref 2451 | | | {te-types:named-path-constraints}? 2452 | | +--rw te-bandwidth 2453 | | | +--rw (technology)? 2454 | | | +--:(generic) 2455 | | | +--rw generic? te-bandwidth 2456 | | +--rw link-protection? identityref 2457 | | +--rw setup-priority? uint8 2458 | | +--rw hold-priority? uint8 2459 | | +--rw signaling-type? identityref 2460 | | +--rw path-metric-bounds 2461 | | | +--rw path-metric-bound* [metric-type] 2462 | | | +--rw metric-type identityref 2463 | | | +--rw upper-bound? uint64 2464 | | +--rw path-affinities-values 2465 | | | +--rw path-affinities-value* [usage] 2466 | | | +--rw usage identityref 2467 | | | +--rw value? admin-groups 2468 | | +--rw path-affinity-names 2469 | | | +--rw path-affinity-name* [usage] 2470 | | | +--rw usage identityref 2471 | | | +--rw affinity-name* [name] 2472 | | | +--rw name string 2473 | | +--rw path-srlgs-lists 2474 | | | +--rw path-srlgs-list* [usage] 2475 | | | +--rw usage identityref 2476 | | | +--rw values* srlg 2477 | | +--rw path-srlgs-names 2478 | | | +--rw path-srlgs-name* [usage] 2479 | | | +--rw usage identityref 2480 | | | +--rw names* string 2481 | | +--rw disjointness? 2482 | | | te-path-disjointness 2483 | | +--rw explicit-route-objects-always 2484 | | | +--rw route-object-exclude-always* [index] 2485 | | | | +--rw index uint32 2486 | | | | +--rw (type)? 2487 | | | | +--:(numbered-node-hop) 2488 | | | | | +--rw numbered-node-hop 2489 | | | | | +--rw node-id te-node-id 2490 | | | | | +--rw hop-type? te-hop-type 2491 | | | | +--:(numbered-link-hop) 2492 | | | | | +--rw numbered-link-hop 2493 | | | | | +--rw link-tp-id te-tp-id 2494 | | | | | +--rw hop-type? te-hop-type 2495 | | | | | +--rw direction? te-link-direction 2496 | | | | +--:(unnumbered-link-hop) 2497 | | | | | +--rw unnumbered-link-hop 2498 | | | | | +--rw link-tp-id te-tp-id 2499 | | | | | +--rw node-id te-node-id 2500 | | | | | +--rw hop-type? te-hop-type 2501 | | | | | +--rw direction? te-link-direction 2502 | | | | +--:(as-number) 2503 | | | | | +--rw as-number-hop 2504 | | | | | +--rw as-number inet:as-number 2505 | | | | | +--rw hop-type? te-hop-type 2506 | | | | +--:(label) 2507 | | | | +--rw label-hop 2508 | | | | +--rw te-label 2509 | | | | +--rw (technology)? 2510 | | | | | +--:(generic) 2511 | | | | | +--rw generic? 2512 | | | | | rt-types:generalized-la 2513 bel 2514 | | | | +--rw direction? 2515 | | | | te-label-direction 2516 | | | +--rw route-object-include-exclude* [index] 2517 | | | +--rw explicit-route-usage? identityref 2518 | | | +--rw index uint32 2519 | | | +--rw (type)? 2520 | | | +--:(numbered-node-hop) 2521 | | | | +--rw numbered-node-hop 2522 | | | | +--rw node-id te-node-id 2523 | | | | +--rw hop-type? te-hop-type 2524 | | | +--:(numbered-link-hop) 2525 | | | | +--rw numbered-link-hop 2526 | | | | +--rw link-tp-id te-tp-id 2527 | | | | +--rw hop-type? te-hop-type 2528 | | | | +--rw direction? te-link-direction 2529 | | | +--:(unnumbered-link-hop) 2530 | | | | +--rw unnumbered-link-hop 2531 | | | | +--rw link-tp-id te-tp-id 2532 | | | | +--rw node-id te-node-id 2533 | | | | +--rw hop-type? te-hop-type 2534 | | | | +--rw direction? te-link-direction 2535 | | | +--:(as-number) 2536 | | | | +--rw as-number-hop 2537 | | | | +--rw as-number inet:as-number 2538 | | | | +--rw hop-type? te-hop-type 2539 | | | +--:(label) 2540 | | | | +--rw label-hop 2541 | | | | +--rw te-label 2542 | | | | +--rw (technology)? 2543 | | | | | +--:(generic) 2544 | | | | | +--rw generic? 2545 | | | | | rt-types:generalized-la 2546 bel 2547 | | | | +--rw direction? 2548 | | | | te-label-direction 2549 | | | +--:(srlg) 2550 | | | +--rw srlg 2551 | | | +--rw srlg? uint32 2552 | | +--rw path-in-segment! 2553 | | | +--rw label-restrictions 2554 | | | +--rw label-restriction* [index] 2555 | | | +--rw restriction? enumeration 2556 | | | +--rw index uint32 2557 | | | +--rw label-start 2558 | | | | +--rw te-label 2559 | | | | +--rw (technology)? 2560 | | | | | +--:(generic) 2561 | | | | | +--rw generic? 2562 | | | | | rt-types:generalized-label 2563 | | | | +--rw direction? 2564 | | | | te-label-direction 2565 | | | +--rw label-end 2566 | | | | +--rw te-label 2567 | | | | +--rw (technology)? 2568 | | | | | +--:(generic) 2569 | | | | | +--rw generic? 2570 | | | | | rt-types:generalized-label 2571 | | | | +--rw direction? 2572 | | | | te-label-direction 2573 | | | +--rw label-step 2574 | | | | +--rw (technology)? 2575 | | | | +--:(generic) 2576 | | | | +--rw generic? int32 2577 | | | +--rw range-bitmap? yang:hex-string 2578 | | +--rw path-out-segment! 2579 | | | +--rw label-restrictions 2580 | | | +--rw label-restriction* [index] 2581 | | | +--rw restriction? enumeration 2582 | | | +--rw index uint32 2583 | | | +--rw label-start 2584 | | | | +--rw te-label 2585 | | | | +--rw (technology)? 2586 | | | | | +--:(generic) 2587 | | | | | +--rw generic? 2588 | | | | | rt-types:generalized-label 2589 | | | | +--rw direction? 2590 | | | | te-label-direction 2591 | | | +--rw label-end 2592 | | | | +--rw te-label 2593 | | | | +--rw (technology)? 2594 | | | | | +--:(generic) 2595 | | | | | +--rw generic? 2596 | | | | | rt-types:generalized-label 2597 | | | | +--rw direction? 2598 | | | | te-label-direction 2599 | | | +--rw label-step 2600 | | | | +--rw (technology)? 2601 | | | | +--:(generic) 2602 | | | | +--rw generic? int32 2603 | | | +--rw range-bitmap? yang:hex-string 2604 | | +--rw protection 2605 | | | +--rw enable? boolean 2606 | | | +--rw protection-type? identityref 2607 | | | +--rw protection-reversion-disable? boolean 2608 | | | +--rw hold-off-time? uint32 2609 | | | +--rw wait-to-revert? uint16 2610 | | | +--rw aps-signal-id? uint8 2611 | | +--rw restoration 2612 | | | +--rw enable? boolean 2613 | | | +--rw restoration-type? 2614 | | | | identityref 2615 | | | +--rw restoration-scheme? 2616 | | | | identityref 2617 | | | +--rw restoration-reversion-disable? boolean 2618 | | | +--rw hold-off-time? uint32 2619 | | | +--rw wait-to-restore? uint16 2620 | | | +--rw wait-to-revert? uint16 2621 | | +--ro computed-paths-properties 2622 | | | +--ro computed-path-properties* [k-index] 2623 | | | +--ro k-index uint8 2624 | | | +--ro path-properties 2625 | | | +--ro path-metric* [metric-type] 2626 | | | | +--ro metric-type identityref 2627 | | | | +--ro accumulative-value? uint64 2628 | | | +--ro path-affinities-values 2629 | | | | +--ro path-affinities-value* [usage] 2630 | | | | +--ro usage identityref 2631 | | | | +--ro value? admin-groups 2632 | | | +--ro path-affinity-names 2633 | | | | +--ro path-affinity-name* [usage] 2634 | | | | +--ro usage identityref 2635 | | | | +--ro affinity-name* [name] 2636 | | | | +--ro name string 2637 | | | +--ro path-srlgs-lists 2638 | | | | +--ro path-srlgs-list* [usage] 2639 | | | | +--ro usage identityref 2640 | | | | +--ro values* srlg 2641 | | | +--ro path-srlgs-names 2642 | | | | +--ro path-srlgs-name* [usage] 2643 | | | | +--ro usage identityref 2644 | | | | +--ro names* string 2645 | | | +--ro path-route-objects 2646 | | | | +--ro path-route-object* [index] 2647 | | | | +--ro index 2648 | | | | | uint32 2649 | | | | +--ro (type)? 2650 | | | | +--:(numbered-node-hop) 2651 | | | | | +--ro numbered-node-hop 2652 | | | | | +--ro node-id te-node-id 2653 | | | | | +--ro hop-type? 2654 | | | | | te-hop-type 2655 | | | | +--:(numbered-link-hop) 2656 | | | | | +--ro numbered-link-hop 2657 | | | | | +--ro link-tp-id te-tp-id 2658 | | | | | +--ro hop-type? 2659 | | | | | | te-hop-type 2660 | | | | | +--ro direction? 2661 | | | | | te-link-direction 2662 | | | | +--:(unnumbered-link-hop) 2663 | | | | | +--ro unnumbered-link-hop 2664 | | | | | +--ro link-tp-id te-tp-id 2665 | | | | | +--ro node-id 2666 | | | | | | te-node-id 2667 | | | | | +--ro hop-type? 2668 | | | | | | te-hop-type 2669 | | | | | +--ro direction? 2670 | | | | | te-link-direction 2671 | | | | +--:(as-number) 2672 | | | | | +--ro as-number-hop 2673 | | | | | +--ro as-number 2674 | | | | | | inet:as-number 2675 | | | | | +--ro hop-type? 2676 | | | | | te-hop-type 2677 | | | | +--:(label) 2678 | | | | +--ro label-hop 2679 | | | | +--ro te-label 2680 | | | | +--ro (technology)? 2681 | | | | | +--:(generic) 2682 | | | | | +--ro generic? 2683 | | | | | rt-types:gener 2684 alized-label 2685 | | | | +--ro direction? 2686 | | | | te-label-direction 2687 | | | +--ro te-bandwidth 2688 | | | | +--ro (technology)? 2689 | | | | +--:(generic) 2690 | | | | +--ro generic? te-bandwidth 2691 | | | +--ro disjointness-type? 2692 | | | te-types:te-path-disjointness 2693 | | +--ro computed-path-error-infos 2694 | | | +--ro computed-path-error-info* [] 2695 | | | +--ro error-description? string 2696 | | | +--ro error-timestamp? yang:date-and-time 2697 | | | +--ro error-reason? identityref 2698 | | +--ro lsp-provisioning-error-infos 2699 | | | +--ro lsp-provisioning-error-info* [] 2700 | | | +--ro error-description? string 2701 | | | +--ro error-timestamp? yang:date-and-time 2702 | | | +--ro error-node-id? te-types:te-node-id 2703 | | | +--ro error-link-id? te-types:te-tp-id 2704 | | | +--ro lsp-id? uint16 2705 | | +--ro lsps 2706 | | +--ro lsp* [node lsp-id] 2707 | | +--ro tunnel-name? 2708 | | | -> /te/lsps/lsp/tunnel-name 2709 | | +--ro node -> /te/lsps/lsp/node 2710 | | +--ro lsp-id -> /te/lsps/lsp/lsp-id 2711 | +---x tunnel-action 2712 | | +---w input 2713 | | | +---w action-type? identityref 2714 | | +--ro output 2715 | | +--ro action-result? identityref 2716 | +---x protection-external-commands 2717 | +---w input 2718 | +---w protection-external-command? 2719 | | identityref 2720 | +---w protection-group-ingress-node-id? 2721 | | te-types:te-node-id 2722 | +---w protection-group-egress-node-id? 2723 | | te-types:te-node-id 2724 | +---w path-ref? path-ref 2725 | +---w traffic-type? 2726 | | enumeration 2727 | +---w extra-traffic-tunnel-ref? tunnel-ref 2728 +--ro lsps 2729 +--ro lsp* [tunnel-name lsp-id node] 2730 +--ro tunnel-name string 2731 +--ro lsp-id uint16 2732 +--ro node 2733 | te-types:te-node-id 2734 +--ro source? 2735 | te-types:te-node-id 2736 +--ro destination? 2737 | te-types:te-node-id 2738 +--ro tunnel-id? uint16 2739 +--ro extended-tunnel-id? yang:dotted-quad 2740 +--ro operational-state? identityref 2741 +--ro signaling-type? identityref 2742 +--ro origin-type? enumeration 2743 +--ro lsp-resource-status? enumeration 2744 +--ro lockout-of-normal? boolean 2745 +--ro freeze? boolean 2746 +--ro lsp-protection-role? enumeration 2747 +--ro lsp-protection-state? identityref 2748 +--ro protection-group-ingress-node-id? 2749 | te-types:te-node-id 2750 +--ro protection-group-egress-node-id? 2751 | te-types:te-node-id 2752 +--ro lsp-record-route-information 2753 +--ro lsp-record-route-information* [index] 2754 +--ro index uint32 2755 +--ro (type)? 2756 +--:(numbered-node-hop) 2757 | +--ro numbered-node-hop 2758 | +--ro node-id te-node-id 2759 | +--ro flags* path-attribute-flags 2760 +--:(numbered-link-hop) 2761 | +--ro numbered-link-hop 2762 | +--ro link-tp-id te-tp-id 2763 | +--ro flags* path-attribute-flags 2764 +--:(unnumbered-link-hop) 2765 | +--ro unnumbered-link-hop 2766 | +--ro link-tp-id te-tp-id 2767 | +--ro node-id? te-node-id 2768 | +--ro flags* path-attribute-flags 2769 +--:(label) 2770 +--ro label-hop 2771 +--ro te-label 2772 | +--ro (technology)? 2773 | | +--:(generic) 2774 | | +--ro generic? 2775 | | rt-types:generalized-label 2776 | +--ro direction? 2777 | te-label-direction 2778 +--ro flags* path-attribute-flags 2780 rpcs: 2781 +---x tunnels-path-compute 2782 | +---w input 2783 | | +---w path-compute-info 2784 | +--ro output 2785 | +--ro path-compute-result 2786 +---x tunnels-actions 2787 +---w input 2788 | +---w tunnel-info 2789 | | +---w (filter-type) 2790 | | +--:(all-tunnels) 2791 | | | +---w all empty 2792 | | +--:(one-tunnel) 2793 | | +---w tunnel? tunnel-ref 2794 | +---w action-info 2795 | +---w action? identityref 2796 | +---w disruptive? empty 2797 +--ro output 2798 +--ro action-result? identityref 2800 Figure 8: TE Tunnel generic model YANG tree diagram 2802 5.3. YANG Module 2804 The generic TE YANG module 'ietf-te' imports the following modules: 2806 * ietf-yang-types and ietf-inet-types defined in [RFC6991] 2808 * ietf-te-types defined in [RFC8776] 2810 This module references the following documents: [RFC6991], [RFC4875], 2811 [RFC7551], [RFC4206], [RFC4427], [RFC4872], [RFC3945], [RFC3209], 2812 [RFC6780], [RFC8800], and [RFC7308]. 2814 file "ietf-te@2021-10-22.yang" 2815 module ietf-te { 2816 yang-version 1.1; 2817 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 2819 /* Replace with IANA when assigned */ 2821 prefix te; 2823 /* Import TE generic types */ 2825 import ietf-te-types { 2826 prefix te-types; 2827 reference 2828 "RFC8776: Common YANG Data Types for Traffic Engineering."; 2829 } 2830 import ietf-inet-types { 2831 prefix inet; 2832 reference 2833 "RFC6991: Common YANG Data Types."; 2834 } 2835 import ietf-yang-types { 2836 prefix yang; 2837 reference 2838 "RFC6991: Common YANG Data Types."; 2839 } 2841 organization 2842 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2843 Working Group."; 2844 contact 2845 "WG Web: 2846 WG List: 2848 Editor: Tarek Saad 2849 2851 Editor: Rakesh Gandhi 2852 2854 Editor: Vishnu Pavan Beeram 2855 2857 Editor: Himanshu Shah 2858 2860 Editor: Xufeng Liu 2861 2863 Editor: Igor Bryskin 2864 "; 2865 description 2866 "YANG data module for TE configuration, state, and RPCs. 2867 The model fully conforms to the Network Management 2868 Datastore Architecture (NMDA). 2870 Copyright (c) 2019 IETF Trust and the persons 2871 identified as authors of the code. All rights reserved. 2873 Redistribution and use in source and binary forms, with or 2874 without modification, is permitted pursuant to, and subject 2875 to the license terms contained in, the Simplified BSD License 2876 set forth in Section 4.c of the IETF Trust's Legal Provisions 2877 Relating to IETF Documents 2878 (https://trustee.ietf.org/license-info). 2879 This version of this YANG module is part of RFC XXXX; see 2880 the RFC itself for full legal notices."; 2882 // RFC Ed.: replace XXXX with actual RFC number and remove this 2883 // note. 2884 // RFC Ed.: update the date below with the date of RFC publication 2885 // and remove this note. 2887 revision 2021-10-22 { 2888 description 2889 "Latest update to TE generic YANG module."; 2890 reference 2891 "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels 2892 and Interfaces."; 2893 } 2895 identity path-computation-error-reason { 2896 description 2897 "Base identity for path computation error reasons."; 2898 } 2900 identity path-computation-error-no-topology { 2901 base path-computation-error-reason; 2902 description 2903 "Path computation has failed because there is no topology 2904 with the provided topology-identifier."; 2905 } 2907 identity path-computation-error-no-dependent-server { 2908 base path-computation-error-reason; 2909 description 2910 "Path computation has failed because one or more dependent 2911 path computation servers are unavailable. 2912 The dependent path computation server could be 2913 a Backward-Recursive Path Computation (BRPC) downstream 2914 PCE or a child PCE."; 2915 reference 2916 "RFC5441, RFC8685"; 2917 } 2919 identity path-computation-error-pce-unavailable { 2920 base path-computation-error-reason; 2921 description 2922 "Path computation has failed because PCE is not available."; 2923 reference 2924 "RFC5440"; 2925 } 2927 identity path-computation-error-no-inclusion-hop { 2928 base path-computation-error-reason; 2929 description 2930 "Path computation has failed because there is no 2931 node or link provided by one or more inclusion hops."; 2932 reference 2933 "RFC8685"; 2934 } 2936 identity path-computation-error-destination-unknown-in-domain { 2937 base path-computation-error-reason; 2938 description 2939 "Path computation has failed because the destination node is 2940 unknown in indicated destination domain."; 2941 reference 2942 "RFC8685"; 2943 } 2945 identity path-computation-error-no-resource { 2946 base path-computation-error-reason; 2947 description 2948 "Path computation has failed because there is no 2949 available resource in one or more domains."; 2950 reference 2951 "RFC8685"; 2952 } 2954 identity path-computation-error-child-pce-unresponsive { 2955 base path-computation-error-reason; 2956 description 2957 "Path computation has failed because child PCE is not 2958 responsive."; 2960 reference 2961 "RFC8685"; 2962 } 2964 identity path-computation-error-destination-domain-unknown { 2965 base path-computation-error-reason; 2966 description 2967 "Path computation has failed because the destination domain 2968 was unknown."; 2969 reference 2970 "RFC8685"; 2971 } 2973 identity path-computation-error-p2mp { 2974 base path-computation-error-reason; 2975 description 2976 "Path computation has failed because of P2MP reachability 2977 problem."; 2978 reference 2979 "RFC8306"; 2980 } 2982 identity path-computation-error-no-gco-migration { 2983 base path-computation-error-reason; 2984 description 2985 "Path computation has failed because of no Global Concurrent 2986 Optimization (GCO) migration path found."; 2987 reference 2988 "RFC5557"; 2989 } 2991 identity path-computation-error-no-gco-solution { 2992 base path-computation-error-reason; 2993 description 2994 "Path computation has failed because of no GCO solution 2995 found."; 2996 reference 2997 "RFC5557"; 2998 } 3000 identity path-computation-error-path-not-found { 3001 base path-computation-error-reason; 3002 description 3003 "Path computation no path found error reason."; 3004 reference 3005 "RFC5440"; 3006 } 3007 identity path-computation-error-pks-expansion { 3008 base path-computation-error-reason; 3009 description 3010 "Path computation has failed because of Path-Key Subobject 3011 (PKS) expansion failure."; 3012 reference 3013 "RFC5520"; 3014 } 3016 identity path-computation-error-brpc-chain-unavailable { 3017 base path-computation-error-reason; 3018 description 3019 "Path computation has failed because PCE BRPC chain 3020 unavailable."; 3021 reference 3022 "RFC5441"; 3023 } 3025 identity path-computation-error-source-unknown { 3026 base path-computation-error-reason; 3027 description 3028 "Path computation has failed because source node is unknown."; 3029 reference 3030 "RFC5440"; 3031 } 3033 identity path-computation-error-destination-unknown { 3034 base path-computation-error-reason; 3035 description 3036 "Path computation has failed because destination node is 3037 unknown."; 3038 reference 3039 "RFC5440"; 3040 } 3042 identity path-computation-error-no-server { 3043 base path-computation-error-reason; 3044 description 3045 "Path computation has failed because path computation 3046 server is unavailable."; 3047 reference 3048 "RFC5440"; 3049 } 3051 identity tunnel-actions-type { 3052 description 3053 "TE tunnel actions type."; 3054 } 3055 identity tunnel-action-reoptimize { 3056 base tunnel-actions-type; 3057 description 3058 "Reoptimize tunnel action type."; 3059 } 3061 identity tunnel-admin-auto { 3062 base te-types:tunnel-admin-state-type; 3063 description 3064 "Tunnel administrative auto state. The administrative status 3065 in state datastore transitions to 'tunnel-admin-up' when the 3066 tunnel used by the client layer, and to 'tunnel-admin-down' 3067 when it is not used by the client layer."; 3068 } 3070 identity association-type-diversity { 3071 base te-types:association-type; 3072 description 3073 "Association Type diversity used to associate LSPs whose paths 3074 are to be diverse from each other."; 3075 reference 3076 "RFC8800"; 3077 } 3079 identity protocol-origin-type { 3080 description 3081 "Base identity for protocol origin type."; 3082 } 3083 identity protocol-origin-api { 3084 base protocol-origin-type; 3085 description 3086 "Protocol origin is via Application Programmable Interface 3087 (API)."; 3088 } 3089 identity protocol-origin-pcep { 3090 base protocol-origin-type; 3091 description 3092 "Protocol origin is Path Computation Engine Protocol (PCEP)."; 3093 reference "RFC5440"; 3094 } 3095 identity protocol-origin-bgp { 3096 base protocol-origin-type; 3097 description 3098 "Protocol origin is Border Gateway Protocol (BGP)."; 3099 reference "RFC5512"; 3100 } 3102 typedef tunnel-ref { 3103 type leafref { 3104 path "/te:te/te:tunnels/te:tunnel/te:name"; 3105 } 3106 description 3107 "This type is used by data models that need to reference 3108 configured TE tunnel."; 3109 } 3111 typedef path-ref { 3112 type union { 3113 type leafref { 3114 path "/te:te/te:tunnels/te:tunnel/" 3115 + "te:primary-paths/te:primary-path/te:name"; 3116 } 3117 type leafref { 3118 path "/te:te/te:tunnels/te:tunnel/" 3119 + "te:secondary-paths/te:secondary-path/te:name"; 3120 } 3121 } 3122 description 3123 "This type is used by data models that need to reference 3124 configured primary or secondary path of a TE tunnel."; 3125 } 3127 typedef te-gen-node-id { 3128 type union { 3129 type te-types:te-node-id; 3130 type inet:ip-address; 3131 } 3132 description 3133 "Generic type that identifies a node in a TE topology."; 3134 } 3136 /** 3137 * TE tunnel generic groupings 3138 */ 3140 grouping te-generic-node-id { 3141 description 3142 "A reusable grouping for a TE generic node identifier."; 3143 leaf id { 3144 type te-gen-node-id; 3145 description 3146 "The identifier of the node. Can be represented as IP 3147 address or dotted quad address."; 3148 } 3149 leaf type { 3150 type enumeration { 3151 enum ip { 3152 description 3153 "IP address representation of the node identifier."; 3154 } 3155 enum dotted-quad { 3156 description 3157 "Dotted quad address representation of the node 3158 identifier."; 3159 } 3160 } 3161 description 3162 "Type of node identifier representation."; 3163 } 3164 } 3166 grouping primary-path { 3167 description 3168 "The tunnel primary path properties."; 3169 uses path-common-properties; 3170 uses path-preference; 3171 uses k-requested-paths; 3172 uses path-compute-info; 3173 uses path-state; 3174 } 3176 grouping primary-reverse-path { 3177 description 3178 "The tunnel primary reverse path properties."; 3179 reference 3180 "RFC7551"; 3181 uses path-common-properties; 3182 uses path-compute-info; 3183 uses path-state; 3184 } 3186 grouping secondary-path { 3187 description 3188 "The tunnel secondary path properties."; 3189 uses path-common-properties; 3190 uses path-preference; 3191 uses path-compute-info; 3192 uses protection-restoration-properties; 3193 uses path-state; 3194 } 3196 grouping secondary-reverse-path { 3197 description 3198 "The tunnel secondary reverse path properties."; 3200 uses path-common-properties; 3201 uses path-preference; 3202 uses path-compute-info; 3203 uses protection-restoration-properties; 3204 uses path-state; 3205 } 3207 grouping path-common-properties { 3208 description 3209 "Common path attributes."; 3210 leaf name { 3211 type string; 3212 description 3213 "TE path name."; 3214 } 3215 leaf path-computation-method { 3216 type identityref { 3217 base te-types:path-computation-method; 3218 } 3219 default "te-types:path-locally-computed"; 3220 description 3221 "The method used for computing the path, either 3222 locally computed, queried from a server or not 3223 computed at all (explicitly configured)."; 3224 } 3225 container path-computation-server { 3226 when "derived-from-or-self(../path-computation-method, " 3227 + "'te-types:path-externally-queried')" { 3228 description 3229 "The path-computation server when the path is 3230 externally queried."; 3231 } 3232 uses te-generic-node-id; 3233 description 3234 "Address of the external path computation 3235 server."; 3236 } 3237 leaf compute-only { 3238 type empty; 3239 description 3240 "When set, the path is computed and updated whenever 3241 the topology is updated. No resources are committed 3242 or reserved in the network."; 3243 } 3244 leaf use-path-computation { 3245 when "derived-from-or-self(../path-computation-method, " 3246 + "'te-types:path-locally-computed')"; 3247 type boolean; 3248 default "true"; 3249 description 3250 "When 'true' indicates the path is dynamically computed 3251 and/or validated against the Traffic-Engineering Database 3252 (TED), and when 'false' indicates no validation against 3253 the TED is required."; 3254 } 3255 leaf lockdown { 3256 type empty; 3257 description 3258 "Indicates no reoptimization to be attempted for this path."; 3259 } 3260 leaf path-scope { 3261 type identityref { 3262 base te-types:path-scope-type; 3263 } 3264 default "te-types:path-scope-end-to-end"; 3265 config false; 3266 description 3267 "Path scope if segment or an end-to-end path."; 3268 } 3269 } 3271 /* This grouping will be re-used in path-computation rpc */ 3273 grouping path-compute-info { 3274 description 3275 "Attributes used for path computation request."; 3276 uses tunnel-associations-properties; 3277 uses te-types:generic-path-optimization; 3278 leaf named-path-constraint { 3279 if-feature "te-types:named-path-constraints"; 3280 type leafref { 3281 path "/te:te/te:globals/te:named-path-constraints/" 3282 + "te:named-path-constraint/te:name"; 3283 } 3284 description 3285 "Reference to a globally defined named path constraint set."; 3286 } 3287 uses path-constraints-common; 3288 } 3290 /* This grouping will be re-used in path-computation rpc */ 3292 grouping path-preference { 3293 description 3294 "The path preference."; 3295 leaf preference { 3296 type uint8 { 3297 range "1..255"; 3298 } 3299 default "1"; 3300 description 3301 "Specifies a preference for this path. The lower the number 3302 higher the preference."; 3303 } 3304 } 3306 /* This grouping will be re-used in path-computation rpc */ 3308 grouping k-requested-paths { 3309 description 3310 "The k-shortest paths requests."; 3311 leaf k-requested-paths { 3312 type uint8; 3313 default "1"; 3314 description 3315 "The number of k-shortest-paths requested from the path 3316 computation server and returned sorted by its optimization 3317 objective. The value 0 all possible paths."; 3318 } 3319 } 3321 grouping path-properties { 3322 description 3323 "TE computed path properties grouping."; 3324 uses te-types:generic-path-properties { 3325 augment "path-properties" { 3326 description 3327 "additional path properties returned by path computation."; 3328 uses te-types:te-bandwidth; 3329 leaf disjointness-type { 3330 type te-types:te-path-disjointness; 3331 config false; 3332 description 3333 "The type of resource disjointness. 3334 When reported for a primary path, it represents the 3335 minimum level of disjointness of all the secondary 3336 paths. 3337 When reported for a secondary path, it represents the 3338 disjointness of the secondary path."; 3339 } 3340 } 3341 } 3342 } 3343 grouping path-state { 3344 description 3345 "TE per path state parameters."; 3346 uses path-computation-response; 3347 uses lsp-provisioning-error-info { 3348 augment "lsp-provisioning-error-infos/" 3349 + "lsp-provisioning-error-info" { 3350 description 3351 "Augmentation of LSP provisioning information under a 3352 specific path."; 3353 leaf lsp-id { 3354 type uint16; 3355 description 3356 "The LSP-ID for which path computation was performed."; 3357 } 3358 } 3359 } 3360 container lsps { 3361 config false; 3362 description 3363 "The TE LSPs container."; 3364 list lsp { 3365 key "node lsp-id"; 3366 description 3367 "List of LSPs associated with the tunnel."; 3368 leaf tunnel-name { 3369 type leafref { 3370 path "/te:te/te:lsps/te:lsp/te:tunnel-name"; 3371 } 3372 description "TE tunnel name."; 3373 } 3374 leaf node { 3375 type leafref { 3376 path "/te:te/te:lsps/te:lsp/te:node"; 3377 } 3378 description "The node where the LSP state resides on."; 3379 } 3380 leaf lsp-id { 3381 type leafref { 3382 path "/te:te/te:lsps/te:lsp/te:lsp-id"; 3383 } 3384 description "The TE LSP identifier."; 3385 } 3386 } 3387 } 3388 } 3390 /* This grouping will be re-used in path-computation rpc */ 3391 grouping path-computation-response { 3392 description 3393 "Attributes reported by path computation response."; 3394 container computed-paths-properties { 3395 config false; 3396 description 3397 "Computed path properties container."; 3398 list computed-path-properties { 3399 key "k-index"; 3400 description 3401 "List of computed paths."; 3402 leaf k-index { 3403 type uint8; 3404 description 3405 "The k-th path returned from the computation server. 3406 A lower k value path is more optimal than higher k 3407 value path(s)"; 3408 } 3409 uses path-properties { 3410 description 3411 "The TE path computed properties."; 3412 } 3413 } 3414 } 3415 container computed-path-error-infos { 3416 config false; 3417 description 3418 "Path computation information container."; 3419 list computed-path-error-info { 3420 description 3421 "List of path computation info entries."; 3422 leaf error-description { 3423 type string; 3424 description 3425 "Textual representation of the error occurred during 3426 path computation."; 3427 } 3428 leaf error-timestamp { 3429 type yang:date-and-time; 3430 description 3431 "Timestamp of last path computation attempt."; 3432 } 3433 leaf error-reason { 3434 type identityref { 3435 base path-computation-error-reason; 3436 } 3437 description 3438 "Reason for the path computation error."; 3440 } 3441 } 3442 } 3443 } 3445 grouping lsp-provisioning-error-info { 3446 description 3447 "Grouping for LSP provisioning error information."; 3448 container lsp-provisioning-error-infos { 3449 config false; 3450 description 3451 "LSP provisioning error information."; 3452 list lsp-provisioning-error-info { 3453 description 3454 "List of LSP provisioning error info entries."; 3455 leaf error-description { 3456 type string; 3457 description 3458 "Textual representation of the error occurred during 3459 path computation."; 3460 } 3461 leaf error-timestamp { 3462 type yang:date-and-time; 3463 description 3464 "Timestamp of when the reported error occurred."; 3465 } 3466 leaf error-node-id { 3467 type te-types:te-node-id; 3468 default "0.0.0.0"; 3469 description 3470 "Node identifier of node where error occurred."; 3471 } 3472 leaf error-link-id { 3473 type te-types:te-tp-id; 3474 default "0"; 3475 description 3476 "Link ID where the error occurred."; 3477 } 3478 } 3479 } 3480 } 3482 grouping protection-restoration-properties-state { 3483 description 3484 "Protection parameters grouping."; 3485 leaf lockout-of-normal { 3486 type boolean; 3487 default "false"; 3488 description 3489 "When set to 'True', it represents a lockout of normal 3490 traffic external command. When set to 'False', it 3491 represents a clear lockout of normal traffic external 3492 command. The lockout of normal traffic command applies 3493 to this Tunnel."; 3494 reference 3495 "RFC4427"; 3496 } 3497 leaf freeze { 3498 type boolean; 3499 default "false"; 3500 description 3501 "When set to 'True', it represents a freeze external command. 3502 When set to 'False', it represents a clear freeze external 3503 command. The freeze command applies to all the Tunnels which 3504 are sharing the protection resources with this Tunnel."; 3505 reference 3506 "RFC4427"; 3507 } 3508 leaf lsp-protection-role { 3509 type enumeration { 3510 enum working { 3511 description 3512 "A working LSP must be a primary LSP whilst a protecting 3513 LSP can be either a primary or a secondary LSP. Also, 3514 known as protected LSPs when working LSPs are associated 3515 with protecting LSPs."; 3516 } 3517 enum protecting { 3518 description 3519 "A secondary LSP is an LSP that has been provisioned 3520 in the control plane only; e.g. resource allocation 3521 has not been committed at the data plane."; 3522 } 3523 } 3524 default "working"; 3525 description 3526 "LSP role type."; 3527 reference 3528 "RFC4872, section 4.2.1"; 3529 } 3530 leaf lsp-protection-state { 3531 type identityref { 3532 base te-types:lsp-protection-state; 3533 } 3534 default "te-types:normal"; 3535 description 3536 "The state of the APS state machine controlling which 3537 tunnels is using the resources of the protecting LSP."; 3538 } 3539 leaf protection-group-ingress-node-id { 3540 type te-types:te-node-id; 3541 default "0.0.0.0"; 3542 description 3543 "Indicates the te-node-id of the protection group 3544 ingress node when the APS state represents an external 3545 command (LoP, SF, MS) applied to it or a WTR timer 3546 running on it. If the external command is not applied to 3547 the ingress node or the WTR timer is not running on it, 3548 this attribute is not specified. A value 0.0.0.0 is used 3549 when the te-node-id of the protection group ingress node is 3550 unknown (e.g., because the ingress node is outside the scope 3551 of control of the server)"; 3552 } 3553 leaf protection-group-egress-node-id { 3554 type te-types:te-node-id; 3555 default "0.0.0.0"; 3556 description 3557 "Indicates the te-node-id of the protection group egress node 3558 when the APS state represents an external command (LoP, SF, 3559 MS) applied to it or a WTR timer running on it. If the 3560 external command is not applied to the ingress node or 3561 the WTR timer is not running on it, this attribute is not 3562 specified. A value 0.0.0.0 is used when the te-node-id of 3563 the protection group ingress node is unknown (e.g., because 3564 the ingress node is outside the scope of control of the 3565 server)"; 3566 } 3567 } 3569 grouping protection-restoration-properties { 3570 description 3571 "Protection and restoration parameters."; 3572 container protection { 3573 description 3574 "Protection parameters."; 3575 leaf enable { 3576 type boolean; 3577 default "false"; 3578 description 3579 "A flag to specify if LSP protection is enabled."; 3580 reference 3581 "RFC4427"; 3582 } 3583 leaf protection-type { 3584 type identityref { 3585 base te-types:lsp-protection-type; 3586 } 3587 default "te-types:lsp-protection-unprotected"; 3588 description 3589 "LSP protection type."; 3590 } 3591 leaf protection-reversion-disable { 3592 type boolean; 3593 default "false"; 3594 description 3595 "Disable protection reversion to working path."; 3596 } 3597 leaf hold-off-time { 3598 type uint32; 3599 units "milli-seconds"; 3600 default "0"; 3601 description 3602 "The time between the declaration of an SF or SD condition 3603 and the initialization of the protection switching 3604 algorithm."; 3605 reference 3606 "RFC4427"; 3607 } 3608 leaf wait-to-revert { 3609 type uint16; 3610 units "seconds"; 3611 description 3612 "Time to wait before attempting LSP reversion."; 3613 reference 3614 "RFC4427"; 3615 } 3616 leaf aps-signal-id { 3617 type uint8 { 3618 range "1..255"; 3619 } 3620 default "1"; 3621 description 3622 "The APS signal number used to reference the traffic of 3623 this tunnel. The default value for normal traffic is 1. 3624 The default value for extra-traffic is 255. If not 3625 specified, non-default values can be assigned by the 3626 server, if and only if, the server controls both 3627 endpoints."; 3628 reference 3629 "RFC4427"; 3630 } 3631 } 3632 container restoration { 3633 description 3634 "Restoration parameters."; 3635 leaf enable { 3636 type boolean; 3637 default "false"; 3638 description 3639 "A flag to specify if LSP restoration is enabled."; 3640 reference 3641 "RFC4427"; 3642 } 3643 leaf restoration-type { 3644 type identityref { 3645 base te-types:lsp-restoration-type; 3646 } 3647 default "te-types:lsp-restoration-restore-any"; 3648 description 3649 "LSP restoration type."; 3650 } 3651 leaf restoration-scheme { 3652 type identityref { 3653 base te-types:restoration-scheme-type; 3654 } 3655 default "te-types:restoration-scheme-preconfigured"; 3656 description 3657 "LSP restoration scheme."; 3658 } 3659 leaf restoration-reversion-disable { 3660 type boolean; 3661 default "false"; 3662 description 3663 "Disable restoration reversion to working path."; 3664 } 3665 leaf hold-off-time { 3666 type uint32; 3667 units "milli-seconds"; 3668 description 3669 "The time between the declaration of an SF or SD condition 3670 and the initialization of the protection switching 3671 algorithm."; 3672 reference 3673 "RFC4427"; 3674 } 3675 leaf wait-to-restore { 3676 type uint16; 3677 units "seconds"; 3678 description 3679 "Time to wait before attempting LSP restoration."; 3681 reference 3682 "RFC4427"; 3683 } 3684 leaf wait-to-revert { 3685 type uint16; 3686 units "seconds"; 3687 description 3688 "Time to wait before attempting LSP reversion."; 3689 reference 3690 "RFC4427"; 3691 } 3692 } 3693 } 3695 grouping tunnel-associations-properties { 3696 description 3697 "TE tunnel association grouping."; 3698 container association-objects { 3699 description 3700 "TE tunnel associations."; 3701 list association-object { 3702 key "association-key"; 3703 unique "type id source/id source/type"; 3704 description 3705 "List of association base objects."; 3706 reference 3707 "RFC4872"; 3708 leaf association-key { 3709 type string; 3710 description 3711 "Association key used to identify a specific 3712 association in the list"; 3713 } 3714 leaf type { 3715 type identityref { 3716 base te-types:association-type; 3717 } 3718 description 3719 "Association type."; 3720 reference 3721 "RFC4872"; 3722 } 3723 leaf id { 3724 type uint16; 3725 description 3726 "Association identifier."; 3727 reference 3728 "RFC4872"; 3730 } 3731 container source { 3732 uses te-generic-node-id; 3733 description 3734 "Association source."; 3735 reference 3736 "RFC4872"; 3737 } 3738 } 3739 list association-object-extended { 3740 key "association-key"; 3741 unique 3742 "type id source/id source/type global-source extended-id"; 3743 description 3744 "List of extended association objects."; 3745 reference 3746 "RFC6780"; 3747 leaf association-key { 3748 type string; 3749 description 3750 "Association key used to identify a specific 3751 association in the list"; 3752 } 3753 leaf type { 3754 type identityref { 3755 base te-types:association-type; 3756 } 3757 description 3758 "Association type."; 3759 reference 3760 "RFC4872, RFC6780"; 3761 } 3762 leaf id { 3763 type uint16; 3764 description 3765 "Association identifier."; 3766 reference 3767 "RFC4872, RFC6780"; 3768 } 3769 container source { 3770 uses te-generic-node-id; 3771 description 3772 "Association source."; 3773 reference 3774 "RFC4872, RFC6780"; 3775 } 3776 leaf global-source { 3777 type uint32; 3778 description 3779 "Association global source."; 3780 reference 3781 "RFC6780"; 3782 } 3783 leaf extended-id { 3784 type yang:hex-string; 3785 description 3786 "Association extended identifier."; 3787 reference 3788 "RFC6780"; 3789 } 3790 } 3791 } 3792 } 3794 /* TE tunnel configuration/state grouping */ 3795 /* These grouping will be re-used in path-computation rpc */ 3797 grouping encoding-and-switching-type { 3798 description 3799 "Common grouping to define the LSP encoding and 3800 switching types"; 3801 leaf encoding { 3802 type identityref { 3803 base te-types:lsp-encoding-types; 3804 } 3805 description 3806 "LSP encoding type."; 3807 reference 3808 "RFC3945"; 3809 } 3810 leaf switching-type { 3811 type identityref { 3812 base te-types:switching-capabilities; 3813 } 3814 description 3815 "LSP switching type."; 3816 reference 3817 "RFC3945"; 3818 } 3819 } 3821 grouping tunnel-common-attributes { 3822 description 3823 "Common grouping to define the TE tunnel parameters"; 3824 leaf source { 3825 type te-types:te-node-id; 3826 description 3827 "TE tunnel source node ID."; 3828 } 3829 leaf destination { 3830 type te-types:te-node-id; 3831 description 3832 "TE tunnel destination node identifier."; 3833 } 3834 leaf src-tunnel-tp-id { 3835 type binary; 3836 description 3837 "TE tunnel source termination point identifier."; 3838 } 3839 leaf dst-tunnel-tp-id { 3840 type binary; 3841 description 3842 "TE tunnel destination termination point identifier."; 3843 } 3844 leaf bidirectional { 3845 type boolean; 3846 default "false"; 3847 description 3848 "Indicates a bidirectional co-routed LSP."; 3849 } 3850 } 3852 grouping tunnel-hierarchy-properties { 3853 description 3854 "A grouping for TE tunnel hierarchy information."; 3855 container hierarchy { 3856 description 3857 "Container for TE hierarchy related information."; 3858 container dependency-tunnels { 3859 description 3860 "List of tunnels that this tunnel can be potentially 3861 dependent on."; 3862 list dependency-tunnel { 3863 key "name"; 3864 description 3865 "A tunnel entry that this tunnel can potentially depend 3866 on."; 3867 leaf name { 3868 type leafref { 3869 path "/te:te/te:tunnels/te:tunnel/te:name"; 3870 require-instance false; 3871 } 3872 description 3873 "Dependency tunnel name. The tunnel may not have been 3874 instantiated yet."; 3875 } 3876 uses encoding-and-switching-type; 3877 } 3878 } 3879 container hierarchical-link { 3880 description 3881 "Identifies a hierarchical link (in client layer) 3882 that this tunnel is associated with."; 3883 reference 3884 "RFC4206"; 3885 leaf local-te-node-id { 3886 type te-types:te-node-id; 3887 default "0.0.0.0"; 3888 description 3889 "The local TE node identifier."; 3890 } 3891 leaf local-te-link-tp-id { 3892 type te-types:te-tp-id; 3893 default "0"; 3894 description 3895 "The local TE link termination point identifier."; 3896 } 3897 leaf remote-te-node-id { 3898 type te-types:te-node-id; 3899 default "0.0.0.0"; 3900 description 3901 "Remote TE node identifier."; 3902 } 3903 uses te-types:te-topology-identifier { 3904 description 3905 "The topology identifier where the hierarchical link 3906 supported by this TE tunnel is instantiated."; 3907 } 3908 } 3909 } 3910 } 3912 grouping tunnel-properties { 3913 description 3914 "Top level grouping for tunnel properties."; 3915 leaf name { 3916 type string; 3917 description 3918 "TE tunnel name."; 3919 } 3920 leaf alias { 3921 type string; 3922 description 3923 "An alternate name of the TE tunnel that can be modified 3924 anytime during its lifetime."; 3925 } 3926 leaf identifier { 3927 type uint32; 3928 description 3929 "TE tunnel Identifier."; 3930 reference 3931 "RFC3209"; 3932 } 3933 leaf color { 3934 type uint32; 3935 description "The color associated with the TE tunnel."; 3936 reference "RFC9012"; 3937 } 3938 leaf description { 3939 type string; 3940 default "None"; 3941 description 3942 "Textual description for this TE tunnel."; 3943 } 3944 leaf admin-state { 3945 type identityref { 3946 base te-types:tunnel-admin-state-type; 3947 } 3948 default "te-types:tunnel-admin-state-up"; 3949 description 3950 "TE tunnel administrative state."; 3951 } 3952 leaf operational-state { 3953 type identityref { 3954 base te-types:tunnel-state-type; 3955 } 3956 config false; 3957 description 3958 "TE tunnel operational state."; 3959 } 3960 uses encoding-and-switching-type; 3961 uses tunnel-common-attributes; 3962 container controller { 3963 description 3964 "Contains tunnel data relevant to external controller(s). 3965 This target node may be augmented by external module(s), 3966 for example, to add data for PCEP initiated and/or 3967 delegated tunnels."; 3968 leaf protocol-origin { 3969 type identityref { 3970 base protocol-origin-type; 3971 } 3972 description 3973 "The protocol origin for instantiating the tunnel."; 3974 } 3975 leaf controller-entity-id { 3976 type string; 3977 description 3978 "An identifier unique within the scope of visibility that 3979 associated with the entity that controls the tunnel"; 3980 reference "RFC8232"; 3981 } 3982 } 3983 leaf reoptimize-timer { 3984 type uint16; 3985 units "seconds"; 3986 description 3987 "Frequency of reoptimization of a traffic engineered LSP."; 3988 } 3989 uses tunnel-associations-properties; 3990 uses protection-restoration-properties; 3991 uses te-types:tunnel-constraints; 3992 uses tunnel-hierarchy-properties; 3993 container primary-paths { 3994 description 3995 "The set of primary paths."; 3996 list primary-path { 3997 key "name"; 3998 description 3999 "List of primary paths for this tunnel."; 4000 uses primary-path; 4001 container primary-reverse-path { 4002 description 4003 "The reverse primary path properties."; 4004 uses primary-reverse-path; 4005 container candidate-secondary-reverse-paths { 4006 description 4007 "The set of referenced candidate reverse secondary 4008 paths from the full set of secondary reverse paths 4009 which may be used for this primary path."; 4010 list candidate-secondary-reverse-path { 4011 key "secondary-path"; 4012 ordered-by user; 4013 description 4014 "List of candidate secondary reverse path(s)"; 4015 leaf secondary-path { 4016 type leafref { 4017 path "../../../../../../" 4018 + "te:secondary-reverse-paths/" 4019 + "te:secondary-reverse-path/te:name"; 4020 } 4021 description 4022 "A reference to the secondary reverse path that 4023 should be utilised when the containing primary 4024 reverse path option is in use."; 4025 } 4026 } 4027 } 4028 } 4029 container candidate-secondary-paths { 4030 description 4031 "The set of candidate secondary paths which may be used 4032 for this primary path. When secondary paths are 4033 specified in the list the path of the secondary LSP in 4034 use must be restricted to those path options referenced. 4035 The priority of the secondary paths is specified within 4036 the list. Higher priority values are less preferred - 4037 that is to say that a path with priority 0 is the most 4038 preferred path. In the case that the list is empty, any 4039 secondary path option may be utilised when the current 4040 primary path is in use."; 4041 list candidate-secondary-path { 4042 key "secondary-path"; 4043 ordered-by user; 4044 description 4045 "List of candidate secondary paths for this tunnel."; 4046 leaf secondary-path { 4047 type leafref { 4048 path "../../../../../te:secondary-paths/" 4049 + "te:secondary-path/te:name"; 4050 } 4051 description 4052 "A reference to the secondary path that should be 4053 utilised when the containing primary path option is 4054 in use."; 4055 } 4056 leaf active { 4057 type boolean; 4058 config false; 4059 description 4060 "Indicates the current active path option that has 4061 been selected of the candidate secondary paths."; 4062 } 4063 } 4064 } 4065 } 4067 } 4068 container secondary-paths { 4069 description 4070 "The set of secondary paths."; 4071 list secondary-path { 4072 key "name"; 4073 description 4074 "List of secondary paths for this tunnel."; 4075 uses secondary-path; 4076 } 4077 } 4078 container secondary-reverse-paths { 4079 description 4080 "The set of secondary reverse paths."; 4081 list secondary-reverse-path { 4082 key "name"; 4083 description 4084 "List of secondary paths for this tunnel."; 4085 uses secondary-reverse-path; 4086 } 4087 } 4088 } 4090 grouping tunnel-actions { 4091 description 4092 "Tunnel actions."; 4093 action tunnel-action { 4094 description 4095 "Tunnel action."; 4096 input { 4097 leaf action-type { 4098 type identityref { 4099 base tunnel-actions-type; 4100 } 4101 description 4102 "Tunnel action type."; 4103 } 4104 } 4105 output { 4106 leaf action-result { 4107 type identityref { 4108 base te-types:te-action-result; 4109 } 4110 description 4111 "The result of the tunnel action operation."; 4112 } 4113 } 4114 } 4116 } 4118 grouping tunnel-protection-actions { 4119 description 4120 "Protection external command actions."; 4121 action protection-external-commands { 4122 input { 4123 leaf protection-external-command { 4124 type identityref { 4125 base te-types:protection-external-commands; 4126 } 4127 description 4128 "Protection external command."; 4129 } 4130 leaf protection-group-ingress-node-id { 4131 type te-types:te-node-id; 4132 description 4133 "When specified, indicates whether the action is 4134 applied on ingress node. 4135 By default, if neither ingress nor egress node-id 4136 is set, the action applies to ingress node only."; 4137 } 4138 leaf protection-group-egress-node-id { 4139 type te-types:te-node-id; 4140 description 4141 "When specified, indicates whether the action is 4142 applied on egress node. 4143 By default, if neither ingress nor egress node-id 4144 is set, the action applies to ingress node only."; 4145 } 4146 leaf path-ref { 4147 type path-ref; 4148 description 4149 "Indicates to which path the external command applies 4150 to."; 4151 } 4152 leaf traffic-type { 4153 type enumeration { 4154 enum normal-traffic { 4155 description 4156 "The manual-switch or forced-switch command applies 4157 to the normal traffic (this Tunnel)."; 4158 } 4159 enum null-traffic { 4160 description 4161 "The manual-switch or forced-switch command applies 4162 to the null traffic."; 4163 } 4164 enum extra-traffic { 4165 description 4166 "The manual-switch or forced-switch command applies 4167 to the extra traffic (the extra-traffic Tunnel 4168 sharing protection bandwidth with this Tunnel)."; 4169 } 4170 } 4171 description 4172 "Indicates whether the manual-switch or forced-switch 4173 commands applies to the normal traffic, the null traffic 4174 or the extra-traffic."; 4175 reference 4176 "RFC4427"; 4177 } 4178 leaf extra-traffic-tunnel-ref { 4179 type tunnel-ref; 4180 description 4181 "In case there are multiple extra-traffic tunnels sharing 4182 protection bandwidth with this Tunnel (m:n protection), 4183 represents which extra-traffic Tunnel the manual-switch 4184 or forced-switch to extra-traffic command applies to."; 4185 } 4186 } 4187 } 4188 } 4190 /*** End of TE tunnel groupings ***/ 4191 /** 4192 * LSP related generic groupings 4193 */ 4195 grouping lsp-record-route-information-state { 4196 description 4197 "LSP Recorded route information grouping."; 4198 container lsp-record-route-information { 4199 description 4200 "RSVP recorded route object information."; 4201 list lsp-record-route-information { 4202 when "../../origin-type = 'ingress'" { 4203 description 4204 "Applicable on ingress LSPs only."; 4205 } 4206 key "index"; 4207 description 4208 "Record route list entry."; 4209 uses te-types:record-route-state; 4210 } 4211 } 4213 } 4215 grouping lsps-grouping { 4216 description 4217 "LSPs state operational data grouping."; 4218 container lsps { 4219 config false; 4220 description 4221 "TE LSPs state container."; 4222 list lsp { 4223 key "tunnel-name lsp-id node"; 4224 unique "source destination tunnel-id lsp-id " 4225 + "extended-tunnel-id"; 4226 description 4227 "List of LSPs associated with the tunnel."; 4228 leaf tunnel-name { 4229 type string; 4230 description "The TE tunnel name."; 4231 } 4232 leaf lsp-id { 4233 type uint16; 4234 description 4235 "Identifier used in the SENDER_TEMPLATE and the 4236 FILTER_SPEC that can be changed to allow a sender to 4237 share resources with itself."; 4238 reference 4239 "RFC3209"; 4240 } 4241 leaf node { 4242 type te-types:te-node-id; 4243 description 4244 "The node where the TE LSP state resides on."; 4245 } 4246 uses lsp-properties-state; 4247 uses lsp-record-route-information-state; 4248 } 4249 } 4250 } 4252 /*** End of TE LSP groupings ***/ 4253 /** 4254 * TE global generic groupings 4255 */ 4256 /* Global named admin-groups configuration data */ 4258 grouping named-admin-groups-properties { 4259 description 4260 "Global named administrative groups configuration 4261 grouping."; 4262 leaf name { 4263 type string; 4264 description 4265 "A string name that uniquely identifies a TE 4266 interface named admin-group."; 4267 } 4268 leaf bit-position { 4269 type uint32; 4270 description 4271 "Bit position representing the administrative group."; 4272 reference 4273 "RFC3209 and RFC7308"; 4274 } 4275 } 4277 grouping named-admin-groups { 4278 description 4279 "Global named administrative groups configuration 4280 grouping."; 4281 container named-admin-groups { 4282 description 4283 "TE named admin groups container."; 4284 list named-admin-group { 4285 if-feature "te-types:extended-admin-groups"; 4286 if-feature "te-types:named-extended-admin-groups"; 4287 key "name"; 4288 description 4289 "List of named TE admin-groups."; 4290 uses named-admin-groups-properties; 4291 } 4292 } 4293 } 4295 /* Global named admin-srlgs configuration data */ 4297 grouping named-srlgs { 4298 description 4299 "Global named SRLGs configuration grouping."; 4300 container named-srlgs { 4301 description 4302 "TE named SRLGs container."; 4303 list named-srlg { 4304 if-feature "te-types:named-srlg-groups"; 4305 key "name"; 4306 description 4307 "A list of named SRLG groups."; 4308 leaf name { 4309 type string; 4310 description 4311 "A string name that uniquely identifies a TE 4312 interface named SRLG."; 4313 } 4314 leaf value { 4315 type te-types:srlg; 4316 description 4317 "An SRLG value."; 4318 } 4319 leaf cost { 4320 type uint32; 4321 description 4322 "SRLG associated cost. Used during path to append 4323 the path cost when traversing a link with this SRLG."; 4324 } 4325 } 4326 } 4327 } 4329 /* Global named paths constraints configuration data */ 4331 grouping path-constraints-common { 4332 description 4333 "Global named path constraints configuration 4334 grouping."; 4335 uses te-types:common-path-constraints-attributes { 4336 description 4337 "The constraints applicable to the path. This includes: 4338 - The path bandwidth constraint 4339 - The path link protection type constraint 4340 - The path setup/hold priority constraint 4341 - path signaling type constraint 4342 - path metric bounds constraint. The unit of path metric 4343 bound is interpreted in the context of the metric-type. 4344 For example for metric-type 'path-metric-loss', the bound 4345 is multiples of the basic unit 0.000003% as described 4346 in RFC7471 for OSPF, and RFC8570 for ISIS. 4347 - path affinity constraints 4348 - path SRLG constraints"; 4350 } 4351 uses te-types:generic-path-disjointness; 4352 uses te-types:path-constraints-route-objects; 4353 container path-in-segment { 4354 presence "The end-to-end tunnel starts in a previous domain; 4355 this tunnel is a segment in the current domain."; 4356 description 4357 "If an end-to-end tunnel crosses multiple domains using 4358 the same technology, some additional constraints have to be 4359 taken in consideration in each domain. 4360 This TE tunnel segment is stitched to the upstream TE tunnel 4361 segment."; 4362 uses te-types:label-set-info; 4363 } 4364 container path-out-segment { 4365 presence 4366 "The end-to-end tunnel is not terminated in this domain; 4367 this tunnel is a segment in the current domain."; 4368 description 4369 "If an end-to-end tunnel crosses multiple domains using 4370 the same technology, some additional constraints have to be 4371 taken in consideration in each domain. 4372 This TE tunnel segment is stitched to the downstream TE 4373 tunnel segment."; 4374 uses te-types:label-set-info; 4375 } 4376 } 4378 grouping named-path-constraints { 4379 description 4380 "Global named path constraints configuration 4381 grouping."; 4382 container named-path-constraints { 4383 description 4384 "TE named path constraints container."; 4385 list named-path-constraint { 4386 if-feature "te-types:named-path-constraints"; 4387 key "name"; 4388 leaf name { 4389 type string; 4390 description 4391 "A string name that uniquely identifies a 4392 path constraint set."; 4393 } 4394 uses path-constraints-common; 4395 description 4396 "A list of named path constraints."; 4397 } 4398 } 4399 } 4401 /* TE globals container data */ 4403 grouping globals-grouping { 4404 description 4405 "Globals TE system-wide configuration data grouping."; 4406 container globals { 4407 description 4408 "Globals TE system-wide configuration data container."; 4409 uses named-admin-groups; 4410 uses named-srlgs; 4411 uses named-path-constraints; 4412 } 4413 } 4415 /* TE tunnels container data */ 4417 grouping tunnels-grouping { 4418 description 4419 "Tunnels TE configuration data grouping."; 4420 container tunnels { 4421 description 4422 "Tunnels TE configuration data container."; 4423 list tunnel { 4424 key "name"; 4425 description 4426 "The list of TE tunnels."; 4427 uses tunnel-properties; 4428 uses tunnel-actions; 4429 uses tunnel-protection-actions; 4430 } 4431 } 4432 } 4434 /* TE LSPs ephemeral state container data */ 4436 grouping lsp-properties-state { 4437 description 4438 "LSPs state operational data grouping."; 4439 leaf source { 4440 type te-types:te-node-id; 4441 description 4442 "Tunnel sender address extracted from 4443 SENDER_TEMPLATE object."; 4444 reference 4445 "RFC3209"; 4446 } 4447 leaf destination { 4448 type te-types:te-node-id; 4449 description 4450 "The tunnel endpoint address extracted from SESSION object."; 4451 reference 4452 "RFC3209"; 4454 } 4455 leaf tunnel-id { 4456 type uint16; 4457 description 4458 "The tunnel identifier used in the SESSION that remains 4459 constant over the life of the tunnel."; 4460 reference 4461 "RFC3209"; 4462 } 4463 leaf extended-tunnel-id { 4464 type yang:dotted-quad; 4465 description 4466 "The LSP Extended Tunnel ID."; 4467 reference 4468 "RFC3209"; 4469 } 4470 leaf operational-state { 4471 type identityref { 4472 base te-types:lsp-state-type; 4473 } 4474 description 4475 "The LSP operational state."; 4476 } 4477 leaf signaling-type { 4478 type identityref { 4479 base te-types:path-signaling-type; 4480 } 4481 description 4482 "The signaling protocol used to set up this LSP."; 4483 } 4484 leaf origin-type { 4485 type enumeration { 4486 enum ingress { 4487 description 4488 "Origin ingress."; 4489 } 4490 enum egress { 4491 description 4492 "Origin egress."; 4493 } 4494 enum transit { 4495 description 4496 "Origin transit."; 4497 } 4498 } 4499 default "ingress"; 4500 description 4501 "The origin of the LSP relative to the location of the local 4502 switch in the path."; 4503 } 4504 leaf lsp-resource-status { 4505 type enumeration { 4506 enum primary { 4507 description 4508 "A primary LSP is a fully established LSP for which the 4509 resource allocation has been committed at the data 4510 plane."; 4511 } 4512 enum secondary { 4513 description 4514 "A secondary LSP is an LSP that has been provisioned 4515 in the control plane only; e.g. resource allocation 4516 has not been committed at the data plane."; 4517 } 4518 } 4519 default "primary"; 4520 description 4521 "LSP resource allocation state."; 4522 reference 4523 "RFC4872, section 4.2.1"; 4524 } 4525 uses protection-restoration-properties-state; 4526 } 4528 /*** End of TE global groupings ***/ 4529 /** 4530 * TE container 4531 */ 4533 container te { 4534 presence "Enable TE feature."; 4535 description 4536 "TE global container."; 4537 /* TE Global Data */ 4538 uses globals-grouping; 4540 /* TE Tunnel Data */ 4541 uses tunnels-grouping; 4543 /* TE LSPs Data */ 4544 uses lsps-grouping; 4545 } 4547 /* TE Tunnel RPCs/execution Data */ 4549 rpc tunnels-path-compute { 4550 description 4551 "TE tunnels RPC nodes."; 4552 input { 4553 container path-compute-info { 4554 /* 4555 * An external path compute module may augment this 4556 * target. 4557 */ 4558 description 4559 "RPC input information."; 4560 } 4561 } 4562 output { 4563 container path-compute-result { 4564 /* 4565 * An external path compute module may augment this 4566 * target. 4567 */ 4568 description 4569 "RPC output information."; 4570 } 4571 } 4572 } 4574 rpc tunnels-actions { 4575 description 4576 "TE tunnels actions RPC"; 4577 input { 4578 container tunnel-info { 4579 description 4580 "TE tunnel information."; 4581 choice filter-type { 4582 mandatory true; 4583 description 4584 "Filter choice."; 4585 case all-tunnels { 4586 leaf all { 4587 type empty; 4588 mandatory true; 4589 description 4590 "Apply action on all TE tunnels."; 4591 } 4592 } 4593 case one-tunnel { 4594 leaf tunnel { 4595 type tunnel-ref; 4596 description 4597 "Apply action on the specific TE tunnel."; 4599 } 4600 } 4601 } 4602 } 4603 container action-info { 4604 description 4605 "TE tunnel action information."; 4606 leaf action { 4607 type identityref { 4608 base tunnel-actions-type; 4609 } 4610 description 4611 "The action type."; 4612 } 4613 leaf disruptive { 4614 when "derived-from-or-self(../action, " 4615 + "'te:tunnel-action-reoptimize')"; 4616 type empty; 4617 description 4618 "Specifies whether or not the reoptimization action 4619 is allowed to be disruptive."; 4620 } 4621 } 4622 } 4623 output { 4624 leaf action-result { 4625 type identityref { 4626 base te-types:te-action-result; 4627 } 4628 description 4629 "The result of the tunnel action operation."; 4630 } 4631 } 4632 } 4633 } 4634 4636 Figure 9: TE Tunnel data model YANG module 4638 6. TE Device YANG Model 4640 The device TE YANG module ('ietf-te-device') models data that is 4641 specific to managing a TE device. This module augments the generic 4642 TE YANG module. 4644 6.1. Module Structure 4646 6.1.1. TE Interfaces 4648 This branch of the model manages TE interfaces that are present on a 4649 device. Examples of TE interface properties are: 4651 * Maximum reservable bandwidth, bandwidth constraints (BC) 4653 * Flooding parameters 4655 - Flooding intervals and threshold values 4657 * interface attributes 4659 - (Extended) administrative groups 4661 - SRLG values 4663 - TE metric value 4665 * Fast reroute backup tunnel properties (such as static, auto- 4666 tunnel) 4668 The derived state associated with interfaces is grouped under the 4669 interface "state" sub-container as shown in Figure 10. This covers 4670 state data such as: 4672 * Bandwidth information: maximum bandwidth, available bandwidth at 4673 different priorities and for each class-type (CT) 4675 * List of admitted LSPs 4677 - Name, bandwidth value and pool, time, priority 4679 * Statistics: state counters, flooding counters, admission counters 4680 (accepted/rejected), preemption counters 4682 * Adjacency information 4684 - Neighbor address 4686 - Metric value 4688 module: ietf-te-device 4689 augment /te:te: 4690 +--rw interfaces 4691 . 4692 +-- rw te-dev:te-attributes 4693 <> 4694 . 4695 +-- ro state 4696 <> 4698 Figure 10: TE interface state YANG subtree 4700 6.2. Tree Diagram 4702 Figure 11 shows the tree diagram of the device TE YANG model defined 4703 in modules 'ietf-te.yang'. 4705 module: ietf-te-device 4706 augment /te:te: 4707 +--rw interfaces 4708 | +--rw threshold-type? enumeration 4709 | +--rw delta-percentage? rt-types:percentage 4710 | +--rw threshold-specification? enumeration 4711 | +--rw up-thresholds* rt-types:percentage 4712 | +--rw down-thresholds* rt-types:percentage 4713 | +--rw up-down-thresholds* rt-types:percentage 4714 | +--rw interface* [interface] 4715 | +--rw interface if:interface-ref 4716 | +--rw te-metric? 4717 | | te-types:te-metric 4718 | +--rw (admin-group-type)? 4719 | | +--:(value-admin-groups) 4720 | | | +--rw (value-admin-group-type)? 4721 | | | +--:(admin-groups) 4722 | | | | +--rw admin-group? 4723 | | | | te-types:admin-group 4724 | | | +--:(extended-admin-groups) 4725 | | | {te-types:extended-admin-groups}? 4726 | | | +--rw extended-admin-group? 4727 | | | te-types:extended-admin-group 4728 | | +--:(named-admin-groups) 4729 | | +--rw named-admin-groups* [named-admin-group] 4730 | | {te-types:extended-admin-groups,te-types:named- 4731 extended-admin-groups}? 4732 | | +--rw named-admin-group leafref 4733 | +--rw (srlg-type)? 4734 | | +--:(value-srlgs) 4735 | | | +--rw values* [value] 4736 | | | +--rw value uint32 4737 | | +--:(named-srlgs) 4738 | | +--rw named-srlgs* [named-srlg] 4739 | | {te-types:named-srlg-groups}? 4740 | | +--rw named-srlg leafref 4741 | +--rw threshold-type? enumeration 4742 | +--rw delta-percentage? 4743 | | rt-types:percentage 4744 | +--rw threshold-specification? enumeration 4745 | +--rw up-thresholds* 4746 | | rt-types:percentage 4747 | +--rw down-thresholds* 4748 | | rt-types:percentage 4749 | +--rw up-down-thresholds* 4750 | | rt-types:percentage 4751 | +--rw switching-capabilities* [switching-capability] 4752 | | +--rw switching-capability identityref 4753 | | +--rw encoding? identityref 4754 | +--ro state 4755 | +--ro te-advertisements-state 4756 | +--ro flood-interval? uint32 4757 | +--ro last-flooded-time? uint32 4758 | +--ro next-flooded-time? uint32 4759 | +--ro last-flooded-trigger? enumeration 4760 | +--ro advertised-level-areas* [level-area] 4761 | +--ro level-area uint32 4762 +--rw performance-thresholds 4763 augment /te:te/te:globals: 4764 +--rw lsp-install-interval? uint32 4765 +--rw lsp-cleanup-interval? uint32 4766 +--rw lsp-invalidation-interval? uint32 4767 augment /te:te/te:tunnels/te:tunnel: 4768 +--rw path-invalidation-action? identityref 4769 +--rw lsp-install-interval? uint32 4770 +--rw lsp-cleanup-interval? uint32 4771 +--rw lsp-invalidation-interval? uint32 4772 augment /te:te/te:lsps/te:lsp: 4773 +--ro lsp-timers 4774 | +--ro life-time? uint32 4775 | +--ro time-to-install? uint32 4776 | +--ro time-to-destroy? uint32 4777 +--ro downstream-info 4778 | +--ro nhop? te-types:te-tp-id 4779 | +--ro outgoing-interface? if:interface-ref 4780 | +--ro neighbor 4781 | | +--ro id? te-gen-node-id 4782 | | +--ro type? enumeration 4783 | +--ro label? rt-types:generalized-label 4784 +--ro upstream-info 4785 +--ro phop? te-types:te-tp-id 4786 +--ro neighbor 4787 | +--ro id? te-gen-node-id 4788 | +--ro type? enumeration 4789 +--ro label? rt-types:generalized-label 4791 rpcs: 4792 +---x link-state-update 4793 +---w input 4794 +---w (filter-type) 4795 +--:(match-all) 4796 | +---w all empty 4797 +--:(match-one-interface) 4798 +---w interface? if:interface-ref 4800 Figure 11: TE Tunnel device model YANG tree diagram 4802 6.3. YANG Module 4804 The device TE YANG module 'ietf-te-device' imports the following 4805 module(s): 4807 * ietf-yang-types and ietf-inet-types defined in [RFC6991] 4809 * ietf-interfaces defined in [RFC8343] 4811 * ietf-routing-types defined in [RFC8294] 4813 * ietf-te-types defined in [RFC8776] 4815 * ietf-te defined in this document 4817 file "ietf-te-device@2021-10-22.yang" 4818 module ietf-te-device { 4819 yang-version 1.1; 4820 namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; 4822 /* Replace with IANA when assigned */ 4824 prefix te-dev; 4826 /* Import TE module */ 4828 import ietf-te { 4829 prefix te; 4830 reference 4831 "draft-ietf-teas-yang-te: A YANG Data Model for Traffic 4832 Engineering Tunnels and Interfaces"; 4833 } 4835 /* Import TE types */ 4837 import ietf-te-types { 4838 prefix te-types; 4839 reference 4840 "RFC8776: Common YANG Data Types for Traffic Engineering."; 4841 } 4842 import ietf-interfaces { 4843 prefix if; 4844 reference 4845 "RFC8343: A YANG Data Model for Interface Management"; 4846 } 4847 import ietf-routing-types { 4848 prefix rt-types; 4849 reference 4850 "RFC8294: Common YANG Data Types for the Routing Area"; 4851 } 4853 organization 4854 "IETF Traffic Engineering Architecture and Signaling (TEAS) 4855 Working Group"; 4856 contact 4857 "WG Web: 4858 WG List: 4860 Editor: Tarek Saad 4861 4863 Editor: Rakesh Gandhi 4864 4866 Editor: Vishnu Pavan Beeram 4867 4869 Editor: Himanshu Shah 4870 4872 Editor: Xufeng Liu 4873 4875 Editor: Igor Bryskin 4876 "; 4877 description 4878 "YANG data module for TE device configurations, 4879 state, and RPCs. The model fully conforms to the 4880 Network Management Datastore Architecture (NMDA). 4882 Copyright (c) 2019 IETF Trust and the persons 4883 identified as authors of the code. All rights reserved. 4885 Redistribution and use in source and binary forms, with or 4886 without modification, is permitted pursuant to, and subject 4887 to the license terms contained in, the Simplified BSD License 4888 set forth in Section 4.c of the IETF Trust's Legal Provisions 4889 Relating to IETF Documents 4890 (https://trustee.ietf.org/license-info). 4891 This version of this YANG module is part of RFC XXXX; see 4892 the RFC itself for full legal notices."; 4894 // RFC Ed.: replace XXXX with actual RFC number and remove this 4895 // note. 4896 // RFC Ed.: update the date below with the date of RFC publication 4897 // and remove this note. 4899 revision 2021-10-22 { 4900 description 4901 "Latest update to TE device YANG module."; 4902 reference 4903 "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels 4904 and Interfaces"; 4905 } 4907 /** 4908 * TE LSP device state grouping 4909 */ 4911 grouping lsps-device-info { 4912 description 4913 "TE LSP device state grouping."; 4914 container lsp-timers { 4915 when "../te:origin-type = 'ingress'" { 4916 description 4917 "Applicable to ingress LSPs only."; 4918 } 4919 description 4920 "Ingress LSP timers."; 4921 leaf life-time { 4922 type uint32; 4923 units "seconds"; 4924 description 4925 "TE LSP lifetime."; 4926 } 4927 leaf time-to-install { 4928 type uint32; 4929 units "seconds"; 4930 description 4931 "TE LSP installation delay time."; 4932 } 4933 leaf time-to-destroy { 4934 type uint32; 4935 units "seconds"; 4936 description 4937 "TE LSP expiration delay time."; 4938 } 4939 } 4940 container downstream-info { 4941 when "../te:origin-type != 'egress'" { 4942 description 4943 "Downstream information of the LSP."; 4944 } 4945 description 4946 "downstream information."; 4947 leaf nhop { 4948 type te-types:te-tp-id; 4949 description 4950 "downstream next-hop address."; 4951 } 4952 leaf outgoing-interface { 4953 type if:interface-ref; 4954 description 4955 "downstream interface."; 4956 } 4957 container neighbor { 4958 uses te:te-generic-node-id; 4959 description 4960 "downstream neighbor address."; 4961 } 4962 leaf label { 4963 type rt-types:generalized-label; 4964 description 4965 "downstream label."; 4966 } 4967 } 4968 container upstream-info { 4969 when "../te:origin-type != 'ingress'" { 4970 description 4971 "Upstream information of the LSP."; 4972 } 4973 description 4974 "upstream information."; 4975 leaf phop { 4976 type te-types:te-tp-id; 4977 description 4978 "upstream next-hop or previous-hop address."; 4979 } 4980 container neighbor { 4981 uses te:te-generic-node-id; 4982 description 4983 "upstream neighbor address."; 4984 } 4985 leaf label { 4986 type rt-types:generalized-label; 4987 description 4988 "upstream label."; 4989 } 4990 } 4991 } 4993 /** 4994 * Device general groupings. 4995 */ 4997 grouping lsp-device-timers { 4998 description 4999 "Device TE LSP timers configs."; 5000 leaf lsp-install-interval { 5001 type uint32; 5002 units "seconds"; 5003 description 5004 "TE LSP installation delay time."; 5005 } 5006 leaf lsp-cleanup-interval { 5007 type uint32; 5008 units "seconds"; 5009 description 5010 "TE LSP cleanup delay time."; 5011 } 5012 leaf lsp-invalidation-interval { 5013 type uint32; 5014 units "seconds"; 5015 description 5016 "TE LSP path invalidation before taking action delay time."; 5017 } 5018 } 5020 /** 5021 * TE global device groupings 5022 */ 5023 /* TE interface container data */ 5024 grouping interfaces-grouping { 5025 description 5026 "TE interface configuration data grouping."; 5027 container interfaces { 5028 description 5029 "Configuration data model for TE interfaces."; 5030 uses te-all-attributes; 5031 list interface { 5032 key "interface"; 5033 description 5034 "TE interfaces."; 5035 leaf interface { 5036 type if:interface-ref; 5037 description 5038 "TE interface name."; 5039 } 5040 /* TE interface parameters */ 5041 uses te-attributes; 5042 } 5043 } 5044 } 5046 /** 5047 * TE interface device groupings 5048 */ 5050 grouping te-admin-groups-config { 5051 description 5052 "TE interface affinities grouping."; 5053 choice admin-group-type { 5054 description 5055 "TE interface administrative groups 5056 representation type."; 5057 case value-admin-groups { 5058 choice value-admin-group-type { 5059 description 5060 "choice of admin-groups."; 5061 case admin-groups { 5062 description 5063 "Administrative group/Resource 5064 class/Color."; 5065 leaf admin-group { 5066 type te-types:admin-group; 5067 description 5068 "TE interface administrative group."; 5069 } 5070 } 5071 case extended-admin-groups { 5072 if-feature "te-types:extended-admin-groups"; 5073 description 5074 "Extended administrative group/Resource 5075 class/Color."; 5076 leaf extended-admin-group { 5077 type te-types:extended-admin-group; 5078 description 5079 "TE interface extended administrative group."; 5080 } 5081 } 5082 } 5083 } 5084 case named-admin-groups { 5085 list named-admin-groups { 5086 if-feature "te-types:extended-admin-groups"; 5087 if-feature "te-types:named-extended-admin-groups"; 5088 key "named-admin-group"; 5089 description 5090 "A list of named admin-group entries."; 5091 leaf named-admin-group { 5092 type leafref { 5093 path "../../../../te:globals/" 5094 + "te:named-admin-groups/te:named-admin-group/" 5095 + "te:name"; 5096 } 5097 description 5098 "A named admin-group entry."; 5099 } 5100 } 5101 } 5102 } 5103 } 5105 /* TE interface SRLGs */ 5107 grouping te-srlgs-config { 5108 description 5109 "TE interface SRLG grouping."; 5110 choice srlg-type { 5111 description 5112 "Choice of SRLG configuration."; 5113 case value-srlgs { 5114 list values { 5115 key "value"; 5116 description 5117 "List of SRLG values that 5118 this link is part of."; 5119 leaf value { 5120 type uint32 { 5121 range "0..4294967295"; 5122 } 5123 description 5124 "Value of the SRLG"; 5125 } 5126 } 5127 } 5128 case named-srlgs { 5129 list named-srlgs { 5130 if-feature "te-types:named-srlg-groups"; 5131 key "named-srlg"; 5132 description 5133 "A list of named SRLG entries."; 5134 leaf named-srlg { 5135 type leafref { 5136 path "../../../../te:globals/" 5137 + "te:named-srlgs/te:named-srlg/te:name"; 5138 } 5139 description 5140 "A named SRLG entry."; 5141 } 5142 } 5143 } 5144 } 5145 } 5147 grouping te-igp-flooding-bandwidth-config { 5148 description 5149 "Configurable items for igp flooding bandwidth 5150 threshold configuration."; 5151 leaf threshold-type { 5152 type enumeration { 5153 enum delta { 5154 description 5155 "'delta' indicates that the local 5156 system should flood IGP updates when a 5157 change in reserved bandwidth >= the specified 5158 delta occurs on the interface."; 5159 } 5160 enum threshold-crossed { 5161 description 5162 "THRESHOLD-CROSSED indicates that 5163 the local system should trigger an update (and 5164 hence flood) the reserved bandwidth when the 5165 reserved bandwidth changes such that it crosses, 5166 or becomes equal to one of the threshold values."; 5167 } 5169 } 5170 description 5171 "The type of threshold that should be used to specify the 5172 values at which bandwidth is flooded. 'delta' indicates that 5173 the local system should flood IGP updates when a change in 5174 reserved bandwidth >= the specified delta occurs on the 5175 interface. Where 'threshold-crossed' is specified, the local 5176 system should trigger an update (and hence flood) the 5177 reserved bandwidth when the reserved bandwidth changes such 5178 that it crosses, or becomes equal to one of the threshold 5179 values."; 5180 } 5181 leaf delta-percentage { 5182 when "../threshold-type = 'delta'" { 5183 description 5184 "The percentage delta can only be specified when the 5185 threshold type is specified to be a percentage delta of 5186 the reserved bandwidth."; 5187 } 5188 type rt-types:percentage; 5189 description 5190 "The percentage of the maximum-reservable-bandwidth 5191 considered as the delta that results in an IGP update 5192 being flooded."; 5193 } 5194 leaf threshold-specification { 5195 when "../threshold-type = 'threshold-crossed'" { 5196 description 5197 "The selection of whether mirrored or separate threshold 5198 values are to be used requires user specified thresholds 5199 to be set."; 5200 } 5201 type enumeration { 5202 enum mirrored-up-down { 5203 description 5204 "mirrored-up-down indicates that a single set of 5205 threshold values should be used for both increasing 5206 and decreasing bandwidth when determining whether 5207 to trigger updated bandwidth values to be flooded 5208 in the IGP TE extensions."; 5209 } 5210 enum separate-up-down { 5211 description 5212 "separate-up-down indicates that a separate 5213 threshold values should be used for the increasing 5214 and decreasing bandwidth when determining whether 5215 to trigger updated bandwidth values to be flooded 5216 in the IGP TE extensions."; 5218 } 5219 } 5220 description 5221 "This value specifies whether a single set of threshold 5222 values should be used for both increasing and decreasing 5223 bandwidth when determining whether to trigger updated 5224 bandwidth values to be flooded in the IGP TE extensions. 5225 'mirrored-up-down' indicates that a single value (or set of 5226 values) should be used for both increasing and decreasing 5227 values, where 'separate-up-down' specifies that the 5228 increasing and decreasing values will be separately 5229 specified."; 5230 } 5231 leaf-list up-thresholds { 5232 when "../threshold-type = 'threshold-crossed'" 5233 + "and ../threshold-specification = 'separate-up-down'" { 5234 description 5235 "A list of up-thresholds can only be specified when the 5236 bandwidth update is triggered based on crossing a 5237 threshold and separate up and down thresholds are 5238 required."; 5239 } 5240 type rt-types:percentage; 5241 description 5242 "The thresholds (expressed as a percentage of the maximum 5243 reservable bandwidth) at which bandwidth updates are to be 5244 triggered when the bandwidth is increasing."; 5245 } 5246 leaf-list down-thresholds { 5247 when "../threshold-type = 'threshold-crossed'" 5248 + "and ../threshold-specification = 'separate-up-down'" { 5249 description 5250 "A list of down-thresholds can only be specified when the 5251 bandwidth update is triggered based on crossing a 5252 threshold and separate up and down thresholds are 5253 required."; 5254 } 5255 type rt-types:percentage; 5256 description 5257 "The thresholds (expressed as a percentage of the maximum 5258 reservable bandwidth) at which bandwidth updates are to be 5259 triggered when the bandwidth is decreasing."; 5260 } 5261 leaf-list up-down-thresholds { 5262 when "../threshold-type = 'threshold-crossed'" 5263 + "and ../threshold-specification = 'mirrored-up-down'" { 5264 description 5265 "A list of thresholds corresponding to both increasing 5266 and decreasing bandwidths can be specified only when an 5267 update is triggered based on crossing a threshold, and 5268 the same up and down thresholds are required."; 5269 } 5270 type rt-types:percentage; 5271 description 5272 "The thresholds (expressed as a percentage of the maximum 5273 reservable bandwidth of the interface) at which bandwidth 5274 updates are flooded - used both when the bandwidth is 5275 increasing and decreasing."; 5276 } 5277 } 5279 /* TE interface metric */ 5281 grouping te-metric-config { 5282 description 5283 "TE interface metric grouping."; 5284 leaf te-metric { 5285 type te-types:te-metric; 5286 description 5287 "TE interface metric."; 5288 } 5289 } 5291 /* TE interface switching capabilities */ 5293 grouping te-switching-cap-config { 5294 description 5295 "TE interface switching capabilities."; 5296 list switching-capabilities { 5297 key "switching-capability"; 5298 description 5299 "List of interface capabilities for this interface."; 5300 leaf switching-capability { 5301 type identityref { 5302 base te-types:switching-capabilities; 5303 } 5304 description 5305 "Switching Capability for this interface."; 5306 } 5307 leaf encoding { 5308 type identityref { 5309 base te-types:lsp-encoding-types; 5310 } 5311 description 5312 "Encoding supported by this interface."; 5313 } 5315 } 5316 } 5318 grouping te-advertisements-state { 5319 description 5320 "TE interface advertisements state grouping."; 5321 container te-advertisements-state { 5322 description 5323 "TE interface advertisements state container."; 5324 leaf flood-interval { 5325 type uint32; 5326 description 5327 "The periodic flooding interval."; 5328 } 5329 leaf last-flooded-time { 5330 type uint32; 5331 units "seconds"; 5332 description 5333 "Time elapsed since last flooding in seconds."; 5334 } 5335 leaf next-flooded-time { 5336 type uint32; 5337 units "seconds"; 5338 description 5339 "Time remained for next flooding in seconds."; 5340 } 5341 leaf last-flooded-trigger { 5342 type enumeration { 5343 enum link-up { 5344 description 5345 "Link-up flooding trigger."; 5346 } 5347 enum link-down { 5348 description 5349 "Link-down flooding trigger."; 5350 } 5351 enum threshold-up { 5352 description 5353 "Bandwidth reservation up threshold."; 5354 } 5355 enum threshold-down { 5356 description 5357 "Bandwidth reservation down threshold."; 5358 } 5359 enum bandwidth-change { 5360 description 5361 "Bandwidth capacity change."; 5362 } 5363 enum user-initiated { 5364 description 5365 "Initiated by user."; 5366 } 5367 enum srlg-change { 5368 description 5369 "SRLG property change."; 5370 } 5371 enum periodic-timer { 5372 description 5373 "Periodic timer expired."; 5374 } 5375 } 5376 default "periodic-timer"; 5377 description 5378 "Trigger for the last flood."; 5379 } 5380 list advertised-level-areas { 5381 key "level-area"; 5382 description 5383 "List of level-areas that the TE interface is advertised 5384 in."; 5385 leaf level-area { 5386 type uint32; 5387 description 5388 "The IGP area or level where the TE interface link state 5389 is advertised in."; 5390 } 5391 } 5392 } 5393 } 5395 /* TE interface attributes grouping */ 5397 grouping te-attributes { 5398 description 5399 "TE attributes configuration grouping."; 5400 uses te-metric-config; 5401 uses te-admin-groups-config; 5402 uses te-srlgs-config; 5403 uses te-igp-flooding-bandwidth-config; 5404 uses te-switching-cap-config; 5405 container state { 5406 config false; 5407 description 5408 "State parameters for interface TE metric."; 5409 uses te-advertisements-state; 5410 } 5412 } 5414 grouping te-all-attributes { 5415 description 5416 "TE attributes configuration grouping for all 5417 interfaces."; 5418 uses te-igp-flooding-bandwidth-config; 5419 } 5421 /*** End of TE interfaces device groupings ***/ 5422 /** 5423 * TE device augmentations 5424 */ 5426 augment "/te:te" { 5427 description 5428 "TE global container."; 5429 /* TE Interface Configuration Data */ 5430 uses interfaces-grouping; 5431 container performance-thresholds { 5432 description 5433 "Performance parameters configurable thresholds."; 5434 } 5435 } 5437 /* TE globals device augmentation */ 5439 augment "/te:te/te:globals" { 5440 description 5441 "Global TE device specific configuration parameters."; 5442 uses lsp-device-timers; 5443 } 5445 /* TE tunnels device configuration augmentation */ 5447 augment "/te:te/te:tunnels/te:tunnel" { 5448 description 5449 "Tunnel device dependent augmentation."; 5450 leaf path-invalidation-action { 5451 type identityref { 5452 base te-types:path-invalidation-action-type; 5453 } 5454 description 5455 "Tunnel path invalidation action."; 5456 } 5457 uses lsp-device-timers; 5458 } 5459 /* TE LSPs device state augmentation */ 5461 augment "/te:te/te:lsps/te:lsp" { 5462 description 5463 "TE LSP device dependent augmentation."; 5464 uses lsps-device-info; 5465 } 5467 /* TE interfaces RPCs/execution Data */ 5469 rpc link-state-update { 5470 description 5471 "Triggers a link state update for the specific interface."; 5472 input { 5473 choice filter-type { 5474 mandatory true; 5475 description 5476 "Filter choice."; 5477 case match-all { 5478 leaf all { 5479 type empty; 5480 mandatory true; 5481 description 5482 "Match all TE interfaces."; 5483 } 5484 } 5485 case match-one-interface { 5486 leaf interface { 5487 type if:interface-ref; 5488 description 5489 "Match a specific TE interface."; 5490 } 5491 } 5492 } 5493 } 5494 } 5495 } 5496 5498 Figure 12: TE device data model YANG module 5500 7. Notifications 5502 Notifications are a key component of any topology data model. 5504 [RFC8639] and [RFC8641] define a subscription mechanism and a push 5505 mechanism for YANG datastores. These mechanisms currently allow the 5506 user to: 5508 * Subscribe to notifications on a per-client basis. 5510 * Specify subtree filters or XML Path Language (XPath) filters so 5511 that only contents of interest will be sent. 5513 * Specify either periodic or on-demand notifications. 5515 8. TE Generic and Helper YANG Modules 5517 9. IANA Considerations 5519 This document registers the following URIs in the IETF XML registry 5520 [RFC3688]. Following the format in [RFC3688], the following 5521 registrations are requested to be made. 5523 URI: urn:ietf:params:xml:ns:yang:ietf-te 5524 Registrant Contact: The IESG. 5525 XML: N/A, the requested URI is an XML namespace. 5527 URI: urn:ietf:params:xml:ns:yang:ietf-te-device 5528 Registrant Contact: The IESG. 5529 XML: N/A, the requested URI is an XML namespace. 5531 This document registers two YANG modules in the YANG Module Names 5532 registry [RFC6020]. 5534 Name: ietf-te 5535 Namespace: urn:ietf:params:xml:ns:yang:ietf-te 5536 Prefix: te 5537 Reference: RFCXXXX 5539 Name: ietf-te-device 5540 Namespace: urn:ietf:params:xml:ns:yang:ietf-te-device 5541 Prefix: te-device 5542 Reference: RFCXXXX 5544 10. Security Considerations 5546 The YANG module specified in this document defines a schema for data 5547 that is designed to be accessed via network management protocols such 5548 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 5549 is the secure transport layer, and the mandatory-to-implement secure 5550 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 5551 is HTTPS, and the mandatory-to-implement secure transport is TLS 5552 [RFC8446]. 5554 The Network Configuration Access Control Model (NACM) [RFC8341] 5555 provides the means to restrict access for particular NETCONF or 5556 RESTCONF users to a preconfigured subset of all available NETCONF or 5557 RESTCONF protocol operations and content. 5559 There are a number of data nodes defined in this YANG module that are 5560 writable/creatable/deletable (i.e., config true, which is the 5561 default). These data nodes may be considered sensitive or vulnerable 5562 in some network environments. Write operations (e.g., edit-config) 5563 to these data nodes without proper protection can have a negative 5564 effect on network operations. These are the subtrees and data nodes 5565 and their sensitivity/vulnerability: 5567 "/te/globals": This module specifies the global TE configurations on 5568 a device. Unauthorized access to this container could cause the 5569 device to ignore packets it should receive and process. 5571 "/te/tunnels": This list specifies the configured TE Tunnels on a 5572 device. Unauthorized access to this list could cause the device to 5573 ignore packets it should receive and process. 5575 "/te/interfaces": This list specifies the configured TE interfaces on 5576 a device. Unauthorized access to this list could cause the device to 5577 ignore packets it should receive and process. 5579 Some of the readable data nodes in this YANG module may be considered 5580 sensitive or vulnerable in some network environments. It is thus 5581 important to control read access (e.g., via get, get-config, or 5582 notification) to these data nodes. These are the subtrees and data 5583 nodes and their sensitivity/vulnerability: 5585 "/te/lsps": this list contains information state about established 5586 LSPs in the network. An attacker can use this information to derive 5587 information about the network topology, and subsequently orchestrate 5588 further attacks. 5590 Some of the RPC operations in this YANG module may be considered 5591 sensitive or vulnerable in some network environments. It is thus 5592 important to control access to these operations. These are the 5593 operations and their sensitivity/vulnerability: 5595 "unnels-actions": using this RPC, an attacker can modify existing 5596 paths that may be carrying live traffic, and hence result to 5597 interruption to services carried over the network. 5599 "/te/tunnels-path-compute": using this RPC, an attacker can retrieve 5600 secured information about the network provider which can be used to 5601 orchestrate further attacks. 5603 The security considerations spelled out in the YANG 1.1 specification 5604 [RFC7950] apply for this document as well. 5606 11. Acknowledgement 5608 The authors would like to thank the members of the multi-vendor YANG 5609 design team who are involved in the definition of this model. 5611 The authors would like to thank Tom Petch for reviewing and providing 5612 useful feedback about the document. The authors would also like to 5613 thank Loa Andersson, Lou Berger, Sergio Belotti, Italo Busi, Carlo 5614 Perocchio, Francesco Lazzeri, Aihua Guo, Dhruv Dhody, for providing 5615 useful feedback on this document. 5617 12. Contributors 5619 Himanshu Shah 5620 Ciena 5622 Email: hshah@ciena.com 5624 Xia Chen 5625 Huawei Technologies 5627 Email: jescia.chenxia@huawei.com 5629 Raqib Jones 5630 Brocade 5632 Email: raqib@Brocade.com 5634 Bin Wen 5635 Comcast 5637 Email: Bin_Wen@cable.comcast.com 5639 13. Appendix A: Examples 5641 This section contains examples of use of the model with RESTCONF 5642 [RFC8040] and JSON encoding. 5644 For the example we will use a 4 nodes MPLS network were RSVP-TE 5645 Tunnels can be setup. The loopbacks of each router are shown. The 5646 router network in figure X will be used across the section 5647 10.0.0.1 10.0.0.2 10.0.0.4 5648 +-----+ +------+ +------+ 5649 | | | | | | 5650 | A +---------+ B +------+ D | 5651 +--+--+ +------+ +--+---+ 5652 | | 5653 | +-------+ | 5654 | | | | 5655 +------------+ C +--------+ 5656 | | 5657 +-------+ 5658 10.0.0.3 5660 Figure 13: Example TE topology 5662 13.1. Basic Tunnel Setup 5664 This example uses the TE Tunnel YANG data model defined in this 5665 document to create an RSVP-TE signaled Tunnel. First, the TE Tunnel 5666 is created with no specific restrictions or constraints (e.g., 5667 protection or restoration). The TE Tunnel ingresses on router A and 5668 egresses on router D. 5670 In this case, the TE Tunnel is created without specifying additional 5671 information about the primary paths. 5673 POST /restconf/data/ietf-te:te/tunnels HTTP/1.1 5674 Host: example.com 5675 Accept: application/yang-data+json 5676 Content-Type: application/yang-data+json 5678 { 5679 "ietf-te:tunnel": [ 5680 { 5681 "name": "Example_LSP_Tunnel_A_2", 5682 "encoding": "te-types:lsp-encoding-packet", 5683 "admin-state": "te-types:tunnel-state-up", 5684 "source": "10.0.0.1", 5685 "destination": "10.0.0.4", 5686 "bidirectional": "false", 5687 "signaling-type": "te-types:path-setup-rsvp" 5688 } 5689 ] 5690 } 5692 13.2. Global Named Path Constraints 5694 This example uses the YANG data model to create a 'named path 5695 constraitnt' that can be reference by TE Tunnels. The path 5696 constraint, in this case, limits the TE Tunnel hops for the computed 5697 path. 5699 POST /restconf/data/ietf-te:te/globals/named-path-constraints HTTP/1.1 5700 Host: example.com 5701 Accept: application/yang-data+json 5702 Content-Type: application/yang-data+json 5704 { 5705 "ietf-te:named-path-constraint": { 5706 "name": "max-hop-3", 5707 "path-metric-bounds": { 5708 "path-metric-bound": { 5709 "metric-type": "te-types:path-metric-hop", 5710 "upper-bound": "3" 5711 } 5712 } 5713 } 5714 } 5716 13.3. Tunnel with Global Path Constraint 5718 In this example, the previously created 'named path constraint' is 5719 applied to the TE Tunnel created in Section 13.1. 5721 POST /restconf/data/ietf-te:te/tunnels HTTP/1.1 5722 Host: example.com 5723 Accept: application/yang-data+json 5724 Content-Type: application/yang-data+json 5726 { 5727 "ietf-te:ietf-tunnel": [ 5728 { 5729 "name": "Example_LSP_Tunnel_A_4_1", 5730 "encoding": "te-types:lsp-encoding-packet", 5731 "description": "Simple_LSP_with_named_path", 5732 "admin-state": "te-types:tunnel-state-up", 5733 "source": "10.0.0.1", 5734 "destination": "10.0.0.4", 5735 "signaling-type": "path-setup-rsvp", 5736 "bidirectional": "false", 5737 "primary-paths": [ 5738 { 5739 "primary-path": { 5740 "name": "Simple_LSP_1", 5741 "use-path-computation": "true", 5742 "named-path-constraint": "max-hop-3" 5743 } 5744 } 5745 ] 5746 } 5747 ] 5748 } 5750 13.4. Tunnel with Per-tunnel Path Constraint 5752 In this example, the a per tunnel path constraint is explicitly 5753 indicated under the TE Tunnel created in Section 13.1 to constrain 5754 the computed path for the tunnel. 5756 POST /restconf/data/ietf-te:te/tunnels HTTP/1.1 5757 Host: example.com 5758 Accept: application/yang-data+json 5759 Content-Type: application/yang-data+json 5761 { 5762 "ietf-te:tunnel": [ 5763 { 5764 "name": "Example_LSP_Tunnel_A_4_2", 5765 "encoding": "te-types:lsp-encoding-packet", 5766 "admin-state": "te-types:tunnel-state-up", 5767 "source": "10.0.0.1", 5768 "destination": "10.0.0.4", 5769 "bidirectional": "false", 5770 "signaling-type": "te-types:path-setup-rsvp", 5771 "primary-paths": { 5772 "primary-path": [ 5773 { 5774 "name": "path1", 5775 "path-metric-bounds": { 5776 "path-metric-bound": [ 5777 { 5778 "metric-type": "te-types:path-metric-hop", 5779 "upper-bound": "3" 5780 } 5781 ] 5782 } 5783 } 5784 ] 5785 } 5786 } 5787 ] 5788 } 5790 13.5. Tunnel State 5792 In this example, the 'GET' query is sent to return the state stored 5793 about the tunnel. 5795 GET /restconf/data/ietf-te:te/tunnels/tunnel="Example_LSP_Tunnel_A_4_1" 5796 /p2p-primary-paths/ HTTP/1.1 5797 Host: example.com 5798 Accept: application/yang-data+json 5800 The request, with status code 200 would include, for example, the 5801 following json: 5803 { 5804 "ietf-te:primary-paths": { 5805 "primary-path": [ 5806 { 5807 "name": "path1", 5808 "path-computation-method": "te-types:path-locally-computed", 5809 "computed-paths-properties": { 5810 "computed-path-properties": [ 5811 { 5812 "k-index": "1", 5813 "path-properties": { 5814 "path-route-objects": { 5815 "path-route-object": [ 5816 { 5817 "index": "1", 5818 "numbered-node-hop": { 5819 "node-id": "10.0.0.2" 5820 } 5821 }, 5822 { 5823 "index": "2", 5824 "numbered-node-hop": { 5825 "node-id": "10.0.0.4" 5826 } 5827 } 5828 ] 5829 } 5830 } 5831 } 5832 ] 5833 }, 5834 "lsps": { 5835 "lsp": [ 5836 { 5837 "tunnel-name": "Example_LSP_Tunnel_A_4_1", 5838 "node": "10.0.0.1 ", 5839 "lsp-id": "25356" 5840 } 5841 ] 5842 } 5843 } 5844 ] 5845 } 5846 } 5848 14. References 5850 14.1. Normative References 5852 [I-D.ietf-teas-yang-rsvp] 5853 Beeram, V. P., Saad, T., Gandhi, R., Liu, X., and I. 5854 Bryskin, "A YANG Data Model for Resource Reservation 5855 Protocol (RSVP)", Work in Progress, Internet-Draft, draft- 5856 ietf-teas-yang-rsvp-16, 19 February 2021, 5857 . 5860 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 5861 Requirement Levels", BCP 14, RFC 2119, 5862 DOI 10.17487/RFC2119, March 1997, 5863 . 5865 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 5866 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 5867 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 5868 . 5870 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 5871 Switching (GMPLS) Signaling Resource ReserVation Protocol- 5872 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, 5873 DOI 10.17487/RFC3473, January 2003, 5874 . 5876 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 5877 DOI 10.17487/RFC3688, January 2004, 5878 . 5880 [RFC3945] Mannie, E., Ed., "Generalized Multi-Protocol Label 5881 Switching (GMPLS) Architecture", RFC 3945, 5882 DOI 10.17487/RFC3945, October 2004, 5883 . 5885 [RFC4206] Kompella, K. and Y. Rekhter, "Label Switched Paths (LSP) 5886 Hierarchy with Generalized Multi-Protocol Label Switching 5887 (GMPLS) Traffic Engineering (TE)", RFC 4206, 5888 DOI 10.17487/RFC4206, October 2005, 5889 . 5891 [RFC4872] Lang, J.P., Ed., Rekhter, Y., Ed., and D. Papadimitriou, 5892 Ed., "RSVP-TE Extensions in Support of End-to-End 5893 Generalized Multi-Protocol Label Switching (GMPLS) 5894 Recovery", RFC 4872, DOI 10.17487/RFC4872, May 2007, 5895 . 5897 [RFC4875] Aggarwal, R., Ed., Papadimitriou, D., Ed., and S. 5898 Yasukawa, Ed., "Extensions to Resource Reservation 5899 Protocol - Traffic Engineering (RSVP-TE) for Point-to- 5900 Multipoint TE Label Switched Paths (LSPs)", RFC 4875, 5901 DOI 10.17487/RFC4875, May 2007, 5902 . 5904 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 5905 the Network Configuration Protocol (NETCONF)", RFC 6020, 5906 DOI 10.17487/RFC6020, October 2010, 5907 . 5909 [RFC6107] Shiomoto, K., Ed. and A. Farrel, Ed., "Procedures for 5910 Dynamically Signaled Hierarchical Label Switched Paths", 5911 RFC 6107, DOI 10.17487/RFC6107, February 2011, 5912 . 5914 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 5915 and A. Bierman, Ed., "Network Configuration Protocol 5916 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 5917 . 5919 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 5920 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 5921 . 5923 [RFC6780] Berger, L., Le Faucheur, F., and A. Narayanan, "RSVP 5924 ASSOCIATION Object Extensions", RFC 6780, 5925 DOI 10.17487/RFC6780, October 2012, 5926 . 5928 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 5929 RFC 6991, DOI 10.17487/RFC6991, July 2013, 5930 . 5932 [RFC7308] Osborne, E., "Extended Administrative Groups in MPLS 5933 Traffic Engineering (MPLS-TE)", RFC 7308, 5934 DOI 10.17487/RFC7308, July 2014, 5935 . 5937 [RFC7551] Zhang, F., Ed., Jing, R., and R. Gandhi, Ed., "RSVP-TE 5938 Extensions for Associated Bidirectional Label Switched 5939 Paths (LSPs)", RFC 7551, DOI 10.17487/RFC7551, May 2015, 5940 . 5942 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 5943 RFC 7950, DOI 10.17487/RFC7950, August 2016, 5944 . 5946 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 5947 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 5948 . 5950 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 5951 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 5952 May 2017, . 5954 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 5955 "Common YANG Data Types for the Routing Area", RFC 8294, 5956 DOI 10.17487/RFC8294, December 2017, 5957 . 5959 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 5960 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 5961 . 5963 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 5964 Access Control Model", STD 91, RFC 8341, 5965 DOI 10.17487/RFC8341, March 2018, 5966 . 5968 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 5969 and R. Wilton, "Network Management Datastore Architecture 5970 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 5971 . 5973 [RFC8343] Bjorklund, M., "A YANG Data Model for Interface 5974 Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, 5975 . 5977 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 5978 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 5979 . 5981 [RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, 5982 E., and A. Tripathy, "Subscription to YANG Notifications", 5983 RFC 8639, DOI 10.17487/RFC8639, September 2019, 5984 . 5986 [RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications 5987 for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, 5988 September 2019, . 5990 [RFC8776] Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 5991 "Common YANG Data Types for Traffic Engineering", 5992 RFC 8776, DOI 10.17487/RFC8776, June 2020, 5993 . 5995 [RFC8795] Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and 5996 O. Gonzalez de Dios, "YANG Data Model for Traffic 5997 Engineering (TE) Topologies", RFC 8795, 5998 DOI 10.17487/RFC8795, August 2020, 5999 . 6001 14.2. Informative References 6003 [I-D.ietf-spring-segment-routing-policy] 6004 Filsfils, C., Talaulikar, K., Voyer, D., Bogdanov, A., and 6005 P. Mattes, "Segment Routing Policy Architecture", Work in 6006 Progress, Internet-Draft, draft-ietf-spring-segment- 6007 routing-policy-14, 25 October 2021, 6008 . 6011 [RFC4427] Mannie, E., Ed. and D. Papadimitriou, Ed., "Recovery 6012 (Protection and Restoration) Terminology for Generalized 6013 Multi-Protocol Label Switching (GMPLS)", RFC 4427, 6014 DOI 10.17487/RFC4427, March 2006, 6015 . 6017 [RFC8800] Litkowski, S., Sivabalan, S., Barth, C., and M. Negi, 6018 "Path Computation Element Communication Protocol (PCEP) 6019 Extension for Label Switched Path (LSP) Diversity 6020 Constraint Signaling", RFC 8800, DOI 10.17487/RFC8800, 6021 July 2020, . 6023 [RFC9012] Patel, K., Van de Velde, G., Sangli, S., and J. Scudder, 6024 "The BGP Tunnel Encapsulation Attribute", RFC 9012, 6025 DOI 10.17487/RFC9012, April 2021, 6026 . 6028 Authors' Addresses 6030 Tarek Saad 6031 Juniper Networks 6033 Email: tsaad@juniper.net 6035 Rakesh Gandhi 6036 Cisco Systems Inc 6038 Email: rgandhi@cisco.com 6039 Xufeng Liu 6040 Volta Networks 6042 Email: xufeng.liu.ietf@gmail.com 6044 Vishnu Pavan Beeram 6045 Juniper Networks 6047 Email: vbeeram@juniper.net 6049 Igor Bryskin 6050 Individual 6052 Email: i_bryskin@yahoo.com 6054 Oscar Gonzalez de Dios 6055 Telefonica 6057 Email: oscar.gonzalezdedios@telefonica.com