D'après mon expérience, la principale cause de anormal sur des réseaux à haut débit par ailleurs sains sont le TCP Windowing ( RFC1323, section 2 ), avec une deuxième place, très proche, pour les fautes concernant les TCP Delayed Acks ( RFC1122 section 4.2.3.2 ). Ces deux méthodes sont des améliorations apportées au TCP pour mieux gérer les réseaux à grande vitesse. Lorsqu'elles sont interrompues, les vitesses chutent à des niveaux très lents. Dans ces cas, les défaillances affectent les transferts importants (pensez aux flux de sauvegarde), alors que le petit trafic extrêmement transactionnel (le transfert de données moyen est inférieur à la taille du MTU et il y a BEAUCOUP de va-et-vient) sera moins affecté par ces défaillances.
Une fois de plus, j'ai constaté que les plus gros problèmes liés à ces deux questions se posaient lorsque deux piles TCP/IP différentes communiquaient. Par exemple, Windows/Linux, 2.4-Linux/2.6-Linux, Windows/NetWare, Linux/BSD. Le like to like fonctionne très, très bien. Microsoft a réécrit la pile TCP/IP de Windows dans Server 2008, ce qui a introduit des problèmes d'interopérabilité avec Linux qui n'existaient pas avec Server 2003 (je crois que ces problèmes ont été résolus, mais je n'en suis pas sûr à 100 %).
Des désaccords sur la méthode exacte de l'accusé de réception différé ou sélectif peuvent conduire à des cas comme celui-ci :
192.168.128.5 -> 192.168.128.20: 1500b payload, SEQ 1562
192.168.128.5 -> 192.168.128.20: 1500b payload, SEQ 9524
\[200ms pass\]
192.168.128.20 -> 192.168.128.5: ACK 1562
192.168.128.5 -> 192.168.128.20: 1500b payload, SEQ 12025
192.168.128.5 -> 192.168.128.20: 1500b payload, SEQ 13824
\[200ms pass\]
192.168.128.20 -> 192.168.128.5: ACK 12025
Le débit chute à cause de tous les délais de 200 ms (le délai d'attente de Windows est par défaut de 200 ms). Dans ce cas, les deux parties de la conversation n'ont pas réussi à gérer le TCP Delayed Ack.
Les défauts de TCP Windowing sont plus difficiles à remarquer car leur impact peut être moins évident. Dans les cas extrêmes, le fenêtrage échoue complètement et vous obtenez des paquets->ack->packet->ack->packet->ack, ce qui est vraiment lent lors du transfert de tout ce qui est significativement plus grand que 10KB et qui amplifie tout ce qui a été fait. latence fondamentale sur le lien. Le mode le plus difficile à détecter est celui où les deux parties renégocient continuellement la taille de leur fenêtre et où l'une d'elles (l'expéditeur) ne respecte pas la négociation, ce qui nécessite la gestion de quelques paquets avant que les données puissent continuer à être transmises. Ce type de défaut se traduit par des lumières rouges clignotantes dans les traces Wireshark, mais se manifeste par un débit plus faible que prévu.
Comme je l'ai mentionné, les problèmes susmentionnés ont tendance à affecter les grands transferts. Le trafic tel que la vidéo en continu ou les flux de sauvegarde peuvent être vraiment affectés par ces problèmes, de même que le simple téléchargement de fichiers très volumineux (comme les fichiers ISO de distro Linux). Il se trouve que le TCP Windowing a été conçu comme un moyen de contourner les problèmes fondamentaux de latence, car il permet le pipelining des données ; vous n'avez pas besoin d'attendre le temps d'aller-retour pour chaque paquet envoyé, vous pouvez simplement envoyer un gros bloc et attendre un seul ACK avant d'en envoyer d'autres.
Cela dit, certains modèles de réseaux ne bénéficient pas de ces solutions de contournement. Les petits transferts hautement transactionnels, tels que ceux générés par les bases de données, sont ceux qui souffrent le plus de ces solutions. normal latence sur la ligne. Si le RTT est élevé, ces charges de travail en souffriront beaucoup, alors que les charges de travail en flux large en souffriront beaucoup moins.
0 votes
Bien entendu, je ne vous ferai pas l'injure de vous demander si vous initiez la connexion en utilisant une adresse IP et non un nom qui doit être résolu via le DNS - et cela ne serait pas dû à la latence du TCP...
1 votes
@ring0 - C'est certainement une belle façon de "ne pas insulter" quelqu'un.