idnits 2.17.1 draft-saad-teas-yang-te-02.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 571 has weird spacing: '...rw name str...' == Line 582 has weird spacing: '...rw name str...' == Line 603 has weird spacing: '...ro name str...' == (29 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 (July 06, 2015) is 3210 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-19 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-02) exists of draft-openconfig-mpls-consolidated-model-00 == Outdated reference: A later version (-01) exists of draft-openconfig-netmod-opstate-00 Summary: 1 error (**), 0 flaws (~~), 11 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group T. Saad, Ed. 3 Internet-Draft R. Gandhi 4 Intended status: Standards Track Cisco Systems Inc 5 Expires: January 7, 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 July 06, 2015 19 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 20 draft-saad-teas-yang-te-02 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 January 7, 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 . . . . . . . . . . . . . . . . . . . 27 82 3.5. Global RPC Data . . . . . . . . . . . . . . . . . . . . . 28 83 3.6. Interface RPC Data . . . . . . . . . . . . . . . . . . . 28 84 3.7. Tunnel RPC Data . . . . . . . . . . . . . . . . . . . . . 29 85 3.8. Global Notifications Data . . . . . . . . . . . . . . . . 29 86 3.9. Interfaces Notifications Data . . . . . . . . . . . . . . 29 87 3.10. Tunnel Notification Data . . . . . . . . . . . . . . . . 29 88 4. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 30 89 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 80 90 6. Security Considerations . . . . . . . . . . . . . . . . . . . 81 91 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 81 92 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 82 93 8.1. Normative References . . . . . . . . . . . . . . . . . . 82 94 8.2. Informative References . . . . . . . . . . . . . . . . . 82 95 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 83 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, auto-tunnels, 381 etc.) 383 Data for the first two categories are contained under the respective 384 "state" sub-container of the intended object (e.g. tunnel). The last 385 category falls under a separate - e.g. lsps-state- container that 386 contains the attributes of a purely derived state data (e.g. 387 ephemeral objects) that are not associated with any configuration as 388 shown in Figure 3. 390 module: ietf-te 391 +--rw te! 392 +--rw globals 393 +-- rw config 394 <> 395 . 396 +-- ro state 397 <> 398 <> 399 . 400 . 401 +--rw interfaces 402 +-- rw config 403 <> 404 . 405 +-- ro state 406 <> 407 <> 408 . 409 . 410 +--rw tunnels 411 +-- rw config 412 <> 413 . 414 +-- ro state 415 <> 416 <> 417 . 418 . 419 +--ro tunnels-state 420 <> 421 rpcs: 422 +---x globals-rpc 423 +---x interfaces-rpc 424 +---x tunnels-rpc 425 notifications: 426 +---n globals-notif 427 +---n interfaces-notif 428 +---n tunnels-notif 430 Figure 3: TE highlevel model view 432 3.1. Global Configuration and State Data 434 This branch of the data model covers configurations that control TE 435 features behavior system-wide, and its respective state. Examples of 436 such configuration data are: 438 o Table of named SRLG mappings 440 o Table of named (extended) administrative groups mappings 442 o Table of named explicit paths to be referenced by TE tunnels 444 o Table of named path-constraints sets 446 o Auto-bandwidth global parameters 448 o TE diff-serve TE-class maps 450 o System-wide capabilities for LSP reoptimization 452 * Reoptimization timers (periodic interval, LSP installation and 453 cleanup) 455 o System-wide capabilities for TE state flooding 457 * Periodic flooding interval 459 o System-wide capabilities that affect the originating, traversing 460 and terminating LSPs. For example: 462 * Path selection parameters (e.g. metric) at head-end LSR 464 * Path protection parameters at head-end LSR 466 * (Soft) preemption parameters 468 * Fast reroute parameters 470 The approach described in [I-D.openconfig-netmod-opstate] is utilised 471 to include the global state data under the global "state" sub- 472 container as shown in Figure 3. 474 Examples of such states are: 476 o Global statistics (signaling, admission, preemption, flooding) 478 o Global counters (number of tunnels/LSPs/interfaces) 480 module: ietf-te 481 +--rw te! 482 +--rw globals 483 | +--rw config 484 | +--ro state 485 | | +--ro tunnels-counter? uint32 486 | | +--ro lsps-counter? uint32 487 | +--rw named-admin-groups 488 | | +--rw config 489 | | | +--rw named-admin-groups* [name] 490 | | | +--rw name string 491 | | | +--rw group? ietf-te-types:admin-groups 492 | | +--ro state 493 | | +--ro named-admin-groups* [name] 494 | | +--ro name string 495 | | +--ro group? ietf-te-types:admin-groups 496 | +--rw named-srlgs 497 | | +--rw config 498 | | | +--rw named-srlgs* [name] 499 | | | +--rw name string 500 | | | +--rw group? ietf-te-types:srlg 501 | | +--ro state 502 | | +--ro named-srlgs* [name] 503 | | +--ro name string 504 | | +--ro group? ietf-te-types:srlg 505 | +--rw named-explicit-paths 506 | | +--rw config 507 | | | +--rw named-explicit-paths* [name] 508 | | | +--rw name string 509 | | | +--rw explicit-route-objects* [index] 510 | | | +--rw index uint8 511 | | | +--rw (type)? 512 | | | | +--:(ipv4-address) 513 | | | | | +--rw v4-address? inet:ipv4-address 514 | | | | | +--rw v4-prefix-length?uint8 515 | | | | | +--rw v4-loose? boolean 516 | | | | +--:(ipv6-address) 517 | | | | | +--rw v6-address? inet:ipv6-address 518 | | | | | +--rw v6-prefix-length?uint8 519 | | | | | +--rw v6-loose? boolean 520 | | | | +--:(as-number) 521 | | | | | +--rw as-number? uint16 522 | | | | +--:(unnumbered-link) 523 | | | | | +--rw router-id? inet:ip-address 524 | | | | | +--rw interface-id? uint32 525 | | | | +--:(label) 526 | | | | +--rw value? uint32 527 | | | +--rw explicit-route-usage? identityref 528 | | +--ro state 529 | | +--ro named-explicit-paths* [name] 530 | | +--ro name string 531 | | +--ro explicit-route-objects* [index] 532 | | +--ro index uint8 533 | | +--ro (type)? 534 | | | +--:(ipv4-address) 535 | | | | +--ro v4-address? inet:ipv4-address 536 | | | | +--ro v4-prefix-length?uint8 537 | | | | +--ro v4-loose? boolean 538 | | | +--:(ipv6-address) 539 | | | | +--ro v6-address? inet:ipv6-address 540 | | | | +--ro v6-prefix-length?uint8 541 | | | | +--ro v6-loose? boolean 542 | | | +--:(as-number) 543 | | | | +--ro as-number? uint16 544 | | | +--:(unnumbered-link) 545 | | | | +--ro router-id? inet:ip-address 546 | | | | +--ro interface-id? uint32 547 | | | +--:(label) 548 | | | +--ro value? uint32 549 | | +--ro explicit-route-usage? identityref 550 | +--rw named-path-constraints 551 | +--rw config 552 | | +--rw named-path-constraints* [name] 553 | | +--rw name string 554 | | +--rw path-selection 555 | | +--rw topology? topology-id 556 | | +--rw cost-limit? uint32 557 | | +--rw hop-limit? uint8 558 | | +--rw metric-type? identityref 559 | | +--rw tiebreaker-type? identityref 560 | | +--rw ignore-overload? boolean 561 | | +--rw tunnel-path-affinities 562 | | | +--rw (style)? 563 | | | +--:(values) 564 | | | | +--rw value? uint32 565 | | | | +--rw mask? uint32 566 | | | +--:(named) 567 | | | +--rw constraints* [usage] 568 | | | +--rw usage identityref 569 | | | +--rw constraint 570 | | | +--rw affinity-names* [name] 571 | | | +--rw name string 572 | | +--rw tunnel-path-srlgs 573 | | +--rw (style)? 574 | | +--:(values) 575 | | | +--rw usage? identityref 576 | | | +--rw values* srlg 577 | | +--:(named) 578 | | +--rw constraints* [usage] 579 | | +--rw usage identityref 580 | | +--rw constraint 581 | | +--rw srlg-names* [name] 582 | | +--rw name string 583 | +--ro state 584 | +--ro named-path-constraints* [name] 585 | +--ro name string 586 | +--ro path-selection 587 | +--ro topology? topology-id 588 | +--ro cost-limit? uint32 589 | +--ro hop-limit? uint8 590 | +--ro metric-type? identityref 591 | +--ro tiebreaker-type? identityref 592 | +--ro ignore-overload? boolean 593 | +--ro tunnel-path-affinities 594 | | +--ro (style)? 595 | | +--:(values) 596 | | | +--ro value? uint32 597 | | | +--ro mask? uint32 598 | | +--:(named) 599 | | +--ro constraints* [usage] 600 | | +--ro usage identityref 601 | | +--ro constraint 602 | | +--ro affinity-names* [name] 603 | | +--ro name string 604 | +--ro tunnel-path-srlgs 605 | +--ro (style)? 606 | +--:(values) 607 | | +--ro usage? identityref 608 | | +--ro values* srlg 609 | +--:(named) 610 | +--ro constraints* [usage] 611 | +--ro usage identityref 612 | +--ro constraint 613 | +--ro srlg-names* [name] 614 | +--ro name string 616 Figure 4: TE globals configuration and state tree 618 3.2. Interfaces Configuration and State Data 620 This branch of the data model covers configurations elements that 621 control TE features behavior system-wide. Examples of such 622 configuration data are: 624 This branch of the data model covers configurations that control TE 625 features behavior system-wide, and its respective state. Examples of 626 such configuration data are: 628 This branch of the model covers configuration and state data items, 629 the corresponding applied state data, and possible derived state 630 pertaining to TE interfaces. Examples of tunnel configuration date 631 for TE interfaces are: 633 o Maximum reservable bandwidth, bandwidth constraints (BC) 635 o Flooding parameters 637 * Flooding intervals and threshold values 639 o Fast reroute backup tunnel properties (such as static, auto- 640 tunnel) 642 o interface attributes 644 * (Extended) administrative groups 646 * SRLG values 648 * TE metric value 650 module: ietf-te 651 +--rw te! 652 +--rw interfaces 653 | +--rw interface* [interface] 654 | +--rw interface if:interface-ref 655 | +--rw config 656 | | +--rw te-metric? ietf-te-types:te-metric 657 | +--ro state 658 | | +--ro te-metric? ietf-te-types:te-metric 659 | | +--ro interface-advertisements_state 660 | | +--ro flood-interval? uint32 661 | | +--ro last-flooded-time? uint32 662 | | +--ro next-flooded-time? uint32 663 | | +--ro last-flooded-trigger? enumeration 664 | | +--ro advertized-level-areas* [level-area] 665 | | +--ro level-area uint32 666 | +--rw te-admin-groups 667 | | +--rw config 668 | | | +--rw (admin-group-type)? 669 | | | +--:(value-admin-groups) 670 | | | | +--rw (value-admin-group-type)? 671 | | | | +--:(value-admin-groups) 672 | | | | | +--rw admin-group? 673 | | | | +--:(value-extended-admin-groups) 674 | | | | +--rw extended-admin-group? 675 | | | +--:(named-admin-groups) 676 | | | +--rw named-admin-groups* [named-admin-group] 677 | | | +--rw named-admin-group leafref 678 | | +--ro state 679 | | +--ro (admin-group-type)? 680 | | +--:(value-admin-groups) 681 | | | +--ro (value-admin-group-type)? 682 | | | +--:(value-admin-groups) 683 | | | | +--ro admin-group? 684 | | | +--:(value-extended-admin-groups) 685 | | | +--ro extended-admin-group? 686 | | +--:(named-admin-groups) 687 | | +--ro named-admin-groups* [named-admin-group] 688 | | +--ro named-admin-group leafref 689 | +--rw te-srlgs 690 | | +--rw config 691 | | | +--rw (srlg-type)? 692 | | | +--:(value-srlgs) 693 | | | | +--rw values* [value] 694 | | | | +--rw value uint32 695 | | | +--:(named-srlgs) 696 | | | +--rw named-srlgs* [named-srlg] 697 | | | +--rw named-srlg leafref 698 | | +--ro state 699 | | +--ro (srlg-type)? 700 | | +--:(value-srlgs) 701 | | | +--ro values* [value] 702 | | | +--ro value uint32 703 | | +--:(named-srlgs) 704 | | +--ro named-srlgs* [named-srlg] 705 | | +--ro named-srlg leafref 706 | +--rw te-switching-cap 707 | | +--rw config 708 | | | +--rw switching-capabilities* [switching-capability] 709 | | | +--rw switching-capability identityref 710 | | | +--rw encoding? identityref 711 | | +--ro state 712 | | +--ro switching-capabilities* [switching-capability] 713 | | +--ro switching-capability identityref 714 | | +--ro encoding? identityref 715 | +--rw te-flooding-parameters 716 | +--rw config 717 | | +--rw thresholds 718 | | +--rw (type)? 719 | | +--:(equal-steps) 720 | | | +--rw (equal-step-type)? 721 | | | +--:(up-down-different-step) 722 | | | | +--rw up-step? uint8 723 | | | | +--rw down-step? uint8 724 | | | +--:(up-down-same-step) 725 | | | +--rw step? uint8 726 | | +--:(unequal-steps) 727 | | +--rw up-steps* [value] 728 | | | +--rw value uint8 729 | | +--rw down-steps* [value] 730 | | +--rw value uint8 731 | +--ro state 732 | +--ro thresholds 733 | +--ro (type)? 734 | +--:(equal-steps) 735 | | +--ro (equal-step-type)? 736 | | +--:(up-down-different-step) 737 | | | +--ro up-step? uint8 738 | | | +--ro down-step? uint8 739 | | +--:(up-down-same-step) 740 | | +--ro step? uint8 741 | +--:(unequal-steps) 742 | +--ro up-steps* [value] 743 | | +--ro value uint8 744 | +--ro down-steps* [value] 745 | +--ro value uint8 747 Figure 5: TE interfaces configuration and state tree 749 The state corresponding to the TE interfaces applied configuration, 750 protocol derived state, and stats and counters all fall under the 751 interface attributes "state" sub-container as shown in Figure 6 752 below: 754 module: ietf-te 755 +--rw te! 756 +--rw interfaces 757 . 758 +-- rw te-attributes 759 +-- rw config 760 <> 761 . 762 +-- ro state 763 <> 764 <> 766 Figure 6: TE interface state 768 This covers state data for TE interfaces such as: 770 o Bandwidth information: maximum bandwidth, available bandwidth at 771 different priorities and for each class-type (CT) 773 o List of admitted LSPs 774 * Name, bandwidth value and pool, time, priority 776 o Statistics: state counters, flooding counters, admission counters 777 (accepted/rejected), preemption counters 779 o Adjacency information 781 * Neighbor address 783 * Metric value 785 3.3. Tunnels Configuration and State Data 787 This branch of the model covers intended, and corresponding applied 788 configuration for tunnels. As well, it holds possible derived state 789 pertaining to TE tunnels. 791 The approach described in [I-D.openconfig-netmod-opstate] is utilised 792 for the inclusion of operational and statistical data as shown in 793 Figure 7. 795 module: ietf-te 796 +--rw te! 797 +--rw tunnels 798 . 799 +-- rw tunnel-properties 800 +-- rw config 801 <> 802 . 803 +-- ro state 804 <> 805 <> 807 Figure 7: TE interface state tree 809 Examples of tunnel configuration date for TE tunnels: 811 o Name and type (e.g. P2P, P2MP) of tunnel 813 o Admin-state 815 o Primary and secondary paths 817 o Routing usage (auto-route announce, forwarding adjacency) 819 o Policy based routing (PBR) parameters 821 module: ietf-te 822 +--rw te! 823 +--rw tunnels 824 | +--rw tunnel* [name type] 825 | +--rw name string 826 | +--rw type identityref 827 | +--rw identifier? uint16 828 | +--rw config 829 | | +--rw description? string 830 | | +--rw admin-status? identityref 831 | | +--rw (routing-choice)? 832 | | | +--:(autoroute) 833 | | | | +--rw autoroute-announce! 834 | | | | +--rw routing-afs* inet:ip-version 835 | | | | +--rw (metric-type)? 836 | | | | +--:(metric) 837 | | | | | +--rw metric? uint32 838 | | | | +--:(relative-metric) 839 | | | | | +--rw relative-metric? int32 840 | | | | +--:(absolute-metric) 841 | | | | +--rw absolute-metric? uint32 842 | | | +--:(forwarding-adjacency) 843 | | | +--rw forwarding-adjacency! 844 | | | +--rw holdtime? uint32 845 | | | +--rw routing-afs* inet:ip-version 846 | | +--rw forwarding 847 | | | +--rw load-share? uint32 848 | | | +--rw (policy-type)? 849 | | | +--:(class) 850 | | | | +--rw class 851 | | | | +--rw class? uint8 852 | | | +--:(group) 853 | | | +--rw group 854 | | | +--rw classes* uint8 855 | | +--rw bidirectional 856 | | | +--rw association 857 | | | +--rw id? uint16 858 | | | +--rw source? inet:ip-address 859 | | | +--rw global-source? inet:ip-address 860 | | | +--rw type? identityref 861 | | | +--rw provisioing? identityref 862 | | +--rw (path-type)? 863 | | +--:(p2p) 864 | | | +--rw destination? inet:ip-address 865 | | | +--rw primary-paths* [preference] 866 | | | +--rw preference uint8 867 | | | +--rw tunnel-path-params 868 | | | | +--rw path-named-constraint? leafref 869 | | | | +--rw path-selection 870 | | | | | +--rw topology? topology-id 871 | | | | | +--rw cost-limit? uint32 872 | | | | | +--rw hop-limit? uint8 873 | | | | | +--rw metric-type? identityref 874 | | | | | +--rw tiebreaker-type? identityref 875 | | | | | +--rw ignore-overload? boolean 876 | | | | | +--rw tunnel-path-affinities 877 | | | | | | +--rw (style)? 878 | | | | | | +--:(values) 879 | | | | | | | +--rw value? uint32 880 | | | | | | | +--rw mask? uint32 881 | | | | | | +--:(named) 882 | | | | | | +--rw constraints* [usage] 883 | | | | | | +--rw usage identityref 884 | | | | | | +--rw constraint 885 | | | | | | +--rw affinity-names* [name] 886 | | | | | | +--rw name string 887 | | | | | +--rw tunnel-path-srlgs 888 | | | | | +--rw (style)? 889 | | | | | +--:(values) 890 | | | | | | +--rw usage? identityref 891 | | | | | | +--rw values* srlg 892 | | | | | +--:(named) 893 | | | | | +--rw constraints* [usage] 894 | | | | | +--rw usage identityref 895 | | | | | +--rw constraint 896 | | | | | +--rw srlg-names* [name] 897 | | | | | +--rw name string 898 | | | | +--rw (type)? 899 | | | | | +--:(dynamic) 900 | | | | | | +--rw dynamic? empty 901 | | | | | +--:(explicit) 902 | | | | | +--rw explicit-path-name? leafref 903 | | | | +--rw no-cspf? empty 904 | | | | +--rw lockdown? empty 905 | | | +--rw seondary-paths* [preference] 906 | | | +--rw preference uint8 907 | | | +--rw tunnel-path-params 908 | | | +--rw path-named-constraint? leafref 909 | | | +--rw path-selection 910 | | | | +--rw topology? topology-id 911 | | | | +--rw cost-limit? uint32 912 | | | | +--rw hop-limit? uint8 913 | | | | +--rw metric-type? identityref 914 | | | | +--rw tiebreaker-type? identityref 915 | | | | +--rw ignore-overload? boolean 916 | | | | +--rw tunnel-path-affinities 917 | | | | | +--rw (style)? 918 | | | | | +--:(values) 919 | | | | | | +--rw value? uint32 920 | | | | | | +--rw mask? uint32 921 | | | | | +--:(named) 922 | | | | | +--rw constraints* [usage] 923 | | | | | +--rw usage identityref 924 | | | | | +--rw constraint 925 | | | | | +--rw affinity-names*[name] 926 | | | | | +--rw name string 927 | | | | +--rw tunnel-path-srlgs 928 | | | | +--rw (style)? 929 | | | | +--:(values) 930 | | | | | +--rw usage? identityref 931 | | | | | +--rw values* srlg 932 | | | | +--:(named) 933 | | | | +--rw constraints* [usage] 934 | | | | +--rw usage identityref 935 | | | | +--rw constraint 936 | | | | +--rw srlg-names* [name] 937 | | | | +--rw name string 938 | | | +--rw (type)? 939 | | | | +--:(dynamic) 940 | | | | | +--rw dynamic? empty 941 | | | | +--:(explicit) 942 | | | | +--rw explicit-path-name? leafref 943 | | | +--rw no-cspf? empty 944 | | | +--rw lockdown? empty 945 | | +--:(p2mp) {ietf-te-types:p2mp-te}? 946 | | +--rw p2mp-paths* [destination] 947 | | +--rw destination inet:ip-address 948 | | +--rw primary-paths* [preference] 949 | | +--rw preference uint8 950 | | +--rw tunnel-path-params 951 | | | +--rw path-named-constraint? leafref 952 | | | +--rw path-selection 953 | | | | +--rw topology? topology-id 954 | | | | +--rw cost-limit? uint32 955 | | | | +--rw hop-limit? uint8 956 | | | | +--rw metric-type? identityref 957 | | | | +--rw tiebreaker-type? identityref 958 | | | | +--rw ignore-overload? boolean 959 | | | | +--rw tunnel-path-affinities 960 | | | | | +--rw (style)? 961 | | | | | +--:(values) 962 | | | | | | +--rw value? uint32 963 | | | | | | +--rw mask? uint32 964 | | | | | +--:(named) 965 | | | | | +--rw constraints* [usage] 966 | | | | | +--rw usage identityref 967 | | | | | +--rw constraint 968 | | | | | +--rw affinity-names* [name] 969 | | | | | +--rw name string 970 | | | | +--rw tunnel-path-srlgs 971 | | | | +--rw (style)? 972 | | | | +--:(values) 973 | | | | | +--rw usage? identityref 974 | | | | | +--rw values* srlg 975 | | | | +--:(named) 976 | | | | +--rw constraints* [usage] 977 | | | | +--rw usage identityref 978 | | | | +--rw constraint 979 | | | | +--rw srlg-names* [name] 980 | | | | +--rw name string 981 | | | +--rw (type)? 982 | | | | +--:(dynamic) 983 | | | | | +--rw dynamic? empty 984 | | | | +--:(explicit) 985 | | | | +--rw explicit-path-name? leafref 986 | | | +--rw no-cspf? empty 987 | | | +--rw lockdown? empty 988 | | +--rw seondary-paths* [preference] 989 | | +--rw preference uint8 990 | | +--rw tunnel-path-params 991 | | +--rw path-named-constraint? leafref 992 | | +--rw path-selection 993 | | | +--rw topology? topology-id 994 | | | +--rw cost-limit? uint32 995 | | | +--rw hop-limit? uint8 996 | | | +--rw metric-type? identityref 997 | | | +--rw tiebreaker-type? identityref 998 | | | +--rw ignore-overload? boolean 999 | | | +--rw tunnel-path-affinities 1000 | | | | +--rw (style)? 1001 | | | | +--:(values) 1002 | | | | | +--rw value? uint32 1003 | | | | | +--rw mask? uint32 1004 | | | | +--:(named) 1005 | | | | +--rw constraints* [usage] 1006 | | | | +--rw usage identityref 1007 | | | | +--rw constraint 1008 | | | | +--rw affinity-names*[name] 1009 | | | | +--rw name string 1010 | | | +--rw tunnel-path-srlgs 1011 | | | +--rw (style)? 1012 | | | +--:(values) 1013 | | | | +--rw usage? identityref 1014 | | | | +--rw values* srlg 1015 | | | +--:(named) 1016 | | | +--rw constraints* [usage] 1017 | | | +--rw usage identityref 1018 | | | +--rw constraint 1019 | | | +--rw srlg-names* 1020 | | | +--rw name string 1021 | | +--rw (type)? 1022 | | | +--:(dynamic) 1023 | | | | +--rw dynamic? empty 1024 | | | +--:(explicit) 1025 | | | +--rw explicit-path-name? leafref 1026 | | +--rw no-cspf? empty 1027 | | +--rw lockdown? empty 1028 | +--ro state 1029 | +--ro description? string 1030 | +--ro admin-status? identityref 1031 | +--ro (routing-choice)? 1032 | | +--:(autoroute) 1033 | | | +--ro autoroute-announce! 1034 | | | +--ro routing-afs* inet:ip-version 1035 | | | +--ro (metric-type)? 1036 | | | +--:(metric) 1037 | | | | +--ro metric? uint32 1038 | | | +--:(relative-metric) 1039 | | | | +--ro relative-metric? int32 1040 | | | +--:(absolute-metric) 1041 | | | +--ro absolute-metric? uint32 1042 | | +--:(forwarding-adjacency) 1043 | | +--ro forwarding-adjacency! 1044 | | +--ro holdtime? uint32 1045 | | +--ro routing-afs* inet:ip-version 1046 | +--ro forwarding 1047 | | +--ro load-share? uint32 1048 | | +--ro (policy-type)? 1049 | | +--:(class) 1050 | | | +--ro class 1051 | | | +--ro class? uint8 1052 | | +--:(group) 1053 | | +--ro group 1054 | | +--ro classes* uint8 1055 | +--ro bidirectional 1056 | | +--ro association 1057 | | +--ro id? uint16 1058 | | +--ro source? inet:ip-address 1059 | | +--ro global-source? inet:ip-address 1060 | | +--ro type? identityref 1061 | | +--ro provisioing? identityref 1062 | +--ro (path-type)? 1063 | | +--:(p2p) 1064 | | | +--ro destination? inet:ip-address 1065 | | | +--ro primary-paths* [preference] 1066 | | | +--ro preference uint8 1067 | | | +--ro tunnel-path-params 1068 | | | | +--ro path-named-constraint? leafref 1069 | | | | +--ro path-selection 1070 | | | | | +--ro topology? topology-id 1071 | | | | | +--ro cost-limit? uint32 1072 | | | | | +--ro hop-limit? uint8 1073 | | | | | +--ro metric-type? identityref 1074 | | | | | +--ro tiebreaker-type? identityref 1075 | | | | | +--ro ignore-overload? boolean 1076 | | | | | +--ro tunnel-path-affinities 1077 | | | | | | +--ro (style)? 1078 | | | | | | +--:(values) 1079 | | | | | | | +--ro value? uint32 1080 | | | | | | | +--ro mask? uint32 1081 | | | | | | +--:(named) 1082 | | | | | | +--ro constraints* [usage] 1083 | | | | | | +--ro usage identityref 1084 | | | | | | +--ro constraint 1085 | | | | | | +--ro affinity-names*[name] 1086 | | | | | | +--ro name string 1087 | | | | | +--ro tunnel-path-srlgs 1088 | | | | | +--ro (style)? 1089 | | | | | +--:(values) 1090 | | | | | | +--ro usage? identityref 1091 | | | | | | +--ro values* srlg 1092 | | | | | +--:(named) 1093 | | | | | +--ro constraints* [usage] 1094 | | | | | +--ro usage identityref 1095 | | | | | +--ro constraint 1096 | | | | | +--ro srlg-names* [name] 1097 | | | | | +--ro name string 1098 | | | | +--ro (type)? 1099 | | | | | +--:(dynamic) 1100 | | | | | | +--ro dynamic? empty 1101 | | | | | +--:(explicit) 1102 | | | | | +--ro explicit-path-name? leafref 1103 | | | | +--ro no-cspf? empty 1104 | | | | +--ro lockdown? empty 1105 | | | +--ro seondary-paths* [preference] 1106 | | | +--ro preference uint8 1107 | | | +--ro tunnel-path-params 1108 | | | +--ro path-named-constraint? leafref 1109 | | | +--ro path-selection 1110 | | | | +--ro topology? topology-id 1111 | | | | +--ro cost-limit? uint32 1112 | | | | +--ro hop-limit? uint8 1113 | | | | +--ro metric-type? identityref 1114 | | | | +--ro tiebreaker-type? identityref 1115 | | | | +--ro ignore-overload? boolean 1116 | | | | +--ro tunnel-path-affinities 1117 | | | | | +--ro (style)? 1118 | | | | | +--:(values) 1119 | | | | | | +--ro value? uint32 1120 | | | | | | +--ro mask? uint32 1121 | | | | | +--:(named) 1122 | | | | | +--ro constraints* [usage] 1123 | | | | | +--ro usage identityref 1124 | | | | | +--ro constraint 1125 | | | | | +--ro affinity-names* 1126 | | | | | +--ro name string 1127 | | | | +--ro tunnel-path-srlgs 1128 | | | | +--ro (style)? 1129 | | | | +--:(values) 1130 | | | | | +--ro usage? identityref 1131 | | | | | +--ro values* srlg 1132 | | | | +--:(named) 1133 | | | | +--ro constraints* [usage] 1134 | | | | +--ro usage identityref 1135 | | | | +--ro constraint 1136 | | | | +--ro srlg-names* [name] 1137 | | | | +--ro name string 1138 | | | +--ro (type)? 1139 | | | | +--:(dynamic) 1140 | | | | | +--ro dynamic? empty 1141 | | | | +--:(explicit) 1142 | | | | +--ro explicit-path-name? leafref 1143 | | | +--ro no-cspf? empty 1144 | | | +--ro lockdown? empty 1145 | | +--:(p2mp) {ietf-te-types:p2mp-te}? 1146 | | +--ro p2mp-paths* [destination] 1147 | | +--ro destination inet:ip-address 1148 | | +--ro primary-paths* [preference] 1149 | | +--ro preference uint8 1150 | | +--ro tunnel-path-params 1151 | | | +--ro path-named-constraint? leafref 1152 | | | +--ro path-selection 1153 | | | | +--ro topology? topology-id 1154 | | | | +--ro cost-limit? uint32 1155 | | | | +--ro hop-limit? uint8 1156 | | | | +--ro metric-type? identityref 1157 | | | | +--ro tiebreaker-type? identityref 1158 | | | | +--ro ignore-overload? boolean 1159 | | | | +--ro tunnel-path-affinities 1160 | | | | | +--ro (style)? 1161 | | | | | +--:(values) 1162 | | | | | | +--ro value? uint32 1163 | | | | | | +--ro mask? uint32 1164 | | | | | +--:(named) 1165 | | | | | +--ro constraints* [usage] 1166 | | | | | +--ro usage identityref 1167 | | | | | +--ro constraint 1168 | | | | | +--ro affinity-names* 1169 | | | | | +--ro name string 1170 | | | | +--ro tunnel-path-srlgs 1171 | | | | +--ro (style)? 1172 | | | | +--:(values) 1173 | | | | | +--ro usage? identityref 1174 | | | | | +--ro values* srlg 1175 | | | | +--:(named) 1176 | | | | +--ro constraints* [usage] 1177 | | | | +--ro usage identityref 1178 | | | | +--ro constraint 1179 | | | | +--ro srlg-names* [name] 1180 | | | | +--ro name string 1181 | | | +--ro (type)? 1182 | | | | +--:(dynamic) 1183 | | | | | +--ro dynamic? empty 1184 | | | | +--:(explicit) 1185 | | | | +--ro explicit-path-name? leafref 1186 | | | +--ro no-cspf? empty 1187 | | | +--ro lockdown? empty 1188 | | +--ro seondary-paths* [preference] 1189 | | +--ro preference uint8 1190 | | +--ro tunnel-path-params 1191 | | +--ro path-named-constraint? leafref 1192 | | +--ro path-selection 1193 | | | +--ro topology? topology-id 1194 | | | +--ro cost-limit? uint32 1195 | | | +--ro hop-limit? uint8 1196 | | | +--ro metric-type? identityref 1197 | | | +--ro tiebreaker-type? identityref 1198 | | | +--ro ignore-overload? boolean 1199 | | | +--ro tunnel-path-affinities 1200 | | | | +--ro (style)? 1201 | | | | +--:(values) 1202 | | | | | +--ro value? uint32 1203 | | | | | +--ro mask? uint32 1204 | | | | +--:(named) 1205 | | | | +--ro constraints* [usage] 1206 | | | | +--ro usage identityref 1207 | | | | +--ro constraint 1208 | | | | +--ro affinity-names* 1209 | | | | +--ro name string 1210 | | | +--ro tunnel-path-srlgs 1211 | | | +--ro (style)? 1212 | | | +--:(values) 1213 | | | | +--ro usage? identityref 1214 | | | | +--ro values* srlg 1215 | | | +--:(named) 1216 | | | +--ro constraints* [usage] 1217 | | | +--ro usage identityref 1218 | | | +--ro constraint 1219 | | | +--ro srlg-names* 1220 | | | +--ro name string 1221 | | +--ro (type)? 1222 | | | +--:(dynamic) 1223 | | | | +--ro dynamic? empty 1224 | | | +--:(explicit) 1225 | | | +--ro explicit-path-name? leafref 1226 | | +--ro no-cspf? empty 1227 | | +--ro lockdown? empty 1228 | +--ro oper-status? identityref 1229 | +--ro lsp* [source destination tunnel-id lsp-id] 1230 | +--ro source leafref 1231 | +--ro destination leafref 1232 | +--ro tunnel-id leafref 1233 | +--ro lsp-id leafref 1234 | +--ro extended-tunnel-id? leafref 1235 | +--ro type? leafref 1236 +--ro tunnels-state 1237 | +--ro tunnel* [name type] 1238 | +--ro name string 1239 | +--ro type identityref 1240 | +--ro identifier? uint16 1242 Figure 8: TE tunnels configuration and state tree 1244 3.4. TE LSPs State Data 1246 TE LSPs are derived state data that is usually instantiated via 1247 signaling protocols. TE LSPs exists on routers as ingress (starting 1248 point of LSP), transit (mid-point of LSP ), or egress (termination 1249 point of the LSP). TE LSPs are distinguished by the 5 tuple, and LSP 1250 type (P2P or P2MP) as shown in Figure 9. 1252 In the model, the nodes holding LSPs data exist in a read-only list 1253 as shown below: 1255 +--ro lsps-state 1256 +--ro lsp* [source destination tunnel-id lsp-id 1257 extended-tunnel-id type] 1258 +--ro source inet:ip-address 1259 +--ro destination inet:ip-address 1260 +--ro tunnel-id uint16 1261 +--ro lsp-id uint16 1262 +--ro extended-tunnel-id inet:ip-address 1263 +--ro type identityref 1264 +--ro oper-status? identityref 1265 +--ro origin-type? enumeration 1266 +--ro lsp-resource-status? enumeration 1267 +--ro lsp-protection-status? enumeration 1268 +--ro lsp-operational-status? empty 1269 +--ro lsp-timers 1270 | +--ro life-time? uint32 1271 | +--ro time-to-install? uint32 1272 | +--ro time-to-die? uint32 1273 +--ro downstream-info 1274 | +--ro nhop? inet:ip-address 1275 | +--ro outgoing-interface? if:interface-ref 1276 | +--ro neighbor? inet:ip-address 1277 | +--ro label? uint32 1278 +--ro upstream-info 1279 +--ro nhop? inet:ip-address 1280 +--ro incoming-interface? if:interface-ref 1281 +--ro neighbor? inet:ip-address 1282 +--ro label? uint32 1284 Figure 9: TE LSPs state tree 1286 3.5. Global RPC Data 1288 This branch of the model covers system-wide RPC execution data to 1289 trigger actions and optionally expect responses. Examples of such TE 1290 commands are to: 1292 o Clear global TE statistics of various features 1294 3.6. Interface RPC Data 1296 This collection of data in the model defines TE interface RPC 1297 execution commands. Examples of these are to: 1299 o Clear TE statistics for all or for individual TE interfaces 1301 o Trigger immediate flooding for one or all TE interfaces 1303 3.7. Tunnel RPC Data 1305 This branch of the model covers TE tunnel RPC execution data to 1306 trigger actions and optionally expect responses. Examples of such TE 1307 commands are: 1309 o Clear statistics for all or for individual tunnels 1311 3.8. Global Notifications Data 1313 This branch of the model covers system-wide notifications data. The 1314 node notifies the registered events to the server using the defined 1315 notification messages. Example of such global TE events are: 1317 o Backup tunnel FRR active and not-active state transition events 1319 3.9. Interfaces Notifications Data 1321 This branch of the model covers TE interfaces related notifications 1322 data. The TE interface configuration is used for specific events 1323 registration. Notifications are sent for registered events to the 1324 server. Example events for TE interfaces are: 1326 o Interface creation and deletion 1328 o Interface state transitions 1330 o (Soft) preemption triggers 1332 o Fast reroute activation 1334 3.10. Tunnel Notification Data 1336 This branch of the model covers TE tunnels related notifications 1337 data. The TE tunnels configuration is used for specific events 1338 registration. Notifications are sent for registered events to the 1339 server. Example events for TE tunnels are: 1341 o Tunnel creation and deletion events 1343 o Tunnel state up/down changes 1345 o Tunnel state reoptimization changes 1347 4. TE Generic and Helper YANG Modules 1349 file "ietf-te-types@2015-07-06.yang" 1350 module ietf-te-types { 1352 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; 1354 /* Replace with IANA when assigned */ 1355 prefix "te-types"; 1357 import ietf-inet-types { 1358 prefix inet; 1359 } 1361 organization 1362 "IETF TEAS Working Group"; 1364 contact "Fill me"; 1366 description 1367 "This module contains a collection of generally 1368 useful TE specific YANG data type defintions."; 1370 revision 2015-07-06 { 1371 description "Latest revision of TE basic types"; 1372 reference "RFC3209"; 1373 } 1375 identity tunnel-type { 1376 description 1377 "Base identity from which specific tunnel types are 1378 derived."; 1379 } 1381 identity tunnel-p2p { 1382 base tunnel-type; 1383 description 1384 "TE point-to-point tunnel type."; 1385 } 1387 identity tunnel-p2mp { 1388 base tunnel-type; 1389 description 1390 "TE point-to-multipoint tunnel type."; 1391 } 1393 identity state-type { 1394 description 1395 "Base identity for TE states"; 1396 } 1398 identity state-up { 1399 base state-type; 1400 description 1401 "State up"; 1402 } 1404 identity state-down { 1405 base state-type; 1406 description 1407 "State down"; 1408 } 1410 identity switching-capabilities { 1411 description 1412 "Base identity for interface switching capabilities"; 1413 } 1415 identity switching-psc1 { 1416 base switching-capabilities; 1417 description 1418 "Packet-Switch Capable-1 (PSC-1)"; 1419 } 1421 identity switching-evpl { 1422 base switching-capabilities; 1423 description 1424 "Ethernet Virtual Private Line (EVPL)"; 1425 } 1427 identity switching-l2sc { 1428 base switching-capabilities; 1429 description 1430 "Layer-2 Switch Capable (L2SC)"; 1431 } 1433 identity switching-tdm { 1434 base switching-capabilities; 1435 description 1436 "Time-Division-Multiplex Capable (TDM)"; 1437 } 1439 identity switching-otn { 1440 base switching-capabilities; 1441 description 1442 "OTN-TDM capable"; 1444 } 1446 identity switching-dcsc { 1447 base switching-capabilities; 1448 description 1449 "Data Channel Switching Capable (DCSC)"; 1450 } 1452 identity switching-lsc { 1453 base switching-capabilities; 1454 description 1455 "Lambda-Switch Capable (LSC)"; 1456 } 1458 identity switching-fsc { 1459 base switching-capabilities; 1460 description 1461 "Fiber-Switch Capable (FSC)"; 1462 } 1464 identity lsp-encoding-types { 1465 description 1466 "Base identity for encoding types"; 1467 } 1469 identity lsp-encoding-packet { 1470 base lsp-encoding-types; 1471 description 1472 "Packet LSP encoding"; 1473 } 1475 identity lsp-encoding-ethernet { 1476 base lsp-encoding-types; 1477 description 1478 "Ethernet LSP encoding"; 1479 } 1481 identity lsp-encoding-pdh { 1482 base lsp-encoding-types; 1483 description 1484 "ANSI/ETSI LSP encoding"; 1485 } 1487 identity lsp-encoding-sdh { 1488 base lsp-encoding-types; 1489 description 1490 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; 1491 } 1492 identity lsp-encoding-digital-wrapper { 1493 base lsp-encoding-types; 1494 description 1495 "Digital Wrapper LSP encoding"; 1496 } 1498 identity lsp-encoding-lambda { 1499 base lsp-encoding-types; 1500 description 1501 "Lambda (photonic) LSP encoding"; 1502 } 1504 identity lsp-encoding-fiber { 1505 base lsp-encoding-types; 1506 description 1507 "Fiber LSP encoding"; 1508 } 1510 identity lsp-encoding-fiber-channel { 1511 base lsp-encoding-types; 1512 description 1513 "FiberChannel LSP encoding"; 1514 } 1516 identity lsp-encoding-oduk { 1517 base lsp-encoding-types; 1518 description 1519 "G.709 ODUk (Digital Path)LSP encoding"; 1520 } 1522 identity lsp-encoding-optical-channel { 1523 base lsp-encoding-types; 1524 description 1525 "Line (e.g., 8B/10B) LSP encoding"; 1526 } 1528 identity lsp-encoding-line { 1529 base lsp-encoding-types; 1530 description 1531 "Line (e.g., 8B/10B) LSP encoding"; 1532 } 1534 /* TE basic features */ 1535 feature p2mp-te { 1536 description 1537 "Indicates support for P2MP-TE"; 1538 } 1539 feature frr-te { 1540 description 1541 "Indicates support for TE FastReroute (FRR)"; 1542 } 1544 feature extended-admin-groups { 1545 description 1546 "Indicates support for TE link extended admin 1547 groups."; 1548 } 1550 feature named-path-affinities { 1551 description 1552 "Indicates support for named path affinities"; 1553 } 1555 feature named-extended-admin-groups { 1556 description 1557 "Indicates support for named extended admin groups"; 1558 } 1560 feature named-srlg-groups { 1561 description 1562 "Indicates support for named SRLG groups"; 1563 } 1565 feature named-path-constraints { 1566 description 1567 "Indicates support for named path constraints"; 1568 } 1570 grouping explicit-route-subobject { 1571 description 1572 "The explicit route subobject grouping"; 1573 choice type { 1574 description 1575 "The explicit route subobject type"; 1576 case ipv4-address { 1577 description 1578 "IPv4 address explicit route subobject"; 1579 leaf v4-address { 1580 type inet:ipv4-address; 1581 description 1582 "An IPv4 address. This address is 1583 treated as a prefix based on the 1584 prefix length value below. Bits beyond 1585 the prefix are ignored on receipt and 1586 SHOULD be set to zero on transmission."; 1588 } 1589 leaf v4-prefix-length { 1590 type uint8; 1591 description 1592 "Length in bits of the IPv4 prefix"; 1593 } 1594 leaf v4-loose { 1595 type boolean; 1596 description 1597 "Describes whether the object is loose 1598 if set, or otherwise strict"; 1599 } 1600 } 1601 case ipv6-address { 1602 description 1603 "IPv6 address Explicit Route Object"; 1604 leaf v6-address { 1605 type inet:ipv6-address; 1606 description 1607 "An IPv6 address. This address is 1608 treated as a prefix based on the 1609 prefix length value below. Bits 1610 beyond the prefix are ignored on 1611 receipt and SHOULD be set to zero 1612 on transmission."; 1613 } 1614 leaf v6-prefix-length { 1615 type uint8; 1616 description 1617 "Length in bits of the IPv4 prefix"; 1618 } 1619 leaf v6-loose { 1620 type boolean; 1621 description 1622 "Describes whether the object is loose 1623 if set, or otherwise strict"; 1624 } 1625 } 1626 case as-number { 1627 leaf as-number { 1628 type uint16; 1629 description "AS number"; 1630 } 1631 description 1632 "Autonomous System explicit route subobject"; 1633 } 1634 case unnumbered-link { 1635 leaf router-id { 1636 type inet:ip-address; 1637 description 1638 "A router-id address"; 1639 } 1640 leaf interface-id { 1641 type uint32; 1642 description "The interface identifier"; 1643 } 1644 description 1645 "Unnumbered link explicit route subobject"; 1646 reference 1647 "RFC3477: Signalling Unnumbered Links in 1648 RSVP-TE"; 1649 } 1650 case label { 1651 leaf value { 1652 type uint32; 1653 description "the label value"; 1654 } 1655 description 1656 "The Label ERO subobject"; 1657 } 1658 /* AS domain sequence..? */ 1659 } 1660 } 1662 grouping record-route-subobject { 1663 description 1664 "The record route subobject grouping"; 1665 choice type { 1666 description 1667 "The record route subobject type"; 1668 case ipv4-address { 1669 leaf v4-address { 1670 type inet:ipv4-address; 1671 description 1672 "An IPv4 address. This address is 1673 treated as a prefix based on the prefix 1674 length value below. Bits beyond the 1675 prefix are ignored on receipt and 1676 SHOULD be set to zero on transmission."; 1677 } 1678 leaf v4-prefix-length { 1679 type uint8; 1680 description 1681 "Length in bits of the IPv4 prefix"; 1682 } 1683 leaf v4-flags { 1684 type uint8; 1685 description 1686 "IPv4 address sub-object flags"; 1687 reference "RFC3209"; 1688 } 1689 } 1690 case ipv6-address { 1691 leaf v6-address { 1692 type inet:ipv6-address; 1693 description 1694 "An IPv6 address. This address is 1695 treated as a prefix based on the 1696 prefix length value below. Bits 1697 beyond the prefix are ignored on 1698 receipt and SHOULD be set to zero 1699 on transmission."; 1700 } 1701 leaf v6-prefix-length { 1702 type uint8; 1703 description 1704 "Length in bits of the IPv4 prefix"; 1705 } 1706 leaf v6-flags { 1707 type uint8; 1708 description 1709 "IPv6 address sub-object flags"; 1710 reference "RFC3209"; 1711 } 1712 } 1713 case label { 1714 leaf value { 1715 type uint32; 1716 description "the label value"; 1717 } 1718 leaf flags { 1719 type uint8; 1720 description 1721 "Label sub-object flags"; 1722 reference "RFC3209"; 1723 } 1724 description 1725 "The Label ERO subobject"; 1726 } 1727 } 1728 } 1730 identity route-usage-type { 1731 description 1732 "Base identity for route usage"; 1733 } 1735 identity route-include-ero { 1736 base route-usage-type; 1737 description 1738 "Include ERO from route"; 1739 } 1741 identity route-exclude-ero { 1742 base route-usage-type; 1743 description 1744 "Exclude ERO from route"; 1745 } 1747 identity route-exclude-srlg { 1748 base route-usage-type; 1749 description 1750 "Exclude SRLG from route"; 1751 } 1753 identity path-metric-type { 1754 description 1755 "Base identity for path metric type"; 1756 } 1758 identity path-metric-te { 1759 base path-metric-type; 1760 description 1761 "TE path metric"; 1762 } 1764 identity path-metric-igp { 1765 base path-metric-type; 1766 description 1767 "IGP path metric"; 1768 } 1770 identity path-tiebreaker-type { 1771 description 1772 "Base identity for path tie-breaker type"; 1773 } 1775 identity path-tiebreaker-minfill { 1776 base path-tiebreaker-type; 1777 description 1778 "Min-Fill LSP path placement"; 1779 } 1780 identity path-tiebreaker-maxfill { 1781 base path-tiebreaker-type; 1782 description 1783 "Max-Fill LSP path placement"; 1784 } 1786 identity path-tiebreaker-randoom { 1787 base path-tiebreaker-type; 1788 description 1789 "Random LSP path placement"; 1790 } 1792 identity bidir-provisioning-mode { 1793 description 1794 "Base identity for bidirectional provisioning 1795 mode."; 1796 } 1798 identity bidir-provisioning-single-sided { 1799 base bidir-provisioning-mode; 1800 description 1801 "Single-sided bidirectional provioning mode"; 1802 } 1804 identity bidir-provisioning-double-sided { 1805 base bidir-provisioning-mode; 1806 description 1807 "Double-sided bidirectional provioning mode"; 1808 } 1810 identity bidir-association-type { 1811 description 1812 "Base identity for bidirectional association type"; 1813 } 1815 identity bidir-assoc-corouted { 1816 base bidir-association-type; 1817 description 1818 "Co-routed bidirectional association type"; 1819 } 1821 identity bidir-assoc-non-corouted { 1822 base bidir-association-type; 1823 description 1824 "Non co-routed bidirectional association type"; 1825 } 1827 identity resource-affinities-type { 1828 description 1829 "Base identity for resource affinities"; 1830 } 1832 identity resource-aff-include-all { 1833 base resource-affinities-type; 1834 description 1835 "The set of attribute filters associated with a 1836 tunnel all of which must be present for a link 1837 to be acceptable"; 1838 } 1840 identity resource-aff-include-any { 1841 base resource-affinities-type; 1842 description 1843 "The set of attribute filters associated with a 1844 tunnel any of which must be present for a link 1845 to be acceptable"; 1846 } 1848 identity resource-aff-exclude-any { 1849 base resource-affinities-type; 1850 description 1851 "The set of attribute filters associated with a 1852 tunnel any of which renders a link unacceptable"; 1853 } 1855 typedef admin-group { 1856 type binary { 1857 length 32; 1858 } 1859 description 1860 "Administrative group/Resource class/Color."; 1861 } 1863 typedef extended-admin-group { 1864 type binary; 1865 description 1866 "Extended administrative group/Resource class/Color."; 1867 } 1869 typedef admin-groups { 1870 type union { 1871 type admin-group; 1872 type extended-admin-group; 1873 } 1874 description "TE administrative group derived type"; 1875 } 1876 typedef srlg { 1877 type uint32; 1878 description "SRLG type"; 1879 } 1881 identity path-computation-srlg-type { 1882 description 1883 "Base identity for SRLG path computation"; 1884 } 1886 identity srlg-ignore { 1887 base path-computation-srlg-type; 1888 description 1889 "Ignores SRLGs in path computation"; 1890 } 1892 identity srlg-strict { 1893 base path-computation-srlg-type; 1894 description 1895 "Include strict SRLG check in path computation"; 1896 } 1898 identity srlg-preferred { 1899 base path-computation-srlg-type; 1900 description 1901 "Include preferred SRLG check in path computation"; 1902 } 1904 identity srlg-weighted { 1905 base path-computation-srlg-type; 1906 description 1907 "Include weighted SRLG check in path computation"; 1908 } 1910 typedef te-metric { 1911 type uint32; 1912 description 1913 "TE link metric"; 1914 } 1916 typedef topology-id { 1917 type string { 1918 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 1919 } 1920 description 1921 "An identifier for a topology."; 1922 } 1923 /** 1924 * TE tunnel generic groupings 1925 **/ 1927 /* Tunnel path selection parameters */ 1928 grouping tunnel-path-selection { 1929 description 1930 "Tunnel path selection properties grouping"; 1931 container path-selection { 1932 description 1933 "Tunnel path selection properties container"; 1934 leaf topology { 1935 type topology-id; 1936 description 1937 "The tunnel path is computed using the specific 1938 topology identified by this identifier"; 1939 } 1940 leaf cost-limit { 1941 type uint32 { 1942 range "1..4294967295"; 1943 } 1944 description 1945 "The tunnel path cost limit."; 1946 } 1947 leaf hop-limit { 1948 type uint8 { 1949 range "1..255"; 1950 } 1951 description 1952 "The tunnel path hop limit."; 1953 } 1954 leaf metric-type { 1955 type identityref { 1956 base path-metric-type; 1957 } 1958 default path-metric-te; 1959 description 1960 "The tunnel path metric type."; 1961 } 1962 leaf tiebreaker-type { 1963 type identityref { 1964 base path-tiebreaker-type; 1965 } 1966 default path-tiebreaker-maxfill; 1967 description 1968 "The tunnel path computation tie breakers."; 1969 } 1970 leaf ignore-overload { 1971 type boolean; 1972 description 1973 "The tunnel path can traverse overloaded node."; 1974 } 1975 uses tunnel-path-affinities; 1976 uses tunnel-path-srlgs; 1977 } 1978 } 1980 grouping tunnel-path-affinities { 1981 description 1982 "Path affinities grouping"; 1983 container tunnel-path-affinities { 1984 if-feature named-path-affinities; 1985 description 1986 "Path affinities container"; 1987 choice style { 1988 description 1989 "Path affinities representation style"; 1990 case values { 1991 leaf value { 1992 type uint32 { 1993 range "0..4294967295"; 1994 } 1995 description 1996 "Affinity value"; 1997 } 1998 leaf mask { 1999 type uint32 { 2000 range "0..4294967295"; 2001 } 2002 description 2003 "Affinity mask"; 2004 } 2005 } 2006 case named { 2007 list constraints { 2008 key "usage"; 2009 leaf usage { 2010 type identityref { 2011 base resource-affinities-type; 2012 } 2013 description "Affinities usage"; 2014 } 2015 container constraint { 2016 description 2017 "Container for named affinities"; 2018 list affinity-names { 2019 key "name"; 2020 leaf name { 2021 type string; 2022 description 2023 "Affinity name"; 2024 } 2025 description 2026 "List of named affinities"; 2027 } 2028 } 2029 description 2030 "List of named affinity constraints"; 2031 } 2032 } 2033 } 2034 } 2035 } 2037 grouping tunnel-path-srlgs { 2038 description 2039 "Path SRLG properties grouping"; 2040 container tunnel-path-srlgs { 2041 description 2042 "Path SRLG properties container"; 2043 choice style { 2044 description 2045 "Type of SRLG representation"; 2046 case values { 2047 leaf usage { 2048 type identityref { 2049 base route-exclude-srlg; 2050 } 2051 description "SRLG usage"; 2052 } 2053 leaf-list values { 2054 type srlg; 2055 description "SRLG value"; 2056 } 2057 } 2058 case named { 2059 list constraints { 2060 key "usage"; 2061 leaf usage { 2062 type identityref { 2063 base route-exclude-srlg; 2064 } 2065 description "SRLG usage"; 2066 } 2067 container constraint { 2068 description 2069 "Container for named SRLG list"; 2070 list srlg-names { 2071 key "name"; 2072 leaf name { 2073 type string; 2074 description 2075 "The SRLG name"; 2076 } 2077 description 2078 "List named SRLGs"; 2079 } 2080 } 2081 description 2082 "List of named SRLG constraints"; 2083 } 2084 } 2085 } 2086 } 2087 } 2089 grouping tunnel-bidir-assoc-properties { 2090 description 2091 "TE tunnel associated bidirectional properties 2092 grouping"; 2093 container bidirectional { 2094 description 2095 "TE tunnel associated bidirectional attributes."; 2096 container association { 2097 description 2098 "Tunnel bidirectional association properties"; 2099 leaf id { 2100 type uint16; 2101 description 2102 "The TE tunnel association identifier."; 2103 } 2104 leaf source { 2105 type inet:ip-address; 2106 description 2107 "The TE tunnel association source."; 2108 } 2109 leaf global-source { 2110 type inet:ip-address; 2111 description 2112 "The TE tunnel association global 2113 source."; 2114 } 2115 leaf type { 2116 type identityref { 2117 base bidir-association-type; 2118 } 2119 default bidir-assoc-non-corouted; 2120 description 2121 "The TE tunnel association type."; 2122 } 2123 leaf provisioing { 2124 type identityref { 2125 base bidir-provisioning-mode; 2126 } 2127 description 2128 "Describes the provisioning model of the 2129 associated bidirectional LSP"; 2130 reference 2131 "draft-ietf-teas-mpls-tp-rsvpte-ext- 2132 associated-lsp, section-3.2"; 2133 } 2134 } 2135 } 2136 } 2137 /*** End of TE tunnel groupings ***/ 2139 /** 2140 * TE interface generic groupings 2141 **/ 2143 /* TE interface flooding parameters */ 2144 grouping interface-te-flooding-parameters_config { 2145 description "Interface TE flooding properties."; 2146 container thresholds { 2147 description "Flooding threshold values in percentages."; 2148 choice type { 2149 description 2150 "Describes the flooding threshold step method"; 2151 case equal-steps { 2152 choice equal-step-type { 2153 description 2154 "Describes whether up and down equal step 2155 size are same or different"; 2156 case up-down-different-step { 2157 leaf up-step { 2158 type uint8 { 2159 range "0..100"; 2160 } 2161 description 2162 "Set single percentage threshold 2163 for increasing resource 2164 allocation"; 2165 } 2166 leaf down-step { 2167 type uint8 { 2168 range "0..100"; 2169 } 2170 description 2171 "Set single percentage threshold 2172 for decreasing resource 2173 allocation"; 2174 } 2175 } 2176 case up-down-same-step { 2177 leaf step { 2178 type uint8 { 2179 range "0..100"; 2180 } 2181 description 2182 "Set single percentage threshold 2183 for increasing and decreasing 2184 resource allocation"; 2185 } 2186 } 2187 } 2188 } 2189 case unequal-steps { 2190 list up-steps { 2191 key "value"; 2192 description 2193 "Set nultuple percentage thresholds for 2194 increasing resource allocation"; 2195 leaf value { 2196 type uint8 { 2197 range "0..100"; 2198 } 2199 description 2200 "Percentage value"; 2201 } 2202 } 2203 list down-steps { 2204 key "value"; 2205 description 2206 "Set nultuple percentage thresholds for 2207 decreasing resource allocation"; 2208 leaf value { 2209 type uint8 { 2210 range "0..100"; 2212 } 2213 description 2214 "Percentage value"; 2215 } 2216 } 2217 } 2218 } 2219 } 2220 } 2222 grouping interface-te-flooding-parameters { 2223 description "Interface TE flooding properties."; 2224 container te-flooding-parameters { 2225 description 2226 "Parameters for interface flooding"; 2227 container config { 2228 description 2229 "Configuration parameters for interface 2230 flooding"; 2231 uses interface-te-flooding-parameters_config; 2232 } 2233 container state { 2234 config false; 2235 description 2236 "State parameters for interface flooding"; 2237 uses interface-te-flooding-parameters_config; 2238 } 2239 } 2240 } 2241 } 2242 2244 Figure 10: TE basic types YANG module 2246 file "ietf-te-psc-types@2015-07-06.yang" 2247 module ietf-te-psc-types { 2249 namespace "urn:ietf:params:xml:ns:yang:ietf-te-psc-types"; 2251 /* Replace with IANA when assigned */ 2252 prefix "te-psc-types"; 2254 import ietf-inet-types { prefix inet; } 2256 organization 2257 "IETF TEAS Working Group"; 2259 contact "Fill me"; 2260 description 2261 "This module contains a collection of generally 2262 useful TE specific YANG data type defintions."; 2264 revision 2015-07-06 { 2265 description "Latest revision of TE MPLS/packet types"; 2266 reference "RFC3209"; 2267 } 2269 /* Describes egress LSP label allocation */ 2270 typedef egress-label { 2271 type enumeration { 2272 enum "IPv4-EXPLICIT-NULL" { 2273 description 2274 "Use IPv4 explicit-NULL MPLS label at the 2275 egress"; 2276 } 2277 enum "IPv6-EXPLICIT-NULL" { 2278 description 2279 "Use IPv6 explicit-NULL MPLS label at the 2280 egress"; 2281 } 2282 enum "IMPLICIT-NULL" { 2283 description 2284 "Use implicit-NULL MPLS label at the egress"; 2285 } 2286 enum "NON-NULL"{ 2287 description 2288 "Use a non NULL MPLS label at the egress"; 2289 } 2290 } 2291 description 2292 "Describes egress label allocation"; 2293 } 2295 identity backup-type { 2296 description 2297 "Base identity for backup protection types"; 2298 } 2300 identity backup-facility { 2301 base backup-type; 2302 description 2303 "Use facility backup to protect LSPs traversing 2304 protected TE interface"; 2305 reference 2306 "RFC49090: RSVP-TE Fast Reroute"; 2307 } 2308 identity backup-detour { 2309 base backup-type; 2310 description 2311 "Use detour or 1-for-1 protection"; 2312 reference 2313 "RFC49090: RSVP-TE Fast Reroute"; 2314 } 2316 identity backup-protection-type { 2317 description 2318 "Base identity for backup protection type"; 2319 } 2321 identity backup-protection-link { 2322 base backup-protection-type; 2323 description 2324 "backup provides link protection only"; 2325 } 2327 identity backup-protection-node-link { 2328 base backup-protection-type; 2329 description 2330 "backup offers node (preferred) or link protection"; 2331 } 2333 identity bc-model-type { 2334 description 2335 "Base identity for Diffserv-TE bandwidth constraint 2336 model type"; 2337 } 2339 identity bc-model-rdm { 2340 base bc-model-type; 2341 description 2342 "Russian Doll bandwidth constraint model type."; 2343 } 2345 identity bc-model-mam { 2346 base bc-model-type; 2347 description 2348 "Maximum Allocation bandwidth constraint 2349 model type."; 2350 } 2352 identity bc-model-mar { 2353 base bc-model-type; 2354 description 2355 "Maximum Allocation with Reservation 2356 bandwidth constraint model type."; 2357 } 2359 grouping bandwidth-constraint-values { 2360 description 2361 "Packet bandwidth contraints values"; 2362 choice value-type { 2363 description 2364 "Value representation"; 2365 case percentages { 2366 container perc-values { 2367 uses bandwidth-psc-constraints; 2368 description 2369 "Percentage values"; 2370 } 2371 } 2372 case absolutes { 2373 container abs-values { 2374 uses bandwidth-psc-constraints; 2375 description 2376 "Absolute values"; 2377 } 2378 } 2379 } 2380 } 2382 grouping bandwidth-psc-reservable { 2383 description 2384 "Packet reservable bandwidth"; 2385 choice bandwidth-value { 2386 description "Reservable bandwidth configuraiton choice"; 2387 case absolute { 2388 leaf absolute-value { 2389 type uint32; 2390 description "Absolute value of the bandwidth"; 2391 } 2392 } 2393 case precentage { 2394 leaf percent-value { 2395 type uint32 { 2396 range "0..4294967295"; 2397 } 2398 description "Percentage reservable bandwidth"; 2399 } 2400 description 2401 "The maximum reservable bandwidth on the 2402 interface"; 2403 } 2405 } 2406 choice bc-model-type { 2407 description 2408 "Reservable bandwidth percentage capacity 2409 values."; 2410 case bc-model-rdm { 2411 container bc-model-rdm { 2412 description 2413 "Russian Doll Model Bandwidth Constraints."; 2414 uses bandwidth-psc-constraints; 2415 } 2416 } 2417 case bc-model-mam { 2418 container bc-model-mam { 2419 uses bandwidth-psc-constraints; 2420 description 2421 "Maximum Allocation Model Bandwidth 2422 Constraints."; 2423 } 2424 } 2425 case bc-model-mar { 2426 container bc-model-mar { 2427 uses bandwidth-psc-constraints; 2428 description 2429 "Maximum Allocation with Reservation Model 2430 Bandwidth Constraints."; 2431 } 2432 } 2433 } 2434 } 2436 typedef bfd-type { 2437 type enumeration { 2438 enum classical { 2439 description "BFD classical session type."; 2440 } 2441 enum seamless { 2442 description "BFD seamless session type."; 2443 } 2444 } 2445 default "classical"; 2446 description 2447 "Type of BFD session"; 2448 } 2450 typedef bfd-encap-mode-type { 2451 type enumeration { 2452 enum gal { 2453 description 2454 "BFD with GAL mode"; 2455 } 2456 enum ip { 2457 description 2458 "BFD with IP mode"; 2459 } 2460 } 2461 default ip; 2462 description 2463 "Possible BFD transport modes when running over TE 2464 LSPs."; 2465 } 2467 grouping bandwidth-psc-constraints { 2468 description "Bandwidth constraints."; 2469 container bandwidth-psc-constraints { 2470 description 2471 "Holds the bandwidth contraints properties"; 2472 leaf maximum-reservable { 2473 type uint32 { 2474 range "0..4294967295"; 2475 } 2476 description 2477 "The maximum reservable bandwidth on the 2478 interface"; 2479 } 2480 leaf-list bc-value { 2481 type uint32 { 2482 range "0..4294967295"; 2483 } 2484 max-elements 8; 2485 description 2486 "The bandwidth contraint type"; 2487 } 2488 } 2489 } 2491 grouping tunnel-forwarding-properties { 2492 description "Properties for using tunnel in forwarding."; 2493 container forwarding { 2494 description 2495 "Tunnel forwarding properties container"; 2496 leaf load-share { 2497 type uint32 { 2498 range "1..4294967295"; 2499 } 2500 description "ECMP tunnel forwarding 2501 load-share factor."; 2502 } 2503 choice policy-type { 2504 description 2505 "Tunnel policy type"; 2506 container class { 2507 description 2508 "Tunnel forwarding per class properties"; 2509 leaf class { 2510 type uint8 { 2511 range "1..7"; 2512 } 2513 description 2514 "The class associated with this tunnel"; 2515 } 2516 } 2517 container group { 2518 description 2519 "Tunnel frowarding per group properties"; 2520 leaf-list classes { 2521 type uint8 { 2522 range "1..7"; 2523 } 2524 description 2525 "The forwarding class"; 2526 } 2527 } 2528 } 2529 } 2530 } 2532 grouping tunnel-routing-properties { 2533 description 2534 "TE tunnel routing properties"; 2535 choice routing-choice { 2536 description 2537 "Announces the tunnel to IGP as either 2538 autoroute or forwarding adjacency."; 2539 case autoroute { 2540 container autoroute-announce { 2541 presence "Enable autoroute announce."; 2542 description 2543 "Announce the TE tunnel as autoroute to 2544 IGP for use as IGP shortcut."; 2545 leaf-list routing-afs { 2546 type inet:ip-version; 2547 description 2548 "Address families"; 2550 } 2551 choice metric-type { 2552 description 2553 "Type of metric to use when announcing 2554 the tunnel as shortcut"; 2555 leaf metric { 2556 type uint32 { 2557 range "1..2147483647"; 2558 } 2559 description 2560 "Describes the metric to use when 2561 announcing the tunnel as shortcut"; 2562 } 2563 leaf relative-metric { 2564 type int32 { 2565 range "-10..10"; 2566 } 2567 description 2568 "Relative TE metric to use when 2569 announcing the tunnel as shortcut"; 2570 } 2571 leaf absolute-metric { 2572 type uint32 { 2573 range "1..2147483647"; 2574 } 2575 description 2576 "Absolute TE metric to use when 2577 announcing the tunnel as shortcut"; 2578 } 2579 } 2580 } 2581 } 2582 case forwarding-adjacency { 2583 container forwarding-adjacency { 2584 presence "Enable forwarding adjacency 2585 on the tunnel."; 2586 description 2587 "Announce the TE tunnel 2588 as forwarding adjacency."; 2589 leaf holdtime { 2590 type uint32 { 2591 range "0..4294967295"; 2592 } 2593 description 2594 "Holdtime in seconds after 2595 tunnel becomes UP."; 2596 } 2597 leaf-list routing-afs { 2598 type inet:ip-version; 2599 description 2600 "Address families"; 2601 } 2602 } 2603 } 2604 } 2605 } 2606 } 2607 2609 Figure 11: TE packet/MPLS specific types YANG module 2611 file "ietf-te@2015-07-06.yang" 2612 module ietf-te { 2614 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 2616 /* Replace with IANA when assigned */ 2617 prefix "te"; 2619 /* Import TE generic types */ 2620 import ietf-te-types { 2621 prefix ietf-te-types; 2622 } 2624 /* Import TE packet specific types */ 2625 import ietf-te-psc-types { 2626 prefix ietf-te-psc-types; 2627 } 2629 import ietf-interfaces { 2630 prefix if; 2631 } 2633 import ietf-inet-types { 2634 prefix inet; 2635 } 2637 organization 2638 "IETF TEAS Working Group"; 2640 contact 2641 "Fill me"; 2643 description 2644 "YANG data module for TE configuration, 2645 state, RPC and notifications."; 2647 revision 2015-07-06 { 2648 description "Latest update to TE generic YANG module."; 2649 reference "TBD"; 2650 } 2652 /** 2653 * TE interface generic groupings 2654 */ 2655 grouping te-admin-groups_config { 2656 description 2657 "TE interface affinities grouping"; 2658 choice admin-group-type { 2659 description 2660 "TE interface administrative groups 2661 representation type"; 2662 case value-admin-groups { 2663 choice value-admin-group-type { 2664 description "choice of admin-groups"; 2665 case value-admin-groups { 2666 description 2667 "Administrative group/Resource 2668 class/Color."; 2669 leaf admin-group { 2670 type ietf-te-types:admin-group; 2671 description 2672 "TE interface administrative group"; 2673 } 2674 } 2675 case value-extended-admin-groups { 2676 if-feature ietf-te-types:extended-admin-groups; 2677 description 2678 "Extended administrative group/Resource 2679 class/Color."; 2680 leaf extended-admin-group { 2681 type ietf-te-types:extended-admin-group; 2682 description 2683 "TE interface extended administrativei 2684 group"; 2685 } 2686 } 2687 } 2688 } 2689 case named-admin-groups { 2690 list named-admin-groups { 2691 if-feature ietf-te-types:extended-admin-groups; 2692 if-feature ietf-te-types:named-extended-admin-groups; 2693 key named-admin-group; 2694 description 2695 "A list of named admin-group entries"; 2696 leaf named-admin-group { 2697 type leafref { 2698 path "/te/globals/" + 2699 "named-admin-groups/config/"+ 2700 "named-admin-groups/name"; 2701 } 2702 description 2703 "A named admin-group entry"; 2704 } 2705 } 2706 } 2707 } 2708 } 2710 grouping te-admin-groups { 2711 description "TE admin-group configuration grouping"; 2712 container te-admin-groups { 2713 description 2714 "Configuration parameters for interface 2715 administrative groups"; 2716 container config { 2717 description 2718 "Configuration parameters for interface 2719 administrative groups"; 2720 uses te-admin-groups_config; 2721 } 2722 container state { 2723 config false; 2724 description 2725 "Configuration parameters for interface 2726 administrative groups"; 2727 uses te-admin-groups_config; 2728 } 2729 } 2730 } 2732 /* TE interface SRLGs */ 2733 grouping te-srlgs_config { 2734 description "TE interface SRLG grouping"; 2735 choice srlg-type { 2736 description "Choice of SRLG configuration"; 2737 case value-srlgs { 2738 list values { 2739 key "value"; 2740 description "List of SRLG values that 2741 this link is part of."; 2742 leaf value { 2743 type uint32 { 2744 range "0..4294967295"; 2745 } 2746 description 2747 "Value of the SRLG"; 2748 } 2749 } 2750 } 2751 case named-srlgs { 2752 list named-srlgs { 2753 if-feature ietf-te-types:named-srlg-groups; 2754 key named-srlg; 2755 description 2756 "A list of named SRLG entries"; 2757 leaf named-srlg { 2758 type leafref { 2759 path "/te:te/te:globals/" + 2760 "te:named-srlgs/te:config/te:named-srlgs/te:name"; 2761 } 2762 description 2763 "A named SRLG entry"; 2764 } 2765 } 2766 } 2767 } 2768 } 2770 grouping te-srlgs { 2771 description "TE SRLG configuration grouping"; 2772 container te-srlgs { 2773 description "TBD"; 2774 container config { 2775 description 2776 "Configuration parameters for interface SRLG 2777 groups"; 2778 uses te-srlgs_config; 2779 } 2780 container state { 2781 config false; 2782 description 2783 "State parameters for interface SRLG groups"; 2784 uses te-srlgs_config; 2785 } 2786 } 2787 } 2789 grouping te-metric_config { 2790 description "Interface TE metric grouping"; 2791 leaf te-metric { 2792 type ietf-te-types:te-metric; 2793 description "Interface TE metric."; 2794 } 2795 } 2797 grouping te-attributes { 2798 description "TE attributes configuration grouping"; 2799 container config { 2800 description 2801 "Configuration parameters for interface TE 2802 attributes"; 2803 uses te-metric_config; 2804 } 2805 container state { 2806 config false; 2807 description 2808 "State parameters for interface TE metric"; 2809 uses te-metric_config; 2810 uses interface-advertisements_state; 2811 } 2812 } 2814 /* TE interface switching capabilities */ 2815 grouping te-switching-cap_config { 2816 description 2817 "TE interface switching capabilities"; 2818 list switching-capabilities { 2819 key "switching-capability"; 2820 description 2821 "List of interface capabilities for this interface"; 2822 leaf switching-capability { 2823 type identityref { 2824 base ietf-te-types:switching-capabilities; 2825 } 2826 description 2827 "Switching Capability for this interface"; 2828 } 2829 leaf encoding { 2830 type identityref { 2831 base ietf-te-types:lsp-encoding-types; 2832 } 2833 description 2834 "Encoding supported by this interface"; 2835 } 2836 } 2837 } 2838 grouping te-switching-cap { 2839 description "TE interface switching capability grouping"; 2840 container te-switching-cap { 2841 description 2842 "Interface switching capabilities container"; 2843 container config { 2844 description 2845 "Configuration parameters for interface 2846 switching capabilities"; 2847 uses te-switching-cap_config; 2848 } 2849 container state { 2850 config false; 2851 description 2852 "State parameters for interface switching 2853 capabilities"; 2854 uses te-switching-cap_config; 2855 } 2856 } 2857 } 2859 grouping interface-advertisements_state { 2860 description 2861 "TE interface advertisements state grouping"; 2862 container interface-advertisements_state { 2863 description 2864 "TE interface advertisements state container"; 2865 leaf flood-interval { 2866 type uint32; 2867 description 2868 "The periodic flooding interval"; 2869 } 2870 leaf last-flooded-time { 2871 type uint32; 2872 units seconds; 2873 description 2874 "Time elapsed since last flooding in seconds"; 2875 } 2876 leaf next-flooded-time { 2877 type uint32; 2878 units seconds; 2879 description 2880 "Time remained for next flooding in seconds"; 2881 } 2882 leaf last-flooded-trigger { 2883 type enumeration { 2884 enum link-up { 2885 description "Link-up flooding trigger"; 2887 } 2888 enum link-down { 2889 description "Link-up flooding trigger"; 2890 } 2891 enum threshold-up { 2892 description 2893 "Bandwidth reservation up threshold"; 2894 } 2895 enum threshold-down { 2896 description 2897 "Bandwidth reservation down threshold"; 2898 } 2899 enum bandwidth-change { 2900 description "Banwidth capacity change"; 2901 } 2902 enum user-initiated { 2903 description "Initiated by user"; 2904 } 2905 enum srlg-change { 2906 description "SRLG property change"; 2907 } 2908 enum periodic-timer { 2909 description "Periodic timer expired"; 2910 } 2911 } 2912 description "Trigger for the last flood"; 2913 } 2914 list advertized-level-areas { 2915 key level-area; 2916 description 2917 "List of areas the TE interface is advertised 2918 in"; 2919 leaf level-area { 2920 type uint32; 2921 description 2922 "The IGP area or level where the TE 2923 interface state is advertised in"; 2924 } 2925 } 2926 } 2927 } 2928 /*** End of TE interface groupings ***/ 2930 /** 2931 * TE tunnel generic groupings 2932 */ 2934 /* TE tunnel path properties */ 2935 grouping tunnel-path-params { 2936 description 2937 "Tunnel path properties grouping"; 2938 container tunnel-path-params { 2939 description 2940 "Defines a TE tunnel path properties"; 2941 leaf path-named-constraint { 2942 if-feature ietf-te-types:named-path-constraints; 2943 type leafref { 2944 path "/te/globals/named-path-constraints/config/"+ 2945 "named-path-constraints/name"; 2946 } 2947 description 2948 "Reference to a globally defined named path 2949 constraint set"; 2950 } 2951 uses ietf-te-types:tunnel-path-selection; 2952 choice type { 2953 description 2954 "Describes the path type"; 2955 case dynamic { 2956 leaf dynamic { 2957 type empty; 2958 description 2959 "A CSPF dynamically computed path"; 2960 } 2961 } 2962 case explicit { 2963 leaf explicit-path-name { 2964 type leafref { 2965 path "/te/globals/named-explicit-paths/config/"+ 2966 "named-explicit-paths/name"; 2967 } 2968 description 2969 "Reference to a globally defined 2970 explicit-path"; 2971 } 2972 } 2973 } 2974 leaf no-cspf { 2975 type empty; 2976 description 2977 "Indicates no CSPF is to be attempted on this 2978 path."; 2979 } 2980 leaf lockdown { 2981 type empty; 2982 description 2983 "Indicates no reoptimization to be attempted for 2984 this path."; 2985 } 2986 } 2987 } 2989 grouping tunnel-properties_config { 2990 description 2991 "Configuration parameters relating to TE tunnel"; 2992 leaf description { 2993 type string; 2994 description 2995 "TE tunnel description."; 2996 } 2997 leaf admin-status { 2998 type identityref { 2999 base ietf-te-types:state-type; 3000 } 3001 default ietf-te-types:state-up; 3002 description "TE tunnel administrative state."; 3003 } 3004 uses ietf-te-psc-types:tunnel-routing-properties; 3005 uses ietf-te-psc-types:tunnel-forwarding-properties; 3006 uses ietf-te-types:tunnel-bidir-assoc-properties; 3007 choice path-type { 3008 description 3009 "Describes the path type"; 3010 case p2p { 3011 leaf destination { 3012 type inet:ip-address; 3013 description 3014 "P2P tunnel destination address"; 3015 } 3016 /* P2P list of path(s) */ 3017 list primary-paths { 3018 key "preference"; 3019 description 3020 "List of primary paths for this 3021 tunnel."; 3022 leaf preference { 3023 type uint8 { 3024 range "1..255"; 3025 } 3026 description 3027 "Specifies a preference for 3028 this path. The lower the 3029 number higher the 3030 preference"; 3032 } 3033 uses tunnel-path-params; 3034 list seondary-paths { 3035 key "preference"; 3036 description 3037 "List of secondary paths for this 3038 tunnel."; 3039 leaf preference { 3040 type uint8 { 3041 range "1..255"; 3042 } 3043 description 3044 "Specifies a preference for 3045 this path. The lower the 3046 number higher the 3047 preference"; 3048 } 3049 uses tunnel-path-params; 3050 } 3051 } 3052 } 3053 case p2mp { 3054 if-feature ietf-te-types:p2mp-te; 3055 list p2mp-paths { 3056 key "destination"; 3057 description 3058 "List of destinations and their 3059 paths."; 3060 leaf destination { 3061 type inet:ip-address; 3062 description 3063 "P2MP destination leaf address"; 3064 } 3065 list primary-paths { 3066 key "preference"; 3067 description 3068 "List of primary paths"; 3069 leaf preference { 3070 type uint8 { 3071 range "1..255"; 3072 } 3073 description 3074 "Specifies a preference for 3075 this path. The lower the 3076 number higher the 3077 preference"; 3078 } 3079 uses tunnel-path-params; 3080 list seondary-paths { 3081 key "preference"; 3082 description 3083 "List of secondary paths"; 3084 leaf preference { 3085 type uint8 { 3086 range "1..255"; 3087 } 3088 description 3089 "Specifies a preference 3090 for this path. The lower 3091 the number higher 3092 the preference"; 3093 } 3094 uses tunnel-path-params; 3095 } 3096 } 3097 } 3098 } 3099 } 3100 } 3102 grouping tunnel-properties { 3103 description 3104 "Top level grouping for tunnel properties."; 3105 container config { 3106 description 3107 "Configuration parameters relating to 3108 tunnel properties"; 3109 uses tunnel-properties_config; 3110 } 3111 container state { 3112 config false; 3113 description 3114 "State information associated with tunnel 3115 properties"; 3116 uses tunnel-properties_config; 3117 uses tunnel-properties_state; 3118 } 3119 } 3121 grouping tunnel-properties_state { 3122 description 3123 "State parameters relating to TE tunnel"; 3124 leaf oper-status { 3125 type identityref { 3126 base ietf-te-types:state-type; 3127 } 3128 description "TE tunnel operational state."; 3129 } 3130 list lsp { 3131 key "source destination tunnel-id lsp-id"; 3132 description "List of LSPs associated with the tunnel."; 3134 leaf source { 3135 type leafref { 3136 path "/te/lsps-state/lsp/source"; 3137 } 3138 description 3139 "Tunnel sender address extracted from 3140 SENDER_TEMPLATE object"; 3141 reference "RFC3209"; 3142 } 3143 leaf destination { 3144 type leafref { 3145 path "/te/lsps-state/lsp/destination"; 3146 } 3147 description 3148 "Tunnel endpoint address extracted from 3149 SESSION object"; 3150 reference "RFC3209"; 3151 } 3152 leaf tunnel-id { 3153 type leafref { 3154 path "/te/lsps-state/lsp/tunnel-id"; 3155 } 3156 description 3157 "Tunnel identifier used in the SESSION 3158 that remains constant over the life 3159 of the tunnel."; 3160 reference "RFC3209"; 3161 } 3162 leaf lsp-id { 3163 type leafref { 3164 path "/te/lsps-state/lsp/lsp-id"; 3165 } 3166 description 3167 "Identifier used in the SENDER_TEMPLATE 3168 and the FILTER_SPEC that can be changed 3169 to allow a sender to share resources with 3170 itself."; 3171 reference "RFC3209"; 3172 } 3173 leaf extended-tunnel-id { 3174 type leafref { 3175 path "/te/lsps-state/lsp/extended-tunnel-id"; 3177 } 3178 description 3179 "Extended Tunnel ID of the LSP."; 3180 reference "RFC3209"; 3181 } 3182 leaf type { 3183 type leafref { 3184 path "/te/lsps-state/lsp/type"; 3185 } 3186 description "LSP type P2P or P2MP"; 3187 } 3188 } 3189 } 3190 /*** End of TE tunnel groupings ***/ 3192 /** 3193 * LSP related generic groupings 3194 */ 3196 grouping lsp-properties_state { 3197 description 3198 "State parameters relating to LSP"; 3199 leaf oper-status { 3200 type identityref { 3201 base ietf-te-types:state-type; 3202 } 3203 description "LSP operational state."; 3204 } 3206 leaf origin-type { 3207 type enumeration { 3208 enum ingress { 3209 description 3210 "Origin ingress"; 3211 } 3212 enum egress { 3213 description 3214 "Origin egress"; 3215 } 3216 enum transit { 3217 description 3218 "transit"; 3219 } 3220 } 3221 description 3222 "Origin type of LSP relative to the location 3223 of the local switch in the path."; 3224 } 3225 leaf lsp-resource-status { 3226 type enumeration { 3227 enum primary { 3228 description 3229 "A primary LSP is a fully established LSP for 3230 which the resource allocation has been committed 3231 at the data plane"; 3232 } 3233 enum secondary { 3234 description 3235 "A secondary LSP is an LSP that has been provisioned 3236 in the control plane only; e.g. resource allocation 3237 has not been committed at the data plane"; 3238 } 3239 } 3240 description "LSP resource allocation type"; 3241 reference "rfc4872, section 4.2.1"; 3242 } 3244 leaf lsp-protection-status { 3245 type enumeration { 3246 enum working { 3247 description 3248 "A working LSP must be a primary LSP whilst a protecting 3249 LSP can be either a primary or a secondary LSP. Also, 3250 known as protected LSPs when working LSPs are associated 3251 with protecting LSPs."; 3252 } 3253 enum protecting { 3254 description 3255 "A secondary LSP is an LSP that has been provisioned 3256 in the control plane only; e.g. resource allocation 3257 has not been committed at the data plane"; 3258 } 3259 } 3260 description "LSP role type"; 3261 reference "rfc4872, section 4.2.1"; 3262 } 3264 leaf lsp-operational-status { 3265 type empty; 3266 description 3267 "This bit is set when a protecting LSP is carrying the normal 3268 traffic after protection switching"; 3269 } 3271 container lsp-timers { 3272 when "../origin-type = 'ingress'" { 3273 description "Applicable to ingress LSPs only"; 3274 } 3275 description "Ingress LSP timers"; 3276 leaf life-time { 3277 type uint32; 3278 units seconds; 3279 description 3280 "lsp life time"; 3281 } 3283 leaf time-to-install { 3284 type uint32; 3285 units seconds; 3286 description 3287 "lsp installation delay time"; 3288 } 3290 leaf time-to-die { 3291 type uint32; 3292 units seconds; 3293 description 3294 "lsp expire delay time"; 3295 } 3296 } 3298 container downstream-info { 3299 description 3300 "downstream information"; 3302 leaf nhop { 3303 type inet:ip-address; 3304 description 3305 "downstream nexthop."; 3306 } 3308 leaf outgoing-interface { 3309 type if:interface-ref; 3310 description 3311 "downstream interface."; 3312 } 3314 leaf neighbor { 3315 type inet:ip-address; 3316 description 3317 "downstream neighbor."; 3318 } 3320 leaf label { 3321 type uint32; 3322 description 3323 "downstream label."; 3324 } 3325 } 3327 container upstream-info { 3328 description 3329 "upstream information"; 3331 leaf nhop { // phop? 3332 type inet:ip-address; 3333 description 3334 "upstream nexthop."; 3335 } 3337 leaf incoming-interface { 3338 type if:interface-ref; 3339 description 3340 "upstream interface."; 3341 } 3343 leaf neighbor { 3344 type inet:ip-address; 3345 description 3346 "upstream neighbor."; 3347 } 3349 leaf label { 3350 type uint32; 3351 description 3352 "upstream label."; 3353 } 3354 } 3355 } 3356 /*** End of TE LSP groupings ***/ 3358 /** 3359 * TE global generic groupings 3360 */ 3362 grouping global-attributes_config { 3363 description 3364 "Top level grouping for global config data."; 3365 } 3367 grouping global-attributes_state { 3368 description 3369 "Top level grouping for global state data."; 3370 leaf tunnels-counter { 3371 type uint32; 3372 description "Tunnels count"; 3373 } 3374 leaf lsps-counter { 3375 type uint32; 3376 description "Tunnels count"; 3377 } 3378 } 3380 grouping global-attributes { 3381 description "TE Global attributes grouping"; 3382 container config { 3383 description 3384 "Global configuration parameters"; 3385 uses global-attributes_config; 3386 } 3387 container state { 3388 config false; 3389 description 3390 "Global configuration parameters"; 3391 uses global-attributes_config; 3392 uses global-attributes_state; 3393 } 3394 } 3396 grouping named-admin-groups_config { 3397 description 3398 "Global named administrative groups configuration 3399 grouping"; 3400 list named-admin-groups { 3401 if-feature ietf-te-types:extended-admin-groups; 3402 if-feature ietf-te-types:named-extended-admin-groups; 3403 key "name"; 3404 description 3405 "List of named TE admin-groups"; 3406 leaf name { 3407 type string; 3408 description 3409 "A string name that uniquely identifies a TE 3410 interface named admin-group"; 3411 } 3412 leaf group { 3413 type ietf-te-types:admin-groups; 3414 description 3415 "An SRLG value"; 3416 } 3418 } 3419 } 3421 grouping named-admin-groups { 3422 description 3423 "Named admin groups grouping"; 3424 container named-admin-groups { 3425 description 3426 "Named admin groups container"; 3427 container config { 3428 description 3429 "Configuration parameters for named admin 3430 groups"; 3431 uses named-admin-groups_config; 3432 } 3433 container state { 3434 config false; 3435 description 3436 "State parameters for named admin groups"; 3437 uses named-admin-groups_config; 3438 } 3439 } 3440 } 3442 grouping named-srlgs_config { 3443 description 3444 "Global named SRLGs configuration 3445 grouping"; 3446 list named-srlgs { 3447 if-feature ietf-te-types:named-srlg-groups; 3448 key "name"; 3449 description 3450 "A list of named SRLG groups"; 3451 leaf name { 3452 type string; 3453 description 3454 "A string name that uniquely identifies a TE 3455 interface named srlg"; 3456 } 3457 leaf group { 3458 type ietf-te-types:srlg; 3459 description "An SRLG value"; 3460 } 3461 } 3462 } 3464 grouping named-srlgs { 3465 description 3466 "Global named SRLGs grouping"; 3467 container named-srlgs { 3468 description 3469 "Named SRLGs container"; 3470 container config { 3471 description 3472 "Configuration parameters for named SRLG groups"; 3473 uses named-srlgs_config; 3474 } 3475 container state { 3476 config false; 3477 description 3478 "State parameters for named SRLG groups"; 3479 uses named-srlgs_config; 3480 } 3481 } 3482 } 3484 grouping named-explicit-paths_config { 3485 description 3486 "Global explicit path configuration 3487 grouping"; 3488 list named-explicit-paths { 3489 key "name"; 3490 description 3491 "A list of explicit paths"; 3492 leaf name { 3493 type string; 3494 description 3495 "A string name that uniquely identifies an 3496 explicit path"; 3497 } 3498 list explicit-route-objects { 3499 key "index"; 3500 description 3501 "List of explicit route objects"; 3502 leaf index { 3503 type uint8 { 3504 range "0..255"; 3505 } 3506 description 3507 "Index of this explicit route object"; 3508 } 3509 uses ietf-te-types:explicit-route-subobject; 3510 leaf explicit-route-usage { 3511 type identityref { 3512 base ietf-te-types:route-usage-type; 3513 } 3514 description 3515 "An IP hop action."; 3516 } 3517 } 3518 } 3519 } 3521 grouping named-explicit-paths { 3522 description 3523 "Global named explicit path grouping"; 3524 container named-explicit-paths { 3525 description 3526 "Nmaed explicit paths container"; 3527 container config { 3528 description 3529 "Configuration parameters for named explicit 3530 paths"; 3531 uses named-explicit-paths_config; 3532 } 3533 container state { 3534 config false; 3535 description 3536 "State parameters for named explicit paths"; 3537 uses named-explicit-paths_config; 3538 } 3539 } 3540 } 3542 grouping named-path-constraints_config { 3543 description 3544 "Global named path constraints configuration 3545 grouping"; 3546 list named-path-constraints { 3547 if-feature ietf-te-types:named-path-constraints; 3548 key "name"; 3549 description 3550 "A list of named path constraints"; 3551 leaf name { 3552 type string; 3553 description 3554 "A string name that uniquely identifies a 3555 path constraint set"; 3556 } 3557 uses ietf-te-types:tunnel-path-selection; 3558 } 3559 } 3561 grouping named-path-constraints { 3562 description 3563 "Global named path constraints grouping"; 3564 container named-path-constraints { 3565 description 3566 "Nmaed explicit paths container"; 3567 container config { 3568 description 3569 "Configuration parameters for named explicit 3570 paths"; 3571 uses named-path-constraints_config; 3572 } 3573 container state { 3574 config false; 3575 description 3576 "State parameters for named explicit paths"; 3577 uses named-path-constraints_config; 3578 } 3579 } 3580 } 3581 /*** End of TE global groupings ***/ 3583 /** 3584 * TE configurations container 3585 */ 3586 container te { 3587 presence "Enable TE feature."; 3588 description 3589 "TE global container."; 3591 /* TE Global Configuration Data */ 3592 container globals { 3593 description 3594 "Configuration data for Global System-wide 3595 Traffic Engineering."; 3596 uses global-attributes; 3597 uses named-admin-groups; 3598 uses named-srlgs; 3599 uses named-explicit-paths; 3600 uses named-path-constraints; 3601 } 3603 /* TE Interface Configuration Data */ 3604 container interfaces { 3605 description 3606 "Configuration data model for TE interfaces."; 3607 list interface { 3608 key "interface"; 3609 description "TE interfaces."; 3610 leaf interface { 3611 type if:interface-ref; 3612 description 3613 "TE interface name."; 3614 } 3615 /* TE interface parameters */ 3616 uses te-attributes; 3617 uses te-admin-groups; 3618 uses te-srlgs; 3619 uses te-switching-cap; 3620 /* TE interface flooding parameters */ 3621 uses ietf-te-types:interface-te-flooding-parameters; 3622 } 3623 } 3625 /* TE Tunnel Configuration Data */ 3626 container tunnels { 3627 description 3628 "Configuration, operational, notification and RPC 3629 data model for TE tunnels."; 3631 list tunnel { 3632 key "name type"; 3633 unique "identifier"; 3634 description "TE tunnel."; 3635 leaf name { 3636 type string; 3637 description "TE tunnel name."; 3638 } 3639 leaf type { 3640 type identityref { 3641 base ietf-te-types:tunnel-type; 3642 } 3643 description "TE tunnel type."; 3644 } 3645 leaf identifier { 3646 type uint16; 3647 description 3648 "TE tunnel Identifier."; 3649 } 3650 uses tunnel-properties; 3651 } 3652 } 3654 /* TE Tunnel Ephemeral State Data (TBD) */ 3655 container tunnels-state { 3656 config "false"; 3657 description 3658 "Derived state corresponding to ephemeral tunnels"; 3660 list tunnel { 3661 key "name type"; 3662 unique "identifier"; 3663 description "TE tunnel."; 3664 leaf name { 3665 type string; 3666 description "TE tunnel name."; 3667 } 3668 leaf type { 3669 type identityref { 3670 base ietf-te-types:tunnel-type; 3671 } 3672 description "TE tunnel type."; 3673 } 3674 leaf identifier { 3675 type uint16; 3676 description 3677 "TE tunnel Identifier."; 3678 } 3680 } 3681 } 3683 /* TE LSPs State Data */ 3684 container lsps-state { 3685 config "false"; 3686 description "MPLS-TE LSP operational state data."; 3688 list lsp { 3689 key 3690 "source destination tunnel-id lsp-id "+ 3691 "extended-tunnel-id type"; 3692 description 3693 "List of LSPs associated with the tunnel."; 3694 leaf source { 3695 type inet:ip-address; 3696 description 3697 "Tunnel sender address extracted from 3698 SENDER_TEMPLATE object"; 3699 reference "RFC3209"; 3700 } 3701 leaf destination { 3702 type inet:ip-address; 3703 description 3704 "Tunnel endpoint address extracted from 3705 SESSION object"; 3707 reference "RFC3209"; 3708 } 3709 leaf tunnel-id { 3710 type uint16; 3711 description 3712 "Tunnel identifier used in the SESSION 3713 that remains constant over the life 3714 of the tunnel."; 3715 reference "RFC3209"; 3716 } 3717 leaf lsp-id { 3718 type uint16; 3719 description 3720 "Identifier used in the SENDER_TEMPLATE 3721 and the FILTER_SPEC that can be changed 3722 to allow a sender to share resources with 3723 itself."; 3724 reference "RFC3209"; 3725 } 3726 leaf extended-tunnel-id { 3727 type inet:ip-address; 3728 description 3729 "Extended Tunnel ID of the LSP."; 3730 reference "RFC3209"; 3731 } 3732 leaf type { 3733 type identityref { 3734 base ietf-te-types:tunnel-type; 3735 } 3736 description "The LSP type P2P or P2MP"; 3737 } 3738 uses lsp-properties_state; 3739 } 3740 } 3741 } 3743 /* TE Global RPCs/execution Data */ 3744 rpc globals-rpc { 3745 description 3746 "Execution data for TE global."; 3747 } 3749 /* TE interfaces RPCs/execution Data */ 3750 rpc interfaces-rpc { 3751 description 3752 "Execution data for TE interfaces."; 3753 } 3754 /* TE Tunnel RPCs/execution Data */ 3755 rpc tunnels-rpc { 3756 description 3757 "TE tunnels RPC nodes"; 3758 } 3760 /* TE Global Notification Data */ 3761 notification globals-notif { 3762 description 3763 "Notification messages for Global TE."; 3764 } 3766 /* TE Interfaces Notification Data */ 3767 notification interfaces-notif { 3768 description 3769 "Notification messages for TE interfaces."; 3770 } 3772 /* TE Tunnel Notification Data */ 3773 notification tunnels-notif { 3774 description 3775 "Notification messages for TE tunnels."; 3776 } 3777 } 3778 3780 Figure 12: TE generic YANG module 3782 5. IANA Considerations 3784 This document registers the following URIs in the IETF XML registry 3785 [RFC3688]. Following the format in [RFC3688], the following 3786 registration is requested to be made. 3788 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 3789 is an XML namespace. 3791 URI: urn:ietf:params:xml:ns:yang:ietf-te-types XML: N/A, the 3792 requested URI is an XML namespace. 3794 URI: urn:ietf:params:xml:ns:yang:ietf-te-psc-types XML: N/A, the 3795 requested URI is an XML namespace. 3797 This document registers a YANG module in the YANG Module Names 3798 registry [RFC6020]. 3800 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 3801 ietf-te reference: RFC3209 3803 name: ietf-te-types namespace: urn:ietf:params:xml:ns:yang:ietf-te- 3804 types prefix: ietf-te-types reference: RFC3209 3806 name: ietf-te-psc-types namespace: urn:ietf:params:xml:ns:yang:ietf- 3807 te-psc-types prefix: ietf-te-psc-types reference: RFC3209 3809 6. Security Considerations 3811 The YANG module defined in this memo is designed to be accessed via 3812 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 3813 secure transport layer and the mandatory-to-implement secure 3814 transport is SSH [RFC6242]. The NETCONF access control model 3815 [RFC6536] provides means to restrict access for particular NETCONF 3817 users to a pre-configured subset of all available NETCONF protocol 3818 operations and content. 3820 There are a number of data nodes defined in the YANG module which are 3821 writable/creatable/deletable (i.e., config true, which is the 3822 default). These data nodes may be considered sensitive or vulnerable 3823 in some network environments. Write operations (e.g., ) 3824 to these data nodes without proper protection can have a negative 3825 effect on network operations. Following are the subtrees and data 3826 nodes and their sensitivity/vulnerability: 3828 "/te/globals": This module specifies the global TE configurations on 3829 a device. Unauthorized access to this container could cause the 3830 device to ignore packets it should receive and process. 3832 "/te/tunnels": This list specifies the configured TE tunnels on a 3833 device. Unauthorized access to this list could cause the device to 3834 ignore packets it should receive and process. 3836 "/te/interfaces": This list specifies the configured TE interfaces on 3837 a device. Unauthorized access to this list could cause the device to 3838 ignore packets it should receive and process. 3840 7. Acknowledgement 3842 The authors would like to thank Lou Berger for reviewing and 3843 providing valuable feedback on this document. 3845 8. References 3847 8.1. Normative References 3849 [I-D.ietf-netmod-routing-cfg] 3850 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 3851 Management", draft-ietf-netmod-routing-cfg-19 (work in 3852 progress), May 2015. 3854 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 3855 Requirement Levels", BCP 14, RFC 2119, March 1997. 3857 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 3858 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 3859 Tunnels", RFC 3209, December 2001. 3861 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 3862 January 2004. 3864 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 3865 Network Configuration Protocol (NETCONF)", RFC 6020, 3866 October 2010. 3868 [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 3869 Bierman, "Network Configuration Protocol (NETCONF)", RFC 3870 6241, June 2011. 3872 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 3873 Shell (SSH)", RFC 6242, June 2011. 3875 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 3876 Protocol (NETCONF) Access Control Model", RFC 6536, March 3877 2012. 3879 [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, 3880 July 2013. 3882 8.2. Informative References 3884 [I-D.openconfig-mpls-consolidated-model] 3885 George, J., Fang, L., eric.osborne@level3.com, e., and R. 3886 Shakir, "MPLS / TE Model for Service Provider Networks", 3887 draft-openconfig-mpls-consolidated-model-00 (work in 3888 progress), March 2015. 3890 [I-D.openconfig-netmod-opstate] 3891 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 3892 of Operational State Data in YANG", draft-openconfig- 3893 netmod-opstate-00 (work in progress), March 2015. 3895 [RFC3473] Berger, L., "Generalized Multi-Protocol Label Switching 3896 (GMPLS) Signaling Resource ReserVation Protocol-Traffic 3897 Engineering (RSVP-TE) Extensions", RFC 3473, January 2003. 3899 [RFC4328] Papadimitriou, D., "Generalized Multi-Protocol Label 3900 Switching (GMPLS) Signaling Extensions for G.709 Optical 3901 Transport Networks Control", RFC 4328, January 2006. 3903 Authors' Addresses 3905 Tarek Saad (editor) 3906 Cisco Systems Inc 3908 Email: tsaad@cisco.com 3910 Rakesh Gandhi 3911 Cisco Systems Inc 3913 Email: rgandhi@cisco.com 3915 Xufeng Liu 3916 Ericsson 3918 Email: xufeng.liu@ericsson.com 3920 Vishnu Pavan Beeram 3921 Juniper Networks 3923 Email: vbeeram@juniper.net 3925 Himanshu Shah 3926 Ciena 3928 Email: hshah@ciena.com 3929 Xia Chen 3930 Huawei Technologies 3932 Email: jescia.chenxia@huawei.com 3934 Raqib Jones 3935 Brocade 3937 Email: raqib@Brocade.com 3939 Bin Wen 3940 Comcast 3942 Email: Bin_Wen@cable.comcast.com