| module openconfig-lacp { |
| |
| yang-version "1"; |
| |
| // namespace |
| namespace "http://openconfig.net/yang/lacp"; |
| |
| prefix "oc-lacp"; |
| |
| // import some basic types |
| import openconfig-interfaces { prefix oc-if; } |
| import openconfig-yang-types { prefix oc-yang; } |
| import openconfig-extensions { prefix oc-ext; } |
| |
| |
| |
| // meta |
| organization "OpenConfig working group"; |
| |
| contact |
| "OpenConfig working group |
| www.openconfig.net"; |
| |
| description |
| "This module describes configuration and operational state |
| data for Link Aggregation Control Protocol (LACP) for |
| managing aggregate interfaces. It works in conjunction with |
| the OpenConfig interfaces and aggregate interfaces models."; |
| |
| oc-ext:openconfig-version "1.1.0"; |
| |
| revision "2017-05-05" { |
| description |
| "Add member local and remote port num"; |
| reference "1.1.0"; |
| } |
| |
| revision "2016-05-26" { |
| description |
| "OpenConfig public release"; |
| reference "1.0.2"; |
| } |
| |
| |
| // typedef statements |
| |
| typedef lacp-activity-type { |
| type enumeration { |
| enum ACTIVE { |
| description |
| "Interface is an active member, i.e., will detect and |
| maintain aggregates"; |
| } |
| enum PASSIVE { |
| description |
| "Interface is a passive member, i.e., it participates |
| with an active partner"; |
| } |
| } |
| description |
| "Describes the LACP membership type, active or passive, of the |
| interface in the aggregate"; |
| reference "IEEE 802.1AX-2008"; |
| } |
| |
| typedef lacp-timeout-type { |
| type enumeration { |
| enum LONG { |
| description |
| "Participant wishes to use long timeouts to detect |
| status of the aggregate, i.e., will expect less frequent |
| transmissions. Long timeout is 90 seconds."; |
| } |
| enum SHORT { |
| description |
| "Participant wishes to use short timeouts, i.e., expects |
| frequent transmissions to aggressively detect status |
| changes. Short timeout is 3 seconds."; |
| } |
| } |
| description |
| "Type of timeout used, short or long, by LACP participants"; |
| reference "IEEE 802.1AX-2008"; |
| } |
| |
| typedef lacp-synchronization-type { |
| type enumeration { |
| enum IN_SYNC { |
| description |
| "Participant is in sync with the system id and key |
| transmitted"; |
| } |
| enum OUT_SYNC { |
| description |
| "Participant is not in sync with the system id and key |
| transmitted"; |
| } |
| } |
| description |
| "Indicates LACP synchronization state of participant"; |
| reference "IEEE 802.1AX-2008"; |
| } |
| |
| typedef lacp-period-type { |
| type enumeration { |
| enum FAST { |
| description "Send LACP packets every second"; |
| } |
| enum SLOW { |
| description "Send LACP packets every 30 seconds"; |
| } |
| } |
| description |
| "Defines the period options for the time between sending |
| LACP messages"; |
| reference "IEEE 802.3ad"; |
| } |
| |
| // grouping statements |
| |
| |
| grouping aggregation-lacp-members-config { |
| description |
| "Configuration data for lacp member interfaces"; |
| |
| //currently a placeholder -- the list of member interfaces |
| //and their status is considered opstate only |
| } |
| |
| grouping aggregation-lacp-members-state { |
| description |
| "Operational status data for the member interfaces"; |
| |
| leaf interface { |
| type oc-if:base-interface-ref; |
| description |
| "Reference to interface member of the LACP aggregate"; |
| } |
| |
| leaf activity { |
| type lacp-activity-type; |
| description "Indicates participant is active or passive"; |
| } |
| |
| leaf timeout { |
| type lacp-timeout-type; |
| description |
| "The timeout type (short or long) used by the |
| participant"; |
| } |
| |
| leaf synchronization { |
| type lacp-synchronization-type; |
| description |
| "Indicates whether the participant is in-sync or |
| out-of-sync"; |
| } |
| |
| leaf aggregatable { |
| type boolean; |
| description |
| "A true value indicates that the participant will allow |
| the link to be used as part of the aggregate. A false |
| value indicates the link should be used as an individual |
| link"; |
| } |
| |
| leaf collecting { |
| type boolean; |
| description |
| "If true, the participant is collecting incoming frames |
| on the link, otherwise false"; |
| } |
| |
| leaf distributing { |
| type boolean; |
| description |
| "When true, the participant is distributing outgoing |
| frames; when false, distribution is disabled"; |
| } |
| |
| leaf system-id { |
| type oc-yang:mac-address; |
| description |
| "MAC address that defines the local system ID for the |
| aggregate interface"; |
| } |
| |
| leaf oper-key { |
| type uint16; |
| description |
| "Current operational value of the key for the aggregate |
| interface"; |
| } |
| |
| leaf partner-id { |
| type oc-yang:mac-address; |
| description |
| "MAC address representing the protocol partner's interface |
| system ID"; |
| } |
| |
| leaf partner-key { |
| type uint16; |
| description |
| "Operational value of the protocol partner's key"; |
| } |
| |
| leaf port-num { |
| type uint16; |
| description |
| "Port number of the local (actor) aggregation member"; |
| } |
| |
| leaf partner-port-num { |
| type uint16; |
| description |
| "Port number of the partner (remote) port for this member |
| port"; |
| } |
| } |
| |
| grouping aggregation-lacp-members-statistics { |
| description |
| "LACP packet statistics for the member interfaces"; |
| |
| container counters { |
| description |
| "LACP protocol counters"; |
| |
| leaf lacp-in-pkts { |
| type oc-yang:counter64; |
| description |
| "Number of LACPDUs received"; |
| } |
| |
| leaf lacp-out-pkts { |
| type oc-yang:counter64; |
| description |
| "Number of LACPDUs transmitted"; |
| } |
| |
| leaf lacp-rx-errors { |
| type oc-yang:counter64; |
| description |
| "Number of LACPDU receive packet errors"; |
| } |
| |
| leaf lacp-tx-errors { |
| type oc-yang:counter64; |
| description |
| "Number of LACPDU transmit packet errors"; |
| } |
| |
| leaf lacp-unknown-errors { |
| type oc-yang:counter64; |
| description |
| "Number of LACPDU unknown packet errors"; |
| } |
| |
| leaf lacp-errors { |
| type oc-yang:counter64; |
| description |
| "Number of LACPDU illegal packet errors"; |
| } |
| } |
| } |
| |
| grouping aggregation-lacp-members-top { |
| description |
| "Top-level grouping for aggregate members list"; |
| |
| container members { |
| config false; |
| description |
| "Enclosing container for the list of members interfaces of |
| the aggregate. This list is considered operational state |
| only so is labeled config false and has no config container"; |
| |
| list member { |
| key "interface"; |
| description |
| "List of member interfaces and their associated status for |
| a LACP-controlled aggregate interface. Member list is not |
| configurable here -- each interface indicates items |
| its participation in the LAG."; |
| |
| leaf interface { |
| type leafref { |
| path "../state/interface"; |
| } |
| description |
| "Reference to aggregate member interface"; |
| } |
| |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data for aggregate members"; |
| |
| uses aggregation-lacp-members-state; |
| uses aggregation-lacp-members-statistics; |
| } |
| } |
| } |
| } |
| |
| grouping lacp-interfaces-config { |
| description |
| "Configuration data for each LACP-enabled interface"; |
| |
| leaf name { |
| type oc-if:base-interface-ref; |
| description |
| "Reference to the interface on which LACP should be |
| configured. The type of the target interface must be |
| ieee8023adLag"; |
| } |
| |
| leaf interval { |
| type lacp-period-type; |
| default SLOW; |
| description |
| "Set the period between LACP messages -- uses |
| the lacp-period-type enumeration."; |
| } |
| |
| leaf lacp-mode { |
| type lacp-activity-type; |
| default ACTIVE; |
| description |
| "ACTIVE is to initiate the transmission of LACP packets. |
| PASSIVE is to wait for peer to initiate the transmission of |
| LACP packets."; |
| //TODO:some implementations configure the LACP mode on each |
| //member interface rather than on the LAG interface. There |
| //may be use cases for this identified at a later time. |
| } |
| |
| leaf system-id-mac { |
| type oc-yang:mac-address; |
| description |
| "The MAC address portion of the node's System ID. This is |
| combined with the system priority to construct the 8-octet |
| system-id"; |
| } |
| |
| uses aggregation-lacp-global-config; |
| } |
| |
| grouping lacp-interfaces-state { |
| description |
| "Operational state data for each LACP-enabled interface"; |
| } |
| |
| grouping lacp-interfaces-top { |
| description |
| "Top-level grouping for LACP-enabled interfaces"; |
| |
| container interfaces { |
| description |
| "Enclosing container for the list of LACP-enabled |
| interfaces"; |
| |
| list interface { |
| key "name"; |
| description |
| "List of aggregate interfaces managed by LACP"; |
| |
| leaf name { |
| type leafref { |
| path "../config/name"; |
| } |
| description |
| "Reference to the list key"; |
| } |
| |
| container config { |
| description |
| "Configuration data for each LACP aggregate interface"; |
| |
| uses lacp-interfaces-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data for each LACP aggregate |
| interface"; |
| |
| uses lacp-interfaces-config; |
| uses lacp-interfaces-state; |
| } |
| |
| uses aggregation-lacp-members-top; |
| } |
| } |
| } |
| |
| grouping aggregation-lacp-global-config { |
| description |
| "Configuration data for LACP aggregate interfaces"; |
| |
| |
| leaf system-priority { |
| type uint16; |
| description |
| "Sytem priority used by the node on this LAG interface. |
| Lower value is higher priority for determining which node |
| is the controlling system."; |
| } |
| } |
| |
| grouping aggregation-lacp-global-state { |
| description |
| "Operational data for LACP aggregate interfaces"; |
| |
| } |
| |
| grouping aggregation-lacp-top { |
| description |
| "Top level configuration and state variable containers for |
| LACP data"; |
| |
| container lacp { |
| description |
| "Configuration and operational state data for LACP protocol |
| operation on the aggregate interface"; |
| |
| container config { |
| description |
| "Configuration data for LACP"; |
| |
| uses aggregation-lacp-global-config; |
| } |
| |
| container state { |
| |
| config false; |
| description |
| "Operational state data for LACP"; |
| |
| uses aggregation-lacp-global-config; |
| uses aggregation-lacp-global-state; |
| } |
| uses lacp-interfaces-top; |
| } |
| } |
| |
| // data definition statements |
| uses aggregation-lacp-top; |
| |
| // augment statements |
| |
| |
| } |