Al sondear objetos SNMP (Simple Network Management Protocol), a veces debe saber exactamente qué está sondeando. Para entender completamente esto, debe saber correlacionar el objeto que se está sondeando con lo que quiere sondear. Este documento abarca los fundamentos de cómo utilizar índices en el SNMP para agrupar objetos en tablas.
Quienes lean este documento deben tener conocimiento de los siguientes temas:
Conocimiento general de SNMP
Software utilizado para consultar dispositivos Cisco a través de SNMP
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
UCD SNMP versión 4.2
Cisco Catalyst 5509 con software Cisco IOS® versión 5.5(7)
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
Una de las primeras cosas que hay que aprender, cuando se trata de SNMP, es ifIndex. Ésta es una clave principal de todos los objetos. Considéralo de una manera en que todas las interfaces (físicas y lógicas) se descomponen y se les asigna un valor. Este valor se asigna durante el arranque de un dispositivo y es posible que no se cambie. Si es necesario sondear alguna información para esa interfaz en particular, debe utilizar ese valor asignado.
IfIndex se define en IF-MIB (RFC 1213 ) de esta manera:
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)
Para cualquier MIB, una manera rápida de decir qué índice organiza una tabla es ver la entrada de la tabla:
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 }
Dado un MIB y una entrada de tabla, puede determinar cómo se indexa la tabla. La siguiente sección proporciona ejemplos de ifIndex.
Cuando ejecuta el comando snmpwalk para sondear un objeto basado en ifIndex (ifName) para el puerto 7/4 en el switch, obtiene este resultado:
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.
En ese resultado de una encuesta de ifName (ifDescr en los routers), observe que hay un número asociado a cada fila, después de ifName. Este es el ifIndex que se asigna a la interfaz real en la misma fila. Esto significa que a la segunda fila de la encuesta, el puerto 7/4, se le asigna un ifIndex de 11. Si desea información sobre el puerto 7/4 de un objeto ifIndexed, utilice un índice de 11. Esto significa agregar un .11 al final de un identificador de objeto MIB (OID), para recuperar la instancia de ese objeto que corresponde a los mismos valores ifIndex.
A veces, las tablas no se indexan por ifIndex, como con BRIDGE-MIB. Este resultado examina cómo se indexa:
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 }
Ese resultado muestra que dot1dBasePortEntry está indexado por dot1dBasePort. ¿Cómo se traduce esto de nuevo en ifIndex? BRIDGE-MIB tiene acceso a un objeto denominado dot1dBasePortIfIndex. El objeto se define de esta manera:
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 }
Ese resultado muestra cómo correlacionar de BRIDGE-MIB a IF-MIB. El siguiente ejemplo muestra cómo encaja todo.
Nota: BRIDGE-MIB se genera por vlan, por lo tanto la comunidad "public@vlan-id" se debe utilizar para entornos que no sean vlan1.
Cuando ejecuta una snmpwalk en el BRIDGE-MIB, obtiene el siguiente ejemplo de salida para un Índice. Utilice dot1dBasePortIfIndex (.1.3.6.1.2.1.17.1.4.1.2) para volver a asignarlo a ifIndex. Una vez que tenga ifIndex, utilícelo para sondear otros objetos basados en 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
La línea de texto en negrita (17.1.4.1.2.388 = 11) muestra que .388 es un índice. Como ha sondeado el objeto dot1dBasePortIfIndex desde BRIDGE-MIB, .388 es el dot1dBasePortIfIndex. El 11 en la línea de salida es en realidad el ifIndex. Si recopila la información de esta encuesta y de la anterior, puede determinar que el puerto 7/4 tiene un ifIndex de 11 y un dot1dBasePortIfIndex (Index para BRIDGE-MIB) de .388.