El Protocolo simple de administración de red o SNMP (del inglés Simple Network Management Protocol) es un protocolo de la capa de aplicación que facilita el intercambio de información de administración entre dispositivos de red. Los dispositivos que normalmente soportan SNMP incluyen routers, switches, servidores, estaciones de trabajo, impresoras, bastidores de módem y muchos más. Permite a los administradores supervisar el funcionamiento de la red, buscar y resolver sus problemas, y planear su crecimiento.
SNMP es un componente de la suite de protocolos de Internet como se define por el IETF. Se compone de un conjunto de normas para la gestión de la red que incluye un protocolo de capa de aplicación, un esquema de bases de datos, y un conjunto de objetos de datos.
Se han desarrollado tres versiones de SNMP:
SNMPv1 (lanzada en 1988), la versión original del protocolo; SNMPv2c (1993), la versión más utilizada; SNMPv3 (2002), la última versión, con mejoras de seguridad.
Conceptos básicos En usos típicos SNMP, uno o más equipos administrativos, llamados gerentes (managers), tienen la tarea de supervisión o la gestión de un grupo de hosts o dispositivos de una red informática. En cada sistema gestionado se ejecuta, en todo momento, un componente de software llamado agente que reporta la información al gerente a través de SNMP.
Los agentes SNMP exponen los datos de gestión en los sistemas administrados como variables. El protocolo también permite realizar tareas de gestión de activos, tales como la modificación y la aplicación de una nueva configuración a través de la modificación remota de estas variables. Las variables accesibles a través de SNMP están organizadas en jerarquías. Estas jerarquías y otros metadatos (tales como el tipo y la descripción de la variable), se describen por Bases de Información de Gestión (MIB).
Componentes Una red administrada a través de SNMP consta de tres componentes clave: Estaciones de administración de red (Network Management Stations, NMS); Dispositivos administrados; Agentes.
Estos componentes tienen las siguientes funciones:
Una estación de administración de red (NMS) ejecuta aplicaciones que supervisan y controlan a los dispositivos administrados. Los NMS proporcionan el volumen de recursos de procesamiento y memoria requeridos para la administración de la red. Puede haber uno o más NMS en una red administrada.
Un dispositivo administrado es un dispositivo que contiene un agente SNMP y reside en una red administrada. Estos recogen y almacenan información de administración, la cual es puesta a disposición de los NMS mediante SNMP. Los dispositivos administrados, a veces llamados elementos de red, pueden ser de muchos tipos, por ejemplo, routers, servidores de acceso, conmutadores de red, puentes de red, concentradores, computadores e impresoras.
Un agente es un módulo de software de administración de red que reside en un dispositivo administrado. Un agente posee un conocimiento local de información de administración (memoria libre, número de paquetes IP recibidos, rutas, etcétera), la cual es traducida a un formato compatible con SNMP y organizada en jerarquías.
Comandos básicos
Los dispositivos administrados son supervisados y controlados usando cuatro comandos SNMP básicos: lectura, escritura, notificación y operaciones transversales.
El comando de lectura es usado por un NMS para supervisar elementos de red. El NMS examina diferentes variables que son mantenidas por los dispositivos administrados. El comando de escritura es usado por un NMS para controlar elementos de red. El NMS cambia los valores de las variables almacenadas dentro de los dispositivos administrados. El comando de notificación es usado por los dispositivos administrados para reportar eventos en forma asíncrona a un NMS. Cuando cierto tipo de evento ocurre, un dispositivo administrado envía una notificación al NMS. Las operaciones transversales son usadas por el NMS para determinar qué variables soporta un dispositivo administrado y para recoger secuencialmente información en tablas de variables, como por ejemplo, una tabla de rutas.
Base de información de administración SNMP (MIB)
Una Base de Información de Administración (Management Information Base, MIB) es una colección de información organizada jerárquicamente. Las MIB son accedidas usando un protocolo de administración de red, como por ejemplo, SNMP.
Un objeto administrado (algunas veces llamado objeto MIB, objeto, o MIB) es uno de cualquier número de características específicas de un dispositivo administrado. Los objetos administrados están compuestos de una o más instancias de objeto, que son esencialmente variables.
Existen dos tipos de objetos administrados: escalares y tabulares. Los objetos escalares definen una simple instancia de objeto. Los objetos tabulares definen múltiples instancias de objeto relacionadas que están agrupadas conjuntamente en tablas MIB.
Un ejemplo de un objeto administrado es atInput, que es un objeto escalar que contiene una simple instancia de objeto, el valor entero que indica el número total de paquetes AppleTalk de entrada sobre una interfaz de un rúter.
Un identificador de objeto (object ID) identifica únicamente a un objeto administrado en la jerarquía MIB. La jerarquía MIB puede ser representada como un árbol con una raíz anónima y los niveles, que son asignados por diferentes organizaciones.
Archivo:Imagen2.JPG
El árbol MIB ilustra las variadas jerarquías asignadas por las diferentes organizaciones
Los identificadores de los objetos ubicados en la parte superior del árbol pertenecen a diferentes organizaciones estándares, mientras los identificadores de los objetos ubicados en la parte inferior del árbol son colocados por las organizaciones asociadas.
Los fabricantes pueden definir ramas privadas que incluyen los objetos administrados para sus propios productos. Las MIB’s que no han sido estandarizadas típicamente están localizadas en la rama experimental.
El objeto administrado atInput podría ser identificado por el nombre de objeto iso.identified-organization.dod.internet.private.enterprise.cisco.temporary.AppleTalk.atInput o por el descriptor de objeto equivalente 1.3.6.1.4.1.9.3.3.1.
El corazón del árbol MIB se encuentra compuesto de varios grupos de objetos, los cuales en su conjunto son llamados mib-2. Los grupos son los siguientes:
System (1); Interfaces (2); AT (3); IP (4); ICMP (5); TCP (6); UDP (7); EGP (8); Transmission (10); SNMP (11).
Es importante destacar que la estructura de una MIB se describe mediante el estándar ASN.1.
Detalles del protocolo
SNMP opera en la capa de aplicación del conjunto de protocolos de Internet (capa 7 del modelo OSI). El protocolo SNMP utiliza un servicio no orientado a la conexión (UDP) para enviar un pequeño grupo de mensajes (PDU) entre los administradores y agentes. La utilización de un mecanismo de este tipo asegura que las tareas de administración de red no afectarán al rendimiento global de la misma, ya que se evita la utilización de mecanismos de control y recuperación como los de un servicio orientado a la conexión, por ejemplo TCP.
Los puertos comúnmente utilizados para SNMP son los siguientes:
Número Descripción 161 SNMP 162 SNMP-trap
El agente SNMP recibe solicitudes en el puerto UDP 161. El administrador puede enviar solicitudes de cualquier puerto de origen disponible para el puerto 161 en el agente. La respuesta del agente será enviado de vuelta al puerto de origen en el gestor. El administrador recibe notificaciones (Traps e InformRequests) en el puerto 162. El agente puede generar notificaciones desde cualquier puerto disponible. Cuando se utiliza con TLS, las solicitudes se reciben en el puerto 10161 y las notificaciones se envían al puerto 10162.
SNMPv1 especifica cinco unidades de datos de protocolo (PDU) centrales. Otros dos PDU, GetBulkRequest e InformRequest se añadieron en SNMPv2 y prorrogados a SNMPv3.
Todas las PDU de SNMP se construyen de la siguiente manera: Cabecera IPCabecera UDPVersiónComunidadTipo de PDUId. de peticiónEstado de errorÍndice de errorEnlazado de variables Para realizar las operaciones básicas de administración anteriormente nombradas, e
Los paquetes utilizados para enviar consultas y respuestas SNMP poseen el siguiente formato:
VersiónComunidadSNMP PDU
Versión: Número de versión de protocolo que se está utilizando (por ejemplo 0 para SNMPv1, 1 para SNMPv2c, 2 para SNMPv2p y SNMPv2u, 3 para SNMPv3, ...); Comunidad: Nombre o palabra clave que se usa para la autenticación. Generalmente existe una comunidad de lectura llamada "public" y una comunidad de escritura llamada "private"; SNMP PDU: Contenido de la Unidad de Datos de Protocolo, el que depende de la operación que se ejecute.
Los mensajes GetRequest, GetNextRequest, SetRequest y GetResponse utilizan la siguiente estructura en el campo SNMP PDU:
TipoIdentificadorEstado de errorÍndice de errorEnlazado de variables
Identificador: Es un número utilizado por el NMS y el agente para enviar solicitudes y respuesta diferentes en forma simultánea; Estado e índice de error: Sólo se usan en los mensajes GetResponse´(en las consultas siempre se utiliza cero). El campo "índice de error" sólo se usa cuando "estado de error" es distinto de 0 y posee el objetivo de proporcionar información adicional sobre la causa del problema. El campo "estado de error" puede tener los siguientes valores: 0: No hay error; 1: Demasiado grande; 2: No existe esa variable; 3: Valor incorrecto; 4: El valor es de solo lectura; 5: Error genérico. Enlazado de variables: Es una serie de nombres de variables con sus valores correspondientes (codificados en ASN.1).
GetRequest
A través de este mensaje el NMS solicita al agente retornar el valor de un objeto de interés mediante su nombre. En respuesta el agente envía una respuesta indicando el éxito o fracaso de la petición. Si la petición fue correcta, el mensaje resultante también contendrá el valor del objeto solicitado. Este mensaje puede ser usado para recoger un valor de un objeto, o varios valores de varios objetos, a través del uso de listas.
GetNextRequest
Este mensaje es usado para recorrer una tabla de objetos. Una vez que se ha usado un mensaje GetRequest para recoger el valor de un objeto, puede ser utilizado el mensaje GetNextRequest para repetir la operación con el siguiente objeto de la tabla. Siempre el resultado de la operación anterior será utilizado para la nueva consulta. De esta forma un NMS puede recorrer una tabla de longitud variable hasta que haya extraído toda la información para cada fila existente.
SetRequest
Este tipo de mensaje es utilizado por el NMS para solicitar a un agente modificar valores de objetos. Para realizar esta operación el NMS envía al agente una lista de nombres de objetos con sus correspondientes valores.
GetResponse
Este mensaje es usado por el agente para responder un mensaje GetRequest, GetNextRequest, o SetRequest. En el campo "Identificador de Request" lleva el mismo identificador que el "request" al que está respondiendo.
Trap
Una trap es generado por el agente para reportar ciertas condiciones y cambios de estado a un proceso de administración. El formato de la PDU es diferente:
TipoEnterpriseDirección del agenteTipo genérico de trapTipo específico de trapTimestampEnlazado de variables
Enterprise: Identificación del subsistema de gestión que ha emitido el trap; Dirección del agente: Dirección IP del agente que ha emitido el trap; Tipo genérico de trap: Cold start (0): Indica que el agente ha sido inicializado o reinicializado; Warm start (1): Indica que la configuración del agente ha cambiado; Link down (2): Indica que una interfaz de comunicación se encuentra fuera de servicio (inactiva); Link up (3): Indica que una interfaz de comunicación se encuentra en servicio (activa);