SNMP (net-snmp) está faltando contadores de 64 bits no FreeBSD 9.1 (ifHCInOctets / ifHCOutOctets)

1

Estou usando o SNMP (da porta net-mgmt / net-snmp, v5.7.2, compilado com "MFD_REWRITES") em um sistema FreeBSD9.1-RELEASE. Por alguma razão, o ifXTable MIB (1.3.6.1.2.1.31.1.1.1) parece estar faltando nos contadores HC (como ifHCInOctets(1.3.6.1.2.1.31.1.1.1.6), por exemplo).

get (noSuchName) There is no such variable name in this MIB.
snmpget localhost <hostname> 1.3.6.1.2.1.31.1.1.1.6.5
snmpget localhost <hostname> ifHCInOctets.5
snmp error index = 1

E ao listar 1.3.6.1.2.1.31.1.1.1 eu recebo

usbus0 ifName.1
...
vr0 ifName.5
...
re0 ifName.8
...
re0.10 ifName.12
...
tun0 ifName.17
...
79144352 ifInMulticastPkts.5
...
120009 ifInMulticastPkts.8
...
43670 ifInMulticastPkts.12
...
0 ifInBroadcastPkts.5
...
0 ifOutMulticastPkts.5
...
0 ifOutBroadcastPkts.5
...
100 ifHighSpeed.5
...
1000 ifHighSpeed.8
...
false ifPromiscuousMode.5
...
true ifConnectorPresent.5
...
 ifAlias.5
...
0:00:00 ifCounterDiscontinuityTime.5
...

Para mim, parece que "muito" estava lá. Mas não o ifHC[In|Out]Octets...

Como você pode ver, minhas interfaces usam o "vr" (Via Rhine) e "re" (Realtek). Alguém tem uma dica?

Scherand
fonte

Respostas:

3

Descobri que o problema parece ser minha consulta: por alguma razão (desconhecida), o módulo perl SNMP::Utilque estou usando envia incondicionalmente consultas SNMP usando a versão do protocolo 1. E o SNMP v1 não pode lidar com contadores de 64 bits.

Então, tentei usar o Net::SNMP::Utilque você deve especificar a versão do protocolo SNMP a ser usada. E voilà, funciona.

O uso snmpwalkdo shell também revela isso:

$ snmpwalk -Os -c <community> -v 1 localhost 1.3.6.1.2.1.31.1.1.1 | grep 'ifHC.*Octets' |wc -l
   0
$ snmpwalk -Os -c <community> -v 2c localhost 1.3.6.1.2.1.31.1.1.1 | grep 'ifHC.*Octets' |wc -l
  34
$ snmpwalk -Os -c <community> localhost 1.3.6.1.2.1.31.1.1.1 | grep 'ifHC.*Octets' |wc -l
  34
Scherand
fonte