Ho sperimentato i parametri TCP in Linux (con un kernel 3.5). Fondamentalmente riguardo a questa connessione:
Server: uplink Gigabit nel datacenter, la larghezza di banda effettiva (dovuta alla condivisione degli uplink) è di circa 70 MB / s quando viene testato da un altro datacenter.
Client: LAN locale Gigabit collegata a fibra a 200 mbit. Il recupero di un file di test raggiunge effettivamente 20 MB / s.
Latenza: circa 50ms andata e ritorno.
Il server remoto viene utilizzato come file server per i file nell'intervallo da 10 a 100 MB. Ho notato che usando un initcwnd di 10 il tempo di trasferimento per questi file è fortemente influenzato dall'avvio lento del TCP, impiegando 3,5 secondi per caricare 10 MB (velocità massima raggiunta: 3,3 MB / s) perché si avvia lentamente e poi accelera comunque è terminato prima che sia raggiunta la velocità massima. Il mio obiettivo è ottimizzare i tempi di caricamento minimi di quei file (quindi non la massima velocità raw o la più bassa latenza di andata e ritorno, sono disposto a sacrificare entrambi se ciò diminuisce il tempo effettivo necessario per caricare un file)
Quindi ho provato un semplice calcolo per determinare quale dovrebbe essere l'ideale initcwnd, ignorando qualsiasi altra connessione e possibile impatto sugli altri. Il prodotto con ritardo di larghezza di banda è di 200 Mbit / s * 50ms = 10 Mbit o 1.310.720 byte. Considerando che initcwnd è impostato in unità di MSS e supponendo che l'MSS sia di circa 1400 byte, ciò richiederà un'impostazione di: 1.310.720 / 1400 = 936
Questo valore è molto lontano dal valore predefinito (10 * MSS in Linux, 64kb in Windows), quindi non è una buona idea impostarlo in questo modo. Quali sono gli aspetti negativi attesi della configurazione in questo modo? Per esempio:
- Interesserà gli altri utenti della stessa rete?
- Potrebbe creare una congestione inaccettabile per altre connessioni?
- Inondare i buffer del router da qualche parte sul percorso?
- Aumentare l'impatto di piccole quantità di perdita di pacchetti?
70 MB/s
e non megabit? Sto solo cercando chiarimenti.