Я разрабатываю некоторые сетевые приложения на Linux (сервер) и Windows 7 (клиент).

Тем не менее, мне интересно, если виртуальная коробка виновата в медленной сети.

Я подумал, что попробую использовать iperf, чтобы увидеть, было ли в моем приложении проблема, и увидеть реальную производительность.

C:\Users\XEN\Downloads>iperf.exe -c 192.168.2.104 -u -p 3000 -w 16000
------------------------------------------------------------
Client connecting to 192.168.2.104, UDP port 3000
Sending 1470 byte datagrams
UDP buffer size: 15.6 KByte
------------------------------------------------------------
[148] local 192.168.2.105 port 58801 connected with 192.168.2.104 port 3000
[ ID] Interval       Transfer     Bandwidth
[148]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec
[148] Server Report:
[148]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec  3.086 ms    0/  892 (0%)
[148] Sent 892 datagrams

Сторона Linux:

matt@blaze:~/dev$ iperf -s -p 3000 -u
------------------------------------------------------------
Server listening on UDP port 3000
Receiving 1470 byte datagrams
UDP buffer size:   122 KByte (default)
------------------------------------------------------------
[  3] local 192.168.2.104 port 3000 connected with 192.168.2.105 port 58800
[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
[  3]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec  3.625 ms    0/  894 (0%)
[  4] local 192.168.2.104 port 3000 connected with 192.168.2.105 port 58801
[  4]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec  3.086 ms    0/  892 (0%)

Это кажется ужасно медленным! я правильно использую iperf? Это проблема с virtualbox?

ОБНОВЛЕНИЕ: Кажется, что TCP тарифы довольно лучше. Я получаю 460 Мбит / с. ОБНОВЛЕНИЕ2: 1,05 Мбит / с через интерфейс обратной связи Linux с UDP! виноват ли ядро Linux или iperf просто сломан для UDP?

Есть идеи?

3 ответа3

0

Чтобы ответить на мой собственный вопрос.

Попробовал это на стороне клиента.

iperf.exe -c 192.168.2.104 -b 1g

Вот результаты

C:\Users\XEN\Downloads>iperf.exe -c 192.168.2.104 -b 400m
WARNING: option -b implies udp testing
------------------------------------------------------------
Client connecting to 192.168.2.104, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 8.00 KByte (default)
------------------------------------------------------------
[148] local 192.168.2.105 port 50973 connected with 192.168.2.104 port 5001
[ ID] Interval       Transfer     Bandwidth
[148]  0.0- 4.5 sec  52.9 MBytes  99.6 Mbits/sec
[148] Server Report:
[148]  0.0- 4.4 sec  52.9 MBytes  99.8 Mbits/sec  0.864 ms    0/37719 (0%)
[148] Sent 37719 datagrams

Кажется, что либо Windows, либо Virtualbox имеет некоторые ограничения UDP. Я не могу заставить его бежать за 100 Мбит. На Linux я фактически превысил 1 Гбит с той же командой. Я заметил, что размер буфера Windows составляет всего 8 КБ. На Linux это 122Kb. Поэтому я постараюсь увеличить его.

РЕДАКТИРОВАТЬ: В общем, да, это немного медленно. Я сравню с VMWare или попробую вместо этого сеть NAT.

0

Я мог проследить плохую пропускную способность (даже от хоста VirtualBox до его собственного гостя) к моему коммутатору. Попробуйте подключиться к другому коммутатору, если можете, или даже отключите его для тестирования.

И попробуйте настройку virtio NIC, если можете. virtio уменьшил количество пропущенных пакетов udp с «частых» до «нулевых».

Обновление Судя по разделу « Update OP» (петля медленная), мои предложения могут показаться не связанными. Я оставлю их здесь для блага других, которые могут прийти сюда с симптомами, которые соответствуют моему рецепту.

0

По старому вопросу, но читайте справочную информацию. Если вы хотите, чтобы UDP отправлял быстрее, используйте опцию -b:

-b, --bandwidth # [KM] для UDP, пропускная способность для отправки в битах / с (по умолчанию 1 Мбит / с, подразумевает -u)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .