1 module openconfig-terminal-device {
6 namespace "http://openconfig.net/yang/terminal-device";
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; }
20 organization "OpenConfig working group";
23 "OpenConfig working group
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.
31 Elements of the model:
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
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.
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
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.
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.
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,
77 oc-ext:openconfig-version "1.0.0";
79 revision "2017-07-08" {
85 revision "2016-12-22" {
87 "Fixes and additions to terminal optics model";
92 grouping terminal-input-optical-power {
94 "Reusable leaves related to input optical power";
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.";
108 grouping terminal-ethernet-protocol-config {
110 "Configuration data for logical channels with Ethernet
113 //TODO:currently a empty container
116 grouping terminal-ethernet-protocol-state {
118 "Ethernet-specific counters when logical channel
119 is using Ethernet protocol framing, e.g., 10GE, 100GE";
121 uses oc-eth:ethernet-interface-state-counters;
124 grouping terminal-ethernet-protocol-top {
126 "Top-level grouping for data related to Ethernet protocol
127 framing on logical channels";
131 "Top level container for data related to Ethernet framing
132 for the logical channel";
136 "Configuration data for Ethernet protocol framing on
139 uses terminal-ethernet-protocol-config;
145 "Operational state data for Ethernet protocol framing
146 on logical channels";
148 uses terminal-ethernet-protocol-state;
153 grouping terminal-otn-protocol-config {
155 "OTU configuration when logical channel
156 framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
158 leaf tti-msg-transmit {
161 "Trail trace identifier (TTI) message transmitted";
164 leaf tti-msg-expected {
167 "Trail trace identifier (TTI) message expected";
173 "Trail trace identifier (TTI) transmit message automatically
174 created. If true, then setting a custom transmit message
179 grouping terminal-otn-protocol-counter-stats {
181 "Counter based statistics containers for logical channels
184 leaf errored-seconds {
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";
192 leaf severely-errored-seconds {
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
201 leaf unavailable-seconds {
204 "The number of seconds during which the link is unavailable";
207 leaf code-violations {
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";
215 leaf fec-uncorrectable-words {
218 "The number words that were uncorrectable by the FEC";
221 leaf fec-corrected-bytes {
224 "The number of bytes that were corrected by the FEC";
227 leaf fec-corrected-bits {
230 "The number of bits that were corrected by the FEC";
233 leaf background-block-errors {
236 "The number of background block errors";
240 grouping terminal-otn-protocol-multi-stats {
242 "Multi-value statistics containers for logical channels using
243 OTN framing (e.g., max, min, avg, instant)";
245 container pre-fec-ber {
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
257 uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
260 container post-fec-ber {
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
272 uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
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";
283 uses oc-types:avg-min-max-instant-stats-precision2-dB;
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";
296 uses oc-types:avg-min-max-instant-stats-precision2-dB;
300 grouping terminal-otn-protocol-state {
302 "OTU operational state when logical channel
303 framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
309 "Trail trace identifier (TTI) message received";
315 "Remote defect indication (RDI) message received";
317 uses terminal-otn-protocol-counter-stats;
318 uses terminal-otn-protocol-multi-stats;
321 grouping terminal-otn-protocol-top {
323 "Top-level grouping for data related to OTN protocol framing";
327 "Top level container for OTU configuration when logical
328 channel framing is using an OTU protocol, e.g., OTU1, OTU3,
333 "Configuration data for OTN protocol framing";
335 uses terminal-otn-protocol-config;
343 "Operational state data for OTN protocol PMs, statistics,
346 uses terminal-otn-protocol-config;
347 uses terminal-otn-protocol-state;
352 grouping terminal-client-port-assignment-config {
354 "Configuration data for assigning physical client ports to
360 "Index of the client port assignment";
366 "Descriptive name for the client port-to-logical channel
370 leaf logical-channel {
372 path "/oc-opt-term:terminal-device/oc-opt-term:logical-channels" +
373 "/oc-opt-term:channel/oc-opt-term:index";
376 "Reference to the logical channel for this
386 "Allocation of the client physical port to the assigned
387 logical channel expressed in Gbps. In most cases,
388 the full client physical port rate is assigned to a single
394 grouping terminal-client-port-assignment-state {
396 "Operational state data for assigning physical client ports
397 to logical channels";
400 grouping terminal-client-port-assignment-top {
402 "Top-level grouping for the assigment of client physical ports
403 to logical channels";
404 //TODO: this grouping could be removed, instead reusing a common
405 //grouping for logical client assignment pointers
407 container logical-channel-assignments {
409 "Enclosing container for client port to logical client
415 "List of assignments to logical clients";
419 path "../config/index";
422 "Reference to the index of this logical client
428 "Configuration data for the logical client assignment";
430 uses terminal-client-port-assignment-config;
438 "Operational state data for the logical client
441 uses terminal-client-port-assignment-config;
442 uses terminal-client-port-assignment-state;
449 grouping terminal-logical-chan-assignment-config {
451 "Configuration data for assigning client logical channels
452 to line-side tributaries";
457 "Index of the current logical client channel to tributary
464 "Name assigned to the logical client channel";
467 leaf assignment-type {
469 enum LOGICAL_CHANNEL {
471 "Subsequent channel is a logical channel";
473 enum OPTICAL_CHANNEL {
475 "Subsequent channel is a optical channel / carrier";
479 "Each logical channel element may be assigned to subsequent
480 stages of logical elements to implement further grooming, or
481 can be assigned to a line-side optical channel for
482 transmission. Each assignment also has an associated
483 bandwidth allocation.";
486 leaf logical-channel {
488 path "/oc-opt-term:terminal-device/" +
489 "oc-opt-term:logical-channels/oc-opt-term:channel/" +
492 must "../assignment-type = 'LOGICAL_CHANNEL'" {
494 "The assignment-type must be set to LOGICAL_CHANNEL for
495 this leaf to be valid";
498 "Reference to another stage of logical channel elements.";
501 leaf optical-channel {
503 path "/oc-platform:components/oc-platform:component/" +
506 must "../assignment-type = 'OPTICAL_CHANNEL'" {
508 "The assignment-type must be set to OPTICAL_CHANNEL for
509 this leaf to be valid";
512 "Reference to the line-side optical channel that should
513 carry the current logical channel element. Use this
514 reference to exit the logical element stage.";
523 "Allocation of the logical client channel to the tributary
524 or sub-channel, expressed in Gbps";
529 grouping terminal-logical-chan-assignment-state {
531 "Operational state data for the assignment of logical client
532 channel to line-side tributary";
535 grouping terminal-logical-chan-assignment-top {
537 "Top-level grouping for the list of logical client channel-to-
538 tributary assignments";
540 container logical-channel-assignments {
541 //TODO: we need a commonly understood name for this logical
544 "Enclosing container for tributary assignments";
549 "Logical channel elements may be assigned directly to
550 optical channels for line-side transmission, or can be
551 further groomed into additional stages of logical channel
552 elements. The grooming can multiplex (i.e., split the
553 current element into multiple elements in the subsequent
554 stage) or de-multiplex (i.e., combine the current element
555 with other elements into the same element in the subsequent
556 stage) logical elements in each stage.
558 Note that to support the ability to groom the logical
559 elements, the list of logical channel elements should be
560 populated with an entry for the logical elements at
561 each stage, starting with the initial assignment from the
562 respective client physical port.
564 Each logical element assignment consists of a pointer to
565 an element in the next stage, or to an optical channel,
566 along with a bandwidth allocation for the corresponding
567 assignment (e.g., to split or combine signal).";
571 path "../config/index";
574 "Reference to the index for the current tributary
580 "Configuration data for tributary assignments";
582 uses terminal-logical-chan-assignment-config;
590 "Operational state data for tributary assignments";
592 uses terminal-logical-chan-assignment-config;
593 uses terminal-logical-chan-assignment-state;
599 grouping terminal-logical-channel-ingress-config {
601 "Configuration data for ingress signal to logical channel";
605 path "/oc-platform:components/oc-platform:component/" +
609 "Reference to the transceiver carrying the input signal
610 for the logical channel. If specific physical channels
611 are mapped to the logical channel (as opposed to all
612 physical channels carried by the transceiver), they can be
613 specified in the list of physical channel references.";
616 leaf-list physical-channel {
618 path "/oc-platform:components/oc-platform:component/" +
619 "oc-transceiver:transceiver/" +
620 "oc-transceiver:physical-channels/" +
621 "oc-transceiver:channel/oc-transceiver:index";
624 "This list should be populated with references
625 to the client physical channels that feed this logical
626 channel from the transceiver specified in the 'transceiver'
627 leaf, which must be specified. If this leaf-list is empty,
628 all physical channels in the transceiver are assumed to be
629 mapped to the logical channel.";
633 grouping terminal-logical-channel-ingress-state {
635 "Operational state data for ingress signal to logical channel";
638 grouping terminal-logical-channel-ingress-top {
640 "Top-level grouping for ingress signal to logical channel";
644 "Top-level container for specifying references to the
645 source of signal for the logical channel, either a
646 transceiver or individual physical channels";
650 "Configuration data for the signal source for the
653 uses terminal-logical-channel-ingress-config;
661 "Operational state data for the signal source for the
664 uses terminal-logical-channel-ingress-config;
665 uses terminal-logical-channel-ingress-state;
670 grouping terminal-logical-channel-config {
672 "Configuration data for logical channels";
677 "Index of the current logical channel";
683 "Description of the logical channel";
687 type oc-opt-types:admin-state-type;
689 "Sets the admin state of the logical channel";
694 base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE;
697 "Rounded bit rate of the tributary signal. Exact bit rate
698 will be refined by protocol selection.";
703 base oc-opt-types:TRIBUTARY_PROTOCOL_TYPE;
706 "Protocol framing of the tributary signal. If this
707 LogicalChannel is directly connected to a Client-Port or
708 Optical-Channel, this is the protocol of the associated port.
709 If the LogicalChannel is connected to other LogicalChannels,
710 the TributaryProtocol of the LogicalChannels will define a
711 specific mapping/demapping or multiplexing/demultiplexing
714 Not all protocols are valid, depending on the value
715 of trib-rate-class. The expectation is that the NMS
716 will validate that a correct combination of rate class
717 and protocol are specfied. Basic combinations are:
723 protocols: OC48, STM16
726 protocols: 10GE LAN, 10GE WAN, OC192, STM64, OTU2, OTU2e,
727 OTU1e, ODU2, ODU2e, ODU1e
730 protocols: 40GE, OC768, STM256, OTU3, ODU3
733 protocols: 100GE, 100G MLG, OTU4, OTUCn, ODU4";
736 leaf logical-channel-type {
738 base oc-opt-types:LOGICAL_ELEMENT_PROTOCOL_TYPE;
741 "The type / stage of the logical element determines the
742 configuration and operational state parameters (PMs)
743 available for the logical element";
747 type oc-opt-types:loopback-mode-type;
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.";
757 "When enabled the logical channel's DSP will generate a pseudo
758 randmon bit stream (PRBS) which can be used during testing.";
763 grouping terminal-logical-channel-state {
765 "Operational state data for logical client channels";
771 "Logical channel is operationally up";
775 "Logical channel is operationally down";
779 "Link-state of the Ethernet protocol on the logical channel,
780 SONET / SDH framed signal, etc.";
785 grouping terminal-logical-channel-top {
787 "Top-level grouping for logical channels";
789 container logical-channels {
791 "Enclosing container the list of logical channels";
796 "List of logical channels";
797 //TODO: naming for this list of logical elements should be
802 path "../config/index";
805 "Reference to the index of the logical channel";
810 "Configuration data for logical channels";
812 uses terminal-logical-channel-config;
821 "Operational state data for logical channels";
823 uses terminal-logical-channel-config;
824 uses terminal-logical-channel-state;
827 uses terminal-otn-protocol-top {
828 when "config/logical-channel-type = 'PROT_OTN'" {
830 "Include the OTN protocol data only when the
831 channel is using OTN framing.";
834 uses terminal-ethernet-protocol-top {
835 when "config/logical-channel-type = 'PROT_ETHERNET'" {
837 "Include the Ethernet protocol statistics only when the
838 protocol used by the link is Ethernet.";
841 uses terminal-logical-channel-ingress-top;
842 uses terminal-logical-chan-assignment-top;
848 grouping terminal-optical-channel-config {
850 "Configuration data for describing optical channels";
853 type oc-opt-types:frequency-type;
855 "Frequency of the optical channel, expressed in MHz";
858 leaf target-output-power {
864 "Target output optical power level of the optical channel,
865 expressed in increments of 0.01 dBm (decibel-milliwats)";
868 leaf operational-mode {
871 "Vendor-specific mode identifier -- sets the operational
872 mode for the channel. The specified operational mode must
873 exist in the list of supported operational modes supplied
876 // Ideally, this leaf should be a leafref to the supported
877 // operational modes, but YANG 1.0 does not allow a r/w
878 // leaf to be a leafref to a r/o leaf.
884 path "/oc-platform:components/oc-platform:component/" +
888 "Reference to the line-side physical port that carries
889 this optical channel. The target port should be
890 a component in the physical inventory data model.";
894 grouping terminal-optical-channel-state {
896 "Operational state data for optical channels";
901 "If the device places constraints on which optical
902 channels must be managed together (e.g., transmitted on the
903 same line port), it can indicate that by setting the group-id
904 to the same value across related optical channels.";
907 uses oc-transceiver:optical-power-state;
909 container chromatic-dispersion {
911 "Chromatic Dispersion of an optical channel in
912 picoseconds / nanometer (ps/nm) as reported by receiver
913 with two decimal precision. Values include the instantaneous,
914 average, minimum, and maximum statistics. If avg/min/max
915 statistics are not supported, the target is expected to just
916 supply the instant value";
918 uses oc-opt-types:avg-min-max-instant-stats-precision2-ps-nm;
921 container polarization-mode-dispersion {
923 "Polarization Mode Dispersion of an optical channel
924 in picosends (ps) as reported by receiver with two decimal
925 precision. Values include the instantaneous, average,
926 minimum, and maximum statistics. If avg/min/max statistics
927 are not supported, the target is expected to just supply the
930 uses oc-opt-types:avg-min-max-instant-stats-precision2-ps;
933 container second-order-polarization-mode-dispersion {
935 "Second Order Polarization Mode Dispersion of an optical
936 channel in picoseconds squared (ps^2) as reported by
937 receiver with two decimal precision. Values include the
938 instantaneous, average, minimum, and maximum statistics.
939 If avg/min/max statistics are not supported, the target
940 is expected to just supply the instant value";
942 uses oc-opt-types:avg-min-max-instant-stats-precision2-ps2;
945 container polarization-dependent-loss {
947 "Polarization Dependent Loss of an optical channel
948 in dB as reported by receiver with two decimal precision.
949 Values include the instantaneous, average, minimum, and
950 maximum statistics. If avg/min/max statistics are not
951 supported, the target is expected to just supply the
954 uses oc-types:avg-min-max-instant-stats-precision2-dB;
958 grouping terminal-optical-channel-top {
960 "Top-level grouping for optical channel data";
962 container optical-channel {
964 "Enclosing container for the list of optical channels";
968 "Configuration data for optical channels";
970 uses terminal-optical-channel-config;
978 "Operational state data for optical channels";
980 uses terminal-optical-channel-config;
981 uses terminal-optical-channel-state;
986 grouping terminal-operational-mode-config {
988 "Configuration data for vendor-supported operational modes";
991 grouping terminal-operational-mode-state {
993 "Operational state data for vendor-supported operational
999 "Two-octet encoding of the vendor-defined operational
1006 "Vendor-supplied textual description of the characteristics
1007 of this operational mode to enable operators to select the
1008 appropriate mode for the application.";
1011 //TODO: examples of the kind of info that would be useful to
1012 //report in the operational mode:
1013 //Symbol rate (32G, 40G, 43G, 64G, etc.)
1014 //Modulation (QPSK, 8-QAM, 16-QAM, etc.)
1015 //Differential encoding (on, off/pilot symbol, etc)
1016 //State of polarization tracking mode (default, med.
1018 //Pulse shaping (RRC, RC, roll-off factor)
1019 //FEC mode (SD, HD, % OH)
1024 "Identifier to represent the vendor / supplier of the
1025 platform and the associated operational mode information";
1029 grouping terminal-operational-mode-top {
1031 "Top-level grouping for vendor-supported operational modes";
1033 container operational-modes {
1035 "Enclosing container for list of operational modes";
1041 "List of operational modes supported by the platform.
1042 The operational mode provides a platform-defined summary
1043 of information such as symbol rate, modulation, pulse
1048 path "../state/mode-id";
1051 "Reference to mode-id";
1056 "Configuration data for operational mode";
1058 uses terminal-operational-mode-config;
1066 "Operational state data for the platform-defined
1069 uses terminal-operational-mode-config;
1070 uses terminal-operational-mode-state;
1077 grouping terminal-device-config {
1079 "Configuration data for transport terminal devices at a
1083 grouping terminal-device-state {
1085 "Operational state data for transport terminal devices at a
1089 grouping terminal-device-top {
1091 "Top-level grouping for data for terminal devices";
1093 container terminal-device {
1095 "Top-level container for the terminal device";
1099 "Configuration data for global terminal-device";
1101 uses terminal-device-config;
1109 "Operational state data for global terminal device";
1111 uses terminal-device-config;
1112 uses terminal-device-state;
1115 uses terminal-logical-channel-top;
1116 uses terminal-operational-mode-top;
1121 // data definition statements
1123 uses terminal-device-top;
1125 // augment statements
1127 augment "/oc-platform:components/oc-platform:component" {
1128 when "/oc-platform:components/oc-platform:component/" +
1129 "oc-platform:state/oc-platform:type = 'OPTICAL_CHANNEL'" {
1131 "Augment is active when component is of type
1135 "Adding optical channel data to physical inventory";
1137 uses terminal-optical-channel-top {