Dalam tes throughput WLAN iperf TCP, multiple parallel stream akan memberi saya throughput lebih tinggi dari 1 stream. Saya mencoba meningkatkan ukuran jendela TCP, tetapi saya masih tidak dapat mencapai throughput maks hanya dengan 1 stream. Apakah ada hal lain dalam lapisan TCP yang mencegah kapasitas tautan penuh agar tidak digunakan?
12
Jawaban:
Dalam pengalaman saya, jika Anda melihat hasil yang sangat berbeda antara 1 aliran TCP dan beberapa aliran TCP masalahnya biasanya paket loss; jadi "sesuatu yang lain" di lapisan TCP adalah pengiriman ulang (karena paket-lapisan yang lebih rendah).
Sebuah contoh yang saya buat untuk menggambarkan bagaimana packet loss memengaruhi throughput aliran tunggal ...
Ini adalah tabel yang merangkum hasil tes dari tes 60 detik
iperf
antara klien dan server ... Anda mungkin melihat sedikit variasi dalam hasil iperf dari jitter RTT (yaitu standar deviasi RTT yang lebih tinggi); Namun, perbedaan paling signifikan datang ketika saya mensimulasikan kehilangan 2% meninggalkan NIC kabel klien. 172.16.1.56 dan 172.16.1.80 adalah laptop yang sama (menjalankan Ubuntu). Server adalah 172.16.1.5, menjalankan Debian. Saya menggunakan netem pada NIC kabel klien untuk mensimulasikan paket loss ...EDIT untuk tanggapan komentar :
Sebagian besar implementasi TCP mengurangi jendela kemacetan ketika paket hilang terdeteksi. Karena kami menggunakan netem untuk memaksa kehilangan paket 2% dari klien ke server, beberapa data klien akan dibatalkan. Efek bersih dari netem dalam contoh ini adalah laju transmisi rata-rata aliran tunggal 730Mbps. Menambahkan beberapa aliran berarti bahwa masing-masing aliran TCP dapat bekerja bersama untuk menjenuhkan tautan.
Iya
Saya tidak dapat menjawabnya tanpa eksperimen lebih lanjut, tetapi untuk tautan 1GE, saya tidak pernah memiliki masalah menjenuhkan tautan dengan 5 aliran paralel. Untuk memberi Anda gambaran tentang bagaimana scalable TCP, server linux dapat menangani lebih dari 1500 soket TCP bersamaan dalam kondisi yang tepat. Ini adalah diskusi SO lainnya yang relevan dengan penskalaan soket TCP bersamaan, tetapi menurut pendapat saya apa pun di atas 20 soket paralel akan berlebihan jika Anda hanya mencoba menjenuhkan tautan.
Saya tidak menggunakan
iperf -w
, jadi saya pikir ada kesalahpahaman. Karena Anda memiliki begitu banyak pertanyaan tentang case wifi, saya menyertakan grafik wireshark dari throughput TCP untuk wifi single case stream TCP.Data Uji
Saya juga menyertakan data uji mentah jika Anda ingin melihat bagaimana saya mengukur hal-hal ini ...
802.11g, 1 Aliran TCP
802.11g, 5 Streaming TCP
1000BaseT, 1 Stream, kerugian 0,0%
1000BaseT, 5 Streaming, kerugian 0,0%
1000BaseT, 1 Streaming, kerugian 2,0%
1000BaseT, 5 Streaming, kerugian 2,0%
Hapus simulasi packet loss
sumber
Inilah perhitungan untuk throughput maksimum dari satu aliran tcp.
Jadi, Anda memiliki hambatan dan latensi memainkan peran besar.
sumber
Mungkin karena beberapa proses vs satu proses. dengan iperf 2.0.9 kita dapat menguji ini melalui -P 2 pada klien. Ini akan memotong dua utas alih-alih satu. Sebagian besar CPU modern memiliki banyak inti sehingga menggunakan beberapa utas akan dapat memanfaatkannya.
sumber