idnits 2.17.1 draft-ietf-teas-yang-te-04.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 147 has weird spacing: '... rw for r...' == Line 148 has weird spacing: '... ro for r...' == Line 753 has weird spacing: '...rw name str...' == Line 764 has weird spacing: '...rw name str...' == Line 820 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 (July 05, 2016) is 2823 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-22 == Outdated reference: A later version (-19) exists of draft-ietf-teas-yang-rsvp-03 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) == Outdated reference: A later version (-06) exists of draft-clemm-netmod-mount-04 Summary: 1 error (**), 0 flaws (~~), 11 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TEAS Working Group T. Saad, Ed. 3 Internet-Draft R. Gandhi 4 Intended status: Standards Track Cisco Systems Inc 5 Expires: January 6, 2017 X. Liu 6 Ericsson 7 V. Beeram 8 Juniper Networks 9 H. Shah 10 Ciena 11 I. Bryskin 12 X. Chen 13 Huawei Technologies 14 R. Jones 15 Brocade 16 B. Wen 17 Comcast 18 July 05, 2016 20 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 21 draft-ietf-teas-yang-te-04 23 Abstract 25 This document defines a YANG data model for the configuration and 26 management of Traffic Engineering (TE) interfaces, tunnels and Label 27 Switched Paths (LSPs). The model is divided into YANG modules that 28 classify data into generic, device-specific, technology agnostic, and 29 technology-specific elements. The model also includes module(s) that 30 contain reusable TE data types and data groupings. 32 This model covers the configuration, operational state, remote 33 procedural calls, and event notifications data. 35 Status of This Memo 37 This Internet-Draft is submitted in full conformance with the 38 provisions of BCP 78 and BCP 79. 40 Internet-Drafts are working documents of the Internet Engineering 41 Task Force (IETF). Note that other groups may also distribute 42 working documents as Internet-Drafts. The list of current Internet- 43 Drafts is at http://datatracker.ietf.org/drafts/current/. 45 Internet-Drafts are draft documents valid for a maximum of six months 46 and may be updated, replaced, or obsoleted by other documents at any 47 time. It is inappropriate to use Internet-Drafts as reference 48 material or to cite them other than as "work in progress." 49 This Internet-Draft will expire on January 6, 2017. 51 Copyright Notice 53 Copyright (c) 2016 IETF Trust and the persons identified as the 54 document authors. All rights reserved. 56 This document is subject to BCP 78 and the IETF Trust's Legal 57 Provisions Relating to IETF Documents 58 (http://trustee.ietf.org/license-info) in effect on the date of 59 publication of this document. Please review these documents 60 carefully, as they describe your rights and restrictions with respect 61 to this document. Code Components extracted from this document must 62 include Simplified BSD License text as described in Section 4.e of 63 the Trust Legal Provisions and are provided without warranty as 64 described in the Simplified BSD License. 66 Table of Contents 68 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 69 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 70 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 71 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 72 1.4. Open Issues and Next Steps . . . . . . . . . . . . . . . 5 73 1.4.1. TE Technology Models . . . . . . . . . . . . . . . . 5 74 1.4.2. State Data Organization . . . . . . . . . . . . . . . 6 75 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 6 76 2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 7 77 2.2. Design Considerations . . . . . . . . . . . . . . . . . . 9 78 2.3. Optional Features . . . . . . . . . . . . . . . . . . . . 10 79 2.4. Configuration Inheritance . . . . . . . . . . . . . . . . 10 80 2.5. Routing Instance Support . . . . . . . . . . . . . . . . 10 81 3. TE Generic Model Organization . . . . . . . . . . . . . . . . 10 82 3.1. Global Configuration and State Data . . . . . . . . . . . 12 83 3.2. Interfaces Configuration and State Data . . . . . . . . . 13 84 3.3. Tunnels Configuration and State Data . . . . . . . . . . 14 85 3.4. TE LSPs State Data . . . . . . . . . . . . . . . . . . . 15 86 3.5. Global RPC Data . . . . . . . . . . . . . . . . . . . . . 15 87 3.6. Interface RPC Data . . . . . . . . . . . . . . . . . . . 15 88 3.7. Tunnel RPC Data . . . . . . . . . . . . . . . . . . . . . 15 89 3.8. Global Notifications Data . . . . . . . . . . . . . . . . 15 90 3.9. Interfaces Notifications Data . . . . . . . . . . . . . . 16 91 3.10. Tunnel Notification Data . . . . . . . . . . . . . . . . 16 92 4. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 31 93 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 100 94 6. Security Considerations . . . . . . . . . . . . . . . . . . . 101 95 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 101 96 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 102 97 8.1. Normative References . . . . . . . . . . . . . . . . . . 102 98 8.2. Informative References . . . . . . . . . . . . . . . . . 103 99 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 103 101 1. Introduction 103 YANG [RFC6020] is a data definition language that was introduced to 104 define the contents of a conceptual data store that allows networked 105 devices to be managed using NETCONF [RFC6241]. YANG is proving 106 relevant beyond its initial confines, as bindings to other interfaces 107 (e.g. ReST) and encoding other than XML (e.g. JSON) are being 108 defined. Furthermore, YANG data models can be used as the basis of 109 implementation for other interface, such as CLI and programmatic 110 APIs. 112 This document covers the YANG data model for the TE generic, TE 113 device-specific, TE MPLS technology, TE Segment Routing (SR) data 114 models. It also describes helper modules that define TE generic 115 grouping(s) and data types that can be imported by other modules 116 whenever necessary.. 118 The document defines the high-level relationship between these 119 modules and to other external protocol modules. It is expected that 120 other data plane technology model(s) will augment the TE generic 121 model. Also, the generic model does not include any signaling 122 protocol specific data, and it is expected other TE signaling 123 protocol modules (e.g. RSVP-TE ([RFC3209], [RFC3473]), and Segment- 124 Routing TE (SR-TE)) will augment the TE generic model. 126 1.1. Terminology 128 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 129 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 130 and "OPTIONAL" are to be interpreted as described in BCP 14, RFC 2119 131 [RFC2119]. 133 1.2. Tree Diagram 135 A simplified graphical representation of the data model is presented 136 in each section of the model. The following notations are used for 137 the YANG model data tree representation. 139 141 is one of: 142 + for current 143 x for deprecated 144 o for obsolete 146 is one of: 147 rw for read-write configuration data 148 ro for read-only non-configuration data 149 -x for execution rpcs 150 -n for notifications 152 is the name of the node 154 If the node is augmented into the tree from another module, its name 155 is printed as : 157 is one of: 158 ? for an optional leaf or node 159 ! for a presence container 160 * for a leaf-list or list 161 Brackets [] for a list's keys 162 Curly braces {} for optional feature that make node 163 conditional 164 Colon : for marking case nodes 165 Ellipses ("...") subtree contents not shown 167 Parentheses enclose choice and case nodes, and case nodes are also 168 marked with a colon (":"). 170 is the name of the type for leafs and leaf-lists. 172 1.3. Prefixes in Data Node Names 174 In this document, names of data nodes and other data model objects 175 are prefixed using the standard prefix associated with the 176 corresponding YANG imported modules, as shown in Table 1. 178 +--------+-----------------+-----------+ 179 | Prefix | YANG module | Reference | 180 +--------+-----------------+-----------+ 181 | yang | ietf-yang-types | [RFC6991] | 182 | inet | ietf-inet-types | [RFC6991] | 183 +--------+-----------------+-----------+ 185 Table 1: Prefixes and corresponding YANG modules 187 1.4. Open Issues and Next Steps 189 This section describes the number of open issues that are under 190 consideration. As issues are resolved, this section will be updated 191 to reflect this and be left there for reference. It is expected that 192 all the issues in this section will be addressed before the document 193 will be ready for final publication. 195 1.4.1. TE Technology Models 197 This document describes the generic TE YANG data model that is 198 independent of any dataplane technology. One of the design 199 objectives is to allow specific data plane technologies models to 200 reuse the generic TE data model and possibly augment it with 201 technology specific data model(s).There are multiple options being 202 considered to achieve this: 204 o The generic TE model, including the lists of TE tunnels, LSPs, and 205 interfaces is defined and rooted at the top of the YANG tree. 206 Specific leaf(s) under the TE tunnel, LSP, or interface identify 207 the technology layer that it belongs to. This approach implies a 208 single list for each of TE tunnel(s), LSP(s), and interface(s) in 209 the model carries elements of different technology layers. 211 o An instance of the generic TE YANG model can be mounted in the 212 YANG tree once for each TE technology layer(s). This approach 213 provides separation of elements belonging to different technology 214 layers into separate lists per layer in the data model. For 215 example, the proposal(s) in 216 [I-D.bjorklund-netmod-structural-mount] and 217 [I-D.clemm-netmod-mount] allow for this capability by "mounting" 218 the YANG model at a specific target. 220 o The generic TE data node(s) and TE list(s) for tunnels, LSPs, and 221 interfaces are defined as grouping(s) in a separate module. The 222 specific technology layer imports the generic TE groupings and 223 uses them their respective technology specific module. 225 The options above are currently under investigation to determine the 226 best suited approach. 228 Finally, the TE generic model does not include signaling protocol 229 data. It is expected TE signaling protocol modules defined in other 230 document(s) that cover RSVP-TE ([RFC3209], [RFC3473]), and Segment- 231 Routing TE (SR-TE) will augment the TE generic model. 233 1.4.2. State Data Organization 235 Pure state data (for example, ephemeral or protocol derived state 236 objects) can be modeled using one of the options below: 238 o Contained inside a read-write container, in a "state" sub- 239 container, as shown in Figure 3 241 o Contained inside a separate read-only container, for example a 242 lsps-state container 244 The first option allows for placing configuration data in the read- 245 write "config" sub-container, and by placing state data under the 246 read-only "state" sub-container of the parent container. However, 247 when using approach for ephemeral or purely derived state (e.g. auto 248 tunnels), and since in this case the state sub-container hangs off a 249 read-write parent container, it will be possible to delete or modify 250 the parent container and subsequently the ephemeral read-only state 251 contained within (see Figure 3). 253 The second option entails defining a new read-only parent container 254 in the model (e.g. neighbors-state) that holds the data. 256 This revision of the draft adopts the first option for ephemeral or 257 state derived tunnels. Further discussions on this topic are 258 expected to close on the best choice to adopt. 260 2. Model Overview 262 The data model defined in this document covers the core TE features 263 that are commonly supported across different vendor implementations. 264 The support of extended or vendor specific TE feature(s) are expected 265 to be in augmentations to the data models defined in this document. 267 Throughout the model, the approach described in 268 [I-D.openconfig-netmod-opstate] is adopted to represent data 269 pertaining to configuration intended state, applied state and derived 270 state data elements. Each container in the model hold a "config" and 271 "state" sub-container. The "config" sub-container is used to 272 represent the intended configurable parameters, and the state sub- 273 container is used to represent both the applied configurable 274 parameters and any derived state, such as counters or statistics 275 information. 277 The decision to use this approach was made to better align with the 278 MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model] 279 and maximize reusability of groupings defined in this document and 280 allow for possible convergence between the two models. 282 2.1. Module(s) Relationship 284 The TE generic model defined in "ietf-te.yang" covers the building 285 blocks that are device independent and agnostic of any specific 286 technology or control plane instances. The TE device model defined 287 in "ietf-te-device.yang" augments the TE generic model and covers 288 data that is specific to a device - for example, attributes of TE 289 interfaces, or TE timers that are local to a TE node. 291 The TE data relevant to a specific instantiations of data plane 292 technology exists in a separate YANG module(s) that augment the TE 293 generic model. For example, the MPLS-TE module "ietf-te-mpls.yang" 294 is defined in Figure 10 and augments the TE generic model as shown in 295 Figure 1. Similarly, the module "ietf-te-sr-mpls.yang" models the 296 Segment Routing (SR) TE specific data and augments the TE generic and 297 MPLS-TE model(s). 299 The TE data relevant to a TE specific signaling protocol 300 instantiation is outside the scope and is covered in other documents. 301 For example, the RSVP-TE [RFC3209] YANG model augmentation of the TE 302 model is covered in [I-D.ietf-teas-yang-rsvp], and other signaling 303 protocol model(s) (e.g. for Segment-Routing TE) are expected to also 304 augment the TE generic model. 306 ^: import 307 TE generic +---------+ o: augment 308 module | ietf-te |o-------------+ 309 +---------+ \ 310 | o \ \ 311 | |\ \ \ 312 | | \ V \ 313 | | +----------------+ \ 314 | | | ietf-te-device | TE device module 315 | | +----------------+ \ 316 | | o o \ 317 | | / \ \ 318 v | / V V 319 +--------------+ +---------------+ 320 RSVP-TE module | ietf-rsvp-te |o . | ietf-te-mpls | 321 +--------------+ \ +---------------+ 322 ^ \ o 323 | \ +-----------------+ 324 | \ | ietf-te-sr-mpls | 325 | \ +-----------------+ 326 | \ 327 o +-------------------+ 328 +-----------+ | ietf-rsvp-otn-te | 329 RSVP module | ietf-rsvp | +-------------------+ 330 +-----------+ RSVP-TE with OTN 331 extensions 332 (shown for illustration 333 not in this document) 335 Figure 1: Relationship of TE module(s) with other signaling protocol 336 modules 338 +---------+ 339 | ietf-te | ^: import 340 +---------+ o: augment 341 import ^ 342 | 343 | 344 +---------------+ 345 | ietf-te-types | 346 +---------------+ 347 o o 348 | \ 349 | \ 350 +-------------------+ +-------------------+ 351 | ietf-te-mpls-types | | ietf-te-otn-types | 352 +-------------------+ +-------------------+ 353 (shown for illustration 354 not in this document) 356 Figure 2: Relationship between generic and technology specific TE 357 types modules 359 2.2. Design Considerations 361 The following considerations with respect data organization are taken 362 into account: 364 o reusable data elements are grouped into separate TE types 365 module(s) that can be readily imported by other modules whenever 366 needed 368 o reusable TE data types that are data plane independent are grouped 369 in the TE generic types module "ietf-te-types.yang" 371 o reusable TE data elements that are data plane specific (e.g. 372 packet MPLS or switching technologies as defined in [RFC3473]) are 373 expected to be grouped in a technology- specific types module, 374 e.g. "ietf-te-mpls-types.yang". It is expected that technology 375 specific types will augment TE generic types as shown in Figure 2 377 o The TE generic model contains device independent data and can be 378 used to model data off a device (e.g. on a controller). The TE 379 data that is device-specific are grouped in a separate module as 380 shown in Figure 1. 382 o In general, little information in the model is designated as 383 "mandatory", to allow freedom to vendors to adapt the data model 384 to their specific product implementation. 386 2.3. Optional Features 388 Optional features that are beyond the base TE model and are left to 389 the specific vendor to decide support using vendor model augmentation 390 and/or using feature checks. 392 This model declares a number of TE functions as features (such as 393 P2MP-TE, soft-preemption etc.). 395 2.4. Configuration Inheritance 397 The defined data model supports configuration inheritance for 398 tunnels, paths, and interfaces. Data elements defined in the main 399 container (e.g. that encompasses the list of tunnels, interfaces, or 400 paths) are assumed to apply equally to all elements of the list, 401 unless overridden explicitly for a certain element of a list (e.g. a 402 tunnel, interface or path). 404 2.5. Routing Instance Support 406 There two main popular types of routing protocol configuration that 407 vendors may support: 409 o protocol centric - all the protocol related configuration is 410 contained within the protocol itself. Configuration belonging to 411 multiple instances of the protocol running in different routing- 412 instances (e.g. VRFs) are contained under the default routing 413 instance [I-D.ietf-netmod-routing-cfg]: 415 o VRF centric - all the protocol related configuration for a 416 routing- instance is contained within this routing-instance. 418 On-going discussions within the IETF community have converged on 419 adopting the VRF centric approach. The proposed model in this 420 document adheres to this conclusion. 422 3. TE Generic Model Organization 424 This model covers configuration, state, RPC, and notifications data 425 pertaining to TE global parameters, interfaces, and tunnels 426 parameters. 428 The container "te" is the top level container in this data model. 429 The presence of this container is expected to enable TE function 430 system wide. 432 The approach described in [I-D.openconfig-netmod-opstate] allows for 433 modeling the intended and respective applied and derived state. The 434 TE state data in this model falls into one of the following 435 categories: 437 o State corresponding to applied configuration 439 o State corresponding to derived state, counters, stats, etc. 441 o State corresponding to ephemeral data (e.g. LSPs, etc.) 443 Data for the first two categories are contained under the respective 444 "state" sub-container of the intended (e.g. tunnel). The last 445 category falls under a separate - e.g. lsps-state- container that 446 contains the attributes of a purely derived state data (e.g. 447 ephemeral objects) that are not associated with any configuration as 448 shown in Figure 3. 450 module: ietf-te 451 +--rw te! 452 +--rw globals 453 +-- rw config 454 <> 455 . 456 +-- ro state 457 <> 458 <> 459 . 460 . 462 +--rw tunnels 463 +-- rw config 464 <> 465 . 466 +-- ro state 467 <> 468 <> 469 . 470 . 471 rpcs: 472 +---x globals-rpc 473 +---x tunnels-rpc 474 notifications: 475 +---n globals-notif 476 +---n tunnels-notif 478 Figure 3: TE generic highlevel model view 480 3.1. Global Configuration and State Data 482 This branch of the data model covers configurations that control TE 483 features behavior system-wide, and its respective state. Examples of 484 such configuration data are: 486 o Table of named SRLG mappings 488 o Table of named (extended) administrative groups mappings 490 o Table of named explicit paths to be referenced by TE tunnels 492 o Table of named path-constraints sets 494 o Auto-bandwidth global parameters 496 o TE diff-serve TE-class maps 498 o System-wide capabilities for LSP reoptimization (included in the 499 TE device model) 501 * Reoptimization timers (periodic interval, LSP installation and 502 cleanup) 504 o System-wide capabilities for TE state flooding (included in the TE 505 device model) 507 * Periodic flooding interval 509 o Global capabilities that affect the originating, traversing and 510 terminating LSPs. For example: 512 * Path selection parameters (e.g. metric to optimize, etc.) 514 * Path or segment protection parameters 516 The approach described in [I-D.openconfig-netmod-opstate] is utilized 517 to include the global state data under the global "state" sub- 518 container as shown in Figure 3. 520 Examples of such states are: 522 o Global statistics (signaling, admission, preemption, flooding) 524 o Global counters (number of tunnels/LSPs/interfaces) 526 3.2. Interfaces Configuration and State Data 528 This branch of the model covers configuration and state data items, 529 corresponding to TE interfaces that are present on a specific device. 530 A new module is introduced that holds the TE device specific 531 properties. 533 Examples of TE interface properties are: 535 o Maximum reservable bandwidth, bandwidth constraints (BC) 537 o Flooding parameters 539 * Flooding intervals and threshold values 541 o Fast reroute backup tunnel properties (such as static, auto- 542 tunnel) 544 o interface attributes 546 * (Extended) administrative groups 548 * SRLG values 550 * TE metric value 552 The state corresponding to the TE interfaces applied configuration, 553 protocol derived state, and stats and counters all fall under the 554 interface "state" sub-container as shown in Figure 4 below: 556 module: ietf-te 557 +--rw te! 558 +--rw interfaces 559 . 560 +-- rw te-attributes 561 +-- rw config 562 <> 563 . 564 +-- ro state 565 <> 566 <> 568 Figure 4: TE interface state 570 This covers state data for TE interfaces such as: 572 o Bandwidth information: maximum bandwidth, available bandwidth at 573 different priorities and for each class-type (CT) 575 o List of admitted LSPs 577 * Name, bandwidth value and pool, time, priority 579 o Statistics: state counters, flooding counters, admission counters 580 (accepted/rejected), preemption counters 582 o Adjacency information 584 * Neighbor address 586 * Metric value 588 3.3. Tunnels Configuration and State Data 590 This branch of the model covers intended, and corresponding applied 591 configuration for tunnels. As well, it holds possible derived state 592 pertaining to TE tunnels. 594 The approach described in [I-D.openconfig-netmod-opstate] is utilized 595 for the inclusion of operational and statistical data as shown in 596 Figure 5. 598 module: ietf-te 599 +--rw te! 600 +--rw tunnels 601 . 602 +-- rw config 603 <> 604 . 605 +-- ro state 606 <> 607 <> 609 Figure 5: TE interface state tree 611 Examples of tunnel configuration date for TE tunnels: 613 o Name and type (e.g. P2P, P2MP) of the TE tunnel 615 o Admin-state 617 o Set of primary and corresponding secondary paths 619 o Routing usage (auto-route announce, forwarding adjacency) 621 o Policy based routing (PBR) parameters 623 3.4. TE LSPs State Data 625 TE LSPs are derived state data that is usually instantiated via 626 signaling protocols. TE LSPs exists on routers as ingress (starting 627 point of LSP), transit (mid-point of LSP ), or egress (termination 628 point of the LSP). TE LSPs are distinguished by the 5 tuple, and LSP 629 type (P2P or P2MP). In the model, the nodes holding LSPs data exist 630 in the read-only lsps-state list as show in Figure 6. 632 3.5. Global RPC Data 634 This branch of the model covers system-wide RPC execution data to 635 trigger actions and optionally expect responses. Examples of such TE 636 commands are to: 638 o Clear global TE statistics of various features 640 3.6. Interface RPC Data 642 This collection of data in the model defines TE interface RPC 643 execution commands. Examples of these are to: 645 o Clear TE statistics for all or for individual TE interfaces 647 o Trigger immediate flooding for one or all TE interfaces 649 3.7. Tunnel RPC Data 651 This branch of the model covers TE tunnel RPC execution data to 652 trigger actions and optionally expect responses. Examples of such TE 653 commands are: 655 o Clear statistics for all or for individual tunnels 657 o Trigger the tear and setup of existing tunnels or LSPs. 659 3.8. Global Notifications Data 661 This branch of the model covers system-wide notifications data. The 662 node notifies the registered events to the server using the defined 663 notification messages. Example of such global TE events are: 665 o Backup tunnel FRR active and not-active state transition events 667 3.9. Interfaces Notifications Data 669 This branch of the model covers TE interfaces related notifications 670 data. The TE interface configuration is used for specific events 671 registration. Notifications are sent for registered events to the 672 server. Example events for TE interfaces are: 674 o Interface creation and deletion 676 o Interface state transitions 678 o (Soft) preemption triggers 680 o Fast reroute activation 682 3.10. Tunnel Notification Data 684 This branch of the model covers TE tunnels related notifications 685 data. The TE tunnels configuration is used for specific events 686 registration. Notifications are sent for registered events to the 687 server. Example events for TE tunnels are: 689 o Tunnel creation and deletion events 691 o Tunnel state up/down changes 693 o Tunnel state reoptimization changes 695 Figure Figure 6 below shows the tree diagram of the YANG model 696 defined in modules: ietf-te.yang, ietf-te-device.yang, ietf-te- 697 mpls.yang, and ietf-te-sr.yang. 699 module: ietf-te 700 +--rw te! 701 +--rw globals 702 | +--rw config 703 | | +--rw named-admin-groups* [name] 704 {te-types:extended-admin-groups, 705 te-types:named-extended-admin-groups}? 706 | | | +--rw name string 707 | | | +--rw bit-position? uint32 708 | | +--rw named-srlgs* [name] {te-types:named-srlg-groups}? 709 | | | +--rw name string 710 | | | +--rw group? te-types:srlg 711 | | +--rw named-explicit-paths* [name] 712 | | | +--rw name string 713 | | | +--rw explicit-route-objects* [index] 714 | | | +--rw index uint8 715 | | | +--rw explicit-route-usage? identityref 716 | | | +--rw (type)? 717 | | | +--:(ipv4-address) 718 | | | | +--rw v4-address? inet:ipv4-address 719 | | | | +--rw v4-prefix-length? uint8 720 | | | | +--rw v4-loose? boolean 721 | | | +--:(ipv6-address) 722 | | | | +--rw v6-address? inet:ipv6-address 723 | | | | +--rw v6-prefix-length? uint8 724 | | | | +--rw v6-loose? boolean 725 | | | +--:(as-number) 726 | | | | +--rw as-number? uint16 727 | | | +--:(unnumbered-link) 728 | | | | +--rw router-id? inet:ip-address 729 | | | | +--rw interface-id? uint32 730 | | | +--:(label) 731 | | | +--rw value? uint32 732 | | +--rw named-constraints* [name] 733 {te-types:named-path-constraints}? 734 | | | +--rw name string 735 | | | +--rw path-selection 736 | | | | +--rw topology-id? te-types:te-topology-id 737 | | | | +--rw cost-limit? uint32 738 | | | | +--rw hop-limit? uint8 739 | | | | +--rw metric-type? identityref 740 | | | | +--rw tiebreaker-type? identityref 741 | | | | +--rw ignore-overload? boolean 742 | | | | +--rw tunnel-path-affinities 743 {named-path-affinities}? 744 | | | | | +--rw (style)? 745 | | | | | +--:(values) 746 | | | | | | +--rw value? uint32 747 | | | | | | +--rw mask? uint32 748 | | | | | +--:(named) 749 | | | | | +--rw constraints* [usage] 750 | | | | | +--rw usage identityref 751 | | | | | +--rw constraint 752 | | | | | +--rw affinity-names* [name] 753 | | | | | +--rw name string 754 | | | | +--rw tunnel-path-srlgs 755 | | | | +--rw (style)? 756 | | | | +--:(values) 757 | | | | | +--rw usage? identityref 758 | | | | | +--rw values* te-types:srlg 759 | | | | +--:(named) 760 | | | | +--rw constraints* [usage] 761 | | | | +--rw usage identityref 762 | | | | +--rw constraint 763 | | | | +--rw srlg-names* [name] 764 | | | | +--rw name string 765 | | | +--rw te-sr-mpls:adjacency-protection? identityref 766 | | +--rw te-dev:lsp-install-interval? uint32 767 | | +--rw te-dev:lsp-cleanup-interval? uint32 768 | | +--rw te-dev:lsp-invalidation-interval? uint32 769 | +--ro state 770 | +--ro named-admin-groups* [name] 771 {te-types:extended-admin-groups, 772 te-types:named-extended-admin-groups}? 773 | | +--ro name string 774 | | +--ro bit-position? uint32 775 | +--ro named-srlgs* [name] {te-types:named-srlg-groups}? 776 | | +--ro name string 777 | | +--ro group? te-types:srlg 778 | +--ro named-explicit-paths* [name] 779 | | +--ro name string 780 | | +--ro explicit-route-objects* [index] 781 | | +--ro index uint8 782 | | +--ro explicit-route-usage? identityref 783 | | +--ro (type)? 784 | | +--:(ipv4-address) 785 | | | +--ro v4-address? inet:ipv4-address 786 | | | +--ro v4-prefix-length? uint8 787 | | | +--ro v4-loose? boolean 788 | | +--:(ipv6-address) 789 | | | +--ro v6-address? inet:ipv6-address 790 | | | +--ro v6-prefix-length? uint8 791 | | | +--ro v6-loose? boolean 792 | | +--:(as-number) 793 | | | +--ro as-number? uint16 794 | | +--:(unnumbered-link) 795 | | | +--ro router-id? inet:ip-address 796 | | | +--ro interface-id? uint32 797 | | +--:(label) 798 | | +--ro value? uint32 799 | +--ro named-constraints* [name] 800 {te-types:named-path-constraints}? 801 | | +--ro name string 802 | | +--ro path-selection 803 | | | +--ro topology-id? te-types:te-topology-id 804 | | | +--ro cost-limit? uint32 805 | | | +--ro hop-limit? uint8 806 | | | +--ro metric-type? identityref 807 | | | +--ro tiebreaker-type? identityref 808 | | | +--ro ignore-overload? boolean 809 | | | +--ro tunnel-path-affinities 810 {named-path-affinities}? 811 | | | | +--ro (style)? 812 | | | | +--:(values) 813 | | | | | +--ro value? uint32 814 | | | | | +--ro mask? uint32 815 | | | | +--:(named) 816 | | | | +--ro constraints* [usage] 817 | | | | +--ro usage identityref 818 | | | | +--ro constraint 819 | | | | +--ro affinity-names* [name] 820 | | | | +--ro name string 821 | | | +--ro tunnel-path-srlgs 822 | | | +--ro (style)? 823 | | | +--:(values) 824 | | | | +--ro usage? identityref 825 | | | | +--ro values* te-types:srlg 826 | | | +--:(named) 827 | | | +--ro constraints* [usage] 828 | | | +--ro usage identityref 829 | | | +--ro constraint 830 | | | +--ro srlg-names* [name] 831 | | | +--ro name string 832 | | +--ro te-sr-mpls:adjacency-protection? identityref 833 | +--ro te-dev:lsp-install-interval? uint32 834 | +--ro te-dev:lsp-cleanup-interval? uint32 835 | +--ro te-dev:lsp-invalidation-interval? uint32 836 | +--ro te-dev:tunnels-counter? uint32 837 | +--ro te-dev:lsps-counter? uint32 838 +--rw tunnels 839 | +--rw tunnel* [name type] 840 | +--rw name -> ../config/name 841 | +--rw type -> ../config/type 842 | +--rw identifier? -> ../config/identifier 843 | +--rw config 844 | | +--rw name? string 845 | | +--rw type? identityref 846 | | +--rw identifier? uint16 847 | | +--rw description? string 848 | | +--rw lsp-priority-setup? uint8 849 | | +--rw lsp-priority-hold? uint8 850 | | +--rw lsp-protection-type? identityref 851 | | +--rw admin-status? identityref 852 | | +--rw source? inet:ip-address 853 | | +--rw destination? inet:ip-address 854 | | +--rw src-tp-id? binary 855 | | +--rw dst-tp-id? binary 856 | | +--rw hierarchical-link-id 857 | | | +--rw local-te-node-id? te-types:te-node-id 858 | | | +--rw local-te-link-tp-id? te-types:te-tp-id 859 | | | +--rw remote-te-node-id? te-types:te-node-id 860 | | | +--rw te-topology-id? te-types:te-topology-id 861 | | +--rw bidirectional 862 | | | +--rw association 863 | | | +--rw id? uint16 864 | | | +--rw source? inet:ip-address 865 | | | +--rw global-source? inet:ip-address 866 | | | +--rw type? identityref 867 | | | +--rw provisioing? identityref 868 | | +--rw te-dev:lsp-install-interval? uint32 869 | | +--rw te-dev:lsp-cleanup-interval? uint32 870 | | +--rw te-dev:lsp-invalidation-interval? uint32 871 | | +--rw (te-mpls:routing-choice)? 872 | | | +--:(te-mpls:autoroute) 873 | | | | +--rw te-mpls:autoroute-announce! 874 | | | | +--rw te-mpls:routing-afs* inet:ip-version 875 | | | | +--rw (te-mpls:metric-type)? 876 | | | | +--:(te-mpls:metric) 877 | | | | | +--rw te-mpls:metric? uint32 878 | | | | +--:(te-mpls:relative-metric) 879 | | | | | +--rw te-mpls:relative-metric? int32 880 | | | | +--:(te-mpls:absolute-metric) 881 | | | | +--rw te-mpls:absolute-metric? uint32 882 | | | +--:(te-mpls:forwarding-adjacency) 883 | | | +--rw te-mpls:forwarding-adjacency! 884 | | | +--rw te-mpls:holdtime? uint32 885 | | | +--rw te-mpls:routing-afs* inet:ip-version 886 | | +--rw te-mpls:forwarding 887 | | +--rw te-mpls:binding-label? mpls:mpls-label 888 | | +--rw te-mpls:load-share? uint32 889 | | +--rw (te-mpls:policy-type)? 890 | | +--:(te-mpls:class) 891 | | | +--rw te-mpls:class 892 | | | +--rw te-mpls:class? uint8 893 | | +--:(te-mpls:group) 894 | | +--rw te-mpls:group 895 | | +--rw te-mpls:classes* uint8 896 | +--ro state 897 | | +--ro name? string 898 | | +--ro type? identityref 899 | | +--ro identifier? uint16 900 | | +--ro description? string 901 | | +--ro lsp-priority-setup? uint8 902 | | +--ro lsp-priority-hold? uint8 903 | | +--ro lsp-protection-type? identityref 904 | | +--ro admin-status? identityref 905 | | +--ro source? inet:ip-address 906 | | +--ro destination? inet:ip-address 907 | | +--ro src-tp-id? binary 908 | | +--ro dst-tp-id? binary 909 | | +--ro hierarchical-link-id 910 | | | +--ro local-te-node-id? te-types:te-node-id 911 | | | +--ro local-te-link-tp-id? te-types:te-tp-id 912 | | | +--ro remote-te-node-id? te-types:te-node-id 913 | | | +--ro te-topology-id? te-types:te-topology-id 914 | | +--ro bidirectional 915 | | | +--ro association 916 | | | +--ro id? uint16 917 | | | +--ro source? inet:ip-address 918 | | | +--ro global-source? inet:ip-address 919 | | | +--ro type? identityref 920 | | | +--ro provisioing? identityref 921 | | +--ro oper-status? identityref 922 | | +--ro te-dev:lsp-install-interval? uint32 923 | | +--ro te-dev:lsp-cleanup-interval? uint32 924 | | +--ro te-dev:lsp-invalidation-interval? uint32 925 | | +--ro (te-mpls:routing-choice)? 926 | | | +--:(te-mpls:autoroute) 927 | | | | +--ro te-mpls:autoroute-announce! 928 | | | | +--ro te-mpls:routing-afs* inet:ip-version 929 | | | | +--ro (te-mpls:metric-type)? 930 | | | | +--:(te-mpls:metric) 931 | | | | | +--ro te-mpls:metric? uint32 932 | | | | +--:(te-mpls:relative-metric) 933 | | | | | +--ro te-mpls:relative-metric? int32 934 | | | | +--:(te-mpls:absolute-metric) 935 | | | | +--ro te-mpls:absolute-metric? uint32 936 | | | +--:(te-mpls:forwarding-adjacency) 937 | | | +--ro te-mpls:forwarding-adjacency! 938 | | | +--ro te-mpls:holdtime? uint32 939 | | | +--ro te-mpls:routing-afs* inet:ip-version 940 | | +--ro te-mpls:forwarding 941 | | +--ro te-mpls:binding-label? mpls:mpls-label 942 | | +--ro te-mpls:load-share? uint32 943 | | +--ro (te-mpls:policy-type)? 944 | | +--:(te-mpls:class) 945 | | | +--ro te-mpls:class 946 | | | +--ro te-mpls:class? uint8 947 | | +--:(te-mpls:group) 948 | | +--ro te-mpls:group 949 | | +--ro te-mpls:classes* uint8 950 | +--rw primary-paths* [name] 951 | +--rw name -> ../config/name 952 | +--rw preference? -> ../config/preference 953 | +--rw config 954 | | +--rw name? string 955 | | +--rw preference? uint8 956 | | +--rw path-named-constraint? 957 string {te-types:named-path-constraints}? 958 | | +--rw path-selection 959 | | | +--rw topology-id? te-types:te-topology-id 960 | | | +--rw cost-limit? uint32 961 | | | +--rw hop-limit? uint8 962 | | | +--rw metric-type? identityref 963 | | | +--rw tiebreaker-type? identityref 964 | | | +--rw ignore-overload? boolean 965 | | | +--rw tunnel-path-affinities 966 {named-path-affinities}? 967 | | | | +--rw (style)? 968 | | | | +--:(values) 969 | | | | | +--rw value? uint32 970 | | | | | +--rw mask? uint32 971 | | | | +--:(named) 972 | | | | +--rw constraints* [usage] 973 | | | | +--rw usage identityref 974 | | | | +--rw constraint 975 | | | | +--rw affinity-names* [name] 976 | | | | +--rw name string 977 | | | +--rw tunnel-path-srlgs 978 | | | +--rw (style)? 979 | | | +--:(values) 980 | | | | +--rw usage? identityref 981 | | | | +--rw values* te-types:srlg 982 | | | +--:(named) 983 | | | +--rw constraints* [usage] 984 | | | +--rw usage identityref 985 | | | +--rw constraint 986 | | | +--rw srlg-names* [name] 987 | | | +--rw name string 988 | | +--rw (type)? 989 | | | +--:(dynamic) 990 | | | | +--rw dynamic? empty 991 | | | +--:(explicit) 992 | | | +--rw explicit-path-name? string 993 | | | +--rw explicit-route-objects* [index] 994 | | | +--rw index uint8 995 | | | +--rw explicit-route-usage? identityref 996 | | | +--rw (type)? 997 | | | +--:(ipv4-address) 998 | | | | +--rw v4-address? inet:ipv4-address 999 | | | | +--rw v4-prefix-length? uint8 1000 | | | | +--rw v4-loose? boolean 1001 | | | +--:(ipv6-address) 1002 | | | | +--rw v6-address? inet:ipv6-address 1003 | | | | +--rw v6-prefix-length? uint8 1004 | | | | +--rw v6-loose? boolean 1005 | | | +--:(as-number) 1006 | | | | +--rw as-number? uint16 1007 | | | +--:(unnumbered-link) 1008 | | | | +--rw router-id? inet:ip-address 1009 | | | | +--rw interface-id? uint32 1010 | | | +--:(label) 1011 | | | +--rw value? uint32 1012 | | +--rw no-cspf? empty 1013 | | +--rw lockdown? empty 1014 | +--ro state 1015 | | +--ro path-named-constraint? string 1016 {te-types:named-path-constraints}? 1017 | | +--ro path-selection 1018 | | | +--ro topology-id? te-types:te-topology-id 1019 | | | +--ro cost-limit? uint32 1020 | | | +--ro hop-limit? uint8 1021 | | | +--ro metric-type? identityref 1022 | | | +--ro tiebreaker-type? identityref 1023 | | | +--ro ignore-overload? boolean 1024 | | | +--ro tunnel-path-affinities 1025 {named-path-affinities}? 1026 | | | | +--ro (style)? 1027 | | | | +--:(values) 1028 | | | | | +--ro value? uint32 1029 | | | | | +--ro mask? uint32 1030 | | | | +--:(named) 1031 | | | | +--ro constraints* [usage] 1032 | | | | +--ro usage identityref 1033 | | | | +--ro constraint 1034 | | | | +--ro affinity-names* [name] 1035 | | | | +--ro name string 1036 | | | +--ro tunnel-path-srlgs 1037 | | | +--ro (style)? 1038 | | | +--:(values) 1039 | | | | +--ro usage? identityref 1040 | | | | +--ro values* te-types:srlg 1041 | | | +--:(named) 1042 | | | +--ro constraints* [usage] 1043 | | | +--ro usage identityref 1044 | | | +--ro constraint 1045 | | | +--ro srlg-names* [name] 1046 | | | +--ro name string 1047 | | +--ro (type)? 1048 | | | +--:(dynamic) 1049 | | | | +--ro dynamic? empty 1050 | | | +--:(explicit) 1051 | | | +--ro explicit-path-name? string 1052 | | | +--ro explicit-route-objects* [index] 1053 | | | +--ro index uint8 1054 | | | +--ro explicit-route-usage? identityref 1055 | | | +--ro (type)? 1056 | | | +--:(ipv4-address) 1057 | | | | +--ro v4-address? inet:ipv4-address 1058 | | | | +--ro v4-prefix-length? uint8 1059 | | | | +--ro v4-loose? boolean 1060 | | | +--:(ipv6-address) 1061 | | | | +--ro v6-address? inet:ipv6-address 1062 | | | | +--ro v6-prefix-length? uint8 1063 | | | | +--ro v6-loose? boolean 1064 | | | +--:(as-number) 1065 | | | | +--ro as-number? uint16 1066 | | | +--:(unnumbered-link) 1067 | | | | +--ro router-id? inet:ip-address 1068 | | | | +--ro interface-id? uint32 1069 | | | +--:(label) 1070 | | | +--ro value? uint32 1071 | | +--ro no-cspf? empty 1072 | | +--ro lockdown? empty 1073 | | +--ro lsp* 1074 [source destination tunnel-id lsp-id extended-tunnel-id type] 1075 | | +--ro source 1076 -> ../../../../../../lsps-state/lsp/source 1077 | | +--ro destination 1078 -> ../../../../../../lsps-state/lsp/destination 1079 | | +--ro tunnel-id 1080 -> ../../../../../../lsps-state/lsp/tunnel-id 1081 | | +--ro lsp-id 1082 -> ../../../../../../lsps-state/lsp/lsp-id 1083 | | +--ro extended-tunnel-id 1084 -> ../../../../../../lsps-state/lsp/extended-tunnel-id 1085 | | +--ro type 1086 -> ../../../../../../lsps-state/lsp/type 1087 | +--rw secondary-paths* [name] 1088 | | +--rw name -> ../config/name 1089 | | +--rw preference? -> ../config/preference 1090 | | +--rw config 1091 | | | +--rw name? string 1092 | | | +--rw preference? uint8 1093 | | | +--rw path-named-constraint? string 1094 {te-types:named-path-constraints}? 1095 | | | +--rw path-selection 1096 | | | | +--rw topology-id? 1097 te-types:te-topology-id 1098 | | | | +--rw cost-limit? uint32 1099 | | | | +--rw hop-limit? uint8 1100 | | | | +--rw metric-type? identityref 1101 | | | | +--rw tiebreaker-type? identityref 1102 | | | | +--rw ignore-overload? boolean 1103 | | | | +--rw tunnel-path-affinities 1104 {named-path-affinities}? 1105 | | | | | +--rw (style)? 1106 | | | | | +--:(values) 1107 | | | | | | +--rw value? uint32 1108 | | | | | | +--rw mask? uint32 1109 | | | | | +--:(named) 1110 | | | | | +--rw constraints* [usage] 1111 | | | | | +--rw usage identityref 1112 | | | | | +--rw constraint 1113 | | | | | +--rw affinity-names* [name] 1114 | | | | | +--rw name string 1115 | | | | +--rw tunnel-path-srlgs 1116 | | | | +--rw (style)? 1117 | | | | +--:(values) 1118 | | | | | +--rw usage? identityref 1119 | | | | | +--rw values* te-types:srlg 1120 | | | | +--:(named) 1121 | | | | +--rw constraints* [usage] 1122 | | | | +--rw usage identityref 1123 | | | | +--rw constraint 1124 | | | | +--rw srlg-names* [name] 1125 | | | | +--rw name string 1126 | | | +--rw (type)? 1127 | | | | +--:(dynamic) 1128 | | | | | +--rw dynamic? empty 1129 | | | | +--:(explicit) 1130 | | | | +--rw explicit-path-name? string 1131 | | | | +--rw explicit-route-objects* [index] 1132 | | | | +--rw index uint8 1133 | | | | +--rw explicit-route-usage? identityref 1134 | | | | +--rw (type)? 1135 | | | | +--:(ipv4-address) 1136 | | | | | +--rw v4-address? inet:ipv4-address 1137 | | | | | +--rw v4-prefix-length? uint8 1138 | | | | | +--rw v4-loose? boolean 1139 | | | | +--:(ipv6-address) 1140 | | | | | +--rw v6-address? inet:ipv6-address 1141 | | | | | +--rw v6-prefix-length? uint8 1142 | | | | | +--rw v6-loose? boolean 1143 | | | | +--:(as-number) 1144 | | | | | +--rw as-number? uint16 1145 | | | | +--:(unnumbered-link) 1146 | | | | | +--rw router-id? inet:ip-address 1147 | | | | | +--rw interface-id? uint32 1148 | | | | +--:(label) 1149 | | | | +--rw value? uint32 1150 | | | +--rw no-cspf? empty 1151 | | | +--rw lockdown? empty 1152 | | +--ro state 1153 | | | +--ro name? string 1154 | | | +--ro preference? uint8 1155 | | | +--ro path-named-constraint? string 1156 {te-types:named-path-constraints}? 1157 | | | +--ro path-selection 1158 | | | | +--ro topology-id? te-types:te-topology-id 1159 | | | | +--ro cost-limit? uint32 1160 | | | | +--ro hop-limit? uint8 1161 | | | | +--ro metric-type? identityref 1162 | | | | +--ro tiebreaker-type? identityref 1163 | | | | +--ro ignore-overload? boolean 1164 | | | | +--ro tunnel-path-affinities 1165 {named-path-affinities}? 1166 | | | | | +--ro (style)? 1167 | | | | | +--:(values) 1168 | | | | | | +--ro value? uint32 1169 | | | | | | +--ro mask? uint32 1170 | | | | | +--:(named) 1171 | | | | | +--ro constraints* [usage] 1172 | | | | | +--ro usage identityref 1173 | | | | | +--ro constraint 1174 | | | | | +--ro affinity-names* [name] 1175 | | | | | +--ro name string 1176 | | | | +--ro tunnel-path-srlgs 1177 | | | | +--ro (style)? 1178 | | | | +--:(values) 1179 | | | | | +--ro usage? identityref 1180 | | | | | +--ro values* te-types:srlg 1181 | | | | +--:(named) 1182 | | | | +--ro constraints* [usage] 1183 | | | | +--ro usage identityref 1184 | | | | +--ro constraint 1185 | | | | +--ro srlg-names* [name] 1186 | | | | +--ro name string 1187 | | | +--ro (type)? 1188 | | | | +--:(dynamic) 1189 | | | | | +--ro dynamic? empty 1190 | | | | +--:(explicit) 1191 | | | | +--ro explicit-path-name? string 1192 | | | | +--ro explicit-route-objects* [index] 1193 | | | | +--ro index uint8 1194 | | | | +--ro explicit-route-usage? identityref 1195 | | | | +--ro (type)? 1196 | | | | +--:(ipv4-address) 1197 | | | | | +--ro v4-address? inet:ipv4-address 1198 | | | | | +--ro v4-prefix-length? uint8 1199 | | | | | +--ro v4-loose? boolean 1200 | | | | +--:(ipv6-address) 1201 | | | | | +--ro v6-address? inet:ipv6-address 1202 | | | | | +--ro v6-prefix-length? uint8 1203 | | | | | +--ro v6-loose? boolean 1204 | | | | +--:(as-number) 1205 | | | | | +--ro as-number? uint16 1206 | | | | +--:(unnumbered-link) 1207 | | | | | +--ro router-id? inet:ip-address 1208 | | | | | +--ro interface-id? uint32 1209 | | | | +--:(label) 1210 | | | | +--ro value? uint32 1211 | | | +--ro no-cspf? empty 1212 | | | +--ro lockdown? empty 1213 | | | +--ro lsp* [source] 1214 | | | +--ro source 1215 -> ../../../../../../../lsps-state/lsp/source 1216 | | | +--ro destination? 1217 -> ../../../../../../../lsps-state/lsp/destination 1218 | | | +--ro tunnel-id? 1219 -> ../../../../../../../lsps-state/lsp/tunnel-id 1220 | | | +--ro lsp-id? 1221 -> ../../../../../../../lsps-state/lsp/lsp-id 1222 | | | +--ro extended-tunnel-id? 1223 -> ../../../../../../../lsps-state/lsp/extended-tunnel-id 1224 | | | +--ro type? 1225 -> ../../../../../../../lsps-state/lsp/type 1226 | | +--rw te-sr-mpls:path-signaling-type? identityref 1227 | +--rw te-sr-mpls:path-signaling-type? identityref 1228 +--ro lsps-state 1229 | +--ro lsp* 1230 [source destination tunnel-id lsp-id extended-tunnel-id type] 1231 | +--ro source inet:ip-address 1232 | +--ro destination inet:ip-address 1233 | +--ro tunnel-id uint16 1234 | +--ro lsp-id uint16 1235 | +--ro extended-tunnel-id inet:ip-address 1236 | +--ro type identityref 1237 | +--ro oper-status? identityref 1238 | +--ro origin-type? enumeration 1239 | +--ro lsp-resource-status? enumeration 1240 | +--ro lsp-protection-role? enumeration 1241 | +--ro lsp-operational-status? empty 1242 | +--ro lsp-record-route 1243 | | +--ro record-route-subobjects* [subobject-index] 1244 | | +--ro subobject-index uint32 1245 | | +--ro (type)? 1246 | | +--:(ipv4-address) 1247 | | | +--ro v4-address? inet:ipv4-address 1248 | | | +--ro v4-prefix-length? uint8 1249 | | | +--ro v4-flags? uint8 1250 | | +--:(ipv6-address) 1251 | | | +--ro v6-address? inet:ipv6-address 1252 | | | +--ro v6-prefix-length? uint8 1253 | | | +--ro v6-flags? uint8 1254 | | +--:(unnumbered-link) 1255 | | | +--ro router-id? inet:ip-address 1256 | | | +--ro interface-id? uint32 1257 | | +--:(label) 1258 | | +--ro value? uint32 1259 | | +--ro flags? uint8 1260 | +--ro te-dev:lsp-timers 1261 | | +--ro te-dev:life-time? uint32 1262 | | +--ro te-dev:time-to-install? uint32 1263 | | +--ro te-dev:time-to-die? uint32 1264 | +--ro te-dev:downstream-info 1265 | | +--ro te-dev:nhop? inet:ip-address 1266 | | +--ro te-dev:outgoing-interface? if:interface-ref 1267 | | +--ro te-dev:neighbor? inet:ip-address 1268 | | +--ro te-dev:label? uint32 1269 | +--ro te-dev:upstream-info 1270 | +--ro te-dev:phop? inet:ip-address 1271 | +--ro te-dev:neighbor? inet:ip-address 1272 | +--ro te-dev:label? uint32 1273 +--rw te-dev:interfaces 1274 +--rw te-dev:config 1275 | +--rw te-dev:thresholds 1276 | +--rw (te-dev:type)? 1277 | +--:(te-dev:equal-steps) 1278 | | +--rw (te-dev:equal-step-type)? 1279 | | +--:(te-dev:up-down-different-step) 1280 | | | +--rw te-dev:up-step? uint8 1281 | | | +--rw te-dev:down-step? uint8 1282 | | +--:(te-dev:up-down-same-step) 1283 | | +--rw te-dev:step? uint8 1284 | +--:(te-dev:unequal-steps) 1285 | +--rw te-dev:up-steps* [value] 1286 | | +--rw te-dev:value uint8 1287 | +--rw te-dev:down-steps* [value] 1288 | +--rw te-dev:value uint8 1289 +--ro te-dev:state 1290 | +--ro te-dev:thresholds 1291 | +--ro (te-dev:type)? 1292 | +--:(te-dev:equal-steps) 1293 | | +--ro (te-dev:equal-step-type)? 1294 | | +--:(te-dev:up-down-different-step) 1295 | | | +--ro te-dev:up-step? uint8 1296 | | | +--ro te-dev:down-step? uint8 1297 | | +--:(te-dev:up-down-same-step) 1298 | | +--ro te-dev:step? uint8 1299 | +--:(te-dev:unequal-steps) 1300 | +--ro te-dev:up-steps* [value] 1301 | | +--ro te-dev:value uint8 1302 | +--ro te-dev:down-steps* [value] 1303 | +--ro te-dev:value uint8 1304 +--rw te-dev:interface* [interface] 1305 +--rw te-dev:interface if:interface-ref 1306 +--rw te-dev:config 1307 | +--rw te-dev:te-metric? te-types:te-metric 1308 | +--rw (te-dev:admin-group-type)? 1309 | | +--:(te-dev:value-admin-groups) 1310 | | | +--rw (te-dev:value-admin-group-type)? 1311 | | | +--:(te-dev:admin-groups) 1312 | | | | +--rw te-dev:admin-group?te-types:admin-group 1313 | | | +--:(te-dev:extended-admin-groups) 1314 {te-types:extended-admin-groups}? 1315 | | | +--rw te-dev:extended-admin-group? 1316 te-types:extended-admin-group 1317 | | +--:(te-dev:named-admin-groups) 1318 | | +--rw te-dev:named-admin-groups*[named-admin-group] 1319 {te-types:extended-admin-groups, 1320 te-types:named-extended-admin-groups}? 1321 | | +--rw te-dev:named-admin-group 1322 -> ../../../../../te:globals/config/named-admin-groups/name 1323 | +--rw (te-dev:srlg-type)? 1324 | | +--:(te-dev:value-srlgs) 1325 | | | +--rw te-dev:values* [value] 1326 | | | +--rw te-dev:value uint32 1327 | | +--:(te-dev:named-srlgs) 1328 | | +--rw te-dev:named-srlgs* [named-srlg] 1329 {te-types:named-srlg-groups}? 1330 | | +--rw te-dev:named-srlg 1331 -> ../../../../../te:globals/config/named-srlgs/name 1332 | +--rw te-dev:switching-capabilities* 1333 [switching-capability] 1334 | | +--rw te-dev:switching-capability identityref 1335 | | +--rw te-dev:encoding? identityref 1336 | +--rw te-dev:thresholds 1337 | +--rw (te-dev:type)? 1338 | +--:(te-dev:equal-steps) 1339 | | +--rw (te-dev:equal-step-type)? 1340 | | +--:(te-dev:up-down-different-step) 1341 | | | +--rw te-dev:up-step? uint8 1342 | | | +--rw te-dev:down-step? uint8 1343 | | +--:(te-dev:up-down-same-step) 1344 | | +--rw te-dev:step? uint8 1345 | +--:(te-dev:unequal-steps) 1346 | +--rw te-dev:up-steps* [value] 1347 | | +--rw te-dev:value uint8 1348 | +--rw te-dev:down-steps* [value] 1349 | +--rw te-dev:value uint8 1350 +--ro te-dev:state 1351 +--ro te-dev:te-metric? te-types:te-metric 1352 +--ro (te-dev:admin-group-type)? 1353 | +--:(te-dev:value-admin-groups) 1354 | | +--ro (te-dev:value-admin-group-type)? 1355 | | +--:(te-dev:admin-groups) 1356 | | | +--ro te-dev:admin-group?te-types:admin-group 1357 | | +--:(te-dev:extended-admin-groups) 1358 {te-types:extended-admin-groups}? 1359 | | +--ro te-dev:extended-admin-group? 1360 te-types:extended-admin-group 1361 | +--:(te-dev:named-admin-groups) 1362 | +--ro te-dev:named-admin-groups*[named-admin-group] 1363 {te-types:extended-admin-groups, 1364 te-types:named-extended-admin-groups}? 1365 | +--ro te-dev:named-admin-group 1366 -> ../../../../../te:globals/config/named-admin-groups/na 1367 +--ro (te-dev:srlg-type)? 1368 | +--:(te-dev:value-srlgs) 1369 | | +--ro te-dev:values* [value] 1370 | | +--ro te-dev:value uint32 1371 | +--:(te-dev:named-srlgs) 1372 | +--ro te-dev:named-srlgs* [named-srlg] 1373 {te-types:named-srlg-groups}? 1374 | +--ro te-dev:named-srlg 1375 -> ../../../../../te:globals/config/named-srlgs/name 1376 +--ro te-dev:switching-capabilities*[switching-capability 1377 | +--ro te-dev:switching-capability identityref 1378 | +--ro te-dev:encoding? identityref 1379 +--ro te-dev:thresholds 1380 | +--ro (te-dev:type)? 1381 | +--:(te-dev:equal-steps) 1382 | | +--ro (te-dev:equal-step-type)? 1383 | | +--:(te-dev:up-down-different-step) 1384 | | | +--ro te-dev:up-step? uint8 1385 | | | +--ro te-dev:down-step? uint8 1386 | | +--:(te-dev:up-down-same-step) 1387 | | +--ro te-dev:step? uint8 1388 | +--:(te-dev:unequal-steps) 1389 | +--ro te-dev:up-steps* [value] 1390 | | +--ro te-dev:value uint8 1391 | +--ro te-dev:down-steps* [value] 1392 | +--ro te-dev:value uint8 1393 +--ro te-dev:te-advertisements_state 1394 +--ro te-dev:flood-interval? uint32 1395 +--ro te-dev:last-flooded-time? uint32 1396 +--ro te-dev:next-flooded-time? uint32 1397 +--ro te-dev:last-flooded-trigger? enumeration 1398 +--ro te-dev:advertized-level-areas* [level-area] 1399 +--ro te-dev:level-area uint32 1400 rpcs: 1401 +---x globals-rpc 1402 +---x interfaces-rpc 1403 +---x tunnels-rpc 1404 notifications: 1405 +---n globals-notif 1406 +---n tunnels-notif 1407 module: ietf-te-device 1408 rpcs: 1409 +---x interfaces-rpc 1410 notifications: 1411 +---n interfaces-notif 1413 Figure 6: TE globals configuration and state tree 1415 4. TE Generic and Helper YANG Modules 1417 file "ietf-te-types@2016-07-05.yang" 1418 module ietf-te-types { 1420 namespace "urn:ietf:params:xml:ns:yang:ietf-te-types"; 1422 /* Replace with IANA when assigned */ 1423 prefix "te-types"; 1425 import ietf-inet-types { 1426 prefix inet; 1427 } 1429 import ietf-yang-types { 1430 prefix "yang"; 1431 } 1433 organization 1434 "IETF Traffic Engineering Architecture and Signaling (TEAS) 1435 Working Group"; 1437 contact 1438 "WG Web: 1439 WG List: 1441 WG Chair: Lou Berger 1442 1444 WG Chair: Vishnu Pavan Beeram 1445 1447 Editor: Tarek Saad 1448 1450 Editor: Rakesh Gandhi 1451 1453 Editor: Vishnu Pavan Beeram 1454 1456 Editor: Himanshu Shah 1457 1459 Editor: Xufeng Liu 1460 1462 Editor: Xia Chen 1463 1465 Editor: Raqib Jones 1466 1468 Editor: Bin Wen 1469 "; 1471 description 1472 "This module contains a collection of generally 1473 useful TE specific YANG data type defintions."; 1475 revision "2016-07-05" { 1476 description "Latest revision of TE basic types"; 1477 reference "RFC3209"; 1478 } 1480 /* 1481 * Identities 1482 */ 1484 identity tunnel-type { 1485 description 1486 "Base identity from which specific tunnel types are 1487 derived."; 1488 } 1490 identity tunnel-p2p { 1491 base tunnel-type; 1492 description 1493 "TE point-to-point tunnel type."; 1494 } 1496 identity tunnel-p2mp { 1497 base tunnel-type; 1498 description 1499 "TE point-to-multipoint tunnel type."; 1500 } 1502 identity state-type { 1503 description 1504 "Base identity for TE states"; 1505 } 1507 identity state-up { 1508 base state-type; 1509 description 1510 "State up"; 1511 } 1513 identity state-down { 1514 base state-type; 1515 description 1516 "State down"; 1517 } 1519 identity path-invalidation-action-type { 1520 description 1521 "Base identity for TE path invalidation action types"; 1522 } 1524 identity tunnel-invalidation-action-drop-type { 1525 base path-invalidation-action-type; 1526 description 1527 "TE path invalidation action drop"; 1528 } 1530 identity tunnel-invalidation-action-drop-tear { 1531 base path-invalidation-action-type; 1532 description 1533 "TE path invalidation action tear"; 1534 } 1536 identity lsp-prot-type { 1537 description 1538 "Base identity from which LSP protection types are 1539 derived."; 1540 } 1542 identity lsp-prot-unprotected { 1543 base lsp-prot-type; 1544 description 1545 "LSP protection 'Unprotected'"; 1546 reference "RFC4872"; 1547 } 1549 identity lsp-prot-reroute-extra { 1550 base lsp-prot-type; 1551 description 1552 "LSP protection '(Full) Rerouting'"; 1553 reference "RFC4872"; 1554 } 1556 identity lsp-prot-reroute { 1557 base lsp-prot-type; 1558 description 1559 "LSP protection 'Rerouting without Extra-Traffic'"; 1560 reference "RFC4872"; 1561 } 1563 identity lsp-prot-1-for-n { 1564 base lsp-prot-type; 1565 description 1566 "LSP protection '1:N Protection with Extra-Traffic'"; 1567 reference "RFC4872"; 1568 } 1570 identity lsp-prot-unidir-1-to-1 { 1571 base lsp-prot-type; 1572 description 1573 "LSP protection '1+1 Unidirectional Protection'"; 1574 reference "RFC4872"; 1575 } 1577 identity lsp-prot-bidir-1-to-1 { 1578 base lsp-prot-type; 1579 description 1580 "LSP protection '1+1 Bidirectional Protection'"; 1581 reference "RFC4872"; 1582 } 1584 identity switching-capabilities { 1585 description 1586 "Base identity for interface switching capabilities"; 1587 } 1589 identity switching-psc1 { 1590 base switching-capabilities; 1591 description 1592 "Packet-Switch Capable-1 (PSC-1)"; 1593 } 1595 identity switching-evpl { 1596 base switching-capabilities; 1597 description 1598 "Ethernet Virtual Private Line (EVPL)"; 1599 } 1601 identity switching-l2sc { 1602 base switching-capabilities; 1603 description 1604 "Layer-2 Switch Capable (L2SC)"; 1605 } 1607 identity switching-tdm { 1608 base switching-capabilities; 1609 description 1610 "Time-Division-Multiplex Capable (TDM)"; 1611 } 1613 identity switching-otn { 1614 base switching-capabilities; 1615 description 1616 "OTN-TDM capable"; 1617 } 1619 identity switching-dcsc { 1620 base switching-capabilities; 1621 description 1622 "Data Channel Switching Capable (DCSC)"; 1623 } 1625 identity switching-lsc { 1626 base switching-capabilities; 1627 description 1628 "Lambda-Switch Capable (LSC)"; 1629 } 1631 identity switching-fsc { 1632 base switching-capabilities; 1633 description 1634 "Fiber-Switch Capable (FSC)"; 1635 } 1637 identity lsp-encoding-types { 1638 description 1639 "Base identity for encoding types"; 1640 } 1642 identity lsp-encoding-packet { 1643 base lsp-encoding-types; 1644 description 1645 "Packet LSP encoding"; 1646 } 1648 identity lsp-encoding-ethernet { 1649 base lsp-encoding-types; 1650 description 1651 "Ethernet LSP encoding"; 1652 } 1654 identity lsp-encoding-pdh { 1655 base lsp-encoding-types; 1656 description 1657 "ANSI/ETSI LSP encoding"; 1658 } 1660 identity lsp-encoding-sdh { 1661 base lsp-encoding-types; 1662 description 1663 "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding"; 1664 } 1666 identity lsp-encoding-digital-wrapper { 1667 base lsp-encoding-types; 1668 description 1669 "Digital Wrapper LSP encoding"; 1670 } 1672 identity lsp-encoding-lambda { 1673 base lsp-encoding-types; 1674 description 1675 "Lambda (photonic) LSP encoding"; 1677 } 1679 identity lsp-encoding-fiber { 1680 base lsp-encoding-types; 1681 description 1682 "Fiber LSP encoding"; 1683 } 1685 identity lsp-encoding-fiber-channel { 1686 base lsp-encoding-types; 1687 description 1688 "FiberChannel LSP encoding"; 1689 } 1691 identity lsp-encoding-oduk { 1692 base lsp-encoding-types; 1693 description 1694 "G.709 ODUk (Digital Path)LSP encoding"; 1695 } 1697 identity lsp-encoding-optical-channel { 1698 base lsp-encoding-types; 1699 description 1700 "Line (e.g., 8B/10B) LSP encoding"; 1701 } 1703 identity lsp-encoding-line { 1704 base lsp-encoding-types; 1705 description 1706 "Line (e.g., 8B/10B) LSP encoding"; 1707 } 1709 identity path-signaling-type { 1710 description 1711 "Base identity from which specific path signaling 1712 types are derived."; 1713 } 1715 identity path-signaling-rsvpte { 1716 base tunnel-type; 1717 description 1718 "RSVP-TE path signaling type"; 1719 } 1721 identity path-signaling-sr { 1722 base tunnel-type; 1723 description 1724 "Segment-routing path signaling type"; 1726 } 1728 /* TE basic features */ 1729 feature p2mp-te { 1730 description 1731 "Indicates support for P2MP-TE"; 1732 } 1734 feature frr-te { 1735 description 1736 "Indicates support for TE FastReroute (FRR)"; 1737 } 1739 feature extended-admin-groups { 1740 description 1741 "Indicates support for TE link extended admin 1742 groups."; 1743 } 1745 feature named-path-affinities { 1746 description 1747 "Indicates support for named path affinities"; 1748 } 1750 feature named-extended-admin-groups { 1751 description 1752 "Indicates support for named extended admin groups"; 1753 } 1755 feature named-srlg-groups { 1756 description 1757 "Indicates support for named SRLG groups"; 1758 } 1760 feature named-path-constraints { 1761 description 1762 "Indicates support for named path constraints"; 1763 } 1765 grouping explicit-route-subobject { 1766 description 1767 "The explicit route subobject grouping"; 1768 choice type { 1769 description 1770 "The explicit route subobject type"; 1771 case ipv4-address { 1772 description 1773 "IPv4 address explicit route subobject"; 1775 leaf v4-address { 1776 type inet:ipv4-address; 1777 description 1778 "An IPv4 address. This address is 1779 treated as a prefix based on the 1780 prefix length value below. Bits beyond 1781 the prefix are ignored on receipt and 1782 SHOULD be set to zero on transmission."; 1783 } 1784 leaf v4-prefix-length { 1785 type uint8; 1786 description 1787 "Length in bits of the IPv4 prefix"; 1788 } 1789 leaf v4-loose { 1790 type boolean; 1791 description 1792 "Describes whether the object is loose 1793 if set, or otherwise strict"; 1794 } 1795 } 1796 case ipv6-address { 1797 description 1798 "IPv6 address Explicit Route Object"; 1799 leaf v6-address { 1800 type inet:ipv6-address; 1801 description 1802 "An IPv6 address. This address is 1803 treated as a prefix based on the 1804 prefix length value below. Bits 1805 beyond the prefix are ignored on 1806 receipt and SHOULD be set to zero 1807 on transmission."; 1808 } 1809 leaf v6-prefix-length { 1810 type uint8; 1811 description 1812 "Length in bits of the IPv4 prefix"; 1813 } 1814 leaf v6-loose { 1815 type boolean; 1816 description 1817 "Describes whether the object is loose 1818 if set, or otherwise strict"; 1819 } 1820 } 1821 case as-number { 1822 leaf as-number { 1823 type uint16; 1824 description "AS number"; 1825 } 1826 description 1827 "Autonomous System explicit route subobject"; 1828 } 1829 case unnumbered-link { 1830 leaf router-id { 1831 type inet:ip-address; 1832 description 1833 "A router-id address"; 1834 } 1835 leaf interface-id { 1836 type uint32; 1837 description "The interface identifier"; 1838 } 1839 description 1840 "Unnumbered link explicit route subobject"; 1841 reference 1842 "RFC3477: Signalling Unnumbered Links in 1843 RSVP-TE"; 1844 } 1845 case label { 1846 leaf value { 1847 type uint32; 1848 description "the label value"; 1849 } 1850 description 1851 "The Label ERO subobject"; 1852 } 1853 /* AS domain sequence..? */ 1854 } 1855 } 1857 grouping record-route-subobject { 1858 description 1859 "The record route subobject grouping"; 1860 choice type { 1861 description 1862 "The record route subobject type"; 1863 case ipv4-address { 1864 leaf v4-address { 1865 type inet:ipv4-address; 1866 description 1867 "An IPv4 address. This address is 1868 treated as a prefix based on the prefix 1869 length value below. Bits beyond the 1870 prefix are ignored on receipt and 1871 SHOULD be set to zero on transmission."; 1872 } 1873 leaf v4-prefix-length { 1874 type uint8; 1875 description 1876 "Length in bits of the IPv4 prefix"; 1877 } 1878 leaf v4-flags { 1879 type uint8; 1880 description 1881 "IPv4 address sub-object flags"; 1882 reference "RFC3209"; 1883 } 1884 } 1885 case ipv6-address { 1886 leaf v6-address { 1887 type inet:ipv6-address; 1888 description 1889 "An IPv6 address. This address is 1890 treated as a prefix based on the 1891 prefix length value below. Bits 1892 beyond the prefix are ignored on 1893 receipt and SHOULD be set to zero 1894 on transmission."; 1895 } 1896 leaf v6-prefix-length { 1897 type uint8; 1898 description 1899 "Length in bits of the IPv4 prefix"; 1900 } 1901 leaf v6-flags { 1902 type uint8; 1903 description 1904 "IPv6 address sub-object flags"; 1905 reference "RFC3209"; 1906 } 1907 } 1908 case unnumbered-link { 1909 leaf router-id { 1910 type inet:ip-address; 1911 description 1912 "A router-id address"; 1913 } 1914 leaf interface-id { 1915 type uint32; 1916 description "The interface identifier"; 1917 } 1918 description 1919 "Unnumbered link record route subobject"; 1920 reference 1921 "RFC3477: Signalling Unnumbered Links in 1922 RSVP-TE"; 1923 } 1924 case label { 1925 leaf value { 1926 type uint32; 1927 description "the label value"; 1928 } 1929 leaf flags { 1930 type uint8; 1931 description 1932 "Label sub-object flags"; 1933 reference "RFC3209"; 1934 } 1935 description 1936 "The Label ERO subobject"; 1937 } 1938 } 1939 } 1941 identity route-usage-type { 1942 description 1943 "Base identity for route usage"; 1944 } 1946 identity route-include-ero { 1947 base route-usage-type; 1948 description 1949 "Include ERO from route"; 1950 } 1952 identity route-exclude-ero { 1953 base route-usage-type; 1954 description 1955 "Exclude ERO from route"; 1956 } 1958 identity route-exclude-srlg { 1959 base route-usage-type; 1960 description 1961 "Exclude SRLG from route"; 1962 } 1964 identity path-metric-type { 1965 description 1966 "Base identity for path metric type"; 1968 } 1970 identity path-metric-te { 1971 base path-metric-type; 1972 description 1973 "TE path metric"; 1974 } 1976 identity path-metric-igp { 1977 base path-metric-type; 1978 description 1979 "IGP path metric"; 1980 } 1982 identity path-tiebreaker-type { 1983 description 1984 "Base identity for path tie-breaker type"; 1985 } 1987 identity path-tiebreaker-minfill { 1988 base path-tiebreaker-type; 1989 description 1990 "Min-Fill LSP path placement"; 1991 } 1993 identity path-tiebreaker-maxfill { 1994 base path-tiebreaker-type; 1995 description 1996 "Max-Fill LSP path placement"; 1997 } 1999 identity path-tiebreaker-randoom { 2000 base path-tiebreaker-type; 2001 description 2002 "Random LSP path placement"; 2003 } 2005 identity bidir-provisioning-mode { 2006 description 2007 "Base identity for bidirectional provisioning 2008 mode."; 2009 } 2011 identity bidir-provisioning-single-sided { 2012 base bidir-provisioning-mode; 2013 description 2014 "Single-sided bidirectional provioning mode"; 2015 } 2016 identity bidir-provisioning-double-sided { 2017 base bidir-provisioning-mode; 2018 description 2019 "Double-sided bidirectional provioning mode"; 2020 } 2022 identity bidir-association-type { 2023 description 2024 "Base identity for bidirectional association type"; 2025 } 2027 identity bidir-assoc-corouted { 2028 base bidir-association-type; 2029 description 2030 "Co-routed bidirectional association type"; 2031 } 2033 identity bidir-assoc-non-corouted { 2034 base bidir-association-type; 2035 description 2036 "Non co-routed bidirectional association type"; 2037 } 2039 identity resource-affinities-type { 2040 description 2041 "Base identity for resource affinities"; 2042 } 2044 identity resource-aff-include-all { 2045 base resource-affinities-type; 2046 description 2047 "The set of attribute filters associated with a 2048 tunnel all of which must be present for a link 2049 to be acceptable"; 2050 } 2052 identity resource-aff-include-any { 2053 base resource-affinities-type; 2054 description 2055 "The set of attribute filters associated with a 2056 tunnel any of which must be present for a link 2057 to be acceptable"; 2058 } 2060 identity resource-aff-exclude-any { 2061 base resource-affinities-type; 2062 description 2063 "The set of attribute filters associated with a 2064 tunnel any of which renders a link unacceptable"; 2065 } 2067 identity te-optimization-criterion { 2068 description 2069 "Base identity for TE optimization criterion."; 2070 reference 2071 "RFC3272: Overview and Principles of Internet Traffic 2072 Engineering."; 2073 } 2075 identity not-optimized { 2076 base te-optimization-criterion; 2077 description "Optimization is not applied."; 2078 } 2080 identity cost { 2081 base te-optimization-criterion; 2082 description "Optimized on cost."; 2083 } 2085 identity delay { 2086 base te-optimization-criterion; 2087 description "Optimized on delay."; 2088 } 2090 /* 2091 * Typedefs 2092 */ 2093 typedef performance-metric-normality { 2094 type enumeration { 2095 enum "unknown" { 2096 value 0; 2097 description 2098 "Unknown."; 2099 } 2100 enum "normal" { 2101 value 1; 2102 description 2103 "Normal."; 2104 } 2105 enum "abnormal" { 2106 value 2; 2107 description 2108 "Abnormal. The anomalous bit is set."; 2109 } 2110 } 2111 description 2112 "Indicates whether a performance metric is normal, abnormal, or 2113 unknown."; 2114 reference 2115 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions. 2116 RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions. 2117 RFC7823: Performance-Based Path Selection for Explicitly 2118 Routed Label Switched Paths (LSPs) Using TE Metric 2119 Extensions"; 2120 } 2122 typedef te-admin-status { 2123 type enumeration { 2124 enum up { 2125 description 2126 "Enabled."; 2127 } 2128 enum down { 2129 description 2130 "Disabled."; 2131 } 2132 enum testing { 2133 description 2134 "In some test mode."; 2135 } 2136 enum preparing-maintenance { 2137 description 2138 "Resource is disabled in the control plane to prepare for 2139 graceful shutdown for maintenance purposes."; 2140 reference 2141 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2142 Traffic Engineering Networks"; 2143 } 2144 enum maintenance { 2145 description 2146 "Resource is disabled in the data plane for maintenance 2147 purposes."; 2148 } 2149 } 2150 description 2151 "Defines a type representing the administrative status of 2152 a TE resource."; 2153 } 2155 typedef te-global-id { 2156 type uint32; 2157 description 2158 "An identifier to uniquely identify an operator, which can be 2159 either a provider or a client. 2161 The definition of this type is taken from RFC6370 and RFC5003. 2162 This attribute type is used solely to provide a globally 2163 unique context for TE topologies."; 2164 } 2166 typedef te-link-access-type { 2167 type enumeration { 2168 enum point-to-point { 2169 description 2170 "The link is point-to-point."; 2171 } 2172 enum multi-access { 2173 description 2174 "The link is multi-access, including broacast and NBMA."; 2175 } 2176 } 2177 description 2178 "Defines a type representing the access type of a TE link."; 2179 reference 2180 "RFC3630: Traffic Engineering (TE) Extensions to OSPF 2181 Version 2."; 2182 } 2184 typedef te-node-id { 2185 type yang:dotted-quad; 2186 description 2187 "An identifier for a node in a topology. 2188 The identifier is represented as 32-bit unsigned integer in 2189 the dotted-quad notation. 2190 This attribute is mapped to Router ID in 2191 RFC3630, RFC5329, RFC5305, and RFC6119."; 2192 } 2194 typedef te-oper-status { 2195 type enumeration { 2196 enum up { 2197 description 2198 "Operational up."; 2199 } 2200 enum down { 2201 description 2202 "Operational down."; 2203 } 2204 enum testing { 2205 description 2206 "In some test mode."; 2207 } 2208 enum unknown { 2209 description 2210 "Status cannot be determined for some reason."; 2211 } 2212 enum preparing-maintenance { 2213 description 2214 "Resource is disabled in the control plane to prepare for 2215 graceful shutdown for maintenance purposes."; 2216 reference 2217 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS 2218 Traffic Engineering Networks"; 2219 } 2220 enum maintenance { 2221 description 2222 "Resource is disabled in the data plane for maintenance 2223 purposes."; 2224 } 2225 } 2226 description 2227 "Defines a type representing the operational status of 2228 a TE resource."; 2229 } 2231 typedef te-recovery-status { 2232 type enumeration { 2233 enum normal { 2234 description 2235 "Both the recovery and working spans are fully 2236 allocated and active, data traffic is being 2237 transported over (or selected from) the working 2238 span, and no trigger events are reported."; 2239 } 2240 enum recovery-started { 2241 description 2242 "The recovery action has been started, but not completed."; 2243 } 2244 enum recovery-succeeded { 2245 description 2246 "The recovery action has succeeded. The working span has 2247 reported a failure/degrade condition and the user traffic 2248 is being transported (or selected) on the recovery span."; 2249 } 2250 enum recovery-failed { 2251 description 2252 "The recovery action has failed."; 2253 } 2254 enum reversion-started { 2255 description 2256 "The reversion has started."; 2258 } 2259 enum reversion-failed { 2260 description 2261 "The reversion has failed."; 2262 } 2263 enum recovery-unavailable { 2264 description 2265 "The recovery is unavailable -- either as a result of an 2266 operator Lockout command or a failure condition detected 2267 on the recovery span."; 2268 } 2269 enum recovery-admin { 2270 description 2271 "The operator has issued a command switching the user 2272 traffic to the recovery span."; 2273 } 2274 enum wait-to-restore { 2275 description 2276 "The recovery domain is recovering from a failuer/degrade 2277 condition on the working span that is being controlled by 2278 the Wait-to-Restore (WTR) timer."; 2279 } 2280 } 2281 description 2282 "Defines the status of a recovery action."; 2283 reference 2284 "RFC4427: Recovery (Protection and Restoration) Terminology 2285 for Generalized Multi-Protocol Label Switching (GMPLS). 2286 RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection"; 2287 } 2289 typedef te-template-name { 2290 type string { 2291 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2292 } 2293 description 2294 "A type for the name of a TE node template or TE link 2295 template."; 2296 } 2298 typedef te-topology-event-type { 2299 type enumeration { 2300 enum "add" { 2301 value 0; 2302 description 2303 "A TE node or te-link has been added."; 2304 } 2305 enum "remove" { 2306 value 1; 2307 description 2308 "A TE node or te-link has been removed."; 2309 } 2310 enum "update" { 2311 value 2; 2312 description 2313 "A TE node or te-link has been updated."; 2314 } 2315 } 2316 description "TE Event type for notifications"; 2317 } // te-topology-event-type 2319 typedef te-topology-id { 2320 type string { 2321 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*'; 2322 } 2323 description 2324 "An identifier for a topology."; 2325 } 2327 typedef te-tp-id { 2328 type union { 2329 type uint32; // Unnumbered 2330 type inet:ip-address; // IPv4 or IPv6 address 2331 } 2332 description 2333 "An identifier for a TE link endpoint on a node. 2334 This attribute is mapped to local or remote link identifier in 2335 RFC3630 and RFC5305."; 2336 } 2338 typedef generalized-label { 2339 type binary; 2340 description 2341 "Generalized label. Nodes sending and receiving the 2342 Generalized Label know what kinds of link they are 2343 using, the Generalized Label does not identify its 2344 type. Instead, nodes are expected to know from the 2345 context what type of label to expect."; 2346 reference "rfc3471: section 3.2"; 2347 } 2349 typedef admin-group { 2350 type binary { 2351 length 32; 2352 } 2353 description 2354 "Administrative group/Resource class/Color."; 2355 } 2357 typedef extended-admin-group { 2358 type binary; 2359 description 2360 "Extended administrative group/Resource class/Color."; 2361 } 2363 typedef admin-groups { 2364 type union { 2365 type admin-group; 2366 type extended-admin-group; 2367 } 2368 description "TE administrative group derived type"; 2369 } 2371 typedef srlg { 2372 type uint32; 2373 description "SRLG type"; 2374 } 2376 identity path-computation-srlg-type { 2377 description 2378 "Base identity for SRLG path computation"; 2379 } 2381 identity srlg-ignore { 2382 base path-computation-srlg-type; 2383 description 2384 "Ignores SRLGs in path computation"; 2385 } 2387 identity srlg-strict { 2388 base path-computation-srlg-type; 2389 description 2390 "Include strict SRLG check in path computation"; 2391 } 2393 identity srlg-preferred { 2394 base path-computation-srlg-type; 2395 description 2396 "Include preferred SRLG check in path computation"; 2397 } 2399 identity srlg-weighted { 2400 base path-computation-srlg-type; 2401 description 2402 "Include weighted SRLG check in path computation"; 2403 } 2405 typedef te-metric { 2406 type uint32; 2407 description 2408 "TE link metric"; 2409 } 2411 /** 2412 * TE tunnel generic groupings 2413 **/ 2415 /* Tunnel path selection parameters */ 2416 grouping tunnel-path-selection { 2417 description 2418 "Tunnel path selection properties grouping"; 2419 container path-selection { 2420 description 2421 "Tunnel path selection properties container"; 2422 leaf topology-id { 2423 type te-types:te-topology-id; 2424 description 2425 "The tunnel path is computed using the specific 2426 topology identified by this identifier"; 2427 } 2428 leaf cost-limit { 2429 type uint32 { 2430 range "1..4294967295"; 2431 } 2432 description 2433 "The tunnel path cost limit."; 2434 } 2435 leaf hop-limit { 2436 type uint8 { 2437 range "1..255"; 2438 } 2439 description 2440 "The tunnel path hop limit."; 2441 } 2442 leaf metric-type { 2443 type identityref { 2444 base path-metric-type; 2445 } 2446 default path-metric-te; 2447 description 2448 "The tunnel path metric type."; 2449 } 2450 leaf tiebreaker-type { 2451 type identityref { 2452 base path-tiebreaker-type; 2453 } 2454 default path-tiebreaker-maxfill; 2455 description 2456 "The tunnel path computation tie breakers."; 2457 } 2458 leaf ignore-overload { 2459 type boolean; 2460 description 2461 "The tunnel path can traverse overloaded node."; 2462 } 2463 uses tunnel-path-affinities; 2464 uses tunnel-path-srlgs; 2465 } 2466 } 2468 grouping tunnel-path-affinities { 2469 description 2470 "Path affinities grouping"; 2471 container tunnel-path-affinities { 2472 if-feature named-path-affinities; 2473 description 2474 "Path affinities container"; 2475 choice style { 2476 description 2477 "Path affinities representation style"; 2478 case values { 2479 leaf value { 2480 type uint32 { 2481 range "0..4294967295"; 2482 } 2483 description 2484 "Affinity value"; 2485 } 2486 leaf mask { 2487 type uint32 { 2488 range "0..4294967295"; 2489 } 2490 description 2491 "Affinity mask"; 2492 } 2493 } 2494 case named { 2495 list constraints { 2496 key "usage"; 2497 leaf usage { 2498 type identityref { 2499 base resource-affinities-type; 2500 } 2501 description "Affinities usage"; 2502 } 2503 container constraint { 2504 description 2505 "Container for named affinities"; 2506 list affinity-names { 2507 key "name"; 2508 leaf name { 2509 type string; 2510 description 2511 "Affinity name"; 2512 } 2513 description 2514 "List of named affinities"; 2515 } 2516 } 2517 description 2518 "List of named affinity constraints"; 2519 } 2520 } 2521 } 2522 } 2523 } 2525 grouping tunnel-path-srlgs { 2526 description 2527 "Path SRLG properties grouping"; 2528 container tunnel-path-srlgs { 2529 description 2530 "Path SRLG properties container"; 2531 choice style { 2532 description 2533 "Type of SRLG representation"; 2534 case values { 2535 leaf usage { 2536 type identityref { 2537 base route-exclude-srlg; 2538 } 2539 description "SRLG usage"; 2540 } 2541 leaf-list values { 2542 type te-types:srlg; 2543 description "SRLG value"; 2544 } 2545 } 2546 case named { 2547 list constraints { 2548 key "usage"; 2549 leaf usage { 2550 type identityref { 2551 base route-exclude-srlg; 2552 } 2553 description "SRLG usage"; 2554 } 2555 container constraint { 2556 description 2557 "Container for named SRLG list"; 2558 list srlg-names { 2559 key "name"; 2560 leaf name { 2561 type string; 2562 description 2563 "The SRLG name"; 2564 } 2565 description 2566 "List named SRLGs"; 2567 } 2568 } 2569 description 2570 "List of named SRLG constraints"; 2571 } 2572 } 2573 } 2574 } 2575 } 2577 grouping tunnel-bidir-assoc-properties { 2578 description 2579 "TE tunnel associated bidirectional properties 2580 grouping"; 2581 container bidirectional { 2582 description 2583 "TE tunnel associated bidirectional attributes."; 2584 container association { 2585 description 2586 "Tunnel bidirectional association properties"; 2587 leaf id { 2588 type uint16; 2589 description 2590 "The TE tunnel association identifier."; 2591 } 2592 leaf source { 2593 type inet:ip-address; 2594 description 2595 "The TE tunnel association source."; 2596 } 2597 leaf global-source { 2598 type inet:ip-address; 2599 description 2600 "The TE tunnel association global 2601 source."; 2602 } 2603 leaf type { 2604 type identityref { 2605 base bidir-association-type; 2606 } 2607 default bidir-assoc-non-corouted; 2608 description 2609 "The TE tunnel association type."; 2610 } 2611 leaf provisioing { 2612 type identityref { 2613 base bidir-provisioning-mode; 2614 } 2615 description 2616 "Describes the provisioning model of the 2617 associated bidirectional LSP"; 2618 reference 2619 "draft-ietf-teas-mpls-tp-rsvpte-ext- 2620 associated-lsp, section-3.2"; 2621 } 2622 } 2623 } 2624 } 2625 /*** End of TE tunnel groupings ***/ 2627 /** 2628 * TE interface generic groupings 2629 **/ 2630 } 2631 2633 Figure 7: TE basic types YANG module 2635 file "ietf-te@2016-07-05.yang" 2636 module ietf-te { 2638 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 2640 /* Replace with IANA when assigned */ 2641 prefix "te"; 2642 /* Import TE generic types */ 2643 import ietf-te-types { 2644 prefix te-types; 2645 } 2647 import ietf-inet-types { 2648 prefix inet; 2649 } 2651 organization 2652 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2653 Working Group"; 2655 contact 2656 "WG Web: 2657 WG List: 2659 WG Chair: Lou Berger 2660 2662 WG Chair: Vishnu Pavan Beeram 2663 2665 Editor: Tarek Saad 2666 2668 Editor: Rakesh Gandhi 2669 2671 Editor: Vishnu Pavan Beeram 2672 2674 Editor: Himanshu Shah 2675 2677 Editor: Xufeng Liu 2678 2680 Editor: Xia Chen 2681 2683 Editor: Raqib Jones 2684 2686 Editor: Bin Wen 2687 "; 2689 description 2690 "YANG data module for TE configuration, 2691 state, RPC and notifications."; 2693 revision "2016-07-05" { 2694 description "Latest update to TE generic YANG module."; 2695 reference "TBD"; 2696 } 2698 typedef tunnel-ref { 2699 type leafref { 2700 path "/te:te/te:tunnels/te:tunnel/te:name"; 2701 } 2702 description 2703 "This type is used by data models that need to reference 2704 configured TE tunnel."; 2705 } 2707 /** 2708 * TE tunnel generic groupings 2709 */ 2711 grouping p2p-secondary-path-params { 2712 description 2713 "tunnel path properties."; 2714 container config { 2715 description 2716 "Configuration parameters relating to 2717 tunnel properties"; 2718 uses path-properties_config; 2719 uses path-params_config; 2720 } 2721 container state { 2722 config false; 2723 description 2724 "State information associated with tunnel 2725 properties"; 2726 uses path-properties_config; 2727 uses path-params_config; 2728 uses p2p-secondary-path-params_state; 2729 } 2730 } 2732 grouping p2p-primary-path-params { 2733 description 2734 "TE tunnel primary path properties grouping"; 2735 container config { 2736 description 2737 "Configuration parameters relating to 2738 tunnel properties"; 2739 uses path-properties_config; 2740 uses path-params_config; 2741 } 2742 container state { 2743 config false; 2744 description 2745 "State information associated with tunnel 2746 properties"; 2747 uses path-params_config; 2748 uses p2p-primary-path-params_state; 2749 } 2750 } 2752 grouping p2p-primary-path-params_state { 2753 description "TE primary path state parameters"; 2754 list lsp { 2755 key 2756 "source destination tunnel-id lsp-id "+ 2757 "extended-tunnel-id type"; 2758 description "List of LSPs associated with the tunnel."; 2760 leaf source { 2761 type leafref { 2762 path "../../../../../../lsps-state/lsp/source"; 2763 } 2764 description 2765 "Tunnel sender address extracted from 2766 SENDER_TEMPLATE object"; 2767 reference "RFC3209"; 2768 } 2769 leaf destination { 2770 type leafref { 2771 path "../../../../../../lsps-state/lsp/destination"; 2772 } 2773 description 2774 "Tunnel endpoint address extracted from 2775 SESSION object"; 2776 reference "RFC3209"; 2777 } 2778 leaf tunnel-id { 2779 type leafref { 2780 path "../../../../../../lsps-state/lsp/tunnel-id"; 2781 } 2782 description 2783 "Tunnel identifier used in the SESSION 2784 that remains constant over the life 2785 of the tunnel."; 2787 reference "RFC3209"; 2788 } 2789 leaf lsp-id { 2790 type leafref { 2791 path "../../../../../../lsps-state/lsp/lsp-id"; 2792 } 2793 description 2794 "Identifier used in the SENDER_TEMPLATE 2795 and the FILTER_SPEC that can be changed 2796 to allow a sender to share resources with 2797 itself."; 2798 reference "RFC3209"; 2799 } 2800 leaf extended-tunnel-id { 2801 type leafref { 2802 path "../../../../../../lsps-state/lsp/extended-tunnel-id"; 2803 } 2804 description 2805 "Extended Tunnel ID of the LSP."; 2806 reference "RFC3209"; 2807 } 2808 leaf type { 2809 type leafref { 2810 path "../../../../../../lsps-state/lsp/type"; 2811 } 2812 description "LSP type P2P or P2MP"; 2813 } 2814 } 2815 } 2817 grouping p2p-secondary-path-params_state { 2818 description "TE secondary path state parameters"; 2819 list lsp { 2820 key "source"; 2821 description "List of LSPs associated with the tunnel."; 2823 leaf source { 2824 type leafref { 2825 path "../../../../../../../lsps-state/lsp/source"; 2826 } 2827 description 2828 "Tunnel sender address extracted from 2829 SENDER_TEMPLATE object"; 2830 reference "RFC3209"; 2831 } 2832 leaf destination { 2833 type leafref { 2834 path "../../../../../../../lsps-state/lsp/destination"; 2836 } 2837 description 2838 "Tunnel endpoint address extracted from 2839 SESSION object"; 2840 reference "RFC3209"; 2841 } 2842 leaf tunnel-id { 2843 type leafref { 2844 path "../../../../../../../lsps-state/lsp/tunnel-id"; 2845 } 2846 description 2847 "Tunnel identifier used in the SESSION 2848 that remains constant over the life 2849 of the tunnel."; 2850 reference "RFC3209"; 2851 } 2852 leaf lsp-id { 2853 type leafref { 2854 path "../../../../../../../lsps-state/lsp/lsp-id"; 2855 } 2856 description 2857 "Identifier used in the SENDER_TEMPLATE 2858 and the FILTER_SPEC that can be changed 2859 to allow a sender to share resources with 2860 itself."; 2861 reference "RFC3209"; 2862 } 2863 leaf extended-tunnel-id { 2864 type leafref { 2865 path "../../../../../../../lsps-state/lsp/extended-tunnel-id"; 2866 } 2867 description 2868 "Extended Tunnel ID of the LSP."; 2869 reference "RFC3209"; 2870 } 2871 leaf type { 2872 type leafref { 2873 path "../../../../../../../lsps-state/lsp/type"; 2874 } 2875 description "LSP type P2P or P2MP"; 2876 } 2877 } 2878 } 2880 grouping path-params_config { 2881 description 2882 "TE tunnel path parameters configuration grouping"; 2883 leaf path-named-constraint { 2884 if-feature te-types:named-path-constraints; 2885 type string; 2886 description 2887 "Reference to a globally defined named path 2888 constraint set"; 2889 } 2890 uses te-types:tunnel-path-selection; 2891 choice type { 2892 description 2893 "Describes the path type"; 2894 case dynamic { 2895 leaf dynamic { 2896 type empty; 2897 description 2898 "A CSPF dynamically computed path"; 2899 } 2900 } 2901 case explicit { 2902 leaf explicit-path-name { 2903 type string; 2904 description 2905 "The explicit-path name"; 2906 } 2908 list explicit-route-objects { 2909 key "index"; 2910 description 2911 "List of explicit route objects"; 2912 leaf index { 2913 type uint8 { 2914 range "0..255"; 2915 } 2916 description 2917 "Index of this explicit route object"; 2918 } 2919 leaf explicit-route-usage { 2920 type identityref { 2921 base te-types:route-usage-type; 2922 } 2923 description "An explicit-route hop action."; 2924 } 2925 uses te-types:explicit-route-subobject; 2926 } 2927 } 2928 } 2929 leaf no-cspf { 2930 type empty; 2931 description 2932 "Indicates no CSPF is to be attempted on this 2933 path."; 2934 } 2935 leaf lockdown { 2936 type empty; 2937 description 2938 "Indicates no reoptimization to be attempted for 2939 this path."; 2940 } 2941 } 2943 /* TE tunnel configuration data */ 2944 grouping tunnel-params_config { 2945 description 2946 "Configuration parameters relating to TE tunnel"; 2947 leaf name { 2948 type string; 2949 description "TE tunnel name."; 2950 } 2951 leaf type { 2952 type identityref { 2953 base te-types:tunnel-type; 2954 } 2955 description "TE tunnel type."; 2956 } 2957 leaf identifier { 2958 type uint16; 2959 description 2960 "TE tunnel Identifier."; 2961 } 2962 leaf description { 2963 type string; 2964 description 2965 "Textual description for this TE tunnel"; 2966 } 2967 leaf lsp-priority-setup { 2968 type uint8 { 2969 range "0..7"; 2970 } 2971 description 2972 "TE LSP setup priority"; 2973 } 2974 leaf lsp-priority-hold { 2975 type uint8 { 2976 range "0..7"; 2977 } 2978 description 2979 "TE LSP hold priority"; 2981 } 2982 leaf lsp-protection-type { 2983 type identityref { 2984 base te-types:lsp-prot-type; 2985 } 2986 description "LSP protection type."; 2987 } 2988 leaf admin-status { 2989 type identityref { 2990 base te-types:state-type; 2991 } 2992 default te-types:state-up; 2993 description "TE tunnel administrative state."; 2994 } 2995 leaf source { 2996 type inet:ip-address; 2997 description 2998 "TE tunnel source address."; 2999 } 3000 leaf destination { 3001 /* Add when check */ 3002 type inet:ip-address; 3003 description 3004 "P2P tunnel destination address"; 3005 } 3006 leaf src-tp-id { 3007 type binary; 3008 description 3009 "TE tunnel source termination point identifier."; 3010 } 3011 leaf dst-tp-id { 3012 /* Add when check */ 3013 type binary; 3014 description 3015 "TE tunnel destination termination point identifier."; 3016 } 3017 container hierarchical-link-id { 3018 description 3019 "Identifies a hierarchical link (in server layer) 3020 that this tunnel is associated with."; 3021 leaf local-te-node-id { 3022 type te-types:te-node-id; 3023 description 3024 "Local TE node identifier"; 3025 } 3026 leaf local-te-link-tp-id { 3027 type te-types:te-tp-id; 3028 description 3029 "Local TE link termination point identifier"; 3030 } 3031 leaf remote-te-node-id { 3032 type te-types:te-node-id; 3033 description 3034 "Remote TE node identifier"; 3035 } 3036 leaf te-topology-id { 3037 type te-types:te-topology-id; 3038 description 3039 "It is presumed that a datastore will contain many 3040 topologies. To distinguish between topologies it is 3041 vital to have UNIQUE topology identifiers."; 3042 } 3043 } 3044 uses te-types:tunnel-bidir-assoc-properties; 3045 } 3047 grouping tunnel-params_state { 3048 description 3049 "State parameters relating to TE tunnel"; 3050 leaf oper-status { 3051 type identityref { 3052 base te-types:state-type; 3053 } 3054 description "TE tunnel operational state."; 3055 } 3056 } 3058 grouping path-properties_config { 3059 description "TE path properties grouping"; 3060 leaf name { 3061 type string; 3062 description "TE path name"; 3063 } 3064 leaf preference { 3065 type uint8 { 3066 range "1..255"; 3067 } 3068 description 3069 "Specifies a preference for this path. The lower the 3070 number higher the preference"; 3071 } 3072 } 3074 /* TE tunnel configuration/state grouping */ 3075 grouping tunnel-properties { 3076 description 3077 "Top level grouping for tunnel properties."; 3078 container config { 3079 description 3080 "Configuration parameters relating to 3081 tunnel properties"; 3082 uses tunnel-params_config; 3083 } 3084 container state { 3085 config false; 3086 description 3087 "State information associated with tunnel 3088 properties"; 3089 uses tunnel-params_config; 3090 uses tunnel-params_state; 3091 } 3092 list primary-paths { 3093 key "name"; 3094 description 3095 "List of primary paths for this tunnel."; 3096 leaf name { 3097 type leafref { 3098 path "../config/name"; 3099 } 3100 description "TE path name"; 3101 } 3102 leaf preference { 3103 type leafref { 3104 path "../config/preference"; 3105 } 3106 description 3107 "Specifies a preference for this path. The lower the 3108 number higher the preference"; 3109 } 3110 uses p2p-primary-path-params; 3111 list secondary-paths { 3112 key "name"; 3113 description 3114 "List of secondary paths for this tunnel."; 3115 leaf name { 3116 type leafref { 3117 path "../config/name"; 3118 } 3119 description "TE path name"; 3120 } 3121 leaf preference { 3122 type leafref { 3123 path "../config/preference"; 3124 } 3125 description 3126 "Specifies a preference for this path. The lower the 3127 number higher the preference"; 3128 } 3129 uses p2p-secondary-path-params; 3130 } 3131 } 3132 } 3133 /*** End of TE tunnel groupings ***/ 3135 /** 3136 * LSP related generic groupings 3137 */ 3138 grouping lsp-record-route-information_state { 3139 description "recorded route information grouping"; 3140 container lsp-record-route { 3141 description "RSVP recorded route object information"; 3142 list record-route-subobjects { 3143 when "../origin-type != 'ingress'" { 3144 description "Applicable on non-ingress LSPs only"; 3145 } 3146 key "subobject-index"; 3147 description ""; 3148 leaf subobject-index { 3149 type uint32; 3150 description "RRO subobject index"; 3151 } 3152 uses te-types:record-route-subobject; 3153 } 3154 } 3155 } 3157 grouping lsp-properties_state { 3158 description 3159 "State parameters relating to LSP"; 3160 leaf oper-status { 3161 type identityref { 3162 base te-types:state-type; 3163 } 3164 description "LSP operational state."; 3165 } 3167 leaf origin-type { 3168 type enumeration { 3169 enum ingress { 3170 description 3171 "Origin ingress"; 3172 } 3173 enum egress { 3174 description 3175 "Origin egress"; 3176 } 3177 enum transit { 3178 description 3179 "transit"; 3180 } 3181 } 3182 description 3183 "Origin type of LSP relative to the location 3184 of the local switch in the path."; 3185 } 3187 leaf lsp-resource-status { 3188 type enumeration { 3189 enum primary { 3190 description 3191 "A primary LSP is a fully established LSP for 3192 which the resource allocation has been committed 3193 at the data plane"; 3194 } 3195 enum secondary { 3196 description 3197 "A secondary LSP is an LSP that has been provisioned 3198 in the control plane only; e.g. resource allocation 3199 has not been committed at the data plane"; 3200 } 3201 } 3202 description "LSP resource allocation type"; 3203 reference "rfc4872, section 4.2.1"; 3204 } 3206 leaf lsp-protection-role { 3207 type enumeration { 3208 enum working { 3209 description 3210 "A working LSP must be a primary LSP whilst a protecting 3211 LSP can be either a primary or a secondary LSP. Also, 3212 known as protected LSPs when working LSPs are associated 3213 with protecting LSPs."; 3214 } 3215 enum protecting { 3216 description 3217 "A secondary LSP is an LSP that has been provisioned 3218 in the control plane only; e.g. resource allocation 3219 has not been committed at the data plane"; 3220 } 3222 } 3223 description "LSP role type"; 3224 reference "rfc4872, section 4.2.1"; 3225 } 3227 leaf lsp-operational-status { 3228 type empty; 3229 description 3230 "This bit is set when a protecting LSP is carrying the normal 3231 traffic after protection switching"; 3232 } 3233 } 3234 /*** End of TE LSP groupings ***/ 3236 /** 3237 * TE global generic groupings 3238 */ 3240 /* Global named admin-groups configuration data */ 3241 grouping named-admin-groups_config { 3242 description 3243 "Global named administrative groups configuration 3244 grouping"; 3245 list named-admin-groups { 3246 if-feature te-types:extended-admin-groups; 3247 if-feature te-types:named-extended-admin-groups; 3248 key "name"; 3249 description 3250 "List of named TE admin-groups"; 3251 leaf name { 3252 type string; 3253 description 3254 "A string name that uniquely identifies a TE 3255 interface named admin-group"; 3256 } 3257 leaf bit-position { 3258 type uint32; 3259 description 3260 "Bit position representing the administrative group"; 3261 } 3262 } 3263 } 3265 /* Global named admin-srlgs configuration data */ 3266 grouping named-srlgs_config { 3267 description 3268 "Global named SRLGs configuration 3269 grouping"; 3271 list named-srlgs { 3272 if-feature te-types:named-srlg-groups; 3273 key "name"; 3274 description 3275 "A list of named SRLG groups"; 3276 leaf name { 3277 type string; 3278 description 3279 "A string name that uniquely identifies a TE 3280 interface named srlg"; 3281 } 3282 leaf group { 3283 type te-types:srlg; 3284 description "An SRLG value"; 3285 } 3286 } 3287 } 3289 /* Global named explicit-paths configuration data */ 3290 grouping named-explicit-paths_config { 3291 description 3292 "Global explicit path configuration 3293 grouping"; 3294 list named-explicit-paths { 3295 key "name"; 3296 description 3297 "A list of explicit paths"; 3298 leaf name { 3299 type string; 3300 description 3301 "A string name that uniquely identifies an 3302 explicit path"; 3303 } 3304 list explicit-route-objects { 3305 key "index"; 3306 description 3307 "List of explicit route objects"; 3308 leaf index { 3309 type uint8 { 3310 range "0..255"; 3311 } 3312 description 3313 "Index of this explicit route object"; 3314 } 3315 leaf explicit-route-usage { 3316 type identityref { 3317 base te-types:route-usage-type; 3318 } 3319 description "An explicit-route hop action."; 3320 } 3321 uses te-types:explicit-route-subobject; 3322 } 3323 } 3324 } 3326 /* Global named paths constraints configuration data */ 3327 grouping named-path-constraints_config { 3328 description 3329 "Global named path constraints configuration 3330 grouping"; 3331 list named-constraints { 3332 if-feature te-types:named-path-constraints; 3333 key "name"; 3334 description 3335 "A list of named path constraints"; 3336 leaf name { 3337 type string; 3338 description 3339 "A string name that uniquely identifies a 3340 path constraint set"; 3341 } 3342 uses te-types:tunnel-path-selection; 3343 } 3344 } 3346 /* TE globals container data */ 3347 grouping globals-grouping { 3348 description 3349 "Globals TE system-wide configuration data grouping"; 3350 container globals { 3351 description 3352 "Globals TE system-wide configuration data container"; 3353 container config { 3354 description 3355 "Configuration parameters for system-wide 3356 parameters"; 3357 uses named-admin-groups_config; 3358 uses named-srlgs_config; 3359 uses named-explicit-paths_config; 3360 uses named-path-constraints_config; 3361 } 3362 container state { 3363 config false; 3364 description 3365 "State for system-wide parameters"; 3366 uses named-admin-groups_config; 3367 uses named-srlgs_config; 3368 uses named-explicit-paths_config; 3369 uses named-path-constraints_config; 3370 } 3371 } 3372 } 3374 /* TE tunnels container data */ 3375 grouping tunnels-grouping { 3376 description 3377 "Tunnels TE configuration data grouping"; 3378 container tunnels { 3379 description 3380 "Tunnels TE configuration data container"; 3382 list tunnel { 3383 key "name type"; 3384 unique "identifier"; 3385 description "TE tunnel."; 3386 leaf name { 3387 type leafref { 3388 path "../config/name"; 3389 } 3390 description "TE tunnel name."; 3391 } 3392 leaf type { 3393 type leafref { 3394 path "../config/type"; 3395 } 3396 description "TE tunnel type."; 3397 } 3398 leaf identifier { 3399 type leafref { 3400 path "../config/identifier"; 3401 } 3402 description 3403 "TE tunnel Identifier."; 3404 } 3405 uses tunnel-properties; 3406 } 3407 } 3408 } 3410 /* TE LSPs ephemeral state container data */ 3411 grouping lsps-state-grouping { 3412 description 3413 "LSPs state operational data grouping"; 3414 container lsps-state { 3415 config "false"; 3416 description "LSPs operational state data."; 3418 list lsp { 3419 key 3420 "source destination tunnel-id lsp-id "+ 3421 "extended-tunnel-id type"; 3422 description 3423 "List of LSPs associated with the tunnel."; 3424 leaf source { 3425 type inet:ip-address; 3426 description 3427 "Tunnel sender address extracted from 3428 SENDER_TEMPLATE object"; 3429 reference "RFC3209"; 3430 } 3431 leaf destination { 3432 type inet:ip-address; 3433 description 3434 "Tunnel endpoint address extracted from 3435 SESSION object"; 3436 reference "RFC3209"; 3437 } 3438 leaf tunnel-id { 3439 type uint16; 3440 description 3441 "Tunnel identifier used in the SESSION 3442 that remains constant over the life 3443 of the tunnel."; 3444 reference "RFC3209"; 3445 } 3446 leaf lsp-id { 3447 type uint16; 3448 description 3449 "Identifier used in the SENDER_TEMPLATE 3450 and the FILTER_SPEC that can be changed 3451 to allow a sender to share resources with 3452 itself."; 3453 reference "RFC3209"; 3454 } 3455 leaf extended-tunnel-id { 3456 type inet:ip-address; 3457 description 3458 "Extended Tunnel ID of the LSP."; 3459 reference "RFC3209"; 3460 } 3461 leaf type { 3462 type identityref { 3463 base te-types:tunnel-type; 3464 } 3465 description "The LSP type P2P or P2MP"; 3466 } 3467 uses lsp-properties_state; 3468 uses lsp-record-route-information_state; 3469 } 3470 } 3471 } 3472 /*** End of TE global groupings ***/ 3474 /** 3475 * TE configurations container 3476 */ 3477 container te { 3478 presence "Enable TE feature."; 3479 description 3480 "TE global container."; 3482 /* TE Global Configuration Data */ 3483 uses globals-grouping; 3485 /* TE Tunnel Configuration Data */ 3486 uses tunnels-grouping; 3488 /* TE LSPs State Data */ 3489 uses lsps-state-grouping; 3490 } 3492 /* TE Global RPCs/execution Data */ 3493 rpc globals-rpc { 3494 description 3495 "Execution data for TE global."; 3496 } 3498 /* TE interfaces RPCs/execution Data */ 3499 rpc interfaces-rpc { 3500 description 3501 "Execution data for TE interfaces."; 3502 } 3504 /* TE Tunnel RPCs/execution Data */ 3505 rpc tunnels-rpc { 3506 description 3507 "TE tunnels RPC nodes"; 3508 } 3510 /* TE Global Notification Data */ 3511 notification globals-notif { 3512 description 3513 "Notification messages for Global TE."; 3514 } 3516 /* TE Tunnel Notification Data */ 3517 notification tunnels-notif { 3518 description 3519 "Notification messages for TE tunnels."; 3520 } 3521 } 3522 3524 Figure 8: TE generic YANG module 3526 file "ietf-te-device@2016-07-05.yang" 3527 module ietf-te-device { 3529 namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; 3531 /* Replace with IANA when assigned */ 3532 prefix "te-dev"; 3534 /* Import TE generic types */ 3535 import ietf-te { 3536 prefix te; 3537 } 3539 /* Import TE generic types */ 3540 import ietf-te-types { 3541 prefix te-types; 3542 } 3544 import ietf-interfaces { 3545 prefix if; 3546 } 3548 import ietf-inet-types { 3549 prefix inet; 3550 } 3552 organization 3553 "IETF Traffic Engineering Architecture and Signaling (TEAS) 3554 Working Group"; 3556 contact 3557 "WG Web: 3558 WG List: 3559 WG Chair: Lou Berger 3560 3562 WG Chair: Vishnu Pavan Beeram 3563 3565 Editor: Tarek Saad 3566 3568 Editor: Rakesh Gandhi 3569 3571 Editor: Vishnu Pavan Beeram 3572 3574 Editor: Himanshu Shah 3575 3577 Editor: Xufeng Liu 3578 3580 Editor: Xia Chen 3581 3583 Editor: Raqib Jones 3584 3586 Editor: Bin Wen 3587 "; 3589 description 3590 "YANG data module for TE device configurations, 3591 state, RPC and notifications."; 3593 revision "2016-07-05" { 3594 description "Latest update to TE device YANG module."; 3595 reference "TBD"; 3596 } 3598 /** 3599 * TE LSP device state grouping 3600 */ 3601 grouping lsps-device_state { 3602 description "TE LSP device state grouping"; 3603 container lsp-timers { 3604 when "../origin-type = 'ingress'" { 3605 description "Applicable to ingress LSPs only"; 3607 } 3608 description "Ingress LSP timers"; 3609 leaf life-time { 3610 type uint32; 3611 units seconds; 3612 description 3613 "lsp life time"; 3614 } 3616 leaf time-to-install { 3617 type uint32; 3618 units seconds; 3619 description 3620 "lsp installation delay time"; 3621 } 3623 leaf time-to-die { 3624 type uint32; 3625 units seconds; 3626 description 3627 "lsp expire delay time"; 3628 } 3629 } 3631 container downstream-info { 3632 when "../../origin-type != 'egress'" { 3633 description "Applicable to ingress LSPs only"; 3634 } 3635 description 3636 "downstream information"; 3638 leaf nhop { 3639 type inet:ip-address; 3640 description 3641 "downstream nexthop."; 3642 } 3644 leaf outgoing-interface { 3645 type if:interface-ref; 3646 description 3647 "downstream interface."; 3648 } 3650 leaf neighbor { 3651 type inet:ip-address; 3652 description 3653 "downstream neighbor."; 3654 } 3655 leaf label { 3656 type uint32; 3657 description 3658 "downstream label."; 3659 } 3660 } 3662 container upstream-info { 3663 when "../../origin-type != 'ingress'" { 3664 description "Applicable to non-ingress LSPs only"; 3665 } 3666 description 3667 "upstream information"; 3669 leaf phop { 3670 type inet:ip-address; 3671 description 3672 "upstream nexthop or previous-hop."; 3673 } 3675 leaf neighbor { 3676 type inet:ip-address; 3677 description 3678 "upstream neighbor."; 3679 } 3681 leaf label { 3682 type uint32; 3683 description 3684 "upstream label."; 3685 } 3686 } 3687 } 3689 /** 3690 * Device general groupings. 3691 */ 3692 grouping tunnel-device_config { 3693 description "Device TE tunnel configs"; 3694 leaf path-invalidation-action { 3695 type identityref { 3696 base te-types:path-invalidation-action-type; 3697 } 3698 description "Tunnel path invalidtion action"; 3699 } 3700 } 3702 grouping lsp-device-timers_config { 3703 description "Device TE LSP timers configs"; 3704 leaf lsp-install-interval { 3705 type uint32; 3706 units seconds; 3707 description 3708 "lsp installation delay time"; 3709 } 3710 leaf lsp-cleanup-interval { 3711 type uint32; 3712 units seconds; 3713 description 3714 "lsp cleanup delay time"; 3715 } 3716 leaf lsp-invalidation-interval { 3717 type uint32; 3718 units seconds; 3719 description 3720 "lsp path invalidation before taking action delay time"; 3721 } 3722 } 3724 /** 3725 * TE global device generic groupings 3726 */ 3728 /* Global device specific configuration data */ 3729 grouping globals-device_config { 3730 description "Device globals configs"; 3731 uses lsp-device-timers_config; 3732 } 3734 /* Global device specific state data */ 3735 grouping globals-device_state { 3736 description 3737 "Top level grouping for global state data."; 3738 leaf tunnels-counter { 3739 type uint32; 3740 description "Tunnels count"; 3741 } 3742 leaf lsps-counter { 3743 type uint32; 3744 description "Tunnels count"; 3745 } 3746 } 3748 /* TE interface container data */ 3749 grouping interfaces-grouping { 3750 description 3751 "Interface TE configuration data grouping"; 3752 container interfaces { 3753 description 3754 "Configuration data model for TE interfaces."; 3755 uses te-all-attributes; 3756 list interface { 3757 key "interface"; 3758 description "TE interfaces."; 3759 leaf interface { 3760 type if:interface-ref; 3761 description 3762 "TE interface name."; 3763 } 3764 /* TE interface parameters */ 3765 uses te-attributes; 3766 } 3767 } 3768 } 3770 /** 3771 * TE interface device generic groupings 3772 */ 3773 grouping te-admin-groups_config { 3774 description 3775 "TE interface affinities grouping"; 3776 choice admin-group-type { 3777 description 3778 "TE interface administrative groups 3779 representation type"; 3780 case value-admin-groups { 3781 choice value-admin-group-type { 3782 description "choice of admin-groups"; 3783 case admin-groups { 3784 description 3785 "Administrative group/Resource 3786 class/Color."; 3787 leaf admin-group { 3788 type te-types:admin-group; 3789 description 3790 "TE interface administrative group"; 3791 } 3792 } 3793 case extended-admin-groups { 3794 if-feature te-types:extended-admin-groups; 3795 description 3796 "Extended administrative group/Resource 3797 class/Color."; 3798 leaf extended-admin-group { 3799 type te-types:extended-admin-group; 3800 description 3801 "TE interface extended administrativei 3802 group"; 3803 } 3804 } 3805 } 3806 } 3807 case named-admin-groups { 3808 list named-admin-groups { 3809 if-feature te-types:extended-admin-groups; 3810 if-feature te-types:named-extended-admin-groups; 3811 key named-admin-group; 3812 description 3813 "A list of named admin-group entries"; 3814 leaf named-admin-group { 3815 type leafref { 3816 path "../../../../../te:globals/te:config/" + 3817 "te:named-admin-groups/te:name"; 3818 } 3819 description "A named admin-group entry"; 3820 } 3821 } 3822 } 3823 } 3824 } 3826 /* TE interface SRLGs */ 3827 grouping te-srlgs_config { 3828 description "TE interface SRLG grouping"; 3829 choice srlg-type { 3830 description "Choice of SRLG configuration"; 3831 case value-srlgs { 3832 list values { 3833 key "value"; 3834 description "List of SRLG values that 3835 this link is part of."; 3836 leaf value { 3837 type uint32 { 3838 range "0..4294967295"; 3839 } 3840 description 3841 "Value of the SRLG"; 3842 } 3843 } 3844 } 3845 case named-srlgs { 3846 list named-srlgs { 3847 if-feature te-types:named-srlg-groups; 3848 key named-srlg; 3849 description 3850 "A list of named SRLG entries"; 3851 leaf named-srlg { 3852 type leafref { 3853 path "../../../../../te:globals/te:config/" + 3854 "te:named-srlgs/te:name"; 3855 } 3856 description 3857 "A named SRLG entry"; 3858 } 3859 } 3860 } 3861 } 3862 } 3864 /* TE interface flooding parameters */ 3865 grouping te-flooding-parameters_config { 3866 description "Interface TE flooding properties."; 3867 container thresholds { 3868 description "Flooding threshold values in percentages."; 3869 choice type { 3870 description 3871 "Describes the flooding threshold step method"; 3872 case equal-steps { 3873 choice equal-step-type { 3874 description 3875 "Describes whether up and down equal step 3876 size are same or different"; 3877 case up-down-different-step { 3878 leaf up-step { 3879 type uint8 { 3880 range "0..100"; 3881 } 3882 description 3883 "Set single percentage threshold 3884 for increasing resource 3885 allocation"; 3886 } 3887 leaf down-step { 3888 type uint8 { 3889 range "0..100"; 3890 } 3891 description 3892 "Set single percentage threshold 3893 for decreasing resource 3894 allocation"; 3896 } 3897 } 3898 case up-down-same-step { 3899 leaf step { 3900 type uint8 { 3901 range "0..100"; 3902 } 3903 description 3904 "Set single percentage threshold 3905 for increasing and decreasing 3906 resource allocation"; 3907 } 3908 } 3909 } 3910 } 3911 case unequal-steps { 3912 list up-steps { 3913 key "value"; 3914 description 3915 "Set nultuple percentage thresholds for 3916 increasing resource allocation"; 3917 leaf value { 3918 type uint8 { 3919 range "0..100"; 3920 } 3921 description 3922 "Percentage value"; 3923 } 3924 } 3925 list down-steps { 3926 key "value"; 3927 description 3928 "Set nultuple percentage thresholds for 3929 decreasing resource allocation"; 3930 leaf value { 3931 type uint8 { 3932 range "0..100"; 3933 } 3934 description 3935 "Percentage value"; 3936 } 3937 } 3938 } 3939 } 3940 } 3941 } 3943 /* TE interface metric */ 3944 grouping te-metric_config { 3945 description "Interface TE metric grouping"; 3946 leaf te-metric { 3947 type te-types:te-metric; 3948 description "Interface TE metric."; 3949 } 3950 } 3952 /* TE interface switching capabilities */ 3953 grouping te-switching-cap_config { 3954 description 3955 "TE interface switching capabilities"; 3956 list switching-capabilities { 3957 key "switching-capability"; 3958 description 3959 "List of interface capabilities for this interface"; 3960 leaf switching-capability { 3961 type identityref { 3962 base te-types:switching-capabilities; 3963 } 3964 description 3965 "Switching Capability for this interface"; 3966 } 3967 leaf encoding { 3968 type identityref { 3969 base te-types:lsp-encoding-types; 3970 } 3971 description 3972 "Encoding supported by this interface"; 3973 } 3974 } 3975 } 3977 grouping te-advertisements_state { 3978 description 3979 "TE interface advertisements state grouping"; 3980 container te-advertisements_state { 3981 description 3982 "TE interface advertisements state container"; 3983 leaf flood-interval { 3984 type uint32; 3985 description 3986 "The periodic flooding interval"; 3987 } 3988 leaf last-flooded-time { 3989 type uint32; 3990 units seconds; 3991 description 3992 "Time elapsed since last flooding in seconds"; 3993 } 3994 leaf next-flooded-time { 3995 type uint32; 3996 units seconds; 3997 description 3998 "Time remained for next flooding in seconds"; 3999 } 4000 leaf last-flooded-trigger { 4001 type enumeration { 4002 enum link-up { 4003 description "Link-up flooding trigger"; 4004 } 4005 enum link-down { 4006 description "Link-up flooding trigger"; 4007 } 4008 enum threshold-up { 4009 description 4010 "Bandwidth reservation up threshold"; 4011 } 4012 enum threshold-down { 4013 description 4014 "Bandwidth reservation down threshold"; 4015 } 4016 enum bandwidth-change { 4017 description "Banwidth capacity change"; 4018 } 4019 enum user-initiated { 4020 description "Initiated by user"; 4021 } 4022 enum srlg-change { 4023 description "SRLG property change"; 4024 } 4025 enum periodic-timer { 4026 description "Periodic timer expired"; 4027 } 4028 } 4029 description "Trigger for the last flood"; 4030 } 4031 list advertized-level-areas { 4032 key level-area; 4033 description 4034 "List of areas the TE interface is advertised 4035 in"; 4036 leaf level-area { 4037 type uint32; 4038 description 4039 "The IGP area or level where the TE 4040 interface state is advertised in"; 4041 } 4042 } 4043 } 4044 } 4046 /* TE interface attributes grouping */ 4047 grouping te-attributes { 4048 description "TE attributes configuration grouping"; 4049 container config { 4050 description 4051 "Configuration parameters for interface TE 4052 attributes"; 4053 uses te-metric_config; 4054 uses te-admin-groups_config; 4055 uses te-srlgs_config; 4056 uses te-switching-cap_config; 4057 uses te-flooding-parameters_config; 4058 } 4059 container state { 4060 config false; 4061 description 4062 "State parameters for interface TE metric"; 4063 uses te-metric_config; 4064 uses te-admin-groups_config; 4065 uses te-srlgs_config; 4066 uses te-switching-cap_config; 4067 uses te-flooding-parameters_config; 4068 uses te-advertisements_state; 4069 } 4070 } 4072 grouping te-all-attributes { 4073 description 4074 "TE attributes configuration grouping for all 4075 interfaces"; 4076 container config { 4077 description 4078 "Configuration parameters for all interface TE 4079 attributes"; 4080 uses te-flooding-parameters_config; 4081 } 4082 container state { 4083 config false; 4084 description 4085 "State parameters for all interface TE metric"; 4086 uses te-flooding-parameters_config; 4087 } 4089 } 4090 /*** End of TE interfaces device groupings ***/ 4092 /** 4093 * TE device augmentations 4094 */ 4095 augment "/te:te" { 4096 description "TE global container."; 4097 /* TE Interface Configuration Data */ 4098 uses interfaces-grouping; 4099 } 4101 /* TE globals device augmentation */ 4102 augment "/te:te/te:globals/te:config" { 4103 description 4104 "Global TE device specific configuration parameters"; 4105 uses globals-device_config; 4106 } 4107 augment "/te:te/te:globals/te:state" { 4108 description 4109 "Global TE device specific state parameters"; 4110 uses globals-device_config; 4111 uses globals-device_state; 4112 } 4114 /* TE tunnels device configuration augmentation */ 4115 augment "/te:te/te:tunnels/te:tunnel/te:config" { 4116 description 4117 "Tunnel device dependent augmentation"; 4118 uses lsp-device-timers_config; 4119 } 4120 augment "/te:te/te:tunnels/te:tunnel/te:state" { 4121 description 4122 "Tunnel device dependent augmentation"; 4123 uses lsp-device-timers_config; 4124 } 4126 /* TE LSPs device state augmentation */ 4127 augment "/te:te/te:lsps-state/te:lsp" { 4128 description 4129 "LSP device dependent augmentation"; 4130 uses lsps-device_state; 4131 } 4133 /* TE interfaces RPCs/execution Data */ 4134 rpc interfaces-rpc { 4135 description 4136 "Execution data for TE interfaces."; 4137 } 4139 /* TE Interfaces Notification Data */ 4140 notification interfaces-notif { 4141 description 4142 "Notification messages for TE interfaces."; 4143 } 4144 } 4145 4147 Figure 9: TE MPLS specific types YANG module 4149 file "ietf-te-mpls@2016-07-05.yang" 4150 module ietf-te-mpls { 4152 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls"; 4154 /* Replace with IANA when assigned */ 4155 prefix "te-mpls"; 4157 /* Import TE generic types */ 4158 import ietf-te { 4159 prefix te; 4160 } 4162 /* Import MPLS TE specific types */ 4163 import ietf-te-mpls-types { 4164 prefix te-mpls-type; 4165 } 4167 organization 4168 "IETF Traffic Engineering Architecture and Signaling (TEAS) 4169 Working Group"; 4171 contact 4172 "WG Web: 4173 WG List: 4175 WG Chair: Lou Berger 4176 4178 WG Chair: Vishnu Pavan Beeram 4179 4181 Editor: Tarek Saad 4182 4184 Editor: Rakesh Gandhi 4185 4187 Editor: Vishnu Pavan Beeram 4188 4190 Editor: Himanshu Shah 4191 4193 Editor: Xufeng Liu 4194 4196 Editor: Xia Chen 4197 4199 Editor: Raqib Jones 4200 4202 Editor: Bin Wen 4203 "; 4205 description 4206 "YANG data module for MPLS TE configurations, 4207 state, RPC and notifications."; 4209 revision "2016-07-05" { 4210 description "Latest update to MPLS TE YANG module."; 4211 reference "TBD"; 4212 } 4214 /* MPLS TE tunnel properties*/ 4215 grouping tunnel-mpls-properties_config { 4216 description "MPLS TE tunnel properties"; 4217 uses te-mpls-type:tunnel-routing-properties; 4218 uses te-mpls-type:tunnel-forwarding-properties; 4219 } 4221 /*** End of MPLS TE tunnel configuration/state */ 4223 /** 4224 * MPLS TE augmentations 4225 */ 4227 /* MPLS TE tunnel augmentations */ 4228 augment "/te:te/te:tunnels/te:tunnel/te:config" { 4229 description "MPLS TE tunnel config augmentations"; 4230 uses tunnel-mpls-properties_config; 4232 } 4233 augment "/te:te/te:tunnels/te:tunnel/te:state" { 4234 description "MPLS TE tunnel state augmentations"; 4235 uses tunnel-mpls-properties_config; 4236 } 4238 /* MPLS TE LSPs augmentations */ 4239 } 4240 4242 Figure 10: TE MPLS YANG module 4244 file "ietf-te-mpls-types@2016-07-05.yang" 4245 module ietf-te-mpls-types { 4247 namespace "urn:ietf:params:xml:ns:yang:ietf-te-mpls-types"; 4249 /* Replace with IANA when assigned */ 4250 prefix "te-mpls-types"; 4252 import ietf-inet-types { 4253 prefix inet; 4254 } 4256 import ietf-mpls { 4257 prefix mpls; 4258 } 4260 organization 4261 "IETF TEAS Working Group"; 4263 contact "Fill me"; 4265 description 4266 "This module contains a collection of generally 4267 useful TE specific YANG data type defintions."; 4269 revision "2016-07-05" { 4270 description "Latest revision of TE MPLS types"; 4271 reference "RFC3209"; 4272 } 4274 identity backup-protection-type { 4275 description 4276 "Base identity for backup protection type"; 4277 } 4279 identity backup-protection-link { 4280 base backup-protection-type; 4281 description 4282 "backup provides link protection only"; 4283 } 4285 identity backup-protection-node-link { 4286 base backup-protection-type; 4287 description 4288 "backup offers node (preferred) or link protection"; 4289 } 4291 identity bc-model-type { 4292 description 4293 "Base identity for Diffserv-TE bandwidth constraint 4294 model type"; 4295 } 4297 identity bc-model-rdm { 4298 base bc-model-type; 4299 description 4300 "Russian Doll bandwidth constraint model type."; 4301 } 4303 identity bc-model-mam { 4304 base bc-model-type; 4305 description 4306 "Maximum Allocation bandwidth constraint 4307 model type."; 4308 } 4310 identity bc-model-mar { 4311 base bc-model-type; 4312 description 4313 "Maximum Allocation with Reservation 4314 bandwidth constraint model type."; 4315 } 4317 grouping bandwidth-constraint-values { 4318 description 4319 "Packet bandwidth contraints values"; 4320 choice value-type { 4321 description 4322 "Value representation"; 4323 case percentages { 4324 container perc-values { 4325 uses bandwidth-mpls-constraints; 4326 description 4327 "Percentage values"; 4329 } 4330 } 4331 case absolutes { 4332 container abs-values { 4333 uses bandwidth-mpls-constraints; 4334 description 4335 "Absolute values"; 4336 } 4337 } 4338 } 4339 } 4341 grouping bandwidth-mpls-reservable { 4342 description 4343 "Packet reservable bandwidth"; 4344 choice bandwidth-value { 4345 description "Reservable bandwidth configuraiton choice"; 4346 case absolute { 4347 leaf absolute-value { 4348 type uint32; 4349 description "Absolute value of the bandwidth"; 4350 } 4351 } 4352 case precentage { 4353 leaf percent-value { 4354 type uint32 { 4355 range "0..4294967295"; 4356 } 4357 description "Percentage reservable bandwidth"; 4358 } 4359 description 4360 "The maximum reservable bandwidth on the 4361 interface"; 4362 } 4363 } 4364 choice bc-model-type { 4365 description 4366 "Reservable bandwidth percentage capacity 4367 values."; 4368 case bc-model-rdm { 4369 container bc-model-rdm { 4370 description 4371 "Russian Doll Model Bandwidth Constraints."; 4372 uses bandwidth-mpls-constraints; 4373 } 4374 } 4375 case bc-model-mam { 4376 container bc-model-mam { 4377 uses bandwidth-mpls-constraints; 4378 description 4379 "Maximum Allocation Model Bandwidth 4380 Constraints."; 4381 } 4382 } 4383 case bc-model-mar { 4384 container bc-model-mar { 4385 uses bandwidth-mpls-constraints; 4386 description 4387 "Maximum Allocation with Reservation Model 4388 Bandwidth Constraints."; 4389 } 4390 } 4391 } 4392 } 4394 typedef bfd-type { 4395 type enumeration { 4396 enum classical { 4397 description "BFD classical session type."; 4398 } 4399 enum seamless { 4400 description "BFD seamless session type."; 4401 } 4402 } 4403 default "classical"; 4404 description 4405 "Type of BFD session"; 4406 } 4408 typedef bfd-encap-mode-type { 4409 type enumeration { 4410 enum gal { 4411 description 4412 "BFD with GAL mode"; 4413 } 4414 enum ip { 4415 description 4416 "BFD with IP mode"; 4417 } 4418 } 4419 default ip; 4420 description 4421 "Possible BFD transport modes when running over TE 4422 LSPs."; 4423 } 4424 grouping bandwidth-mpls-constraints { 4425 description "Bandwidth constraints."; 4426 container bandwidth-mpls-constraints { 4427 description 4428 "Holds the bandwidth contraints properties"; 4429 leaf maximum-reservable { 4430 type uint32 { 4431 range "0..4294967295"; 4432 } 4433 description 4434 "The maximum reservable bandwidth on the 4435 interface"; 4436 } 4437 leaf-list bc-value { 4438 type uint32 { 4439 range "0..4294967295"; 4440 } 4441 max-elements 8; 4442 description 4443 "The bandwidth contraint type"; 4444 } 4445 } 4446 } 4448 grouping tunnel-forwarding-properties { 4449 description "Properties for using tunnel in forwarding."; 4450 container forwarding { 4451 description 4452 "Tunnel forwarding properties container"; 4453 leaf binding-label { 4454 type mpls:mpls-label; 4455 description "MPLS tunnel binding label"; 4456 } 4457 leaf load-share { 4458 type uint32 { 4459 range "1..4294967295"; 4460 } 4461 description "ECMP tunnel forwarding 4462 load-share factor."; 4463 } 4464 choice policy-type { 4465 description 4466 "Tunnel policy type"; 4467 container class { 4468 description 4469 "Tunnel forwarding per class properties"; 4470 leaf class { 4471 type uint8 { 4472 range "1..7"; 4473 } 4474 description 4475 "The class associated with this tunnel"; 4476 } 4477 } 4478 container group { 4479 description 4480 "Tunnel frowarding per group properties"; 4481 leaf-list classes { 4482 type uint8 { 4483 range "1..7"; 4484 } 4485 description 4486 "The forwarding class"; 4487 } 4488 } 4489 } 4490 } 4491 } 4493 grouping tunnel-routing-properties { 4494 description 4495 "TE tunnel routing properties"; 4496 choice routing-choice { 4497 description 4498 "Announces the tunnel to IGP as either 4499 autoroute or forwarding adjacency."; 4500 case autoroute { 4501 container autoroute-announce { 4502 presence "Enable autoroute announce."; 4503 description 4504 "Announce the TE tunnel as autoroute to 4505 IGP for use as IGP shortcut."; 4506 leaf-list routing-afs { 4507 type inet:ip-version; 4508 description 4509 "Address families"; 4510 } 4511 choice metric-type { 4512 description 4513 "Type of metric to use when announcing 4514 the tunnel as shortcut"; 4515 leaf metric { 4516 type uint32 { 4517 range "1..2147483647"; 4518 } 4519 description 4520 "Describes the metric to use when 4521 announcing the tunnel as shortcut"; 4522 } 4523 leaf relative-metric { 4524 type int32 { 4525 range "-10..10"; 4526 } 4527 description 4528 "Relative TE metric to use when 4529 announcing the tunnel as shortcut"; 4530 } 4531 leaf absolute-metric { 4532 type uint32 { 4533 range "1..2147483647"; 4534 } 4535 description 4536 "Absolute TE metric to use when 4537 announcing the tunnel as shortcut"; 4538 } 4539 } 4540 } 4541 } 4542 case forwarding-adjacency { 4543 container forwarding-adjacency { 4544 presence "Enable forwarding adjacency 4545 on the tunnel."; 4546 description 4547 "Announce the TE tunnel 4548 as forwarding adjacency."; 4549 leaf holdtime { 4550 type uint32 { 4551 range "0..4294967295"; 4552 } 4553 description 4554 "Holdtime in seconds after 4555 tunnel becomes UP."; 4556 } 4557 leaf-list routing-afs { 4558 type inet:ip-version; 4559 description 4560 "Address families"; 4561 } 4562 } 4563 } 4564 } 4565 } 4566 } 4567 4568 Figure 11: TE MPLS types YANG module 4570 file "ietf-te-sr-mpls@2016-07-05.yang" 4571 module ietf-te-sr-mpls { 4573 namespace "urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls"; 4575 /* Replace with IANA when assigned */ 4576 prefix "te-sr-mpls"; 4578 /* Import TE generic types */ 4579 import ietf-te { 4580 prefix te; 4581 } 4583 /* Import TE generic types */ 4584 import ietf-te-types { 4585 prefix te-types; 4586 } 4588 organization 4589 "IETF Traffic Engineering Architecture and Signaling (TEAS) 4590 Working Group"; 4592 contact 4593 "WG Web: 4594 WG List: 4596 WG Chair: Lou Berger 4597 4599 WG Chair: Vishnu Pavan Beeram 4600 4602 Editor: Tarek Saad 4603 4605 Editor: Rakesh Gandhi 4606 4608 Editor: Vishnu Pavan Beeram 4609 4611 Editor: Himanshu Shah 4612 4614 Editor: Xufeng Liu 4615 4617 Editor: Xia Chen 4618 4620 Editor: Raqib Jones 4621 4623 Editor: Bin Wen 4624 "; 4626 description 4627 "YANG data module for MPLS TE configurations, 4628 state, RPC and notifications."; 4630 revision "2016-07-05" { 4631 description "Latest update to MPLS TE YANG module."; 4632 reference "TBD"; 4633 } 4635 identity sr-adjacency-protection-type { 4636 description 4637 "The Adj-SID base protection types"; 4638 } 4640 identity sr-adjacency-protection-type-protected { 4641 base sr-adjacency-protection-type; 4642 description 4643 "The Adj-SID is eligible for protection (e.g.: using 4644 IPFRR or MPLS-FRR)"; 4645 } 4647 identity sr-adjacency-protection-type-unprotected { 4648 base sr-adjacency-protection-type; 4649 description 4650 "The Adj-SID is not eligible for protection (e.g.: using 4651 IPFRR or MPLS-FRR)"; 4652 } 4654 /* MPLS SR-TE tunnel properties*/ 4655 grouping tunnel-sr-mpls-properties_config { 4656 description "MPLS TE SR tunnel properties"; 4657 leaf path-signaling-type { 4658 type identityref { 4659 base te-types:path-signaling-type; 4660 } 4661 description "TE tunnel path signaling type"; 4662 } 4663 } 4664 grouping named-sr-path-constraints_config { 4665 description "foo"; 4666 leaf adjacency-protection { 4667 type identityref { 4668 base sr-adjacency-protection-type; 4669 } 4670 description "foo"; 4671 } 4673 } 4675 /*** End of MPLS SR-TE tunnel configuration/state */ 4677 /** 4678 * MPLS TE augmentations 4679 */ 4681 /* MPLS TE global augmentations */ 4682 augment "/te:te/te:globals/te:config/te:named-constraints" { 4683 description "foo"; 4684 uses named-sr-path-constraints_config; 4685 } 4687 augment "/te:te/te:globals/te:state/te:named-constraints" { 4688 description "foo"; 4689 uses named-sr-path-constraints_config; 4690 } 4692 /* MPLS TE tunnel augmentations */ 4693 augment "/te:te/te:tunnels/te:tunnel/te:primary-paths" { 4694 description "MPLS TE tunnel config augmentations"; 4695 uses tunnel-sr-mpls-properties_config; 4696 } 4697 augment "/te:te/te:tunnels/te:tunnel/te:primary-paths/" + 4698 "te:secondary-paths" { 4699 description "MPLS TE tunnel state augmentations"; 4700 uses tunnel-sr-mpls-properties_config; 4701 } 4703 /* MPLS TE LSPs augmentations */ 4704 } 4705 4707 Figure 12: SR TE MPLS YANG module 4709 5. IANA Considerations 4711 This document registers the following URIs in the IETF XML registry 4712 [RFC3688]. Following the format in [RFC3688], the following 4713 registration is requested to be made. 4715 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 4716 is an XML namespace. 4718 URI: urn:ietf:params:xml:ns:yang:ietf-te-device XML: N/A, the 4719 requested URI is an XML namespace. 4721 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls XML: N/A, the requested 4722 URI is an XML namespace. 4724 URI: urn:ietf:params:xml:ns:yang:ietf-te-sr-mpls XML: N/A, the 4725 requested URI is an XML namespace. 4727 URI: urn:ietf:params:xml:ns:yang:ietf-te-types XML: N/A, the 4728 requested URI is an XML namespace. 4730 URI: urn:ietf:params:xml:ns:yang:ietf-te-mpls-types XML: N/A, the 4731 requested URI is an XML namespace. 4733 This document registers a YANG module in the YANG Module Names 4734 registry [RFC6020]. 4736 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 4737 ietf-te reference: RFC3209 4739 name: ietf-te-device namespace: urn:ietf:params:xml:ns:yang:ietf-te 4740 prefix: ietf-te-device reference: RFC3209 4742 name: ietf-te-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 4743 mpls prefix: ietf-te-mpls reference: RFC3209 4745 name: ietf-te-sr-mpls namespace: urn:ietf:params:xml:ns:yang:ietf-te- 4746 sr-mpls prefix: ietf-te-sr-mpls 4748 name: ietf-te-types namespace: urn:ietf:params:xml:ns:yang:ietf-te- 4749 types prefix: ietf-te-types reference: RFC3209 4751 name: ietf-te-mpls-types namespace: urn:ietf:params:xml:ns:yang:ietf- 4752 te-mpls-types prefix: ietf-te-mpls-types reference: RFC3209 4754 6. Security Considerations 4756 The YANG module defined in this memo is designed to be accessed via 4757 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 4758 secure transport layer and the mandatory-to-implement secure 4759 transport is SSH [RFC6242]. The NETCONF access control model 4760 [RFC6536] provides means to restrict access for particular NETCONF 4762 users to a pre-configured subset of all available NETCONF protocol 4763 operations and content. 4765 There are a number of data nodes defined in the YANG module which are 4766 writable/creatable/deletable (i.e., config true, which is the 4767 default). These data nodes may be considered sensitive or vulnerable 4768 in some network environments. Write operations (e.g., ) 4769 to these data nodes without proper protection can have a negative 4770 effect on network operations. Following are the subtrees and data 4771 nodes and their sensitivity/vulnerability: 4773 "/te/globals": This module specifies the global TE configurations on 4774 a device. Unauthorized access to this container could cause the 4775 device to ignore packets it should receive and process. 4777 "/te/tunnels": This list specifies the configured TE tunnels on a 4778 device. Unauthorized access to this list could cause the device to 4779 ignore packets it should receive and process. 4781 "/te/lsps-state": This list specifies the state derived LSPs. 4782 Unauthorized access to this list could cause the device to ignore 4783 packets it should receive and process. 4785 "/te/interfaces": This list specifies the configured TE interfaces on 4786 a device. Unauthorized access to this list could cause the device to 4787 ignore packets it should receive and process. 4789 7. Acknowledgement 4791 The authors would like to thank the members of the multi-vendor YANG 4792 design team who are involved in the definition of this model. 4794 The authors would also like to thank Loa Andersson, Lou Berger, Aihua 4795 Guo, Dhruv Dhody, Anurag Sharma, and Xian Zhang for their comments 4796 and providing valuable feedback on this document. 4798 8. References 4800 8.1. Normative References 4802 [I-D.bjorklund-netmod-structural-mount] 4803 Bjorklund, M., "YANG Structural Mount", draft-bjorklund- 4804 netmod-structural-mount-02 (work in progress), February 4805 2016. 4807 [I-D.ietf-netmod-routing-cfg] 4808 Lhotka, L. and A. Lindem, "A YANG Data Model for Routing 4809 Management", draft-ietf-netmod-routing-cfg-22 (work in 4810 progress), July 2016. 4812 [I-D.ietf-teas-yang-rsvp] 4813 Beeram, V., Saad, T., Gandhi, R., Liu, X., Shah, H., Chen, 4814 X., Jones, R., and B. Wen, "A YANG Data Model for Resource 4815 Reservation Protocol (RSVP)", draft-ietf-teas-yang-rsvp-03 4816 (work in progress), March 2016. 4818 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4819 Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ 4820 RFC2119, March 1997, 4821 . 4823 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 4824 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 4825 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 4826 . 4828 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 4829 Switching (GMPLS) Signaling Resource ReserVation Protocol- 4830 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI 4831 10.17487/RFC3473, January 2003, 4832 . 4834 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4835 DOI 10.17487/RFC3688, January 2004, 4836 . 4838 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4839 the Network Configuration Protocol (NETCONF)", RFC 6020, 4840 DOI 10.17487/RFC6020, October 2010, 4841 . 4843 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4844 and A. Bierman, Ed., "Network Configuration Protocol 4845 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4846 . 4848 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 4849 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 4850 . 4852 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 4853 Protocol (NETCONF) Access Control Model", RFC 6536, DOI 4854 10.17487/RFC6536, March 2012, 4855 . 4857 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 4858 6991, DOI 10.17487/RFC6991, July 2013, 4859 . 4861 8.2. Informative References 4863 [I-D.clemm-netmod-mount] 4864 Clemm, A., Medved, J., and E. Voit, "Mounting YANG-Defined 4865 Information from Remote Datastores", draft-clemm-netmod- 4866 mount-04 (work in progress), March 2016. 4868 [I-D.openconfig-mpls-consolidated-model] 4869 George, J., Fang, L., eric.osborne@level3.com, e., and R. 4870 Shakir, "MPLS / TE Model for Service Provider Networks", 4871 draft-openconfig-mpls-consolidated-model-02 (work in 4872 progress), October 2015. 4874 [I-D.openconfig-netmod-opstate] 4875 Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling 4876 of Operational State Data in YANG", draft-openconfig- 4877 netmod-opstate-01 (work in progress), July 2015. 4879 Authors' Addresses 4881 Tarek Saad (editor) 4882 Cisco Systems Inc 4884 Email: tsaad@cisco.com 4886 Rakesh Gandhi 4887 Cisco Systems Inc 4889 Email: rgandhi@cisco.com 4890 Xufeng Liu 4891 Ericsson 4893 Email: xufeng.liu@ericsson.com 4895 Vishnu Pavan Beeram 4896 Juniper Networks 4898 Email: vbeeram@juniper.net 4900 Himanshu Shah 4901 Ciena 4903 Email: hshah@ciena.com 4905 Igor Bryskin 4906 Huawei Technologies 4908 Email: Igor.Bryskin@huawei.com 4910 Xia Chen 4911 Huawei Technologies 4913 Email: jescia.chenxia@huawei.com 4915 Raqib Jones 4916 Brocade 4918 Email: raqib@Brocade.com 4920 Bin Wen 4921 Comcast 4923 Email: Bin_Wen@cable.comcast.com