idnits 2.17.1 draft-ietf-teas-yang-te-17.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 333 has weird spacing: '...ic-type ide...' == Line 337 has weird spacing: '...w usage ide...' == Line 343 has weird spacing: '...rw name str...' == Line 351 has weird spacing: '...rw name str...' == Line 490 has weird spacing: '...-source ine...' == (38 more instances...) == The document doesn't use any RFC 2119 keywords, yet seems to have RFC 2119 boilerplate text. -- The document date (October 20, 2018) is 2014 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 (-22) exists of draft-ietf-teas-yang-path-computation-02 == Outdated reference: A later version (-19) exists of draft-ietf-teas-yang-rsvp-09 == Outdated reference: A later version (-13) exists of draft-ietf-teas-yang-te-types-01 Summary: 0 errors (**), 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 3 Internet-Draft R. Gandhi 4 Intended status: Standards Track Cisco Systems Inc 5 Expires: April 23, 2019 X. Liu 6 Volta Networks 7 V. Beeram 8 Juniper Networks 9 H. Shah 10 Ciena 11 I. Bryskin 12 Huawei Technologies 13 October 20, 2018 15 A YANG Data Model for Traffic Engineering Tunnels and Interfaces 16 draft-ietf-teas-yang-te-17 18 Abstract 20 This document defines a YANG data model for the configuration and 21 management of Traffic Engineering (TE) interfaces, tunnels and Label 22 Switched Paths (LSPs). The model is divided into YANG modules that 23 classify data into generic, device-specific, technology agnostic, and 24 technology-specific elements. 26 This model covers data for configuration, operational state, remote 27 procedural calls, and event notifications. 29 Status of This Memo 31 This Internet-Draft is submitted in full conformance with the 32 provisions of BCP 78 and BCP 79. 34 Internet-Drafts are working documents of the Internet Engineering 35 Task Force (IETF). Note that other groups may also distribute 36 working documents as Internet-Drafts. The list of current Internet- 37 Drafts is at https://datatracker.ietf.org/drafts/current/. 39 Internet-Drafts are draft documents valid for a maximum of six months 40 and may be updated, replaced, or obsoleted by other documents at any 41 time. It is inappropriate to use Internet-Drafts as reference 42 material or to cite them other than as "work in progress." 44 This Internet-Draft will expire on April 23, 2019. 46 Copyright Notice 48 Copyright (c) 2018 IETF Trust and the persons identified as the 49 document authors. All rights reserved. 51 This document is subject to BCP 78 and the IETF Trust's Legal 52 Provisions Relating to IETF Documents 53 (https://trustee.ietf.org/license-info) in effect on the date of 54 publication of this document. Please review these documents 55 carefully, as they describe your rights and restrictions with respect 56 to this document. Code Components extracted from this document must 57 include Simplified BSD License text as described in Section 4.e of 58 the Trust Legal Provisions and are provided without warranty as 59 described in the Simplified BSD License. 61 Table of Contents 63 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 64 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 65 1.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 66 1.3. TE Technology Models . . . . . . . . . . . . . . . . . . 4 67 1.4. State Data Organization . . . . . . . . . . . . . . . . . 5 68 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 5 69 2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 5 70 2.2. Design Considerations . . . . . . . . . . . . . . . . . . 7 71 2.3. Model Tree Diagram . . . . . . . . . . . . . . . . . . . 7 72 3. Model Organization . . . . . . . . . . . . . . . . . . . . . 44 73 3.1. Global Configuration and State Data . . . . . . . . . . . 45 74 3.2. Interfaces Configuration and State Data . . . . . . . . . 45 75 3.3. Tunnels Configuration and State Data . . . . . . . . . . 46 76 3.3.1. Tunnel Compute-Only Mode . . . . . . . . . . . . . . 47 77 3.3.2. Tunnel Hierarchical Link Endpoint . . . . . . . . . . 48 78 3.4. TE LSPs State Data . . . . . . . . . . . . . . . . . . . 48 79 3.5. Global RPC Data . . . . . . . . . . . . . . . . . . . . . 48 80 3.6. Interface RPC Data . . . . . . . . . . . . . . . . . . . 48 81 3.7. Tunnel RPC Data . . . . . . . . . . . . . . . . . . . . . 48 82 4. TE Generic and Helper YANG Modules . . . . . . . . . . . . . 48 83 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 93 84 6. Security Considerations . . . . . . . . . . . . . . . . . . . 94 85 7. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 95 86 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 95 87 9. Normative References . . . . . . . . . . . . . . . . . . . . 95 88 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 97 90 1. Introduction 92 YANG [RFC6020] and [RFC7950] is a data modeling language that was 93 introduced to define the contents of a conceptual data store that 94 allows networked devices to be managed using NETCONF [RFC6241]. YANG 95 has proved relevant beyond its initial confines, as bindings to other 96 interfaces (e.g. RESTCONF [RFC8040]) and encoding other than XML 97 (e.g. JSON) are being defined. Furthermore, YANG data models can be 98 used as the basis of implementation for other interfaces, such as CLI 99 and programmatic APIs. 101 This document describes YANG data model for TE Tunnels, Label 102 Switched Paths (LSPs) and TE interfaces and covers data applicable to 103 generic or device-independent, device-specific, and Multiprotocol 104 Label Switching (MPLS) technology specific. 106 The document describes a high-level relationship between the modules 107 defined in this document, as well as other external protocol YANG 108 modules. The TE generic YANG data model does not include any data 109 specific to a signaling protocol. It is expected other data plane 110 technology model(s) will augment the TE generic YANG data model. 112 Also, it is expected other YANG module(s) that model TE signaling 113 protocols, such as RSVP-TE ([RFC3209], [RFC3473]), or Segment-Routing 114 TE (SR-TE) will augment the TE generic YANG module. 116 1.1. Terminology 118 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 119 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 120 "OPTIONAL" in this document are to be interpreted as described in BCP 121 14 [RFC2119] [RFC8174] when, and only when, they appear in all 122 capitals, as shown here. 124 The terminology for describing YANG data models is found in 125 [RFC7950]. 127 1.2. Prefixes in Data Node Names 129 In this document, names of data nodes and other data model objects 130 are prefixed using the standard prefix associated with the 131 corresponding YANG imported modules, as shown in Table 1. 133 +---------------+--------------------+-------------------------------+ 134 | Prefix | YANG module | Reference | 135 +---------------+--------------------+-------------------------------+ 136 | yang | ietf-yang-types | [RFC6991] | 137 | inet | ietf-inet-types | [RFC6991] | 138 | rt-types | ietf-routing-types | [RFC8294] | 139 | te | ietf-te | this document | 140 | te-dev | ietf-te-device | this document | 141 | te-types | ietf-te-types | [I-D.ietf-teas-yang-te-types] | 142 | te-mpls-types | ietf-te-mpls-types | [I-D.ietf-teas-yang-te-types] | 143 +---------------+--------------------+-------------------------------+ 145 Table 1: Prefixes and corresponding YANG modules 147 1.3. TE Technology Models 149 This document describes the TE generic YANG data model that is 150 independent of any dataplane technology. One of the design 151 objectives is to allow specific data plane technologies models to 152 reuse the TE generic data model and possibly augment it with 153 technology specific data. There are multiple options that were 154 considered: 156 o Elements of the TE generic YANG data model, including TE tunnels, 157 LSPs, and interfaces can be augmented with leaf(s) to identify the 158 specific technology layer. This approach implies a single list of 159 elements (e.g. TE tunnel(s)) in the model can carry elements of 160 different technology layers. 162 o An instance of the TE generic YANG model can be mounted in the 163 YANG tree once for each TE technology layer(s). This approach 164 provides separation of elements belonging to different technology 165 layers into separate lists per layer in the data model. 167 The model defined in this document leverages the first apprach by 168 relying on the LSP encoding type to identify the specific technology 169 associated with a specific TE interface, tunnel or LSP. For example, 170 for an MPLS TE LSP, the LSP encoding type is assumed to be of "te- 171 types:lsp-encoding-packet". 173 Finally, the TE generic YANG data model does not include any 174 signaling protocol data. It is expected TE signaling protocol 175 module(s) will be defined in other document(s) to cover protocols 176 such as RSVP-TE ([RFC3209], [RFC3473]), and Segment-Routing TE (SR- 177 TE) model and that augment the TE generic YANG data model. 179 1.4. State Data Organization 181 The Network Management Datastore Architecture (NMDA) [RFC8342] 182 addresses modeling state data for ephemeral objects. This draft 183 adopts the NMDA proposal for configuration and state data 184 representation as per IETF guidelines for new IETF YANG models. 186 2. Model Overview 188 The data model(s) defined in this document cover core TE features 189 that are commonly supported across different vendor implementations. 190 The support of extended or vendor specific TE feature(s) is expected 191 to be in augmentations to the base models defined in this document. 193 2.1. Module(s) Relationship 195 The TE generic YANG data model defined in "ietf-te.yang" covers the 196 building blocks that are device independent and agnostic of any 197 specific technology or control plane instances. The TE device model 198 defined in "ietf-te-device.yang" augments the TE generic YANG data 199 model and covers data that is specific to a device - for example, 200 attributes of TE interfaces, or TE timers that are local to a TE 201 node. 203 The TE data model for specific instances of data plane technology 204 exist in a separate YANG module(s) that augment the TE generic YANG 205 data model. For example, the MPLS-TE module "ietf-te-mpls.yang" 206 defined in another document can augment the TE generic model as shown 207 in Figure 1. 209 The TE data model for specific instances of signaling protocol are 210 outside the scope of this document and defined in separate documents. 211 For example, the RSVP-TE [RFC3209] YANG model augmentation of the TE 212 model is covered in [I-D.ietf-teas-yang-rsvp], and other signaling 213 protocol model(s) (e.g. for Segment-Routing TE) are expected to also 214 augment the TE generic YANG data model. 216 The TE generic YANG module "ietf-te" imports the following modules: 218 o ietf-yang-types and ietf-inet-types defined in [RFC6991] 220 o ietf-te-types defined in [I-D.ietf-teas-yang-te-types] 222 The TE device YANG module "ietf-te-device" imports the following 223 module(s): - ietf-yang-types and ietf-inet-types defined in [RFC6991] 224 - ietf-routing-types defined in [RFC8294] - ietf-te-types defined in 225 [I-D.ietf-teas-yang-te-types] - ietf-te defined in this document 226 TE generic +---------+ o: augment 227 module | ietf-te |o-------------+ 228 +---------+ \ 229 o \ 230 |\ \ 231 | \ \ 232 | +----------------+ \ 233 | | ietf-te-device | TE device module 234 | +----------------+ \ 235 | o o \ 236 | / \ \ 237 | / \ \ 238 +--------------+ +---------------+ 239 RSVP-TE module | ietf-rsvp-te |o . | ietf-te-mpls^ | 240 +--------------+ \ +---------------+ 241 | \ 242 | \ 243 | \ 244 | \ 245 | \ 246 o +-------------------+ 247 +-----------+ | ietf-rsvp-otn-te^ | 248 RSVP module | ietf-rsvp | +-------------------+ 249 +-----------+ RSVP-TE with OTN 250 extensions 252 ^ shown for illustration 253 (not in this document) 255 Figure 1: Relationship of TE module(s) with other signaling protocol 256 modules 258 +---------+ 259 | ietf-te | ^: import 260 +---------+ 261 ^ ^ ^ 262 | | +--------------------------------------+ 263 | +----------------------+ | 264 | | | 265 +----------------+ +---------------------+ +--------------------+ 266 | ietf-te-types* | | ietf-te-mpls-types* | | ietf-te-otn-types* | 267 +----------------+ +---------------------+ +--------------------+ 269 *: not in this document, shown for illustration only 271 Figure 2: Relationship between generic and technology specific TE 272 types modules 274 2.2. Design Considerations 276 The following considerations are taken into account with respect data 277 organization: 279 o reusable TE data types that are data plane independent are grouped 280 in the TE generic types module "ietf-te-types.yang" defined in 281 [I-D.ietf-teas-yang-te-types] 283 o reusable TE data types that are data plane specific (e.g. MPLS 284 [RFC3473]) are defined in a data plane type module, e.g. "ietf-te- 285 mpls-types.yang" as defined in [I-D.ietf-teas-yang-te-types]. 286 Other data plane technology types are expected to be defined in 287 separate module(s) as shown in Figure 2 289 o The TE generic YANG data model "ietf-te" contains device 290 independent data and can be used to model data off a device (e.g. 291 on a controller). The device-specific TE data is defined in a 292 separate module "ietf-te-device" as shown in Figure 1. 294 o In general, minimal elements in the model are designated as 295 "mandatory" to allow freedom to vendors to adapt the data model to 296 their specific product implementation. 298 o This model declares a number of TE functions as features that can 299 be optionally supported. 301 2.3. Model Tree Diagram 303 Figure 3 shows the tree diagram of the TE YANG model defined in 304 modules: ietf-te.yang, and ietf-te-device.yang. 306 module: ietf-te 307 +--rw te! 308 +--rw globals 309 | +--rw named-admin-groups 310 | | +--rw named-admin-group* [name] 311 te-types:extended-admin-groups,te-types:named-extended-admin-groups}? 312 | | +--rw name string 313 | | +--rw bit-position? uint32 314 | +--rw named-srlgs 315 | | +--rw named-srlg* [name] {te-types:named-srlg-groups}? 316 | | +--rw name string 317 | | +--rw group? te-types:srlg 318 | | +--rw cost? uint32 319 | +--rw named-path-constraints 320 | | +--rw named-path-constraint* [name] 321 {te-types:named-path-constraints}? 322 | | +--rw name string 323 | | +--rw te-bandwidth 324 | | | +--rw (technology)? 325 | | | +--:(generic) 326 | | | +--rw generic? te-bandwidth 327 | | +--rw link-protection? identityref 328 | | +--rw setup-priority? uint8 329 | | +--rw hold-priority? uint8 330 | | +--rw signaling-type? identityref 331 | | +--rw path-metric-bounds 332 | | | +--rw path-metric-bound* [metric-type] 333 | | | +--rw metric-type identityref 334 | | | +--rw upper-bound? uint64 335 | | +--rw path-affinities-values 336 | | | +--rw path-affinities-value* [usage] 337 | | | +--rw usage identityref 338 | | | +--rw value? admin-groups 339 | | +--rw path-affinity-names 340 | | | +--rw path-affinity-name* [usage] 341 | | | +--rw usage identityref 342 | | | +--rw affinity-name* [name] 343 | | | +--rw name string 344 | | +--rw path-srlgs-values 345 | | | +--rw usage? identityref 346 | | | +--rw values* srlg 347 | | +--rw path-srlgs-names 348 | | | +--rw path-srlgs-name* [usage] 349 | | | +--rw usage identityref 350 | | | +--rw srlg-name* [name] 351 | | | +--rw name string 352 | | +--rw disjointness? 353 te-types:te-path-disjointness 354 | | +--rw explicit-route-objects 355 | | | +--rw route-object-exclude-always* [index] 356 | | | | +--rw index uint32 357 | | | | +--rw (type)? 358 | | | | +--:(num-unnum-hop) 359 | | | | | +--rw num-unnum-hop 360 | | | | | +--rw node-id? te-types:te-node-id 361 | | | | | +--rw link-tp-id? te-types:te-tp-id 362 | | | | | +--rw hop-type? te-hop-type 363 | | | | | +--rw direction? te-link-direction 364 | | | | +--:(as-number) 365 | | | | | +--rw as-number-hop 366 | | | | | +--rw as-number? binary 367 | | | | | +--rw hop-type? te-hop-type 368 | | | | +--:(label) 369 | | | | +--rw label-hop 370 | | | | +--rw te-label 371 | | | | +--rw (technology)? 372 | | | | | +--:(generic) 373 | | | | | +--rw generic? 374 rt-types:generalized-label 375 | | | | +--rw direction? 376 te-label-direction 377 | | | +--rw route-object-include-exclude* [index] 378 | | | +--rw explicit-route-usage? identityref 379 | | | +--rw index uint32 380 | | | +--rw (type)? 381 | | | +--:(num-unnum-hop) 382 | | | | +--rw num-unnum-hop 383 | | | | +--rw node-id? te-types:te-node-id 384 | | | | +--rw link-tp-id? te-types:te-tp-id 385 | | | | +--rw hop-type? te-hop-type 386 | | | | +--rw direction? te-link-direction 387 | | | +--:(as-number) 388 | | | | +--rw as-number-hop 389 | | | | +--rw as-number? binary 390 | | | | +--rw hop-type? te-hop-type 391 | | | +--:(label) 392 | | | | +--rw label-hop 393 | | | | +--rw te-label 394 | | | | +--rw (technology)? 395 | | | | | +--:(generic) 396 | | | | | +--rw generic? 397 rt-types:generalized-label 398 | | | | +--rw direction? 399 te-label-direction 400 | | | +--:(srlg) 401 | | | +--rw srlg 402 | | | +--rw srlg? uint32 403 | | +--rw shared-resources-tunnels 404 | | | +--rw lsp-shared-resources-tunnel* tunnel-ref 405 | | +--rw path-in-segment! 406 | | | +--rw label-restrictions 407 | | | +--rw label-restriction* [index] 408 | | | +--rw restriction? enumeration 409 | | | +--rw index uint32 410 | | | +--rw label-start 411 | | | | +--rw te-label 412 | | | | +--rw (technology)? 413 | | | | | +--:(generic) 414 | | | | | +--rw generic? 415 rt-types:generalized-label 416 | | | | +--rw direction? te-label-direction 417 | | | +--rw label-end 418 | | | | +--rw te-label 419 | | | | +--rw (technology)? 420 | | | | | +--:(generic) 421 | | | | | +--rw generic? 422 rt-types:generalized-label 423 | | | | +--rw direction? te-label-direction 424 | | | +--rw label-step 425 | | | | +--rw (technology)? 426 | | | | +--:(generic) 427 | | | | +--rw generic? int32 428 | | | +--rw range-bitmap? binary 429 | | +--rw path-out-segment! 430 | | | +--rw label-restrictions 431 | | | +--rw label-restriction* [index] 432 | | | +--rw restriction? enumeration 433 | | | +--rw index uint32 434 | | | +--rw label-start 435 | | | | +--rw te-label 436 | | | | +--rw (technology)? 437 | | | | | +--:(generic) 438 | | | | | +--rw generic? 439 rt-types:generalized-label 440 | | | | +--rw direction? te-label-direction 441 | | | +--rw label-end 442 | | | | +--rw te-label 443 | | | | +--rw (technology)? 444 | | | | | +--:(generic) 445 | | | | | +--rw generic? 446 rt-types:generalized-label 447 | | | | +--rw direction? te-label-direction 448 | | | +--rw label-step 449 | | | | +--rw (technology)? 450 | | | | +--:(generic) 451 | | | | +--rw generic? int32 452 | | | +--rw range-bitmap? binary 453 | | +--ro state 454 | | | +--ro bandwidth-generic_state? te-types:te-bandwidth 455 | | | +--ro disjointness_state? 456 te-types:te-path-disjointness 457 | | +--rw te-mpls:bandwidth 458 | | +--rw te-mpls:specification-type? 459 te-mpls-types:te-bandwidth-requested-type 460 | | +--rw te-mpls:set-bandwidth? 461 te-mpls-types:bandwidth-kbps 462 | | +--rw te-mpls:class-type? 463 te-types:te-ds-class 464 | | +--ro te-mpls:state 465 | | +--ro te-mpls:signaled-bandwidth? 466 te-mpls-types:bandwidth-kbps 467 | +--rw te-dev:lsp-install-interval? uint32 468 | +--rw te-dev:lsp-cleanup-interval? uint32 469 | +--rw te-dev:lsp-invalidation-interval? uint32 470 +--rw tunnels 471 | +--rw tunnel* [name] 472 | | +--rw name string 473 | | +--rw identifier? uint16 474 | | +--rw description? string 475 | | +--rw encoding? identityref 476 | | +--rw switching-type? identityref 477 | | +--rw provisioning-state? identityref 478 | | +--rw preference? uint8 479 | | +--rw reoptimize-timer? uint16 480 | | +--rw source? te-types:te-node-id 481 | | +--rw destination? te-types:te-node-id 482 | | +--rw src-tp-id? binary 483 | | +--rw dst-tp-id? binary 484 | | +--rw bidirectional? boolean 485 | | +--rw association-objects 486 | | | +--rw association-object* [type ID source global-source] 487 | | | | +--rw type identityref 488 | | | | +--rw ID uint16 489 | | | | +--rw source inet:ip-address 490 | | | | +--rw global-source inet:ip-address 491 | | | +--rw association-object-extended* [type ID source 492 global-source extended-ID] 493 | | | +--rw type identityref 494 | | | +--rw ID uint16 495 | | | +--rw source inet:ip-address 496 | | | +--rw global-source inet:ip-address 497 | | | +--rw extended-ID binary 498 | | +--rw protection 499 | | | +--rw enable? boolean 500 | | | +--rw protection-type? identityref 501 | | | +--rw protection-reversion-disable? boolean 502 | | | +--rw hold-off-time? uint32 503 | | | +--rw wait-to-revert? uint16 504 | | | +--rw aps-signal-id? uint8 505 | | +--rw restoration 506 | | | +--rw enable? boolean 507 | | | +--rw restoration-type? identityref 508 | | | +--rw restoration-scheme? identityref 509 | | | +--rw restoration-reversion-disable? boolean 510 | | | +--rw hold-off-time? uint32 511 | | | +--rw wait-to-restore? uint16 512 | | | +--rw wait-to-revert? uint16 513 | | +--rw te-topology-identifier 514 | | | +--rw provider-id? te-types:te-global-id 515 | | | +--rw client-id? te-types:te-global-id 516 | | | +--rw topology-id? te-types:te-topology-id 517 | | +--rw te-bandwidth 518 | | | +--rw (technology)? 519 | | | +--:(generic) 520 | | | +--rw generic? te-bandwidth 521 | | +--rw link-protection? identityref 522 | | +--rw setup-priority? uint8 523 | | +--rw hold-priority? uint8 524 | | +--rw signaling-type? identityref 525 | | +--rw dependency-tunnels 526 | | | +--rw dependency-tunnel* [name] 527 | | | +--rw name -> 528 ../../../../../tunnels/tunnel/name 529 | | | +--rw encoding? identityref 530 | | | +--rw switching-type? identityref 531 | | +--rw hierarchical-link 532 | | | +--rw local-te-node-id? te-types:te-node-id 533 | | | +--rw local-te-link-tp-id? te-types:te-tp-id 534 | | | +--rw remote-te-node-id? te-types:te-node-id 535 | | | +--rw te-topology-identifier 536 | | | +--rw provider-id? te-types:te-global-id 537 | | | +--rw client-id? te-types:te-global-id 538 | | | +--rw topology-id? te-types:te-topology-id 539 | | +--ro state 540 | | | +--ro operational-state? identityref 541 | | | +--ro te-dev:lsp-install-interval? uint32 542 | | | +--ro te-dev:lsp-cleanup-interval? uint32 543 | | | +--ro te-dev:lsp-invalidation-interval? uint32 544 | | +--rw p2p-primary-paths 545 | | | +--rw p2p-primary-path* [name] 546 | | | +--rw name string 547 | | | +--rw path-setup-protocol? identityref 548 | | | +--rw path-computation-method? identityref 549 | | | +--rw path-computation-server? inet:ip-address 550 | | | +--rw compute-only? empty 551 | | | +--rw use-path-computation? boolean 552 | | | +--rw lockdown? empty 553 | | | +--rw path-scope? identityref 554 | | | +--rw optimizations 555 | | | | +--rw (algorithm)? 556 | | | | +--:(metric) {path-optimization-metric}? 557 | | | | | +--rw optimization-metric* [metric-type] 558 | | | | | | +--rw metric-type 559 identityref 560 | | | | | | +--rw weight? 561 uint8 562 | | | | | | +--rw explicit-route-exclude-objects 563 | | | | | | | +--rw route-object-exclude-object* 564 [index] 565 | | | | | | | +--rw index uint32 566 | | | | | | | +--rw (type)? 567 | | | | | | | +--:(num-unnum-hop) 568 | | | | | | | | +--rw num-unnum-hop 569 | | | | | | | | +--rw node-id? 570 te-types:te-node-id 571 | | | | | | | | +--rw link-tp-id? 572 te-types:te-tp-id 573 | | | | | | | | +--rw hop-type? 574 te-hop-type 575 | | | | | | | | +--rw direction? 576 te-link-direction 577 | | | | | | | +--:(as-number) 578 | | | | | | | | +--rw as-number-hop 579 | | | | | | | | +--rw as-number? binary 580 | | | | | | | | +--rw hop-type? 581 te-hop-type 582 | | | | | | | +--:(label) 583 | | | | | | | | +--rw label-hop 584 | | | | | | | | +--rw te-label 585 | | | | | | | | +--rw (technology)? 586 | | | | | | | | | +--:(generic) 587 | | | | | | | | | +--rw generic? 588 rt-types:generalized-label 589 | | | | | | | | +--rw direction? 590 te-label-direction 591 | | | | | | | +--:(srlg) 592 | | | | | | | +--rw srlg 593 | | | | | | | +--rw srlg? uint32 594 | | | | | | +--rw explicit-route-include-objects 595 | | | | | | +--rw route-object-include-object* 596 [index] 597 | | | | | | +--rw index uint32 598 | | | | | | +--rw (type)? 599 | | | | | | +--:(num-unnum-hop) 600 | | | | | | | +--rw num-unnum-hop 601 | | | | | | | +--rw node-id? 602 te-types:te-node-id 603 | | | | | | | +--rw link-tp-id? 604 te-types:te-tp-id 605 | | | | | | | +--rw hop-type? 606 te-hop-type 607 | | | | | | | +--rw direction? 608 te-link-direction 609 | | | | | | +--:(as-number) 610 | | | | | | | +--rw as-number-hop 611 | | | | | | | +--rw as-number? binary 612 | | | | | | | +--rw hop-type? 613 te-hop-type 614 | | | | | | +--:(label) 615 | | | | | | +--rw label-hop 616 | | | | | | +--rw te-label 617 | | | | | | +--rw (technology)? 618 | | | | | | | +--:(generic) 619 | | | | | | | +--rw generic? 620 rt-types:generalized-label 621 | | | | | | +--rw direction? 622 te-label-direction 623 | | | | | +--rw tiebreakers 624 | | | | | +--rw tiebreaker* [tiebreaker-type] 625 | | | | | +--rw tiebreaker-type identityref 626 | | | | +--:(objective-function) 627 {path-optimization-objective-function}? 628 | | | | +--rw objective-function 629 | | | | +--rw objective-function-type? 630 identityref 631 | | | +--rw preference? uint8 632 | | | +--rw k-requested-paths? uint8 633 | | | +--rw named-path-constraint? -> 634 ../../../../../globals/named-path-constraints/named-path-constraint/name 635 {te-types:named-path-constraints}? 636 | | | +--rw te-bandwidth 637 | | | | +--rw (technology)? 638 | | | | +--:(generic) 639 | | | | +--rw generic? te-bandwidth 640 | | | +--rw link-protection? identityref 641 | | | +--rw setup-priority? uint8 642 | | | +--rw hold-priority? uint8 643 | | | +--rw signaling-type? identityref 644 | | | +--rw path-metric-bounds 645 | | | | +--rw path-metric-bound* [metric-type] 646 | | | | +--rw metric-type identityref 647 | | | | +--rw upper-bound? uint64 648 | | | +--rw path-affinities-values 649 | | | | +--rw path-affinities-value* [usage] 650 | | | | +--rw usage identityref 651 | | | | +--rw value? admin-groups 652 | | | +--rw path-affinity-names 653 | | | | +--rw path-affinity-name* [usage] 654 | | | | +--rw usage identityref 655 | | | | +--rw affinity-name* [name] 656 | | | | +--rw name string 657 | | | +--rw path-srlgs-values 658 | | | | +--rw usage? identityref 659 | | | | +--rw values* srlg 660 | | | +--rw path-srlgs-names 661 | | | | +--rw path-srlgs-name* [usage] 662 | | | | +--rw usage identityref 663 | | | | +--rw srlg-name* [name] 664 | | | | +--rw name string 665 | | | +--rw disjointness? 666 te-types:te-path-disjointness 667 | | | +--rw explicit-route-objects 668 | | | | +--rw route-object-exclude-always* [index] 669 | | | | | +--rw index uint32 670 | | | | | +--rw (type)? 671 | | | | | +--:(num-unnum-hop) 672 | | | | | | +--rw num-unnum-hop 673 | | | | | | +--rw node-id? te-types:te-node-id 674 | | | | | | +--rw link-tp-id? te-types:te-tp-id 675 | | | | | | +--rw hop-type? te-hop-type 676 | | | | | | +--rw direction? te-link-direction 677 | | | | | +--:(as-number) 678 | | | | | | +--rw as-number-hop 679 | | | | | | +--rw as-number? binary 680 | | | | | | +--rw hop-type? te-hop-type 681 | | | | | +--:(label) 682 | | | | | +--rw label-hop 683 | | | | | +--rw te-label 684 | | | | | +--rw (technology)? 685 | | | | | | +--:(generic) 686 | | | | | | +--rw generic? 687 rt-types:generalized-label 688 | | | | | +--rw direction? 689 te-label-direction 690 | | | | +--rw route-object-include-exclude* [index] 691 | | | | +--rw explicit-route-usage? identityref 692 | | | | +--rw index uint32 693 | | | | +--rw (type)? 694 | | | | +--:(num-unnum-hop) 695 | | | | | +--rw num-unnum-hop 696 | | | | | +--rw node-id? te-types:te-node-id 697 | | | | | +--rw link-tp-id? te-types:te-tp-id 698 | | | | | +--rw hop-type? te-hop-type 699 | | | | | +--rw direction? te-link-direction 700 | | | | +--:(as-number) 701 | | | | | +--rw as-number-hop 702 | | | | | +--rw as-number? binary 703 | | | | | +--rw hop-type? te-hop-type 704 | | | | +--:(label) 705 | | | | | +--rw label-hop 706 | | | | | +--rw te-label 707 | | | | | +--rw (technology)? 708 | | | | | | +--:(generic) 709 | | | | | | +--rw generic? 710 rt-types:generalized-label 711 | | | | | +--rw direction? 712 te-label-direction 713 | | | | +--:(srlg) 714 | | | | +--rw srlg 715 | | | | +--rw srlg? uint32 716 | | | +--rw shared-resources-tunnels 717 | | | | +--rw lsp-shared-resources-tunnel* tunnel-ref 718 | | | +--rw path-in-segment! 719 | | | | +--rw label-restrictions 720 | | | | +--rw label-restriction* [index] 721 | | | | +--rw restriction? enumeration 722 | | | | +--rw index uint32 723 | | | | +--rw label-start 724 | | | | | +--rw te-label 725 | | | | | +--rw (technology)? 726 | | | | | | +--:(generic) 727 | | | | | | +--rw generic? 728 rt-types:generalized-label 729 | | | | | +--rw direction? 730 te-label-direction 731 | | | | +--rw label-end 732 | | | | | +--rw te-label 733 | | | | | +--rw (technology)? 734 | | | | | | +--:(generic) 735 | | | | | | +--rw generic? 736 rt-types:generalized-label 737 | | | | | +--rw direction? 738 te-label-direction 739 | | | | +--rw label-step 740 | | | | | +--rw (technology)? 741 | | | | | +--:(generic) 742 | | | | | +--rw generic? int32 743 | | | | +--rw range-bitmap? binary 744 | | | +--rw path-out-segment! 745 | | | | +--rw label-restrictions 746 | | | | +--rw label-restriction* [index] 747 | | | | +--rw restriction? enumeration 748 | | | | +--rw index uint32 749 | | | | +--rw label-start 750 | | | | | +--rw te-label 751 | | | | | +--rw (technology)? 752 | | | | | | +--:(generic) 753 | | | | | | +--rw generic? 754 rt-types:generalized-label 755 | | | | | +--rw direction? 756 te-label-direction 757 | | | | +--rw label-end 758 | | | | | +--rw te-label 759 | | | | | +--rw (technology)? 760 | | | | | | +--:(generic) 761 | | | | | | +--rw generic? 762 rt-types:generalized-label 763 | | | | | +--rw direction? 764 te-label-direction 765 | | | | +--rw label-step 766 | | | | | +--rw (technology)? 767 | | | | | +--:(generic) 768 | | | | | +--rw generic? int32 769 | | | | +--rw range-bitmap? binary 770 | | | +--ro state 771 | | | | +--ro computed-paths-properties 772 | | | | | +--ro computed-path-properties* [k-index] 773 | | | | | +--ro k-index uint8 774 | | | | | +--ro path-properties 775 | | | | | +--ro path-metric* [metric-type] 776 | | | | | | +--ro metric-type -> 777 ../state/metric-type 778 | | | | | | +--ro state 779 | | | | | | +--ro metric-type? 780 identityref 781 | | | | | | +--ro accumulative-value? uint64 782 | | | | | +--ro path-affinities-values 783 | | | | | | +--ro path-affinities-value* [usage] 784 | | | | | | +--ro usage identityref 785 | | | | | | +--ro value? admin-groups 786 | | | | | +--ro path-affinity-names 787 | | | | | | +--ro path-affinity-name* [usage] 788 | | | | | | +--ro usage identityref 789 | | | | | | +--ro affinity-name* [name] 790 | | | | | | +--ro name string 791 | | | | | +--ro path-srlgs-values 792 | | | | | | +--ro usage? identityref 793 | | | | | | +--ro values* srlg 794 | | | | | +--ro path-srlgs-names 795 | | | | | | +--ro path-srlgs-name* [usage] 796 | | | | | | +--ro usage identityref 797 | | | | | | +--ro srlg-name* [name] 798 | | | | | | +--ro name string 799 | | | | | +--ro path-route-objects 800 | | | | | | +--ro path-computed-route-object* 801 [index] 802 | | | | | | +--ro index -> ../state/index 803 | | | | | | +--ro state 804 | | | | | | +--ro index? 805 uint32 806 | | | | | | +--ro (type)? 807 | | | | | | +--:(num-unnum-hop) 808 | | | | | | | +--ro num-unnum-hop 809 | | | | | | | +--ro node-id? 810 te-types:te-node-id 811 | | | | | | | +--ro link-tp-id? 812 te-types:te-tp-id 813 | | | | | | | +--ro hop-type? 814 te-hop-type 815 | | | | | | | +--ro direction? 816 te-link-direction 817 | | | | | | +--:(as-number) 818 | | | | | | | +--ro as-number-hop 819 | | | | | | | +--ro as-number? binary 820 | | | | | | | +--ro hop-type? 821 te-hop-type 822 | | | | | | +--:(label) 823 | | | | | | +--ro label-hop 824 | | | | | | +--ro te-label 825 | | | | | | +--ro (technology)? 826 | | | | | | | +--:(generic) 827 | | | | | | | +--ro generic? 828 rt-types:generalized-label 829 | | | | | | +--ro direction? 830 te-label-direction 831 | | | | | +--ro shared-resources-tunnels 832 | | | | | +--ro lsp-shared-resources-tunnel* 833 tunnel-ref 834 | | | | +--ro lsps 835 | | | | | +--ro lsp* [source destination tunnel-id lsp-id 836 extended-tunnel-id] 837 | | | | | +--ro source 838 inet:ip-address 839 | | | | | +--ro destination 840 inet:ip-address 841 | | | | | +--ro tunnel-id 842 uint16 843 | | | | | +--ro lsp-id 844 uint16 845 | | | | | +--ro extended-tunnel-id 846 inet:ip-address 847 | | | | | +--ro operational-state? 848 identityref 849 | | | | | +--ro path-setup-protocol? 850 identityref 851 | | | | | +--ro origin-type? 852 enumeration 853 | | | | | +--ro lsp-resource-status? 854 enumeration 855 | | | | | +--ro lockout-of-normal? 856 boolean 857 | | | | | +--ro freeze? 858 boolean 859 | | | | | +--ro lsp-protection-role? 860 enumeration 861 | | | | | +--ro lsp-protection-state? 862 identityref 863 | | | | | +--ro protection-group-ingress-node-id? 864 te-types:te-node-id 865 | | | | | +--ro protection-group-egress-node-id? 866 te-types:te-node-id 867 | | | | | +--ro lsp-shared-resources-tunnel? 868 tunnel-ref 869 | | | | | +--ro lsp-record-route-subobjects 870 | | | | | | +--ro record-route-subobject* [index] 871 | | | | | | +--ro index uint32 872 | | | | | | +--ro (type)? 873 | | | | | | +--:(numbered) 874 | | | | | | | +--ro address? 875 te-types:te-tp-id 876 | | | | | | | +--ro ip-flags? binary 877 | | | | | | +--:(unnumbered) 878 | | | | | | | +--ro node-id? 879 te-types:te-node-id 880 | | | | | | | +--ro link-tp-id? 881 te-types:te-tp-id 882 | | | | | | +--:(label) 883 | | | | | | +--ro label-hop 884 | | | | | | +--ro te-label 885 | | | | | | | +--ro (technology)? 886 | | | | | | | | +--:(generic) 887 | | | | | | | | +--ro generic? 888 rt-types:generalized-label 889 | | | | | | | +--ro direction? 890 te-label-direction 891 | | | | | | +--ro label-flags? binary 892 | | | | | +--ro path-properties 893 | | | | | | +--ro path-metric* [metric-type] 894 | | | | | | | +--ro metric-type -> 895 ../state/metric-type 896 | | | | | | | +--ro state 897 | | | | | | | +--ro metric-type? 898 identityref 899 | | | | | | | +--ro accumulative-value? uint64 900 | | | | | | +--ro path-affinities-values 901 | | | | | | | +--ro path-affinities-value* [usage] 902 | | | | | | | +--ro usage identityref 903 | | | | | | | +--ro value? admin-groups 904 | | | | | | +--ro path-affinity-names 905 | | | | | | | +--ro path-affinity-name* [usage] 906 | | | | | | | +--ro usage identityref 907 | | | | | | | +--ro affinity-name* [name] 908 | | | | | | | +--ro name string 909 | | | | | | +--ro path-srlgs-values 910 | | | | | | | +--ro usage? identityref 911 | | | | | | | +--ro values* srlg 912 | | | | | | +--ro path-srlgs-names 913 | | | | | | | +--ro path-srlgs-name* [usage] 914 | | | | | | | +--ro usage identityref 915 | | | | | | | +--ro srlg-name* [name] 916 | | | | | | | +--ro name string 917 | | | | | | +--ro path-route-objects 918 | | | | | | | +--ro path-computed-route-object* 919 [index] 920 | | | | | | | +--ro index -> ../state/index 921 | | | | | | | +--ro state 922 | | | | | | | +--ro index? 923 uint32 924 | | | | | | | +--ro (type)? 925 | | | | | | | +--:(num-unnum-hop) 926 | | | | | | | | +--ro num-unnum-hop 927 | | | | | | | | +--ro node-id? 928 te-types:te-node-id 929 | | | | | | | | +--ro link-tp-id? 930 te-types:te-tp-id 931 | | | | | | | | +--ro hop-type? 932 te-hop-type 933 | | | | | | | | +--ro direction? 934 te-link-direction 935 | | | | | | | +--:(as-number) 936 | | | | | | | | +--ro as-number-hop 937 | | | | | | | | +--ro as-number? binary 938 | | | | | | | | +--ro hop-type? 939 te-hop-type 940 | | | | | | | +--:(label) 941 | | | | | | | +--ro label-hop 942 | | | | | | | +--ro te-label 943 | | | | | | | +--ro (technology)? 944 | | | | | | | | +--:(generic) 945 | | | | | | | | +--ro generic? 946 rt-types:generalized-label 947 | | | | | | | +--ro direction? 948 te-label-direction 949 | | | | | | +--ro shared-resources-tunnels 950 | | | | | | +--ro lsp-shared-resources-tunnel* 951 tunnel-ref 952 | | | | | +--ro te-dev:lsp-timers 953 | | | | | | +--ro te-dev:life-time? uint32 954 | | | | | | +--ro te-dev:time-to-install? uint32 955 | | | | | | +--ro te-dev:time-to-destroy? uint32 956 | | | | | +--ro te-dev:downstream-info 957 | | | | | | +--ro te-dev:nhop? 958 inet:ip-address 959 | | | | | | +--ro te-dev:outgoing-interface? 960 if:interface-ref 961 | | | | | | +--ro te-dev:neighbor? 962 inet:ip-address 963 | | | | | | +--ro te-dev:label? 964 rt-types:generalized-label 965 | | | | | +--ro te-dev:upstream-info 966 | | | | | | +--ro te-dev:phop? inet:ip-address 967 | | | | | | +--ro te-dev:neighbor? inet:ip-address 968 | | | | | | +--ro te-dev:label? 969 rt-types:generalized-label 970 | | | | | +--ro te-mpls:performance-metric-one-way 971 | | | | | | +--ro te-mpls:one-way-delay? 972 uint32 973 | | | | | | +--ro te-mpls:one-way-min-delay? 974 uint32 975 | | | | | | +--ro te-mpls:one-way-max-delay? 976 uint32 977 | | | | | | +--ro te-mpls:one-way-delay-variation? 978 uint32 979 | | | | | | +--ro te-mpls:one-way-packet-loss? 980 decimal64 981 | | | | | | +--ro te-mpls:one-way-residual-bandwidth? 982 rt-types:bandwidth-ieee-float32 983 | | | | | | +--ro te-mpls:one-way-available-bandwidth? 984 rt-types:bandwidth-ieee-float32 985 | | | | | | +--ro te-mpls:one-way-utilized-bandwidth? 986 rt-types:bandwidth-ieee-float32 987 | | | | | +--ro te-mpls:performance-metric-two-way 988 | | | | | +--ro te-mpls:two-way-delay? 989 uint32 990 | | | | | +--ro te-mpls:two-way-min-delay? 991 uint32 992 | | | | | +--ro te-mpls:two-way-max-delay? 993 uint32 994 | | | | | +--ro te-mpls:two-way-delay-variation? 995 uint32 996 | | | | | +--ro te-mpls:two-way-packet-loss? 997 decimal64 998 | | | | +--ro te-mpls:static-lsp-name? 999 mpls-static:static-lsp-ref 1000 | | | +--rw p2p-reverse-primary-path 1001 | | | | +--rw name? string 1002 | | | | +--rw path-setup-protocol? identityref 1003 | | | | +--rw path-computation-method? identityref 1004 | | | | +--rw path-computation-server? inet:ip-address 1005 | | | | +--rw compute-only? empty 1006 | | | | +--rw use-path-computation? boolean 1007 | | | | +--rw lockdown? empty 1008 | | | | +--rw path-scope? identityref 1009 | | | | +--rw optimizations 1010 | | | | | +--rw (algorithm)? 1011 | | | | | +--:(metric) {path-optimization-metric}? 1012 | | | | | | +--rw optimization-metric* [metric-type] 1013 | | | | | | | +--rw metric-type 1014 identityref 1015 | | | | | | | +--rw weight? 1016 uint8 1017 | | | | | | | +--rw explicit-route-exclude-objects 1018 | | | | | | | | +--rw route-object-exclude-object* 1019 [index] 1020 | | | | | | | | +--rw index 1021 uint32 1022 | | | | | | | | +--rw (type)? 1023 | | | | | | | | +--:(num-unnum-hop) 1024 | | | | | | | | | +--rw num-unnum-hop 1025 | | | | | | | | | +--rw node-id? 1026 te-types:te-node-id 1027 | | | | | | | | | +--rw link-tp-id? 1028 te-types:te-tp-id 1029 | | | | | | | | | +--rw hop-type? 1030 te-hop-type 1031 | | | | | | | | | +--rw direction? 1032 te-link-direction 1033 | | | | | | | | +--:(as-number) 1034 | | | | | | | | | +--rw as-number-hop 1035 | | | | | | | | | +--rw as-number? binary 1036 | | | | | | | | | +--rw hop-type? 1037 te-hop-type 1038 | | | | | | | | +--:(label) 1039 | | | | | | | | | +--rw label-hop 1040 | | | | | | | | | +--rw te-label 1041 | | | | | | | | | +--rw (technology)? 1042 | | | | | | | | | | +--:(generic) 1043 | | | | | | | | | | +--rw generic? 1044 rt-types:generalized-label 1045 | | | | | | | | | +--rw direction? 1046 te-label-direction 1047 | | | | | | | | +--:(srlg) 1048 | | | | | | | | +--rw srlg 1049 | | | | | | | | +--rw srlg? uint32 1050 | | | | | | | +--rw explicit-route-include-objects 1051 | | | | | | | +--rw route-object-include-object* 1052 [index] 1053 | | | | | | | +--rw index 1054 uint32 1055 | | | | | | | +--rw (type)? 1056 | | | | | | | +--:(num-unnum-hop) 1057 | | | | | | | | +--rw num-unnum-hop 1058 | | | | | | | | +--rw node-id? 1059 te-types:te-node-id 1060 | | | | | | | | +--rw link-tp-id? 1061 te-types:te-tp-id 1062 | | | | | | | | +--rw hop-type? 1063 te-hop-type 1064 | | | | | | | | +--rw direction? 1065 te-link-direction 1066 | | | | | | | +--:(as-number) 1067 | | | | | | | | +--rw as-number-hop 1068 | | | | | | | | +--rw as-number? binary 1069 | | | | | | | | +--rw hop-type? 1070 te-hop-type 1071 | | | | | | | +--:(label) 1072 | | | | | | | +--rw label-hop 1073 | | | | | | | +--rw te-label 1074 | | | | | | | +--rw (technology)? 1075 | | | | | | | | +--:(generic) 1076 | | | | | | | | +--rw generic? 1077 rt-types:generalized-label 1078 | | | | | | | +--rw direction? 1079 te-label-direction 1080 | | | | | | +--rw tiebreakers 1081 | | | | | | +--rw tiebreaker* [tiebreaker-type] 1082 | | | | | | +--rw tiebreaker-type identityref 1083 | | | | | +--:(objective-function) 1084 {path-optimization-objective-function}? 1085 | | | | | +--rw objective-function 1086 | | | | | +--rw objective-function-type? 1087 identityref 1088 | | | | +--rw named-path-constraint? -> 1089 ./../../../../globals/named-path-constraints/named-path-constraint/name 1090 {te-types:named-path-constraints}? 1091 | | | | +--rw te-bandwidth 1092 | | | | | +--rw (technology)? 1093 | | | | | +--:(generic) 1094 | | | | | +--rw generic? te-bandwidth 1095 | | | | +--rw link-protection? identityref 1096 | | | | +--rw setup-priority? uint8 1097 | | | | +--rw hold-priority? uint8 1098 | | | | +--rw signaling-type? identityref 1099 | | | | +--rw path-metric-bounds 1100 | | | | | +--rw path-metric-bound* [metric-type] 1101 | | | | | +--rw metric-type identityref 1102 | | | | | +--rw upper-bound? uint64 1103 | | | | +--rw path-affinities-values 1104 | | | | | +--rw path-affinities-value* [usage] 1105 | | | | | +--rw usage identityref 1106 | | | | | +--rw value? admin-groups 1107 | | | | +--rw path-affinity-names 1108 | | | | | +--rw path-affinity-name* [usage] 1109 | | | | | +--rw usage identityref 1110 | | | | | +--rw affinity-name* [name] 1111 | | | | | +--rw name string 1112 | | | | +--rw path-srlgs-values 1113 | | | | | +--rw usage? identityref 1114 | | | | | +--rw values* srlg 1115 | | | | +--rw path-srlgs-names 1116 | | | | | +--rw path-srlgs-name* [usage] 1117 | | | | | +--rw usage identityref 1118 | | | | | +--rw srlg-name* [name] 1119 | | | | | +--rw name string 1120 | | | | +--rw disjointness? 1121 te-types:te-path-disjointness 1122 | | | | +--rw explicit-route-objects 1123 | | | | | +--rw route-object-exclude-always* [index] 1124 | | | | | | +--rw index uint32 1125 | | | | | | +--rw (type)? 1126 | | | | | | +--:(num-unnum-hop) 1127 | | | | | | | +--rw num-unnum-hop 1128 | | | | | | | +--rw node-id? 1129 te-types:te-node-id 1130 | | | | | | | +--rw link-tp-id? te-types:te-tp-id 1131 | | | | | | | +--rw hop-type? te-hop-type 1132 | | | | | | | +--rw direction? te-link-direction 1133 | | | | | | +--:(as-number) 1134 | | | | | | | +--rw as-number-hop 1135 | | | | | | | +--rw as-number? binary 1136 | | | | | | | +--rw hop-type? te-hop-type 1137 | | | | | | +--:(label) 1138 | | | | | | +--rw label-hop 1139 | | | | | | +--rw te-label 1140 | | | | | | +--rw (technology)? 1141 | | | | | | | +--:(generic) 1142 | | | | | | | +--rw generic? 1143 rt-types:generalized-label 1144 | | | | | | +--rw direction? 1145 te-label-direction 1146 | | | | | +--rw route-object-include-exclude* [index] 1147 | | | | | +--rw explicit-route-usage? identityref 1148 | | | | | +--rw index uint32 1149 | | | | | +--rw (type)? 1150 | | | | | +--:(num-unnum-hop) 1151 | | | | | | +--rw num-unnum-hop 1152 | | | | | | +--rw node-id? 1153 te-types:te-node-id 1154 | | | | | | +--rw link-tp-id? te-types:te-tp-id 1155 | | | | | | +--rw hop-type? te-hop-type 1156 | | | | | | +--rw direction? te-link-direction 1157 | | | | | +--:(as-number) 1158 | | | | | | +--rw as-number-hop 1159 | | | | | | +--rw as-number? binary 1160 | | | | | | +--rw hop-type? te-hop-type 1161 | | | | | +--:(label) 1162 | | | | | | +--rw label-hop 1163 | | | | | | +--rw te-label 1164 | | | | | | +--rw (technology)? 1165 | | | | | | | +--:(generic) 1166 | | | | | | | +--rw generic? 1167 rt-types:generalized-label 1168 | | | | | | +--rw direction? 1169 te-label-direction 1170 | | | | | +--:(srlg) 1171 | | | | | +--rw srlg 1172 | | | | | +--rw srlg? uint32 1173 | | | | +--rw shared-resources-tunnels 1174 | | | | | +--rw lsp-shared-resources-tunnel* tunnel-ref 1175 | | | | +--rw path-in-segment! 1176 | | | | | +--rw label-restrictions 1177 | | | | | +--rw label-restriction* [index] 1178 | | | | | +--rw restriction? enumeration 1179 | | | | | +--rw index uint32 1180 | | | | | +--rw label-start 1181 | | | | | | +--rw te-label 1182 | | | | | | +--rw (technology)? 1183 | | | | | | | +--:(generic) 1184 | | | | | | | +--rw generic? 1185 rt-types:generalized-label 1186 | | | | | | +--rw direction? 1187 te-label-direction 1188 | | | | | +--rw label-end 1189 | | | | | | +--rw te-label 1190 | | | | | | +--rw (technology)? 1191 | | | | | | | +--:(generic) 1192 | | | | | | | +--rw generic? 1193 rt-types:generalized-label 1194 | | | | | | +--rw direction? 1195 te-label-direction 1196 | | | | | +--rw label-step 1197 | | | | | | +--rw (technology)? 1198 | | | | | | +--:(generic) 1199 | | | | | | +--rw generic? int32 1200 | | | | | +--rw range-bitmap? binary 1201 | | | | +--rw path-out-segment! 1202 | | | | | +--rw label-restrictions 1203 | | | | | +--rw label-restriction* [index] 1204 | | | | | +--rw restriction? enumeration 1205 | | | | | +--rw index uint32 1206 | | | | | +--rw label-start 1207 | | | | | | +--rw te-label 1208 | | | | | | +--rw (technology)? 1209 | | | | | | | +--:(generic) 1210 | | | | | | | +--rw generic? 1211 rt-types:generalized-label 1212 | | | | | | +--rw direction? 1213 te-label-direction 1214 | | | | | +--rw label-end 1215 | | | | | | +--rw te-label 1216 | | | | | | +--rw (technology)? 1217 | | | | | | | +--:(generic) 1218 | | | | | | | +--rw generic? 1219 rt-types:generalized-label 1220 | | | | | | +--rw direction? 1221 te-label-direction 1222 | | | | | +--rw label-step 1223 | | | | | | +--rw (technology)? 1224 | | | | | | +--:(generic) 1225 | | | | | | +--rw generic? int32 1226 | | | | | +--rw range-bitmap? binary 1227 | | | | +--ro state 1228 | | | | | +--ro computed-paths-properties 1229 | | | | | | +--ro computed-path-properties* [k-index] 1230 | | | | | | +--ro k-index uint8 1231 | | | | | | +--ro path-properties 1232 | | | | | | +--ro path-metric* [metric-type] 1233 | | | | | | | +--ro metric-type -> 1234 ../state/metric-type 1235 | | | | | | | +--ro state 1236 | | | | | | | +--ro metric-type? 1237 identityref 1238 | | | | | | | +--ro accumulative-value? uint64 1239 | | | | | | +--ro path-affinities-values 1240 | | | | | | | +--ro path-affinities-value* [usage] 1241 | | | | | | | +--ro usage identityref 1242 | | | | | | | +--ro value? admin-groups 1243 | | | | | | +--ro path-affinity-names 1244 | | | | | | | +--ro path-affinity-name* [usage] 1245 | | | | | | | +--ro usage identityref 1246 | | | | | | | +--ro affinity-name* [name] 1247 | | | | | | | +--ro name string 1248 | | | | | | +--ro path-srlgs-values 1249 | | | | | | | +--ro usage? identityref 1250 | | | | | | | +--ro values* srlg 1251 | | | | | | +--ro path-srlgs-names 1252 | | | | | | | +--ro path-srlgs-name* [usage] 1253 | | | | | | | +--ro usage identityref 1254 | | | | | | | +--ro srlg-name* [name] 1255 | | | | | | | +--ro name string 1256 | | | | | | +--ro path-route-objects 1257 | | | | | | | +--ro path-computed-route-object* 1258 [index] 1259 | | | | | | | +--ro index -> ../state/index 1260 | | | | | | | +--ro state 1261 | | | | | | | +--ro index? 1262 uint32 1263 | | | | | | | +--ro (type)? 1264 | | | | | | | +--:(num-unnum-hop) 1265 | | | | | | | | +--ro num-unnum-hop 1266 | | | | | | | | +--ro node-id? 1267 te-types:te-node-id 1268 | | | | | | | | +--ro link-tp-id? 1269 te-types:te-tp-id 1270 | | | | | | | | +--ro hop-type? 1271 te-hop-type 1272 | | | | | | | | +--ro direction? 1273 te-link-direction 1274 | | | | | | | +--:(as-number) 1275 | | | | | | | | +--ro as-number-hop 1276 | | | | | | | | +--ro as-number? 1277 binary 1278 | | | | | | | | +--ro hop-type? 1279 te-hop-type 1280 | | | | | | | +--:(label) 1281 | | | | | | | +--ro label-hop 1282 | | | | | | | +--ro te-label 1283 | | | | | | | +--ro (technology)? 1284 | | | | | | | | +--:(generic) 1285 | | | | | | | | +--ro 1286 generic? rt-types:generalized-label 1287 | | | | | | | +--ro direction? 1288 te-label-direction 1289 | | | | | | +--ro shared-resources-tunnels 1290 | | | | | | +--ro lsp-shared-resources-tunnel* 1291 tunnel-ref 1292 | | | | | +--ro lsps 1293 | | | | | +--ro lsp* [source destination tunnel-id 1294 lsp-id extended-tunnel-id] 1295 | | | | | +--ro source 1296 inet:ip-address 1297 | | | | | +--ro destination 1298 inet:ip-address 1299 | | | | | +--ro tunnel-id 1300 uint16 1301 | | | | | +--ro lsp-id 1302 uint16 1303 | | | | | +--ro extended-tunnel-id 1304 inet:ip-address 1305 | | | | | +--ro operational-state? 1306 identityref 1307 | | | | | +--ro path-setup-protocol? 1308 identityref 1309 | | | | | +--ro origin-type? 1310 enumeration 1311 | | | | | +--ro lsp-resource-status? 1312 enumeration 1313 | | | | | +--ro lockout-of-normal? 1314 boolean 1315 | | | | | +--ro freeze? 1316 boolean 1317 | | | | | +--ro lsp-protection-role? 1318 enumeration 1319 | | | | | +--ro lsp-protection-state? 1320 identityref 1321 | | | | | +--ro protection-group-ingress-node-id? 1322 te-types:te-node-id 1323 | | | | | +--ro protection-group-egress-node-id? 1324 te-types:te-node-id 1325 | | | | | +--ro lsp-shared-resources-tunnel? 1326 tunnel-ref 1327 | | | | | +--ro lsp-record-route-subobjects 1328 | | | | | | +--ro record-route-subobject* [index] 1329 | | | | | | +--ro index uint32 1330 | | | | | | +--ro (type)? 1331 | | | | | | +--:(numbered) 1332 | | | | | | | +--ro address? 1333 te-types:te-tp-id 1334 | | | | | | | +--ro ip-flags? binary 1335 | | | | | | +--:(unnumbered) 1336 | | | | | | | +--ro node-id? 1337 te-types:te-node-id 1338 | | | | | | | +--ro link-tp-id? 1339 te-types:te-tp-id 1340 | | | | | | +--:(label) 1341 | | | | | | +--ro label-hop 1342 | | | | | | +--ro te-label 1343 | | | | | | | +--ro (technology)? 1344 | | | | | | | | +--:(generic) 1345 | | | | | | | | +--ro generic? 1346 rt-types:generalized-label 1347 | | | | | | | +--ro direction? 1348 te-label-direction 1349 | | | | | | +--ro label-flags? binary 1350 | | | | | +--ro path-properties 1351 | | | | | +--ro path-metric* [metric-type] 1352 | | | | | | +--ro metric-type -> 1353 ../state/metric-type 1354 | | | | | | +--ro state 1355 | | | | | | +--ro metric-type? 1356 identityref 1357 | | | | | | +--ro accumulative-value? uint64 1358 | | | | | +--ro path-affinities-values 1359 | | | | | | +--ro path-affinities-value* [usage] 1360 | | | | | | +--ro usage identityref 1361 | | | | | | +--ro value? admin-groups 1362 | | | | | +--ro path-affinity-names 1363 | | | | | | +--ro path-affinity-name* [usage] 1364 | | | | | | +--ro usage identityref 1365 | | | | | | +--ro affinity-name* [name] 1366 | | | | | | +--ro name string 1367 | | | | | +--ro path-srlgs-values 1368 | | | | | | +--ro usage? identityref 1369 | | | | | | +--ro values* srlg 1370 | | | | | +--ro path-srlgs-names 1371 | | | | | | +--ro path-srlgs-name* [usage] 1372 | | | | | | +--ro usage identityref 1373 | | | | | | +--ro srlg-name* [name] 1374 | | | | | | +--ro name string 1375 | | | | | +--ro path-route-objects 1376 | | | | | | +--ro path-computed-route-object* 1377 [index] 1378 | | | | | | +--ro index -> ../state/index 1379 | | | | | | +--ro state 1380 | | | | | | +--ro index? 1381 uint32 1382 | | | | | | +--ro (type)? 1383 | | | | | | +--:(num-unnum-hop) 1384 | | | | | | | +--ro num-unnum-hop 1385 | | | | | | | +--ro node-id? 1386 te-types:te-node-id 1387 | | | | | | | +--ro link-tp-id? 1388 te-types:te-tp-id 1389 | | | | | | | +--ro hop-type? 1390 te-hop-type 1391 | | | | | | | +--ro direction? 1392 te-link-direction 1393 | | | | | | +--:(as-number) 1394 | | | | | | | +--ro as-number-hop 1395 | | | | | | | +--ro as-number? 1396 binary 1397 | | | | | | | +--ro hop-type? 1398 te-hop-type 1399 | | | | | | +--:(label) 1400 | | | | | | +--ro label-hop 1401 | | | | | | +--ro te-label 1402 | | | | | | +--ro (technology)? 1403 | | | | | | | +--:(generic) 1404 | | | | | | | +--ro 1405 generic? rt-types:generalized-label 1406 | | | | | | +--ro direction? 1407 te-label-direction 1408 | | | | | +--ro shared-resources-tunnels 1409 | | | | | +--ro lsp-shared-resources-tunnel* 1410 tunnel-ref 1411 | | | | +--rw p2p-reverse-secondary-path 1412 | | | | +--rw secondary-path? -> 1413 ../../../../../p2p-secondary-paths/p2p-secondary-path/name 1414 | | | | +--rw path-setup-protocol? identityref 1415 | | | +--rw candidate-p2p-secondary-paths 1416 | | | | +--rw candidate-p2p-secondary-path* [secondary-path] 1417 | | | | +--rw secondary-path -> 1418 ../../../../../p2p-secondary-paths/p2p-secondary-path/name 1419 | | | | +--rw path-setup-protocol? identityref 1420 | | | | +--ro state 1421 | | | | +--ro active? boolean 1422 | | | +--rw te-mpls:static-lsp-name? 1423 mpls-static:static-lsp-ref 1424 | | +--rw p2p-secondary-paths 1425 | | | +--rw p2p-secondary-path* [name] 1426 | | | +--rw name string 1427 | | | +--rw path-setup-protocol? identityref 1428 | | | +--rw path-computation-method? identityref 1429 | | | +--rw path-computation-server? inet:ip-address 1430 | | | +--rw compute-only? empty 1431 | | | +--rw use-path-computation? boolean 1432 | | | +--rw lockdown? empty 1433 | | | +--rw path-scope? identityref 1434 | | | +--rw optimizations 1435 | | | | +--rw (algorithm)? 1436 | | | | +--:(metric) {path-optimization-metric}? 1437 | | | | | +--rw optimization-metric* [metric-type] 1438 | | | | | | +--rw metric-type 1439 identityref 1440 | | | | | | +--rw weight? 1441 uint8 1442 | | | | | | +--rw explicit-route-exclude-objects 1443 | | | | | | | +--rw route-object-exclude-object* 1444 [index] 1445 | | | | | | | +--rw index uint32 1446 | | | | | | | +--rw (type)? 1447 | | | | | | | +--:(num-unnum-hop) 1448 | | | | | | | | +--rw num-unnum-hop 1449 | | | | | | | | +--rw node-id? 1450 te-types:te-node-id 1451 | | | | | | | | +--rw link-tp-id? 1452 te-types:te-tp-id 1453 | | | | | | | | +--rw hop-type? 1454 te-hop-type 1455 | | | | | | | | +--rw direction? 1456 te-link-direction 1457 | | | | | | | +--:(as-number) 1458 | | | | | | | | +--rw as-number-hop 1459 | | | | | | | | +--rw as-number? binary 1460 | | | | | | | | +--rw hop-type? 1461 te-hop-type 1462 | | | | | | | +--:(label) 1463 | | | | | | | | +--rw label-hop 1464 | | | | | | | | +--rw te-label 1465 | | | | | | | | +--rw (technology)? 1466 | | | | | | | | | +--:(generic) 1467 | | | | | | | | | +--rw generic? 1468 rt-types:generalized-label 1469 | | | | | | | | +--rw direction? 1470 te-label-direction 1471 | | | | | | | +--:(srlg) 1472 | | | | | | | +--rw srlg 1473 | | | | | | | +--rw srlg? uint32 1474 | | | | | | +--rw explicit-route-include-objects 1475 | | | | | | +--rw route-object-include-object* 1476 [index] 1477 | | | | | | +--rw index uint32 1478 | | | | | | +--rw (type)? 1479 | | | | | | +--:(num-unnum-hop) 1480 | | | | | | | +--rw num-unnum-hop 1481 | | | | | | | +--rw node-id? 1482 te-types:te-node-id 1483 | | | | | | | +--rw link-tp-id? 1484 te-types:te-tp-id 1485 | | | | | | | +--rw hop-type? 1486 te-hop-type 1487 | | | | | | | +--rw direction? 1488 te-link-direction 1489 | | | | | | +--:(as-number) 1490 | | | | | | | +--rw as-number-hop 1491 | | | | | | | +--rw as-number? binary 1492 | | | | | | | +--rw hop-type? 1493 te-hop-type 1494 | | | | | | +--:(label) 1495 | | | | | | +--rw label-hop 1496 | | | | | | +--rw te-label 1497 | | | | | | +--rw (technology)? 1498 | | | | | | | +--:(generic) 1499 | | | | | | | +--rw generic? 1500 rt-types:generalized-label 1501 | | | | | | +--rw direction? 1502 te-label-direction 1503 | | | | | +--rw tiebreakers 1504 | | | | | +--rw tiebreaker* [tiebreaker-type] 1505 | | | | | +--rw tiebreaker-type identityref 1506 | | | | +--:(objective-function) 1507 {path-optimization-objective-function}? 1508 | | | | +--rw objective-function 1509 | | | | +--rw objective-function-type? 1510 identityref 1511 | | | +--rw preference? uint8 1512 | | | +--rw k-requested-paths? uint8 1513 | | | +--rw named-path-constraint? -> 1514 ../../../../../globals/named-path-constraints/named-path-constraint/name 1515 {te-types:named-path-constraints}? 1516 | | | +--rw te-bandwidth 1517 | | | | +--rw (technology)? 1518 | | | | +--:(generic) 1519 | | | | +--rw generic? te-bandwidth 1520 | | | +--rw link-protection? identityref 1521 | | | +--rw setup-priority? uint8 1522 | | | +--rw hold-priority? uint8 1523 | | | +--rw signaling-type? identityref 1524 | | | +--rw path-metric-bounds 1525 | | | | +--rw path-metric-bound* [metric-type] 1526 | | | | +--rw metric-type identityref 1527 | | | | +--rw upper-bound? uint64 1528 | | | +--rw path-affinities-values 1529 | | | | +--rw path-affinities-value* [usage] 1530 | | | | +--rw usage identityref 1531 | | | | +--rw value? admin-groups 1532 | | | +--rw path-affinity-names 1533 | | | | +--rw path-affinity-name* [usage] 1534 | | | | +--rw usage identityref 1535 | | | | +--rw affinity-name* [name] 1536 | | | | +--rw name string 1537 | | | +--rw path-srlgs-values 1538 | | | | +--rw usage? identityref 1539 | | | | +--rw values* srlg 1540 | | | +--rw path-srlgs-names 1541 | | | | +--rw path-srlgs-name* [usage] 1542 | | | | +--rw usage identityref 1543 | | | | +--rw srlg-name* [name] 1544 | | | | +--rw name string 1545 | | | +--rw disjointness? 1546 te-types:te-path-disjointness 1547 | | | +--rw explicit-route-objects 1548 | | | | +--rw route-object-exclude-always* [index] 1549 | | | | | +--rw index uint32 1550 | | | | | +--rw (type)? 1551 | | | | | +--:(num-unnum-hop) 1552 | | | | | | +--rw num-unnum-hop 1553 | | | | | | +--rw node-id? te-types:te-node-id 1554 | | | | | | +--rw link-tp-id? te-types:te-tp-id 1555 | | | | | | +--rw hop-type? te-hop-type 1556 | | | | | | +--rw direction? te-link-direction 1557 | | | | | +--:(as-number) 1558 | | | | | | +--rw as-number-hop 1559 | | | | | | +--rw as-number? binary 1560 | | | | | | +--rw hop-type? te-hop-type 1561 | | | | | +--:(label) 1562 | | | | | +--rw label-hop 1563 | | | | | +--rw te-label 1564 | | | | | +--rw (technology)? 1565 | | | | | | +--:(generic) 1566 | | | | | | +--rw generic? 1567 rt-types:generalized-label 1568 | | | | | +--rw direction? 1569 te-label-direction 1570 | | | | +--rw route-object-include-exclude* [index] 1571 | | | | +--rw explicit-route-usage? identityref 1572 | | | | +--rw index uint32 1573 | | | | +--rw (type)? 1574 | | | | +--:(num-unnum-hop) 1575 | | | | | +--rw num-unnum-hop 1576 | | | | | +--rw node-id? te-types:te-node-id 1577 | | | | | +--rw link-tp-id? te-types:te-tp-id 1578 | | | | | +--rw hop-type? te-hop-type 1579 | | | | | +--rw direction? te-link-direction 1580 | | | | +--:(as-number) 1581 | | | | | +--rw as-number-hop 1582 | | | | | +--rw as-number? binary 1583 | | | | | +--rw hop-type? te-hop-type 1584 | | | | +--:(label) 1585 | | | | | +--rw label-hop 1586 | | | | | +--rw te-label 1587 | | | | | +--rw (technology)? 1588 | | | | | | +--:(generic) 1589 | | | | | | +--rw generic? 1590 rt-types:generalized-label 1591 | | | | | +--rw direction? 1592 te-label-direction 1593 | | | | +--:(srlg) 1594 | | | | +--rw srlg 1595 | | | | +--rw srlg? uint32 1596 | | | +--rw shared-resources-tunnels 1597 | | | | +--rw lsp-shared-resources-tunnel* tunnel-ref 1598 | | | +--rw path-in-segment! 1599 | | | | +--rw label-restrictions 1600 | | | | +--rw label-restriction* [index] 1601 | | | | +--rw restriction? enumeration 1602 | | | | +--rw index uint32 1603 | | | | +--rw label-start 1604 | | | | | +--rw te-label 1605 | | | | | +--rw (technology)? 1606 | | | | | | +--:(generic) 1607 | | | | | | +--rw generic? 1608 rt-types:generalized-label 1609 | | | | | +--rw direction? 1610 te-label-direction 1611 | | | | +--rw label-end 1612 | | | | | +--rw te-label 1613 | | | | | +--rw (technology)? 1614 | | | | | | +--:(generic) 1615 | | | | | | +--rw generic? 1616 rt-types:generalized-label 1617 | | | | | +--rw direction? 1618 te-label-direction 1619 | | | | +--rw label-step 1620 | | | | | +--rw (technology)? 1621 | | | | | +--:(generic) 1622 | | | | | +--rw generic? int32 1623 | | | | +--rw range-bitmap? binary 1624 | | | +--rw path-out-segment! 1625 | | | | +--rw label-restrictions 1626 | | | | +--rw label-restriction* [index] 1627 | | | | +--rw restriction? enumeration 1628 | | | | +--rw index uint32 1629 | | | | +--rw label-start 1630 | | | | | +--rw te-label 1631 | | | | | +--rw (technology)? 1632 | | | | | | +--:(generic) 1633 | | | | | | +--rw generic? 1634 rt-types:generalized-label 1635 | | | | | +--rw direction? 1636 te-label-direction 1637 | | | | +--rw label-end 1638 | | | | | +--rw te-label 1639 | | | | | +--rw (technology)? 1640 | | | | | | +--:(generic) 1641 | | | | | | +--rw generic? 1642 rt-types:generalized-label 1643 | | | | | +--rw direction? 1644 te-label-direction 1645 | | | | +--rw label-step 1646 | | | | | +--rw (technology)? 1647 | | | | | +--:(generic) 1648 | | | | | +--rw generic? int32 1649 | | | | +--rw range-bitmap? binary 1650 | | | +--rw protection 1651 | | | | +--rw enable? boolean 1652 | | | | +--rw protection-type? identityref 1653 | | | | +--rw protection-reversion-disable? boolean 1654 | | | | +--rw hold-off-time? uint32 1655 | | | | +--rw wait-to-revert? uint16 1656 | | | | +--rw aps-signal-id? uint8 1657 | | | +--rw restoration 1658 | | | | +--rw enable? boolean 1659 | | | | +--rw restoration-type? identityref 1660 | | | | +--rw restoration-scheme? identityref 1661 | | | | +--rw restoration-reversion-disable? boolean 1662 | | | | +--rw hold-off-time? uint32 1663 | | | | +--rw wait-to-restore? uint16 1664 | | | | +--rw wait-to-revert? uint16 1665 | | | +--ro state 1666 | | | | +--ro computed-paths-properties 1667 | | | | | +--ro computed-path-properties* [k-index] 1668 | | | | | +--ro k-index uint8 1669 | | | | | +--ro path-properties 1670 | | | | | +--ro path-metric* [metric-type] 1671 | | | | | | +--ro metric-type -> 1672 ../state/metric-type 1673 | | | | | | +--ro state 1674 | | | | | | +--ro metric-type? 1675 identityref 1676 | | | | | | +--ro accumulative-value? uint64 1677 | | | | | +--ro path-affinities-values 1678 | | | | | | +--ro path-affinities-value* [usage] 1679 | | | | | | +--ro usage identityref 1680 | | | | | | +--ro value? admin-groups 1681 | | | | | +--ro path-affinity-names 1682 | | | | | | +--ro path-affinity-name* [usage] 1683 | | | | | | +--ro usage identityref 1684 | | | | | | +--ro affinity-name* [name] 1685 | | | | | | +--ro name string 1686 | | | | | +--ro path-srlgs-values 1687 | | | | | | +--ro usage? identityref 1688 | | | | | | +--ro values* srlg 1689 | | | | | +--ro path-srlgs-names 1690 | | | | | | +--ro path-srlgs-name* [usage] 1691 | | | | | | +--ro usage identityref 1692 | | | | | | +--ro srlg-name* [name] 1693 | | | | | | +--ro name string 1694 | | | | | +--ro path-route-objects 1695 | | | | | | +--ro path-computed-route-object* 1696 [index] 1697 | | | | | | +--ro index -> ../state/index 1698 | | | | | | +--ro state 1699 | | | | | | +--ro index? 1700 uint32 1701 | | | | | | +--ro (type)? 1702 | | | | | | +--:(num-unnum-hop) 1703 | | | | | | | +--ro num-unnum-hop 1704 | | | | | | | +--ro node-id? 1705 te-types:te-node-id 1706 | | | | | | | +--ro link-tp-id? 1707 te-types:te-tp-id 1708 | | | | | | | +--ro hop-type? 1709 te-hop-type 1710 | | | | | | | +--ro direction? 1711 te-link-direction 1712 | | | | | | +--:(as-number) 1713 | | | | | | | +--ro as-number-hop 1714 | | | | | | | +--ro as-number? binary 1715 | | | | | | | +--ro hop-type? 1716 te-hop-type 1717 | | | | | | +--:(label) 1718 | | | | | | +--ro label-hop 1719 | | | | | | +--ro te-label 1720 | | | | | | +--ro (technology)? 1721 | | | | | | | +--:(generic) 1722 | | | | | | | +--ro generic? 1723 rt-types:generalized-label 1724 | | | | | | +--ro direction? 1725 te-label-direction 1726 | | | | | +--ro shared-resources-tunnels 1727 | | | | | +--ro lsp-shared-resources-tunnel* 1728 tunnel-ref 1729 | | | | +--ro lsps 1730 | | | | | +--ro lsp* [source destination tunnel-id lsp-id 1731 extended-tunnel-id] 1732 | | | | | +--ro source 1733 inet:ip-address 1734 | | | | | +--ro destination 1735 inet:ip-address 1736 | | | | | +--ro tunnel-id 1737 uint16 1738 | | | | | +--ro lsp-id 1739 uint16 1740 | | | | | +--ro extended-tunnel-id 1741 inet:ip-address 1742 | | | | | +--ro operational-state? 1743 identityref 1744 | | | | | +--ro path-setup-protocol? 1745 identityref 1746 | | | | | +--ro origin-type? 1747 enumeration 1748 | | | | | +--ro lsp-resource-status? 1749 enumeration 1750 | | | | | +--ro lockout-of-normal? 1751 boolean 1752 | | | | | +--ro freeze? 1753 boolean 1754 | | | | | +--ro lsp-protection-role? 1755 enumeration 1756 | | | | | +--ro lsp-protection-state? 1757 identityref 1758 | | | | | +--ro protection-group-ingress-node-id? 1759 te-types:te-node-id 1760 | | | | | +--ro protection-group-egress-node-id? 1761 te-types:te-node-id 1762 | | | | | +--ro lsp-shared-resources-tunnel? 1763 tunnel-ref 1764 | | | | | +--ro lsp-record-route-subobjects 1765 | | | | | | +--ro record-route-subobject* [index] 1766 | | | | | | +--ro index uint32 1767 | | | | | | +--ro (type)? 1768 | | | | | | +--:(numbered) 1769 | | | | | | | +--ro address? 1770 te-types:te-tp-id 1771 | | | | | | | +--ro ip-flags? binary 1772 | | | | | | +--:(unnumbered) 1773 | | | | | | | +--ro node-id? 1774 te-types:te-node-id 1775 | | | | | | | +--ro link-tp-id? 1776 te-types:te-tp-id 1777 | | | | | | +--:(label) 1778 | | | | | | +--ro label-hop 1779 | | | | | | +--ro te-label 1780 | | | | | | | +--ro (technology)? 1781 | | | | | | | | +--:(generic) 1782 | | | | | | | | +--ro generic? 1783 rt-types:generalized-label 1784 | | | | | | | +--ro direction? 1785 te-label-direction 1786 | | | | | | +--ro label-flags? binary 1787 | | | | | +--ro path-properties 1788 | | | | | | +--ro path-metric* [metric-type] 1789 | | | | | | | +--ro metric-type -> 1790 ../state/metric-type 1791 | | | | | | | +--ro state 1792 | | | | | | | +--ro metric-type? 1793 identityref 1794 | | | | | | | +--ro accumulative-value? uint64 1795 | | | | | | +--ro path-affinities-values 1796 | | | | | | | +--ro path-affinities-value* [usage] 1797 | | | | | | | +--ro usage identityref 1798 | | | | | | | +--ro value? admin-groups 1799 | | | | | | +--ro path-affinity-names 1800 | | | | | | | +--ro path-affinity-name* [usage] 1801 | | | | | | | +--ro usage identityref 1802 | | | | | | | +--ro affinity-name* [name] 1803 | | | | | | | +--ro name string 1804 | | | | | | +--ro path-srlgs-values 1805 | | | | | | | +--ro usage? identityref 1806 | | | | | | | +--ro values* srlg 1807 | | | | | | +--ro path-srlgs-names 1808 | | | | | | | +--ro path-srlgs-name* [usage] 1809 | | | | | | | +--ro usage identityref 1810 | | | | | | | +--ro srlg-name* [name] 1811 | | | | | | | +--ro name string 1812 | | | | | | +--ro path-route-objects 1813 | | | | | | | +--ro path-computed-route-object* 1814 [index] 1815 | | | | | | | +--ro index -> ../state/index 1816 | | | | | | | +--ro state 1817 | | | | | | | +--ro index? 1818 uint32 1819 | | | | | | | +--ro (type)? 1820 | | | | | | | +--:(num-unnum-hop) 1821 | | | | | | | | +--ro num-unnum-hop 1822 | | | | | | | | +--ro node-id? 1823 te-types:te-node-id 1824 | | | | | | | | +--ro link-tp-id? 1825 te-types:te-tp-id 1826 | | | | | | | | +--ro hop-type? 1827 te-hop-type 1828 | | | | | | | | +--ro direction? 1829 te-link-direction 1830 | | | | | | | +--:(as-number) 1831 | | | | | | | | +--ro as-number-hop 1832 | | | | | | | | +--ro as-number? binary 1833 | | | | | | | | +--ro hop-type? 1834 te-hop-type 1835 | | | | | | | +--:(label) 1836 | | | | | | | +--ro label-hop 1837 | | | | | | | +--ro te-label 1838 | | | | | | | +--ro (technology)? 1839 | | | | | | | | +--:(generic) 1840 | | | | | | | | +--ro generic? 1841 rt-types:generalized-label 1842 | | | | | | | +--ro direction? 1843 te-label-direction 1844 | | | | | | +--ro shared-resources-tunnels 1845 | | | | | | +--ro lsp-shared-resources-tunnel* 1846 tunnel-ref 1847 | | | | | +--ro te-dev:lsp-timers 1848 | | | | | | +--ro te-dev:life-time? uint32 1849 | | | | | | +--ro te-dev:time-to-install? uint32 1850 | | | | | | +--ro te-dev:time-to-destroy? uint32 1851 | | | | | +--ro te-dev:downstream-info 1852 | | | | | | +--ro te-dev:nhop? 1853 inet:ip-address 1854 | | | | | | +--ro te-dev:outgoing-interface? 1855 if:interface-ref 1856 | | | | | | +--ro te-dev:neighbor? 1857 inet:ip-address 1858 | | | | | | +--ro te-dev:label? 1859 rt-types:generalized-label 1860 | | | | | +--ro te-dev:upstream-info 1861 | | | | | +--ro te-dev:phop? inet:ip-address 1862 | | | | | +--ro te-dev:neighbor? inet:ip-address 1863 | | | | | +--ro te-dev:label? 1864 rt-types:generalized-label 1865 | | | | +--ro te-mpls:static-lsp-name? 1866 mpls-static:static-lsp-ref 1867 | | | +--rw te-mpls:static-lsp-name? 1868 mpls-static:static-lsp-ref 1869 | | +---x tunnel-action 1870 | | | +---w input 1871 | | | | +---w action-type? identityref 1872 | | | +--ro output 1873 | | | +--ro action-result? identityref 1874 | | +---x protection-external-commands 1875 | | | +---w input 1876 | | | +---w protection-external-command? identityref 1877 | | | +---w protection-group-ingress-node-id? 1878 te-types:te-node-id 1879 | | | +---w protection-group-egress-node-id? 1880 te-types:te-node-id 1881 | | | +---w path-ref? path-ref 1882 | | | +---w traffic-type? enumeration 1883 | | | +---w extra-traffic-tunnel-ref? tunnel-ref 1884 | | +--rw te-dev:lsp-install-interval? uint32 1885 | | +--rw te-dev:lsp-cleanup-interval? uint32 1886 | | +--rw te-dev:lsp-invalidation-interval? uint32 1887 | | +--rw te-mpls:tunnel-igp-shortcut 1888 | | | +--rw te-mpls:shortcut-eligible? boolean 1889 | | | +--rw te-mpls:metric-type? identityref 1890 | | | +--rw te-mpls:metric? int32 1891 | | | +--rw te-mpls:routing-afs* inet:ip-version 1892 | | +--rw te-mpls:forwarding 1893 | | | +--rw te-mpls:binding-label? rt-types:mpls-label 1894 | | | +--rw te-mpls:load-share? uint32 1895 | | | +--rw te-mpls:policy-class? uint8 1896 | | +--rw te-mpls:bandwidth-mpls 1897 | | +--rw te-mpls:specification-type? 1898 te-mpls-types:te-bandwidth-requested-type 1899 | | +--rw te-mpls:set-bandwidth? 1900 te-mpls-types:bandwidth-kbps 1901 | | +--rw te-mpls:class-type? te-types:te-ds-class 1902 | | +--ro te-mpls:state 1903 | | | +--ro te-mpls:signaled-bandwidth? 1904 te-mpls-types:bandwidth-kbps 1905 | | +--rw te-mpls:auto-bandwidth 1906 | | +--rw te-mpls:enabled? boolean 1907 | | +--rw te-mpls:min-bw? 1908 te-mpls-types:bandwidth-kbps 1909 | | +--rw te-mpls:max-bw? 1910 te-mpls-types:bandwidth-kbps 1911 | | +--rw te-mpls:adjust-interval? uint32 1912 | | +--rw te-mpls:adjust-threshold? rt-types:percentage 1913 | | +--rw te-mpls:overflow 1914 | | | +--rw te-mpls:enabled? boolean 1915 | | | +--rw te-mpls:overflow-threshold? 1916 rt-types:percentage 1917 | | | +--rw te-mpls:trigger-event-count? uint16 1918 | | +--rw te-mpls:underflow 1919 | | +--rw te-mpls:enabled? boolean 1920 | | +--rw te-mpls:underflow-threshold? 1921 rt-types:percentage 1922 | | +--rw te-mpls:trigger-event-count? uint16 1923 | +--rw tunnel-p2mp* [name] 1924 | +--rw name string 1925 | +--rw identifier? uint16 1926 | +--rw description? string 1927 | +--ro state 1928 | +--ro operational-state? identityref 1929 +--ro lsps-state 1930 | +--ro lsp* [source destination tunnel-id lsp-id 1931 extended-tunnel-id] 1932 | +--ro source inet:ip-address 1933 | +--ro destination inet:ip-address 1934 | +--ro tunnel-id uint16 1935 | +--ro lsp-id uint16 1936 | +--ro extended-tunnel-id inet:ip-address 1937 | +--ro operational-state? identityref 1938 | +--ro path-setup-protocol? identityref 1939 | +--ro origin-type? enumeration 1940 | +--ro lsp-resource-status? enumeration 1941 | +--ro lockout-of-normal? boolean 1942 | +--ro freeze? boolean 1943 | +--ro lsp-protection-role? enumeration 1944 | +--ro lsp-protection-state? identityref 1945 | +--ro protection-group-ingress-node-id? te-types:te-node-id 1946 | +--ro protection-group-egress-node-id? te-types:te-node-id 1947 | +--ro lsp-record-route-subobjects 1948 | | +--ro record-route-subobject* [index] 1949 | | +--ro index uint32 1950 | | +--ro (type)? 1951 | | +--:(numbered) 1952 | | | +--ro address? te-types:te-tp-id 1953 | | | +--ro ip-flags? binary 1954 | | +--:(unnumbered) 1955 | | | +--ro node-id? te-types:te-node-id 1956 | | | +--ro link-tp-id? te-types:te-tp-id 1957 | | +--:(label) 1958 | | +--ro label-hop 1959 | | +--ro te-label 1960 | | | +--ro (technology)? 1961 | | | | +--:(generic) 1962 | | | | +--ro generic? 1963 rt-types:generalized-label 1964 | | | +--ro direction? te-label-direction 1965 | | +--ro label-flags? binary 1966 | +--ro te-dev:lsp-timers 1967 | | +--ro te-dev:life-time? uint32 1968 | | +--ro te-dev:time-to-install? uint32 1969 | | +--ro te-dev:time-to-destroy? uint32 1970 | +--ro te-dev:downstream-info 1971 | | +--ro te-dev:nhop? inet:ip-address 1972 | | +--ro te-dev:outgoing-interface? if:interface-ref 1973 | | +--ro te-dev:neighbor? inet:ip-address 1974 | | +--ro te-dev:label? 1975 rt-types:generalized-label 1976 | +--ro te-dev:upstream-info 1977 | +--ro te-dev:phop? inet:ip-address 1978 | +--ro te-dev:neighbor? inet:ip-address 1979 | +--ro te-dev:label? rt-types:generalized-label 1980 +--rw te-dev:interfaces 1981 +--rw te-dev:threshold-type? enumeration 1982 +--rw te-dev:delta-percentage? rt-types:percentage 1983 +--rw te-dev:threshold-specification? enumeration 1984 +--rw te-dev:up-thresholds* rt-types:percentage 1985 +--rw te-dev:down-thresholds* rt-types:percentage 1986 +--rw te-dev:up-down-thresholds* rt-types:percentage 1987 +--rw te-dev:interface* [interface] 1988 +--rw te-dev:interface 1989 if:interface-ref 1990 +--rw te-dev:te-metric? 1991 te-types:te-metric 1992 +--rw (te-dev:admin-group-type)? 1993 | +--:(te-dev:value-admin-groups) 1994 | | +--rw (te-dev:value-admin-group-type)? 1995 | | +--:(te-dev:admin-groups) 1996 | | | +--rw te-dev:admin-group? 1997 te-types:admin-group 1998 | | +--:(te-dev:extended-admin-groups) 1999 {te-types:extended-admin-groups}? 2000 | | +--rw te-dev:extended-admin-group? 2001 te-types:extended-admin-group 2002 | +--:(te-dev:named-admin-groups) 2003 | +--rw te-dev:named-admin-groups* [named-admin-group] 2004 {te-types:extended-admin-groups,te-types:named-extended-admin-groups}? 2005 | +--rw te-dev:named-admin-group -> 2006 ../../../../te:globals/named-admin-groups/named-admin-group/name 2007 +--rw (te-dev:srlg-type)? 2008 | +--:(te-dev:value-srlgs) 2009 | | +--rw te-dev:values* [value] 2010 | | +--rw te-dev:value uint32 2011 | +--:(te-dev:named-srlgs) 2012 | +--rw te-dev:named-srlgs* [named-srlg] 2013 {te-types:named-srlg-groups}? 2014 | +--rw te-dev:named-srlg -> 2015 ../../../../te:globals/named-srlgs/named-srlg/name 2016 +--rw te-dev:threshold-type? enumeration 2017 +--rw te-dev:delta-percentage? 2018 rt-types:percentage 2019 +--rw te-dev:threshold-specification? enumeration 2020 +--rw te-dev:up-thresholds* 2021 rt-types:percentage 2022 +--rw te-dev:down-thresholds* 2023 rt-types:percentage 2024 +--rw te-dev:up-down-thresholds* 2025 rt-types:percentage 2026 +--rw te-dev:switching-capabilities* [switching-capability] 2027 | +--rw te-dev:switching-capability identityref 2028 | +--rw te-dev:encoding? identityref 2029 +--ro te-dev:state 2030 +--ro te-dev:te-advertisements_state 2031 +--ro te-dev:flood-interval? uint32 2032 +--ro te-dev:last-flooded-time? uint32 2033 +--ro te-dev:next-flooded-time? uint32 2034 +--ro te-dev:last-flooded-trigger? enumeration 2035 +--ro te-dev:advertized-level-areas* [level-area] 2036 +--ro te-dev:level-area uint32 2038 rpcs: 2039 +---x globals-rpc 2040 +---x interfaces-rpc 2041 +---x tunnels-rpc 2042 +---w input 2043 | +---w tunnel-info 2044 | +---w (type)? 2045 | +--:(tunnel-p2p) 2046 | | +---w p2p-id? tunnel-ref 2047 | +--:(tunnel-p2mp) 2048 | +---w p2mp-id? tunnel-p2mp-ref 2049 +--ro output 2050 +--ro result 2051 +--ro result? enumeration 2053 notifications: 2054 +---n globals-notif 2055 +---n tunnels-notif 2056 module: ietf-te-device 2058 rpcs: 2059 +---x interfaces-rpc 2061 notifications: 2062 +---n interfaces-notif 2064 Figure 3: TE generic model configuration and state tree 2066 3. Model Organization 2068 The TE generic YANG data module "ietf-te" covers configuration, 2069 state, RPC and notifications data pertaining to TE global parameters, 2070 interfaces, tunnels and LSPs parameters that are device independent. 2072 The container "te" is the top level container in the data model. The 2073 presence of this container enables TE function system wide. 2075 The model top level organization is shown below in Figure 4: 2077 module: ietf-te 2078 +--rw te! 2079 +--rw globals 2080 . 2081 . 2083 +--rw tunnels 2084 . 2085 . 2087 +-- lsps-state 2089 rpcs: 2090 +---x globals-rpc 2091 +---x tunnels-rpc 2092 notifications: 2093 +---n globals-notif 2094 +---n tunnels-notif 2096 Figure 4: TE generic highlevel model view 2098 3.1. Global Configuration and State Data 2100 The global TE branch of the data model covers configurations that 2101 control TE features behavior system-wide, and its respective state. 2102 Examples of such configuration data are: 2104 o Table of named SRLG mappings 2106 o Table of named (extended) administrative groups mappings 2108 o Table of named explicit paths to be referenced by TE tunnels 2110 o Table of named path-constraints sets 2112 o Auto-bandwidth global parameters 2114 o TE diff-serve TE-class maps 2116 o System-wide capabilities for LSP reoptimization (included in the 2117 TE device model) 2119 * Reoptimization timers (periodic interval, LSP installation and 2120 cleanup) 2122 o System-wide capabilities for TE state flooding (included in the TE 2123 device model) 2125 * Periodic flooding interval 2127 o Global capabilities that affect the originating, traversing and 2128 terminating LSPs. For example: 2130 * Path selection parameters (e.g. metric to optimize, etc.) 2132 * Path or segment protection parameters 2134 3.2. Interfaces Configuration and State Data 2136 This branch of the model covers configuration and state data 2137 corresponding to TE interfaces present on a device. The module 2138 "ietf-te-device" is introduced to hold TE device specific properties. 2140 Examples of TE interface properties are: * Maximum reservable 2141 bandwidth, bandwidth constraints (BC) * Flooding parameters * 2142 Flooding intervals and threshold values * interface attributes * 2143 (Extended) administrative groups * SRLG values * TE metric value * 2144 Fast reroute backup tunnel properties (such as static, auto-tunnel) 2145 The state corresponding to the TE interfaces applied configuration, 2146 protocol derived state, and stats and counters all fall under the 2147 interface "state" sub-container as shown in Figure 5 below: 2149 module: ietf-te-device 2150 augment /te:te: 2151 +--rw interfaces 2152 . 2153 +-- rw te-dev:te-attributes 2154 <> 2155 . 2156 +-- ro state 2157 <> 2159 Figure 5: TE interface state 2161 This covers state data for TE interfaces such as: 2163 o Bandwidth information: maximum bandwidth, available bandwidth at 2164 different priorities and for each class-type (CT) 2166 o List of admitted LSPs 2168 * Name, bandwidth value and pool, time, priority 2170 o Statistics: state counters, flooding counters, admission counters 2171 (accepted/rejected), preemption counters 2173 o Adjacency information 2175 * Neighbor address 2177 * Metric value 2179 3.3. Tunnels Configuration and State Data 2181 This branch covers data related to TE tunnels configuration and 2182 state. Data that is device independent is defined in the TE generic 2183 YANG module "ietf-te", where as the device dependent data is defined 2184 in the device module "ietf-te-device". The derived state associated 2185 with tunnels is grouped under a state container as shown in Figure 6. 2187 module: ietf-te 2188 +--rw te! 2189 +--rw tunnels 2190 <> 2191 . 2192 +-- ro state 2193 <> 2195 Figure 6: TE interface state tree 2197 Examples of tunnel configuration data for TE tunnels: 2199 o Name and type (e.g. P2P, P2MP) of the TE tunnel 2201 o Administrative and operational state of the TE tunnel 2203 o Set of primary and corresponding secondary paths and corresponding 2204 path attributes 2206 o Bidirectional path attribute(s) including forwarding and reverse 2207 path properties 2209 o Protection and restoration path parameters 2211 3.3.1. Tunnel Compute-Only Mode 2213 A configured TE tunnel, by default, is provisioned so it can carry 2214 traffic as soon as a valid path is computed and an LSP instantiated. 2215 In some cases, however, a TE tunnel may be provisioned for the only 2216 purpose of computing a path and reporting it without the need to 2217 instantiate the LSP or commit any resources. In such a case, the 2218 tunnel is configured in "compute-only" mode to distinguish it from 2219 default tunnel behavior. 2221 A "compute-only" TE tunnel is configured as a usual TE tunnel with 2222 associated per path constraint(s) and properties on a device or 2223 controller. The device or controller computes the feasible path(s) 2224 subject to configured constraints and reflects the computed path(s) 2225 in the LSP(s) Record-Route Object (RRO) list. At any time, a client 2226 may query "on-demand" the "compute-only" TE tunnel computed path(s) 2227 properties by querying the state of the tunnel. Alternatively, the 2228 client can subscribe on the "compute-only" TE tunnel to be notified 2229 of computed path(s) and whenever it changes. 2231 3.3.2. Tunnel Hierarchical Link Endpoint 2233 TE LSPs can be set up in MPLS or Generalized MPLS (GMPLS) networks to 2234 be used to form links to carry traffic in in other (client) networks 2235 [RFC6107]. In this case, the model introduces the TE tunnel 2236 hierarchical link endpoint parameters to identify the specific link 2237 in the client layer that the TE tunnel is associated with. 2239 3.4. TE LSPs State Data 2241 TE LSPs are derived state data that is usually instantiated via 2242 signaling protocols. TE LSPs exists on routers as ingress (starting 2243 point of LSP), transit (mid-point of LSP ), or egress (termination 2244 point of the LSP). TE LSPs are distinguished by the 5 tuple, and LSP 2245 type (P2P or P2MP). In the model, the nodes holding LSPs data exist 2246 in the read-only lsps-state list as show in Figure 3. 2248 3.5. Global RPC Data 2250 This branch of the model covers system-wide RPC execution data to 2251 trigger actions and optionally expect responses. Examples of such TE 2252 commands are to: 2254 o Clear global TE statistics of various features 2256 3.6. Interface RPC Data 2258 This collection of data in the model defines TE interface RPC 2259 execution commands. Examples of these are to: 2261 o Clear TE statistics for all or for individual TE interfaces 2263 o Trigger immediate flooding for one or all TE interfaces 2265 3.7. Tunnel RPC Data 2267 This branch of the model covers TE tunnel RPC execution data to 2268 trigger actions and expect responses. The TE generic YANG data model 2269 defines target containers that an external module in 2270 [I-D.ietf-teas-yang-path-computation] augments with RPCs that allow 2271 the invocation of certain TE functions (e.g. path computations). 2273 4. TE Generic and Helper YANG Modules 2275 file "ietf-te@2018-10-10.yang" 2276 module ietf-te { 2277 yang-version 1.1; 2278 namespace "urn:ietf:params:xml:ns:yang:ietf-te"; 2280 /* Replace with IANA when assigned */ 2281 prefix "te"; 2283 /* Import TE generic types */ 2284 import ietf-te-types { 2285 prefix te-types; 2286 reference "draft-ietf-teas-yang-te-types: A YANG Data Model for 2287 Common Traffic Engineering Types"; 2288 } 2290 import ietf-inet-types { 2291 prefix inet; 2292 reference "RFC6991: Common YANG Data Types"; 2293 } 2295 organization 2296 "IETF Traffic Engineering Architecture and Signaling (TEAS) 2297 Working Group"; 2299 contact 2300 "WG Web: 2301 WG List: 2303 WG Chair: Lou Berger 2304 2306 WG Chair: Vishnu Pavan Beeram 2307 2309 Editor: Tarek Saad 2310 2312 Editor: Rakesh Gandhi 2313 2315 Editor: Vishnu Pavan Beeram 2316 2318 Editor: Himanshu Shah 2319 2321 Editor: Xufeng Liu 2322 2324 Editor: Igor Bryskin 2325 "; 2327 description 2328 "YANG data module for TE configuration, 2329 state, RPC and notifications."; 2331 revision "2018-10-10" { 2332 description "Latest update to TE generic YANG module."; 2333 reference "TBA"; 2334 } 2336 typedef tunnel-ref { 2337 type leafref { 2338 path "/te:te/te:tunnels/te:tunnel/te:name"; 2339 } 2340 description 2341 "This type is used by data models that need to reference 2342 configured TE tunnel."; 2343 } 2345 typedef tunnel-p2mp-ref { 2346 type leafref { 2347 path "/te:te/te:tunnels/te:tunnel-p2mp/te:name"; 2348 } 2349 description 2350 "This type is used by data models that need to reference 2351 configured P2MP TE tunnel."; 2352 reference "RFC4875"; 2353 } 2355 typedef path-ref { 2356 type union { 2357 type leafref { 2358 path "/te:te/te:tunnels/te:tunnel/" + 2359 "te:p2p-primary-paths/te:p2p-primary-path/te:name"; 2360 } 2361 type leafref { 2362 path "/te:te/te:tunnels/te:tunnel/" + 2363 "te:p2p-secondary-paths/te:p2p-secondary-path/te:name"; 2364 } 2365 } 2366 description 2367 "This type is used by data models that need to reference 2368 configured primary or secondary path of a TE tunnel."; 2369 } 2371 /** 2372 * TE tunnel generic groupings 2373 */ 2374 grouping p2p-reverse-primary-path-properties { 2375 description "tunnel path properties."; 2376 reference "RFC7551"; 2377 container p2p-reverse-primary-path { 2378 description "Tunnel reverse primary path properties"; 2379 uses p2p-path-reverse-properties_config; 2380 uses path-constraints-common_config; 2381 container state { 2382 config false; 2383 description 2384 "Configuration applied parameters and state"; 2385 uses p2p-path-properties_state; 2386 } 2387 container p2p-reverse-secondary-path { 2388 description "Tunnel reverse secondary path properties"; 2389 uses p2p-reverse-path-candidate-secondary-path-config; 2390 } 2391 } 2392 } 2394 grouping p2p-secondary-path-properties { 2395 description "tunnel path properties."; 2396 uses p2p-path-properties_config; 2397 uses path-constraints-common_config; 2398 uses protection-restoration-params_config; 2399 container state { 2400 config false; 2401 description 2402 "Configuration applied parameters and state"; 2403 uses p2p-path-properties_state; 2404 } 2405 } 2407 grouping p2p-primary-path-properties { 2408 description 2409 "TE tunnel primary path properties grouping"; 2410 uses p2p-path-properties_config; 2411 uses path-constraints-common_config; 2412 container state { 2413 config false; 2414 description 2415 "Configuration applied parameters and state"; 2416 uses p2p-path-properties_state; 2417 } 2418 } 2420 grouping path-properties_state { 2421 description "Computed path properties grouping"; 2422 leaf metric-type { 2423 type identityref { 2424 base te-types:path-metric-type; 2425 } 2426 description "TE path metric type"; 2427 } 2428 leaf accumulative-value { 2429 type uint64; 2430 description "TE path metric accumulative value"; 2431 } 2432 } 2434 grouping path-properties { 2435 description "TE computed path properties grouping"; 2436 container path-properties { 2437 description "The TE path computed properties"; 2438 list path-metric { 2439 key metric-type; 2440 description "TE path metric type"; 2441 leaf metric-type { 2442 type leafref { 2443 path "../state/metric-type"; 2444 } 2445 description "TE path metric type"; 2446 } 2447 container state { 2448 config false; 2449 description 2450 "Configuration applied parameters and state"; 2451 uses path-properties_state; 2452 } 2453 } 2454 uses te-types:generic-path-affinities; 2455 uses te-types:generic-path-srlgs; 2456 container path-route-objects { 2457 description 2458 "Container for the list of computed route objects 2459 as returned by the computation engine"; 2460 list path-computed-route-object { 2461 key index; 2462 description 2463 "List of computed route objects returned by the 2464 computation engine"; 2465 leaf index { 2466 type leafref { 2467 path "../state/index"; 2468 } 2469 description "Index of computed route object"; 2470 } 2471 container state { 2472 config false; 2473 description 2474 "Configuration applied parameters and state"; 2475 leaf index { 2476 type uint32; 2477 description "ERO subobject index"; 2478 } 2479 uses te-types:explicit-route-hop; 2480 } 2481 } 2482 } 2483 uses shared-resources-tunnels; 2484 } 2485 } 2487 grouping p2p-path-properties_state { 2488 description "TE per path state parameters"; 2489 container computed-paths-properties { 2490 description "Computed path properties container"; 2491 list computed-path-properties { 2492 key k-index; 2493 description "List of computed paths"; 2494 leaf k-index { 2495 type uint8; 2496 description 2497 "The k-th path returned from the computation server."; 2498 } 2499 uses path-properties { 2500 description "The TE path computed properties"; 2501 } 2502 } 2503 } 2504 container lsps { 2505 description "TE LSPs container"; 2506 list lsp { 2507 key 2508 "source destination tunnel-id lsp-id "+ 2509 "extended-tunnel-id"; 2510 description "List of LSPs associated with the tunnel."; 2511 uses lsp-properties_state; 2512 uses shared-resources-tunnels_state; 2513 uses lsp-record-route-information_state; 2514 uses path-properties { 2515 description "The TE path actual properties"; 2516 } 2517 } 2518 } 2520 } 2522 grouping p2p-path-properties-common_config { 2523 description 2524 "TE tunnel common path properties configuration grouping"; 2525 leaf name { 2526 type string; 2527 description "TE path name"; 2528 } 2529 leaf path-setup-protocol { 2530 type identityref { 2531 base te-types:path-signaling-type; 2532 } 2533 description 2534 "Signaling protocol used to set up this tunnel"; 2535 } 2536 leaf path-computation-method { 2537 type identityref { 2538 base te-types:path-computation-method; 2539 } 2540 default te-types:path-locally-computed; 2541 description 2542 "The method used for computing the path, either 2543 locally computed, queried from a server or not 2544 computed at all (explicitly configured)."; 2545 } 2546 leaf path-computation-server { 2547 when "../path-computation-method = "+ 2548 "'te-types:path-externally-queried'" { 2549 description 2550 "The path-computation server when the path is 2551 externally queried"; 2552 } 2553 type inet:ip-address; 2554 description 2555 "Address of the external path computation 2556 server"; 2557 } 2558 leaf compute-only { 2559 type empty; 2560 description 2561 "When set, the path is computed and updated whenever 2562 the topology is updated. No resources are committed 2563 or reserved in the network."; 2564 } 2565 leaf use-path-computation { 2566 when "../path-computation-method =" + 2567 " 'te-types:path-locally-computed'"; 2568 type boolean; 2569 description "A CSPF dynamically computed path"; 2570 } 2571 leaf lockdown { 2572 type empty; 2573 description 2574 "Indicates no reoptimization to be attempted for 2575 this path."; 2576 } 2577 leaf path-scope { 2578 type identityref { 2579 base te-types:path-scope-type; 2580 } 2581 default te-types:path-scope-end-to-end; 2582 description "Path scope if segment or an end-to-end path"; 2583 } 2584 } 2586 grouping p2p-path-reverse-properties_config { 2587 description 2588 "TE tunnel reverse path properties configuration 2589 grouping"; 2590 uses p2p-path-properties-common_config; 2591 uses te-types:generic-path-optimization; 2592 leaf named-path-constraint { 2593 if-feature te-types:named-path-constraints; 2594 type leafref { 2595 path "../../../../../../globals/" 2596 + "named-path-constraints/named-path-constraint/" 2597 + "name"; 2598 } 2599 description 2600 "Reference to a globally defined named path 2601 constraint set"; 2602 } 2603 } 2605 grouping p2p-path-properties_config { 2606 description 2607 "TE tunnel path properties configuration grouping"; 2608 uses p2p-path-properties-common_config; 2609 uses te-types:generic-path-optimization; 2610 leaf preference { 2611 type uint8 { 2612 range "1..255"; 2613 } 2614 description 2615 "Specifies a preference for this path. The lower the 2616 number higher the preference"; 2617 } 2618 leaf k-requested-paths { 2619 type uint8; 2620 description 2621 "The number of k-shortest-paths requested from the path 2622 computation server and returned sorted by its optimization 2623 objective"; 2624 } 2625 leaf named-path-constraint { 2626 if-feature te-types:named-path-constraints; 2627 type leafref { 2628 path "../../../../../globals/" 2629 + "named-path-constraints/named-path-constraint/" 2630 + "name"; 2631 } 2632 description 2633 "Reference to a globally defined named path 2634 constraint set"; 2635 } 2636 } 2638 /* TE tunnel configuration data */ 2639 grouping tunnel-p2mp-params_config { 2640 description 2641 "Configuration parameters relating to TE tunnel"; 2642 leaf name { 2643 type string; 2644 description "TE tunnel name."; 2645 } 2646 leaf identifier { 2647 type uint16; 2648 description 2649 "TE tunnel Identifier."; 2650 reference "RFC 3209"; 2651 } 2652 leaf description { 2653 type string; 2654 description 2655 "Textual description for this TE tunnel"; 2656 } 2657 } 2659 grouping hierarchical-link_config { 2660 description 2661 "Hierarchical link configuration grouping"; 2662 reference "RFC4206"; 2663 leaf local-te-node-id { 2664 type te-types:te-node-id; 2665 description 2666 "Local TE node identifier"; 2667 } 2668 leaf local-te-link-tp-id { 2669 type te-types:te-tp-id; 2670 description 2671 "Local TE link termination point identifier"; 2672 } 2673 leaf remote-te-node-id { 2674 type te-types:te-node-id; 2675 description 2676 "Remote TE node identifier"; 2677 } 2678 uses te-types:te-topology-identifier; 2679 } 2681 grouping hierarchical-link { 2682 description 2683 "Hierarchical link grouping"; 2684 reference "RFC4206"; 2685 container hierarchical-link { 2686 description 2687 "Identifies a hierarchical link (in client layer) 2688 that this tunnel is associated with."; 2689 uses hierarchical-link_config; 2690 } 2691 } 2693 grouping protection-restoration-params_state { 2694 description 2695 "Protection parameters grouping"; 2696 leaf lockout-of-normal { 2697 type boolean; 2698 description 2699 " 2700 When set to 'True', it represents a lockout of normal 2701 traffic external command. When set to 'False', it 2702 represents a clear lockout of normal traffic external 2703 command. The lockout of normal traffic command applies 2704 to this Tunnel. 2705 "; 2706 reference 2707 "ITU-T G.808, RFC 4427"; 2708 } 2709 leaf freeze { 2710 type boolean; 2711 description 2712 " 2713 When set to 'True', it represents a freeze external 2714 command. When set to 'False', it represents a clear 2715 freeze external command. The freeze command command 2716 applies to all the Tunnels which are sharing the 2717 protection resources with this Tunnel. 2718 "; 2719 reference 2720 "ITU-T G.808, RFC 4427"; 2721 } 2722 leaf lsp-protection-role { 2723 type enumeration { 2724 enum working { 2725 description 2726 "A working LSP must be a primary LSP whilst a protecting 2727 LSP can be either a primary or a secondary LSP. Also, 2728 known as protected LSPs when working LSPs are associated 2729 with protecting LSPs."; 2730 } 2731 enum protecting { 2732 description 2733 "A secondary LSP is an LSP that has been provisioned 2734 in the control plane only; e.g. resource allocation 2735 has not been committed at the data plane"; 2736 } 2737 } 2738 description "LSP role type"; 2739 reference "rfc4872, section 4.2.1"; 2740 } 2742 leaf lsp-protection-state { 2743 type identityref { 2744 base te-types:lsp-protection-state; 2745 } 2746 description 2747 "The state of the APS state machine controlling which 2748 tunnels is using the resources of the protecting LSP."; 2749 } 2750 leaf protection-group-ingress-node-id { 2751 type te-types:te-node-id; 2752 description 2753 "Indicates the te-node-id of the protection group 2754 ingress node when the APS state represents an extenal 2755 command (LoP, SF, MS) applied to it or a WTR timer 2756 running on it. If the external command is not applied to 2757 the ingress node or the WTR timer is not running on it, 2758 this attribute is not specified. If value 0.0.0.0 is used 2759 when the te-node-id of the protection group ingress node is 2760 unknown (e.g., because the ingress node is outside the scope 2761 of control of the server)"; 2762 } 2763 leaf protection-group-egress-node-id { 2764 type te-types:te-node-id; 2765 description 2766 "Indicates the te-node-id of the protection group egress node 2767 when the APS state represents an extenal command (LoP, SF, 2768 MS) applied to it or a WTR timer running on it. If the 2769 external command is not applied to the ingress node or 2770 the WTR timer is not running on it, this attribute is not 2771 specified. If value 0.0.0.0 is used when the te-node-id of 2772 the protection group ingress node is unknown (e.g., because 2773 the ingress node is outside the scope of control of the 2774 server)"; 2775 } 2776 } 2778 grouping protection-restoration-params_config { 2779 description "Protection and restoration parameters"; 2780 container protection { 2781 description "Protection parameters"; 2782 leaf enable { 2783 type boolean; 2784 default 'false'; 2785 description 2786 "A flag to specify if LSP protection is enabled"; 2787 reference "rfc4427"; 2788 } 2789 leaf protection-type { 2790 type identityref { 2791 base te-types:lsp-protection-type; 2792 } 2793 description "LSP protection type."; 2794 } 2795 leaf protection-reversion-disable { 2796 type boolean; 2797 description "Disable protection reversion to working path"; 2798 } 2799 leaf hold-off-time { 2800 type uint32; 2801 units "milli-seconds"; 2802 default 0; 2803 description 2804 "The time between the declaration of an SF or SD condition 2805 and the initialization of the protection switching 2806 algorithm."; 2807 reference "rfc4427"; 2809 } 2810 leaf wait-to-revert { 2811 type uint16; 2812 units seconds; 2813 description 2814 "Time to wait before attempting LSP reversion"; 2815 reference "rfc4427"; 2816 } 2817 leaf aps-signal-id { 2818 type uint8 { 2819 range "1..255"; 2820 } 2821 description 2822 "The APS signal number used to reference the traffic of this 2823 tunnel. The default value for normal traffic is 1. 2824 The default value for extra-traffic is 255. If not specified, 2825 non-default values can be assigned by the server, 2826 if and only if, the server controls both endpoints."; 2827 reference 2828 "ITU-T G.808.1"; 2829 } 2830 } 2831 container restoration { 2832 description "Restoration parameters"; 2833 leaf enable { 2834 type boolean; 2835 default 'false'; 2836 description 2837 "A flag to specify if LSP restoration is enabled"; 2838 reference "rfc4427"; 2839 } 2840 leaf restoration-type { 2841 type identityref { 2842 base te-types:lsp-restoration-type; 2843 } 2844 description "LSP restoration type."; 2845 } 2846 leaf restoration-scheme { 2847 type identityref { 2848 base te-types:restoration-scheme-type; 2849 } 2850 description "LSP restoration scheme."; 2851 } 2852 leaf restoration-reversion-disable { 2853 type boolean; 2854 description "Disable restoration reversion to working path"; 2855 } 2856 leaf hold-off-time { 2857 type uint32; 2858 units "milli-seconds"; 2859 description 2860 "The time between the declaration of an SF or SD condition 2861 and the initialization of the protection switching 2862 algorithm."; 2863 reference "rfc4427"; 2864 } 2865 leaf wait-to-restore { 2866 type uint16; 2867 units seconds; 2868 description 2869 "Time to wait before attempting LSP restoration"; 2870 reference "rfc4427"; 2871 } 2872 leaf wait-to-revert { 2873 type uint16; 2874 units seconds; 2875 description 2876 "Time to wait before attempting LSP reversion"; 2877 reference "rfc4427"; 2878 } 2879 } 2880 } 2882 grouping p2p-dependency-tunnels_config { 2883 description 2884 "Groupong for tunnel dependency list of tunnels"; 2885 container dependency-tunnels { 2886 description "Dependency tunnels list"; 2887 list dependency-tunnel { 2888 key "name"; 2889 description "Dependency tunnel entry"; 2890 leaf name { 2891 type leafref { 2892 path "../../../../../tunnels/tunnel/name"; 2893 require-instance false; 2894 } 2895 description "Dependency tunnel name"; 2896 } 2897 leaf encoding { 2898 type identityref { 2899 base te-types:lsp-encoding-types; 2900 } 2901 description "LSP encoding type"; 2902 reference "RFC3945"; 2903 } 2904 leaf switching-type { 2905 type identityref { 2906 base te-types:switching-capabilities; 2907 } 2908 description "LSP switching type"; 2909 reference "RFC3945"; 2910 } 2911 } 2912 } 2913 } 2915 grouping tunnel-p2p-params_config { 2916 description 2917 "Configuration parameters relating to TE tunnel"; 2918 leaf name { 2919 type string; 2920 description "TE tunnel name."; 2921 } 2922 leaf identifier { 2923 type uint16; 2924 description 2925 "TE tunnel Identifier."; 2926 reference "RFC3209"; 2927 } 2928 leaf description { 2929 type string; 2930 description 2931 "Textual description for this TE tunnel"; 2932 } 2933 leaf encoding { 2934 type identityref { 2935 base te-types:lsp-encoding-types; 2936 } 2937 description "LSP encoding type"; 2938 reference "RFC3945"; 2939 } 2940 leaf switching-type { 2941 type identityref { 2942 base te-types:switching-capabilities; 2943 } 2944 description "LSP switching type"; 2945 reference "RFC3945"; 2946 } 2947 leaf provisioning-state { 2948 type identityref { 2949 base te-types:tunnel-state-type; 2950 } 2951 default te-types:tunnel-state-up; 2952 description "TE tunnel administrative state."; 2954 } 2955 leaf preference { 2956 type uint8 { 2957 range "1..255"; 2958 } 2959 description 2960 "Specifies a preference for this tunnel. 2961 A lower number signifies a better preference"; 2962 } 2963 leaf reoptimize-timer { 2964 type uint16; 2965 units seconds; 2966 description 2967 "frequency of reoptimization of 2968 a traffic engineered LSP"; 2969 } 2970 leaf source { 2971 type te-types:te-node-id; 2972 description 2973 "TE tunnel source node ID."; 2974 } 2975 leaf destination { 2976 type te-types:te-node-id; 2977 description 2978 "TE tunnel destination node ID"; 2979 } 2980 leaf src-tp-id { 2981 type binary; 2982 description 2983 "TE tunnel source termination point identifier."; 2984 } 2985 leaf dst-tp-id { 2986 type binary; 2987 description 2988 "TE tunnel destination termination point identifier."; 2989 } 2990 leaf bidirectional { 2991 type boolean; 2992 default 'false'; 2993 description "TE tunnel bidirectional"; 2994 } 2995 uses tunnel-p2p-associations_config; 2996 uses protection-restoration-params_config; 2997 uses te-types:tunnel-constraints_config; 2998 uses p2p-dependency-tunnels_config; 2999 uses hierarchical-link; 3000 } 3001 grouping tunnel-p2p-associations_config { 3002 description "TE tunnel association grouping"; 3003 container association-objects { 3004 description "TE tunnel associations"; 3005 list association-object { 3006 key "type ID source global-source"; 3007 description "List of association base objects"; 3008 reference "RFC4872"; 3009 leaf type { 3010 type identityref { 3011 base te-types:association-type; 3012 } 3013 description "Association type"; 3014 reference "RFC4872"; 3015 } 3016 leaf ID { 3017 type uint16; 3018 description "Association ID"; 3019 reference "RFC4872"; 3020 } 3021 leaf source { 3022 type inet:ip-address; 3023 description "Association source"; 3024 reference "RFC4872"; 3025 } 3026 leaf global-source { 3027 type inet:ip-address; 3028 description "Association global source"; 3029 reference "RFC4872"; 3030 } 3031 } 3032 list association-object-extended { 3033 key "type ID source global-source extended-ID"; 3034 description "List of extended association objects"; 3035 reference "RFC6780"; 3036 leaf type { 3037 type identityref { 3038 base te-types:association-type; 3039 } 3040 description "Association type"; 3041 } 3042 leaf ID { 3043 type uint16; 3044 description "Association ID"; 3045 reference "RFC4872"; 3046 } 3047 leaf source { 3048 type inet:ip-address; 3049 description "Association source"; 3050 } 3051 leaf global-source { 3052 type inet:ip-address; 3053 description "Association global source"; 3054 reference "RFC4872"; 3055 } 3056 leaf extended-ID { 3057 type binary; 3058 description "Association extended ID"; 3059 reference "RFC4872"; 3060 } 3061 } 3062 } 3063 } 3065 grouping tunnel-p2p-params_state { 3066 description 3067 "State parameters relating to TE tunnel"; 3068 leaf operational-state { 3069 type identityref { 3070 base te-types:tunnel-state-type; 3071 } 3072 default te-types:tunnel-state-up; 3073 description "TE tunnel administrative state."; 3074 } 3075 } 3077 grouping path-access-segment-info { 3078 description 3079 "If an end-to-end tunnel crosses multiple domains using 3080 the same technology, some additional constraints have to be 3081 taken in consideration in each domain"; 3082 container path-in-segment { 3083 presence 3084 "The end-to-end tunnel starts in a previous domain; 3085 this tunnel is a segment in the current domain."; 3086 description 3087 "This tunnel is a segment that needs to be coordinated 3088 with previous segment stitched on head-end side."; 3089 uses te-types:label-set-info; 3090 } 3091 container path-out-segment { 3092 presence 3093 "The end-to-end tunnel is not terminated in this domain; 3094 this tunnel is a segment in the current domain."; 3095 description 3096 "This tunnel is a segment that needs to be coordinated 3097 with previous segment stitched on head-end side."; 3098 uses te-types:label-set-info; 3099 } 3100 } 3102 /* TE tunnel configuration/state grouping */ 3103 grouping tunnel-p2mp-properties { 3104 description 3105 "Top level grouping for P2MP tunnel properties."; 3106 uses tunnel-p2mp-params_config; 3107 container state { 3108 config false; 3109 description 3110 "Configuration applied parameters and state"; 3111 leaf operational-state { 3112 type identityref { 3113 base te-types:tunnel-state-type; 3114 } 3115 default te-types:tunnel-state-up; 3116 description "TE tunnel administrative state."; 3117 } 3118 } 3119 } 3121 grouping p2p-path-candidate-secondary-path-config { 3122 description 3123 "Configuration parameters relating to a secondary path which 3124 is a candidate for a particular primary path"; 3126 leaf secondary-path { 3127 type leafref { 3128 path "../../../../../p2p-secondary-paths/" + 3129 "p2p-secondary-path/name"; 3130 } 3131 description 3132 "A reference to the secondary path that should be utilised 3133 when the containing primary path option is in use"; 3134 } 3136 leaf path-setup-protocol { 3137 type identityref { 3138 base te-types:path-signaling-type; 3139 } 3140 description 3141 "Signaling protocol used to set up this tunnel"; 3142 } 3143 } 3144 grouping p2p-reverse-path-candidate-secondary-path-config { 3145 description 3146 "Configuration parameters relating to a secondary path which 3147 is a candidate for a particular primary path"; 3149 leaf secondary-path { 3150 type leafref { 3151 path "../../../../../p2p-secondary-paths/" + 3152 "p2p-secondary-path/name"; 3153 } 3154 description 3155 "A reference to the secondary path that should be utilised 3156 when the containing primary path option is in use"; 3157 } 3159 leaf path-setup-protocol { 3160 type identityref { 3161 base te-types:path-signaling-type; 3162 } 3163 description 3164 "Signaling protocol used to set up this tunnel"; 3165 } 3166 } 3168 grouping p2p-path-candidate-secondary-path-state { 3169 description 3170 "Operational state parameters relating to a secondary path 3171 which is a candidate for a particular primary path"; 3173 leaf active { 3174 type boolean; 3175 description 3176 "Indicates the current active path option that has 3177 been selected of the candidate secondary paths"; 3178 } 3179 } 3181 grouping tunnel-p2p-properties { 3182 description 3183 "Top level grouping for tunnel properties."; 3184 uses tunnel-p2p-params_config; 3185 container state { 3186 config false; 3187 description 3188 "Configuration applied parameters and state"; 3189 uses tunnel-p2p-params_state; 3190 } 3191 container p2p-primary-paths { 3192 description "Set of P2P primary aths container"; 3193 list p2p-primary-path { 3194 key "name"; 3195 description 3196 "List of primary paths for this tunnel."; 3197 uses p2p-primary-path-properties; 3198 uses p2p-reverse-primary-path-properties; 3199 container candidate-p2p-secondary-paths { 3200 description 3201 "The set of candidate secondary paths which may be used 3202 for this primary path. When secondary paths are specified 3203 in the list the path of the secondary LSP in use must be 3204 restricted to those path options referenced. The 3205 priority of the secondary paths is specified within the 3206 list. Higher priority values are less preferred - that is 3207 to say that a path with priority 0 is the most preferred 3208 path. In the case that the list is empty, any secondary 3209 path option may be utilised when the current primary path 3210 is in use."; 3211 list candidate-p2p-secondary-path { 3212 key "secondary-path"; 3213 description 3214 "List of secondary paths for this tunnel."; 3215 uses p2p-path-candidate-secondary-path-config; 3217 container state { 3218 config false; 3219 description 3220 "Configuration applied parameters and state"; 3221 uses p2p-path-candidate-secondary-path-state; 3222 } 3223 } 3224 } 3225 } 3226 } 3227 container p2p-secondary-paths { 3228 description "Set of P2P secondary paths container"; 3229 list p2p-secondary-path { 3230 key "name"; 3231 description 3232 "List of secondary paths for this tunnel."; 3233 uses p2p-secondary-path-properties; 3234 } 3235 } 3236 } 3238 grouping shared-resources-tunnels_state { 3239 description 3240 "The specific tunnel that is using the shared secondary path 3241 resources"; 3242 leaf lsp-shared-resources-tunnel { 3243 type tunnel-ref; 3244 description 3245 "Reference to the tunnel that sharing secondary path 3246 resources with this tunnel"; 3247 } 3248 } 3249 grouping shared-resources-tunnels { 3250 description 3251 "Set of tunnels that share secondary path resources with 3252 this tunnnel"; 3253 container shared-resources-tunnels { 3254 description 3255 "Set of tunnels that share secondary path resources with 3256 this tunnnel"; 3257 leaf-list lsp-shared-resources-tunnel { 3258 type tunnel-ref; 3259 description 3260 "Reference to the tunnel that sharing secondary path 3261 resources with this tunnel"; 3262 } 3263 } 3264 } 3266 grouping tunnel-actions { 3267 description "Tunnel actions"; 3268 action tunnel-action { 3269 description "Tunnel action"; 3270 input { 3271 leaf action-type { 3272 type identityref { 3273 base te-types:tunnel-action-type; 3274 } 3275 description "Tunnel action type"; 3276 } 3277 } 3278 output { 3279 leaf action-result { 3280 type identityref { 3281 base te-types:te-action-result; 3282 } 3283 description "The result of the RPC operation"; 3284 } 3285 } 3286 } 3287 } 3288 grouping tunnel-protection-actions { 3289 description 3290 "Protection external command actions"; 3291 action protection-external-commands { 3292 input { 3293 leaf protection-external-command { 3294 type identityref { 3295 base te-types:protection-external-commands; 3296 } 3297 description 3298 "Protection external command"; 3299 } 3300 leaf protection-group-ingress-node-id { 3301 type te-types:te-node-id; 3302 description 3303 "When specified, indicates whether the action is 3304 applied on ingress node. 3305 By default, if neither ingress nor egress node-id 3306 is set, the the action applies to ingress node only."; 3307 } 3308 leaf protection-group-egress-node-id { 3309 type te-types:te-node-id; 3310 description 3311 "When specified, indicates whether the action is 3312 applied on egress node. 3313 By default, if neither ingress nor egress node-id 3314 is set, the the action applies to ingress node only."; 3315 } 3316 leaf path-ref { 3317 type path-ref; 3318 description 3319 "Indicates to which path the external command applies to."; 3320 } 3321 leaf traffic-type { 3322 type enumeration { 3323 enum normal-traffic { 3324 description 3325 "The manual-switch or forced-switch command applies to 3326 the normal traffic (this Tunnel)."; 3327 } 3328 enum null-traffic { 3329 description 3330 "The manual-switch or forced-switch command applies to 3331 the null traffic."; 3332 } 3333 enum extra-traffic { 3334 description 3335 "The manual-switch or forced-switch command applies to 3336 the extra traffic (the extra-traffic Tunnel sharing 3337 protection bandwidth with this Tunnel)."; 3338 } 3339 } 3340 description 3341 "Indicates whether the manual-switch or forced-switch 3342 commands applies to the normal traffic, the null traffic 3343 or the extra-traffic."; 3344 reference 3345 "ITU-T G.808, RFC 4427"; 3346 } 3347 leaf extra-traffic-tunnel-ref { 3348 type tunnel-ref; 3349 description 3350 "In case there are multiple extra-traffic tunnels sharing 3351 protection bandwidth with this Tunnel (m:n protection), 3352 represents which extra-traffic Tunnel the manual-switch or 3353 forced-switch to extra-traffic command applies to."; 3354 } 3355 } 3356 } 3357 } 3359 /*** End of TE tunnel groupings ***/ 3361 /** 3362 * LSP related generic groupings 3363 */ 3364 grouping lsp-record-route-information_state { 3365 description "recorded route information grouping"; 3366 container lsp-record-route-subobjects { 3367 description "RSVP recorded route object information"; 3368 list record-route-subobject { 3369 when "../../origin-type = 'ingress'" { 3370 description "Applicable on non-ingress LSPs only"; 3371 } 3372 key "index"; 3373 description "Record route sub-object list"; 3374 uses te-types:record-route-subobject_state; 3375 } 3376 } 3377 } 3379 grouping lsps-state-grouping { 3380 description 3381 "LSPs state operational data grouping"; 3382 container lsps-state { 3383 config false; 3384 description "TE LSPs state container"; 3385 list lsp { 3386 key 3387 "source destination tunnel-id lsp-id "+ 3388 "extended-tunnel-id"; 3389 description "List of LSPs associated with the tunnel."; 3390 uses lsp-properties_state; 3391 uses lsp-record-route-information_state; 3392 } 3393 } 3394 } 3396 /*** End of TE LSP groupings ***/ 3398 /** 3399 * TE global generic groupings 3400 */ 3402 /* Global named admin-groups configuration data */ 3403 grouping named-admin-groups_config { 3404 description 3405 "Global named administrative groups configuration 3406 grouping"; 3407 leaf name { 3408 type string; 3409 description 3410 "A string name that uniquely identifies a TE 3411 interface named admin-group"; 3412 } 3413 leaf bit-position { 3414 type uint32; 3415 description 3416 "Bit position representing the administrative group"; 3417 reference "RFC3209 and RFC7308"; 3418 } 3419 } 3420 grouping named-admin-groups { 3421 description 3422 "Global named administrative groups configuration 3423 grouping"; 3424 container named-admin-groups { 3425 description "TE named admin groups container"; 3426 list named-admin-group { 3427 if-feature te-types:extended-admin-groups; 3428 if-feature te-types:named-extended-admin-groups; 3429 key "name"; 3430 description 3431 "List of named TE admin-groups"; 3433 uses named-admin-groups_config; 3434 } 3435 } 3436 } 3438 /* Global named admin-srlgs configuration data */ 3439 grouping named-srlgs_config { 3440 description 3441 "Global named SRLGs configuration grouping"; 3442 leaf name { 3443 type string; 3444 description 3445 "A string name that uniquely identifies a TE 3446 interface named srlg"; 3447 } 3448 leaf group { 3449 type te-types:srlg; 3450 description "An SRLG value"; 3451 } 3452 leaf cost { 3453 type uint32; 3454 description 3455 "SRLG associated cost. Used during path to append 3456 the path cost when traversing a link with this SRLG"; 3457 } 3458 } 3460 grouping named-srlgs { 3461 description 3462 "Global named SRLGs configuration grouping"; 3463 container named-srlgs { 3464 description "TE named SRLGs container"; 3465 list named-srlg { 3466 if-feature te-types:named-srlg-groups; 3467 key "name"; 3468 description 3469 "A list of named SRLG groups"; 3470 uses named-srlgs_config; 3471 } 3472 } 3473 } 3475 /* Global named paths constraints configuration data */ 3476 grouping path-constraints_state { 3477 description 3478 "TE path constraints state"; 3479 leaf bandwidth-generic_state { 3480 type te-types:te-bandwidth; 3481 description 3482 "A technology agnostic requested bandwidth to use 3483 for path computation"; 3484 } 3485 leaf disjointness_state { 3486 type te-types:te-path-disjointness; 3487 description 3488 "The type of resource disjointness."; 3489 } 3490 } 3492 grouping path-constraints-common_config { 3493 description 3494 "Global named path constraints configuration 3495 grouping"; 3496 uses te-types:common-path-constraints-attributes; 3497 uses te-types:generic-path-disjointness; 3498 uses te-types:path-route-objects; 3499 uses shared-resources-tunnels { 3500 description 3501 "Set of tunnels that are allowed to share secondary path 3502 resources of this tunnel"; 3503 } 3504 uses path-access-segment-info { 3505 description 3506 "Tunnel constraints induced by other segments."; 3507 } 3508 } 3510 grouping path-constraints { 3511 description "Per path constraints"; 3512 uses path-constraints-common_config; 3513 container state { 3514 config false; 3515 description 3516 "Configuration applied parameters and state"; 3517 uses path-constraints_state; 3518 } 3519 } 3521 grouping named-path-constraints { 3522 description 3523 "Global named path constraints configuration 3524 grouping"; 3525 container named-path-constraints { 3526 description "TE named path constraints container"; 3527 list named-path-constraint { 3528 if-feature te-types:named-path-constraints; 3529 key "name"; 3530 leaf name { 3531 type string; 3532 description 3533 "A string name that uniquely identifies a 3534 path constraint set"; 3535 } 3536 uses path-constraints; 3537 description 3538 "A list of named path constraints"; 3539 } 3540 } 3541 } 3543 /* TE globals container data */ 3544 grouping globals-grouping { 3545 description 3546 "Globals TE system-wide configuration data grouping"; 3547 container globals { 3548 description 3549 "Globals TE system-wide configuration data container"; 3550 uses named-admin-groups; 3551 uses named-srlgs; 3552 uses named-path-constraints; 3553 } 3554 } 3556 /* TE tunnels container data */ 3557 grouping tunnels-grouping { 3558 description 3559 "Tunnels TE configuration data grouping"; 3560 container tunnels { 3561 description 3562 "Tunnels TE configuration data container"; 3564 list tunnel { 3565 key "name"; 3566 description "P2P TE tunnels list."; 3567 uses tunnel-p2p-properties; 3568 uses tunnel-actions; 3569 uses tunnel-protection-actions; 3570 } 3571 list tunnel-p2mp { 3572 key "name"; 3573 unique "identifier"; 3574 description "P2MP TE tunnels list."; 3575 uses tunnel-p2mp-properties; 3576 } 3578 } 3579 } 3581 /* TE LSPs ephemeral state container data */ 3582 grouping lsp-properties_state { 3583 description 3584 "LSPs state operational data grouping"; 3585 leaf source { 3586 type inet:ip-address; 3587 description 3588 "Tunnel sender address extracted from 3589 SENDER_TEMPLATE object"; 3590 reference "RFC3209"; 3591 } 3592 leaf destination { 3593 type inet:ip-address; 3594 description 3595 "Tunnel endpoint address extracted from 3596 SESSION object"; 3597 reference "RFC3209"; 3598 } 3599 leaf tunnel-id { 3600 type uint16; 3601 description 3602 "Tunnel identifier used in the SESSION 3603 that remains constant over the life 3604 of the tunnel."; 3605 reference "RFC3209"; 3606 } 3607 leaf lsp-id { 3608 type uint16; 3609 description 3610 "Identifier used in the SENDER_TEMPLATE 3611 and the FILTER_SPEC that can be changed 3612 to allow a sender to share resources with 3613 itself."; 3614 reference "RFC3209"; 3615 } 3616 leaf extended-tunnel-id { 3617 type inet:ip-address; 3618 description 3619 "Extended Tunnel ID of the LSP."; 3620 reference "RFC3209"; 3621 } 3622 leaf operational-state { 3623 type identityref { 3624 base te-types:lsp-state-type; 3625 } 3626 description "LSP operational state."; 3627 } 3628 leaf path-setup-protocol { 3629 type identityref { 3630 base te-types:path-signaling-type; 3631 } 3632 description 3633 "Signaling protocol used to set up this tunnel"; 3634 } 3635 leaf origin-type { 3636 type enumeration { 3637 enum ingress { 3638 description 3639 "Origin ingress"; 3640 } 3641 enum egress { 3642 description 3643 "Origin egress"; 3644 } 3645 enum transit { 3646 description 3647 "transit"; 3648 } 3649 } 3650 description 3651 "Origin type of LSP relative to the location 3652 of the local switch in the path."; 3653 } 3655 leaf lsp-resource-status { 3656 type enumeration { 3657 enum primary { 3658 description 3659 "A primary LSP is a fully established LSP for 3660 which the resource allocation has been committed 3661 at the data plane"; 3662 } 3663 enum secondary { 3664 description 3665 "A secondary LSP is an LSP that has been provisioned 3666 in the control plane only; e.g. resource allocation 3667 has not been committed at the data plane"; 3668 } 3669 } 3670 description "LSP resource allocation type"; 3671 reference "rfc4872, section 4.2.1"; 3672 } 3673 uses protection-restoration-params_state; 3674 } 3675 /*** End of TE global groupings ***/ 3677 /** 3678 * TE configurations container 3679 */ 3680 container te { 3681 presence "Enable TE feature."; 3682 description 3683 "TE global container."; 3685 /* TE Global Configuration Data */ 3686 uses globals-grouping; 3688 /* TE Tunnel Configuration Data */ 3689 uses tunnels-grouping; 3691 /* TE LSPs State Data */ 3692 uses lsps-state-grouping; 3694 } 3696 /* TE Global RPCs/execution Data */ 3697 rpc globals-rpc { 3698 description 3699 "Execution data for TE global."; 3700 } 3702 /* TE interfaces RPCs/execution Data */ 3703 rpc interfaces-rpc { 3704 description 3705 "Execution data for TE interfaces."; 3706 } 3708 /* TE Tunnel RPCs/execution Data */ 3709 rpc tunnels-rpc { 3710 description "TE tunnels RPC nodes"; 3711 input { 3712 container tunnel-info { 3713 description "Tunnel Identification"; 3714 choice type { 3715 description "Tunnel information type"; 3716 case tunnel-p2p { 3717 leaf p2p-id { 3718 type tunnel-ref; 3719 description "P2P TE tunnel"; 3720 } 3722 } 3723 case tunnel-p2mp { 3724 leaf p2mp-id { 3725 type tunnel-p2mp-ref; 3726 description "P2MP TE tunnel"; 3727 } 3728 } 3729 } 3730 } 3731 } 3732 output { 3733 container result { 3734 description 3735 "The container result of the RPC operation"; 3736 leaf result { 3737 type enumeration { 3738 enum success { 3739 description "Origin ingress"; 3740 } 3741 enum in-progress { 3742 description "Origin egress"; 3743 } 3744 enum fail { 3745 description "transit"; 3746 } 3747 } 3748 description "The result of the RPC operation"; 3749 } 3750 } 3751 } 3752 } 3754 /* TE Global Notification Data */ 3755 notification globals-notif { 3756 description 3757 "Notification messages for Global TE."; 3758 } 3760 /* TE Tunnel Notification Data */ 3761 notification tunnels-notif { 3762 description 3763 "Notification messages for TE tunnels."; 3764 } 3765 } 3766 3768 Figure 7: TE generic YANG module 3770 file "ietf-te-device@2018-10-10.yang" 3771 module ietf-te-device { 3772 yang-version 1.1; 3773 namespace "urn:ietf:params:xml:ns:yang:ietf-te-device"; 3775 /* Replace with IANA when assigned */ 3776 prefix "te-dev"; 3778 /* Import TE generic types */ 3779 import ietf-te { 3780 prefix te; 3781 reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic 3782 Engineering Tunnels and Interfaces"; 3783 } 3785 /* Import TE generic types */ 3786 import ietf-te-types { 3787 prefix te-types; 3788 reference "draft-ietf-teas-yang-te-types: A YANG Data Model for 3789 Common Traffic Engineering Types"; 3790 } 3792 import ietf-interfaces { 3793 prefix if; 3794 reference "RFC7223: A YANG Data Model for Interface Management"; 3795 } 3797 import ietf-inet-types { 3798 prefix inet; 3799 reference "RFC6991: Common YANG Data Types"; 3800 } 3802 import ietf-routing-types { 3803 prefix "rt-types"; 3804 reference "RFC6991: Common YANG Data Types"; 3805 } 3807 organization 3808 "IETF Traffic Engineering Architecture and Signaling (TEAS) 3809 Working Group"; 3811 contact 3812 "WG Web: 3813 WG List: 3815 WG Chair: Lou Berger 3816 3818 WG Chair: Vishnu Pavan Beeram 3819 3821 Editor: Tarek Saad 3822 3824 Editor: Rakesh Gandhi 3825 3827 Editor: Vishnu Pavan Beeram 3828 3830 Editor: Himanshu Shah 3831 3833 Editor: Xufeng Liu 3834 3836 Editor: Xia Chen 3837 3839 Editor: Raqib Jones 3840 3842 Editor: Bin Wen 3843 "; 3845 description 3846 "YANG data module for TE device configurations, 3847 state, RPC and notifications."; 3849 revision "2018-10-10" { 3850 description "Latest update to TE device YANG module."; 3851 reference "TBA"; 3852 } 3854 /** 3855 * TE LSP device state grouping 3856 */ 3857 grouping lsps-device_state { 3858 description "TE LSP device state grouping"; 3859 container lsp-timers { 3860 when "../te:origin-type = 'ingress'" { 3861 description "Applicable to ingress LSPs only"; 3862 } 3863 description "Ingress LSP timers"; 3864 leaf life-time { 3865 type uint32; 3866 units seconds; 3867 description 3868 "lsp life time"; 3869 } 3871 leaf time-to-install { 3872 type uint32; 3873 units seconds; 3874 description 3875 "lsp installation delay time"; 3876 } 3878 leaf time-to-destroy { 3879 type uint32; 3880 units seconds; 3881 description 3882 "lsp expiration delay time"; 3883 } 3884 } 3886 container downstream-info { 3887 when "../te:origin-type != 'egress'" { 3888 description "Applicable to ingress LSPs only"; 3889 } 3890 description 3891 "downstream information"; 3893 leaf nhop { 3894 type inet:ip-address; 3895 description 3896 "downstream nexthop."; 3897 } 3899 leaf outgoing-interface { 3900 type if:interface-ref; 3901 description 3902 "downstream interface."; 3903 } 3905 leaf neighbor { 3906 type inet:ip-address; 3907 description 3908 "downstream neighbor."; 3909 } 3911 leaf label { 3912 type rt-types:generalized-label; 3913 description 3914 "downstream label."; 3915 } 3916 } 3918 container upstream-info { 3919 when "../te:origin-type != 'ingress'" { 3920 description "Applicable to non-ingress LSPs only"; 3921 } 3922 description 3923 "upstream information"; 3925 leaf phop { 3926 type inet:ip-address; 3927 description 3928 "upstream nexthop or previous-hop."; 3929 } 3931 leaf neighbor { 3932 type inet:ip-address; 3933 description 3934 "upstream neighbor."; 3935 } 3937 leaf label { 3938 type rt-types:generalized-label; 3939 description 3940 "upstream label."; 3941 } 3942 } 3943 } 3945 /** 3946 * Device general groupings. 3947 */ 3948 grouping tunnel-device_config { 3949 description "Device TE tunnel configs"; 3950 leaf path-invalidation-action { 3951 type identityref { 3952 base te-types:path-invalidation-action-type; 3953 } 3954 description "Tunnel path invalidtion action"; 3955 } 3956 } 3958 grouping lsp-device-timers_config { 3959 description "Device TE LSP timers configs"; 3960 leaf lsp-install-interval { 3961 type uint32; 3962 units seconds; 3963 description 3964 "lsp installation delay time"; 3965 } 3966 leaf lsp-cleanup-interval { 3967 type uint32; 3968 units seconds; 3969 description 3970 "lsp cleanup delay time"; 3971 } 3972 leaf lsp-invalidation-interval { 3973 type uint32; 3974 units seconds; 3975 description 3976 "lsp path invalidation before taking action delay time"; 3977 } 3978 } 3979 grouping lsp-device-timers { 3980 description "TE LSP timers configuration"; 3981 uses lsp-device-timers_config; 3982 } 3984 /** 3985 * TE global device generic groupings 3986 */ 3988 /* TE interface container data */ 3989 grouping interfaces-grouping { 3990 description 3991 "Interface TE configuration data grouping"; 3992 container interfaces { 3993 description 3994 "Configuration data model for TE interfaces."; 3995 uses te-all-attributes; 3996 list interface { 3997 key "interface"; 3998 description "TE interfaces."; 3999 leaf interface { 4000 type if:interface-ref; 4001 description 4002 "TE interface name."; 4003 } 4004 /* TE interface parameters */ 4005 uses te-attributes; 4006 } 4007 } 4008 } 4009 /** 4010 * TE interface device generic groupings 4011 */ 4012 grouping te-admin-groups_config { 4013 description 4014 "TE interface affinities grouping"; 4015 choice admin-group-type { 4016 description 4017 "TE interface administrative groups 4018 representation type"; 4019 case value-admin-groups { 4020 choice value-admin-group-type { 4021 description "choice of admin-groups"; 4022 case admin-groups { 4023 description 4024 "Administrative group/Resource 4025 class/Color."; 4026 leaf admin-group { 4027 type te-types:admin-group; 4028 description 4029 "TE interface administrative group"; 4030 } 4031 } 4032 case extended-admin-groups { 4033 if-feature te-types:extended-admin-groups; 4034 description 4035 "Extended administrative group/Resource 4036 class/Color."; 4037 leaf extended-admin-group { 4038 type te-types:extended-admin-group; 4039 description 4040 "TE interface extended administrativei 4041 group"; 4042 } 4043 } 4044 } 4045 } 4046 case named-admin-groups { 4047 list named-admin-groups { 4048 if-feature te-types:extended-admin-groups; 4049 if-feature te-types:named-extended-admin-groups; 4050 key named-admin-group; 4051 description 4052 "A list of named admin-group entries"; 4053 leaf named-admin-group { 4054 type leafref { 4055 path "../../../../te:globals/" + 4056 "te:named-admin-groups/te:named-admin-group/" + 4057 "te:name"; 4058 } 4059 description "A named admin-group entry"; 4060 } 4061 } 4062 } 4063 } 4064 } 4066 /* TE interface SRLGs */ 4067 grouping te-srlgs_config { 4068 description "TE interface SRLG grouping"; 4069 choice srlg-type { 4070 description "Choice of SRLG configuration"; 4071 case value-srlgs { 4072 list values { 4073 key "value"; 4074 description "List of SRLG values that 4075 this link is part of."; 4076 leaf value { 4077 type uint32 { 4078 range "0..4294967295"; 4079 } 4080 description 4081 "Value of the SRLG"; 4082 } 4083 } 4084 } 4085 case named-srlgs { 4086 list named-srlgs { 4087 if-feature te-types:named-srlg-groups; 4088 key named-srlg; 4089 description 4090 "A list of named SRLG entries"; 4091 leaf named-srlg { 4092 type leafref { 4093 path "../../../../te:globals/" + 4094 "te:named-srlgs/te:named-srlg/te:name"; 4095 } 4096 description 4097 "A named SRLG entry"; 4098 } 4099 } 4100 } 4101 } 4102 } 4104 grouping te-igp-flooding-bandwidth_config { 4105 description 4106 "Configurable items for igp flooding bandwidth 4107 threshold configuration."; 4108 leaf threshold-type { 4109 type enumeration { 4110 enum DELTA { 4111 description 4112 "DELTA indicates that the local 4113 system should flood IGP updates when a 4114 change in reserved bandwidth >= the specified 4115 delta occurs on the interface."; 4116 } 4117 enum THRESHOLD_CROSSED { 4118 description 4119 "THRESHOLD-CROSSED indicates that 4120 the local system should trigger an update (and 4121 hence flood) the reserved bandwidth when the 4122 reserved bandwidth changes such that it crosses, 4123 or becomes equal to one of the threshold values."; 4124 } 4125 } 4126 description 4127 "The type of threshold that should be used to specify the 4128 values at which bandwidth is flooded. DELTA indicates that 4129 the local system should flood IGP updates when a change in 4130 reserved bandwidth >= the specified delta occurs on the 4131 interface. Where THRESHOLD_CROSSED is specified, the local 4132 system should trigger an update (and hence flood) the 4133 reserved bandwidth when the reserved bandwidth changes such 4134 that it crosses, or becomes equal to one of the threshold 4135 values"; 4136 } 4138 leaf delta-percentage { 4139 when "../threshold-type = 'DELTA'" { 4140 description 4141 "The percentage delta can only be specified when the 4142 threshold type is specified to be a percentage delta of 4143 the reserved bandwidth"; 4144 } 4145 type rt-types:percentage; 4146 description 4147 "The percentage of the maximum-reservable-bandwidth 4148 considered as the delta that results in an IGP update 4149 being flooded"; 4150 } 4151 leaf threshold-specification { 4152 when "../threshold-type = 'THRESHOLD_CROSSED'" { 4153 description 4154 "The selection of whether mirrored or separate threshold 4155 values are to be used requires user specified thresholds to 4156 be set"; 4157 } 4158 type enumeration { 4159 enum MIRRORED_UP_DOWN { 4160 description 4161 "MIRRORED_UP_DOWN indicates that a single set of 4162 threshold values should be used for both increasing 4163 and decreasing bandwidth when determining whether 4164 to trigger updated bandwidth values to be flooded 4165 in the IGP TE extensions."; 4166 } 4167 enum SEPARATE_UP_DOWN { 4168 description 4169 "SEPARATE_UP_DOWN indicates that a separate 4170 threshold values should be used for the increasing 4171 and decreasing bandwidth when determining whether 4172 to trigger updated bandwidth values to be flooded 4173 in the IGP TE extensions."; 4174 } 4175 } 4176 description 4177 "This value specifies whether a single set of threshold 4178 values should be used for both increasing and decreasing 4179 bandwidth when determining whether to trigger updated 4180 bandwidth values to be flooded in the IGP TE extensions. 4181 MIRRORED-UP-DOWN indicates that a single value (or set of 4182 values) should be used for both increasing and decreasing 4183 values, where SEPARATE-UP-DOWN specifies that the increasing 4184 and decreasing values will be separately specified"; 4185 } 4187 leaf-list up-thresholds { 4188 when "../threshold-type = 'THRESHOLD_CROSSED'" + 4189 "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { 4190 description 4191 "A list of up-thresholds can only be specified when the 4192 bandwidth update is triggered based on crossing a 4193 threshold and separate up and down thresholds are 4194 required"; 4195 } 4196 type rt-types:percentage; 4197 description 4198 "The thresholds (expressed as a percentage of the maximum 4199 reservable bandwidth) at which bandwidth updates are to be 4200 triggered when the bandwidth is increasing."; 4202 } 4204 leaf-list down-thresholds { 4205 when "../threshold-type = 'THRESHOLD_CROSSED'" + 4206 "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { 4207 description 4208 "A list of down-thresholds can only be specified when the 4209 bandwidth update is triggered based on crossing a 4210 threshold and separate up and down thresholds are 4211 required"; 4212 } 4213 type rt-types:percentage; 4214 description 4215 "The thresholds (expressed as a percentage of the maximum 4216 reservable bandwidth) at which bandwidth updates are to be 4217 triggered when the bandwidth is decreasing."; 4218 } 4220 leaf-list up-down-thresholds { 4221 when "../threshold-type = 'THRESHOLD_CROSSED'" + 4222 "and ../threshold-specification = 'MIRRORED_UP_DOWN'" { 4223 description 4224 "A list of thresholds corresponding to both increasing 4225 and decreasing bandwidths can be specified only when an 4226 update is triggered based on crossing a threshold, and 4227 the same up and down thresholds are required."; 4228 } 4229 type rt-types:percentage; 4230 description 4231 "The thresholds (expressed as a percentage of the maximum 4232 reservable bandwidth of the interface) at which bandwidth 4233 updates are flooded - used both when the bandwidth is 4234 increasing and decreasing"; 4235 } 4236 } 4238 /* TE interface metric */ 4239 grouping te-metric_config { 4240 description "Interface TE metric grouping"; 4241 leaf te-metric { 4242 type te-types:te-metric; 4243 description "Interface TE metric."; 4244 } 4245 } 4247 /* TE interface switching capabilities */ 4248 grouping te-switching-cap_config { 4249 description 4250 "TE interface switching capabilities"; 4251 list switching-capabilities { 4252 key "switching-capability"; 4253 description 4254 "List of interface capabilities for this interface"; 4255 leaf switching-capability { 4256 type identityref { 4257 base te-types:switching-capabilities; 4258 } 4259 description 4260 "Switching Capability for this interface"; 4261 } 4262 leaf encoding { 4263 type identityref { 4264 base te-types:lsp-encoding-types; 4265 } 4266 description 4267 "Encoding supported by this interface"; 4268 } 4269 } 4270 } 4272 grouping te-advertisements_state { 4273 description 4274 "TE interface advertisements state grouping"; 4275 container te-advertisements_state { 4276 description 4277 "TE interface advertisements state container"; 4278 leaf flood-interval { 4279 type uint32; 4280 description 4281 "The periodic flooding interval"; 4282 } 4283 leaf last-flooded-time { 4284 type uint32; 4285 units seconds; 4286 description 4287 "Time elapsed since last flooding in seconds"; 4288 } 4289 leaf next-flooded-time { 4290 type uint32; 4291 units seconds; 4292 description 4293 "Time remained for next flooding in seconds"; 4294 } 4295 leaf last-flooded-trigger { 4296 type enumeration { 4297 enum link-up { 4298 description "Link-up flooding trigger"; 4299 } 4300 enum link-down { 4301 description "Link-up flooding trigger"; 4302 } 4303 enum threshold-up { 4304 description 4305 "Bandwidth reservation up threshold"; 4306 } 4307 enum threshold-down { 4308 description 4309 "Bandwidth reservation down threshold"; 4310 } 4311 enum bandwidth-change { 4312 description "Banwidth capacity change"; 4313 } 4314 enum user-initiated { 4315 description "Initiated by user"; 4316 } 4317 enum srlg-change { 4318 description "SRLG property change"; 4319 } 4320 enum periodic-timer { 4321 description "Periodic timer expired"; 4322 } 4323 } 4324 description "Trigger for the last flood"; 4325 } 4326 list advertized-level-areas { 4327 key level-area; 4328 description 4329 "List of areas the TE interface is advertised 4330 in"; 4331 leaf level-area { 4332 type uint32; 4333 description 4334 "The IGP area or level where the TE 4335 interface state is advertised in"; 4336 } 4337 } 4338 } 4339 } 4341 /* TE interface attributes grouping */ 4342 grouping te-attributes { 4343 description "TE attributes configuration grouping"; 4344 uses te-metric_config; 4345 uses te-admin-groups_config; 4346 uses te-srlgs_config; 4347 uses te-igp-flooding-bandwidth_config; 4348 uses te-switching-cap_config; 4349 container state { 4350 config false; 4351 description 4352 "State parameters for interface TE metric"; 4353 uses te-advertisements_state; 4354 } 4355 } 4357 grouping te-all-attributes { 4358 description 4359 "TE attributes configuration grouping for all 4360 interfaces"; 4361 uses te-igp-flooding-bandwidth_config; 4362 } 4363 /*** End of TE interfaces device groupings ***/ 4365 /** 4366 * TE device augmentations 4367 */ 4368 augment "/te:te" { 4369 description "TE global container."; 4370 /* TE Interface Configuration Data */ 4371 uses interfaces-grouping; 4372 } 4374 /* TE globals device augmentation */ 4375 augment "/te:te/te:globals" { 4376 description 4377 "Global TE device specific configuration parameters"; 4378 uses lsp-device-timers; 4379 } 4381 /* TE tunnels device configuration augmentation */ 4382 augment "/te:te/te:tunnels/te:tunnel" { 4383 description 4384 "Tunnel device dependent augmentation"; 4385 uses lsp-device-timers_config; 4386 } 4387 augment "/te:te/te:tunnels/te:tunnel/te:state" { 4388 description 4389 "Tunnel device dependent augmentation"; 4390 uses lsp-device-timers_config; 4391 } 4392 /* TE LSPs device state augmentation */ 4393 augment "/te:te/te:lsps-state/te:lsp" { 4394 description 4395 "LSP device dependent augmentation"; 4396 uses lsps-device_state; 4397 } 4399 augment "/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths" + 4400 "/te:p2p-secondary-path/te:state/te:lsps/te:lsp" { 4401 description 4402 "LSP device dependent augmentation"; 4403 uses lsps-device_state; 4404 } 4406 augment "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + 4407 "/te:p2p-primary-path/te:state/te:lsps/te:lsp" { 4408 description 4409 "LSP device dependent augmentation"; 4410 uses lsps-device_state; 4411 } 4413 /* TE interfaces RPCs/execution Data */ 4414 rpc interfaces-rpc { 4415 description 4416 "Execution data for TE interfaces."; 4417 } 4419 /* TE Interfaces Notification Data */ 4420 notification interfaces-notif { 4421 description 4422 "Notification messages for TE interfaces."; 4423 } 4424 } 4425 4427 Figure 8: TE device specific YANG module 4429 5. IANA Considerations 4431 This document registers the following URIs in the IETF XML registry 4432 [RFC3688]. Following the format in [RFC3688], the following 4433 registration is requested to be made. 4435 URI: urn:ietf:params:xml:ns:yang:ietf-te XML: N/A, the requested URI 4436 is an XML namespace. 4438 URI: urn:ietf:params:xml:ns:yang:ietf-te-device XML: N/A, the 4439 requested URI is an XML namespace. 4441 This document registers a YANG module in the YANG Module Names 4442 registry [RFC6020]. 4444 name: ietf-te namespace: urn:ietf:params:xml:ns:yang:ietf-te prefix: 4445 ietf-te reference: RFC3209 4447 name: ietf-te-device namespace: urn:ietf:params:xml:ns:yang:ietf-te 4448 prefix: ietf-te-device reference: RFC3209 4450 6. Security Considerations 4452 The YANG module defined in this memo is designed to be accessed via 4453 the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the 4454 secure transport layer and the mandatory-to-implement secure 4455 transport is SSH [RFC6242]. The NETCONF access control model 4456 [RFC8341] provides means to restrict access for particular NETCONF 4458 users to a pre-configured subset of all available NETCONF protocol 4459 operations and content. 4461 There are a number of data nodes defined in the YANG module which are 4462 writable/creatable/deletable (i.e., config true, which is the 4463 default). These data nodes may be considered sensitive or vulnerable 4464 in some network environments. Write operations (e.g., ) 4465 to these data nodes without proper protection can have a negative 4466 effect on network operations. Following are the subtrees and data 4467 nodes and their sensitivity/vulnerability: 4469 "/te/globals": This module specifies the global TE configurations on 4470 a device. Unauthorized access to this container could cause the 4471 device to ignore packets it should receive and process. 4473 "/te/tunnels": This list specifies the configured TE tunnels on a 4474 device. Unauthorized access to this list could cause the device to 4475 ignore packets it should receive and process. 4477 "/te/lsps-state": This list specifies the state derived LSPs. 4478 Unauthorized access to this list could cause the device to ignore 4479 packets it should receive and process. 4481 "/te/interfaces": This list specifies the configured TE interfaces on 4482 a device. Unauthorized access to this list could cause the device to 4483 ignore packets it should receive and process. 4485 7. Acknowledgement 4487 The authors would like to thank the members of the multi-vendor YANG 4488 design team who are involved in the definition of this model. 4490 The authors would also like to thank Loa Andersson, Lou Berger, 4491 Sergio Belotti, Italo Busi, Carlo Perocchio, Francesco Lazzeri, Aihua 4492 Guo, Dhruv Dhody, Anurag Sharma, and Xian Zhang for their comments 4493 and providing valuable feedback on this document. 4495 8. Contributors 4497 Xia Chen 4498 Huawei Technologies 4500 Email: jescia.chenxia@huawei.com 4502 Raqib Jones 4503 Brocade 4505 Email: raqib@Brocade.com 4507 Bin Wen 4508 Comcast 4510 Email: Bin_Wen@cable.comcast.com 4512 9. Normative References 4514 [I-D.ietf-teas-yang-path-computation] 4515 Busi, I., Belotti, S., Lopezalvarez, V., Dios, O., Sharma, 4516 A., Shi, Y., Vilata, R., and K. Sethuraman, "Yang model 4517 for requesting Path Computation", draft-ietf-teas-yang- 4518 path-computation-02 (work in progress), June 2018. 4520 [I-D.ietf-teas-yang-rsvp] 4521 Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., 4522 and H. Shah, "A YANG Data Model for Resource Reservation 4523 Protocol (RSVP)", draft-ietf-teas-yang-rsvp-09 (work in 4524 progress), May 2018. 4526 [I-D.ietf-teas-yang-te-types] 4527 Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 4528 "Traffic Engineering Common YANG Types", draft-ietf-teas- 4529 yang-te-types-01 (work in progress), October 2018. 4531 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 4532 Requirement Levels", BCP 14, RFC 2119, 4533 DOI 10.17487/RFC2119, March 1997, 4534 . 4536 [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., 4537 and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP 4538 Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, 4539 . 4541 [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label 4542 Switching (GMPLS) Signaling Resource ReserVation Protocol- 4543 Traffic Engineering (RSVP-TE) Extensions", RFC 3473, 4544 DOI 10.17487/RFC3473, January 2003, 4545 . 4547 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 4548 DOI 10.17487/RFC3688, January 2004, 4549 . 4551 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 4552 the Network Configuration Protocol (NETCONF)", RFC 6020, 4553 DOI 10.17487/RFC6020, October 2010, 4554 . 4556 [RFC6107] Shiomoto, K., Ed. and A. Farrel, Ed., "Procedures for 4557 Dynamically Signaled Hierarchical Label Switched Paths", 4558 RFC 6107, DOI 10.17487/RFC6107, February 2011, 4559 . 4561 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 4562 and A. Bierman, Ed., "Network Configuration Protocol 4563 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 4564 . 4566 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 4567 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 4568 . 4570 [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", 4571 RFC 6991, DOI 10.17487/RFC6991, July 2013, 4572 . 4574 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 4575 RFC 7950, DOI 10.17487/RFC7950, August 2016, 4576 . 4578 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 4579 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 4580 . 4582 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 4583 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 4584 May 2017, . 4586 [RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, 4587 "Common YANG Data Types for the Routing Area", RFC 8294, 4588 DOI 10.17487/RFC8294, December 2017, 4589 . 4591 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 4592 Access Control Model", STD 91, RFC 8341, 4593 DOI 10.17487/RFC8341, March 2018, 4594 . 4596 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 4597 and R. Wilton, "Network Management Datastore Architecture 4598 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 4599 . 4601 Authors' Addresses 4603 Tarek Saad 4604 Cisco Systems Inc 4606 Email: tsaad@cisco.com 4608 Rakesh Gandhi 4609 Cisco Systems Inc 4611 Email: rgandhi@cisco.com 4613 Xufeng Liu 4614 Volta Networks 4616 Email: xufeng.liu.ietf@gmail.com 4618 Vishnu Pavan Beeram 4619 Juniper Networks 4621 Email: vbeeram@juniper.net 4622 Himanshu Shah 4623 Ciena 4625 Email: hshah@ciena.com 4627 Igor Bryskin 4628 Huawei Technologies 4630 Email: Igor.Bryskin@huawei.com