idnits 2.17.1 draft-ietf-ccamp-otn-tunnel-model-08.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 : ---------------------------------------------------------------------------- ** There are 37 instances of too long lines in the document, the longest one being 43 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 23, 2019) is 1646 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 (-18) exists of draft-ietf-ccamp-otn-topo-yang-08 == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-21 -- Possible downref: Non-RFC (?) normative reference: ref. 'ITU-Tg709' == Outdated reference: A later version (-17) exists of draft-ietf-ccamp-transport-nbi-app-statement-06 == Outdated reference: A later version (-11) exists of draft-ietf-teas-actn-yang-04 Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 CCAMP Working Group H. Zheng 3 Internet-Draft I. Busi 4 Intended status: Standards Track Huawei Technologies 5 Expires: April 25, 2020 S. Belotti 6 Nokia 7 V. Lopez 8 Telefonica 9 Y. Xu 10 CAICT 11 October 23, 2019 13 OTN Tunnel YANG Model 14 draft-ietf-ccamp-otn-tunnel-model-08 16 Abstract 18 This document describes the YANG data model for OTN Tunnels. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at https://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on April 25, 2020. 37 Copyright Notice 39 Copyright (c) 2019 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (https://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 2. Terminology and Notations . . . . . . . . . . . . . . . . . . 2 56 3. OTN Tunnel Model Description . . . . . . . . . . . . . . . . 3 57 3.1. Overview of OTN Tunnel Model . . . . . . . . . . . . . . 3 58 3.2. OTN-specific Parameters in Tunnel Model . . . . . . . . . 3 59 3.3. OTN Path Compute RPC . . . . . . . . . . . . . . . . . . 4 60 4. OTN Tunnel YANG Tree . . . . . . . . . . . . . . . . . . . . 4 61 5. OTN Tunnel YANG Code . . . . . . . . . . . . . . . . . . . . 13 62 6. Security Considerations . . . . . . . . . . . . . . . . . . . 34 63 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 64 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 36 65 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 36 66 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 67 10.1. Normative References . . . . . . . . . . . . . . . . . . 37 68 10.2. Informative References . . . . . . . . . . . . . . . . . 38 69 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39 71 1. Introduction 73 OTN transport networks, specified in [ITU-Tg709], can carry various 74 types of client services. In many cases, the client signal is 75 carried over an OTN tunnel across connected domains in a multi-domain 76 network. These OTN services can either be transported or switched in 77 the OTN network. If an OTN tunnel is switched, then additional 78 parameters need to be provided to create a Mux OTN service. 80 This document provides YANG model for creating OTN tunnel. The model 81 augments the TE Tunnel model. 83 2. Terminology and Notations 85 A simplified graphical representation of the data model is used in 86 this document. The meaning of the symbols in the YANG data tree 87 presented later in this draft is defined in [RFC8340]. They are 88 provided below for reference. 90 o Brackets "[" and "]" enclose list keys. 92 o Abbreviations before data node names: "rw" means configuration 93 (read-write) and "ro" state data (read-only). 95 o Symbols after data node names: "?" means an optional node, "!" 96 means a presence container, and "*" denotes a list and leaf-list. 98 o Parentheses enclose choice and case nodes, and case nodes are also 99 marked with a colon (":"). 101 o Ellipsis ("...") stands for contents of subtrees that are not 102 shown. 104 o More OTN specific terms can be found in 105 [I-D.ietf-ccamp-otn-topo-yang]. 107 3. OTN Tunnel Model Description 109 3.1. Overview of OTN Tunnel Model 111 The OTN tunnel model is using TE tunnel [I-D.ietf-teas-yang-te] as a 112 basic model and augment to the TE tunnel with OTN-specific 113 parameters, including the bandwidth information and label 114 information. It is also worth noting that the OTN tunnel 115 provisioning is usually based on the OTN topology. Therefore the OTN 116 tunnel model is usually used together with OTN topology model 117 specified in [I-D.ietf-ccamp-otn-topo-yang]. The OTN tunnel model 118 also imports a few type modules, including ietf-otn-types, ietf-te- 119 types and ietf-inet-types. 121 More scenarios and model applications can be found in 122 [I-D.ietf-ccamp-transport-nbi-app-statement] and 123 [I-D.ietf-teas-actn-yang]. The current model is following the YANG 124 language specification as [RFC7950], and the corresponding protocol 125 is recommended to be Netconf protocol in [RFC6241] or RESTconf 126 protocol in [RFC8040]. 128 The YANG module ietf-otn-tunnel defined in this document conforms to 129 the Network Management Datastore Architecture (NMDA) defined in 130 [RFC8342]. 132 3.2. OTN-specific Parameters in Tunnel Model 134 OTN specific parameters have been augmenting to the TE tunnel models. 135 The attributes on both of the source and destination need to be 136 configured when setting up the tunnel. Typical parameters, including 137 client signal, TPN, TSG and corresponding tributary slot information, 138 are required in the OTN tunnel model. These parameters are 139 consistent with the framework in [RFC7062], and the specification in 140 [RFC7138] and [RFC7139]. 142 The OTN bandwidth information has been augmenting to various sections 143 of TE tunnel models, including tunnel bandwidth, primary path 144 bandwidth and so on. The OTN label information has been augmenting 145 to label hop of a group of routing objects and also LSPs. 147 3.3. OTN Path Compute RPC 149 Similarly with TE tunnel, a 'compute-only' mode of OTN tunnel model 150 is also supported for stateful path computation. Given the OTN 151 tunnel computed, the client may query and/or subscribe on the tunnel 152 to be notified whenever it changes. In addition, also a stateless 153 Remote Procedural Call (RPC) is specified. On receiving this RPC, 154 the provider is expected to compute the available path subject to the 155 constraints specified in RPC and feedback to the client without any 156 changing of the OTN network or the OTN tunnels. 158 4. OTN Tunnel YANG Tree 160 module: ietf-otn-tunnel 161 augment /te:te/te:tunnels/te:tunnel: 162 +--rw src-client-signal? identityref 163 +--rw dst-client-signal? identityref 164 augment /te:te/te:globals/te:named-path-constraints 165 /te:named-path-constraint/te:te-bandwidth/te:technology: 166 +--:(otn) 167 +--rw odu-type? identityref 168 augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth/te:technology: 169 +--:(otn) 170 +--rw odu-type? identityref 171 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 172 /te:p2p-primary-path/te:te-bandwidth/te:technology: 173 +--:(otn) 174 +--rw odu-type? identityref 175 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 176 /te:p2p-primary-path/te:p2p-primary-reverse-path 177 /te:te-bandwidth/te:technology: 178 +--:(otn) 179 +--rw odu-type? identityref 180 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 181 /te:p2p-secondary-path/te:te-bandwidth/te:technology: 182 +--:(otn) 183 +--rw odu-type? identityref 184 augment /te:te/te:globals/te:named-path-constraints 185 /te:named-path-constraint/te:explicit-route-objects-always 186 /te:route-object-exclude-always/te:type/te:label 187 /te:label-hop/te:te-label/te:technology: 188 +--:(otn) 189 +--rw tpn? uint16 190 +--rw tsg? identityref 191 +--rw ts-list? string 192 augment /te:te/te:globals/te:named-path-constraints 193 /te:named-path-constraint/te:explicit-route-objects-always 194 /te:route-object-include-exclude/te:type/te:label 195 /te:label-hop/te:te-label/te:technology: 196 +--:(otn) 197 +--rw tpn? uint16 198 +--rw tsg? identityref 199 +--rw ts-list? string 200 augment /te:te/te:globals/te:named-path-constraints 201 /te:named-path-constraint/te:path-in-segment 202 /te:label-restrictions/te:label-restriction: 203 +--rw range-type? identityref 204 +--rw tsg? identityref 205 +--rw priority? uint8 206 augment /te:te/te:globals/te:named-path-constraints 207 /te:named-path-constraint/te:path-in-segment 208 /te:label-restrictions/te:label-restriction 209 /te:label-start/te:te-label/te:technology: 210 +--:(otn) 211 +--rw (otn-label-type)? 212 +--:(tributary-port) 213 | +--rw tpn? uint16 214 +--:(tributary-slot) 215 +--rw ts? uint16 216 augment /te:te/te:globals/te:named-path-constraints 217 /te:named-path-constraint/te:path-in-segment 218 /te:label-restrictions/te:label-restriction 219 /te:label-end/te:te-label/te:technology: 220 +--:(otn) 221 +--rw (otn-label-type)? 222 +--:(tributary-port) 223 | +--rw tpn? uint16 224 +--:(tributary-slot) 225 +--rw ts? uint16 226 augment /te:te/te:globals/te:named-path-constraints 227 /te:named-path-constraint/te:path-out-segment 228 /te:label-restrictions/te:label-restriction: 229 +--rw range-type? identityref 230 +--rw tsg? identityref 231 +--rw priority? uint8 232 augment /te:te/te:globals/te:named-path-constraints 233 /te:named-path-constraint/te:path-out-segment 234 /te:label-restrictions/te:label-restriction 235 /te:label-start/te:te-label/te:technology: 236 +--:(otn) 237 +--rw (otn-label-type)? 238 +--:(tributary-port) 239 | +--rw tpn? uint16 240 +--:(tributary-slot) 241 +--rw ts? uint16 243 augment /te:te/te:globals/te:named-path-constraints 244 /te:named-path-constraint/te:path-out-segment 245 /te:label-restrictions/te:label-restriction 246 /te:label-end/te:te-label/te:technology: 247 +--:(otn) 248 +--rw (otn-label-type)? 249 +--:(tributary-port) 250 | +--rw tpn? uint16 251 +--:(tributary-slot) 252 +--rw ts? uint16 253 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 254 /te:p2p-primary-path/te:optimizations/te:algorithm 255 /te:metric/te:optimization-metric 256 /te:explicit-route-exclude-objects 257 /te:route-object-exclude-object/te:type/te:label 258 /te:label-hop/te:te-label/te:technology: 259 +--:(otn) 260 +--rw tpn? uint16 261 +--rw tsg? identityref 262 +--rw ts-list? string 263 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 264 /te:p2p-primary-path/te:optimizations/te:algorithm 265 /te:metric/te:optimization-metric 266 /te:explicit-route-include-objects 267 /te:route-object-include-object/te:type/te:label 268 /te:label-hop/te:te-label/te:technology: 269 +--:(otn) 270 +--rw tpn? uint16 271 +--rw tsg? identityref 272 +--rw ts-list? string 273 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 274 /te:p2p-primary-path/te:explicit-route-objects-always 275 /te:route-object-exclude-always/te:type/te:label 276 /te:label-hop/te:te-label/te:technology: 277 +--:(otn) 278 +--rw tpn? uint16 279 +--rw tsg? identityref 280 +--rw ts-list? string 281 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 282 /te:p2p-primary-path/te:explicit-route-objects-always 283 /te:route-object-include-exclude/te:type/te:label 284 /te:label-hop/te:te-label/te:technology: 285 +--:(otn) 286 +--rw tpn? uint16 287 +--rw tsg? identityref 288 +--rw ts-list? string 289 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 290 /te:p2p-primary-path/te:path-in-segment 291 /te:label-restrictions/te:label-restriction: 292 +--rw range-type? identityref 293 +--rw tsg? identityref 294 +--rw priority? uint8 295 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 296 /te:p2p-primary-path/te:path-in-segment 297 /te:label-restrictions/te:label-restriction 298 /te:label-start/te:te-label/te:technology: 299 +--:(otn) 300 +--rw (otn-label-type)? 301 +--:(tributary-port) 302 | +--rw tpn? uint16 303 +--:(tributary-slot) 304 +--rw ts? uint16 305 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 306 /te:p2p-primary-path/te:path-in-segment 307 /te:label-restrictions/te:label-restriction 308 /te:label-end/te:te-label/te:technology: 309 +--:(otn) 310 +--rw (otn-label-type)? 311 +--:(tributary-port) 312 | +--rw tpn? uint16 313 +--:(tributary-slot) 314 +--rw ts? uint16 315 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 316 /te:p2p-primary-path/te:path-out-segment 317 /te:label-restrictions/te:label-restriction: 318 +--rw range-type? identityref 319 +--rw tsg? identityref 320 +--rw priority? uint8 321 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 322 /te:p2p-primary-path/te:path-out-segment 323 /te:label-restrictions/te:label-restriction 324 /te:label-start/te:te-label/te:technology: 325 +--:(otn) 326 +--rw (otn-label-type)? 327 +--:(tributary-port) 328 | +--rw tpn? uint16 329 +--:(tributary-slot) 330 +--rw ts? uint16 331 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 332 /te:p2p-primary-path/te:path-out-segment 333 /te:label-restrictions/te:label-restriction 334 /te:label-end/te:te-label/te:technology: 335 +--:(otn) 336 +--rw (otn-label-type)? 337 +--:(tributary-port) 338 | +--rw tpn? uint16 339 +--:(tributary-slot) 340 +--rw ts? uint16 341 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 342 /te:p2p-primary-path/te:computed-paths-properties 343 /te:computed-path-properties/te:path-properties 344 /te:path-route-objects/te:path-computed-route-object 345 /te:type/te:label/te:label-hop/te:te-label 346 /te:technology: 347 +--:(otn) 348 +--ro tpn? uint16 349 +--ro tsg? identityref 350 +--ro ts-list? string 351 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 352 /te:p2p-primary-path/te:lsps/te:lsp 353 /te:lsp-record-route-information 354 /te:lsp-record-route-information/te:type/te:label 355 /te:label-hop/te:te-label/te:technology: 356 +--:(otn) 357 +--ro tpn? uint16 358 +--ro tsg? identityref 359 +--ro ts-list? string 360 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 361 /te:p2p-primary-path/te:lsps/te:lsp/te:path-properties 362 /te:path-route-objects/te:path-computed-route-object 363 /te:type/te:label/te:label-hop/te:te-label 364 /te:technology: 365 +--:(otn) 366 +--ro tpn? uint16 367 +--ro tsg? identityref 368 +--ro ts-list? string 369 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 370 /te:p2p-primary-path/te:p2p-primary-reverse-path 371 /te:optimizations/te:algorithm/te:metric 372 /te:optimization-metric 373 /te:explicit-route-exclude-objects 374 /te:route-object-exclude-object/te:type/te:label 375 /te:label-hop/te:te-label/te:technology: 376 +--:(otn) 377 +--rw tpn? uint16 378 +--rw tsg? identityref 379 +--rw ts-list? string 380 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 381 /te:p2p-primary-path/te:p2p-primary-reverse-path 382 /te:optimizations/te:algorithm/te:metric 383 /te:optimization-metric 384 /te:explicit-route-include-objects 385 /te:route-object-include-object/te:type/te:label 386 /te:label-hop/te:te-label/te:technology: 388 +--:(otn) 389 +--rw tpn? uint16 390 +--rw tsg? identityref 391 +--rw ts-list? string 392 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 393 /te:p2p-primary-path/te:p2p-primary-reverse-path 394 /te:explicit-route-objects-always 395 /te:route-object-exclude-always/te:type/te:label 396 /te:label-hop/te:te-label/te:technology: 397 +--:(otn) 398 +--rw tpn? uint16 399 +--rw tsg? identityref 400 +--rw ts-list? string 401 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 402 /te:p2p-primary-path/te:p2p-primary-reverse-path 403 /te:explicit-route-objects-always 404 /te:route-object-include-exclude/te:type/te:label 405 /te:label-hop/te:te-label/te:technology: 406 +--:(otn) 407 +--rw tpn? uint16 408 +--rw tsg? identityref 409 +--rw ts-list? string 410 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 411 /te:p2p-primary-path/te:p2p-primary-reverse-path 412 /te:path-in-segment/te:label-restrictions 413 /te:label-restriction: 414 +--rw range-type? identityref 415 +--rw tsg? identityref 416 +--rw priority? uint8 417 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 418 /te:p2p-primary-path/te:p2p-primary-reverse-path 419 /te:path-in-segment/te:label-restrictions 420 /te:label-restriction/te:label-start/te:te-label 421 /te:technology: 422 +--:(otn) 423 +--rw (otn-label-type)? 424 +--:(tributary-port) 425 | +--rw tpn? uint16 426 +--:(tributary-slot) 427 +--rw ts? uint16 428 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 429 /te:p2p-primary-path/te:p2p-primary-reverse-path 430 /te:path-in-segment/te:label-restrictions 431 /te:label-restriction/te:label-end/te:te-label 432 /te:technology: 433 +--:(otn) 434 +--rw (otn-label-type)? 435 +--:(tributary-port) 436 | +--rw tpn? uint16 437 +--:(tributary-slot) 438 +--rw ts? uint16 439 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 440 /te:p2p-primary-path/te:p2p-primary-reverse-path 441 /te:path-out-segment/te:label-restrictions 442 /te:label-restriction: 443 +--rw range-type? identityref 444 +--rw tsg? identityref 445 +--rw priority? uint8 446 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 447 /te:p2p-primary-path/te:p2p-primary-reverse-path 448 /te:path-out-segment/te:label-restrictions 449 /te:label-restriction/te:label-start/te:te-label 450 /te:technology: 451 +--:(otn) 452 +--rw (otn-label-type)? 453 +--:(tributary-port) 454 | +--rw tpn? uint16 455 +--:(tributary-slot) 456 +--rw ts? uint16 457 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 458 /te:p2p-primary-path/te:p2p-primary-reverse-path 459 /te:path-out-segment/te:label-restrictions 460 /te:label-restriction/te:label-end/te:te-label 461 /te:technology: 462 +--:(otn) 463 +--rw (otn-label-type)? 464 +--:(tributary-port) 465 | +--rw tpn? uint16 466 +--:(tributary-slot) 467 +--rw ts? uint16 468 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 469 /te:p2p-primary-path/te:p2p-primary-reverse-path 470 /te:computed-paths-properties 471 /te:computed-path-properties 472 /te:path-properties/te:path-route-objects 473 /te:path-computed-route-object/te:type/te:label 474 /te:label-hop/te:te-label/te:technology: 475 +--:(otn) 476 +--ro tpn? uint16 477 +--ro tsg? identityref 478 +--ro ts-list? string 479 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 480 /te:p2p-primary-path/te:p2p-primary-reverse-path 481 /te:lsps/te:lsp/te:lsp-record-route-information 482 /te:lsp-record-route-information/te:type/te:label 483 /te:label-hop/te:te-label/te:technology: 485 +--:(otn) 486 +--ro tpn? uint16 487 +--ro tsg? identityref 488 +--ro ts-list? string 489 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 490 /te:p2p-primary-path/te:p2p-primary-reverse-path 491 /te:lsps/te:lsp/te:path-properties/te:path-route-objects 492 /te:path-computed-route-object/te:type/te:label 493 /te:label-hop/te:te-label/te:technology: 494 +--:(otn) 495 +--ro tpn? uint16 496 +--ro tsg? identityref 497 +--ro ts-list? string 498 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 499 /te:p2p-secondary-path/te:optimizations/te:algorithm 500 /te:metric/te:optimization-metric 501 /te:explicit-route-exclude-objects 502 /te:route-object-exclude-object/te:type/te:label 503 /te:label-hop/te:te-label/te:technology: 504 +--:(otn) 505 +--rw tpn? uint16 506 +--rw tsg? identityref 507 +--rw ts-list? string 508 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 509 /te:p2p-secondary-path/te:optimizations/te:algorithm 510 /te:metric/te:optimization-metric 511 /te:explicit-route-include-objects 512 /te:route-object-include-object/te:type/te:label 513 /te:label-hop/te:te-label/te:technology: 514 +--:(otn) 515 +--rw tpn? uint16 516 +--rw tsg? identityref 517 +--rw ts-list? string 518 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 519 /te:p2p-secondary-path/te:explicit-route-objects-always 520 /te:route-object-exclude-always/te:type/te:label 521 /te:label-hop/te:te-label/te:technology: 522 +--:(otn) 523 +--rw tpn? uint16 524 +--rw tsg? identityref 525 +--rw ts-list? string 526 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 527 /te:p2p-secondary-path/te:explicit-route-objects-always 528 /te:route-object-include-exclude/te:type/te:label 529 /te:label-hop/te:te-label/te:technology: 530 +--:(otn) 531 +--rw tpn? uint16 532 +--rw tsg? identityref 533 +--rw ts-list? string 534 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 535 /te:p2p-secondary-path/te:path-in-segment 536 /te:label-restrictions/te:label-restriction: 537 +--rw range-type? identityref 538 +--rw tsg? identityref 539 +--rw priority? uint8 540 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 541 /te:p2p-secondary-path/te:path-in-segment 542 /te:label-restrictions/te:label-restriction 543 /te:label-start/te:te-label/te:technology: 544 +--:(otn) 545 +--rw (otn-label-type)? 546 +--:(tributary-port) 547 | +--rw tpn? uint16 548 +--:(tributary-slot) 549 +--rw ts? uint16 550 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 551 /te:p2p-secondary-path/te:path-in-segment 552 /te:label-restrictions/te:label-restriction 553 /te:label-end/te:te-label/te:technology: 554 +--:(otn) 555 +--rw (otn-label-type)? 556 +--:(tributary-port) 557 | +--rw tpn? uint16 558 +--:(tributary-slot) 559 +--rw ts? uint16 560 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 561 /te:p2p-secondary-path/te:path-out-segment 562 /te:label-restrictions/te:label-restriction: 563 +--rw range-type? identityref 564 +--rw tsg? identityref 565 +--rw priority? uint8 566 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 567 /te:p2p-secondary-path/te:path-out-segment 568 /te:label-restrictions/te:label-restriction 569 /te:label-start/te:te-label/te:technology: 570 +--:(otn) 571 +--rw (otn-label-type)? 572 +--:(tributary-port) 573 | +--rw tpn? uint16 574 +--:(tributary-slot) 575 +--rw ts? uint16 576 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 577 /te:p2p-secondary-path/te:path-out-segment 578 /te:label-restrictions/te:label-restriction 579 /te:label-end/te:te-label/te:technology: 580 +--:(otn) 581 +--rw (otn-label-type)? 582 +--:(tributary-port) 583 | +--rw tpn? uint16 584 +--:(tributary-slot) 585 +--rw ts? uint16 586 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 587 /te:p2p-secondary-path/te:computed-paths-properties 588 /te:computed-path-properties/te:path-properties 589 /te:path-route-objects/te:path-computed-route-object 590 /te:type/te:label/te:label-hop/te:te-label/te:technology: 591 +--:(otn) 592 +--ro tpn? uint16 593 +--ro tsg? identityref 594 +--ro ts-list? string 595 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 596 /te:p2p-secondary-path/te:lsps/te:lsp 597 /te:lsp-record-route-information 598 /te:lsp-record-route-information/te:type/te:label 599 /te:label-hop/te:te-label/te:technology: 600 +--:(otn) 601 +--ro tpn? uint16 602 +--ro tsg? identityref 603 +--ro ts-list? string 604 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 605 /te:p2p-secondary-path/te:lsps/te:lsp/te:path-properties 606 /te:path-route-objects/te:path-computed-route-object 607 /te:type/te:label/te:label-hop/te:te-label/te:technology: 608 +--:(otn) 609 +--ro tpn? uint16 610 +--ro tsg? identityref 611 +--ro ts-list? string 612 augment /te:te/te:lsps-state/te:lsp 613 /te:lsp-record-route-information 614 /te:lsp-record-route-information/te:type/te:label 615 /te:label-hop/te:te-label/te:technology: 616 +--:(otn) 617 +--ro tpn? uint16 618 +--ro tsg? identityref 619 +--ro ts-list? string 621 5. OTN Tunnel YANG Code 623 file "ietf-otn-tunnel@2019-10-23.yang" 624 module ietf-otn-tunnel { 625 yang-version 1.1; 626 namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel"; 627 prefix "otn-tunnel"; 629 import ietf-te { 630 prefix "te"; 631 reference 632 "I-D.ietf-teas-yang-te: A YANG Data Model for Traffic Engineering 633 Tunnels and Interfaces. "; 634 } 636 import ietf-layer1-types { 637 prefix "layer1-types"; 638 reference 639 "I-D.ietf-ccamp-layer1-types: A YANG Data Model for Layer 1 Types. "; 640 } 642 organization 643 "IETF CCAMP Working Group"; 644 contact 645 "WG Web: 646 WG List: 648 Editor: Haomian Zheng 649 651 Editor: Italo Busi 652 654 Editor: Sergio Belotti 655 657 Editor: Victor Lopez 658 660 Editor: Yunbin Xu 661 "; 663 description 664 "This module defines a model for OTN Tunnel Services. 666 Copyright (c) 2019 IETF Trust and the persons 667 identified as authors of the code. All rights reserved. 669 Redistribution and use in source and binary forms, with or 670 without modification, is permitted pursuant to, and subject 671 to the license terms contained in, the Simplified BSD License 672 set forth in Section 4.c of the IETF Trust's Legal Provisions 673 Relating to IETF Documents 674 (https://trustee.ietf.org/license-info)."; 676 revision "2019-10-23" { 677 description 678 "Initial Revision"; 679 reference 680 "RFC XXXX: OTN Tunnel YANG Model"; 681 // RFC Ed.: replace XXXX with actual RFC number, update date 682 // information and remove this note 683 } 685 /* 686 * Groupings 687 */ 689 grouping otn-tunnel-attributes { 690 description "Parameters for OTN tunnel"; 692 leaf src-client-signal { 693 type identityref { 694 base layer1-types:client-signal; 695 } 696 description 697 "Client signal at the source endpoint of the tunnel. "; 698 } 700 leaf dst-client-signal { 701 type identityref { 702 base layer1-types:client-signal; 703 } 704 description 705 "Client signal at the destination endpoint of the tunnel"; 706 } 708 } 710 /* 711 * Data nodes 712 */ 714 augment "/te:te/te:tunnels/te:tunnel" { 715 description 716 "Augment with additional parameters required for OTN service"; 717 uses otn-tunnel-attributes; 718 } 720 /* 721 * Augment TE bandwidth 722 */ 723 /* Augment bandwidth of named-path-constraints */ 724 augment "/te:te/te:globals/te:named-path-constraints/" 725 + "te:named-path-constraint/" 726 + "te:te-bandwidth/te:technology" { 727 description "OTN bandwidth."; 728 case otn { 729 uses layer1-types:otn-path-bandwidth; 730 } 731 } 733 /* Augment bandwdith of tunnel */ 734 augment "/te:te/te:tunnels/te:tunnel/" 735 + "te:te-bandwidth/te:technology" { 736 description "OTN bandwidth."; 737 case otn { 738 uses layer1-types:otn-path-bandwidth; 739 } 740 } 742 /* Augment bandwidth of primary path */ 743 augment "/te:te/te:tunnels/te:tunnel/" 744 + "te:p2p-primary-paths/te:p2p-primary-path/" 745 + "te:te-bandwidth/te:technology" { 746 description "OTN bandwidth."; 747 case otn { 748 uses layer1-types:otn-path-bandwidth; 749 } 750 } 752 /* Augment bandwidth of reverse primary path */ 753 augment "/te:te/te:tunnels/te:tunnel/" 754 + "te:p2p-primary-paths/te:p2p-primary-path/" 755 + "te:p2p-primary-reverse-path/" 756 + "te:te-bandwidth/te:technology" { 757 description "OTN bandwidth."; 758 case otn { 759 uses layer1-types:otn-path-bandwidth; 760 } 761 } 763 /* Augment bandwidth of secondary path */ 764 augment "/te:te/te:tunnels/te:tunnel/" 765 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 766 + "te:te-bandwidth/te:technology" { 767 description "OTN bandwidth."; 768 case otn { 769 uses layer1-types:otn-path-bandwidth; 770 } 772 } 774 /* 775 * Augment TE label. 776 */ 778 /* Augment label hop of route-object-exclude-always of named-path-constraints */ 779 augment "/te:te/te:globals/te:named-path-constraints/" 780 + "te:named-path-constraint/te:explicit-route-objects-always/" 781 + "te:route-object-exclude-always/te:type/te:label/" 782 + "te:label-hop/te:te-label/te:technology" { 783 description "OTN label."; 784 case otn { 785 uses layer1-types:otn-path-label; 786 } 787 } 789 /* Augment label hop of route-object-include-exclude of named-path-constraints */ 790 augment "/te:te/te:globals/te:named-path-constraints/" 791 + "te:named-path-constraint/te:explicit-route-objects-always/" 792 + "te:route-object-include-exclude/te:type/te:label/" 793 + "te:label-hop/te:te-label/te:technology" { 794 description "OTN label."; 795 case otn { 796 uses layer1-types:otn-path-label; 797 } 798 } 800 /* Augment label restrictions for the forwarding direction of path-in-segment of named-path-constraints */ 801 augment "/te:te/te:globals/te:named-path-constraints/" 802 + "te:named-path-constraint/te:path-in-segment/" 803 + "te:label-restrictions/te:label-restriction" { 804 description "OTN label."; 805 uses layer1-types:otn-label-restriction; 806 } 808 /* Augment label restrictions start for the forwarding direction of path-in-segment of named-path-constraints */ 809 augment "/te:te/te:globals/te:named-path-constraints/" 810 + "te:named-path-constraint/te:path-in-segment/" 811 + "te:label-restrictions/" 812 + "te:label-restriction/te:label-start/" 813 + "te:te-label/te:technology" { 814 description "OTN label."; 815 case otn { 816 uses layer1-types:otn-link-label; 817 } 818 } 819 /* Augment label restrictions end for the forwarding direction of path-in-segment of named-path-constraints */ 820 augment "/te:te/te:globals/te:named-path-constraints/" 821 + "te:named-path-constraint/te:path-in-segment/" 822 + "te:label-restrictions/" 823 + "te:label-restriction/te:label-end/" 824 + "te:te-label/te:technology" { 825 description "OTN label."; 826 case otn { 827 uses layer1-types:otn-link-label; 828 } 829 } 831 /* Augment label restrictions for the forwarding direction of path-out-segment of named-path-constraints */ 832 augment "/te:te/te:globals/te:named-path-constraints/" 833 + "te:named-path-constraint/te:path-out-segment/" 834 + "te:label-restrictions/" 835 + "te:label-restriction" { 836 description "OTN label."; 837 uses layer1-types:otn-label-restriction; 838 } 839 /* Augment label restrictions start for the forwarding direction of path-out-segment of named-path-constraints */ 840 augment "/te:te/te:globals/te:named-path-constraints/" 841 + "te:named-path-constraint/te:path-out-segment/" 842 + "te:label-restrictions/" 843 + "te:label-restriction/te:label-start/" 844 + "te:te-label/te:technology" { 845 description "OTN label."; 846 case otn { 847 uses layer1-types:otn-link-label; 848 } 849 } 851 /* Augment label restrictions end for the forwarding direction of path-out-segment of named-path-constraints */ 852 augment "/te:te/te:globals/te:named-path-constraints/" 853 + "te:named-path-constraint/te:path-out-segment/" 854 + "te:label-restrictions/" 855 + "te:label-restriction/te:label-end/" 856 + "te:te-label/te:technology" { 857 description "OTN label."; 858 case otn { 859 uses layer1-types:otn-link-label; 860 } 861 } 863 /* Augment label hop of route-exclude of primary path */ 864 augment "/te:te/te:tunnels/te:tunnel/" 865 + "te:p2p-primary-paths/te:p2p-primary-path/" 866 + "te:optimizations/te:algorithm/te:metric/" 867 + "te:optimization-metric/te:explicit-route-exclude-objects/" 868 + "te:route-object-exclude-object/te:type/te:label/" 869 + "te:label-hop/te:te-label/te:technology" { 870 description "OTN label."; 871 case otn { 872 uses layer1-types:otn-path-label; 873 } 874 } 876 /* Augment label hop of route-include of primary path */ 877 augment "/te:te/te:tunnels/te:tunnel/" 878 + "te:p2p-primary-paths/te:p2p-primary-path/" 879 + "te:optimizations/te:algorithm/te:metric/" 880 + "te:optimization-metric/te:explicit-route-include-objects/" 881 + "te:route-object-include-object/te:type/te:label/" 882 + "te:label-hop/te:te-label/te:technology" { 883 description "OTN label."; 884 case otn { 885 uses layer1-types:otn-path-label; 886 } 887 } 889 /* Augment label hop of route-object-exclude-always of primary path */ 890 augment "/te:te/te:tunnels/te:tunnel/" 891 + "te:p2p-primary-paths/te:p2p-primary-path/" 892 + "te:explicit-route-objects-always/" 893 + "te:route-object-exclude-always/te:type/te:label/" 894 + "te:label-hop/te:te-label/te:technology" { 895 description "OTN label."; 896 case otn { 898 uses layer1-types:otn-path-label; 899 } 900 } 902 /* Augment label hop of route-object-include-exclude of primary path */ 903 augment "/te:te/te:tunnels/te:tunnel/" 904 + "te:p2p-primary-paths/te:p2p-primary-path/" 905 + "te:explicit-route-objects-always/" 906 + "te:route-object-include-exclude/te:type/te:label/" 907 + "te:label-hop/te:te-label/te:technology" { 908 description "OTN label."; 909 case otn { 910 uses layer1-types:otn-path-label; 911 } 912 } 914 /* Augment label restrictions for the forwarding direction of path-in-segment of primary path */ 915 augment "/te:te/te:tunnels/te:tunnel/" 916 + "te:p2p-primary-paths/te:p2p-primary-path/" 917 + "te:path-in-segment/te:label-restrictions/" 918 + "te:label-restriction" { 919 description "OTN label."; 920 uses layer1-types:otn-label-restriction; 921 } 923 /* Augment label restrictions start for the forwarding direction of path-in-segment of primary path */ 924 augment "/te:te/te:tunnels/te:tunnel/" 925 + "te:p2p-primary-paths/te:p2p-primary-path/" 926 + "te:path-in-segment/te:label-restrictions/" 927 + "te:label-restriction/te:label-start/" 928 + "te:te-label/te:technology" { 929 description "OTN label."; 930 case otn { 931 uses layer1-types:otn-link-label; 932 } 933 } 935 /* Augment label restrictions end for the forwarding direction of path-in-segment of primary path */ 936 augment "/te:te/te:tunnels/te:tunnel/" 937 + "te:p2p-primary-paths/te:p2p-primary-path/" 938 + "te:path-in-segment/te:label-restrictions/" 939 + "te:label-restriction/te:label-end/" 940 + "te:te-label/te:technology" { 941 description "OTN label."; 942 case otn { 943 uses layer1-types:otn-link-label; 944 } 945 } 947 /* Augment label restrictions for the forwarding direction of path-out-segment of primary path */ 948 augment "/te:te/te:tunnels/te:tunnel/" 949 + "te:p2p-primary-paths/te:p2p-primary-path/" 950 + "te:path-out-segment/te:label-restrictions/" 951 + "te:label-restriction" { 952 description "OTN label."; 953 uses layer1-types:otn-label-restriction; 954 } 956 /* Augment label restrictions start for the forwarding direction of path-out-segment of primary path */ 957 augment "/te:te/te:tunnels/te:tunnel/" 958 + "te:p2p-primary-paths/te:p2p-primary-path/" 959 + "te:path-out-segment/te:label-restrictions/" 960 + "te:label-restriction/te:label-start/" 961 + "te:te-label/te:technology" { 963 description "OTN label."; 964 case otn { 965 uses layer1-types:otn-link-label; 966 } 967 } 969 /* Augment label restrictions end for the forwarding direction of path-out-segment of primary path */ 970 augment "/te:te/te:tunnels/te:tunnel/" 971 + "te:p2p-primary-paths/te:p2p-primary-path/" 972 + "te:path-out-segment/te:label-restrictions/" 973 + "te:label-restriction/te:label-end/" 974 + "te:te-label/te:technology" { 975 description "OTN label."; 976 case otn { 977 uses layer1-types:otn-link-label; 978 } 979 } 981 /* Augment label hop of path-route of primary path */ 982 augment "/te:te/te:tunnels/te:tunnel/" 983 + "te:p2p-primary-paths/te:p2p-primary-path/" 984 + "te:computed-paths-properties/" 985 + "te:computed-path-properties/te:path-properties/" 986 + "te:path-route-objects/te:path-computed-route-object/" 987 + "te:type/te:label/" 988 + "te:label-hop/te:te-label/te:technology" { 989 description "OTN label."; 990 case otn { 991 uses layer1-types:otn-path-label; 992 } 993 } 995 /* Augment label hop of record-route of primary LSP */ 996 augment "/te:te/te:tunnels/te:tunnel/" 997 + "te:p2p-primary-paths/te:p2p-primary-path/" 998 + "te:lsps/te:lsp/te:lsp-record-route-information/" 999 + "te:lsp-record-route-information/te:type/te:label/" 1000 + "te:label-hop/te:te-label/te:technology" { 1001 description "OTN label."; 1002 case otn { 1003 uses layer1-types:otn-path-label; 1004 } 1005 } 1007 /* Augment label hop of path-route of primary LSP */ 1008 augment "/te:te/te:tunnels/te:tunnel/" 1009 + "te:p2p-primary-paths/te:p2p-primary-path/" 1010 + "te:lsps/te:lsp/te:path-properties/" 1011 + "te:path-route-objects/te:path-computed-route-object/" 1012 + "te:type/te:label/" 1013 + "te:label-hop/te:te-label/te:technology" { 1014 description "OTN label."; 1015 case otn { 1016 uses layer1-types:otn-path-label; 1017 } 1018 } 1020 /* Augment label hop of route-exclude of reverse primary path */ 1021 augment "/te:te/te:tunnels/te:tunnel/" 1022 + "te:p2p-primary-paths/te:p2p-primary-path/" 1023 + "te:p2p-primary-reverse-path/" 1024 + "te:optimizations/te:algorithm/te:metric/" 1025 + "te:optimization-metric/te:explicit-route-exclude-objects/" 1026 + "te:route-object-exclude-object/te:type/te:label/" 1027 + "te:label-hop/te:te-label/te:technology" { 1028 description "OTN label."; 1029 case otn { 1030 uses layer1-types:otn-path-label; 1031 } 1032 } 1034 /* Augment label hop of route-include of reverse primary path */ 1035 augment "/te:te/te:tunnels/te:tunnel/" 1036 + "te:p2p-primary-paths/te:p2p-primary-path/" 1037 + "te:p2p-primary-reverse-path/" 1038 + "te:optimizations/te:algorithm/te:metric/" 1039 + "te:optimization-metric/te:explicit-route-include-objects/" 1040 + "te:route-object-include-object/te:type/te:label/" 1041 + "te:label-hop/te:te-label/te:technology" { 1042 description "OTN label."; 1043 case otn { 1044 uses layer1-types:otn-path-label; 1045 } 1046 } 1048 /* Augment label hop of route-object-exclude-always of reverse primary path */ 1049 augment "/te:te/te:tunnels/te:tunnel/" 1050 + "te:p2p-primary-paths/te:p2p-primary-path/" 1051 + "te:p2p-primary-reverse-path/" 1052 + "te:explicit-route-objects-always/" 1053 + "te:route-object-exclude-always/" 1054 + "te:type/te:label/" 1055 + "te:label-hop/te:te-label/te:technology" { 1056 description "OTN label."; 1057 case otn { 1058 uses layer1-types:otn-path-label; 1060 } 1061 } 1063 /* Augment label hop of route-object-include-exclude of reverse primary path */ 1064 augment "/te:te/te:tunnels/te:tunnel/" 1065 + "te:p2p-primary-paths/te:p2p-primary-path/" 1066 + "te:p2p-primary-reverse-path/" 1067 + "te:explicit-route-objects-always/" 1068 + "te:route-object-include-exclude/" 1069 + "te:type/te:label/" 1070 + "te:label-hop/te:te-label/te:technology" { 1071 description "OTN label."; 1072 case otn { 1073 uses layer1-types:otn-path-label; 1074 } 1075 } 1077 /* Augment label restrictions for the forwarding direction of path-in-segment of reverse primary path */ 1078 augment "/te:te/te:tunnels/te:tunnel/" 1079 + "te:p2p-primary-paths/te:p2p-primary-path/" 1080 + "te:p2p-primary-reverse-path/" 1081 + "te:path-in-segment/te:label-restrictions/" 1082 + "te:label-restriction" { 1083 description "OTN label."; 1084 uses layer1-types:otn-label-restriction; 1085 } 1087 /* Augment label restrictions start for the forwarding direction of path-in-segment of reverse primary path */ 1088 augment "/te:te/te:tunnels/te:tunnel/" 1089 + "te:p2p-primary-paths/te:p2p-primary-path/" 1090 + "te:p2p-primary-reverse-path/" 1091 + "te:path-in-segment/te:label-restrictions/" 1092 + "te:label-restriction/te:label-start/" 1093 + "te:te-label/te:technology" { 1094 description "OTN label."; 1095 case otn { 1096 uses layer1-types:otn-link-label; 1097 } 1098 } 1100 /* Augment label restrictions end for the forwarding direction of path-in-segment of reverse primary path */ 1101 augment "/te:te/te:tunnels/te:tunnel/" 1102 + "te:p2p-primary-paths/te:p2p-primary-path/" 1103 + "te:p2p-primary-reverse-path/" 1104 + "te:path-in-segment/te:label-restrictions/" 1105 + "te:label-restriction/te:label-end/" 1106 + "te:te-label/te:technology" { 1107 description "OTN label."; 1108 case otn { 1109 uses layer1-types:otn-link-label; 1110 } 1111 } 1113 /* Augment label restrictions for the forwarding direction of path-out-segment of reverse primary path */ 1114 augment "/te:te/te:tunnels/te:tunnel/" 1115 + "te:p2p-primary-paths/te:p2p-primary-path/" 1116 + "te:p2p-primary-reverse-path/" 1117 + "te:path-out-segment/te:label-restrictions/" 1118 + "te:label-restriction" { 1119 description "OTN label."; 1120 uses layer1-types:otn-label-restriction; 1121 } 1123 /* Augment label restrictions start for the forwarding direction of path-out-segment of reverse primary path */ 1124 augment "/te:te/te:tunnels/te:tunnel/" 1125 + "te:p2p-primary-paths/te:p2p-primary-path/" 1126 + "te:p2p-primary-reverse-path/" 1127 + "te:path-out-segment/te:label-restrictions/" 1128 + "te:label-restriction/te:label-start/" 1129 + "te:te-label/te:technology" { 1130 description "OTN label."; 1131 case otn { 1132 uses layer1-types:otn-link-label; 1133 } 1134 } 1136 /* Augment label restrictions end for the forwarding direction of path-out-segment of reverse primary path */ 1138 augment "/te:te/te:tunnels/te:tunnel/" 1139 + "te:p2p-primary-paths/te:p2p-primary-path/" 1140 + "te:p2p-primary-reverse-path/" 1141 + "te:path-out-segment/te:label-restrictions/" 1142 + "te:label-restriction/te:label-end/" 1143 + "te:te-label/te:technology" { 1144 description "OTN label."; 1145 case otn { 1146 uses layer1-types:otn-link-label; 1147 } 1148 } 1150 /* Augment label hop of path-route of reverse primary path */ 1151 augment "/te:te/te:tunnels/te:tunnel/" 1152 + "te:p2p-primary-paths/te:p2p-primary-path/" 1153 + "te:p2p-primary-reverse-path/" 1154 + "te:computed-paths-properties/te:computed-path-properties/te:path-properties/" 1155 + "te:path-route-objects/te:path-computed-route-object/" 1156 + "te:type/te:label/" 1157 + "te:label-hop/te:te-label/te:technology" { 1158 description "OTN label."; 1159 case otn { 1160 uses layer1-types:otn-path-label; 1161 } 1162 } 1164 /* Augment label hop of record-route of reverse primary LSP */ 1165 augment "/te:te/te:tunnels/te:tunnel/" 1166 + "te:p2p-primary-paths/te:p2p-primary-path/" 1167 + "te:p2p-primary-reverse-path/" 1168 + "te:lsps/te:lsp/te:lsp-record-route-information/" 1169 + "te:lsp-record-route-information/te:type/te:label/" 1170 + "te:label-hop/te:te-label/te:technology" { 1171 description "OTN label."; 1172 case otn { 1173 uses layer1-types:otn-path-label; 1174 } 1175 } 1177 /* Augment label hop of path-route of reverse primary LSP */ 1178 augment "/te:te/te:tunnels/te:tunnel/" 1179 + "te:p2p-primary-paths/te:p2p-primary-path/" 1180 + "te:p2p-primary-reverse-path/" 1181 + "te:lsps/te:lsp/te:path-properties/" 1182 + "te:path-route-objects/te:path-computed-route-object/" 1183 + "te:type/te:label/" 1184 + "te:label-hop/te:te-label/te:technology" { 1185 description "OTN label."; 1186 case otn { 1187 uses layer1-types:otn-path-label; 1188 } 1189 } 1191 /* Augment label hop of route-exclude of secondary path */ 1192 augment "/te:te/te:tunnels/te:tunnel/" 1193 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1194 + "te:optimizations/te:algorithm/te:metric/" 1195 + "te:optimization-metric/te:explicit-route-exclude-objects/" 1196 + "te:route-object-exclude-object/te:type/te:label/" 1197 + "te:label-hop/te:te-label/te:technology" { 1199 description "OTN label."; 1200 case otn { 1201 uses layer1-types:otn-path-label; 1202 } 1203 } 1204 /* Augment label hop of route-include of secondary path */ 1205 augment "/te:te/te:tunnels/te:tunnel/" 1206 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1207 + "te:optimizations/te:algorithm/te:metric/" 1208 + "te:optimization-metric/te:explicit-route-include-objects/" 1209 + "te:route-object-include-object/te:type/te:label/" 1210 + "te:label-hop/te:te-label/te:technology" { 1211 description "OTN label."; 1212 case otn { 1213 uses layer1-types:otn-path-label; 1214 } 1215 } 1217 /* Augment label hop of route-object-exclude-always of secondary path */ 1218 augment "/te:te/te:tunnels/te:tunnel/" 1219 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1220 + "te:explicit-route-objects-always/" 1221 + "te:route-object-exclude-always/te:type/te:label/" 1222 + "te:label-hop/te:te-label/te:technology" { 1223 description "OTN label."; 1224 case otn { 1225 uses layer1-types:otn-path-label; 1226 } 1227 } 1229 /* Augment label hop of route-object-include-exclude of secondary path */ 1230 augment "/te:te/te:tunnels/te:tunnel/" 1231 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1232 + "te:explicit-route-objects-always/" 1233 + "te:route-object-include-exclude/te:type/te:label/" 1234 + "te:label-hop/te:te-label/te:technology" { 1235 description "OTN label."; 1236 case otn { 1237 uses layer1-types:otn-path-label; 1238 } 1239 } 1241 /* Augment label restrictions for the forwarding direction of path-in-segment of secondary path */ 1242 augment "/te:te/te:tunnels/te:tunnel/" 1243 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1244 + "te:path-in-segment/te:label-restrictions/" 1245 + "te:label-restriction" { 1247 description "OTN label."; 1248 uses layer1-types:otn-label-restriction; 1249 } 1251 /* Augment label restrictions start for the forwarding direction of path-in-segment of secondary path */ 1252 augment "/te:te/te:tunnels/te:tunnel/" 1253 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1254 + "te:path-in-segment/te:label-restrictions/" 1255 + "te:label-restriction/te:label-start/" 1256 + "te:te-label/te:technology" { 1257 description "OTN label."; 1258 case otn { 1259 uses layer1-types:otn-link-label; 1260 } 1261 } 1263 /* Augment label restrictions end for the forwarding direction of path-in-segment of secondary path */ 1264 augment "/te:te/te:tunnels/te:tunnel/" 1265 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1266 + "te:path-in-segment/te:label-restrictions/" 1267 + "te:label-restriction/te:label-end/" 1268 + "te:te-label/te:technology" { 1269 description "OTN label."; 1270 case otn { 1271 uses layer1-types:otn-link-label; 1272 } 1273 } 1275 /* Augment label restrictions for the forwarding direction of path-out-segment of secondary path */ 1276 augment "/te:te/te:tunnels/te:tunnel/" 1277 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1278 + "te:path-out-segment/te:label-restrictions/" 1279 + "te:label-restriction" { 1280 description "OTN label."; 1281 uses layer1-types:otn-label-restriction; 1282 } 1284 /* Augment label restrictions start for the forwarding direction of path-out-segment of secondary path */ 1285 augment "/te:te/te:tunnels/te:tunnel/" 1286 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1287 + "te:path-out-segment/te:label-restrictions/" 1288 + "te:label-restriction/te:label-start/" 1289 + "te:te-label/te:technology" { 1290 description "OTN label."; 1291 case otn { 1292 uses layer1-types:otn-link-label; 1293 } 1294 } 1296 /* Augment label restrictions end for the forwarding direction of path-out-segment of secondary path */ 1297 augment "/te:te/te:tunnels/te:tunnel/" 1298 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1299 + "te:path-out-segment/te:label-restrictions/" 1300 + "te:label-restriction/te:label-end/" 1301 + "te:te-label/te:technology" { 1302 description "OTN label."; 1303 case otn { 1304 uses layer1-types:otn-link-label; 1305 } 1306 } 1308 /* Augment label hop of path-route of secondary path */ 1309 augment "/te:te/te:tunnels/te:tunnel/" 1310 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1311 + "te:computed-paths-properties/te:computed-path-properties/" 1312 + "te:path-properties/te:path-route-objects/" 1313 + "te:path-computed-route-object/te:type/te:label/" 1314 + "te:label-hop/te:te-label/te:technology" { 1315 description "OTN label."; 1316 case otn { 1317 uses layer1-types:otn-path-label; 1318 } 1319 } 1321 /* Augment label hop of record-route of secondary LSP */ 1322 augment "/te:te/te:tunnels/te:tunnel/" 1323 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1324 + "te:lsps/te:lsp/te:lsp-record-route-information/" 1325 + "te:lsp-record-route-information/te:type/te:label/" 1326 + "te:label-hop/te:te-label/te:technology" { 1328 description "OTN label."; 1329 case otn { 1330 uses layer1-types:otn-path-label; 1331 } 1332 } 1334 /* Augment label hop of path-route of secondary LSP */ 1335 augment "/te:te/te:tunnels/te:tunnel/" 1336 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1337 + "te:lsps/te:lsp/te:path-properties/" 1338 + "te:path-route-objects/" 1339 + "te:path-computed-route-object/te:type/te:label/" 1340 + "te:label-hop/te:te-label/te:technology" { 1341 description "OTN label."; 1342 case otn { 1343 uses layer1-types:otn-path-label; 1344 } 1345 } 1347 /* Augment label hop of record-route of LSP */ 1348 augment "/te:te/te:lsps-state/" 1349 + "te:lsp/te:lsp-record-route-information/" 1350 + "te:lsp-record-route-information/te:type/te:label/" 1351 + "te:label-hop/te:te-label/te:technology" { 1352 description "OTN label."; 1353 case otn { 1354 uses layer1-types:otn-path-label; 1355 } 1356 } 1357 /* 1358 grouping p2p-path-ero { 1359 description 1360 "TE tunnel ERO configuration grouping"; 1362 leaf te-default-metric { 1363 type uint32; 1364 description 1365 "Traffic engineering metric."; 1366 } 1367 leaf te-delay-metric { 1368 type uint32; 1369 description 1370 "Traffic engineering delay metric."; 1371 } 1372 leaf te-hop-metric { 1373 type uint32; 1374 description 1375 "Traffic engineering hop metric."; 1377 } 1378 container explicit-route-objects-always { 1379 description "Explicit route objects container"; 1380 list route-object-include-exclude { 1381 key "index"; 1382 description 1383 "List of explicit route objects"; 1384 leaf explicit-route-usage { 1385 type identityref { 1386 base te-types:route-usage-type; 1387 } 1388 description "An explicit-route hop action."; 1389 } 1390 uses te-types:explicit-route-hop { 1391 augment "type/label/label-hop/te-label/technology" { 1392 description "OTN label."; 1393 case otn { 1394 uses layer1-types:otn-path-label; 1395 } 1396 } 1397 } 1398 } 1399 } 1400 } 1401 */ 1402 /* 1403 rpc otn-te-tunnel-path-compute { 1404 description "OTN TE tunnel path computation"; 1405 input { 1406 list request { 1407 key "id"; 1408 description "A list of path computation requests."; 1410 leaf id { 1411 type uint8; 1412 description 1413 "Request ID."; 1414 } 1415 leaf type { 1416 type identityref { 1417 base te-types:te-tunnel-type; 1418 } 1419 description "TE tunnel type."; 1420 } 1421 leaf source { 1422 type inet:ip-address; 1423 description 1424 "TE tunnel source address."; 1425 } 1427 leaf destination { 1428 type inet:ip-address; 1429 description 1430 "TE tunnel destination address"; 1431 } 1432 leaf src-tp-id { 1433 type binary; 1434 description 1435 "TE tunnel source termination point identifier."; 1436 } 1437 leaf dst-tp-id { 1438 type binary; 1439 description 1440 "TE tunnel destination termination point identifier."; 1441 } 1442 leaf switching-layer { 1443 type identityref { 1444 base te-types:switching-capabilities; 1445 } 1446 description 1447 "Switching layer where the requests are computed."; 1448 } 1449 leaf encoding { 1450 type identityref { 1451 base te-types:lsp-encoding-types; 1452 } 1453 description "LSP encoding type"; 1454 } 1455 leaf protection-type { 1456 type identityref { 1457 base te-types:lsp-protection-type; 1458 } 1459 description "LSP protection type"; 1460 } 1461 leaf restoration-type { 1462 type identityref { 1463 base te-types:lsp-restoration-type; 1464 } 1465 description "LSP restoration type"; 1466 } 1467 leaf provider-id { 1468 type te-types:te-global-id; 1469 description 1470 "An identifier to uniquely identify a provider."; 1471 } 1472 leaf client-id { 1473 type te-types:te-global-id; 1474 description 1476 "An identifier to uniquely identify a client."; 1477 } 1478 leaf te-topology-id { 1479 type te-types:te-topology-id; 1480 description 1481 "It is presumed that a datastore will contain many 1482 topologies. To distinguish between topologies it is 1483 vital to have UNIQUE topology identifiers."; 1484 } 1485 leaf setup-priority { 1486 type uint8 { 1487 range "0..7"; 1488 } 1489 description 1490 "TE LSP setup priority"; 1491 } 1492 leaf hold-priority { 1493 type uint8 { 1494 range "0..7"; 1495 } 1496 description 1497 "TE LSP hold priority"; 1498 } 1499 leaf te-path-metric-type { 1500 type identityref { 1501 base te-types:path-metric-type; 1502 } 1503 default te-types:path-metric-te; 1504 description 1505 "The tunnel path metric type."; 1506 } 1508 leaf odu-type { 1509 type identityref{ 1510 base layer1-types:odu-type; 1511 } 1512 description "Type of ODU"; 1513 } 1514 container p2p-primary-paths { 1515 description "Set of P2P primary paths container"; 1516 list p2p-primary-path { 1517 key "name"; 1518 description 1519 "List of primary paths for this tunnel."; 1520 leaf name { 1521 type string; 1522 description "TE path name"; 1523 } 1525 uses p2p-path-ero; 1526 } 1527 } 1528 container p2p-secondary-paths { 1529 description "Set of P2P secondary paths container"; 1530 list p2p-secondary-path { 1531 key "name"; 1532 description 1533 "List of secondary paths for this tunnel."; 1534 leaf name { 1535 type string; 1536 description "TE path name"; 1537 } 1538 uses p2p-path-ero; 1539 } 1541 } 1542 uses otn-tunnel-attributes; 1543 } 1544 } 1545 output { 1546 leaf return-code { 1547 type enumeration { 1548 enum success { 1549 description "success"; 1550 } 1551 enum aborted { 1552 description "aborted"; 1553 } 1554 enum destination-not-found { 1555 description "destination-not-found"; 1556 } 1557 enum invalid-argument { 1558 description "invalid-argument"; 1559 } 1560 enum no-memory { 1561 description "no-memory"; 1562 } 1563 enum no-path-found { 1564 description "no-path-found"; 1565 } 1566 enum other-error { 1567 description "other-error"; 1568 } 1569 enum some-path-not-found { 1570 description "some-path-not-found"; 1571 } 1572 enum source-not-found { 1573 description "source-not-found"; 1575 } 1576 enum topology-error { 1577 description "topology-error"; 1578 } 1579 } 1580 description 1581 "Return code"; 1582 } 1583 list result { 1584 key "id"; 1585 description 1586 "A list of results for all requests."; 1588 leaf id { 1589 type uint8; 1590 description 1591 "Request ID"; 1592 } 1593 container p2p-primary-paths { 1594 description "Set of P2P primary paths container"; 1595 list p2p-primary-path { 1596 key "name"; 1597 description 1598 "List of resultant primary paths for this tunnel."; 1599 leaf name { 1600 type string; 1601 description "TE path name"; 1602 } 1603 uses p2p-path-ero; 1604 } 1605 } 1606 container p2p-secondary-paths { 1607 description "Set of P2P secondary paths container"; 1608 list p2p-secondary-path { 1609 key "name"; 1610 description 1611 "List of resultant secondary paths for this tunnel."; 1612 leaf name { 1613 type string; 1614 description "TE path name"; 1615 } 1616 uses p2p-path-ero; 1617 } 1618 } 1619 } 1620 } 1621 }*/ 1622 } 1624 1626 6. Security Considerations 1628 The YANG module specified in this document defines a schema for data 1629 that is designed to be accessed via network management protocols such 1630 as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer 1631 is the secure transport layer, and the mandatory-to-implement secure 1632 transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer 1633 is HTTPS, and the mandatory-to-implement secure transport is TLS 1634 [RFC8446]. 1636 The NETCONF access control model [RFC8341] provides the means to 1637 restrict access for particular NETCONF or RESTCONF users to a 1638 preconfigured subset of all available NETCONF or RESTCONF protocol 1639 operations and content. 1641 There are a number of data nodes defined in this YANG module that are 1642 writable/creatable/deletable (i.e., config true, which is the 1643 default). These data nodes may be considered sensitive or vulnerable 1644 in some network environments. Write operations (e.g., edit-config) 1645 to these data nodes without proper protection can have a negative 1646 effect on network operations. These are the subtrees and data nodes 1647 and their sensitivity/vulnerability: 1649 /te:te/te:tunnels/te:tunnel /te:te/../te:te-bandwidth/te:technology 1650 /te:te/../te:type/te:label/te:label-hop/te:te-label/te:technology 1651 /te:te/../te:label-restrictions/te:label-restriction/te:label-start/ 1652 te:te-label/te:technology /te:te/../te:label-restrictions/te:label- 1653 restriction/te:label-end/te:te-label/te:technology 1654 /te:te/../te:label-restrictions/te:label-restriction/ Editors note: 1655 we are using simplified description by folding similar branches to 1656 avoid repetation. 1658 Some of the readable data nodes in this YANG module may be considered 1659 sensitive or vulnerable in some network environments. It is thus 1660 important to control read access (e.g., via get, get-config, or 1661 notification) to these data nodes. These are the subtrees and data 1662 nodes and their sensitivity/vulnerability: 1664 /te:te/../te:type/te:label/te:label-hop/te:te-label/te:technology 1665 Editors note: we are using simplified description by folding similar 1666 branches to avoid repetation. 1668 Some of the RPC operations in this YANG module may be considered 1669 sensitive or vulnerable in some network environments. It is thus 1670 important to control access to these operations. These are the 1671 operations and their sensitivity/vulnerability: 1673 +---x otn-te-tunnel-path-compute This path compute RPC provides a 1674 mechanism to enable the client to query and/or subscribe on the 1675 tunnel to be notified whenever it changes. Thus path computation is 1676 only for the client reference, with no real deploy or resource 1677 reservation. 1679 7. IANA Considerations 1681 It is proposed that IANA should assign new URIs from the "IETF XML 1682 Registry" [RFC3688] as follows: 1684 URI: urn:ietf:params:xml:ns:yang:ietf-otn-tunnel 1685 Registrant Contact: The IESG 1686 XML: N/A; the requested URI is an XML namespace. 1688 URI: urn:ietf:params:xml:ns:yang:ietf-otn-types 1689 Registrant Contact: The IESG 1690 XML: N/A; the requested URI is an XML namespace. 1692 This document registers following YANG modules in the YANG Module 1693 Names registry [RFC7950]. 1695 name: ietf-otn-tunnel 1696 namespace: urn:ietf:params:xml:ns:yang:ietf-otn-tunnel 1697 prefix: otn-tunnel 1698 reference: RFC XXXX 1700 name: ietf-otn-types 1701 namespace: urn:ietf:params:xml:ns:yang:ietf-otn-types 1702 prefix: otn-types 1703 reference: RFC XXXX 1705 8. Acknowledgements 1707 TBD. 1709 9. Contributors 1711 Aihua Guo 1712 Individual 1713 Email: aihuaguo.ietf@gmail.com 1715 Anurag Sharma 1716 Google 1717 Email: ansha@google.com 1719 Rajan Rao 1720 Infinera 1721 Email: rrao@infinera.com 1723 Yunbo Li 1724 China Mobile 1725 Email: liyunbo@chinamobile.com 1727 Dieter Beller 1728 Nokia 1729 Email: dieter.beller@nokia.com 1731 Yanlei Zheng 1732 China Unicom 1733 Email: zhengyl@dimpt.com 1735 Xian Zhang 1736 Huawei Technologies 1737 Email: zhang.xian@huawei.com 1739 Lei Wang 1740 China Mobile 1741 Email: wangleiyj@chinamobile.com 1743 Oscar Gonzalez de Dios 1744 Telefonica 1745 Email: oscar.gonzalezdedios@telefonica.com 1747 10. References 1749 10.1. Normative References 1751 [I-D.ietf-ccamp-otn-topo-yang] 1752 Zheng, H., Guo, A., Busi, I., Sharma, A., Liu, X., 1753 Belotti, S., Xu, Y., Wang, L., and O. Dios, "A YANG Data 1754 Model for Optical Transport Network Topology", draft-ietf- 1755 ccamp-otn-topo-yang-08 (work in progress), September 2019. 1757 [I-D.ietf-teas-yang-te] 1758 Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, 1759 "A YANG Data Model for Traffic Engineering Tunnels and 1760 Interfaces", draft-ietf-teas-yang-te-21 (work in 1761 progress), April 2019. 1763 [ITU-Tg709] 1764 International Telecommunication Union, "Interfaces for the 1765 optical transport network", ITU-T G.709, June 2016. 1767 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1768 DOI 10.17487/RFC3688, January 2004, 1769 . 1771 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1772 and A. Bierman, Ed., "Network Configuration Protocol 1773 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1774 . 1776 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1777 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1778 . 1780 [RFC7139] Zhang, F., Ed., Zhang, G., Belotti, S., Ceccarelli, D., 1781 and K. Pithewan, "GMPLS Signaling Extensions for Control 1782 of Evolving G.709 Optical Transport Networks", RFC 7139, 1783 DOI 10.17487/RFC7139, March 2014, 1784 . 1786 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1787 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1788 . 1790 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1791 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1792 . 1794 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1795 Access Control Model", STD 91, RFC 8341, 1796 DOI 10.17487/RFC8341, March 2018, 1797 . 1799 [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., 1800 and R. Wilton, "Network Management Datastore Architecture 1801 (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, 1802 . 1804 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 1805 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 1806 . 1808 10.2. Informative References 1810 [I-D.ietf-ccamp-transport-nbi-app-statement] 1811 Busi, I., King, D., Zheng, H., and Y. Xu, "Transport 1812 Northbound Interface Applicability Statement", draft-ietf- 1813 ccamp-transport-nbi-app-statement-06 (work in progress), 1814 September 2019. 1816 [I-D.ietf-teas-actn-yang] 1817 Lee, Y., Zheng, H., Ceccarelli, D., Yoon, B., Dios, O., 1818 Shin, J., and S. Belotti, "Applicability of YANG models 1819 for Abstraction and Control of Traffic Engineered 1820 Networks", draft-ietf-teas-actn-yang-04 (work in 1821 progress), August 2019. 1823 [RFC7062] Zhang, F., Ed., Li, D., Li, H., Belotti, S., and D. 1824 Ceccarelli, "Framework for GMPLS and PCE Control of G.709 1825 Optical Transport Networks", RFC 7062, 1826 DOI 10.17487/RFC7062, November 2013, 1827 . 1829 [RFC7138] Ceccarelli, D., Ed., Zhang, F., Belotti, S., Rao, R., and 1830 J. Drake, "Traffic Engineering Extensions to OSPF for 1831 GMPLS Control of Evolving G.709 Optical Transport 1832 Networks", RFC 7138, DOI 10.17487/RFC7138, March 2014, 1833 . 1835 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1836 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1837 . 1839 Authors' Addresses 1841 Haomian Zheng 1842 Huawei Technologies 1843 H1-1-A043S Huawei Industrial Base, Songshanhu 1844 Dongguan, Guangdong 523808 1845 China 1847 Email: zhenghaomian@huawei.com 1849 Italo Busi 1850 Huawei Technologies 1851 HUAWEI TECHNOLOGIES ITALIA Srl Centro Direzionale Milano 2 1852 Milan, Milan 20090 1853 Italy 1855 Email: Italo.Busi@huawei.com 1857 Sergio Belotti 1858 Nokia 1860 Email: sergio.belotti@nokia.com 1862 Victor Lopez 1863 Telefonica 1865 Email: victor.lopezalvarez@telefonica.com 1866 Yunbin Xu 1867 CAICT 1869 Email: xuyunbin@ritt.cn