Кратко
- История Тобиаса Фибига на RIPE 93 сначала напоминала ограничение скорости со стороны сети доступа. Разрешение ICMP на серверном межсетевом экране не помогло; сравнение двух виртуальных машин показало разные модели сетевых карт.
- TCP offload эмулируемой RTL8139 оставался привязан к MTU 1500 байт, хотя маршрут нашёл значение 1420. Более конкретный маршрут с MTU 1320 восстановил передачу.
Анализ
Виноватым казался провайдер. Пакетный захват указал глубже — на виртуальную сетевую карту, которая упрямо считала 1500 байт допустимым размером для любого пути.
На закрывающей пленарной сессии RIPE 93 Тобиас Фибиг рассказал о медленной передаче большого файла. Клиенты за путём с MTU меньше 1500 получали данные с черепашьей скоростью, тогда как с соседней виртуальной машины сервис работал. Подозрение на сеть доступа или фильтрацию ICMP было логичным. Команда разрешила на серверном firewall сообщение «packet too big». Скорость не изменилась: правило исправили, но не саму причину.
Проверка маршрута на проблемном клиенте уже показывала MTU пути 1420 байт. Хост знал, что маршрут уже локального интерфейса с MTU 1500. Но TCP продолжал повторно передавать пакеты. Фибиг добавил более конкретный маршрут и зафиксировал MTU на 1320 — после этого передача заработала. 1420 — найденный размер пути; 1320 — сработавший обходной параметр. Это разные числа и разные роли.
Первая попытка повторить сбой тоже не сработала. Фибиг поднял другую виртуальную машину с тем же ПО и отправил тот же тестовый пакет — проблема не появилась. Сравнение виртуального оборудования обнаружило отличие: в неисправной машине была эмулируемая Realtek RTL8139, в тестовой — другой сетевой адаптер. Совпадение программного стека не воспроизвело сбой, потому что в тесте отсутствовал его настоящий участник.
След привёл в net/hw/8139.c QEMU: TCP offload использовал фиксированный MTU 1500 байт. Официальная задача QEMU № 1312 описывает тот же набор признаков: низкая скорость за каналами менее 1500 MTU, игнорирование PMTUD, повторы TCP и смягчение проблемы после снижения MTU гостевой ОС. В докладе Фибиг отнёс это предположение в коде к 2006 году и упомянул обсуждение с предложением исправления в 2016-м. Он также назвал отключение TCP offload обходом; в описанной системе заменили старую виртуальную карту на VirtIO и проблема исчезла.
Path MTU Discovery нужна, чтобы отправитель подстраивал размер данных под самое узкое звено. RFC 1191 описывает механизм для IPv4; RFC 2923 разбирает TCP-сбои, когда сообщения ICMP теряются или обрабатываются неверно. Поэтому firewall выглядел разумной первой целью. Когда разрешение ICMP не изменило результат, искать пришлось на границе гостевой системы и виртуального устройства.
Рабочая последовательность коротка: захватить реальные пакеты, сверить MTU маршрута, записать модель виртуальной NIC и состояние offload. В открытой записи нет точной версии QEMU и настроек offload проблемной машины; эти данные покажут, насколько широко повторяется именно эта комбинация.
Источники
Стенограмма закрывающей пленарной сессии RIPE 93; задача QEMU 1312; RFC 1191; RFC 2923; страница Тобиаса Фибига в TU Wien; страница сессии RIPE 93.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров





