Я тестировал пропускную способность между двумя компьютерами, подключенными к одному и тому же маршрутизатору, один с локальной сетью 100 Мбит / с, другой с Wi-Fi 54 Мбит / с.
Вот что интересно:
nc
, Я получил 2,63 МБ / с при отправке из A в B (измерено с pv -r|nc ipB
)iperf
, Я получил 23 МБ / с что вполне нормально.Что могло быть не так с nc
?
ОС - это Ubuntu 11.04 для обоих.
Масштаб звучит примерно правильно для NetCat, не поддерживающего TCP Windowing. Если вы выполните tcpdump в интерфейсе во время работы двух тестов, я предполагаю, что вы увидите этот шаблон для NC:
И этот шаблон для IPerf:
Используя оконные сегменты TCP, вы можете получить гораздо более высокую пропускную способность, поскольку вам не нужно ждать подтверждения после каждого пакета, а только после каждого сегмента.
Это не netcat
. С участием iperf
я получил
[ 3] local 192.168.1.201 port 55610 connected with 192.168.1.200 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 394 MBytes 39.4 MBytes/sec
С участием nc -l -p 1852 > /dev/null
и cat /dev/zero | pv -r | nc 192.168.1.200 1852
я получил
[ 34MB/s]
(Колеблется от 30 до 60.)
Какие данные вы кормите netcat
?
То, что ваша беспроводная карта поддерживает соединения со скоростью 54 Мбит / с, не означает, что вы получите такую пропускную способность. В частности, похоже, что у вас есть 802.11g, который имеет Пятка ахилы. Пока ** каждое * беспроводное устройство, с которым он разговаривает, также грамм он пойдет быстро, но как только даже одно устройство будет б со скоростью, он должен использовать наименьший общий знаменатель, чтобы разговаривать со всеми устройствами.
Вы можете попробовать открыть терминал на машине с беспроводной связью и запустить iwconfig
. Ищите Битрейт = поле и посмотрите, с какой скоростью вы действительно подключены.
Остерегайтесь устройств iperf. Это распространенная ошибка: iperf часто отображается в Мбит / с вместо Мбайт / с.