Що таке MTU? Як змінити MTU у налаштуваннях роутера? [проблеми з завантаженням деяких сайтів, відтворенням відео] "

Число MTU - це максимально переданий пакет даних, який відправляється від сервера до обладнання. Воно застосовується в інтернет-з'єднанні і безпосередньо впливає на його швидкість. Як працює MTU? Щоб передати з'єднання швидкою та ефективною, дані передаються не по одному байту, а цілими пакетами. Комп'ютер розпаковує пакет і завантажує інформацію, наприклад, інтернет-сторінку, гру тощо.

Мало хто зі звичайних користувачів задавався питанням, що таке MTU і для чого він вказується в налаштуваннях


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

Щоб справитися з проблемою, рекомендується змінити параметри DNS. Це можна зробити за допомогою панелі керування. Відкрийте розділ з інтернет-з'єднаннями, виберіть свою мережу і перегляньте її властивості. У них ви знайдете компоненти, серед яких слід вибрати протокол Інтернету TCP/IP і вручну вписати DNS адреси - 8.8.8.8 і в другому рядку 8.8.4.4.

Якщо ви спробували змінити значення DNS, але це не допомогло, варто звернутися до налаштувань розміру пакетів даних. Коли у постачальника послуг встановлено одне число цього параметра, а у вашому роутері - інше, то швидкість падає, і з'єднання працює погано. На комп'ютері його змінювати не потрібно, оскільки в останніх версіях Windows система сама визначає оптимальне для роботи мережі значення.

Що таке MTU в роутері

Параметр MTU розшифровується як Maximum Transmission Unit. Простіше кажучи, це максимальний розмір пакета даних, який передає роутер.

Коли дані передаються по комп'ютерних мережах, вони не переміщуються безперервним потоком. Інформація впорядковано поділяється на окремі пакети даних. Роутер перевіряє кожен пакет, використовуючи математичні обчислення - звіряючи «контрольні суми». Якщо сталася помилка, роутер запитує певний пакет даних заново, і повторює цю дію, поки не збере цілісний блок інформації. Все це відбувається практично зі швидкістю світла - тому ми не помічаємо того, що дані фрагментовані. Але ось процесор, прошивка роутера, браузер та інше «залізо» і «софт» до цього вкрай чутливі.

Неправильний розмір пакета даних, тобто параметра MTU, може «збити з пантелику» ваш комп'ютер, і ви не зможете нормально користуватися інтернетом.


Maximum Transmission Unit (MTU). Міфи і рифи

Maximum transmission unit (MTU) - це максимальний обсяг даних, який може бути переданий протоколом за одну ітерацію. Наприклад, Ethernet MTU дорівнює 1500, що означає, що максимальний обсяг даних, що переноситься Ethernet фреймом не може перевищувати 1500 байт (без урахування Ethernet заголовка і FCS - Ріс. 1).

Ріс. 1

Давайте пробіжимося з MTU за рівнями OSI:

Layer 2.

Ethernet MTU є приватним випадком Hardware MTU. Визначення Hardware MTU випливає з загального визначення: Hardware MTU - це максимальний розмір пакета, який може бути переданий інтерфейсом за одну ітерацію (принаймні значення вказано в специфікаціях пристрою - за фактом деякі чіпсети підтримують передачу великих розмірів пакетів, ніж заявлено). Тому якщо поглянути на малюнок 1 у відриві від Ethernet, то отримаємо наступне:

Ріс. 2Замічення:

Однак і тут не обійтися без застереження. Як ви бачите, HW MTU (Ethernet MTU зокрема) не включає заголовок L2 в себе. Однак це справедливо для IOS і IOS XE, але для IOS XR і JunOS заголовок L2 включено до розміру HW MTU - Рис. 3. Ця особливість може привезти до проблем при установці OSPF neighborship між платформами під управлінням IOS (XE) і IOS XR (OSPF вимагає збігу MTU в Hello пакетах). Тому, при конфігурації MTU для Ethernet інтерфейсів, на боці IOS XR MTU має бути на 14 байт більше (12 байт src mac + dst mac і 2 байт EtherType). Наприклад, MTU в 1500 в Cisco IOS еквівалентно MTU в 1514 для IOS XR.

