1 module ietf-otn-tunnel {
\r
4 namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel";
\r
11 import ietf-otn-types {
\r
15 import ietf-te-types {
\r
19 import ietf-inet-types {
\r
24 "IETF CCAMP Working Group";
\r
26 "WG Web: <http://tools.ietf.org/wg/ccamp/>
\r
27 WG List: <mailto:ccamp@ietf.org>
\r
29 Editor: Haomian Zheng
\r
30 <mailto:zhenghaomian@huawei.com>
\r
33 <mailto:aihuaguo@huawei.com>
\r
36 <mailto:italo.busi@huawei.com>
\r
38 Editor: Anurag Sharma
\r
39 <mailto:ansha@google.com>
\r
42 <mailto:rrao@infinera.com>
\r
44 Editor: Sergio Belotti
\r
45 <mailto:sergio.belotti@nokia.com>
\r
47 Editor: Victor Lopez
\r
48 <mailto:victor.lopezalvarez@telefonica.com>
\r
51 <mailto:liyunbo@chinamobile.com>
\r
54 <mailto:xuyunbin@ritt.cn>";
\r
57 "This module defines a model for OTN Tunnel Services.";
\r
59 revision "2018-06-07" {
\r
63 "draft-ietf-ccamp-otn-tunnel-model-02";
\r
70 grouping otn-tunnel-endpoint {
\r
71 description "Parameters for OTN tunnel";
\r
73 leaf payload-treatment {
\r
76 description "Client signal is switched to another tunnel
\r
80 description "Client signal is transparently transmitted
\r
86 "Treatment of the incoming payload. Payload can be switched
\r
90 leaf src-client-signal {
\r
92 base otn-types:client-signal;
\r
95 "Client signal at the source endpoint of the tunnel";
\r
103 "Tributary Port Number. Applicable in case of mux services";
\r
105 "RFC7139: GMPLS Signaling Extensions for Control of Evolving
\r
106 G.709 Optical Transport Networks";
\r
111 base otn-types:tributary-slot-granularity;
\r
114 "Tributary slot granularity.
\r
115 Applicable in case of mux services";
\r
117 "G.709/Y.1331, February 2016: Interfaces for the
\r
118 Optical Transport Network (OTN)";
\r
121 leaf src-tributary-slot-count {
\r
124 "Number of tributary slots used at the source.";
\r
127 container src-tributary-slots {
\r
129 "A list of tributary slots used by the client service.
\r
130 Applicable in case of mux services";
\r
134 "Tributary tributary slot value";
\r
136 "G.709/Y.1331, February 2016: Interfaces for the
\r
137 Optical Transport Network (OTN)";
\r
141 leaf dst-client-signal {
\r
143 base otn-types:client-signal;
\r
146 "Client signal at the destination endpoint of the tunnel";
\r
154 "Tributary Port Number. Applicable in case of mux services";
\r
156 "RFC7139: GMPLS Signaling Extensions for Control of Evolving
\r
157 G.709 Optical Transport Networks.";
\r
162 base otn-types:tributary-slot-granularity;
\r
165 "Tributary slot granularity.
\r
166 Applicable in case of mux services";
\r
168 "G.709/Y.1331, February 2016: Interfaces for the
\r
169 Optical Transport Network (OTN)";
\r
172 leaf dst-tributary-slot-count {
\r
175 "Number of tributary slots used at the destination.";
\r
178 container dst-tributary-slots {
\r
180 "A list of tributary slots used by the client service.
\r
181 Applicable in case of mux services";
\r
185 "Tributary slot value";
\r
187 "G.709/Y.1331, February 2016: Interfaces for the
\r
188 Optical Transport Network (OTN)";
\r
194 Note: Comment has been given to authors of TE Tunnel model to add
\r
195 list of endpoints under config to support P2MP tunnel.
\r
202 augment "/te:te/te:tunnels/te:tunnel" {
\r
204 "Augment with additional parameters required for OTN service";
\r
205 uses otn-tunnel-endpoint;
\r
209 * Augment TE bandwidth
\r
212 /* Augment bandwidth of named-path-constraints */
\r
213 augment "/te:te/te:globals/te:named-path-constraints/"
\r
214 + "te:named-path-constraint/"
\r
215 + "te:te-bandwidth/te:technology" {
\r
216 description "OTN bandwidth.";
\r
218 uses otn-types:otn-path-bandwidth;
\r
222 /* Augment bandwdith of tunnel */
\r
223 augment "/te:te/te:tunnels/te:tunnel/"
\r
224 + "te:te-bandwidth/te:technology" {
\r
225 description "OTN bandwidth.";
\r
227 uses otn-types:otn-path-bandwidth;
\r
231 /* Augment bandwidth of primary path */
\r
232 augment "/te:te/te:tunnels/te:tunnel/"
\r
233 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
234 + "te:te-bandwidth/te:technology" {
\r
235 description "OTN bandwidth.";
\r
237 uses otn-types:otn-path-bandwidth;
\r
241 /* Augment bandwidth of reverse primary path */
\r
242 augment "/te:te/te:tunnels/te:tunnel/"
\r
243 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
244 + "te:p2p-reverse-primary-path/"
\r
245 + "te:te-bandwidth/te:technology" {
\r
246 description "OTN bandwidth.";
\r
248 uses otn-types:otn-path-bandwidth;
\r
252 /* Augment bandwidht of secondary path */
\r
253 augment "/te:te/te:tunnels/te:tunnel/"
\r
254 + "te:p2p-secondary-paths/te:p2p-secondary-path/"
\r
255 + "te:te-bandwidth/te:technology" {
\r
256 description "OTN bandwidth.";
\r
258 uses otn-types:otn-path-bandwidth;
\r
263 * Augment TE label.
\r
266 /* Augment label hop of route-object-exclude-always of named-path-constraints */
\r
267 augment "/te:te/te:globals/te:named-path-constraints/"
\r
268 + "te:named-path-constraint/te:explicit-route-objects/"
\r
269 + "te:route-object-exclude-always/te:type/te:label/"
\r
270 + "te:label-hop/te:te-label/te:technology" {
\r
271 description "OTN label.";
\r
273 uses otn-types:otn-path-label;
\r
277 /* Augment label hop of route-object-include-exclude of named-path-constraints */
\r
278 augment "/te:te/te:globals/te:named-path-constraints/"
\r
279 + "te:named-path-constraint/te:explicit-route-objects/"
\r
280 + "te:route-object-include-exclude/te:type/te:label/"
\r
281 + "te:label-hop/te:te-label/te:technology" {
\r
282 description "OTN label.";
\r
284 uses otn-types:otn-path-label;
\r
289 /* Augment label hop of route-object-exclude-always of primary path */
\r
290 augment "/te:te/te:tunnels/te:tunnel/"
\r
291 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
292 + "te:explicit-route-objects/"
\r
293 + "te:route-object-exclude-always/te:type/te:label/"
\r
294 + "te:label-hop/te:te-label/te:technology" {
\r
295 description "OTN label.";
\r
297 uses otn-types:otn-path-label;
\r
301 /* Augment label hop of route-object-include-exclude of primary path */
\r
302 augment "/te:te/te:tunnels/te:tunnel/"
\r
303 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
304 + "te:explicit-route-objects/"
\r
305 + "te:route-object-include-exclude/te:type/te:label/"
\r
306 + "te:label-hop/te:te-label/te:technology" {
\r
307 description "OTN label.";
\r
309 uses otn-types:otn-path-label;
\r
313 /* Augment label hop of route-exclude of primary path */
\r
314 augment "/te:te/te:tunnels/te:tunnel/"
\r
315 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
316 + "te:optimizations/te:algorithm/te:metric/"
\r
317 + "te:optimization-metric/te:explicit-route-exclude-objects/"
\r
318 + "te:route-object-exclude-object/te:type/te:label/"
\r
319 + "te:label-hop/te:te-label/te:technology" {
\r
320 description "OTN label.";
\r
322 uses otn-types:otn-path-label;
\r
326 /* Augment label hop of route-include of primary path */
\r
327 augment "/te:te/te:tunnels/te:tunnel/"
\r
328 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
329 + "te:optimizations/te:algorithm/te:metric/"
\r
330 + "te:optimization-metric/te:explicit-route-include-objects/"
\r
331 + "te:route-object-include-object/te:type/te:label/"
\r
332 + "te:label-hop/te:te-label/te:technology" {
\r
333 description "OTN label.";
\r
335 uses otn-types:otn-path-label;
\r
339 /* Augment label hop of path-route of primary path */
\r
340 augment "/te:te/te:tunnels/te:tunnel/"
\r
341 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
342 + "te:state/te:path-properties/"
\r
343 + "te:path-route-objects/te:path-computed-route-object/"
\r
344 + "te:state/te:type/te:label/"
\r
345 + "te:label-hop/te:te-label/te:technology" {
\r
346 description "OTN label.";
\r
348 uses otn-types:otn-path-label;
\r
353 augment "/te:te/te:tunnels/te:tunnel/"
\r
354 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
355 + "te:state/te:lsps/te:lsp/te:record-route-subobjects/"
\r
356 + "te:record-route-subobject/"
\r
357 + "te:state/te:type/te:label/"
\r
358 + "te:label-hop/te:te-label/te:technology" {
\r
359 description "OTN label.";
\r
361 uses otn-types:otn-path-label;
\r
366 /* Augment label hop of path-route of primary LSP */
\r
367 augment "/te:te/te:tunnels/te:tunnel/"
\r
368 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
369 + "te:state/te:lsps/te:lsp/te:path-properties/"
\r
370 + "te:path-route-objects/te:path-computed-route-object/"
\r
371 + "te:state/te:type/te:label/"
\r
372 + "te:label-hop/te:te-label/te:technology" {
\r
373 description "OTN label.";
\r
375 uses otn-types:otn-path-label;
\r
379 /* Augment label hop of route-object-exclude-always of reverse primary path */
\r
380 augment "/te:te/te:tunnels/te:tunnel/"
\r
381 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
382 + "te:p2p-reverse-primary-path/"
\r
383 + "te:explicit-route-objects/"
\r
384 + "te:route-object-exclude-always/"
\r
385 + "te:type/te:label/"
\r
386 + "te:label-hop/te:te-label/te:technology" {
\r
387 description "OTN label.";
\r
389 uses otn-types:otn-path-label;
\r
393 /* Augment label hop of route-object-include-exclude of reverse primary path */
\r
394 augment "/te:te/te:tunnels/te:tunnel/"
\r
395 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
396 + "te:p2p-reverse-primary-path/"
\r
397 + "te:explicit-route-objects/"
\r
398 + "te:route-object-include-exclude/"
\r
399 + "te:type/te:label/"
\r
400 + "te:label-hop/te:te-label/te:technology" {
\r
401 description "OTN label.";
\r
403 uses otn-types:otn-path-label;
\r
407 /* Augment label hop of route-exclude of reverse primary path */
\r
408 augment "/te:te/te:tunnels/te:tunnel/"
\r
409 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
410 + "te:p2p-reverse-primary-path/"
\r
411 + "te:optimizations/te:algorithm/te:metric/"
\r
412 + "te:optimization-metric/te:explicit-route-exclude-objects/"
\r
413 + "te:route-object-exclude-object/te:type/te:label/"
\r
414 + "te:label-hop/te:te-label/te:technology" {
\r
415 description "OTN label.";
\r
417 uses otn-types:otn-path-label;
\r
421 /* Augment label hop of route-include of reverse primary path */
\r
422 augment "/te:te/te:tunnels/te:tunnel/"
\r
423 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
424 + "te:p2p-reverse-primary-path/"
\r
425 + "te:optimizations/te:algorithm/te:metric/"
\r
426 + "te:optimization-metric/te:explicit-route-include-objects/"
\r
427 + "te:route-object-include-object/te:type/te:label/"
\r
428 + "te:label-hop/te:te-label/te:technology" {
\r
429 description "OTN label.";
\r
431 uses otn-types:otn-path-label;
\r
435 /* Augment label hop of label hop of path-route of reverse primary path */
\r
436 augment "/te:te/te:tunnels/te:tunnel/"
\r
437 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
438 + "te:p2p-reverse-primary-path/"
\r
439 + "te:state/te:path-properties/"
\r
440 + "te:path-route-objects/te:path-computed-route-object/"
\r
441 + "te:state/te:type/te:label/"
\r
442 + "te:label-hop/te:te-label/te:technology" {
\r
443 description "OTN label.";
\r
445 uses otn-types:otn-path-label;
\r
450 augment "/te:te/te:tunnels/te:tunnel/"
\r
451 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
452 + "te:p2p-reverse-primary-path/"
\r
453 + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/"
\r
454 + "te:record-route-subobject/"
\r
455 + "te:type/te:label/"
\r
456 + "te:label-hop/te:te-label/te:technology" {
\r
457 description "OTN label.";
\r
459 uses otn-types:otn-path-label;
\r
464 /* Augment label hop of path-route of reverse primary LSP */
\r
465 augment "/te:te/te:tunnels/te:tunnel/"
\r
466 + "te:p2p-primary-paths/te:p2p-primary-path/"
\r
467 + "te:p2p-reverse-primary-path/"
\r
468 + "te:state/te:lsps/te:lsp/te:path-properties/"
\r
469 + "te:path-route-objects/te:path-computed-route-object/"
\r
470 + "te:state/te:type/te:label/"
\r
471 + "te:label-hop/te:te-label/te:technology" {
\r
472 description "OTN label.";
\r
474 uses otn-types:otn-path-label;
\r
478 /* Augment label hop of route-object-exclude-always of secondary path */
\r
479 augment "/te:te/te:tunnels/te:tunnel/"
\r
480 + "te:p2p-secondary-paths/te:p2p-secondary-path/"
\r
481 + "te:explicit-route-objects/"
\r
482 + "te:route-object-exclude-always/te:type/te:label/"
\r
483 + "te:label-hop/te:te-label/te:technology" {
\r
484 description "OTN label.";
\r
486 uses otn-types:otn-path-label;
\r
490 /* Augment label hop of route-object-include-exclude of secondary path */
\r
491 augment "/te:te/te:tunnels/te:tunnel/"
\r
492 + "te:p2p-secondary-paths/te:p2p-secondary-path/"
\r
493 + "te:explicit-route-objects/"
\r
494 + "te:route-object-include-exclude/te:type/te:label/"
\r
495 + "te:label-hop/te:te-label/te:technology" {
\r
496 description "OTN label.";
\r
498 uses otn-types:otn-path-label;
\r
502 /* Augment label hop of route-exclude of secondary path */
\r
503 augment "/te:te/te:tunnels/te:tunnel/"
\r
504 + "te:p2p-secondary-paths/te:p2p-secondary-path/"
\r
505 + "te:optimizations/te:algorithm/te:metric/"
\r
506 + "te:optimization-metric/te:explicit-route-exclude-objects/"
\r
507 + "te:route-object-exclude-object/te:type/te:label/"
\r
508 + "te:label-hop/te:te-label/te:technology" {
\r
509 description "OTN label.";
\r
511 uses otn-types:otn-path-label;
\r
515 /* Augment label hop of route-include of secondary path */
\r
516 augment "/te:te/te:tunnels/te:tunnel/"
\r
517 + "te:p2p-secondary-paths/te:p2p-secondary-path/"
\r
518 + "te:optimizations/te:algorithm/te:metric/"
\r
519 + "te:optimization-metric/te:explicit-route-include-objects/"
\r
520 + "te:route-object-include-object/te:type/te:label/"
\r
521 + "te:label-hop/te:te-label/te:technology" {
\r
522 description "OTN label.";
\r
524 uses otn-types:otn-path-label;
\r
528 /* Augment label hop of label hop of path-route of secondary path */
\r
529 augment "/te:te/te:tunnels/te:tunnel/"
\r
530 + "te:p2p-secondary-paths/te:p2p-secondary-path/"
\r
531 + "te:state/te:path-properties/te:path-route-objects/"
\r
532 + "te:path-computed-route-object/te:state/te:type/te:label/"
\r
533 + "te:label-hop/te:te-label/te:technology" {
\r
534 description "OTN label.";
\r
536 uses otn-types:otn-path-label;
\r
541 augment "/te:te/te:tunnels/te:tunnel/"
\r
542 + "te:p2p-secondary-paths/te:p2p-secondary-path/"
\r
543 + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/"
\r
544 + "te:record-route-subobject/"
\r
545 + "te:type/te:label/"
\r
546 + "te:label-hop/te:te-label/te:technology" {
\r
547 description "OTN label.";
\r
549 uses otn-types:otn-path-label;
\r
554 /* Augment label hop of path-route of secondary LSP */
\r
555 augment "/te:te/te:tunnels/te:tunnel/"
\r
556 + "te:p2p-secondary-paths/te:p2p-secondary-path/"
\r
557 + "te:state/te:lsps/te:lsp/te:path-properties/"
\r
558 + "te:path-route-objects/"
\r
559 + "te:path-computed-route-object/te:state/te:type/te:label/"
\r
560 + "te:label-hop/te:te-label/te:technology" {
\r
561 description "OTN label.";
\r
563 uses otn-types:otn-path-label;
\r
568 augment "/te:te/te:lsp-state/"
\r
569 + "te:lsp-record-route-subobjects/te:lsp-record-route-subobject/"
\r
570 + "te:record-route-subobject/"
\r
571 + "te:type/te:label/te:label-hop/te:te-label/te:technology" {
\r
572 description "OTN label.";
\r
574 uses otn-types:otn-path-label;
\r
580 grouping p2p-path-ero {
\r
582 "TE tunnel ERO configuration grouping";
\r
584 leaf te-default-metric {
\r
587 "Traffic engineering metric.";
\r
589 leaf te-delay-metric {
\r
592 "Traffic engineering delay metric.";
\r
594 leaf te-hop-metric {
\r
597 "Traffic engineering hop metric.";
\r
599 container explicit-route-objects {
\r
600 description "Explicit route objects container";
\r
601 list explicit-route-object {
\r
604 "List of explicit route objects";
\r
605 leaf explicit-route-usage {
\r
607 base te-types:route-usage-type;
\r
609 description "An explicit-route hop action.";
\r
611 uses te-types:explicit-route-hop {
\r
612 augment "type/label/label-hop/te-label/technology" {
\r
613 description "OTN label.";
\r
615 uses otn-types:otn-path-label;
\r
623 rpc otn-te-tunnel-path-compute {
\r
624 description "OTN TE tunnel path computation";
\r
628 description "A list of path computation requests.";
\r
637 base te-types:tunnel-type;
\r
639 description "TE tunnel type.";
\r
642 type inet:ip-address;
\r
644 "TE tunnel source address.";
\r
647 type inet:ip-address;
\r
649 "TE tunnel destination address";
\r
654 "TE tunnel source termination point identifier.";
\r
659 "TE tunnel destination termination point identifier.";
\r
661 leaf switching-layer {
\r
663 base te-types:switching-capabilities;
\r
666 "Switching layer where the requests are computed.";
\r
670 base te-types:lsp-encoding-types;
\r
672 description "LSP encoding type";
\r
674 leaf protection-type {
\r
676 base te-types:lsp-protection-type;
\r
678 description "LSP protection type";
\r
680 leaf restoration-type {
\r
682 base te-types:lsp-restoration-type;
\r
684 description "LSP restoration type";
\r
687 type te-types:te-global-id;
\r
689 "An identifier to uniquely identify a provider.";
\r
692 type te-types:te-global-id;
\r
694 "An identifier to uniquely identify a client.";
\r
696 leaf te-topology-id {
\r
697 type te-types:te-topology-id;
\r
699 "It is presumed that a datastore will contain many
\r
700 topologies. To distinguish between topologies it is
\r
701 vital to have UNIQUE topology identifiers.";
\r
703 leaf setup-priority {
\r
708 "TE LSP setup priority";
\r
710 leaf hold-priority {
\r
715 "TE LSP hold priority";
\r
717 leaf te-path-metric-type {
\r
719 base te-types:path-metric-type;
\r
721 default te-types:path-metric-te;
\r
723 "The tunnel path metric type.";
\r
728 base otn-types:tributary-protocol-type;
\r
730 description "Type of ODU";
\r
732 container p2p-primary-paths {
\r
733 description "Set of P2P primary paths container";
\r
734 list p2p-primary-path {
\r
737 "List of primary paths for this tunnel.";
\r
740 description "TE path name";
\r
745 container p2p-secondary-paths {
\r
746 description "Set of P2P secondary paths container";
\r
747 list p2p-secondary-path {
\r
750 "List of secondary paths for this tunnel.";
\r
753 description "TE path name";
\r
758 uses otn-tunnel-endpoint;
\r
765 description "success";
\r
768 description "aborted";
\r
770 enum destination-not-found {
\r
771 description "destination-not-found";
\r
773 enum invalid-argument {
\r
774 description "invalid-argument";
\r
777 description "no-memory";
\r
779 enum no-path-found {
\r
780 description "no-path-found";
\r
783 description "other-error";
\r
785 enum some-path-not-found {
\r
786 description "some-path-not-found";
\r
788 enum source-not-found {
\r
789 description "source-not-found";
\r
791 enum topology-error {
\r
792 description "topology-error";
\r
801 "A list of results for all requests.";
\r
808 container p2p-primary-paths {
\r
809 description "Set of P2P primary paths container";
\r
810 list p2p-primary-path {
\r
813 "List of resultant primary paths for this tunnel.";
\r
816 description "TE path name";
\r
821 container p2p-secondary-paths {
\r
822 description "Set of P2P secondary paths container";
\r
823 list p2p-secondary-path {
\r
826 "List of resultant secondary paths for this tunnel.";
\r
829 description "TE path name";
\r