module openconfig-if-ethernet {
yang-version 1;
namespace
"http://openconfig.net/yang/interfaces/ethernet";
prefix oc-eth;
import openconfig-interfaces {
prefix oc-if;
}
import iana-if-type {
prefix ianaift;
}
import openconfig-yang-types {
prefix oc-yang;
}
import openconfig-extensions {
prefix oc-ext;
}
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
revision "2020-05-06" {
description "Minor formatting fix.";
reference
"2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference
"2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference
"2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference
"2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference
"2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference
"2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference
"2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference
"2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference
"2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference
"2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference
"2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference
"2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference
"1.1.0";
}
oc-ext:openconfig-version "2.8.1";
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity ETHERNET_SPEED {
base
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_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 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_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 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).";
}
grouping ethernet-interface-config {
description
"Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-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" {
value 0;
description "Full duplex mode";
}
enum "HALF" {
value 1;
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-config
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-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 oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
} // grouping ethernet-interface-state-counters
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum "FULL" {
value 0;
description "Full duplex mode";
}
enum "HALF" {
value 1;
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;
} // container counters
} // grouping ethernet-interface-state
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 config
container state {
config false;
description
"State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
} // container state
} // container ethernet
} // grouping ethernet-top
augment /oc-if:interfaces/oc-if:interface {
description
"Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when
"oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description
"Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
} // module openconfig-if-ethernet