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