summaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-transport-line-protection.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-transport-line-protection.yang612
1 files changed, 612 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang b/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang
new file mode 100644
index 0000000..0e21a02
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang
@@ -0,0 +1,612 @@
+module openconfig-transport-line-protection {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/optical-transport-line-protection";
+
+ prefix "oc-line-protect";
+
+ import openconfig-extensions { prefix oc-ext; }
+ import openconfig-types { prefix oc-types; }
+ import openconfig-platform { prefix oc-platform; }
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This model describes configuration and operational state data
+ for optical line protection elements, deployed as part of a
+ transport line system. An Automatic Protection Switch (APS)
+ is typically installed in the same device as the amplifiers
+ and wave-router, however an APS can also be a standalone
+ device. In both scenarios, it serves the same purpose of
+ providing protection using two dark fiber pairs to ensure the
+ amplifiers can still receive a signal if one of the two fiber
+ pairs is broken. The APS port details and directionality are
+ shown below. The three major attributes, together with their
+ modifiers, define the behavior of the APS and can be prioritized
+ in the descending order as shown in the following table";
+
+ //
+ // Automatic Protection Switch (APS) port details and directionality.
+ // _________
+ // | |
+ // | | <=== LINE-PRIMARY-IN
+ // | |
+ // COMMON-IN ===> | | ===> LINE-PRIMARY-OUT
+ // | |
+ // | APS |
+ // COMMON-OUT <=== | |
+ // | | <=== LINE-SECONDARY-IN
+ // | |
+ // | | ===> LINE-SECONDARY-OUT
+ // |_______|
+ //
+ //
+ // The interaction of configuration attributes that control the
+ // protection switching behavior
+ // +------------------+--------------------+------------------------+
+ // | Attribute | Modifier | Behavior |
+ // +------------------+--------------------+------------------------+
+ // | force-to-port | n/a | turns off switching |
+ // | | | by forcing to primary |
+ // | | | or secondary |
+ // +------------------+--------------------+------------------------+
+ // | relative-switch | relative-threshold | if set, overrides |
+ // | -threshold | -offset | primary and secondary |
+ // | | | switch thresholds |
+ // +------------------+--------------------+------------------------+
+ // | primary-switch | primary-switch | sets respective |
+ // | -threshold, | -hysteresis | threshold to switch |
+ // | secondary-switch | | to opposite port |
+ // | -threshold | | |
+ // +------------------+--------------------+------------------------+
+
+ oc-ext:openconfig-version "0.4.0";
+
+ revision "2018-07-25" {
+ description
+ "Added wait-to-restore-time, hold-off-time,
+ relative-switch-threshold, relative-switch-threshold-offset,
+ forced-to-port, removed secondary-switch-hysteresis, and
+ edited the description of primary-switch-threshold,
+ secondary-switch-threshold, and primary-switch-hysteresis";
+ reference "0.4.0";
+ }
+
+ revision "2017-09-08" {
+ description
+ "Correct bug with OSC interfaces";
+ reference "0.3.1";
+ }
+
+ revision "2017-07-08" {
+ description
+ "Support multiple OCMs, add monitor port type
+ and refs to hw ports, ";
+ reference "0.3.0";
+ }
+
+ revision "2017-03-28" {
+ description
+ "Added min/max/avg stats, status for media channels, OCM, APS";
+ reference "0.2.0";
+ }
+
+ revision "2016-08-05" {
+ description
+ "Initial public release";
+ reference "0.1.0";
+ }
+
+ // extension statements
+
+ // feature statements
+
+ // identity statements
+
+ identity APS_PATHS {
+ description
+ "Base identity for identifying the line paths on an
+ automatic protection switch";
+ }
+
+ identity PRIMARY {
+ base APS_PATHS;
+ description
+ "The primary line path connected to an automatic protection
+ switch port indicating the primary/preferred path";
+ }
+
+ identity SECONDARY {
+ base APS_PATHS;
+ description
+ "The secondary line path connected to an automatic protection
+ switch port indicating the secondary path";
+ }
+
+ // grouping statements
+
+ grouping aps-input-port-config {
+ description
+ "Grouping for config related to unidirectional automatic
+ protection switch input ports";
+
+ leaf enabled {
+ type boolean;
+ default "true";
+ description
+ "This leaf contains the configured, desired state of the
+ port. Disabling the port turns off alarm reporting for
+ the port";
+ }
+
+ leaf target-attenuation {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "Target attenuation of the variable optical attenuator
+ associated with the port in increments of 0.01 dB.";
+ }
+ }
+
+ grouping aps-output-port-config {
+ description
+ "Grouping for config related to unidirectional automatic
+ protection switch output ports";
+
+ leaf target-attenuation {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "Target attenuation of the variable optical attenuator
+ associated with the port in increments of 0.01 dB";
+ }
+ }
+
+ grouping aps-input-port-state {
+ description
+ "Grouping for state related to unidirectional automatic
+ protection switch input ports";
+
+ leaf attenuation {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The attenuation of the variable optical attenuator
+ associated with the port in increments of 0.01 dB.";
+ }
+
+ container optical-power {
+ description
+ "The optical input power of this port in units of
+ 0.01dBm. Optical input power represents the signal
+ traversing from an external destination into the module.
+ The power is measured before any attenuation. If avg/min/max
+ statistics are not supported, the target is expected to
+ just supply the instant value";
+
+ uses oc-types:avg-min-max-instant-stats-precision2-dBm;
+ }
+ }
+
+ grouping aps-output-port-state {
+ description
+ "Grouping for state related to unidirectional automatic
+ protection switch output ports";
+
+ leaf attenuation {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The attenuation of the variable optical attenuator
+ associated with the port in increments of 0.01 dB";
+ }
+
+ container optical-power {
+ description
+ "The optical output power of this port in units of
+ 0.01dBm. Optical output power represents the signal
+ traversing from the module to an external destination. The
+ power is measured after any attenuation. If avg/min/max
+ statistics are not supported, the target is expected to
+ just supply the instant value";
+
+ uses oc-types:avg-min-max-instant-stats-precision2-dBm;
+ }
+ }
+
+ grouping aps-ports {
+ description
+ "Top level grouping for automatic protection switch ports";
+
+ container line-primary-in {
+ description
+ "Container for information related to the line primary
+ input port";
+
+ container config {
+ description
+ "Configuration data for the line primary input port";
+
+ uses aps-input-port-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "State data for the line primary input port";
+
+ uses aps-input-port-config;
+ uses aps-input-port-state;
+ }
+
+ }
+
+ container line-primary-out {
+ description
+ "Container for information related to the line primary
+ output port";
+
+ container config {
+ description
+ "Configuration data for the line primary output port";
+
+ uses aps-output-port-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "State data for the line primary output port";
+
+ uses aps-output-port-config;
+ uses aps-output-port-state;
+ }
+ }
+
+ container line-secondary-in {
+ description
+ "Container for information related to the line secondary
+ input port";
+
+ container config {
+ description
+ "Configuration data for the line secondary input port";
+
+ uses aps-input-port-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "State data for the line secondary input port";
+
+ uses aps-input-port-config;
+ uses aps-input-port-state;
+ }
+ }
+
+ container line-secondary-out {
+ description
+ "Container for information related to the line secondary
+ output port";
+
+ container config {
+ description
+ "Configuration data for the line secondary output port";
+
+ uses aps-output-port-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "State data for the line secondary output port";
+
+ uses aps-output-port-config;
+ uses aps-output-port-state;
+ }
+ }
+
+ container common-in {
+ description
+ "Container for information related to the line common
+ input port";
+
+ container config {
+ description
+ "Configuration data for the line common input port";
+
+ uses aps-input-port-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "State data for the line common input port";
+
+ uses aps-input-port-config;
+ uses aps-input-port-state;
+ }
+ }
+
+ container common-output {
+ description
+ "Container for information related to the line common
+ output port";
+
+ container config {
+ description
+ "Configuration data for the line common output port";
+
+ uses aps-output-port-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "State data for the line common output port";
+
+ uses aps-output-port-config;
+ uses aps-output-port-state;
+ }
+ }
+ }
+
+ grouping aps-config {
+ description
+ "Configuration data for automatic protection switch modules";
+
+ leaf name {
+ type leafref {
+ path "/oc-platform:components/oc-platform:component/" +
+ "oc-platform:name";
+ }
+ description
+ "Reference to the component name (in the platform model)
+ corresponding to this automatic protection switch module
+ in the device";
+ }
+
+ leaf revertive {
+ type boolean;
+ description
+ "Revertive behavior of the module. If True, then
+ automatically revert after protection switch once the
+ fault is restored. This leaf is not valid when the
+ relative-switch-threshold is in effect";
+ }
+
+ leaf wait-to-restore-time {
+ type uint32;
+ units milliseconds;
+ description
+ "The time that must elapse before an APS path
+ that has recovered from an signal failure (SF) or signal
+ degradation (SD) condition can be used again to transport
+ the normal traffic signal. During this time period, an SF or
+ SD condition shall override the wait-to-restore time period.
+ This leaf can only take effect when the revertive leaf
+ equals true";
+ }
+
+ leaf hold-off-time {
+ type uint32;
+ units milliseconds;
+ description
+ "The time delay between the declaration of an SF or SD
+ condition and the initiation of the protection switching
+ algorithm";
+ }
+
+ leaf primary-switch-threshold {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "The threshold at which the primary line port will switch to
+ the opposite line port in increments of 0.01 dBm. If the
+ hardware supports only one switch threshold for primary and
+ and secondary ports then it is recommended to set both
+ primary-switch-threshold and secondary-switch-threshold to
+ the same value to be explicit. When the relative switch
+ threshold is enabled, i.e. set to a non-zero value, the
+ primary switch threshold will be overridden";
+ }
+
+ leaf primary-switch-hysteresis {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ default 0;
+ description
+ "The delta in dB between the primary-switch-threshold
+ and the signal received on the primary APS_PATH before
+ initiating a switch from the secondary APS_PATH to the
+ primary APS_PATH, in order to prevent toggling between ports
+ when an input signal is very close to the threshold. A zero
+ value means the switch hysteresis is disabled.";
+ }
+
+ leaf secondary-switch-threshold {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dBm;
+ description
+ "The threshold at which the secondary line port will switch to
+ the opposite line port in increments of 0.01 dBm. If the
+ hardware supports only one switch threshold for primary and
+ and secondary ports then it is recommended to set both
+ primary-switch-threshold and secondary-switch-threshold to
+ the same value to be explicit. When the relative switch
+ threshold is enabled, i.e. set to a non-zero value, the
+ secondary switch threshold will be overridden";
+ }
+
+ leaf relative-switch-threshold {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ default 0;
+ description
+ "The delta threshold in dB at which the current line port
+ will switch to the opposite line port. It can be set to
+ the value of 0dB. When set to 0dB, the threshold is ignored
+ and the system automatically applies the primary and
+ secondary switch thresholds. When set to a non-zero value,
+ it overrides the primary and secondary switch thresholds";
+ }
+
+ leaf relative-switch-threshold-offset {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ default 0;
+ description
+ "The offset of the relative switch threshold that compensates
+ the normal difference of receiving power between the primary
+ and secondary line ports. A negative offset corresponds to
+ the situation where the secondary line port receives a higher
+ power than the primary line port in normal condition, and a
+ positive offset means the opposite. The offset will only work
+ when the relative switch threshold is set to a non-zero
+ value";
+ }
+
+ leaf force-to-port {
+ type enumeration {
+ enum NONE {
+ description
+ "Do not force the switch to stay on any line port";
+ }
+ enum PRIMARY {
+ description
+ "Force the switch to stay on the primary line port";
+ }
+ enum SECONDARY {
+ description
+ "Force the switch to stay on the secondary line port";
+ }
+ }
+ default NONE;
+ description
+ "Explicitly set the switch to stay on a port regardless of
+ its operational condition";
+ }
+ }
+
+ grouping aps-state {
+ description
+ "State data for automatic protection switch modules";
+
+ leaf active-path {
+ type identityref {
+ base APS_PATHS;
+ }
+ description
+ "Indicates which line path on the protection switch is
+ currently the active path connected to the common port";
+ }
+ }
+
+ grouping automatic-protection-switch-top {
+ description
+ "Top level grouping for automatic protection switch data";
+
+ container aps-modules {
+ description
+ "Enclosing container for list of automatic protection
+ switch modules";
+
+ list aps-module {
+ key "name";
+ description
+ "List of automatic protection switch modules present
+ in the device";
+
+ leaf name {
+ type leafref {
+ path "../config/name";
+ }
+ description
+ "Reference to the config name list key";
+ }
+
+ container config {
+ description
+ "Configuration data for an automatic protection
+ switch module";
+
+ uses aps-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for an automatic protection
+ switch module";
+
+ uses aps-config;
+ uses aps-state;
+ }
+
+ container ports {
+ description
+ "Top level grouping for automatic protection switch ports";
+
+ uses aps-ports;
+ }
+ }
+ }
+ }
+
+ grouping transport-line-protection-top {
+ description
+ "Top level grouping for transport line protection data";
+
+ container aps {
+ description
+ "Top level grouping for automatic protection switch data";
+
+ uses automatic-protection-switch-top;
+ }
+ }
+
+ // data definition statements
+
+ uses transport-line-protection-top;
+
+}