Як максимальною одиницею передачі в інтернеті стали 1500 байт

Як максимальною одиницею передачі в інтернеті стали 1500 байт

Ethernet всюди, і десятки тисяч виробників випускають обладнання з його підтримкою. Проте майже всі ці пристрої мають одне загальне число – MTU:

$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP 
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

MTU (Maximum Transmission Unit) [максимальна одиниця передачі] визначає максимальний розмір окремого пакета даних. В загальному випадку, коли ви обмінюєтеся повідомленнями з пристроями вашої LAN, MTU буде мати розмір близько 1500 байт, а весь інтернет майже повністю теж працює з розміром 1500 Б. Однак це не означає, що ці технології зв'язку не можуть передавати більшого розміру пакетів.

Наприклад, у 802.11 (ширше відомого як WiFi) MTU дорівнює 2304 байт, а якщо ваша мережа використовує FDDI, тоді ваш MTU дорівнює 4352 байт. У Ethernet є концепція «гігантських кадрів», коли MTU можна призначити розмір до 9000 байт (за підтримки такого режиму NIC, комутаторами і роутерами).

Однак в інтернеті це не особливо потрібне. Оскільки основні магістралі інтернету в основному складаються з Ethernet-з'єднань, де-факто неофіційний максимальний розмір пакета виставлений в 1500 Б, щоб уникнути фрагментації пакетів на інших пристроях.

Саме собою число 1500 дивне – можна було б очікувати, що константи у світі комп'ютерів будуть засновані на ступенях двійки, наприклад. Тож звідки взялися 1500 Б і чому ми їх досі використовуємо?

Чарівне число

Перший великий прорив Ethernet у світ стався у формі стандартів 10BASE-2 (тонкий) та 10BASE-5 (Товстий), числа в яких говорять про те, скільки сотень метрів може покривати окремий сегмент мережі.

Оскільки в той час конкуруючих протоколів було безліч, а у заліза були свої обмеження, автор формату визнає, що вимоги до пам'яті буфера пакетів зіграли свою роль у появі чарівного числа 1500:

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

Однак, це не вся історія. У роботі «Ethernet: розподілена комутація пакетів у локальних комп'ютерних мережах» 1980 року наведено одне із ранніх аналізів ефективності використання у мережах пакетів великого розміру. У той час це було особливо важливо для мереж Ethernet, оскільки ті могли з'єднувати всі системи одним коаксіальним кабелем, або складатися з хабів, здатних в один момент часу відправляти по одному пакету для всіх вузлів одного сегмента.

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

Зважаючи на все, інженери на той час обрали число 1500 Б (близько 12000 біт) як найбільш «безпечний» варіант.

З тих пір з'являлися і зникали різні інші системи передачі повідомлень, однак серед них найнижче значення MTU було у Ethernet з його 1500 Б. Перевищувати мінімальне значення MTU в мережі - означає викликати фрагментацію пакетів, або займатися PMTUD [пошук максимального розміру пакета для обраного шляху]. Обидва варіанти мали свої особливі проблеми. Навіть якщо великі виробники ОС опускали значення MTU ще нижче.

Чинник ефективності

Тепер нам відомо, що MTU в інтернеті обмежений розміром 1500 Б здебільшого через старі показники затримок та обмежень обладнання. Наскільки сильно це впливає на ефективність інтернету?

Як максимальною одиницею передачі в інтернеті стали 1500 байт

Якщо подивитися на дані з великої точки обміну інтернет-трафіком AMS-IX, ми побачимо, що не менше 20% пакетів, що передаються, мають максимальний розмір. Можна також переглянути загальний трафік LAN:

Як максимальною одиницею передачі в інтернеті стали 1500 байт

Якщо скомбінувати обидва графіки, вийде щось на зразок наступного (оцінка трафіку для кожного діапазону розмірів пакетів):

Як максимальною одиницею передачі в інтернеті стали 1500 байт

Або якщо подивитися на трафік всіх цих заголовків та іншої службової інформації, ми отримаємо той же графік з іншим масштабом:

Як максимальною одиницею передачі в інтернеті стали 1500 байт

Досить більшість пропускної спроможності витрачається на заголовки для пакетів з найбільшого класу розмірів. Оскільки на піку трафіку найбільші накладні витрати становлять 246 Гб/с, можна припустити, що якби ми перейшли на «гігантські кадри», коли така можливість ще існувала, ці накладні витрати становили б всього близько 41 Гб/с.

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

Джерело: habr.com

Додати коментар або відгук