2012-05-25 22 views
5

Estoy escribiendo un agente SNMP y la definición MIB incluye un OID de tipo Unsigned32.¿Cuál es la codificación correcta para el tipo de SNMP Unsigned32?

La implementación de Unix del agente usa Net-SNMP y configura el OID como tipo ASN_UNSIGNED, ya que no tiene un ASN_UNSIGNED32. Cuando miro la respuesta GET con Wireshark, la decodifica como un valor "Gauge32". Eso tiene sentido a primera vista, porque según RFC 1902 Unsigned32 y Gauge32 son lo mismo.

La implementación de Windows se basa en SnmpAPI.lib de Windows y configura el OID como ASN_UNSIGNED32 y cuando miro la respuesta GET con Wireshark, la decodifica como "Unsigned32". Eso se ve mejor para mí.

¿Cómo es que las 2 implementaciones producen resultados diferentes en el cable?

¿Cuál es la versión correcta y cómo puedo obtener la misma de ambas implementaciones?

Respuesta

5

Resulta que Net-SNMP está utilizando la codificación actual RFC 1902 donde Unsigned32 y Gauge32 son idénticos, mientras que Windows usa la codificación obsoleta RFC 1442 donde Unsigned32 y Gauge32 tenían diferentes codificaciones.

+1

Buena captura. Suena como un error de Windows. –

+0

Por lo que parece, Microsoft no ha actualizado realmente el servicio SNMP desde 1996 cuando salió el RFC 1902. Así que simplemente se quedan con la versión anterior y parece que la mayoría de las herramientas de SNMOP también son compatibles con RFC 1442. –

1

Si guarda la captura de Wireshark en Windows y luego la abre en Wireshark en Unix. Entonces puede ver cuál es el tipo que muestra. Unsigned32 y Gauge32 son intercambiables definidos por el estándar, por lo que no debería haber nada diferente en todas las implementaciones de SNMP. En el cable, debe transferir los mismos bytes.

+0

Eso es lo que yo pensaba, pero ambos rastros de Wireshark se hicieron en Linux y el OID del agente de Linux se muestran como Gauge32 y los del agente de Windows se muestran como Unsigned32. Mismo ejecutable de Wireshark en la misma máquina. –

+0

No tuve tiempo para bucear en el analizador de Wireshark. Pero como dije, deberías leer los bytes sin formato entonces. ¿Ha hecho usted eso? –

Cuestiones relacionadas