TCP mulai lambat dan kontrol kemacetan, dan bagaimana memodifikasinya


2

Saya mencoba untuk mengubah perilaku protokol mulai lambat tcp pada kotak CentOS5 (uname -r => 2.6.18-238.12.1.el5). Saya telah membaca bahwa perintah berikut akan mengubah icwnd saya menjadi 8:

ip route change default via 1.2.3.4 dev eth1 initcwnd 8
echo "4094 $((8*16384)) 4194304" > /proc/sys/net/ipv4/tcp_wmem

(Catatan: Bagian tcp_wmem lebih atau kurang menebak pada bagian saya, saya pikir angka pastinya tidak terlalu penting asalkan cukup besar)

Namun, itu sendiri sepertinya tidak berpengaruh. Alih-alih awalnya mengirim 8 segmen, ia masih hanya mengirim 3. Setelah membaca lebih lanjut saya menemukan bahwa tcp slow start bekerja secara paralel dengan kontrol kemacetan, sehingga jika ssthresh <cwnd, protokol kontrol kemacetan digunakan, jika tidak, slow start digunakan (setidaknya , ini pemahaman saya). Saya melakukan yang berikut untuk mencari tahu apa ssthresh default saya diatur ke:

[root@host ~]# cat /proc/sys/net/ipv4/tcp_congestion_control 
bic
[root@host ~]# cat /sys/module/tcp_bic/parameters/initial_ssthresh 
0

Melihat bahwa ssthresh adalah 0, saya ingin meningkatkannya sehingga akan lebih besar dari icwnd, yang pada gilirannya akan menyebabkan kernel menggunakan start lambat, yang akan menggunakan nilai default 8 windows. Jadi saya melakukan yang berikut:

[root@host ~]# echo 13140 > /sys/module/tcp_bic/parameters/initial_ssthresh

Namun masih belum ada perubahan sama sekali dalam perilaku. Adakah yang tahu apa yang saya lakukan salah?

(Saya memulai kembali proses apache yang saya gunakan untuk menguji ini setelah setiap perubahan). EDIT: Saya juga melakukan cache ip rute flush di antara perubahan juga

Jawaban:


2

Saya membaca sedikit tentang masalah ini dan saya percaya bahwa kernel versi 2.6.33 diperlukan untuk mengatur custom cwnd. Saya menemukan itu disebutkan dalam posting blog ini: http://www.igvita.com/2011/10/20/faster-web-vs-tcp-slow-start/

Jika TCP slow start adalah, well, slow, maka tidak bisakah kita membuatnya lebih cepat? Ternyata, hingga baru-baru ini Linux TCP stack itu sendiri dikodekan untuk memulai dengan jendela kemacetan (cwnd) hanya 3 atau 4 paket, yang berjumlah sekitar 4kb (~ 1360 byte per paket).

Ada juga beberapa diskusi tentang itu yang ditambahkan ke kernel di sini: http://kerneltrap.org/mailarchive/linux-netdev/2009/10/26/6258693

Saya tidak dapat menemukan informasi yang baik tentang pengaturan ini, tetapi inilah yang saya temui hari ini ...


0

Anda harus meningkatkan ke centos6.2.

Menurut rhel doc:

TCP default congestion window default

Di Red Hat Enterprise Linux 6.2, standar jendela kongesti awal TCP sekarang diatur ke 10, menurut RFC 5681. Selain itu, kode jendela awal yang umum untuk TCP dan CCID-2 telah dikonsolidasikan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.