Ріс. 3


Налаштування і перевірка.

Для того що б змінити MTU на маршрутизаторах під керуванням Cisco IOS використовується команда інтерфейс рівня: R01(config)#interface gigabitEthernet 5/1 R01(config-if)#mtu 1532 R01(config-if)#exit Проверяем: R01#show interfaces gigabitEthernet 5/1 GigabitEthernet5/1 is up, line protocol is up (connected) Hardware is C6k 1000Mb 802.3, address is 0008.e3ff.fde0 (bia 0008.e3ff.fde0) Description: — — MTU 1532 bytes, BW 1000000 Kbit, DLY 10 usec, reliability 255/255, txload 82/255, rxload 20/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) Full-duplex, 1000Mb/s, media type is LH ….. OUTPUT OMITTED И R01#show run interface gigabitEthernet 5/1 interface GigabitEthernet 5/1 description — — no switchport mtu 1532 ip address 192.168.1.1 255.255.255.0 end

Layer3.

IP MTU визначає максимальний розмір пакета з IP заголовком, який можна передати на цьому інтерфейсі, не вдаючись до фрагментації. Залежність між IP MTU і HW MTU описується такою формулою: Відповідно, коли на інтерфейс потрапляє пакет, що перевершує встановлене IP MTU, пакет або піддається фрагментації, або, у разі встановленого прапора DF (DO NOT Fragment) в IP заголовку, дискардується, а пристрій може згенерувати ICDMEntRP, дискардування, а

Налаштування і перевірка.

Для зміни IP MTU на маршрутизаторах під керуванням Cisco IOS використовується команда інтерфейс рівня: R01(config)#interface gigabitEthernet 5/1 R01(config-if)#ip mtu 1532 R01(config-if)#exit Проверяем: show interfaces gigabitEthernet 5/1 GigabitEthernet 5/1is up, line protocol is up Internet address is 192.168.1.1/24 Broadcast address is 255.255.255.255 Address determined by non-volatile memory MTU is 1532 bytes Helper address is not set Directed broadcast forwarding is disabled Multicast reserved groups joined: 224.0.0.5 224.0.0.2 Outgoing access list is not set Inbound access list is not set ….. OUTPUT OMITTED И R01#show run interface gigabitEthernet 5/1 interface GigabitEthernet 5/1 description — — no switchport mtu 1532 ip address 192.168.1.1 255.255.255.0 no ip redirects no ip unreachables no ip proxy-arp end Вот те раз. Команду ip mtu не видно у show run. Так тут є цікавий нюанс - якщо ip mtu збігається з hw mtu, то у виведенні show run буде відображатися тільки hw mtu. Якщо значення різні, буде показано обидва.

Layer 4.

TCP Maximum Segment Size (MSS) визначає максимальний розмір TCP сегмента (без TCP заголовка!), який може бути використаний (відправлений/прийнятий) в ході TCP сесії. Анонс (саме анонс, не хендшейк) розмірів TCP MSS відбувається під час установки TCP сесії - приймаюча сторона анонсує стороні, що надсилає який розмір TCP сегмент вона може прийняти. Відповідно розмір TCP MSS може відрізнятися в рамках однієї TCP сесії залежно від напрямку.

Ріс. 4


Сторона, що виробляє анонс, вираховує значення TCP MSS для себе за такою формулою: TCM MSS = (IP MTU – )

Налаштування.

Тут у нас можливі два сценарії - маршрутизатор є транзитним або учасником TCP сесії. 1) Транзитний пристрій: Щоб запобігти дропу пакетів проміжним пристроєм у разі наявності лінка з малим MTU, маршрутизатор буде прослуховувати TCP SYN пакети і підміняти значення MSS, анонсовані кінцевим пристроєм. Що призведе до відправки пакетів меншої величини кінцевим пристроєм і вуаля - проблема з дропами на лінці з малим MTU випереджена. R01(config)#interface gigabitEthernet 5/1 R01(config-if)#ip tcp adjust-mss? < 500-1460 > Maximum segment size in bytes 2) Термінуючий пристрій: Тут все просто - маршрутизатор є учасником TCP сесії і ми можемо встановити примусово, розмір MSS який він буде анонсувати. R01(config)#ip tcp mss? < 0-10000 > MSS Здається все? Ні, не все. Згадуємо про MPLS. Згадуємо... Закінчили згадувати, переходимо до розгляду.

