idnits 2.17.1 draft-ietf-teas-yang-te-03.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 142 has weird spacing: '... rw for r...' == Line 143 has weird spacing: '... ro for r...' == Line 547 has weird spacing: '...rw name str...' == Line 558 has weird spacing: '...rw name str...' == Line 610 has weird spacing: '...ro name str...' == (23 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 (March 20, 2016) is 2957 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-21 == Outdated reference: A later version (-19) exists of draft-ietf-teas-yang-rsvp-01 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-06) exists of draft-clemm-netmod-mount-03 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: September 21, 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 March 20, 2016 19 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 20 draft-ietf-teas-yang-te-03 22 Abstract 24 This document defines a YANG data model for the configuration and 25 management of Traffic Engineering (TE) interfaces, tunnels and Label 26 Switched Paths (LSPs). The model is divided into YANG modules that 27 classify data into generic, device-specific, technology agnostic, and 28 technology-specific elements. The model also includes module(s) that 29 contain reusable TE data types and data groupings. 31 This model covers the configuration, operational state, remote 32 procedural calls, and event notifications data. 34 Status of This Memo 36 This Internet-Draft is submitted in full conformance with the 37 provisions of BCP 78 and BCP 79. 39 Internet-Drafts are working documents of the Internet Engineering 40 Task Force (IETF). Note that other groups may also distribute 41 working documents as Internet-Drafts. The list of current Internet- 42 Drafts is at http://datatracker.ietf.org/drafts/current/. 44 Internet-Drafts are draft documents valid for a maximum of six months 45 and may be updated, replaced, or obsoleted by other documents at any 46 time. It is inappropriate to use Internet-Drafts as reference 47 material or to cite them other than as "work in progress." 48 This Internet-Draft will expire on September 21, 2016. 50 Copyright Notice 52 Copyright (c) 2016 IETF Trust and the persons identified as the 53 document authors. All rights reserved. 55 This document is subject to BCP 78 and the IETF Trust's Legal 56 Provisions Relating to IETF Documents 57 (http://trustee.ietf.org/license-info) in effect on the date of 58 publication of this document. Please review these documents 59 carefully, as they describe your rights and restrictions with respect 60 to this document. Code Components extracted from this document must 61 include Simplified BSD License text as described in Section 4.e of 62 the Trust Legal Provisions and are provided without warranty as 63 described in the Simplified BSD License. 65 Table of Contents 67 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 68 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 69 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 70 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 71 1.4. Open Issues and Next Steps . . . . . . . . . . . . . . . 5 72 1.4.1. TE Technology Models . . . . . . . . . . . . . . . . 5 73 1.4.2. State Data Organization . . . . . . . . . . . . . . . 5 74 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 6 75 2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 6 76 2.2. Design Considerations . . . . . . . . . . . . . . . . . . 8 77 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 9 78 2.4. Configuration Inheritance . . . . . . . . . . . . . . . . 9 79 2.5. Routing Instance Support . . . . . . . . . . . . . . . . 9 80 3. TE Generic Model Organization . . . . . . . . . . . . . . . . 9 81 3.1. Global Configuration and State Data . . . . . . . . . . . 11 82 3.2. Interfaces Configuration and State Data . . . . . . . . . 14 83 3.3. Tunnels Configuration and State Data . . . . . . . . . . 18 84 3.4. TE LSPs State Data . . . . . . . . . . . . . . . . . . . 27 85 3.5. Global RPC Data . . . . . . . . . . . . . . . . . . . . . 29 86 3.6. Interface RPC Data . . . . . . . . . . . . . . . . . . . 29 87 3.7. Tunnel RPC Data . . . . . . . . . . . . . . . . . . . . . 29 88 3.8. Global Notifications Data . . . . . . . . . . . . . . . . 29 89 3.9. Interfaces Notifications Data . . . . . . . . . . . . . . 29 90 3.10. Tunnel Notification Data . . . . . . . . . . . . . . . . 30 91 4. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 30 92 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 88 93 6. Security Considerations . . . . . . . . . . . . . . . . . . . 88 94 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 89 95 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 89 96 8.1. Normative References . . . . . . . . . . . . . . . . . . 89 97 8.2. Informative References . . . . . . . . . . . . . . . . . 91 98 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 91 100 1. Introduction 102 YANG [RFC6020] is a data definition language that was introduced to 103 define the contents of a conceptual data store that allows networked 104 devices to be managed using NETCONF [RFC6241]. YANG is proving 105 relevant beyond its initial confines, as bindings to other interfaces 106 (e.g. ReST) and encoding other than XML (e.g. JSON) are being 107 defined. Furthermore, YANG data models can be used as the basis of 108 implementation for other interface, such as CLI and programmatic 109 APIs. 111 This document covers the YANG data model for the TE generic, TE 112 device-specific, TE MPLS technology and helper modules. It also 113 describes the high-level relationship between these modules and to 114 other external protocol modules. It is expected that other data 115 plane technology model(s) will augment the TE generic model. Also, 116 the generic model does not include any signaling protocol specific 117 data, and it is expected other TE signaling protocol modules (e.g. 118 RSVP-TE ([RFC3209], [RFC3473]), and Segment-Routing TE (SR-TE)) will 119 augment the TE generic model. 121 1.1. Terminology 123 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 124 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 125 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 126 [RFC2119]. 128 1.2. Tree Diagram 130 A simplified graphical representation of the data model is presented 131 in each section of the model. The following notations are used for 132 the YANG model data tree representation. 134 136 is one of: 137 + for current 138 x for deprecated 139 o for obsolete 141 is one of: 142 rw for read-write configuration data 143 ro for read-only non-configuration data 144 -x for execution rpcs 145 -n for notifications 147 is the name of the node 149 If the node is augmented into the tree from another module, its name 150 is printed as : 152 is one of: 153 ? for an optional leaf or node 154 ! for a presence container 155 * for a leaf-list or list 156 Brackets [] for a list's keys 157 Curly braces {} for optional feature that make node 158 conditional 159 Colon : for marking case nodes 160 Ellipses ("...") subtree contents not shown 162 Parentheses enclose choice and case nodes, and case nodes are also 163 marked with a colon (":"). 165 is the name of the type for leafs and leaf-lists. 167 1.3. Prefixes in Data Node Names 169 In this document, names of data nodes and other data model objects 170 are prefixed using the standard prefix associated with the 171 corresponding YANG imported modules, as shown in Table 1. 173 +--------+-----------------+-----------+ 174 | Prefix | YANG module | Reference | 175 +--------+-----------------+-----------+ 176 | yang | ietf-yang-types | [RFC6991] | 177 | inet | ietf-inet-types | [RFC6991] | 178 +--------+-----------------+-----------+ 180 Table 1: Prefixes and corresponding YANG modules 182 1.4. Open Issues and Next Steps 184 This section describes the number of open issues that are under 185 consideration. As issues are resolved, this section will be updated 186 to reflect this and be left there for reference. It is expected that 187 all the issues in this section will be addressed before the document 188 will be ready for final publication. 190 1.4.1. TE Technology Models 192 This document describes the generic TE YANG data model that is 193 independent of any dataplane technology. It is expected that 194 specific data plane technologies will reuse this YANG model by 195 attaching it at technology specific targets and by possibly 196 augmenting TE generic model with technology specific data. 198 There are currently multiple proposals under consideration at IETF to 199 allow attaching or "mounting" a YANG model at multiple targets- for 200 example, [I-D.clemm-netmod-mount], and 201 [I-D.bjorklund-netmod-structural-mount]. This model will adhere to 202 the final adopted approach at IETF when it is reached. 204 Also, the TE generic model does not include any signaling protocol 205 data, and it is expected other TE signaling protocol modules (e.g. 206 RSVP-TE ([RFC3209], [RFC3473]), and Segment-Routing TE (SR-TE)) will 207 augment the TE generic model. 209 1.4.2. State Data Organization 211 Pure state data (for example, ephemeral or protocol derived state 212 objects) can be modeled using one of the options below: 214 o Contained inside a read-write container, in a "state" sub- 215 container, as shown in Figure 3 217 o Contained inside a separate read-only container, for example a 218 lsps-state container 220 The first option allows for placing configuration data in the read- 221 write "config" sub-container, and by placing state data under the 222 read-only "state" sub-container of the parent container. However, 223 when using approach for ephemeral or purely derived state (e.g. auto 224 tunnels), and since in this case the state sub-container hangs off a 225 read-write parent container, it will be possible to delete or modify 226 the parent container and subsequently the ephemeral read-only state 227 contained within (see Figure 3). 229 The second option entails defining a new read-only parent container 230 in the model (e.g. neighbors-state) that holds the data. 232 This revision of the draft adopts the first option for ephemeral or 233 state derived tunnels. Further discussions on this topic are 234 expected to close on the best choice to adopt. 236 2. Model Overview 238 The data model defined in this document covers the core TE features 239 that are commonly supported across different vendor implementations. 240 The support of extended or vendor specific TE feature(s) are expected 241 to be in augmentations to the data models defined in this document. 243 Throughout the model, the approach described in 244 [I-D.openconfig-netmod-opstate] is adopted to represent data 245 pertaining to configuration intended state, applied state and derived 246 state data elements. Each container in the model hold a "config" and 247 "state" sub-container. The "config" sub-container is used to 248 represent the intended configurable parameters, and the state sub- 249 container is used to represent both the applied configurable 250 parameters and any derived state, such as counters or statistics 251 information. 253 The decision to use this approach was made to better align with the 254 MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model] 255 and maximize reusability of groupings defined in this document and 256 allow for possible convergence between the two models. 258 2.1. Module(s) Relationship 260 The TE generic model defined in "ietf-te.yang" covers the building 261 blocks that are device independent and agnostic of a specific 262 technology or control plane instantiations. The TE device model 263 defined in "ietf-te-device.yang" augments the TE generic and covers 264 data that is specific to a device - for example, attributes of TE 265 interfaces, or TE timers that are local to a TE node. 267 The TE data relevant to a specific instantiations of data plane 268 technology exists in a separate YANG module(s) that augment the TE 269 generic model. For example, the MPLS-TE module "ietf-te-mpls.yang" 270 is defined in Figure 14 and augments the TE generic model as shown in 271 Figure 1. 273 The TE data relevant to a TE specific signaling protocol 274 instantiation is outside the scope and is covered in other documents. 275 For example, the RSVP-TE [RFC3209] YANG model augmentation of the TE 276 model is covered in [I-D.ietf-teas-yang-rsvp], and other signaling 277 protocol model(s) (e.g. for Segment-Routing TE) are expected to also 278 augment the TE generic model. 280 TE generic +---------+ ^: import 281 module | ietf-te | o: augment 282 +---------+ 283 | o \ 284 | |\ \ 285 | | \ V 286 | | +----------------+ 287 | | | ietf-te-device | TE device module 288 | | +----------------+ 289 | | o 290 | | / 291 v | / 292 +--------------+ 293 RSVP-TE module | ietf-rsvp-te |o . . . 294 +--------------+ \ 295 ^ | \ 296 | o +-------------------+ 297 +-----------+ | ietf-rsvp-otn-te | 298 RSVP module | ietf-rsvp | +-------------------+ 299 +-----------+ RSVP-TE with OTN 300 extensions 301 (shown for illustration 302 not in this document) 304 Figure 1: Relationship of TE module(s) with other signaling protocol 305 modules 307 +---------+ 308 | ietf-te | ^: import 309 +---------+ o: augment 310 import ^ 311 | 312 | 313 +---------------+ 314 | ietf-te-types | 315 +---------------+ 316 o o 317 | \ 318 | \ 319 +-------------------+ +-------------------+ 320 | ietf-te-mpls-types | | ietf-te-otn-types | 321 +-------------------+ +-------------------+ 322 (shown for illustration 323 not in this document) 325 Figure 2: Relationship between generic and technology specific TE 326 types modules 328 2.2. Design Considerations 330 The following considerations with respect data organization are taken 331 into account: 333 o reusable data elements are grouped into separate TE types 334 module(s) that can be readily imported by other modules whenever 335 needed 337 o reusable TE data types that are data plane independent are grouped 338 in the TE generic types module "ietf-te-types.yang" 340 o reusable TE data elements that are data plane specific (e.g. 341 packet MPLS or switching technologies as defined in [RFC3473]) are 342 expected to be grouped in a technology- specific types module, 343 e.g. "ietf-te-mpls-types.yang". It is expected that technology 344 specific types will augment TE generic types as shown in Figure 2 346 o The TE generic model contains device independent data and can be 347 used to model data off a device (e.g. on a controller). The TE 348 data that is device-specific are grouped in a separate module as 349 shown in Figure 1. 351 o In general, little information in the model is designated as 352 "mandatory", to allow freedom to vendors to adapt the data model 353 to their specific product implementation. 355 2.3. Optional Features 357 Optional features that are beyond the base TE model and are left to 358 the specific vendor to decide support using vendor model augmentation 359 and/or using feature checks. 361 This model declares a number of TE functions as features (such as 362 P2MP-TE, soft-preemption etc.). 364 2.4. Configuration Inheritance 366 The defined data model supports configuration inheritance for 367 tunnels, paths, and interfaces. Data elements defined in the main 368 container (e.g. that encompasses the list of tunnels, interfaces, or 369 paths) are assumed to apply equally to all elements of the list, 370 unless overridden explicitly for a certain element of a list (e.g. a 371 tunnel, interface or path). 373 2.5. Routing Instance Support 375 There two main popular types of routing protocol configuration that 376 vendors may support: 378 o protocol centric - all the protocol related configuration is 379 contained within the protocol itself. Configuration belonging to 380 multiple instances of the protocol running in different routing- 381 instances (e.g. VRFs) are contained under the default routing 382 instance [I-D.ietf-netmod-routing-cfg]: 384 o VRF centric - all the protocol related configuration for a 385 routing- instance is contained within this routing-instance. 387 On-going discussions within the IETF community have converged on 388 adopting the VRF centric approach. The proposed model in this 389 document adheres to this conclusion. 391 3. TE Generic Model Organization 393 This model covers configuration, state, RPC, and notifications data 394 pertaining to TE global parameters, interfaces, and tunnels 395 parameters. 397 The container "te" is the top level container in this data model. 398 The presence of this container is expected to enable TE function 399 system wide. 401 The approach described in [I-D.openconfig-netmod-opstate] allows for 402 modeling the intended and respective applied and derived state. The 403 TE state data in this model falls into one of the following 404 categories: 406 o State corresponding to applied configuration 408 o State corresponding to derived state, counters, stats, etc. 410 o State corresponding to ephemeral data (e.g. LSPs, etc.) 412 Data for the first two categories are contained under the respective 413 "state" sub-container of the intended (e.g. tunnel). The last 414 category falls under a separate - e.g. lsps-state- container that 415 contains the attributes of a purely derived state data (e.g. 416 ephemeral objects) that are not associated with any configuration as 417 shown in Figure 3. 419 module: ietf-te 420 +--rw te! 421 +--rw globals 422 +-- rw config 423 <> 424 . 425 +-- ro state 426 <> 427 <> 428 . 429 . 431 +--rw tunnels 432 +-- rw config 433 <> 434 . 435 +-- ro state 436 <> 437 <> 438 . 439 . 440 rpcs: 441 +---x globals-rpc 442 +---x tunnels-rpc 443 notifications: 444 +---n globals-notif 445 +---n tunnels-notif 447 Figure 3: TE generic highlevel model view 449 3.1. Global Configuration and State Data 451 This branch of the data model covers configurations that control TE 452 features behavior system-wide, and its respective state. Examples of 453 such configuration data are: 455 o Table of named SRLG mappings 457 o Table of named (extended) administrative groups mappings 459 o Table of named explicit paths to be referenced by TE tunnels 461 o Table of named path-constraints sets 463 o Auto-bandwidth global parameters 465 o TE diff-serve TE-class maps 467 o System-wide capabilities for LSP reoptimization (included in the 468 TE device model) 470 * Reoptimization timers (periodic interval, LSP installation and 471 cleanup) 473 o System-wide capabilities for TE state flooding (included in the TE 474 device model) 476 * Periodic flooding interval 478 o Global capabilities that affect the originating, traversing and 479 terminating LSPs. For example: 481 * Path selection parameters (e.g. metric to optimize, etc.) 483 * Path or segment protection parameters 485 The approach described in [I-D.openconfig-netmod-opstate] is utilized 486 to include the global state data under the global "state" sub- 487 container as shown in Figure 3. 489 Examples of such states are: 491 o Global statistics (signaling, admission, preemption, flooding) 493 o Global counters (number of tunnels/LSPs/interfaces) 495 module: ietf-te 496 +--rw te! 497 +--rw globals 498 | +--rw config 499 | | +--rw named-admin-groups* [name] 500 {te-types:extended-admin-groups,te-types:named-extended-admin-groups}? 501 | | | +--rw name string 502 | | | +--rw bit-position? uint32 503 | | +--rw named-srlgs* [name] {te-types:named-srlg-groups}? 504 | | | +--rw name string 505 | | | +--rw group? te-types:srlg 506 | | +--rw named-explicit-paths* [name] 507 | | | +--rw name string 508 | | | +--rw explicit-route-objects* [index] 509 | | | +--rw index uint8 510 | | | +--rw explicit-route-usage? identityref 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 named-constraints* [name] 528 {te-types:named-path-constraints}? 529 | | | +--rw name string 530 | | | +--rw path-selection 531 | | | +--rw topology? te-types:topology-id 532 | | | +--rw cost-limit? uint32 533 | | | +--rw hop-limit? uint8 534 | | | +--rw metric-type? identityref 535 | | | +--rw tiebreaker-type? identityref 536 | | | +--rw ignore-overload? boolean 537 | | | +--rw tunnel-path-affinities {named-path-affinities}? 538 | | | | +--rw (style)? 539 | | | | +--:(values) 540 | | | | | +--rw value? uint32 541 | | | | | +--rw mask? uint32 542 | | | | +--:(named) 543 | | | | +--rw constraints* [usage] 544 | | | | +--rw usage identityref 545 | | | | +--rw constraint 546 | | | | +--rw affinity-names* [name] 547 | | | | +--rw name string 548 | | | +--rw tunnel-path-srlgs 549 | | | +--rw (style)? 550 | | | +--:(values) 551 | | | | +--rw usage? identityref 552 | | | | +--rw values* te-types:srlg 553 | | | +--:(named) 554 | | | +--rw constraints* [usage] 555 | | | +--rw usage identityref 556 | | | +--rw constraint 557 | | | +--rw srlg-names* [name] 558 | | | +--rw name string 559 | | +--rw te-dev:lsp-install-interval? uint32 560 | | +--rw te-dev:lsp-cleanup-interval? uint32 561 | +--ro state 562 | +--ro named-admin-groups* [name] 563 {te-types:extended-admin-groups,te-types:named-extended-admin-groups}? 564 | | +--ro name string 565 | | +--ro bit-position? uint32 566 | +--ro named-srlgs* [name] {te-types:named-srlg-groups}? 567 | | +--ro name string 568 | | +--ro group? te-types:srlg 569 | +--ro named-explicit-paths* [name] 570 | | +--ro name string 571 | | +--ro explicit-route-objects* [index] 572 | | +--ro index uint8 573 | | +--ro explicit-route-usage? identityref 574 | | +--ro (type)? 575 | | +--:(ipv4-address) 576 | | | +--ro v4-address? inet:ipv4-address 577 | | | +--ro v4-prefix-length? uint8 578 | | | +--ro v4-loose? boolean 579 | | +--:(ipv6-address) 580 | | | +--ro v6-address? inet:ipv6-address 581 | | | +--ro v6-prefix-length? uint8 582 | | | +--ro v6-loose? boolean 583 | | +--:(as-number) 584 | | | +--ro as-number? uint16 585 | | +--:(unnumbered-link) 586 | | | +--ro router-id? inet:ip-address 587 | | | +--ro interface-id? uint32 588 | | +--:(label) 589 | | +--ro value? uint32 590 | +--ro named-constraints* [name] 591 {te-types:named-path-constraints}? 592 | | +--ro name string 593 | | +--ro path-selection 594 | | +--ro topology? te-types:topology-id 595 | | +--ro cost-limit? uint32 596 | | +--ro hop-limit? uint8 597 | | +--ro metric-type? identityref 598 | | +--ro tiebreaker-type? identityref 599 | | +--ro ignore-overload? boolean 600 | | +--ro tunnel-path-affinities {named-path-affinities}? 601 | | | +--ro (style)? 602 | | | +--:(values) 603 | | | | +--ro value? uint32 604 | | | | +--ro mask? uint32 605 | | | +--:(named) 606 | | | +--ro constraints* [usage] 607 | | | +--ro usage identityref 608 | | | +--ro constraint 609 | | | +--ro affinity-names* [name] 610 | | | +--ro name string 611 | | +--ro tunnel-path-srlgs 612 | | +--ro (style)? 613 | | +--:(values) 614 | | | +--ro usage? identityref 615 | | | +--ro values* te-types:srlg 616 | | +--:(named) 617 | | +--ro constraints* [usage] 618 | | +--ro usage identityref 619 | | +--ro constraint 620 | | +--ro srlg-names* [name] 621 | | +--ro name string 622 | +--ro te-dev:lsp-install-interval? uint32 623 | +--ro te-dev:lsp-cleanup-interval? uint32 624 | +--ro te-dev:tunnels-counter? uint32 625 | +--ro te-dev:lsps-counter? uint32 627 Figure 4: TE globals configuration and state tree 629 3.2. Interfaces Configuration and State Data 631 This branch of the model covers configuration and state data items, 632 corresponding to TE interfaces that are present on a specific device. 633 A new module is introduced that holds the TE device specific 634 properties. 636 Examples of TE interface properties are: 638 o Maximum reservable bandwidth, bandwidth constraints (BC) 640 o Flooding parameters 641 * Flooding intervals and threshold values 643 o Fast reroute backup tunnel properties (such as static, auto- 644 tunnel) 646 o interface attributes 648 * (Extended) administrative groups 650 * SRLG values 652 * TE metric value 654 module: ietf-te-device 655 +--rw te! 656 +--rw te-dev:interfaces 657 +--rw te-dev:config 658 | +--rw te-dev:thresholds 659 | +--rw (type)? 660 | +--:(equal-steps) 661 | | +--rw (equal-step-type)? 662 | | +--:(up-down-different-step) 663 | | | +--rw te-dev:up-step? uint8 664 | | | +--rw te-dev:down-step? uint8 665 | | +--:(up-down-same-step) 666 | | +--rw te-dev:step? uint8 667 | +--:(unequal-steps) 668 | +--rw te-dev:up-steps* [value] 669 | | +--rw te-dev:value uint8 670 | +--rw te-dev:down-steps* [value] 671 | +--rw te-dev:value uint8 672 +--ro te-dev:state 673 | +--ro te-dev:thresholds 674 | +--ro (type)? 675 | +--:(equal-steps) 676 | | +--ro (equal-step-type)? 677 | | +--:(up-down-different-step) 678 | | | +--ro te-dev:up-step? uint8 679 | | | +--ro te-dev:down-step? uint8 680 | | +--:(up-down-same-step) 681 | | +--ro te-dev:step? uint8 682 | +--:(unequal-steps) 683 | +--ro te-dev:up-steps* [value] 684 | | +--ro te-dev:value uint8 685 | +--ro te-dev:down-steps* [value] 686 | +--ro te-dev:value uint8 687 +--rw te-dev:interface* [interface] 688 +--rw te-dev:interface if:interface-ref 689 +--rw te-dev:config 690 | +--rw te-dev:te-metric? te-types:te-metric 691 | +--rw (admin-group-type)? 692 | | +--:(value-admin-groups) 693 | | | +--rw (value-admin-group-type)? 694 | | | +--:(admin-groups) 695 | | | | +--rw te-dev:admin-group?te-types:admin-group 696 | | | +--:(extended-admin-groups) 697 | | | +--rw te-dev:extended-admin-group? 698 | | +--:(named-admin-groups) 699 | | +--rw te-dev:named-admin-groups*[named-admin-group] 700 | | +--rw te-dev:named-admin-group -> 701 ../../../../../ietf-te:globals/config/named-admin-groups/name 702 | +--rw (srlg-type)? 703 | | +--:(value-srlgs) 704 | | | +--rw te-dev:values* [value] 705 | | | +--rw te-dev:value uint32 706 | | +--:(named-srlgs) 707 | | +--rw te-dev:named-srlgs* [named-srlg] 708 | | +--rw te-dev:named-srlg -> 709 ../../../../../ietf-te:globals/config/named-srlgs/name 710 | +--rw te-dev:switching-capabilities*[switching-cap] 711 | | +--rw te-dev:switching-capability identityref 712 | | +--rw te-dev:encoding? identityref 713 | +--rw te-dev:thresholds 714 | +--rw (type)? 715 | +--:(equal-steps) 716 | | +--rw (equal-step-type)? 717 | | +--:(up-down-different-step) 718 | | | +--rw te-dev:up-step? uint8 719 | | | +--rw te-dev:down-step? uint8 720 | | +--:(up-down-same-step) 721 | | +--rw te-dev:step? uint8 722 | +--:(unequal-steps) 723 | +--rw te-dev:up-steps* [value] 724 | | +--rw te-dev:value uint8 725 | +--rw te-dev:down-steps* [value] 726 | +--rw te-dev:value uint8 727 +--ro te-dev:state 728 +--ro te-dev:te-metric? te-types:te-metric 729 +--ro (admin-group-type)? 730 | +--:(value-admin-groups) 731 | | +--ro (value-admin-group-type)? 732 | | +--:(admin-groups) 733 | | | +--ro te-dev:admin-group? 734 | | +--:(extended-admin-groups) 735 | | +--ro te-dev:extended-admin-group? 736 | +--:(named-admin-groups) 737 | +--ro te-dev:named-admin-groups*[named-admin-group] 738 | +--ro te-dev:named-admin-group -> 739 ../../../../../ietf-te:globals/config/named-admin-groups/name 740 +--ro (srlg-type)? 741 | +--:(value-srlgs) 742 | | +--ro te-dev:values* [value] 743 | | +--ro te-dev:value uint32 744 | +--:(named-srlgs) 745 | +--ro te-dev:named-srlgs* [named-srlg] 746 | +--ro te-dev:named-srlg -> 747 ../../../../../ietf-te:globals/config/named-srlgs/name 748 +--ro te-dev:switching-capabilities*[switching-cap] 749 | +--ro te-dev:switching-capability identityref 750 | +--ro te-dev:encoding? identityref 751 +--ro te-dev:thresholds 752 | +--ro (type)? 753 | +--:(equal-steps) 754 | | +--ro (equal-step-type)? 755 | | +--:(up-down-different-step) 756 | | | +--ro te-dev:up-step? uint8 757 | | | +--ro te-dev:down-step? uint8 758 | | +--:(up-down-same-step) 759 | | +--ro te-dev:step? uint8 760 | +--:(unequal-steps) 761 | +--ro te-dev:up-steps* [value] 762 | | +--ro te-dev:value uint8 763 | +--ro te-dev:down-steps* [value] 764 | +--ro te-dev:value uint8 765 +--ro te-dev:te-advertisements_state 766 +--ro te-dev:flood-interval? uint32 767 +--ro te-dev:last-flooded-time? uint32 768 +--ro te-dev:next-flooded-time? uint32 769 +--ro te-dev:last-flooded-trigger? enumeration 770 +--ro te-dev:advertized-level-areas* [level-area] 771 +--ro te-dev:level-area uint32 773 Figure 5: TE interfaces configuration and state tree 775 The state corresponding to the TE interfaces applied configuration, 776 protocol derived state, and stats and counters all fall under the 777 interface "state" sub-container as shown in Figure 6 below: 779 module: ietf-te 780 +--rw te! 781 +--rw interfaces 782 . 783 +-- rw te-attributes 784 +-- rw config 785 <> 786 . 787 +-- ro state 788 <> 789 <> 791 Figure 6: TE interface state 793 This covers state data for TE interfaces such as: 795 o Bandwidth information: maximum bandwidth, available bandwidth at 796 different priorities and for each class-type (CT) 798 o List of admitted LSPs 800 * Name, bandwidth value and pool, time, priority 802 o Statistics: state counters, flooding counters, admission counters 803 (accepted/rejected), preemption counters 805 o Adjacency information 807 * Neighbor address 809 * Metric value 811 3.3. Tunnels Configuration and State Data 813 This branch of the model covers intended, and corresponding applied 814 configuration for tunnels. As well, it holds possible derived state 815 pertaining to TE tunnels. 817 The approach described in [I-D.openconfig-netmod-opstate] is utilized 818 for the inclusion of operational and statistical data as shown in 819 Figure 7. 821 module: ietf-te 822 +--rw te! 823 +--rw tunnels 824 . 825 +-- rw config 826 <> 827 . 828 +-- ro state 829 <> 830 <> 832 Figure 7: TE interface state tree 834 Examples of tunnel configuration date for TE tunnels: 836 o Name and type (e.g. P2P, P2MP) of the TE tunnel 838 o Admin-state 840 o Set of primary and corresponding secondary paths 842 o Routing usage (auto-route announce, forwarding adjacency) 844 o Policy based routing (PBR) parameters 846 module: ietf-te 847 +--rw te! 848 +--rw tunnels 849 | +--rw tunnel* [name type] 850 | +--rw name -> ../config/name 851 | +--rw type -> ../config/type 852 | +--rw identifier? -> ../config/identifier 853 | +--rw config 854 | | +--rw name? string 855 | | +--rw type? identityref 856 | | +--rw identifier? uint16 857 | | +--rw description? string 858 | | +--rw lsp-priority-setup? uint8 859 | | +--rw lsp-priority-hold? uint8 860 | | +--rw lsp-protection-type? identityref 861 | | +--rw admin-status? identityref 862 | | +--rw source? inet:ip-address 863 | | +--rw destination? inet:ip-address 864 | | +--rw src-tp-id? binary 865 | | +--rw tunnel-dst-tp-id? binary 866 | | +--rw bidirectional 867 | | | +--rw association 868 | | | +--rw id? uint16 869 | | | +--rw source? inet:ip-address 870 | | | +--rw global-source? inet:ip-address 871 | | | +--rw type? identityref 872 | | | +--rw provisioing? identityref 873 | | +--rw (routing-choice)? 874 | | | +--:(autoroute) 875 | | | | +--rw te-mpls:autoroute-announce! 876 | | | | +--rw te-mpls:routing-afs* inet:ip-version 877 | | | | +--rw (metric-type)? 878 | | | | +--:(metric) 879 | | | | | +--rw te-mpls:metric? uint32 880 | | | | +--:(relative-metric) 881 | | | | | +--rw te-mpls:relative-metric? int32 882 | | | | +--:(absolute-metric) 883 | | | | +--rw te-mpls:absolute-metric? uint32 884 | | | +--:(forwarding-adjacency) 885 | | | +--rw te-mpls:forwarding-adjacency! 886 | | | +--rw te-mpls:holdtime? uint32 887 | | | +--rw te-mpls:routing-afs* inet:ip-version 888 | | +--rw te-mpls:forwarding 889 | | +--rw te-mpls:load-share? uint32 890 | | +--rw (policy-type)? 891 | | +--:(class) 892 | | | +--rw te-mpls:class 893 | | | +--rw te-mpls:class? uint8 894 | | +--:(group) 895 | | +--rw te-mpls:group 896 | | +--rw te-mpls:classes* uint8 897 | +--ro state 898 | | +--ro name? string 899 | | +--ro type? identityref 900 | | +--ro identifier? uint16 901 | | +--ro description? string 902 | | +--ro lsp-priority-setup? uint8 903 | | +--ro lsp-priority-hold? uint8 904 | | +--ro lsp-protection-type? identityref 905 | | +--ro admin-status? identityref 906 | | +--ro source? inet:ip-address 907 | | +--ro destination? inet:ip-address 908 | | +--ro src-tp-id? binary 909 | | +--ro tunnel-dst-tp-id? binary 910 | | +--ro bidirectional 911 | | | +--ro association 912 | | | +--ro id? uint16 913 | | | +--ro source? inet:ip-address 914 | | | +--ro global-source? inet:ip-address 915 | | | +--ro type? identityref 916 | | | +--ro provisioing? identityref 917 | | +--ro oper-status? identityref 918 | | +--ro (routing-choice)? 919 | | | +--:(autoroute) 920 | | | | +--ro te-mpls:autoroute-announce! 921 | | | | +--ro te-mpls:routing-afs* inet:ip-version 922 | | | | +--ro (metric-type)? 923 | | | | +--:(metric) 924 | | | | | +--ro te-mpls:metric? uint32 925 | | | | +--:(relative-metric) 926 | | | | | +--ro te-mpls:relative-metric? int32 927 | | | | +--:(absolute-metric) 928 | | | | +--ro te-mpls:absolute-metric? uint32 929 | | | +--:(forwarding-adjacency) 930 | | | +--ro te-mpls:forwarding-adjacency! 931 | | | +--ro te-mpls:holdtime? uint32 932 | | | +--ro te-mpls:routing-afs* inet:ip-version 933 | | +--ro te-mpls:forwarding 934 | | +--ro te-mpls:load-share? uint32 935 | | +--ro (policy-type)? 936 | | +--:(class) 937 | | | +--ro te-mpls:class 938 | | | +--ro te-mpls:class? uint8 939 | | +--:(group) 940 | | +--ro te-mpls:group 941 | | +--ro te-mpls:classes* uint8 942 | +--rw primary-paths* [name] 943 | +--rw name -> ../config/name 944 | +--rw preference? -> ../config/preference 945 | +--rw config 946 | | +--rw name? string 947 | | +--rw preference? uint8 948 | | +--rw path-named-constraint? string 949 | | +--rw path-selection 950 | | | +--rw topology? te-types:topology-id 951 | | | +--rw cost-limit? uint32 952 | | | +--rw hop-limit? uint8 953 | | | +--rw metric-type? identityref 954 | | | +--rw tiebreaker-type? identityref 955 | | | +--rw ignore-overload? boolean 956 | | | +--rw tunnel-path-affinities {named-path-aff}? 957 | | | | +--rw (style)? 958 | | | | +--:(values) 959 | | | | | +--rw value? uint32 960 | | | | | +--rw mask? uint32 961 | | | | +--:(named) 962 | | | | +--rw constraints* [usage] 963 | | | | +--rw usage identityref 964 | | | | +--rw constraint 965 | | | | +--rw affinity-names* [name] 966 | | | | +--rw name string 967 | | | +--rw tunnel-path-srlgs 968 | | | +--rw (style)? 969 | | | +--:(values) 970 | | | | +--rw usage? identityref 971 | | | | +--rw values* te-types:srlg 972 | | | +--:(named) 973 | | | +--rw constraints* [usage] 974 | | | +--rw usage identityref 975 | | | +--rw constraint 976 | | | +--rw srlg-names* [name] 977 | | | +--rw name string 978 | | +--rw (type)? 979 | | | +--:(dynamic) 980 | | | | +--rw dynamic? empty 981 | | | +--:(explicit) 982 | | | +--rw explicit-path-name? string 983 | | | +--rw explicit-route-objects* [index] 984 | | | +--rw index uint8 985 | | | +--rw explicit-route-usage? identityref 986 | | | +--rw (type)? 987 | | | +--:(ipv4-address) 988 | | | | +--rw v4-address? inet:ipv4-address 989 | | | | +--rw v4-prefix-length? uint8 990 | | | | +--rw v4-loose? boolean 991 | | | +--:(ipv6-address) 992 | | | | +--rw v6-address? inet:ipv6-address 993 | | | | +--rw v6-prefix-length? uint8 994 | | | | +--rw v6-loose? boolean 995 | | | +--:(as-number) 996 | | | | +--rw as-number? uint16 997 | | | +--:(unnumbered-link) 998 | | | | +--rw router-id? inet:ip-address 999 | | | | +--rw interface-id? uint32 1000 | | | +--:(label) 1001 | | | +--rw value? uint32 1002 | | +--rw no-cspf? empty 1003 | | +--rw lockdown? empty 1004 | +--ro state 1005 | | +--ro path-named-constraint? string 1006 | | +--ro path-selection 1007 | | | +--ro topology? te-types:topology-id 1008 | | | +--ro cost-limit? uint32 1009 | | | +--ro hop-limit? uint8 1010 | | | +--ro metric-type? identityref 1011 | | | +--ro tiebreaker-type? identityref 1012 | | | +--ro ignore-overload? boolean 1013 | | | +--ro tunnel-path-affinities 1014 | | | | +--ro (style)? 1015 | | | | +--:(values) 1016 | | | | | +--ro value? uint32 1017 | | | | | +--ro mask? uint32 1018 | | | | +--:(named) 1019 | | | | +--ro constraints* [usage] 1020 | | | | +--ro usage identityref 1021 | | | | +--ro constraint 1022 | | | | +--ro affinity-names* [name] 1023 | | | | +--ro name string 1024 | | | +--ro tunnel-path-srlgs 1025 | | | +--ro (style)? 1026 | | | +--:(values) 1027 | | | | +--ro usage? identityref 1028 | | | | +--ro values* te-types:srlg 1029 | | | +--:(named) 1030 | | | +--ro constraints* [usage] 1031 | | | +--ro usage identityref 1032 | | | +--ro constraint 1033 | | | +--ro srlg-names* [name] 1034 | | | +--ro name string 1035 | | +--ro (type)? 1036 | | | +--:(dynamic) 1037 | | | | +--ro dynamic? empty 1038 | | | +--:(explicit) 1039 | | | +--ro explicit-path-name? string 1040 | | | +--ro explicit-route-objects* [index] 1041 | | | +--ro index uint8 1042 | | | +--ro explicit-route-usage? identityref 1043 | | | +--ro (type)? 1044 | | | +--:(ipv4-address) 1045 | | | | +--ro v4-address? inet:ipv4-address 1046 | | | | +--ro v4-prefix-length?uint8 1047 | | | | +--ro v4-loose? boolean 1048 | | | +--:(ipv6-address) 1049 | | | | +--ro v6-address? inet:ipv6-address 1050 | | | | +--ro v6-prefix-length?uint8 1051 | | | | +--ro v6-loose? boolean 1052 | | | +--:(as-number) 1053 | | | | +--ro as-number? uint16 1054 | | | +--:(unnumbered-link) 1055 | | | | +--ro router-id? inet:ip-address 1056 | | | | +--ro interface-id? uint32 1057 | | | +--:(label) 1058 | | | +--ro value? uint32 1059 | | +--ro no-cspf? empty 1060 | | +--ro lockdown? empty 1061 | | +--ro lsp* [source] 1062 | | +--ro source -> 1063 ../../../../../../lsps-state/lsp/source 1064 | | +--ro destination? -> 1065 ../../../../../../lsps-state/lsp/destination 1066 | | +--ro tunnel-id? -> 1067 ../../../../../../lsps-state/lsp/tunnel-id 1068 | | +--ro lsp-id? -> 1069 ../../../../../../lsps-state/lsp/lsp-id 1070 | | +--ro extended-tunnel-id? -> 1071 ../../../../../../lsps-state/lsp/extended-tunnel-id 1072 | | +--ro type? -> 1073 ../../../../../../lsps-state/lsp/type 1074 | +--rw secondary-paths* [name] 1075 | +--rw name -> ../config/name 1076 | +--rw preference? -> ../config/preference 1077 | +--rw config 1078 | | +--rw name? string 1079 | | +--rw preference? uint8 1080 | | +--rw path-named-constraint? string 1081 | | +--rw path-selection 1082 | | | +--rw topology? te-types:topology-id 1083 | | | +--rw cost-limit? uint32 1084 | | | +--rw hop-limit? uint8 1085 | | | +--rw metric-type? identityref 1086 | | | +--rw tiebreaker-type?identityref 1087 | | | +--rw ignore-overload?boolean 1088 | | | +--rw tunnel-path-affinities {named-path-aff}? 1089 | | | | +--rw (style)? 1090 | | | | +--:(values) 1091 | | | | | +--rw value? uint32 1092 | | | | | +--rw mask? uint32 1093 | | | | +--:(named) 1094 | | | | +--rw constraints* [usage] 1095 | | | | +--rw usage identityref 1096 | | | | +--rw constraint 1097 | | | | +--rw affinity-names* [name] 1098 | | | | +--rw name string 1099 | | | +--rw tunnel-path-srlgs 1100 | | | +--rw (style)? 1101 | | | +--:(values) 1102 | | | | +--rw usage? identityref 1103 | | | | +--rw values* te-types:srlg 1104 | | | +--:(named) 1105 | | | +--rw constraints* [usage] 1106 | | | +--rw usage identityref 1107 | | | +--rw constraint 1108 | | | +--rw srlg-names* [name] 1109 | | | +--rw name string 1110 | | +--rw (type)? 1111 | | | +--:(dynamic) 1112 | | | | +--rw dynamic? empty 1113 | | | +--:(explicit) 1114 | | | +--rw explicit-path-name? string 1115 | | | +--rw explicit-route-objects* [index] 1116 | | | +--rw index uint8 1117 | | | +--rw explicit-route-usage? identityref 1118 | | | +--rw (type)? 1119 | | | +--:(ipv4-address) 1120 | | | | +--rw v4-address? inet:ipv4-address 1121 | | | | +--rw v4-prefix-length? uint8 1122 | | | | +--rw v4-loose? boolean 1123 | | | +--:(ipv6-address) 1124 | | | | +--rw v6-address? inet:ipv6-address 1125 | | | | +--rw v6-prefix-length? uint8 1126 | | | | +--rw v6-loose? boolean 1127 | | | +--:(as-number) 1128 | | | | +--rw as-number? uint16 1129 | | | +--:(unnumbered-link) 1130 | | | | +--rw router-id? inet:ip-address 1131 | | | | +--rw interface-id? uint32 1132 | | | +--:(label) 1133 | | | +--rw value? uint32 1134 | | +--rw no-cspf? empty 1135 | | +--rw lockdown? empty 1136 | +--ro state 1137 | +--ro name? string 1138 | +--ro preference? uint8 1139 | +--ro path-named-constraint? string 1140 | +--ro path-selection 1141 | | +--ro topology? te-types:topology-id 1142 | | +--ro cost-limit? uint32 1143 | | +--ro hop-limit? uint8 1144 | | +--ro metric-type? identityref 1145 | | +--ro tiebreaker-type? identityref 1146 | | +--ro ignore-overload? boolean 1147 | | +--ro tunnel-path-affinities {named-path-aff}? 1148 | | | +--ro (style)? 1149 | | | +--:(values) 1150 | | | | +--ro value? uint32 1151 | | | | +--ro mask? uint32 1152 | | | +--:(named) 1153 | | | +--ro constraints* [usage] 1154 | | | +--ro usage identityref 1155 | | | +--ro constraint 1156 | | | +--ro affinity-names* [name] 1157 | | | +--ro name string 1158 | | +--ro tunnel-path-srlgs 1159 | | +--ro (style)? 1160 | | +--:(values) 1161 | | | +--ro usage? identityref 1162 | | | +--ro values* te-types:srlg 1163 | | +--:(named) 1164 | | +--ro constraints* [usage] 1165 | | +--ro usage identityref 1166 | | +--ro constraint 1167 | | +--ro srlg-names* [name] 1168 | | +--ro name string 1169 | +--ro (type)? 1170 | | +--:(dynamic) 1171 | | | +--ro dynamic? empty 1172 | | +--:(explicit) 1173 | | +--ro explicit-path-name? string 1174 | | +--ro explicit-route-objects* [index] 1175 | | +--ro index uint8 1176 | | +--ro explicit-route-usage? identityref 1177 | | +--ro (type)? 1178 | | +--:(ipv4-address) 1179 | | | +--ro v4-address? inet:ipv4-address 1180 | | | +--ro v4-prefix-length? uint8 1181 | | | +--ro v4-loose? boolean 1182 | | +--:(ipv6-address) 1183 | | | +--ro v6-address? inet:ipv6-address 1184 | | | +--ro v6-prefix-length? uint8 1185 | | | +--ro v6-loose? boolean 1186 | | +--:(as-number) 1187 | | | +--ro as-number? uint16 1188 | | +--:(unnumbered-link) 1189 | | | +--ro router-id? inet:ip-address 1190 | | | +--ro interface-id? uint32 1191 | | +--:(label) 1192 | | +--ro value? uint32 1193 | +--ro no-cspf? empty 1194 | +--ro lockdown? empty 1195 | +--ro lsp* [source] 1196 | +--ro source -> 1197 ../../../../../../../lsps-state/lsp/source 1198 | +--ro destination? -> 1199 ../../../../../../../lsps-state/lsp/destination 1200 | +--ro tunnel-id? -> 1201 ../../../../../../../lsps-state/lsp/tunnel-id 1202 | +--ro lsp-id? -> 1203 ../../../../../../../lsps-state/lsp/lsp-id 1204 | +--ro extended-tunnel-id? -> 1205 ../../../../../../../lsps-state/lsp/extended-tunnel-id 1206 | +--ro type? -> 1207 ../../../../../../../lsps-state/lsp/type 1209 Figure 8: TE tunnels configuration and state tree 1211 3.4. TE LSPs State Data 1213 TE LSPs are derived state data that is usually instantiated via 1214 signaling protocols. TE LSPs exists on routers as ingress (starting 1215 point of LSP), transit (mid-point of LSP ), or egress (termination 1216 point of the LSP). TE LSPs are distinguished by the 5 tuple, and LSP 1217 type (P2P or P2MP) as shown in Figure 9. 1219 In the model, the nodes holding LSPs data exist in a read-only list 1220 as shown below: 1222 module: ietf-te 1223 +--rw te! 1224 +--ro lsps-state 1225 | +--ro lsp* 1226 [source destination tunnel-id lsp-id extended-tunnel-id type] 1227 | +--ro source inet:ip-address 1228 | +--ro destination inet:ip-address 1229 | +--ro tunnel-id uint16 1230 | +--ro lsp-id uint16 1231 | +--ro extended-tunnel-id inet:ip-address 1232 | +--ro type identityref 1233 | +--ro oper-status? identityref 1234 | +--ro origin-type? enumeration 1235 | +--ro lsp-resource-status? enumeration 1236 | +--ro lsp-protection-role? enumeration 1237 | +--ro lsp-operational-status? empty 1238 | +--ro lsp-record-route 1239 | | +--ro record-route-subobjects* [subobject-index] 1240 | | +--ro subobject-index uint32 1241 | | +--ro (type)? 1242 | | +--:(ipv4-address) 1243 | | | +--ro v4-address? inet:ipv4-address 1244 | | | +--ro v4-prefix-length? uint8 1245 | | | +--ro v4-flags? uint8 1246 | | +--:(ipv6-address) 1247 | | | +--ro v6-address? inet:ipv6-address 1248 | | | +--ro v6-prefix-length? uint8 1249 | | | +--ro v6-flags? uint8 1250 | | +--:(label) 1251 | | +--ro value? uint32 1252 | | +--ro flags? uint8 1253 | +--ro te-dev:lsp-timers 1254 | | +--ro te-dev:life-time? uint32 1255 | | +--ro te-dev:time-to-install? uint32 1256 | | +--ro te-dev:time-to-die? uint32 1257 | +--ro te-dev:downstream-info 1258 | | +--ro te-dev:nhop? inet:ip-address 1259 | | +--ro te-dev:outgoing-interface? if:interface-ref 1260 | | +--ro te-dev:neighbor? inet:ip-address 1261 | | +--ro te-dev:label? uint32 1262 | +--ro te-dev:upstream-info 1263 | +--ro te-dev:phop? inet:ip-address 1264 | +--ro te-dev:neighbor? inet:ip-address 1265 | +--ro te-dev:label? uint32 1267 Figure 9: TE LSPs state tree 1269 3.5. Global RPC Data 1271 This branch of the model covers system-wide RPC execution data to 1272 trigger actions and optionally expect responses. Examples of such TE 1273 commands are to: 1275 o Clear global TE statistics of various features 1277 3.6. Interface RPC Data 1279 This collection of data in the model defines TE interface RPC 1280 execution commands. Examples of these are to: 1282 o Clear TE statistics for all or for individual TE interfaces 1284 o Trigger immediate flooding for one or all TE interfaces 1286 3.7. Tunnel RPC Data 1288 This branch of the model covers TE tunnel RPC execution data to 1289 trigger actions and optionally expect responses. Examples of such TE 1290 commands are: 1292 o Clear statistics for all or for individual tunnels 1294 o Trigger the tear and setup of existing tunnels or LSPs. 1296 3.8. Global Notifications Data 1298 This branch of the model covers system-wide notifications data. The 1299 node notifies the registered events to the server using the defined 1300 notification messages. Example of such global TE events are: 1302 o Backup tunnel FRR active and not-active state transition events 1304 3.9. Interfaces Notifications Data 1306 This branch of the model covers TE interfaces related notifications 1307 data. The TE interface configuration is used for specific events 1308 registration. Notifications are sent for registered events to the 1309 server. Example events for TE interfaces are: 1311 o Interface creation and deletion 1313 o Interface state transitions 1315 o (Soft) preemption triggers 1316 o Fast reroute activation 1318 3.10. Tunnel Notification Data 1320 This branch of the model covers TE tunnels related notifications 1321 data. The TE tunnels configuration is used for specific events 1322 registration. Notifications are sent for registered events to the 1323 server. Example events for TE tunnels are: 1325 o Tunnel creation and deletion events 1327 o Tunnel state up/down changes 1329 o Tunnel state reoptimization changes 1331 4. TE Generic and Helper YANG Modules 1333 file "ietf-te-types@2016-03-20.yang" 1334 module ietf-te-types { 1336 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; 1338 /* Replace with IANA when assigned */ 1339 prefix "te-types"; 1341 import ietf-inet-types { 1342 prefix inet; 1343 } 1345 organization 1346 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1347 Working Group"; 1349 contact 1350 "WG Web: 1351 WG List: 1353 WG Chair: Lou Berger 1354 1356 WG Chair: Vishnu Pavan Beeram 1357 1359 Editor: Tarek Saad 1360 1362 Editor: Rakesh Gandhi 1363 1365 Editor: Vishnu Pavan Beeram 1366 1368 Editor: Himanshu Shah 1369 1371 Editor: Xufeng Liu 1372 1374 Editor: Xia Chen 1375 1377 Editor: Raqib Jones 1378 1380 Editor: Bin Wen 1381 "; 1383 description 1384 "This module contains a collection of generally 1385 useful TE specific YANG data type defintions."; 1387 revision 2016-03-20 { 1388 description "Latest revision of TE generic types"; 1389 reference "RFC3209"; 1390 } 1392 identity tunnel-type { 1393 description 1394 "Base identity from which specific tunnel types are 1395 derived."; 1396 } 1398 identity tunnel-p2p { 1399 base tunnel-type; 1400 description 1401 "TE point-to-point tunnel type."; 1402 } 1404 identity tunnel-p2mp { 1405 base tunnel-type; 1406 description 1407 "TE point-to-multipoint tunnel type."; 1408 } 1410 identity state-type { 1411 description 1412 "Base identity for TE states"; 1414 } 1416 identity state-up { 1417 base state-type; 1418 description 1419 "State up"; 1420 } 1422 identity state-down { 1423 base state-type; 1424 description 1425 "State down"; 1426 } 1428 identity lsp-prot-type { 1429 description 1430 "Base identity from which LSP protection types are 1431 derived."; 1432 } 1434 identity lsp-prot-unprotected { 1435 description 1436 "LSP protection 'Unprotected'"; 1437 reference "RFC4872"; 1438 } 1440 identity lsp-prot-reroute-extra { 1441 description 1442 "LSP protection '(Full) Rerouting'"; 1443 reference "RFC4872"; 1444 } 1446 identity lsp-prot-reroute { 1447 description 1448 "LSP protection 'Rerouting without Extra-Traffic'"; 1449 reference "RFC4872"; 1450 } 1452 identity lsp-prot-1-for-n { 1453 description 1454 "LSP protection '1:N Protection with Extra-Traffic'"; 1455 reference "RFC4872"; 1456 } 1458 identity lsp-prot-unidir-1-to-1 { 1459 description 1460 "LSP protection '1+1 Unidirectional Protection'"; 1461 reference "RFC4872"; 1463 } 1465 identity lsp-prot-bidir-1-to-1 { 1466 description 1467 "LSP protection '1+1 Bidirectional Protection'"; 1468 reference "RFC4872"; 1469 } 1471 identity switching-capabilities { 1472 description 1473 "Base identity for interface switching capabilities"; 1474 } 1476 identity switching-psc1 { 1477 base switching-capabilities; 1478 description 1479 "Packet-Switch Capable-1 (PSC-1)"; 1480 } 1482 identity switching-evpl { 1483 base switching-capabilities; 1484 description 1485 "Ethernet Virtual Private Line (EVPL)"; 1486 } 1488 identity switching-l2sc { 1489 base switching-capabilities; 1490 description 1491 "Layer-2 Switch Capable (L2SC)"; 1492 } 1494 identity switching-tdm { 1495 base switching-capabilities; 1496 description 1497 "Time-Division-Multiplex Capable (TDM)"; 1498 } 1500 identity switching-otn { 1501 base switching-capabilities; 1502 description 1503 "OTN-TDM capable"; 1504 } 1506 identity switching-dcsc { 1507 base switching-capabilities; 1508 description 1509 "Data Channel Switching Capable (DCSC)"; 1510 } 1511 identity switching-lsc { 1512 base switching-capabilities; 1513 description 1514 "Lambda-Switch Capable (LSC)"; 1515 } 1517 identity switching-fsc { 1518 base switching-capabilities; 1519 description 1520 "Fiber-Switch Capable (FSC)"; 1521 } 1523 identity lsp-encoding-types { 1524 description 1525 "Base identity for encoding types"; 1526 } 1528 identity lsp-encoding-packet { 1529 base lsp-encoding-types; 1530 description 1531 "Packet LSP encoding"; 1532 } 1534 identity lsp-encoding-ethernet { 1535 base lsp-encoding-types; 1536 description 1537 "Ethernet LSP encoding"; 1538 } 1540 identity lsp-encoding-pdh { 1541 base lsp-encoding-types; 1542 description 1543 "ANSI/ETSI LSP encoding"; 1544 } 1546 identity lsp-encoding-sdh { 1547 base lsp-encoding-types; 1548 description 1549 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; 1550 } 1552 identity lsp-encoding-digital-wrapper { 1553 base lsp-encoding-types; 1554 description 1555 "Digital Wrapper LSP encoding"; 1556 } 1558 identity lsp-encoding-lambda { 1559 base lsp-encoding-types; 1560 description 1561 "Lambda (photonic) LSP encoding"; 1562 } 1564 identity lsp-encoding-fiber { 1565 base lsp-encoding-types; 1566 description 1567 "Fiber LSP encoding"; 1568 } 1570 identity lsp-encoding-fiber-channel { 1571 base lsp-encoding-types; 1572 description 1573 "FiberChannel LSP encoding"; 1574 } 1576 identity lsp-encoding-oduk { 1577 base lsp-encoding-types; 1578 description 1579 "G.709 ODUk (Digital Path)LSP encoding"; 1580 } 1582 identity lsp-encoding-optical-channel { 1583 base lsp-encoding-types; 1584 description 1585 "Line (e.g., 8B/10B) LSP encoding"; 1586 } 1588 identity lsp-encoding-line { 1589 base lsp-encoding-types; 1590 description 1591 "Line (e.g., 8B/10B) LSP encoding"; 1592 } 1594 /* TE basic features */ 1595 feature p2mp-te { 1596 description 1597 "Indicates support for P2MP-TE"; 1598 } 1600 feature frr-te { 1601 description 1602 "Indicates support for TE FastReroute (FRR)"; 1603 } 1605 feature extended-admin-groups { 1606 description 1607 "Indicates support for TE link extended admin 1608 groups."; 1609 } 1611 feature named-path-affinities { 1612 description 1613 "Indicates support for named path affinities"; 1614 } 1616 feature named-extended-admin-groups { 1617 description 1618 "Indicates support for named extended admin groups"; 1619 } 1621 feature named-srlg-groups { 1622 description 1623 "Indicates support for named SRLG groups"; 1624 } 1626 feature named-path-constraints { 1627 description 1628 "Indicates support for named path constraints"; 1629 } 1631 grouping explicit-route-subobject { 1632 description 1633 "The explicit route subobject grouping"; 1634 choice type { 1635 description 1636 "The explicit route subobject type"; 1637 case ipv4-address { 1638 description 1639 "IPv4 address explicit route subobject"; 1640 leaf v4-address { 1641 type inet:ipv4-address; 1642 description 1643 "An IPv4 address. This address is 1644 treated as a prefix based on the 1645 prefix length value below. Bits beyond 1646 the prefix are ignored on receipt and 1647 SHOULD be set to zero on transmission."; 1648 } 1649 leaf v4-prefix-length { 1650 type uint8; 1651 description 1652 "Length in bits of the IPv4 prefix"; 1653 } 1654 leaf v4-loose { 1655 type boolean; 1656 description 1657 "Describes whether the object is loose 1658 if set, or otherwise strict"; 1659 } 1660 } 1661 case ipv6-address { 1662 description 1663 "IPv6 address Explicit Route Object"; 1664 leaf v6-address { 1665 type inet:ipv6-address; 1666 description 1667 "An IPv6 address. This address is 1668 treated as a prefix based on the 1669 prefix length value below. Bits 1670 beyond the prefix are ignored on 1671 receipt and SHOULD be set to zero 1672 on transmission."; 1673 } 1674 leaf v6-prefix-length { 1675 type uint8; 1676 description 1677 "Length in bits of the IPv4 prefix"; 1678 } 1679 leaf v6-loose { 1680 type boolean; 1681 description 1682 "Describes whether the object is loose 1683 if set, or otherwise strict"; 1684 } 1685 } 1686 case as-number { 1687 leaf as-number { 1688 type uint16; 1689 description "AS number"; 1690 } 1691 description 1692 "Autonomous System explicit route subobject"; 1693 } 1694 case unnumbered-link { 1695 leaf router-id { 1696 type inet:ip-address; 1697 description 1698 "A router-id address"; 1699 } 1700 leaf interface-id { 1701 type uint32; 1702 description "The interface identifier"; 1704 } 1705 description 1706 "Unnumbered link explicit route subobject"; 1707 reference 1708 "RFC3477: Signalling Unnumbered Links in 1709 RSVP-TE"; 1710 } 1711 case label { 1712 leaf value { 1713 type uint32; 1714 description "the label value"; 1715 } 1716 description 1717 "The Label ERO subobject"; 1718 } 1719 /* AS domain sequence..? */ 1720 } 1721 } 1723 grouping record-route-subobject { 1724 description 1725 "The record route subobject grouping"; 1726 choice type { 1727 description 1728 "The record route subobject type"; 1729 case ipv4-address { 1730 leaf v4-address { 1731 type inet:ipv4-address; 1732 description 1733 "An IPv4 address. This address is 1734 treated as a prefix based on the prefix 1735 length value below. Bits beyond the 1736 prefix are ignored on receipt and 1737 SHOULD be set to zero on transmission."; 1738 } 1739 leaf v4-prefix-length { 1740 type uint8; 1741 description 1742 "Length in bits of the IPv4 prefix"; 1743 } 1744 leaf v4-flags { 1745 type uint8; 1746 description 1747 "IPv4 address sub-object flags"; 1748 reference "RFC3209"; 1749 } 1750 } 1751 case ipv6-address { 1752 leaf v6-address { 1753 type inet:ipv6-address; 1754 description 1755 "An IPv6 address. This address is 1756 treated as a prefix based on the 1757 prefix length value below. Bits 1758 beyond the prefix are ignored on 1759 receipt and SHOULD be set to zero 1760 on transmission."; 1761 } 1762 leaf v6-prefix-length { 1763 type uint8; 1764 description 1765 "Length in bits of the IPv4 prefix"; 1766 } 1767 leaf v6-flags { 1768 type uint8; 1769 description 1770 "IPv6 address sub-object flags"; 1771 reference "RFC3209"; 1772 } 1773 } 1774 case label { 1775 leaf value { 1776 type uint32; 1777 description "the label value"; 1778 } 1779 leaf flags { 1780 type uint8; 1781 description 1782 "Label sub-object flags"; 1783 reference "RFC3209"; 1784 } 1785 description 1786 "The Label ERO subobject"; 1787 } 1788 } 1789 } 1791 identity route-usage-type { 1792 description 1793 "Base identity for route usage"; 1794 } 1796 identity route-include-ero { 1797 base route-usage-type; 1798 description 1799 "Include ERO from route"; 1801 } 1803 identity route-exclude-ero { 1804 base route-usage-type; 1805 description 1806 "Exclude ERO from route"; 1807 } 1809 identity route-exclude-srlg { 1810 base route-usage-type; 1811 description 1812 "Exclude SRLG from route"; 1813 } 1815 identity path-metric-type { 1816 description 1817 "Base identity for path metric type"; 1818 } 1820 identity path-metric-te { 1821 base path-metric-type; 1822 description 1823 "TE path metric"; 1824 } 1826 identity path-metric-igp { 1827 base path-metric-type; 1828 description 1829 "IGP path metric"; 1830 } 1832 identity path-tiebreaker-type { 1833 description 1834 "Base identity for path tie-breaker type"; 1835 } 1837 identity path-tiebreaker-minfill { 1838 base path-tiebreaker-type; 1839 description 1840 "Min-Fill LSP path placement"; 1841 } 1843 identity path-tiebreaker-maxfill { 1844 base path-tiebreaker-type; 1845 description 1846 "Max-Fill LSP path placement"; 1847 } 1848 identity path-tiebreaker-randoom { 1849 base path-tiebreaker-type; 1850 description 1851 "Random LSP path placement"; 1852 } 1854 identity bidir-provisioning-mode { 1855 description 1856 "Base identity for bidirectional provisioning 1857 mode."; 1858 } 1860 identity bidir-provisioning-single-sided { 1861 base bidir-provisioning-mode; 1862 description 1863 "Single-sided bidirectional provioning mode"; 1864 } 1866 identity bidir-provisioning-double-sided { 1867 base bidir-provisioning-mode; 1868 description 1869 "Double-sided bidirectional provioning mode"; 1870 } 1872 identity bidir-association-type { 1873 description 1874 "Base identity for bidirectional association type"; 1875 } 1877 identity bidir-assoc-corouted { 1878 base bidir-association-type; 1879 description 1880 "Co-routed bidirectional association type"; 1881 } 1883 identity bidir-assoc-non-corouted { 1884 base bidir-association-type; 1885 description 1886 "Non co-routed bidirectional association type"; 1887 } 1889 identity resource-affinities-type { 1890 description 1891 "Base identity for resource affinities"; 1892 } 1894 identity resource-aff-include-all { 1895 base resource-affinities-type; 1896 description 1897 "The set of attribute filters associated with a 1898 tunnel all of which must be present for a link 1899 to be acceptable"; 1900 } 1902 identity resource-aff-include-any { 1903 base resource-affinities-type; 1904 description 1905 "The set of attribute filters associated with a 1906 tunnel any of which must be present for a link 1907 to be acceptable"; 1908 } 1910 identity resource-aff-exclude-any { 1911 base resource-affinities-type; 1912 description 1913 "The set of attribute filters associated with a 1914 tunnel any of which renders a link unacceptable"; 1915 } 1917 typedef admin-group { 1918 type binary { 1919 length 32; 1920 } 1921 description 1922 "Administrative group/Resource class/Color."; 1923 } 1925 typedef extended-admin-group { 1926 type binary; 1927 description 1928 "Extended administrative group/Resource class/Color."; 1929 } 1931 typedef admin-groups { 1932 type union { 1933 type admin-group; 1934 type extended-admin-group; 1935 } 1936 description "TE administrative group derived type"; 1937 } 1939 typedef srlg { 1940 type uint32; 1941 description "SRLG type"; 1942 } 1943 identity path-computation-srlg-type { 1944 description 1945 "Base identity for SRLG path computation"; 1946 } 1948 identity srlg-ignore { 1949 base path-computation-srlg-type; 1950 description 1951 "Ignores SRLGs in path computation"; 1952 } 1954 identity srlg-strict { 1955 base path-computation-srlg-type; 1956 description 1957 "Include strict SRLG check in path computation"; 1958 } 1960 identity srlg-preferred { 1961 base path-computation-srlg-type; 1962 description 1963 "Include preferred SRLG check in path computation"; 1964 } 1966 identity srlg-weighted { 1967 base path-computation-srlg-type; 1968 description 1969 "Include weighted SRLG check in path computation"; 1970 } 1972 typedef te-metric { 1973 type uint32; 1974 description 1975 "TE link metric"; 1976 } 1978 typedef topology-id { 1979 type string { 1980 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 1981 } 1982 description 1983 "An identifier for a topology."; 1984 } 1986 /** 1987 * TE tunnel generic groupings 1988 **/ 1990 /* Tunnel path selection parameters */ 1991 grouping tunnel-path-selection { 1992 description 1993 "Tunnel path selection properties grouping"; 1994 container path-selection { 1995 description 1996 "Tunnel path selection properties container"; 1997 leaf topology { 1998 type te-types:topology-id; 1999 description 2000 "The tunnel path is computed using the specific 2001 topology identified by this identifier"; 2002 } 2003 leaf cost-limit { 2004 type uint32 { 2005 range "1..4294967295"; 2006 } 2007 description 2008 "The tunnel path cost limit."; 2009 } 2010 leaf hop-limit { 2011 type uint8 { 2012 range "1..255"; 2013 } 2014 description 2015 "The tunnel path hop limit."; 2016 } 2017 leaf metric-type { 2018 type identityref { 2019 base path-metric-type; 2020 } 2021 default path-metric-te; 2022 description 2023 "The tunnel path metric type."; 2024 } 2025 leaf tiebreaker-type { 2026 type identityref { 2027 base path-tiebreaker-type; 2028 } 2029 default path-tiebreaker-maxfill; 2030 description 2031 "The tunnel path computation tie breakers."; 2032 } 2033 leaf ignore-overload { 2034 type boolean; 2035 description 2036 "The tunnel path can traverse overloaded node."; 2037 } 2038 uses tunnel-path-affinities; 2039 uses tunnel-path-srlgs; 2040 } 2041 } 2043 grouping tunnel-path-affinities { 2044 description 2045 "Path affinities grouping"; 2046 container tunnel-path-affinities { 2047 if-feature named-path-affinities; 2048 description 2049 "Path affinities container"; 2050 choice style { 2051 description 2052 "Path affinities representation style"; 2053 case values { 2054 leaf value { 2055 type uint32 { 2056 range "0..4294967295"; 2057 } 2058 description 2059 "Affinity value"; 2060 } 2061 leaf mask { 2062 type uint32 { 2063 range "0..4294967295"; 2064 } 2065 description 2066 "Affinity mask"; 2067 } 2068 } 2069 case named { 2070 list constraints { 2071 key "usage"; 2072 leaf usage { 2073 type identityref { 2074 base resource-affinities-type; 2075 } 2076 description "Affinities usage"; 2077 } 2078 container constraint { 2079 description 2080 "Container for named affinities"; 2081 list affinity-names { 2082 key "name"; 2083 leaf name { 2084 type string; 2085 description 2086 "Affinity name"; 2088 } 2089 description 2090 "List of named affinities"; 2091 } 2092 } 2093 description 2094 "List of named affinity constraints"; 2095 } 2096 } 2097 } 2098 } 2099 } 2101 grouping tunnel-path-srlgs { 2102 description 2103 "Path SRLG properties grouping"; 2104 container tunnel-path-srlgs { 2105 description 2106 "Path SRLG properties container"; 2107 choice style { 2108 description 2109 "Type of SRLG representation"; 2110 case values { 2111 leaf usage { 2112 type identityref { 2113 base route-exclude-srlg; 2114 } 2115 description "SRLG usage"; 2116 } 2117 leaf-list values { 2118 type te-types:srlg; 2119 description "SRLG value"; 2120 } 2121 } 2122 case named { 2123 list constraints { 2124 key "usage"; 2125 leaf usage { 2126 type identityref { 2127 base route-exclude-srlg; 2128 } 2129 description "SRLG usage"; 2130 } 2131 container constraint { 2132 description 2133 "Container for named SRLG list"; 2134 list srlg-names { 2135 key "name"; 2136 leaf name { 2137 type string; 2138 description 2139 "The SRLG name"; 2140 } 2141 description 2142 "List named SRLGs"; 2143 } 2144 } 2145 description 2146 "List of named SRLG constraints"; 2147 } 2148 } 2149 } 2150 } 2151 } 2153 grouping tunnel-bidir-assoc-properties { 2154 description 2155 "TE tunnel associated bidirectional properties 2156 grouping"; 2157 container bidirectional { 2158 description 2159 "TE tunnel associated bidirectional attributes."; 2160 container association { 2161 description 2162 "Tunnel bidirectional association properties"; 2163 leaf id { 2164 type uint16; 2165 description 2166 "The TE tunnel association identifier."; 2167 } 2168 leaf source { 2169 type inet:ip-address; 2170 description 2171 "The TE tunnel association source."; 2172 } 2173 leaf global-source { 2174 type inet:ip-address; 2175 description 2176 "The TE tunnel association global 2177 source."; 2178 } 2179 leaf type { 2180 type identityref { 2181 base bidir-association-type; 2182 } 2183 default bidir-assoc-non-corouted; 2184 description 2185 "The TE tunnel association type."; 2186 } 2187 leaf provisioing { 2188 type identityref { 2189 base bidir-provisioning-mode; 2190 } 2191 description 2192 "Describes the provisioning model of the 2193 associated bidirectional LSP"; 2194 reference 2195 "draft-ietf-teas-mpls-tp-rsvpte-ext- 2196 associated-lsp, section-3.2"; 2197 } 2198 } 2199 } 2200 } 2201 /*** End of TE tunnel groupings ***/ 2203 /** 2204 * TE interface generic groupings 2205 **/ 2206 } 2207 2209 Figure 10: TE basic types YANG module 2211 file "ietf-te@2016-03-20.yang" 2212 module ietf-te { 2214 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 2216 /* Replace with IANA when assigned */ 2217 prefix "te"; 2219 /* Import TE generic types */ 2220 import ietf-te-types { 2221 prefix te-types; 2222 } 2224 import ietf-inet-types { 2225 prefix inet; 2226 } 2228 organization 2229 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2230 Working Group"; 2232 contact 2233 "WG Web: 2234 WG List: 2236 WG Chair: Lou Berger 2237 2239 WG Chair: Vishnu Pavan Beeram 2240 2242 Editor: Tarek Saad 2243 2245 Editor: Rakesh Gandhi 2246 2248 Editor: Vishnu Pavan Beeram 2249 2251 Editor: Himanshu Shah 2252 2254 Editor: Xufeng Liu 2255 2257 Editor: Xia Chen 2258 2260 Editor: Raqib Jones 2261 2263 Editor: Bin Wen 2264 "; 2266 description 2267 "YANG data module for TE configuration, 2268 state, RPC and notifications."; 2270 revision 2016-03-20 { 2271 description "Latest update to TE generic YANG module."; 2272 reference "TBD"; 2273 } 2275 /** 2276 * TE tunnel generic groupings 2277 */ 2279 grouping p2p-secondary-path-params { 2280 description 2281 "tunnel path properties."; 2282 container config { 2283 description 2284 "Configuration parameters relating to 2285 tunnel properties"; 2286 uses path-properties_config; 2287 uses path-params_config; 2288 } 2289 container state { 2290 config false; 2291 description 2292 "State information associated with tunnel 2293 properties"; 2294 uses path-properties_config; 2295 uses path-params_config; 2296 uses p2p-secondary-path-params_state; 2297 } 2298 } 2300 grouping p2p-primary-path-params { 2301 description 2302 "TE tunnel primary path properties grouping"; 2303 container config { 2304 description 2305 "Configuration parameters relating to 2306 tunnel properties"; 2307 uses path-properties_config; 2308 uses path-params_config; 2309 } 2310 container state { 2311 config false; 2312 description 2313 "State information associated with tunnel 2314 properties"; 2315 uses path-params_config; 2316 uses p2p-primary-path-params_state; 2317 } 2318 } 2320 grouping p2p-primary-path-params_state { 2321 description "TE primary path state parameters"; 2322 list lsp { 2323 key "source"; 2324 description "List of LSPs associated with the tunnel."; 2326 leaf source { 2327 type leafref { 2328 path "../../../../../../lsps-state/lsp/source"; 2329 } 2330 description 2331 "Tunnel sender address extracted from 2332 SENDER_TEMPLATE object"; 2333 reference "RFC3209"; 2334 } 2335 leaf destination { 2336 type leafref { 2337 path "../../../../../../lsps-state/lsp/destination"; 2338 } 2339 description 2340 "Tunnel endpoint address extracted from 2341 SESSION object"; 2342 reference "RFC3209"; 2343 } 2344 leaf tunnel-id { 2345 type leafref { 2346 path "../../../../../../lsps-state/lsp/tunnel-id"; 2347 } 2348 description 2349 "Tunnel identifier used in the SESSION 2350 that remains constant over the life 2351 of the tunnel."; 2352 reference "RFC3209"; 2353 } 2354 leaf lsp-id { 2355 type leafref { 2356 path "../../../../../../lsps-state/lsp/lsp-id"; 2357 } 2358 description 2359 "Identifier used in the SENDER_TEMPLATE 2360 and the FILTER_SPEC that can be changed 2361 to allow a sender to share resources with 2362 itself."; 2363 reference "RFC3209"; 2364 } 2365 leaf extended-tunnel-id { 2366 type leafref { 2367 path "../../../../../../lsps-state/lsp/extended-tunnel-id"; 2368 } 2369 description 2370 "Extended Tunnel ID of the LSP."; 2371 reference "RFC3209"; 2372 } 2373 leaf type { 2374 type leafref { 2375 path "../../../../../../lsps-state/lsp/type"; 2377 } 2378 description "LSP type P2P or P2MP"; 2379 } 2380 } 2381 } 2383 grouping p2p-secondary-path-params_state { 2384 description "TE secondary path state parameters"; 2385 list lsp { 2386 key "source"; 2387 description "List of LSPs associated with the tunnel."; 2389 leaf source { 2390 type leafref { 2391 path "../../../../../../../lsps-state/lsp/source"; 2392 } 2393 description 2394 "Tunnel sender address extracted from 2395 SENDER_TEMPLATE object"; 2396 reference "RFC3209"; 2397 } 2398 leaf destination { 2399 type leafref { 2400 path "../../../../../../../lsps-state/lsp/destination"; 2401 } 2402 description 2403 "Tunnel endpoint address extracted from 2404 SESSION object"; 2405 reference "RFC3209"; 2406 } 2407 leaf tunnel-id { 2408 type leafref { 2409 path "../../../../../../../lsps-state/lsp/tunnel-id"; 2410 } 2411 description 2412 "Tunnel identifier used in the SESSION 2413 that remains constant over the life 2414 of the tunnel."; 2415 reference "RFC3209"; 2416 } 2417 leaf lsp-id { 2418 type leafref { 2419 path "../../../../../../../lsps-state/lsp/lsp-id"; 2420 } 2421 description 2422 "Identifier used in the SENDER_TEMPLATE 2423 and the FILTER_SPEC that can be changed 2424 to allow a sender to share resources with 2425 itself."; 2426 reference "RFC3209"; 2427 } 2428 leaf extended-tunnel-id { 2429 type leafref { 2430 path "../../../../../../../lsps-state/lsp/extended-tunnel-id"; 2431 } 2432 description 2433 "Extended Tunnel ID of the LSP."; 2434 reference "RFC3209"; 2435 } 2436 leaf type { 2437 type leafref { 2438 path "../../../../../../../lsps-state/lsp/type"; 2439 } 2440 description "LSP type P2P or P2MP"; 2441 } 2442 } 2443 } 2445 grouping path-params_config { 2446 description 2447 "TE tunnel path parameters configuration grouping"; 2448 leaf path-named-constraint { 2449 if-feature te-types:named-path-constraints; 2450 type string; 2451 description 2452 "Reference to a globally defined named path 2453 constraint set"; 2454 } 2455 uses te-types:tunnel-path-selection; 2456 choice type { 2457 description 2458 "Describes the path type"; 2459 case dynamic { 2460 leaf dynamic { 2461 type empty; 2462 description 2463 "A CSPF dynamically computed path"; 2464 } 2465 } 2466 case explicit { 2467 leaf explicit-path-name { 2468 type string; 2469 description 2470 "The explicit-path name"; 2471 } 2472 list explicit-route-objects { 2473 key "index"; 2474 description 2475 "List of explicit route objects"; 2476 leaf index { 2477 type uint8 { 2478 range "0..255"; 2479 } 2480 description 2481 "Index of this explicit route object"; 2482 } 2483 leaf explicit-route-usage { 2484 type identityref { 2485 base te-types:route-usage-type; 2486 } 2487 description "An explicit-route hop action."; 2488 } 2489 uses te-types:explicit-route-subobject; 2490 } 2491 } 2492 } 2493 leaf no-cspf { 2494 type empty; 2495 description 2496 "Indicates no CSPF is to be attempted on this 2497 path."; 2498 } 2499 leaf lockdown { 2500 type empty; 2501 description 2502 "Indicates no reoptimization to be attempted for 2503 this path."; 2504 } 2505 } 2507 /* TE tunnel configuration data */ 2508 grouping tunnel-params_config { 2509 description 2510 "Configuration parameters relating to TE tunnel"; 2511 leaf name { 2512 type string; 2513 description "TE tunnel name."; 2514 } 2515 leaf type { 2516 type identityref { 2517 base te-types:tunnel-type; 2518 } 2519 description "TE tunnel type."; 2521 } 2522 leaf identifier { 2523 type uint16; 2524 description 2525 "TE tunnel Identifier."; 2526 } 2527 leaf description { 2528 type string; 2529 description 2530 "Textual description for this TE tunnel"; 2531 } 2532 leaf lsp-priority-setup { 2533 type uint8 { 2534 range "0..7"; 2535 } 2536 description 2537 "TE LSP setup priority"; 2538 } 2539 leaf lsp-priority-hold { 2540 type uint8 { 2541 range "0..7"; 2542 } 2543 description 2544 "TE LSP hold priority"; 2545 } 2546 leaf lsp-protection-type { 2547 type identityref { 2548 base te-types:lsp-prot-type; 2549 } 2550 description "LSP protection type."; 2551 } 2552 leaf admin-status { 2553 type identityref { 2554 base te-types:state-type; 2555 } 2556 default te-types:state-up; 2557 description "TE tunnel administrative state."; 2558 } 2559 leaf source { 2560 type inet:ip-address; 2561 description 2562 "TE tunnel source address."; 2563 } 2564 leaf destination { 2565 /* Add when check */ 2566 type inet:ip-address; 2567 description 2568 "P2P tunnel destination address"; 2570 } 2571 leaf src-tp-id { 2572 type binary; 2573 description 2574 "TE tunnel source termination point identifier."; 2575 } 2576 leaf tunnel-dst-tp-id { 2577 /* Add when check */ 2578 type binary; 2579 description 2580 "TE tunnel destination termination point identifier."; 2581 } 2582 uses te-types:tunnel-bidir-assoc-properties; 2583 } 2585 grouping tunnel-params_state { 2586 description 2587 "State parameters relating to TE tunnel"; 2588 leaf oper-status { 2589 type identityref { 2590 base te-types:state-type; 2591 } 2592 description "TE tunnel operational state."; 2593 } 2594 } 2596 grouping path-properties_config { 2597 description "TE path properties grouping"; 2598 leaf name { 2599 type string; 2600 description "TE path name"; 2601 } 2602 leaf preference { 2603 type uint8 { 2604 range "1..255"; 2605 } 2606 description 2607 "Specifies a preference for this path. The lower the 2608 number higher the preference"; 2609 } 2610 } 2612 /* TE tunnel configuration/state grouping */ 2613 grouping tunnel-properties { 2614 description 2615 "Top level grouping for tunnel properties."; 2616 container config { 2617 description 2618 "Configuration parameters relating to 2619 tunnel properties"; 2620 uses tunnel-params_config; 2621 } 2622 container state { 2623 config false; 2624 description 2625 "State information associated with tunnel 2626 properties"; 2627 uses tunnel-params_config; 2628 uses tunnel-params_state; 2629 } 2630 list primary-paths { 2631 key "name"; 2632 description 2633 "List of primary paths for this tunnel."; 2634 leaf name { 2635 type leafref { 2636 path "../config/name"; 2637 } 2638 description "TE path name"; 2639 } 2640 leaf preference { 2641 type leafref { 2642 path "../config/preference"; 2643 } 2644 description 2645 "Specifies a preference for this path. The lower the 2646 number higher the preference"; 2647 } 2648 uses p2p-primary-path-params; 2649 list secondary-paths { 2650 key "name"; 2651 description 2652 "List of secondary paths for this tunnel."; 2653 leaf name { 2654 type leafref { 2655 path "../config/name"; 2656 } 2657 description "TE path name"; 2658 } 2659 leaf preference { 2660 type leafref { 2661 path "../config/preference"; 2662 } 2663 description 2664 "Specifies a preference for this path. The lower the 2665 number higher the preference"; 2667 } 2668 uses p2p-secondary-path-params; 2669 } 2670 } 2671 } 2672 /*** End of TE tunnel groupings ***/ 2674 /** 2675 * LSP related generic groupings 2676 */ 2677 grouping lsp-record-route-information_state { 2678 description "recorded route information grouping"; 2679 container lsp-record-route { 2680 description "RSVP recorded route object information"; 2681 list record-route-subobjects { 2682 when "../origin-type != 'ingress'" { 2683 description "Applicable on non-ingress LSPs only"; 2684 } 2685 key "subobject-index"; 2686 description ""; 2687 leaf subobject-index { 2688 type uint32; 2689 description "RRO subobject index"; 2690 } 2691 uses te-types:record-route-subobject; 2692 } 2693 } 2694 } 2696 grouping lsp-properties_state { 2697 description 2698 "State parameters relating to LSP"; 2699 leaf oper-status { 2700 type identityref { 2701 base te-types:state-type; 2702 } 2703 description "LSP operational state."; 2704 } 2706 leaf origin-type { 2707 type enumeration { 2708 enum ingress { 2709 description 2710 "Origin ingress"; 2711 } 2712 enum egress { 2713 description 2714 "Origin egress"; 2716 } 2717 enum transit { 2718 description 2719 "transit"; 2720 } 2721 } 2722 description 2723 "Origin type of LSP relative to the location 2724 of the local switch in the path."; 2725 } 2727 leaf lsp-resource-status { 2728 type enumeration { 2729 enum primary { 2730 description 2731 "A primary LSP is a fully established LSP for 2732 which the resource allocation has been committed 2733 at the data plane"; 2734 } 2735 enum secondary { 2736 description 2737 "A secondary LSP is an LSP that has been provisioned 2738 in the control plane only; e.g. resource allocation 2739 has not been committed at the data plane"; 2740 } 2741 } 2742 description "LSP resource allocation type"; 2743 reference "rfc4872, section 4.2.1"; 2744 } 2746 leaf lsp-protection-role { 2747 type enumeration { 2748 enum working { 2749 description 2750 "A working LSP must be a primary LSP whilst a protecting 2751 LSP can be either a primary or a secondary LSP. Also, 2752 known as protected LSPs when working LSPs are associated 2753 with protecting LSPs."; 2754 } 2755 enum protecting { 2756 description 2757 "A secondary LSP is an LSP that has been provisioned 2758 in the control plane only; e.g. resource allocation 2759 has not been committed at the data plane"; 2760 } 2761 } 2762 description "LSP role type"; 2763 reference "rfc4872, section 4.2.1"; 2765 } 2767 leaf lsp-operational-status { 2768 type empty; 2769 description 2770 "This bit is set when a protecting LSP is carrying the normal 2771 traffic after protection switching"; 2772 } 2773 } 2774 /*** End of TE LSP groupings ***/ 2776 /** 2777 * TE global generic groupings 2778 */ 2780 /* Global named admin-groups configuration data */ 2781 grouping named-admin-groups_config { 2782 description 2783 "Global named administrative groups configuration 2784 grouping"; 2785 list named-admin-groups { 2786 if-feature te-types:extended-admin-groups; 2787 if-feature te-types:named-extended-admin-groups; 2788 key "name"; 2789 description 2790 "List of named TE admin-groups"; 2791 leaf name { 2792 type string; 2793 description 2794 "A string name that uniquely identifies a TE 2795 interface named admin-group"; 2796 } 2797 leaf bit-position { 2798 type uint32; 2799 description 2800 "Bit position representing the administrative group"; 2801 } 2802 } 2803 } 2805 /* Global named admin-srlgs configuration data */ 2806 grouping named-srlgs_config { 2807 description 2808 "Global named SRLGs configuration 2809 grouping"; 2810 list named-srlgs { 2811 if-feature te-types:named-srlg-groups; 2812 key "name"; 2813 description 2814 "A list of named SRLG groups"; 2815 leaf name { 2816 type string; 2817 description 2818 "A string name that uniquely identifies a TE 2819 interface named srlg"; 2820 } 2821 leaf group { 2822 type te-types:srlg; 2823 description "An SRLG value"; 2824 } 2825 } 2826 } 2828 /* Global named explicit-paths configuration data */ 2829 grouping named-explicit-paths_config { 2830 description 2831 "Global explicit path configuration 2832 grouping"; 2833 list named-explicit-paths { 2834 key "name"; 2835 description 2836 "A list of explicit paths"; 2837 leaf name { 2838 type string; 2839 description 2840 "A string name that uniquely identifies an 2841 explicit path"; 2842 } 2843 list explicit-route-objects { 2844 key "index"; 2845 description 2846 "List of explicit route objects"; 2847 leaf index { 2848 type uint8 { 2849 range "0..255"; 2850 } 2851 description 2852 "Index of this explicit route object"; 2853 } 2854 leaf explicit-route-usage { 2855 type identityref { 2856 base te-types:route-usage-type; 2857 } 2858 description "An explicit-route hop action."; 2859 } 2860 uses te-types:explicit-route-subobject; 2862 } 2863 } 2864 } 2866 /* Global named paths constraints configuration data */ 2867 grouping named-path-constraints_config { 2868 description 2869 "Global named path constraints configuration 2870 grouping"; 2871 list named-constraints { 2872 if-feature te-types:named-path-constraints; 2873 key "name"; 2874 description 2875 "A list of named path constraints"; 2876 leaf name { 2877 type string; 2878 description 2879 "A string name that uniquely identifies a 2880 path constraint set"; 2881 } 2882 uses te-types:tunnel-path-selection; 2883 } 2884 } 2886 /* TE globals container data */ 2887 grouping globals-grouping { 2888 description 2889 "Globals TE system-wide configuration data grouping"; 2890 container globals { 2891 description 2892 "Globals TE system-wide configuration data container"; 2893 container config { 2894 description 2895 "Configuration parameters for system-wide 2896 parameters"; 2897 uses named-admin-groups_config; 2898 uses named-srlgs_config; 2899 uses named-explicit-paths_config; 2900 uses named-path-constraints_config; 2901 } 2902 container state { 2903 config false; 2904 description 2905 "State for system-wide parameters"; 2906 uses named-admin-groups_config; 2907 uses named-srlgs_config; 2908 uses named-explicit-paths_config; 2909 uses named-path-constraints_config; 2911 } 2912 } 2913 } 2915 /* TE tunnels container data */ 2916 grouping tunnels-grouping { 2917 description 2918 "Tunnels TE configuration data grouping"; 2919 container tunnels { 2920 description 2921 "Tunnels TE configuration data container"; 2923 list tunnel { 2924 key "name type"; 2925 unique "identifier"; 2926 description "TE tunnel."; 2927 leaf name { 2928 type leafref { 2929 path "../config/name"; 2930 } 2931 description "TE tunnel name."; 2932 } 2933 leaf type { 2934 type leafref { 2935 path "../config/type"; 2936 } 2937 description "TE tunnel type."; 2938 } 2939 leaf identifier { 2940 type leafref { 2941 path "../config/identifier"; 2942 } 2943 description 2944 "TE tunnel Identifier."; 2945 } 2946 uses tunnel-properties; 2947 } 2948 } 2949 } 2951 /* TE LSPs ephemeral state container data */ 2952 grouping lsps-state-grouping { 2953 description 2954 "LSPs state operational data grouping"; 2955 container lsps-state { 2956 config "false"; 2957 description "LSPs operational state data."; 2958 list lsp { 2959 key 2960 "source destination tunnel-id lsp-id "+ 2961 "extended-tunnel-id type"; 2962 description 2963 "List of LSPs associated with the tunnel."; 2964 leaf source { 2965 type inet:ip-address; 2966 description 2967 "Tunnel sender address extracted from 2968 SENDER_TEMPLATE object"; 2969 reference "RFC3209"; 2970 } 2971 leaf destination { 2972 type inet:ip-address; 2973 description 2974 "Tunnel endpoint address extracted from 2975 SESSION object"; 2976 reference "RFC3209"; 2977 } 2978 leaf tunnel-id { 2979 type uint16; 2980 description 2981 "Tunnel identifier used in the SESSION 2982 that remains constant over the life 2983 of the tunnel."; 2984 reference "RFC3209"; 2985 } 2986 leaf lsp-id { 2987 type uint16; 2988 description 2989 "Identifier used in the SENDER_TEMPLATE 2990 and the FILTER_SPEC that can be changed 2991 to allow a sender to share resources with 2992 itself."; 2993 reference "RFC3209"; 2994 } 2995 leaf extended-tunnel-id { 2996 type inet:ip-address; 2997 description 2998 "Extended Tunnel ID of the LSP."; 2999 reference "RFC3209"; 3000 } 3001 leaf type { 3002 type identityref { 3003 base te-types:tunnel-type; 3004 } 3005 description "The LSP type P2P or P2MP"; 3007 } 3008 uses lsp-properties_state; 3009 uses lsp-record-route-information_state; 3010 } 3011 } 3012 } 3013 /*** End of TE global groupings ***/ 3015 /** 3016 * TE configurations container 3017 */ 3018 container te { 3019 presence "Enable TE feature."; 3020 description 3021 "TE global container."; 3023 /* TE Global Configuration Data */ 3024 uses globals-grouping; 3026 /* TE Tunnel Configuration Data */ 3027 uses tunnels-grouping; 3029 /* TE LSPs State Data */ 3030 uses lsps-state-grouping; 3031 } 3033 /* TE Global RPCs/execution Data */ 3034 rpc globals-rpc { 3035 description 3036 "Execution data for TE global."; 3037 } 3039 /* TE interfaces RPCs/execution Data */ 3040 rpc interfaces-rpc { 3041 description 3042 "Execution data for TE interfaces."; 3043 } 3045 /* TE Tunnel RPCs/execution Data */ 3046 rpc tunnels-rpc { 3047 description 3048 "TE tunnels RPC nodes"; 3049 } 3051 /* TE Global Notification Data */ 3052 notification globals-notif { 3053 description 3054 "Notification messages for Global TE."; 3056 } 3058 /* TE Tunnel Notification Data */ 3059 notification tunnels-notif { 3060 description 3061 "Notification messages for TE tunnels."; 3062 } 3063 } 3064 3066 Figure 11: TE generic YANG module 3068 file "ietf-te-device@2016-03-20.yang" 3069 module ietf-te-device { 3071 namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; 3073 /* Replace with IANA when assigned */ 3074 prefix "te-dev"; 3076 /* Import TE generic types */ 3077 import ietf-te { 3078 prefix ietf-te; 3079 } 3081 /* Import TE generic types */ 3082 import ietf-te-types { 3083 prefix te-types; 3084 } 3086 import ietf-interfaces { 3087 prefix if; 3088 } 3090 import ietf-inet-types { 3091 prefix inet; 3092 } 3094 organization 3095 "IETF Traffic Engineering Architecture and Signaling (TEAS) 3096 Working Group"; 3098 contact 3099 "WG Web: 3100 WG List: 3102 WG Chair: Lou Berger 3103 3105 WG Chair: Vishnu Pavan Beeram 3106 3108 Editor: Tarek Saad 3109 3111 Editor: Rakesh Gandhi 3112 3114 Editor: Vishnu Pavan Beeram 3115 3117 Editor: Himanshu Shah 3118 3120 Editor: Xufeng Liu 3121 3123 Editor: Xia Chen 3124 3126 Editor: Raqib Jones 3127 3129 Editor: Bin Wen 3130 "; 3132 description 3133 "YANG data module for TE device configurations, 3134 state, RPC and notifications."; 3136 revision 2016-03-20 { 3137 description "Latest update to TE device YANG module."; 3138 reference "TBD"; 3139 } 3141 /** 3142 * TE LSP device state grouping 3143 */ 3144 grouping lsps-device_state { 3145 description "TE LSP device state grouping"; 3146 container lsp-timers { 3147 when "../origin-type = 'ingress'" { 3148 description "Applicable to ingress LSPs only"; 3149 } 3150 description "Ingress LSP timers"; 3151 leaf life-time { 3152 type uint32; 3153 units seconds; 3154 description 3155 "lsp life time"; 3156 } 3158 leaf time-to-install { 3159 type uint32; 3160 units seconds; 3161 description 3162 "lsp installation delay time"; 3163 } 3165 leaf time-to-die { 3166 type uint32; 3167 units seconds; 3168 description 3169 "lsp expire delay time"; 3170 } 3171 } 3173 container downstream-info { 3174 when "../../origin-type != 'egress'" { 3175 description "Applicable to ingress LSPs only"; 3176 } 3177 description 3178 "downstream information"; 3180 leaf nhop { 3181 type inet:ip-address; 3182 description 3183 "downstream nexthop."; 3184 } 3186 leaf outgoing-interface { 3187 type if:interface-ref; 3188 description 3189 "downstream interface."; 3190 } 3192 leaf neighbor { 3193 type inet:ip-address; 3194 description 3195 "downstream neighbor."; 3196 } 3198 leaf label { 3199 type uint32; 3200 description 3201 "downstream label."; 3202 } 3203 } 3205 container upstream-info { 3206 when "../../origin-type != 'ingress'" { 3207 description "Applicable to non-ingress LSPs only"; 3208 } 3209 description 3210 "upstream information"; 3212 leaf phop { 3213 type inet:ip-address; 3214 description 3215 "upstream nexthop or previous-hop."; 3216 } 3218 leaf neighbor { 3219 type inet:ip-address; 3220 description 3221 "upstream neighbor."; 3222 } 3224 leaf label { 3225 type uint32; 3226 description 3227 "upstream label."; 3228 } 3229 } 3230 } 3232 /** 3233 * TE global device generic groupings 3234 */ 3235 /* Global device specific configuration data */ 3236 grouping globals-device_config { 3237 description 3238 "Top level grouping for global config data."; 3239 leaf lsp-install-interval { 3240 type uint32; 3241 units seconds; 3242 description 3243 "lsp installation delay time"; 3244 } 3245 leaf lsp-cleanup-interval { 3246 type uint32; 3247 units seconds; 3248 description 3249 "lsp cleanup delay time"; 3250 } 3251 } 3253 /* Global device specific state data */ 3254 grouping globals-device_state { 3255 description 3256 "Top level grouping for global state data."; 3257 leaf tunnels-counter { 3258 type uint32; 3259 description "Tunnels count"; 3260 } 3261 leaf lsps-counter { 3262 type uint32; 3263 description "Tunnels count"; 3264 } 3265 } 3267 /* TE interface container data */ 3268 grouping interfaces-grouping { 3269 description 3270 "Interface TE configuration data grouping"; 3271 container interfaces { 3272 description 3273 "Configuration data model for TE interfaces."; 3274 uses te-all-attributes; 3275 list interface { 3276 key "interface"; 3277 description "TE interfaces."; 3278 leaf interface { 3279 type if:interface-ref; 3280 description 3281 "TE interface name."; 3282 } 3283 /* TE interface parameters */ 3284 uses te-attributes; 3285 } 3286 } 3287 } 3289 /** 3290 * TE interface device generic groupings 3291 */ 3292 grouping te-admin-groups_config { 3293 description 3294 "TE interface affinities grouping"; 3295 choice admin-group-type { 3296 description 3297 "TE interface administrative groups 3298 representation type"; 3299 case value-admin-groups { 3300 choice value-admin-group-type { 3301 description "choice of admin-groups"; 3302 case admin-groups { 3303 description 3304 "Administrative group/Resource 3305 class/Color."; 3306 leaf admin-group { 3307 type te-types:admin-group; 3308 description 3309 "TE interface administrative group"; 3310 } 3311 } 3312 case extended-admin-groups { 3313 if-feature te-types:extended-admin-groups; 3314 description 3315 "Extended administrative group/Resource 3316 class/Color."; 3317 leaf extended-admin-group { 3318 type te-types:extended-admin-group; 3319 description 3320 "TE interface extended administrativei 3321 group"; 3322 } 3323 } 3324 } 3325 } 3326 case named-admin-groups { 3327 list named-admin-groups { 3328 if-feature te-types:extended-admin-groups; 3329 if-feature te-types:named-extended-admin-groups; 3330 key named-admin-group; 3331 description 3332 "A list of named admin-group entries"; 3333 leaf named-admin-group { 3334 type leafref { 3335 path "../../../../../ietf-te:globals/ietf-te:config/" + 3336 "ietf-te:named-admin-groups/ietf-te:name"; 3337 } 3338 description "A named admin-group entry"; 3339 } 3340 } 3341 } 3342 } 3343 } 3344 /* TE interface SRLGs */ 3345 grouping te-srlgs_config { 3346 description "TE interface SRLG grouping"; 3347 choice srlg-type { 3348 description "Choice of SRLG configuration"; 3349 case value-srlgs { 3350 list values { 3351 key "value"; 3352 description "List of SRLG values that 3353 this link is part of."; 3354 leaf value { 3355 type uint32 { 3356 range "0..4294967295"; 3357 } 3358 description 3359 "Value of the SRLG"; 3360 } 3361 } 3362 } 3363 case named-srlgs { 3364 list named-srlgs { 3365 if-feature te-types:named-srlg-groups; 3366 key named-srlg; 3367 description 3368 "A list of named SRLG entries"; 3369 leaf named-srlg { 3370 type leafref { 3371 path "../../../../../ietf-te:globals/ietf-te:config/" + 3372 "ietf-te:named-srlgs/ietf-te:name"; 3373 } 3374 description 3375 "A named SRLG entry"; 3376 } 3377 } 3378 } 3379 } 3380 } 3382 /* TE interface flooding parameters */ 3383 grouping te-flooding-parameters_config { 3384 description "Interface TE flooding properties."; 3385 container thresholds { 3386 description "Flooding threshold values in percentages."; 3387 choice type { 3388 description 3389 "Describes the flooding threshold step method"; 3390 case equal-steps { 3391 choice equal-step-type { 3392 description 3393 "Describes whether up and down equal step 3394 size are same or different"; 3395 case up-down-different-step { 3396 leaf up-step { 3397 type uint8 { 3398 range "0..100"; 3399 } 3400 description 3401 "Set single percentage threshold 3402 for increasing resource 3403 allocation"; 3404 } 3405 leaf down-step { 3406 type uint8 { 3407 range "0..100"; 3408 } 3409 description 3410 "Set single percentage threshold 3411 for decreasing resource 3412 allocation"; 3413 } 3414 } 3415 case up-down-same-step { 3416 leaf step { 3417 type uint8 { 3418 range "0..100"; 3419 } 3420 description 3421 "Set single percentage threshold 3422 for increasing and decreasing 3423 resource allocation"; 3424 } 3425 } 3426 } 3427 } 3428 case unequal-steps { 3429 list up-steps { 3430 key "value"; 3431 description 3432 "Set nultuple percentage thresholds for 3433 increasing resource allocation"; 3434 leaf value { 3435 type uint8 { 3436 range "0..100"; 3437 } 3438 description 3439 "Percentage value"; 3441 } 3442 } 3443 list down-steps { 3444 key "value"; 3445 description 3446 "Set nultuple percentage thresholds for 3447 decreasing resource allocation"; 3448 leaf value { 3449 type uint8 { 3450 range "0..100"; 3451 } 3452 description 3453 "Percentage value"; 3454 } 3455 } 3456 } 3457 } 3458 } 3459 } 3461 /* TE interface metric */ 3462 grouping te-metric_config { 3463 description "Interface TE metric grouping"; 3464 leaf te-metric { 3465 type te-types:te-metric; 3466 description "Interface TE metric."; 3467 } 3468 } 3470 /* TE interface switching capabilities */ 3471 grouping te-switching-cap_config { 3472 description 3473 "TE interface switching capabilities"; 3474 list switching-capabilities { 3475 key "switching-capability"; 3476 description 3477 "List of interface capabilities for this interface"; 3478 leaf switching-capability { 3479 type identityref { 3480 base te-types:switching-capabilities; 3481 } 3482 description 3483 "Switching Capability for this interface"; 3484 } 3485 leaf encoding { 3486 type identityref { 3487 base te-types:lsp-encoding-types; 3488 } 3489 description 3490 "Encoding supported by this interface"; 3491 } 3492 } 3493 } 3495 grouping te-advertisements_state { 3496 description 3497 "TE interface advertisements state grouping"; 3498 container te-advertisements_state { 3499 description 3500 "TE interface advertisements state container"; 3501 leaf flood-interval { 3502 type uint32; 3503 description 3504 "The periodic flooding interval"; 3505 } 3506 leaf last-flooded-time { 3507 type uint32; 3508 units seconds; 3509 description 3510 "Time elapsed since last flooding in seconds"; 3511 } 3512 leaf next-flooded-time { 3513 type uint32; 3514 units seconds; 3515 description 3516 "Time remained for next flooding in seconds"; 3517 } 3518 leaf last-flooded-trigger { 3519 type enumeration { 3520 enum link-up { 3521 description "Link-up flooding trigger"; 3522 } 3523 enum link-down { 3524 description "Link-up flooding trigger"; 3525 } 3526 enum threshold-up { 3527 description 3528 "Bandwidth reservation up threshold"; 3529 } 3530 enum threshold-down { 3531 description 3532 "Bandwidth reservation down threshold"; 3533 } 3534 enum bandwidth-change { 3535 description "Banwidth capacity change"; 3536 } 3537 enum user-initiated { 3538 description "Initiated by user"; 3539 } 3540 enum srlg-change { 3541 description "SRLG property change"; 3542 } 3543 enum periodic-timer { 3544 description "Periodic timer expired"; 3545 } 3546 } 3547 description "Trigger for the last flood"; 3548 } 3549 list advertized-level-areas { 3550 key level-area; 3551 description 3552 "List of areas the TE interface is advertised 3553 in"; 3554 leaf level-area { 3555 type uint32; 3556 description 3557 "The IGP area or level where the TE 3558 interface state is advertised in"; 3559 } 3560 } 3561 } 3562 } 3564 /* TE interface attributes grouping */ 3565 grouping te-attributes { 3566 description "TE attributes configuration grouping"; 3567 container config { 3568 description 3569 "Configuration parameters for interface TE 3570 attributes"; 3571 uses te-metric_config; 3572 uses te-admin-groups_config; 3573 uses te-srlgs_config; 3574 uses te-switching-cap_config; 3575 uses te-flooding-parameters_config; 3576 } 3577 container state { 3578 config false; 3579 description 3580 "State parameters for interface TE metric"; 3581 uses te-metric_config; 3582 uses te-admin-groups_config; 3583 uses te-srlgs_config; 3584 uses te-switching-cap_config; 3585 uses te-flooding-parameters_config; 3586 uses te-advertisements_state; 3587 } 3588 } 3590 grouping te-all-attributes { 3591 description 3592 "TE attributes configuration grouping for all 3593 interfaces"; 3594 container config { 3595 description 3596 "Configuration parameters for all interface TE 3597 attributes"; 3598 uses te-flooding-parameters_config; 3599 } 3600 container state { 3601 config false; 3602 description 3603 "State parameters for all interface TE metric"; 3604 uses te-flooding-parameters_config; 3605 } 3606 } 3607 /*** End of TE interfaces device groupings ***/ 3609 /** 3610 * TE device augmentations 3611 */ 3612 augment "/ietf-te:te" { 3613 description "TE global container."; 3614 /* TE Interface Configuration Data */ 3615 uses interfaces-grouping; 3616 } 3618 /* TE globals device augmentation */ 3619 augment "/ietf-te:te/ietf-te:globals/ietf-te:config" { 3620 description 3621 "Global TE device specific configuration parameters"; 3622 uses globals-device_config; 3623 } 3624 augment "/ietf-te:te/ietf-te:globals/ietf-te:state" { 3625 description 3626 "Global TE device specific state parameters"; 3627 uses globals-device_config; 3628 uses globals-device_state; 3629 } 3631 /* TE LSPs device state augmentation */ 3632 augment "/ietf-te:te/ietf-te:lsps-state/ietf-te:lsp" { 3633 description 3634 "LSP device dependent downstream info augmentation"; 3635 uses lsps-device_state; 3636 } 3638 /* TE interfaces RPCs/execution Data */ 3639 rpc interfaces-rpc { 3640 description 3641 "Execution data for TE interfaces."; 3642 } 3644 /* TE Interfaces Notification Data */ 3645 notification interfaces-notif { 3646 description 3647 "Notification messages for TE interfaces."; 3648 } 3649 } 3650 3652 Figure 12: TE device YANG module 3654 file "ietf-te-mpls-types@2016-03-20.yang" 3655 module ietf-te-mpls-types { 3657 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls-types"; 3659 /* Replace with IANA when assigned */ 3660 prefix "te-mpls-types"; 3662 import ietf-inet-types { prefix inet; } 3664 organization 3665 "IETF TEAS Working Group"; 3667 contact "Fill me"; 3669 description 3670 "This module contains a collection of generally 3671 useful TE specific YANG data type defintions."; 3673 revision 2016-03-20 { 3674 description "Latest revision of TE MPLS types"; 3675 reference "RFC3209"; 3676 } 3678 /* Describes egress LSP label allocation */ 3679 typedef egress-label { 3680 type enumeration { 3681 enum "IPv4-EXPLICIT-NULL" { 3682 description 3683 "Use IPv4 explicit-NULL MPLS label at the 3684 egress"; 3685 } 3686 enum "IPv6-EXPLICIT-NULL" { 3687 description 3688 "Use IPv6 explicit-NULL MPLS label at the 3689 egress"; 3690 } 3691 enum "IMPLICIT-NULL" { 3692 description 3693 "Use implicit-NULL MPLS label at the egress"; 3694 } 3695 enum "NON-NULL"{ 3696 description 3697 "Use a non NULL MPLS label at the egress"; 3698 } 3699 } 3700 description 3701 "Describes egress label allocation"; 3702 } 3704 identity backup-type { 3705 description 3706 "Base identity for backup protection types"; 3707 } 3709 identity backup-facility { 3710 base backup-type; 3711 description 3712 "Use facility backup to protect LSPs traversing 3713 protected TE interface"; 3714 reference 3715 "RFC49090: RSVP-TE Fast Reroute"; 3716 } 3718 identity backup-detour { 3719 base backup-type; 3720 description 3721 "Use detour or 1-for-1 protection"; 3722 reference 3723 "RFC49090: RSVP-TE Fast Reroute"; 3724 } 3726 identity backup-protection-type { 3727 description 3728 "Base identity for backup protection type"; 3729 } 3731 identity backup-protection-link { 3732 base backup-protection-type; 3733 description 3734 "backup provides link protection only"; 3735 } 3737 identity backup-protection-node-link { 3738 base backup-protection-type; 3739 description 3740 "backup offers node (preferred) or link protection"; 3741 } 3743 identity bc-model-type { 3744 description 3745 "Base identity for Diffserv-TE bandwidth constraint 3746 model type"; 3747 } 3749 identity bc-model-rdm { 3750 base bc-model-type; 3751 description 3752 "Russian Doll bandwidth constraint model type."; 3753 } 3755 identity bc-model-mam { 3756 base bc-model-type; 3757 description 3758 "Maximum Allocation bandwidth constraint 3759 model type."; 3760 } 3762 identity bc-model-mar { 3763 base bc-model-type; 3764 description 3765 "Maximum Allocation with Reservation 3766 bandwidth constraint model type."; 3767 } 3769 grouping bandwidth-constraint-values { 3770 description 3771 "Packet bandwidth contraints values"; 3772 choice value-type { 3773 description 3774 "Value representation"; 3775 case percentages { 3776 container perc-values { 3777 uses bandwidth-mpls-constraints; 3778 description 3779 "Percentage values"; 3780 } 3781 } 3782 case absolutes { 3783 container abs-values { 3784 uses bandwidth-mpls-constraints; 3785 description 3786 "Absolute values"; 3787 } 3788 } 3789 } 3790 } 3792 grouping bandwidth-mpls-reservable { 3793 description 3794 "Packet reservable bandwidth"; 3795 choice bandwidth-value { 3796 description "Reservable bandwidth configuraiton choice"; 3797 case absolute { 3798 leaf absolute-value { 3799 type uint32; 3800 description "Absolute value of the bandwidth"; 3801 } 3802 } 3803 case precentage { 3804 leaf percent-value { 3805 type uint32 { 3806 range "0..4294967295"; 3807 } 3808 description "Percentage reservable bandwidth"; 3809 } 3810 description 3811 "The maximum reservable bandwidth on the 3812 interface"; 3813 } 3814 } 3815 choice bc-model-type { 3816 description 3817 "Reservable bandwidth percentage capacity 3818 values."; 3819 case bc-model-rdm { 3820 container bc-model-rdm { 3821 description 3822 "Russian Doll Model Bandwidth Constraints."; 3823 uses bandwidth-mpls-constraints; 3825 } 3826 } 3827 case bc-model-mam { 3828 container bc-model-mam { 3829 uses bandwidth-mpls-constraints; 3830 description 3831 "Maximum Allocation Model Bandwidth 3832 Constraints."; 3833 } 3834 } 3835 case bc-model-mar { 3836 container bc-model-mar { 3837 uses bandwidth-mpls-constraints; 3838 description 3839 "Maximum Allocation with Reservation Model 3840 Bandwidth Constraints."; 3841 } 3842 } 3843 } 3844 } 3846 typedef bfd-type { 3847 type enumeration { 3848 enum classical { 3849 description "BFD classical session type."; 3850 } 3851 enum seamless { 3852 description "BFD seamless session type."; 3853 } 3854 } 3855 default "classical"; 3856 description 3857 "Type of BFD session"; 3858 } 3860 typedef bfd-encap-mode-type { 3861 type enumeration { 3862 enum gal { 3863 description 3864 "BFD with GAL mode"; 3865 } 3866 enum ip { 3867 description 3868 "BFD with IP mode"; 3869 } 3870 } 3871 default ip; 3872 description 3873 "Possible BFD transport modes when running over TE 3874 LSPs."; 3875 } 3877 grouping bandwidth-mpls-constraints { 3878 description "Bandwidth constraints."; 3879 container bandwidth-mpls-constraints { 3880 description 3881 "Holds the bandwidth contraints properties"; 3882 leaf maximum-reservable { 3883 type uint32 { 3884 range "0..4294967295"; 3885 } 3886 description 3887 "The maximum reservable bandwidth on the 3888 interface"; 3889 } 3890 leaf-list bc-value { 3891 type uint32 { 3892 range "0..4294967295"; 3893 } 3894 max-elements 8; 3895 description 3896 "The bandwidth contraint type"; 3897 } 3898 } 3899 } 3901 grouping tunnel-forwarding-properties { 3902 description "Properties for using tunnel in forwarding."; 3903 container forwarding { 3904 description 3905 "Tunnel forwarding properties container"; 3906 leaf load-share { 3907 type uint32 { 3908 range "1..4294967295"; 3909 } 3910 description "ECMP tunnel forwarding 3911 load-share factor."; 3912 } 3913 choice policy-type { 3914 description 3915 "Tunnel policy type"; 3916 container class { 3917 description 3918 "Tunnel forwarding per class properties"; 3919 leaf class { 3920 type uint8 { 3921 range "1..7"; 3922 } 3923 description 3924 "The class associated with this tunnel"; 3925 } 3926 } 3927 container group { 3928 description 3929 "Tunnel frowarding per group properties"; 3930 leaf-list classes { 3931 type uint8 { 3932 range "1..7"; 3933 } 3934 description 3935 "The forwarding class"; 3936 } 3937 } 3938 } 3939 } 3940 } 3942 grouping tunnel-routing-properties { 3943 description 3944 "TE tunnel routing properties"; 3945 choice routing-choice { 3946 description 3947 "Announces the tunnel to IGP as either 3948 autoroute or forwarding adjacency."; 3949 case autoroute { 3950 container autoroute-announce { 3951 presence "Enable autoroute announce."; 3952 description 3953 "Announce the TE tunnel as autoroute to 3954 IGP for use as IGP shortcut."; 3955 leaf-list routing-afs { 3956 type inet:ip-version; 3957 description 3958 "Address families"; 3959 } 3960 choice metric-type { 3961 description 3962 "Type of metric to use when announcing 3963 the tunnel as shortcut"; 3964 leaf metric { 3965 type uint32 { 3966 range "1..2147483647"; 3967 } 3968 description 3969 "Describes the metric to use when 3970 announcing the tunnel as shortcut"; 3971 } 3972 leaf relative-metric { 3973 type int32 { 3974 range "-10..10"; 3975 } 3976 description 3977 "Relative TE metric to use when 3978 announcing the tunnel as shortcut"; 3979 } 3980 leaf absolute-metric { 3981 type uint32 { 3982 range "1..2147483647"; 3983 } 3984 description 3985 "Absolute TE metric to use when 3986 announcing the tunnel as shortcut"; 3987 } 3988 } 3989 } 3990 } 3991 case forwarding-adjacency { 3992 container forwarding-adjacency { 3993 presence "Enable forwarding adjacency 3994 on the tunnel."; 3995 description 3996 "Announce the TE tunnel 3997 as forwarding adjacency."; 3998 leaf holdtime { 3999 type uint32 { 4000 range "0..4294967295"; 4001 } 4002 description 4003 "Holdtime in seconds after 4004 tunnel becomes UP."; 4005 } 4006 leaf-list routing-afs { 4007 type inet:ip-version; 4008 description 4009 "Address families"; 4010 } 4011 } 4012 } 4013 } 4014 } 4015 } 4016 4017 Figure 13: TE MPLS specific types YANG module 4019 file "ietf-te-mpls@2016-03-20.yang" 4020 module ietf-te-mpls { 4022 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls"; 4024 /* Replace with IANA when assigned */ 4025 prefix "te-mpls"; 4027 /* Import TE generic types */ 4028 import ietf-te { 4029 prefix te; 4030 } 4032 /* Import MPLS TE specific types */ 4033 import ietf-te-mpls-types { 4034 prefix te-mpls-type; 4035 } 4037 organization 4038 "IETF Traffic Engineering Architecture and Signaling (TEAS) 4039 Working Group"; 4041 contact 4042 "WG Web: 4043 WG List: 4045 WG Chair: Lou Berger 4046 4048 WG Chair: Vishnu Pavan Beeram 4049 4051 Editor: Tarek Saad 4052 4054 Editor: Rakesh Gandhi 4055 4057 Editor: Vishnu Pavan Beeram 4058 4060 Editor: Himanshu Shah 4061 4063 Editor: Xufeng Liu 4064 4066 Editor: Xia Chen 4067 4069 Editor: Raqib Jones 4070 4072 Editor: Bin Wen 4073 "; 4075 description 4076 "YANG data module for MPLS TE configurations, 4077 state, RPC and notifications."; 4079 revision 2016-03-20 { 4080 description "Latest update to MPLS TE YANG module."; 4081 reference "TBD"; 4082 } 4084 /* MPLS TE tunnel properties*/ 4085 grouping tunnel-mpls-properties_config { 4086 description "MPLS TE tunnel properties"; 4087 uses te-mpls-type:tunnel-routing-properties; 4088 uses te-mpls-type:tunnel-forwarding-properties; 4089 } 4091 /*** End of MPLS TE tunnel configuration/state */ 4093 /** 4094 * MPLS TE augmentations 4095 */ 4097 /* MPLS TE tunnel augmentations */ 4098 augment "/te:te/te:tunnels/te:tunnel/te:config" { 4099 description "MPLS TE tunnel config augmentations"; 4100 uses tunnel-mpls-properties_config; 4101 } 4102 augment "/te:te/te:tunnels/te:tunnel/te:state" { 4103 description "MPLS TE tunnel state augmentations"; 4104 uses tunnel-mpls-properties_config; 4105 } 4107 /* MPLS TE LSPs augmentations */ 4108 } 4109 4111 Figure 14: TE MPLS YANG module 4113 5. IANA Considerations 4115 This document registers the following URIs in the IETF XML registry 4116 [RFC3688]. Following the format in [RFC3688], the following 4117 registration is requested to be made. 4119 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 4120 is an XML namespace. 4122 URI: urn:ietf:params:xml:ns:yang:ietf-te-device XML: N/A, the 4123 requested URI is an XML namespace. 4125 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls XML: N/A, the requested 4126 URI is an XML namespace. 4128 URI: urn:ietf:params:xml:ns:yang:ietf-te-types XML: N/A, the 4129 requested URI is an XML namespace. 4131 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls-types XML: N/A, the 4132 requested URI is an XML namespace. 4134 This document registers a YANG module in the YANG Module Names 4135 registry [RFC6020]. 4137 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 4138 ietf-te reference: RFC3209 4140 name: ietf-te-device namespace: urn:ietf:params:xml:ns:yang:ietf-te 4141 prefix: ietf-te-device reference: RFC3209 4143 name: ietf-te-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 4144 mpls prefix: ietf-te-mpls reference: RFC3209 4146 name: ietf-te-types namespace: urn:ietf:params:xml:ns:yang:ietf-te- 4147 types prefix: ietf-te-types reference: RFC3209 4149 name: ietf-te-mpls-types namespace: urn:ietf:params:xml:ns:yang:ietf- 4150 te-mpls-types prefix: ietf-te-mpls-types reference: RFC3209 4152 6. Security Considerations 4154 The YANG module defined in this memo is designed to be accessed via 4155 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 4156 secure transport layer and the mandatory-to-implement secure 4157 transport is SSH [RFC6242]. The NETCONF access control model 4158 [RFC6536] provides means to restrict access for particular NETCONF 4159 users to a pre-configured subset of all available NETCONF protocol 4160 operations and content. 4162 There are a number of data nodes defined in the YANG module which are 4163 writable/creatable/deletable (i.e., config true, which is the 4164 default). These data nodes may be considered sensitive or vulnerable 4165 in some network environments. Write operations (e.g., ) 4166 to these data nodes without proper protection can have a negative 4167 effect on network operations. Following are the subtrees and data 4168 nodes and their sensitivity/vulnerability: 4170 "/te/globals": This module specifies the global TE configurations on 4171 a device. Unauthorized access to this container could cause the 4172 device to ignore packets it should receive and process. 4174 "/te/tunnels": This list specifies the configured TE tunnels on a 4175 device. Unauthorized access to this list could cause the device to 4176 ignore packets it should receive and process. 4178 "/te/lsps-state": This list specifies the state derived LSPs. 4179 Unauthorized access to this list could cause the device to ignore 4180 packets it should receive and process. 4182 "/te/interfaces": This list specifies the configured TE interfaces on 4183 a device. Unauthorized access to this list could cause the device to 4184 ignore packets it should receive and process. 4186 7. Acknowledgement 4188 The authors would like to thank the members of the multi-vendor YANG 4189 design team who are involved in the definition of this model. 4191 The authors would also like to thank Loa Andersson, Lou Berger, Igor 4192 Bryskin, Aihua Guo, and Xian Zhang for their comments and providing 4193 valuable feedback on this document. 4195 8. References 4197 8.1. Normative References 4199 [I-D.bjorklund-netmod-structural-mount] 4200 Bjorklund, M., "YANG Structural Mount", draft-bjorklund- 4201 netmod-structural-mount-02 (work in progress), February 4202 2016. 4204 [I-D.ietf-netmod-routing-cfg] 4205 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 4206 Management", draft-ietf-netmod-routing-cfg-21 (work in 4207 progress), March 2016. 4209 [I-D.ietf-teas-yang-rsvp] 4210 Beeram, V., Gandhi, R., Liu, X., Saad, T., Chen, X., 4211 Jones, R., and B. Wen, "A YANG Data Model for Resource 4212 Reservation Protocol (RSVP)", draft-ietf-teas-yang-rsvp-01 4213 (work in progress), October 2015. 4215 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4216 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 4217 RFC2119, March 1997, 4218 . 4220 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 4221 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 4222 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 4223 . 4225 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 4226 Switching (GMPLS) Signaling Resource ReserVation Protocol- 4227 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 4228 10.17487/RFC3473, January 2003, 4229 . 4231 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4232 DOI 10.17487/RFC3688, January 2004, 4233 . 4235 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4236 the Network Configuration Protocol (NETCONF)", RFC 6020, 4237 DOI 10.17487/RFC6020, October 2010, 4238 . 4240 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4241 and A. Bierman, Ed., "Network Configuration Protocol 4242 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4243 . 4245 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 4246 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 4247 . 4249 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 4250 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 4251 10.17487/RFC6536, March 2012, 4252 . 4254 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 4255 6991, DOI 10.17487/RFC6991, July 2013, 4256 . 4258 8.2. Informative References 4260 [I-D.clemm-netmod-mount] 4261 Clemm, A., Medved, J., and E. Voit, "Mounting YANG-Defined 4262 Information from Remote Datastores", draft-clemm-netmod- 4263 mount-03 (work in progress), April 2015. 4265 [I-D.openconfig-mpls-consolidated-model] 4266 George, J., Fang, L., eric.osborne@level3.com, e., and R. 4267 Shakir, "MPLS / TE Model for Service Provider Networks", 4268 draft-openconfig-mpls-consolidated-model-02 (work in 4269 progress), October 2015. 4271 [I-D.openconfig-netmod-opstate] 4272 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 4273 of Operational State Data in YANG", draft-openconfig- 4274 netmod-opstate-01 (work in progress), July 2015. 4276 Authors' Addresses 4278 Tarek Saad (editor) 4279 Cisco Systems Inc 4281 Email: tsaad@cisco.com 4283 Rakesh Gandhi 4284 Cisco Systems Inc 4286 Email: rgandhi@cisco.com 4288 Xufeng Liu 4289 Ericsson 4291 Email: xufeng.liu@ericsson.com 4292 Vishnu Pavan Beeram 4293 Juniper Networks 4295 Email: vbeeram@juniper.net 4297 Himanshu Shah 4298 Ciena 4300 Email: hshah@ciena.com 4302 Xia Chen 4303 Huawei Technologies 4305 Email: jescia.chenxia@huawei.com 4307 Raqib Jones 4308 Brocade 4310 Email: raqib@Brocade.com 4312 Bin Wen 4313 Comcast 4315 Email: Bin_Wen@cable.comcast.com