MTU - Maximum Transmission Unit
Насамперед, звичайно, необхідно розібратися в MTU, про яке чули вже майже всі, хто коли-небудь стикався з Інтернетом. MTU - Maximum Transmission Unit.
У реєстрі він задається таким чином:
Це максимальний розмір пакета даних, який може бути переданий за один фізичний кадр за протоколом TCP/IP. Справа в тому, що дані від комп'ютера до комп'ютера в Інтернеті йдуть не суцільним потоком, а цими кадрами. Кадр – це пакет певного розміру. Здавалося б, все просто, але ні. Найоптимальнішим варіантом був наступний. Припустимо, що всі компанії, тією чи іншою мірою пов'язані з Інтернетом, домовилися про єдиний стандарт (розмір) цих пакетів, то можна було б по максимуму використовувати канали зв'язку, не було б так званого "пакетного" сміття.
На жаль це неможливо. Ще одна проблема полягає в тому, що при установці з'єднання два комп'ютери повинні узгодити розмір пакетів, але ще й по дорозі їх розміри можуть змінюватися, тому що кадр на шляху до місця призначення долає цілу низку проміжних серверів і маршрутизаторів, налаштування MTU яких можуть бути зовсім різними. Отже, чим більше пакет, тим більша ймовірність того, що він по дорозі буде розбитий і заповнений "сміттям".
Так, якщо ваш провайдер має установки MTU=576, а у вас у Windows задано MTU=1500, то кожен ваш пакет буде їм розбиватися на три по 576 байт: 576+576+576=1728 - тобто 228 байт баласту будуть додаватися до кожного пакету. Але навіть якщо провайдер теж поставив у себе MTU=1500, то при зв'язку з віддаленим сервером цілком може потрапити маршрутизатор з меншим значенням MTU, і пакети знову-таки фрагментуватимуться, уповільнюючи передачу даних.
У Microsoft Windows є функціяавтоматичне визначення MTU. Вона включена за умовчанням та дещо рятує ситуацію. Але є і мінус: процедура обчислення MTU для кожного з'єднання потребує чимало часу, що трохи гальмує роботу при прокачуванні невеликих файлів та веб-серфінгу. Та й у разі неузгодження ваших параметрів із параметрами інтернет-провайдера ця функція навряд чи вам допоможе. Звичайно, існують деякі більш менш загальноприйняті стандарти для даного параметра: так, наприклад, для Ethernet MTU дорівнює 1500 байт, для SLIP - 1006, для РРРоЕ -1492, для РРР (тобто модемного зв'язку з Інтернетом) - 576.
Насправді ваш інтернет-провайдер міг виставити будь-які інші значення на власний розсуд. Внаслідок чого відправляються або зовсім маленькі кадри, які не дозволяють повною мірою завантажити канал зв'язку, або надто великі, які інтернет-провайдер розбиває на менші. Тим самим погіршується якість зв'язку, швидкість роботи у Всесвітньому павутинні.
Насправді кожен пакет складається з кількох сегментів. Це заголовки та фактичні дані. Та частина, де містяться лише фактичні дані, називається MSS або Maximum Segment Size, що є ще одним параметром протоколу TCP/IP, що визначає найбільший сегмент, тепер уже даних, що передаються в одиницю часу. Насправді MTU складається з MSS та заголовків TCP/IP.
У реєстрі MSS задається так:
Заголовок також має стандартний розмір – 40 байт. 20 байт під IP та 20 байт під TCP. Отже, розмір MSS становить різницю MTU та заголовка, тобто 40 байт. Ось чому у визначенні оптимального розміру MTU є деякі тонкощі.
Для прикладу, варто вивчити передачу даних при різному розмірі MTU широкосмугової лінії Т1 (пропускна здатність - 1544000 біт/с), використовуючи таку формулу:
[(MSS + заголовок) х 8 біт/байт] / [1 544 000 біт/с] = затримка на один хоп (тобто на кожен комп'ютер у Мережі на шляху нашого пакета).
Використовуючи у цій формулі різні величини MTU, можемо обчислити затримку одного пакета. Якщо MTU=1500, тоді затримка = (1460+40) х 8/1544000 = 7,772 мс.
Якщо ж MTU = 576, то затримка = (536 +40) х 8/1544000 = 2,984 мс.
Припустимо, що на шляху пакета зустрічається 10 серверів, тоді при MTU=1500 отримаємо затримку 77,72 мс, а при MTU=576 — 29,84 мс — різниця дуже помітна.
Тому очевидно, що пакети меншого розміру будуть передаватися швидше через невелику пропускну здатність лінії. Однак не все так просто. Використовуючи ту ж формулу, давайте порахуємо, за який проміжок часу буде передано файл розміром 1 Мбайт за тією ж широкосмуговою лінією Т1. Один мегабайт дорівнює 1024 Кбайт або 1048576 байт. Якщо MTU = 1500, то, як з'ясували, затримка однією хоп становитиме 7,772 мс.
1 Мбайт/MSS = 1048576/1460 = 718,2, т. е. всього потрібно 719 ефективних пакетів, щоб передати 1 мегабайт даних. Далі, множимо 719 пакетів на 7,772 мс, отримуємо 5588,083 мс, або 5,588 секунди затримки на один хоп. Якщо ж ми передаємо свій файл через 10 хопів, що зустрічається частіше, ніж один, то отримуємо 55,88 сек - це час, який ми (вірніше, постачальник послуг, доступу до Інтернету, що має лінію Т1) витратимо на передачу файлу в 1 Мбайт при ідеальному зв'язку. Якщо ж MTU=576, то: 1 Мбайт/MSS = = 1 048 576/536 = 1956,300, т. е. за такого MTU потрібно 1957 пакетів, щоб передати 1 Мбайт.
Далі, множимо кількість пакетів на затримку кожного з них: 1957 х 2,984 = 5840,580 мс, або 5,841 секунд на один хоп. Ну і відповідно на 10 хопів прийде 58,41 сек. Як бачимо, через те, що при використаннівеликих пакетів передається менше заголовків, реальна швидкість передачі файлу виходить вищою.
Для того щоб передати 1 мегабайт при використанні MTU = 1500, потрібно переслати "доважку" заголовків з 28 760 байт, тоді як при використанні MTU = 576 отримуємо аж 1957x40 = 78 280 байт, тобто додаткові 49 52 корисної інформації. Для нашої 10-хопової передачі це виливається в зайвих 2,52 секунд при передачі кожного мегабайта навіть при надшвидкому зв'язку.
Ця різниця, можливо, буде ще трохи вищою на практиці, тому що сучасні реалізації TCP/IP прагнуть використовувати ще більші заголовки (наприклад, додаткові 12 байтів заголовка для позначок часу). Якщо ж провести аналогічні розрахунки для зв'язку по модему на швидкості 33 600 Кбіт/с, то отримаємо, що на передачу мегабайта інформації на відстань одного хопа, тобто безпосередньо вашому провайдеру, буде витрачено в ідеалі 256 секунд при MTU = 1500 і 268 секунд при MTU=576.
Різниця на одному переході 12 секунд чи близько 4,5%! Але не слід забувати, що ці цифри вийдуть за умови відсутності фрагментації пакетів, якщо у вашого провайдера MTU=1500. Якщо ж це не так, то, зрозуміло, більший, ніж потрібно, пакет фрагментуватиметься — розбиватиметься на кілька пакетів і навіть розбавлятиметься "повітрям", і зв'язок погіршиться на 10—50%.
Таким чином, логічно вважати, що великі пакети в результаті все-таки краще. І якщо ваш провайдер налаштував свої сервери та маршрутизатори на великі пакети, то треба прагнути використовувати це на всю котушку, але не забувати і про те, що в Інтернеті зустрічаються сервери з MTU=576 (про це трохи нижче ми ще поговоримо). Тим не менш, якщо чиста продуктивність не є остаточною метою, то меншіпакети будуть більш "швидкими", оскільки вони вимагають менше часу для своїх подорожей Мережею.
Цей ефект може переважувати всі інші переваги великих пакетів у деяких інтернет-додатках та онлайнових іграх за рахунок зменшення часу відгуку віддаленого сервера при передачі невеликих обсягів інформації.
В Інтернеті по дорозі ваших пакетів, ймовірно, зустрінуться різні сервери з різними налаштуваннями, але для початку все-таки бажано визначити найкраще значення MTU при зв'язку тільки з вашим провайдером, оскільки саме воно може надати вирішальне значення при оптимізації вашого доступу в Мережу .
У Windows 95 розробниками за замовчуванням було обрано MTU=1500, що нібито не відповідає оптимальному для модемного з'єднання значенню, яке вважається всіма рівним 576. У Windows 98 корпорація Microsoft вже виправила цей недолік, і тепер за умовчанням при з'єднаннях нижче 128 кілобіт в секунду ми Маємо МТУ = 576, що начебто має частіше виявлятися найкращим варіантом. Спробуємо розібратися, чи воно так насправді.
Отже, є кілька способів визначити значення MTU оптимальне для зв'язку з вашим інтернет-провайдером.
На вкладціЗагальні(General) вікна, натисніть кнопкуНалаштування(Settings) біля рядка з назвою вашого модему. У діалоговому вікніВластивості: тип модему(Properties: Modem Type) виберіть вкладкуПараметри(Options), де встановіть прапорецьВідкрити вікно терміналу після набору номера(Show terminal window after connection). Тепер з'єднуйтесь з провайдером і при появі вікна терміналу введіть вручну ім'я користувача та пароль за відповідними запитами. Якщо після цього ви побачите щось на кшталт "Entering PPP mode. Your IP address isxxx.xxx.xxx.xxx. MaxMTU is 1524", то вам пощастило - ви отримали MTU провайдера. Але і тут не зайвим буде перевірити це значення особисто.