Layer 2,5. MPLS.

Ріс. 5

MPLS MTU визначає максимальний розмір маркірованого (хто знає як краще перекладатися Labeled прошу підказати в коментах) IP пакета. Якщо розмір маркірованого пакета перевищує MPLS MTU, пакет або фрагментується, або, за наявності встановленого в IP заголовка прапора з DF bit, дропається (поки логіка як і при перевищенні IP MTU), з можливою відправкою ICMP повідомлення Fragmentation Needed.

Зауваження:

Ось тут справи йдуть трохи по іншому, порівняно з IP MTU. У MPLS мережі проміжний вузол може і не мати маршруту до відправника пакета, тому замість того що б слати ICMP повідомлення відправнику безпосередньо, воно інкапсулюється з тим же стеком міток (label stack), що і вихідний пакет, і відправляється по його ж шляху прямування. Досягаючи Egress LSR (кінцевого MPLS маршрутизатора для даного LSP - за ним вже IP мережа без міток), який знає ip маршрути до вузла відправника, ICMP повідомлення Fragmentation Needed «розгортається» ним, інкапсулюється необхідними заголовками і відправляється назад в MPL- файл. Поведінка подібна до TTL Expired, та й загалом швидше ставитися до теми MPLS, а не MTU. Тому хто не знайомий з процесом - www.google.kg/?gws_rd=ssl#q=mpls+ttl+expired


Що тут ще цікавого? MPLS MTU може бути більше HW MTU (тому на Рис. 3 HW MTU частково позначено пунктиром). При цьому IOS видасть варнінг, але в більшості випадків буде працювати (залежить від чіпсету інтерфейсу) і успішно пропускати принаймні baby-giant фрейми. А в інший раз можна отримати дроп пакетів, пошкодження даних, і сто років без врожаю.

Налаштування і перевірка.

R01(config)#interface gigabitEthernet 5/1 R01(config-if)#mpls mtu 1540 R01(config-if)#exit Проверяем: R01#show mpls interfaces gigabitEthernet 5/1 detail Interface gigabitEthernet 5/1: IP labeling enabled (ldp): Interface config LSP Tunnel labeling not enabled BGP labeling not enabled MPLS operational MTU = 1540 Замечание: MPLS MTU відображається в running налаштуваннях, так само як і IP MTU - тільки в разі, якщо значення відрізняється від HW MTU. Але, на відміну від IP MTU, будь-яка зміна HW MTU змінює значення MPLS MTU до значення HW MTU (IP MTU ця дія не змінює).

MTU на комутаторах Cisco.

