У меня есть маршрутизатор 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 перед их передачей на хост, и, даже если они этого не делают, драйверы для адаптеров часто делают это перед подачей пакетов в сетевой стек операционной системы и механизм захвата пакетов.
Некоторые интересные наблюдения, которые могут помочь вам пролить свет на это:
- Для трассировки, захваченной на интерфейсе WLAN маршрутизатора, это только пакеты, исходящие от локального устройства и идущие к узлу Интернета, которые превышают MTU. Все входящие пакеты (Интернет-хост на локальное устройство) имеют длину 1514 или меньше.
- Для трассировки, захваченной на интерфейсе WAN маршрутизатора, только входящий трафик (Интернет-хост к маршрутизатору) превышает Ethernet MTU.
- Можно действительно "сопоставить" большой кадр (который превышает MTU), захваченный на одной стороне маршрутизатора, с несколькими кадрами, которые имеют размер MTU или меньше на другой стороне маршрутизатора, путем перекрестной ссылки на две трассы.
- Это весь трафик TLS (но это не должно иметь никакого значения, поскольку это ограничение уровня 2).
Я предполагаю, что такое поведение может быть связано с TSO/GSO на основе этого ответа. Тем не менее, он говорит , что не нужно видеть эти большие кадры , если один выполняет захват на сетевом устройстве:
[...] вы могли бы видеть, что TCP отправляет большие сегменты, чем MTU. Однако пакеты на проводе будут иметь размер только MTU. Вы можете убедиться в этом, захватив сетевое устройство (коммутатор) и т.д.
Я действительно выполняю захват на сетевом устройстве (маршрутизаторе), но все еще вижу большие кадры. Тем не менее, маршрутизатор работает с LEDE/OpenWrt, что, по-моему, делает его "усовершенствованным" сетевым устройством в большей степени, чем реальный хост, чем сетевое устройство ...?
Я прилагаю пример кадра, который превышает MTU. Обратите внимание, что этот кадр был захвачен на интерфейсе WAN маршрутизатора (eth0
). Это просто результат TSO/GSO, или происходит что-то еще, о чем я не знаю? Кроме того, TSO/GSO работает в обоих направлениях или это относится только к исходящим пакетам? Если последнее имеет место, то TSO/GSO не может быть объяснением, так как пример пакета является входящим с точки зрения маршрутизатора.
Обновление: отключение TSO/GSO на интерфейсах WAN и WLAN маршрутизатора ничего не изменило; большие кадры все еще присутствуют при повторном запуске эксперимента.