J'ai expérimenté les paramètres TCP sous Linux (avec un noyau 3.5). Concernant essentiellement cette connexion:
Serveur: liaison montante Gigabit dans le centre de données, la bande passante réelle (en raison du partage des liaisons montantes) est d'environ 70 Mo / s lorsqu'elle est testée à partir d'un autre centre de données.
Client: LAN local Gigabit connecté à une fibre de 200 Mbits. La récupération d'un fichier de test atteint en réalité 20 Mo / s.
Latence: environ 50 ms aller-retour.
Le serveur distant est utilisé comme serveur de fichiers pour des fichiers de 10 à 100 Mo. J'ai remarqué qu'en utilisant un initcwnd de 10, le temps de transfert de ces fichiers est fortement affecté par le démarrage lent de TCP, prenant 3,5 secondes pour charger 10 Mo (vitesse maximale atteinte: 3,3 Mo / s) car il démarre lentement puis accélère comme il le souhaite est terminé avant que la vitesse maximale ne soit atteinte. Mon objectif est de régler les temps de chargement minimum de ces fichiers (donc pas le débit brut le plus élevé ni la latence aller-retour la plus basse, je suis prêt à sacrifier les deux si cela diminue le temps réel nécessaire pour charger un fichier)
J'ai donc essayé un calcul simple pour déterminer quel initcwnd idéal devrait être, en ignorant toutes les autres connexions et l'impact possible sur les autres. Le produit de retard de bande passante est de 200 Mbit / s * 50 ms = 10 Mbit ou 1,310,720 octets. Étant donné que l'initcwnd est défini en unités de MSS et en supposant que le MSS est d'environ 1400 octets, cela nécessitera un paramètre de: 1.310.720 / 1400 = 936
Cette valeur est très loin de la valeur par défaut (10 * MSS sous Linux, 64 Ko sous Windows), donc ce n'est pas une bonne idée de la définir comme ceci. Quels sont les inconvénients attendus d'une telle configuration? Par exemple:
- Cela affectera-t-il les autres utilisateurs du même réseau?
- Pourrait-il créer une congestion inacceptable pour d'autres connexions?
- Flood router-buffers quelque part sur le chemin?
- Augmenter l'impact de petites quantités de perte de paquets?
70 MB/s
et non mégabits? Je cherche juste des éclaircissements.