[image]

Исследование зависимости скорости сетевого интерфейса от MTU и поиск наилучшего значения этого параметра.

Для Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
 
+
-
edit
 

HolyBoy

старожил

Есть две полностью идентичные машинки, на которых объединены в один интерфейс пары сабжевых сетевых карт.

На двух хостах идентичные параметры сетевого стека:
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
net.core.netdev_max_backlog = 15000
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_congestion_control = cubic
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1



Поскольку RTL8111/8168B не поддерживает MTU свыше 7200, то это значение и было указано для всех участвующих в тесте интерфейсов:
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
bond0  7200 0  16388743      0      0 0      17106828      0     92      0 BMmRU
eth1   7200 0   8194372      0      0 0       8553414      0     46      0 BMsRU
eth2   7200 0   8194371      0      0 0       8553414      0     46      0 BMsRU


Я не стал изобретать что-то своё и использовал для тестирования TCP-соединений iperf в режиме TCP-сервера, т.к. основной трафик исследуемого канала будет TCP, а не UDP.

Соответственно, на одном хосте включил сервер с буфером в 25 Кб, максимально широким окном и размером сегмента : iperf -s -m -M 100000 -w 1M -l 24K

На другом — запустил скрипт примерно такого вида:
for y in $(seq 1 1); 
do
  for i in $(seq $1 $2 $3); 
  do
    DIMENS=$(iperf -c $4 -w 1M -l 24K -M $i -f K |  grep '3\]' | grep -v 'connected' | sed 's/^.\+ sec//' | awk '{print $3}');
    echo "$i $DIMENS" >> "test-mtu-Kbytes-$4-iteration-$y" ; 
  done;
done


который в цикле перебирает размер сегмента и соединяется с сервером на первом хосте.

// внешний цикл для того, чтобы, создать несколько файлов с отчётом, в данном случае мне понадобился один прогон, чтобы определить, куда рыть

Как видно на картинке (а мне и в файле), для MTU между 2300 б и 2400 б наблюдается катастрофическое падение скорости: с 214478 Кб/с до 150 Кб/с в среднем.

На этом я не закончил, далее, если вскроются интересные особенности, напишу.
Прикреплённые файлы:
mtu.png (скачать) [640x480, 3.2 кБ]
 
 
   
+
-
edit
 

HolyBoy

старожил

Ещё разок, с уточнёнными границами:
Прикреплённые файлы:
mtu.png (скачать) [640x480, 3.7 кБ]
 
 
   
+
-
edit
 

Mishka

модератор
★★★
HolyBoy> Есть две полностью идентичные машинки, на которых объединены в один интерфейс пары сабжевых сетевых карт.

Ты напрямую соединил или через свитч, поддерживающий jumbo frames? А то ты можешь резко насытить свитч. У многих неупраляемых очередь буферов большого размера сильно ограничена.
   3.6.163.6.16
+
-
edit
 

HolyBoy

старожил

Mishka> Ты напрямую соединил или через свитч, поддерживающий jumbo frames?

Напрямую. Подсеть, которая обслуживается bond0 — только для синхронизации между двумя хостами. Когда и если будет ставиться свитч, то будет подбираться соответственно.
   
+
-
edit
 

HolyBoy

старожил

Кстати, почему такое падение происходит? Зависит от железки и от драйвера?
   
+
-
edit
 

Balancer

администратор
★★★★★
На ноуте у меня тормозной Wi-Fi. Одно время играл с параметрами, пересобирал драйвера (Linux стоит единственной ОС) и т.п., стало более-менее сносно. Хотя всё равно фигово. Народ жалуется, что HP поставил в эту модель совсем уже отстойный чип, да ещё с одной антенной вместо двух. Пробовал покупать китайские Wi-Fi USB-донглы, но проку не было. Так и махнул рукой. Один фиг, мне только SSH и сёрфинг нужны.

Вчера решил на нём посмотреть киношку с домашнего сервера и удивился, что HD 720p не тянет. Промерил скорость интерфейса — получил 200-400 кбайт/с. Полез разбираться. Достал опять свою USB-россыпь, начал экспериментировать. Удавалось выжать до 600 кбайт/с. Но не более того.

Пока меня какой-то чёрт не дёрнул посмотреть в сторону MTU.

Дефолт 1500. При 1432 скорость Wi-Fi 4-6Мбайт/с :D

Блин. Десятикратный прирост из-за одного уменьшения MTU :eek:
   55
+
-
edit
 

ZaKos

аксакал
★☆
☠☠☠☠
Balancer> Вчера решил на нём посмотреть киношку с домашнего сервера и удивился, что HD 720p не тянет. Промерил скорость интерфейса — получил 200-400 кбайт/с. Полез разбираться. Достал опять свою USB-россыпь, начал экспериментировать. Удавалось выжать до 600 кбайт/с. Но не более того.
Balancer> Пока меня какой-то чёрт не дёрнул посмотреть в сторону MTU.
Balancer> Дефолт 1500. При 1432 скорость Wi-Fi 4-6Мбайт/с :D
Balancer> Блин. Десятикратный прирост из-за одного уменьшения MTU :eek:

Народу, наверное, много сидит на одних и тех же каналах?
   66.0.3359.18166.0.3359.181
+
-
edit
 

Balancer

администратор
★★★★★
ZaKos> Народу, наверное, много сидит на одних и тех же каналах?

Wi-Fi по отношению к соседям? Я обычно вручную выбираю свободные каналы :)

Дома, клиентов точки доступа? Много, но трафик во время тестов небольшой был.

Скорее всего это как-то связано с MTU=1460, что по l2tp ставится у Билайна. Хотя у бриджа, через который идёт трафик с домашнего сервера через роутер на ноут MTU=1500, но х.з., как оно влияет друг на друга.

Прикол в том, что, судя по всему, трафик из внешнего Интернета был достаточно шустрый. Если бы там было 300кбайт/с, я бы давно засёк. Тормозила именно домашняя сеть, которой я с ноута почти не пользовался.
   55

sam7

администратор
★★★★★
Balancer> Дефолт 1500. При 1432 скорость Wi-Fi 4-6Мбайт/с :D

Зацепило, решил на своём телефоне попробовать, пошёл на speedtest.net, потребовало что-то установить.
Установил, попробовал - 11.77 mbps
Но не стабильно, попробовал ещё - 9.66.
А вверх только 3-4 даёт, почему-то.
   11.011.0

в начало страницы | новое
 
Поиск
Настройки






Статистика
Рейтинг@Mail.ru
АвиаТОП
 
Яндекс.Метрика
website counter
 
free counters