Question

Pour les paquets UDP dont la charge utile est inférieure à 1470, est-il possible d'atteindre un débit de 1 Gbit? En raison de la petite taille des paquets, il doit y avoir des goulots d'étranglement pour atteindre ce débit (E / S, système d'exploitation, réseau, etc.). J'imagine que les pilotes et le matériel pourraient devoir être réglés sur de petits paquets / haut débit. Quelqu'un a-t-il tenté avec succès d'atteindre un débit de 1 Gbit avec de petits paquets UDP?

Était-ce utile?

La solution

J'ai déjà expérimenté le débit de liens gigabits sur du matériel informatique relativement standard, bien que je ne fasse que transmettre (via tcpreplay ), plutôt que udp.

Le plus gros goulot d’étranglement que j’ai constaté est le simple acheminement des paquets vers la carte réseau même. Cela peut être considérablement amélioré en utilisant un bus haute vitesse pour l’interface avec votre carte réseau (par exemple, une carte réseau pci-express 4x). Mais même avec cela, il y avait un paquet / seconde limite très précis. Évidemment, augmenter la taille des paquets vous permettrait d’utiliser plus de votre bande passante tout en réduisant la charge du processeur.

Dans la même ligne que le commentaire de Steve Moyer , il existe une limite théorique à l'utilisation de réseau. Dans mes expériences (réalisées sur un réseau totalement silencieux), je voyais un maximum d’environ 900 Mo / s (et seulement de mémoire vive). C'était avec des charges de processeur de 30 à 40%.

Il est plus probable que votre matériel système (PC) impose cette limitation à votre infrastructure réseau - tout commutateur réseau digne de ce nom devrait être capable de maintenir un accès réseau à grande vitesse avec de petits paquets - certainement beaucoup des taux plus élevés que la plupart des ordinateurs ne peuvent supporter.

Autres conseils

Quel type de connexion réseau utilisez-vous? Si vous utilisez un lien 1000BaseTx / Fx, ne vous attendez pas à un débit supérieur à 80% avec des paquets de taille maximale. Au fur et à mesure que la taille de vos paquets diminue, la charge pour l'espacement, la synchronisation, les en-têtes Ethernet, les en-têtes IP et les en-têtes UDP augmente en fonction de la charge utile, ce qui dégrade encore plus votre débit maximal.

Consultez la documentation du commutateur que vous utilisez. Les commutateurs sont limités par le nombre de paquets par seconde (pps) qu'ils peuvent livrer et ne peuvent souvent pas supporter 1 Go / s si vous envoyez des paquets avec une taille nettement inférieure à la taille maximale de la charge utile.

Une autre chose à vérifier est de savoir si votre carte réseau est en train de fusionner des interruptions et quel est le nombre maximal de descripteurs d’envoi / réception qu’elle peut prendre en charge. À ce niveau de débit, le temps de service d'interruption et le temps de commutation de contexte peuvent devenir une lourde charge pour le système hôte, même avec un système de traitement et de mémoire moderne.

De même, si vous utilisez des gigabits sur du cuivre, le plus petit cadre Ethernet que la carte émettra sera de 512 octets. Par conséquent, les messages plus petits seront complétés à cette taille. Ceci est dû aux exigences de détection de porteuse / détection de collision.

J'ai constaté que le matériel a une limite de paquets par seconde nettement plus faible que la capacité théorique du réseau. Pour un Broadcomm BCM5704S, j’ai atteint 69 000 points par seconde, contre 1 488 100 points-par-jour en gigabits.

Quelques chiffres supplémentaires rapportés ici, http://code.google.com/p/openpgm /

Il existe un bon tutoriel sur la modification de vos paramètres réseau (sous Linux) pour atteindre une vitesse gigabit réelle: http://datatag.web.cern.ch/datatag/howto/tcp.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top