idnits 2.17.1 draft-ietf-ccamp-otn-tunnel-model-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 23 instances of too long lines in the document, the longest one being 11 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 (June 19, 2018) is 2139 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-03 == Outdated reference: A later version (-17) exists of draft-ietf-ccamp-transport-nbi-app-statement-01 ** Downref: Normative reference to an Informational draft: draft-ietf-ccamp-transport-nbi-app-statement (ref. 'I-D.ietf-ccamp-transport-nbi-app-statement') == Outdated reference: A later version (-36) exists of draft-ietf-teas-yang-te-15 == Outdated reference: A later version (-11) exists of draft-ietf-teas-actn-yang-01 Summary: 2 errors (**), 0 flaws (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 CCAMP Working Group H. Zheng 2 Internet-Draft A. Guo 3 Intended status: Standards Track I. Busi 4 Expires: December 21, 2018 Huawei Technologies 5 A. Sharma 6 Google 7 R. Rao 8 Infinera 9 S. Belotti 10 Nokia 11 V. Lopez 12 Telefonica 13 Y. Li 14 China Mobile 15 Y. Xu 16 CAICT 17 June 19, 2018 19 OTN Tunnel YANG Model 20 draft-ietf-ccamp-otn-tunnel-model-02 22 Abstract 24 This document describes the YANG data model for OTN Tunnels. 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at https://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on December 21, 2018. 43 Copyright Notice 45 Copyright (c) 2018 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (https://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 61 2. Terminology and Notations . . . . . . . . . . . . . . . . . . 2 62 3. OTN Tunnel Model Description . . . . . . . . . . . . . . . . 3 63 3.1. Overview of OTN Tunnel Model . . . . . . . . . . . . . . 3 64 3.2. OTN-specific Parameters in Tunnel Model . . . . . . . . . 3 65 3.3. OTN Path Compute RPC . . . . . . . . . . . . . . . . . . 4 66 4. OTN Tunnel YANG Tree . . . . . . . . . . . . . . . . . . . . 4 67 5. OTN Tunnel YANG Code . . . . . . . . . . . . . . . . . . . . 12 68 6. OTN Types YANG Code . . . . . . . . . . . . . . . . . . . . . 30 69 7. Security Considerations . . . . . . . . . . . . . . . . . . . 42 70 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 71 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 42 72 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 42 73 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 74 11.1. Normative References . . . . . . . . . . . . . . . . . . 43 75 11.2. Informative References . . . . . . . . . . . . . . . . . 44 76 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 44 78 1. Introduction 80 OTN transport networks can carry various types of client services. 81 In many cases, the client signal is carried over an OTN tunnel across 82 connected domains in a multi-domain network. These OTN services can 83 either be transported or switched in the OTN network. If an OTN 84 tunnel is switched, then additional parameters need to be provided to 85 create a Mux OTN service. 87 This document provides YANG model for creating OTN tunnel. The model 88 augments the TE Tunnel model. 90 2. Terminology and Notations 92 A simplified graphical representation of the data model is used in 93 this document. The meaning of the symbols in the YANG data tree 94 presented later in this draft is defined in 96 [I-D.ietf-netmod-yang-tree-diagrams]. They are provided below for 97 reference. 99 o Brackets "[" and "]" enclose list keys. 101 o Abbreviations before data node names: "rw" means configuration 102 (read-write) and "ro" state data (read-only). 104 o Symbols after data node names: "?" means an optional node, "!" 105 means a presence container, and "*" denotes a list and leaf-list. 107 o Parentheses enclose choice and case nodes, and case nodes are also 108 marked with a colon (":"). 110 o Ellipsis ("...") stands for contents of subtrees that are not 111 shown. 113 3. OTN Tunnel Model Description 115 3.1. Overview of OTN Tunnel Model 117 The OTN tunnel model is using TE tunnel [I-D.ietf-teas-yang-te] as a 118 basic model and augment to the TE tunnel with OTN-specific 119 parameters, including the bandwidth information and label 120 information. It is also worth noting that the OTN tunnel 121 provisioning is usually based on the OTN topology. Therefore the OTN 122 tunnel model is usually used together with OTN topology model 123 specified in [I-D.ietf-ccamp-otn-topo-yang]. 125 More scenarios and model applications can be found in 126 [I-D.ietf-ccamp-transport-nbi-app-statement] and 127 [I-D.ietf-teas-actn-yang]. The current model is following the YANG 128 language specification as [RFC7950], and the corresponding protocol 129 is recommended to be Netconf protocol in [RFC6241] or RESTconf 130 protocol in [RFC8040]. 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 by specifing a Remote Procedural Call (RPC). On 151 receiving this RPC, the provider is expected to compute the available 152 path subject to the constraints specified in RPC and feedback to the 153 client without any changing of the OTN network. Given the OTN tunnel 154 computed, the client may query and/or subscribe on the tunnel to be 155 notified whenever it changes. 157 4. OTN Tunnel YANG Tree 159 module: ietf-otn-tunnel 160 augment /te:te/te:tunnels/te:tunnel: 161 +--rw payload-treatment? enumeration 162 +--rw src-client-signal? identityref 163 +--rw src-tpn? uint16 164 +--rw src-tsg? identityref 165 +--rw src-tributary-slot-count? uint16 166 +--rw src-tributary-slots 167 | +--rw values* uint8 168 +--rw dst-client-signal? identityref 169 +--rw dst-tpn? uint16 170 +--rw dst-tsg? identityref 171 +--rw dst-tributary-slot-count? uint16 172 +--rw dst-tributary-slots 173 +--rw values* uint8 174 augment /te:te/te:globals/te:named-path-constraints 175 /te:named-path-constraint/te:te-bandwidth/te:technology: 176 +--:(otn) 177 +--rw odu-type? identityref 178 augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth/te:technology: 179 +--:(otn) 180 +--rw odu-type? identityref 181 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 182 /te:p2p-primary-path/te:te-bandwidth/te:technology: 183 +--:(otn) 184 +--rw odu-type? identityref 185 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 186 /te:p2p-primary-path/te:p2p-reverse-primary-path 187 /te:te-bandwidth/te:technology: 188 +--:(otn) 189 +--rw odu-type? identityref 190 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 191 /te:p2p-secondary-path/te:te-bandwidth/te:technology: 192 +--:(otn) 193 +--rw odu-type? identityref 194 augment /te:te/te:globals/te:named-path-constraints 195 /te:named-path-constraint/te:explicit-route-objects 196 /te:route-object-exclude-always/te:type/te:label 197 /te:label-hop/te:te-label/te:technology: 198 +--:(otn) 199 +--rw tpn? uint16 200 +--rw tsg? identityref 201 +--rw ts-list? string 202 augment /te:te/te:globals/te:named-path-constraints 203 /te:named-path-constraint/te:explicit-route-objects 204 /te:route-object-include-exclude/te:type/te:label 205 /te:label-hop/te:te-label/te:technology: 206 +--:(otn) 207 +--rw tpn? uint16 208 +--rw tsg? identityref 209 +--rw ts-list? string 210 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 211 /te:p2p-primary-path/te:explicit-route-objects 212 /te:route-object-exclude-always/te:type/te:label 213 /te:label-hop/te:te-label/te:technology: 214 +--:(otn) 215 +--rw tpn? uint16 216 +--rw tsg? identityref 217 +--rw ts-list? string 218 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 219 /te:p2p-primary-path/te:explicit-route-objects 220 /te:route-object-include-exclude/te:type/te:label 221 /te:label-hop/te:te-label/te:technology: 222 +--:(otn) 223 +--rw tpn? uint16 224 +--rw tsg? identityref 225 +--rw ts-list? string 226 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 227 /te:p2p-primary-path/te:optimizations/te:algorithm/te:metric 228 /te:optimization-metric/te:explicit-route-exclude-objects 229 /te:route-object-exclude-object/te:type/te:label 230 /te:label-hop/te:te-label/te:technology: 231 +--:(otn) 232 +--rw tpn? uint16 233 +--rw tsg? identityref 234 +--rw ts-list? string 235 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 236 /te:p2p-primary-path/te:optimizations/te:algorithm/te:metric 237 /te:optimization-metric/te:explicit-route-include-objects 238 /te:route-object-include-object/te:type/te:label/te:label-hop 239 /te:te-label/te:technology: 240 +--:(otn) 241 +--rw tpn? uint16 242 +--rw tsg? identityref 243 +--rw ts-list? string 244 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 245 /te:p2p-primary-path/te:state/te:path-properties 246 /te:path-route-objects/te:path-computed-route-object 247 /te:state/te:type/te:label/te:label-hop/te:te-label 248 /te:technology: 249 +--:(otn) 250 +--ro tpn? uint16 251 +--ro tsg? identityref 252 +--ro ts-list? string 253 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 254 /te:p2p-primary-path/te:state/te:lsps/te:lsp 255 /te:path-properties/te:path-route-objects 256 /te:path-computed-route-object/te:state/te:type/te:label 257 /te:label-hop/te:te-label/te:technology: 258 +--:(otn) 259 +--ro tpn? uint16 260 +--ro tsg? identityref 261 +--ro ts-list? string 262 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 263 /te:p2p-primary-path/te:p2p-reverse-primary-path 264 /te:explicit-route-objects/te:route-object-exclude-always 265 /te:type/te:label/te:label-hop/te:te-label/te:technology: 266 +--:(otn) 267 +--rw tpn? uint16 268 +--rw tsg? identityref 269 +--rw ts-list? string 270 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 271 /te:p2p-primary-path/te:p2p-reverse-primary-path 272 /te:explicit-route-objects/te:route-object-include-exclude 273 /te:type/te:label/te:label-hop/te:te-label/te:technology: 274 +--:(otn) 275 +--rw tpn? uint16 276 +--rw tsg? identityref 277 +--rw ts-list? string 278 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 279 /te:p2p-primary-path/te:p2p-reverse-primary-path 280 /te:optimizations/te:algorithm/te:metric 281 /te:optimization-metric/te:explicit-route-exclude-objects 282 /te:route-object-exclude-object/te:type/te:label 283 /te:label-hop/te:te-label/te:technology: 284 +--:(otn) 285 +--rw tpn? uint16 286 +--rw tsg? identityref 287 +--rw ts-list? string 288 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 289 /te:p2p-primary-path/te:p2p-reverse-primary-path 290 /te:optimizations/te:algorithm/te:metric 291 /te:optimization-metric/te:explicit-route-include-objects 292 /te:route-object-include-object/te:type/te:label 293 /te:label-hop/te:te-label/te:technology: 294 +--:(otn) 295 +--rw tpn? uint16 296 +--rw tsg? identityref 297 +--rw ts-list? string 298 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 299 /te:p2p-primary-path/te:p2p-reverse-primary-path/te:state 300 /te:path-properties/te:path-route-objects 301 /te:path-computed-route-object/te:state/te:type/te:label 302 /te:label-hop/te:te-label/te:technology: 303 +--:(otn) 304 +--ro tpn? uint16 305 +--ro tsg? identityref 306 +--ro ts-list? string 307 augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths 308 /te:p2p-primary-path/te:p2p-reverse-primary-path/te:state 309 /te:lsps/te:lsp/te:path-properties/te:path-route-objects 310 /te:path-computed-route-object/te:state/te:type/te:label 311 /te:label-hop/te:te-label/te:technology: 312 +--:(otn) 313 +--ro tpn? uint16 314 +--ro tsg? identityref 315 +--ro ts-list? string 316 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 317 /te:p2p-secondary-path/te:explicit-route-objects 318 /te:route-object-exclude-always/te:type/te:label 319 /te:label-hop/te:te-label/te:technology: 320 +--:(otn) 321 +--rw tpn? uint16 322 +--rw tsg? identityref 323 +--rw ts-list? string 324 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 325 /te:p2p-secondary-path/te:explicit-route-objects 326 /te:route-object-include-exclude/te:type/te:label 327 /te:label-hop/te:te-label/te:technology: 328 +--:(otn) 329 +--rw tpn? uint16 330 +--rw tsg? identityref 331 +--rw ts-list? string 332 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 333 /te:p2p-secondary-path/te:optimizations/te:algorithm 334 /te:metric/te:optimization-metric 335 /te:explicit-route-exclude-objects 336 /te:route-object-exclude-object/te:type/te:label 337 /te:label-hop/te:te-label/te:technology: 338 +--:(otn) 339 +--rw tpn? uint16 340 +--rw tsg? identityref 341 +--rw ts-list? string 342 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 343 /te:p2p-secondary-path/te:optimizations/te:algorithm 344 /te:metric/te:optimization-metric 345 /te:explicit-route-include-objects 346 /te:route-object-include-object/te:type/te:label 347 /te:label-hop/te:te-label/te:technology: 348 +--:(otn) 349 +--rw tpn? uint16 350 +--rw tsg? identityref 351 +--rw ts-list? string 352 augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths 353 /te:p2p-secondary-path/te:state/te:path-properties 354 /te:path-route-objects/te:path-computed-route-object/te:state 355 /te:type/te:label/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-secondary-paths 361 /te:p2p-secondary-path/te:state/te:lsps/te:lsp 362 /te:path-properties/te:path-route-objects 363 /te:path-computed-route-object/te:state/te:type/te:label 364 /te:label-hop/te:te-label/te:technology: 365 +--:(otn) 366 +--ro tpn? uint16 367 +--ro tsg? identityref 368 +--ro ts-list? string 370 rpcs: 371 +---x otn-te-tunnel-path-compute 372 +---w input 373 | +---w request* [id] 374 | +---w id uint8 375 | +---w type? identityref 376 | +---w source? inet:ip-address 377 | +---w destination? inet:ip-address 378 | +---w src-tp-id? binary 379 | +---w dst-tp-id? binary 380 | +---w switching-layer? identityref 381 | +---w encoding? identityref 382 | +---w protection-type? identityref 383 | +---w restoration-type? identityref 384 | +---w provider-id? te-types:te-global-id 385 | +---w client-id? te-types:te-global-id 386 | +---w te-topology-id? te-types:te-topology-id 387 | +---w setup-priority? uint8 388 | +---w hold-priority? uint8 389 | +---w te-path-metric-type? identityref 390 | +---w odu-type? identityref 391 | +---w p2p-primary-paths 392 | | +---w p2p-primary-path* [name] 393 | | +---w name string 394 | | +---w te-default-metric? uint32 395 | | +---w te-delay-metric? uint32 396 | | +---w te-hop-metric? uint32 397 | | +---w explicit-route-objects 398 | | +---w explicit-route-object* [index] 399 | | +---w explicit-route-usage? identityref 400 | | +---w index uint32 401 | | +---w (type)? 402 | | +--:(numbered) 403 | | | +---w numbered-hop 404 | | | +---w address? te-types:te-tp-id 405 | | | +---w hop-type? te-hop-type 406 | | | +---w direction? te-link-direction 407 | | +--:(as-number) 408 | | | +---w as-number-hop 409 | | | +---w as-number? binary 410 | | | +---w hop-type? te-hop-type 411 | | +--:(unnumbered) 412 | | | +---w unnumbered-hop 413 | | | +---w node-id? te-types:te-node-id 414 | | | +---w link-tp-id? te-types:te-tp-id 415 | | | +---w hop-type? te-hop-type 416 | | | +---w direction? te-link-direction 417 | | +--:(label) 418 | | +---w label-hop 419 | | +---w te-label 420 | | +---w (technology)? 421 | | | +--:(generic) 422 | | | | +---w generic? 423 rt-types:generalized-label 424 | | | +--:(otn) 425 | | | +---w tpn? uint16 426 | | | +---w tsg? identityref 427 | | | +---w ts-list? string 428 | | +---w direction? te-label-direction 429 | +---w p2p-secondary-paths 430 | | +---w p2p-secondary-path* [name] 431 | | +---w name string 432 | | +---w te-default-metric? uint32 433 | | +---w te-delay-metric? uint32 434 | | +---w te-hop-metric? uint32 435 | | +---w explicit-route-objects 436 | | +---w explicit-route-object* [index] 437 | | +---w explicit-route-usage? identityref 438 | | +---w index uint32 439 | | +---w (type)? 440 | | +--:(numbered) 441 | | | +---w numbered-hop 442 | | | +---w address? te-types:te-tp-id 443 | | | +---w hop-type? te-hop-type 444 | | | +---w direction? te-link-direction 445 | | +--:(as-number) 446 | | | +---w as-number-hop 447 | | | +---w as-number? binary 448 | | | +---w hop-type? te-hop-type 449 | | +--:(unnumbered) 450 | | | +---w unnumbered-hop 451 | | | +---w node-id? te-types:te-node-id 452 | | | +---w link-tp-id? te-types:te-tp-id 453 | | | +---w hop-type? te-hop-type 454 | | | +---w direction? te-link-direction 455 | | +--:(label) 456 | | +---w label-hop 457 | | +---w te-label 458 | | +---w (technology)? 459 | | | +--:(generic) 460 | | | | +---w generic? 461 rt-types:generalized-label 462 | | | +--:(otn) 463 | | | +---w tpn? uint16 464 | | | +---w tsg? identityref 465 | | | +---w ts-list? string 466 | | +---w direction? 467 te-label-direction 468 | +---w payload-treatment? enumeration 469 | +---w src-client-signal? identityref 470 | +---w src-tpn? uint16 471 | +---w src-tsg? identityref 472 | +---w src-tributary-slot-count? uint16 473 | +---w src-tributary-slots 474 | | +---w values* uint8 475 | +---w dst-client-signal? identityref 476 | +---w dst-tpn? uint16 477 | +---w dst-tsg? identityref 478 | +---w dst-tributary-slot-count? uint16 479 | +---w dst-tributary-slots 480 | +---w values* uint8 481 +--ro output 482 +--ro return-code? enumeration 483 +--ro result* [id] 484 +--ro id uint8 485 +--ro p2p-primary-paths 486 | +--ro p2p-primary-path* [name] 487 | +--ro name string 488 | +--ro te-default-metric? uint32 489 | +--ro te-delay-metric? uint32 490 | +--ro te-hop-metric? uint32 491 | +--ro explicit-route-objects 492 | +--ro explicit-route-object* [index] 493 | +--ro explicit-route-usage? identityref 494 | +--ro index uint32 495 | +--ro (type)? 496 | +--:(numbered) 497 | | +--ro numbered-hop 498 | | +--ro address? te-types:te-tp-id 499 | | +--ro hop-type? te-hop-type 500 | | +--ro direction? te-link-direction 501 | +--:(as-number) 502 | | +--ro as-number-hop 503 | | +--ro as-number? binary 504 | | +--ro hop-type? te-hop-type 505 | +--:(unnumbered) 506 | | +--ro unnumbered-hop 507 | | +--ro node-id? te-types:te-node-id 508 | | +--ro link-tp-id? te-types:te-tp-id 509 | | +--ro hop-type? te-hop-type 510 | | +--ro direction? te-link-direction 511 | +--:(label) 512 | +--ro label-hop 513 | +--ro te-label 514 | +--ro (technology)? 515 | | +--:(generic) 516 | | | +--ro generic? 517 rt-types:generalized-label 518 | | +--:(otn) 519 | | +--ro tpn? uint16 520 | | +--ro tsg? identityref 521 | | +--ro ts-list? string 522 | +--ro direction? te-label-direction 523 +--ro p2p-secondary-paths 524 +--ro p2p-secondary-path* [name] 525 +--ro name string 526 +--ro te-default-metric? uint32 527 +--ro te-delay-metric? uint32 528 +--ro te-hop-metric? uint32 529 +--ro explicit-route-objects 530 +--ro explicit-route-object* [index] 531 +--ro explicit-route-usage? identityref 532 +--ro index uint32 533 +--ro (type)? 534 +--:(numbered) 535 | +--ro numbered-hop 536 | +--ro address? te-types:te-tp-id 537 | +--ro hop-type? te-hop-type 538 | +--ro direction? te-link-direction 539 +--:(as-number) 540 | +--ro as-number-hop 541 | +--ro as-number? binary 542 | +--ro hop-type? te-hop-type 543 +--:(unnumbered) 544 | +--ro unnumbered-hop 545 | +--ro node-id? te-types:te-node-id 546 | +--ro link-tp-id? te-types:te-tp-id 547 | +--ro hop-type? te-hop-type 548 | +--ro direction? te-link-direction 549 +--:(label) 550 +--ro label-hop 551 +--ro te-label 552 +--ro (technology)? 553 | +--:(generic) 554 | | +--ro generic? 555 rt-types:generalized-label 556 | +--:(otn) 557 | +--ro tpn? uint16 558 | +--ro tsg? identityref 559 | +--ro ts-list? string 560 +--ro direction? te-label-direction 562 5. OTN Tunnel YANG Code 564 file "ietf-otn-tunnel@2018-06-07.yang" 566 module ietf-otn-tunnel { 567 yang-version 1.1; 568 namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel"; 569 prefix "otn-tunnel"; 571 import ietf-te { 572 prefix "te"; 573 } 575 import ietf-otn-types { 576 prefix "otn-types"; 577 } 579 import ietf-te-types { 580 prefix "te-types"; 581 } 583 import ietf-inet-types { 584 prefix "inet"; 585 } 587 organization 588 "IETF CCAMP Working Group"; 589 contact 590 "WG Web: 591 WG List: 593 Editor: Haomian Zheng 594 596 Editor: Aihua Guo 597 599 Editor: Italo Busi 600 602 Editor: Anurag Sharma 603 605 Editor: Rajan Rao 606 608 Editor: Sergio Belotti 609 611 Editor: Victor Lopez 612 614 Editor: Yunbo Li 615 617 Editor: Yunbin Xu 618 "; 620 description 621 "This module defines a model for OTN Tunnel Services."; 623 revision "2018-06-07" { 624 description 625 "Revision 0.5"; 626 reference 627 "draft-ietf-ccamp-otn-tunnel-model-02"; 628 } 630 /* 631 * Groupings 632 */ 634 grouping otn-tunnel-endpoint { 635 description "Parameters for OTN tunnel"; 637 leaf payload-treatment { 638 type enumeration { 639 enum switching { 640 description "Client signal is switched to another tunnel 641 in this domain"; 642 } 643 enum transport { 644 description "Client signal is transparently transmitted 645 in this domain"; 646 } 647 } 648 default switching; 649 description 650 "Treatment of the incoming payload. Payload can be switched 651 or transported."; 652 } 654 leaf src-client-signal { 655 type identityref { 656 base otn-types:client-signal; 657 } 658 description 659 "Client signal at the source endpoint of the tunnel"; 660 } 662 leaf src-tpn { 663 type uint16 { 664 range "0..4095"; 666 } 667 description 668 "Tributary Port Number. Applicable in case of mux services"; 669 reference 670 "RFC7139: GMPLS Signaling Extensions for Control of Evolving 671 G.709 Optical Transport Networks"; 672 } 674 leaf src-tsg { 675 type identityref { 676 base otn-types:tributary-slot-granularity; 677 } 678 description 679 "Tributary slot granularity. 680 Applicable in case of mux services"; 681 reference 682 "G.709/Y.1331, February 2016: Interfaces for the 683 Optical Transport Network (OTN)"; 684 } 686 leaf src-tributary-slot-count { 687 type uint16; 688 description 689 "Number of tributary slots used at the source."; 690 } 692 container src-tributary-slots { 693 description 694 "A list of tributary slots used by the client service. 695 Applicable in case of mux services"; 696 leaf-list values { 697 type uint8; 698 description 699 "Tributary tributary slot value"; 700 reference 701 "G.709/Y.1331, February 2016: Interfaces for the 702 Optical Transport Network (OTN)"; 703 } 704 } 706 leaf dst-client-signal { 707 type identityref { 708 base otn-types:client-signal; 709 } 710 description 711 "Client signal at the destination endpoint of the tunnel"; 712 } 713 leaf dst-tpn { 714 type uint16 { 715 range "0..4095"; 716 } 717 description 718 "Tributary Port Number. Applicable in case of mux services"; 719 reference 720 "RFC7139: GMPLS Signaling Extensions for Control of Evolving 721 G.709 Optical Transport Networks."; 722 } 724 leaf dst-tsg { 725 type identityref { 726 base otn-types:tributary-slot-granularity; 727 } 728 description 729 "Tributary slot granularity. 730 Applicable in case of mux services"; 731 reference 732 "G.709/Y.1331, February 2016: Interfaces for the 733 Optical Transport Network (OTN)"; 734 } 736 leaf dst-tributary-slot-count { 737 type uint16; 738 description 739 "Number of tributary slots used at the destination."; 740 } 742 container dst-tributary-slots { 743 description 744 "A list of tributary slots used by the client service. 745 Applicable in case of mux services"; 746 leaf-list values { 747 type uint8; 748 description 749 "Tributary slot value"; 750 reference 751 "G.709/Y.1331, February 2016: Interfaces for the 752 Optical Transport Network (OTN)"; 753 } 754 } 755 } 757 /* 758 Note: Comment has been given to authors of TE Tunnel model to add 759 list of endpoints under config to support P2MP tunnel. 760 */ 762 /* 763 * Data nodes 764 */ 766 augment "/te:te/te:tunnels/te:tunnel" { 767 description 768 "Augment with additional parameters required for OTN service"; 769 uses otn-tunnel-endpoint; 770 } 772 /* 773 * Augment TE bandwidth 774 */ 776 /* Augment bandwidth of named-path-constraints */ 777 augment "/te:te/te:globals/te:named-path-constraints/" 778 + "te:named-path-constraint/" 779 + "te:te-bandwidth/te:technology" { 780 description "OTN bandwidth."; 781 case otn { 782 uses otn-types:otn-path-bandwidth; 783 } 784 } 786 /* Augment bandwdith of tunnel */ 787 augment "/te:te/te:tunnels/te:tunnel/" 788 + "te:te-bandwidth/te:technology" { 789 description "OTN bandwidth."; 790 case otn { 791 uses otn-types:otn-path-bandwidth; 792 } 793 } 795 /* Augment bandwidth of primary path */ 796 augment "/te:te/te:tunnels/te:tunnel/" 797 + "te:p2p-primary-paths/te:p2p-primary-path/" 798 + "te:te-bandwidth/te:technology" { 799 description "OTN bandwidth."; 800 case otn { 801 uses otn-types:otn-path-bandwidth; 802 } 803 } 805 /* Augment bandwidth of reverse primary path */ 806 augment "/te:te/te:tunnels/te:tunnel/" 807 + "te:p2p-primary-paths/te:p2p-primary-path/" 808 + "te:p2p-reverse-primary-path/" 809 + "te:te-bandwidth/te:technology" { 811 description "OTN bandwidth."; 812 case otn { 813 uses otn-types:otn-path-bandwidth; 814 } 815 } 817 /* Augment bandwidht of secondary path */ 818 augment "/te:te/te:tunnels/te:tunnel/" 819 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 820 + "te:te-bandwidth/te:technology" { 821 description "OTN bandwidth."; 822 case otn { 823 uses otn-types:otn-path-bandwidth; 824 } 825 } 827 /* 828 * Augment TE label. 829 */ 831 /* Augment label hop of route-object-exclude-always of named-path-constraints */ 832 augment "/te:te/te:globals/te:named-path-constraints/" 833 + "te:named-path-constraint/te:explicit-route-objects/" 834 + "te:route-object-exclude-always/te:type/te:label/" 835 + "te:label-hop/te:te-label/te:technology" { 836 description "OTN label."; 837 case otn { 838 uses otn-types:otn-path-label; 839 } 840 } 842 /* Augment label hop of route-object-include-exclude of named-path-constraints */ 843 augment "/te:te/te:globals/te:named-path-constraints/" 844 + "te:named-path-constraint/te:explicit-route-objects/" 845 + "te:route-object-include-exclude/te:type/te:label/" 846 + "te:label-hop/te:te-label/te:technology" { 847 description "OTN label."; 848 case otn { 849 uses otn-types:otn-path-label; 850 } 851 } 853 /* Augment label hop of route-object-exclude-always of primary path */ 854 augment "/te:te/te:tunnels/te:tunnel/" 855 + "te:p2p-primary-paths/te:p2p-primary-path/" 856 + "te:explicit-route-objects/" 857 + "te:route-object-exclude-always/te:type/te:label/" 858 + "te:label-hop/te:te-label/te:technology" { 859 description "OTN label."; 860 case otn { 861 uses otn-types:otn-path-label; 862 } 863 } 865 /* Augment label hop of route-object-include-exclude of primary path */ 866 augment "/te:te/te:tunnels/te:tunnel/" 867 + "te:p2p-primary-paths/te:p2p-primary-path/" 868 + "te:explicit-route-objects/" 869 + "te:route-object-include-exclude/te:type/te:label/" 870 + "te:label-hop/te:te-label/te:technology" { 871 description "OTN label."; 872 case otn { 873 uses otn-types:otn-path-label; 874 } 875 } 877 /* Augment label hop of route-exclude of primary path */ 878 augment "/te:te/te:tunnels/te:tunnel/" 879 + "te:p2p-primary-paths/te:p2p-primary-path/" 880 + "te:optimizations/te:algorithm/te:metric/" 881 + "te:optimization-metric/te:explicit-route-exclude-objects/" 882 + "te:route-object-exclude-object/te:type/te:label/" 883 + "te:label-hop/te:te-label/te:technology" { 884 description "OTN label."; 885 case otn { 886 uses otn-types:otn-path-label; 887 } 888 } 890 /* Augment label hop of route-include of primary path */ 891 augment "/te:te/te:tunnels/te:tunnel/" 892 + "te:p2p-primary-paths/te:p2p-primary-path/" 893 + "te:optimizations/te:algorithm/te:metric/" 894 + "te:optimization-metric/te:explicit-route-include-objects/" 895 + "te:route-object-include-object/te:type/te:label/" 896 + "te:label-hop/te:te-label/te:technology" { 897 description "OTN label."; 898 case otn { 899 uses otn-types:otn-path-label; 900 } 901 } 903 /* Augment label hop of path-route of primary path */ 904 augment "/te:te/te:tunnels/te:tunnel/" 905 + "te:p2p-primary-paths/te:p2p-primary-path/" 906 + "te:state/te:path-properties/" 907 + "te:path-route-objects/te:path-computed-route-object/" 908 + "te:state/te:type/te:label/" 909 + "te:label-hop/te:te-label/te:technology" { 910 description "OTN label."; 911 case otn { 912 uses otn-types:otn-path-label; 913 } 914 } 916 /* 917 augment "/te:te/te:tunnels/te:tunnel/" 918 + "te:p2p-primary-paths/te:p2p-primary-path/" 919 + "te:state/te:lsps/te:lsp/te:record-route-subobjects/" 920 + "te:record-route-subobject/" 921 + "te:state/te:type/te:label/" 922 + "te:label-hop/te:te-label/te:technology" { 923 description "OTN label."; 924 case otn { 925 uses otn-types:otn-path-label; 926 } 927 } 928 */ 930 /* Augment label hop of path-route of primary LSP */ 931 augment "/te:te/te:tunnels/te:tunnel/" 932 + "te:p2p-primary-paths/te:p2p-primary-path/" 933 + "te:state/te:lsps/te:lsp/te:path-properties/" 934 + "te:path-route-objects/te:path-computed-route-object/" 935 + "te:state/te:type/te:label/" 936 + "te:label-hop/te:te-label/te:technology" { 937 description "OTN label."; 938 case otn { 939 uses otn-types:otn-path-label; 940 } 941 } 943 /* Augment label hop of route-object-exclude-always of reverse primary path */ 944 augment "/te:te/te:tunnels/te:tunnel/" 945 + "te:p2p-primary-paths/te:p2p-primary-path/" 946 + "te:p2p-reverse-primary-path/" 947 + "te:explicit-route-objects/" 948 + "te:route-object-exclude-always/" 949 + "te:type/te:label/" 950 + "te:label-hop/te:te-label/te:technology" { 951 description "OTN label."; 952 case otn { 953 uses otn-types:otn-path-label; 955 } 956 } 958 /* Augment label hop of route-object-include-exclude of reverse primary path */ 959 augment "/te:te/te:tunnels/te:tunnel/" 960 + "te:p2p-primary-paths/te:p2p-primary-path/" 961 + "te:p2p-reverse-primary-path/" 962 + "te:explicit-route-objects/" 963 + "te:route-object-include-exclude/" 964 + "te:type/te:label/" 965 + "te:label-hop/te:te-label/te:technology" { 966 description "OTN label."; 967 case otn { 968 uses otn-types:otn-path-label; 969 } 970 } 972 /* Augment label hop of route-exclude of reverse primary path */ 973 augment "/te:te/te:tunnels/te:tunnel/" 974 + "te:p2p-primary-paths/te:p2p-primary-path/" 975 + "te:p2p-reverse-primary-path/" 976 + "te:optimizations/te:algorithm/te:metric/" 977 + "te:optimization-metric/te:explicit-route-exclude-objects/" 978 + "te:route-object-exclude-object/te:type/te:label/" 979 + "te:label-hop/te:te-label/te:technology" { 980 description "OTN label."; 981 case otn { 982 uses otn-types:otn-path-label; 983 } 984 } 986 /* Augment label hop of route-include of reverse primary path */ 987 augment "/te:te/te:tunnels/te:tunnel/" 988 + "te:p2p-primary-paths/te:p2p-primary-path/" 989 + "te:p2p-reverse-primary-path/" 990 + "te:optimizations/te:algorithm/te:metric/" 991 + "te:optimization-metric/te:explicit-route-include-objects/" 992 + "te:route-object-include-object/te:type/te:label/" 993 + "te:label-hop/te:te-label/te:technology" { 994 description "OTN label."; 995 case otn { 996 uses otn-types:otn-path-label; 997 } 998 } 1000 /* Augment label hop of label hop of path-route of reverse primary path */ 1001 augment "/te:te/te:tunnels/te:tunnel/" 1002 + "te:p2p-primary-paths/te:p2p-primary-path/" 1003 + "te:p2p-reverse-primary-path/" 1004 + "te:state/te:path-properties/" 1005 + "te:path-route-objects/te:path-computed-route-object/" 1006 + "te:state/te:type/te:label/" 1007 + "te:label-hop/te:te-label/te:technology" { 1008 description "OTN label."; 1009 case otn { 1010 uses otn-types:otn-path-label; 1011 } 1012 } 1014 /* 1015 augment "/te:te/te:tunnels/te:tunnel/" 1016 + "te:p2p-primary-paths/te:p2p-primary-path/" 1017 + "te:p2p-reverse-primary-path/" 1018 + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/" 1019 + "te:record-route-subobject/" 1020 + "te:type/te:label/" 1021 + "te:label-hop/te:te-label/te:technology" { 1022 description "OTN label."; 1023 case otn { 1024 uses otn-types:otn-path-label; 1025 } 1026 } 1027 */ 1029 /* Augment label hop of path-route of reverse primary LSP */ 1030 augment "/te:te/te:tunnels/te:tunnel/" 1031 + "te:p2p-primary-paths/te:p2p-primary-path/" 1032 + "te:p2p-reverse-primary-path/" 1033 + "te:state/te:lsps/te:lsp/te:path-properties/" 1034 + "te:path-route-objects/te:path-computed-route-object/" 1035 + "te:state/te:type/te:label/" 1036 + "te:label-hop/te:te-label/te:technology" { 1037 description "OTN label."; 1038 case otn { 1039 uses otn-types:otn-path-label; 1040 } 1041 } 1043 /* Augment label hop of route-object-exclude-always of secondary path */ 1044 augment "/te:te/te:tunnels/te:tunnel/" 1045 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1046 + "te:explicit-route-objects/" 1047 + "te:route-object-exclude-always/te:type/te:label/" 1048 + "te:label-hop/te:te-label/te:technology" { 1049 description "OTN label."; 1050 case otn { 1051 uses otn-types:otn-path-label; 1052 } 1053 } 1055 /* Augment label hop of route-object-include-exclude of secondary path */ 1056 augment "/te:te/te:tunnels/te:tunnel/" 1057 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1058 + "te:explicit-route-objects/" 1059 + "te:route-object-include-exclude/te:type/te:label/" 1060 + "te:label-hop/te:te-label/te:technology" { 1061 description "OTN label."; 1062 case otn { 1063 uses otn-types:otn-path-label; 1064 } 1065 } 1067 /* Augment label hop of route-exclude of secondary path */ 1068 augment "/te:te/te:tunnels/te:tunnel/" 1069 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1070 + "te:optimizations/te:algorithm/te:metric/" 1071 + "te:optimization-metric/te:explicit-route-exclude-objects/" 1072 + "te:route-object-exclude-object/te:type/te:label/" 1073 + "te:label-hop/te:te-label/te:technology" { 1074 description "OTN label."; 1075 case otn { 1076 uses otn-types:otn-path-label; 1077 } 1078 } 1080 /* Augment label hop of route-include of secondary path */ 1081 augment "/te:te/te:tunnels/te:tunnel/" 1082 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1083 + "te:optimizations/te:algorithm/te:metric/" 1084 + "te:optimization-metric/te:explicit-route-include-objects/" 1085 + "te:route-object-include-object/te:type/te:label/" 1086 + "te:label-hop/te:te-label/te:technology" { 1087 description "OTN label."; 1088 case otn { 1089 uses otn-types:otn-path-label; 1090 } 1091 } 1093 /* Augment label hop of label hop of path-route of secondary path */ 1094 augment "/te:te/te:tunnels/te:tunnel/" 1095 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1096 + "te:state/te:path-properties/te:path-route-objects/" 1097 + "te:path-computed-route-object/te:state/te:type/te:label/" 1098 + "te:label-hop/te:te-label/te:technology" { 1100 description "OTN label."; 1101 case otn { 1102 uses otn-types:otn-path-label; 1103 } 1104 } 1106 /* 1107 augment "/te:te/te:tunnels/te:tunnel/" 1108 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1109 + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/" 1110 + "te:record-route-subobject/" 1111 + "te:type/te:label/" 1112 + "te:label-hop/te:te-label/te:technology" { 1113 description "OTN label."; 1114 case otn { 1115 uses otn-types:otn-path-label; 1116 } 1117 } 1118 */ 1120 /* Augment label hop of path-route of secondary LSP */ 1121 augment "/te:te/te:tunnels/te:tunnel/" 1122 + "te:p2p-secondary-paths/te:p2p-secondary-path/" 1123 + "te:state/te:lsps/te:lsp/te:path-properties/" 1124 + "te:path-route-objects/" 1125 + "te:path-computed-route-object/te:state/te:type/te:label/" 1126 + "te:label-hop/te:te-label/te:technology" { 1127 description "OTN label."; 1128 case otn { 1129 uses otn-types:otn-path-label; 1130 } 1131 } 1133 /* 1134 augment "/te:te/te:lsp-state/" 1135 + "te:lsp-record-route-subobjects/te:lsp-record-route-subobject/" 1136 + "te:record-route-subobject/" 1137 + "te:type/te:label/te:label-hop/te:te-label/te:technology" { 1138 description "OTN label."; 1139 case otn { 1140 uses otn-types:otn-path-label; 1141 } 1142 } 1143 */ 1145 grouping p2p-path-ero { 1146 description 1147 "TE tunnel ERO configuration grouping"; 1149 leaf te-default-metric { 1150 type uint32; 1151 description 1152 "Traffic engineering metric."; 1153 } 1154 leaf te-delay-metric { 1155 type uint32; 1156 description 1157 "Traffic engineering delay metric."; 1158 } 1159 leaf te-hop-metric { 1160 type uint32; 1161 description 1162 "Traffic engineering hop metric."; 1163 } 1164 container explicit-route-objects { 1165 description "Explicit route objects container"; 1166 list explicit-route-object { 1167 key "index"; 1168 description 1169 "List of explicit route objects"; 1170 leaf explicit-route-usage { 1171 type identityref { 1172 base te-types:route-usage-type; 1173 } 1174 description "An explicit-route hop action."; 1175 } 1176 uses te-types:explicit-route-hop { 1177 augment "type/label/label-hop/te-label/technology" { 1178 description "OTN label."; 1179 case otn { 1180 uses otn-types:otn-path-label; 1181 } 1182 } 1183 } 1184 } 1185 } 1186 } 1188 rpc otn-te-tunnel-path-compute { 1189 description "OTN TE tunnel path computation"; 1190 input { 1191 list request { 1192 key "id"; 1193 description "A list of path computation requests."; 1194 leaf id { 1195 type uint8; 1196 description 1197 "Request ID."; 1198 } 1199 leaf type { 1200 type identityref { 1201 base te-types:tunnel-type; 1202 } 1203 description "TE tunnel type."; 1204 } 1205 leaf source { 1206 type inet:ip-address; 1207 description 1208 "TE tunnel source address."; 1209 } 1210 leaf destination { 1211 type inet:ip-address; 1212 description 1213 "TE tunnel destination address"; 1214 } 1215 leaf src-tp-id { 1216 type binary; 1217 description 1218 "TE tunnel source termination point identifier."; 1219 } 1220 leaf dst-tp-id { 1221 type binary; 1222 description 1223 "TE tunnel destination termination point identifier."; 1224 } 1225 leaf switching-layer { 1226 type identityref { 1227 base te-types:switching-capabilities; 1228 } 1229 description 1230 "Switching layer where the requests are computed."; 1231 } 1232 leaf encoding { 1233 type identityref { 1234 base te-types:lsp-encoding-types; 1235 } 1236 description "LSP encoding type"; 1237 } 1238 leaf protection-type { 1239 type identityref { 1240 base te-types:lsp-protection-type; 1241 } 1242 description "LSP protection type"; 1243 } 1244 leaf restoration-type { 1245 type identityref { 1246 base te-types:lsp-restoration-type; 1247 } 1248 description "LSP restoration type"; 1249 } 1250 leaf provider-id { 1251 type te-types:te-global-id; 1252 description 1253 "An identifier to uniquely identify a provider."; 1254 } 1255 leaf client-id { 1256 type te-types:te-global-id; 1257 description 1258 "An identifier to uniquely identify a client."; 1259 } 1260 leaf te-topology-id { 1261 type te-types:te-topology-id; 1262 description 1263 "It is presumed that a datastore will contain many 1264 topologies. To distinguish between topologies it is 1265 vital to have UNIQUE topology identifiers."; 1266 } 1267 leaf setup-priority { 1268 type uint8 { 1269 range "0..7"; 1270 } 1271 description 1272 "TE LSP setup priority"; 1273 } 1274 leaf hold-priority { 1275 type uint8 { 1276 range "0..7"; 1277 } 1278 description 1279 "TE LSP hold priority"; 1280 } 1281 leaf te-path-metric-type { 1282 type identityref { 1283 base te-types:path-metric-type; 1284 } 1285 default te-types:path-metric-te; 1286 description 1287 "The tunnel path metric type."; 1288 } 1289 leaf odu-type { 1290 type identityref{ 1291 base otn-types:tributary-protocol-type; 1292 } 1293 description "Type of ODU"; 1294 } 1295 container p2p-primary-paths { 1296 description "Set of P2P primary paths container"; 1297 list p2p-primary-path { 1298 key "name"; 1299 description 1300 "List of primary paths for this tunnel."; 1301 leaf name { 1302 type string; 1303 description "TE path name"; 1304 } 1305 uses p2p-path-ero; 1306 } 1307 } 1308 container p2p-secondary-paths { 1309 description "Set of P2P secondary paths container"; 1310 list p2p-secondary-path { 1311 key "name"; 1312 description 1313 "List of secondary paths for this tunnel."; 1314 leaf name { 1315 type string; 1316 description "TE path name"; 1317 } 1318 uses p2p-path-ero; 1319 } 1320 } 1321 uses otn-tunnel-endpoint; 1322 } 1323 } 1324 output { 1325 leaf return-code { 1326 type enumeration { 1327 enum success { 1328 description "success"; 1329 } 1330 enum aborted { 1331 description "aborted"; 1332 } 1333 enum destination-not-found { 1334 description "destination-not-found"; 1335 } 1336 enum invalid-argument { 1337 description "invalid-argument"; 1338 } 1339 enum no-memory { 1340 description "no-memory"; 1341 } 1342 enum no-path-found { 1343 description "no-path-found"; 1344 } 1345 enum other-error { 1346 description "other-error"; 1347 } 1348 enum some-path-not-found { 1349 description "some-path-not-found"; 1350 } 1351 enum source-not-found { 1352 description "source-not-found"; 1353 } 1354 enum topology-error { 1355 description "topology-error"; 1356 } 1357 } 1358 description 1359 "Return code"; 1360 } 1361 list result { 1362 key "id"; 1363 description 1364 "A list of results for all requests."; 1366 leaf id { 1367 type uint8; 1368 description 1369 "Request ID"; 1370 } 1371 container p2p-primary-paths { 1372 description "Set of P2P primary paths container"; 1373 list p2p-primary-path { 1374 key "name"; 1375 description 1376 "List of resultant primary paths for this tunnel."; 1377 leaf name { 1378 type string; 1379 description "TE path name"; 1380 } 1381 uses p2p-path-ero; 1382 } 1383 } 1384 container p2p-secondary-paths { 1385 description "Set of P2P secondary paths container"; 1386 list p2p-secondary-path { 1387 key "name"; 1388 description 1389 "List of resultant secondary paths for this tunnel."; 1390 leaf name { 1391 type string; 1392 description "TE path name"; 1393 } 1394 uses p2p-path-ero; 1395 } 1396 } 1397 } 1398 } 1399 } 1400 } 1402 1404 6. OTN Types YANG Code 1406 file "ietf-otn-types@2018-06-07.yang" 1408 module ietf-otn-types { 1409 namespace "urn:ietf:params:xml:ns:yang:ietf-otn-types"; 1410 prefix "otn-types"; 1412 organization 1413 "IETF CCAMP Working Group"; 1414 contact 1415 "WG Web: 1416 WG List: 1418 Editor: Haomian Zheng 1419 1421 Editor: Aihua Guo 1422 1424 Editor: Italo Busi 1425 1427 Editor: Anurag Sharma 1428 1430 Editor: Rajan Rao 1431 1433 Editor: Sergio Belotti 1434 1436 Editor: Victor Lopez 1437 1439 Editor: Yunbo Li 1440 1442 Editor: Yunbin Xu 1443 "; 1445 description 1446 "This module defines OTN types."; 1448 revision "2018-06-07" { 1449 description 1450 "Revision 0.5"; 1451 reference 1452 "draft-ietf-ccamp-otn-tunnel-model-02"; 1453 } 1455 identity tributary-slot-granularity { 1456 description 1457 "Tributary slot granularity"; 1458 reference 1459 "G.709/Y.1331, February 2016: Interfaces for the Optical 1460 Transport Network (OTN)"; 1461 } 1463 identity tsg-1.25G { 1464 base tributary-slot-granularity; 1465 description 1466 "1.25G tributary slot granularity"; 1467 } 1469 identity tsg-2.5G { 1470 base tributary-slot-granularity; 1471 description 1472 "2.5G tributary slot granularity"; 1473 } 1474 /* 1475 identity tsg-1.25Gand2.5G { 1476 base tributary-slot-granularity; 1477 description 1478 "Both 1.25G and 2.5G tributary slot granularity"; 1479 } 1480 */ 1481 identity tributary-protocol-type { 1482 description 1483 "Base identity for protocol framing used by tributary signals"; 1484 } 1486 identity prot-OTU1 { 1487 base tributary-protocol-type; 1488 description 1489 "OTU1 protocol (2.66G)"; 1490 } 1491 /* 1492 identity prot-OTU1e { 1493 base tributary-protocol-type; 1494 description 1495 "OTU1e type (11.04G)"; 1496 } 1498 identity prot-OTU1f { 1499 base tributary-protocol-type; 1500 description 1501 "OTU1f type (11.27G)"; 1502 } 1503 */ 1504 identity prot-OTU2 { 1505 base tributary-protocol-type; 1506 description 1507 "OTU2 type (10.70G)"; 1508 } 1510 identity prot-OTU2e { 1511 base tributary-protocol-type; 1512 description 1513 "OTU2e type (11.09G)"; 1514 } 1515 /* 1516 identity prot-OTU2f { 1517 base tributary-protocol-type; 1518 description 1519 "OTU2f type (11.31G)"; 1520 } 1521 */ 1522 identity prot-OTU3 { 1523 base tributary-protocol-type; 1524 description 1525 "OTU3 type (43.01G)"; 1527 } 1528 /* 1529 identity prot-OTU3e1 { 1530 base tributary-protocol-type; 1531 description 1532 "OTU3e1 type (44.57G)"; 1533 } 1535 identity prot-OTU3e2 { 1536 base tributary-protocol-type; 1537 description 1538 "OTU3e2 type (44.58G)"; 1539 } 1540 */ 1541 identity prot-OTU4 { 1542 base tributary-protocol-type; 1543 description 1544 "OTU4 type (111.80G)"; 1545 } 1547 identity prot-OTUCn { 1548 base tributary-protocol-type; 1549 description 1550 "OTUCn type (beyond 100G)"; 1551 } 1553 identity prot-ODU0 { 1554 base tributary-protocol-type; 1555 description 1556 "ODU0 protocol (1.24G)"; 1557 } 1559 identity prot-ODU1 { 1560 base tributary-protocol-type; 1561 description 1562 "ODU1 protocol (2.49G)"; 1563 } 1564 /* 1565 identity prot-ODU1e { 1566 base tributary-protocol-type; 1567 description 1568 "ODU1e protocol (10.35G)."; 1569 } 1571 identity prot-ODU1f { 1572 base tributary-protocol-type; 1573 description 1574 "ODU1f protocol (10.56G)."; 1576 } 1577 */ 1578 identity prot-ODU2 { 1579 base tributary-protocol-type; 1580 description 1581 "ODU2 protocol (10.03G)"; 1582 } 1584 identity prot-ODU2e { 1585 base tributary-protocol-type; 1586 description 1587 "ODU2e protocol (10.39G)"; 1588 } 1589 /* 1590 identity prot-ODU2f { 1591 base tributary-protocol-type; 1592 description 1593 "ODU2f protocol (10.60G)."; 1594 } 1595 */ 1596 identity prot-ODU3 { 1597 base tributary-protocol-type; 1598 description 1599 "ODU3 protocol (40.31G)"; 1600 } 1601 /* 1602 identity prot-ODU3e1 { 1603 base tributary-protocol-type; 1604 description 1605 "ODU3e1 protocol (41.77G)."; 1606 } 1608 identity prot-ODU3e2 { 1609 base tributary-protocol-type; 1610 description 1611 "ODU3e2 protocol (41.78G)."; 1612 } 1613 */ 1614 identity prot-ODU4 { 1615 base tributary-protocol-type; 1616 description 1617 "ODU4 protocol (104.79G)"; 1618 } 1620 identity prot-ODUFlex-cbr { 1621 base tributary-protocol-type; 1622 description 1623 "ODU Flex CBR protocol for transporting constant bit rate 1624 signal"; 1625 } 1627 identity prot-ODUFlex-gfp { 1628 base tributary-protocol-type; 1629 description 1630 "ODU Flex GFP protocol for transporting stream of packets 1631 using Generic Framing Procedure"; 1632 } 1634 identity prot-ODUCn { 1635 base tributary-protocol-type; 1636 description 1637 "ODUCn protocol (beyond 100G)"; 1638 } 1640 identity prot-1GbE { 1641 base tributary-protocol-type; 1642 description 1643 "1G Ethernet protocol"; 1644 } 1645 identity prot-10GbE-LAN { 1646 base tributary-protocol-type; 1647 description 1648 "10G Ethernet LAN protocol"; 1649 } 1651 identity prot-40GbE { 1652 base tributary-protocol-type; 1653 description 1654 "40G Ethernet protocol"; 1655 } 1657 identity prot-100GbE { 1658 base tributary-protocol-type; 1659 description 1660 "100G Ethernet protocol"; 1661 } 1663 identity client-signal { 1664 description 1665 "Base identity from which specific client signals for the 1666 tunnel are derived"; 1667 } 1669 identity client-signal-1GbE { 1670 base client-signal; 1671 description 1672 "Client signal type of 1GbE"; 1673 } 1675 identity client-signal-10GbE-LAN { 1676 base client-signal; 1677 description 1678 "Client signal type of 10GbE LAN"; 1679 } 1681 identity client-signal-10GbE-WAN { 1682 base client-signal; 1683 description 1684 "Client signal type of 10GbE WAN"; 1685 } 1687 identity client-signal-40GbE { 1688 base client-signal; 1689 description 1690 "Client signal type of 40GbE"; 1691 } 1693 identity client-signal-100GbE { 1694 base client-signal; 1695 description 1696 "Client signal type of 100GbE"; 1697 } 1699 identity client-signal-OC3_STM1 { 1700 base client-signal; 1701 description 1702 "Client signal type of OC3 & STM1"; 1703 } 1705 identity client-signal-OC12_STM4 { 1706 base client-signal; 1707 description 1708 "Client signal type of OC12 & STM4"; 1709 } 1711 identity client-signal-OC48_STM16 { 1712 base client-signal; 1713 description 1714 "Client signal type of OC48 & STM16"; 1715 } 1717 identity client-signal-OC192_STM64 { 1718 base client-signal; 1719 description 1720 "Client signal type of OC192 & STM64"; 1721 } 1723 identity client-signal-OC768_STM256 { 1724 base client-signal; 1725 description 1726 "Client signal type of OC768 & STM256"; 1727 } 1729 identity client-signal-ODU0 { 1730 base client-signal; 1731 description 1732 "Client signal type of ODU0 (1.24G)"; 1733 } 1735 identity client-signal-ODU1 { 1736 base client-signal; 1737 description 1738 "ODU1 protocol (2.49G)"; 1739 } 1741 identity client-signal-ODU2 { 1742 base client-signal; 1743 description 1744 "Client signal type of ODU2 (10.03G)"; 1745 } 1747 identity client-signal-ODU2e { 1748 base client-signal; 1749 description 1750 "Client signal type of ODU2e (10.39G)"; 1751 } 1753 identity client-signal-ODU3 { 1754 base client-signal; 1755 description 1756 "Client signal type of ODU3 (40.31G)"; 1757 } 1758 /* 1759 identity client-signal-ODU3e2 { 1760 base client-signal; 1761 description 1762 "Client signal type of ODU3e2 (41.78G)"; 1763 } 1764 */ 1765 identity client-signal-ODU4 { 1766 base client-signal; 1767 description 1768 "Client signal type of ODU4 (104.79G)"; 1769 } 1771 identity client-signal-ODUflex-cbr { 1772 base client-signal; 1773 description 1774 "Client signal type of ODU Flex CBR"; 1775 } 1777 identity client-signal-ODUflex-gfp { 1778 base client-signal; 1779 description 1780 "Client signal type of ODU Flex GFP"; 1781 } 1783 identity client-signal-ODUCn { 1784 base client-signal; 1785 description 1786 "Client signal type of ODUCn (beyond 100G)"; 1787 } 1789 identity client-signal-FC400 { 1790 base client-signal; 1791 description 1792 "Client signal type of Fibre Channel FC400"; 1793 } 1795 identity client-signal-FC800 { 1796 base client-signal; 1797 description 1798 "Client signal type of Fibre Channel FC800"; 1799 } 1801 identity client-signal-FICON-4G { 1802 base client-signal; 1803 description 1804 "Client signal type of Fibre Connection 4G"; 1805 } 1807 identity client-signal-FICON-8G { 1808 base client-signal; 1809 description 1810 "Client signal type of Fibre Connection 8G"; 1811 } 1813 identity client-signal-OTU1 { 1814 base client-signal; 1815 description 1816 "Client signal type of OTU1"; 1817 } 1819 identity client-signal-OTU2 { 1820 base client-signal; 1821 description 1822 "Client signal type of OTU2"; 1823 } 1825 identity client-signal-OTU2e { 1826 base client-signal; 1827 description 1828 "Client signal type of OTU2e"; 1829 } 1831 identity client-signal-OTU3 { 1832 base client-signal; 1833 description 1834 "Client signal type of OTU3"; 1835 } 1837 identity client-signal-OTU4 { 1838 base client-signal; 1839 description 1840 "Client signal type of OTU4"; 1841 } 1843 identity otn-label-range-type { 1844 description 1845 "Base identity from which specific OTN label 1846 range types derived"; 1847 } 1849 identity label-range-trib-slot { 1850 base otn-label-range-type; 1851 description 1852 "Defines a range of OTN tributary slots"; 1853 } 1855 identity label-range-trib-port { 1856 base otn-label-range-type; 1857 description 1858 "Defines a range of OTN tributary ports"; 1859 } 1861 grouping otn-link-bandwidth { 1862 list odulist { 1863 key "odu-type"; 1864 description 1865 "OTN bandwidth definition"; 1866 leaf odu-type { 1867 type identityref { 1868 base otn-types:tributary-protocol-type; 1869 } 1870 description "ODU type"; 1871 } 1872 leaf number { 1873 type uint16; 1874 description "Number of ODUs"; 1875 } 1876 } 1877 } 1879 grouping otn-path-bandwidth { 1880 leaf odu-type { 1881 type identityref { 1882 base otn-types:tributary-protocol-type; 1883 } 1884 description "ODU type"; 1885 } 1886 } 1888 grouping otn-label-restriction { 1889 leaf range-type { 1890 type identityref { 1891 base otn-types:otn-label-range-type; 1892 } 1893 } 1894 leaf tsg { 1895 type identityref { 1896 base otn-types:tributary-slot-granularity; 1897 } 1898 description "Tributary slot granularity."; 1899 reference 1900 "G.709/Y.1331, February 2016: Interfaces for the 1901 Optical Transport Network (OTN)"; 1902 } 1903 leaf priority { 1904 type uint8; 1905 description "priority."; 1906 } 1907 } 1909 grouping otn-link-label { 1910 choice otn-label-type { 1911 description 1912 "OTN label type"; 1913 case tributary-port { 1914 leaf tpn { 1915 type uint16 { 1916 range "1..4095"; 1917 } 1918 description 1919 "Tributary Port Number. Applicable in case of mux services."; 1920 reference 1921 "RFC7139: GMPLS Signaling Extensions for Control of Evolving 1922 G.709 Optical Transport Networks."; 1923 } 1924 } 1925 case tributary-slot { 1926 leaf ts { 1927 type uint16 { 1928 range "1..4095"; 1929 } 1930 description 1931 "Tributary Slot Number. Applicable in case of mux services."; 1932 reference 1933 "RFC7139: GMPLS Signaling Extensions for Control of Evolving 1934 G.709 Optical Transport Networks."; 1935 } 1936 } 1937 } 1938 } 1940 grouping otn-path-label { 1941 leaf tpn { 1942 type uint16 { 1943 range "1..4095"; 1944 } 1945 description 1946 "Tributary Port Number. Applicable in case of mux services."; 1947 reference 1948 "RFC7139: GMPLS Signaling Extensions for Control of Evolving 1949 G.709 Optical Transport Networks."; 1950 } 1951 leaf tsg { 1952 type identityref { 1953 base otn-types:tributary-slot-granularity; 1954 } 1955 description "Tributary slot granularity."; 1956 reference 1957 "G.709/Y.1331, February 2016: Interfaces for the 1958 Optical Transport Network (OTN)"; 1960 } 1961 leaf ts-list { 1962 type string { 1963 pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" 1964 + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)"; 1965 } 1966 description 1967 "A list of available tributary slots ranging 1968 between 1 and 9999. 1969 For example 1-20,25,50-1000"; 1970 reference "RFC 7139: GMPLS Signaling Extensions for Control 1971 of Evolving G.709 Optical Transport Networks"; 1972 } 1973 } 1974 } 1976 1978 7. Security Considerations 1980 TBD. 1982 8. IANA Considerations 1984 TBD. 1986 9. Acknowledgements 1988 TBD. 1990 10. Contributors 1992 Dieter Beller 1993 Nokia 1994 Email: dieter.beller@nokia.com 1996 Yanlei Zheng 1997 China Unicom 1998 Email: zhengyl@dimpt.com 2000 Xian Zhang 2001 Huawei Technologies 2002 Email: zhang.xian@huawei.com 2004 Lei Wang 2005 China Mobile 2006 Email: wangleiyj@chinamobile.com 2008 Oscar Gonzalez de Dios 2009 Telefonica 2010 Email: oscar.gonzalezdedios@telefonica.com 2012 11. References 2014 11.1. Normative References 2016 [I-D.ietf-ccamp-otn-topo-yang] 2017 zhenghaomian@huawei.com, z., Guo, A., Busi, I., Sharma, 2018 A., Liu, X., Belotti, S., Xu, Y., Wang, L., and O. Dios, 2019 "A YANG Data Model for Optical Transport Network 2020 Topology", draft-ietf-ccamp-otn-topo-yang-03 (work in 2021 progress), June 2018. 2023 [I-D.ietf-ccamp-transport-nbi-app-statement] 2024 Busi, I., King, D., zhenghaomian@huawei.com, z., and Y. 2025 Xu, "Transport Northbound Interface Applicability 2026 Statement", draft-ietf-ccamp-transport-nbi-app- 2027 statement-01 (work in progress), March 2018. 2029 [I-D.ietf-teas-yang-te] 2030 Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and 2031 I. Bryskin, "A YANG Data Model for Traffic Engineering 2032 Tunnels and Interfaces", draft-ietf-teas-yang-te-15 (work 2033 in progress), June 2018. 2035 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 2036 and A. Bierman, Ed., "Network Configuration Protocol 2037 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 2038 . 2040 [RFC7139] Zhang, F., Ed., Zhang, G., Belotti, S., Ceccarelli, D., 2041 and K. Pithewan, "GMPLS Signaling Extensions for Control 2042 of Evolving G.709 Optical Transport Networks", RFC 7139, 2043 DOI 10.17487/RFC7139, March 2014, 2044 . 2046 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 2047 RFC 7950, DOI 10.17487/RFC7950, August 2016, 2048 . 2050 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 2051 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 2052 . 2054 11.2. Informative References 2056 [I-D.ietf-netmod-yang-tree-diagrams] 2057 Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft- 2058 ietf-netmod-yang-tree-diagrams-06 (work in progress), 2059 February 2018. 2061 [I-D.ietf-teas-actn-yang] 2062 Lee, Y., zhenghaomian@huawei.com, z., Ceccarelli, D., 2063 Yoon, B., and S. Belotti, "Applicability of YANG models 2064 for Abstraction and Control of Traffic Engineered 2065 Networks", draft-ietf-teas-actn-yang-01 (work in 2066 progress), February 2018. 2068 [RFC7062] Zhang, F., Ed., Li, D., Li, H., Belotti, S., and D. 2069 Ceccarelli, "Framework for GMPLS and PCE Control of G.709 2070 Optical Transport Networks", RFC 7062, 2071 DOI 10.17487/RFC7062, November 2013, 2072 . 2074 [RFC7138] Ceccarelli, D., Ed., Zhang, F., Belotti, S., Rao, R., and 2075 J. Drake, "Traffic Engineering Extensions to OSPF for 2076 GMPLS Control of Evolving G.709 Optical Transport 2077 Networks", RFC 7138, DOI 10.17487/RFC7138, March 2014, 2078 . 2080 Authors' Addresses 2082 Haomian Zheng 2083 Huawei Technologies 2084 F3 R&D Center, Huawei Industrial Base, Bantian, Longgang District 2085 Shenzhen, Guangdong 518129 2086 P.R.China 2088 Email: zhenghaomian@huawei.com 2090 Aihua Guo 2091 Huawei Technologies 2092 12007 Sunrise Valley Drive, Suite 325 2093 Reston, VA 20171 2094 U.S.A 2096 Email: aihuaguo@huawei.com 2097 Italo Busi 2098 Huawei Technologies 2099 HUAWEI TECHNOLOGIES ITALIA Srl Centro Direzionale Milano 2 2100 Milan, Milan 20090 2101 Italy 2103 Email: Italo.Busi@huawei.com 2105 Anurag Sharma 2106 Google 2107 1600 Amphitheatre Parkway 2108 Mountain View, CA 94043 2109 USA 2111 Email: ansha@google.com 2113 Rajan Rao 2114 Infinera 2115 169 Java Drive 2116 Sunnyvale, CA 94089 2117 USA 2119 Email: rrao@infinera.com 2121 Sergio Belotti 2122 Nokia 2124 Email: sergio.belotti@nokia.com 2126 Victor Lopez 2127 Telefonica 2129 Email: victor.lopezalvarez@telefonica.com 2131 Yunbo Li 2132 China Mobile 2134 Email: liyunbo@chinamobile.com 2135 Yunbin Xu 2136 CAICT 2138 Email: xuyunbin@ritt.cn