Комутатори не підтримують виставлення MTU на кожному інтерфейсі окремо (мова про switchport'ax і Vlan інтерфейси, для multilayer комутаторів з routed портами застосовні налаштування аналогічні маршрутизаторам). Змінити поточні налаштування MTU для портів комутатора можна 3-ма абамі, застосовними від залежності:

  • SW01 (config) # system mtu 1600 - зміна L2 MTU на FastEthernet портах
  • SW01 (config) # system mtu jumbo 1600 - зміна L2 MTU на GigabitEthernet і Ten GigabitEthernet портах
  • SW01 (config) # system mtu routing 1600 - зміна L3 MTU на інтерфейсах, що маршрутизуються

Перевіряємо: SW01#show system mtu System MTU size is 1600 bytes System Jumbo MTU size is 1600 bytes Routing MTU size is 1600 bytes

На замітку адміністратору.

Оскільки основним методом перевірки MTU і донині є команда PING, з виставленим df-bit і рамером пакету, наведу насамкінець пару корисних триків:


1) Для того, щоб знайти мінімальний MTU (кумедне поєднання) на мережі можна використовувати розширену команду ping, причому як c кінцевих станцій/серверів так і з обладнання Cisco. Пропінгуємо з маршрутизатора R01 маршрутизатор R02 з виставленим df-bit, c початковим розміром пакета в 1000 байт, кінцевим 1500 байт, і кроком 100 байт. Кол-во повторений 2. R01#ping Protocol [ip]: Target IP address: 192.168.12.2 Repeat count [5]: 2 Datagram size [100]: Timeout in seconds [2]: Extended commands [n]: y Source address or interface: 192.168.12.1 Type of service [0]: Set DF bit in IP header? [no]: y Validate reply data? [no]: Data pattern [0xABCD]: Loose, Strict, Record, Timestamp, Verbose[none]: Sweep range of sizes [n]: y Sweep min size [36]: 1000 Sweep max size [18024]: 1500 Sweep interval [1]: 100 Type escape sequence to abort. Sending 12, [1000..1500]-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds: Packet sent with a source address of 192.168.12.1 Packet sent with the DF bit set!!!!!!!!!!.. Success rate is 66 percent (8/12), round-trip min/avg/max = 4/24/56 ms Як бачите, проходить лише 6 ICMin 111000 Розмітів, Пак. Отже, мінімальне MTU між двома точками - 1300 і 1400, що можна уточнити ще за кілька циклів, ужима діапазон і вміша крок.

2) Часта проблема виникає при взаємодії мережевих і системних адміністраторів - з кінцевого пристрою проходять пакети одного розміру, з ближнього до нього мережевого пристрою більшого розміру. Причина лежить в тому, що операційні системи (зокрема Windows), коли ви задаєте розмір пакета команді ping, сприймають це значення як чистий paiload - без заголовків ICMP і IP, тобто при зазначенні ping 192.168.1.2 -l 100 система буде генерувати пакети величиною 128 байт, а не 100 (8 байт ICMRE і 20. Якщо ви вказуєте розмір ICMP пакета на мережевому обладнанні Cisco, цей розмір включає вже обидва заголовки. Тому на дефолтному Ethernet лінці пінги з Windows OS (наприклад) покажуть 1472 байт максимальний розмір пакета проходить без фрагментації, а Cisco 1500 байт. JunOS, до речі поводиться також як і операційні системи (не включає заголовки)

На цьому все. Є ще в засіках старий драфт статті за розмірами фреймів і їх еволюції, де описані поняття Jumbo Frame, Baby-Giant Frame, що зустрічаються в цій статті. Якщо вважатимете за потрібне, можу доопрацювати і викласти і її.

Навіщо змінювати MTU

Написи в налаштуваннях роутера говорять про те, що змінювати MTU вручну не варто. Частково це правда: як я сказав вище, неправильний параметр може призвести до великих проблем при передачі даних. Але якщо ви перепробували інші способи вирішення проблеми, на зразок перезавантаження роутера, зміни параметрів DHCP, консультацій зі службою підтримки, а ваше підключення все так само нестабільне, то варто перевірити MTU.

Які проблеми прямо вказують на те, що потрібно змінити MTU:

  1. постійні помилки під час з'єднання з інтернетом, причому на всіх пристроях, з'єднаних до одного роутера;
  2. повільна або нестабільна швидкість підвантаження сайтів;
  3. окремі сайти взагалі не відкриваються, або відкриваються дуже повільно.

Параноя або безпека

Природно, будь-який стандарт передбачає вирішення проблем у нештатних ситуаціях. Для MTU була розроблена спеціальна фрагментація, яка дозволяла на низькому рівні змінювати розмір пакета на прохання кінцевого комп'ютера в мережі. Саме прохання виконувалося на транспортному рівні TCP за допомогою протоколу ICMP, завданням якого є передача службових повідомлень. Протоколи канального рівня при неможливості прийняти пакет надсилають повідомлення про неможливість цього. Відправник зменшує р "

COM_SPPAGEBUILDER_NO_ITEMS_FOUND