Укороченная версия

Укороченная версия

Укороченная версия

Моя домашняя сеть — это чистый гигабит с устройствами, которые поддерживают jumbo-фреймы размером не менее ~9000 байт. Увеличение параметра MTU jumbo-фрейма на Synology до 6000 (байт) увеличивает производительность (810 Мбит/с при записи и 945 Мбит/с при чтении). Установка значения 7000 уничтожает только производительность чтения (которая снижается до 4 Мбит/с); производительность записи остается высокой.

Это неожиданно, поскольку большинство проблем с большими кадрами не имеют направленности, связанной с ними, и обычно имеют тип «все или ничего» (пакеты отбрасываются на коммутаторе независимо от того, откуда они пришли). Кажется, нетлюбойIP-фрагментация вообще происходит, но уровень TCP действительно недоволен. Что может быть причиной этого асимметричного/нестабильного поведения и как мне исправить это, чтобы поддерживать полный MTU в 9000 байт, который должно поддерживать все мое оборудование?


Длинная версия

Это мои отредактированные заметки, сделанные в процессе попыток разобраться в этом вопросе.

Клиент

Контроллер семейства Realtek PCIe GBE RTL8167
Jumbo Frame: 9 КБ MTU

$ netsh interface ipv4 show subinterfaces
   MTU  MediaSenseState   Bytes In  Bytes Out  Interface
------  ---------------  ---------  ---------  -------------
  9198                1   32501506   11275394  Local Area Connection

(похоже, 9198 не включает 14-байтовый заголовок Ethernet)

$ ping -l 1500 -f 192.168.1.84

(наблюдается с Wireshark, запущенным на клиенте; все размеры являются размерами байтов провода)
[9213, ∞] не отправлено хостом (потребуется фрагментация)
[9019, 9212] отправлено, но нет ответа
[9015, 9018] фрагментированный ответ IP
[42, 9014] нефрагментированный IP
[0, 41] ? (невозможно сгенерировать, так как заголовки eth+IP+ICMP = 14+20+8 = 42 байта)

Маршрутизатор (часть коммутатора)

Asus RT-AC68U — прошивка 3.0.0.4.378_4585
Включить Jumbo Frame: «Включить»
Не могу понять, какой размер jumbo frame он фактически поддерживает, похоже, не менее 9000

Он фрагментирует запросы ping от Клиента ровно по 1514 байтам (но пингование маршрутизатора может привести к срабатыванию его режима маршрутизатора WAN, а не режима коммутатора LAN?)

Неуправляемый коммутатор

TP-LINK TL-SG1008D
Jumbo Frames (спецификации): 9 КБ (на их веб-сайте указано 15 КБ, но похоже, что это другое устройство)

Сервер

Synology DS1815+ -- DSM 5.2-5565 Обновление 1
Jumbo Frame: 9000

Пакеты чтения файлов от Synology к клиенту
Размер: большинство из них 9014 байт (в обоих направлениях)
Флаги IP: не фрагментировать
Wireshark обнаружил: TCP Spurious Retransmission, TCP Previous segment not capture, TCP Out-Of-Order, TCP Fast Retransmission и обычные (9014 байт) пакеты
Длина ответа при чтении пакетов протокола SMB2 over-NetBIOS: 65 536 (~8 сегментов TCP)

$ ifconfig
bond0     Link encap:Ethernet  HWaddr --:FF
          inet addr:192.168.1.84  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addrs: --/64 Scope:Link, --/64 Scope:Global, --/64 Scope:Global
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:9000  Metric:1
          RX packets:lots errors:85 dropped:0 overruns:0 frame:85
          TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:237 GiB  TX bytes:117 GiB

eth2      Link encap:Ethernet  HWaddr --:00
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:9000  Metric:1
          RX packets:lots errors:19 dropped:0 overruns:0 frame:19
          TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:236 GiB  TX bytes:83 GiB

eth3      Link encap:Ethernet  HWaddr --FF
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:9000  Metric:1
          RX packets:lots errors:66 dropped:0 overruns:0 frame:66
          TX packets:lots errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1 GiB  TX bytes:33 GiB

eth2 и eth3 связаны с помощью адаптивной балансировки нагрузки (без поддержки коммутатора)

$ ping -c 5 -s 1500 192.168.1.82

(наблюдается с Wireshark, запущенным на Client; все размеры являются размерами байтов провода)
[9019, ∞] запрос отправлен, ответ отправлен, ответ не получен
[9015, 9018] фрагментированный запрос IP (вероятно, фрагментирован Synology, у busybox ping нет опции без фрагментации, поэтому трудно сказать)
[60, 9014] нефрагментированный IP
[0, 59] ? (невозможно сгенерировать, поскольку busybox ping помещает минимум 18 байт плюс 42 байта заголовков)

Разные данные

  • Изменение MTU клиента до 8 КБ не помогло
  • Скорость чтения сервера резко падает при изменении MTU сервера с 6000 (отлично, 945 Мбит/с) до 7000 (ужасно, 4 Мбит/с)
  • Скорость записи сервера практически не изменяется при любых настройках MTU сервера (всегда от 700 до 825 Мбит/с)
  • Synology имеет связанную сеть (2 из 4 портов)
  • Все кабели Cat6 или Cat5e.

решение1

Обновите прошивку

По моему опыту, Synology исправляет множество проблем в каждой версии прошивки, а та, которую вы используете, почти четырехлетней давности. Я не читал заметки о выпуске, но, похоже, есть много возможностей для исправления ошибки Jumbo-фрейма с тех пор.

Тест с прямым подключением

Подключите тестовую машину напрямую к Synology (назначьте статические IP-адреса в той же подсети) с помощью новых соединительных кабелей и повторите тесты. Это устранит проблемы с кабелями и коммутаторами, а также любые другие проблемы с оборудованием и конфигурацией. Если проблема останется, запустите тесты на другом компьютере. Если она все еще останется, то это, безусловно, NAS.

Если проблема исчезнет во время теста прямого подключения, попробуйте сначала заменить коммутатор, а затем кабели. Вы не показали соединения, поэтому я предполагаю, что это просто TPLINK между тестовой машиной и NAS.

Связанный контент