Пакеты больше настроенного MTU - PullRequest
0 голосов
/ 06 ноября 2018

Я сделал tcpdump и перехватил пакеты, настроенный MTU - 2140. Я анализирую файлы pcap, используя Wireshark.

В соответствии с настроенным MTU ожидаемый максимальный размер пакетов должен составлять 2154 (2140 байтов + 14 байтов заголовка Ethernet). Но я вижу пакеты размером больше 2154 (например, 9010 байт). При анализе я обнаружил, что эти пакеты генерируются на машине, где я создал tcpdump (скажем, A), и имеют место назначения на другую машину (скажем, B). Я ожидаю, что пакет будет фрагментирован перед отправкой на другой хост. В Интернете я нашел некоторые объяснения, в которых говорится, что tcpdump перехватывает пакеты до выхода из строя NIC, хотя это, кажется, правильное объяснение, но в моем случае это кажется противоречивым, потому что на машине A я получил пакеты размером больше 2154 от B. почему машина A отправляет и получает пакеты больше, чем настроенный MTU.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

То, что вы видите, скорее всего, является результатом разгрузки сборки сегмента TCP. Эта функция доступна на некоторых сетевых картах с соответствующими драйверами.

Идея состоит в том, что повторная сборка многих сегментов TCP выполняется в самой сетевой плате. Это оказывается довольно эффективным в снижении накладных расходов на стороне ЦП / ОС, поскольку сетевому драйверу нужно обрабатывать, возможно, только 1 «пакет» из 10, видя только один большой пакет, а не получать и собирать все 10. »1003 *

Подробнее об этом можно прочитать здесь .

0 голосов
/ 06 ноября 2018

Обновленный ответ

Если ваш пакет UDP

Это нормальное поведение. но вы мало что можете сделать, чтобы увидеть отдельные пакеты на конечных машинах. Пакет UDP разбивается на пакеты, совместимые с MTU, и собирается на канальном уровне, как правило, с помощью определенного оборудования. Это слишком низко, чтобы быть захваченным Wireshark / pcap. Если вы хотите захватить отдельные разбитые пакеты, вы должны сделать это на промежуточной машине / сетевой карте, например, на шлюзе между двумя хостами, потому что исходный пакет UDP не собирается повторно, пока не достигнет своего конечного пункта назначения. Примечание: этот шлюз может быть виртуальным. См. notes.shichao.io / tcpv1 / ch10

Оставьте это здесь на случай, если кто-то с такой же проблемой придет ...

Если ваш пакет TCP:

Звучит так, будто Wireshark собирает пакеты для вас. Это часто используется по умолчанию для потоков TCP. Вы можете изменить это, щелкнув Richt-потоком по потоку -> Настройки протокола -> Разрешить субдисекторам повторную сборку TCP.

...