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