blob: 9b2dd46c81441145693a4964cb632d90e3b60e86 [file] [log] [blame]
hiroki4ecc8712018-05-08 13:23:37 -07001module openconfig-terminal-device {
2
3 yang-version "1";
4
5 // namespace
6 namespace "http://openconfig.net/yang/terminal-device";
7
8 prefix "oc-opt-term";
9
10 import openconfig-types {
11 prefix oc-types;
12 revision-date "2017-01-13";
13 }
14 import openconfig-transport-types {
15 prefix oc-opt-types;
16 revision-date "2016-12-22";
17 }
18 import openconfig-if-ethernet {
19 prefix oc-eth;
20 revision-date "2016-12-22";
21 }
22 import openconfig-platform {
23 prefix oc-platform;
24 revision-date "2016-06-06";
25 }
26 import openconfig-platform-transceiver {
27 prefix oc-transceiver;
28 revision-date "2016-12-22";
29 }
30 import openconfig-extensions {
31 prefix oc-ext;
32 revision-date "2015-10-09";
33 }
34 import ietf-yang-types {
35 prefix yang;
36 }
37 // import tailf-common { prefix "tailf";}
38 // tailf:export netconf;
39 // tailf:export rest;
40
41 // meta
42 organization "OpenConfig working group";
43
44 contact
45 "OpenConfig working group
46 www.openconfig.net";
47
48 description
49 "This module describes a terminal optics device model for
50 managing the terminal systems (client and line side) in a
51 DWDM transport network.
52 Elements of the model:
53 physical port: corresponds to a physical, pluggable client
54 port on the terminal device. Examples includes 10G, 40G, 100G
55 (e.g., 10x10G, 4x25G or 1x100G) and 400G/1T in the future.
56 Physical client ports will have associated operational state or
57 PMs.
58 physical channel: a physical lane or channel in the
59 physical client port. Each physical client port has 1 or more
60 channels. An example is 100GBASE-LR4 client physical port having
61 4x25G channels. Channels have their own optical PMs and can be
62 monitored independently within a client physical port (e.g.,
63 channel power). Physical client channels are defined in the
64 model as part of a physical client port, and are modeled
65 primarily for reading their PMs.
66 logical channel: a logical grouping of logical grooming elements
67 that may be assigned to subsequent grooming stages for
68 multiplexing / de-multiplexing, or to an optical channel for
69 line side transmission. The logical channels can represent, for
70 example, an ODU/OTU logical packing of the client
71 data onto the line side. Tributaries are similarly logical
72 groupings of demand that can be represented in this structure and
73 assigned to an optical channel. Note that different types of
74 logical channels may be present, each with their corresponding
75 PMs.
76 optical channel: corresponds to an optical carrier and is
77 assigned a wavelength/frequency. Optical channels have PMs
78 such as power, BER, and operational mode.
79 Directionality:
80 To maintain simplicity in the model, the configuration is
81 described from client-to-line direction. The assumption is that
82 equivalent reverse configuration is implicit, resulting in
83 the same line-to-client configuration.
84 Physical layout:
85 The model does not assume a particular physical layout of client
86 and line ports on the terminal device (e.g., such as number of
87 ports per linecard, separate linecards for client and line ports,
88 etc.).";
89
90 oc-ext:openconfig-version "0.4.0";
91
92 revision "2016-12-22" {
93 description
94 "Fixes and additions to terminal optics model";
95 reference "0.4.0";
96 }
97
98
99 grouping terminal-input-optical-power {
100 description
101 "Reusable leaves related to input optical power";
102
103 leaf input-power {
104 type decimal64 {
105 fraction-digits 2;
106 }
107 units dBm;
108 description
109 "The input optical power of this port in units of 0.01dBm.
110 If the port is an aggregate of multiple physical channels,
111 this attribute is the total power or sum of all channels.";
112 }
113 }
114
115 grouping terminal-ethernet-protocol-config {
116 description
117 "Configuration data for logical channels with Ethernet
118 framing";
119
120 //TODO:currently a empty container
121 }
122
123 grouping terminal-ethernet-protocol-state {
124 description
125 "Ethernet-specific counters when logical channel
126 is using Ethernet protocol framing, e.g., 10GE, 100GE";
127
128 uses oc-eth:ethernet-interface-state-counters;
129 }
130
131 grouping terminal-ethernet-protocol-top {
132 description
133 "Top-level grouping for data related to Ethernet protocol
134 framing on logical channels";
135
136 container ethernet {
137 description
138 "Top level container for data related to Ethernet framing
139 for the logical channel";
140
141 container config {
142 description
143 "Configuration data for Ethernet protocol framing on
144 logical channels";
145
146 uses terminal-ethernet-protocol-config;
147 }
148
149 container state {
150 config false;
151 description
152 "Operational state data for Ethernet protocol framing
153 on logical channels";
154
155 uses terminal-ethernet-protocol-state;
156 }
157 }
158 }
159
160 grouping terminal-otn-protocol-config {
161 description
162 "OTU configuration when logical channel
163 framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
164
165 leaf tti-msg-transmit {
166 type string;
167 description
168 "Trail trace identifier (TTI) message transmitted";
169 }
170
171 leaf tti-msg-expected {
172 type string;
173 description
174 "Trail trace identifier (TTI) message expected";
175 }
176
177 leaf tti-msg-auto {
178 type boolean;
179 description
180 "Trail trace identifier (TTI) transmit message automatically
181 created. If true, then setting a custom transmit message
182 would be invalid.";
183 }
184 }
185
186 grouping terminal-otn-protocol-counter-stats {
187 description
188 "Counter based statistics containers for logical channels
189 using OTN framing";
190
191 leaf errored-seconds {
192 type yang:counter64;
193 description
194 "The number of seconds that at least one errored blocks
195 occurs, at least one code violation occurs, loss of sync is
196 detected or loss of signal is detected";
197 }
198
199 leaf severely-errored-seconds {
200 type yang:counter64;
201 description
202 "The number of seconds that loss of frame is detected OR
203 the number of errored blocks, code violations, loss of sync
204 or loss of signal is detected exceeds a predefined
205 threshold";
206 }
207
208 leaf unavailable-seconds {
209 type yang:counter64;
210 description
211 "The number of seconds during which the link is unavailable";
212 }
213
214 leaf code-violations {
215 type yang:counter64;
216 description
217 "For ethernet or fiberchannel links, the number of 8b/10b
218 coding violations. For SONET/SDH, the number of BIP (bit
219 interleaved parity) errors";
220 }
221
222 leaf fec-uncorrectable-words {
223 type yang:counter64;
224 description
225 "The number words that were uncorrectable by the FEC";
226 }
227
228 leaf fec-corrected-bytes {
229 type yang:counter64;
230 description
231 "The number of bytes that were corrected by the FEC";
232 }
233
234 leaf fec-corrected-bits {
235 type yang:counter64;
236 description
237 "The number of bits that were corrected by the FEC";
238 }
239
240 leaf background-block-errors {
241 type yang:counter64;
242 description
243 "The number of background block errors";
244 }
245 }
246
247 grouping terminal-otn-protocol-multi-stats {
248 description
249 "Multi-value statistics containers for logical channels using
250 OTN framing (e.g., max, min, avg, instant)";
251
252 container pre-fec-ber {
253 description
254 "Bit error rate before forward error correction -- computed
255 value with 18 decimal precision. Note that decimal64
256 supports values as small as i x 10^-18 where i is an
257 integer. Values smaller than this should be reported as 0
258 to inidicate error free or near error free performance.
259 Values include the instantaneous, average, minimum, and
260 maximum statistics. If avg/min/max statistics are not
261 supported, the target is expected to just supply the
262 instant value";
263
264 uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
265 }
266
267 container post-fec-ber {
268 description
269 "Bit error rate after forward error correction -- computed
270 value with 18 decimal precision. Note that decimal64
271 supports values as small as i x 10^-18 where i is an
272 integer. Values smaller than this should be reported as 0
273 to inidicate error free or near error free performance.
274 Values include the instantaneous, average, minimum, and
275 maximum statistics. If avg/min/max statistics are not
276 supported, the target is expected to just supply the
277 instant value";
278
279 uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
280 }
281
282 container q-value {
283 description
284 "Quality value (factor) in dB of a channel with two
285 decimal precision. Values include the instantaneous,
286 average, minimum, and maximum statistics. If avg/min/max
287 statistics are not supported, the target is expected
288 to just supply the instant value";
289
290 uses oc-types:avg-min-max-instant-stats-precision2-dB;
291 }
292
293 container esnr {
294 description
295 "Electrical signal to noise ratio. Baud rate
296 normalized signal to noise ratio based on
297 error vector magnitude in dB with two decimal
298 precision. Values include the instantaneous, average,
299 minimum, and maximum statistics. If avg/min/max
300 statistics are not supported, the target is expected
301 to just supply the instant value";
302
303 uses oc-types:avg-min-max-instant-stats-precision2-dB;
304 }
305 }
306
307 grouping terminal-otn-protocol-state {
308 description
309 "OTU operational state when logical channel
310 framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
311
312
313 leaf tti-msg-recv {
314 type string;
315 description
316 "Trail trace identifier (TTI) message received";
317 }
318
319 leaf rdi-msg {
320 type string;
321 description
322 "Remote defect indication (RDI) message received";
323 }
324 uses terminal-otn-protocol-counter-stats;
325 uses terminal-otn-protocol-multi-stats;
326 }
327
328 grouping terminal-otn-protocol-top {
329 description
330 "Top-level grouping for data related to OTN protocol framing";
331
332 container otn {
333 description
334 "Top level container for OTU configuration when logical
335 channel framing is using an OTU protocol, e.g., OTU1, OTU3,
336 etc.";
337
338 container config {
339 description
340 "Configuration data for OTN protocol framing";
341
342 uses terminal-otn-protocol-config;
343 }
344
345 container state {
346
347 config false;
348
349 description
350 "Operational state data for OTN protocol PMs, statistics,
351 etc.";
352
353 uses terminal-otn-protocol-config;
354 uses terminal-otn-protocol-state;
355 }
356 }
357 }
358
359 grouping terminal-client-port-assignment-config {
360 description
361 "Configuration data for assigning physical client ports to
362 logical channels";
363
364 leaf index {
365 type uint32;
366 description
367 "Index of the client port assignment";
368 }
369
370 leaf description {
371 type string;
372 description
373 "Descriptive name for the client port-to-logical channel
374 mapping";
375 }
376
377 leaf logical-channel {
378 type leafref {
379 path "/oc-opt-term:terminal-device/oc-opt-term:logical-channels" +
380 "/oc-opt-term:channel/oc-opt-term:index";
381 }
382 description
383 "Reference to the logical channel for this
384 assignment";
385 }
386
387 leaf allocation {
388 type decimal64 {
389 fraction-digits 3;
390 }
391 units Gbps;
392 description
393 "Allocation of the client physical port to the assigned
394 logical channel expressed in Gbps. In most cases,
395 the full client physical port rate is assigned to a single
396 logical channel.";
397 }
398
399 }
400
401 grouping terminal-client-port-assignment-state {
402 description
403 "Operational state data for assigning physical client ports
404 to logical channels";
405 }
406
407 grouping terminal-client-port-assignment-top {
408 description
409 "Top-level grouping for the assigment of client physical ports
410 to logical channels";
411 //TODO: this grouping could be removed, instead reusing a common
412 //grouping for logical client assignment pointers
413
414 container logical-channel-assignments {
415 description
416 "Enclosing container for client port to logical client
417 mappings";
418
419 list assignment {
420 key "index";
421 description
422 "List of assignments to logical clients";
423
424 leaf index {
425 type leafref {
426 path "../config/index";
427 }
428 description
429 "Reference to the index of this logical client
430 assignment";
431 }
432
433 container config {
434 description
435 "Configuration data for the logical client assignment";
436
437 uses terminal-client-port-assignment-config;
438 }
439
440 container state {
441
442 config false;
443
444 description
445 "Operational state data for the logical client
446 assignment";
447
448 uses terminal-client-port-assignment-config;
449 uses terminal-client-port-assignment-state;
450 }
451 }
452 }
453 }
454
455
456 grouping terminal-logical-chan-assignment-config {
457 description
458 "Configuration data for assigning client logical channels
459 to line-side tributaries";
460
461 leaf index {
462 type uint32;
463 description
464 "Index of the current logical client channel to tributary
465 mapping";
466 }
467
468 leaf description {
469 type string;
470 description
471 "Name assigned to the logical client channel";
472 }
473
474 leaf assignment-type {
475 type enumeration {
476 enum LOGICAL_CHANNEL {
477 description
478 "Subsequent channel is a logical channel";
479 }
480 enum OPTICAL_CHANNEL {
481 description
482 "Subsequent channel is a optical channel / carrier";
483 }
484 }
485 description
486 "Each logical channel element may be assigned to subsequent
487 stages of logical elements to implement further grooming, or
488 can be assigned to a line-side optical channel for
489 transmission. Each assignment also has an associated
490 bandwidth allocation.";
491 }
492
493 leaf logical-channel {
494 type leafref {
495 path "/oc-opt-term:terminal-device/" +
496 "oc-opt-term:logical-channels/oc-opt-term:channel/" +
497 "oc-opt-term:index";
498 }
499 must "../assignment-type = 'LOGICAL_CHANNEL'" {
500 description
501 "The assignment-type must be set to LOGICAL_CHANNEL for
502 this leaf to be valid";
503 }
504 description
505 "Reference to another stage of logical channel elements.";
506 }
507
508 leaf optical-channel {
509 type leafref {
510 path "/oc-platform:components/oc-platform:component/" +
511 "oc-platform:name";
512 }
513 must "../assignment-type = 'OPTICAL_CHANNEL'" {
514 description
515 "The assignment-type must be set to OPTICAL_CHANNEL for
516 this leaf to be valid";
517 }
518 description
519 "Reference to the line-side optical channel that should
520 carry the current logical channel element. Use this
521 reference to exit the logical element stage.";
522 }
523
524 leaf allocation {
525 type decimal64 {
526 fraction-digits 3;
527 }
528 units Gbps;
529 description
530 "Allocation of the logical client channel to the tributary
531 or sub-channel, expressed in Gbps";
532 }
533
534 }
535
536 grouping terminal-logical-chan-assignment-state {
537 description
538 "Operational state data for the assignment of logical client
539 channel to line-side tributary";
540 }
541
542 grouping terminal-logical-chan-assignment-top {
543 description
544 "Top-level grouping for the list of logical client channel-to-
545 tributary assignments";
546
547 container logical-channel-assignments {
548 //TODO: we need a commonly understood name for this logical
549 //channel structure
550 description
551 "Enclosing container for tributary assignments";
552
553 list assignment {
554 key "index";
555 description
556 "Logical channel elements may be assigned directly to
557 optical channels for line-side transmission, or can be
558 further groomed into additional stages of logical channel
559 elements. The grooming can multiplex (i.e., split the
560 current element into multiple elements in the subsequent
561 stage) or de-multiplex (i.e., combine the current element
562 with other elements into the same element in the subsequent
563 stage) logical elements in each stage.
564 Note that to support the ability to groom the logical
565 elements, the list of logical channel elements should be
566 populated with an entry for the logical elements at
567 each stage, starting with the initial assignment from the
568 respective client physical port.
569 Each logical element assignment consists of a pointer to
570 an element in the next stage, or to an optical channel,
571 along with a bandwidth allocation for the corresponding
572 assignment (e.g., to split or combine signal).";
573
574 leaf index {
575 type leafref {
576 path "../config/index";
577 }
578 description
579 "Reference to the index for the current tributary
580 assignment";
581 }
582
583 container config {
584 description
585 "Configuration data for tributary assignments";
586
587 uses terminal-logical-chan-assignment-config;
588 }
589
590 container state {
591
592 config false;
593
594 description
595 "Operational state data for tributary assignments";
596
597 uses terminal-logical-chan-assignment-config;
598 uses terminal-logical-chan-assignment-state;
599 }
600 }
601 }
602 }
603
604 grouping terminal-logical-channel-ingress-config {
605 description
606 "Configuration data for ingress signal to logical channel";
607
608 leaf transceiver {
609 type leafref {
610 path "/oc-platform:components/oc-platform:component/" +
611 "oc-platform:name";
612 }
613 description
614 "Reference to the transceiver carrying the input signal
615 for the logical channel. If specific physical channels
616 are mapped to the logical channel (as opposed to all
617 physical channels carried by the transceiver), they can be
618 specified in the list of physical channel references.";
619 }
620
621 leaf-list physical-channel {
622 type leafref {
623 path "/oc-platform:components/oc-platform:component/" +
624 "oc-transceiver:transceiver/" +
625 "oc-transceiver:physical-channels/" +
626 "oc-transceiver:channel/oc-transceiver:index";
627 }
628 description
629 "This list should be populated with references
630 to the client physical channels that feed this logical
631 channel from the transceiver specified in the 'transceiver'
632 leaf, which must be specified. If this leaf-list is empty,
633 all physical channels in the transceiver are assumed to be
634 mapped to the logical channel.";
635 }
636 }
637
638 grouping terminal-logical-channel-ingress-state {
639 description
640 "Operational state data for ingress signal to logical channel";
641 }
642
643 grouping terminal-logical-channel-ingress-top {
644 description
645 "Top-level grouping for ingress signal to logical channel";
646
647 container ingress {
648 description
649 "Top-level container for specifying references to the
650 source of signal for the logical channel, either a
651 transceiver or individual physical channels";
652
653 container config {
654 description
655 "Configuration data for the signal source for the
656 logical channel";
657
658 uses terminal-logical-channel-ingress-config;
659 }
660
661 container state {
662
663 config false;
664
665 description
666 "Operational state data for the signal source for the
667 logical channel";
668
669 uses terminal-logical-channel-ingress-config;
670 uses terminal-logical-channel-ingress-state;
671 }
672 }
673 }
674
675 grouping terminal-logical-channel-config {
676 description
677 "Configuration data for logical channels";
678
679 leaf index {
Ai Hamanobd51cdd2018-10-18 11:30:07 +0900680 //type uint32;
681 type string;
hiroki4ecc8712018-05-08 13:23:37 -0700682 description
683 "Index of the current logical channel";
684 }
685
686 leaf description {
687 type string;
688 description
689 "Description of the logical channel";
690 }
691
692 leaf admin-state {
693 type oc-opt-types:admin-state-type;
694 description
695 "Sets the admin state of the logical channel";
696 }
697
698 leaf rate-class {
699 type identityref {
700 base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE;
701 }
702 description
703 "Rounded bit rate of the tributary signal. Exact bit rate
704 will be refined by protocol selection.";
705 }
706
707 leaf trib-protocol {
708 type identityref {
709 base oc-opt-types:TRIBUTARY_PROTOCOL_TYPE;
710 }
711 description
712 "Protocol framing of the tributary signal. If this
713 LogicalChannel is directly connected to a Client-Port or
714 Optical-Channel, this is the protocol of the associated port.
715 If the LogicalChannel is connected to other LogicalChannels,
716 the TributaryProtocol of the LogicalChannels will define a
717 specific mapping/demapping or multiplexing/demultiplexing
718 function.
719 Not all protocols are valid, depending on the value
720 of trib-rate-class. The expectation is that the NMS
721 will validate that a correct combination of rate class
722 and protocol are specfied. Basic combinations are:
723 rate class: 1G
724 protocols: 1GE
725 rate class: 2.5G
726 protocols: OC48, STM16
727 rate class: 10G
728 protocols: 10GE LAN, 10GE WAN, OC192, STM64, OTU2, OTU2e,
729 OTU1e, ODU2, ODU2e, ODU1e
730 rate class: 40G
731 protocols: 40GE, OC768, STM256, OTU3, ODU3
732 rate class: 100G
733 protocols: 100GE, 100G MLG, OTU4, OTUCn, ODU4";
734 }
735
736 leaf logical-channel-type {
737 type identityref {
738 base oc-opt-types:LOGICAL_ELEMENT_PROTOCOL_TYPE;
739 }
740 description
741 "The type / stage of the logical element determines the
742 configuration and operational state parameters (PMs)
743 available for the logical element";
744 }
745
746 leaf loopback-mode {
747 type oc-opt-types:loopback-mode-type;
748 description
749 "Sets the loopback type on the logical channel. Setting the
750 mode to something besides NONE activates the loopback in
751 the specified mode.";
752 }
753 }
754
755
756 grouping terminal-logical-channel-state {
757 description
758 "Operational state data for logical client channels";
759
760 leaf link-state {
761 type enumeration {
762 enum UP {
763 description
764 "Logical channel is operationally up";
765 }
766 enum DOWN {
767 description
768 "Logical channel is operationally down";
769 }
770 }
771 description
772 "Link-state of the Ethernet protocol on the logical channel,
773 SONET / SDH framed signal, etc.";
774 }
775
776 }
777
778 grouping terminal-logical-channel-top {
779 description
780 "Top-level grouping for logical channels";
781
782 container logical-channels {
783 description
784 "Enclosing container the list of logical channels";
785
786 list channel {
787 key "index";
788 description
789 "List of logical channels";
790 //TODO: naming for this list of logical elements should be
791 //revisited.
792
793 leaf index {
794 type string;
795 // type leafref {
796 // path "../config/index";
797 // }
798 description
799 "Reference to the index of the logical channel";
800 }
801
802 container config {
803 description
804 "Configuration data for logical channels";
805
806 uses terminal-logical-channel-config;
807
808 }
809
810 container state {
811
812 config false;
813
814 description
815 "Operational state data for logical channels";
816
817 uses terminal-logical-channel-config;
818 uses terminal-logical-channel-state;
819 }
820
821 uses terminal-otn-protocol-top {
822 when "config/logical-channel-type = 'PROT_OTN'" {
823 description
824 "Include the OTN protocol data only when the
825 channel is using OTN framing.";
826 }
827 }
828 uses terminal-ethernet-protocol-top {
829 when "config/logical-channel-type = 'oc-opt-types:PROT_ETHERNET'" {
830 description
831 "Include the Ethernet protocol statistics only when the
832 protocol used by the link is Ethernet.";
833 }
834 }
835 uses terminal-logical-channel-ingress-top;
836 uses terminal-logical-chan-assignment-top;
837 }
838 }
839 }
840
841
842 grouping terminal-optical-channel-config {
843 description
844 "Configuration data for describing optical channels";
845
846 leaf frequency {
847 type oc-opt-types:frequency-type;
848 description
849 "Frequency of the optical channel, expressed in MHz";
850 }
851
852 leaf target-output-power {
853 type decimal64 {
854 fraction-digits 2;
855 }
856 units dBm;
857 description
858 "Target output optical power level of the optical channel,
859 expressed in increments of 0.01 dBm (decibel-milliwats)";
860 }
861
862 leaf operational-mode {
863 type uint16;
864 description
865 "Vendor-specific mode identifier -- sets the operational
866 mode for the channel. The specified operational mode must
867 exist in the list of supported operational modes supplied
868 by the device";
869 //
870 // Ideally, this leaf should be a leafref to the supported
871 // operational modes, but YANG 1.0 does not allow a r/w
872 // leaf to be a leafref to a r/o leaf.
873 }
874
875
876 leaf line-port {
877 type leafref {
878 path "/oc-platform:components/oc-platform:component/" +
879 "oc-platform:name";
880 }
881 description
882 "Reference to the line-side physical port that carries
883 this optical channel. The target port should be
884 a component in the physical inventory data model.";
885 }
886 }
887
888 grouping terminal-optical-channel-state {
889 description
890 "Operational state data for optical channels";
891
892 leaf group-id {
893 type uint32;
894 description
895 "If the device places constraints on which optical
896 channels must be managed together (e.g., transmitted on the
897 same line port), it can indicate that by setting the group-id
898 to the same value across related optical channels.";
899 }
900
901 uses oc-transceiver:optical-power-state;
902
903 container chromatic-dispersion {
904 description
905 "Chromatic Dispersion of an optical channel in
906 picoseconds / nanometer (ps/nm) as reported by receiver
907 with two decimal precision. Values include the instantaneous,
908 average, minimum, and maximum statistics. If avg/min/max
909 statistics are not supported, the target is expected to just
910 supply the instant value";
911
912 uses oc-opt-types:avg-min-max-instant-stats-precision2-ps-nm;
913 }
914
915 container polarization-mode-dispersion {
916 description
917 "Polarization Mode Dispersion of an optical channel
918 in picosends (ps) as reported by receiver with two decimal
919 precision. Values include the instantaneous, average,
920 minimum, and maximum statistics. If avg/min/max statistics
921 are not supported, the target is expected to just supply the
922 instant value";
923
924 uses oc-opt-types:avg-min-max-instant-stats-precision2-ps;
925 }
926
927 container second-order-polarization-mode-dispersion {
928 description
929 "Second Order Polarization Mode Dispersion of an optical
930 channel in picoseconds squared (ps^2) as reported by
931 receiver with two decimal precision. Values include the
932 instantaneous, average, minimum, and maximum statistics.
933 If avg/min/max statistics are not supported, the target
934 is expected to just supply the instant value";
935
936 uses oc-opt-types:avg-min-max-instant-stats-precision2-ps2;
937 }
938
939 container polarization-dependent-loss {
940 description
941 "Polarization Dependent Loss of an optical channel
942 in dB as reported by receiver with two decimal precision.
943 Values include the instantaneous, average, minimum, and
944 maximum statistics. If avg/min/max statistics are not
945 supported, the target is expected to just supply the
946 instant value";
947
948 uses oc-types:avg-min-max-instant-stats-precision2-dB;
949 }
950 }
951
952 grouping terminal-optical-channel-top {
953 description
954 "Top-level grouping for optical channel data";
955
956 container optical-channel {
957 description
958 "Enclosing container for the list of optical channels";
959
960 container config {
961 description
962 "Configuration data for optical channels";
963
964 uses terminal-optical-channel-config;
965 }
966
967 container state {
968
969 config false;
970
971 description
972 "Operational state data for optical channels";
973
974 uses terminal-optical-channel-config;
975 uses terminal-optical-channel-state;
976 }
977 }
978 }
979
980 grouping terminal-operational-mode-config {
981 description
982 "Configuration data for vendor-supported operational modes";
983 }
984
985 grouping terminal-operational-mode-state {
986 description
987 "Operational state data for vendor-supported operational
988 modes";
989
990 leaf mode-id {
991 type uint16;
992 description
993 "Two-octet encoding of the vendor-defined operational
994 mode";
995 }
996
997 leaf description {
998 type string;
999 description
1000 "Vendor-supplied textual description of the characteristics
1001 of this operational mode to enable operators to select the
1002 appropriate mode for the application.";
1003 }
1004
1005 //TODO: examples of the kind of info that would be useful to
1006 //report in the operational mode:
1007 //Symbol rate (32G, 40G, 43G, 64G, etc.)
1008 //Modulation (QPSK, 8-QAM, 16-QAM, etc.)
1009 //Differential encoding (on, off/pilot symbol, etc)
1010 //State of polarization tracking mode (default, med.
1011 //high-speed, etc.)
1012 //Pulse shaping (RRC, RC, roll-off factor)
1013 //FEC mode (SD, HD, % OH)
1014
1015 leaf vendor-id {
1016 type string;
1017 description
1018 "Identifier to represent the vendor / supplier of the
1019 platform and the associated operational mode information";
1020 }
1021 }
1022
1023 grouping terminal-operational-mode-top {
1024 description
1025 "Top-level grouping for vendor-supported operational modes";
1026
1027 container operational-modes {
1028 description
1029 "Enclosing container for list of operational modes";
1030
1031 list mode {
1032 key "mode-id";
1033 config false;
1034 description
1035 "List of operational modes supported by the platform.
1036 The operational mode provides a platform-defined summary
1037 of information such as symbol rate, modulation, pulse
1038 shaping, etc.";
1039
1040 leaf mode-id {
1041 type leafref {
1042 path "../state/mode-id";
1043 }
1044 description
1045 "Reference to mode-id";
1046 }
1047
1048 container config {
1049 description
1050 "Configuration data for operational mode";
1051
1052 uses terminal-operational-mode-config;
1053 }
1054
1055 container state {
1056
1057 config false;
1058
1059 description
1060 "Operational state data for the platform-defined
1061 operational mode";
1062
1063 uses terminal-operational-mode-config;
1064 uses terminal-operational-mode-state;
1065 }
1066 }
1067 }
1068 }
1069
1070
1071 grouping terminal-device-config {
1072 description
1073 "Configuration data for transport terminal devices at a
1074 device-wide level";
1075 }
1076
1077 grouping terminal-device-state {
1078 description
1079 "Operational state data for transport terminal devices at a
1080 device-wide level";
1081 }
1082
1083 grouping terminal-device-top {
1084 description
1085 "Top-level grouping for data for terminal devices";
1086
1087 container terminal-device {
1088 description
1089 "Top-level container for the terminal device";
1090
1091 container config {
1092 description
1093 "Configuration data for global terminal-device";
1094
1095 uses terminal-device-config;
1096 }
1097
1098 container state {
1099
1100 config false;
1101
1102 description
1103 "Operational state data for global terminal device";
1104
1105 uses terminal-device-config;
1106 uses terminal-device-state;
1107 }
1108
1109 uses terminal-logical-channel-top;
1110 uses terminal-operational-mode-top;
1111
1112 }
1113 }
1114
1115 // data definition statements
1116
1117 uses terminal-device-top;
1118
1119 // augment statements
1120
1121/* augment "/oc-platform:components/oc-platform:component" {
1122 when "/oc-platform:components/oc-platform:component/" +
1123 "oc-platform:state/oc-platform:type = 'OPTICAL_CHANNEL'" {
1124 description
1125 "Augment is active when component is of type
1126 OPTICAL_CHANNEL";
1127 }
1128 description
1129 "Adding optical channel data to physical inventory";
1130
1131 uses terminal-optical-channel-top {
1132 }
1133 }
1134*/
1135
1136}