SNMP (Simple Network Management Protocol) es un protocolo muy utilizado para la gestión y monitorización de redes. Pertenece a la capa de aplicación y facilita la transmisión de información entre elementos de una red. Todo tiene (o puede tener) SNMP. Desde tu smartphone hasta tu impresora o nevera inteligente (si es que tienes).

El protocolo SNMP trabaja con sintaxis ASN.1 y utiliza estructuras MIB (no, no es MEN IN BLACK) como modelo de información. Para que me entendási: podriamos decir que ASN.1 es la sintaxis (como la gramática del español), las MIBs son los modelos de información (lo que sería el diccionario en un idioma normal) y SNMP es el protocolo (lo que sería el protocolo de comunicación entre personas: como decir un saludo a alguien que dice “hola” o decir “por favor”, esas cosas).

Existen miles de MIBs. De hecho tú mismo puedes crear la tuya (lo haré aquí para que aprendáis en un futuro). Pero hoy nos dedicaremos más bien a interpretarlas. Lo primero que debemos saber es cómo se organizan los OIDs. Los OIDs son los nombres que reciben los objetos dentro de una MIB. Todos estos objetos forman un índice, ya que los objetos pueden ser tabulares o escalares. Cuando un objeto es escalar puede retornar un valor único y, cuando es tabular, contiene más objetos “en su interior”. Imagínate un documento word con varios apartados y que cada apartado dentro tiene varios subapartados dentro. En el índice de ese documento verías dos cosas: el nombre de cada apartado correspondiente y, normalmente, una serie de números que indican dentro de qué rama está (lo típico de 1.1.2 y cosas de esas). Pues esto es exactamente LO MISMO. De esta forma, cuando deseamos monitorizar cualquier aparatejo que utilice SNMP, utilizaremos estas estructuras para acceder a sus contenidos. Normalmente es fácil encontrar la MIB de nuestro dispositivo, y sino seguro que se incluye en la documentación adicional o en los cds de instalación. No conozco a nadie cuyo problema sea “no encuentro mi MIB”.

Lo que vamos a hacer ahora va a ser un pequeño ejemplo de cómo se organizan los objetos dentro de una MIB genérica de ejemplo. La declaración de objetos que os presento es la siguiente:

Ejemplo estructura MIB snmpComo podemos ver se definen  una serie de objetos. La información que vemos es:

nombreObjeto OBJECT-IDENTIFIER ::= {objetoPadre OID}

De esta forma es muy sencillo comprender cómo está hecho el árbol o índice.

  • nombreObjeto: el nombre con el que se identifica el objeto
  • OBJECT-IDENTIFIER: palabra reservada para indicar que se trata de la declaración de un objeto
  • objetoPadre: nombre del objeto padre
  • OID: número asociado al objeto declarado como nombreObjeto. Si objetoPadre es 2 (por ejemplo) y el objeto actual es 5, el OID sería 2.5

El objeto del que partimos en este caso es org. Este objeto es el número 3 dentro de los objetos que componen iso (referido al modelo general de internet) pero en este caso, como se indica al principio, tomamos iso como 1 para empezar desde ahí. De esta forma, si ORG es nuestro objeto raíz (1) el siguiente objeto (dod) vemos que es un hijo de org porque en “objetoPadre” de dod vemos “org 6”. Lo que significa que es el sexto hijo. Poco a poco vamos creando los padres con sus hijos hasta que llegamos al árbol original:

Ejemplo índice MIB SNMP

Realmente no es útil crear manualmente los índices a raíz de los objetos, sobretodo porque si pretendes leer tu MIB manualmente es tarea ardua (por no decir imposible). Para poder ver y comprender estos objetos en las MIBs SNMP implementa algunos comandos como snmptranslate o snmpwalk con los que puedes ver y pedir objetos de una MIB. Pero al haber hecho un ejercicio de este tipo nos ha ayudado a interpretarlo cuando lo utilicemos en nuestras monitorizaciones.

Desde luego que esto es algo básico, MUY BÁSICO de SNMP. Es tan básico que a los que ya “pilotamos” de esto se nos hace difícil de explicar, por eso no resulta del todo fácil encontrar documentación bien redactada al respecto. Espero que hayáis aprendido algo más hoy. Si queréis profundizar un poco más en este tema podeis consultar los manuales oficiales de IBM (los creadores de gran parte de estos sistemas, junto a CISCO) y seguir investigando por vuestra cuenta. No olvides contarnos cómo te ha ido en los comentarios. Nos vemos la semana que viene!