Захоплення на хості може показати пакет розміром 64 КБ на інтерфейсі з MTU 1420, і очевидний висновок — тунель проігнорував своє обмеження розміру. Цей висновок зазвичай хибний. Точки захоплення на хості розташовані всередині шляху обробки, де сегментація, агрегація та робота з контрольною сумою могли ще не відбутися. Прочитайте положення спостерігача, перш ніж читати розмір пакета.

Де ви захоплюєте, змінює те, що ви бачите

Offload передавання дозволяє стеку передати велику одиницю мережевому пристрою, який згодом нарізає її на фрагменти розміру дроту. Агрегація приймання робить навпаки на вхідному шляху, об’єднуючи сегменти до того, як їх побачить спостерігач на боці хоста. Тому захоплення фіксує внутрішню картину хоста в цій точці, а не обов’язково кадри на лінії. Обидва механізми залежать від пристрою та шляху.

ethtool -k eth0 | grep -E 'tso|gso|gro'

Захопіть у другій точці, ідеально на незалежному приймачі або дзеркалі, перш ніж вважати розмір несправністю. Якщо велика одиниця з’являється лише на хості-відправнику, дріт міг її взагалі не нести. Дві точки спостереження сильніші за один файл, особливо коли питання в тому, що насправді покинуло машину.

Розділіть внутрішній і зовнішній інтерфейси

Тунель додає власний інтерфейс, і зовнішня та внутрішня картини різняться інкапсуляцією та обробкою. Захоплення на пристрої тунелю показує внутрішній пакет; захоплення на фізичному адаптері показує зовнішній. Розмір, адреси та стан контрольної суми можуть різнитися між ними з причин, що не мають жодного стосунку до несправності.

Записуйте, який інтерфейс створив кожен файл. Розмір, видимий на пристрої тунелю, описує внутрішній пакет, а не кадр, який адаптер зрештою надіслав. Змішувати їх в одному аналізі — це спосіб перетворити звичайну різницю інкапсуляції на загадку.

Попередження про контрольну суму теж позиційне

Захоплення на боці передавання може показати поле контрольної суми до того, як його заповнить обладнання, що створює попередження, якого не побачив би жоден приймач. Це інше свідчення, ніж відмова віддаленого хоста від пошкодженого пакета. Напрямок і точка захоплення визначають, який із двох випадків у вас.

Коли реальне передавання не вдається, порівняйте спостереження на приймачі або в іншій точці шляху. Зберігайте напрямок, інтерфейс і рівень інкапсуляції разом із записом, бо знімок екрана без них не можна буде витлумачити пізніше.

Вимикайте offload лише як контрольований тест

Вимкнення offload змінює продуктивність і обробку пакетів, тому це не перша реакція на дивне відображення розміру. Якщо ви тестуєте, змініть одне налаштування і спочатку зафіксуйте вихідний стан. Запуск, який також змінює MTU, правила брандмауера і профіль клієнта, не може віднести результат до offload. Потім відновіть налаштування.

ethtool -K eth0 tso off gro off
ping -M do -s 1400 example.com

Справжня зупинка великого передавання — окреме питання про MTU шляху та зворотний зв’язок, який отримує застосунок. Агрегована одиниця хоста ні доводить, ні спростовує обмеження розміру далі шляхом, а низький відсоток CPU не вказує на offload як причину.

Корисний результат — пояснена точка захоплення плюс відтворюване спостереження застосунку. Коли їх розділено, зміна MTU може націлитися на реальне обмеження, а не на форму внутрішнього буфера.

Схожі статті