Professional Documents
Culture Documents
PROTOCOLO SNMP
Introduccin
Aplicacin
SNMP
Transporte(TCP,UDP,..
.)
Interred(IP)
Interfase de red
Fsica
Captulo 2: Conceptos
1. Un Modelo
Podemos considerar que cada nodo administrable est formado por tres
componentes:
Funciones de usuario.
Un protocolo de administracin, que permite monitorizar y controlar el
nodo administrable.
Instrucciones de administracin, que interactan con la implementacin
del nodo administrable para permitir la monitorizacin y el control.
Hay que hacer significar que el concepto clave con las entidades de
doble funcin es que la relacin jerrquica depende de la configuracin,
mientras que la relacin peer-to-peer depende de la arquitectura.
1.3.1 Operaciones
Tambin hay que tener en cuenta que pueden existir variables que aparezcan
ms de una vez. Por ejemplo, la tabla de enrutamiento IP no es escalar, sino
que est formada por una o ms filas, cada una de las cuales presenta varias
columnas. Por tanto, el protocolo de administracin debe proporcionar dos
nuevas funciones:
Hay varias razones por las que utilizar las relaciones Proxy:
9
1.5 En perspectiva
Antes de comenzar, hay que aclarar la relacin entre variables, objetos y tipos de
objetos. Un objeto administrable tiene asociado una sintaxis y una semntica de tipo
abstracto, mientras que una variable es una instancia de un objeto particular; en este
caso tambin se denomina instancia de un objeto.
1 Mdulos de Informacin
BEGIN
"ORGANIZATION" Text
"CONTACTO-INFO" Text
"DESCRIPTION" Text
RevisionPart
Revision ::=
12
"DESCRIPTION" Text
END
La clusula DESCRIPTION, que debe estar presente por cada clusula REVISION,
contiene una descripcin textual de alto nivel de la revisin identificada en esa clusula
REVISION.
IMPORTS
FROM SNMPv2-SMI;
fizbin MODULE-IDENTITY
LAST-UPDATED "9210070433Z"
CONTACT-INFO
US
DESCRIPTION
REVISION "9210070433Z"
DESCRIPTION
::= { snmpModules 1 }
END
-- camino al root
-- dominios de transporte
-- proxies de transporte
-- entidades mdulo
La raz del subrbol administrada por la Autoridad de Nmeros Asignados para Internet
(IANA) es:
1.3.6.1.
Sin embargo, el SMI no prohibe la definicin de objetos en otras porciones del rbol de
objetos.
OBJECT-IDENTITY MACRO::=
BEGIN
16
"STATUS" Status
"DESCRIPTION" Text
ReferPart
END
La clusula STATUS, que debe estar presente, indica si esta definicin es actual o
histrica.
fizbin69 OBJECT-IDENTITY
STATUS current
DESCRIPTION
17
::= { fizbinChipSets 1 }
2 Definiciones de Objetos
OBJECT-TYPE MACRO::=
BEGIN
"SINTAX" type(Syntax)
UnitsPart
"MAX-ACCESS" Access
"STATUS" Status
"DESCRIPTION" Text
ReferPart
IndexPart
DefValPart
| "solo-lectura "
| "lectura y escritura"
| "desaprobado"
| "obsoleto"
18
| empty
Index ::=
-- de la correspondiente
-- llamada OBJECT-TYPE
Entry ::=
| empty
END
La clusula SINTAX, que debe estar presente, define las estructuras de datos
abstractas correspondientes a ese objeto. La estructura de datos debe ser una de las
alternativas definidas en ObjectSyntax.
ObjectSyntax ::=
CHOICE {
Simple SimpleSyntax,
application-wide ApplicationSyntax
SimpleSyntax ::=
CHOICE {
integer-value INTEGER (-
2147483648..2147483647),
--complemento a dos
Integer32 ::=
[UNIVERSAL 2]
ApplicationSyntax ::=
CHOICE {
ipAddress-value IpAddress,
counter-value Counter32,
gauge-value Gauge32,
timeticks-value TimeTicks,
arbitrary-value Opaque,
nsapAddress-value NsapAddress,
big-counter-value Counter64,
unsigned-integer-value UInteger32
-- razones histricas)
IpAddress ::=
[APLICACIN 0]
--contador ciclico
Counter32 ::=
[APLICACIN 1]
21
Gauge32 ::=
[APLICACIN 2]
TimeTicks ::=
[APLICACIN 3]
Opaque ::=
[APLICACIN 4]
NsapAddress ::=
[APLICACIN 5]
Counter64 ::=
[APLICACIN 6]
UInteger32 ::=
22
[APLICACIN 7]
Finalmente, el carcter guin no se permite como una parte del nombre de ninguna
enumeracin de nmeros.
El tipo BIT STRING representa una enumeracin de bits. Esta coleccin contendr
valores no negativos, consecutivos y comenzando por el cero. Slo esos bits
23
2.1.5 IpAddress
2.1.6 Counter32
La clusula DEFVAL no est permitida para los objetos con un valor de su clusula
SINTAX de Counter32.
2.1.7 Gauge32
2.1.8 TimeTicks
24
2.1.9 Opaque
El tipo Opaque se mantiene por compatibilidad con lo anterior, y no se usar para los
tipos de objetos recientemente definidos.
Un requisito para los mdulos MIB "estndar" es que ningn objeto puede tener un
valor de clusula SINTAX de Opaque.
2.1.10 NsapAddress
El tipo NsapAddress representa una direccin OSI como una extensin de variable
OCTET STRING. El primer byte de la cadena contiene un valor binario en el rango
0..20, e indica la longitud en bytes de NSAP. Despus del primer octeto, est el NSAP,
expresado en notacin binaria, comenzando por el byte ms significativo. Una longitud
cero de NSAP se usa como una direccin "especial" que significa "NSAP por defecto"
(anlogo a la direccin de IP 0.0.0.0). Aunque la direccin de valor 0 de una direccin
NSAP se representa con un byte el resto de las direcciones NSAP son codificadas en,
al menos, 4 bytes.
2.1.11 Counter64
Los contadores no tienen definido valor inicial, y as, un solo valor de un Contador no
tiene, en general, ningn valor de informacin. Discontinuidades en la monotona
creciente del valor del contador normalmente viene provocada por la reinicializacin
del sistema de gestin, y tambin al especificar la descripcin de un tipo de objeto que
usa este tipo de dato. Si alguna de estas situaciones ocurre, por ejemplo, la creacin
de una instancia de un objeto en un momento distinto al de la reinicializacin, entonces
el objeto correspondiente debe definirse con un valor de clusula SINTAX de
TimeStamp indicando el tiempo de la ltima discontinuidad.
Un requisito en los mdulos MIB estndar es que el tipo Counter64 slo puede
usarse si la informacin a contener diera la vuelta en menos de una hora usando el
tipo Counter32.
2.1.12 UInteger32
La clusula MAX-ACCESS, que debe estar presente, define si tiene privilegios para
leer, escribir y/o crear una instancia del objeto. ste es el mximo nivel de acceso para
el objeto. (Este nivel mximo de acceso es independiente de cualquier poltica
administrativa de accesos.)
Si algn objeto en una fila conceptual tiene "read-create" como su nivel mximo de
acceso, entonces ningn otro objeto de la misma fila conceptual puede tener un nivel
mximo de acceso de "read-write". ("read-create" est por encima de "read-write".)
La clusula STATUS, que debe estar presente, indica si esta definicin es actual o
antigua.
La clusula INDEX, que debe estar presente si ese objeto corresponde a una fila
conceptual (a menos que una clusula AUGMENTS se encuentre explcitamente
presente), y debe estar ausente en cualquier otro caso, define informacin de
identificacin de instancia para los objetos subordinados a este objeto.
Las funciones de gestin son slo aplicables a objetos escalares. Sin embargo, es
conveniente para desarrolladores de aplicaciones de gestin imponer estructuras
imaginarias, en forma de tabla en la coleccin ordenada de objetos que constituyen el
MIB. Cada tabla conceptual contiene cero o ms filas, y cada fila puede contener uno
o ms objetos escalares, llamados los objetos columna. Esta conceptualizacin es
formalizada usando la macro OBJECT-TYPE para definir el objeto que se corresponde
con una tabla y el objeto que se corresponde con una fila en esa tabla. Una tabla
conceptual tiene la siguiente sintaxis:
SEQUENCE OF <EntryType>
<EntryType>
donde hay un tipo para cada objeto subordinado, y cada <type> es de la forma:
<descriptor> <sintax>
Para objetos que no son objetos columna, las instancias del objeto son identificadas
aadiendo un subidentificador cero al nombre de ese objeto. Por otra parte, la clusula
INDEX del objeto fila conceptual superior a un objeto columna define informacin de
identificacin de instancia.
Las palabras clave IMPLIED pueden estar slo presentes para objetos que tienen
una sintaxis de longitud variable (ej., las cadenas de longitud variable o los objetos de
identificador valorado). Adems, las palabras clave IMPLIED pueden aparecer, a lo
sumo, una vez dentro de la clusula INDEX, y en ese caso, es asociado con el objeto
ms a la derecha que tiene una sintaxis de longitud variable. Finalmente, las palabras
clave IMPLIED no pueden usarse en un objeto cadena de longitud variable si esa
cadena puede tener un valor de longitud cero.
28
Los objetos que son especificados en la clusula INDEX de una fila conceptual y
tambin los objetos columna de la misma la fila conceptual son denominados objetos
auxiliares. La clusula MAX-ACCESS para los objetos auxiliares recientemente
definidos es no accesible ("not-accessible"). Sin embargo, una fila conceptual debe
contener al menos un objeto columna que no es un objeto auxiliar (es decir, el valor de
la clusula MAX-ACCESS para estos objetos es "read-only" o "read-create").
Si un objeto correspondiente a una fila conceptual tiene una clusula INDEX, esa fila
se denomina "una fila conceptual base"; por otra parte, si el objeto tiene una clusula
AUGMENTS, la fila se dice que es "una fila conceptual aumentada", donde la clusula
AUGMENTS nombra el objeto correspondiente a la fila conceptual base que es
aumentada por esta extensin de la fila conceptual. Se identifican instancias de
objetos columna subordinados de una extensin de una fila conceptual mediante la
clusula INDEX de la fila conceptual base que corresponde al objeto nombrado en la
clusula AUGMENTS. Adems, las instancias de objetos columna subordinados de
una extensin de una fila conceptual existen segn la misma semntica de instancias
de objetos columna subordinados de la fila conceptual base aumentada. De sta
forma, la creacin de una fila conceptual base implica la creacin de la
correspondiente fila conceptual aumentada.
Una fila conceptual base puede ser aumentada por mltiples extensiones de filas
conceptuales.
La clusula DEFVAL, que es necesario que est presente, define un valor aceptable
por defecto que puede ser usado por una entidad SNMPv2 que realiza el papel de
agente cuando se crea una instancia de objeto.
EvalSlot OBJECT-TYPE
31
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { eval 1 }
evalTable OBJECT-TYPE
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
::= { eval 2 }
evalEntry OBJECT-TYPE
SYNTAX EvalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
INDEX { evalIndex }
::= { evalTable 1 }
evalIndex Integer32,
evalString DisplayString,
evalValue Integer32,
evalStatus RowStatus
evalIndex OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESO not-accessible
STATUS current
DESCRIPTION
::= { evalEntry 1 }
evalString OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-create
STATUS current
DESCRIPTION
::= { evalEntry 2 }
evalValue OBJECT-TYPE
SYNTAX Integer32
33
MAX-ACCESS read-only
STATUS current
DESCRIPTION
DEFVAL {0}
::= { evalEntry 3 }
evalStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
DEFVAL { active }
::= { evalEntry 4 }
<row> ::=
SEQUENCE {
<tipo 1>
.......
<tipo n>
table: de la forma
34
<table> ::=
SEQUENCE OF <row>
3. Convenciones Textuales
BEGIN
DisplayPart
"STATUS" Status
"DESCRIPTION" Text
ReferPart
"SYNTAX" type(Syntax)
END
Ejemplo:
DISPLAY-HINT "255a"
STATUS current
DESCRIPTION
Su valor de DISPLAY-HINT sera 255 (se interpreta como una cadena de 255
bytes)
PhysAddres:
OCTET STRING
1992-2-29,17:45:20.3,+4:0
4. Refinamiento de la Sintaxis
Restricciones a Refinamiento en
OBJECT IDENTIFIER - - - -
IpAddress - - - -
Counter32 - - - -
Gauge32 (1) - - -
TimeTicks - - - -
NsapAddress - - - -
Counter64 - - - -
donde:
3. El tamao en caracteres del valor puede ser refinado aumentando los lmites
38
5. Grupos de Objetos
Se definen objetos afines dentro de grupos de objetos (object group). Desde el punto
de vista de la implementacin, un grupo de objetos se ve como una unidad de
implementacin, y un desarrollador puede codificar cero o ms objetos de los
contenidos en el grupo.
"nombre de objeto".0
En caso de ser un objeto parte de una tabla, su identificacin posee tres posibles
alternativas dependiendo de:
7 Definiciones de Notificaciones
BEGIN
ObjectsPart
"STATUS" Status
"DESCRIPTION" Text
ReferPart
END
8. Ejemplo de uso
LinkUp NOTIFICATION-TYPE
OBJECTS { ifIndex }
STATUS current
DESCRIPTION
41
"Un trap linkUp significa que la entidad SNMPv2 que acta bajo
el papel de agente, reconoce que uno de los enlaces de
comunicacin representados en su configuracin ha surgido".
::= { snmpTraps 4 }
{ snmpTraps 4 }
Una entidad SNMPv2 que acta como un agente puede configurarse para enviar a
esta interrupcin a cero o ms entidades SNMPv2 gestoras, dependiendo del
contenido de las tablas aclTable y viewTable. Por ejemplo, por uso juicioso de
viewTable, una entidad agente SNMPv2 podra configurarse para enviar todas las
interrupciones del linkUp a una entidad particular, y las interrupciones de tipo linkUp
para slo ciertas interfaces a otras entidades.
Cuando se modifica la definicin de tipo de un objeto existente, hay cambios que son
factibles sin necesidad de cambiar las asignaciones de identificadores de objetos:
Las reglas para modificar una notificacin son simples: debe aadirse o cambiarse
una clusula REFERENCE, pero si se realiza un cambio profundo, debe definirse un
nuevo tipo notificacin.
Mdulos MIB
Especfico: La mayor parte de las empresas desarrollan mdulos MIB propios que
soporten ciertas caractersticas particulares, las cuales no son generalmente
contempladas en los mdulos MIB estndar.
2. MIB Internet-standard
3. MIB SNMPv2
system: Grupo system (trado del MIB-II). Se trata de una coleccin de objetos
comunes a todos los sistemas de gestin
SysDescr OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { system 1 }
sysObjectID OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
44
::= { system 2 }
sysUpTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { system 3 }
sysContact OBJECT-TYPE
MAX-ACCESS read-write
STATUS current
DESCRIPTION
::= { system 4 }
sysName OBJECT-TYPE
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Un nombre asignado administrativamente para este nodo. Por convenio, este
el nombre de dominio. Si el nombre es desconocido, se pone una cadena de
longitud cero."
45
::= { system 5 }
sysLocation OBJECT-TYPE
MAX-ACCESS read-write
STATUS current
DESCRIPTION
::= { system 6 }
sysServices OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Un valor que indique el conjunto de servicios que la entidad puede ofrecer
potencialmente. El valor ser una suma. La suma toma inicialmente el valor
cero, entonces, para cada capa, L, en el rango 1 a 7, para la que ste nodo
ejecuta transacciones, 2 elevado a (L - 1) es aadido a la suma. Por ejemplo,
un nodo que ejecuta slo funciones de enrutamiento podra tener un valor de 4
(23-1). Por el contrario, un nodo que es un host y ofrece servicios de aplicacin
podra tener el valor de 72 (2 4-1 + 27-1). En el contexto del conjunto de
protocolos internet, los valores deben ser calculados de acuerdo a:
layer functionality
Para sistemas que incluyen protocolos OSI, las capas 5 y 6 pueden adems
ser contadas."
::= { system 7 }
46
sysORLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { system 8 }
sysORTable OBJECT-TYPE
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
::= { system 9 }
sysOREntry OBJECT-TYPE
SYNTAX SysOREntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
INDEX { sysORIndex }
::= { sysORTable 1 }
SysORIndex INTEGER,
SysORDescr DisplayString,
SysORUpTime TimeStamp
sysORIndex OBJECT-TYPE
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
::= { sysOREntry 1 }
sysORID OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { sysOREntry 2 }
sysORDescr OBJECT-TYPE
SYNTAX DisplayString
48
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { sysOREntry 3 }
sysORUpTime OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { sysOREntry 4 }
Este grupo define una coleccin de objetos que permiten a varias entidades
SNMPv2 cooperantes coordinar el uso de la operacin SET.
snmpInPkts OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { snmp 1 }
snmpInBadVersions OBJECT-TYPE
49
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { snmp 3 }
snmpInBadCommunityNames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { snmp 4 }
snmpInBadCommunityUses OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { snmp 5 }
snmpInASNParseErrs OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
50
DESCRIPTION
::= { snmp 6 }
snmpEnableAuthenTraps OBJECT-TYPE
MAX-ACCESS read-write
STATUS current
DESCRIPTION
::= { snmp 30 }
snmpSilentDrops OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
::= { snmp 31 }
snmpProxyDrops OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
51
STATUS current
DESCRIPTION
::= { snmp 32 }
coldStart NOTIFICATION-TYPE
STATUS current
DESCRIPTION
"Un trap coldStart significa que la entidad SNMPv2, actuando como agente, est
autoreinicializndose y su configuracin puede haber sido alterada."
::= { snmpTraps 1 }
warmStart NOTIFICATION-TYPE
STATUS current
DESCRIPTION
"Un trap warmStart implica que la entidad SNMPv2, actuando como agente, est
autoreinicializndose de tal forma que su configuracin no cambia."
::= { snmpTraps 2 }
authenticationFailure NOTIFICATION-TYPE
STATUS current
DESCRIPTION
::= { snmpTraps 5 }
Sentencias de Conformidad
Por ejemplo:
snmpCommunityGroup OBJECT-GROUP
OBJECTS { snmpInBadCommunityNames,snmpInBadCommunityUses }
STATUS current
DESCRIPTION
::= { snmpMIBGroups 9 }
3.1 MODULE-COMPLIANCE
snmpBasicCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
MANDATORY-GROUPS {snmpGroup,
snmpSetGroup,systemGroup,snmpBasicNotificationsGroup}
GROUP snmpCommunityGroup
53
DESCRIPTION
::= { snmpMIBCompliances 1 }
Resumen
Existe tres tipos de mdulos de informacin definidos con las reglas ofrecidas por el
SMI:
Dentro de cada modulo existirn objetos, los cuales se definen con la macro
OBJECT-TYPE, la expansin de estos se produce durante la implementacin.
Tambin se usaran convenciones textuales (macro TEXTUAL-CONVENTION), que
son redefiniciones mas precisas de algn tipo de datos, dentro de un MIB.
1. Conceptos
1.1 Autentificacin
Identificacin origen, por la cual un mensaje puede ser asociado con una
entidad origen.
Integridad del mensaje, por la cual un mensaje alterado puede ser detectado
con seguridad.
Proteccin limitada de retransmisin, por la cual un mensaje que ha sido
duplicado o retrasado por la red o una tercera parte puede ser detectado fuera
del tiempo de vida esperado del mensaje.
Tras esto podemos observar que prevenir las ocasiones de fuera de servicio, en las
cuales una tercera parte interrumpe una comunicacin, no es un objetivo del entorno
de gestin.
No obstante, para alcanzar seguridad con las anteriores funciones deberemos usar:
1.2 Privacidad
y la clave asociada.
1.3 Autorizacin
Una vez que los recursos son identificados, solo resta determinar las operaciones
SNMP empleadas en ellos. A esto se denomina Poltica de Acceso, y es usada para el
control del flujo de informacin entre la entidad agente SNMP y una entidad de
aplicacin de gestin dada.
2. Comunidades
SNMP define una comunidad como una relacin entre entidades SNMP. Una
comunidad SNMP se escribe como una cadena de octetos sin interpretacin. Esta
cadena se llama nombre de comunidad. Cada octeto toma un valor entre 0 y 255.
Identificacin origen: como las cadenas de comunidad son enviadas sin proteccin,
cualquier tercera parte capaz de interceptar un mensaje SNMP puede usar el mismo
nombre de comunidad y de esa forma demandar ser un miembro de la comunidad de
mensajes;
Integridad del mensaje: cualquier tercera parte puede modificar un mensaje SNMP
que intercepte.
Privacidad: cualquier tercera parte puede leer el mensaje SNMP que haya
interceptado;
los MIB que contiene, o las relaciones de proxy vlidas; ser sencillo para una tercera
parte obtener los accesos correctos de una entidad autorizada para monitorizar o
controlar esos objetos.
Para contemporizar, todo lo que puede ser dicho es que aunque SNMP v2 ofrece
enfoques tcnicos para estos asuntos, sus mecanismos no llevan a solucin. Adems
el grupo de trabajo ha sido incapaz de lograr un consenso en como llegar a la
solucin.
Primero, varios diseadores de mdulos MIB son reacios a definir objetos, que
maliciosamente modificados puedan causar considerables dificultades en la
red; y,
Muchos implementadores de agentes no han implementado funciones de
control SNMP a propsito.
3. Procedimientos
Veremos como se procesan los mensajes SNMP. Para empezar, veremos el formato
del mensaje. Existen tres partes:
afirmativo, se chequea la comunidad del mensaje para ver si se refiere a una conocida
a la entidad receptora.
Una interaccin SNMP consiste en una peticin de algn tipo, seguida por una
respuesta. Hay cuatro resultados posibles de una operacin:
PDUs ::=
CHOICE {
get-request
get-next-request
response
set-request
get-bulk-request
inform-request
trap
report
max-bindings
PDU ::=
SEQUENCE {
request-id Integer32,
INTEGER {
noError(0),
tooBig(1),
genErr(5),
noAccess(6),
wrongType(7),
wrongLength(8),
wrongEncoding(9),
wrongValue(10),
noCreation(11),
inconsistentValue(12),
resourceUnvailable(13),
commitFailed(14),
undoFailed(15),
authorizationError(16),
notWritable(17),
inconsistentName(18)
},
60
INTEGER (0..max-bindings),
VarBindList
-- colecciones de variables
VarBind ::=
SEQUENCE {
name
ObjectName,
CHOICE {
value ObjectSintax,
noSuchObject[0]
IMPLICIT NULL,
noSuchInstance[1]
IMPLICIT NULL,
EndOfMivView[2]
IMPLICIT NULL
VarBindList ::=
SEQUENCE(SIZE(0..max-bindings)) OF VarBind
61
request-id, valor entero usado por la aplicacin para distinguir entre peticiones
pendientes, lo que permite a la aplicacin mandar rpidamente varios
mensajes SNMP, reconocer mensajes duplicados en la red y medir el tiempo
del trfico que genera. Los agentes no pueden modificar este campo.
error-status, si no es cero, representa un error al procesar la peticin y que
debera ignorarse el campo variable-bindings.
error-index, si no es cero indica qu variable de la peticin es errnea.
variable-bindings, Lista de variables, con su nombre y valor.
1.1 Interacciones
Veamos primero una interaccin normal entre dos entidades SNMPv2, para ms
adelante estudiar sus variaciones:
Un nico request-id.
error-status/error-index a cero.
Cero o ms instancias de variables.
El mismo request-id.
error-status a cero.
Las mismas instancias de variables.
Un nico request-id.
error-status/error-index a cero.
Cero o ms instancias de variables.
El mismo request-id.
error-status a cero.
Las mismas instancias de variables, pero con diferentes valores y uno o ms
valores de excepcin.
Mientras se procesa alguna peticin, el agente puede encontrar un error e indica que
la operacin no puede procesarse. Hay varias clases de error. El funcionamiento de
interacciones SNMPv2 con excepciones es de la siguiente forma:
Un nico request-id.
error-status/error-index a cero.
Cero o ms instancias de variables.
El mismo request-id.
error-status a cero.
Las mismas instancias de variables que la peticin.
Teniendo en cuenta que los errores nunca se devuelven en una respuesta a una
operacin de invocacin, hay dos clases de errores que pueden devolverse en la
respuesta a cualquier otra peticin:
tooBig, indica que la respuesta podra ser demasiado larga para enviarla.
genErr, no debera devolverse excepto que no haya otra posibilidad.
63
Si se procesa una peticin de modificacin, hay otra case de errores que deberan
devolverse, pero que se vern ms adelante.
Esta interaccin ocurre cuando se enva una peticin, pero no se recibe respuesta.
Hay varias posibilidades:
Para procesar las peticiones, primero debe aceptarse una estructura Message para
que la evale la entidad. Cuando la peticin se procesa, se examina la lista de
variables instanciadas; en el caso que el campo variable-bindings est vaco, termina
el procesamiento devolviendo una respuesta noError.
Por otro lado, para cada variable de la peticin, la instancia se recupera de la vista
del MIB con esta operacin:
Por otro lado, para cada variable de la peticin, se devuelve la primera instancia que
siga a la variable que est en la vista del MIB con esta operacin:
Puede ocurrir que al usar el operador get-next con mltiples operandos para
examinar una tabla vaca, se devuelva un error de tipo tooBig en vez de devolver las
mltiples instancias de la variable. Esto ocurre debido a que el operador no pudo
encontrar instancias en la tabla.
BulkPDU ::=
SEQUENCE {
request-id Integer32,
non-repeaters INTEGER(0..max-bindings),
max-repetitions INTEGER(0..max-bindings),
variable-bindings VarBindingList
request-id, el usual.
65
Dicha diferencia indica la cantidad mxima de espacio posible para las instancias de
las variables en la respuesta. Si la diferencia es menor de cero, la respuesta se pierde;
si no, se genera la respuesta, que tendr cero o ms variables instanciadas.
Existe otra forma con la que la operacin get-bulk termina prematuramente: Esto
ocurre cuando al examinar las variables de la tabla, se devuelve una excepcin
endOfMibView. En este caso, todas las futuras repeticiones devolvern lo mismo y se
omitirn de la respuesta.
Por ltimo, es importante saber que cuando un agente decide procesar una peticin
get-bulk, slo se puede devolver el error genErr, ya que devolver tooBig no tiene
sentido.
Slo hay una peticin de modificacin: El operador set. Cuando una aplicacin de
administracin conoce exactamente las instancias que necesita, genera una set-
request.
La semntica de la operacin set es tal que la operacin tiene xito si y slo si todas
66
SNMPv2 soporta nuevos cdigos de error, adems de los habituales, que son los
siguientes, as como las causas que los producen:
noAccess, la variable no es soportada por la vista del MIB para esa operacin.
notWritable, La variable existe pero el agente no puede modificar instancias
del tipo objeto correspondiente.
wrongType, el nuevo valor proporcionado es de un tipo de datos ASN.1
errneo.
wrongLength, el nuevo valor proporcionado es de longitud errnea.
wrongEncoding, el nuevo valor proporcionado est codificado errneamente.
wrongValue, el nuevo valor est fuera del rango de valores admitidos para el
tipo de objeto correspondiente.
noCreation, la variable no existe y el agente no puede crear instancias del tipo
objeto correspondiente.
inconsistentName, la variable no existe y no puede ser creada porque el
nombre de la instancia es inconsistente con los valores de otro objeto en el
agente.
inconsistentValue, el valor proporcionado es inconsistente con los valores de
otro objeto en el agente.
resourceUnvailable, un recurso requerido no puede ser reservado.
Los cdigos noCreation y notWritable son de tipo permanente, mientras que los
tres ltimos son de tipo transitorio. El resto son casos que no deberan ocurrir si la
aplicacin y el agente tuvieran un mismo concepto de los objetos en cuestin.
Cuando una aplicacin de administracin usa la operacin set, hay que tener en
cuenta varias cosas:
Hay que tener cuidado al agrupar objetos en una sola peticin set, ya que si
algn objeto puede resetear al agente, el resto de objetos no tendrn ningn
efecto.
El servicio de transporte puede duplicar peticiones o repartir peticiones que
estn fuera de servicio. Por tanto, si una operacin set depende de otra
operacin set anterior, la segunda debe esperar hasta que los paquetes de la
primera peticin no existan en la red. Esto se puede solucionar con la
convencin textual TestAndIncr., o incluir snmpSetSerialNo en el set para
asegurar el procesamiento ordenado de las peticiones.
Para algunos objetos no debera retransmitirse la operacin set slo porque no
se haya obtenido respuesta y sin usar una operacin get para asegurarse que
la operacin set tuvo efecto.
...
SYNTAX INTEGER {
active(1),
notInService(2),
notReady(3),
createAndGo(4),
createAndWait(5),
destroy(6)
Una vez creada la fila, la aplicacin realiza una operacin get para cada columna
que conoce, usando el identificador seleccionado en el primer paso. Para cada
columna requerida:
69
Entonces la aplicacin enviar al agente un set, que contiene valores para las
columnas con un MAX-ACCESS de read-create y el estado de la columna puesto a
createAndGo.
Se crea la fila.
Se devuelve una respuesta con noError
El agente asigna valores por defecto a las columnas de las filas cuyos valores
no se especificaron en el set.
La columna de estado se pone a active.
Se debera tener en cuenta que puede que no todas las filas entren en una sola
PDU. Tambin, la respuesta de get indica que aquellas columnas que implemente el
agente deben ser superconjuntos de las columnas que son obligatorias. As, en el set,
la aplicacin slo tiene que preocuparse de las columnas con un MAX-ACCESS de
read-create.
Para que esta aproximacin funcione, la versin del mdulo MIB que conoce la
aplicacin y el agente debe coincidir.
Se crea la fila.
Se devuelve una respuesta noError.
El agente asigna valores por defecto a las columnas de las filas cuyos valores
no se especificaron en el set.
El agente debe asignar valores por defecto a aquellas filas que implementa de
70
solo lectura.
La columna de estado se activa a notInService o a notReady, segn la
informacin disponible del agente.
Tambin puede ocurrir que el proceso de negociacin se vea interrumpido. Por eso, el
agente debe almacenar de vez en cuando filas que no estn en estado activo.
Algunos mdulos MIB precisan que se desactive una fila para poder modificarla.
Para ello, la aplicacin pone la columna de estado a notInService. Si el agente no lo
soporta, devuelve un error wrongValue; si no, la fila no es accesible para el dispositivo
y se devuelve una respuesta de noError.
Desactivar una fila es til cuando las modificaciones no caben en una sola PDU. Por
supuesto, hasta que no se hacen todas las modificaciones, la fila no ser consistente,
por lo que el agente pone la columna de estado a notReady.
snmpTrapOID OBJECT-TYPE
MAX-ACCESS accesible-for-notify
...
::= {snmpTrap 1}
Cuando una aplicacin quiere informar a otra aplicacin, genera una inform-
request. El formato de la InformRequest-PDU es idntico al de las otras PDU del
resto de peticiones. Al igual que snmpV2-trap, las dos primeras instancias indican el
momento del evento y su identidad.
2. Mapeo de Transporte
Hay varios mapeos de transportes definidos y usan el mismo conjunto de reglas para
el primer paso. Como todos los objetos y estructuras SNMP se definen con el ASN.1
de OSI, el entorno de administracin usa BER (Basic Encoding Rules) de OSI para
codificar las estructuras en octetos. Cuando stos se reciben, se transforman en una
estructura de datos con una semntica idntica.
DISPLAY-HINT "1d.1d.1d.1d/2d"
STATUS current
DESCRIPTION
La entidad que enva transforma y enva el mensaje como un nico datagrama UDP
a la direccin de transporte de la entidad receptora. Por convencin, los agentes
SNMP escuchan en el puerto UDP 161 y envan las notificaciones al puerto UDP 162,
aunque una entidad debera configurarse para usar cualquier selector de transporte
aceptable.
Todas las entidades receptoras deben admitir mensajes de al menos 1472 octetos
de longitud.
DISPLAY-HINT "*1x:/1x:"
STATUS current
DESCRIPTION
(0 de 3 a 20)
La entidad que enva transforma el mensaje y lo enva como una nica unidad de
datos del servicio de transporte (TSDU) a la direccin de transporte de la entidad
receptora. Los selectores de transporte por defecto son:
Una entidad debera poder configurarse para usar cualquier selector de transporte
aceptable. Todas las entidades receptoras deben admitir mensajes de al menos 1472
octetos de longitud.
STATUS current
DESCRIPTION
DISPLAY-HINT "4x.1x:1x:1x:1x:1x:1x.2d"
STATUS current
DESCRIPTION
La entidad que enva transforma y enva el mensaje como un nico datagrama IPX a
la direccin de transporte de la entidad receptora. Por convencin, los agentes SNMP
escuchan en el socket IPX 36879 y envan las notificaciones al socket IPX 36880,
aunque una entidad debera configurarse para usar cualquier selector de transporte
aceptable.
Todas las entidades receptoras deben admitir mensajes de al menos 546 octetos de
longitud.
3. Resumen
Resultado correcto
Timeout
1 o varias Excepciones
Error
Modificacin:SET.
Invocacin: SNMPV2-TRAP.
Administracin: INFORM.
Las operaciones SNMP son independientes del protocolo de transporte usado, pero
utilizaremos solo un servicio de transporte no orientado a conexin.
Un sistema SNMP viene determinado por todos aquellos datos que es capaz de
procesar, es decir, el fundamento de la gestin de una red sern todas aquellas
estructuras que se encarguen de almacenar los datos que se gestionarn en el
sistema. Posteriormente una aplicacin SNMP, ejecutndose sobre un administrador
de dicho protocolo, ser la encargada de visualizar parte o la totalidad de los datos
que son soportados por dichas estructuras.
Es claro que una aplicacin SNMP no podr dar informacin sobre datos que no estn
almacenados en alguna variable, por lo que en esto difieren la mayora de los mdulos
MIB que existen en los distintos sistemas de gestin de red existentes en el mercado.
Este mdulo, como se puede ver de forma ms amplia en la documentacin adjunta,
ser el encargado de almacenar estas y otras estructuras que harn falta para
justificar la vala de los datos. Por ejemplo, de qu nos servira un valor de bytes
transmitidos si no sabemos cundo fue la ltima vez que se ley ese dato?, o quin
fue la fuente de esos bytes transmitidos?...
78
CMO FUNCIONA?
Datagramas UDP: Nmero total de datagramas UDP que discurren por la red.
Bytes transmitidos sobre UDP: Suma total de los bytes de los paquetes UDP.
Una vez pulsado el botn "Generar el mdulo MIB", se generar el mdulo MIB
genrico con las estructuras adecuadas, y aparecer un botn para realizar la
"Simulacin". Una vez pulsado ste ltimo, aparecer un pequeo cuadro de
configuracin del nmero de sistemas servidores y clientes disponibles en la red, as
como la franja horaria y el tiempo total de simulacin. Por ltimo, el botn "Realizar
simulacin", mostrar el resultado de la simulacin en unas grficas.
Manual de usuario
Introduccin
Variables a incluir
(figura 1)
(figura 2)
Todas las estructuras que contiene el mdulo MIB son altamente autoexplicativas, ya
que todas ellas contienen una clusula "DESCRIPTION", la cual contiene una cadena
de caracteres que explica la funcionalidad de la estructura que la contiene.
Opciones de simulacin
Una vez que se ha incidido con el "click" del ratn sobre el botn de
"Simulacin", aparecen una serie de posibles selecciones sobre el sistema a simular:
82
(figura 3)
Existe una ltima opcin que es la de "Acumular datos anteriores" que una vez
pulsada, nos permitir ver la evolucin de los datos a lo largo de varias simulaciones.
Ejemplo: Si queremos ver el trfico de todo un da no tenemos ms que realizar tres
simulaciones, de ocho horas, con esta opcin pulsada. Hay que sealar que los datos
muestran los valores acumulados de una marca horaria con su homloga de la
siguiente simulacin, lo cual no ofrece un dato especialmente significativo, pero si
muestra el volumen total de trfico a lo largo de las simulaciones acumuladas.
Resultados de la simulacin
(figura 4)
Conclusiones
84
Este sistema ofrece una visin global de lo que podra ser un sistema SNMP, pero
nunca hay que olvidar que est basado en el trfico total de una subred durante un da
completo, es decir, no se pueden establecer conclusiones generales sobre los
resultados o interpolarlas a otro sistema que disponga de otras aplicaciones y otros
horarios de trabajo.
La aplicacin ofrece alta interactividad del usuario, y es por esto que permite realizar
muchos tipos de simulaciones que pueden ofrecer ideas claras sobre un sistema, pero
al mismo tiempo, un uso inconsciente de la misma, puede ofrecer datos que en
absoluto tengan relacin con un sistema real.
Fundamentos de la simulacin
La simulacin se basa en recrear unos datos reales, en este caso del trfico de una
subred real.
Se han tomado los datos del nmero de paquetes UDP y TCP de un sistema real,
junto con el tamao de dichos paquetes y su direccin origen y destino, durante todo
un da. Dichos valores han sido luego procesados para separar los paquetes
generados por sistemas servidores, siendo estos los que poseen un disco duro y
aplicaciones compartidas para el resto de usuarios del sistema; y los generados por
sistemas clientes, es decir, que hacen uso de las aplicaciones que se encuentran los
servidores.
Hay que hacer notar que se obtuvieron tres juegos de los estadsticos anteriormente
mencionados: uno para el trfico generado durante la maana, otro para el de por la
tarde, y un ltimo para el trfico nocturno.
Siendo:
Adems, dicho valor es recalculado para la siguiente franja horaria, es decir, al existir
6 fracciones del tiempo total seleccionado, se calcula el valor de todos los estadsticos
de todos los equipos de la subred 6 veces en una simulacin completa.
Bibliografa
RFC 1442 - Structure of Management Information for version 2 of the Simple Network
Management Protocol (SNMPv2)
RFC 1157 - A Simple Network Management Protocol
Rose, Marshall T. - The Simple Book: An Introduction to Networking Management -
Ed. Prentice-Hall - 1995
Rose, Marshall T. - The internet message: Closing the book with electronic mail.
Siyan, Karanjit S. - Todo Visual J++ - Ed. Inforbook's - 1997
Stallings, William - Data and computer communications - Ed. Prentice-Hall - 1997
Tanenbaum, Andrew S. - Redes de ordenadores - Ed. Prentice-Hall - 1991
Thomas, Patel, Hudson, Ball - Programacin en JAVA para Internet - Ed. Paraninfo - 1997
Tittel, Gaither, Hassinger, Erwin - Fundamentos de programacin con HTML & CGI - Ed. Anaya Multimedia - 1996
Watson, Blackstone - Computer simulation - Ed. Wiley - 1989
Glosario:
MODULE-IDENTITY
OBJECT-TYPE
NOTIFICATION-TYPE
OBJECT IDENTIFIER