Saya telah bereksperimen dengan parameter TCP di Linux (dengan kernel 3.5). Pada dasarnya mengenai hubungan ini:
Server: Gigabit uplink di datacenter, bandwidth sebenarnya (karena berbagi uplink) sekitar 70 MB / s ketika diuji dari datacenter lain.
Klien: Gigabit lan lokal terhubung ke serat 200mbit. Mengambil file uji sebenarnya mencapai 20 MB / s.
Latensi: Sekitar 50 ms pulang pergi.
Server jarak jauh digunakan sebagai server file untuk file dalam kisaran 10 hingga 100mb. Saya perhatikan bahwa menggunakan initcwnd dari 10 waktu transfer untuk file-file ini sangat dipengaruhi oleh TCP slow-start, mengambil 3,5 detik untuk memuat 10mb (kecepatan tertinggi tercapai: 3,3 MB / s) karena mulai lambat dan kemudian landai tetapi selesai sebelum kecepatan maksimum tercapai. Tujuan saya adalah menyetel waktu buka minimum file-file itu (jadi bukan throughput mentah tertinggi atau latensi pulang pergi terendah, saya bersedia mengorbankan keduanya jika itu mengurangi waktu aktual yang diperlukan untuk memuat file)
Jadi saya mencoba perhitungan sederhana untuk menentukan apa yang seharusnya initcwnd ideal, mengabaikan koneksi lain dan kemungkinan dampak pada orang lain. Bandwidth-delay-product adalah 200 Mbit / s * 50ms = 10 Mbit atau 1.310.720 byte. Menimbang bahwa initcwnd diatur dalam unit MSS dan dengan asumsi MSS adalah sekitar 1400 byte ini akan memerlukan pengaturan: 1.310.720 / 1400 = 936
Nilai ini sangat jauh dari standar (10 * MSS di Linux, 64 kb di Windows), jadi rasanya tidak baik untuk mengaturnya seperti ini. Apa kerugian yang diharapkan dari mengonfigurasinya seperti ini? Misalnya:
- Apakah ini akan memengaruhi pengguna lain dari jaringan yang sama?
- Bisakah itu membuat kemacetan yang tidak dapat diterima untuk koneksi lain?
- Banjir router-buffer di suatu tempat di jalan?
- Meningkatkan dampak jumlah-paket yang kecil?
70 MB/s
dan bukan megabita ? Hanya mencari klarifikasi.