mirror of
https://github.com/librenms/librenms.git
synced 2024-09-21 10:28:13 +00:00
Arista VRF discovery support (#11421)
* arista vrf discovery * more mibs * tests * codeclimate
This commit is contained in:
parent
125ecb4bde
commit
35b4e1459e
@ -140,7 +140,7 @@ if (Config::get('enable_vrfs')) {
|
||||
}
|
||||
}//end if
|
||||
}//end foreach
|
||||
} else if ($device['os_group'] == 'nokia') {
|
||||
} elseif ($device['os_group'] == 'nokia') {
|
||||
unset($vrf_count);
|
||||
|
||||
$vrtr = snmpwalk_cache_oid($device, 'vRtrConfTable', [], 'TIMETRA-VRTR-MIB');
|
||||
@ -196,7 +196,58 @@ if (Config::get('enable_vrfs')) {
|
||||
$valid_vrf_if[$vrf_id][$if] = 1;
|
||||
}
|
||||
} //end foreach
|
||||
} elseif ($device['os_group'] == 'arista') {
|
||||
echo "Arista\n";
|
||||
unset($vrf_count);
|
||||
|
||||
$aristaVrfTable = snmpwalk_cache_oid($device, 'aristaVrfTable', [], 'ARISTA-VRF-MIB');
|
||||
$aristaVrfIfTable = snmpwalk_cache_oid($device, 'aristaVrfIfTable', [], 'ARISTA-VRF-MIB');
|
||||
d_echo($aristaVrfTable);
|
||||
d_echo($aristaVrfIfTable);
|
||||
|
||||
foreach ($aristaVrfTable as $vrf_name => $vrf_data) {
|
||||
//$vrf_desc = $vr['vRtrName'];
|
||||
//$vrf_as = $vr['vRtrAS4Byte'];
|
||||
$vrf_oid = $vrf_name;
|
||||
$vrf_rd = $vrf_data['aristaVrfRouteDistinguisher'];
|
||||
|
||||
echo "\n [VRF $vrf_name] OID - $vrf_oid";
|
||||
echo "\n [VRF $vrf_name] RD - $vrf_rd";
|
||||
echo "\n [VRF $vrf_name] DESC - $vrf_desc";
|
||||
|
||||
$vrfs = [
|
||||
'vrf_oid' => $vrf_oid,
|
||||
'vrf_name' => $vrf_name,
|
||||
//'bgpLocalAs' => $vrf_as,
|
||||
'mplsVpnVrfRouteDistinguisher' => $vrf_rd,
|
||||
//'mplsVpnVrfDescription' => $$vrf_desc,
|
||||
'device_id' => $device['device_id'],
|
||||
];
|
||||
|
||||
if (dbFetchCell('SELECT COUNT(*) FROM vrfs WHERE device_id = ? AND `vrf_oid`=?', [$device['device_id'], $vrf_oid])) {
|
||||
dbUpdate(['vrf_name' => $vrf_name, 'bgpLocalAs' => $vrf_as, 'mplsVpnVrfRouteDistinguisher' => $vrf_rd, 'mplsVpnVrfDescription' => $vrf_desc], 'vrfs', 'device_id=? AND vrf_oid=?', [$device['device_id'], $vrf_oid]);
|
||||
} else {
|
||||
dbInsert($vrfs, 'vrfs');
|
||||
}
|
||||
} //end foreach
|
||||
|
||||
echo "\n [VRF $vrf_name] PORTS - ";
|
||||
foreach ($aristaVrfIfTable as $if_index => $if_data) {
|
||||
try {
|
||||
$ifVrfName = $if_data['aristaVrfIfMembership'];
|
||||
$vrf_id = dbFetchCell('SELECT vrf_id FROM vrfs WHERE device_id = ? AND `vrf_oid`=?', [$device['device_id'], $ifVrfName]);
|
||||
$valid_vrf[$vrf_id] = 1;
|
||||
$interface = dbFetchRow('SELECT * FROM `ports` WHERE `device_id` = ? AND `ifIndex` = ?', [$device['device_id'], $if_index]);
|
||||
echo makeshortif($interface['ifDescr']).' ';
|
||||
dbUpdate(['ifVrf' => $vrf_id], 'ports', 'port_id=?', [$interface['port_id']]);
|
||||
$if = $interface['port_id'];
|
||||
$valid_vrf_if[$vrf_id][$if] = 1;
|
||||
} catch (Exception $e) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
} //end if
|
||||
|
||||
unset(
|
||||
$descr_table,
|
||||
$port_table
|
||||
|
155
mibs/arista/ARISTA-GENERAL-MIB
Normal file
155
mibs/arista/ARISTA-GENERAL-MIB
Normal file
@ -0,0 +1,155 @@
|
||||
-- ARISTA-GENERAL-MIB: Arista General MIB
|
||||
ARISTA-GENERAL-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY,
|
||||
OBJECT-TYPE,
|
||||
Unsigned32 FROM SNMPv2-SMI
|
||||
MODULE-COMPLIANCE,
|
||||
OBJECT-GROUP FROM SNMPv2-CONF
|
||||
DateAndTime FROM SNMPv2-TC
|
||||
aristaMibs FROM ARISTA-SMI-MIB;
|
||||
|
||||
aristaGeneralMib MODULE-IDENTITY
|
||||
LAST-UPDATED "201711060000Z"
|
||||
ORGANIZATION "Arista Networks, Inc."
|
||||
CONTACT-INFO
|
||||
"Arista Networks, Inc.
|
||||
|
||||
Postal: 5453 Great America Parkway
|
||||
Santa Clara, CA 95054
|
||||
|
||||
Tel: +1 408 547-5500
|
||||
|
||||
E-mail: snmp@arista.com"
|
||||
DESCRIPTION
|
||||
"First draft."
|
||||
REVISION "201711060000Z"
|
||||
DESCRIPTION
|
||||
"Initial version."
|
||||
::= { aristaMibs 24 }
|
||||
|
||||
-- Textual Conventions --
|
||||
|
||||
aristaGeneralMibNotifications OBJECT IDENTIFIER
|
||||
::= { aristaGeneralMib 0 }
|
||||
|
||||
aristaGeneralMibObjects OBJECT IDENTIFIER
|
||||
::= { aristaGeneralMib 1 }
|
||||
|
||||
aristaGeneralMibConformance OBJECT IDENTIFIER
|
||||
::= { aristaGeneralMib 2 }
|
||||
|
||||
-- Reload cause table --
|
||||
|
||||
aristaReloadCauseTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF AristaReloadCauseEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Information describing the reload cause of each CPU unit.
|
||||
On a modular system, entries for reboot instances of the
|
||||
standby supervisor are present only when the redundancy
|
||||
protocol is stateful switchover (SSO)."
|
||||
::= { aristaGeneralMibObjects 1 }
|
||||
|
||||
aristaReloadCauseEntry OBJECT-TYPE
|
||||
SYNTAX AristaReloadCauseEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This entry contains reload cause information of a CPU unit
|
||||
for a particular reboot instance."
|
||||
INDEX {
|
||||
aristaReloadUnitIndex,
|
||||
aristaReloadIndex,
|
||||
aristaReloadCauseIndex
|
||||
}
|
||||
::= { aristaReloadCauseTable 1 }
|
||||
|
||||
AristaReloadCauseEntry ::= SEQUENCE {
|
||||
-- INDEX information
|
||||
aristaReloadUnitIndex Unsigned32,
|
||||
aristaReloadIndex Unsigned32,
|
||||
aristaReloadCauseIndex Unsigned32,
|
||||
-- Reload Cause
|
||||
aristaReloadCauseDescription OCTET STRING,
|
||||
aristaReloadTime DateAndTime
|
||||
}
|
||||
|
||||
aristaReloadUnitIndex OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A unique identifier for a CPU unit. On a modular system, it is
|
||||
the slot number of the supervisor. Unit index 0 mirrors the entries
|
||||
of the active supervisor. On a fixed system, unit index 0 is for
|
||||
the whole system."
|
||||
::= { aristaReloadCauseEntry 1 }
|
||||
|
||||
aristaReloadIndex OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A unique key to get the particular reboot instance. Reboot instances
|
||||
are numbered in reverse chronological order, with the latest reboot
|
||||
at index 0."
|
||||
::= { aristaReloadCauseEntry 2 }
|
||||
|
||||
aristaReloadCauseIndex OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A unique key to get one of the causes of a particular reboot instance."
|
||||
::= { aristaReloadCauseEntry 3 }
|
||||
|
||||
aristaReloadCauseDescription OBJECT-TYPE
|
||||
SYNTAX OCTET STRING
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Description for the reload cause."
|
||||
::= { aristaReloadCauseEntry 4 }
|
||||
|
||||
aristaReloadTime OBJECT-TYPE
|
||||
SYNTAX DateAndTime
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Time when the reload happened."
|
||||
::= { aristaReloadCauseEntry 5 }
|
||||
|
||||
-- Conformance and Compliance --
|
||||
|
||||
aristaGeneralMibCompliances OBJECT IDENTIFIER
|
||||
::= { aristaGeneralMibConformance 1 }
|
||||
|
||||
aristaGeneralMibGroups OBJECT IDENTIFIER
|
||||
::= { aristaGeneralMibConformance 2 }
|
||||
|
||||
aristaGeneralMibCompliance MODULE-COMPLIANCE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The compliance statement for Arista switches that support
|
||||
the ARISTA-GENERAL-MIB."
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS {
|
||||
aristaGeneralMibGroup
|
||||
}
|
||||
::= { aristaGeneralMibCompliances 1 }
|
||||
|
||||
aristaGeneralMibGroup OBJECT-GROUP
|
||||
OBJECTS {
|
||||
aristaReloadCauseDescription,
|
||||
aristaReloadTime
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The collection of objects that provide reload cause
|
||||
information for the CPU units in the system."
|
||||
::= { aristaGeneralMibGroups 1 }
|
||||
|
||||
END
|
183
mibs/arista/ARISTA-IF-MIB
Normal file
183
mibs/arista/ARISTA-IF-MIB
Normal file
@ -0,0 +1,183 @@
|
||||
-- ARISTA-IF-MIB: Arista structure of interface management information
|
||||
-- Copyright (c) 2014 Arista Networks, Inc. All rights reserved.
|
||||
|
||||
ARISTA-IF-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE,
|
||||
TimeTicks, Gauge32, Counter32 FROM SNMPv2-SMI
|
||||
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
|
||||
ifIndex FROM IF-MIB
|
||||
CounterBasedGauge64 FROM HCNUM-TC
|
||||
aristaMibs FROM ARISTA-SMI-MIB;
|
||||
|
||||
aristaIfMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "201410090000Z"
|
||||
ORGANIZATION "Arista Networks, Inc."
|
||||
CONTACT-INFO
|
||||
"Arista Networks, Inc.
|
||||
|
||||
Postal: 5453 Great America Parkway
|
||||
Santa Clara, CA 95054
|
||||
|
||||
Tel: +1 408 547-5500
|
||||
|
||||
E-mail: snmp@arista.com"
|
||||
DESCRIPTION
|
||||
"The MIB module for reporting additional interface statistics
|
||||
on Arista devices."
|
||||
REVISION "201410090000Z"
|
||||
DESCRIPTION "Initial version."
|
||||
::= { aristaMibs 15 }
|
||||
|
||||
|
||||
aristaIf OBJECT IDENTIFIER ::= { aristaIfMIB 1 }
|
||||
|
||||
aristaIfTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF AristaIfEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This table contains additional interface statistics not
|
||||
contained in the IF-MIB."
|
||||
::= { aristaIf 1 }
|
||||
|
||||
aristaIfEntry OBJECT-TYPE
|
||||
SYNTAX AristaIfEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"An entry containing statistics for a given interface."
|
||||
INDEX { ifIndex }
|
||||
::= { aristaIfTable 1 }
|
||||
|
||||
AristaIfEntry ::= SEQUENCE {
|
||||
aristaIfCounterLastUpdated TimeTicks,
|
||||
aristaIfRateInterval TimeTicks,
|
||||
aristaIfInPktRate Gauge32,
|
||||
aristaIfOutPktRate Gauge32,
|
||||
aristaIfInOctetRate CounterBasedGauge64,
|
||||
aristaIfOutOctetRate CounterBasedGauge64,
|
||||
aristaIfRatesLastUpdated TimeTicks,
|
||||
aristaIfOperStatusChanges Counter32,
|
||||
aristaIfInAclDrops Counter32
|
||||
}
|
||||
|
||||
aristaIfCounterLastUpdated OBJECT-TYPE
|
||||
SYNTAX TimeTicks
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The value of sysUpTime at which the counters in the ifTable and ifXTable
|
||||
were sampled from the hardware."
|
||||
::= { aristaIfEntry 1 }
|
||||
|
||||
aristaIfRateInterval OBJECT-TYPE
|
||||
SYNTAX TimeTicks
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The amount of time over which the aristaIf*Rate values
|
||||
are averaged for this interface."
|
||||
::= { aristaIfEntry 2 }
|
||||
|
||||
aristaIfInPktRate OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The rate, in packets per second, of packets inbound on
|
||||
this interface, averaged over aristaIfRateInterval."
|
||||
::= { aristaIfEntry 3 }
|
||||
|
||||
aristaIfOutPktRate OBJECT-TYPE
|
||||
SYNTAX Gauge32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The rate, in packets per second, of packets outbound on
|
||||
this interface, averaged over aristaIfRateInterval."
|
||||
::= { aristaIfEntry 4 }
|
||||
|
||||
aristaIfInOctetRate OBJECT-TYPE
|
||||
SYNTAX CounterBasedGauge64
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The rate, in octets per second, of data inbound on
|
||||
this interface, averaged over aristaIfRateInterval."
|
||||
::= { aristaIfEntry 5 }
|
||||
|
||||
aristaIfOutOctetRate OBJECT-TYPE
|
||||
SYNTAX CounterBasedGauge64
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The rate, in octets per second, of data inbound on
|
||||
this interface, averaged over aristaIfRateInterval."
|
||||
::= { aristaIfEntry 6 }
|
||||
|
||||
aristaIfRatesLastUpdated OBJECT-TYPE
|
||||
SYNTAX TimeTicks
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The value of sysUpTime at which the aristaIf*Rate gauges were
|
||||
last calculated."
|
||||
::= { aristaIfEntry 7 }
|
||||
|
||||
aristaIfOperStatusChanges OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of times since system boot that ifOperStatus has
|
||||
changed."
|
||||
::= { aristaIfEntry 8 }
|
||||
|
||||
aristaIfInAclDrops OBJECT-TYPE
|
||||
SYNTAX Counter32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of inbound packets dropped because of an
|
||||
Access Control List (ACL).
|
||||
|
||||
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
|
||||
ifCounterDiscontinuityTime."
|
||||
::= { aristaIfEntry 9 }
|
||||
|
||||
-- Conformance information
|
||||
aristaIfConformance OBJECT IDENTIFIER ::= { aristaIfMIB 2 }
|
||||
|
||||
aristaIfGroups OBJECT IDENTIFIER ::= { aristaIfConformance 1 }
|
||||
aristaIfCompliances OBJECT IDENTIFIER ::= { aristaIfConformance 2 }
|
||||
|
||||
-- Compliance statements
|
||||
aristaIfCompliance MODULE-COMPLIANCE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The compliance statement for Arista devices
|
||||
that implement the IF-MIB"
|
||||
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS { aristaIfAdditionalInformationGroup }
|
||||
::= { aristaIfCompliances 1 }
|
||||
|
||||
-- Units of conformance
|
||||
aristaIfAdditionalInformationGroup OBJECT-GROUP
|
||||
OBJECTS { aristaIfCounterLastUpdated, aristaIfRateInterval,
|
||||
aristaIfInPktRate, aristaIfOutPktRate,
|
||||
aristaIfInOctetRate, aristaIfOutOctetRate,
|
||||
aristaIfRatesLastUpdated, aristaIfOperStatusChanges,
|
||||
aristaIfInAclDrops }
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A collection of objects providing additional information
|
||||
above and beyond what the IF-MIB provides, applicable to
|
||||
all network interfaces."
|
||||
::= { aristaIfGroups 1 }
|
||||
|
||||
END
|
286
mibs/arista/ARISTA-NEXTHOP-GROUP-MIB
Normal file
286
mibs/arista/ARISTA-NEXTHOP-GROUP-MIB
Normal file
@ -0,0 +1,286 @@
|
||||
ARISTA-NEXTHOP-GROUP-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE,
|
||||
Unsigned32, Counter64 FROM SNMPv2-SMI
|
||||
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC
|
||||
aristaMibs FROM ARISTA-SMI-MIB;
|
||||
|
||||
aristaNexthopGroupMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "201604170000Z"
|
||||
ORGANIZATION "Arista Networks, Inc."
|
||||
CONTACT-INFO
|
||||
"Arista Networks, Inc.
|
||||
|
||||
Postal: 5453 Great America Parkway
|
||||
Santa Clara, CA 95054
|
||||
|
||||
Tel: +1 408 547-5500
|
||||
|
||||
E-mail: snmp@arista.com"
|
||||
DESCRIPTION
|
||||
"This MIB contains information about NextHop Groups (NHG).
|
||||
|
||||
General L3 routing creates routing table entries, each of
|
||||
which are associated with a nexthop. If multiple paths
|
||||
exist for a specific route, the route points to a set of
|
||||
nexthops (commonly referred as ECMP or Equal Cost
|
||||
MultiPath).
|
||||
|
||||
Arista devices support a feature which allows customers to
|
||||
manually create a nexthop list, and use this list to
|
||||
route packets to the specified set of nexthop
|
||||
addresses. Customers can associate a tunnel type (GRE,
|
||||
for example) with the nexthop group, allowing relevant
|
||||
packets to be tunneled as well. The packet forwarding or
|
||||
routing decision happens in hardware.
|
||||
|
||||
Nexthop group feature gives customers full control of how
|
||||
a route should be forwarded (tunneled or otherwise). The
|
||||
number of entries in the nexthop group is also determined
|
||||
by the user, and directly translates to the number of
|
||||
nexthop entries in the hardware for the specified route.
|
||||
|
||||
Let's provide an example, looking at EOS CLI example.
|
||||
|
||||
nexthop-group foo type ip-in-ip
|
||||
ttl 64
|
||||
entry 0 tunnel-destination 10.1.1.1
|
||||
entry 1 tunnel-destination 20.1.1.1
|
||||
!
|
||||
ip route 30.1.1.0/24 Nexthop-Group foo
|
||||
|
||||
In the above configuration, any packet destined to
|
||||
30.1.1.0/24 will be forwarded by the nexthop group
|
||||
'foo'. Each entry inside the nexthop group specifies a
|
||||
particular nexthop ('tunnel destination') chosen by the
|
||||
customer. In this example, packets can be forwarded via
|
||||
either of the nexthop (traffic split equally between the 2
|
||||
entries).
|
||||
|
||||
This MIB module provides information relevant to the
|
||||
nexthop group feature, specifically the status of various
|
||||
nexthop groups configured, and traffic statistics."
|
||||
REVISION "201604170000Z"
|
||||
DESCRIPTION
|
||||
"Initial revision of the MIB module."
|
||||
::= { aristaMibs 21 }
|
||||
|
||||
aristaNexthopGroupMibObjects OBJECT IDENTIFIER
|
||||
::= { aristaNexthopGroupMIB 1 }
|
||||
|
||||
aristaNexthopGroupMibConformance OBJECT IDENTIFIER
|
||||
::= { aristaNexthopGroupMIB 2 }
|
||||
|
||||
-- Textual Convention
|
||||
|
||||
NexthopGroupName ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "255a"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Each nexthop group configured by the user is associated with
|
||||
a name, by configuration."
|
||||
SYNTAX OCTET STRING (SIZE (0..255))
|
||||
|
||||
NexthopGroupType ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A nexthop group is associated with a type, which determines
|
||||
the packet forwarding behavior.
|
||||
|
||||
Type 'ip' refers to L3 IP routing. A route pointing to a
|
||||
nexthop group in this case is equivalent to multiple static
|
||||
route configuration entries each with a particular nexthop.
|
||||
|
||||
Types 'gre', 'mpls', 'ip-in-ip' all refer to tunnel types. In
|
||||
this case a route pointing to the specified nexthop group is
|
||||
used to tunnel packets using the appropriate encapsulation to
|
||||
a tunnel destination. The encapsulation information depends on
|
||||
the tunnel type itself."
|
||||
SYNTAX INTEGER {
|
||||
invalid(0),
|
||||
ipInIp(1),
|
||||
gre(2),
|
||||
mpls(3),
|
||||
ip(4),
|
||||
mplsOverGre(5)
|
||||
}
|
||||
|
||||
-- Nexthop Group table
|
||||
|
||||
aristaNexthopGroupTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF AristaNexthopGroupEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This table contains information about the nexthop groups
|
||||
that are present in the device."
|
||||
::= { aristaNexthopGroupMibObjects 1 }
|
||||
|
||||
aristaNexthopGroupEntry OBJECT-TYPE
|
||||
SYNTAX AristaNexthopGroupEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A conceptual row, containing information for a specific
|
||||
nexthop group."
|
||||
INDEX { aristaNexthopGroupId }
|
||||
::= { aristaNexthopGroupTable 1 }
|
||||
|
||||
AristaNexthopGroupEntry ::= SEQUENCE {
|
||||
aristaNexthopGroupId Unsigned32,
|
||||
aristaNexthopGroupName NexthopGroupName,
|
||||
aristaNexthopGroupType NexthopGroupType
|
||||
}
|
||||
|
||||
aristaNexthopGroupId OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Unique index identifying a nexthop group."
|
||||
::= { aristaNexthopGroupEntry 1 }
|
||||
|
||||
aristaNexthopGroupName OBJECT-TYPE
|
||||
SYNTAX NexthopGroupName
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Unique name identifying a nexthop group."
|
||||
::= { aristaNexthopGroupEntry 2 }
|
||||
|
||||
aristaNexthopGroupType OBJECT-TYPE
|
||||
SYNTAX NexthopGroupType
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The type of the nexthop group. The encapsulation information
|
||||
provided for each entry in the nexthop group corresponds to
|
||||
the type."
|
||||
::= { aristaNexthopGroupEntry 3 }
|
||||
|
||||
-- Nexthop Group counter table
|
||||
|
||||
aristaNexthopGroupCounterTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF AristaNexthopGroupCounterEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"Each nexthop group contains several entries - each
|
||||
entry specifies a particular nexthop through which a packet
|
||||
can be forwarded. There is packet and byte counter information
|
||||
associated with each such nexthop.
|
||||
|
||||
This table represents the per nexthop counter information for
|
||||
every nexthop group."
|
||||
::= { aristaNexthopGroupMibObjects 2 }
|
||||
|
||||
aristaNexthopGroupCounterEntry OBJECT-TYPE
|
||||
SYNTAX AristaNexthopGroupCounterEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A conceptual row, containing counter information for every
|
||||
nexthop defined inside the nexthop group."
|
||||
INDEX { aristaNexthopGroupId,
|
||||
aristaNexthopGroupEntryIndex
|
||||
}
|
||||
::= { aristaNexthopGroupCounterTable 1 }
|
||||
|
||||
AristaNexthopGroupCounterEntry ::= SEQUENCE {
|
||||
aristaNexthopGroupEntryIndex Unsigned32,
|
||||
aristaNexthopGroupCounterIndex Unsigned32,
|
||||
aristaNexthopGroupCounterPacketCount Counter64,
|
||||
aristaNexthopGroupCounterByteCount Counter64
|
||||
}
|
||||
|
||||
aristaNexthopGroupEntryIndex OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"As described in the beginning of the MIB module each nexthop
|
||||
group can have multiple entries, one per 'destination' or
|
||||
'nexthop'. Each entry within a nexthop group has a number or
|
||||
index as configured by the user. This MIB object represents
|
||||
the entry index within the nexthop group."
|
||||
::= { aristaNexthopGroupCounterEntry 1 }
|
||||
|
||||
aristaNexthopGroupCounterIndex OBJECT-TYPE
|
||||
SYNTAX Unsigned32
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"For every nexthop within a nexthop group, packet and byte
|
||||
counters are maintained by the device. Counters can be shared
|
||||
by multiple such nexthops and the counter index will be the
|
||||
same for all of those nexthops."
|
||||
::= { aristaNexthopGroupCounterEntry 2 }
|
||||
|
||||
aristaNexthopGroupCounterPacketCount OBJECT-TYPE
|
||||
SYNTAX Counter64
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The number of packets forwarded through the specific
|
||||
nexthop. Note that since counters are shared with multiple
|
||||
nexthops, the packet count is an aggregate of packets
|
||||
forwarded through all the relevant nexthops."
|
||||
::= { aristaNexthopGroupCounterEntry 3 }
|
||||
|
||||
aristaNexthopGroupCounterByteCount OBJECT-TYPE
|
||||
SYNTAX Counter64
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The byte count of packets forwarded through the specific
|
||||
nexthop. Note that since counters are shared with multiple
|
||||
nexthops, the byte count is an aggregate of packets
|
||||
forwarded through all the relevant nexthops."
|
||||
::= { aristaNexthopGroupCounterEntry 4 }
|
||||
|
||||
-- Conformance and Compliance
|
||||
|
||||
aristaNexthopGroupMibCompliances OBJECT IDENTIFIER
|
||||
::= { aristaNexthopGroupMibConformance 1 }
|
||||
|
||||
aristaNexthopGroupMibGroups OBJECT IDENTIFIER
|
||||
::= { aristaNexthopGroupMibConformance 2 }
|
||||
|
||||
aristaNexthopGroupMibCompliance MODULE-COMPLIANCE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The compliance statement for Arista switches that implement
|
||||
the ARISTA-NEXTHOP-GROUP-MIB."
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS {
|
||||
aristaNexthopGroupGroup,
|
||||
aristaNexthopGroupCounterGroup
|
||||
}
|
||||
::= { aristaNexthopGroupMibCompliances 1 }
|
||||
|
||||
aristaNexthopGroupGroup OBJECT-GROUP
|
||||
OBJECTS {
|
||||
aristaNexthopGroupName,
|
||||
aristaNexthopGroupType
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The collection of objects that provide nexthop group
|
||||
information in the system."
|
||||
::= { aristaNexthopGroupMibGroups 1 }
|
||||
|
||||
aristaNexthopGroupCounterGroup OBJECT-GROUP
|
||||
OBJECTS {
|
||||
aristaNexthopGroupCounterIndex,
|
||||
aristaNexthopGroupCounterPacketCount,
|
||||
aristaNexthopGroupCounterByteCount
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The collection of objects that provide counter information
|
||||
for every nexthop in the nexthop group."
|
||||
::= { aristaNexthopGroupMibGroups 2 }
|
||||
|
||||
END
|
232
mibs/arista/ARISTA-VRF-MIB
Normal file
232
mibs/arista/ARISTA-VRF-MIB
Normal file
@ -0,0 +1,232 @@
|
||||
ARISTA-VRF-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE FROM SNMPv2-SMI
|
||||
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
|
||||
ifIndex FROM IF-MIB
|
||||
TEXTUAL-CONVENTION FROM SNMPv2-TC
|
||||
aristaMibs FROM ARISTA-SMI-MIB;
|
||||
|
||||
aristaVrfMIB MODULE-IDENTITY
|
||||
LAST-UPDATED "201501110000Z"
|
||||
ORGANIZATION "Arista Networks, Inc."
|
||||
CONTACT-INFO
|
||||
"Arista Networks, Inc.
|
||||
|
||||
Postal: 5453 Great America Parkway
|
||||
Santa Clara, CA 95054
|
||||
|
||||
Tel: +1 408 547-5500
|
||||
|
||||
E-mail: snmp@arista.com"
|
||||
DESCRIPTION
|
||||
"This MIB contains information related to Virtual
|
||||
Routing and Forwarding (VRF).
|
||||
|
||||
VRF is a mechanism by which a single device can provide
|
||||
independent routing instances. This allows customers to
|
||||
virtually isolate network traffic, and also use overlapping
|
||||
IP addresses.
|
||||
|
||||
Layer3 or routed interfaces in the system will belong to
|
||||
one VRF at a time. The datapath forwarding logic uses the
|
||||
VRF membership of the input interface to determine a
|
||||
specific forwarding table to use for routing the traffic.
|
||||
|
||||
VRF can also be used to isolate management traffic from
|
||||
the rest of the data plane traffic.
|
||||
|
||||
This MIB module provides the following pieces of
|
||||
information:
|
||||
* A table of all VRFs configured in the system
|
||||
* A table that contains the VRF membership information
|
||||
for all routed interfaces in the system by sparsely
|
||||
augmenting the ifTable."
|
||||
|
||||
REVISION "201501110000Z"
|
||||
DESCRIPTION
|
||||
"Initial revision of this MIB module."
|
||||
::= { aristaMibs 18 }
|
||||
|
||||
|
||||
aristaVrfMibObjects OBJECT IDENTIFIER
|
||||
::= { aristaVrfMIB 1 }
|
||||
|
||||
aristaVrfMibConformance OBJECT IDENTIFIER
|
||||
::= { aristaVrfMIB 2 }
|
||||
|
||||
|
||||
-- Textual Convention
|
||||
|
||||
VrfName ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "100t"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A human-readable identifier assigned to every VRF. The
|
||||
identifier is unique across all VRFs in the system."
|
||||
SYNTAX OCTET STRING (SIZE (0..100))
|
||||
|
||||
VrfRouteDistinguisher ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "256a"
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A route distinguisher as defined in [RFC4364], in the form
|
||||
'<admin>:<local>', where <admin> is the administrator ID
|
||||
(e.g., an AS number) and <local> is the locally assigned
|
||||
number."
|
||||
REFERENCE
|
||||
"[RFC4364]"
|
||||
SYNTAX OCTET STRING(SIZE (0..256))
|
||||
|
||||
VrfState ::= TEXTUAL-CONVENTION
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The state of a specific VRF. When the administrator
|
||||
configures a VRF on the system, it stays inactive until a
|
||||
route distinguisher is assigned to it. Also, when the
|
||||
administrator deletes a VRF, there can be a small delay
|
||||
before the VRF is completely unconfigured from the system,
|
||||
during which time its status becomes inactive."
|
||||
SYNTAX INTEGER {
|
||||
active(1),
|
||||
inactive(2)
|
||||
}
|
||||
|
||||
|
||||
-- VRF Table
|
||||
|
||||
aristaVrfTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF AristaVrfEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This table contains information about VRFs currently
|
||||
configured in the system."
|
||||
::= { aristaVrfMibObjects 1 }
|
||||
|
||||
aristaVrfEntry OBJECT-TYPE
|
||||
SYNTAX AristaVrfEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"A single row containing information for one VRF that is
|
||||
configured in the system."
|
||||
INDEX { aristaVrfName }
|
||||
::= { aristaVrfTable 1 }
|
||||
|
||||
AristaVrfEntry ::= SEQUENCE {
|
||||
aristaVrfName VrfName,
|
||||
aristaVrfRoutingStatus BITS,
|
||||
aristaVrfRouteDistinguisher VrfRouteDistinguisher,
|
||||
aristaVrfState VrfState
|
||||
}
|
||||
|
||||
aristaVrfName OBJECT-TYPE
|
||||
SYNTAX VrfName
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The name of the VRF that is represented by this row."
|
||||
::= { aristaVrfEntry 1 }
|
||||
|
||||
aristaVrfRoutingStatus OBJECT-TYPE
|
||||
SYNTAX BITS {
|
||||
ipv4(0),
|
||||
ipv6(1)
|
||||
}
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The current status of data path routing in this VRF.
|
||||
Routing for IPv4 and IPv6 packets can be independently
|
||||
enabled by the administrator for a given VRF. This object
|
||||
carries the routing status for both the protocol versions.
|
||||
If data path routing is enabled for a protocol, the bit
|
||||
for the protocol is 1."
|
||||
::= { aristaVrfEntry 2 }
|
||||
|
||||
aristaVrfRouteDistinguisher OBJECT-TYPE
|
||||
SYNTAX VrfRouteDistinguisher
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The route distinguisher for this VRF."
|
||||
::= { aristaVrfEntry 3 }
|
||||
|
||||
aristaVrfState OBJECT-TYPE
|
||||
SYNTAX VrfState
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The state of the VRF."
|
||||
::= { aristaVrfEntry 4 }
|
||||
|
||||
-- Interface Table
|
||||
|
||||
aristaVrfIfTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF AristaVrfIfEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"This table augments the ifTable and contains the
|
||||
VRF membership information for every routed interface
|
||||
in the system. A row is present only for each active
|
||||
routed (or layer3) interface."
|
||||
::= { aristaVrfMibObjects 2 }
|
||||
|
||||
aristaVrfIfEntry OBJECT-TYPE
|
||||
SYNTAX AristaVrfIfEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"VRF membership information for a single routed interface."
|
||||
INDEX { ifIndex }
|
||||
::= { aristaVrfIfTable 1 }
|
||||
|
||||
AristaVrfIfEntry ::= SEQUENCE {
|
||||
aristaVrfIfMembership VrfName
|
||||
}
|
||||
|
||||
aristaVrfIfMembership OBJECT-TYPE
|
||||
SYNTAX VrfName
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The name of the VRF that this routed interface is currently
|
||||
part of."
|
||||
::= { aristaVrfIfEntry 1 }
|
||||
|
||||
-- Conformance and Compliance
|
||||
|
||||
aristaVrfMibCompliances OBJECT IDENTIFIER
|
||||
::= { aristaVrfMibConformance 1 }
|
||||
|
||||
aristaVrfMibGroups OBJECT IDENTIFIER
|
||||
::= { aristaVrfMibConformance 2 }
|
||||
|
||||
aristaVrfMibCompliance MODULE-COMPLIANCE
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The compliance statement for Arista switches that implement
|
||||
the ARISTA-VRF-MIB."
|
||||
MODULE -- this module
|
||||
MANDATORY-GROUPS {
|
||||
aristaVrfInformationGroup
|
||||
}
|
||||
::= { aristaVrfMibCompliances 1 }
|
||||
|
||||
aristaVrfInformationGroup OBJECT-GROUP
|
||||
OBJECTS {
|
||||
aristaVrfRoutingStatus,
|
||||
aristaVrfRouteDistinguisher,
|
||||
aristaVrfState,
|
||||
aristaVrfIfMembership
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION
|
||||
"The collection of objects that provide VRF information in the
|
||||
system."
|
||||
::= { aristaVrfMibGroups 1 }
|
||||
|
||||
|
||||
END
|
8119
tests/data/arista_eos_vrf.json
Normal file
8119
tests/data/arista_eos_vrf.json
Normal file
File diff suppressed because it is too large
Load Diff
4801
tests/snmpsim/arista_eos_vrf.snmprec
Normal file
4801
tests/snmpsim/arista_eos_vrf.snmprec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user