openconfig-if-ethernet.yang 000664 001750 001750 00000020755 13106236422 016461 0 ustar 00root1 root1 000000 000000 module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ift; }
import ietf-yang-types { prefix yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the IETF YANG
model for interfaces described by RFC 7223";
//// oc-ext:openconfig-version "1.1.0";
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// extension statements
// feature statements
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 GBps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 GBps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 GBps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 GBps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 GBps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 GBps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type yang:counter64;
description
"Number of oversize frames received on the interface";
}
leaf in-jabber-frames {
type yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type yang:counter64;
description
"Number of fragment frames received on the interface.";
}
leaf in-8021q-frames {
type yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type yang:counter64;
description
"Number of receive error events due to FCS/CRC check
failure";
}
// egress counters
leaf out-mac-control-frames {
type yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf effective-speed {
type uint32;
units Mbps;
description
"Reports the effective speed of the interface, e.g., the
negotiated speed if auto-negotiate is enabled";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:state/oc-if:type = 'ift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
openconfig-platform-transceiver.yang 000664 001750 001750 00000032727 13106236403 020417 0 ustar 00root1 root1 000000 000000 module openconfig-platform-transceiver {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform/transceiver";
prefix "oc-transceiver";
// import some basic types
import openconfig-platform { prefix oc-platform; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-transport-types { prefix oc-opt-types; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
import ietf-yang-types { prefix yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for transceivers (i.e., pluggable optics). The module should be
used in conjunction with the platform model where other
physical entity data are represented.
In the platform model, a component of type=TRANSCEIVER is
expected to be a subcomponent of a PORT component. This
module defines a concrete schema for the associated data for
components with type=TRANSCEIVER.";
// oc-ext:openconfig-version "0.2.0";
revision "2016-12-22" {
description
"Adds preconfiguration data and clarified units";
reference "0.2.0";
}
// identity statements
// typedef statements
// grouping statements
grouping optical-power-state {
description
"Reusable leaves related to optical power state -- these
are read-only state values. If avg/min/max statistics are
not supported, the target is expected to just supply the
instant value";
container output-power {
description
"The output optical power of this port in units of 0.01dBm.
If the port is an aggregate of multiple physical channels,
this attribute is the total power or sum of all channels.
Values include the instantaneous, average, minimum, and
maximum statistics. 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;
}
container input-power {
description
"The input optical power of this port in units of 0.01dBm.
If the port is an aggregate of multiple physical channels,
this attribute is the total power or sum of all channels.
Values include the instantaneous, average, minimum, and
maximum statistics. 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;
}
container laser-bias-current {
description
"The current applied by the system to the transmit laser to
achieve the output power. The current is expressed in mA
with up to two decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics.
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-mA;
}
}
grouping output-optical-frequency {
description
"Reusable leaves related to optical output power -- this is
typically configurable on line side and read-only on the
client-side";
leaf output-frequency {
type oc-opt-types:frequency-type;
description
"The frequency in MHz of the individual physical channel
(e.g. ITU C50 - 195.0THz and would be reported as
195,000,000 MHz in this model). This attribute is not
configurable on most client ports.";
}
}
grouping physical-channel-config {
description
"Configuration data for physical client channels";
leaf index {
type uint16 {
range 0..max;
}
description
"Index of the physical channnel or lane within a physical
client port";
}
leaf description {
type string;
description
"Text description for the client physical channel";
}
leaf tx-laser {
type boolean;
description
"Enable (true) or disable (false) the transmit label for the
channel";
}
leaf target-output-power {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"Target output optical power level of the optical channel,
expressed in increments of 0.01 dBm (decibel-milliwats)";
}
}
grouping physical-channel-state {
description
"Operational state data for client channels.";
uses output-optical-frequency;
uses optical-power-state;
}
grouping physical-channel-top {
description
"Top-level grouping for physical client channels";
container physical-channels {
description
"Enclosing container for client channels";
list channel {
key "index";
description
"List of client channels, keyed by index within a physical
client port. A physical port with a single channel would
have a single zero-indexed element";
leaf index {
type leafref {
path "../config/index";
}
description
"Reference to the index number of the channel";
}
container config {
description
"Configuration data for physical channels";
uses physical-channel-config;
}
container state {
config false;
description
"Operational state data for channels";
uses physical-channel-config;
uses physical-channel-state;
}
}
}
}
grouping port-transceiver-config {
description
"Configuration data for client port transceivers";
leaf enabled {
type boolean;
description
"Turns power on / off to the transceiver -- provides a means
to power on/off the transceiver (in the case of SFP, SFP+,
QSFP,...) or enable high-power mode (in the case of CFP,
CFP2, CFP4) and is optionally supported (device can choose to
always enable). True = power on / high power, False =
powered off";
}
leaf form-factor-preconf {
type identityref {
base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE;
}
description
"Indicates the type of optical transceiver used on this
port. If the client port is built into the device and not
pluggable, then non-pluggable is the corresponding state. If
a device port supports multiple form factors (e.g. QSFP28
and QSFP+, then the value of the transceiver installed shall
be reported. If no transceiver is present, then the value of
the highest rate form factor shall be reported
(QSFP28, for example).
The form factor is included in configuration data to allow
pre-configuring a device with the expected type of
transceiver ahead of deployment. The corresponding state
leaf should reflect the actual transceiver type plugged into
the system.";
}
leaf ethernet-pmd-preconf {
type identityref {
base oc-opt-types:ETHERNET_PMD_TYPE;
}
description
"The Ethernet PMD is a property of the optical transceiver
used on the port, indicating the type of physical connection.
It is included in configuration data to allow pre-configuring
a port/transceiver with the expected PMD. The actual PMD is
indicated by the ethernet-pmd state leaf.";
}
}
grouping port-transceiver-state {
description
"Operational state data for client port transceivers";
leaf present {
type enumeration {
enum PRESENT {
description
"Transceiver is present on the port";
}
enum NOT_PRESENT {
description
"Transceiver is not present on the port";
}
}
description
"Indicates whether a transceiver is present in
the specified client port.";
}
leaf form-factor {
type identityref {
base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE;
}
description
"Indicates the type of optical transceiver used on this
port. If the client port is built into the device and not
pluggable, then non-pluggable is the corresponding state. If
a device port supports multiple form factors (e.g. QSFP28
and QSFP+, then the value of the transceiver installed shall
be reported. If no transceiver is present, then the value of
the highest rate form factor shall be reported
(QSFP28, for example).";
}
leaf connector-type {
type identityref {
base oc-opt-types:FIBER_CONNECTOR_TYPE;
}
description
"Connector type used on this port";
}
leaf internal-temp {
// TODO: this should probably be removed if we add temperature
// as a top-level component property, i.e., transceiver temp
// should be reported there.
type int16 {
range -40..125;
}
description
"Internally measured temperature in degrees Celsius. MSA
valid range is between -40 and +125C. Accuracy shall be
better than +/- 3 degC over the whole temperature range.";
}
leaf vendor {
type string {
length 1..16;
}
description
"Full name of transceiver vendor. 16-octet field that
contains ASCII characters, left-aligned and padded on the
right with ASCII spaces (20h)";
}
leaf vendor-part {
type string {
length 1..16;
}
description
"Transceiver vendor's part number. 16-octet field that
contains ASCII characters, left-aligned and padded on the
right with ASCII spaces (20h). If part number is undefined,
all 16 octets = 0h";
}
leaf vendor-rev {
type string {
length 1..2;
}
description
"Transceiver vendor's revision number. 2-octet field that
contains ASCII characters, left-aligned and padded on the
right with ASCII spaces (20h)";
}
//TODO: these compliance code leaves should be active based on
//the type of port
leaf ethernet-pmd {
type identityref {
base oc-opt-types:ETHERNET_PMD_TYPE;
}
description
"Ethernet PMD (physical medium dependent sublayer) that the
transceiver supports. The SFF/QSFP MSAs have registers for
this and CFP MSA has similar.";
}
leaf sonet-sdh-compliance-code {
type identityref {
base oc-opt-types:SONET_APPLICATION_CODE;
}
description
"SONET/SDH application code supported by the port";
}
leaf otn-compliance-code {
type identityref {
base oc-opt-types:OTN_APPLICATION_CODE;
}
description
"OTN application code supported by the port";
}
leaf serial-no {
type string {
length 1..16;
}
description
"Transceiver serial number. 16-octet field that contains
ASCII characters, left-aligned and padded on the right with
ASCII spaces (20h). If part serial number is undefined, all
16 octets = 0h";
}
leaf date-code {
type yang:date-and-time;
description
"Representation of the transceiver date code, typically
stored as YYMMDD. The time portion of the value is
undefined and not intended to be read.";
}
leaf fault-condition {
type boolean;
description
"Indicates if a fault condition exists in the transceiver";
}
}
grouping port-transceiver-top {
description
"Top-level grouping for client port transceiver data";
container transceiver {
description
"Top-level container for client port transceiver data";
container config {
description
"Configuration data for client port transceivers";
uses port-transceiver-config;
}
container state {
config false;
description
"Operational state data for client port transceivers";
uses port-transceiver-config;
uses port-transceiver-state;
}
// physical channels are associated with a transceiver
// component
uses physical-channel-top;
}
}
// data definition statements
// augment statements
augment "/oc-platform:components/oc-platform:component" {
description
"Adding transceiver data to physical inventory";
uses port-transceiver-top {
when "current()/oc-platform:state/" +
"oc-platform:type = 'TRANSCEIVER'" {
description
"Augment is active when component is of type TRANSCEIVER";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-if:state" {
//TODO: add 'when' or other condition to make sure this
//leafref points to a component of type TRANSCEIVER.
description
"Adds a reference from the base interface to its corresponding
physical channels.";
leaf-list physical-channel {
type leafref {
path "/oc-platform:components/" +
"oc-platform:component[oc-platform:name=current()/../oc-platform:hardware-port]/" +
"oc-transceiver:transceiver/" +
"oc-transceiver:physical-channels/oc-transceiver:channel/" +
"oc-transceiver:index";
}
description
"For a channelized interface, list of references to the
physical channels (lanes) corresponding to the interface.";
}
}
// rpc statements
// notification statements
}
openconfig-extensions.yang 000664 001750 001750 00000005374 13076064563 016461 0 ustar 00root1 root1 000000 000000 module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "TBD";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "TBD";
}
revision "2015-10-05" {
description
"Initial revision";
reference "TBD";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Where several modules are used to build up a single block of
functionality, the same module version is specified across each
file that makes up the module.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-encrypted-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in encrypted form.
Clients reading the configuration or applied configuration
for the node should expect to receive only the encrypted value.
This annotation may be used on nodes such as secure passwords
in which the device never reports a cleartext value, even
if the input is provided as cleartext.";
}
} ietf-yang-types.yang 000664 001750 001750 00000043156 12714542252 015154 0 ustar 00root1 root1 000000 000000 module ietf-yang-types {
yang-version 1;
namespace
"urn:ietf:params:xml:ns:yang:ietf-yang-types";
prefix yang;
organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
contact
"WG Web:
WG List:
WG Chair: David Kessens
WG Chair: Juergen Schoenwaelder
Editor: Juergen Schoenwaelder
";
description
"This module contains a collection of generally useful derived
YANG data types.
Copyright (c) 2013 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 6991; see
the RFC itself for full legal notices.";
revision "2013-07-15" {
description
"This revision adds the following new data types:
- yang-identifier
- hex-string
- uuid
- dotted-quad";
reference
"RFC 6991: Common YANG Data Types";
}
revision "2010-09-24" {
description "Initial revision.";
reference
"RFC 6021: Common YANG Data Types";
}
typedef counter32 {
type uint32;
description
"The counter32 type represents a non-negative integer
that monotonically increases until it reaches a
maximum value of 2^32-1 (4294967295 decimal), when it
wraps around and starts increasing again from zero.
Counters have no defined 'initial' value, and thus, a
single value of a counter has (in general) no information
content. Discontinuities in the monotonically increasing
value normally occur at re-initialization of the
management system, and at other times as specified in the
description of a schema node using this type. If such
other times can occur, for example, the creation of
a schema node of type counter32 at times other than
re-initialization, then a corresponding schema node
should be defined, with an appropriate type, to indicate
the last discontinuity.
The counter32 type should not be used for configuration
schema nodes. A default statement SHOULD NOT be used in
combination with the type counter32.
In the value set and its semantics, this type is equivalent
to the Counter32 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef zero-based-counter32 {
type counter32;
default "0";
description
"The zero-based-counter32 type represents a counter32
that has the defined 'initial' value zero.
A schema node of this type will be set to zero (0) on creation
and will thereafter increase monotonically until it reaches
a maximum value of 2^32-1 (4294967295 decimal), when it
wraps around and starts increasing again from zero.
Provided that an application discovers a new schema node
of this type within the minimum time to wrap, it can use the
'initial' value as a delta. It is important for a management
station to be aware of this minimum time and the actual time
between polls, and to discard data if the actual time is too
long or there is no defined minimum time.
In the value set and its semantics, this type is equivalent
to the ZeroBasedCounter32 textual convention of the SMIv2.";
reference
"RFC 4502: Remote Network Monitoring Management Information
Base Version 2";
}
typedef counter64 {
type uint64;
description
"The counter64 type represents a non-negative integer
that monotonically increases until it reaches a
maximum value of 2^64-1 (18446744073709551615 decimal),
when it wraps around and starts increasing again from zero.
Counters have no defined 'initial' value, and thus, a
single value of a counter has (in general) no information
content. Discontinuities in the monotonically increasing
value normally occur at re-initialization of the
management system, and at other times as specified in the
description of a schema node using this type. If such
other times can occur, for example, the creation of
a schema node of type counter64 at times other than
re-initialization, then a corresponding schema node
should be defined, with an appropriate type, to indicate
the last discontinuity.
The counter64 type should not be used for configuration
schema nodes. A default statement SHOULD NOT be used in
combination with the type counter64.
In the value set and its semantics, this type is equivalent
to the Counter64 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef zero-based-counter64 {
type counter64;
default "0";
description
"The zero-based-counter64 type represents a counter64 that
has the defined 'initial' value zero.
A schema node of this type will be set to zero (0) on creation
and will thereafter increase monotonically until it reaches
a maximum value of 2^64-1 (18446744073709551615 decimal),
when it wraps around and starts increasing again from zero.
Provided that an application discovers a new schema node
of this type within the minimum time to wrap, it can use the
'initial' value as a delta. It is important for a management
station to be aware of this minimum time and the actual time
between polls, and to discard data if the actual time is too
long or there is no defined minimum time.
In the value set and its semantics, this type is equivalent
to the ZeroBasedCounter64 textual convention of the SMIv2.";
reference
"RFC 2856: Textual Conventions for Additional High Capacity
Data Types";
}
typedef gauge32 {
type uint32;
description
"The gauge32 type represents a non-negative integer, which
may increase or decrease, but shall never exceed a maximum
value, nor fall below a minimum value. The maximum value
cannot be greater than 2^32-1 (4294967295 decimal), and
the minimum value cannot be smaller than 0. The value of
a gauge32 has its maximum value whenever the information
being modeled is greater than or equal to its maximum
value, and has its minimum value whenever the information
being modeled is smaller than or equal to its minimum value.
If the information being modeled subsequently decreases
below (increases above) the maximum (minimum) value, the
gauge32 also decreases (increases).
In the value set and its semantics, this type is equivalent
to the Gauge32 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef gauge64 {
type uint64;
description
"The gauge64 type represents a non-negative integer, which
may increase or decrease, but shall never exceed a maximum
value, nor fall below a minimum value. The maximum value
cannot be greater than 2^64-1 (18446744073709551615), and
the minimum value cannot be smaller than 0. The value of
a gauge64 has its maximum value whenever the information
being modeled is greater than or equal to its maximum
value, and has its minimum value whenever the information
being modeled is smaller than or equal to its minimum value.
If the information being modeled subsequently decreases
below (increases above) the maximum (minimum) value, the
gauge64 also decreases (increases).
In the value set and its semantics, this type is equivalent
to the CounterBasedGauge64 SMIv2 textual convention defined
in RFC 2856";
reference
"RFC 2856: Textual Conventions for Additional High Capacity
Data Types";
}
typedef object-identifier {
type string {
pattern
'(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))(\.(0|([1-9]\d*)))*';
}
description
"The object-identifier type represents administratively
assigned names in a registration-hierarchical-name tree.
Values of this type are denoted as a sequence of numerical
non-negative sub-identifier values. Each sub-identifier
value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
are separated by single dots and without any intermediate
whitespace.
The ASN.1 standard restricts the value space of the first
sub-identifier to 0, 1, or 2. Furthermore, the value space
of the second sub-identifier is restricted to the range
0 to 39 if the first sub-identifier is 0 or 1. Finally,
the ASN.1 standard requires that an object identifier
has always at least two sub-identifiers. The pattern
captures these restrictions.
Although the number of sub-identifiers is not limited,
module designers should realize that there may be
implementations that stick with the SMIv2 limit of 128
sub-identifiers.
This type is a superset of the SMIv2 OBJECT IDENTIFIER type
since it is not restricted to 128 sub-identifiers. Hence,
this type SHOULD NOT be used to represent the SMIv2 OBJECT
IDENTIFIER type; the object-identifier-128 type SHOULD be
used instead.";
reference
"ISO9834-1: Information technology -- Open Systems
Interconnection -- Procedures for the operation of OSI
Registration Authorities: General procedures and top
arcs of the ASN.1 Object Identifier tree";
}
typedef object-identifier-128 {
type object-identifier {
pattern '\d*(\.\d*){1,127}';
}
description
"This type represents object-identifiers restricted to 128
sub-identifiers.
In the value set and its semantics, this type is equivalent
to the OBJECT IDENTIFIER type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef yang-identifier {
type string {
length "1..max";
pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
pattern
'.|..|[^xX].*|.[^mM].*|..[^lL].*';
}
description
"A YANG identifier string as defined by the 'identifier'
rule in Section 12 of RFC 6020. An identifier must
start with an alphabetic character or an underscore
followed by an arbitrary sequence of alphabetic or
numeric characters, underscores, hyphens, or dots.
A YANG identifier MUST NOT start with any possible
combination of the lowercase or uppercase character
sequence 'xml'.";
reference
"RFC 6020: YANG - A Data Modeling Language for the Network
Configuration Protocol (NETCONF)";
}
typedef date-and-time {
type string {
pattern
'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-]\d{2}:\d{2})';
}
description
"The date-and-time type is a profile of the ISO 8601
standard for representation of dates and times using the
Gregorian calendar. The profile is defined by the
date-time production in Section 5.6 of RFC 3339.
The date-and-time type is compatible with the dateTime XML
schema type with the following notable exceptions:
(a) The date-and-time type does not allow negative years.
(b) The date-and-time time-offset -00:00 indicates an unknown
time zone (see RFC 3339) while -00:00 and +00:00 and Z
all represent the same time zone in dateTime.
(c) The canonical format (see below) of data-and-time values
differs from the canonical format used by the dateTime XML
schema type, which requires all times to be in UTC using
the time-offset 'Z'.
This type is not equivalent to the DateAndTime textual
convention of the SMIv2 since RFC 3339 uses a different
separator between full-date and full-time and provides
higher resolution of time-secfrac.
The canonical format for date-and-time values with a known time
zone uses a numeric time zone offset that is calculated using
the device's configured known offset to UTC time. A change of
the device's offset to UTC time will cause date-and-time values
to change accordingly. Such changes might happen periodically
in case a server follows automatically daylight saving time
(DST) time zone offset changes. The canonical format for
date-and-time values with an unknown time zone (usually
referring to the notion of local time) uses the time-offset
-00:00.";
reference
"RFC 3339: Date and Time on the Internet: Timestamps
RFC 2579: Textual Conventions for SMIv2
XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
}
typedef timeticks {
type uint32;
description
"The timeticks type represents a non-negative integer that
represents the time, modulo 2^32 (4294967296 decimal), in
hundredths of a second between two epochs. When a schema
node is defined that uses this type, the description of
the schema node identifies both of the reference epochs.
In the value set and its semantics, this type is equivalent
to the TimeTicks type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef timestamp {
type timeticks;
description
"The timestamp type represents the value of an associated
timeticks schema node at which a specific occurrence
happened. The specific occurrence must be defined in the
description of any schema node defined using this type. When
the specific occurrence occurred prior to the last time the
associated timeticks attribute was zero, then the timestamp
value is zero. Note that this requires all timestamp values
to be reset to zero when the value of the associated timeticks
attribute reaches 497+ days and wraps around to zero.
The associated timeticks schema node must be specified
in the description of any schema node using this type.
In the value set and its semantics, this type is equivalent
to the TimeStamp textual convention of the SMIv2.";
reference
"RFC 2579: Textual Conventions for SMIv2";
}
typedef phys-address {
type string {
pattern
'([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"Represents media- or physical-level addresses represented
as a sequence octets, each octet represented by two hexadecimal
numbers. Octets are separated by colons. The canonical
representation uses lowercase characters.
In the value set and its semantics, this type is equivalent
to the PhysAddress textual convention of the SMIv2.";
reference
"RFC 2579: Textual Conventions for SMIv2";
}
typedef mac-address {
type string {
pattern
'[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"The mac-address type represents an IEEE 802 MAC address.
The canonical representation uses lowercase characters.
In the value set and its semantics, this type is equivalent
to the MacAddress textual convention of the SMIv2.";
reference
"IEEE 802: IEEE Standard for Local and Metropolitan Area
Networks: Overview and Architecture
RFC 2579: Textual Conventions for SMIv2";
}
typedef xpath1.0 {
type string;
description
"This type represents an XPATH 1.0 expression.
When a schema node is defined that uses this type, the
description of the schema node MUST specify the XPath
context in which the XPath expression is evaluated.";
reference
"XPATH: XML Path Language (XPath) Version 1.0";
}
typedef hex-string {
type string {
pattern
'([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A hexadecimal string with octets represented as hex digits
separated by colons. The canonical representation uses
lowercase characters.";
}
typedef uuid {
type string {
pattern
'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
}
description
"A Universally Unique IDentifier in the string representation
defined in RFC 4122. The canonical representation uses
lowercase characters.
The following is an example of a UUID in string representation:
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
";
reference
"RFC 4122: A Universally Unique IDentifier (UUID) URN
Namespace";
}
typedef dotted-quad {
type string {
pattern
'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
}
description
"An unsigned 32-bit number expressed in the dotted-quad
notation, i.e., four octets written as decimal numbers
and separated with the '.' (full stop) character.";
}
} // module ietf-yang-types
openconfig-platform-types.yang 000664 001750 001750 00000007337 13106236403 017235 0 ustar 00root1 root1 000000 000000 module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
// oc-ext:openconfig-version "0.5.0";
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity MODULE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware module, e.g., a daughtercard";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
}
openconfig-platform.yang 000664 001750 001750 00000023315 13106236403 016065 0 ustar 00root1 root1 000000 000000 module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
// oc-ext:openconfig-version "0.5.0";
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data ";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data ";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this will not be a
configurable parameter on many implementations";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf version {
type string;
description
"System-defined version string for a hardware, firmware,
or software component.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replacable unit)";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
augment "/oc-if:interfaces/oc-if:interface/oc-if:state" {
//TODO: add 'when' or other condition to make sure this
//leafref points to a component of type PORT.
description
"Adds a reference from the base interface to the corresponding
port component in the device inventory.";
leaf hardware-port {
type leafref {
path "/oc-platform:components/oc-platform:component/" +
"oc-platform:name";
}
description
"References the hardware port in the device inventory";
}
}
}
openconfig-interfaces.yang 000664 001750 001750 00000070626 13106236423 016375 0 ustar 00root1 root1 000000 000000 module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import ietf-yang-types { prefix yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and and with
additional configuration items.";
//// oc-ext:openconfig-version "1.1.0";
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf name {
type string;
description
"[adapted from IETF interfaces model (RFC 7223)]
The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
leaf description {
type string;
description
"[adapted from IETF interfaces model (RFC 7223)]
A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"[adapted from IETF interfaces model (RFC 7223)]
This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"[adapted from IETF interfaces model (RFC 7223)]
The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"[adapted from IETF interfaces model (RFC 7223)]
The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"[adapted from IETF interfaces model (RFC 7223)]
The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:timeticks;
description
"Date and time of the last state change of the interface
(e.g., up-to-down transition). This corresponds to the
ifLastChange object in the standard interface MIB.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics. Some of these are adapted from RFC 7223";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
container counters {
description
"A collection of interface-related statistics objects.";
reference
"RFC 7223 - A YANG Data Model for Interface
Management";
leaf in-octets {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter64;
description
"[adapted from IETF interfaces model (RFC 7223)]
Changed the counter type to counter64.
For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf last-clear {
type yang:date-and-time;
description
"Indicates the last time the interface counters were
cleared.";
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the configured name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
openconfig-terminal-device.yang 000664 001750 001750 00000100527 13106236406 017315 0 ustar 00root1 root1 000000 000000 module openconfig-terminal-device {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/terminal-device";
prefix "oc-opt-term";
import openconfig-types { prefix oc-types; }
import openconfig-transport-types { prefix oc-opt-types; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-platform { prefix oc-platform; }
import openconfig-platform-transceiver { prefix oc-transceiver; }
import openconfig-extensions { prefix oc-ext; }
import ietf-yang-types { prefix yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module describes a terminal optics device model for
managing the terminal systems (client and line side) in a
DWDM transport network.
Elements of the model:
physical port: corresponds to a physical, pluggable client
port on the terminal device. Examples includes 10G, 40G, 100G
(e.g., 10x10G, 4x25G or 1x100G) and 400G/1T in the future.
Physical client ports will have associated operational state or
PMs.
physical channel: a physical lane or channel in the
physical client port. Each physical client port has 1 or more
channels. An example is 100GBASE-LR4 client physical port having
4x25G channels. Channels have their own optical PMs and can be
monitored independently within a client physical port (e.g.,
channel power). Physical client channels are defined in the
model as part of a physical client port, and are modeled
primarily for reading their PMs.
logical channel: a logical grouping of logical grooming elements
that may be assigned to subsequent grooming stages for
multiplexing / de-multiplexing, or to an optical channel for
line side transmission. The logical channels can represent, for
example, an ODU/OTU logical packing of the client
data onto the line side. Tributaries are similarly logical
groupings of demand that can be represented in this structure and
assigned to an optical channel. Note that different types of
logical channels may be present, each with their corresponding
PMs.
optical channel: corresponds to an optical carrier and is
assigned a wavelength/frequency. Optical channels have PMs
such as power, BER, and operational mode.
Directionality:
To maintain simplicity in the model, the configuration is
described from client-to-line direction. The assumption is that
equivalent reverse configuration is implicit, resulting in
the same line-to-client configuration.
Physical layout:
The model does not assume a particular physical layout of client
and line ports on the terminal device (e.g., such as number of
ports per linecard, separate linecards for client and line ports,
etc.).";
// oc-ext:openconfig-version "0.4.0";
revision "2016-12-22" {
description
"Fixes and additions to terminal optics model";
reference "0.4.0";
}
grouping terminal-input-optical-power {
description
"Reusable leaves related to input optical power";
leaf input-power {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The input optical power of this port in units of 0.01dBm.
If the port is an aggregate of multiple physical channels,
this attribute is the total power or sum of all channels.";
}
}
grouping terminal-ethernet-protocol-config {
description
"Configuration data for logical channels with Ethernet
framing";
//TODO:currently a empty container
}
grouping terminal-ethernet-protocol-state {
description
"Ethernet-specific counters when logical channel
is using Ethernet protocol framing, e.g., 10GE, 100GE";
uses oc-eth:ethernet-interface-state-counters;
}
grouping terminal-ethernet-protocol-top {
description
"Top-level grouping for data related to Ethernet protocol
framing on logical channels";
container ethernet {
description
"Top level container for data related to Ethernet framing
for the logical channel";
container config {
description
"Configuration data for Ethernet protocol framing on
logical channels";
uses terminal-ethernet-protocol-config;
}
container state {
config false;
description
"Operational state data for Ethernet protocol framing
on logical channels";
uses terminal-ethernet-protocol-state;
}
}
}
grouping terminal-otn-protocol-config {
description
"OTU configuration when logical channel
framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
leaf tti-msg-transmit {
type string;
description
"Trail trace identifier (TTI) message transmitted";
}
leaf tti-msg-expected {
type string;
description
"Trail trace identifier (TTI) message expected";
}
leaf tti-msg-auto {
type boolean;
description
"Trail trace identifier (TTI) transmit message automatically
created. If true, then setting a custom transmit message
would be invalid.";
}
}
grouping terminal-otn-protocol-counter-stats {
description
"Counter based statistics containers for logical channels
using OTN framing";
leaf errored-seconds {
type yang:counter64;
description
"The number of seconds that at least one errored blocks
occurs, at least one code violation occurs, loss of sync is
detected or loss of signal is detected";
}
leaf severely-errored-seconds {
type yang:counter64;
description
"The number of seconds that loss of frame is detected OR
the number of errored blocks, code violations, loss of sync
or loss of signal is detected exceeds a predefined
threshold";
}
leaf unavailable-seconds {
type yang:counter64;
description
"The number of seconds during which the link is unavailable";
}
leaf code-violations {
type yang:counter64;
description
"For ethernet or fiberchannel links, the number of 8b/10b
coding violations. For SONET/SDH, the number of BIP (bit
interleaved parity) errors";
}
leaf fec-uncorrectable-words {
type yang:counter64;
description
"The number words that were uncorrectable by the FEC";
}
leaf fec-corrected-bytes {
type yang:counter64;
description
"The number of bytes that were corrected by the FEC";
}
leaf fec-corrected-bits {
type yang:counter64;
description
"The number of bits that were corrected by the FEC";
}
leaf background-block-errors {
type yang:counter64;
description
"The number of background block errors";
}
}
grouping terminal-otn-protocol-multi-stats {
description
"Multi-value statistics containers for logical channels using
OTN framing (e.g., max, min, avg, instant)";
container pre-fec-ber {
description
"Bit error rate before forward error correction -- computed
value with 18 decimal precision. Note that decimal64
supports values as small as i x 10^-18 where i is an
integer. Values smaller than this should be reported as 0
to inidicate error free or near error free performance.
Values include the instantaneous, average, minimum, and
maximum statistics. If avg/min/max statistics are not
supported, the target is expected to just supply the
instant value";
uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
}
container post-fec-ber {
description
"Bit error rate after forward error correction -- computed
value with 18 decimal precision. Note that decimal64
supports values as small as i x 10^-18 where i is an
integer. Values smaller than this should be reported as 0
to inidicate error free or near error free performance.
Values include the instantaneous, average, minimum, and
maximum statistics. If avg/min/max statistics are not
supported, the target is expected to just supply the
instant value";
uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
}
container q-value {
description
"Quality value (factor) in dB of a channel with two
decimal precision. Values include the instantaneous,
average, minimum, and maximum statistics. 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-dB;
}
container esnr {
description
"Electrical signal to noise ratio. Baud rate
normalized signal to noise ratio based on
error vector magnitude in dB with two decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. 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-dB;
}
}
grouping terminal-otn-protocol-state {
description
"OTU operational state when logical channel
framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
leaf tti-msg-recv {
type string;
description
"Trail trace identifier (TTI) message received";
}
leaf rdi-msg {
type string;
description
"Remote defect indication (RDI) message received";
}
uses terminal-otn-protocol-counter-stats;
uses terminal-otn-protocol-multi-stats;
}
grouping terminal-otn-protocol-top {
description
"Top-level grouping for data related to OTN protocol framing";
container otn {
description
"Top level container for OTU configuration when logical
channel framing is using an OTU protocol, e.g., OTU1, OTU3,
etc.";
container config {
description
"Configuration data for OTN protocol framing";
uses terminal-otn-protocol-config;
}
container state {
config false;
description
"Operational state data for OTN protocol PMs, statistics,
etc.";
uses terminal-otn-protocol-config;
uses terminal-otn-protocol-state;
}
}
}
grouping terminal-client-port-assignment-config {
description
"Configuration data for assigning physical client ports to
logical channels";
leaf index {
type uint32;
description
"Index of the client port assignment";
}
leaf description {
type string;
description
"Descriptive name for the client port-to-logical channel
mapping";
}
leaf logical-channel {
type leafref {
path "/oc-opt-term:terminal-device/oc-opt-term:logical-channels" +
"/oc-opt-term:channel/oc-opt-term:index";
}
description
"Reference to the logical channel for this
assignment";
}
leaf allocation {
type decimal64 {
fraction-digits 3;
}
units Gbps;
description
"Allocation of the client physical port to the assigned
logical channel expressed in Gbps. In most cases,
the full client physical port rate is assigned to a single
logical channel.";
}
}
grouping terminal-client-port-assignment-state {
description
"Operational state data for assigning physical client ports
to logical channels";
}
grouping terminal-client-port-assignment-top {
description
"Top-level grouping for the assigment of client physical ports
to logical channels";
//TODO: this grouping could be removed, instead reusing a common
//grouping for logical client assignment pointers
container logical-channel-assignments {
description
"Enclosing container for client port to logical client
mappings";
list assignment {
key "index";
description
"List of assignments to logical clients";
leaf index {
type leafref {
path "../config/index";
}
description
"Reference to the index of this logical client
assignment";
}
container config {
description
"Configuration data for the logical client assignment";
uses terminal-client-port-assignment-config;
}
container state {
config false;
description
"Operational state data for the logical client
assignment";
uses terminal-client-port-assignment-config;
uses terminal-client-port-assignment-state;
}
}
}
}
grouping terminal-logical-chan-assignment-config {
description
"Configuration data for assigning client logical channels
to line-side tributaries";
leaf index {
type uint32;
description
"Index of the current logical client channel to tributary
mapping";
}
leaf description {
type string;
description
"Name assigned to the logical client channel";
}
leaf assignment-type {
type enumeration {
enum LOGICAL_CHANNEL {
description
"Subsequent channel is a logical channel";
}
enum OPTICAL_CHANNEL {
description
"Subsequent channel is a optical channel / carrier";
}
}
description
"Each logical channel element may be assigned to subsequent
stages of logical elements to implement further grooming, or
can be assigned to a line-side optical channel for
transmission. Each assignment also has an associated
bandwidth allocation.";
}
leaf logical-channel {
type leafref {
path "/oc-opt-term:terminal-device/" +
"oc-opt-term:logical-channels/oc-opt-term:channel/" +
"oc-opt-term:index";
}
must "../assignment-type = 'LOGICAL_CHANNEL'" {
description
"The assignment-type must be set to LOGICAL_CHANNEL for
this leaf to be valid";
}
description
"Reference to another stage of logical channel elements.";
}
leaf optical-channel {
type leafref {
path "/oc-platform:components/oc-platform:component/" +
"oc-platform:name";
}
must "../assignment-type = 'OPTICAL_CHANNEL'" {
description
"The assignment-type must be set to OPTICAL_CHANNEL for
this leaf to be valid";
}
description
"Reference to the line-side optical channel that should
carry the current logical channel element. Use this
reference to exit the logical element stage.";
}
leaf allocation {
type decimal64 {
fraction-digits 3;
}
units Gbps;
description
"Allocation of the logical client channel to the tributary
or sub-channel, expressed in Gbps";
}
}
grouping terminal-logical-chan-assignment-state {
description
"Operational state data for the assignment of logical client
channel to line-side tributary";
}
grouping terminal-logical-chan-assignment-top {
description
"Top-level grouping for the list of logical client channel-to-
tributary assignments";
container logical-channel-assignments {
//TODO: we need a commonly understood name for this logical
//channel structure
description
"Enclosing container for tributary assignments";
list assignment {
key "index";
description
"Logical channel elements may be assigned directly to
optical channels for line-side transmission, or can be
further groomed into additional stages of logical channel
elements. The grooming can multiplex (i.e., split the
current element into multiple elements in the subsequent
stage) or de-multiplex (i.e., combine the current element
with other elements into the same element in the subsequent
stage) logical elements in each stage.
Note that to support the ability to groom the logical
elements, the list of logical channel elements should be
populated with an entry for the logical elements at
each stage, starting with the initial assignment from the
respective client physical port.
Each logical element assignment consists of a pointer to
an element in the next stage, or to an optical channel,
along with a bandwidth allocation for the corresponding
assignment (e.g., to split or combine signal).";
leaf index {
type leafref {
path "../config/index";
}
description
"Reference to the index for the current tributary
assignment";
}
container config {
description
"Configuration data for tributary assignments";
uses terminal-logical-chan-assignment-config;
}
container state {
config false;
description
"Operational state data for tributary assignments";
uses terminal-logical-chan-assignment-config;
uses terminal-logical-chan-assignment-state;
}
}
}
}
grouping terminal-logical-channel-ingress-config {
description
"Configuration data for ingress signal to logical channel";
leaf transceiver {
type leafref {
path "/oc-platform:components/oc-platform:component/" +
"oc-platform:name";
}
description
"Reference to the transceiver carrying the input signal
for the logical channel. If specific physical channels
are mapped to the logical channel (as opposed to all
physical channels carried by the transceiver), they can be
specified in the list of physical channel references.";
}
leaf-list physical-channel {
type leafref {
path "/oc-platform:components/oc-platform:component/" +
"oc-transceiver:transceiver/" +
"oc-transceiver:physical-channels/" +
"oc-transceiver:channel/oc-transceiver:index";
}
description
"This list should be populated with references
to the client physical channels that feed this logical
channel from the transceiver specified in the 'transceiver'
leaf, which must be specified. If this leaf-list is empty,
all physical channels in the transceiver are assumed to be
mapped to the logical channel.";
}
}
grouping terminal-logical-channel-ingress-state {
description
"Operational state data for ingress signal to logical channel";
}
grouping terminal-logical-channel-ingress-top {
description
"Top-level grouping for ingress signal to logical channel";
container ingress {
description
"Top-level container for specifying references to the
source of signal for the logical channel, either a
transceiver or individual physical channels";
container config {
description
"Configuration data for the signal source for the
logical channel";
uses terminal-logical-channel-ingress-config;
}
container state {
config false;
description
"Operational state data for the signal source for the
logical channel";
uses terminal-logical-channel-ingress-config;
uses terminal-logical-channel-ingress-state;
}
}
}
grouping terminal-logical-channel-config {
description
"Configuration data for logical channels";
leaf index {
type uint32;
description
"Index of the current logical channel";
}
leaf description {
type string;
description
"Description of the logical channel";
}
leaf admin-state {
type oc-opt-types:admin-state-type;
description
"Sets the admin state of the logical channel";
}
leaf rate-class {
type identityref {
base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE;
}
description
"Rounded bit rate of the tributary signal. Exact bit rate
will be refined by protocol selection.";
}
leaf trib-protocol {
type identityref {
base oc-opt-types:TRIBUTARY_PROTOCOL_TYPE;
}
description
"Protocol framing of the tributary signal. If this
LogicalChannel is directly connected to a Client-Port or
Optical-Channel, this is the protocol of the associated port.
If the LogicalChannel is connected to other LogicalChannels,
the TributaryProtocol of the LogicalChannels will define a
specific mapping/demapping or multiplexing/demultiplexing
function.
Not all protocols are valid, depending on the value
of trib-rate-class. The expectation is that the NMS
will validate that a correct combination of rate class
and protocol are specfied. Basic combinations are:
rate class: 1G
protocols: 1GE
rate class: 2.5G
protocols: OC48, STM16
rate class: 10G
protocols: 10GE LAN, 10GE WAN, OC192, STM64, OTU2, OTU2e,
OTU1e, ODU2, ODU2e, ODU1e
rate class: 40G
protocols: 40GE, OC768, STM256, OTU3, ODU3
rate class: 100G
protocols: 100GE, 100G MLG, OTU4, OTUCn, ODU4";
}
leaf logical-channel-type {
type identityref {
base oc-opt-types:LOGICAL_ELEMENT_PROTOCOL_TYPE;
}
description
"The type / stage of the logical element determines the
configuration and operational state parameters (PMs)
available for the logical element";
}
leaf loopback-mode {
type oc-opt-types:loopback-mode-type;
description
"Sets the loopback type on the logical channel. Setting the
mode to something besides NONE activates the loopback in
the specified mode.";
}
}
grouping terminal-logical-channel-state {
description
"Operational state data for logical client channels";
leaf link-state {
type enumeration {
enum UP {
description
"Logical channel is operationally up";
}
enum DOWN {
description
"Logical channel is operationally down";
}
}
description
"Link-state of the Ethernet protocol on the logical channel,
SONET / SDH framed signal, etc.";
}
}
grouping terminal-logical-channel-top {
description
"Top-level grouping for logical channels";
container logical-channels {
description
"Enclosing container the list of logical channels";
list channel {
key "index";
description
"List of logical channels";
//TODO: naming for this list of logical elements should be
//revisited.
leaf index {
type leafref {
path "../config/index";
}
description
"Reference to the index of the logical channel";
}
container config {
description
"Configuration data for logical channels";
uses terminal-logical-channel-config;
}
container state {
config false;
description
"Operational state data for logical channels";
uses terminal-logical-channel-config;
uses terminal-logical-channel-state;
}
uses terminal-otn-protocol-top {
when "config/logical-channel-type = 'PROT_OTN'" {
description
"Include the OTN protocol data only when the
channel is using OTN framing.";
}
}
uses terminal-ethernet-protocol-top {
when "config/logical-channel-type = 'PROT_ETHERNET'" {
description
"Include the Ethernet protocol statistics only when the
protocol used by the link is Ethernet.";
}
}
uses terminal-logical-channel-ingress-top;
uses terminal-logical-chan-assignment-top;
}
}
}
grouping terminal-optical-channel-config {
description
"Configuration data for describing optical channels";
leaf frequency {
type oc-opt-types:frequency-type;
description
"Frequency of the optical channel, expressed in MHz";
}
leaf target-output-power {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"Target output optical power level of the optical channel,
expressed in increments of 0.01 dBm (decibel-milliwats)";
}
leaf operational-mode {
type uint16;
description
"Vendor-specific mode identifier -- sets the operational
mode for the channel. The specified operational mode must
exist in the list of supported operational modes supplied
by the device";
//
// Ideally, this leaf should be a leafref to the supported
// operational modes, but YANG 1.0 does not allow a r/w
// leaf to be a leafref to a r/o leaf.
}
leaf line-port {
type leafref {
path "/oc-platform:components/oc-platform:component/" +
"oc-platform:name";
}
description
"Reference to the line-side physical port that carries
this optical channel. The target port should be
a component in the physical inventory data model.";
}
}
grouping terminal-optical-channel-state {
description
"Operational state data for optical channels";
leaf group-id {
type uint32;
description
"If the device places constraints on which optical
channels must be managed together (e.g., transmitted on the
same line port), it can indicate that by setting the group-id
to the same value across related optical channels.";
}
uses oc-transceiver:optical-power-state;
container chromatic-dispersion {
description
"Chromatic Dispersion of an optical channel in
picoseconds / nanometer (ps/nm) as reported by receiver
with two decimal precision. Values include the instantaneous,
average, minimum, and maximum statistics. If avg/min/max
statistics are not supported, the target is expected to just
supply the instant value";
uses oc-opt-types:avg-min-max-instant-stats-precision2-ps-nm;
}
container polarization-mode-dispersion {
description
"Polarization Mode Dispersion of an optical channel
in picosends (ps) as reported by receiver with two decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. If avg/min/max statistics
are not supported, the target is expected to just supply the
instant value";
uses oc-opt-types:avg-min-max-instant-stats-precision2-ps;
}
container second-order-polarization-mode-dispersion {
description
"Second Order Polarization Mode Dispersion of an optical
channel in picoseconds squared (ps^2) as reported by
receiver with two decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics.
If avg/min/max statistics are not supported, the target
is expected to just supply the instant value";
uses oc-opt-types:avg-min-max-instant-stats-precision2-ps2;
}
container polarization-dependent-loss {
description
"Polarization Dependent Loss of an optical channel
in dB as reported by receiver with two decimal precision.
Values include the instantaneous, average, minimum, and
maximum statistics. 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-dB;
}
}
grouping terminal-optical-channel-top {
description
"Top-level grouping for optical channel data";
container optical-channel {
description
"Enclosing container for the list of optical channels";
container config {
description
"Configuration data for optical channels";
uses terminal-optical-channel-config;
}
container state {
config false;
description
"Operational state data for optical channels";
uses terminal-optical-channel-config;
uses terminal-optical-channel-state;
}
}
}
grouping terminal-operational-mode-config {
description
"Configuration data for vendor-supported operational modes";
}
grouping terminal-operational-mode-state {
description
"Operational state data for vendor-supported operational
modes";
leaf mode-id {
type uint16;
description
"Two-octet encoding of the vendor-defined operational
mode";
}
leaf description {
type string;
description
"Vendor-supplied textual description of the characteristics
of this operational mode to enable operators to select the
appropriate mode for the application.";
}
//TODO: examples of the kind of info that would be useful to
//report in the operational mode:
//Symbol rate (32G, 40G, 43G, 64G, etc.)
//Modulation (QPSK, 8-QAM, 16-QAM, etc.)
//Differential encoding (on, off/pilot symbol, etc)
//State of polarization tracking mode (default, med.
//high-speed, etc.)
//Pulse shaping (RRC, RC, roll-off factor)
//FEC mode (SD, HD, % OH)
leaf vendor-id {
type string;
description
"Identifier to represent the vendor / supplier of the
platform and the associated operational mode information";
}
}
grouping terminal-operational-mode-top {
description
"Top-level grouping for vendor-supported operational modes";
container operational-modes {
description
"Enclosing container for list of operational modes";
list mode {
key "mode-id";
config false;
description
"List of operational modes supported by the platform.
The operational mode provides a platform-defined summary
of information such as symbol rate, modulation, pulse
shaping, etc.";
leaf mode-id {
type leafref {
path "../state/mode-id";
}
description
"Reference to mode-id";
}
container config {
description
"Configuration data for operational mode";
uses terminal-operational-mode-config;
}
container state {
config false;
description
"Operational state data for the platform-defined
operational mode";
uses terminal-operational-mode-config;
uses terminal-operational-mode-state;
}
}
}
}
grouping terminal-device-config {
description
"Configuration data for transport terminal devices at a
device-wide level";
}
grouping terminal-device-state {
description
"Operational state data for transport terminal devices at a
device-wide level";
}
grouping terminal-device-top {
description
"Top-level grouping for data for terminal devices";
container terminal-device {
description
"Top-level container for the terminal device";
container config {
description
"Configuration data for global terminal-device";
uses terminal-device-config;
}
container state {
config false;
description
"Operational state data for global terminal device";
uses terminal-device-config;
uses terminal-device-state;
}
uses terminal-logical-channel-top;
uses terminal-operational-mode-top;
}
}
// data definition statements
uses terminal-device-top;
// augment statements
augment "/oc-platform:components/oc-platform:component" {
when "/oc-platform:components/oc-platform:component/" +
"oc-platform:state/oc-platform:type = 'OPTICAL_CHANNEL'" {
description
"Augment is active when component is of type
OPTICAL_CHANNEL";
}
description
"Adding optical channel data to physical inventory";
uses terminal-optical-channel-top {
}
}
}
iana-if-type.yang 000664 001750 001750 00000110552 13104562207 014401 0 ustar 00root1 root1 000000 000000 module iana-if-type {
namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
prefix ianaift;
import ietf-interfaces {
prefix if;
}
organization "IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States
Tel: +1 310 301 5800
";
description
"This YANG module defines YANG identities for IANA-registered
interface types.
This YANG module is maintained by IANA and reflects the
'ifType definitions' registry.
The latest revision of this YANG module can be obtained from
the IANA web site.
Requests for new values should be made to IANA via
email (iana&iana.org).
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
The initial version of this YANG module is part of RFC 7224;
see the RFC itself for full legal notices.";
reference
"IANA 'ifType definitions' registry.
";
revision 2017-03-30 {
description
"Registered ifType 290.";
}
revision 2017-01-19 {
description
"Registered ifType 289.";
}
revision 2016-11-23 {
description
"Registered ifTypes 283-288.";
}
revision 2016-06-09 {
description
"Registered ifType 282.";
}
revision 2016-05-03 {
description
"Registered ifType 281.";
}
revision 2015-06-12 {
description
"Corrected formatting issue.";
}
revision 2014-09-24 {
description
"Registered ifType 280.";
}
revision 2014-09-19 {
description
"Registered ifType 279.";
}
revision 2014-07-03 {
description
"Registered ifTypes 277-278.";
}
revision 2014-05-19 {
description
"Updated the contact address.";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7224: IANA Interface Type YANG Module";
}
identity iana-interface-type {
base if:interface-type;
description
"This identity is used as a base for all interface types
defined in the 'ifType definitions' registry.";
}
identity other {
base iana-interface-type;
}
identity regular1822 {
base iana-interface-type;
}
identity hdh1822 {
base iana-interface-type;
}
identity ddnX25 {
base iana-interface-type;
}
identity rfc877x25 {
base iana-interface-type;
reference
"RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
}
identity ethernetCsmacd {
base iana-interface-type;
description
"For all Ethernet-like interfaces, regardless of speed,
as per RFC 3635.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88023Csmacd {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88024TokenBus {
base iana-interface-type;
}
identity iso88025TokenRing {
base iana-interface-type;
}
identity iso88026Man {
base iana-interface-type;
}
identity starLan {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity proteon10Mbit {
base iana-interface-type;
}
identity proteon80Mbit {
base iana-interface-type;
}
identity hyperchannel {
base iana-interface-type;
}
identity fddi {
base iana-interface-type;
reference
"RFC 1512 - FDDI Management Information Base";
}
identity lapb {
base iana-interface-type;
reference
"RFC 1381 - SNMP MIB Extension for X.25 LAPB";
}
identity sdlc {
base iana-interface-type;
}
identity ds1 {
base iana-interface-type;
description
"DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity e1 {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity basicISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity primaryISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity propPointToPointSerial {
base iana-interface-type;
description
"Proprietary serial.";
}
identity ppp {
base iana-interface-type;
}
identity softwareLoopback {
base iana-interface-type;
}
identity eon {
base iana-interface-type;
description
"CLNP over IP.";
}
identity ethernet3Mbit {
base iana-interface-type;
}
identity nsip {
base iana-interface-type;
description
"XNS over IP.";
}
identity slip {
base iana-interface-type;
description
"Generic SLIP.";
}
identity ultra {
base iana-interface-type;
description
"Ultra Technologies.";
}
identity ds3 {
base iana-interface-type;
description
"DS3-MIB.";
reference
"RFC 3896 - Definitions of Managed Objects for the
DS3/E3 Interface Type";
}
identity sip {
base iana-interface-type;
description
"SMDS, coffee.";
reference
"RFC 1694 - Definitions of Managed Objects for SMDS
Interfaces using SMIv2";
}
identity frameRelay {
base iana-interface-type;
description
"DTE only.";
reference
"RFC 2115 - Management Information Base for Frame Relay
DTEs Using SMIv2";
}
identity rs232 {
base iana-interface-type;
reference
"RFC 1659 - Definitions of Managed Objects for RS-232-like
Hardware Devices using SMIv2";
}
identity para {
base iana-interface-type;
description
"Parallel-port.";
reference
"RFC 1660 - Definitions of Managed Objects for
Parallel-printer-like Hardware Devices using
SMIv2";
}
identity arcnet {
base iana-interface-type;
description
"ARCnet.";
}
identity arcnetPlus {
base iana-interface-type;
description
"ARCnet Plus.";
}
identity atm {
base iana-interface-type;
description
"ATM cells.";
}
identity miox25 {
base iana-interface-type;
reference
"RFC 1461 - SNMP MIB extension for Multiprotocol
Interconnect over X.25";
}
identity sonet {
base iana-interface-type;
description
"SONET or SDH.";
}
identity x25ple {
base iana-interface-type;
reference
"RFC 2127 - ISDN Management Information Base using SMIv2";
}
identity iso88022llc {
base iana-interface-type;
}
identity localTalk {
base iana-interface-type;
}
identity smdsDxi {
base iana-interface-type;
}
identity frameRelayService {
base iana-interface-type;
description
"FRNETSERV-MIB.";
reference
"RFC 2954 - Definitions of Managed Objects for Frame
Relay Service";
}
identity v35 {
base iana-interface-type;
}
identity hssi {
base iana-interface-type;
}
identity hippi {
base iana-interface-type;
}
identity modem {
base iana-interface-type;
description
"Generic modem.";
}
identity aal5 {
base iana-interface-type;
description
"AAL5 over ATM.";
}
identity sonetPath {
base iana-interface-type;
}
identity sonetVT {
base iana-interface-type;
}
identity smdsIcip {
base iana-interface-type;
description
"SMDS InterCarrier Interface.";
}
identity propVirtual {
base iana-interface-type;
description
"Proprietary virtual/internal.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity propMultiplexor {
base iana-interface-type;
description
"Proprietary multiplexing.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity ieee80212 {
base iana-interface-type;
description
"100BaseVG.";
}
identity fibreChannel {
base iana-interface-type;
description
"Fibre Channel.";
}
identity hippiInterface {
base iana-interface-type;
description
"HIPPI interfaces.";
}
identity frameRelayInterconnect {
base iana-interface-type;
status obsolete;
description
"Obsolete; use either
frameRelay(32) or frameRelayService(44).";
}
identity aflane8023 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.3.";
}
identity aflane8025 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.5.";
}
identity cctEmul {
base iana-interface-type;
description
"ATM Emulated circuit.";
}
identity fastEther {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity isdn {
base iana-interface-type;
description
"ISDN and X.25.";
reference
"RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
in the Packet Mode";
}
identity v11 {
base iana-interface-type;
description
"CCITT V.11/X.21.";
}
identity v36 {
base iana-interface-type;
description
"CCITT V.36.";
}
identity g703at64k {
base iana-interface-type;
description
"CCITT G703 at 64Kbps.";
}
identity g703at2mb {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
}
identity qllc {
base iana-interface-type;
description
"SNA QLLC.";
}
identity fastEtherFX {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity channel {
base iana-interface-type;
description
"Channel.";
}
identity ieee80211 {
base iana-interface-type;
description
"Radio spread spectrum.";
}
identity ibm370parChan {
base iana-interface-type;
description
"IBM System 360/370 OEMI Channel.";
}
identity escon {
base iana-interface-type;
description
"IBM Enterprise Systems Connection.";
}
identity dlsw {
base iana-interface-type;
description
"Data Link Switching.";
}
identity isdns {
base iana-interface-type;
description
"ISDN S/T interface.";
}
identity isdnu {
base iana-interface-type;
description
"ISDN U interface.";
}
identity lapd {
base iana-interface-type;
description
"Link Access Protocol D.";
}
identity ipSwitch {
base iana-interface-type;
description
"IP Switching Objects.";
}
identity rsrb {
base iana-interface-type;
description
"Remote Source Route Bridging.";
}
identity atmLogical {
base iana-interface-type;
description
"ATM Logical Port.";
reference
"RFC 3606 - Definitions of Supplemental Managed Objects
for ATM Interface";
}
identity ds0 {
base iana-interface-type;
description
"Digital Signal Level 0.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity ds0Bundle {
base iana-interface-type;
description
"Group of ds0s on the same ds1.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity bsc {
base iana-interface-type;
description
"Bisynchronous Protocol.";
}
identity async {
base iana-interface-type;
description
"Asynchronous Protocol.";
}
identity cnr {
base iana-interface-type;
description
"Combat Net Radio.";
}
identity iso88025Dtr {
base iana-interface-type;
description
"ISO 802.5r DTR.";
}
identity eplrs {
base iana-interface-type;
description
"Ext Pos Loc Report Sys.";
}
identity arap {
base iana-interface-type;
description
"Appletalk Remote Access Protocol.";
}
identity propCnls {
base iana-interface-type;
description
"Proprietary Connectionless Protocol.";
}
identity hostPad {
base iana-interface-type;
description
"CCITT-ITU X.29 PAD Protocol.";
}
identity termPad {
base iana-interface-type;
description
"CCITT-ITU X.3 PAD Facility.";
}
identity frameRelayMPI {
base iana-interface-type;
description
"Multiproto Interconnect over FR.";
}
identity x213 {
base iana-interface-type;
description
"CCITT-ITU X213.";
}
identity adsl {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop.";
}
identity radsl {
base iana-interface-type;
description
"Rate-Adapt. Digital Subscriber Loop.";
}
identity sdsl {
base iana-interface-type;
description
"Symmetric Digital Subscriber Loop.";
}
identity vdsl {
base iana-interface-type;
description
"Very H-Speed Digital Subscrib. Loop.";
}
identity iso88025CRFPInt {
base iana-interface-type;
description
"ISO 802.5 CRFP.";
}
identity myrinet {
base iana-interface-type;
description
"Myricom Myrinet.";
}
identity voiceEM {
base iana-interface-type;
description
"Voice recEive and transMit.";
}
identity voiceFXO {
base iana-interface-type;
description
"Voice Foreign Exchange Office.";
}
identity voiceFXS {
base iana-interface-type;
description
"Voice Foreign Exchange Station.";
}
identity voiceEncap {
base iana-interface-type;
description
"Voice encapsulation.";
}
identity voiceOverIp {
base iana-interface-type;
description
"Voice over IP encapsulation.";
}
identity atmDxi {
base iana-interface-type;
description
"ATM DXI.";
}
identity atmFuni {
base iana-interface-type;
description
"ATM FUNI.";
}
identity atmIma {
base iana-interface-type;
description
"ATM IMA.";
}
identity pppMultilinkBundle {
base iana-interface-type;
description
"PPP Multilink Bundle.";
}
identity ipOverCdlc {
base iana-interface-type;
description
"IBM ipOverCdlc.";
}
identity ipOverClaw {
base iana-interface-type;
description
"IBM Common Link Access to Workstn.";
}
identity stackToStack {
base iana-interface-type;
description
"IBM stackToStack.";
}
identity virtualIpAddress {
base iana-interface-type;
description
"IBM VIPA.";
}
identity mpc {
base iana-interface-type;
description
"IBM multi-protocol channel support.";
}
identity ipOverAtm {
base iana-interface-type;
description
"IBM ipOverAtm.";
reference
"RFC 2320 - Definitions of Managed Objects for Classical IP
and ARP Over ATM Using SMIv2 (IPOA-MIB)";
}
identity iso88025Fiber {
base iana-interface-type;
description
"ISO 802.5j Fiber Token Ring.";
}
identity tdlc {
base iana-interface-type;
description
"IBM twinaxial data link control.";
}
identity gigabitEthernet {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity hdlc {
base iana-interface-type;
description
"HDLC.";
}
identity lapf {
base iana-interface-type;
description
"LAP F.";
}
identity v37 {
base iana-interface-type;
description
"V.37.";
}
identity x25mlp {
base iana-interface-type;
description
"Multi-Link Protocol.";
}
identity x25huntGroup {
base iana-interface-type;
description
"X25 Hunt Group.";
}
identity transpHdlc {
base iana-interface-type;
description
"Transp HDLC.";
}
identity interleave {
base iana-interface-type;
description
"Interleave channel.";
}
identity fast {
base iana-interface-type;
description
"Fast channel.";
}
identity ip {
base iana-interface-type;
description
"IP (for APPN HPR in IP networks).";
}
identity docsCableMaclayer {
base iana-interface-type;
description
"CATV Mac Layer.";
}
identity docsCableDownstream {
base iana-interface-type;
description
"CATV Downstream interface.";
}
identity docsCableUpstream {
base iana-interface-type;
description
"CATV Upstream interface.";
}
identity a12MppSwitch {
base iana-interface-type;
description
"Avalon Parallel Processor.";
}
identity tunnel {
base iana-interface-type;
description
"Encapsulation interface.";
}
identity coffee {
base iana-interface-type;
description
"Coffee pot.";
reference
"RFC 2325 - Coffee MIB";
}
identity ces {
base iana-interface-type;
description
"Circuit Emulation Service.";
}
identity atmSubInterface {
base iana-interface-type;
description
"ATM Sub Interface.";
}
identity l2vlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using 802.1Q.";
}
identity l3ipvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IP.";
}
identity l3ipxvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IPX.";
}
identity digitalPowerline {
base iana-interface-type;
description
"IP over Power Lines.";
}
identity mediaMailOverIp {
base iana-interface-type;
description
"Multimedia Mail over IP.";
}
identity dtm {
base iana-interface-type;
description
"Dynamic synchronous Transfer Mode.";
}
identity dcn {
base iana-interface-type;
description
"Data Communications Network.";
}
identity ipForward {
base iana-interface-type;
description
"IP Forwarding Interface.";
}
identity msdsl {
base iana-interface-type;
description
"Multi-rate Symmetric DSL.";
}
identity ieee1394 {
base iana-interface-type;
description
"IEEE1394 High Performance Serial Bus.";
}
identity if-gsn {
base iana-interface-type;
description
"HIPPI-6400.";
}
identity dvbRccMacLayer {
base iana-interface-type;
description
"DVB-RCC MAC Layer.";
}
identity dvbRccDownstream {
base iana-interface-type;
description
"DVB-RCC Downstream Channel.";
}
identity dvbRccUpstream {
base iana-interface-type;
description
"DVB-RCC Upstream Channel.";
}
identity atmVirtual {
base iana-interface-type;
description
"ATM Virtual Interface.";
}
identity mplsTunnel {
base iana-interface-type;
description
"MPLS Tunnel Virtual Interface.";
}
identity srp {
base iana-interface-type;
description
"Spatial Reuse Protocol.";
}
identity voiceOverAtm {
base iana-interface-type;
description
"Voice over ATM.";
}
identity voiceOverFrameRelay {
base iana-interface-type;
description
"Voice Over Frame Relay.";
}
identity idsl {
base iana-interface-type;
description
"Digital Subscriber Loop over ISDN.";
}
identity compositeLink {
base iana-interface-type;
description
"Avici Composite Link Interface.";
}
identity ss7SigLink {
base iana-interface-type;
description
"SS7 Signaling Link.";
}
identity propWirelessP2P {
base iana-interface-type;
description
"Prop. P2P wireless interface.";
}
identity frForward {
base iana-interface-type;
description
"Frame Forward Interface.";
}
identity rfc1483 {
base iana-interface-type;
description
"Multiprotocol over ATM AAL5.";
reference
"RFC 1483 - Multiprotocol Encapsulation over ATM
Adaptation Layer 5";
}
identity usb {
base iana-interface-type;
description
"USB Interface.";
}
identity ieee8023adLag {
base iana-interface-type;
description
"IEEE 802.3ad Link Aggregate.";
}
identity bgppolicyaccounting {
base iana-interface-type;
description
"BGP Policy Accounting.";
}
identity frf16MfrBundle {
base iana-interface-type;
description
"FRF.16 Multilink Frame Relay.";
}
identity h323Gatekeeper {
base iana-interface-type;
description
"H323 Gatekeeper.";
}
identity h323Proxy {
base iana-interface-type;
description
"H323 Voice and Video Proxy.";
}
identity mpls {
base iana-interface-type;
description
"MPLS.";
}
identity mfSigLink {
base iana-interface-type;
description
"Multi-frequency signaling link.";
}
identity hdsl2 {
base iana-interface-type;
description
"High Bit-Rate DSL - 2nd generation.";
}
identity shdsl {
base iana-interface-type;
description
"Multirate HDSL2.";
}
identity ds1FDL {
base iana-interface-type;
description
"Facility Data Link (4Kbps) on a DS1.";
}
identity pos {
base iana-interface-type;
description
"Packet over SONET/SDH Interface.";
}
identity dvbAsiIn {
base iana-interface-type;
description
"DVB-ASI Input.";
}
identity dvbAsiOut {
base iana-interface-type;
description
"DVB-ASI Output.";
}
identity plc {
base iana-interface-type;
description
"Power Line Communications.";
}
identity nfas {
base iana-interface-type;
description
"Non-Facility Associated Signaling.";
}
identity tr008 {
base iana-interface-type;
description
"TR008.";
}
identity gr303RDT {
base iana-interface-type;
description
"Remote Digital Terminal.";
}
identity gr303IDT {
base iana-interface-type;
description
"Integrated Digital Terminal.";
}
identity isup {
base iana-interface-type;
description
"ISUP.";
}
identity propDocsWirelessMaclayer {
base iana-interface-type;
description
"Cisco proprietary Maclayer.";
}
identity propDocsWirelessDownstream {
base iana-interface-type;
description
"Cisco proprietary Downstream.";
}
identity propDocsWirelessUpstream {
base iana-interface-type;
description
"Cisco proprietary Upstream.";
}
identity hiperlan2 {
base iana-interface-type;
description
"HIPERLAN Type 2 Radio Interface.";
}
identity propBWAp2Mp {
base iana-interface-type;
description
"PropBroadbandWirelessAccesspt2Multipt (use of this value
for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
is deprecated, and ieee80216WMAN(237) should be used
instead).";
}
identity sonetOverheadChannel {
base iana-interface-type;
description
"SONET Overhead Channel.";
}
identity digitalWrapperOverheadChannel {
base iana-interface-type;
description
"Digital Wrapper.";
}
identity aal2 {
base iana-interface-type;
description
"ATM adaptation layer 2.";
}
identity radioMAC {
base iana-interface-type;
description
"MAC layer over radio links.";
}
identity atmRadio {
base iana-interface-type;
description
"ATM over radio links.";
}
identity imt {
base iana-interface-type;
description
"Inter-Machine Trunks.";
}
identity mvl {
base iana-interface-type;
description
"Multiple Virtual Lines DSL.";
}
identity reachDSL {
base iana-interface-type;
description
"Long Reach DSL.";
}
identity frDlciEndPt {
base iana-interface-type;
description
"Frame Relay DLCI End Point.";
}
identity atmVciEndPt {
base iana-interface-type;
description
"ATM VCI End Point.";
}
identity opticalChannel {
base iana-interface-type;
description
"Optical Channel.";
}
identity opticalTransport {
base iana-interface-type;
description
"Optical Transport.";
}
identity propAtm {
base iana-interface-type;
description
"Proprietary ATM.";
}
identity voiceOverCable {
base iana-interface-type;
description
"Voice Over Cable Interface.";
}
identity infiniband {
base iana-interface-type;
description
"Infiniband.";
}
identity teLink {
base iana-interface-type;
description
"TE Link.";
}
identity q2931 {
base iana-interface-type;
description
"Q.2931.";
}
identity virtualTg {
base iana-interface-type;
description
"Virtual Trunk Group.";
}
identity sipTg {
base iana-interface-type;
description
"SIP Trunk Group.";
}
identity sipSig {
base iana-interface-type;
description
"SIP Signaling.";
}
identity docsCableUpstreamChannel {
base iana-interface-type;
description
"CATV Upstream Channel.";
}
identity econet {
base iana-interface-type;
description
"Acorn Econet.";
}
identity pon155 {
base iana-interface-type;
description
"FSAN 155Mb Symetrical PON interface.";
}
identity pon622 {
base iana-interface-type;
description
"FSAN 622Mb Symetrical PON interface.";
}
identity bridge {
base iana-interface-type;
description
"Transparent bridge interface.";
}
identity linegroup {
base iana-interface-type;
description
"Interface common to multiple lines.";
}
identity voiceEMFGD {
base iana-interface-type;
description
"Voice E&M Feature Group D.";
}
identity voiceFGDEANA {
base iana-interface-type;
description
"Voice FGD Exchange Access North American.";
}
identity voiceDID {
base iana-interface-type;
description
"Voice Direct Inward Dialing.";
}
identity mpegTransport {
base iana-interface-type;
description
"MPEG transport interface.";
}
identity sixToFour {
base iana-interface-type;
status deprecated;
description
"6to4 interface (DEPRECATED).";
reference
"RFC 4087 - IP Tunnel MIB";
}
identity gtp {
base iana-interface-type;
description
"GTP (GPRS Tunneling Protocol).";
}
identity pdnEtherLoop1 {
base iana-interface-type;
description
"Paradyne EtherLoop 1.";
}
identity pdnEtherLoop2 {
base iana-interface-type;
description
"Paradyne EtherLoop 2.";
}
identity opticalChannelGroup {
base iana-interface-type;
description
"Optical Channel Group.";
}
identity homepna {
base iana-interface-type;
description
"HomePNA ITU-T G.989.";
}
identity gfp {
base iana-interface-type;
description
"Generic Framing Procedure (GFP).";
}
identity ciscoISLvlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using Cisco ISL.";
}
identity actelisMetaLOOP {
base iana-interface-type;
description
"Acteleis proprietary MetaLOOP High Speed Link.";
}
identity fcipLink {
base iana-interface-type;
description
"FCIP Link.";
}
identity rpr {
base iana-interface-type;
description
"Resilient Packet Ring Interface Type.";
}
identity qam {
base iana-interface-type;
description
"RF Qam Interface.";
}
identity lmp {
base iana-interface-type;
description
"Link Management Protocol.";
reference
"RFC 4327 - Link Management Protocol (LMP) Management
Information Base (MIB)";
}
identity cblVectaStar {
base iana-interface-type;
description
"Cambridge Broadband Networks Limited VectaStar.";
}
identity docsCableMCmtsDownstream {
base iana-interface-type;
description
"CATV Modular CMTS Downstream Interface.";
}
identity adsl2 {
base iana-interface-type;
status deprecated;
description
"Asymmetric Digital Subscriber Loop Version 2
(DEPRECATED/OBSOLETED - please use adsl2plus(238)
instead).";
reference
"RFC 4706 - Definitions of Managed Objects for Asymmetric
Digital Subscriber Line 2 (ADSL2)";
}
identity macSecControlledIF {
base iana-interface-type;
description
"MACSecControlled.";
}
identity macSecUncontrolledIF {
base iana-interface-type;
description
"MACSecUncontrolled.";
}
identity aviciOpticalEther {
base iana-interface-type;
description
"Avici Optical Ethernet Aggregate.";
}
identity atmbond {
base iana-interface-type;
description
"atmbond.";
}
identity voiceFGDOS {
base iana-interface-type;
description
"Voice FGD Operator Services.";
}
identity mocaVersion1 {
base iana-interface-type;
description
"MultiMedia over Coax Alliance (MoCA) Interface
as documented in information provided privately to IANA.";
}
identity ieee80216WMAN {
base iana-interface-type;
description
"IEEE 802.16 WMAN interface.";
}
identity adsl2plus {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop Version 2 -
Version 2 Plus and all variants.";
}
identity dvbRcsMacLayer {
base iana-interface-type;
description
"DVB-RCS MAC Layer.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbTdm {
base iana-interface-type;
description
"DVB Satellite TDM.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbRcsTdma {
base iana-interface-type;
description
"DVB-RCS TDMA.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity x86Laps {
base iana-interface-type;
description
"LAPS based on ITU-T X.86/Y.1323.";
}
identity wwanPP {
base iana-interface-type;
description
"3GPP WWAN.";
}
identity wwanPP2 {
base iana-interface-type;
description
"3GPP2 WWAN.";
}
identity voiceEBS {
base iana-interface-type;
description
"Voice P-phone EBS physical interface.";
}
identity ifPwType {
base iana-interface-type;
description
"Pseudowire interface type.";
reference
"RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
}
identity ilan {
base iana-interface-type;
description
"Internal LAN on a bridge per IEEE 802.1ap.";
}
identity pip {
base iana-interface-type;
description
"Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
}
identity aluELP {
base iana-interface-type;
description
"Alcatel-Lucent Ethernet Link Protection.";
}
identity gpon {
base iana-interface-type;
description
"Gigabit-capable passive optical networks (G-PON) as per
ITU-T G.948.";
}
identity vdsl2 {
base iana-interface-type;
description
"Very high speed digital subscriber line Version 2
(as per ITU-T Recommendation G.993.2).";
reference
"RFC 5650 - Definitions of Managed Objects for Very High
Speed Digital Subscriber Line 2 (VDSL2)";
}
identity capwapDot11Profile {
base iana-interface-type;
description
"WLAN Profile Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapDot11Bss {
base iana-interface-type;
description
"WLAN BSS Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapWtpVirtualRadio {
base iana-interface-type;
description
"WTP Virtual Radio Interface.";
reference
"RFC 5833 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Base MIB";
}
identity bits {
base iana-interface-type;
description
"bitsport.";
}
identity docsCableUpstreamRfPort {
base iana-interface-type;
description
"DOCSIS CATV Upstream RF Port.";
}
identity cableDownstreamRfPort {
base iana-interface-type;
description
"CATV downstream RF Port.";
}
identity vmwareVirtualNic {
base iana-interface-type;
description
"VMware Virtual Network Interface.";
}
identity ieee802154 {
base iana-interface-type;
description
"IEEE 802.15.4 WPAN interface.";
reference
"IEEE 802.15.4-2006";
}
identity otnOdu {
base iana-interface-type;
description
"OTN Optical Data Unit.";
}
identity otnOtu {
base iana-interface-type;
description
"OTN Optical channel Transport Unit.";
}
identity ifVfiType {
base iana-interface-type;
description
"VPLS Forwarding Instance Interface Type.";
}
identity g9981 {
base iana-interface-type;
description
"G.998.1 bonded interface.";
}
identity g9982 {
base iana-interface-type;
description
"G.998.2 bonded interface.";
}
identity g9983 {
base iana-interface-type;
description
"G.998.3 bonded interface.";
}
identity aluEpon {
base iana-interface-type;
description
"Ethernet Passive Optical Networks (E-PON).";
}
identity aluEponOnu {
base iana-interface-type;
description
"EPON Optical Network Unit.";
}
identity aluEponPhysicalUni {
base iana-interface-type;
description
"EPON physical User to Network interface.";
}
identity aluEponLogicalLink {
base iana-interface-type;
description
"The emulation of a point-to-point link over the EPON
layer.";
}
identity aluGponOnu {
base iana-interface-type;
description
"GPON Optical Network Unit.";
reference
"ITU-T G.984.2";
}
identity aluGponPhysicalUni {
base iana-interface-type;
description
"GPON physical User to Network interface.";
reference
"ITU-T G.984.2";
}
identity vmwareNicTeam {
base iana-interface-type;
description
"VMware NIC Team.";
}
identity docsOfdmDownstream {
base iana-interface-type;
description
"CATV Downstream OFDM interface.";
}
identity docsOfdmaUpstream {
base iana-interface-type;
description
"CATV Upstream OFDMA interface.";
}
identity gfast {
base iana-interface-type;
description
"G.fast port.";
reference
"ITU-T G.9701";
}
identity sdci {
base iana-interface-type;
description
"SDCI (IO-Link).";
reference
"IEC 61131-9 Edition 1.0 2013-09";
}
identity xboxWireless {
base iana-interface-type;
description
"Xbox wireless.";
}
identity fastdsl {
base iana-interface-type;
description
"FastDSL.";
reference
"BBF TR-355";
}
identity docsCableScte55d1FwdOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Forward Channel.";
}
identity docsCableScte55d1RetOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Return Channel.";
}
identity docsCableScte55d2DsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Downstream Channel.";
}
identity docsCableScte55d2UsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Upstream Channel.";
}
identity docsCableNdf {
base iana-interface-type;
description
"Cable Narrowband Digital Forward.";
}
identity docsCableNdr {
base iana-interface-type;
description
"Cable Narrowband Digital Return.";
}
identity ptm {
base iana-interface-type;
description
"Packet Transfer Mode.";
}
identity ghn {
base iana-interface-type;
description
"G.hn port.";
}
}
openconfig-transport-line-common.yang 000664 001750 001750 00000015076 13106236405 020517 0 ustar 00root1 root1 000000 000000 module openconfig-transport-line-common {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/transport-line-common";
prefix "oc-line-com";
// import some basic types
import iana-if-type { prefix ift; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-platform { prefix oc-platform; }
import openconfig-types { prefix oc-types; }
import openconfig-transport-types { prefix oc-opt-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines common data elements for OpenConfig data
models for optical transport line system elements, such as
amplifiers and ROADMs (wavelength routers).";
// oc-ext:openconfig-version "0.2.0";
revision "2017-03-28" {
description
"Added min/max/avg stats, status for media channels, OCM, APS";
reference "0.2.0";
}
revision "2016-03-31" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity OPTICAL_LINE_PORT_TYPE {
description
"Type definition for optical node port types";
}
identity INGRESS {
base OPTICAL_LINE_PORT_TYPE;
description
"Ingress port, corresponding to a signal entering
a line device such as an amplifier or wavelength
router.";
}
identity EGRESS {
base OPTICAL_LINE_PORT_TYPE;
description
"Egress port, corresponding to a signal exiting
a line device wavelength router.";
}
identity ADD {
base OPTICAL_LINE_PORT_TYPE;
description
"Add port, corresponding to a signal injected
at a wavelength router.";
}
identity DROP {
base OPTICAL_LINE_PORT_TYPE;
description
"Drop port, corresponding to a signal dropped
at a wavelength router.";
}
// typedef statements
// grouping statements
grouping optical-osc-config {
description
"Configuration data for OSC interfaces";
leaf-list interface {
type oc-if:base-interface-ref;
description
"List of references to OSC interfaces";
}
}
grouping optical-osc-state {
description
"Operational state data for OSC interfaces";
container input-power {
description
"The input optical power of this port in units
of 0.01dBm. 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;
}
container output-power {
description
"The output optical power of this port in units
of 0.01dBm. 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;
}
container laser-bias-current {
description
"The current applied by the system to the transmit laser to
achieve the output power. The current is expressed in mA
with up to one decimal precision. 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-mA;
}
}
grouping optical-osc-top {
description
"Top-level grouping for configuration and operational state
data for optical supervisory channels (OSC) for amplifiers,
WSS/ROADM, nodes, etc.";
container config {
description
"Configuration data for OSCs";
uses optical-osc-config;
}
container state {
config false;
description
"Operational state data for OSCs";
uses optical-osc-config;
uses optical-osc-state;
}
}
grouping transport-line-common-port-config {
description
"Configuration data for optical line ports";
leaf admin-state {
type oc-opt-types:admin-state-type;
description
"Sets the admin state of the optical-port";
}
}
grouping transport-line-common-port-state {
description
"Operational state data describing optical line ports";
leaf optical-port-type {
type identityref {
base OPTICAL_LINE_PORT_TYPE;
}
description
"Indicates the type of transport line port. This is an
informational field that should be made available by the
device (e.g., in the openconfig-platform model).";
}
container input-power {
description
"The total input optical power of this port in units
of 0.01dBm. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
container output-power {
description
"The total output optical power of this port in units
of 0.01dBm. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
}
grouping transport-line-common-port-top {
description
"Top-level grouping ";
container optical-port {
description
"Top-level container ";
container config {
description
"Operational config data for optical line ports";
uses transport-line-common-port-config;
}
container state {
config false;
description
"Operational state data for optical line ports";
uses transport-line-common-port-config;
uses transport-line-common-port-state;
}
}
}
// data definition statements
// uses optical-osc-top;
// augment statements
augment "/oc-platform:components/oc-platform:component" {
description
"Adding optical line port data to platform model";
uses transport-line-common-port-top {
when "/oc-platform:components/oc-platform:component/" +
"state/type = PORT" {
description
"Augment is active when component is of type
PORT";
}
}
}
//TODO:this is placeholder until SONET model is added
//to interfaces model
augment "/oc-if:interfaces/oc-if:interface" {
when "oc-if:type = 'ift:sonet'" {
description "Additional interface configuration parameters when
the interface type is SONET/SDH";
}
description "Adds additional SONET/SDH-specific data to
osc model";
container sonet {
description
"Data related to SONET/SDH interfaces";
}
}
// rpc statements
// notification statements
}
openconfig-optical-amplifier.yang 000664 001750 001750 00000022153 13106236406 017644 0 ustar 00root1 root1 000000 000000 module openconfig-optical-amplifier {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/optical-amplfier";
prefix "oc-opt-amp";
import openconfig-transport-line-common { prefix oc-line-com; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This model describes configuration and operational state data
for optical amplifiers, deployed as part of a transport
line system.";
// oc-ext:openconfig-version "0.2.0";
revision "2017-03-28" {
description
"Added min/max/avg stats, status for media channels, OCM, APS";
reference "0.2.0";
}
revision "2016-03-31" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity OPTICAL_AMPLIFIER_TYPE {
description
"Type definition for different types of optical amplifiers";
}
identity EDFA {
base OPTICAL_AMPLIFIER_TYPE;
description
"Erbium doped fiber amplifer (EDFA)";
}
identity FORWARD_RAMAN {
base OPTICAL_AMPLIFIER_TYPE;
description
"Forward pumping Raman amplifier";
}
identity BACKWARD_RAMAN {
base OPTICAL_AMPLIFIER_TYPE;
description
"Backward pumping Raman amplifier";
}
identity HYBRID {
base OPTICAL_AMPLIFIER_TYPE;
description
"Hybrid backward pumping Raman + EDFA amplifier";
}
identity GAIN_RANGE {
description
"Base type for expressing the gain range for a switched gain
amplifier. The gain range is expressed as a generic setting,
e.g., LOW/MID/HIGH. The actual db range will be determined
by the implementation.";
}
identity LOW_GAIN_RANGE {
base GAIN_RANGE;
description
"LOW gain range setting";
}
identity MID_GAIN_RANGE {
base GAIN_RANGE;
description
"MID gain range setting";
}
identity HIGH_GAIN_RANGE {
base GAIN_RANGE;
description
"HIGH gain range setting";
}
identity FIXED_GAIN_RANGE {
base GAIN_RANGE;
description
"Fixed or non-switched gain amplfier";
}
identity OPTICAL_AMPLIFIER_MODE {
description
"Type definition for different types of optical amplifier
operating modes";
}
identity CONSTANT_POWER {
base OPTICAL_AMPLIFIER_MODE;
description
"Constant power mode";
}
identity CONSTANT_GAIN {
base OPTICAL_AMPLIFIER_MODE;
description
"Constant gain mode";
}
// grouping statements
grouping optical-amplifier-config {
description
"Configuration data for optical amplifiers";
leaf name {
type string;
description
"User-defined name assigned to identify a specific amplifier
in the device";
}
leaf type {
type identityref {
base OPTICAL_AMPLIFIER_TYPE;
}
description
"Type of the amplifier";
}
leaf target-gain {
type decimal64 {
fraction-digits 2;
range 0..max;
}
units dB;
description
"Positive gain applied by the amplifier.";
}
leaf target-gain-tilt {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"Gain tilt control";
}
leaf gain-range {
type identityref {
base GAIN_RANGE;
}
description
"Selected gain range. The gain range is a platform-defined
value indicating the switched gain amplifier setting";
}
leaf amp-mode {
type identityref {
base OPTICAL_AMPLIFIER_MODE;
}
description
"The operating mode of the amplifier";
}
leaf target-output-power {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"Output optical power of the amplifier.";
}
leaf enabled {
type boolean;
description
"Turns power on / off to the amplifiers gain module.";
}
}
grouping optical-amplifier-state {
description
"Operational state data for optical amplifiers";
container actual-gain {
description
"The actual gain applied by the amplifier in units of
0.01dB. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dB;
}
container actual-gain-tilt {
description
"The actual tilt applied by the amplifier in units of
0.01dB. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dB;
}
container input-power-total {
description
"The total input optical power of this port in units
of 0.01dBm. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
container input-power-c-band {
description
"The C band (consisting of approximately 191 to 195 THz or
1530nm to 1565 nm) input optical power of this port in units
of 0.01dBm. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
container input-power-l-band {
description
"The L band (consisting of approximately 184 to 191 THz or
1565 to 1625 nm) input optical power of this port in units
of 0.01dBm. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
container output-power-total {
description
"The total output optical power of this port in units
of 0.01dBm. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
container output-power-c-band {
description
"The C band (consisting of approximately 191 to 195 THz or
1530nm to 1565 nm)output optical power of this port in units
of 0.01dBm. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
container output-power-l-band {
description
"The L band (consisting of approximately 184 to 191 THz or
1565 to 1625 nm)output optical power of this port in units
of 0.01dBm. If avg/min/max statistics are not supported,
just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
container laser-bias-current {
description
"The current applied by the system to the transmit laser to
achieve the output power. The current is expressed in mA
with up to two decimal precision. If avg/min/max statistics
are not supported, just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-mA;
}
container optical-return-loss {
description
"The optical return loss (ORL) is the ratio of the light
reflected back into the port to the light launched out of
the port. ORL is in units of 0.01dBm. If avg/min/max
statistics are not supported, just supply the instant value";
uses oc-types:avg-min-max-instant-stats-precision2-dBm;
}
}
grouping optical-amplifier-top {
description
"Top-level grouping for optical amplifier data";
container optical-amplifier {
description
"Enclosing container for amplifiers and supervisory channels";
container amplifiers {
description
"Enclosing container for list of amplifiers";
list amplifier {
key "name";
description
"List of optical amplifiers present in the device";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name of the amplifier";
}
container config {
description
"Configuration data for the amplifier";
uses optical-amplifier-config;
}
container state {
config false;
description
"Operational state data for the amplifier";
uses optical-amplifier-config;
uses optical-amplifier-state;
}
}
}
container supervisory-channels {
description
"Enclosing container for list of supervisory channels";
list supervisory-channel {
key "interface";
description
"List of supervisory channels";
leaf interface {
type leafref {
path "../config/interface";
}
description
"Reference to the interface of the supervisory channel";
}
uses oc-line-com:optical-osc-top;
}
}
}
}
// data definition statements
uses optical-amplifier-top;
}
openconfig-channel-monitor.yang 000664 001750 001750 00000013520 13106236406 017336 0 ustar 00root1 root1 000000 000000 module openconfig-channel-monitor {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/channel-monitor";
prefix "oc-chan-monitor";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-transport-types { prefix oc-opt-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This model describes operational state data for an optical
channel monitor (OCM) for optical transport line system
elements such as wavelength routers (ROADMs) and amplifiers.";
// oc-ext:openconfig-version "0.2.0";
revision "2017-03-28" {
description
"Added min/max/avg stats, status for media channels, OCM, APS";
reference "0.2.0";
}
revision "2016-09-14" {
description
"Initial revision";
reference "0.1.0";
}
// grouping statements
grouping media-channel-port-config {
description
"Configuration data for a media channel source/dest port";
leaf port-name {
type oc-if:base-interface-ref;
description
"Reference to the corresponding node interface";
}
}
grouping media-channel-port-state {
description
"Operational state data for a media channel source/dest port";
}
grouping media-channel-source-port-top {
description
"Top-level grouping for source of the media channel";
container source {
description
"Top-level container for media channel source";
container config {
description
"Configuration data for the media channel source";
uses media-channel-port-config;
}
container state {
config false;
description
"Operational state data for the media channel source";
uses media-channel-port-config;
uses media-channel-port-state;
}
}
}
grouping media-channel-dest-port-top {
description
"Top-level grouping for destination of the media channel";
container dest {
description
"Top-level container for media channel destination";
container config {
description
"Configuration data for the media channel destination";
uses media-channel-port-config;
}
container state {
config false;
description
"Operational state data for the media channel destination";
uses media-channel-port-config;
uses media-channel-port-state;
}
}
}
grouping media-channel-psd-state {
description
"Operational state data for the media channel PSD";
leaf lower-frequency {
type oc-opt-types:frequency-type;
description
"Lower frequency of the specified PSD";
}
leaf upper-frequency {
type oc-opt-types:frequency-type;
description
"Upper frequency of the specified PSD";
}
leaf psd {
type oc-types:ieeefloat32;
units "nW/MHz";
description
"Power spectral density expressed in nanowatts per
megahertz, nW/MHz. These units allow the value to often
be greater than 1.0. It also avoids dealing with zero values
for 0dBm. For example, a 40GHz wide channel
with 0dBm power would be:
0dBm = 1mW = 10^6nW
40GHz = 40,000MHz
0dBm/40GHz = 10^6nW/40,000MHz = 1000/40 = 25";
}
}
grouping media-channel-psd-top {
description
"Top-level grouping ";
container channels {
description
"Enclosing container for the list of values describing
the power spectral density distribution";
list channel {
key "lower-frequency upper-frequency";
config false;
description
"List of tuples describing the PSD distribution";
leaf lower-frequency {
type leafref {
path "../state/lower-frequency";
}
description
"Reference to the list key";
}
leaf upper-frequency {
type leafref {
path "../state/upper-frequency";
}
description
"Reference to the list key";
}
container state {
config false;
description
"Operational state data for PSD";
uses media-channel-psd-state;
}
}
}
}
grouping media-channel-config {
description
"Configuration data for media channel definitions";
leaf index {
type uint32;
description
"Identifier for the defined media channel";
}
leaf lower-frequency {
type oc-opt-types:frequency-type;
description
"The lower frequency for the spectrum defined by this media
channel";
}
leaf upper-frequency {
type oc-opt-types:frequency-type;
description
"The upper frequency for the spectrum defined by this media
channel";
}
}
grouping channel-monitor-config {
description
"Configuration data ";
}
grouping channel-monitor-state {
description
"Operational state data ";
}
grouping channel-monitor-top {
description
"Top-level grouping ";
container channel-monitor {
description
"Top-level container for optical channel monitor data";
container config {
description
"Configuration data ";
uses channel-monitor-config;
}
container state {
config false;
description
"Operational state data ";
uses channel-monitor-config;
uses channel-monitor-state;
}
uses media-channel-psd-top;
}
}
// data definition statements
uses channel-monitor-top;
// augment statements
// rpc statements
// notification statements
}
openconfig-wavelength-router.yang 000664 001750 001750 00000017015 13106236405 017725 0 ustar 00root1 root1 000000 000000 module openconfig-wavelength-router {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/wavelength-router";
prefix "oc-wave-router";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-transport-types { prefix oc-opt-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This model describes configuration and operational state data
for an optical transport line system node, or ROADM (incl. CDC
ROADMs, WSS, Dynamic Gain Equalizer/DGE).
Nodes are modeled as a configurable switching element with
ingress and egress ports, as well as a number of add/drop ports
that can be set up to direct portions of the optical spectrum
to the appropriate degrees.";
// oc-ext:openconfig-version "0.2.0";
revision "2017-03-28" {
description
"Added min/max/avg stats, status for media channels, OCM, APS";
reference "0.2.0";
}
revision "2016-03-31" {
description
"Initial public release";
reference "0.1.0";
}
// grouping statements
grouping media-channel-port-config {
description
"Configuration data for a media channel source/dest port";
leaf port-name {
type oc-if:base-interface-ref;
description
"Reference to the corresponding node interface";
}
}
grouping media-channel-port-state {
description
"Operational state data for a media channel source/dest port";
}
grouping media-channel-source-port-top {
description
"Top-level grouping for source of the media channel";
container source {
description
"Top-level container for media channel source";
container config {
description
"Configuration data for the media channel source";
uses media-channel-port-config;
}
container state {
config false;
description
"Operational state data for the media channel source";
uses media-channel-port-config;
uses media-channel-port-state;
}
}
}
grouping media-channel-dest-port-top {
description
"Top-level grouping for destination of the media channel";
container dest {
description
"Top-level container for media channel destination";
container config {
description
"Configuration data for the media channel destination";
uses media-channel-port-config;
}
container state {
config false;
description
"Operational state data for the media channel destination";
uses media-channel-port-config;
uses media-channel-port-state;
}
}
}
grouping media-channel-psd-config {
description
"Configuration data for the media channel PSD";
leaf lower-frequency {
type oc-opt-types:frequency-type;
description
"Lower frequency of the specified PSD";
}
leaf upper-frequency {
type oc-opt-types:frequency-type;
description
"Upper frequency of the specified PSD";
}
leaf psd {
type oc-types:ieeefloat32;
units "nW/MHz";
description
"Power spectral density expressed in nanowatts per
megahertz, nW/MHz. These units allow the value to often
be greater than 1.0. It also avoids dealing with zero values
for 0dBm. For example, a 40GHz wide channel
with 0dBm power would be:
0dBm = 1mW = 10^6nW
40GHz = 40,000MHz
0dBm/40GHz = 10^6nW/40,000MHz = 1000/40 = 25";
}
}
grouping media-channel-psd-state {
description
"Operational state data for the media channel PSD";
}
grouping media-channel-psd-top {
description
"Top-level grouping ";
container psd-distribution {
description
"Enclosing container for the list of values describing
the power spectral density distribution";
list psd-value {
key "lower-frequency upper-frequency";
description
"List of tuples describing the PSD distribution";
leaf lower-frequency {
type leafref {
path "../config/lower-frequency";
}
description
"Reference to the list key";
}
leaf upper-frequency {
type leafref {
path "../config/upper-frequency";
}
description
"Reference to the list key";
}
container config {
description
"Configuration data for PSD";
uses media-channel-psd-config;
}
container state {
config false;
description
"Operational state data for PSD";
uses media-channel-psd-config;
uses media-channel-psd-state;
}
}
}
}
grouping media-channel-config {
description
"Configuration data for media channel definitions";
leaf index {
type uint32;
description
"Identifier for the defined media channel";
}
leaf name {
type string;
description
"The user supplied name of the media channel";
}
leaf lower-frequency {
type oc-opt-types:frequency-type;
description
"The lower frequency for the spectrum defined by this media
channel";
}
leaf upper-frequency {
type oc-opt-types:frequency-type;
description
"The upper frequency for the spectrum defined by this media
channel";
}
leaf admin-status {
type oc-opt-types:admin-state-type;
description
"Sets the admin status of the media channel";
}
}
grouping media-channel-state {
description
"Operational state data for media channels ";
leaf oper-status {
type enumeration {
enum UP {
description
"Media channel is operationally up";
}
enum DOWN {
description
"Media channel is operationally down";
}
}
description
"Operational state of the media channel";
}
}
grouping media-channel-top {
description
"Top-level grouping for list of defined media channels";
container media-channels {
description
"Enclosing container for media channel list";
list channel {
key "index";
description
"List of media channels";
leaf index {
type leafref {
path "../config/index";
}
description
"Reference to index number of the media channel";
}
container config {
description
"Configuration data ";
uses media-channel-config;
}
container state {
config false;
description
"Operational state data ";
uses media-channel-config;
uses media-channel-state;
}
uses media-channel-source-port-top;
uses media-channel-dest-port-top;
uses media-channel-psd-top;
}
}
}
grouping wavelength-router-top {
description
"Top level grouping for the wavelength router";
container wavelength-router {
description
"Top-level container for wavelength router device";
uses media-channel-top;
}
}
// data definition statements
uses wavelength-router-top;
// augment statements
// rpc statements
// notification statements
}
openconfig-types.yang 000664 001750 001750 00000016715 13106236423 015415 0 ustar 00root1 root1 000000 000000 module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
//// oc-ext:openconfig-version "0.3.2";
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
description
"This type is based on the timeticks type defined in
RFC 6991, but with 64-bit width. It represents the time,
modulo 2^64, in hundredths of a second between two epochs.";
reference
"RFC 6991 - Common YANG Data Types";
}
typedef ieeefloat32 {
type binary {
length "32";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
24-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the sampling
period";
}
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
openconfig-transport-types.yang 000664 001750 001750 00000042103 13106236405 017435 0 ustar 00root1 root1 000000 000000 module openconfig-transport-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/transport-types";
prefix "oc-opt-types";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains general type definitions and identities
for optical transport models.";
// oc-ext:openconfig-version "0.4.0";
revision "2016-12-22" {
description
"Fixes and additions for terminal optics model";
reference "0.4.0";
}
// typedef statements
typedef frequency-type {
type uint64;
units "MHz";
description
"Type for optical spectrum frequency values";
}
typedef admin-state-type {
type enumeration {
enum ENABLED {
description
"Sets the channel admin state to enabled";
}
enum DISABLED {
description
"Sets the channel admin state to disabled";
}
enum MAINT {
description
"Sets the channel to maintenance / diagnostic mode";
}
}
description "Administrative state modes for
logical channels in the transponder model.";
}
typedef loopback-mode-type {
type enumeration {
enum NONE {
description
"No loopback is applied";
}
enum FACILITY {
description
"A loopback which directs traffic normally transmitted
on the port back to the device as if received on the same
port from an external source.";
}
enum TERMINAL {
description
"A loopback which directs traffic received from an external
source on the port back out the transmit side of the same
port.";
}
}
default NONE;
description
"Loopback modes for transponder logical channels";
}
// grouping statements
grouping avg-min-max-instant-stats-precision2-ps-nm {
description
"Common grouping for recording picosecond per nanometer
values with 2 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units ps-nm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units ps-nm;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units ps-nm;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units ps-nm;
description
"The maximum value of the statistic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision2-ps {
description
"Common grouping for recording picosecond values with
2 decimal precision. Values include the instantaneous,
average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units ps;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units ps;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units ps;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units ps;
description
"The maximum value of the statistic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision2-ps2 {
description
"Common grouping for recording picosecond^2 values with
2 decimal precision. Values include the instantaneous,
average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units ps^2;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units ps^2;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units ps^2;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units ps^2;
description
"The maximum value of the statistic over the sampling
period";
}
}
grouping avg-min-max-instant-stats-precision18-ber {
description
"Common grouping for recording bit error rate (BER) values
with 18 decimal precision. Note that decimal64 supports
values as small as i x 10^-18 where i is an integer. Values
smaller than this should be reported as 0 to inidicate error
free or near error free performance. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 18;
}
units bit-errors-per-second;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 18;
}
units bit-errors-per-second;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 18;
}
units bit-errors-per-second;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 18;
}
units bit-errors-per-second;
description
"The maximum value of the statistic over the sampling
period";
}
}
// identity statements
identity TRIBUTARY_PROTOCOL_TYPE {
description
"Base identity for protocol framing used by tributary
signals.";
}
identity PROT_1GE {
base TRIBUTARY_PROTOCOL_TYPE;
description "1G Ethernet protocol";
}
identity PROT_OC48 {
base TRIBUTARY_PROTOCOL_TYPE;
description "OC48 protocol";
}
identity PROT_STM16 {
base TRIBUTARY_PROTOCOL_TYPE;
description "STM 16 protocol";
}
identity PROT_10GE_LAN {
base TRIBUTARY_PROTOCOL_TYPE;
description "10G Ethernet LAN protocol";
}
identity PROT_10GE_WAN {
base TRIBUTARY_PROTOCOL_TYPE;
description "10G Ethernet WAN protocol";
}
identity PROT_OC192 {
base TRIBUTARY_PROTOCOL_TYPE;
description "OC 192 (9.6GB) port protocol";
}
identity PROT_STM64 {
base TRIBUTARY_PROTOCOL_TYPE;
description "STM 64 protocol";
}
identity PROT_OTU2 {
base TRIBUTARY_PROTOCOL_TYPE;
description "OTU 2 protocol";
}
identity PROT_OTU2E {
base TRIBUTARY_PROTOCOL_TYPE;
description "OTU 2e protocol";
}
identity PROT_OTU1E {
base TRIBUTARY_PROTOCOL_TYPE;
description "OTU 1e protocol";
}
identity PROT_ODU2 {
base TRIBUTARY_PROTOCOL_TYPE;
description "ODU 2 protocol";
}
identity PROT_ODU2E {
base TRIBUTARY_PROTOCOL_TYPE;
description "ODU 2e protocol";
}
identity PROT_40GE {
base TRIBUTARY_PROTOCOL_TYPE;
description "40G Ethernet port protocol";
}
identity PROT_OC768 {
base TRIBUTARY_PROTOCOL_TYPE;
description "OC 768 protocol";
}
identity PROT_STM256 {
base TRIBUTARY_PROTOCOL_TYPE;
description "STM 256 protocol";
}
identity PROT_OTU3 {
base TRIBUTARY_PROTOCOL_TYPE;
description "OTU 3 protocol";
}
identity PROT_ODU3 {
base TRIBUTARY_PROTOCOL_TYPE;
description "ODU 3 protocol";
}
identity PROT_100GE {
base TRIBUTARY_PROTOCOL_TYPE;
description "100G Ethernet protocol";
}
identity PROT_100G_MLG {
base TRIBUTARY_PROTOCOL_TYPE;
description "100G MLG protocol";
}
identity PROT_OTU4 {
base TRIBUTARY_PROTOCOL_TYPE;
description "OTU4 signal protocol (112G) for transporting
100GE signal";
}
identity PROT_OTUCN {
base TRIBUTARY_PROTOCOL_TYPE;
description "OTU Cn protocol";
}
identity PROT_ODU4 {
base TRIBUTARY_PROTOCOL_TYPE;
description "ODU 4 protocol";
}
identity TRANSCEIVER_FORM_FACTOR_TYPE {
description
"Base identity for identifying the type of pluggable optic
transceiver (i.e,. form factor) used in a port.";
}
identity CFP {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"C form-factor pluggable, that can support up to a
100 Gb/s signal with 10x10G or 4x25G physical channels";
}
identity CFP2 {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"1/2 C form-factor pluggable, that can support up to a
200 Gb/s signal with 10x10G, 4x25G, or 8x25G physical
channels";
}
identity CFP2_ACO {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"CFP2 analog coherent optics transceiver, supporting
100 Gb, 200Gb, and 250 Gb/s signal.";
}
identity CFP4 {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"1/4 C form-factor pluggable, that can support up to a
100 Gb/s signal with 10x10G or 4x25G physical channels";
}
identity QSFP {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"OriginalQuad Small Form-factor Pluggable transceiver that can
support 4x1G physical channels. Not commonly used.";
}
identity QSFP_PLUS {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"Quad Small Form-factor Pluggable transceiver that can support
up to 4x10G physical channels.";
}
identity QSFP28 {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"QSFP pluggable optic with support for up to 4x28G physical
channels";
}
identity CPAK {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"Cisco CPAK transceiver supporting 100 Gb/s.";
}
identity SFP {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"Small form-factor pluggable transceiver supporting up to
10 Gb/s signal";
}
identity SFP_PLUS {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"Enhanced small form-factor pluggable transceiver supporting
up to 16 Gb/s signals, including 10 GbE and OTU2";
}
identity XFP {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"10 Gigabit small form factor pluggable transceiver supporting
10 GbE and OTU2";
}
identity X2 {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"10 Gigabit small form factor pluggable transceiver supporting
10 GbE using a XAUI inerface and 4 data channels.";
}
identity NON_PLUGGABLE {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"Represents a port that does not require a pluggable optic,
e.g., with on-board optics like COBO";
}
identity OTHER {
base TRANSCEIVER_FORM_FACTOR_TYPE;
description
"Represents a transceiver form factor not otherwise listed";
}
identity FIBER_CONNECTOR_TYPE {
description
"Type of optical fiber connector";
}
identity SC_CONNECTOR {
base FIBER_CONNECTOR_TYPE;
description
"SC type fiber connector";
}
identity LC_CONNECTOR {
base FIBER_CONNECTOR_TYPE;
description
"LC type fiber connector";
}
identity MPO_CONNECTOR {
base FIBER_CONNECTOR_TYPE;
description
"MPO (multi-fiber push-on/pull-off) type fiber connector
1x12 fibers";
}
identity ETHERNET_PMD_TYPE {
description
"Ethernet compliance codes (PMD) supported by transceivers";
}
identity ETH_10GBASE_LRM {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 10GBASE_LRM";
}
identity ETH_10GBASE_LR {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 10GBASE_LR";
}
identity ETH_10GBASE_ZR {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 10GBASE_ZR";
}
identity ETH_10GBASE_ER {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 10GBASE_ER";
}
identity ETH_10GBASE_SR {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 10GBASE_SR";
}
identity ETH_40GBASE_CR4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 40GBASE_CR4";
}
identity ETH_40GBASE_SR4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 40GBASE_SR4";
}
identity ETH_40GBASE_LR4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 40GBASE_LR4";
}
identity ETH_40GBASE_ER4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 40GBASE_ER4";
}
identity ETH_40GBASE_PSM4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 40GBASE_PSM4";
}
identity ETH_4X10GBASE_LR {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 4x10GBASE_LR";
}
identity ETH_4X10GBASE_SR {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 4x10GBASE_SR";
}
identity ETH_100G_AOC {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100G_AOC";
}
identity ETH_100G_ACC {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100G_ACC";
}
identity ETH_100GBASE_SR10 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100GBASE_SR10";
}
identity ETH_100GBASE_SR4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100GBASE_SR4";
}
identity ETH_100GBASE_LR4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100GBASE_LR4";
}
identity ETH_100GBASE_ER4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100GBASE_ER4";
}
identity ETH_100GBASE_CWDM4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100GBASE_CWDM4";
}
identity ETH_100GBASE_CLR4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100GBASE_CLR4";
}
identity ETH_100GBASE_PSM4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100GBASE_PSM4";
}
identity ETH_100GBASE_CR4 {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: 100GBASE_CR4";
}
identity ETH_UNDEFINED {
base ETHERNET_PMD_TYPE;
description "Ethernet compliance code: undefined";
}
identity SONET_APPLICATION_CODE {
description
"Supported SONET/SDH application codes";
}
identity VSR2000_3R2 {
base SONET_APPLICATION_CODE;
description
"SONET/SDH application code: VSR2000_3R2";
}
identity VSR2000_3R3 {
base SONET_APPLICATION_CODE;
description
"SONET/SDH application code: VSR2000_3R3";
}
identity VSR2000_3R5 {
base SONET_APPLICATION_CODE;
description
"SONET/SDH application code: VSR2000_3R5";
}
identity SONET_UNDEFINED {
base SONET_APPLICATION_CODE;
description
"SONET/SDH application code: undefined";
}
identity OTN_APPLICATION_CODE {
description
"Supported OTN application codes";
}
identity P1L1_2D1 {
base OTN_APPLICATION_CODE;
description
"OTN application code: P1L1_2D1";
}
identity P1S1_2D2 {
base OTN_APPLICATION_CODE;
description
"OTN application code: P1S1_2D2";
}
identity P1L1_2D2 {
base OTN_APPLICATION_CODE;
description
"OTN application code: P1L1_2D2";
}
identity OTN_UNDEFINED {
base OTN_APPLICATION_CODE;
description
"OTN application code: undefined";
}
identity TRIBUTARY_RATE_CLASS_TYPE {
description
"Rate of tributary signal _- identities will typically reflect
rounded bit rate.";
}
identity TRIB_RATE_1G {
base TRIBUTARY_RATE_CLASS_TYPE;
description
"1G tributary signal rate";
}
identity TRIB_RATE_2.5G {
base TRIBUTARY_RATE_CLASS_TYPE;
description
"2.5G tributary signal rate";
}
identity TRIB_RATE_10G {
base TRIBUTARY_RATE_CLASS_TYPE;
description
"10G tributary signal rate";
}
identity TRIB_RATE_40G {
base TRIBUTARY_RATE_CLASS_TYPE;
description
"40G tributary signal rate";
}
identity TRIB_RATE_100G {
base TRIBUTARY_RATE_CLASS_TYPE;
description
"100G tributary signal rate";
}
identity LOGICAL_ELEMENT_PROTOCOL_TYPE {
description
"Type of protocol framing used on the logical channel or
tributary";
}
identity PROT_ETHERNET {
base LOGICAL_ELEMENT_PROTOCOL_TYPE;
description
"Ethernet protocol framing";
}
identity PROT_OTN {
base LOGICAL_ELEMENT_PROTOCOL_TYPE;
description
"OTN protocol framing";
}
identity OPTICAL_CHANNEL {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
description
"Optical channels act as carriers for transport traffic
directed over a line system. They are represented as
physical components in the physical inventory model.";
}
}
ietf-interfaces.yang 000664 001750 001750 00000062655 12754614067 015214 0 ustar 00root1 root1 000000 000000 module ietf-interfaces {
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
contact
"WG Web:
WG List:
WG Chair: Thomas Nadeau
WG Chair: Juergen Schoenwaelder
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 7223; see
the RFC itself for full legal notices.";
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
configured interfaces.";
}
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Configuration data nodes
*/
container interfaces {
description
"Interface configuration parameters.";
list interface {
key "name";
description
"The list of configured interfaces on the device.
The operational state of an interface is available in the
/interfaces-state/interface list. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the
/interfaces-state/interface list. If the configuration
of a user-controlled interface cannot be used by the system,
the configured interface is not instantiated in the
/interfaces-state/interface list.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list /interfaces-state/interface contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
/interfaces-state/interface list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interface-state/interface list.";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
}
enum disabled {
value 2;
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
}
}
/*
* Operational state data nodes
*/
container interfaces-state {
config false;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether they are configured or
not.";
leaf name {
type string;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
openconfig-transport-line-protection.yang 000664 001750 001750 00000031554 13106236405 021414 0 ustar 00root1 root1 000000 000000 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.";
//
// 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
// |_______|
//
// oc-ext:openconfig-version "0.2.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.";
}
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";
}
leaf primary-switch-hysteresis {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The delta in 0.01 dB between the primary-switch-threshold
and the signal received before initiating a reversion in
order to prevent toggling between ports when an input
signal is very close to threshold. If the hardware supports
only one switch hysteresis for primary and secondary ports
then it is recommended to set both primary-switch-threshold
and secondary-switch-threshold to the same value to be
explicit";
}
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";
}
leaf secondary-switch-hysteresis {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The delta in 0.01 dB between the secondary-switch-threshold
and the signal received before initiating a reversion in
order to prevent toggling between ports when an input
signal is very close to threshold. If the hardware supports
only one switch hysteresis for primary and secondary ports
then it is recommended to set both primary-switch-threshold
and secondary-switch-threshold to the same value to be
explicit";
}
}
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 automatic 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;
}