NAME

SNMP::Info::Layer3::Arista - SNMP Interface to Arista Networks EOS

AUTHOR

Bill Fenner

SYNOPSIS

 # Let SNMP::Info determine the correct subclass for you.
 my $arista = new SNMP::Info(
                        AutoSpecify => 1,
                        Debug       => 1,
                        # These arguments are passed directly to SNMP::Session
                        DestHost    => 'myswitch',
                        Community   => 'public',
                        Version     => 2
		 	)
    or die "Can't connect to DestHost.\n";

 my $class      = $arista->class();
 print "SNMP::Info determined this device to fall under subclass : $class\n";

DESCRIPTION

Subclass for Arista Networks EOS-based devices

Inherited Classes

SNMP::Info::Aggregate
SNMP::Info::Layer3
SNMP::Info::MAU

Required MIBs

ARISTA-PRODUCTS-MIB
ARISTA-VRF-MIB
Inherited Classes' MIBs

See "Required MIBs" in SNMP::Info::Layer3 for its own MIB requirements.

See "Required MIBs" in SNMP::Info::Aggregate for its own MIB requirements.

See "Required MIBs" in SNMP::Info::MAU for its own MIB requirements.

GLOBALS

These are methods that return scalar values from SNMP

$arista->vendor()

Returns 'arista'

$arista->model()

Tries to reference $arista->id() to one of the product MIBs listed above

Removes 'arista' from the name for readability.

$arista->os()

Returns 'EOS'

$arista->os_ver()

Grabs the os version from sysDescr

Global Methods imported from SNMP::Info::Layer3

See documentation in "GLOBALS" in SNMP::Info::Layer3 for details.

Global Methods imported from SNMP::Info::MAU

See documentation in "GLOBALS" in SNMP::Info::MAU for details.

TABLE METHODS

These are methods that return tables of information in the form of a reference to a hash.

$arista->i_duplex_admin()

Returns info from MAU-MIB

$arista->i_speed_admin()

Returns info from MAU-MIB

$arista->lldp_if()

Returns the mapping to the SNMP Interface Table.

$arista->vrf_arista_rd()

Returns the route distinguisher of each VRF, keyed by the length-prefixed VRF name. EOS serves INVALID for a VRF with none.

(aristaVrfRouteDistinguisher)

$arista->vrf_arista_state()

Returns the state of each VRF, active or inactive, keyed by the length-prefixed VRF name.

(aristaVrfState)

$arista->vrf_arista_if()

Returns the name of the VRF each routed interface is in, keyed by ifIndex.

(aristaVrfIfMembership)

agg_ports

Returns a HASH reference mapping from slave to master port for each member of a port bundle on the device. Keys are ifIndex of the slave ports, Values are ifIndex of the corresponding master ports.

VRF Instances

See "VRF Instances" in SNMP::Info::VRF for the readers.

  • EOS has no MPLS-L3VPN-STD-MIB, so ARISTA-VRF-MIB lists the VRFs and the ports they hold. Each record's sources{list} is ARISTA-VRF-MIB.

  • A route distinguisher of INVALID is none, so rd is undef.

  • oper is undef. EOS 4.36 serves aristaVrfState inactive for VRFs its CLI shows routing, so the state is not an operational status.

  • A port aristaVrfIfTable gives default is a port of the default instance, absent from i_vrf().

aristaVrfTable has no row for the default VRF, so a device with no VRF serves no row at all. How the list reads then:

  • Both aristaVrfRouteDistinguisher and aristaVrfState walked whole, with no reason in walk_status(): the list holds default, with the source ARISTA-VRF-MIB, and vrf_instances_complete() reports 1, none configured (see "Completeness" in SNMP::Info::VRF). A device that does not implement the MIB answers the walks this way, so it reads none.

  • Either walk missing from walk_status(), as on an object primed from a cache, cut short, or recorded absent because the poller could not resolve the MIB: the list reads as unsupported, undef.

Each VRF reads in its own context (context mode), and that context serves only the VRF's addresses and neighbors.

  • The default context serves only the default instance's rows, such as Management0's. i_vrf() there still maps every VRF port, from aristaVrfIfTable.

  • A VRF context serves no ARISTA-VRF-MIB row. i_vrf() there takes the instance from the context name, which is the VRF name.

$arista->context_kinds($feature)

See context_kinds() in SNMP::Info. Returns ['vrf'] for vrf.

$arista->snmp_context($kind, $id)

For vrf, the answer is { kind => 'vrf', id => $name, v2c => '%s@$name', v3 => $name }: the community, @, then the VRF name. The default VRF and an empty name have no context, so nothing is returned.

Table Methods imported from SNMP::Info::Layer3

See documentation in "TABLE METHODS" in SNMP::Info::Layer3 for details.

Table Methods imported from SNMP::Info::MAU

See documentation in "TABLE METHODS" in SNMP::Info::MAU for details.

SET METHODS

These are methods that provide SNMP set functionality for overridden methods or provide a simpler interface to complex set operations. See "SETTING DATA VIA SNMP" in SNMP::Info for general information on set operations.

set_i_vlan()