Ваше местоположение в сети:
Рубрика:

Что такое MTU

Разделы сайта:

На этом блоге неоднократно рассматривалось устройство сетей Ethernet, однако одно понятие до сих пор оставалось нетронутым - MTU. Что же такое MTU и как оно может влиять на вашу работу в интернете?

Аббревиатура MTU означает Maximum Transmission Unit - это можно перевести как максимальный размер пакета, передаваемого по сетям. Если точнее, то не самого пакета, а тех полезных данных, что в нем содержатся. Если вы читали про сетевые протоколы, то знаете, что передаваемые по сетям пакет содержит серию заголовков, позволяющих доставить его и также некоторые данные, переносимые в пакете. Так вот, каждым маршрутизатором накладывается ограничение на размер полезных данных в пакете, и это и есть MTU.

Откуда берутся такие ограничения? Дело в том, что стандартов Ethernet заложено, что размер Ethernet-пакета не может превышать 1518 байт. При этом 4 последние байта составляет проверочная сумма, позволяющая проверить корректность пакета, а первые 14 байт - MAC-заголовок, содержащий MAC-адрес устройства, которому направлен пакет. Тем самым, для Ethernet MTU составляет 1500, и это и есть то базовое ограничение, от которого все "пляшут". Но ведь Ethernet - это нижний уровень, даже в локальной сети обращение идет по IP-адресам, и это означает, что внутри "полезных данных" для Ethernet будут содержаться еще заголовки, тем самым, полезный размер, скажем, TCP-пакета, будет уже меньше.

Фрагментация пакетов

Безусловно, эта информация не означает, что нельзя передать по сети больший размер данных, это было бы просто смешно. Когда размер полезных данных больше, протокол генерирует множество последовательных пакетов, которые дополняют нужные данные. Это позволяет работать в условиях нестабильного интернета, небольшие пакеты успевают проходить.

Однако куда интересней может быть ситуация, когда какое-либо устройство вашей сети настроено передавать пакеты размером не больше некоторого заданного, а ему приходит пакет с большим размером полезных данных. Что с ним можно сделать. Существует два варианта:

  • Отброс пакета: пакет может быть просто проигнорирован. В таком случае находящаяся за устройством цель и не узнает, что ей что-то посылали.
  • Фрагментация пакета: внутри пакет бьется на два более маленьких и передается дальше. Это приводит к более высокой нагрузке на сеть, поэтому часто эта опция отключена. Кроме того, следует помнить, что не все протоколы поддерживают получение и сборку фрагментированных пакетов.

Для определения максимального размера пакета, который можно послать к устройству, можно использовать так называемый ping-test. Посылайте ping с дополнительными опциями - запретить фрагментацию и указать размер пакета. Для Windows такая команда дается как ping host -f -l size, для Linux ping host -M do -s size.

MTU и VPN

Чаще всего проблемы с MTU могут возникать, когда вы подключаетесь куда-нибудь по VPN. Сами вы их, скорей всего решить не сможете, но у вас есть вариант попросить что-то изменить провайдера или цель подключения, например, на вашей работе. Так что же может происходить. Допустим, у провайдера задан какой-то MTU, например 1460. Они могли так занизить когда-то в прошлом, по просьбе некоторых клиентов или когда у них использовался какой-то специфический механизм авторизации. А на работе у вас, допустим, стоит MTU 1420. Но вы подключаетесь по VPN, и поэтому чтобы все могло работать, все заголоски VPN должны поместиться в 40 байт.

Могут поместиться, а могут и нет. Если вы используете PPTP, то, кажется, должны поместиться. А если, например, L2TP/IPSEC, то он задействует протокол ESP для шифрования, и у него довольно большие заголовки. В таком случае у вас подключиться не получится. Проявляться это будет так - вы можете вводить пароль, у вас будет начинать устанавливаться соединение, и дальше процесс подключения будет засыпать. А на сервере в логах будут периодические запросы к вашему компьютеру. Он даже ответы будет слать, но до сервера они не дойдут.

Что делать в таких случаях? Варианта два. 1) Просить поднять MTU у провайдера. 2) Просить опустить MTU на работе. Ну и, конечно, есть еще множество вариантов типа "забить", "поменять провайдера" и "поменять работу",

Надеюсь, эта статья была полезной. Если есть вопросы, пишите!

← Что такое биткойн?Насыщенные фотографии →
comments powered by Disqus