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

RAPID-CITY

GLOBALS

None.

TABLE METHODS

Overrides

$voss->context_kinds($feature)

Returns ['vrf'] for vrf, where each VRF answers in its own context. Returns nothing otherwise. See context_kinds() in SNMP::Info.

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

Returns nothing for kinds other than vrf. See snmp_context() in SNMP::Info.

For a name vrf_instances() lists returns { kind => 'vrf', id => $name, v2c => '%s::$vrfid', v3 => $context }. $vrfid is the VRF's rcVrfConfigTable index. For vrfid 1, public becomes public::1. $context is the VRF's rcVrfContextName, such as vrf1. default, which is GlobalRouter, 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 a community::vrfid community reads as that VRF: a VRF context serves only its own rcVrfConfigTable row, 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 instance default (see "Completeness" in SNMP::Info::VRF). A device with only GlobalRouter and MgmtRouter reports vrf_instances_complete() 1 with one VRF, MgmtRouter.

  • l3_isid is the I-SID rcVrfIpVpnTable gives 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 from rcVlanTable, and each interface rcIpAddrTable gives a VRF. That context serves rcIpAddrTable only for GlobalRouter, 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 rcVlanTable and rcIpAddrTable give 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 rcIpAddrTable rows whose rcIpAdEntVrfId is the VRF's, each with the prefix length of rcIpAdEntNetMask. No route is an address source.

  • In the default context, the addresses are those ipAddrTable serves, with the rcIpAddrTable rows of vrfid 0. There ipAddrTable lists every VRF's addresses, and only those on the ports of GlobalRouter are kept.

  • Those ports include the interface of each ipAddrTable address 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 ipv6AddrTable serves, and its IPv6 neighbors those of ipv6NetToMediaTable.

  • VOSS indexes inetCidrRouteTable with 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)