Это только ваш маршрутизатор делает LRO (или, может быть, GRO).
Это не TSO / GSO, потому что вы видите его только в пакетах, полученных вашим маршрутизатором, а не в тех, которые он передает.
У меня есть маршрутизатор Wi-Fi потребительского уровня, на котором размещена локальная сеть. Маршрутизатор подключен к Интернету через сеть кампуса (т. Е. Кабель Ethernet соединяет порт WAN с разъемом Ethernet кампуса). Я использую tcpdump
интерфейсы WLAN и WAN маршрутизатора для захвата трафика, генерируемого устройствами, подключенными к маршрутизатору.
Меня озадачивает то, что я вижу кадры, которые значительно длиннее, чем предел, определенный MTU, плюс размер заголовка уровня 2. Сначала я подумал, что это должно быть объяснено поддержкой кампусной сетью гигантских кадров Ethernet, но они (как правило) ограничены MTU 9 000 байт, и я вижу некоторые кадры длиной почти 13 000 байт.
Затем я подумал, что, поскольку устройства подключены по Wi-Fi, они не ограничены MTU Ethernet, а скорее MTU 802.11, но этот размер составляет около 2304 байта, поэтому кадр 13 КБ все еще слишком велик. Примечание: кадры отображаются в Wireshark как кадры Ethernet, но это, по-видимому, объясняется тем, что кадры 802.11 преобразуются в «поддельные» кадры Ethernet до их доставки в сетевой стек ОС, как описано здесь :
Адаптеры 802.11 часто преобразуют пакеты данных 802.11 в поддельные пакеты Ethernet перед их передачей на хост, и, даже если они этого не делают, драйверы для адаптеров часто делают это перед подачей пакетов в сетевой стек операционной системы и механизм захвата пакетов.
Некоторые интересные наблюдения, которые могут помочь вам пролить свет на это:
Я предполагаю, что такое поведение может быть связано с TSO / GSO на основе этого ответа . Тем не менее, он говорит, что нужно не увидеть эти большие кадры, если один выполняет захват на сетевом устройстве:
[...] вы могли бы видеть, что TCP отправляет большие сегменты, чем MTU. Однако пакеты на проводе будут иметь размер только MTU. Вы можете убедиться в этом, захватив сетевое устройство (коммутатор) и т. Д.
Я действительно выполняю захват на сетевом устройстве (маршрутизаторе), но все еще вижу большие кадры. Тем не менее, маршрутизатор работает с LEDE / OpenWrt, что, по-моему, делает его «усовершенствованным» сетевым устройством в большей степени, чем реальный хост, чем сетевое устройство ...?
Я прилагаю пример кадра, который превышает MTU. Обратите внимание, что этот кадр был захвачен на интерфейсе WAN маршрутизатора ( eth0
). Это просто результат TSO / GSO, или происходит что-то еще, о чем я не знаю? Кроме того, TSO / GSO работает в обоих направлениях или это относится только к исходящим пакетам? Если последнее имеет место, то TSO / GSO не может быть объяснением, так как пример пакета является входящим с точки зрения маршрутизатора.
Обновление: отключение TSO / GSO на интерфейсах WAN и WLAN маршрутизатора ничего не изменило; большие кадры все еще присутствуют при повторном запуске эксперимента.
Это только ваш маршрутизатор делает LRO (или, может быть, GRO).
Это не TSO / GSO, потому что вы видите его только в пакетах, полученных вашим маршрутизатором, а не в тех, которые он передает.