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