2016-11-08 2 views
2

J'utilise la bibliothèque net-snmp (c/C++) pour écrire l'expéditeur de piège snmp. Pour les types d'objets de base, il est assez simple d'ajouter un objet au piège:Est-il possible d'envoyer une table dans SNMP Trap?


snmp_varlist_add_variable(notification_vars, MibName, length, MIBType, MIBValue, len); 

Où est le OID « MibName », « MIBValue » la valeur en tant que chaîne et « MIBType » le type de l'ASN. Maintenant, comment faire cela pour une table indexée? Y a-t-il un soutien pour cela? Comment ajouter toutes les lignes avec leurs éléments au piège?

Ou existe-t-il des alternatives plus simples à cela?

Répondre

1

L'envoi d'une table SNMP entière dans un déroutement SNMP est une mauvaise pratique. Généralement, les tables SNMP sont assez volumineuses en termes de nombre d'instances OID. Le problème est que SNMP utilise UDP comme protocole de transport. SNMP autorise les PDU dimensionnées à la MTU du réseau. Le tampon doit être aussi gros que le plus gros paquet anticipé, donc il devrait probablement correspondre au MTU, si possible. Par exemple, Ethernet autorise des charges utiles de trame de 1500 octets.

Donc, la taille maximale de votre PDU est généralement de 10 varbinds en moyenne.

Le scénario de cas d'utilisation courant consiste à envoyer un trap SNMP pour informer l'utilisateur que quelque chose a changé/s'est produit. L'utilisateur devra récupérer les données de la table à l'aide de Get-Next/Get-Bulk lors de la réception du trap pour obtenir les détails de cet événement.