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 openconfig-yang-types { prefix oc-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 OpenConfig model for interface configuration and state."; oc-ext:openconfig-version "2.6.1"; 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"; } // 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_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_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 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 { 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 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"; } // egress counters 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 { 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 { 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 }