Arista VRF discovery support (#11421)

* arista vrf discovery
* more mibs
* tests
* codeclimate
This commit is contained in:
PipoCanaja 2020-06-08 14:29:18 +02:00 committed by GitHub
parent 125ecb4bde
commit 35b4e1459e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 13828 additions and 1 deletions

View File

@ -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

View 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
View 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

View 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
View 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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff