Малинки, малинки, такие вечеринки…

Тот самый домашний сервер, о котором я уже писал, делает у меня массу полезных вещей: он и файлопомойка для жены (ей вечно не хватает места на макбуках), и 24/7 узел для «роя» Syncthing, и все автоматические бэкапы на нём, и торренты (не, не пиратские, по большей части open-source-дистрибутивы всякие), и факс (да-да, в 2020 году у меня есть факс-модем и телефонная линия; бывает надо по работе), и git-сервер для всяких непубличных вещей, и чего там ещё только нет. И ещё DLNA-сервер, чтобы на большом телевизоре всяческие home video смотреть.

Вот как раз с DLNA-сервером был затык: после миграции на «малинку» он скорее сломался, чем нет. Небольшие файлы отдавал нормально, а на более-менее крупных, с приличным битрейтом, подвисал намертво. Собственно, это — единственное, что отказалось работать на Raspberry Pi после «переезда», и я тогда ещё попытался разобраться, в чём беда, но с нахрапу не смог.

Устроено-то всё просто: физически всё лежит на RAID в коробке с винчестерами, подключенной по USB, и раздаётся через minidlna — казалось бы, чему тут ломаться? Но, понятное дело, тонких мест хватает (я больше на этот самый RAID на USB 2.0 думал), а конструктивных мыслей — не очень, хотя ещё тогда в ответ на мою жалобу любимый собутыльник мудро изрёк: «Где-то тебе, дружище, буфера не хватает…»

И тут сегодня мне понадобилось скачать оттуда залитое вчера очередное трёхгиговое home video. Запускаю scp (которым вчера успешно его залил), и… через пару сотен мегабайт передача встаёт колом! Пробую ещё раз, другой, третий — да, есть проблема: то после 10 мегабайт, то на второй сотне, но рано или поздно всё «встаёт», больше четырёх сотен мегабайт не перегнать. Светодиод «ага!» в мозгу начинает интенсивно подмигивать…

Тот же Syncthing весело гоняет туда-сюда многогигабайтные файлы безо всяких вопросов, да и с торрентами проблем нет — но там-то всё передаётся небольшими кусками, а тут — сплошной поток. Как в DLNA, да. Причём «на вход» оно же залетело вчера без проблем, а «на выход» — затык. В смысле, запись этого файла прошла нормально, а читаться и выдаваться в сеть он не хочет… Чтение с винчестера быстрее записи… А не сетевая ли проблема-то?

Копирую файл с RAID на системную MicroSD, пробую выкачать — та же симптоматика. Не в RAID дело! А дело, видать, в том, что такое количество данных с такой скоростью сетевой интерфейс выдать в сеть отказывается. «Где-то тебе, дружище, буфера не хватает…» А какой, кстати, у нас MTU? А, ну да, логично, 1500 — линуксовое умолчание, никогда и ни у кого с этим проблем не было…

1
sudo ip link set dev eth0 mtu 1492

И-и-и… Работает! scp преспокойно скачивает эти несчастные три гигабайта. Телевизор плавно и без затыков показывает по DLNA файл в 4K HDR.

Восемь байт! Всего восемь лишних байт в MTU…

«Proper LAN on 3B+», — говорили они! «Даже в Jumbo frames умеет», — говорили они…