Wanneer u Simple Network Management Protocol (SNMP)-objecten opinieert, moet u soms precies weten wat er wordt opgevraagd. Om dit volledig te begrijpen, moet je weten hoe je het object dat wordt ondervraagd, moet correleren met wat je wilt opvragen. Dit document behandelt de grondbeginselen van hoe u indexen in SNMP kunt gebruiken om objecten in tabellen te groeperen.
Lezers van dit document zouden kennis moeten hebben van deze onderwerpen:
Algemene kennis van SNMP
Software die wordt gebruikt om Cisco-apparaten via SNMP te vragen
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
UCD SNMP versie 4.2
Cisco Catalyst 5509 met Cisco IOS®-softwarerelease 5.5(7)
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.
Raadpleeg Cisco Technical Tips Conventions (Conventies voor technische tips van Cisco) voor meer informatie over documentconventies.
Een van de eerste dingen om te leren, als je te maken hebt met SNMP, is ifIndex. Dit is een primaire sleutel van alle objecten. Bedenk het op een manier dat alle interfaces (fysiek en logisch) zijn opgesplitst en een waarde hebben toegewezen. Deze waarde wordt toegewezen tijdens het opstarten van een apparaat, en het kan niet worden gewijzigd. Als er informatie nodig is voor die interface, moet deze die toegewezen waarde gebruiken.
Indien Index in de IF-MIB (RFC 1213 ) op deze wijze wordt gedefinieerd:
InterfaceIndex ::= TEXTUAL-CONVENTION DISPLAY-HINT "d" STATUS current DESCRIPTION "A unique value, greater than zero, for each interface or interface sub-layer in the managed system. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub- layer must remain constant at least from one re- initialization of the entity's network management system to the next re-initialization." SYNTAX Integer32 (1..2147483647)
Voor elke MIB is een snelle manier om te vertellen welke index een tabel organiseert het bekijken van de tabelingang:
ifEntry OBJECT-TYPE SYNTAX IfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry containing management information applicable to a particular interface." INDEX { ifIndex } ::= { ifTable 1 }
Gezien een MIB en een tabelingang, kunt u bepalen hoe de tabel geïndexeerd is. De volgende sectie geeft voorbeelden van ifIndex.
Wanneer u de opdracht tussenstappen geeft om een indienIndex-gebaseerd object (ifName) voor poort 7/4 op de switch te opvragen, krijgt u deze uitvoer:
sj-cse-568: snmpwalk 172.16.99.60 public ifname ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.1 = sc0 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = sl0 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.3 = VLAN-1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.4 = VLAN-1002 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.5 = VLAN-1004 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.6 = VLAN-1005 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.7 = VLAN-1003 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.8 = 7/1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.9 = 7/2 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.10 = 7/3 !--- This is the relevant line: ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.11 = 7/4 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.12 = 7/5 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.13 = 7/6 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.14 = 7/7 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.15 = 7/8 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.16 = 7/9 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.17 = 7/10 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.18 = 7/11 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.19 = 7/12 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.20 = ATM8/0 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.22 = /A ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.23 = /B ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.24 = Nu0 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.25 = LEC/ATM8/0.10 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.532 = 3/1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.533 = 3/2 !--- Output suppressed.
In die uitvoer van een opiniepeiling van ifName (ifDescr op routers), merk op dat er een aantal aan elke rij is toegevoegd, na ifName. Dit is de ifIndex die op de eigenlijke interface in dezelfde rij wordt toegewezen. Dit betekent dat de tweede rij van de enquête, poort 7/4, is toegewezen aan een ifIndex van 11. Als u informatie wilt over poort 7/4 van een ifIndexed-object, gebruik dan een index van 11. Dit betekent het toevoegen van een .11 aan het einde van een MIB-object identifier (OID), om het voorbeeld van dat object terug te halen dat overeenkomt met dezelfde ifIndex-waarden.
Soms zijn tabellen niet geïndexeerd door ifIndex, zoals bij BRIDGE-MIB. Deze output onderzoekt hoe het geïndexeerd is:
dot1dBasePortEntry OBJECT-TYPE SYNTAX Dot1dBasePortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of information for each port of the bridge." REFERENCE "IEEE 802.1D-1990: Section 6.4.2, 6.6.1" INDEX { dot1dBasePort } ::= { dot1dBasePortTable 1 }
Die output toont dat dot1dBasePortEntry door dot1dBasePort is geïndexeerd. Hoe vertaalt dat zich terug naar ifIndex? BRIDGE-MIB heeft toegang tot een object dat dot1dBasePortAsIndex wordt genoemd. Het object wordt op deze manier gedefinieerd:
dot1dBasePortIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The value of the instance of the ifIndex object, defined in MIB-II, for the interface corresponding to this port." ::= { dot1dBasePortEntry 2 }
Die output toont hoe je van BRIDGE-MIB naar IF-MIB moet correleren. Het volgende voorbeeld toont hoe het allemaal samenpast.
Opmerking: BRIDGE-MIB is gebouwd per VLAN en daarom moet "public@vlan-id" gebruikt worden voor non-VLAN1 omgevingen.
Als je een tussenloop geeft op de BRIDGE-MIB, krijg je de volgende voorbeelduitvoer voor een Index. Gebruik dot1dBasePortAsIndex (.1.3.6.1.2.1.17.1.4.1.2) om het in kaart te brengen naar ifIndex. Zodra u de ifIndex hebt, gebruik deze om andere objecten te poseren gebaseerd op ifIndex.
sj-cse-568: snmpwalk 172.16.99.60 public .1.3.6.1.2.1.17.1.4.1.2 17.1.4.1.2.203 = 671 17.1.4.1.2.204 = 672 17.1.4.1.2.205 = 673 17.1.4.1.2.206 = 674 17.1.4.1.2.207 = 675 17.1.4.1.2.208 = 676 17.1.4.1.2.209 = 677 17.1.4.1.2.210 = 678 17.1.4.1.2.211 = 679 17.1.4.1.2.212 = 680 17.1.4.1.2.213 = 681 17.1.4.1.2.214 = 682 17.1.4.1.2.215 = 683 17.1.4.1.2.216 = 684 17.1.4.1.2.257 = 581 17.1.4.1.2.385 = 8 17.1.4.1.2.386 = 9 17.1.4.1.2.387 = 10 17.1.4.1.2.388 = 11 17.1.4.1.2.389 = 12 17.1.4.1.2.390 = 13 17.1.4.1.2.391 = 14 17.1.4.1.2.392 = 15 17.1.4.1.2.393 = 16 17.1.4.1.2.394 = 17 17.1.4.1.2.395 = 18 17.1.4.1.2.396 = 19 17.1.4.1.2.449 = 22
De vetgedrukte tekstregel (17.1.4.1.2.388 = 11) toont aan dat .388 een index is. Omdat je het object dot1dBasePortAsIndex van BRIDGE-MIB hebt gepoldeerd, is 0,388 het dot1dBasePortAsIndex. De 11 in de uitvoerlijn is de ifIndex. Als u de informatie uit deze enquête en uit de vorige enquête verzamelt, kunt u bepalen dat poort 7/4 een ifIndex van 11 en een dot1dBasePortAsIndex (Index voor BRIDGE-MIB) van 0,388 heeft.