Детальний опис значення параметра MTU

У комп'ютерних мережах термін maximum transmission unit (MTU) означає максимальний розмір корисного блоку даних одного пакета (payload), який може бути переданий протоколом без фрагментації. Зазвичай заголовки протоколу не входять до MTU, але деякі системи в деяких протоколах заголовки можуть враховуватися. Коли говорять про MTU, зазвичай мають на увазі протокол канального рівня мережевої моделі OSI.

Однак цей термін може застосовуватися і для інших рівнів:

L1 - media mtu (повний L2 кадр);

L2 - mtu, hw mtu, system mtu;

L3 - ip mtu (ip заголовок враховується), mtu routing;

L4 - tcp mss Позасистемні: tunnel mtu, vlan mtu, mpls mtu.

Обмеження на максимальний розмір кадру накладається з кількох причин:

- Для зменшення часу на повторну передачу у разі втрати чи непоправного спотворення пакета. Імовірність втрат зростає із збільшенням довжини пакета.

- Щоб за напівдуплексного режиму роботи хост не займав довгий час канал (також для цієї мети використовується міжкадровий інтервал (Interframe gap)).

- Чим більший пакет, тим більше очікування відправлення інших пакетів, особливо в послідовних інтерфейсах. Тому маленький MTU був актуальним у часи повільних комутованих з'єднань.

- Малий розмір та швидкодія мережевих буферів вхідних та вихідних пакетів. Проте надто великі буфери теж погіршують продуктивність.

Значення MTU визначається стандартом відповідного протоколу, але може бути автоматично перевизначено для певного потоку (протоколом PMTUD) або вручну для потрібного інтерфейсу. На деяких інтерфейсах MTU за замовчуванням можна встановити нижче максимально можливого. Значення MTU обмежено знизу зазвичаймінімально допустимою довжиною кадру.

Для високопродуктивної мережі причини, що викликали початкові обмеження MTU, застаріли. У зв'язку з цим для Ethernet було розроблено стандарт Jumbo-кадрів зі збільшеним MTU.

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

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

Хоча фрагментація вирішує проблему невідповідності розмірів пакетів і значення MTU, вона значно знижує продуктивність мережних пристроїв. У зв'язку з цим, у 1988 році було запропоновано альтернативну технологію, названу Path MTU discovery (RFC 1191). Суть технології полягає в тому, що при з'єднанні двох хостів встановлюється параметр DF (don't fragment — не фрагментувати), який забороняє фрагментацію пакетів. Це призводить до того, що вузол, значення MTU якого менший за розмір пакета, відхиляє передачу пакета і відправляє повідомлення ICMP «необхідна фрагментація, але встановлено прапор її заборони (DF)». Відправник зменшує розмір пакета і відсилає його заново. Така операція відбувається до тих пір, поки пакет не буде достатньо малий, щобдійти до хоста-отримувача без фрагментації.

Однак і ця технологія має потенційні проблеми. Деякі маршрутизатори налаштовуються адміністраторами на повне блокування пакетів ICMP (це не дуже грамотно, але може бути найпростішим вирішенням кількох проблем безпеки). В результаті, якщо розмір пакета не відповідає значенню MTU на певній ділянці, пакет відкидається, а хост-відправник не може отримати інформацію про значення MTU та не надсилає пакет заново. Тому з'єднання між хостами не встановлюється. Проблема отримала назву MTU Discovery Black Hole (RFC 2923) і протокол був модифікований для детектування таких маршрутизаторів.

Оскільки Windows (XP,7,8) автоматично вибирає найкраще MTU (PMTU), у нашому випадку необхідно просто переконатися, що для цього з'єднання не встановлено якесь відмінне від оптимального фіксоване значення. До речі, це оптимальне значення з'ясувати досить легко, провівши нескладний експеримент. Відкрийте консоль cmd.exe та введіть у ній команду:

PING -f -l 1472 xxx.xxx.xxx.xxx

-f забороняє фрагментацію пакета,

-l встановлює розмір пакета.

Якщо ви отримаєте у відповідь щось типу “Reply from xxx.xxx.xxx.xxx: bytes=1472 time=144ms TTL=10”, це означатиме що MTU=1500 (28 байт заголовка не враховуються). Якщо відповідь буде “Packet needs to be fragmented but DF set”, то зменшуйте значення 1472 до того часу, поки отримаєте проходження пакета — це значення плюс 28 байт заголовка і дорівнюватиме шуканому MTU.

Отримане значення (+28 байт заголовка) необхідно порівняти зі значенням MTU, яке використовується системою, яке можна визначити за допомогою команди, в тому ж командному рядку:

netsh interface ipv4 show subinterfaces

(В результаті буде виведено значення MTU для інтерфейсів ipv4).

Змінити значення MTU в Windows (XP,7,8) можна за допомогою команди

(Дію зміни параметрів налаштування бажано виконувати тільки досвідченому користувачеві, оскільки неправильне значення вплине на роботу мережі в гірший бік. ):

netsh interface ipv4 set subinterface "ХХХХХХХХ" mtu=1500 store=persistent

Де ХХХХХХХХ - Назва мережного інтерфейсу (За замовчуванням - "Підключення по локальній мережі", для зручності можна перейменувати, наприклад, у Lan1 в папці "Мережеві підключення" в "Панелі управління").

На відміну від Windows більшість роутерів (Wi-Fi Домашніх маршрутизаторів) використовують статичне налаштування MTU, вказане в налаштуваннях роутера. За промовчанням значення MTU 1500.

Провайдер "Тріолан" забезпечує передачу пакетів Ethernet максимального корисного розміру, якому відповідає налаштування MTU 1500.

Є провайдери, налаштування мережі яких обмежує розмір MTU до значень менше 1500. Найчастіше це пов'язано з використанням протоколів додаткової інкапсуляції (PPPoE, L2P та ін.). У такому випадку Windows налаштовує необхідне значення MTU за протоколом PMTU, але у разі виникнення проблем можуть знадобитися налаштування, описані вище. Найчастіше проблеми з MTU пов'язані саме з роутерами, в яких неправильно налаштовано значення MTU. Для мереж "Тріолан" це значення становить 1500, для інших мереж - може бути визначено за допомогою командного рядка, як описано вище.