NAME
SNMP::Info::RapidCityVRF - SNMP Interface to the VRFs of Extreme VOSS / Fabric Engine switches
AUTHOR
SNMP::Info Developers
SYNOPSIS
# Let SNMP::Info determine the correct subclass for you.
my $voss = new SNMP::Info(
AutoSpecify => 1,
Debug => 1,
DestHost => 'myswitch',
Community => 'public',
Version => 2
)
or die "Can't connect to DestHost.\n";
my $class = $voss->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";
DESCRIPTION
SNMP::Info::RapidCityVRF is a subclass of SNMP::Info that implements the VRF role hooks of SNMP::Info::VRF for VOSS (Virtual Services Platform Operating System Software) and Fabric Engine, from the RAPID-CITY MIB. Each VRF is an SNMP context.
Use or create in a subclass of SNMP::Info. Do not use directly. List it ahead of SNMP::Info::Layer3 in @ISA, so its hooks replace the defaults of the VRF role, and list the hashes in the opposite order. See SNMP::Info::Layer3::VOSS.
Inherited Classes
None.
Required MIBs
GLOBALS
None.
TABLE METHODS
Overrides
- $voss->context_kinds($feature)
-
Returns
['vrf']forvrf, where each VRF answers in its own context. Returns nothing otherwise. Seecontext_kinds()in SNMP::Info. - $voss->snmp_context($kind, $id)
-
Returns nothing for kinds other than
vrf. Seesnmp_context()in SNMP::Info.For a name
vrf_instances()lists returns{ kind => 'vrf', id => $name, v2c => '%s::$vrfid', v3 => $context }.$vrfidis the VRF'srcVrfConfigTableindex. For vrfid 1,publicbecomespublic::1.$contextis the VRF'srcVrfContextName, such asvrf1.default, which isGlobalRouter, and a name the device does not list get nothing.A SNMPv2c community with an
@suffix (public@vrf1) is served from the default context, so the VRF readers do not take the suffix as the session's context. A session on acommunity::vrfidcommunity reads as that VRF: a VRF context serves only its ownrcVrfConfigTablerow, and the VRF readers take the context from that row. The default context serves every row, so a session there reads as the default context.
VRF Instances
See "VRF Instances" in SNMP::Info::VRF for the readers. VOSS uses context mode.
Instances and ports
The device lists its VRFs in
rcVrfConfigTable, which the default context serves whole. vrfid 0,GlobalRouter, is the instancedefault(see "Completeness" in SNMP::Info::VRF). A device with onlyGlobalRouterandMgmtRouterreportsvrf_instances_complete()1 with one VRF,MgmtRouter.l3_isidis the I-SIDrcVrfIpVpnTablegives the VRF's IP VPN, and undef where it serves none.Each VRF reads in its own context, which serves only that VRF's rows.
In the default context,
i_vrf()maps each VRF VLAN's interface fromrcVlanTable, and each interfacercIpAddrTablegives a VRF. That context servesrcIpAddrTableonly forGlobalRouter, so a VRF interface with no VLAN, such as a loopback, is mapped only in its own context.In a VRF context, the ports are those its
rcVlanTableandrcIpAddrTablegive the VRF, and the interfaces of its connected routes. A route learned over the fabric sits on the fabric VLAN's interface, which is not a port of the VRF.
Addresses, routes and neighbors
A VRF context serves no IP-MIB address table. A VRF's IPv4 addresses are the
rcIpAddrTablerows whosercIpAdEntVrfIdis the VRF's, each with the prefix length ofrcIpAdEntNetMask. No route is an address source.In the default context, the addresses are those
ipAddrTableserves, with thercIpAddrTablerows of vrfid 0. ThereipAddrTablelists every VRF's addresses, and only those on the ports ofGlobalRouterare kept.Those ports include the interface of each
ipAddrTableaddress that a connected route names as its next hop. The management CLIP is one: its host route sits on the management VLAN's interface.A VRF's IPv6 addresses are those IPV6-MIB
ipv6AddrTableserves, and its IPv6 neighbors those ofipv6NetToMediaTable.VOSS indexes
inetCidrRouteTablewith no length octet before either address. The subnets of the connected routes are read from that index; a row in the standard index shape is read as the standard one.A context's ARP table holds the VRF's own addresses at the VLAN interface's MAC, and each subnet broadcast address at the broadcast MAC. Neither is a neighbor.
A subnet two VRFs share is read in each one's own context, on its own VLAN.
VRF Tables (RAPID-CITY)
- $voss->vrf_rc_name()
-
Returns reference to hash of VRF names, keyed by vrfid.
(
rcVrfName) - $voss->vrf_rc_context()
-
Returns reference to hash of the SNMP context name of each VRF, keyed by vrfid.
(
rcVrfContextName) - $voss->vrf_rc_isid()
-
Returns reference to hash of the I-SID of each VRF's IP VPN, keyed by vrfid.
(
rcVrfIpVpnIsidNumber) - $voss->vrf_rc_vlan_if()
-
Returns reference to hash of the ifIndex of each VLAN, keyed by VLAN id.
(
rcVlanIfIndex) - $voss->vrf_rc_vlan_vrf()
-
Returns reference to hash of the vrfid of each VLAN, keyed by VLAN id.
(
rcVlanVrfId) - $voss->vrf_rc_ip_vrf()
-
Returns reference to hash of the vrfid of each address, keyed by ifIndex then address.
(
rcIpAdEntVrfId) - $voss->vrf_rc_ip_addr()
-
Returns reference to hash of addresses, keyed by ifIndex then address.
(
rcIpAdEntAddr) - $voss->vrf_rc_ip_mask()
-
Returns reference to hash of address masks, keyed by ifIndex then address.
(
rcIpAdEntNetMask)