Quelle est la fréquence des paquets perdus dans les communications au sein d'un centre de données?

10

Disons que j'ai 2 machines dans le même centre de données mais pas nécessairement dans le même rack.

Quelle serait la fréquence des paquets perdus lors de leur envoi en utilisant UDP entre ces deux machines?

Je demande en supposant que, comme il n'y a que quelques commutateurs au maximum entre les machines, les paquets ne seront pas abandonnés du tout .

Quelle est la fréquence d'arrivée des paquets en panne dans le même centre de données? Mon hypothèse est qu'il n'y a qu'un itinéraire 99,9% du temps, donc cela ne peut pas se produire.

Cependant, chaque fois que je me surprends à penser en termes absolus, je sais que je dois manquer quelque chose!

De quelles informations de base ai-je besoin pour mieux comprendre quand s'attendre à des paquets abandonnés, à quelle fréquence ils peuvent être abandonnés et arriver en panne pour les machines du même centre de données?

En fin de compte, j'essaie de décider entre l'utilisation de la multidiffusion UDP ou PGM lors de la communication entre différentes instances Linode VPS situées dans le même centre de données. Les informations doivent arriver et en ordre. Bien sûr, UDP ne sonne pas si bien alors!

Mais, si l'on peut s'attendre à une livraison presque parfaite ou parfaite dans le même centre de données, alors ça va. Mais, je teste cette hypothèse.

Merci.

z8000
la source

Réponses:

11

Vous ne pouvez pas compter sur UDP pour livrer les paquets dans l'ordre car la spécification ne fournit pas ces garanties. Même en supposant la situation la plus idéale, un seul morceau de câble Ethernet entre deux hôtes, il y a toujours la question du système d'exploitation, de la pile réseau, du pilote NIC et de l'implémentation libc contre laquelle vous écrivez.

À chaque étape de cette chaîne, les rédacteurs de ce code auront choisi de NE PAS prioriser la commande des paquets UDP même s'ils arrivent dans l'ordre pour la simple raison qu'ils n'y sont pas obligés.

Un exemple artificiel pourrait être la structure de données dans laquelle les paquets entrants sont lus, ce qui pourrait être un tampon en anneau. Les paquets arrivant dans l'ordre seront placés, dans l'ordre, dans le tampon en anneau, mais il peut être plus simple pour le graveur de pilote de les vider dans les couches supérieures du code réseau dans l'ordre de la mémoire , ce qui aléatoirement leur ordre.

Dans votre situation, une machine virtuelle exécutée sur une infrastructure partagée qui sera exécutée pour le volume et non pour les performances, la probabilité de prédire l'ordre de réception des paquets UDP sera faible.

En bref, si la spécification indique que vous ne pouvez pas compter sur la commande de paquets UDP. Vous ne pouvez pas vous y fier et vous ne pouvez pas essayer de modifier l'environnement pour donner une garantie plus forte que la spécification jamais promise.

Dave Cheney
la source
C'est ce que je pensais que je devrais penser. Merci de l'avoir plutôt bien dit!
z8000
1
Si vous voulez une multidiffusion fiable, peut-être pour le streaming, jetez un œil à en.wikipedia.org/wiki/Real-time_Transport_Protocol
Dave Cheney
0

Si quelqu'un souhaite expérimenter, utilisez simplement Wireshark. Si quelqu'un aborde vraiment notre problème de connectivité lente ou de paquets perdus, nous reflétons simplement un port sur un commutateur, connectons un ordinateur portable avec Wireshark et jetons un coup d'œil.

Webs
la source
FWIW chez Linode, une instance VPS ne peut pas entrer en mode promiscuous.
z8000
Vous devriez être en mesure d'installer Wireshark localement sur une machine pour capturer les données entrant, ou simplement mettre en miroir le port sur un commutateur et capturer les données de cette façon. La mise en miroir des ports serait plus délicate si elle était effectuée pour les systèmes virtuels qui pourraient partager quelques ports. Mais Wireshark peut filtrer des éléments spécifiques comme les adresses IP et je pense que les noms d'hôtes.
Webs
0

À peu près n'importe quel commutateur entraînera la réorganisation de deux paquets à tout moment et est pris en compte par de nombreux protocoles réseau tels que PGM.

Une chose à considérer est que la plupart des centres de données bloquent les datagrammes et bloquent la multidiffusion afin de simplifier et de réduire les frais généraux de leur infrastructure réseau.

Le protocole IP / PGM lui-même ne doit être utilisé que si vous avez des éléments de réseau activés et conscients de PGM Router Assist entre le serveur et les clients, sinon restez avec PGM encapsulé dans UDP et économisez la charge de gérer les autorisations des applications.

Si vous utilisez une couche de messagerie comme ØMQ, vous pouvez différer le choix du réseau de superposition IP / PGM, UDP / PGM ou TCP pour le déploiement et l'intégration.

Steve-o
la source
-2

J'ai écrit une simple application de multidiffusion .net qui peut mesurer les paquets perdus sous la pression spécifiée.

Vous pouvez le télécharger ici: SimpleMulticastAnalyzer .

Prendre plaisir.

Eran Betzalel
la source