Pourquoi le SNMP fonctionne-t-il habituellement sur UDP et non TCP/IP?
ce matin, il y a eu de gros problèmes au travail parce qu'un piège SNMP n'a pas "traversé" parce que SNMP est passé sur UDP. Je me souviens de la classe de réseautage à l'université que UDP n'est pas garantie de livraison comme TCP/IP. Et Wikipedia dit que SNMP peut être exécuté sur TCP/IP, mais UDP est plus commun.
je reçois que quelques-uns des avantages de l'UDP sur TCP/IP sont la vitesse, de la radiodiffusion, et la multidiffusion. Mais il me semble qu'une livraison garantie est plus importante pour la surveillance du réseau. que la capacité de diffusion. En particulier lorsqu'il y a de graves besoins en matière de haute sécurité. Un de mes collègues m'a dit que les paquets UDP sont les premiers à tomber quand le trafic devient lourd. C'est une autre raison pour préférer TCP/IP à UDP pour la surveillance du réseau (IMO).
alors pourquoi le SNMP utilise-t-il UDP? Je n'arrive pas à comprendre et je ne trouve pas de bonne raison sur Google non plus.
4 réponses
on s'attend en fait à ce que L'UDP fonctionne mieux que le TCP dans les réseaux à perte (ou congestionnés). TCP est bien meilleur pour transférer de grandes quantités de données, mais lorsque le réseau échoue, il est plus probable que UDP passera. (en fait, j'ai récemment fait une étude pour tester cela et il a constaté que SNMP sur UDP réussi bien mieux que SNMP sur TCP dans les réseaux avec perte lorsque le délai UDP a été mis correctement). Généralement, TCP commence à se comporter mal à environ 5% de perte de paquets et devient complètement inutile à 33% (ish) et UDP réussira (éventuellement).
Donc la bonne chose à faire, comme toujours, est de choisir le bon outil pour le bon travail. Si vous effectuez la surveillance de routine de beaucoup de données, vous pourriez considérer TCP. Mais soyez prêt à vous rabattre sur UDP pour régler les problèmes. La plupart des piles de nos jours peuvent utiliser TCP et UDP.
pour ce qui est de L'envoi de pièges, Oui les pièges ne sont pas fiables parce qu'ils ne sont pas accusés de réception. Cependant, SNMP informe sont un accusé de réception version d'un TRAP SNMP. Ainsi, si vous voulez savoir que le destinataire de la notification a reçu le message, s'il vous plaît utiliser informe. Notez que TCP fait résolvez ce problème car il ne fournit qu'une notification au niveau de la couche 3 que le message a été reçu. Il n'y a aucune assurance que la notification récepteur effectivement obtenu. SNMP informe do d'accusé de réception du niveau d'application et sont beaucoup plus fiables que l'hypothèse D'un TCP ack indique qu'ils l'ont reçu.
si les systèmes envoyaient des pièges SNMP via TCP, ils pouvaient bloquer en attendant que les paquets soient activés s'il y avait un problème pour acheminer le trafic vers le récepteur. Si beaucoup de pièges ont été générés, il pourrait utiliser les sockets disponibles sur le système et le système de verrouillage. Avec L'UDP, ce n'est pas un problème parce qu'il est apatride. Un problème similaire a fait sortir BitBucket en janvier bien qu'il s'agisse du protocole syslog plutôt que de SNMP--essentiellement, ils ont utilisé par inadvertance syslog sur TCP en raison d'un erreur de configuration, le serveur syslog s'est éteint, et tous les serveurs se sont verrouillés en attendant que le serveur syslog ACK leurs paquets. Si les pièges SNMP étaient envoyés par TCP, un problème similaire pourrait se produire.
http://blog.bitbucket.org/2012/01/12/follow-up-on-our-downtime-last-week/
l'utilisation de pièges avec le SNMP est considérée comme non fiable. Vous ne devriez vraiment pas compter sur des pièges.
SNMP a été conçu pour être utilisé comme protocole de requête/réponse. Les détails du protocole sont simples (d'où le nom "simple network management protocol"). Et UDP est un transport très simple. Essayez D'implémenter TCP sur votre agent de base - c'est beaucoup plus complexe qu'un simple agent codé en UDP.
les opérations SNMP get/getnext ont un mécanisme de Ré - essai- si un la réponse n'est pas reçue dans le délai imparti puis la même requête est envoyée jusqu'à un nombre maximum d'essais.
découvrez O'Reilly écrits sur SNMP: https://library.oreilly.com/book/9780596008406/essential-snmp/18.xhtml
l'un des avantages d'utiliser UDP pour les pièges SNMP est que vous pouvez diriger UDP vers une adresse de diffusion, puis les enregistrer avec plusieurs stations de gestion sur ce sous-réseau.