idnits 2.17.1 draft-ietf-teas-yang-te-06.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 146 has weird spacing: '... rw for r...' == Line 147 has weird spacing: '... ro for r...' == Line 874 has weird spacing: '...rw name str...' == Line 885 has weird spacing: '...rw name str...' == Line 975 has weird spacing: '...ro name str...' == (7 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (March 10, 2017) is 2597 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-06 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-06) exists of draft-clemm-netmod-mount-05 Summary: 1 error (**), 0 flaws (~~), 10 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group T. Saad, Ed. 3 Internet-Draft R. Gandhi 4 Intended status: Standards Track Cisco Systems Inc 5 Expires: September 11, 2017 X. Liu 6 Jabil 7 V. Beeram 8 Juniper Networks 9 H. Shah 10 Ciena 11 I. Bryskin 12 Huawei Technologies 13 March 10, 2017 15 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 16 draft-ietf-teas-yang-te-06 18 Abstract 20 This document defines a YANG data model for the configuration and 21 management of Traffic Engineering (TE) interfaces, tunnels and Label 22 Switched Paths (LSPs). The model is divided into YANG modules that 23 classify data into generic, device-specific, technology agnostic, and 24 technology-specific elements. The model also includes module(s) that 25 contain reusable TE data types and data groupings. 27 This model covers data for configuration, operational state, remote 28 procedural calls, and event notifications. 30 Status of This Memo 32 This Internet-Draft is submitted in full conformance with the 33 provisions of BCP 78 and BCP 79. 35 Internet-Drafts are working documents of the Internet Engineering 36 Task Force (IETF). Note that other groups may also distribute 37 working documents as Internet-Drafts. The list of current Internet- 38 Drafts is at http://datatracker.ietf.org/drafts/current/. 40 Internet-Drafts are draft documents valid for a maximum of six months 41 and may be updated, replaced, or obsoleted by other documents at any 42 time. It is inappropriate to use Internet-Drafts as reference 43 material or to cite them other than as "work in progress." 45 This Internet-Draft will expire on September 11, 2017. 47 Copyright Notice 49 Copyright (c) 2017 IETF Trust and the persons identified as the 50 document authors. All rights reserved. 52 This document is subject to BCP 78 and the IETF Trust's Legal 53 Provisions Relating to IETF Documents 54 (http://trustee.ietf.org/license-info) in effect on the date of 55 publication of this document. Please review these documents 56 carefully, as they describe your rights and restrictions with respect 57 to this document. Code Components extracted from this document must 58 include Simplified BSD License text as described in Section 4.e of 59 the Trust Legal Provisions and are provided without warranty as 60 described in the Simplified BSD License. 62 Table of Contents 64 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 65 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 66 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 67 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 68 1.4. Open Issues and Next Steps . . . . . . . . . . . . . . . 5 69 1.4.1. TE Technology Models . . . . . . . . . . . . . . . . 5 70 1.4.2. State Data Organization . . . . . . . . . . . . . . . 6 71 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 7 72 2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 7 73 2.2. Design Considerations . . . . . . . . . . . . . . . . . . 9 74 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 10 75 2.4. Configuration Inheritance . . . . . . . . . . . . . . . . 10 76 3. TE Generic Model Organization . . . . . . . . . . . . . . . . 10 77 3.1. Global Configuration and State Data . . . . . . . . . . . 11 78 3.2. Interfaces Configuration and State Data . . . . . . . . . 12 79 3.3. Tunnels Configuration and State Data . . . . . . . . . . 13 80 3.3.1. Tunnel Compute-Only Mode . . . . . . . . . . . . . . 14 81 3.3.2. Tunnel Hierarchical Link Endpoint . . . . . . . . . . 15 82 3.4. TE LSPs State Data . . . . . . . . . . . . . . . . . . . 15 83 3.5. Global RPC Data . . . . . . . . . . . . . . . . . . . . . 15 84 3.6. Interface RPC Data . . . . . . . . . . . . . . . . . . . 15 85 3.7. Tunnel RPC Data . . . . . . . . . . . . . . . . . . . . . 15 86 3.8. Global Notifications Data . . . . . . . . . . . . . . . . 16 87 3.9. Interfaces Notifications Data . . . . . . . . . . . . . . 16 88 3.10. Tunnel Notification Data . . . . . . . . . . . . . . . . 16 89 4. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 33 90 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 125 91 6. Security Considerations . . . . . . . . . . . . . . . . . . . 126 92 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 127 93 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 127 94 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 128 95 9.1. Normative References . . . . . . . . . . . . . . . . . . 128 96 9.2. Informative References . . . . . . . . . . . . . . . . . 129 97 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 130 99 1. Introduction 101 YANG [RFC6020] is a data definition language that was introduced to 102 define the contents of a conceptual data store that allows networked 103 devices to be managed using NETCONF [RFC6241]. YANG is proving 104 relevant beyond its initial confines, as bindings to other interfaces 105 (e.g. RESTCONF [RFC8040]) and encoding other than XML (e.g. JSON) 106 are being defined. Furthermore, YANG data models can be used as the 107 basis of implementation for other interfaces, such as CLI and 108 programmatic APIs. 110 This document describes the YANG data models for TE Tunnels, Label 111 Switched Paths (LSPs) and TE interfaces that cover data applicable to 112 generic or device-independent, device-specific, Multiprotocol Label 113 Switching (MPLS) technology specific, and Segment Routing (SR) TE 114 technology. It also describes helper modules that define TE 115 grouping(s) and data types that can be imported by other modules. 117 The document defines the high-level relationship between the modules 118 defined in this document, as well as other external protocol modules. 119 It is expected other data plane technology model(s) will augment the 120 TE generic model. Also, the TE generic model does not include any 121 data specific to a signaling protocol. It is expected YANG models 122 for TE signaling protocols, such as RSVP-TE ([RFC3209], [RFC3473]), 123 or Segment-Routing TE (SR-TE) will augment the TE generic module. 125 1.1. Terminology 127 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 128 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 129 document are to be interpreted as described in BCP 14, RFC 2119 130 [RFC2119]. 132 1.2. Tree Diagram 134 A simplified graphical representation of the data model is presented 135 in each section of the model. The following notations are used for 136 the YANG model data tree representation. 138 140 is one of: 141 + for current 142 x for deprecated 143 o for obsolete 145 is one of: 146 rw for read-write configuration data 147 ro for read-only non-configuration data 148 -x for execution rpcs 149 -n for notifications 151 is the name of the node 153 If the node is augmented into the tree from another module, its name 154 is printed as : 156 is one of: 157 ? for an optional leaf or node 158 ! for a presence container 159 * for a leaf-list or list 160 Brackets [] for a list's keys 161 Curly braces {} for optional feature that make node 162 conditional 163 Colon : for marking case nodes 164 Ellipses ("...") subtree contents not shown 166 Parentheses enclose choice and case nodes, and case nodes are also 167 marked with a colon (":"). 169 is the name of the type for leafs and leaf-lists. 171 1.3. Prefixes in Data Node Names 173 In this document, names of data nodes and other data model objects 174 are prefixed using the standard prefix associated with the 175 corresponding YANG imported modules, as shown in Table 1. 177 +---------------+--------------------+---------------+ 178 | Prefix | YANG module | Reference | 179 +---------------+--------------------+---------------+ 180 | yang | ietf-yang-types | [RFC6991] | 181 | inet | ietf-inet-types | [RFC6991] | 182 | te | ietf-te | this document | 183 | te-types | ietf-te-types | this document | 184 | te-mpls-types | ietf-te-mpls-types | this document | 185 | te-dev | ietf-te-device | this document | 186 | te-mpls | ietf-te-mpls | this document | 187 | te-sr-mpls | ietf-te-sr-mpls | this document | 188 +---------------+--------------------+---------------+ 190 Table 1: Prefixes and corresponding YANG modules 192 1.4. Open Issues and Next Steps 194 This section describes the number of open issues that are under 195 consideration. As issues are resolved, this section will be updated 196 to reflect this and be left there for reference. It is expected that 197 all the issues in this section will be addressed before the document 198 will be ready for final publication. 200 1.4.1. TE Technology Models 202 This document describes the generic TE YANG data model that is 203 independent of any dataplane technology. One of the design 204 objectives is to allow specific data plane technologies models to 205 reuse the generic TE data model and possibly augment it with 206 technology specific data model(s). There are multiple options being 207 considered to achieve this: 209 o The generic TE model, including the lists of TE tunnels, LSPs, and 210 interfaces can be defined and rooted at the top of the YANG tree. 211 Specific leaf(s) under the TE tunnel, LSP, or interface, in this 212 case, can identify the specific technology layer that it belongs 213 to. This approach implies a single list for each of TE tunnel(s), 214 LSP(s), and interface(s) in the model carries elements of 215 different technology layers. 217 o An instance of the generic TE YANG model can be mounted in the 218 YANG tree once for each TE technology layer(s). This approach 219 provides separation of elements belonging to different technology 220 layers into separate lists per layer in the data model. For 221 example, the proposal in [I-D.clemm-netmod-mount] allows for this 222 capability by "mounting" the YANG data model at a specific target. 224 o The generic TE data node(s) and TE list(s) for tunnels, LSPs, and 225 interfaces are defined as grouping(s) in a separate module. The 226 specific technology layer imports the generic TE groupings and 227 uses them their respective technology specific module. 229 This revision of the model leverages the LSP encoding type of a 230 tunnel (and interfaces) to identify the specific technology 231 associated with the a TE interfaces, tunnel(s) and the LSP(s). For 232 example, for an MPLS TE LSP, the LSP encoding type is assumed to be 233 "lsp-encoding-packet". 235 Finally, the TE generic model does not include any signaling protocol 236 data. It is expected that TE signaling protocol module(s) will be 237 defined in other document(s) that will cover the RSVP-TE ([RFC3209], 238 [RFC3473]), and Segment-Routing TE (SR-TE) model and that augment the 239 TE generic model. 241 1.4.2. State Data Organization 243 Pure state data (for example, ephemeral or protocol derived state 244 objects) can be modeled using one of the options below: 246 o Contained inside a read-write container, in a "state" sub- 247 container, as shown in Figure 3 249 o Contained inside a separate read-only container, for example a 250 lsps-state container 252 The first option allows for placing configuration data in the read- 253 write "config" sub-container, and by placing state data under the 254 read-only "state" sub-container of the parent container. However, 255 when using approach for ephemeral or purely derived state (e.g. auto 256 tunnels), and since in this case the state sub-container hangs off a 257 read-write parent container, it will be possible to delete or modify 258 the parent container and subsequently the ephemeral read-only state 259 contained within (see Figure 3). 261 The second option entails defining a new read-only parent container 262 in the model (e.g. neighbors-state) that holds the data. 264 This revision of the draft adopts the first option for ephemeral or 265 state derived tunnels. Further discussions on this topic are 266 expected to close on the best choice to adopt. 268 2. Model Overview 270 The data model defined in this document covers the core TE features 271 that are commonly supported across different vendor implementations. 272 The support of extended or vendor specific TE feature(s) are expected 273 to be in augmentations to the data models defined in this document. 275 Throughout the model, the approach described in 276 [I-D.openconfig-netmod-opstate] is adopted to represent data 277 pertaining to configuration intended state, applied state and derived 278 state data elements. Each container in the model hold a "config" and 279 "state" sub-container. The "config" sub-container is used to 280 represent the intended configurable parameters, and the state sub- 281 container is used to represent both the applied configurable 282 parameters and any derived state, such as counters or statistics 283 information. 285 The decision to use this approach was made to better align with the 286 MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model] 287 and maximize reusability of groupings defined in this document and 288 allow for possible convergence between the two models. 290 2.1. Module(s) Relationship 292 The TE generic model defined in "ietf-te.yang" covers the building 293 blocks that are device independent and agnostic of any specific 294 technology or control plane instances. The TE device model defined 295 in "ietf-te-device.yang" augments the TE generic model and covers 296 data that is specific to a device - for example, attributes of TE 297 interfaces, or TE timers that are local to a TE node. 299 The TE data relevant to a specific instantiations of data plane 300 technology exists in a separate YANG module(s) that augment the TE 301 generic model. For example, the MPLS-TE module "ietf-te-mpls.yang" 302 is defined in Figure 10 and augments the TE generic model as shown in 303 Figure 1. Similarly, the module "ietf-te-sr-mpls.yang" models the 304 Segment Routing (SR) TE specific data and augments the TE generic and 305 MPLS-TE model(s). 307 The TE data relevant to a TE specific signaling protocol 308 instantiation is outside the scope and is covered in other documents. 309 For example, the RSVP-TE [RFC3209] YANG model augmentation of the TE 310 model is covered in [I-D.ietf-teas-yang-rsvp], and other signaling 311 protocol model(s) (e.g. for Segment-Routing TE) are expected to also 312 augment the TE generic model. 314 ^: import 315 TE generic +---------+ o: augment 316 module | ietf-te |o-------------+ 317 +---------+ \ 318 | o \ \ 319 | |\ \ \ 320 | | \ V \ 321 | | +----------------+ \ 322 | | | ietf-te-device | TE device module 323 | | +----------------+ \ 324 | | o o \ 325 | | / \ \ 326 v | / V V 327 +--------------+ +---------------+ 328 RSVP-TE module | ietf-rsvp-te |o . | ietf-te-mpls | 329 +--------------+ \ +---------------+ 330 ^ \ o 331 | \ +-----------------+ 332 | \ | ietf-te-sr-mpls | 333 | \ +-----------------+ 334 | \ 335 o +-------------------+ 336 +-----------+ | ietf-rsvp-otn-te | 337 RSVP module | ietf-rsvp | +-------------------+ 338 +-----------+ RSVP-TE with OTN 339 extensions 340 (shown for illustration 341 not in this document) 343 Figure 1: Relationship of TE module(s) with other signaling protocol 344 modules 346 +---------+ 347 | ietf-te | ^: import 348 +---------+ o: augment 349 import ^ 350 | 351 | 352 +---------------+ 353 | ietf-te-types | 354 +---------------+ 355 o o 356 | \ 357 | \ 358 +-------------------+ +-------------------+ 359 | ietf-te-mpls-types | | ietf-te-otn-types | 360 +-------------------+ +-------------------+ 361 (shown for illustration 362 not in this document) 364 Figure 2: Relationship between generic and technology specific TE 365 types modules 367 2.2. Design Considerations 369 The following considerations with respect data organization are taken 370 into account: 372 o reusable data elements are grouped into separate TE types 373 module(s) that can be readily imported by other modules whenever 374 needed 376 o reusable TE data types that are data plane independent are grouped 377 in the TE generic types module "ietf-te-types.yang" 379 o reusable TE data elements that are data plane specific (e.g. 380 packet MPLS or switching technologies as defined in [RFC3473]) are 381 expected to be grouped in a technology- specific types module, 382 e.g. "ietf-te-mpls-types.yang". It is expected that technology 383 specific types will augment TE generic types as shown in Figure 2 385 o The TE generic model contains device independent data and can be 386 used to model data off a device (e.g. on a controller). The TE 387 data that is device-specific are grouped in a separate module as 388 shown in Figure 1. 390 o In general, little information in the model is designated as 391 "mandatory", to allow freedom to vendors to adapt the data model 392 to their specific product implementation. 394 2.3. Optional Features 396 Optional features that are beyond the base TE model are left to the 397 specific vendor to decide support using vendor model augmentation 398 and/or using feature checks. 400 This model declares a number of TE functions as features (such as 401 P2MP-TE, soft-preemption etc.). 403 2.4. Configuration Inheritance 405 The defined data model supports configuration inheritance for 406 tunnels, paths, and interfaces. Data elements defined in the main 407 container (e.g. that encompasses the list of tunnels, interfaces, or 408 paths) are assumed to apply equally to all elements of the list, 409 unless overridden explicitly for a certain element of a list (e.g. a 410 tunnel, interface or path). 412 3. TE Generic Model Organization 414 The TE generic model covers configuration, state, RPCs, and 415 notifications data pertaining to TE global parameters, interfaces, 416 tunnels and LSPs parameters that are device independent. 418 The container "te" is the top level container in this data model. 419 The presence of this container is expected to enable TE function 420 system wide. 422 The approach described in [I-D.openconfig-netmod-opstate] allows for 423 modeling the intended and respective applied and derived state. The 424 TE state data in this model falls into one of the following 425 categories: 427 o State corresponding to applied configuration 429 o State corresponding to derived state, counters, stats, etc. 431 o State corresponding to ephemeral data (e.g. LSPs, etc.) 433 Data for the first two categories are contained under the respective 434 "state" sub-container of the intended (e.g. tunnel). The last 435 category falls under a separate - e.g. lsps-state- container that 436 contains the attributes of a purely derived state data (e.g. 437 ephemeral objects) that are not associated with any configuration as 438 shown in Figure 3. 440 module: ietf-te 441 +--rw te! 442 +--rw globals 443 +-- rw config 444 <> 445 . 446 +-- ro state 447 <> 448 <> 449 . 450 . 452 +--rw tunnels 453 +-- rw config 454 <> 455 . 456 +-- ro state 457 <> 458 <> 459 . 460 . 461 rpcs: 462 +---x globals-rpc 463 +---x tunnels-rpc 464 notifications: 465 +---n globals-notif 466 +---n tunnels-notif 468 Figure 3: TE generic highlevel model view 470 3.1. Global Configuration and State Data 472 This branch of the data model covers configurations that control TE 473 features behavior system-wide, and its respective state. Examples of 474 such configuration data are: 476 o Table of named SRLG mappings 478 o Table of named (extended) administrative groups mappings 480 o Table of named explicit paths to be referenced by TE tunnels 482 o Table of named path-constraints sets 484 o Auto-bandwidth global parameters 486 o TE diff-serve TE-class maps 487 o System-wide capabilities for LSP reoptimization (included in the 488 TE device model) 490 * Reoptimization timers (periodic interval, LSP installation and 491 cleanup) 493 o System-wide capabilities for TE state flooding (included in the TE 494 device model) 496 * Periodic flooding interval 498 o Global capabilities that affect the originating, traversing and 499 terminating LSPs. For example: 501 * Path selection parameters (e.g. metric to optimize, etc.) 503 * Path or segment protection parameters 505 The approach described in [I-D.openconfig-netmod-opstate] is utilized 506 to include the global state data under the global "state" sub- 507 container as shown in Figure 3. 509 Examples of such states are: 511 o Global statistics (signaling, admission, preemption, flooding) 513 o Global counters (number of tunnels/LSPs/interfaces) 515 3.2. Interfaces Configuration and State Data 517 This branch of the model covers configuration and state data items 518 corresponding to TE interfaces that are present on a specific device. 519 A new module is introduced that holds the TE device specific 520 properties. 522 Examples of TE interface properties are: 524 o Maximum reservable bandwidth, bandwidth constraints (BC) 526 o Flooding parameters 528 * Flooding intervals and threshold values 530 o Fast reroute backup tunnel properties (such as static, auto- 531 tunnel) 533 o interface attributes 534 * (Extended) administrative groups 536 * SRLG values 538 * TE metric value 540 The state corresponding to the TE interfaces applied configuration, 541 protocol derived state, and stats and counters all fall under the 542 interface "state" sub-container as shown in Figure 4 below: 544 module: ietf-te 545 +--rw te! 546 +--rw interfaces 547 . 548 +-- rw te-attributes 549 +-- rw config 550 <> 551 . 552 +-- ro state 553 <> 554 <> 556 Figure 4: TE interface state 558 This covers state data for TE interfaces such as: 560 o Bandwidth information: maximum bandwidth, available bandwidth at 561 different priorities and for each class-type (CT) 563 o List of admitted LSPs 565 * Name, bandwidth value and pool, time, priority 567 o Statistics: state counters, flooding counters, admission counters 568 (accepted/rejected), preemption counters 570 o Adjacency information 572 * Neighbor address 574 * Metric value 576 3.3. Tunnels Configuration and State Data 578 This branch of the model covers intended, and corresponding applied 579 configuration for tunnels. As well, it holds possible derived state 580 pertaining to TE tunnels. 582 The approach described in [I-D.openconfig-netmod-opstate] is utilized 583 for the inclusion of operational and statistical data as shown in 584 Figure 5. 586 module: ietf-te 587 +--rw te! 588 +--rw tunnels 589 . 590 +-- rw config 591 <> 592 . 593 +-- ro state 594 <> 595 <> 597 Figure 5: TE interface state tree 599 Examples of tunnel configuration date for TE tunnels: 601 o Name and type (e.g. P2P, P2MP) of the TE tunnel 603 o Admin-state 605 o Set of primary and corresponding secondary paths 607 o Routing usage (auto-route announce, forwarding adjacency) 609 o Policy based routing (PBR) parameters 611 3.3.1. Tunnel Compute-Only Mode 613 By default, a configured TE tunnel is provisioned so it can carry 614 traffic as soon as a valid path is computed and an LSP instantiated 615 in the network. In other cases, a TE tunnel may be provisioned for 616 computed path reporting purposes without the need to instantiate an 617 LSP or commit resources in the network. In such a case, a tunnel 618 configuration in "compute-only" mode to distinguish it from default 619 tunnel behavior. 621 A "compute-only" TE tunnel is configured as a usual TE tunnel with 622 associated path constraint(s) and properties on a device or 623 controller. The device or controller is expected to compute the 624 feasible path(s) subject to configured constraints for of "compute- 625 only" tunnel and reflect the computed path(s) in the LSP(s) Record- 626 Route Object (RRO) list. A client may query "on-demand" the 627 "compute-only" TE tunnel computed path(s) properties by querying the 628 state of the tunnel. Alternatively, the client can subscribe on the 629 "compute-only" TE tunnel to be notified of computed path(s) and 630 whenever it changes. 632 3.3.2. Tunnel Hierarchical Link Endpoint 634 TE LSPs can be set up in MPLS or Generalized MPLS (GMPLS) networks to 635 be used to form links to carry traffic in in other (client) networks 636 [RFC6107]. In this case, the model introduces the TE tunnel 637 hierarchical link endpoint parameters to identify the specific link 638 in the client layer that the TE tunnel is associated with. 640 3.4. TE LSPs State Data 642 TE LSPs are derived state data that is usually instantiated via 643 signaling protocols. TE LSPs exists on routers as ingress (starting 644 point of LSP), transit (mid-point of LSP ), or egress (termination 645 point of the LSP). TE LSPs are distinguished by the 5 tuple, and LSP 646 type (P2P or P2MP). In the model, the nodes holding LSPs data exist 647 in the read-only lsps-state list as show in Figure 6. 649 3.5. Global RPC Data 651 This branch of the model covers system-wide RPC execution data to 652 trigger actions and optionally expect responses. Examples of such TE 653 commands are to: 655 o Clear global TE statistics of various features 657 3.6. Interface RPC Data 659 This collection of data in the model defines TE interface RPC 660 execution commands. Examples of these are to: 662 o Clear TE statistics for all or for individual TE interfaces 664 o Trigger immediate flooding for one or all TE interfaces 666 3.7. Tunnel RPC Data 668 This branch of the model covers TE tunnel RPC execution data to 669 trigger actions and optionally expect responses. Examples of such TE 670 commands are: 672 o Clear statistics for all or for individual tunnels 674 o Trigger the tear and setup of existing tunnels or LSPs. 676 3.8. Global Notifications Data 678 This branch of the model covers system-wide notifications data. The 679 node notifies the registered events to the server using the defined 680 notification messages. 682 3.9. Interfaces Notifications Data 684 This branch of the model covers TE interfaces related notifications 685 data. The TE interface configuration is used for specific events 686 registration. Notifications are sent for registered events to the 687 server. Example events for TE interfaces are: 689 o Interface creation and deletion 691 o Interface state transitions 693 o (Soft) preemption triggers 695 o Fast reroute activation 697 3.10. Tunnel Notification Data 699 This branch of the model covers TE tunnels related notifications 700 data. The TE tunnels configuration is used for specific events 701 registration. Notifications are sent for registered events to the 702 server. Example events for TE tunnels are: 704 o Tunnel creation and deletion events 706 o Tunnel state up/down changes 708 o Tunnel state reoptimization changes 710 Figure Figure 6 below shows the tree diagram of the YANG model 711 defined in modules: ietf-te.yang, ietf-te-device.yang, ietf-te- 712 mpls.yang, and ietf-te-sr.yang. 714 module: ietf-te 715 +--rw te! 716 +--rw globals 717 | +--rw named-admin-groups 718 | | +--rw named-admin-group* [name] 719 {te-types:extended-admin-groups, 720 te-types:named-extended-admin-groups}? 721 | | +--rw name -> ../config/name 722 | | +--rw config 723 | | | +--rw name? string 724 | | | +--rw bit-position? uint32 725 | | +--ro state 726 | | +--ro name? string 727 | | +--ro bit-position? uint32 728 | +--rw named-srlgs 729 | | +--rw named-srlg* [name] {te-types:named-srlg-groups}? 730 | | +--rw name -> ../config/name 731 | | +--rw config 732 | | | +--rw name? string 733 | | | +--rw group? te-types:srlg 734 | | | +--rw cost? uint32 735 | | +--ro state 736 | | +--ro name? string 737 | | +--ro group? te-types:srlg 738 | | +--ro cost? uint32 739 | +--rw named-explicit-paths 740 | | +--rw named-explicit-path* [name] 741 | | +--rw name -> ../config/name 742 | | +--rw config 743 | | | +--rw name? string 744 | | | +--rw explicit-route-objects 745 | | | +--rw explicit-route-object* [index] 746 | | | +--rw index -> ../config/index 747 | | | +--rw explicit-route-usage? identityref 748 | | | +--rw config 749 | | | | +--rw index? uint32 750 | | | | +--rw (type)? 751 | | | | +--:(ip-address) 752 | | | | | +--rw ip-address-hop 753 | | | | | +--rw address? inet:ip-address 754 | | | | | +--rw hop-type? te-hop-type 755 | | | | +--:(as-number) 756 | | | | | +--rw as-number-hop 757 | | | | | +--rw as-number? binary 758 | | | | | +--rw hop-type? te-hop-type 759 | | | | +--:(unnumbered-link) 760 | | | | | +--rw unnumbered-hop 761 | | | | | +--rw router-id? inet:ip-address 762 | | | | | +--rw interface-id? uint32 763 | | | | | +--rw hop-type? te-hop-type 764 | | | | +--:(label) 765 | | | | | +--rw label-hop 766 | | | | | +--rw value? 767 rt-types:generalized-label 768 | | | | +--:(sid) 769 | | | | +--rw sid-hop 770 | | | | +--rw sid? 771 rt-types:generalized-label 773 | | | +--ro state 774 | | | +--ro index? uint32 775 | | | +--ro (type)? 776 | | | +--:(ip-address) 777 | | | | +--ro ip-address-hop 778 | | | | +--ro address? inet:ip-address 779 | | | | +--ro hop-type? te-hop-type 780 | | | +--:(as-number) 781 | | | | +--ro as-number-hop 782 | | | | +--ro as-number? binary 783 | | | | +--ro hop-type? te-hop-type 784 | | | +--:(unnumbered-link) 785 | | | | +--ro unnumbered-hop 786 | | | | +--ro router-id? inet:ip-address 787 | | | | +--ro interface-id? uint32 788 | | | | +--ro hop-type? te-hop-type 789 | | | +--:(label) 790 | | | | +--ro label-hop 791 | | | | +--ro value? 792 rt-types:generalized-label 793 | | | +--:(sid) 794 | | | +--ro sid-hop 795 | | | +--ro sid? 796 rt-types:generalized-label 797 | | +--ro state 798 | | +--ro name? string 799 | | +--ro explicit-route-objects 800 | | +--ro explicit-route-object* [index] 801 | | +--ro index -> ../config/index 802 | | +--ro explicit-route-usage? identityref 803 | | +--ro config 804 | | | +--ro index? uint32 805 | | | +--ro (type)? 806 | | | +--:(ip-address) 807 | | | | +--ro ip-address-hop 808 | | | | +--ro address? inet:ip-address 809 | | | | +--ro hop-type? te-hop-type 810 | | | +--:(as-number) 811 | | | | +--ro as-number-hop 812 | | | | +--ro as-number? binary 813 | | | | +--ro hop-type? te-hop-type 814 | | | +--:(unnumbered-link) 815 | | | | +--ro unnumbered-hop 816 | | | | +--ro router-id? inet:ip-address 817 | | | | +--ro interface-id? uint32 818 | | | | +--ro hop-type? te-hop-type 819 | | | +--:(label) 820 | | | | +--ro label-hop 821 | | | | +--ro value? 822 rt-types:generalized-label 823 | | | +--:(sid) 824 | | | +--ro sid-hop 825 | | | +--ro sid? 826 rt-types:generalized-label 827 | | +--ro state 828 | | +--ro index? uint32 829 | | +--ro (type)? 830 | | +--:(ip-address) 831 | | | +--ro ip-address-hop 832 | | | +--ro address? inet:ip-address 833 | | | +--ro hop-type? te-hop-type 834 | | +--:(as-number) 835 | | | +--ro as-number-hop 836 | | | +--ro as-number? binary 837 | | | +--ro hop-type? te-hop-type 838 | | +--:(unnumbered-link) 839 | | | +--ro unnumbered-hop 840 | | | +--ro router-id? inet:ip-address 841 | | | +--ro interface-id? uint32 842 | | | +--ro hop-type? te-hop-type 843 | | +--:(label) 844 | | | +--ro label-hop 845 | | | +--ro value? 846 rt-types:generalized-label 847 | | +--:(sid) 848 | | +--ro sid-hop 849 | | +--ro sid? 850 rt-types:generalized-label 851 | +--rw named-path-constraints 852 | | +--rw named-path-constraint* [name] 853 | | +--rw name -> ../config/name 854 | | +--rw config 855 | | | +--rw name? string 856 | | | +--rw topology-id? te-types:te-topology-id 857 | | | +--rw cost-limit? uint32 858 | | | +--rw hop-limit? uint8 859 | | | +--rw metric-type? identityref 860 | | | +--rw tiebreaker-type? identityref 861 | | | +--rw ignore-overload? boolean 862 | | | +--rw setup-priority? uint8 863 | | | +--rw hold-priority? uint8 864 | | | +--rw path-affinities 865 | | | | +--rw (style)? 866 | | | | +--:(values) 867 | | | | | +--rw value? uint32 868 | | | | | +--rw mask? uint32 869 | | | | +--:(named) 870 | | | | +--rw constraints* [usage] 871 | | | | +--rw usage identityref 872 | | | | +--rw constraint 873 | | | | +--rw affinity-names* [name] 874 | | | | +--rw name string 875 | | | +--rw path-srlgs 876 | | | | +--rw (style)? 877 | | | | +--:(values) 878 | | | | | +--rw usage? identityref 879 | | | | | +--rw values* te-types:srlg 880 | | | | +--:(named) 881 | | | | +--rw constraints* [usage] 882 | | | | +--rw usage identityref 883 | | | | +--rw constraint 884 | | | | +--rw srlg-names* [name] 885 | | | | +--rw name string 886 | | | +--rw explicit-route-objects 887 | | | | +--rw explicit-route-object* [index] 888 | | | | +--rw index -> ../config/index 889 | | | | +--rw explicit-route-usage? identityref 890 | | | | +--rw config 891 | | | | | +--rw index? uint32 892 | | | | | +--rw (type)? 893 | | | | | +--:(ip-address) 894 | | | | | | +--rw ip-address-hop 895 | | | | | | +--rw address? inet:ip-address 896 | | | | | | +--rw hop-type? te-hop-type 897 | | | | | +--:(as-number) 898 | | | | | | +--rw as-number-hop 899 | | | | | | +--rw as-number? binary 900 | | | | | | +--rw hop-type? te-hop-type 901 | | | | | +--:(unnumbered-link) 902 | | | | | | +--rw unnumbered-hop 903 | | | | | | +--rw router-id? inet:ip-address 904 | | | | | | +--rw interface-id? uint32 905 | | | | | | +--rw hop-type? te-hop-type 906 | | | | | +--:(label) 907 | | | | | | +--rw label-hop 908 | | | | | | +--rw value? 909 rt-types:generalized-label 910 | | | | | +--:(sid) 911 | | | | | +--rw sid-hop 912 | | | | | +--rw sid? 913 rt-types:generalized-label 914 | | | | +--ro state 915 | | | | +--ro index? uint32 916 | | | | +--ro (type)? 917 | | | | +--:(ip-address) 918 | | | | | +--ro ip-address-hop 919 | | | | | +--ro address? inet:ip-address 920 | | | | | +--ro hop-type? te-hop-type 921 | | | | +--:(as-number) 922 | | | | | +--ro as-number-hop 923 | | | | | +--ro as-number? binary 924 | | | | | +--ro hop-type? te-hop-type 925 | | | | +--:(unnumbered-link) 926 | | | | | +--ro unnumbered-hop 927 | | | | | +--ro router-id? inet:ip-address 928 | | | | | +--ro interface-id? uint32 929 | | | | | +--ro hop-type? te-hop-type 930 | | | | +--:(label) 931 | | | | | +--ro label-hop 932 | | | | | +--ro value? 933 rt-types:generalized-label 934 | | | | +--:(sid) 935 | | | | +--ro sid-hop 936 | | | | +--ro sid? 937 rt-types:generalized-label 938 | | | +--rw bandwidth 939 | | | +--rw config 940 | | | | +--rw specification-type? 941 te-mpls-types:te-bandwidth-type 942 | | | | +--rw set-bandwidth? 943 te-mpls-types:bandwidth-kbps 944 | | | | +--rw class-type? 945 te-types:te-ds-class 946 | | | +--ro state 947 | | | +--ro specification-type? 948 te-mpls-types:te-bandwidth-type 949 | | | +--ro set-bandwidth? 950 te-mpls-types:bandwidth-kbps 951 | | | +--ro class-type? 952 te-types:te-ds-class 953 | | | +--ro signaled-bandwidth? 954 te-mpls-types:bandwidth-kbps 955 | | +--ro state 956 | | | +--ro name? string 957 | | | +--ro topology-id? te-types:te-topology-id 958 | | | +--ro cost-limit? uint32 959 | | | +--ro hop-limit? uint8 960 | | | +--ro metric-type? identityref 961 | | | +--ro tiebreaker-type? identityref 962 | | | +--ro ignore-overload? boolean 963 | | | +--ro setup-priority? uint8 964 | | | +--ro hold-priority? uint8 965 | | | +--ro path-affinities 966 | | | | +--ro (style)? 967 | | | | +--:(values) 968 | | | | | +--ro value? uint32 969 | | | | | +--ro mask? uint32 970 | | | | +--:(named) 971 | | | | +--ro constraints* [usage] 972 | | | | +--ro usage identityref 973 | | | | +--ro constraint 974 | | | | +--ro affinity-names* [name] 975 | | | | +--ro name string 976 | | | +--ro path-srlgs 977 | | | | +--ro (style)? 978 | | | | +--:(values) 979 | | | | | +--ro usage? identityref 980 | | | | | +--ro values* te-types:srlg 981 | | | | +--:(named) 982 | | | | +--ro constraints* [usage] 983 | | | | +--ro usage identityref 984 | | | | +--ro constraint 985 | | | | +--ro srlg-names* [name] 986 | | | | +--ro name string 987 | | | +--ro explicit-route-objects 988 | | | | +--ro explicit-route-object* [index] 989 | | | | +--ro index -> ../config/index 990 | | | | +--ro explicit-route-usage? identityref 991 | | | | +--ro config 992 | | | | | +--ro index? uint32 993 | | | | | +--ro (type)? 994 | | | | | +--:(ip-address) 995 | | | | | | +--ro ip-address-hop 996 | | | | | | +--ro address? inet:ip-address 997 | | | | | | +--ro hop-type? te-hop-type 998 | | | | | +--:(as-number) 999 | | | | | | +--ro as-number-hop 1000 | | | | | | +--ro as-number? binary 1001 | | | | | | +--ro hop-type? te-hop-type 1002 | | | | | +--:(unnumbered-link) 1003 | | | | | | +--ro unnumbered-hop 1004 | | | | | | +--ro router-id? inet:ip-address 1005 | | | | | | +--ro interface-id? uint32 1006 | | | | | | +--ro hop-type? te-hop-type 1007 | | | | | +--:(label) 1008 | | | | | | +--ro label-hop 1009 | | | | | | +--ro value? 1010 rt-types:generalized-label 1011 | | | | | +--:(sid) 1012 | | | | | +--ro sid-hop 1013 | | | | | +--ro sid? 1014 rt-types:generalized-label 1015 | | | | +--ro state 1016 | | | | +--ro index? uint32 1017 | | | | +--ro (type)? 1018 | | | | +--:(ip-address) 1019 | | | | | +--ro ip-address-hop 1020 | | | | | +--ro address? inet:ip-address 1021 | | | | | +--ro hop-type? te-hop-type 1022 | | | | +--:(as-number) 1023 | | | | | +--ro as-number-hop 1024 | | | | | +--ro as-number? binary 1025 | | | | | +--ro hop-type? te-hop-type 1026 | | | | +--:(unnumbered-link) 1027 | | | | | +--ro unnumbered-hop 1028 | | | | | +--ro router-id? inet:ip-address 1029 | | | | | +--ro interface-id? uint32 1030 | | | | | +--ro hop-type? te-hop-type 1031 | | | | +--:(label) 1032 | | | | | +--ro label-hop 1033 | | | | | +--ro value? 1034 rt-types:generalized-label 1035 | | | | +--:(sid) 1036 | | | | +--ro sid-hop 1037 | | | | +--ro sid? 1038 rt-types:generalized-label 1039 | | | +--ro bandwidth 1040 | | | +--ro config 1041 | | | | +--ro specification-type? 1042 te-mpls-types:te-bandwidth-type 1043 | | | | +--ro set-bandwidth? 1044 te-mpls-types:bandwidth-kbps 1045 | | | | +--ro class-type? 1046 te-types:te-ds-class 1047 | | | +--ro state 1048 | | | +--ro specification-type? 1049 te-mpls-types:te-bandwidth-type 1050 | | | +--ro set-bandwidth? 1051 te-mpls-types:bandwidth-kbps 1052 | | | +--ro class-type? 1053 te-types:te-ds-class 1054 | | | +--ro signaled-bandwidth? 1055 te-mpls-types:bandwidth-kbps 1056 | | +--rw te-sr-mpls:config 1057 | | | +--rw te-sr-mpls:sid-selection-mode? 1058 te-sid-selection-mode 1059 | | | +--rw te-sr-mpls:sid-protection? identityref 1060 | | +--ro te-sr-mpls:state 1061 | | +--ro te-sr-mpls:sid-selection-mode? 1062 te-sid-selection-mode 1063 | | +--ro te-sr-mpls:sid-protection? identityref 1064 | +--rw te-dev:config 1065 | | +--rw te-dev:lsp-install-interval? uint32 1066 | | +--rw te-dev:lsp-cleanup-interval? uint32 1067 | | +--rw te-dev:lsp-invalidation-interval? uint32 1068 | +--ro te-dev:state 1069 | +--ro te-dev:lsp-install-interval? uint32 1070 | +--ro te-dev:lsp-cleanup-interval? uint32 1071 | +--ro te-dev:lsp-invalidation-interval? uint32 1072 +--rw tunnels 1073 | +--rw tunnel* [name] 1074 | | +--rw name -> ../config/name 1075 | | +--rw identifier? -> ../config/identifier 1076 | | +--rw config 1077 | | | +--rw name? string 1078 | | | +--rw type? identityref 1079 | | | +--rw identifier? uint16 1080 | | | +--rw description? string 1081 | | | +--rw encoding? identityref 1082 | | | +--rw protection-type? identityref 1083 | | | +--rw admin-status? identityref 1084 | | | +--rw preference? uint8 1085 | | | +--rw reoptimize-timer? uint16 1086 | | | +--rw source? inet:ip-address 1087 | | | +--rw destination? inet:ip-address 1088 | | | +--rw src-tp-id? binary 1089 | | | +--rw dst-tp-id? binary 1090 | | | +--rw setup-priority? uint8 1091 | | | +--rw hold-priority? uint8 1092 | | | +--rw signaling-type? identityref 1093 | | | +--rw hierarchical-link-id 1094 | | | | +--rw local-te-node-id? te-types:te-node-id 1095 | | | | +--rw local-te-link-tp-id? te-types:te-tp-id 1096 | | | | +--rw remote-te-node-id? te-types:te-node-id 1097 | | | | +--rw te-topology-id? te-types:te-topology-id 1098 | | | +--rw bidirectional 1099 | | | | +--rw association 1100 | | | | +--rw id? uint16 1101 | | | | +--rw source? inet:ip-address 1102 | | | | +--rw global-source? inet:ip-address 1103 | | | | +--rw type? identityref 1104 | | | | +--rw provisioing? identityref 1105 | | | +--rw te-dev:lsp-install-interval? uint32 1106 | | | +--rw te-dev:lsp-cleanup-interval? uint32 1107 | | | +--rw te-dev:lsp-invalidation-interval? uint32 1108 | | +--ro state 1109 | | | +--ro name? string 1110 | | | +--ro type? identityref 1111 | | | +--ro identifier? uint16 1112 | | | +--ro description? string 1113 | | | +--ro encoding? identityref 1114 | | | +--ro protection-type? identityref 1115 | | | +--ro admin-status? identityref 1116 | | | +--ro preference? uint8 1117 | | | +--ro reoptimize-timer? uint16 1118 | | | +--ro source? inet:ip-address 1119 | | | +--ro destination? inet:ip-address 1120 | | | +--ro src-tp-id? binary 1121 | | | +--ro dst-tp-id? binary 1122 | | | +--ro setup-priority? uint8 1123 | | | +--ro hold-priority? uint8 1124 | | | +--ro signaling-type? identityref 1125 | | | +--ro hierarchical-link-id 1126 | | | | +--ro local-te-node-id? te-types:te-node-id 1127 | | | | +--ro local-te-link-tp-id? te-types:te-tp-id 1128 | | | | +--ro remote-te-node-id? te-types:te-node-id 1129 | | | | +--ro te-topology-id? te-types:te-topology-id 1130 | | | +--ro bidirectional 1131 | | | | +--ro association 1132 | | | | +--ro id? uint16 1133 | | | | +--ro source? inet:ip-address 1134 | | | | +--ro global-source? inet:ip-address 1135 | | | | +--ro type? identityref 1136 | | | | +--ro provisioing? identityref 1137 | | | +--ro oper-status? identityref 1138 | | | +--ro te-dev:lsp-install-interval? uint32 1139 | | | +--ro te-dev:lsp-cleanup-interval? uint32 1140 | | | +--ro te-dev:lsp-invalidation-interval? uint32 1141 | | +--rw bandwidth 1142 | | | +--rw config 1143 | | | | +--rw specification-type? 1144 te-mpls-types:te-bandwidth-type 1145 | | | | +--rw set-bandwidth? 1146 te-mpls-types:bandwidth-kbps 1147 | | | | +--rw class-type? te-types:te-ds-class 1148 | | | +--ro state 1149 | | | | +--ro specification-type? 1150 te-mpls-types:te-bandwidth-type 1151 | | | | +--ro set-bandwidth? 1152 te-mpls-types:bandwidth-kbps 1153 | | | | +--ro class-type? te-types:te-ds-class 1154 | | | | +--ro signaled-bandwidth? 1155 te-mpls-types:bandwidth-kbps 1156 | | | +--rw auto-bandwidth 1157 | | | +--rw config 1158 | | | | +--rw enabled? boolean 1159 | | | | +--rw min-bw? 1160 te-mpls-types:bandwidth-kbps 1161 | | | | +--rw max-bw? 1162 te-mpls-types:bandwidth-kbps 1163 | | | | +--rw adjust-interval? uint32 1164 | | | | +--rw adjust-threshold? te-types:percentage 1165 | | | +--ro state 1166 | | | | +--ro enabled? boolean 1167 | | | | +--ro min-bw? 1168 te-mpls-types:bandwidth-kbps 1169 | | | | +--ro max-bw? 1170 te-mpls-types:bandwidth-kbps 1171 | | | | +--ro adjust-interval? uint32 1172 | | | | +--ro adjust-threshold? te-types:percentage 1173 | | | +--rw overflow 1174 | | | | +--rw config 1175 | | | | | +--rw enabled? boolean 1176 | | | | | +--rw overflow-threshold? te-types:percentage 1177 | | | | | +--rw trigger-event-count? uint16 1178 | | | | +--ro state 1179 | | | | +--ro enabled? boolean 1180 | | | | +--ro overflow-threshold? te-types:percentage 1181 | | | | +--ro trigger-event-count? uint16 1182 | | | +--rw underflow 1183 | | | +--rw config 1184 | | | | +--rw enabled? boolean 1185 | | | | +--rw underflow-threshold? te-types:percentage 1186 | | | | +--rw trigger-event-count? uint16 1187 | | | +--ro state 1188 | | | +--ro enabled? boolean 1189 | | | +--ro underflow-threshold? te-types:percentage 1190 | | | +--ro trigger-event-count? uint16 1191 | | +--rw p2p-primary-paths 1192 | | | +--rw p2p-primary-path* [name] 1193 | | | +--rw name -> ../config/name 1194 | | | +--rw config 1195 | | | | +--rw name? string 1196 | | | | +--rw preference? uint8 1197 | | | | +--rw path-setup-protocol? identityref 1198 | | | | +--rw path-computation-method? identityref 1199 | | | | +--rw path-computation-server? inet:ip-address 1200 | | | | +--rw compute-only? empty 1201 | | | | +--rw use-cspf? boolean 1202 | | | | +--rw verbatim? empty 1203 | | | | +--rw lockdown? empty 1204 | | | | +--rw named-explicit-path? 1205 -> ../../../../../../globals/named-explicit-paths/ 1206 named-explicit-path/config/name 1207 | | | | +--rw named-path-constraint? 1208 -> ../../../../../../globals/named-path-constraints/ 1209 named-path-constraint/config/name 1210 {te-types:named-path-constraints}? 1211 | | | | +--rw te-mpls:static-lsp-name? 1212 mpls-static:static-lsp-ref 1213 | | | +--ro state 1214 | | | | +--ro name? string 1215 | | | | +--ro preference? uint8 1216 | | | | +--ro path-setup-protocol? identityref 1217 | | | | +--ro path-computation-method? identityref 1218 | | | | +--ro path-computation-server? inet:ip-address 1219 | | | | +--ro compute-only? empty 1220 | | | | +--ro use-cspf? boolean 1221 | | | | +--ro verbatim? empty 1222 | | | | +--ro lockdown? empty 1223 | | | | +--ro named-explicit-path? 1224 -> ../../../../../../globals/named-explicit-paths/ 1225 named-explicit-path/config/name 1226 | | | | +--ro named-path-constraint? 1227 -> ../../../../../../globals/named-path-constraints/ 1228 named-path-constraint/config/name 1229 {te-types:named-path-constraints}? 1230 | | | | +--ro lsps 1231 | | | | | +--ro lsp* 1232 [source destination tunnel-id lsp-id extended-tunnel-id type] 1233 | | | | | +--ro source 1234 -> ../../../../../../../../lsps-state/lsp/source 1235 | | | | | +--ro destination 1236 -> ../../../../../../../../lsps-state/lsp/destination 1237 | | | | | +--ro tunnel-id 1238 -> ../../../../../../../../lsps-state/lsp/tunnel-id 1239 | | | | | +--ro lsp-id 1240 -> ../../../../../../../../lsps-state/lsp/lsp-id 1241 | | | | | +--ro extended-tunnel-id 1242 -> ../../../../../../../../lsps-state/lsp/extended-tunnel-id 1243 | | | | | +--ro type 1244 -> ../../../../../../../../lsps-state/lsp/type 1245 | | | | | +--ro signaling-type? identityref 1246 | | | | +--ro te-mpls:static-lsp-name? 1247 mpls-static:static-lsp-ref 1248 | | | +--rw candidate-p2p-secondary-paths 1249 | | | +--rw candidate-p2p-secondary-path* 1250 [secondary-path] 1251 | | | +--rw secondary-path 1252 -> ../config/secondary-path 1253 | | | +--rw config 1254 | | | | +--rw secondary-path? 1255 -> ../../../../../../p2p-secondary-paths/p2p-secondary-path/ 1256 config/name 1257 | | | | +--rw priority? uint16 1258 | | | | +--rw path-setup-protocol? identityref 1259 | | | +--ro state 1260 | | | +--ro secondary-path? 1261 -> ../../../../../../p2p-secondary-paths/p2p-secondary-path/ 1262 config/name 1263 | | | +--ro priority? uint16 1264 | | | +--ro path-setup-protocol? identityref 1265 | | | +--ro active? boolean 1266 | | +--rw p2p-secondary-paths 1267 | | | +--rw p2p-secondary-path* [name] 1268 | | | +--rw name -> ../config/name 1269 | | | +--rw config 1270 | | | | +--rw name? string 1271 | | | | +--rw preference? uint8 1272 | | | | +--rw path-setup-protocol? identityref 1273 | | | | +--rw path-computation-method? identityref 1274 | | | | +--rw path-computation-server? inet:ip-address 1275 | | | | +--rw compute-only? empty 1276 | | | | +--rw use-cspf? boolean 1277 | | | | +--rw verbatim? empty 1278 | | | | +--rw lockdown? empty 1279 | | | | +--rw named-explicit-path? 1280 -> ../../../../../../globals/named-explicit-paths/ 1281 named-explicit-path/config/name 1282 | | | | +--rw named-path-constraint? 1283 -> ../../../../../../globals/named-path-constraints/ 1284 named-path-constraint/config/name 1285 {te-types:named-path-constraints}? 1286 | | | | +--rw te-mpls:static-lsp-name? 1287 mpls-static:static-lsp-ref 1288 | | | +--ro state 1289 | | | +--ro name? string 1290 | | | +--ro preference? uint8 1291 | | | +--ro path-setup-protocol? identityref 1292 | | | +--ro path-computation-method? identityref 1293 | | | +--ro path-computation-server? inet:ip-address 1294 | | | +--ro compute-only? empty 1295 | | | +--ro use-cspf? boolean 1296 | | | +--ro verbatim? empty 1297 | | | +--ro lockdown? empty 1298 | | | +--ro named-explicit-path? 1299 -> ../../../../../../globals/named-explicit-paths/ 1300 named-explicit-path/config/name 1301 | | | +--ro named-path-constraint? 1302 -> ../../../../../../globals/named-path-constraints/ 1303 named-path-constraint/config/name 1304 {te-types:named-path-constraints}? 1305 | | | +--ro lsps 1306 | | | | +--ro lsp* 1307 [source destination tunnel-id lsp-id extended-tunnel-id type] 1308 | | | | +--ro source 1309 -> ../../../../../../../../lsps-state/lsp/source 1310 | | | | +--ro destination 1311 -> ../../../../../../../../lsps-state/lsp/destination 1312 | | | | +--ro tunnel-id 1313 -> ../../../../../../../../lsps-state/lsp/tunnel-id 1314 | | | | +--ro lsp-id 1315 -> ../../../../../../../../lsps-state/lsp/lsp-id 1316 | | | | +--ro extended-tunnel-id 1317 -> ../../../../../../../../lsps-state/lsp/extended-tunnel-id 1318 | | | | +--ro type 1319 -> ../../../../../../../../lsps-state/lsp/type 1320 | | | | +--ro signaling-type? identityref 1321 | | | +--ro te-mpls:static-lsp-name? 1322 mpls-static:static-lsp-ref 1323 | | +---x tunnel-action 1324 | | | +---w input 1325 | | | | +---w action-type? identityref 1326 | | | +--ro output 1327 | | | +--ro action-result? identityref 1328 | | +--rw te-mpls:tunnel-igp-shortcut 1329 | | | +--rw te-mpls:config 1330 | | | | +--rw te-mpls:shortcut-eligible? boolean 1331 | | | | +--rw te-mpls:metric-type? identityref 1332 | | | | +--rw te-mpls:metric? int32 1333 | | | | +--rw te-mpls:routing-afs* inet:ip-version 1334 | | | +--rw te-mpls:state 1335 | | | +--rw te-mpls:shortcut-eligible? boolean 1336 | | | +--rw te-mpls:metric-type? identityref 1337 | | | +--rw te-mpls:metric? int32 1338 | | | +--rw te-mpls:routing-afs* inet:ip-version 1339 | | +--rw te-mpls:forwarding 1340 | | +--rw te-mpls:config 1341 | | | +--rw te-mpls:binding-label? rt-types:mpls-label 1342 | | | +--rw te-mpls:load-share? uint32 1343 | | | +--rw te-mpls:policy-class? uint8 1344 | | +--rw te-mpls:state 1345 | | +--rw te-mpls:binding-label? rt-types:mpls-label 1346 | | +--rw te-mpls:load-share? uint32 1347 | | +--rw te-mpls:policy-class? uint8 1348 | +--rw tunnel-p2mp* [name] 1349 | +--rw name -> ../config/name 1350 | +--rw identifier? -> ../config/identifier 1351 | +--rw config 1352 | | +--rw name? string 1353 | | +--rw type? identityref 1354 | | +--rw identifier? uint16 1355 | | +--rw description? string 1356 | | +--rw setup-priority? uint8 1357 | | +--rw hold-priority? uint8 1358 | | +--rw lsp-protection-type? identityref 1359 | | +--rw admin-status? identityref 1360 | | +--rw reoptimize-timer? uint16 1361 | +--ro state 1362 | +--ro name? string 1363 | +--ro type? identityref 1364 | +--ro identifier? uint16 1365 | +--ro description? string 1366 | +--ro setup-priority? uint8 1367 | +--ro hold-priority? uint8 1368 | +--ro lsp-protection-type? identityref 1369 | +--ro admin-status? identityref 1370 | +--ro reoptimize-timer? uint16 1371 +--ro lsps-state 1372 | +--ro lsp* 1373 [source destination tunnel-id lsp-id extended-tunnel-id type] 1374 | +--ro source inet:ip-address 1375 | +--ro destination inet:ip-address 1376 | +--ro tunnel-id uint16 1377 | +--ro lsp-id uint16 1378 | +--ro extended-tunnel-id inet:ip-address 1379 | +--ro type identityref 1380 | +--ro oper-status? identityref 1381 | +--ro path-setup-protocol? identityref 1382 | +--ro origin-type? enumeration 1383 | +--ro lsp-resource-status? enumeration 1384 | +--ro lsp-protection-role? enumeration 1385 | +--ro lsp-carry-normal-traffic? empty 1386 | +--ro lsp-record-route-subobjects 1387 | | +--ro record-route-subobject* [index] 1388 | | +--ro index uint32 1389 | | +--ro (type)? 1390 | | +--:(ip-address) 1391 | | | +--ro ip-address? inet:ip-address 1392 | | | +--ro ip-flags? binary 1393 | | +--:(unnumbered-link) 1394 | | | +--ro router-id? inet:ip-address 1395 | | | +--ro interface-id? uint32 1396 | | +--:(label) 1397 | | +--ro value? rt-types:generalized-label 1398 | | +--ro label-flags? binary 1399 | +--ro te-dev:lsp-timers 1400 | | +--ro te-dev:life-time? uint32 1401 | | +--ro te-dev:time-to-install? uint32 1402 | | +--ro te-dev:time-to-destroy? uint32 1403 | +--ro te-dev:downstream-info 1404 | | +--ro te-dev:nhop? inet:ip-address 1405 | | +--ro te-dev:outgoing-interface? if:interface-ref 1406 | | +--ro te-dev:neighbor? inet:ip-address 1407 | | +--ro te-dev:label? rt-types:generalized-label 1408 | +--ro te-dev:upstream-info 1409 | +--ro te-dev:phop? inet:ip-address 1410 | +--ro te-dev:neighbor? inet:ip-address 1411 | +--ro te-dev:label? rt-types:generalized-label 1412 +--rw te-dev:interfaces 1413 +--rw te-dev:config 1414 | +--rw te-dev:threshold-type? enumeration 1415 | +--rw te-dev:delta-percentage? te-types:percentage 1416 | +--rw te-dev:threshold-specification? enumeration 1417 | +--rw te-dev:up-thresholds* te-types:percentage 1418 | +--rw te-dev:down-thresholds* te-types:percentage 1419 | +--rw te-dev:up-down-thresholds* te-types:percentage 1420 +--ro te-dev:state 1421 | +--ro te-dev:threshold-type? enumeration 1422 | +--ro te-dev:delta-percentage? te-types:percentage 1423 | +--ro te-dev:threshold-specification? enumeration 1424 | +--ro te-dev:up-thresholds* te-types:percentage 1425 | +--ro te-dev:down-thresholds* te-types:percentage 1426 | +--ro te-dev:up-down-thresholds* te-types:percentage 1427 +--rw te-dev:interface* [interface] 1428 +--rw te-dev:interface if:interface-ref 1429 +--rw te-dev:config 1430 | +--rw te-dev:te-metric? te-types:te-metric 1431 | +--rw (te-dev:admin-group-type)? 1432 | | +--:(te-dev:value-admin-groups) 1433 | | | +--rw (te-dev:value-admin-group-type)? 1434 | | | +--:(te-dev:admin-groups) 1435 | | | | +--rw te-dev:admin-group?te-types:admin-group 1436 | | | +--:(te-dev:extended-admin-groups) 1437 {te-types:extended-admin-groups}? 1438 | | | +--rw te-dev:extended-admin-group? 1439 te-types:extended-admin-group 1440 | | +--:(te-dev:named-admin-groups) 1441 | | +--rw te-dev:named-admin-groups[named-admin-group] 1442 {te-types:extended-admin-groups, 1443 te-types:named-extended-admin-groups}? 1444 | | +--rw te-dev:named-admin-group 1445 -> ../../../../../te:globals/named-admin-groups/ 1446 named-admin-group/config/name 1447 | +--rw (te-dev:srlg-type)? 1448 | | +--:(te-dev:value-srlgs) 1449 | | | +--rw te-dev:values* [value] 1450 | | | +--rw te-dev:value uint32 1451 | | +--:(te-dev:named-srlgs) 1452 | | +--rw te-dev:named-srlgs* [named-srlg] 1453 {te-types:named-srlg-groups}? 1454 | | +--rw te-dev:named-srlg 1455 -> ../../../../../te:globals/named-srlgs/ 1456 named-srlg/config/name 1457 | +--rw te-dev:threshold-type? enumeration 1458 | +--rw te-dev:delta-percentage? te-types:percentage 1459 | +--rw te-dev:threshold-specification? enumeration 1460 | +--rw te-dev:up-thresholds* te-types:percentage 1461 | +--rw te-dev:down-thresholds* te-types:percentage 1462 | +--rw te-dev:up-down-thresholds* te-types:percentage 1463 | +--rw te-dev:switching-capabilities* 1464 | +--rw te-dev:switching-capability identityref 1465 | +--rw te-dev:encoding? identityref 1466 +--ro te-dev:state 1467 +--ro te-dev:te-metric? te-types:te-metric 1468 +--ro (te-dev:admin-group-type)? 1469 | +--:(te-dev:value-admin-groups) 1470 | | +--ro (te-dev:value-admin-group-type)? 1471 | | +--:(te-dev:admin-groups) 1472 | | | +--ro te-dev:admin-group? 1473 te-types:admin-group 1474 | | +--:(te-dev:extended-admin-groups) 1475 {te-types:extended-admin-groups}? 1476 | | +--ro te-dev:extended-admin-group? 1477 | +--:(te-dev:named-admin-groups) 1478 | +--ro te-dev:named-admin-groups*[named-admin-group] 1479 | +--ro te-dev:named-admin-group 1480 -> ../../../../../te:globals/named-admin-groups/ 1481 named-admin-group/config/name 1482 +--ro (te-dev:srlg-type)? 1483 | +--:(te-dev:value-srlgs) 1484 | | +--ro te-dev:values* [value] 1485 | | +--ro te-dev:value uint32 1486 | +--:(te-dev:named-srlgs) 1487 | +--ro te-dev:named-srlgs* [named-srlg] 1488 | +--ro te-dev:named-srlg 1489 -> ../../../../../te:globals/named-srlgs/ 1490 named-srlg/config/name 1491 +--ro te-dev:switching-capabilities* 1492 | +--ro te-dev:switching-capability identityref 1493 | +--ro te-dev:encoding? identityref 1494 +--ro te-dev:threshold-type? enumeration 1495 +--ro te-dev:delta-percentage? te-types:percentage 1496 +--ro te-dev:threshold-specification? enumeration 1497 +--ro te-dev:up-thresholds* te-types:percentage 1498 +--ro te-dev:down-thresholds* te-types:percentage 1499 +--ro te-dev:up-down-thresholds* te-types:percentage 1500 +--ro te-dev:te-advertisements_state 1501 +--ro te-dev:flood-interval? uint32 1502 +--ro te-dev:last-flooded-time? uint32 1503 +--ro te-dev:next-flooded-time? uint32 1504 +--ro te-dev:last-flooded-trigger? enumeration 1505 +--ro te-dev:advertized-level-areas* [level-area] 1506 +--ro te-dev:level-area uint32 1508 rpcs: 1509 +---x globals-rpc 1510 +---x interfaces-rpc 1511 +---x tunnels-rpc 1512 +---w input 1513 | +---w tunnel-info 1514 | +---w (type)? 1515 | +--:(tunnel-p2p) 1516 | | +---w p2p-id? te:tunnel-ref 1517 | +--:(tunnel-p2mp) 1518 | +---w p2mp-id? te:tunnel-p2mp-ref 1519 +--ro output 1520 +--ro result 1521 +--ro result? enumeration 1523 notifications: 1524 +---n globals-notif 1525 +---n tunnels-notif 1526 module: ietf-te-device 1528 rpcs: 1529 +---x interfaces-rpc 1531 notifications: 1532 +---n interfaces-notif 1534 Figure 6: TE generic model configuration and state tree 1536 4. TE Generic and Helper YANG Modules 1538 file "ietf-te-types@2017-03-10.yang" 1539 module ietf-te-types { 1540 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; 1542 /* Replace with IANA when assigned */ 1543 prefix "te-types"; 1545 import ietf-inet-types { 1546 prefix inet; 1547 } 1549 import ietf-yang-types { 1550 prefix "yang"; 1551 } 1553 import ietf-routing-types { 1554 prefix "rt-types"; 1555 } 1557 organization 1558 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1559 Working Group"; 1561 contact 1562 "WG Web: 1563 WG List: 1565 WG Chair: Lou Berger 1566 1568 WG Chair: Vishnu Pavan Beeram 1569 1571 Editor: Tarek Saad 1572 1574 Editor: Rakesh Gandhi 1575 1577 Editor: Vishnu Pavan Beeram 1578 1580 Editor: Himanshu Shah 1581 1583 Editor: Xufeng Liu 1584 1586 Editor: Xia Chen 1587 1589 Editor: Raqib Jones 1590 1592 Editor: Bin Wen 1593 "; 1595 description 1596 "This module contains a collection of generally 1597 useful TE specific YANG data type defintions."; 1599 revision "2017-03-10" { 1600 description "Latest revision of TE types"; 1601 reference "RFC3209"; 1602 } 1604 /* 1605 * Identities 1606 */ 1608 identity path-computation-method { 1609 description 1610 "base identity for supported path computation 1611 mechanisms"; 1612 } 1614 identity path-locally-computed { 1615 base path-computation-method; 1616 description 1617 "indicates a constrained-path LSP in which the 1618 path is computed by the local LER"; 1619 } 1621 identity path-externally-queried { 1622 base path-computation-method; 1623 description 1624 "Constrained-path LSP in which the path is 1625 obtained by querying an external source, such as a PCE server. 1626 In the case that an LSP is defined to be externally queried, it 1627 may also have associated explicit definitions (which are provided 1628 to the external source to aid computation); and the path that is 1629 returned by the external source is not required to provide a 1630 wholly resolved path back to the originating system - that is to 1631 say, some local computation may also be required"; 1632 } 1634 identity path-explicitly-defined { 1635 base path-computation-method; 1636 description 1637 "constrained-path LSP in which the path is 1638 explicitly specified as a collection of strict or/and loose 1639 hops"; 1640 } 1642 typedef te-ds-class { 1643 type uint8 { 1644 range "0..7"; 1645 } 1646 description 1647 "The Differentiatied Class-Type of traffic."; 1648 reference "RFC4124: section-4.3.1"; 1649 } 1651 typedef te-hop-type { 1652 type enumeration { 1653 enum LOOSE { 1654 description 1655 "loose hop in an explicit path"; 1656 } 1657 enum STRICT { 1658 description 1659 "strict hop in an explicit path"; 1660 } 1661 } 1662 description 1663 "enumerated type for specifying loose or strict 1664 paths"; 1665 } 1667 identity LSP_METRIC_TYPE { 1668 description 1669 "Base identity for types of LSP metric specification"; 1670 } 1672 identity LSP_METRIC_RELATIVE { 1673 base LSP_METRIC_TYPE; 1674 description 1675 "The metric specified for the LSPs to which this identity refers 1676 is specified as a relative value to the IGP metric cost to the 1677 LSP's tail-end."; 1678 } 1680 identity LSP_METRIC_ABSOLUTE { 1681 base LSP_METRIC_TYPE; 1682 description 1683 "The metric specified for the LSPs to which this identity refers 1684 is specified as an absolute value"; 1686 } 1688 identity LSP_METRIC_INHERITED { 1689 base LSP_METRIC_TYPE; 1690 description 1691 "The metric for for the LSPs to which this identity refers is 1692 not specified explicitly - but rather inherited from the IGP 1693 cost directly"; 1694 } 1696 identity tunnel-type { 1697 description 1698 "Base identity from which specific tunnel types are 1699 derived."; 1700 } 1702 identity tunnel-p2p { 1703 base tunnel-type; 1704 description 1705 "TE point-to-point tunnel type."; 1706 } 1708 identity tunnel-p2mp { 1709 base tunnel-type; 1710 description 1711 "TE point-to-multipoint tunnel type."; 1712 } 1714 identity tunnel-action-type { 1715 description 1716 "Base identity from which specific tunnel action types 1717 are derived."; 1718 } 1720 identity tunnel-action-resetup { 1721 base tunnel-action-type; 1722 description 1723 "TE tunnel action resetup. Tears the 1724 tunnel's current LSP (if any) and 1725 attempts to re-establish a new LSP"; 1726 } 1728 identity tunnel-action-reoptimize { 1729 base tunnel-action-type; 1730 description 1731 "TE tunnel action reoptimize. 1732 Reoptimizes placement of the tunnel LSP(s)"; 1733 } 1734 identity tunnel-action-switchpath { 1735 base tunnel-action-type; 1736 description 1737 "TE tunnel action reoptimize 1738 Switches the tunnel's LSP to use the specified path"; 1739 } 1741 identity te-action-result { 1742 description 1743 "Base identity from which specific TE action results 1744 are derived."; 1745 } 1747 identity te-action-success { 1748 base te-action-result; 1749 description "TE action successul."; 1750 } 1752 identity te-action-fail { 1753 base te-action-result; 1754 description "TE action failed."; 1755 } 1757 identity tunnel-action-inprogress { 1758 base te-action-result; 1759 description "TE action inprogress."; 1760 } 1762 identity state-type { 1763 description 1764 "Base identity for TE states"; 1765 } 1767 identity state-up { 1768 base state-type; 1769 description 1770 "State up"; 1771 } 1773 identity state-down { 1774 base state-type; 1775 description 1776 "State down"; 1777 } 1779 identity path-invalidation-action-type { 1780 description 1781 "Base identity for TE path invalidation action types"; 1783 } 1785 identity path-invalidation-action-drop-type { 1786 base path-invalidation-action-type; 1787 description 1788 "TE path invalidation action drop"; 1789 } 1791 identity path-invalidation-action-drop-tear { 1792 base path-invalidation-action-type; 1793 description 1794 "TE path invalidation action tear"; 1795 } 1797 identity lsp-prot-type { 1798 description 1799 "Base identity from which LSP protection types are 1800 derived."; 1801 } 1803 identity lsp-prot-unprotected { 1804 base lsp-prot-type; 1805 description 1806 "LSP protection 'Unprotected'"; 1807 reference "RFC4872"; 1808 } 1810 identity lsp-prot-reroute-extra { 1811 base lsp-prot-type; 1812 description 1813 "LSP protection '(Full) Rerouting'"; 1814 reference "RFC4872"; 1815 } 1817 identity lsp-prot-reroute { 1818 base lsp-prot-type; 1819 description 1820 "LSP protection 'Rerouting without Extra-Traffic'"; 1821 reference "RFC4872"; 1822 } 1824 identity lsp-prot-1-for-n { 1825 base lsp-prot-type; 1826 description 1827 "LSP protection '1:N Protection with Extra-Traffic'"; 1828 reference "RFC4872"; 1829 } 1830 identity lsp-prot-unidir-1-to-1 { 1831 base lsp-prot-type; 1832 description 1833 "LSP protection '1+1 Unidirectional Protection'"; 1834 reference "RFC4872"; 1835 } 1837 identity lsp-prot-bidir-1-to-1 { 1838 base lsp-prot-type; 1839 description 1840 "LSP protection '1+1 Bidirectional Protection'"; 1841 reference "RFC4872"; 1842 } 1844 identity switching-capabilities { 1845 description 1846 "Base identity for interface switching capabilities"; 1847 } 1849 identity switching-psc1 { 1850 base switching-capabilities; 1851 description 1852 "Packet-Switch Capable-1 (PSC-1)"; 1853 } 1855 identity switching-evpl { 1856 base switching-capabilities; 1857 description 1858 "Ethernet Virtual Private Line (EVPL)"; 1859 } 1861 identity switching-l2sc { 1862 base switching-capabilities; 1863 description 1864 "Layer-2 Switch Capable (L2SC)"; 1865 } 1867 identity switching-tdm { 1868 base switching-capabilities; 1869 description 1870 "Time-Division-Multiplex Capable (TDM)"; 1871 } 1873 identity switching-otn { 1874 base switching-capabilities; 1875 description 1876 "OTN-TDM capable"; 1877 } 1878 identity switching-dcsc { 1879 base switching-capabilities; 1880 description 1881 "Data Channel Switching Capable (DCSC)"; 1882 } 1884 identity switching-lsc { 1885 base switching-capabilities; 1886 description 1887 "Lambda-Switch Capable (LSC)"; 1888 } 1890 identity switching-fsc { 1891 base switching-capabilities; 1892 description 1893 "Fiber-Switch Capable (FSC)"; 1894 } 1896 identity lsp-encoding-types { 1897 description 1898 "Base identity for encoding types"; 1899 } 1901 identity lsp-encoding-packet { 1902 base lsp-encoding-types; 1903 description 1904 "Packet LSP encoding"; 1905 } 1907 identity lsp-encoding-ethernet { 1908 base lsp-encoding-types; 1909 description 1910 "Ethernet LSP encoding"; 1911 } 1913 identity lsp-encoding-pdh { 1914 base lsp-encoding-types; 1915 description 1916 "ANSI/ETSI LSP encoding"; 1917 } 1919 identity lsp-encoding-sdh { 1920 base lsp-encoding-types; 1921 description 1922 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; 1923 } 1925 identity lsp-encoding-digital-wrapper { 1926 base lsp-encoding-types; 1927 description 1928 "Digital Wrapper LSP encoding"; 1929 } 1931 identity lsp-encoding-lambda { 1932 base lsp-encoding-types; 1933 description 1934 "Lambda (photonic) LSP encoding"; 1935 } 1937 identity lsp-encoding-fiber { 1938 base lsp-encoding-types; 1939 description 1940 "Fiber LSP encoding"; 1941 } 1943 identity lsp-encoding-fiber-channel { 1944 base lsp-encoding-types; 1945 description 1946 "FiberChannel LSP encoding"; 1947 } 1949 identity lsp-encoding-oduk { 1950 base lsp-encoding-types; 1951 description 1952 "G.709 ODUk (Digital Path)LSP encoding"; 1953 } 1955 identity lsp-encoding-optical-channel { 1956 base lsp-encoding-types; 1957 description 1958 "Line (e.g., 8B/10B) LSP encoding"; 1959 } 1961 identity lsp-encoding-line { 1962 base lsp-encoding-types; 1963 description 1964 "Line (e.g., 8B/10B) LSP encoding"; 1965 } 1967 identity path-signaling-type { 1968 description 1969 "Base identity from which specific path signaling 1970 types are derived."; 1971 } 1973 identity path-signaling-rsvpte { 1974 base tunnel-type; 1975 description 1976 "RSVP-TE path signaling type"; 1977 } 1979 identity path-signaling-sr { 1980 base tunnel-type; 1981 description 1982 "Segment-routing path signaling type"; 1983 } 1985 identity te-path-setup-protocol { 1986 description 1987 "base identity for supported TE LSPs signaling 1988 protocols"; 1989 } 1991 identity te-path-setup-static { 1992 base te-path-setup-protocol; 1993 description 1994 "Static LSP provisioning"; 1995 } 1997 identity te-path-setup-rsvp { 1998 base te-path-setup-protocol; 1999 description 2000 "RSVP-TE signaling protocol"; 2001 } 2003 identity te-path-setup-sr { 2004 base te-path-setup-protocol; 2005 description 2006 "Segment routing"; 2007 } 2009 /* TE basic features */ 2010 feature p2mp-te { 2011 description 2012 "Indicates support for P2MP-TE"; 2013 } 2015 feature frr-te { 2016 description 2017 "Indicates support for TE FastReroute (FRR)"; 2018 } 2020 feature extended-admin-groups { 2021 description 2022 "Indicates support for TE link extended admin 2023 groups."; 2024 } 2026 feature named-path-affinities { 2027 description 2028 "Indicates support for named path affinities"; 2029 } 2031 feature named-extended-admin-groups { 2032 description 2033 "Indicates support for named extended admin groups"; 2034 } 2036 feature named-srlg-groups { 2037 description 2038 "Indicates support for named SRLG groups"; 2039 } 2041 feature named-path-constraints { 2042 description 2043 "Indicates support for named path constraints"; 2044 } 2046 grouping explicit-route-hop_config { 2047 description 2048 "The explicit route subobject grouping"; 2049 leaf index { 2050 type uint32; 2051 description "ERO subobject index"; 2052 } 2053 choice type { 2054 description 2055 "The explicit route subobject type"; 2056 case ip-address { 2057 description 2058 "IP address explicit route subobject"; 2059 container ip-address-hop { 2060 description "IP address hop type"; 2061 leaf address { 2062 type inet:ip-address; 2063 description 2064 "ERO IP address."; 2065 } 2066 leaf hop-type { 2067 type te-hop-type; 2068 description 2069 "strict or loose hop"; 2071 } 2072 } 2073 } 2074 case as-number { 2075 container as-number-hop { 2076 leaf as-number { 2077 type binary { 2078 length 16; 2079 } 2080 description "AS number"; 2081 } 2082 leaf hop-type { 2083 type te-hop-type; 2084 description 2085 "strict or loose hop"; 2086 } 2087 description 2088 "Autonomous System explicit route subobject"; 2089 } 2090 } 2091 case unnumbered-link { 2092 container unnumbered-hop { 2093 leaf router-id { 2094 type inet:ip-address; 2095 description 2096 "A router-id address"; 2097 } 2098 leaf interface-id { 2099 type uint32; 2100 description "The interface identifier"; 2101 } 2102 leaf hop-type { 2103 type te-hop-type; 2104 description 2105 "strict or loose hop"; 2106 } 2107 description 2108 "Unnumbered link explicit route subobject"; 2109 reference 2110 "RFC3477: Signalling Unnumbered Links in 2111 RSVP-TE"; 2112 } 2113 } 2114 case label { 2115 container label-hop { 2116 description "Label hop type"; 2117 leaf value { 2118 type rt-types:generalized-label; 2119 description "the label value"; 2120 } 2121 } 2122 description 2123 "The Label ERO subobject"; 2124 } 2125 case sid { 2126 container sid-hop { 2127 description "foo"; 2128 leaf sid { 2129 type rt-types:generalized-label; 2130 description "Segment-routing identifier"; 2131 } 2132 } 2133 description "Segment-routing identifier"; 2134 } 2135 } 2136 } 2138 grouping explicit-route-hop { 2139 description "Explicit route hop grouping"; 2140 container config { 2141 description 2142 "Configuration parameters for the explicit route hop"; 2143 uses explicit-route-hop_config; 2144 } 2145 container state { 2146 config false; 2147 description 2148 "State parameters for the explicit route hop"; 2149 uses explicit-route-hop_config; 2150 } 2151 } 2153 grouping record-route-subobject { 2154 description 2155 "The record route subobject grouping"; 2156 choice type { 2157 description 2158 "The record route subobject type"; 2159 case ip-address { 2160 leaf ip-address { 2161 type inet:ip-address; 2162 description 2163 "RRO IP address subobject."; 2164 } 2165 leaf ip-flags { 2166 type binary { 2167 length 8; 2168 } 2169 description 2170 "RRO IP address sub-object flags"; 2171 reference "RFC3209"; 2172 } 2173 } 2174 case unnumbered-link { 2175 leaf router-id { 2176 type inet:ip-address; 2177 description 2178 "A router-id address"; 2179 } 2180 leaf interface-id { 2181 type uint32; 2182 description "The interface identifier"; 2183 } 2184 description 2185 "Unnumbered link record route subobject"; 2186 reference 2187 "RFC3477: Signalling Unnumbered Links in 2188 RSVP-TE"; 2189 } 2190 case label { 2191 leaf value { 2192 type rt-types:generalized-label; 2193 description "the label value"; 2194 } 2195 leaf label-flags { 2196 type binary { 2197 length 8; 2198 } 2199 description 2200 "Label sub-object flags"; 2201 reference "RFC3209"; 2202 } 2203 description 2204 "The Label ERO subobject"; 2205 } 2206 } 2207 } 2209 identity route-usage-type { 2210 description 2211 "Base identity for route usage"; 2212 } 2214 identity route-include-ero { 2215 base route-usage-type; 2216 description 2217 "Include ERO from route"; 2218 } 2220 identity route-exclude-ero { 2221 base route-usage-type; 2222 description 2223 "Exclude ERO from route"; 2224 } 2226 identity route-exclude-srlg { 2227 base route-usage-type; 2228 description 2229 "Exclude SRLG from route"; 2230 } 2232 identity path-metric-type { 2233 description 2234 "Base identity for path metric type"; 2235 } 2237 identity path-metric-te { 2238 base path-metric-type; 2239 description 2240 "TE path metric"; 2241 } 2243 identity path-metric-igp { 2244 base path-metric-type; 2245 description 2246 "IGP path metric"; 2247 } 2249 identity path-metric-hop { 2250 base path-metric-type; 2251 description 2252 "Hop path metric"; 2253 } 2255 identity path-tiebreaker-type { 2256 description 2257 "Base identity for path tie-breaker type"; 2258 } 2260 identity path-tiebreaker-minfill { 2261 base path-tiebreaker-type; 2262 description 2263 "Min-Fill LSP path placement"; 2264 } 2266 identity path-tiebreaker-maxfill { 2267 base path-tiebreaker-type; 2268 description 2269 "Max-Fill LSP path placement"; 2270 } 2272 identity path-tiebreaker-randoom { 2273 base path-tiebreaker-type; 2274 description 2275 "Random LSP path placement"; 2276 } 2278 identity bidir-provisioning-mode { 2279 description 2280 "Base identity for bidirectional provisioning 2281 mode."; 2282 } 2284 identity bidir-provisioning-single-sided { 2285 base bidir-provisioning-mode; 2286 description 2287 "Single-sided bidirectional provioning mode"; 2288 } 2290 identity bidir-provisioning-double-sided { 2291 base bidir-provisioning-mode; 2292 description 2293 "Double-sided bidirectional provioning mode"; 2294 } 2296 identity bidir-association-type { 2297 description 2298 "Base identity for bidirectional association type"; 2299 } 2301 identity bidir-assoc-corouted { 2302 base bidir-association-type; 2303 description 2304 "Co-routed bidirectional association type"; 2305 } 2307 identity bidir-assoc-non-corouted { 2308 base bidir-association-type; 2309 description 2310 "Non co-routed bidirectional association type"; 2312 } 2314 identity resource-affinities-type { 2315 description 2316 "Base identity for resource affinities"; 2317 } 2319 identity resource-aff-include-all { 2320 base resource-affinities-type; 2321 description 2322 "The set of attribute filters associated with a 2323 tunnel all of which must be present for a link 2324 to be acceptable"; 2325 } 2327 identity resource-aff-include-any { 2328 base resource-affinities-type; 2329 description 2330 "The set of attribute filters associated with a 2331 tunnel any of which must be present for a link 2332 to be acceptable"; 2333 } 2335 identity resource-aff-exclude-any { 2336 base resource-affinities-type; 2337 description 2338 "The set of attribute filters associated with a 2339 tunnel any of which renders a link unacceptable"; 2340 } 2342 identity te-optimization-criterion { 2343 description 2344 "Base identity for TE optimization criterion."; 2345 reference 2346 "RFC3272: Overview and Principles of Internet Traffic 2347 Engineering."; 2348 } 2350 identity not-optimized { 2351 base te-optimization-criterion; 2352 description "Optimization is not applied."; 2353 } 2355 identity cost { 2356 base te-optimization-criterion; 2357 description "Optimized on cost."; 2358 } 2359 identity delay { 2360 base te-optimization-criterion; 2361 description "Optimized on delay."; 2362 } 2364 /* 2365 * Typedefs 2366 */ 2368 typedef percentage { 2369 type uint8 { 2370 range "0..100"; 2371 } 2372 description 2373 "Integer indicating a percentage value"; 2374 } 2376 typedef performance-metric-normality { 2377 type enumeration { 2378 enum "unknown" { 2379 value 0; 2380 description 2381 "Unknown."; 2382 } 2383 enum "normal" { 2384 value 1; 2385 description 2386 "Normal."; 2387 } 2388 enum "abnormal" { 2389 value 2; 2390 description 2391 "Abnormal. The anomalous bit is set."; 2392 } 2393 } 2394 description 2395 "Indicates whether a performance metric is normal, abnormal, or 2396 unknown."; 2397 reference 2398 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 2399 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 2400 RFC7823: Performance-Based Path Selection for Explicitly 2401 Routed Label Switched Paths (LSPs) Using TE Metric 2402 Extensions"; 2403 } 2405 typedef te-admin-status { 2406 type enumeration { 2407 enum up { 2408 description 2409 "Enabled."; 2410 } 2411 enum down { 2412 description 2413 "Disabled."; 2414 } 2415 enum testing { 2416 description 2417 "In some test mode."; 2418 } 2419 enum preparing-maintenance { 2420 description 2421 "Resource is disabled in the control plane to prepare for 2422 graceful shutdown for maintenance purposes."; 2423 reference 2424 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2425 Traffic Engineering Networks"; 2426 } 2427 enum maintenance { 2428 description 2429 "Resource is disabled in the data plane for maintenance 2430 purposes."; 2431 } 2432 } 2433 description 2434 "Defines a type representing the administrative status of 2435 a TE resource."; 2436 } 2438 typedef te-global-id { 2439 type uint32; 2440 description 2441 "An identifier to uniquely identify an operator, which can be 2442 either a provider or a client. 2443 The definition of this type is taken from RFC6370 and RFC5003. 2444 This attribute type is used solely to provide a globally 2445 unique context for TE topologies."; 2446 } 2448 typedef te-link-access-type { 2449 type enumeration { 2450 enum point-to-point { 2451 description 2452 "The link is point-to-point."; 2453 } 2454 enum multi-access { 2455 description 2456 "The link is multi-access, including broacast and NBMA."; 2457 } 2458 } 2459 description 2460 "Defines a type representing the access type of a TE link."; 2461 reference 2462 "RFC3630: Traffic Engineering (TE) Extensions to OSPF 2463 Version 2."; 2464 } 2466 typedef te-node-id { 2467 type yang:dotted-quad; 2468 description 2469 "An identifier for a node in a topology. 2470 The identifier is represented as 32-bit unsigned integer in 2471 the dotted-quad notation. 2472 This attribute is mapped to Router ID in 2473 RFC3630, RFC5329, RFC5305, and RFC6119."; 2474 } 2476 typedef te-oper-status { 2477 type enumeration { 2478 enum up { 2479 description 2480 "Operational up."; 2481 } 2482 enum down { 2483 description 2484 "Operational down."; 2485 } 2486 enum testing { 2487 description 2488 "In some test mode."; 2489 } 2490 enum unknown { 2491 description 2492 "Status cannot be determined for some reason."; 2493 } 2494 enum preparing-maintenance { 2495 description 2496 "Resource is disabled in the control plane to prepare for 2497 graceful shutdown for maintenance purposes."; 2498 reference 2499 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2500 Traffic Engineering Networks"; 2501 } 2502 enum maintenance { 2503 description 2504 "Resource is disabled in the data plane for maintenance 2505 purposes."; 2506 } 2507 } 2508 description 2509 "Defines a type representing the operational status of 2510 a TE resource."; 2511 } 2513 typedef te-recovery-status { 2514 type enumeration { 2515 enum normal { 2516 description 2517 "Both the recovery and working spans are fully 2518 allocated and active, data traffic is being 2519 transported over (or selected from) the working 2520 span, and no trigger events are reported."; 2521 } 2522 enum recovery-started { 2523 description 2524 "The recovery action has been started, but not completed."; 2525 } 2526 enum recovery-succeeded { 2527 description 2528 "The recovery action has succeeded. The working span has 2529 reported a failure/degrade condition and the user traffic 2530 is being transported (or selected) on the recovery span."; 2531 } 2532 enum recovery-failed { 2533 description 2534 "The recovery action has failed."; 2535 } 2536 enum reversion-started { 2537 description 2538 "The reversion has started."; 2539 } 2540 enum reversion-failed { 2541 description 2542 "The reversion has failed."; 2543 } 2544 enum recovery-unavailable { 2545 description 2546 "The recovery is unavailable -- either as a result of an 2547 operator Lockout command or a failure condition detected 2548 on the recovery span."; 2549 } 2550 enum recovery-admin { 2551 description 2552 "The operator has issued a command switching the user 2553 traffic to the recovery span."; 2554 } 2555 enum wait-to-restore { 2556 description 2557 "The recovery domain is recovering from a failuer/degrade 2558 condition on the working span that is being controlled by 2559 the Wait-to-Restore (WTR) timer."; 2560 } 2561 } 2562 description 2563 "Defines the status of a recovery action."; 2564 reference 2565 "RFC4427: Recovery (Protection and Restoration) Terminology 2566 for Generalized Multi-Protocol Label Switching (GMPLS). 2567 RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection"; 2568 } 2570 typedef te-template-name { 2571 type string { 2572 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2573 } 2574 description 2575 "A type for the name of a TE node template or TE link 2576 template."; 2577 } 2579 typedef te-topology-event-type { 2580 type enumeration { 2581 enum "add" { 2582 value 0; 2583 description 2584 "A TE node or te-link has been added."; 2585 } 2586 enum "remove" { 2587 value 1; 2588 description 2589 "A TE node or te-link has been removed."; 2590 } 2591 enum "update" { 2592 value 2; 2593 description 2594 "A TE node or te-link has been updated."; 2595 } 2596 } 2597 description "TE Event type for notifications"; 2598 } // te-topology-event-type 2599 typedef te-topology-id { 2600 type string { 2601 pattern 2602 '([a-zA-Z0-9\-_.]+:)*' 2603 + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2604 } 2605 description 2606 "An identifier for a topology. 2607 It is optional to have one or more prefixes at the begining, 2608 separated by colons. The prefixes can be the network-types, 2609 defined in ietf-network.yang, to help user to understand the 2610 topology better before further inquiry."; 2611 } 2613 typedef te-tp-id { 2614 type union { 2615 type uint32; // Unnumbered 2616 type inet:ip-address; // IPv4 or IPv6 address 2617 } 2618 description 2619 "An identifier for a TE link endpoint on a node. 2620 This attribute is mapped to local or remote link identifier in 2621 RFC3630 and RFC5305."; 2622 } 2624 typedef admin-group { 2625 type binary { 2626 length 4; 2627 } 2628 description 2629 "Administrative group/Resource class/Color."; 2630 } 2632 typedef extended-admin-group { 2633 type binary; 2634 description 2635 "Extended administrative group/Resource class/Color."; 2636 } 2638 typedef admin-groups { 2639 type union { 2640 type admin-group; 2641 type extended-admin-group; 2642 } 2643 description "TE administrative group derived type"; 2644 } 2646 typedef srlg { 2647 type uint32; 2648 description "SRLG type"; 2649 } 2651 identity path-computation-srlg-type { 2652 description 2653 "Base identity for SRLG path computation"; 2654 } 2656 identity srlg-ignore { 2657 base path-computation-srlg-type; 2658 description 2659 "Ignores SRLGs in path computation"; 2660 } 2662 identity srlg-strict { 2663 base path-computation-srlg-type; 2664 description 2665 "Include strict SRLG check in path computation"; 2666 } 2668 identity srlg-preferred { 2669 base path-computation-srlg-type; 2670 description 2671 "Include preferred SRLG check in path computation"; 2672 } 2674 identity srlg-weighted { 2675 base path-computation-srlg-type; 2676 description 2677 "Include weighted SRLG check in path computation"; 2678 } 2680 typedef te-metric { 2681 type uint32; 2682 description 2683 "TE link metric"; 2684 } 2686 /** 2687 * TE performance metric groupings 2688 **/ 2689 grouping performance-metric-container { 2690 description 2691 "A container containing performance metric attributes."; 2692 container performance-metric { 2693 description 2694 "Link performance information in real time."; 2696 reference 2697 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 2698 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 2699 RFC7823: Performance-Based Path Selection for Explicitly 2700 Routed Label Switched Paths (LSPs) Using TE Metric 2701 Extensions"; 2702 container measurement { 2703 description 2704 "Measured performance metric values. Static configuration 2705 and manual overrides of these measurements are also 2706 allowed."; 2707 uses performance-metric-attributes; 2708 } 2709 container normality 2710 { 2711 description 2712 "Performance metric normality values."; 2713 uses performance-metric-normality-attributes; 2714 } 2715 uses performance-metric-throttle-container; 2716 } 2717 } // performance-metric-container 2719 grouping performance-metric-attributes { 2720 description 2721 "Link performance information in real time."; 2722 reference 2723 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 2724 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 2725 RFC7823: Performance-Based Path Selection for Explicitly 2726 Routed Label Switched Paths (LSPs) Using TE Metric 2727 Extensions"; 2728 leaf unidirectional-delay { 2729 type uint32 { 2730 range 0..16777215; 2731 } 2732 description "Delay or latency in micro seconds."; 2733 } 2734 leaf unidirectional-min-delay { 2735 type uint32 { 2736 range 0..16777215; 2737 } 2738 description "Minimum delay or latency in micro seconds."; 2739 } 2740 leaf unidirectional-max-delay { 2741 type uint32 { 2742 range 0..16777215; 2743 } 2744 description "Maximum delay or latency in micro seconds."; 2745 } 2746 leaf unidirectional-delay-variation { 2747 type uint32 { 2748 range 0..16777215; 2749 } 2750 description "Delay variation in micro seconds."; 2751 } 2752 leaf unidirectional-packet-loss { 2753 type decimal64 { 2754 fraction-digits 6; 2755 range "0 .. 50.331642"; 2756 } 2757 description 2758 "Packet loss as a percentage of the total traffic sent 2759 over a configurable interval. The finest precision is 2760 0.000003%."; 2761 } 2762 leaf unidirectional-residual-bandwidth { 2763 type rt-types:bandwidth-ieee-float32; 2764 description 2765 "Residual bandwidth that subtracts tunnel 2766 reservations from Maximum Bandwidth (or link capacity) 2767 [RFC3630] and provides an aggregated remainder across QoS 2768 classes."; 2769 } 2770 leaf unidirectional-available-bandwidth { 2771 type rt-types:bandwidth-ieee-float32; 2772 description 2773 "Available bandwidth that is defined to be residual 2774 bandwidth minus the measured bandwidth used for the 2775 actual forwarding of non-RSVP-TE LSP packets. For a 2776 bundled link, available bandwidth is defined to be the 2777 sum of the component link available bandwidths."; 2778 } 2779 leaf unidirectional-utilized-bandwidth { 2780 type rt-types:bandwidth-ieee-float32; 2781 description 2782 "Bandwidth utilization that represents the actual 2783 utilization of the link (i.e. as measured in the router). 2784 For a bundled link, bandwidth utilization is defined to 2785 be the sum of the component link bandwidth 2786 utilizations."; 2787 } 2788 } // performance-metric-attributes 2790 grouping performance-metric-normality-attributes { 2791 description 2792 "Link performance metric normality attributes."; 2793 reference 2794 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 2795 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 2796 RFC7823: Performance-Based Path Selection for Explicitly 2797 Routed Label Switched Paths (LSPs) Using TE Metric 2798 Extensions"; 2799 leaf unidirectional-delay { 2800 type te-types:performance-metric-normality; 2801 description "Delay normality."; 2802 } 2803 leaf unidirectional-min-delay { 2804 type te-types:performance-metric-normality; 2805 description "Minimum delay or latency normality."; 2806 } 2807 leaf unidirectional-max-delay { 2808 type te-types:performance-metric-normality; 2809 description "Maximum delay or latency normality."; 2810 } 2811 leaf unidirectional-delay-variation { 2812 type te-types:performance-metric-normality; 2813 description "Delay variation normality."; 2814 } 2815 leaf unidirectional-packet-loss { 2816 type te-types:performance-metric-normality; 2817 description "Packet loss normality."; 2818 } 2819 leaf unidirectional-residual-bandwidth { 2820 type te-types:performance-metric-normality; 2821 description "Residual bandwidth normality."; 2822 } 2823 leaf unidirectional-available-bandwidth { 2824 type te-types:performance-metric-normality; 2825 description "Available bandwidth normality."; 2826 } 2827 leaf unidirectional-utilized-bandwidth { 2828 type te-types:performance-metric-normality; 2829 description "Bandwidth utilization normality."; 2830 } 2831 } // performance-metric-normality-attributes 2833 grouping performance-metric-throttle-container { 2834 description 2835 "A container controlling performance metric throttle."; 2836 container throttle { 2837 must "suppression-interval >= measure-interval" { 2838 error-message 2839 "suppression-interval cannot be less then 2840 measure-interval."; 2841 description 2842 "Constraint on suppression-interval and 2843 measure-interval."; 2844 } 2845 description 2846 "Link performance information in real time."; 2847 reference 2848 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 2849 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 2850 RFC7823: Performance-Based Path Selection for Explicitly 2851 Routed Label Switched Paths (LSPs) Using TE Metric 2852 Extensions"; 2853 leaf unidirectional-delay-offset { 2854 type uint32 { 2855 range 0..16777215; 2856 } 2857 description 2858 "Offset value to be added to the measured delay value."; 2859 } 2860 leaf measure-interval { 2861 type uint32; 2862 default 30; 2863 description 2864 "Interval in seconds to measure the extended metric 2865 values."; 2866 } 2867 leaf advertisement-interval { 2868 type uint32; 2869 description 2870 "Interval in seconds to advertise the extended metric 2871 values."; 2872 } 2873 leaf suppression-interval { 2874 type uint32 { 2875 range "1 .. max"; 2876 } 2877 default 120; 2878 description 2879 "Interval in seconds to suppress advertising the extended 2880 metric values."; 2881 } 2882 container threshold-out { 2883 uses performance-metric-attributes; 2884 description 2885 "If the measured parameter falls outside an upper bound 2886 for all but the min delay metric (or lower bound for 2887 min-delay metric only) and the advertised value is not 2888 already outside that bound, anomalous announcement will be 2889 triggered."; 2890 } 2891 container threshold-in { 2892 uses performance-metric-attributes; 2893 description 2894 "If the measured parameter falls inside an upper bound 2895 for all but the min delay metric (or lower bound for 2896 min-delay metric only) and the advertised value is not 2897 already inside that bound, normal (anomalous-flag cleared) 2898 announcement will be triggered."; 2899 } 2900 container threshold-accelerated-advertisement { 2901 description 2902 "When the difference between the last advertised value and 2903 current measured value exceed this threshold, anomalous 2904 announcement will be triggered."; 2905 uses performance-metric-attributes; 2906 } 2907 } 2908 } // performance-metric-throttle-container 2910 /** 2911 * TE tunnel generic groupings 2912 **/ 2914 /* Tunnel path selection parameters */ 2915 /*** End of TE tunnel groupings ***/ 2917 /** 2918 * TE interface generic groupings 2919 **/ 2920 } 2921 2923 Figure 7: TE basic types YANG module 2925 file "ietf-te@2017-03-10.yang" 2926 module ietf-te { 2927 yang-version 1.1; 2929 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 2931 /* Replace with IANA when assigned */ 2932 prefix "te"; 2934 /* Import TE generic types */ 2935 import ietf-te-types { 2936 prefix te-types; 2937 } 2939 import ietf-te-mpls-types { 2940 prefix "te-mpls-types"; 2941 } 2943 import ietf-inet-types { 2944 prefix inet; 2945 } 2947 organization 2948 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2949 Working Group"; 2951 contact 2952 "WG Web: 2953 WG List: 2955 WG Chair: Lou Berger 2956 2958 WG Chair: Vishnu Pavan Beeram 2959 2961 Editor: Tarek Saad 2962 2964 Editor: Rakesh Gandhi 2965 2967 Editor: Vishnu Pavan Beeram 2968 2970 Editor: Himanshu Shah 2971 2973 Editor: Xufeng Liu 2974 2976 Editor: Xia Chen 2977 2979 Editor: Raqib Jones 2980 2982 Editor: Bin Wen 2983 "; 2985 description 2986 "YANG data module for TE configuration, 2987 state, RPC and notifications."; 2989 revision "2017-03-10" { 2990 description "Latest update to TE generic YANG module."; 2991 reference "TBD"; 2992 } 2994 typedef tunnel-ref { 2995 type leafref { 2996 path "/te:te/te:tunnels/te:tunnel/te:name"; 2997 } 2998 description 2999 "This type is used by data models that need to reference 3000 configured TE tunnel."; 3001 } 3003 typedef tunnel-p2mp-ref { 3004 type leafref { 3005 path "/te:te/te:tunnels/te:tunnel-p2mp/te:name"; 3006 } 3007 description 3008 "This type is used by data models that need to reference 3009 configured P2MP TE tunnel."; 3010 } 3012 /** 3013 * TE tunnel generic groupings 3014 */ 3015 grouping path-route-objects { 3016 description 3017 "List of EROs to be included or excluded when performing 3018 the path computation."; 3019 container explicit-route-objects { 3020 description 3021 "Container for the include or exclude route object list"; 3022 list explicit-route-object { 3023 key index; 3024 description 3025 "List of explicit route objects to include or 3026 exclude in path computation"; 3027 leaf index { 3028 type leafref { 3029 path "../config/index"; 3030 } 3031 description 3032 "Index of this explicit route object"; 3034 } 3035 leaf explicit-route-usage { 3036 type identityref { 3037 base te-types:route-usage-type; 3038 } 3039 description "An explicit-route hop action."; 3040 } 3041 uses te-types:explicit-route-hop; 3042 } 3043 } 3044 } 3046 grouping path-affinities { 3047 description 3048 "Path affinities grouping"; 3049 container path-affinities { 3050 description 3051 "Path affinities container"; 3052 choice style { 3053 description 3054 "Path affinities representation style"; 3055 case values { 3056 leaf value { 3057 type uint32 { 3058 range "0..4294967295"; 3059 } 3060 description 3061 "Affinity value"; 3062 } 3063 leaf mask { 3064 type uint32 { 3065 range "0..4294967295"; 3066 } 3067 description 3068 "Affinity mask"; 3069 } 3070 } 3071 case named { 3072 list constraints { 3073 key "usage"; 3074 leaf usage { 3075 type identityref { 3076 base te-types:resource-affinities-type; 3077 } 3078 description "Affinities usage"; 3079 } 3080 container constraint { 3081 description 3082 "Container for named affinities"; 3083 list affinity-names { 3084 key "name"; 3085 leaf name { 3086 type string; 3087 description 3088 "Affinity name"; 3089 } 3090 description 3091 "List of named affinities"; 3092 } 3093 } 3094 description 3095 "List of named affinity constraints"; 3096 } 3097 } 3098 } 3099 } 3100 } 3102 grouping path-srlgs { 3103 description 3104 "Path SRLG properties grouping"; 3105 container path-srlgs { 3106 description 3107 "Path SRLG properties container"; 3108 choice style { 3109 description 3110 "Type of SRLG representation"; 3111 case values { 3112 leaf usage { 3113 type identityref { 3114 base te-types:route-exclude-srlg; 3115 } 3116 description "SRLG usage"; 3117 } 3118 leaf-list values { 3119 type te-types:srlg; 3120 description "SRLG value"; 3121 } 3122 } 3123 case named { 3124 list constraints { 3125 key "usage"; 3126 leaf usage { 3127 type identityref { 3128 base te-types:route-exclude-srlg; 3129 } 3130 description "SRLG usage"; 3131 } 3132 container constraint { 3133 description 3134 "Container for named SRLG list"; 3135 list srlg-names { 3136 key "name"; 3137 leaf name { 3138 type string; 3139 description 3140 "The SRLG name"; 3141 } 3142 description 3143 "List named SRLGs"; 3144 } 3145 } 3146 description 3147 "List of named SRLG constraints"; 3148 } 3149 } 3150 } 3151 } 3152 } 3154 grouping bidir-assoc-properties { 3155 description 3156 "TE tunnel associated bidirectional properties 3157 grouping"; 3158 container bidirectional { 3159 description 3160 "TE tunnel associated bidirectional attributes."; 3161 container association { 3162 description 3163 "Tunnel bidirectional association properties"; 3164 leaf id { 3165 type uint16; 3166 description 3167 "The TE tunnel association identifier."; 3168 } 3169 leaf source { 3170 type inet:ip-address; 3171 description 3172 "The TE tunnel association source."; 3173 } 3174 leaf global-source { 3175 type inet:ip-address; 3176 description 3177 "The TE tunnel association global 3178 source."; 3179 } 3180 leaf type { 3181 type identityref { 3182 base te-types:bidir-association-type; 3183 } 3184 default te-types:bidir-assoc-non-corouted; 3185 description 3186 "The TE tunnel association type."; 3187 } 3188 leaf provisioing { 3189 type identityref { 3190 base te-types:bidir-provisioning-mode; 3191 } 3192 description 3193 "Describes the provisioning model of the 3194 associated bidirectional LSP"; 3195 reference 3196 "draft-ietf-teas-mpls-tp-rsvpte-ext- 3197 associated-lsp, section-3.2"; 3198 } 3199 } 3200 } 3201 } 3203 grouping p2p-secondary-path-properties { 3204 description 3205 "tunnel path properties."; 3206 container config { 3207 description 3208 "Configuration parameters relating to 3209 tunnel properties"; 3210 uses p2p-path-properties_config; 3211 } 3212 container state { 3213 config false; 3214 description 3215 "State information associated with tunnel 3216 properties"; 3217 uses p2p-path-properties_config; 3218 uses p2p-secondary-path-properties_state; 3219 } 3220 } 3222 grouping p2p-primary-path-properties { 3223 description 3224 "TE tunnel primary path properties grouping"; 3225 container config { 3226 description 3227 "Configuration parameters relating to 3228 tunnel properties"; 3229 uses p2p-path-properties_config; 3230 } 3231 container state { 3232 config false; 3233 description 3234 "State information associated with tunnel 3235 properties"; 3236 uses p2p-path-properties_config; 3237 uses p2p-primary-path-properties_state; 3238 } 3239 } 3241 grouping p2p-primary-path-properties_state { 3242 description "TE path state parameters"; 3243 container lsps { 3244 description "TE LSPs container"; 3245 list lsp { 3246 key 3247 "source destination tunnel-id lsp-id "+ 3248 "extended-tunnel-id type"; 3249 description "List of LSPs associated with the tunnel."; 3251 leaf source { 3252 type leafref { 3253 path "../../../../../../../../lsps-state/lsp/source"; 3254 } 3255 description 3256 "Tunnel sender address extracted from 3257 SENDER_TEMPLATE object"; 3258 reference "RFC3209"; 3259 } 3260 leaf destination { 3261 type leafref { 3262 path "../../../../../../../../lsps-state/lsp/destination"; 3263 } 3264 description 3265 "Tunnel endpoint address extracted from 3266 SESSION object"; 3267 reference "RFC3209"; 3268 } 3269 leaf tunnel-id { 3270 type leafref { 3271 path "../../../../../../../../lsps-state/lsp/tunnel-id"; 3272 } 3273 description 3274 "Tunnel identifier used in the SESSION 3275 that remains constant over the life 3276 of the tunnel."; 3277 reference "RFC3209"; 3278 } 3279 leaf lsp-id { 3280 type leafref { 3281 path "../../../../../../../../lsps-state/lsp/lsp-id"; 3282 } 3283 description 3284 "Identifier used in the SENDER_TEMPLATE 3285 and the FILTER_SPEC that can be changed 3286 to allow a sender to share resources with 3287 itself."; 3288 reference "RFC3209"; 3289 } 3290 leaf extended-tunnel-id { 3291 type leafref { 3292 path "../../../../../../../../lsps-state/lsp/" + 3293 "extended-tunnel-id"; 3294 } 3295 description 3296 "Extended Tunnel ID of the LSP."; 3297 reference "RFC3209"; 3298 } 3299 leaf type { 3300 type leafref { 3301 path "../../../../../../../../lsps-state/lsp/type"; 3302 } 3303 description "LSP type P2P or P2MP"; 3304 } 3305 leaf signaling-type { 3306 type identityref { 3307 base te-types:path-signaling-type; 3308 } 3309 description "TE tunnel path signaling type"; 3310 } 3311 } 3312 } 3313 } 3315 grouping p2p-secondary-path-properties_state { 3316 description "TE secondary path state parameters"; 3317 list lsp { 3318 key "source"; 3319 description "List of LSPs associated with the tunnel."; 3321 leaf source { 3322 type leafref { 3323 path "../../../../../../../../lsps-state/lsp/source"; 3324 } 3325 description 3326 "Tunnel sender address extracted from 3327 SENDER_TEMPLATE object"; 3328 reference "RFC3209"; 3329 } 3330 leaf destination { 3331 type leafref { 3332 path "../../../../../../../../lsps-state/lsp/destination"; 3333 } 3334 description 3335 "Tunnel endpoint address extracted from 3336 SESSION object"; 3337 reference "RFC3209"; 3338 } 3339 leaf tunnel-id { 3340 type leafref { 3341 path "../../../../../../../../lsps-state/lsp/tunnel-id"; 3342 } 3343 description 3344 "Tunnel identifier used in the SESSION 3345 that remains constant over the life 3346 of the tunnel."; 3347 reference "RFC3209"; 3348 } 3349 leaf lsp-id { 3350 type leafref { 3351 path "../../../../../../../../lsps-state/lsp/lsp-id"; 3352 } 3353 description 3354 "Identifier used in the SENDER_TEMPLATE 3355 and the FILTER_SPEC that can be changed 3356 to allow a sender to share resources with 3357 itself."; 3358 reference "RFC3209"; 3359 } 3360 leaf extended-tunnel-id { 3361 type leafref { 3362 path "../../../../../../../../lsps-state/lsp" + 3363 "/extended-tunnel-id"; 3364 } 3365 description 3366 "Extended Tunnel ID of the LSP."; 3367 reference "RFC3209"; 3368 } 3369 leaf type { 3370 type leafref { 3371 path "../../../../../../../../lsps-state/lsp/type"; 3372 } 3373 description "LSP type P2P or P2MP"; 3374 } 3375 leaf active { 3376 type boolean; 3377 description 3378 "Indicates the current active path option that has 3379 been selected of the candidate secondary paths"; 3380 } 3381 } 3382 } 3384 grouping p2p-path-properties_config { 3385 description 3386 "TE tunnel path properties configuration grouping"; 3387 leaf name { 3388 type string; 3389 description "TE path name"; 3390 } 3391 leaf preference { 3392 type uint8 { 3393 range "1..255"; 3394 } 3395 description 3396 "Specifies a preference for this path. The lower the 3397 number higher the preference"; 3398 } 3399 leaf path-setup-protocol { 3400 type identityref { 3401 base te-types:te-path-setup-protocol; 3402 } 3403 description 3404 "Signaling protocol used to set up this tunnel"; 3405 } 3406 leaf path-computation-method { 3407 type identityref { 3408 base te-types:path-computation-method; 3409 } 3410 default te-types:path-locally-computed; 3411 description 3412 "The method used for computing the path, either 3413 locally computed, queried from a server or not 3414 computed at all (explicitly configured)."; 3415 } 3416 leaf path-computation-server { 3417 when "../path-computation-method = 'path-externally-queried'" { 3418 description 3419 "The path-computation server when the path is 3420 externally queried"; 3421 } 3422 type inet:ip-address; 3423 description 3424 "Address of the external path computation 3425 server"; 3426 } 3427 leaf compute-only { 3428 type empty; 3429 description 3430 "When set, the path is computed and updated whenever 3431 the topology is updated. No resources are committed 3432 or reserved in the network."; 3433 } 3434 leaf use-cspf { 3435 when "../path-computation-method = 'path-locally-computed'"; 3436 type boolean; 3437 description "A CSPF dynamically computed path"; 3438 } 3439 leaf verbatim { 3440 type empty; 3441 description 3442 "Indicates no topology or CSPF is attempted on the 3443 specified path."; 3444 } 3445 leaf lockdown { 3446 type empty; 3447 description 3448 "Indicates no reoptimization to be attempted for 3449 this path."; 3450 } 3451 leaf named-explicit-path { 3452 when "../path-computation-method = 'path-explicitly-defined'"; 3453 type leafref { 3454 path "../../../../../../globals/named-explicit-paths/" 3455 + "named-explicit-path/config/name"; 3456 } 3457 description "The explicit-path name"; 3458 } 3459 leaf named-path-constraint { 3460 if-feature te-types:named-path-constraints; 3461 type leafref { 3462 path "../../../../../../globals/" 3463 + "named-path-constraints/named-path-constraint/" 3464 + "config/name"; 3465 } 3466 description 3467 "Reference to a globally defined named path 3468 constraint set"; 3469 } 3470 } 3472 /* TE tunnel configuration data */ 3473 grouping tunnel-p2mp-params_config { 3474 description 3475 "Configuration parameters relating to TE tunnel"; 3476 leaf name { 3477 type string; 3478 description "TE tunnel name."; 3479 } 3480 leaf type { 3481 type identityref { 3482 base te-types:tunnel-type; 3483 } 3484 description "TE tunnel type."; 3485 } 3486 leaf identifier { 3487 type uint16; 3488 description 3489 "TE tunnel Identifier."; 3490 } 3491 leaf description { 3492 type string; 3493 description 3494 "Textual description for this TE tunnel"; 3495 } 3496 leaf setup-priority { 3497 type uint8 { 3498 range "0..7"; 3499 } 3500 description 3501 "TE LSP setup priority"; 3502 } 3503 leaf hold-priority { 3504 type uint8 { 3505 range "0..7"; 3506 } 3507 description 3508 "TE LSP hold priority"; 3509 } 3510 leaf lsp-protection-type { 3511 type identityref { 3512 base te-types:lsp-prot-type; 3513 } 3514 description "LSP protection type."; 3515 } 3516 leaf admin-status { 3517 type identityref { 3518 base te-types:state-type; 3519 } 3520 default te-types:state-up; 3521 description "TE tunnel administrative state."; 3522 } 3523 leaf reoptimize-timer { 3524 type uint16; 3525 units seconds; 3526 description 3527 "frequency of reoptimization of 3528 a traffic engineered LSP"; 3529 } 3530 } 3532 grouping te-tunnel-bandwidth_config { 3533 description 3534 "Configuration parameters related to bandwidth for a tunnel"; 3536 leaf specification-type { 3537 type te-mpls-types:te-bandwidth-type; 3538 default SPECIFIED; 3539 description 3540 "The method used for settign the bandwidth, either explicitly 3541 specified or configured"; 3542 } 3544 leaf set-bandwidth { 3545 when "../specification-type = 'te-mpls-types:SPECIFIED'" { 3546 description 3547 "The bandwidth value when bandwidth is explicitly 3548 specified"; 3549 } 3550 type te-mpls-types:bandwidth-kbps; 3551 description 3552 "set bandwidth explicitly, e.g., using 3553 offline calculation"; 3554 } 3555 leaf class-type { 3556 type te-types:te-ds-class; 3557 description 3558 "The Class-Type of traffic transported by the LSP."; 3559 reference "RFC4124: section-4.3.1"; 3560 } 3561 } 3562 grouping te-tunnel-bandwidth_state { 3563 description 3564 "Operational state parameters relating to bandwidth for a tunnel"; 3566 leaf signaled-bandwidth { 3567 type te-mpls-types:bandwidth-kbps; 3568 description 3569 "The currently signaled bandwidth of the LSP. In the case where 3570 the bandwidth is specified explicitly, then this will match the 3571 value of the set-bandwidth leaf; in cases where the bandwidth is 3572 dynamically computed by the system, the current value of the 3573 bandwidth should be reflected."; 3574 } 3575 } 3577 grouping te-lsp-auto-bandwidth_config { 3578 description 3579 "Configuration parameters related to autobandwidth"; 3581 leaf enabled { 3582 type boolean; 3583 default false; 3584 description 3585 "enables mpls auto-bandwidth on the 3586 lsp"; 3587 } 3589 leaf min-bw { 3590 type te-mpls-types:bandwidth-kbps; 3591 description 3592 "set the minimum bandwidth in Kbps for an 3593 auto-bandwidth LSP"; 3594 } 3596 leaf max-bw { 3597 type te-mpls-types:bandwidth-kbps; 3598 description 3599 "set the maximum bandwidth in Kbps for an 3600 auto-bandwidth LSP"; 3601 } 3603 leaf adjust-interval { 3604 type uint32; 3605 description 3606 "time in seconds between adjustments to 3607 LSP bandwidth"; 3608 } 3609 leaf adjust-threshold { 3610 type te-types:percentage; 3611 description 3612 "percentage difference between the LSP's 3613 specified bandwidth and its current bandwidth 3614 allocation -- if the difference is greater than the 3615 specified percentage, auto-bandwidth adjustment is 3616 triggered"; 3617 } 3618 } 3620 grouping te-lsp-overflow_config { 3621 description 3622 "configuration for mpls lsp bandwidth 3623 overflow adjustment"; 3625 leaf enabled { 3626 type boolean; 3627 default false; 3628 description 3629 "enables mpls lsp bandwidth overflow 3630 adjustment on the lsp"; 3631 } 3633 leaf overflow-threshold { 3634 type te-types:percentage; 3635 description 3636 "bandwidth percentage change to trigger 3637 an overflow event"; 3639 } 3641 leaf trigger-event-count { 3642 type uint16; 3643 description 3644 "number of consecutive overflow sample 3645 events needed to trigger an overflow adjustment"; 3646 } 3647 } 3649 grouping te-lsp-underflow_config { 3650 description 3651 "configuration for mpls lsp bandwidth 3652 underflow adjustment"; 3654 leaf enabled { 3655 type boolean; 3656 default false; 3657 description 3658 "enables bandwidth underflow 3659 adjustment on the lsp"; 3660 } 3662 leaf underflow-threshold { 3663 type te-types:percentage; 3664 description 3665 "bandwidth percentage change to trigger 3666 and underflow event"; 3667 } 3669 leaf trigger-event-count { 3670 type uint16; 3671 description 3672 "number of consecutive underflow sample 3673 events needed to trigger an underflow adjustment"; 3674 } 3675 } 3677 grouping te-path-bandwidth_top { 3678 description 3679 "Top level grouping for specifying bandwidth for a TE path"; 3681 container bandwidth { 3682 description 3683 "Bandwidth configuration for TE LSPs"; 3685 container config { 3686 description 3687 "Configuration parameters related to bandwidth on TE 3688 tunnels:"; 3689 uses te-tunnel-bandwidth_config; 3690 } 3692 container state { 3693 config false; 3694 description 3695 "State parameters related to bandwidth 3696 configuration of TE tunnels"; 3697 uses te-tunnel-bandwidth_config; 3698 uses te-tunnel-bandwidth_state; 3699 } 3700 } 3701 } 3703 grouping te-tunnel-bandwidth_top { 3704 description 3705 "Top level grouping for specifying bandwidth for a tunnel"; 3707 container bandwidth { 3708 description 3709 "Bandwidth configuration for TE LSPs"; 3711 container config { 3712 description 3713 "Configuration parameters related to bandwidth on TE 3714 tunnels:"; 3715 uses te-tunnel-bandwidth_config; 3716 } 3718 container state { 3719 config false; 3720 description 3721 "State parameters related to bandwidth 3722 configuration of TE tunnels"; 3723 uses te-tunnel-bandwidth_config; 3724 uses te-tunnel-bandwidth_state; 3725 } 3727 container auto-bandwidth { 3728 when "../config/specification-type = 'AUTO'" { 3729 description 3730 "Include this container for auto bandwidth 3731 specific configuration"; 3732 } 3733 description 3734 "Parameters related to auto-bandwidth"; 3736 container config { 3737 description 3738 "Configuration parameters relating to MPLS 3739 auto-bandwidth on the tunnel."; 3740 uses te-lsp-auto-bandwidth_config; 3741 } 3742 container state { 3743 config false; 3744 description 3745 "State parameters relating to MPLS 3746 auto-bandwidth on the tunnel."; 3747 uses te-lsp-auto-bandwidth_config; 3748 } 3750 container overflow { 3751 description 3752 "configuration of MPLS overflow bandwidth 3753 adjustement for the LSP"; 3755 container config { 3756 description 3757 "Config information for MPLS overflow bandwidth 3758 adjustment"; 3759 uses te-lsp-overflow_config; 3760 } 3762 container state { 3763 config false; 3764 description 3765 "Config information for MPLS overflow bandwidth 3766 adjustment"; 3767 uses te-lsp-overflow_config; 3768 } 3769 } 3771 container underflow { 3772 description 3773 "configuration of MPLS underflow bandwidth 3774 adjustement for the LSP"; 3776 container config { 3777 description 3778 "Config information for MPLS underflow bandwidth 3779 adjustment"; 3780 uses te-lsp-underflow_config; 3781 } 3783 container state { 3784 config false; 3785 description 3786 "State information for MPLS underflo 3787 adjustment"; 3788 uses te-lsp-underflow_config; 3789 } 3790 } 3791 } 3792 } 3793 } 3795 grouping tunnel-p2p-params_config { 3796 description 3797 "Configuration parameters relating to TE tunnel"; 3798 leaf name { 3799 type string; 3800 description "TE tunnel name."; 3802 } 3803 leaf type { 3804 type identityref { 3805 base te-types:tunnel-type; 3806 } 3807 description "TE tunnel type."; 3808 } 3809 leaf identifier { 3810 type uint16; 3811 description 3812 "TE tunnel Identifier."; 3813 } 3814 leaf description { 3815 type string; 3816 description 3817 "Textual description for this TE tunnel"; 3818 } 3819 leaf encoding { 3820 type identityref { 3821 base te-types:lsp-encoding-types; 3822 } 3823 description "LSP encoding type"; 3824 } 3825 leaf protection-type { 3826 type identityref { 3827 base te-types:lsp-prot-type; 3828 } 3829 description "LSP protection type."; 3830 } 3831 leaf admin-status { 3832 type identityref { 3833 base te-types:state-type; 3834 } 3835 default te-types:state-up; 3836 description "TE tunnel administrative state."; 3837 } 3838 leaf preference { 3839 type uint8 { 3840 range "1..255"; 3841 } 3842 description 3843 "Specifies a preference for this tunnel. 3844 A lower number signifies a better preference"; 3845 } 3846 leaf reoptimize-timer { 3847 type uint16; 3848 units seconds; 3849 description 3850 "frequency of reoptimization of 3851 a traffic engineered LSP"; 3852 } 3853 leaf source { 3854 type inet:ip-address; 3855 description 3856 "TE tunnel source address."; 3857 } 3858 leaf destination { 3859 /* Add when check */ 3860 type inet:ip-address; 3861 description 3862 "P2P tunnel destination address"; 3863 } 3864 leaf src-tp-id { 3865 type binary; 3866 description 3867 "TE tunnel source termination point identifier."; 3868 } 3869 leaf dst-tp-id { 3870 /* Add when check */ 3871 type binary; 3872 description 3873 "TE tunnel destination termination point identifier."; 3874 } 3875 leaf setup-priority { 3876 type uint8 { 3877 range "0..7"; 3878 } 3879 description 3880 "TE LSP setup priority"; 3881 } 3882 leaf hold-priority { 3883 type uint8 { 3884 range "0..7"; 3885 } 3886 description 3887 "TE LSP hold priority"; 3888 } 3889 leaf signaling-type { 3890 type identityref { 3891 base te-types:path-signaling-type; 3892 } 3893 description "TE tunnel path signaling type"; 3894 } 3895 container hierarchical-link-id { 3896 description 3897 "Identifies a hierarchical link (in server layer) 3898 that this tunnel is associated with."; 3899 leaf local-te-node-id { 3900 type te-types:te-node-id; 3901 description 3902 "Local TE node identifier"; 3903 } 3904 leaf local-te-link-tp-id { 3905 type te-types:te-tp-id; 3906 description 3907 "Local TE link termination point identifier"; 3908 } 3909 leaf remote-te-node-id { 3910 type te-types:te-node-id; 3911 description 3912 "Remote TE node identifier"; 3913 } 3914 leaf te-topology-id { 3915 type te-types:te-topology-id; 3916 description 3917 "It is presumed that a datastore will contain many 3918 topologies. To distinguish between topologies it is 3919 vital to have UNIQUE topology identifiers."; 3920 } 3921 } 3922 uses bidir-assoc-properties; 3923 } 3925 grouping tunnel-p2p-params_state { 3926 description 3927 "State parameters relating to TE tunnel"; 3928 leaf oper-status { 3929 type identityref { 3930 base te-types:state-type; 3931 } 3932 description "TE tunnel operational state."; 3933 } 3934 } 3936 /* TE tunnel configuration/state grouping */ 3937 grouping tunnel-p2mp-properties { 3938 description 3939 "Top level grouping for P2MP tunnel properties."; 3940 container config { 3941 description 3942 "Configuration parameters relating to 3943 tunnel P2MP properties"; 3944 uses tunnel-p2mp-params_config; 3945 } 3946 container state { 3947 config false; 3948 description 3949 "State information associated with tunnel 3950 properties"; 3951 uses tunnel-p2mp-params_config; 3952 } 3953 } 3955 grouping p2p-path-candidate-secondary-path-config { 3956 description 3957 "Configuration parameters relating to a secondary path which 3958 is a candidate for a particular primary path"; 3960 leaf secondary-path { 3961 type leafref { 3962 path "../../../../../../p2p-secondary-paths/" + 3963 "p2p-secondary-path/config/name"; 3964 } 3965 description 3966 "A reference to the secondary path that should be utilised 3967 when the containing primary path option is in use"; 3968 } 3970 leaf priority { 3971 type uint16; 3972 description 3973 "The priority of the specified secondary path option. Higher 3974 priority options are less preferable - such that a secondary 3975 path reference with a priority of 0 is the most preferred"; 3976 } 3977 leaf path-setup-protocol { 3978 type identityref { 3979 base te-types:te-path-setup-protocol; 3980 } 3981 description 3982 "Signaling protocol used to set up this tunnel"; 3983 } 3984 } 3986 grouping p2p-path-candidate-secondary-path-state { 3987 description 3988 "Operational state parameters relating to a secondary path 3989 which is a candidate for a particular primary path"; 3991 leaf active { 3992 type boolean; 3993 description 3994 "Indicates the current active path option that has 3995 been selected of the candidate secondary paths"; 3996 } 3997 } 3999 grouping tunnel-p2p-properties { 4000 description 4001 "Top level grouping for tunnel properties."; 4002 container config { 4003 description 4004 "Configuration parameters relating to 4005 tunnel properties"; 4006 uses tunnel-p2p-params_config; 4007 } 4008 container state { 4009 config false; 4010 description 4011 "State information associated with tunnel 4012 properties"; 4013 uses tunnel-p2p-params_config; 4014 uses tunnel-p2p-params_state; 4015 } 4016 uses te-tunnel-bandwidth_top; 4018 container p2p-primary-paths { 4019 description "Set of P2P primary aths container"; 4020 list p2p-primary-path { 4021 key "name"; 4022 description 4023 "List of primary paths for this tunnel."; 4024 leaf name { 4025 type leafref { 4026 path "../config/name"; 4027 } 4028 description "TE path name"; 4029 } 4030 uses p2p-primary-path-properties; 4031 container candidate-p2p-secondary-paths { 4032 description 4033 "The set of candidate secondary paths which may be used 4034 for this primary path. When secondary paths are specified 4035 in the list the path of the secondary LSP in use must be 4036 restricted to those path options referenced. The 4037 priority of the secondary paths is specified within the 4038 list. Higher priority values are less preferred - that is 4039 to say that a path with priority 0 is the most preferred 4040 path. In the case that the list is empty, any secondary 4041 path option may be utilised when the current primary path 4042 is in use."; 4043 list candidate-p2p-secondary-path { 4044 key "secondary-path"; 4045 description 4046 "List of secondary paths for this tunnel."; 4047 leaf secondary-path { 4048 type leafref { 4049 path "../config/secondary-path"; 4050 } 4051 description "TE path name"; 4052 } 4053 container config { 4054 description 4055 "Configuration parameters relating to the candidate 4056 secondary path"; 4058 uses p2p-path-candidate-secondary-path-config; 4059 } 4061 container state { 4062 config false; 4063 description 4064 "Operational state parameters relating to the candidate 4065 secondary path"; 4067 uses p2p-path-candidate-secondary-path-config; 4068 uses p2p-path-candidate-secondary-path-state; 4069 } 4070 } 4071 } 4072 } 4073 } 4074 container p2p-secondary-paths { 4075 description "Set of P2P secondary paths container"; 4076 list p2p-secondary-path { 4077 key "name"; 4078 description 4079 "List of secondary paths for this tunnel."; 4080 leaf name { 4081 type leafref { 4082 path "../config/name"; 4083 } 4084 description "TE path name"; 4085 } 4086 uses p2p-primary-path-properties; 4087 } 4088 } 4089 } 4090 grouping tunnel-actions { 4091 description "Tunnel actions"; 4092 action tunnel-action { 4093 description "Tunnel action"; 4094 input { 4095 leaf action-type { 4096 type identityref { 4097 base te-types:tunnel-action-type; 4098 } 4099 description "Tunnel action type"; 4100 } 4101 } 4102 output { 4103 leaf action-result { 4104 type identityref { 4105 base te-types:te-action-result; 4106 } 4107 description "The result of the RPC operation"; 4108 } 4109 } 4110 } 4111 } 4112 /*** End of TE tunnel groupings ***/ 4114 /** 4115 * LSP related generic groupings 4116 */ 4117 grouping lsp-record-route-information_state { 4118 description "recorded route information grouping"; 4119 container lsp-record-route-subobjects { 4120 description "RSVP recorded route object information"; 4121 list record-route-subobject { 4122 when "../../origin-type = 'ingress'" { 4123 description "Applicable on non-ingress LSPs only"; 4124 } 4125 key "index"; 4126 description "Record route sub-object list"; 4127 leaf index { 4128 type uint32; 4129 description "RRO subobject index"; 4130 } 4131 uses te-types:record-route-subobject; 4132 } 4133 } 4134 } 4136 grouping lsp-properties_state { 4137 description 4138 "State parameters relating to LSP"; 4139 leaf oper-status { 4140 type identityref { 4141 base te-types:state-type; 4142 } 4143 description "LSP operational state."; 4144 } 4145 leaf path-setup-protocol { 4146 type identityref { 4147 base te-types:te-path-setup-protocol; 4148 } 4149 description 4150 "Signaling protocol used to set up this tunnel"; 4151 } 4152 leaf origin-type { 4153 type enumeration { 4154 enum ingress { 4155 description 4156 "Origin ingress"; 4157 } 4158 enum egress { 4159 description 4160 "Origin egress"; 4161 } 4162 enum transit { 4163 description 4164 "transit"; 4165 } 4166 } 4167 description 4168 "Origin type of LSP relative to the location 4169 of the local switch in the path."; 4170 } 4172 leaf lsp-resource-status { 4173 type enumeration { 4174 enum primary { 4175 description 4176 "A primary LSP is a fully established LSP for 4177 which the resource allocation has been committed 4178 at the data plane"; 4179 } 4180 enum secondary { 4181 description 4182 "A secondary LSP is an LSP that has been provisioned 4183 in the control plane only; e.g. resource allocation 4184 has not been committed at the data plane"; 4185 } 4187 } 4188 description "LSP resource allocation type"; 4189 reference "rfc4872, section 4.2.1"; 4190 } 4192 leaf lsp-protection-role { 4193 type enumeration { 4194 enum working { 4195 description 4196 "A working LSP must be a primary LSP whilst a protecting 4197 LSP can be either a primary or a secondary LSP. Also, 4198 known as protected LSPs when working LSPs are associated 4199 with protecting LSPs."; 4200 } 4201 enum protecting { 4202 description 4203 "A secondary LSP is an LSP that has been provisioned 4204 in the control plane only; e.g. resource allocation 4205 has not been committed at the data plane"; 4206 } 4207 } 4208 description "LSP role type"; 4209 reference "rfc4872, section 4.2.1"; 4210 } 4212 leaf lsp-carry-normal-traffic { 4213 type empty; 4214 description 4215 "This bit is set when a protecting LSP is carrying the normal 4216 traffic after protection switching"; 4217 } 4218 } 4219 /*** End of TE LSP groupings ***/ 4221 /** 4222 * TE global generic groupings 4223 */ 4225 /* Global named admin-groups configuration data */ 4226 grouping named-admin-groups_config { 4227 description 4228 "Global named administrative groups configuration 4229 grouping"; 4230 leaf name { 4231 type string; 4232 description 4233 "A string name that uniquely identifies a TE 4234 interface named admin-group"; 4236 } 4237 leaf bit-position { 4238 type uint32; 4239 description 4240 "Bit position representing the administrative group"; 4241 } 4242 } 4243 grouping named-admin-groups { 4244 description 4245 "Global named administrative groups configuration 4246 grouping"; 4247 container named-admin-groups { 4248 description "TE named admin groups container"; 4249 list named-admin-group { 4250 if-feature te-types:extended-admin-groups; 4251 if-feature te-types:named-extended-admin-groups; 4252 key "name"; 4253 description 4254 "List of named TE admin-groups"; 4255 leaf name { 4256 type leafref { 4257 path "../config/name"; 4258 } 4259 description "Admin-group name"; 4260 } 4261 container config { 4262 description 4263 "Configuration parameters related to admin-groups"; 4264 uses named-admin-groups_config; 4265 } 4266 container state { 4267 config false; 4268 description 4269 "State parameters related to admin-groups"; 4270 uses named-admin-groups_config; 4271 } 4272 } 4273 } 4274 } 4276 /* Global named admin-srlgs configuration data */ 4277 grouping named-srlgs_config { 4278 description 4279 "Global named SRLGs configuration grouping"; 4280 leaf name { 4281 type string; 4282 description 4283 "A string name that uniquely identifies a TE 4284 interface named srlg"; 4285 } 4286 leaf group { 4287 type te-types:srlg; 4288 description "An SRLG value"; 4289 } 4290 leaf cost { 4291 type uint32; 4292 description 4293 "SRLG associated cost. Used during path to append 4294 the path cost when traversing a link with this SRLG"; 4295 } 4296 } 4298 grouping named-srlgs { 4299 description 4300 "Global named SRLGs configuration grouping"; 4301 container named-srlgs { 4302 description "TE named SRLGs container"; 4303 list named-srlg { 4304 if-feature te-types:named-srlg-groups; 4305 key "name"; 4306 description 4307 "A list of named SRLG groups"; 4308 leaf name { 4309 type leafref { 4310 path "../config/name"; 4311 } 4312 description "SRLG name"; 4313 } 4314 container config { 4315 description 4316 "Configuration parameters related to named SRLGs"; 4317 uses named-srlgs_config; 4318 } 4319 container state { 4320 config false; 4321 description 4322 "State parameters related to named SRLGs"; 4323 uses named-srlgs_config; 4324 } 4325 } 4326 } 4327 } 4329 /* Global named explicit-paths configuration data */ 4330 grouping named-explicit-paths_config { 4331 description 4332 "Global explicit path configuration 4333 grouping"; 4334 leaf name { 4335 type string; 4336 description 4337 "A string name that uniquely identifies an 4338 explicit path"; 4339 } 4340 container explicit-route-objects { 4341 description "Explicit route objects container"; 4342 list explicit-route-object { 4343 key "index"; 4344 description 4345 "List of explicit route objects"; 4346 leaf index { 4347 type leafref { 4348 path "../config/index"; 4349 } 4350 description 4351 "Index of this explicit route object"; 4352 } 4353 leaf explicit-route-usage { 4354 type identityref { 4355 base te-types:route-usage-type; 4356 } 4357 description "An explicit-route hop action."; 4358 } 4359 uses te-types:explicit-route-hop; 4360 } 4361 } 4362 } 4364 grouping named-explicit-paths { 4365 description 4366 "Global explicit path configuration 4367 grouping"; 4368 container named-explicit-paths { 4369 description "TE named explicit path container"; 4370 list named-explicit-path { 4371 key "name"; 4372 description 4373 "A list of explicit paths"; 4374 leaf name { 4375 type leafref { 4376 path "../config/name"; 4377 } 4378 description "Explicit-path name"; 4379 } 4380 container config { 4381 description 4382 "Configuration parameters related to named paths"; 4383 uses named-explicit-paths_config; 4384 } 4385 container state { 4386 config false; 4387 description 4388 "State parameters related to named paths"; 4389 uses named-explicit-paths_config; 4390 } 4391 } 4392 } 4393 } 4395 /* Global named paths constraints configuration data */ 4396 grouping named-path-constraints_config { 4397 description 4398 "Global named path constraints configuration 4399 grouping"; 4400 leaf name { 4401 type string; 4402 description 4403 "A string name that uniquely identifies a 4404 path constraint set"; 4405 } 4406 leaf topology-id { 4407 type te-types:te-topology-id; 4408 description 4409 "The tunnel path is computed using the specific 4410 topology identified by this identifier"; 4411 } 4412 leaf cost-limit { 4413 type uint32 { 4414 range "1..4294967295"; 4415 } 4416 description 4417 "The tunnel path cost limit."; 4418 } 4419 leaf hop-limit { 4420 type uint8 { 4421 range "1..255"; 4422 } 4423 description 4424 "The tunnel path hop limit."; 4425 } 4426 leaf metric-type { 4427 type identityref { 4428 base te-types:path-metric-type; 4429 } 4430 default te-types:path-metric-te; 4431 description 4432 "The tunnel path metric type."; 4433 } 4434 leaf tiebreaker-type { 4435 type identityref { 4436 base te-types:path-tiebreaker-type; 4437 } 4438 default te-types:path-tiebreaker-maxfill; 4439 description 4440 "The tunnel path computation tie breakers."; 4441 } 4442 leaf ignore-overload { 4443 type boolean; 4444 description 4445 "The tunnel path can traverse overloaded node."; 4446 } 4447 leaf setup-priority { 4448 type uint8 { 4449 range "0..7"; 4450 } 4451 description 4452 "TE LSP setup priority"; 4453 } 4454 leaf hold-priority { 4455 type uint8 { 4456 range "0..7"; 4457 } 4458 description 4459 "TE LSP hold priority"; 4460 } 4461 uses path-affinities; 4462 uses path-srlgs; 4463 uses path-route-objects; 4464 uses te-path-bandwidth_top; 4465 } 4467 grouping named-path-constraints { 4468 description 4469 "Global named path constraints configuration 4470 grouping"; 4471 container named-path-constraints { 4472 description "TE named path constraints container"; 4473 list named-path-constraint { 4474 if-feature te-types:named-path-constraints; 4475 key "name"; 4476 description 4477 "A list of named path constraints"; 4478 leaf name { 4479 type leafref { 4480 path "../config/name"; 4481 } 4482 description "Path constraint name"; 4483 } 4484 container config { 4485 description 4486 "Configuration parameters related to admin-groups"; 4487 uses named-path-constraints_config; 4488 } 4489 container state { 4490 config false; 4491 description 4492 "State parameters related to admin-groups"; 4493 uses named-path-constraints_config; 4494 } 4495 } 4496 } 4497 } 4499 /* TE globals container data */ 4500 grouping globals-grouping { 4501 description 4502 "Globals TE system-wide configuration data grouping"; 4503 container globals { 4504 description 4505 "Globals TE system-wide configuration data container"; 4506 uses named-admin-groups; 4507 uses named-srlgs; 4508 uses named-explicit-paths; 4509 uses named-path-constraints; 4510 } 4511 } 4513 /* TE tunnels container data */ 4514 grouping tunnels-grouping { 4515 description 4516 "Tunnels TE configuration data grouping"; 4517 container tunnels { 4518 description 4519 "Tunnels TE configuration data container"; 4521 list tunnel { 4522 key "name"; 4523 unique "identifier"; 4524 description "P2P TE tunnels list."; 4525 leaf name { 4526 type leafref { 4527 path "../config/name"; 4528 } 4529 description "TE tunnel name."; 4530 } 4531 leaf identifier { 4532 type leafref { 4533 path "../config/identifier"; 4534 } 4535 description 4536 "TE tunnel Identifier."; 4537 } 4538 uses tunnel-p2p-properties; 4539 uses tunnel-actions; 4540 } 4541 list tunnel-p2mp { 4542 key "name"; 4543 unique "identifier"; 4544 description "P2MP TE tunnels list."; 4545 leaf name { 4546 type leafref { 4547 path "../config/name"; 4548 } 4549 description "TE tunnel name."; 4550 } 4551 leaf identifier { 4552 type leafref { 4553 path "../config/identifier"; 4554 } 4555 description 4556 "TE tunnel Identifier."; 4557 } 4558 uses tunnel-p2mp-properties; 4559 } 4560 } 4561 } 4563 /* TE LSPs ephemeral state container data */ 4564 grouping lsps-state-grouping { 4565 description 4566 "LSPs state operational data grouping"; 4567 container lsps-state { 4568 config "false"; 4569 description "LSPs operational state data."; 4571 list lsp { 4572 key 4573 "source destination tunnel-id lsp-id "+ 4574 "extended-tunnel-id type"; 4575 description 4576 "List of LSPs associated with the tunnel."; 4577 leaf source { 4578 type inet:ip-address; 4579 description 4580 "Tunnel sender address extracted from 4581 SENDER_TEMPLATE object"; 4582 reference "RFC3209"; 4583 } 4584 leaf destination { 4585 type inet:ip-address; 4586 description 4587 "Tunnel endpoint address extracted from 4588 SESSION object"; 4589 reference "RFC3209"; 4590 } 4591 leaf tunnel-id { 4592 type uint16; 4593 description 4594 "Tunnel identifier used in the SESSION 4595 that remains constant over the life 4596 of the tunnel."; 4597 reference "RFC3209"; 4598 } 4599 leaf lsp-id { 4600 type uint16; 4601 description 4602 "Identifier used in the SENDER_TEMPLATE 4603 and the FILTER_SPEC that can be changed 4604 to allow a sender to share resources with 4605 itself."; 4606 reference "RFC3209"; 4607 } 4608 leaf extended-tunnel-id { 4609 type inet:ip-address; 4610 description 4611 "Extended Tunnel ID of the LSP."; 4612 reference "RFC3209"; 4613 } 4614 leaf type { 4615 type identityref { 4616 base te-types:tunnel-type; 4617 } 4618 description "The LSP type P2P or P2MP"; 4619 } 4620 uses lsp-properties_state; 4621 uses lsp-record-route-information_state; 4622 } 4623 } 4624 } 4625 /*** End of TE global groupings ***/ 4627 /** 4628 * TE configurations container 4629 */ 4630 container te { 4631 presence "Enable TE feature."; 4632 description 4633 "TE global container."; 4635 /* TE Global Configuration Data */ 4636 uses globals-grouping; 4638 /* TE Tunnel Configuration Data */ 4639 uses tunnels-grouping; 4641 /* TE LSPs State Data */ 4642 uses lsps-state-grouping; 4643 } 4645 /* TE Global RPCs/execution Data */ 4646 rpc globals-rpc { 4647 description 4648 "Execution data for TE global."; 4649 } 4651 /* TE interfaces RPCs/execution Data */ 4652 rpc interfaces-rpc { 4653 description 4654 "Execution data for TE interfaces."; 4655 } 4657 /* TE Tunnel RPCs/execution Data */ 4658 rpc tunnels-rpc { 4659 description "TE tunnels RPC nodes"; 4660 input { 4661 container tunnel-info { 4662 description "Tunnel Identification"; 4663 choice type { 4664 description "Tunnel information type"; 4665 case tunnel-p2p { 4666 leaf p2p-id { 4667 type te:tunnel-ref; 4668 description "P2P TE tunnel"; 4669 } 4670 } 4671 case tunnel-p2mp { 4672 leaf p2mp-id { 4673 type te:tunnel-p2mp-ref; 4674 description "P2MP TE tunnel"; 4675 } 4676 } 4677 } 4678 } 4679 } 4680 output { 4681 container result { 4682 description 4683 "The container result of the RPC operation"; 4684 leaf result { 4685 type enumeration { 4686 enum success { 4687 description "Origin ingress"; 4688 } 4689 enum in-progress { 4690 description "Origin egress"; 4691 } 4692 enum fail { 4693 description "transit"; 4694 } 4695 } 4696 description "The result of the RPC operation"; 4697 } 4698 } 4699 } 4700 } 4702 /* TE Global Notification Data */ 4703 notification globals-notif { 4704 description 4705 "Notification messages for Global TE."; 4706 } 4708 /* TE Tunnel Notification Data */ 4709 notification tunnels-notif { 4710 description 4711 "Notification messages for TE tunnels."; 4712 } 4713 } 4714 4715 Figure 8: TE generic YANG module 4717 file "ietf-te-device@2017-03-10.yang" 4718 module ietf-te-device { 4720 namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; 4722 /* Replace with IANA when assigned */ 4723 prefix "te-dev"; 4725 /* Import TE generic types */ 4726 import ietf-te { 4727 prefix te; 4728 } 4730 /* Import TE generic types */ 4731 import ietf-te-types { 4732 prefix te-types; 4733 } 4735 import ietf-interfaces { 4736 prefix if; 4737 } 4739 import ietf-inet-types { 4740 prefix inet; 4741 } 4743 import ietf-routing-types { 4744 prefix "rt-types"; 4745 } 4747 organization 4748 "IETF Traffic Engineering Architecture and Signaling (TEAS) 4749 Working Group"; 4751 contact 4752 "WG Web: 4753 WG List: 4755 WG Chair: Lou Berger 4756 4758 WG Chair: Vishnu Pavan Beeram 4759 4761 Editor: Tarek Saad 4762 4764 Editor: Rakesh Gandhi 4765 4767 Editor: Vishnu Pavan Beeram 4768 4770 Editor: Himanshu Shah 4771 4773 Editor: Xufeng Liu 4774 4776 Editor: Xia Chen 4777 4779 Editor: Raqib Jones 4780 4782 Editor: Bin Wen 4783 "; 4785 description 4786 "YANG data module for TE device configurations, 4787 state, RPC and notifications."; 4789 revision "2017-03-10" { 4790 description "Latest update to TE device YANG module."; 4791 reference "TBD"; 4792 } 4794 /** 4795 * TE LSP device state grouping 4796 */ 4797 grouping lsps-device_state { 4798 description "TE LSP device state grouping"; 4799 container lsp-timers { 4800 when "../te:origin-type = 'ingress'" { 4801 description "Applicable to ingress LSPs only"; 4802 } 4803 description "Ingress LSP timers"; 4804 leaf life-time { 4805 type uint32; 4806 units seconds; 4807 description 4808 "lsp life time"; 4809 } 4810 leaf time-to-install { 4811 type uint32; 4812 units seconds; 4813 description 4814 "lsp installation delay time"; 4815 } 4817 leaf time-to-destroy { 4818 type uint32; 4819 units seconds; 4820 description 4821 "lsp expiration delay time"; 4822 } 4823 } 4825 container downstream-info { 4826 when "../te:origin-type != 'egress'" { 4827 description "Applicable to ingress LSPs only"; 4828 } 4829 description 4830 "downstream information"; 4832 leaf nhop { 4833 type inet:ip-address; 4834 description 4835 "downstream nexthop."; 4836 } 4838 leaf outgoing-interface { 4839 type if:interface-ref; 4840 description 4841 "downstream interface."; 4842 } 4844 leaf neighbor { 4845 type inet:ip-address; 4846 description 4847 "downstream neighbor."; 4848 } 4850 leaf label { 4851 type rt-types:generalized-label; 4852 description 4853 "downstream label."; 4854 } 4855 } 4857 container upstream-info { 4858 when "../te:origin-type != 'ingress'" { 4859 description "Applicable to non-ingress LSPs only"; 4860 } 4861 description 4862 "upstream information"; 4864 leaf phop { 4865 type inet:ip-address; 4866 description 4867 "upstream nexthop or previous-hop."; 4868 } 4870 leaf neighbor { 4871 type inet:ip-address; 4872 description 4873 "upstream neighbor."; 4874 } 4876 leaf label { 4877 type rt-types:generalized-label; 4878 description 4879 "upstream label."; 4880 } 4881 } 4882 } 4884 /** 4885 * Device general groupings. 4886 */ 4887 grouping tunnel-device_config { 4888 description "Device TE tunnel configs"; 4889 leaf path-invalidation-action { 4890 type identityref { 4891 base te-types:path-invalidation-action-type; 4892 } 4893 description "Tunnel path invalidtion action"; 4894 } 4895 } 4897 grouping lsp-device-timers_config { 4898 description "Device TE LSP timers configs"; 4899 leaf lsp-install-interval { 4900 type uint32; 4901 units seconds; 4902 description 4903 "lsp installation delay time"; 4904 } 4905 leaf lsp-cleanup-interval { 4906 type uint32; 4907 units seconds; 4908 description 4909 "lsp cleanup delay time"; 4910 } 4911 leaf lsp-invalidation-interval { 4912 type uint32; 4913 units seconds; 4914 description 4915 "lsp path invalidation before taking action delay time"; 4916 } 4917 } 4918 grouping lsp-device-timers { 4919 description "TE LSP timers configuration"; 4920 container config { 4921 description 4922 "Configuration parameters for TE LSP timers"; 4923 uses lsp-device-timers_config; 4925 } 4926 container state { 4927 config false; 4928 description 4929 "State parameters for TE LSP timers"; 4930 uses lsp-device-timers_config; 4931 } 4932 } 4934 /** 4935 * TE global device generic groupings 4936 */ 4938 /* TE interface container data */ 4939 grouping interfaces-grouping { 4940 description 4941 "Interface TE configuration data grouping"; 4942 container interfaces { 4943 description 4944 "Configuration data model for TE interfaces."; 4945 uses te-all-attributes; 4946 list interface { 4947 key "interface"; 4948 description "TE interfaces."; 4949 leaf interface { 4950 type if:interface-ref; 4951 description 4952 "TE interface name."; 4953 } 4954 /* TE interface parameters */ 4955 uses te-attributes; 4956 } 4957 } 4958 } 4960 /** 4961 * TE interface device generic groupings 4962 */ 4963 grouping te-admin-groups_config { 4964 description 4965 "TE interface affinities grouping"; 4966 choice admin-group-type { 4967 description 4968 "TE interface administrative groups 4969 representation type"; 4970 case value-admin-groups { 4971 choice value-admin-group-type { 4972 description "choice of admin-groups"; 4973 case admin-groups { 4974 description 4975 "Administrative group/Resource 4976 class/Color."; 4977 leaf admin-group { 4978 type te-types:admin-group; 4979 description 4980 "TE interface administrative group"; 4981 } 4982 } 4983 case extended-admin-groups { 4984 if-feature te-types:extended-admin-groups; 4985 description 4986 "Extended administrative group/Resource 4987 class/Color."; 4988 leaf extended-admin-group { 4989 type te-types:extended-admin-group; 4990 description 4991 "TE interface extended administrativei 4992 group"; 4993 } 4994 } 4995 } 4996 } 4997 case named-admin-groups { 4998 list named-admin-groups { 4999 if-feature te-types:extended-admin-groups; 5000 if-feature te-types:named-extended-admin-groups; 5001 key named-admin-group; 5002 description 5003 "A list of named admin-group entries"; 5004 leaf named-admin-group { 5005 type leafref { 5006 path "../../../../../te:globals/" + 5007 "te:named-admin-groups/te:named-admin-group/" + 5008 "te:config/te:name"; 5009 } 5010 description "A named admin-group entry"; 5011 } 5012 } 5013 } 5014 } 5015 } 5017 /* TE interface SRLGs */ 5018 grouping te-srlgs_config { 5019 description "TE interface SRLG grouping"; 5020 choice srlg-type { 5021 description "Choice of SRLG configuration"; 5022 case value-srlgs { 5023 list values { 5024 key "value"; 5025 description "List of SRLG values that 5026 this link is part of."; 5027 leaf value { 5028 type uint32 { 5029 range "0..4294967295"; 5030 } 5031 description 5032 "Value of the SRLG"; 5033 } 5034 } 5035 } 5036 case named-srlgs { 5037 list named-srlgs { 5038 if-feature te-types:named-srlg-groups; 5039 key named-srlg; 5040 description 5041 "A list of named SRLG entries"; 5042 leaf named-srlg { 5043 type leafref { 5044 path "../../../../../te:globals/" + 5045 "te:named-srlgs/te:named-srlg/te:config/te:name"; 5046 } 5047 description 5048 "A named SRLG entry"; 5049 } 5051 } 5052 } 5053 } 5054 } 5056 grouping te-igp-flooding-bandwidth_config { 5057 description 5058 "Configurable items for igp flooding bandwidth 5059 threshold configuration."; 5060 leaf threshold-type { 5061 type enumeration { 5062 enum DELTA { 5063 description 5064 "DELTA indicates that the local 5065 system should flood IGP updates when a 5066 change in reserved bandwidth >= the specified 5067 delta occurs on the interface."; 5068 } 5069 enum THRESHOLD_CROSSED { 5070 description 5071 "THRESHOLD-CROSSED indicates that 5072 the local system should trigger an update (and 5073 hence flood) the reserved bandwidth when the 5074 reserved bandwidth changes such that it crosses, 5075 or becomes equal to one of the threshold values."; 5076 } 5077 } 5078 description 5079 "The type of threshold that should be used to specify the 5080 values at which bandwidth is flooded. DELTA indicates that 5081 the local system should flood IGP updates when a change in 5082 reserved bandwidth >= the specified delta occurs on the 5083 interface. Where THRESHOLD_CROSSED is specified, the local 5084 system should trigger an update (and hence flood) the 5085 reserved bandwidth when the reserved bandwidth changes such 5086 that it crosses, or becomes equal to one of the threshold 5087 values"; 5088 } 5090 leaf delta-percentage { 5091 when "../threshold-type = 'DELTA'" { 5092 description 5093 "The percentage delta can only be specified when the 5094 threshold type is specified to be a percentage delta of 5095 the reserved bandwidth"; 5096 } 5097 type te-types:percentage; 5098 description 5099 "The percentage of the maximum-reservable-bandwidth 5100 considered as the delta that results in an IGP update 5101 being flooded"; 5102 } 5103 leaf threshold-specification { 5104 when "../threshold-type = 'THRESHOLD_CROSSED'" { 5105 description 5106 "The selection of whether mirrored or separate threshold 5107 values are to be used requires user specified thresholds to 5108 be set"; 5109 } 5110 type enumeration { 5111 enum MIRRORED_UP_DOWN { 5112 description 5113 "MIRRORED_UP_DOWN indicates that a single set of 5114 threshold values should be used for both increasing 5115 and decreasing bandwidth when determining whether 5116 to trigger updated bandwidth values to be flooded 5117 in the IGP TE extensions."; 5118 } 5119 enum SEPARATE_UP_DOWN { 5120 description 5121 "SEPARATE_UP_DOWN indicates that a separate 5122 threshold values should be used for the increasing 5123 and decreasing bandwidth when determining whether 5124 to trigger updated bandwidth values to be flooded 5125 in the IGP TE extensions."; 5126 } 5127 } 5128 description 5129 "This value specifies whether a single set of threshold 5130 values should be used for both increasing and decreasing 5131 bandwidth when determining whether to trigger updated 5132 bandwidth values to be flooded in the IGP TE extensions. 5133 MIRRORED-UP-DOWN indicates that a single value (or set of 5134 values) should be used for both increasing and decreasing 5135 values, where SEPARATE-UP-DOWN specifies that the increasing 5136 and decreasing values will be separately specified"; 5137 } 5139 leaf-list up-thresholds { 5140 when "../threshold-type = 'THRESHOLD_CROSSED'" + 5141 "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { 5142 description 5143 "A list of up-thresholds can only be specified when the 5144 bandwidth update is triggered based on crossing a 5145 threshold and separate up and down thresholds are 5146 required"; 5148 } 5149 type te-types:percentage; 5150 description 5151 "The thresholds (expressed as a percentage of the maximum 5152 reservable bandwidth) at which bandwidth updates are to be 5153 triggered when the bandwidth is increasing."; 5154 } 5156 leaf-list down-thresholds { 5157 when "../threshold-type = 'THRESHOLD_CROSSED'" + 5158 "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { 5159 description 5160 "A list of down-thresholds can only be specified when the 5161 bandwidth update is triggered based on crossing a 5162 threshold and separate up and down thresholds are 5163 required"; 5164 } 5165 type te-types:percentage; 5166 description 5167 "The thresholds (expressed as a percentage of the maximum 5168 reservable bandwidth) at which bandwidth updates are to be 5169 triggered when the bandwidth is decreasing."; 5170 } 5172 leaf-list up-down-thresholds { 5173 when "../threshold-type = 'THRESHOLD_CROSSED'" + 5174 "and ../threshold-specification = 'MIRRORED_UP_DOWN'" { 5175 description 5176 "A list of thresholds corresponding to both increasing 5177 and decreasing bandwidths can be specified only when an 5178 update is triggered based on crossing a threshold, and 5179 the same up and down thresholds are required."; 5180 } 5181 type te-types:percentage; 5182 description 5183 "The thresholds (expressed as a percentage of the maximum 5184 reservable bandwidth of the interface) at which bandwidth 5185 updates are flooded - used both when the bandwidth is 5186 increasing and decreasing"; 5187 } 5188 } 5190 /* TE interface metric */ 5191 grouping te-metric_config { 5192 description "Interface TE metric grouping"; 5193 leaf te-metric { 5194 type te-types:te-metric; 5195 description "Interface TE metric."; 5197 } 5198 } 5200 /* TE interface switching capabilities */ 5201 grouping te-switching-cap_config { 5202 description 5203 "TE interface switching capabilities"; 5204 list switching-capabilities { 5205 key "switching-capability"; 5206 description 5207 "List of interface capabilities for this interface"; 5208 leaf switching-capability { 5209 type identityref { 5210 base te-types:switching-capabilities; 5211 } 5212 description 5213 "Switching Capability for this interface"; 5214 } 5215 leaf encoding { 5216 type identityref { 5217 base te-types:lsp-encoding-types; 5218 } 5219 description 5220 "Encoding supported by this interface"; 5221 } 5222 } 5223 } 5225 grouping te-advertisements_state { 5226 description 5227 "TE interface advertisements state grouping"; 5228 container te-advertisements_state { 5229 description 5230 "TE interface advertisements state container"; 5231 leaf flood-interval { 5232 type uint32; 5233 description 5234 "The periodic flooding interval"; 5235 } 5236 leaf last-flooded-time { 5237 type uint32; 5238 units seconds; 5239 description 5240 "Time elapsed since last flooding in seconds"; 5241 } 5242 leaf next-flooded-time { 5243 type uint32; 5244 units seconds; 5245 description 5246 "Time remained for next flooding in seconds"; 5247 } 5248 leaf last-flooded-trigger { 5249 type enumeration { 5250 enum link-up { 5251 description "Link-up flooding trigger"; 5252 } 5253 enum link-down { 5254 description "Link-up flooding trigger"; 5255 } 5256 enum threshold-up { 5257 description 5258 "Bandwidth reservation up threshold"; 5259 } 5260 enum threshold-down { 5261 description 5262 "Bandwidth reservation down threshold"; 5263 } 5264 enum bandwidth-change { 5265 description "Banwidth capacity change"; 5266 } 5267 enum user-initiated { 5268 description "Initiated by user"; 5269 } 5270 enum srlg-change { 5271 description "SRLG property change"; 5272 } 5273 enum periodic-timer { 5274 description "Periodic timer expired"; 5275 } 5276 } 5277 description "Trigger for the last flood"; 5278 } 5279 list advertized-level-areas { 5280 key level-area; 5281 description 5282 "List of areas the TE interface is advertised 5283 in"; 5284 leaf level-area { 5285 type uint32; 5286 description 5287 "The IGP area or level where the TE 5288 interface state is advertised in"; 5289 } 5290 } 5291 } 5292 } 5293 /* TE interface attributes grouping */ 5294 grouping te-attributes { 5295 description "TE attributes configuration grouping"; 5296 container config { 5297 description 5298 "Configuration parameters for interface TE 5299 attributes"; 5300 uses te-metric_config; 5301 uses te-admin-groups_config; 5302 uses te-srlgs_config; 5303 uses te-igp-flooding-bandwidth_config; 5304 uses te-switching-cap_config; 5305 } 5306 container state { 5307 config false; 5308 description 5309 "State parameters for interface TE metric"; 5310 uses te-metric_config; 5311 uses te-admin-groups_config; 5312 uses te-srlgs_config; 5313 uses te-switching-cap_config; 5314 uses te-igp-flooding-bandwidth_config; 5315 uses te-advertisements_state; 5316 } 5317 } 5319 grouping te-all-attributes { 5320 description 5321 "TE attributes configuration grouping for all 5322 interfaces"; 5323 container config { 5324 description 5325 "Configuration parameters for all interface TE 5326 attributes"; 5327 uses te-igp-flooding-bandwidth_config; 5328 } 5329 container state { 5330 config false; 5331 description 5332 "State parameters for all interface TE metric"; 5333 uses te-igp-flooding-bandwidth_config; 5334 } 5335 } 5336 /*** End of TE interfaces device groupings ***/ 5338 /** 5339 * TE device augmentations 5340 */ 5341 augment "/te:te" { 5342 description "TE global container."; 5343 /* TE Interface Configuration Data */ 5344 uses interfaces-grouping; 5345 } 5347 /* TE globals device augmentation */ 5348 augment "/te:te/te:globals" { 5349 description 5350 "Global TE device specific configuration parameters"; 5351 uses lsp-device-timers; 5352 } 5354 /* TE tunnels device configuration augmentation */ 5355 augment "/te:te/te:tunnels/te:tunnel/te:config" { 5356 description 5357 "Tunnel device dependent augmentation"; 5358 uses lsp-device-timers_config; 5359 } 5360 augment "/te:te/te:tunnels/te:tunnel/te:state" { 5361 description 5362 "Tunnel device dependent augmentation"; 5363 uses lsp-device-timers_config; 5364 } 5366 /* TE LSPs device state augmentation */ 5367 augment "/te:te/te:lsps-state/te:lsp" { 5368 description 5369 "LSP device dependent augmentation"; 5370 uses lsps-device_state; 5371 } 5373 /* TE interfaces RPCs/execution Data */ 5374 rpc interfaces-rpc { 5375 description 5376 "Execution data for TE interfaces."; 5377 } 5379 /* TE Interfaces Notification Data */ 5380 notification interfaces-notif { 5381 description 5382 "Notification messages for TE interfaces."; 5383 } 5384 } 5385 5387 Figure 9: TE MPLS specific types YANG module 5389 file "ietf-te-mpls@2017-03-10.yang" 5390 module ietf-te-mpls { 5392 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls"; 5394 /* Replace with IANA when assigned */ 5395 prefix "te-mpls"; 5397 /* Import TE generic types */ 5398 import ietf-te { 5399 prefix te; 5400 } 5402 /* Import TE generic types */ 5403 import ietf-te-types { 5404 prefix te-types; 5405 } 5407 import ietf-routing-types { 5408 prefix "rt-types"; 5409 } 5411 import ietf-mpls-static { 5412 prefix mpls-static; 5413 } 5415 import ietf-inet-types { 5416 prefix inet; 5417 } 5419 organization 5420 "IETF Traffic Engineering Architecture and Signaling (TEAS) 5421 Working Group"; 5423 contact 5424 "WG Web: 5425 WG List: 5427 WG Chair: Lou Berger 5428 5430 WG Chair: Vishnu Pavan Beeram 5431 5433 Editor: Tarek Saad 5434 5436 Editor: Rakesh Gandhi 5437 5439 Editor: Vishnu Pavan Beeram 5440 5442 Editor: Himanshu Shah 5443 5445 Editor: Xufeng Liu 5446 5448 Editor: Xia Chen 5449 5451 Editor: Raqib Jones 5452 5454 Editor: Bin Wen 5455 "; 5457 description 5458 "YANG data module for MPLS TE configurations, 5459 state, RPC and notifications."; 5461 revision "2017-03-10" { 5462 description "Latest update to MPLS TE YANG module."; 5463 reference "TBD"; 5464 } 5466 /* MPLS TE tunnel properties*/ 5468 grouping tunnel-igp-shortcut_config { 5469 description "TE tunnel IGP shortcut configs"; 5470 leaf shortcut-eligible { 5471 type boolean; 5472 default "true"; 5473 description 5474 "Whether this LSP is considered to be eligible for us as a 5475 shortcut in the IGP. In the case that this leaf is set to 5476 true, the IGP SPF calculation uses the metric specified to 5477 determine whether traffic should be carried over this LSP"; 5478 } 5479 leaf metric-type { 5480 type identityref { 5481 base te-types:LSP_METRIC_TYPE; 5482 } 5483 default te-types:LSP_METRIC_INHERITED; 5484 description 5485 "The type of metric specification that should be used to set 5486 the LSP(s) metric"; 5487 } 5488 leaf metric { 5489 type int32; 5490 description 5491 "The value of the metric that should be specified. The value 5492 supplied in this leaf is used in conjunction with the metric 5493 type to determine the value of the metric used by the system. 5494 Where the metric-type is set to LSP_METRIC_ABSOLUTE - the 5495 value of this leaf is used directly; where it is set to 5496 LSP_METRIC_RELATIVE, the relevant (positive or negative) 5497 offset is used to formulate the metric; where metric-type 5498 is LSP_METRIC_INHERITED, the value of this leaf is not 5499 utilised"; 5500 } 5501 leaf-list routing-afs { 5502 type inet:ip-version; 5503 description 5504 "Address families"; 5505 } 5506 } 5508 grouping tunnel-igp-shortcuts { 5509 description 5510 "TE tunnel IGP shortcut grouping"; 5511 container tunnel-igp-shortcut { 5512 description 5513 "Tunnel IGP shortcut properties"; 5514 container config { 5515 description 5516 "Configuration parameters for tunnel IGP shortcuts"; 5517 uses tunnel-igp-shortcut_config; 5518 } 5519 container state { 5520 description 5521 "State parameters for tunnel IGP shortcuts"; 5522 uses tunnel-igp-shortcut_config; 5523 } 5524 } 5525 } 5527 grouping tunnel-forwarding-adjacency_configs { 5528 description "Tunnel forwarding adjacency grouping"; 5529 leaf binding-label { 5530 type rt-types:mpls-label; 5531 description "MPLS tunnel binding label"; 5532 } 5533 leaf load-share { 5534 type uint32 { 5535 range "1..4294967295"; 5536 } 5537 description "ECMP tunnel forwarding 5538 load-share factor."; 5539 } 5540 leaf policy-class { 5541 type uint8 { 5542 range "1..7"; 5543 } 5544 description 5545 "The class associated with this tunnel"; 5546 } 5547 } 5549 grouping tunnel-forwarding-adjacency { 5550 description "Properties for using tunnel in forwarding."; 5551 container forwarding { 5552 description 5553 "Tunnel forwarding properties container"; 5554 container config { 5555 description 5556 "Configuration parameters for tunnel forwarding adjacency"; 5557 uses tunnel-forwarding-adjacency_configs; 5558 } 5559 container state { 5560 description 5561 "State parameters for tunnel forwarding adjacency"; 5562 uses tunnel-forwarding-adjacency_configs; 5563 } 5564 } 5565 } 5567 /*** End of MPLS TE tunnel configuration/state */ 5569 /** 5570 * MPLS TE augmentations 5571 */ 5573 /* MPLS TE tunnel augmentations */ 5574 augment "/te:te/te:tunnels/te:tunnel" { 5575 description "MPLS TE tunnel config augmentations"; 5576 uses tunnel-igp-shortcuts; 5577 uses tunnel-forwarding-adjacency; 5578 } 5579 /* MPLS TE LSPs augmentations */ 5580 augment "/te:te/te:tunnels/te:tunnel/" + 5581 "te:p2p-primary-paths/te:p2p-primary-path/" + 5582 "te:config" { 5583 when "/te:te/te:tunnels/te:tunnel" + 5584 "/te:p2p-primary-paths/te:p2p-primary-path/te:config" + 5585 "/te:path-setup-protocol = 'te-types:te-path-setup-static'" { 5586 description 5587 "When the path is statically provisioned"; 5588 } 5589 description "MPLS TE LSP augmentation"; 5590 leaf static-lsp-name { 5591 type mpls-static:static-lsp-ref; 5592 description "Static LSP name"; 5593 } 5594 } 5595 augment "/te:te/te:tunnels/te:tunnel/" + 5596 "te:p2p-primary-paths/te:p2p-primary-path/" + 5597 "te:state" { 5598 description "MPLS TE LSP augmentation"; 5599 leaf static-lsp-name { 5600 type mpls-static:static-lsp-ref; 5601 description "Static LSP name"; 5602 } 5603 } 5604 augment "/te:te/te:tunnels/te:tunnel/" + 5605 "te:p2p-secondary-paths/te:p2p-secondary-path/" + 5606 "te:config" { 5607 when "/te:te/te:tunnels/te:tunnel" + 5608 "/te:p2p-secondary-paths/te:p2p-secondary-path/te:config" + 5609 "/te:path-setup-protocol = 'te-types:te-path-setup-static'" { 5610 description 5611 "When the path is statically provisioned"; 5612 } 5613 description "MPLS TE LSP augmentation"; 5614 leaf static-lsp-name { 5615 type mpls-static:static-lsp-ref; 5616 description "Static LSP name"; 5617 } 5618 } 5619 augment "/te:te/te:tunnels/te:tunnel/" + 5620 "te:p2p-secondary-paths/te:p2p-secondary-path/" + 5621 "te:state" { 5622 description "MPLS TE LSP augmentation"; 5623 leaf static-lsp-name { 5624 type mpls-static:static-lsp-ref; 5625 description "Static LSP name"; 5626 } 5628 } 5629 } 5630 5632 Figure 10: TE MPLS YANG module 5634 file "ietf-te-mpls-types@2017-03-10.yang" 5635 module ietf-te-mpls-types { 5637 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls-types"; 5639 /* Replace with IANA when assigned */ 5640 prefix "te-mpls-types"; 5642 organization 5643 "IETF TEAS Working Group"; 5645 contact "Fill me"; 5647 description 5648 "This module contains a collection of generally 5649 useful TE specific YANG data type defintions."; 5651 revision "2017-03-10" { 5652 description "Latest revision of TE MPLS types"; 5653 reference "RFC3209"; 5654 } 5656 identity backup-protection-type { 5657 description 5658 "Base identity for backup protection type"; 5659 } 5661 identity backup-protection-link { 5662 base backup-protection-type; 5663 description 5664 "backup provides link protection only"; 5665 } 5667 identity backup-protection-node-link { 5668 base backup-protection-type; 5669 description 5670 "backup offers node (preferred) or link protection"; 5671 } 5673 identity bc-model-type { 5674 description 5675 "Base identity for Diffserv-TE bandwidth constraint 5676 model type"; 5677 } 5679 identity bc-model-rdm { 5680 base bc-model-type; 5681 description 5682 "Russian Doll bandwidth constraint model type."; 5683 } 5685 identity bc-model-mam { 5686 base bc-model-type; 5687 description 5688 "Maximum Allocation bandwidth constraint 5689 model type."; 5690 } 5692 identity bc-model-mar { 5693 base bc-model-type; 5694 description 5695 "Maximum Allocation with Reservation 5696 bandwidth constraint model type."; 5697 } 5699 typedef bandwidth-kbps { 5700 type uint64; 5701 units "Kbps"; 5702 description 5703 "Bandwidth values expressed in kilobits per second"; 5704 } 5706 typedef bandwidth-mbps { 5707 type uint64; 5708 units "Mbps"; 5709 description 5710 "Bandwidth values expressed in megabits per second"; 5711 } 5713 typedef bandwidth-gbps { 5714 type uint64; 5715 units "Gbps"; 5716 description 5717 "Bandwidth values expressed in gigabits per second"; 5718 } 5720 typedef te-bandwidth-type { 5721 type enumeration { 5722 enum SPECIFIED { 5723 description 5724 "Bandwidth is explicitly specified"; 5725 } 5726 enum AUTO { 5727 description 5728 "Bandwidth is automatically computed"; 5729 } 5730 } 5731 description 5732 "enumerated type for specifying whether bandwidth is 5733 explicitly specified or automatically computed"; 5734 } 5736 typedef bfd-type { 5737 type enumeration { 5738 enum classical { 5739 description "BFD classical session type."; 5740 } 5741 enum seamless { 5742 description "BFD seamless session type."; 5743 } 5744 } 5745 default "classical"; 5746 description 5747 "Type of BFD session"; 5748 } 5750 typedef bfd-encap-mode-type { 5751 type enumeration { 5752 enum gal { 5753 description 5754 "BFD with GAL mode"; 5755 } 5756 enum ip { 5757 description 5758 "BFD with IP mode"; 5759 } 5760 } 5761 default ip; 5762 description 5763 "Possible BFD transport modes when running over TE 5764 LSPs."; 5765 } 5766 } 5767 5769 Figure 11: TE MPLS types YANG module 5771 file "ietf-te-sr-mpls@2017-03-10.yang" 5772 module ietf-te-sr-mpls { 5774 namespace "urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls"; 5776 /* Replace with IANA when assigned */ 5777 prefix "te-sr-mpls"; 5779 /* Import TE generic types */ 5780 import ietf-te { 5781 prefix te; 5782 } 5784 /* Import TE generic types */ 5785 import ietf-te-types { 5786 prefix te-types; 5787 } 5789 organization 5790 "IETF Traffic Engineering Architecture and Signaling (TEAS) 5791 Working Group"; 5793 contact 5794 "WG Web: 5795 WG List: 5797 WG Chair: Lou Berger 5798 5800 WG Chair: Vishnu Pavan Beeram 5801 5803 Editor: Tarek Saad 5804 5806 Editor: Rakesh Gandhi 5807 5809 Editor: Vishnu Pavan Beeram 5810 5812 Editor: Himanshu Shah 5813 5815 Editor: Xufeng Liu 5816 5818 Editor: Xia Chen 5819 5821 Editor: Raqib Jones 5822 5824 Editor: Bin Wen 5825 "; 5827 description 5828 "YANG data module for MPLS TE configurations, 5829 state, RPC and notifications."; 5831 revision "2017-03-10" { 5832 description "Latest update to MPLS TE YANG module."; 5833 reference "TBD"; 5834 } 5836 identity sr-protection-type { 5837 description 5838 "The Adj-SID base protection types"; 5839 } 5841 identity sr-protection-type-protected { 5842 base sr-protection-type; 5843 description 5844 "The Adj-SID is eligible if protected"; 5845 } 5847 identity sr-protection-type-unprotected { 5848 base sr-protection-type; 5849 description 5850 "The Adj-SID is eligible if unprotected"; 5851 } 5853 identity sr-protection-type-any { 5854 base sr-protection-type; 5855 description 5856 "The Adj-SID is eligible if protected or unprotected"; 5857 } 5859 typedef te-sid-selection-mode { 5860 type enumeration { 5861 enum ADJ_SID_ONLY { 5862 description 5863 "The SR-TE tunnel should only use adjacency SIDs 5864 to build the SID stack to be pushed for the LSP"; 5865 } 5866 enum MIXED_MODE { 5867 description 5868 "The SR-TE tunnel can use a mix of adjacency 5869 and prefix SIDs to build the SID stack to be pushed 5870 to the LSP"; 5871 } 5872 } 5873 description "SID selection mode type"; 5874 } 5876 /* MPLS SR-TE tunnel properties*/ 5877 grouping tunnel-sr-mpls-properties_config { 5878 description "MPLS TE SR tunnel properties"; 5879 leaf path-signaling-type { 5880 type identityref { 5881 base te-types:path-signaling-type; 5882 } 5883 description "TE tunnel path signaling type"; 5884 } 5885 } 5887 grouping te-sr-named-path-constraints_config { 5888 description 5889 "Configuration parameters relating to SR-TE LSPs"; 5891 leaf sid-selection-mode { 5892 type te-sid-selection-mode; 5893 default MIXED_MODE; 5894 description 5895 "The restrictions placed on the SIDs to be selected by the 5896 calculation method for the explicit path when it is 5897 instantiated for a SR-TE LSP"; 5898 } 5900 leaf sid-protection { 5901 type identityref { 5902 base sr-protection-type; 5903 } 5904 default sr-protection-type-any; 5905 description 5906 "When set to protected only SIDs that are 5907 protected are to be selected by the calculating method 5908 when the explicit path is instantiated by a SR-TE LSP."; 5909 } 5910 } 5912 grouping te-sr-named-path-constraints { 5913 description "Named TE SR path constraints grouping"; 5914 container config { 5915 description 5916 "Configuration parameters related to TE SR named 5917 path constraints"; 5918 uses te-sr-named-path-constraints_config; 5919 } 5920 container state { 5921 config false; 5922 description 5923 "State parameters related to TE SR named 5924 path constraints"; 5925 uses te-sr-named-path-constraints_config; 5926 } 5927 } 5929 /*** End of MPLS SR-TE tunnel configuration/state */ 5931 /** 5932 * MPLS TE augmentations 5933 */ 5935 /* MPLS TE global augmentations */ 5936 augment "/te:te/te:globals/te:named-path-constraints" + 5937 "/te:named-path-constraint" { 5938 description 5939 "Augmentations for MPLS SR-TE config named constraints"; 5940 uses te-sr-named-path-constraints; 5941 } 5943 /* MPLS TE tunnel augmentations */ 5945 /* MPLS TE LSPs augmentations */ 5946 } 5947 5949 Figure 12: SR TE MPLS YANG module 5951 5. IANA Considerations 5953 This document registers the following URIs in the IETF XML registry 5954 [RFC3688]. Following the format in [RFC3688], the following 5955 registration is requested to be made. 5957 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 5958 is an XML namespace. 5960 URI: urn:ietf:params:xml:ns:yang:ietf-te-device XML: N/A, the 5961 requested URI is an XML namespace. 5963 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls XML: N/A, the requested 5964 URI is an XML namespace. 5966 URI: urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls XML: N/A, the 5967 requested URI is an XML namespace. 5969 URI: urn:ietf:params:xml:ns:yang:ietf-te-types XML: N/A, the 5970 requested URI is an XML namespace. 5972 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls-types XML: N/A, the 5973 requested URI is an XML namespace. 5975 This document registers a YANG module in the YANG Module Names 5976 registry [RFC6020]. 5978 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 5979 ietf-te reference: RFC3209 5981 name: ietf-te-device namespace: urn:ietf:params:xml:ns:yang:ietf-te 5982 prefix: ietf-te-device reference: RFC3209 5984 name: ietf-te-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 5985 mpls prefix: ietf-te-mpls reference: RFC3209 5987 name: ietf-te-sr-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 5988 sr-mpls prefix: ietf-te-sr-mpls 5990 name: ietf-te-types namespace: urn:ietf:params:xml:ns:yang:ietf-te- 5991 types prefix: ietf-te-types reference: RFC3209 5993 name: ietf-te-mpls-types namespace: urn:ietf:params:xml:ns:yang:ietf- 5994 te-mpls-types prefix: ietf-te-mpls-types reference: RFC3209 5996 6. Security Considerations 5998 The YANG module defined in this memo is designed to be accessed via 5999 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 6000 secure transport layer and the mandatory-to-implement secure 6001 transport is SSH [RFC6242]. The NETCONF access control model 6002 [RFC6536] provides means to restrict access for particular NETCONF 6004 users to a pre-configured subset of all available NETCONF protocol 6005 operations and content. 6007 There are a number of data nodes defined in the YANG module which are 6008 writable/creatable/deletable (i.e., config true, which is the 6009 default). These data nodes may be considered sensitive or vulnerable 6010 in some network environments. Write operations (e.g., ) 6011 to these data nodes without proper protection can have a negative 6012 effect on network operations. Following are the subtrees and data 6013 nodes and their sensitivity/vulnerability: 6015 "/te/globals": This module specifies the global TE configurations on 6016 a device. Unauthorized access to this container could cause the 6017 device to ignore packets it should receive and process. 6019 "/te/tunnels": This list specifies the configured TE tunnels on a 6020 device. Unauthorized access to this list could cause the device to 6021 ignore packets it should receive and process. 6023 "/te/lsps-state": This list specifies the state derived LSPs. 6024 Unauthorized access to this list could cause the device to ignore 6025 packets it should receive and process. 6027 "/te/interfaces": This list specifies the configured TE interfaces on 6028 a device. Unauthorized access to this list could cause the device to 6029 ignore packets it should receive and process. 6031 7. Acknowledgement 6033 The authors would like to thank the members of the multi-vendor YANG 6034 design team who are involved in the definition of this model. 6036 The authors would also like to thank Loa Andersson, Lou Berger, 6037 Sergio Belotti, Italo Busi, Aihua Guo, Dhruv Dhody, Anurag Sharma, 6038 and Xian Zhang for their comments and providing valuable feedback on 6039 this document. 6041 8. Contributors 6042 Xia Chen 6043 Huawei Technologies 6045 Email: jescia.chenxia@huawei.com 6047 Raqib Jones 6048 Brocade 6050 Email: raqib@Brocade.com 6052 Bin Wen 6053 Comcast 6055 Email: Bin_Wen@cable.comcast.com 6057 9. References 6059 9.1. Normative References 6061 [I-D.ietf-teas-yang-rsvp] 6062 Beeram, V., Saad, T., Gandhi, R., Liu, X., Shah, H., Chen, 6063 X., Jones, R., and B. Wen, "A YANG Data Model for Resource 6064 Reservation Protocol (RSVP)", draft-ietf-teas-yang-rsvp-06 6065 (work in progress), October 2016. 6067 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 6068 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 6069 RFC2119, March 1997, 6070 . 6072 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 6073 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 6074 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 6075 . 6077 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 6078 Switching (GMPLS) Signaling Resource ReserVation Protocol- 6079 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 6080 10.17487/RFC3473, January 2003, 6081 . 6083 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 6084 DOI 10.17487/RFC3688, January 2004, 6085 . 6087 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 6088 the Network Configuration Protocol (NETCONF)", RFC 6020, 6089 DOI 10.17487/RFC6020, October 2010, 6090 . 6092 [RFC6107] Shiomoto, K., Ed. and A. Farrel, Ed., "Procedures for 6093 Dynamically Signaled Hierarchical Label Switched Paths", 6094 RFC 6107, DOI 10.17487/RFC6107, February 2011, 6095 . 6097 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 6098 and A. Bierman, Ed., "Network Configuration Protocol 6099 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 6100 . 6102 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 6103 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 6104 . 6106 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 6107 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 6108 10.17487/RFC6536, March 2012, 6109 . 6111 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6112 6991, DOI 10.17487/RFC6991, July 2013, 6113 . 6115 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 6116 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 6117 . 6119 9.2. Informative References 6121 [I-D.clemm-netmod-mount] 6122 Clemm, A., Medved, J., and E. Voit, "Mounting YANG-Defined 6123 Information from Remote Datastores", draft-clemm-netmod- 6124 mount-05 (work in progress), September 2016. 6126 [I-D.openconfig-mpls-consolidated-model] 6127 George, J., Fang, L., eric.osborne@level3.com, e., and R. 6128 Shakir, "MPLS / TE Model for Service Provider Networks", 6129 draft-openconfig-mpls-consolidated-model-02 (work in 6130 progress), October 2015. 6132 [I-D.openconfig-netmod-opstate] 6133 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 6134 of Operational State Data in YANG", draft-openconfig- 6135 netmod-opstate-01 (work in progress), July 2015. 6137 Authors' Addresses 6139 Tarek Saad (editor) 6140 Cisco Systems Inc 6142 Email: tsaad@cisco.com 6144 Rakesh Gandhi 6145 Cisco Systems Inc 6147 Email: rgandhi@cisco.com 6149 Xufeng Liu 6150 Jabil 6152 Email: Xufeng_Liu@jabil.com 6154 Vishnu Pavan Beeram 6155 Juniper Networks 6157 Email: vbeeram@juniper.net 6159 Himanshu Shah 6160 Ciena 6162 Email: hshah@ciena.com 6164 Igor Bryskin 6165 Huawei Technologies 6167 Email: Igor.Bryskin@huawei.com