Dans un test de débit TCP iperf WLAN, plusieurs flux parallèles me donneront un débit supérieur à 1 flux. J'ai essayé d'augmenter la taille de la fenêtre TCP, mais je ne parviens toujours pas à atteindre le débit maximal avec un seul flux. Y a-t-il autre chose dans la couche TCP qui empêche l'utilisation de la pleine capacité de la liaison?
12
Réponses:
D'après mon expérience, si vous voyez des résultats significativement différents entre 1 flux TCP et plusieurs flux TCP, le problème est normalement la perte de paquets; donc "quelque chose d'autre" dans la couche TCP est la retransmission (en raison de la perte de paquets de couche inférieure).
Un exemple que j'ai préparé pour illustrer comment la perte de paquets affecte le débit d'un seul flux ...
Ceci est un tableau qui résume les résultats d'un test de 60 secondes
iperf
entre un client et un serveur ... vous pouvez voir une petite variation dans les résultats iperf de la gigue RTT (c'est-à-dire un écart-type RTT plus élevé); cependant, la différence la plus significative est survenue lorsque j'ai simulé une perte de 2% en laissant la carte réseau câblée du client. 172.16.1.56 et 172.16.1.80 sont le même ordinateur portable (exécutant Ubuntu). Le serveur est 172.16.1.5, exécutant Debian. J'ai utilisé netem sur la carte réseau câblée du client pour simuler la perte de paquets ...MODIFIER les réponses aux commentaires :
La plupart des implémentations TCP réduisent leur fenêtre de congestion lorsqu'une perte de paquets est détectée. Puisque nous utilisons netem pour forcer la perte de paquets de 2% du client vers le serveur, certaines données du client sont supprimées. L'effet net de netem dans cet exemple est un débit de transmission moyen à un seul flux de 730 Mbps. L'ajout de plusieurs flux signifie que les flux TCP individuels peuvent fonctionner ensemble pour saturer le lien.
Oui
Je ne peux pas vraiment répondre à cela sans plus d'expériences, mais pour les liens 1GE, je n'ai jamais eu de problème pour saturer un lien avec 5 flux parallèles. Pour vous donner une idée de l’extensibilité de TCP, les serveurs Linux peuvent gérer plus de 1 500 sockets TCP simultanés dans les bonnes circonstances. C'est une autre discussion SO qui est pertinente pour la mise à l'échelle de sockets TCP simultanés, mais à mon avis, tout ce qui dépasse 20 sockets parallèles serait exagéré si vous essayez simplement de saturer un lien.
Je n'ai pas utilisé
iperf -w
, donc je pense qu'il y a un malentendu. Étant donné que vous avez tant de questions sur le boîtier Wi-Fi, j'inclus un graphique Wirehark du débit TCP pour le boîtier de flux TCP TCP unique.Données de test
J'inclus également des données de test brutes au cas où vous voudriez voir comment j'ai mesuré ces choses ...
802.11g, 1 flux TCP
802.11g, 5 flux TCP
1000BaseT, 1 flux, perte de 0,0%
1000BaseT, 5 flux, perte de 0,0%
1000BaseT, 1 flux, perte de 2,0%
1000BaseT, 5 flux, perte de 2,0%
Supprimer la simulation de perte de paquets
la source
Voici le calcul du débit maximal d'un seul flux TCP.
Vous avez donc un goulot d'étranglement et la latence joue un rôle important.
la source
C'est probablement dû à plusieurs processus vs un seul processus. avec iperf 2.0.9, on peut tester cela via -P 2 sur le client. Cela va bifurquer deux threads au lieu d'un. La plupart des processeurs modernes ont plusieurs cœurs, donc l'utilisation de plusieurs threads pourra les exploiter.
la source