idnits 2.17.1 draft-ietf-teas-yang-te-01.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 135 has weird spacing: '... rw for r...' == Line 136 has weird spacing: '... ro for r...' == Line 526 has weird spacing: '...rw name str...' == Line 537 has weird spacing: '...rw name str...' == Line 587 has weird spacing: '...ro name str...' == (33 more instances...) == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (October 17, 2015) is 3112 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 (-25) exists of draft-ietf-netmod-routing-cfg-20 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-02) exists of draft-openconfig-mpls-consolidated-model-01 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: April 19, 2016 X. Liu 6 Ericsson 7 V. Beeram 8 Juniper Networks 9 H. Shah 10 Ciena 11 X. Chen 12 Huawei Technologies 13 R. Jones 14 Brocade 15 B. Wen 16 Comcast 17 October 17, 2015 19 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 20 draft-ietf-teas-yang-te-01 22 Abstract 24 This document defines a YANG data model for the configuration and 25 management of Traffic Engineering (TE) interfaces and tunnels. The 26 model defines generic data that is reusable across multiple data and 27 control plane protocols. 29 The data model covers the configuration, operational state, remote 30 procedural calls, and event notifications data for TE data. 32 Status of This Memo 34 This Internet-Draft is submitted in full conformance with the 35 provisions of BCP 78 and BCP 79. 37 Internet-Drafts are working documents of the Internet Engineering 38 Task Force (IETF). Note that other groups may also distribute 39 working documents as Internet-Drafts. The list of current Internet- 40 Drafts is at http://datatracker.ietf.org/drafts/current/. 42 Internet-Drafts are draft documents valid for a maximum of six months 43 and may be updated, replaced, or obsoleted by other documents at any 44 time. It is inappropriate to use Internet-Drafts as reference 45 material or to cite them other than as "work in progress." 47 This Internet-Draft will expire on April 19, 2016. 49 Copyright Notice 51 Copyright (c) 2015 IETF Trust and the persons identified as the 52 document authors. All rights reserved. 54 This document is subject to BCP 78 and the IETF Trust's Legal 55 Provisions Relating to IETF Documents 56 (http://trustee.ietf.org/license-info) in effect on the date of 57 publication of this document. Please review these documents 58 carefully, as they describe your rights and restrictions with respect 59 to this document. Code Components extracted from this document must 60 include Simplified BSD License text as described in Section 4.e of 61 the Trust Legal Provisions and are provided without warranty as 62 described in the Simplified BSD License. 64 Table of Contents 66 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 67 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 68 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 69 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 70 1.4. Open Issues and Next Steps . . . . . . . . . . . . . . . 5 71 1.4.1. State Data Organization . . . . . . . . . . . . . . . 5 72 2. Data Model Overview . . . . . . . . . . . . . . . . . . . . . 5 73 2.1. Design Objectives . . . . . . . . . . . . . . . . . . . . 6 74 2.2. Optional Features . . . . . . . . . . . . . . . . . . . . 8 75 2.3. Configuration Inheritance . . . . . . . . . . . . . . . . 8 76 2.4. Vendor Configuration Models . . . . . . . . . . . . . . . 9 77 3. TE Generic Model Organization . . . . . . . . . . . . . . . . 9 78 3.1. Global Configuration and State Data . . . . . . . . . . . 10 79 3.2. Interfaces Configuration and State Data . . . . . . . . . 14 80 3.3. Tunnels Configuration and State Data . . . . . . . . . . 18 81 3.4. TE LSPs State Data . . . . . . . . . . . . . . . . . . . 28 82 3.5. Global RPC Data . . . . . . . . . . . . . . . . . . . . . 29 83 3.6. Interface RPC Data . . . . . . . . . . . . . . . . . . . 29 84 3.7. Tunnel RPC Data . . . . . . . . . . . . . . . . . . . . . 30 85 3.8. Global Notifications Data . . . . . . . . . . . . . . . . 30 86 3.9. Interfaces Notifications Data . . . . . . . . . . . . . . 30 87 3.10. Tunnel Notification Data . . . . . . . . . . . . . . . . 30 88 4. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 31 89 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79 90 6. Security Considerations . . . . . . . . . . . . . . . . . . . 80 91 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 80 92 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 80 93 8.1. Normative References . . . . . . . . . . . . . . . . . . 80 94 8.2. Informative References . . . . . . . . . . . . . . . . . 81 95 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 82 97 1. Introduction 99 YANG [RFC6020] is a data definition language that was introduced to 100 define the contents of a conceptual data store that allows networked 101 devices to be managed using NETCONF [RFC6241]. YANG is proving 102 relevant beyond its initial confines, as bindings to other interfaces 103 (e.g. ReST) and encoding other than XML (e.g. JSON) are being 104 defined. Furthermore, YANG data models can be used as the basis of 105 implementation for other interface, such as CLI and programmatic 106 APIs. 108 This document defines a YANG data model that can be used to configure 109 and manage TE interfaces and P2P or P2MP TE tunnels. This data model 110 restricts to TE generic data that is control and data plane agnostic. 111 It is expected that other protocol and data plane specific modules 112 (e.g. RSVP-TE [RFC3209]) will augment this TE model. 114 1.1. Terminology 116 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 117 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 118 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 119 [RFC2119]. 121 1.2. Tree Diagram 123 A simplified graphical representation of the data model is presented 124 in each section of the model. The following notations are used for 125 the YANG model data tree representation. 127 129 is one of: 130 + for current 131 x for deprecated 132 o for obsolete 134 is one of: 135 rw for read-write configuration data 136 ro for read-only non-configuration data 137 -x for execution rpcs 138 -n for notifications 140 is the name of the node 142 If the node is augmented into the tree from another module, its name 143 is printed as : 145 is one of: 146 ? for an optional leaf or node 147 ! for a presence container 148 * for a leaf-list or list 149 Brackets [] for a list's keys 150 Curly braces {} for optional feature that make node 151 conditional 152 Colon : for marking case nodes 153 Ellipses ("...") subtree contents not shown 155 Parentheses enclose choice and case nodes, and case nodes are also 156 marked with a colon (":"). 158 is the name of the type for leafs and leaf-lists. 160 1.3. Prefixes in Data Node Names 162 In this document, names of data nodes and other data model objects 163 are prefixed using the standard prefix associated with the 164 corresponding YANG imported modules, as shown in Table 1. 166 +--------+-----------------+-----------+ 167 | Prefix | YANG module | Reference | 168 +--------+-----------------+-----------+ 169 | yang | ietf-yang-types | [RFC6991] | 170 | inet | ietf-inet-types | [RFC6991] | 171 +--------+-----------------+-----------+ 173 Table 1: Prefixes and corresponding YANG modules 175 1.4. Open Issues and Next Steps 177 This document describes the YANG data model for the TE generic and 178 helper modules. It also describes the high-level relationship 179 between these modules and to other external protocol modules. The 180 current revision of the draft focuses on configuration and state data 181 aspects of the model. It is expected that the future revisions will 182 cover RPC, and notification aspects. 184 Also, the models that define technology specific extensions to the 185 generic TE model (e.g. OTN [RFC4328] TE extensions), are expected to 186 be addressed in separate documents. 188 1.4.1. State Data Organization 190 Pure state data (for example, ephemeral or protocol derived state 191 objects) can be modeled using one of the options below: 193 o Contained inside the read-write container, under the "state" sub- 194 container, as shown in Figure 3 196 o Contained inside a separate read-only container, for example a 197 tunnels-state container 199 The first option allows for the reusing of the containers that hold 200 configuration data (in the "config" sub-container), and by placing 201 state data under the read-only "state" sub-container of the parent 202 container. However, when adopting this approach for ephemeral or 203 purely derived states (e.g. auto tunnels), and since in this case the 204 state hangs off the read-write parent container, it will be possible 205 to delete the parent container and subsequently the ephemeral read- 206 only state contained within (see Figure 3). 208 The second option entails defining a new read-only parent container 209 in the model (e.g. neighbors-state) that holds the data. 211 This revision of the draft adopts the first option. Further 212 discussions on this topic are expected to close on the best choice to 213 adopt. 215 2. Data Model Overview 217 Although the basis of TE elements remain similar across different 218 vendor implementations, however, the details of a TE model will 219 usually vary across different vendor implementations. Also, 220 implementations may vary in their support of the complete set of TE 221 features. The TE YANG module defined in this document is an attempts 222 to define a vendor agnostic model that will prescribe to IETF 223 standard terminology when different representation of data is 224 possible. 226 The model is composed of common building blocks that are independent 227 of specific data or control plane instantiations. It covers data 228 representation for the configuration, state, remote procedural calls 229 (RPCs), and event notifications. 231 Throughout the model, the approach described in 232 [I-D.openconfig-netmod-opstate] is adopted to represent data 233 pertaining to configuration intended state, applied state and derived 234 state data elements. Each container in the model hold a "config" and 235 "state" sub-container. The "config" sub-container is used to 236 represent the intended configurable parameters, and the state sub- 237 container is used to represent both the applied configurable 238 parameters and any derived state, such as counters or statistical 239 information. 241 The decision to use this approach was made to better align with the 242 MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model], 243 and maximize reusability of groupings defined in this document and 244 allow for possible convergence between the two models. 246 2.1. Design Objectives 248 The goal of this document is to define a TE data model that can 249 represent different TE vendor implementations, while adhering to 250 standard terminology and behavior when resolving differences in 251 implementations. 253 The following considerations with respect data organization are taken 254 into account when defining the model: 256 o reusable data elements are grouped into separate TE types 257 module(s) that can be readily imported by other modules whenever 258 needed 260 o reusable TE data types that are data plane independent are grouped 261 in the TE generic types module "ietf-te-types.yang" 263 o reusable TE data elements that are data plane specific (e.g. 264 packet PSC or switching technologies as defined in [RFC3473]) are 265 expected to be grouped in a technology- specific types module, 266 e.g. "ietf-te-psc-types.yang". It is expected that technology 267 specific types will augment TE generic types as shown in Figure 1 268 +---------+ 269 | ietf-te | ^: import 270 +---------+ o: augment 271 import ^ 272 | 273 | 274 +---------------+ 275 | ietf-te-types | 276 +---------------+ 277 o o 278 | \ 279 | \ 280 +-------------------+ +-------------------+ 281 | ietf-te-psc-types | | ietf-te-otn-types | 282 +-------------------+ +-------------------+ 283 (shown for illustration 284 not in this document) 286 Figure 1: Relationship between generic and technology specific TE 287 types modules 289 o TE generic module includes data elements that are control plane 290 independent. Data elements specific to a control plane protocol 291 (e.g. RSVP-TE [RFC3209]) are expected to be in a separate module 292 that augments the TE generic module. It is also expected that 293 data relevant to a specific instantiations of data plane 294 technology will exist in a separate YANG module that augments the 295 TE generic model, see Figure 2. 297 TE generic +---------+ ^: import 298 module | ietf-te | o: augment 299 +---------+ 300 | o 301 | | 302 v | 303 +--------------+ 304 RSVP-TE module | ietf-rsvp-te |o . . . 305 +--------------+ \ 306 ^ | \ 307 | o +-------------------+ 308 +-----------+ | ietf-rsvp-otn-te | 309 RSVP module | ietf-rsvp | +-------------------+ 310 +-----------+ RSVP-TE with OTN 311 extensions 312 (shown for illustration 313 not in this document) 315 Figure 2: Relationship of TE module with other control plane protocol 316 modules 318 o In general, little information in the model is designated as 319 "mandatory", to allow freedom to vendors to adapt the data model 320 to their specific product implementation. 322 2.2. Optional Features 324 Optional features are features beyond the generic TE model, and 325 hence, it is up to a vendor to decide whether or not to support of a 326 particular feature on a particular device. 328 This module declares a number of TE functions as features (such as 329 P2MP-TE, soft-preemption etc.). It is intended that vendors will 330 extend this features list. 332 2.3. Configuration Inheritance 334 The defined data model supports configuration inheritance for 335 tunnels, paths, and interfaces. Data elements defined in the main 336 container (e.g. that encompasses the list of tunnels, interfaces, or 337 paths) are assumed to apply equally to all elements of the list, 338 unless overridden explicitly for a certain element (e.g. tunnel, 339 interface or path). Vendors are expected to augment the above 340 container(s) to provide the list of inheritance command for their 341 implementations. 343 2.4. Vendor Configuration Models 345 There two main popular types of routing protocol configuration that 346 vendors may support: 348 o protocol centric - all the protocol related configuration is 349 contained within the protocol itself. Configuration belonging to 350 multiple instances of the protocol running in different routing- 351 instances (e.g. VRFs) are contained under the default routing 352 instance [I-D.ietf-netmod-routing-cfg]: 354 o VRF centric - all the protocol related configuration for a 355 routing- instance is contained within this routing-instance. 357 On-going discussions within the IETF community have converged on 358 adopting the VRF centric approach. The proposed model in this 359 document adheres to this conclusion. 361 3. TE Generic Model Organization 363 This model covers configuration, state, RPC, and notifications data 364 pertaining to TE global parameters, interfaces, and tunnels 365 parameters. 367 The container "te" is the top level container in this data model. 368 The presence of this container is expected to enable TE function 369 system wide. 371 The approach described in [I-D.openconfig-netmod-opstate] allows for 372 modeling the intended and respective applied and derived state. The 373 TE state data in this model falls into one of the following 374 categories: 376 o State corresponding to applied configuration 378 o State corresponding to derived state, counters, stats, etc. 380 o State corresponding to ephemeral data (e.g. LSPs, etc.) 382 Data for the first two categories are contained under the respective 383 "state" sub-container of the intended object (e.g. tunnel). The last 384 category falls under a separate - e.g. lsps-state- container that 385 contains the attributes of a purely derived state data (e.g. 386 ephemeral objects) that are not associated with any configuration as 387 shown in Figure 3. 389 module: ietf-te 390 +--rw te! 391 +--rw globals 392 +-- rw config 393 <> 394 . 395 +-- ro state 396 <> 397 <> 398 . 399 . 400 +--rw interfaces 401 +-- rw config 402 <> 403 . 404 +-- ro state 405 <> 406 <> 407 . 408 . 409 +--rw tunnels 410 +-- rw config 411 <> 412 . 413 +-- ro state 414 <> 415 <> 416 . 417 . 418 rpcs: 419 +---x globals-rpc 420 +---x interfaces-rpc 421 +---x tunnels-rpc 422 notifications: 423 +---n globals-notif 424 +---n interfaces-notif 425 +---n tunnels-notif 427 Figure 3: TE highlevel model view 429 3.1. Global Configuration and State Data 431 This branch of the data model covers configurations that control TE 432 features behavior system-wide, and its respective state. Examples of 433 such configuration data are: 435 o Table of named SRLG mappings 436 o Table of named (extended) administrative groups mappings 438 o Table of named explicit paths to be referenced by TE tunnels 440 o Table of named path-constraints sets 442 o Auto-bandwidth global parameters 444 o TE diff-serve TE-class maps 446 o System-wide capabilities for LSP reoptimization 448 * Reoptimization timers (periodic interval, LSP installation and 449 cleanup) 451 o System-wide capabilities for TE state flooding 453 * Periodic flooding interval 455 o System-wide capabilities that affect the originating, traversing 456 and terminating LSPs. For example: 458 * Path selection parameters (e.g. metric) at head-end LSR 460 * Path protection parameters at head-end LSR 462 * (Soft) preemption parameters 464 * Fast reroute parameters 466 The approach described in [I-D.openconfig-netmod-opstate] is utilised 467 to include the global state data under the global "state" sub- 468 container as shown in Figure 3. 470 Examples of such states are: 472 o Global statistics (signaling, admission, preemption, flooding) 474 o Global counters (number of tunnels/LSPs/interfaces) 476 module: ietf-te 477 +--rw te! 478 +--rw globals 479 | +--rw config 480 | | +--rw named-admin-groups* [name] 481 | | | +--rw name string 482 | | | +--rw group? ietf-te-types:admin-groups 483 | | +--rw named-srlgs* [name] {ietf-te-types:named-srlg-groups}? 484 | | | +--rw name string 485 | | | +--rw group? ietf-te-types:srlg 486 | | +--rw named-explicit-paths* [name] 487 | | | +--rw name string 488 | | | +--rw explicit-route-objects* [index] 489 | | | +--rw index uint8 490 | | | +--rw (type)? 491 | | | | +--:(ipv4-address) 492 | | | | | +--rw v4-address? inet:ipv4-address 493 | | | | | +--rw v4-prefix-length? uint8 494 | | | | | +--rw v4-loose? boolean 495 | | | | +--:(ipv6-address) 496 | | | | | +--rw v6-address? inet:ipv6-address 497 | | | | | +--rw v6-prefix-length? uint8 498 | | | | | +--rw v6-loose? boolean 499 | | | | +--:(as-number) 500 | | | | | +--rw as-number? uint16 501 | | | | +--:(unnumbered-link) 502 | | | | | +--rw router-id? inet:ip-address 503 | | | | | +--rw interface-id? uint32 504 | | | | +--:(label) 505 | | | | +--rw value? uint32 506 | | | +--rw explicit-route-usage? identityref 507 | | +--rw named-constraints* [name] 508 | | | +--rw name string 509 | | | +--rw path-selection 510 | | | +--rw topology? te-types:topology-id 511 | | | +--rw cost-limit? uint32 512 | | | +--rw hop-limit? uint8 513 | | | +--rw metric-type? identityref 514 | | | +--rw tiebreaker-type? identityref 515 | | | +--rw ignore-overload? boolean 516 | | | +--rw tunnel-path-affinities {named-path-affinities}? 517 | | | | +--rw (style)? 518 | | | | +--:(values) 519 | | | | | +--rw value? uint32 520 | | | | | +--rw mask? uint32 521 | | | | +--:(named) 522 | | | | +--rw constraints* [usage] 523 | | | | +--rw usage identityref 524 | | | | +--rw constraint 525 | | | | +--rw affinity-names* [name] 526 | | | | +--rw name string 527 | | | +--rw tunnel-path-srlgs 528 | | | +--rw (style)? 529 | | | +--:(values) 530 | | | | +--rw usage? identityref 531 | | | | +--rw values* te-types:srlg 532 | | | +--:(named) 533 | | | +--rw constraints* [usage] 534 | | | +--rw usage identityref 535 | | | +--rw constraint 536 | | | +--rw srlg-names* [name] 537 | | | +--rw name string 538 | | +--rw lsp-install-interval? uint32 539 | | +--rw lsp-cleanup-interval? uint32 540 | +--ro state 541 | +--ro named-admin-groups* [name] 542 | | +--ro name string 543 | | +--ro group? ietf-te-types:admin-groups 544 | +--ro named-srlgs* [name] {ietf-te-types:named-srlg-groups}? 545 | | +--ro name string 546 | | +--ro group? ietf-te-types:srlg 547 | +--ro named-explicit-paths* [name] 548 | | +--ro name string 549 | | +--ro explicit-route-objects* [index] 550 | | +--ro index uint8 551 | | +--ro (type)? 552 | | | +--:(ipv4-address) 553 | | | | +--ro v4-address? inet:ipv4-address 554 | | | | +--ro v4-prefix-length? uint8 555 | | | | +--ro v4-loose? boolean 556 | | | +--:(ipv6-address) 557 | | | | +--ro v6-address? inet:ipv6-address 558 | | | | +--ro v6-prefix-length? uint8 559 | | | | +--ro v6-loose? boolean 560 | | | +--:(as-number) 561 | | | | +--ro as-number? uint16 562 | | | +--:(unnumbered-link) 563 | | | | +--ro router-id? inet:ip-address 564 | | | | +--ro interface-id? uint32 565 | | | +--:(label) 566 | | | +--ro value? uint32 567 | | +--ro explicit-route-usage? identityref 568 | +--ro named-constraints* [name] 569 | | +--ro name string 570 | | +--ro path-selection 571 | | +--ro topology? te-types:topology-id 572 | | +--ro cost-limit? uint32 573 | | +--ro hop-limit? uint8 574 | | +--ro metric-type? identityref 575 | | +--ro tiebreaker-type? identityref 576 | | +--ro ignore-overload? boolean 577 | | +--ro tunnel-path-affinities {named-path-affinities}? 578 | | | +--ro (style)? 579 | | | +--:(values) 580 | | | | +--ro value? uint32 581 | | | | +--ro mask? uint32 582 | | | +--:(named) 583 | | | +--ro constraints* [usage] 584 | | | +--ro usage identityref 585 | | | +--ro constraint 586 | | | +--ro affinity-names* [name] 587 | | | +--ro name string 588 | | +--ro tunnel-path-srlgs 589 | | +--ro (style)? 590 | | +--:(values) 591 | | | +--ro usage? identityref 592 | | | +--ro values* te-types:srlg 593 | | +--:(named) 594 | | +--ro constraints* [usage] 595 | | +--ro usage identityref 596 | | +--ro constraint 597 | | +--ro srlg-names* [name] 598 | | +--ro name string 599 | +--ro lsp-install-interval? uint32 600 | +--ro lsp-cleanup-interval? uint32 601 | +--ro tunnels-counter? uint32 602 | +--ro lsps-counter? uint32 604 Figure 4: TE globals configuration and state tree 606 3.2. Interfaces Configuration and State Data 608 This branch of the data model covers configurations elements that 609 control TE features behavior system-wide. Examples of such 610 configuration data are: 612 This branch of the data model covers configurations that control TE 613 features behavior system-wide, and its respective state. Examples of 614 such configuration data are: 616 This branch of the model covers configuration and state data items, 617 the corresponding applied state data, and possible derived state 618 pertaining to TE interfaces. Examples of tunnel configuration date 619 for TE interfaces are: 621 o Maximum reservable bandwidth, bandwidth constraints (BC) 623 o Flooding parameters 625 * Flooding intervals and threshold values 627 o Fast reroute backup tunnel properties (such as static, auto- 628 tunnel) 630 o interface attributes 632 * (Extended) administrative groups 634 * SRLG values 636 * TE metric value 638 module: ietf-te 639 +--rw te! 640 +--rw interfaces 641 | +--rw config 642 | | +--rw thresholds 643 | | +--rw (type)? 644 | | +--:(equal-steps) 645 | | | +--rw (equal-step-type)? 646 | | | +--:(up-down-different-step) 647 | | | | +--rw up-step? uint8 648 | | | | +--rw down-step? uint8 649 | | | +--:(up-down-same-step) 650 | | | +--rw step? uint8 651 | | +--:(unequal-steps) 652 | | +--rw up-steps* [value] 653 | | | +--rw value uint8 654 | | +--rw down-steps* [value] 655 | | +--rw value uint8 656 | +--ro state 657 | | +--ro thresholds 658 | | +--ro (type)? 659 | | +--:(equal-steps) 660 | | | +--ro (equal-step-type)? 661 | | | +--:(up-down-different-step) 662 | | | | +--ro up-step? uint8 663 | | | | +--ro down-step? uint8 664 | | | +--:(up-down-same-step) 665 | | | +--ro step? uint8 666 | | +--:(unequal-steps) 667 | | +--ro up-steps* [value] 668 | | | +--ro value uint8 669 | | +--ro down-steps* [value] 670 | | +--ro value uint8 671 | +--rw interface* [interface] 672 | +--rw interface if:interface-ref 673 | +--rw config 674 | | +--rw te-metric? ietf-te-types:te-metric 675 | | +--rw (admin-group-type)? 676 | | | +--:(value-admin-groups) 677 | | | | +--rw (value-admin-group-type)? 678 | | | | +--:(value-admin-groups) 679 | | | | | +--rw admin-group? 680 | | | | +--:(value-extended-admin-groups) 681 | | | | +--rw extended-admin-group 682 | | | +--:(named-admin-groups) 683 | | | +--rw named-admin-groups* [named-admin-group] 684 | | | +--rw named-admin-group -> 685 ../../../../../globals/config/named-admin-groups/name 686 | | +--rw (srlg-type)? 687 | | | +--:(value-srlgs) 688 | | | | +--rw values* [value] 689 | | | | +--rw value uint32 690 | | | +--:(named-srlgs) 691 | | | +--rw named-srlgs* [named-srlg] 692 | | | +--rw named-srlg -> 693 ../../../../../globals/config/named-srlgs/name 694 | | +--rw switching-capabilities* [switching-capability] 695 | | | +--rw switching-capability identityref 696 | | | +--rw encoding? identityref 697 | | +--rw thresholds 698 | | +--rw (type)? 699 | | +--:(equal-steps) 700 | | | +--rw (equal-step-type)? 701 | | | +--:(up-down-different-step) 702 | | | | +--rw up-step? uint8 703 | | | | +--rw down-step? uint8 704 | | | +--:(up-down-same-step) 705 | | | +--rw step? uint8 706 | | +--:(unequal-steps) 707 | | +--rw up-steps* [value] 708 | | | +--rw value uint8 709 | | +--rw down-steps* [value] 710 | | +--rw value uint8 711 | +--ro state 712 | +--ro te-metric? ietf-te-types:te-metric 713 | +--ro (admin-group-type)? 714 | | +--:(value-admin-groups) 715 | | | +--ro (value-admin-group-type)? 716 | | | +--:(value-admin-groups) 717 | | | | +--ro admin-group 718 | | | +--:(value-extended-admin-groups) 719 | | | +--ro extended-admin-group 720 | | +--:(named-admin-groups) 721 | | +--ro named-admin-groups* [named-admin-group] 722 | | +--ro named-admin-group -> 723 ../../../../../globals/config/named-admin-groups/name 724 | +--ro (srlg-type)? 725 | | +--:(value-srlgs) 726 | | | +--ro values* [value] 727 | | | +--ro value uint32 728 | | +--:(named-srlgs) 729 | | +--ro named-srlgs* [named-srlg] 730 | | +--ro named-srlg -> 731 ../../../../../globals/config/named-srlgs/name 732 | +--ro switching-capabilities* [switching-capability] 733 | | +--ro switching-capability identityref 734 | | +--ro encoding? identityref 735 | +--ro thresholds 736 | | +--ro (type)? 737 | | +--:(equal-steps) 738 | | | +--ro (equal-step-type)? 739 | | | +--:(up-down-different-step) 740 | | | | +--ro up-step? uint8 741 | | | | +--ro down-step? uint8 742 | | | +--:(up-down-same-step) 743 | | | +--ro step? uint8 744 | | +--:(unequal-steps) 745 | | +--ro up-steps* [value] 746 | | | +--ro value uint8 747 | | +--ro down-steps* [value] 748 | | +--ro value uint8 749 | +--ro te-advertisements_state 750 | +--ro flood-interval? uint32 751 | +--ro last-flooded-time? uint32 752 | +--ro next-flooded-time? uint32 753 | +--ro last-flooded-trigger? enumeration 754 | +--ro advertized-level-areas* [level-area] 755 | +--ro level-area uint32 757 Figure 5: TE interfaces configuration and state tree 759 The state corresponding to the TE interfaces applied configuration, 760 protocol derived state, and stats and counters all fall under the 761 interface "state" sub-container as shown in Figure 6 below: 763 module: ietf-te 764 +--rw te! 765 +--rw interfaces 766 . 767 +-- rw te-attributes 768 +-- rw config 769 <> 770 . 771 +-- ro state 772 <> 773 <> 775 Figure 6: TE interface state 777 This covers state data for TE interfaces such as: 779 o Bandwidth information: maximum bandwidth, available bandwidth at 780 different priorities and for each class-type (CT) 782 o List of admitted LSPs 784 * Name, bandwidth value and pool, time, priority 786 o Statistics: state counters, flooding counters, admission counters 787 (accepted/rejected), preemption counters 789 o Adjacency information 791 * Neighbor address 793 * Metric value 795 3.3. Tunnels Configuration and State Data 797 This branch of the model covers intended, and corresponding applied 798 configuration for tunnels. As well, it holds possible derived state 799 pertaining to TE tunnels. 801 The approach described in [I-D.openconfig-netmod-opstate] is utilised 802 for the inclusion of operational and statistical data as shown in 803 Figure 7. 805 module: ietf-te 806 +--rw te! 807 +--rw tunnels 808 . 809 +-- rw config 810 <> 811 . 812 +-- ro state 813 <> 814 <> 816 Figure 7: TE interface state tree 818 Examples of tunnel configuration date for TE tunnels: 820 o Name and type (e.g. P2P, P2MP) of tunnel 822 o Admin-state 824 o Primary and secondary paths 826 o Routing usage (auto-route announce, forwarding adjacency) 828 o Policy based routing (PBR) parameters 830 module: ietf-te 831 +--rw te! 832 +--rw tunnels 833 | +--rw tunnel* [name type] 834 | +--rw name string 835 | +--rw type identityref 836 | +--rw identifier? uint16 837 | +--rw config 838 | | +--rw description? string 839 | | +--rw admin-status? identityref 840 | | +--rw (routing-choice)? 841 | | | +--:(autoroute) 842 | | | | +--rw autoroute-announce! 843 | | | | +--rw routing-afs* inet:ip-version 844 | | | | +--rw (metric-type)? 845 | | | | +--:(metric) 846 | | | | | +--rw metric? uint32 847 | | | | +--:(relative-metric) 848 | | | | | +--rw relative-metric? int32 849 | | | | +--:(absolute-metric) 850 | | | | +--rw absolute-metric? uint32 851 | | | +--:(forwarding-adjacency) 852 | | | +--rw forwarding-adjacency! 853 | | | +--rw holdtime? uint32 854 | | | +--rw routing-afs* inet:ip-version 855 | | +--rw forwarding 856 | | | +--rw load-share? uint32 857 | | | +--rw (policy-type)? 858 | | | +--:(class) 859 | | | | +--rw class 860 | | | | +--rw class? uint8 861 | | | +--:(group) 862 | | | +--rw group 863 | | | +--rw classes* uint8 864 | | +--rw bidirectional 865 | | | +--rw association 866 | | | +--rw id? uint16 867 | | | +--rw source? inet:ip-address 868 | | | +--rw global-source? inet:ip-address 869 | | | +--rw type? identityref 870 | | | +--rw provisioing? identityref 871 | | +--rw (path-type)? 872 | | +--:(p2p) 873 | | | +--rw destination? inet:ip-address 874 | | | +--rw primary-paths* [preference] 875 | | | +--rw preference uint8 876 | | | +--rw path-named-constraint? string 877 | | | +--rw path-selection 878 | | | | +--rw topology? te-types:topology-id 879 | | | | +--rw cost-limit? uint32 880 | | | | +--rw hop-limit? uint8 881 | | | | +--rw metric-type? identityref 882 | | | | +--rw tiebreaker-type? identityref 883 | | | | +--rw ignore-overload? boolean 884 | | | | +--rw tunnel-path-affinities 885 | | | | | +--rw (style)? 886 | | | | | +--:(values) 887 | | | | | | +--rw value? uint32 888 | | | | | | +--rw mask? uint32 889 | | | | | +--:(named) 890 | | | | | +--rw constraints* [usage] 891 | | | | | +--rw usage identityref 892 | | | | | +--rw constraint 893 | | | | | +--rw affinity-names* [name] 894 | | | | | +--rw name string 895 | | | | +--rw tunnel-path-srlgs 896 | | | | +--rw (style)? 897 | | | | +--:(values) 898 | | | | | +--rw usage? identityref 899 | | | | | +--rw values* te-types:srlg 900 | | | | +--:(named) 901 | | | | +--rw constraints* [usage] 902 | | | | +--rw usage identityref 903 | | | | +--rw constraint 904 | | | | +--rw srlg-names* [name] 905 | | | | +--rw name string 906 | | | +--rw (type)? 907 | | | | +--:(dynamic) 908 | | | | | +--rw dynamic? empty 909 | | | | +--:(explicit) 910 | | | | +--rw explicit-path-name? string 911 | | | +--rw no-cspf? empty 912 | | | +--rw lockdown? empty 913 | | | +--rw secondary-paths* [preference] 914 | | | +--rw preference uint8 915 | | | +--rw path-named-constraint? string 916 | | | +--rw path-selection 917 | | | | +--rw topology? te-types:topology-id 918 | | | | +--rw cost-limit? uint32 919 | | | | +--rw hop-limit? uint8 920 | | | | +--rw metric-type? identityref 921 | | | | +--rw tiebreaker-type? identityref 922 | | | | +--rw ignore-overload? boolean 923 | | | | +--rw tunnel-path-affinities 924 | | | | | +--rw (style)? 925 | | | | | +--:(values) 926 | | | | | | +--rw value? uint32 927 | | | | | | +--rw mask? uint32 928 | | | | | +--:(named) 929 | | | | | +--rw constraints* [usage] 930 | | | | | +--rw usage identityref 931 | | | | | +--rw constraint 932 | | | | | +--rw affinity-names* [name] 933 | | | | | +--rw name string 934 | | | | +--rw tunnel-path-srlgs 935 | | | | +--rw (style)? 936 | | | | +--:(values) 937 | | | | | +--rw usage? identityref 938 | | | | | +--rw values* te-types:srlg 939 | | | | +--:(named) 940 | | | | +--rw constraints* [usage] 941 | | | | +--rw usage identityref 942 | | | | +--rw constraint 943 | | | | +--rw srlg-names* [name] 944 | | | | +--rw name string 945 | | | +--rw (type)? 946 | | | | +--:(dynamic) 947 | | | | | +--rw dynamic? empty 948 | | | | +--:(explicit) 949 | | | | +--rw explicit-path-name? string 950 | | | +--rw no-cspf? empty 951 | | | +--rw lockdown? empty 952 | | +--:(p2mp) {ietf-te-types:p2mp-te}? 953 | | +--rw p2mp-paths* [destination] 954 | | +--rw destination inet:ip-address 955 | | +--rw primary-paths* [preference] 956 | | +--rw preference uint8 957 | | +--rw path-named-constraint? string 958 | | +--rw path-selection 959 | | | +--rw topology? te-types:topology-id 960 | | | +--rw cost-limit? uint32 961 | | | +--rw hop-limit? uint8 962 | | | +--rw metric-type? identityref 963 | | | +--rw tiebreaker-type? identityref 964 | | | +--rw ignore-overload? boolean 965 | | | +--rw tunnel-path-affinities 966 | | | | +--rw (style)? 967 | | | | +--:(values) 968 | | | | | +--rw value? uint32 969 | | | | | +--rw mask? uint32 970 | | | | +--:(named) 971 | | | | +--rw constraints* [usage] 972 | | | | +--rw usage identityref 973 | | | | +--rw constraint 974 | | | | +--rw affinity-names* [name] 975 | | | | +--rw name string 976 | | | +--rw tunnel-path-srlgs 977 | | | +--rw (style)? 978 | | | +--:(values) 979 | | | | +--rw usage? identityref 980 | | | | +--rw values* te-types:srlg 981 | | | +--:(named) 982 | | | +--rw constraints* [usage] 983 | | | +--rw usage identityref 984 | | | +--rw constraint 985 | | | +--rw srlg-names* [name] 986 | | | +--rw name string 987 | | +--rw (type)? 988 | | | +--:(dynamic) 989 | | | | +--rw dynamic? empty 990 | | | +--:(explicit) 991 | | | +--rw explicit-path-name? string 992 | | +--rw no-cspf? empty 993 | | +--rw lockdown? empty 994 | | +--rw secondary-paths* [preference] 995 | | +--rw preference uint8 996 | | +--rw path-named-constraint? string 997 | | +--rw path-selection 998 | | | +--rw topology? te-types:topology-id 999 | | | +--rw cost-limit? uint32 1000 | | | +--rw hop-limit? uint8 1001 | | | +--rw metric-type? identityref 1002 | | | +--rw tiebreaker-type? identityref 1003 | | | +--rw ignore-overload? boolean 1004 | | | +--rw tunnel-path-affinities 1005 | | | | +--rw (style)? 1006 | | | | +--:(values) 1007 | | | | | +--rw value? uint32 1008 | | | | | +--rw mask? uint32 1009 | | | | +--:(named) 1010 | | | | +--rw constraints* [usage] 1011 | | | | +--rw usage identityref 1012 | | | | +--rw constraint 1013 | | | | +--rw affinity-names* [name] 1014 | | | | +--rw name string 1015 | | | +--rw tunnel-path-srlgs 1016 | | | +--rw (style)? 1017 | | | +--:(values) 1018 | | | | +--rw usage? identityref 1019 | | | | +--rw values* te-types:srlg 1020 | | | +--:(named) 1021 | | | +--rw constraints* [usage] 1022 | | | +--rw usage identityref 1023 | | | +--rw constraint 1024 | | | +--rw srlg-names* [name] 1025 | | | +--rw name string 1026 | | +--rw (type)? 1027 | | | +--:(dynamic) 1028 | | | | +--rw dynamic? empty 1029 | | | +--:(explicit) 1030 | | | +--rw explicit-path-name? string 1031 | | +--rw no-cspf? empty 1032 | | +--rw lockdown? empty 1033 | +--ro state 1034 | +--ro description? string 1035 | +--ro admin-status? identityref 1036 | +--ro (routing-choice)? 1037 | | +--:(autoroute) 1038 | | | +--ro autoroute-announce! 1039 | | | +--ro routing-afs* inet:ip-version 1040 | | | +--ro (metric-type)? 1041 | | | +--:(metric) 1042 | | | | +--ro metric? uint32 1043 | | | +--:(relative-metric) 1044 | | | | +--ro relative-metric? int32 1045 | | | +--:(absolute-metric) 1046 | | | +--ro absolute-metric? uint32 1047 | | +--:(forwarding-adjacency) 1048 | | +--ro forwarding-adjacency! 1049 | | +--ro holdtime? uint32 1050 | | +--ro routing-afs* inet:ip-version 1051 | +--ro forwarding 1052 | | +--ro load-share? uint32 1053 | | +--ro (policy-type)? 1054 | | +--:(class) 1055 | | | +--ro class 1056 | | | +--ro class? uint8 1057 | | +--:(group) 1058 | | +--ro group 1059 | | +--ro classes* uint8 1060 | +--ro bidirectional 1061 | | +--ro association 1062 | | +--ro id? uint16 1063 | | +--ro source? inet:ip-address 1064 | | +--ro global-source? inet:ip-address 1065 | | +--ro type? identityref 1066 | | +--ro provisioing? identityref 1067 | +--ro (path-type)? 1068 | | +--:(p2p) 1069 | | | +--ro destination? inet:ip-address 1070 | | | +--ro primary-paths* [preference] 1071 | | | +--ro preference uint8 1072 | | | +--ro path-named-constraint? string 1073 | | | +--ro path-selection 1074 | | | | +--ro topology? te-types:topology-id 1075 | | | | +--ro cost-limit? uint32 1076 | | | | +--ro hop-limit? uint8 1077 | | | | +--ro metric-type? identityref 1078 | | | | +--ro tiebreaker-type? identityref 1079 | | | | +--ro ignore-overload? boolean 1080 | | | | +--ro tunnel-path-affinities 1081 | | | | | +--ro (style)? 1082 | | | | | +--:(values) 1083 | | | | | | +--ro value? uint32 1084 | | | | | | +--ro mask? uint32 1085 | | | | | +--:(named) 1086 | | | | | +--ro constraints* [usage] 1087 | | | | | +--ro usage identityref 1088 | | | | | +--ro constraint 1089 | | | | | +--ro affinity-names* [name] 1090 | | | | | +--ro name string 1091 | | | | +--ro tunnel-path-srlgs 1092 | | | | +--ro (style)? 1093 | | | | +--:(values) 1094 | | | | | +--ro usage? identityref 1095 | | | | | +--ro values* te-types:srlg 1096 | | | | +--:(named) 1097 | | | | +--ro constraints* [usage] 1098 | | | | +--ro usage identityref 1099 | | | | +--ro constraint 1100 | | | | +--ro srlg-names* [name] 1101 | | | | +--ro name string 1102 | | | +--ro (type)? 1103 | | | | +--:(dynamic) 1104 | | | | | +--ro dynamic? empty 1105 | | | | +--:(explicit) 1106 | | | | +--ro explicit-path-name? string 1107 | | | +--ro no-cspf? empty 1108 | | | +--ro lockdown? empty 1109 | | | +--ro secondary-paths* [preference] 1110 | | | +--ro preference uint8 1111 | | | +--ro path-named-constraint? string 1112 | | | +--ro path-selection 1113 | | | | +--ro topology?te-types:topology-id 1114 | | | | +--ro cost-limit? uint32 1115 | | | | +--ro hop-limit? uint8 1116 | | | | +--ro metric-type? identityref 1117 | | | | +--ro tiebreaker-type? identityref 1118 | | | | +--ro ignore-overload? boolean 1119 | | | | +--ro tunnel-path-affinities 1120 | | | | | +--ro (style)? 1121 | | | | | +--:(values) 1122 | | | | | | +--ro value? uint32 1123 | | | | | | +--ro mask? uint32 1124 | | | | | +--:(named) 1125 | | | | | +--ro constraints* [usage] 1126 | | | | | +--ro usage identityref 1127 | | | | | +--ro constraint 1128 | | | | | +--ro affinity-names* [name] 1129 | | | | | +--ro name string 1130 | | | | +--ro tunnel-path-srlgs 1131 | | | | +--ro (style)? 1132 | | | | +--:(values) 1133 | | | | | +--ro usage? identityref 1134 | | | | | +--ro values* te-types:srlg 1135 | | | | +--:(named) 1136 | | | | +--ro constraints* [usage] 1137 | | | | +--ro usage identityref 1138 | | | | +--ro constraint 1139 | | | | +--ro srlg-names* [name] 1140 | | | | +--ro name string 1141 | | | +--ro (type)? 1142 | | | | +--:(dynamic) 1143 | | | | | +--ro dynamic? empty 1144 | | | | +--:(explicit) 1145 | | | | +--ro explicit-path-name? string 1146 | | | +--ro no-cspf? empty 1147 | | | +--ro lockdown? empty 1148 | | +--:(p2mp) {ietf-te-types:p2mp-te}? 1149 | | +--ro p2mp-paths* [destination] 1150 | | +--ro destination inet:ip-address 1151 | | +--ro primary-paths* [preference] 1152 | | +--ro preference uint8 1153 | | +--ro path-named-constraint? string 1154 | | +--ro path-selection 1155 | | | +--ro topology? te-types:topology-id 1156 | | | +--ro cost-limit? uint32 1157 | | | +--ro hop-limit? uint8 1158 | | | +--ro metric-type? identityref 1159 | | | +--ro tiebreaker-type? identityref 1160 | | | +--ro ignore-overload? boolean 1161 | | | +--ro tunnel-path-affinities 1162 | | | | +--ro (style)? 1163 | | | | +--:(values) 1164 | | | | | +--ro value? uint32 1165 | | | | | +--ro mask? uint32 1166 | | | | +--:(named) 1167 | | | | +--ro constraints* [usage] 1168 | | | | +--ro usage identityref 1169 | | | | +--ro constraint 1170 | | | | +--ro affinity-names* [name] 1171 | | | | +--ro name string 1172 | | | +--ro tunnel-path-srlgs 1173 | | | +--ro (style)? 1174 | | | +--:(values) 1175 | | | | +--ro usage? identityref 1176 | | | | +--ro values* te-types:srlg 1177 | | | +--:(named) 1178 | | | +--ro constraints* [usage] 1179 | | | +--ro usage identityref 1180 | | | +--ro constraint 1181 | | | +--ro srlg-names* [name] 1182 | | | +--ro name string 1183 | | +--ro (type)? 1184 | | | +--:(dynamic) 1185 | | | | +--ro dynamic? empty 1186 | | | +--:(explicit) 1187 | | | +--ro explicit-path-name? string 1188 | | +--ro no-cspf? empty 1189 | | +--ro lockdown? empty 1190 | | +--ro secondary-paths* [preference] 1191 | | +--ro preference uint8 1192 | | +--ro path-named-constraint? string 1193 | | +--ro path-selection 1194 | | | +--ro topology? te-types:topology-id 1195 | | | +--ro cost-limit? uint32 1196 | | | +--ro hop-limit? uint8 1197 | | | +--ro metric-type? identityref 1198 | | | +--ro tiebreaker-type? identityref 1199 | | | +--ro ignore-overload? boolean 1200 | | | +--ro tunnel-path-affinities 1201 | | | | +--ro (style)? 1202 | | | | +--:(values) 1203 | | | | | +--ro value? uint32 1204 | | | | | +--ro mask? uint32 1205 | | | | +--:(named) 1206 | | | | +--ro constraints* [usage] 1207 | | | | +--ro usage identityref 1208 | | | | +--ro constraint 1209 | | | | +--ro affinity-names* [name] 1210 | | | | +--ro name string 1211 | | | +--ro tunnel-path-srlgs 1212 | | | +--ro (style)? 1213 | | | +--:(values) 1214 | | | | +--ro usage? identityref 1215 | | | | +--ro values* te-types:srlg 1216 | | | +--:(named) 1217 | | | +--ro constraints* [usage] 1218 | | | +--ro usage identityref 1219 | | | +--ro constraint 1220 | | | +--ro srlg-names* [name] 1221 | | | +--ro name string 1222 | | +--ro (type)? 1223 | | | +--:(dynamic) 1224 | | | | +--ro dynamic? empty 1225 | | | +--:(explicit) 1226 | | | +--ro explicit-path-name? string 1227 | | +--ro no-cspf? empty 1228 | | +--ro lockdown? empty 1229 | +--ro oper-status? identityref 1230 | +--ro lsp* [source destination tunnel-id lsp-id] 1231 | +--ro source -> 1232 ../../../../../lsps-state/lsp/source 1233 | +--ro destination -> 1234 ../../../../../lsps-state/lsp/destination 1235 | +--ro tunnel-id -> 1236 ../../../../../lsps-state/lsp/tunnel-id 1237 | +--ro lsp-id -> 1238 ../../../../../lsps-state/lsp/lsp-id 1239 | +--ro extended-tunnel-id? -> 1240 ../../../../../lsps-state/lsp/extended-tunnel-id 1241 | +--ro type? -> 1242 ../../../../../lsps-state/lsp/type 1244 Figure 8: TE tunnels configuration and state tree 1246 3.4. TE LSPs State Data 1248 TE LSPs are derived state data that is usually instantiated via 1249 signaling protocols. TE LSPs exists on routers as ingress (starting 1250 point of LSP), transit (mid-point of LSP ), or egress (termination 1251 point of the LSP). TE LSPs are distinguished by the 5 tuple, and LSP 1252 type (P2P or P2MP) as shown in Figure 9. 1254 In the model, the nodes holding LSPs data exist in a read-only list 1255 as shown below: 1257 module: ietf-te 1258 +--rw te! 1259 +--ro lsps-state 1260 +--ro lsp* [source destination tunnel-id lsp-id 1261 extended-tunnel-id type] 1262 +--ro source inet:ip-address 1263 +--ro destination inet:ip-address 1264 +--ro tunnel-id uint16 1265 +--ro lsp-id uint16 1266 +--ro extended-tunnel-id inet:ip-address 1267 +--ro type identityref 1268 +--ro oper-status? identityref 1269 +--ro origin-type? enumeration 1270 +--ro lsp-resource-status? enumeration 1271 +--ro lsp-protection-status? enumeration 1272 +--ro lsp-operational-status? empty 1273 +--ro lsp-timers 1274 | +--ro life-time? uint32 1275 | +--ro time-to-install? uint32 1276 | +--ro time-to-die? uint32 1277 +--ro downstream-info 1278 | +--ro nhop? inet:ip-address 1279 | +--ro neighbor? inet:ip-address 1280 | +--ro label? uint32 1281 | +--ro outgoing-interface? if:interface-ref 1282 +--ro upstream-info 1283 +--ro phop? inet:ip-address 1284 +--ro neighbor? inet:ip-address 1285 +--ro label? uint32 1286 +--ro incoming-interface? if:interface-ref 1288 Figure 9: TE LSPs state tree 1290 3.5. Global RPC Data 1292 This branch of the model covers system-wide RPC execution data to 1293 trigger actions and optionally expect responses. Examples of such TE 1294 commands are to: 1296 o Clear global TE statistics of various features 1298 3.6. Interface RPC Data 1300 This collection of data in the model defines TE interface RPC 1301 execution commands. Examples of these are to: 1303 o Clear TE statistics for all or for individual TE interfaces 1304 o Trigger immediate flooding for one or all TE interfaces 1306 3.7. Tunnel RPC Data 1308 This branch of the model covers TE tunnel RPC execution data to 1309 trigger actions and optionally expect responses. Examples of such TE 1310 commands are: 1312 o Clear statistics for all or for individual tunnels 1314 3.8. Global Notifications Data 1316 This branch of the model covers system-wide notifications data. The 1317 node notifies the registered events to the server using the defined 1318 notification messages. Example of such global TE events are: 1320 o Backup tunnel FRR active and not-active state transition events 1322 3.9. Interfaces Notifications Data 1324 This branch of the model covers TE interfaces related notifications 1325 data. The TE interface configuration is used for specific events 1326 registration. Notifications are sent for registered events to the 1327 server. Example events for TE interfaces are: 1329 o Interface creation and deletion 1331 o Interface state transitions 1333 o (Soft) preemption triggers 1335 o Fast reroute activation 1337 3.10. Tunnel Notification Data 1339 This branch of the model covers TE tunnels related notifications 1340 data. The TE tunnels configuration is used for specific events 1341 registration. Notifications are sent for registered events to the 1342 server. Example events for TE tunnels are: 1344 o Tunnel creation and deletion events 1346 o Tunnel state up/down changes 1348 o Tunnel state reoptimization changes 1350 4. TE Generic and Helper YANG Modules 1352 file "ietf-te-types@2015-10-16.yang" 1353 module ietf-te-types { 1355 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; 1357 /* Replace with IANA when assigned */ 1358 prefix "te-types"; 1360 import ietf-inet-types { 1361 prefix inet; 1362 } 1364 organization 1365 "IETF TEAS Working Group"; 1367 contact "Fill me"; 1369 description 1370 "This module contains a collection of generally 1371 useful TE specific YANG data type defintions."; 1373 revision 2015-10-16 { 1374 description "Latest revision of TE basic types"; 1375 reference "RFC3209"; 1376 } 1378 identity tunnel-type { 1379 description 1380 "Base identity from which specific tunnel types are 1381 derived."; 1382 } 1384 identity tunnel-p2p { 1385 base tunnel-type; 1386 description 1387 "TE point-to-point tunnel type."; 1388 } 1390 identity tunnel-p2mp { 1391 base tunnel-type; 1392 description 1393 "TE point-to-multipoint tunnel type."; 1394 } 1396 identity state-type { 1397 description 1398 "Base identity for TE states"; 1399 } 1401 identity state-up { 1402 base state-type; 1403 description 1404 "State up"; 1405 } 1407 identity state-down { 1408 base state-type; 1409 description 1410 "State down"; 1411 } 1413 identity switching-capabilities { 1414 description 1415 "Base identity for interface switching capabilities"; 1416 } 1418 identity switching-psc1 { 1419 base switching-capabilities; 1420 description 1421 "Packet-Switch Capable-1 (PSC-1)"; 1422 } 1424 identity switching-evpl { 1425 base switching-capabilities; 1426 description 1427 "Ethernet Virtual Private Line (EVPL)"; 1428 } 1430 identity switching-l2sc { 1431 base switching-capabilities; 1432 description 1433 "Layer-2 Switch Capable (L2SC)"; 1434 } 1436 identity switching-tdm { 1437 base switching-capabilities; 1438 description 1439 "Time-Division-Multiplex Capable (TDM)"; 1440 } 1442 identity switching-otn { 1443 base switching-capabilities; 1444 description 1445 "OTN-TDM capable"; 1447 } 1449 identity switching-dcsc { 1450 base switching-capabilities; 1451 description 1452 "Data Channel Switching Capable (DCSC)"; 1453 } 1455 identity switching-lsc { 1456 base switching-capabilities; 1457 description 1458 "Lambda-Switch Capable (LSC)"; 1459 } 1461 identity switching-fsc { 1462 base switching-capabilities; 1463 description 1464 "Fiber-Switch Capable (FSC)"; 1465 } 1467 identity lsp-encoding-types { 1468 description 1469 "Base identity for encoding types"; 1470 } 1472 identity lsp-encoding-packet { 1473 base lsp-encoding-types; 1474 description 1475 "Packet LSP encoding"; 1476 } 1478 identity lsp-encoding-ethernet { 1479 base lsp-encoding-types; 1480 description 1481 "Ethernet LSP encoding"; 1482 } 1484 identity lsp-encoding-pdh { 1485 base lsp-encoding-types; 1486 description 1487 "ANSI/ETSI LSP encoding"; 1488 } 1490 identity lsp-encoding-sdh { 1491 base lsp-encoding-types; 1492 description 1493 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; 1494 } 1495 identity lsp-encoding-digital-wrapper { 1496 base lsp-encoding-types; 1497 description 1498 "Digital Wrapper LSP encoding"; 1499 } 1501 identity lsp-encoding-lambda { 1502 base lsp-encoding-types; 1503 description 1504 "Lambda (photonic) LSP encoding"; 1505 } 1507 identity lsp-encoding-fiber { 1508 base lsp-encoding-types; 1509 description 1510 "Fiber LSP encoding"; 1511 } 1513 identity lsp-encoding-fiber-channel { 1514 base lsp-encoding-types; 1515 description 1516 "FiberChannel LSP encoding"; 1517 } 1519 identity lsp-encoding-oduk { 1520 base lsp-encoding-types; 1521 description 1522 "G.709 ODUk (Digital Path)LSP encoding"; 1523 } 1525 identity lsp-encoding-optical-channel { 1526 base lsp-encoding-types; 1527 description 1528 "Line (e.g., 8B/10B) LSP encoding"; 1529 } 1531 identity lsp-encoding-line { 1532 base lsp-encoding-types; 1533 description 1534 "Line (e.g., 8B/10B) LSP encoding"; 1535 } 1537 /* TE basic features */ 1538 feature p2mp-te { 1539 description 1540 "Indicates support for P2MP-TE"; 1541 } 1542 feature frr-te { 1543 description 1544 "Indicates support for TE FastReroute (FRR)"; 1545 } 1547 feature extended-admin-groups { 1548 description 1549 "Indicates support for TE link extended admin 1550 groups."; 1551 } 1553 feature named-path-affinities { 1554 description 1555 "Indicates support for named path affinities"; 1556 } 1558 feature named-extended-admin-groups { 1559 description 1560 "Indicates support for named extended admin groups"; 1561 } 1563 feature named-srlg-groups { 1564 description 1565 "Indicates support for named SRLG groups"; 1566 } 1568 feature named-path-constraints { 1569 description 1570 "Indicates support for named path constraints"; 1571 } 1573 grouping explicit-route-subobject { 1574 description 1575 "The explicit route subobject grouping"; 1576 choice type { 1577 description 1578 "The explicit route subobject type"; 1579 case ipv4-address { 1580 description 1581 "IPv4 address explicit route subobject"; 1582 leaf v4-address { 1583 type inet:ipv4-address; 1584 description 1585 "An IPv4 address. This address is 1586 treated as a prefix based on the 1587 prefix length value below. Bits beyond 1588 the prefix are ignored on receipt and 1589 SHOULD be set to zero on transmission."; 1591 } 1592 leaf v4-prefix-length { 1593 type uint8; 1594 description 1595 "Length in bits of the IPv4 prefix"; 1596 } 1597 leaf v4-loose { 1598 type boolean; 1599 description 1600 "Describes whether the object is loose 1601 if set, or otherwise strict"; 1602 } 1603 } 1604 case ipv6-address { 1605 description 1606 "IPv6 address Explicit Route Object"; 1607 leaf v6-address { 1608 type inet:ipv6-address; 1609 description 1610 "An IPv6 address. This address is 1611 treated as a prefix based on the 1612 prefix length value below. Bits 1613 beyond the prefix are ignored on 1614 receipt and SHOULD be set to zero 1615 on transmission."; 1616 } 1617 leaf v6-prefix-length { 1618 type uint8; 1619 description 1620 "Length in bits of the IPv4 prefix"; 1621 } 1622 leaf v6-loose { 1623 type boolean; 1624 description 1625 "Describes whether the object is loose 1626 if set, or otherwise strict"; 1627 } 1628 } 1629 case as-number { 1630 leaf as-number { 1631 type uint16; 1632 description "AS number"; 1633 } 1634 description 1635 "Autonomous System explicit route subobject"; 1636 } 1637 case unnumbered-link { 1638 leaf router-id { 1639 type inet:ip-address; 1640 description 1641 "A router-id address"; 1642 } 1643 leaf interface-id { 1644 type uint32; 1645 description "The interface identifier"; 1646 } 1647 description 1648 "Unnumbered link explicit route subobject"; 1649 reference 1650 "RFC3477: Signalling Unnumbered Links in 1651 RSVP-TE"; 1652 } 1653 case label { 1654 leaf value { 1655 type uint32; 1656 description "the label value"; 1657 } 1658 description 1659 "The Label ERO subobject"; 1660 } 1661 /* AS domain sequence..? */ 1662 } 1663 } 1665 grouping record-route-subobject { 1666 description 1667 "The record route subobject grouping"; 1668 choice type { 1669 description 1670 "The record route subobject type"; 1671 case ipv4-address { 1672 leaf v4-address { 1673 type inet:ipv4-address; 1674 description 1675 "An IPv4 address. This address is 1676 treated as a prefix based on the prefix 1677 length value below. Bits beyond the 1678 prefix are ignored on receipt and 1679 SHOULD be set to zero on transmission."; 1680 } 1681 leaf v4-prefix-length { 1682 type uint8; 1683 description 1684 "Length in bits of the IPv4 prefix"; 1685 } 1686 leaf v4-flags { 1687 type uint8; 1688 description 1689 "IPv4 address sub-object flags"; 1690 reference "RFC3209"; 1691 } 1692 } 1693 case ipv6-address { 1694 leaf v6-address { 1695 type inet:ipv6-address; 1696 description 1697 "An IPv6 address. This address is 1698 treated as a prefix based on the 1699 prefix length value below. Bits 1700 beyond the prefix are ignored on 1701 receipt and SHOULD be set to zero 1702 on transmission."; 1703 } 1704 leaf v6-prefix-length { 1705 type uint8; 1706 description 1707 "Length in bits of the IPv4 prefix"; 1708 } 1709 leaf v6-flags { 1710 type uint8; 1711 description 1712 "IPv6 address sub-object flags"; 1713 reference "RFC3209"; 1714 } 1715 } 1716 case label { 1717 leaf value { 1718 type uint32; 1719 description "the label value"; 1720 } 1721 leaf flags { 1722 type uint8; 1723 description 1724 "Label sub-object flags"; 1725 reference "RFC3209"; 1726 } 1727 description 1728 "The Label ERO subobject"; 1729 } 1730 } 1731 } 1733 identity route-usage-type { 1734 description 1735 "Base identity for route usage"; 1736 } 1738 identity route-include-ero { 1739 base route-usage-type; 1740 description 1741 "Include ERO from route"; 1742 } 1744 identity route-exclude-ero { 1745 base route-usage-type; 1746 description 1747 "Exclude ERO from route"; 1748 } 1750 identity route-exclude-srlg { 1751 base route-usage-type; 1752 description 1753 "Exclude SRLG from route"; 1754 } 1756 identity path-metric-type { 1757 description 1758 "Base identity for path metric type"; 1759 } 1761 identity path-metric-te { 1762 base path-metric-type; 1763 description 1764 "TE path metric"; 1765 } 1767 identity path-metric-igp { 1768 base path-metric-type; 1769 description 1770 "IGP path metric"; 1771 } 1773 identity path-tiebreaker-type { 1774 description 1775 "Base identity for path tie-breaker type"; 1776 } 1778 identity path-tiebreaker-minfill { 1779 base path-tiebreaker-type; 1780 description 1781 "Min-Fill LSP path placement"; 1782 } 1783 identity path-tiebreaker-maxfill { 1784 base path-tiebreaker-type; 1785 description 1786 "Max-Fill LSP path placement"; 1787 } 1789 identity path-tiebreaker-randoom { 1790 base path-tiebreaker-type; 1791 description 1792 "Random LSP path placement"; 1793 } 1795 identity bidir-provisioning-mode { 1796 description 1797 "Base identity for bidirectional provisioning 1798 mode."; 1799 } 1801 identity bidir-provisioning-single-sided { 1802 base bidir-provisioning-mode; 1803 description 1804 "Single-sided bidirectional provioning mode"; 1805 } 1807 identity bidir-provisioning-double-sided { 1808 base bidir-provisioning-mode; 1809 description 1810 "Double-sided bidirectional provioning mode"; 1811 } 1813 identity bidir-association-type { 1814 description 1815 "Base identity for bidirectional association type"; 1816 } 1818 identity bidir-assoc-corouted { 1819 base bidir-association-type; 1820 description 1821 "Co-routed bidirectional association type"; 1822 } 1824 identity bidir-assoc-non-corouted { 1825 base bidir-association-type; 1826 description 1827 "Non co-routed bidirectional association type"; 1828 } 1830 identity resource-affinities-type { 1831 description 1832 "Base identity for resource affinities"; 1833 } 1835 identity resource-aff-include-all { 1836 base resource-affinities-type; 1837 description 1838 "The set of attribute filters associated with a 1839 tunnel all of which must be present for a link 1840 to be acceptable"; 1841 } 1843 identity resource-aff-include-any { 1844 base resource-affinities-type; 1845 description 1846 "The set of attribute filters associated with a 1847 tunnel any of which must be present for a link 1848 to be acceptable"; 1849 } 1851 identity resource-aff-exclude-any { 1852 base resource-affinities-type; 1853 description 1854 "The set of attribute filters associated with a 1855 tunnel any of which renders a link unacceptable"; 1856 } 1858 typedef admin-group { 1859 type binary { 1860 length 32; 1861 } 1862 description 1863 "Administrative group/Resource class/Color."; 1864 } 1866 typedef extended-admin-group { 1867 type binary; 1868 description 1869 "Extended administrative group/Resource class/Color."; 1870 } 1872 typedef admin-groups { 1873 type union { 1874 type admin-group; 1875 type extended-admin-group; 1876 } 1877 description "TE administrative group derived type"; 1878 } 1879 typedef srlg { 1880 type uint32; 1881 description "SRLG type"; 1882 } 1884 identity path-computation-srlg-type { 1885 description 1886 "Base identity for SRLG path computation"; 1887 } 1889 identity srlg-ignore { 1890 base path-computation-srlg-type; 1891 description 1892 "Ignores SRLGs in path computation"; 1893 } 1895 identity srlg-strict { 1896 base path-computation-srlg-type; 1897 description 1898 "Include strict SRLG check in path computation"; 1899 } 1901 identity srlg-preferred { 1902 base path-computation-srlg-type; 1903 description 1904 "Include preferred SRLG check in path computation"; 1905 } 1907 identity srlg-weighted { 1908 base path-computation-srlg-type; 1909 description 1910 "Include weighted SRLG check in path computation"; 1911 } 1913 typedef te-metric { 1914 type uint32; 1915 description 1916 "TE link metric"; 1917 } 1919 typedef topology-id { 1920 type string { 1921 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 1922 } 1923 description 1924 "An identifier for a topology."; 1925 } 1926 /** 1927 * TE tunnel generic groupings 1928 **/ 1930 /* Tunnel path selection parameters */ 1931 grouping tunnel-path-selection { 1932 description 1933 "Tunnel path selection properties grouping"; 1934 container path-selection { 1935 description 1936 "Tunnel path selection properties container"; 1937 leaf topology { 1938 type te-types:topology-id; 1939 description 1940 "The tunnel path is computed using the specific 1941 topology identified by this identifier"; 1942 } 1943 leaf cost-limit { 1944 type uint32 { 1945 range "1..4294967295"; 1946 } 1947 description 1948 "The tunnel path cost limit."; 1949 } 1950 leaf hop-limit { 1951 type uint8 { 1952 range "1..255"; 1953 } 1954 description 1955 "The tunnel path hop limit."; 1956 } 1957 leaf metric-type { 1958 type identityref { 1959 base path-metric-type; 1960 } 1961 default path-metric-te; 1962 description 1963 "The tunnel path metric type."; 1964 } 1965 leaf tiebreaker-type { 1966 type identityref { 1967 base path-tiebreaker-type; 1968 } 1969 default path-tiebreaker-maxfill; 1970 description 1971 "The tunnel path computation tie breakers."; 1972 } 1973 leaf ignore-overload { 1974 type boolean; 1975 description 1976 "The tunnel path can traverse overloaded node."; 1977 } 1978 uses tunnel-path-affinities; 1979 uses tunnel-path-srlgs; 1980 } 1981 } 1983 grouping tunnel-path-affinities { 1984 description 1985 "Path affinities grouping"; 1986 container tunnel-path-affinities { 1987 if-feature named-path-affinities; 1988 description 1989 "Path affinities container"; 1990 choice style { 1991 description 1992 "Path affinities representation style"; 1993 case values { 1994 leaf value { 1995 type uint32 { 1996 range "0..4294967295"; 1997 } 1998 description 1999 "Affinity value"; 2000 } 2001 leaf mask { 2002 type uint32 { 2003 range "0..4294967295"; 2004 } 2005 description 2006 "Affinity mask"; 2007 } 2008 } 2009 case named { 2010 list constraints { 2011 key "usage"; 2012 leaf usage { 2013 type identityref { 2014 base resource-affinities-type; 2015 } 2016 description "Affinities usage"; 2017 } 2018 container constraint { 2019 description 2020 "Container for named affinities"; 2021 list affinity-names { 2022 key "name"; 2023 leaf name { 2024 type string; 2025 description 2026 "Affinity name"; 2027 } 2028 description 2029 "List of named affinities"; 2030 } 2031 } 2032 description 2033 "List of named affinity constraints"; 2034 } 2035 } 2036 } 2037 } 2038 } 2040 grouping tunnel-path-srlgs { 2041 description 2042 "Path SRLG properties grouping"; 2043 container tunnel-path-srlgs { 2044 description 2045 "Path SRLG properties container"; 2046 choice style { 2047 description 2048 "Type of SRLG representation"; 2049 case values { 2050 leaf usage { 2051 type identityref { 2052 base route-exclude-srlg; 2053 } 2054 description "SRLG usage"; 2055 } 2056 leaf-list values { 2057 type te-types:srlg; 2058 description "SRLG value"; 2059 } 2060 } 2061 case named { 2062 list constraints { 2063 key "usage"; 2064 leaf usage { 2065 type identityref { 2066 base route-exclude-srlg; 2067 } 2068 description "SRLG usage"; 2069 } 2070 container constraint { 2071 description 2072 "Container for named SRLG list"; 2073 list srlg-names { 2074 key "name"; 2075 leaf name { 2076 type string; 2077 description 2078 "The SRLG name"; 2079 } 2080 description 2081 "List named SRLGs"; 2082 } 2083 } 2084 description 2085 "List of named SRLG constraints"; 2086 } 2087 } 2088 } 2089 } 2090 } 2092 grouping tunnel-bidir-assoc-properties { 2093 description 2094 "TE tunnel associated bidirectional properties 2095 grouping"; 2096 container bidirectional { 2097 description 2098 "TE tunnel associated bidirectional attributes."; 2099 container association { 2100 description 2101 "Tunnel bidirectional association properties"; 2102 leaf id { 2103 type uint16; 2104 description 2105 "The TE tunnel association identifier."; 2106 } 2107 leaf source { 2108 type inet:ip-address; 2109 description 2110 "The TE tunnel association source."; 2111 } 2112 leaf global-source { 2113 type inet:ip-address; 2114 description 2115 "The TE tunnel association global 2116 source."; 2117 } 2118 leaf type { 2119 type identityref { 2120 base bidir-association-type; 2121 } 2122 default bidir-assoc-non-corouted; 2123 description 2124 "The TE tunnel association type."; 2125 } 2126 leaf provisioing { 2127 type identityref { 2128 base bidir-provisioning-mode; 2129 } 2130 description 2131 "Describes the provisioning model of the 2132 associated bidirectional LSP"; 2133 reference 2134 "draft-ietf-teas-mpls-tp-rsvpte-ext- 2135 associated-lsp, section-3.2"; 2136 } 2137 } 2138 } 2139 } 2140 /*** End of TE tunnel groupings ***/ 2141 } 2143 2145 Figure 10: TE basic types YANG module 2147 file "ietf-te-psc-types@2015-10-16.yang" 2148 module ietf-te-psc-types { 2150 namespace "urn:ietf:params:xml:ns:yang:ietf-te-psc-types"; 2152 /* Replace with IANA when assigned */ 2153 prefix "te-psc-types"; 2155 import ietf-inet-types { prefix inet; } 2157 organization 2158 "IETF TEAS Working Group"; 2160 contact "Fill me"; 2162 description 2163 "This module contains a collection of generally 2164 useful TE specific YANG data type defintions."; 2166 revision 2015-10-16 { 2167 description "Latest revision of TE MPLS/packet types"; 2168 reference "RFC3209"; 2169 } 2171 /* Describes egress LSP label allocation */ 2172 typedef egress-label { 2173 type enumeration { 2174 enum "IPv4-EXPLICIT-NULL" { 2175 description 2176 "Use IPv4 explicit-NULL MPLS label at the 2177 egress"; 2178 } 2179 enum "IPv6-EXPLICIT-NULL" { 2180 description 2181 "Use IPv6 explicit-NULL MPLS label at the 2182 egress"; 2183 } 2184 enum "IMPLICIT-NULL" { 2185 description 2186 "Use implicit-NULL MPLS label at the egress"; 2187 } 2188 enum "NON-NULL"{ 2189 description 2190 "Use a non NULL MPLS label at the egress"; 2191 } 2192 } 2193 description 2194 "Describes egress label allocation"; 2195 } 2197 identity backup-type { 2198 description 2199 "Base identity for backup protection types"; 2200 } 2202 identity backup-facility { 2203 base backup-type; 2204 description 2205 "Use facility backup to protect LSPs traversing 2206 protected TE interface"; 2207 reference 2208 "RFC49090: RSVP-TE Fast Reroute"; 2209 } 2211 identity backup-detour { 2212 base backup-type; 2213 description 2214 "Use detour or 1-for-1 protection"; 2215 reference 2216 "RFC49090: RSVP-TE Fast Reroute"; 2217 } 2219 identity backup-protection-type { 2220 description 2221 "Base identity for backup protection type"; 2222 } 2224 identity backup-protection-link { 2225 base backup-protection-type; 2226 description 2227 "backup provides link protection only"; 2228 } 2230 identity backup-protection-node-link { 2231 base backup-protection-type; 2232 description 2233 "backup offers node (preferred) or link protection"; 2234 } 2236 identity bc-model-type { 2237 description 2238 "Base identity for Diffserv-TE bandwidth constraint 2239 model type"; 2240 } 2242 identity bc-model-rdm { 2243 base bc-model-type; 2244 description 2245 "Russian Doll bandwidth constraint model type."; 2246 } 2248 identity bc-model-mam { 2249 base bc-model-type; 2250 description 2251 "Maximum Allocation bandwidth constraint 2252 model type."; 2253 } 2255 identity bc-model-mar { 2256 base bc-model-type; 2257 description 2258 "Maximum Allocation with Reservation 2259 bandwidth constraint model type."; 2260 } 2261 grouping bandwidth-constraint-values { 2262 description 2263 "Packet bandwidth contraints values"; 2264 choice value-type { 2265 description 2266 "Value representation"; 2267 case percentages { 2268 container perc-values { 2269 uses bandwidth-psc-constraints; 2270 description 2271 "Percentage values"; 2272 } 2273 } 2274 case absolutes { 2275 container abs-values { 2276 uses bandwidth-psc-constraints; 2277 description 2278 "Absolute values"; 2279 } 2280 } 2281 } 2282 } 2284 grouping bandwidth-psc-reservable { 2285 description 2286 "Packet reservable bandwidth"; 2287 choice bandwidth-value { 2288 description "Reservable bandwidth configuraiton choice"; 2289 case absolute { 2290 leaf absolute-value { 2291 type uint32; 2292 description "Absolute value of the bandwidth"; 2293 } 2294 } 2295 case precentage { 2296 leaf percent-value { 2297 type uint32 { 2298 range "0..4294967295"; 2299 } 2300 description "Percentage reservable bandwidth"; 2301 } 2302 description 2303 "The maximum reservable bandwidth on the 2304 interface"; 2305 } 2306 } 2307 choice bc-model-type { 2308 description 2309 "Reservable bandwidth percentage capacity 2310 values."; 2311 case bc-model-rdm { 2312 container bc-model-rdm { 2313 description 2314 "Russian Doll Model Bandwidth Constraints."; 2315 uses bandwidth-psc-constraints; 2316 } 2317 } 2318 case bc-model-mam { 2319 container bc-model-mam { 2320 uses bandwidth-psc-constraints; 2321 description 2322 "Maximum Allocation Model Bandwidth 2323 Constraints."; 2324 } 2325 } 2326 case bc-model-mar { 2327 container bc-model-mar { 2328 uses bandwidth-psc-constraints; 2329 description 2330 "Maximum Allocation with Reservation Model 2331 Bandwidth Constraints."; 2332 } 2333 } 2334 } 2335 } 2337 typedef bfd-type { 2338 type enumeration { 2339 enum classical { 2340 description "BFD classical session type."; 2341 } 2342 enum seamless { 2343 description "BFD seamless session type."; 2344 } 2345 } 2346 default "classical"; 2347 description 2348 "Type of BFD session"; 2349 } 2351 typedef bfd-encap-mode-type { 2352 type enumeration { 2353 enum gal { 2354 description 2355 "BFD with GAL mode"; 2356 } 2357 enum ip { 2358 description 2359 "BFD with IP mode"; 2360 } 2361 } 2362 default ip; 2363 description 2364 "Possible BFD transport modes when running over TE 2365 LSPs."; 2366 } 2368 grouping bandwidth-psc-constraints { 2369 description "Bandwidth constraints."; 2370 container bandwidth-psc-constraints { 2371 description 2372 "Holds the bandwidth contraints properties"; 2373 leaf maximum-reservable { 2374 type uint32 { 2375 range "0..4294967295"; 2376 } 2377 description 2378 "The maximum reservable bandwidth on the 2379 interface"; 2380 } 2381 leaf-list bc-value { 2382 type uint32 { 2383 range "0..4294967295"; 2384 } 2385 max-elements 8; 2386 description 2387 "The bandwidth contraint type"; 2388 } 2389 } 2390 } 2392 grouping tunnel-forwarding-properties { 2393 description "Properties for using tunnel in forwarding."; 2394 container forwarding { 2395 description 2396 "Tunnel forwarding properties container"; 2397 leaf load-share { 2398 type uint32 { 2399 range "1..4294967295"; 2400 } 2401 description "ECMP tunnel forwarding 2402 load-share factor."; 2403 } 2404 choice policy-type { 2405 description 2406 "Tunnel policy type"; 2407 container class { 2408 description 2409 "Tunnel forwarding per class properties"; 2410 leaf class { 2411 type uint8 { 2412 range "1..7"; 2413 } 2414 description 2415 "The class associated with this tunnel"; 2416 } 2417 } 2418 container group { 2419 description 2420 "Tunnel frowarding per group properties"; 2421 leaf-list classes { 2422 type uint8 { 2423 range "1..7"; 2424 } 2425 description 2426 "The forwarding class"; 2427 } 2428 } 2429 } 2430 } 2431 } 2433 grouping tunnel-routing-properties { 2434 description 2435 "TE tunnel routing properties"; 2436 choice routing-choice { 2437 description 2438 "Announces the tunnel to IGP as either 2439 autoroute or forwarding adjacency."; 2440 case autoroute { 2441 container autoroute-announce { 2442 presence "Enable autoroute announce."; 2443 description 2444 "Announce the TE tunnel as autoroute to 2445 IGP for use as IGP shortcut."; 2446 leaf-list routing-afs { 2447 type inet:ip-version; 2448 description 2449 "Address families"; 2450 } 2451 choice metric-type { 2452 description 2453 "Type of metric to use when announcing 2454 the tunnel as shortcut"; 2455 leaf metric { 2456 type uint32 { 2457 range "1..2147483647"; 2458 } 2459 description 2460 "Describes the metric to use when 2461 announcing the tunnel as shortcut"; 2462 } 2463 leaf relative-metric { 2464 type int32 { 2465 range "-10..10"; 2466 } 2467 description 2468 "Relative TE metric to use when 2469 announcing the tunnel as shortcut"; 2470 } 2471 leaf absolute-metric { 2472 type uint32 { 2473 range "1..2147483647"; 2474 } 2475 description 2476 "Absolute TE metric to use when 2477 announcing the tunnel as shortcut"; 2478 } 2479 } 2480 } 2481 } 2482 case forwarding-adjacency { 2483 container forwarding-adjacency { 2484 presence "Enable forwarding adjacency 2485 on the tunnel."; 2486 description 2487 "Announce the TE tunnel 2488 as forwarding adjacency."; 2489 leaf holdtime { 2490 type uint32 { 2491 range "0..4294967295"; 2492 } 2493 description 2494 "Holdtime in seconds after 2495 tunnel becomes UP."; 2496 } 2497 leaf-list routing-afs { 2498 type inet:ip-version; 2499 description 2500 "Address families"; 2502 } 2503 } 2504 } 2505 } 2506 } 2507 } 2509 2511 Figure 11: TE packet/MPLS specific types YANG module 2513 file "ietf-te@2015-10-16.yang" 2515 module ietf-te { 2517 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 2519 /* Replace with IANA when assigned */ 2520 prefix "te"; 2522 /* Import TE generic types */ 2523 import ietf-te-types { 2524 prefix ietf-te-types; 2525 } 2527 /* Import TE packet specific types */ 2528 import ietf-te-psc-types { 2529 prefix ietf-te-psc-types; 2530 } 2532 import ietf-interfaces { 2533 prefix if; 2534 } 2536 import ietf-inet-types { 2537 prefix inet; 2538 } 2540 organization 2541 "IETF TEAS Working Group"; 2543 contact 2544 "Fill me"; 2546 description 2547 "YANG data module for TE configuration, 2548 state, RPC and notifications."; 2550 revision 2015-10-16 { 2551 description "Latest update to TE generic YANG module."; 2552 reference "TBD"; 2553 } 2555 /** 2556 * TE interface generic groupings 2557 */ 2558 grouping te-admin-groups_config { 2559 description 2560 "TE interface affinities grouping"; 2561 choice admin-group-type { 2562 description 2563 "TE interface administrative groups 2564 representation type"; 2565 case value-admin-groups { 2566 choice value-admin-group-type { 2567 description "choice of admin-groups"; 2568 case value-admin-groups { 2569 description 2570 "Administrative group/Resource 2571 class/Color."; 2572 leaf admin-group { 2573 type ietf-te-types:admin-group; 2574 description 2575 "TE interface administrative group"; 2576 } 2577 } 2578 case value-extended-admin-groups { 2579 if-feature ietf-te-types:extended-admin-groups; 2580 description 2581 "Extended administrative group/Resource 2582 class/Color."; 2583 leaf extended-admin-group { 2584 type ietf-te-types:extended-admin-group; 2585 description 2586 "TE interface extended administrativei 2587 group"; 2588 } 2589 } 2590 } 2591 } 2592 case named-admin-groups { 2593 list named-admin-groups { 2594 if-feature ietf-te-types:extended-admin-groups; 2595 if-feature ietf-te-types:named-extended-admin-groups; 2596 key named-admin-group; 2597 description 2598 "A list of named admin-group entries"; 2599 leaf named-admin-group { 2600 type leafref { 2601 path "../../../../../globals/config/" + 2602 "named-admin-groups/name"; 2603 } 2604 description 2605 "A named admin-group entry"; 2606 } 2607 } 2608 } 2609 } 2610 } 2612 /* TE interface SRLGs */ 2613 grouping te-srlgs_config { 2614 description "TE interface SRLG grouping"; 2615 choice srlg-type { 2616 description "Choice of SRLG configuration"; 2617 case value-srlgs { 2618 list values { 2619 key "value"; 2620 description "List of SRLG values that 2621 this link is part of."; 2622 leaf value { 2623 type uint32 { 2624 range "0..4294967295"; 2625 } 2626 description 2627 "Value of the SRLG"; 2628 } 2629 } 2630 } 2631 case named-srlgs { 2632 list named-srlgs { 2633 if-feature ietf-te-types:named-srlg-groups; 2634 key named-srlg; 2635 description 2636 "A list of named SRLG entries"; 2637 leaf named-srlg { 2638 type leafref { 2639 path "../../../../../globals/config/" + 2640 "named-srlgs/name"; 2641 } 2642 description 2643 "A named SRLG entry"; 2644 } 2645 } 2647 } 2648 } 2649 } 2651 /* TE interface flooding parameters */ 2652 grouping te-flooding-parameters_config { 2653 description "Interface TE flooding properties."; 2654 container thresholds { 2655 description "Flooding threshold values in percentages."; 2656 choice type { 2657 description 2658 "Describes the flooding threshold step method"; 2659 case equal-steps { 2660 choice equal-step-type { 2661 description 2662 "Describes whether up and down equal step 2663 size are same or different"; 2664 case up-down-different-step { 2665 leaf up-step { 2666 type uint8 { 2667 range "0..100"; 2668 } 2669 description 2670 "Set single percentage threshold 2671 for increasing resource 2672 allocation"; 2673 } 2674 leaf down-step { 2675 type uint8 { 2676 range "0..100"; 2677 } 2678 description 2679 "Set single percentage threshold 2680 for decreasing resource 2681 allocation"; 2682 } 2683 } 2684 case up-down-same-step { 2685 leaf step { 2686 type uint8 { 2687 range "0..100"; 2688 } 2689 description 2690 "Set single percentage threshold 2691 for increasing and decreasing 2692 resource allocation"; 2693 } 2694 } 2696 } 2697 } 2698 case unequal-steps { 2699 list up-steps { 2700 key "value"; 2701 description 2702 "Set nultuple percentage thresholds for 2703 increasing resource allocation"; 2704 leaf value { 2705 type uint8 { 2706 range "0..100"; 2707 } 2708 description 2709 "Percentage value"; 2710 } 2711 } 2712 list down-steps { 2713 key "value"; 2714 description 2715 "Set nultuple percentage thresholds for 2716 decreasing resource allocation"; 2717 leaf value { 2718 type uint8 { 2719 range "0..100"; 2720 } 2721 description 2722 "Percentage value"; 2723 } 2724 } 2725 } 2726 } 2727 } 2728 } 2730 /* TE interface metric */ 2731 grouping te-metric_config { 2732 description "Interface TE metric grouping"; 2733 leaf te-metric { 2734 type ietf-te-types:te-metric; 2735 description "Interface TE metric."; 2736 } 2737 } 2739 /* TE interface switching capabilities */ 2740 grouping te-switching-cap_config { 2741 description 2742 "TE interface switching capabilities"; 2743 list switching-capabilities { 2744 key "switching-capability"; 2745 description 2746 "List of interface capabilities for this interface"; 2747 leaf switching-capability { 2748 type identityref { 2749 base ietf-te-types:switching-capabilities; 2750 } 2751 description 2752 "Switching Capability for this interface"; 2753 } 2754 leaf encoding { 2755 type identityref { 2756 base ietf-te-types:lsp-encoding-types; 2757 } 2758 description 2759 "Encoding supported by this interface"; 2760 } 2761 } 2762 } 2764 grouping te-advertisements_state { 2765 description 2766 "TE interface advertisements state grouping"; 2767 container te-advertisements_state { 2768 description 2769 "TE interface advertisements state container"; 2770 leaf flood-interval { 2771 type uint32; 2772 description 2773 "The periodic flooding interval"; 2774 } 2775 leaf last-flooded-time { 2776 type uint32; 2777 units seconds; 2778 description 2779 "Time elapsed since last flooding in seconds"; 2780 } 2781 leaf next-flooded-time { 2782 type uint32; 2783 units seconds; 2784 description 2785 "Time remained for next flooding in seconds"; 2786 } 2787 leaf last-flooded-trigger { 2788 type enumeration { 2789 enum link-up { 2790 description "Link-up flooding trigger"; 2791 } 2792 enum link-down { 2793 description "Link-up flooding trigger"; 2794 } 2795 enum threshold-up { 2796 description 2797 "Bandwidth reservation up threshold"; 2798 } 2799 enum threshold-down { 2800 description 2801 "Bandwidth reservation down threshold"; 2802 } 2803 enum bandwidth-change { 2804 description "Banwidth capacity change"; 2805 } 2806 enum user-initiated { 2807 description "Initiated by user"; 2808 } 2809 enum srlg-change { 2810 description "SRLG property change"; 2811 } 2812 enum periodic-timer { 2813 description "Periodic timer expired"; 2814 } 2815 } 2816 description "Trigger for the last flood"; 2817 } 2818 list advertized-level-areas { 2819 key level-area; 2820 description 2821 "List of areas the TE interface is advertised 2822 in"; 2823 leaf level-area { 2824 type uint32; 2825 description 2826 "The IGP area or level where the TE 2827 interface state is advertised in"; 2828 } 2829 } 2830 } 2831 } 2833 /* TE interface attributes grouping */ 2834 grouping te-attributes { 2835 description "TE attributes configuration grouping"; 2836 container config { 2837 description 2838 "Configuration parameters for interface TE 2839 attributes"; 2841 uses te-metric_config; 2842 uses te-admin-groups_config; 2843 uses te-srlgs_config; 2844 uses te-switching-cap_config; 2845 uses te-flooding-parameters_config; 2846 } 2847 container state { 2848 config false; 2849 description 2850 "State parameters for interface TE metric"; 2851 uses te-metric_config; 2852 uses te-admin-groups_config; 2853 uses te-srlgs_config; 2854 uses te-switching-cap_config; 2855 uses te-flooding-parameters_config; 2856 uses te-advertisements_state; 2857 } 2858 } 2860 grouping te-all-attributes { 2861 description 2862 "TE attributes configuration grouping for all 2863 interfaces"; 2864 container config { 2865 description 2866 "Configuration parameters for all interface TE 2867 attributes"; 2868 uses te-flooding-parameters_config; 2869 } 2870 container state { 2871 config false; 2872 description 2873 "State parameters for all interface TE metric"; 2874 uses te-flooding-parameters_config; 2875 } 2876 } 2877 /*** End of TE interface groupings ***/ 2879 /** 2880 * TE tunnel generic groupings 2881 */ 2883 /* TE tunnel path configuration data */ 2884 grouping tunnel-path-params_config { 2885 description 2886 "Tunnel path properties grouping"; 2887 leaf path-named-constraint { 2888 if-feature ietf-te-types:named-path-constraints; 2889 type string; 2890 description 2891 "Reference to a globally defined named path 2892 constraint set"; 2893 } 2894 uses ietf-te-types:tunnel-path-selection; 2895 choice type { 2896 description 2897 "Describes the path type"; 2898 case dynamic { 2899 leaf dynamic { 2900 type empty; 2901 description 2902 "A CSPF dynamically computed path"; 2903 } 2904 } 2905 case explicit { 2906 leaf explicit-path-name { 2907 type string; 2908 description 2909 "The explicit-path name"; 2910 } 2911 } 2912 } 2913 leaf no-cspf { 2914 type empty; 2915 description 2916 "Indicates no CSPF is to be attempted on this 2917 path."; 2918 } 2919 leaf lockdown { 2920 type empty; 2921 description 2922 "Indicates no reoptimization to be attempted for 2923 this path."; 2924 } 2925 } 2927 /* TE tunne configuration data */ 2928 grouping tunnel-params_config { 2929 description 2930 "Configuration parameters relating to TE tunnel"; 2931 leaf description { 2932 type string; 2933 description 2934 "TE tunnel description."; 2935 } 2936 leaf admin-status { 2937 type identityref { 2938 base ietf-te-types:state-type; 2939 } 2940 default ietf-te-types:state-up; 2941 description "TE tunnel administrative state."; 2942 } 2943 uses ietf-te-psc-types:tunnel-routing-properties; 2944 uses ietf-te-psc-types:tunnel-forwarding-properties; 2945 uses ietf-te-types:tunnel-bidir-assoc-properties; 2946 choice path-type { 2947 description 2948 "Describes the path type"; 2949 case p2p { 2950 leaf destination { 2951 type inet:ip-address; 2952 description 2953 "P2P tunnel destination address"; 2954 } 2955 /* P2P list of path(s) */ 2956 list primary-paths { 2957 key "preference"; 2958 description 2959 "List of primary paths for this 2960 tunnel."; 2961 leaf preference { 2962 type uint8 { 2963 range "1..255"; 2964 } 2965 description 2966 "Specifies a preference for 2967 this path. The lower the 2968 number higher the 2969 preference"; 2970 } 2971 uses tunnel-path-params_config; 2972 list secondary-paths { 2973 key "preference"; 2974 description 2975 "List of secondary paths for this 2976 tunnel."; 2977 leaf preference { 2978 type uint8 { 2979 range "1..255"; 2980 } 2981 description 2982 "Specifies a preference for 2983 this path. The lower the 2984 number higher the 2985 preference"; 2986 } 2987 uses tunnel-path-params_config; 2988 } 2989 } 2990 } 2991 case p2mp { 2992 if-feature ietf-te-types:p2mp-te; 2993 list p2mp-paths { 2994 key "destination"; 2995 description 2996 "List of destinations and their 2997 paths."; 2998 leaf destination { 2999 type inet:ip-address; 3000 description 3001 "P2MP destination leaf address"; 3002 } 3003 list primary-paths { 3004 key "preference"; 3005 description 3006 "List of primary paths"; 3007 leaf preference { 3008 type uint8 { 3009 range "1..255"; 3010 } 3011 description 3012 "Specifies a preference for 3013 this path. The lower the 3014 number higher the 3015 preference"; 3016 } 3017 uses tunnel-path-params_config; 3018 list secondary-paths { 3019 key "preference"; 3020 description 3021 "List of secondary paths"; 3022 leaf preference { 3023 type uint8 { 3024 range "1..255"; 3025 } 3026 description 3027 "Specifies a preference 3028 for this path. The lower 3029 the number higher 3030 the preference"; 3031 } 3032 uses tunnel-path-params_config; 3034 } 3035 } 3036 } 3037 } 3038 } 3039 } 3041 grouping tunnel-params_state { 3042 description 3043 "State parameters relating to TE tunnel"; 3044 leaf oper-status { 3045 type identityref { 3046 base ietf-te-types:state-type; 3047 } 3048 description "TE tunnel operational state."; 3049 } 3050 list lsp { 3051 key "source destination tunnel-id lsp-id"; 3052 description "List of LSPs associated with the tunnel."; 3054 leaf source { 3055 type leafref { 3056 path "../../../../../lsps-state/lsp/source"; 3057 } 3058 description 3059 "Tunnel sender address extracted from 3060 SENDER_TEMPLATE object"; 3061 reference "RFC3209"; 3062 } 3063 leaf destination { 3064 type leafref { 3065 path "../../../../../lsps-state/lsp/destination"; 3066 } 3067 description 3068 "Tunnel endpoint address extracted from 3069 SESSION object"; 3070 reference "RFC3209"; 3071 } 3072 leaf tunnel-id { 3073 type leafref { 3074 path "../../../../../lsps-state/lsp/tunnel-id"; 3075 } 3076 description 3077 "Tunnel identifier used in the SESSION 3078 that remains constant over the life 3079 of the tunnel."; 3080 reference "RFC3209"; 3081 } 3082 leaf lsp-id { 3083 type leafref { 3084 path "../../../../../lsps-state/lsp/lsp-id"; 3085 } 3086 description 3087 "Identifier used in the SENDER_TEMPLATE 3088 and the FILTER_SPEC that can be changed 3089 to allow a sender to share resources with 3090 itself."; 3091 reference "RFC3209"; 3092 } 3093 leaf extended-tunnel-id { 3094 type leafref { 3095 path "../../../../../lsps-state/lsp/extended-tunnel-id"; 3096 } 3097 description 3098 "Extended Tunnel ID of the LSP."; 3099 reference "RFC3209"; 3100 } 3101 leaf type { 3102 type leafref { 3103 path "../../../../../lsps-state/lsp/type"; 3104 } 3105 description "LSP type P2P or P2MP"; 3106 } 3107 } 3108 } 3110 /* TE tunnel configuration/state grouping */ 3111 grouping tunnel-properties { 3112 description 3113 "Top level grouping for tunnel properties."; 3114 container config { 3115 description 3116 "Configuration parameters relating to 3117 tunnel properties"; 3118 uses tunnel-params_config; 3119 } 3120 container state { 3121 config false; 3122 description 3123 "State information associated with tunnel 3124 properties"; 3125 uses tunnel-params_config; 3126 uses tunnel-params_state; 3127 } 3128 } 3129 /*** End of TE tunnel groupings ***/ 3130 /** 3131 * LSP related generic groupings 3132 */ 3134 grouping lsp-properties_state { 3135 description 3136 "State parameters relating to LSP"; 3137 leaf oper-status { 3138 type identityref { 3139 base ietf-te-types:state-type; 3140 } 3141 description "LSP operational state."; 3142 } 3144 leaf origin-type { 3145 type enumeration { 3146 enum ingress { 3147 description 3148 "Origin ingress"; 3149 } 3150 enum egress { 3151 description 3152 "Origin egress"; 3153 } 3154 enum transit { 3155 description 3156 "transit"; 3157 } 3158 } 3159 description 3160 "Origin type of LSP relative to the location 3161 of the local switch in the path."; 3162 } 3164 leaf lsp-resource-status { 3165 type enumeration { 3166 enum primary { 3167 description 3168 "A primary LSP is a fully established LSP for 3169 which the resource allocation has been committed 3170 at the data plane"; 3171 } 3172 enum secondary { 3173 description 3174 "A secondary LSP is an LSP that has been provisioned 3175 in the control plane only; e.g. resource allocation 3176 has not been committed at the data plane"; 3177 } 3179 } 3180 description "LSP resource allocation type"; 3181 reference "rfc4872, section 4.2.1"; 3182 } 3184 leaf lsp-protection-status { 3185 type enumeration { 3186 enum working { 3187 description 3188 "A working LSP must be a primary LSP whilst a protecting 3189 LSP can be either a primary or a secondary LSP. Also, 3190 known as protected LSPs when working LSPs are associated 3191 with protecting LSPs."; 3192 } 3193 enum protecting { 3194 description 3195 "A secondary LSP is an LSP that has been provisioned 3196 in the control plane only; e.g. resource allocation 3197 has not been committed at the data plane"; 3198 } 3199 } 3200 description "LSP role type"; 3201 reference "rfc4872, section 4.2.1"; 3202 } 3204 leaf lsp-operational-status { 3205 type empty; 3206 description 3207 "This bit is set when a protecting LSP is carrying the normal 3208 traffic after protection switching"; 3209 } 3211 container lsp-timers { 3212 when "../origin-type = 'ingress'" { 3213 description "Applicable to ingress LSPs only"; 3214 } 3215 description "Ingress LSP timers"; 3216 leaf life-time { 3217 type uint32; 3218 units seconds; 3219 description 3220 "lsp life time"; 3221 } 3223 leaf time-to-install { 3224 type uint32; 3225 units seconds; 3226 description 3227 "lsp installation delay time"; 3228 } 3230 leaf time-to-die { 3231 type uint32; 3232 units seconds; 3233 description 3234 "lsp expire delay time"; 3235 } 3236 } 3238 container downstream-info { 3239 when "../../origin-type != 'egress'" { 3240 description "Applicable to ingress LSPs only"; 3241 } 3242 description 3243 "downstream information"; 3245 leaf nhop { 3246 type inet:ip-address; 3247 description 3248 "downstream nexthop."; 3249 } 3251 leaf neighbor { 3252 type inet:ip-address; 3253 description 3254 "downstream neighbor."; 3255 } 3257 leaf label { 3258 type uint32; 3259 description 3260 "downstream label."; 3261 } 3262 } 3264 container upstream-info { 3265 when "../../origin-type != 'ingress'" { 3266 description "Applicable to ingress LSPs only"; 3267 } 3268 description 3269 "upstream information"; 3271 leaf phop { 3272 type inet:ip-address; 3273 description 3274 "upstream nexthop or previous-hop."; 3276 } 3278 leaf neighbor { 3279 type inet:ip-address; 3280 description 3281 "upstream neighbor."; 3282 } 3284 leaf label { 3285 type uint32; 3286 description 3287 "upstream label."; 3288 } 3289 } 3290 } 3291 /*** End of TE LSP groupings ***/ 3293 /** 3294 * TE global generic groupings 3295 */ 3297 /* Global device specific configuration data */ 3298 grouping globals-device_config { 3299 description 3300 "Top level grouping for global config data."; 3301 leaf lsp-install-interval { 3302 type uint32; 3303 units seconds; 3304 description 3305 "lsp installation delay time"; 3306 } 3307 leaf lsp-cleanup-interval { 3308 type uint32; 3309 units seconds; 3310 description 3311 "lsp cleanup delay time"; 3312 } 3313 } 3315 /* Global device specific state data */ 3316 grouping globals-device_state { 3317 description 3318 "Top level grouping for global state data."; 3319 leaf tunnels-counter { 3320 type uint32; 3321 description "Tunnels count"; 3322 } 3323 leaf lsps-counter { 3324 type uint32; 3325 description "Tunnels count"; 3326 } 3327 } 3329 /* Global named admin-groups configuration data */ 3330 grouping named-admin-groups_config { 3331 description 3332 "Global named administrative groups configuration 3333 grouping"; 3334 list named-admin-groups { 3335 if-feature ietf-te-types:extended-admin-groups; 3336 if-feature ietf-te-types:named-extended-admin-groups; 3337 key "name"; 3338 description 3339 "List of named TE admin-groups"; 3340 leaf name { 3341 type string; 3342 description 3343 "A string name that uniquely identifies a TE 3344 interface named admin-group"; 3345 } 3346 leaf group { 3347 type ietf-te-types:admin-groups; 3348 description 3349 "An administrative group value"; 3350 } 3351 } 3352 } 3354 /* Global named admin-srlgs configuration data */ 3355 grouping named-srlgs_config { 3356 description 3357 "Global named SRLGs configuration 3358 grouping"; 3359 list named-srlgs { 3360 if-feature ietf-te-types:named-srlg-groups; 3361 key "name"; 3362 description 3363 "A list of named SRLG groups"; 3364 leaf name { 3365 type string; 3366 description 3367 "A string name that uniquely identifies a TE 3368 interface named srlg"; 3369 } 3370 leaf group { 3371 type ietf-te-types:srlg; 3372 description "An SRLG value"; 3373 } 3374 } 3375 } 3377 /* Global named explicit-paths configuration data */ 3378 grouping named-explicit-paths_config { 3379 description 3380 "Global explicit path configuration 3381 grouping"; 3382 list named-explicit-paths { 3383 key "name"; 3384 description 3385 "A list of explicit paths"; 3386 leaf name { 3387 type string; 3388 description 3389 "A string name that uniquely identifies an 3390 explicit path"; 3391 } 3392 list explicit-route-objects { 3393 key "index"; 3394 description 3395 "List of explicit route objects"; 3396 leaf index { 3397 type uint8 { 3398 range "0..255"; 3399 } 3400 description 3401 "Index of this explicit route object"; 3402 } 3403 uses ietf-te-types:explicit-route-subobject; 3404 leaf explicit-route-usage { 3405 type identityref { 3406 base ietf-te-types:route-usage-type; 3407 } 3408 description 3409 "An IP hop action."; 3410 } 3411 } 3412 } 3413 } 3415 /* Global named paths constraints configuration data */ 3416 grouping named-path-constraints_config { 3417 description 3418 "Global named path constraints configuration 3419 grouping"; 3421 list named-constraints { 3422 if-feature ietf-te-types:named-path-constraints; 3423 key "name"; 3424 description 3425 "A list of named path constraints"; 3426 leaf name { 3427 type string; 3428 description 3429 "A string name that uniquely identifies a 3430 path constraint set"; 3431 } 3432 uses ietf-te-types:tunnel-path-selection; 3433 } 3434 } 3436 /* TE globals container data */ 3437 grouping globals-grouping { 3438 description 3439 "Globals TE system-wide configuration data grouping"; 3440 container globals { 3441 description 3442 "Globals TE system-wide configuration data container"; 3443 container config { 3444 description 3445 "Configuration parameters for system-wide 3446 parameters"; 3447 uses named-admin-groups_config; 3448 uses named-srlgs_config; 3449 uses named-explicit-paths_config; 3450 uses named-path-constraints_config; 3451 } 3452 container state { 3453 config false; 3454 description 3455 "State for system-wide parameters"; 3456 uses named-admin-groups_config; 3457 uses named-srlgs_config; 3458 uses named-explicit-paths_config; 3459 uses named-path-constraints_config; 3460 } 3461 } 3462 } 3464 /* TE interface container data */ 3465 grouping interfaces-grouping { 3466 description 3467 "Interface TE configuration data grouping"; 3468 container interfaces { 3469 description 3470 "Configuration data model for TE interfaces."; 3471 uses te-all-attributes; 3472 list interface { 3473 key "interface"; 3474 description "TE interfaces."; 3475 leaf interface { 3476 type if:interface-ref; 3477 description 3478 "TE interface name."; 3479 } 3480 /* TE interface parameters */ 3481 uses te-attributes; 3482 } 3483 } 3484 } 3486 /* TE tunnels container data */ 3487 grouping tunnels-grouping { 3488 description 3489 "Tunnels TE configuration data grouping"; 3490 container tunnels { 3491 description 3492 "Tunnels TE configuration data container"; 3494 list tunnel { 3495 key "name type"; 3496 unique "identifier"; 3497 description "TE tunnel."; 3498 leaf name { 3499 type string; 3500 description "TE tunnel name."; 3501 } 3502 leaf type { 3503 type identityref { 3504 base ietf-te-types:tunnel-type; 3505 } 3506 description "TE tunnel type."; 3507 } 3508 leaf identifier { 3509 type uint16; 3510 description 3511 "TE tunnel Identifier."; 3512 } 3513 uses tunnel-properties; 3514 } 3515 } 3516 } 3517 /* TE LSPs ephemeral state container data */ 3518 grouping lsps-state-grouping { 3519 description 3520 "LSPs state operational data grouping"; 3521 container lsps-state { 3522 config "false"; 3523 description "LSPs operational state data."; 3525 list lsp { 3526 key 3527 "source destination tunnel-id lsp-id "+ 3528 "extended-tunnel-id type"; 3529 description 3530 "List of LSPs associated with the tunnel."; 3531 leaf source { 3532 type inet:ip-address; 3533 description 3534 "Tunnel sender address extracted from 3535 SENDER_TEMPLATE object"; 3536 reference "RFC3209"; 3537 } 3538 leaf destination { 3539 type inet:ip-address; 3540 description 3541 "Tunnel endpoint address extracted from 3542 SESSION object"; 3543 reference "RFC3209"; 3544 } 3545 leaf tunnel-id { 3546 type uint16; 3547 description 3548 "Tunnel identifier used in the SESSION 3549 that remains constant over the life 3550 of the tunnel."; 3551 reference "RFC3209"; 3552 } 3553 leaf lsp-id { 3554 type uint16; 3555 description 3556 "Identifier used in the SENDER_TEMPLATE 3557 and the FILTER_SPEC that can be changed 3558 to allow a sender to share resources with 3559 itself."; 3560 reference "RFC3209"; 3561 } 3562 leaf extended-tunnel-id { 3563 type inet:ip-address; 3564 description 3565 "Extended Tunnel ID of the LSP."; 3566 reference "RFC3209"; 3567 } 3568 leaf type { 3569 type identityref { 3570 base ietf-te-types:tunnel-type; 3571 } 3572 description "The LSP type P2P or P2MP"; 3573 } 3574 uses lsp-properties_state; 3575 } 3576 } 3577 } 3578 /*** End of TE global groupings ***/ 3580 /** 3581 * TE configurations container 3582 */ 3583 container te { 3584 presence "Enable TE feature."; 3585 description 3586 "TE global container."; 3588 /* TE Global Configuration Data */ 3589 uses globals-grouping; 3591 /* TE Interface Configuration Data */ 3592 uses interfaces-grouping; 3594 /* TE Tunnel Configuration Data */ 3595 uses tunnels-grouping; 3597 /* TE LSPs State Data */ 3598 uses lsps-state-grouping; 3599 } 3601 /* TE Global RPCs/execution Data */ 3602 rpc globals-rpc { 3603 description 3604 "Execution data for TE global."; 3605 } 3607 /* TE interfaces RPCs/execution Data */ 3608 rpc interfaces-rpc { 3609 description 3610 "Execution data for TE interfaces."; 3611 } 3612 /* TE Tunnel RPCs/execution Data */ 3613 rpc tunnels-rpc { 3614 description 3615 "TE tunnels RPC nodes"; 3616 } 3618 /** 3619 * Augmentations for TE device-specific parameters 3620 */ 3622 /* Globals augmentation */ 3623 augment "/te/globals/config" { 3624 description 3625 "Global TE device specific configuration parameters"; 3626 uses globals-device_config; 3627 } 3628 augment "/te/globals/state" { 3629 description 3630 "Global TE device specific state parameters"; 3631 uses globals-device_config; 3632 uses globals-device_state; 3633 } 3635 /* LSPs state augmentation */ 3636 augment "/te/lsps-state/lsp/downstream-info" { 3637 description 3638 "LSP device dependent downstream info augmentation"; 3639 leaf outgoing-interface { 3640 type if:interface-ref; 3641 description 3642 "downstream interface."; 3643 } 3644 } 3645 augment "/te/lsps-state/lsp/upstream-info" { 3646 description 3647 "LSP device dependent upstream info augmentation"; 3648 leaf incoming-interface { 3649 type if:interface-ref; 3650 description 3651 "upstream interface."; 3652 } 3653 } 3655 /* TE Global Notification Data */ 3656 notification globals-notif { 3657 description 3658 "Notification messages for Global TE."; 3660 } 3662 /* TE Interfaces Notification Data */ 3663 notification interfaces-notif { 3664 description 3665 "Notification messages for TE interfaces."; 3666 } 3668 /* TE Tunnel Notification Data */ 3669 notification tunnels-notif { 3670 description 3671 "Notification messages for TE tunnels."; 3672 } 3673 } 3675 3677 Figure 12: TE generic YANG module 3679 5. IANA Considerations 3681 This document registers the following URIs in the IETF XML registry 3682 [RFC3688]. Following the format in [RFC3688], the following 3683 registration is requested to be made. 3685 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 3686 is an XML namespace. 3688 URI: urn:ietf:params:xml:ns:yang:ietf-te-types XML: N/A, the 3689 requested URI is an XML namespace. 3691 URI: urn:ietf:params:xml:ns:yang:ietf-te-psc-types XML: N/A, the 3692 requested URI is an XML namespace. 3694 This document registers a YANG module in the YANG Module Names 3695 registry [RFC6020]. 3697 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 3698 ietf-te reference: RFC3209 3700 name: ietf-te-types namespace: urn:ietf:params:xml:ns:yang:ietf-te- 3701 types prefix: ietf-te-types reference: RFC3209 3703 name: ietf-te-psc-types namespace: urn:ietf:params:xml:ns:yang:ietf- 3704 te-psc-types prefix: ietf-te-psc-types reference: RFC3209 3706 6. Security Considerations 3708 The YANG module defined in this memo is designed to be accessed via 3709 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 3710 secure transport layer and the mandatory-to-implement secure 3711 transport is SSH [RFC6242]. The NETCONF access control model 3712 [RFC6536] provides means to restrict access for particular NETCONF 3714 users to a pre-configured subset of all available NETCONF protocol 3715 operations and content. 3717 There are a number of data nodes defined in the YANG module which are 3718 writable/creatable/deletable (i.e., config true, which is the 3719 default). These data nodes may be considered sensitive or vulnerable 3720 in some network environments. Write operations (e.g., ) 3721 to these data nodes without proper protection can have a negative 3722 effect on network operations. Following are the subtrees and data 3723 nodes and their sensitivity/vulnerability: 3725 "/te/globals": This module specifies the global TE configurations on 3726 a device. Unauthorized access to this container could cause the 3727 device to ignore packets it should receive and process. 3729 "/te/tunnels": This list specifies the configured TE tunnels on a 3730 device. Unauthorized access to this list could cause the device to 3731 ignore packets it should receive and process. 3733 "/te/interfaces": This list specifies the configured TE interfaces on 3734 a device. Unauthorized access to this list could cause the device to 3735 ignore packets it should receive and process. 3737 7. Acknowledgement 3739 The authors would like to thank Lou Berger for reviewing and 3740 providing valuable feedback on this document. 3742 8. References 3744 8.1. Normative References 3746 [I-D.ietf-netmod-routing-cfg] 3747 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3748 Management", draft-ietf-netmod-routing-cfg-20 (work in 3749 progress), October 2015. 3751 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3752 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 3753 RFC2119, March 1997, 3754 . 3756 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 3757 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 3758 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 3759 . 3761 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3762 DOI 10.17487/RFC3688, January 2004, 3763 . 3765 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 3766 the Network Configuration Protocol (NETCONF)", RFC 6020, 3767 DOI 10.17487/RFC6020, October 2010, 3768 . 3770 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 3771 and A. Bierman, Ed., "Network Configuration Protocol 3772 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 3773 . 3775 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3776 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 3777 . 3779 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 3780 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 3781 10.17487/RFC6536, March 2012, 3782 . 3784 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 3785 6991, DOI 10.17487/RFC6991, July 2013, 3786 . 3788 8.2. Informative References 3790 [I-D.openconfig-mpls-consolidated-model] 3791 George, J., Fang, L., eric.osborne@level3.com, e., and R. 3792 Shakir, "MPLS / TE Model for Service Provider Networks", 3793 draft-openconfig-mpls-consolidated-model-01 (work in 3794 progress), July 2015. 3796 [I-D.openconfig-netmod-opstate] 3797 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 3798 of Operational State Data in YANG", draft-openconfig- 3799 netmod-opstate-01 (work in progress), July 2015. 3801 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 3802 Switching (GMPLS) Signaling Resource ReserVation Protocol- 3803 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 3804 10.17487/RFC3473, January 2003, 3805 . 3807 [RFC4328] Papadimitriou, D., Ed., "Generalized Multi-Protocol Label 3808 Switching (GMPLS) Signaling Extensions for G.709 Optical 3809 Transport Networks Control", RFC 4328, DOI 10.17487/ 3810 RFC4328, January 2006, 3811 . 3813 Authors' Addresses 3815 Tarek Saad (editor) 3816 Cisco Systems Inc 3818 Email: tsaad@cisco.com 3820 Rakesh Gandhi 3821 Cisco Systems Inc 3823 Email: rgandhi@cisco.com 3825 Xufeng Liu 3826 Ericsson 3828 Email: xufeng.liu@ericsson.com 3830 Vishnu Pavan Beeram 3831 Juniper Networks 3833 Email: vbeeram@juniper.net 3835 Himanshu Shah 3836 Ciena 3838 Email: hshah@ciena.com 3839 Xia Chen 3840 Huawei Technologies 3842 Email: jescia.chenxia@huawei.com 3844 Raqib Jones 3845 Brocade 3847 Email: raqib@Brocade.com 3849 Bin Wen 3850 Comcast 3852 Email: Bin_Wen@cable.comcast.com