2014-02-13 3 views
1

Когда я использую модуль tcp_probe для сбора cwnd для TCP-соединения, cwnd перестанет увеличиваться примерно на 1467 (пакеты). Может ли кто-нибудь объяснить причину этого? или что ограничивает cwnd на земле?что будет ограничивать рост cwnd (окно перегрузки)?

TCP-соединение - это загрузка 2G-файла из host1 (192.168.0.2) в host2 (192.168.0.25), вот мои команды для этого соединения.

@ host1: python -m SimpleHTTPServer

@ host2: wget http://192.168.0.2:8000/test_2G

Вот команда для использования tcp_probe собрать CWnd:

@ host1: modprobe tcp_probe port=800 full=1

Вот несколько другая информация вы может быть необходимо знать:

@ host1:

#ifconfig eth4 
eth4  Link encap:Ethernet HWaddr 90:E2:BA:14:BE:AC 
     inet addr:192.168.0.2 Bcast:192.255.255.255 Mask:255.0.0.0 
     inet6 addr: fe80::92e2:baff:fe14:beac/64 Scope:Link 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:15263651 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:31145880 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:5000 
     RX bytes:1008133254 (961.4 MiB) TX bytes:47154490579 (43.9 GiB) 
     Memory:fb780000-fb800000 
#cat /proc/sys/net/ipv4/tcp_mem 
770373 1027165 1540746 
#cat /proc/sys/net/core/rmem_default 
212992 
#cat /proc/sys/net/core/rmem_max 
12582912 
#cat /proc/sys/net/core/wmem_default 
425984 
#cat /proc/sys/net/core/wmem_max 
12582912 
#cat /proc/sys/net/ipv4/tcp_wmem 
10240 87380 12582912 
#cat /proc/sys/net/ipv4/tcp_rmem 
10240 87380 12582912 

ответ

0

После того как я выкопал код ядра, я узнаю, что CWND не будет вызывать функцию увеличения, если tcp ограничено приложением, а не пропускной способностью сети.

Все волшебство вызвано функцией tcp_is_cwnd_limited в файле tcp_cong.c. Каждый алгоритм перегрузки будет возвращаться напрямую, если tcp НЕ ограничен cwnd. :)

 Смежные вопросы

  • Нет связанных вопросов^_^