Значение mtu: Maximum transmission unit — Wikipedia – MTU. , . » triolan.net

Содержание

Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7

Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7

Всем привет сегодня хочу рассказать как изменить MTU в Windows. Напомню MTU это Maximum transmission unit (MTU) это максимальный объём данных, который может быть передан протоколом за одну итерацию. К примеру, Ethernet MTU равняется 1500, что означает, что максимальный объём данных, переносимый Ethernet фреймом не может превышать 1500 байт

У каждого провайдера или сетевого устройства, данное значение может быть свое. например 1492 очень часто встречается на роутерах Dlink, и если устройству на устройство будет например приходить пакет 1500 байт, а у него мту настроено 1492, то часть пакетов будут приходить битые, глюки могут выражаться, например у вас не полностью будут отображаться интерфейс сайта, что то загрузилось, а что то нет, первый признак, проверить Maximum transmission unit.

Итак посмотрим какое значение mtu у гугла, откроем командную строку и вводим следующую команду.


где, 1472=1500(стандартное значение для Ethernet) — 28 (значение заголовка, которое не учитывается)

Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-01

И смотрим ответ, если ответ получен без потери пакетов, то увеличиваем значение, если выдаст «Требуется фрагментация пакета, но установлен запрещающий флаг.», значит уменьшаем и так, пока не получим крайнее верхнее значение пакета, которое проходит до нашего сервера. У меня получилось 1500 (1472+28). Значит дальше я и буду его устанавливать в качестве значения MTU

 

Далее, вводим команду:

netsh interface ipv4 show subinterfaces

Она покажет MTU для всех сетевых подключений. Нам необходимо узнать как называется интерфейс основного сетевого подключения. Посмотреть названия можно командой

Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-04

либо в центре управления сетями.

Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-04

У меня это Ethernet, у вас же смотрите по обстановке. Но в большинстве случаев он будет называться так же.

Далее, вводим следующую команду (для ее выполнения требуется чтобы командная строка была запущена от имени администратора)

netsh interface ipv4 set subinterface «Ethernet» mtu=1492 store=persistent

Где вместо Ethernet пишем название своего интерфейса, а в значение MTU пишем полученное на первом шаге инструкции

Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-06

как отключить автоматическую настройку значения MTU для сетевых подключений:

netsh int tcp set global autotuninglevel=disabled

Чтобы включить автоматическую настройку обратно, нужно заменить disabled на normal

Как изменить значение MTU в Windows 10, Windows 8.1, Windows 7-07

После этого значение mtu будет такое как вам нужно. Вот мы с вами и разобрали как изменить mtu в Windows. Так что значение mtu теперь для вас не секрет.

Материал сайта pyatilistnik.org

Узнать значение и поменять MTU в Linux (утилита ip, /etc/network/interfaces)

MTU — maximum transmission unit -максимальный размер пакет или фрейма в байтах, который может быть отправлен единовременно без фрагментации. Узнать значение и поменять MTU в Linux можно используя утилиту ip. Чтобы изменения сохранялись после перезагрузки требуется продублировать новое значение в сетевых настройках.

 

Узнать значение MTU для всех интерфейсов можно выполнив в консоли команду ip link

ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 54:52:00:91:96:85 brd ff:ff:ff:ff:ff:ff

 

Чаще всего встречается 1500 — это значение по умолчанию для Ethernet интерфейсов.

Поменять MTU на сервере с Debian можно так:

ip link set dev eth0 mtu 1400

 

При этом начинает использоваться значение 1400, после перезагрузки эти изменения не сохранятся.

 

Чтобы сделать их постоянными нужно отредактировать файл /etc/network/interfaces

 

Для CentOS это скрипты /etc/sysconfig/network-scripts/*, для других систем иначе — для Debian также возможны варианты, но чаще всего это /etc/network/interfaces

К нужному интерфейсу достаточно дописать mtu 1400 отдельной строкой

 

Затем выполнить

ifdown $IFACE && ifup $IFACE

 

IFACE при этом заменить именем интерфейса, таким как eth0

 

Если настройки сети выдаются DHCP, то секция примет такой вид:

iface eth0 inet dhcp
pre-up /sbin/ifconfig $IFACE mtu 1454

 

 

Для сервера, к которому нет доступа по SSH MTU можно узнать экспериментальным путем. Значение может потребоваться при поиске сетевых неполадок.

 

Это делается за счет опции -M do утилиты ping.

ICMP пакеты при этом будут отправляться с заданным MTU, из ответа будет видно реальное значение.

 

ping -c 1 -s $((1600-28)) -M do ya.ru

PING ya.ru (87.250.250.242) 1572(1600) bytes of data.
ping: local error: Message too long, mtu=1500

— ya.ru ping statistics —
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

 

 

28 байт вычитается, поскольку они отданы под хэдеры IP и ICMP.

При установке 1500 байт PING проходит успешно.

 

ping -c 1 -s $((1500-28)) -M do ya.ru

PING ya.ru (87.250.250.242) 1472(1500) bytes of data.
1480 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=57 time=32.0 ms

— ya.ru ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 32.040/32.040/32.040/0.000 ms

 

Читайте про iface inet — директиву, которую можно увидеть в /etc/network/interfaces

Еще несколько слов о Path MTU Discovery Black Hole / Habr

Еще несколько слов о Path MTU Discovery Black Hole
Вместо вступления

Однажды для каждого настоящего системного администратора (или исполняющего обязанности такового) наступает момент истины. Ему выпадает судьба настроить маршрутизатор на компьютере с установленной ОС GNU/Linux. Те, кто это уже прошел, знают, что ничего сложного в этом нет и можно уложиться в пару команд. И вот наш админ находит эти команды, вбивает их в консоль и гордо идет к пользователям сказать, что уже все работает. Но не тут-то было – пользователи говорят что их любимые сайты не открываются. После траты некоторой части своей жизни на выяснение подробностей обнаруживается, что большая часть сайтов ведет себя следующим образом:

1. При открытии страницы загружается заголовок и больше ничего;
2. В таком состоянии страница висит неопределенно долгое время;
3. Строка статуса браузера все это время показывает что загружает страницу;
4. Пинги и трассировка до данного сайта проходят нормально;
5. Соединение по telnet на 80 порт тоже проходит нормально.
Обескураженный админ звонит в техподдержку провайдера, но там от него быстро избавляются, советуя попробовать настроить маршрутизатор на OC Windows, а если уж и там не работает тогда… купить аппаратный маршрутизатор.
Я думаю, эта ситуация знакома многим. Некоторые в нее попадали сами, у кого-то с ней сталкивались знакомые, а кто-то встречал таких админов на форумах и прочих конференциях. Итак: если у Вас Такая Ситуация, то — Поздравляю! Вы столкнулись с Path MTU Discovering Black Hole. Данная статья посвящается тому, отчего это бывает, и как решить эту проблему.

Термины, необходимые для понимания статьи

MTU (Maximum Transmission Unit) – этот термин используется для определения максимального размера пакета (в байтах), который может быть передан на канальном уровне сетевой модели OSI. Для Ethernet это 1500 байт. Если приходит пакет большего размера (например по Token Ring), то данные пересобираются в пакеты размером не более MTU ( т е не более 1500 байт). Операция пересборки пакетов под другой MTU называется фрагментацией (fragmentation) и является затратной для маршрутизатора.

PMTU (Path MTU) — данный параметр обозначает наименьший MTU среди MTU каналов данных, находящихся между источником и приемником.
PMTU discovery – технология определения PMTU разработанная для уменьшения нагрузки на маршрутизаторы. Описана в RFC 1191 в 1988 году. Суть технологии заключается в том, что при соединении двух хостов устанавливается параметр DF (don’t fragment, не фрагментировать), который запрещает фрагментацию пакетов. Это приводит к тому, что узел, значение MTU которого меньше размера пакета, отклоняет передачу пакета и отправляет сообщение ICMP типа Destination is unreachable (Хост недоступен). К сообщению об ошибке прилагается значение MTU узла. Хост-отправитель уменьшает размер пакета и отсылает его заново. Такая операция происходит до тех пор, пока пакет не будет достаточно мал, чтобы дойти до хоста-получателя без фрагментации.
МSS(Maximum Segment Size) — максимальный размер сегмента, т.е. самая большая порция данных, которую TCP пошлет на удаленный другой конец соединения. Рассчитывается по следующей формуле:
MTU_интерфейса – Размер_IP_заголовка(20 байт) – Размер_TCP_заголовка(20 байт). Итого обычно это 1460 байт. Когда соединение устанавливается, каждая сторона может объявить свой MSS. Выбирается наименьшее значение. Подробнее можно посмотреть здесь.
Флаг DF(Don’t fragment) – Бит в поле флагов заголовка IP пакета, который будучи установленным в единицу сообщает о том, что данный пакет запрещено фрагментировать. Если пакет с таким флагом больше, чем MTU следующей пересылки, то этот пакет будет отброшен, а отправителю посылается ICMP ошибка «фрагментация необходима, однако установлен бит не фрагментировать» (fragmentation needed but don’t fragment bit set).

Тестовый полигон

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


Рис. 1. Тестовая сеть.

Это упрощенный вариант глобальной сети. Роли:
1. Компьютер с именем deb-serv-03 представляет собой наш маршрутизатор на Linux. Внимание – на его интерфейсе eth3 размер MTU уменьшен до 1400 байт;
2. deb-serv-05 – клиент в локальной сети;
3. deb-home – маршрутизатор, расположенный у провайдера;
4. deb-serv – Веб-сервер в Интернете с которым мы хотим обмениваться данными. Получаем с www.site.local, расположенном на нем страничку размером в 5,9Кб.
Конечно, в реальности цепочка гораздо больше, но для показательного примера этого хватит. Все компьютеры данной сети работают под управлением Debian GNU/Linux 5.0 Lenny. В разных точках сети я контролирую ситуацию с помощью программы tcpdump.

Нормальное определение PMTU

Для начала посмотрим, что происходит в сети при открытии страницы. Изучаем, как пойдут пакеты с веб-сервера. Смотрим на вывод TCPDUMP#1 (на eth0 deb-serv):

1 IP 172.16.5.3.48547 > 192.168.0.1.80: Flags [S], seq 2947128725, win 5840, options [mss 1460...], length 0
2 IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [S.], seq 757312786, ack 2947128726, win 5792, options [mss 1460...], length 0
3 IP 172.16.5.3.48547 > 192.168.0.1.80: Flags [.], ack 1, win 1460, options [...], length 0
4 IP 172.16.5.3.48547 > 192.168.0.1.80: Flags [P.], seq 1:118, ack 1, win 1460, options [...], length 117

5 IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [.], ack 118, win 181, options [...], length 0
6 IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [.], seq 1:2897, ack 118, win 181, options [...], length 2896
7 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
8 IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [.], seq 1:1349, ack 118, win 181, options [...], length 1348
9 IP 192.168.0.1.80 > 172.16.5.3.48547: Flags [.], seq 1349:2697, ack 118, win 181, options [...], length 1348
10 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556

Я привожу только первые 10 пакетов и обрезал в стандартном выводе tcpdump все лишнее. Разбираем:
1. В строках с 1-ой по 3-ю мы видим установку tcp соединения. Стороны обмениваются пакетами SYN, SYN-ACK, ACK. Здесь стоит обратить внимание на поле опций, а именно на параметр MSS, которым обмениваются стороны. С обеих сторон это 1460 байт. Значит максимальный размер пакетов, которые стороны будут посылать друг другу, составит 1460(MSS)+20(TCP Заголовок)+20(IP Заголовок)=1500 байт.
2. В строке 4 отправка запроса на получение веб страницы от deb-serv-05. В строке 5 подтверждение получения данного пакета.
3. В строке 6 мы видим отправку ответа на запрос (т.е. отправку куска веб-страницы). Вероятно из-за особенностей pcap на данном интерфейсе tcpdump видит один пакет размером в 2948 байт, в то время как в сеть уйдут 2 пакета размером 1500 и 1452 байта соответственно. Если посмотреть более подробный вывод tcpdump, то увидим, что на данном пакете(точнее пакетах) стоит флаг DF:
IP (tos 0x0, ttl 64, id 5177, offset 0, flags [DF], proto TCP (6), length 2948)
192.168.0.1.80 > 172.16.5.3.48547: Flags [.], seq 1:2897, ack 118, win 181, options [nop,nop,TS val 86620459 ecr 4922429], length 2896

4. Когда эти пакеты с данными доходят до deb-serv-03 они отбрасываются, так как не могут пройти по соединению с MTU 1400 и не могут быть фрагментированы(флаг DF), а в ответ генерируется сообщение ICMP тип 3 код 4: ICMP 172.16.5.3 unreachable — need to frag (mtu 1400), которое мы видим в строке 7 ( в строке 10 приходит сообщение для 2-го пакета). В этом сообщении передается нужный MTU.
5. В строках 8 и 9 мы наблюдаем как deb-serv, получив MTU=1400, отправляет тот же самый кусок веб страницы в пакетах размером 1400 байт. Данные пакеты доходят до deb-serv-05, где генерируется подтверждение, и так повторяется до тех пор, пока вся страница не будет передана. Размер всех последующих пакетов будет не больше 1400 байт.
На этом примере демонстрируется процедура определения Транспортного MTU (PMTU), описанная в RCF1911. Я представил ее в упрощенном виде на рис 2.


Рис 2. Процедура определения PMTU.

Встреча с Path MTU Discovery Black Hole

А теперь представим, что к провайдеру пришел новый специалист и решил (например в целях защиты от icmp флуда) запретить пересылку icmp пакетов через deb-home, который теперь в его ведении. Смотрим что получается:
Вывод TCPDUMP#1 (на eth0 deb-serv):

1 IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [S], seq 1723325723, win 5840, options [mss 1460...], length 0
2 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [S.], seq 2482933888, ack 1723325724, win 5792, options [mss 1460...], length 0
3 IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [.], ack 1, win 1460, options [...], length 0
4 IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [P.], seq 1:118, ack 1, win 1460, options [...], length 117
5 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], ack 118, win 181, options [...], length 0
6 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:2897, ack 118, win 181, options [...], length 2896
7 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
8 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
9 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
10 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448

Вывод TCPDUMP#2 (на eth0 deb-serv-03):

1 IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [S], seq 1723325723, win 5840, options [mss 1460...], length 0
2 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [S.], seq 2482933888, ack 1723325724, win 5792, options [mss 1460...], length 0
3 IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [.], ack 1, win 1460, options [...], length 0
4 IP 172.16.5.3.57925 > 192.168.0.1.80: Flags [P.], seq 1:118, ack 1, win 1460, options [...], length 117
5 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], ack 118, win 181, options [...], length 0
6 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
7 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
8 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1449:2897, ack 118, win 181, options [...], length 1448
9 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
10 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
11 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
12 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
13 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
14 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
15 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
16 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
17 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
18 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448
19 IP 172.16.250.2 > 192.168.0.1: ICMP 172.16.5.3 unreachable - need to frag (mtu 1400), length 556
20 IP 192.168.0.1.80 > 172.16.5.3.57925: Flags [.], seq 1:1449, ack 118, win 181, options [...], length 1448

Как видите, ситуация вполне ожидаемая. Первые 6 строк в каждом выводе точно такие же, как и при нормальной передаче (см. описание в предыдущем примере). Но вот дальше начинаются расхождения. ICMP 3:4 точно так же генерируется на deb-serv-03 (строки 7, 9 11.13, 15, 17, 19 в TCPDUMP#2), но deb-serv его не получает и продолжает слать пакеты размером в 1500 байт(строки с 6 по 12 в TCPDUMP#1 и 6, 8, 10, 12, 14, 16, 18 и 20 в TCPDUMP#2). С каждым разом время между повторной посылкой все увеличивается (в данных примерах я отбросил временые метки, но на самом деле так работает механизм ретрансмита TCP). Никаких данных размером большим, чем PMTU, в таком случае не передать. Но увы, TCP этого не знает и продолжает слать пакеты с MSS, выбранным в момент установки соединения. Именно эта ситуация и называется Path MTU Discovery Black Hole (Черная дыра в определении транспортного MTU). Я постарался представить ее в упрощенном виде на рис. 3.


Рис. 3. Черная дыра в определении PMTU.

Эта проблема совсем не нова. Она описана в RFC 2923 в 2000 году. Но тем не менее, продолжает встречаться с завидным упорством у многих провайдеров. А ведь именно провайдер виноват в данной ситуации: не нужно блокировать ICMP тип 3 код 4. Причем слушаться «голоса разума» ( т. е. клиентов, понимающих в чем проблема) они обычно не хотят.

Решение проблемы с PMTU

Не будем звонить в техподдержку, а попробуем решить проблему, исходя из собственных средств.
Разработчики Linux, тоже знающие о ней, предусмотрели специальную опцию в iptables. Цитата из man iptables:

TCPMSS
This target allows to alter the MSS value of TCP SYN packets, to control the maximum size for that connection (usually limiting it to your outgoing interface’s MTU minus 40 for IPv4 or 60 for IPv6, respectively). Of course, it can only be used in conjunction with -p tcp. It is only valid in the mangle table. This target is used to overcome criminally braindead ISPs or servers which block "ICMP Fragmentation Needed" or "ICMPv6 Packet Too Big" packets. The symptoms of this problem are that everything works fine from your Linux firewall/router, but machines behind it can never exchange large packets:
1) Web browsers connect, then hang with no data received.
2) Small mail works fine, but large emails hang.
3) ssh works fine, but scp hangs after initial handshaking.
Workaround: activate this option and add a rule to your firewall configuration like:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu

—set-mss value
Explicitly set MSS option to specified value.

—clamp-mss-to-pmtu
Automatically clamp MSS value to (path_MTU — 40 for IPv4; -60 for IPv6).

These options are mutually exclusive.

Мой вольный перевод для тех, у кого туго с английским:

TCPMSS
Это действие позволяет изменять значение MSS в TCP SYN пакетах, для контроля максимального размера пакетов в этом соединении (Обычно ограничивая его MTU исходящего интерфейса минус 40 байт для IPv4 или минус 60 для IPv6). Конечно, это действие может использоваться только в сочетании с -p tcp. Разрешено это только в таблице mangle. Это действие используется для преодоления преступной некомпетентности провайдеров и серверов, блокирующих "ICMP Fragmentation Needed" или "ICMPv6 Packet Too Big" пакеты. Симптомы этой проблемы – все прекрасно работает на вашем сетевом экране или роутере, но машины за ним никогда не смогут обмениваться большими пакетами:
1) Веб браузеры связываются, но просто висят без пересылки данных.
2) маленькие электронные письма приходят нормально, но большие висят.
3) ssh работает отлично, но scp висит после начальных рукопожатий(прим пер: процесс установки TCP соединения также называют "тройным рукопожатием").
Решение: активировать эту опцию и добавить правило, подобное нижеприведенному, в конфигурацию своего сетевого экрана:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu

—set-mss значение
Явная установка в опции MSS специфического значения.

—clamp-mss-to-pmtu
Автоматическая установка значения MSS в (path_MTU — 40 для IPv4; -60 для IPv6).
Эти опции являются взаимоисключающими.
Как видите, много всего написали, даже описали примерные симпотомы проблемы. А такое поведение провайдеров назвали «преступной некомпетентностью(criminally braindead)», в чем я с ними полностью согласен. Давайте исследуем, как же будет работать эта опция в нашем примере. Добавляем на deb-serv-03 рекомендованное правило:
iptables -t mangle -A FORWARD -p tcp —tcp-flags SYN,RST SYN -j TCPMSS –set-mss 1360
И смотрим что получилось:
Вывод TCPDUMP#1 (на eth0 deb-serv):

1 IP 172.16.5.3.33792 > 192.168.0.1.80: flags [s], seq 1484543117, win 5840, options [mss 1360...], length 0
2 IP 192.168.0.1.80 > 172.16.5.3.33792: flags [s.], seq 2230206317, ack 1484543118, win 5792, options [mss 1460...], length 0
3 IP 172.16.5.3.33792 > 192.168.0.1.80: flags [.], ack 1, win 1460, options [...], length 0
4 IP 172.16.5.3.33792 > 192.168.0.1.80: flags [p.], seq 1:118, ack 1, win 1460, options [...], length 117
5 IP 192.168.0.1.80 > 172.16.5.3.33792: flags [.], ack 118, win 181, options [...], length 0
6 IP 192.168.0.1.80 > 172.16.5.3.33792: flags [.], seq 1:2697, ack 118, win 181, options [...], length 2696
7 IP 172.16.5.3.33792 > 192.168.0.1.80: flags [.], ack 1349, win 2184, options [...], length 0
8 IP 192.168.0.1.80 > 172.16.5.3.33792: flags [.], seq 2697:5393, ack 118, win 181, options [...], length 2696
9 IP 192.168.0.1.80 > 172.16.5.3.33792: flags [fp.], seq 5393:6380, ack 118, win 181, options [...], length 987
10 IP 172.16.5.3.33792 > 192.168.0.1.80: flags [.], ack 2697, win 2908, options [...], length 0

Вывод TCPDUMP#3 (на eth0 deb-serv-05):

1 IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [S], seq 1484543117, win 5840, options [mss 1460...], length 0
2 IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [S.], seq 2230206317, ack 1484543118, win 5792, options [mss 1360...], length 0
3 IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [.], ack 1, win 1460, options [...], length 0
4 IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [P.], seq 1:118, ack 1, win 1460, options [...], length 117
5 IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [.], ack 118, win 181, options [...], length 0
6 IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [.], seq 1:1349, ack 118, win 181, options [...], length 1348
7 IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [.], seq 1349:2697, ack 118, win 181, options [...], length 1348
8 IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [.], ack 1349, win 2184, options [...], length 0
9 IP 172.16.5.3.33792 > 192.168.0.1.80: Flags [.], ack 2697, win 2908, options [...], length 0
10 IP 192.168.0.1.80 > 172.16.5.3.33792: Flags [.], seq 2697:4045, ack 118, win 181, options [...], length 1348

Разбираем:
1. В строках 1-3 мы уже привычно наблюдаем установку TCP соединения. Но обратите внимание на значения MSS. В TCPDUMP#1 от deb-serv-05 приходит значение 1360, в то время как в TCDUMP#3 видно, что уходит пакет с MSS=1460. Именно так и работает правило с –set-mss 1360. Оно редактирует значение MSS у пролетающих пакетов. Для SYN пакета, пришедшего в ответ, это значение тоже отредактировано.
2. В строках 4 и 5 обоих выводов мы опять наблюдаем отправку GET запроса и подтверждение получения.
3. В строке 6 для TCPDUMP#1 и строках 6 и7 для TCPDUMP#3 видим отправку пакетов с данными, но теперь размер каждого из пакетов не превышает 1400 байт. Опять происходит странный глюк с TCPDUMP#1, где виден один большой пакет, в то время как в TCPDUMP#3 мы наблюдаем приход 2-х пакетов.
4. Дальнейший обмен пакетами идет в соответствии с правилами протокола TCP. Но ни разу размер пакета на превышал 1400 байт.

В упрощенном виде поведение MSS представлено на рис. 4. Я не стал показывать обмен данными, так как он аналогичен обычному поведению.

Рис. 4. Изменение MSS на лету.

Хотя в man iptables описаны две опции, но я пока примененил только одну. Нужная опция зависит от конкретной ситуации. Все ситуации можно разделить на 2 типа:

1. На вашем маршрутизаторе сайты открываются нормально, у клиентов в локальной сети наблюдаются проблемы.
В этом случае наименьший MTU на всем пути находится именно на вашем сервере. Обычно это некие протоколы инкапсуляции, типа PPPoE, PPtP и тд. Для данной ситуации лучше всего подойдет опция –clamp-mss-to-pmtu, которая автоматически установит минимальный MSS на все транзитные пакеты.

2. На вашем маршрутизаторе и у клиентов в локальной сети сайты не открываются.
В таком случае наименьший MTU находится где-то у провайдера и вычислить его стандартными средствами сложновато. Специально для этого я написал небольшой скрипт на python(не особо заботясь о PEP8 и невозможности выстрелить в ногу), который поможет определить необходимый размер MSS для данной ситуации:

#!/usr/bin/env python
# -*-coding: utf-8 -*-

import socket
import os
import time
import sys


# Полное имя веб сервера на котором проводятся испытания. Следует выбирать из
# сайтов, которые точно не работают.
HOST = 'www.site.local'
# Временной интервал, в течении которого следует ожидать ответа от сайта.
# Слишком маленькое значение может породить ложные срабатывания, слишком
# большое - долгое время работы скрипта.
TIMEOUT = 25.0
# Количество байт, которые надо получить с веб сервера, чтобы убедится что он
# наверняка работает. Рекомендуется устанавливать большим нежели значение MTU
BUF = 3000
# Значение MTU на интерфейсе в интернет.
MTU = 1500
# Значение MSS будет искаться в пределе от MTU-LIM-40 до MTU-40. Запрещено
# ставить значение больше MTU и не рекомендуется ставить значения более чем
# 100-200 - это может привести к большому времени работы скрипта.
LIM = 100
# Задержка между обращениями к сайту. Рекомендуется устанавливать отличной от
# нуля на медленном канале.
TRY_TIME = 0


def set_mss(mss, action='A'):
    return os.system("iptables -t mangle -%s OUTPUT -p tcp --tcp-flags \
            SYN,RST SYN -j TCPMSS --set-mss %d" % (action, mss) )


def check_connection(host):
    sock = socket.socket()
    sock.connect( (host, 80) )
    sock.send('GET / HTTP/1.1\r\nHost: %s\r\n\r\n' % host)
    sock.settimeout(TIMEOUT)
    try:
        answer_size = len( sock.recv(BUF) )
    except:
        answer_size = 0
    sock.close()
    return answer_size


def main():
    mss = MTU - 40
    if not check_connection(HOST):
        mss = MTU - 40 - LIM
        set_mss(mss)
        if not check_connection(HOST):
            set_mss(mss,'D')
            print "Error: Too small LIM"
            sys.exit(1)
        else:
            while check_connection(HOST):
                time.sleep(TRY_TIME)
                set_mss(mss,'D')
                if mss >= MTU-40:
                    print "Error in determining MSS"
                    sys.exit(1)
                mss += 1
                set_mss(mss)
            set_mss(mss,'D')
            mss -= 1
    print 'MSS = %d' % (mss)


if __name__ == '__main__':
    main()
    sys.exit(0)

Запускать скрипт нужно с правами суперпользователя. Алгоритм его работы таков:
1. Пытаемся получить некоторое количество данных с сайта с нормальным значением MSS.
2. Если это не получается, то понижаем MSS на iptables цепочке OUTPUT до MTU — 40 – LIM.
3. Если и после этого мы не можем получить данные, то выдаем ошибку о том, что LIM имеет слишком маленькое значение.
4. Последовательно наращивая MSS, ищем тот момент, когда данные перестанут поступать. После этого выводим последнее рабочее значение MSS.
5. Если мы дошли до MSS=MTU-40, то выводим ошибку о том, что не можем определить MSS. Данная ситуация является ошибочной, т. к. в пункте 1 проводим аналогичную проверку, и, если результаты не совпадают, это повод задуматься.

После получения нужного MSS необходимо вписать его в соответствующее правило. Можно обойтись и без скрипта, на глаз понизив значение MSS, но лучше выяснить его точно – меньше накладые расходы на пересылку пакетов.

Часто на форумах можно встретить советы понизить MTU на том или ином интерфейсе. Нужно понимать, что это не панацея, и результат зависит от того, на каком интерфейсе понижать. Если понизим на одном из интерфейсов участников TCP соединения, то это принесет эффект, так как заявленная MSS будет соответствовать минимальному размеру пакета. Но если это будут не конечные точки, а один из транзитных маршрутизаторов, то без включения опции —clamp-mss-to-pmtu никакого эффекта не будет.

Надеюсь данная статья поможет Вам решить подобную проблему как у себя, так и у ваших друзей и знакомых. Еще раз обращаюсь к специалистам провайдеров – БЕЗ КРАЙНЕЙ НЕОБХОДИМОСТИ НЕ БЛОКИРУЙТЕ ICMP ТИП 3 КОД 4 – этим вы создаете проблемы вашим колегам.

Mtu size – что это?

.

MTU — Maximum Transmission Unit (MTU), что по русски означает, как максимальный блок данных для канала.

Помните, что «возможно», это не «обязательно»… и эта статья не претендует на панацею от всех проблем!

Что можно сделать? Как проверить и узнать что дело именно в MTU?

Проверяем необходимость изменения параметра MTU в нашем случае.

Нажмите «Пуск», «Выполнить», введите cmd. Вводим — ping -f -l 1492 адрес любого узла, например www.ya.ru

·          Если получили ответ такого формата:

ping –f –l 1492 xxx (любой узел)

Обмен пакетами с xxx с 1492 байт данных:

Ответ от xxx: число байт=1492 время=83мс TTL=250

Ответ от xxx: число байт=1492 время=66мс TTL=250

Ответ от xxx: число байт=1492 время=119мс TTL=250

Ответ от xxx: число байт=1492 время=157мс TTL=250

Статистика Ping для xxx:

Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь)

Приблизительное время приема-передачи в мс:

Минимальное = 66 мсек, Максимальное = 157 мсек, Среднее = 106 мсек

То данный материал нас совсем не интересует, т.к. это был пример ответа команды «ping», при прохождении пакетов через узлы, не требующие фрагментации.

·          Если получили такой ответ:

ping -f -l 1492 xxx (любой узел)

Обмен пакетами с xxx с 1492 байт данных:

Превышен интервал ожидания для запроса.

Превышен интервал ожидания для запроса.

Превышен интервал ожидания для запроса.

Превышен интервал ожидания для запроса.

Статистика Ping для xxx:

Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь)

То смотрим наличие активного Firewall (фаервола), как встроенного в Вашу операционную систему, так и сторонних разработчиков. Наличие прокси – сервера, шлюза.

MTU в роутере — что это? Увеличиваем скорость Интернета

При настройке модема роутером, может быть слишком жёстко настроили фильтрацию пакетов или, что маловероятно, закрытием эхо — ответов Вашим провайдером. Либо введённый нами адрес не корректен.

·          Если получили ответ такого формата:

ping -f -l 1492 xxx (любой узел)

Обмен пакетами с xxx с 1492 байт данных:

Требуется фрагментация пакета, но установлен запрещающий флаг.

Требуется фрагментация пакета, но установлен запрещающий флаг.

Требуется фрагментация пакета, но установлен запрещающий флаг.

Требуется фрагментация пакета, но установлен запрещающий флаг.

Статистика Ping для xxx:

Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь)

То пробуем уменьшать размер MTU, подбирая оптимальное число, при котором получим ответ из первого примера.

Т.е. ping -f -l 1492 www.ya.ru (как пример, адрес может быть другим)

Флаг -f указывает, что фрагментировать этот пакет нельзя, поэтому если никто по пути не блокирует icmp, вернется сообщение об ошибке.

Методом перебора значения в ключе -l, можно узнать максимальное значение mtu.

Корректировка параметра MTU под наши условия:

Первый способ.

Получив требуемое нам число (обычно порядок цифр где-то в районе 1460), идём по ссылке http://support.microsoft.com/kb/314053/ru , где читаем статью «Параметры конфигурации TCP/IP и NBT для Windows XP» и настраиваем параметр MTU. Всю статью приводить не имеет смысла, но ознакомиться рекомендуется, или кратко:

Нажмите «Пуск», «Выполнить», введите regedit, затем нажмите OK, чтобы запустить редактор реестра.

Далееоткрываем:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325—11CE-BFC1—08002bE10318}

В этой ветви будут содержаться подразделы 0001, 0002, и т.д. Внимательно просмотрите содержимое этих подразделов и остановитесь на том, у которого значение параметра «DriverDesc» аналогично названию Вашей сетевой карты, через которую Вы подключены к интернету.

В этом подразделе, найдите и запомните номер «NetCfgInstanceId».

Теперь найдите ЭТОТ номер в следующем разделе реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

Сделайте двойной щелчок на параметре «MTU» и введите Ваше полученное значение (например 1400 — десятичное)

Закройте редактор реестра и перезагрузите компьютер.

Если параметра «MTU» нет, создайте его. Для этого выберите меню «Правка» вверху, щелкните «Создать», затем «DWORD». Введите «MTU» и нажмите «ENTER». Сделайте двойной щелчок на параметре «MTU» и введите значение «1400» (десятичное), после чего нажмите «OK».

Второй способ.

Скачиваем программу «SGTCPOptimizer» по данной ссылке. Размер её 596 кб. Программа бесплатная.

Запускаем программу, заходим на вкладку «LargestMTU», в поле «URL» пишем интересующий нас сайт или оставляем адрес по умолчанию, нажимаем «START», на запрос отвечаем «да» и смотрим процесс, а затем и результат.

Переходим в первое меню «GeneralSettings», нажимаем на кнопочку внизу страницы- «Customsettings», тем самым, выбрав выборочные (заказные) настройки. В поле «NetworkAdapterselection» выбираем наш интерфейс, через который подключены к Интернету, в поле «MTU» вводим наш параметр MTU, полученный на предыдущей вкладке программы. Применяем сделанные настройки кнопкой «Applychanges».

Программа предложит Вам сделать резервную копию изменений, не задумывайтесь – делайте всегда!

Всё, перегружаем машину, смотрим результат.

Примечание.

Работоспособность программы тестировалось под ОС WindowsXPSP2.

По заявлению производителей, программа поддерживает Windows-9x/ME/2K/XP/XP-SP2/2k3.

По отзывам пользователей форума www.es-nso.ru/forumданное П.О. работает и под О.С. Vista.

Существуют функционально аналогичные программы, возможно ничем не хуже, может и лучше описанной выше.

Например: TweakDUN, MTU-Speed, DrTCP.

Полезные ссылки по теме:

http://support.microsoft.com/kb/314053/ru — Параметры конфигурации TCP/IP и NBT для WindowsXP;

http://www.speedguide.net/analyzer.php — страница на которой Вы можете проверить свои параметры, такие как IP адрес, MTU, MSS, RWIN и т.д., в том числе получить совет по оптимизации своего соединения;

http://www.speedguide.net/ — официальный сайт программы SGTCPOptimizer;

P.S.

Отмечу, что на момент написание данной статьи, большая часть модемов не была замечена в некорректной работе с параметром MTU, да и возможность изменения этого параметра присутствует практически у всех модемов, либо через WEB интерфейс, либо через telnet. Исключение составляет модем ZTE 831 Series. Остаётся надеяться, что производитель исправит невозможность изменения параметра MTU, в следующих версиях прошивки.

Автор: constanta

Правки: hex

Остались вопросы? Задай их здесь!

Как изменить значение MTU в Windows 10, 8.1, 8, 7, Vista, инструкция

Логотип Windows

Добрый день. Сегодня не совсем обычная статья, так как она не является повседневной и не подойдет для любого пользователя. Более того, я крайне не рекомендую лезть в данные параметры людям, которые слабо в техническом плане. Речь идет о MTU, что в википедии описано как «максимальный размер полезного блока данных одного пакета (англ. payload), который может быть передан протоколом без фрагментации.» То есть это размер полезной информации в пакете, который компьютер формирует для отправки в сеть.

Последовательность действий

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

  1. Итак, для начала открываем командную строку от имени администратора и вводим следующую команду: ping -f -l 1472 ххх.ххх.ххх.ххх, где, 1472=1500(стандартное значение для Ethernet) — 28 (значение заголовка, которое не учитывается) ххх.ххх.ххх.ххх — IP-адрес какого-либо сервера вашего провайдера. Я использовал основной шлюз в сети провайдера. И смотрим ответ, если ответ получен без потери пакетов, то увеличиваем значение, если выдаст «Требуется фрагментация пакета, но установлен запрещающий флаг.», значит уменьшаем и так, пока не получим крайнее верхнее значение пакета, которое проходит до нашего сервера. У меня получилось 1492 (1464+28). Значит дальше я и буду его устанавливать в качестве значения MTU.

    Открываем командную строку от имени администратора и вводим команду ping -f -l 1472 ххх.ххх.ххх.ххх

  2. Далее вводим команду: netsh interface ipv4 show subinterfaces.

    Она покажет значение MTU для всех сетевых подключений. Нам необходимо узнать как называется интерфейс основного сетевого подключения. У меня это Ethernet, у вас же смотрите по обстановке. Но в большинстве случаев он будет называться так же.

    Вводим команду: netsh interface ipv4 show subinterfaces

  3. Далее вводим следующую команду(для ее выполнения требуется чтобы командная строка была запущена от имени администратора): netsh interface ipv4 set subinterface «Ethernet» mtu=1492 store=persistent.

    Где вместо Ethernet пишем название своего интерфейса, а в значение MTU пишем полученное на первом шаге инструкции.

    Вводим команду netsh interface ipv4 set subinterface "Ethernet" mtu=1492 store=persistent

  4. Ну и напоследок отключим автоматическую настройку значения MTU для сетевых подключений: netsh int tcp set global autotuninglevel=disabled.
  5. Чтобы включить автоматическую настройку обратно, нужно заменить disabled на normal.

    Отключим автоматическую настройку значения MTU для сетевых подключений: netsh int tcp set global autotuninglevel=disabled Чтобы включить автоматическую настройку обратно, нужно заменить disabled на enabled

На этом всё. Надеюсь эта статья оказалась вам полезной, нажмите одну из кнопок ниже, чтобы рассказать о ней друзьям. Также подпишитесь на обновления сайта, введя свой e-mail в поле справа или подписавшись на группу в Вконтакте.

Спасибо за внимание!

Посещаем страницу moto.skesov.ru

Материал сайта Skesov.ru

Оцените статью:

(20 голосов, среднее: 4.5 из 5)

Поделитесь с друзьями!

Значение mtu в роутере

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

MTU – что это?

MTU (от англ. Maximum transmission unit) – это максимальный объем данных, передаваемый по сети без дальнейшего фрагментирования (одним пакетом). Любая информация, объем которой превышает значение MTU, автоматически разбивается на небольшие блоки данных перед отправкой по сети. Возможные значения MTU зависят от используемого типа подключения к сети. Так, при использовании PPoE (в основном с ADSL и подобными технологиями) максимальное значение параметра MTU составляет 1492 байта (стандартные 1500 байт для Ethernet минус восемь байт заголовков), а при использовании Wi-Fi MTU может достигать 2304 байт.

В современных ОС оптимальное значение MTU зачастую вычисляется самой системой или берется из настроек маршрутизатора (обычно значение MTU задается в разделе WAN сетевых настроек устройства). Если проблем с доступом к Интернету не наблюдается, значение MTU лучше не менять. Однако, если возникли проблемы со связью и вы предполагаете, что они могут быть связаны с фрагментацией сетевых пакетов, попробуйте изменить значение MTU.

Сделать это можно не только через изменение соответствующей настройки маршрутизатора, но и средствами операционной системы. Перед тем как менять MTU, необходимо рассчитать оптимальное значение этого параметра. Расскажем, как это делается.

Рассчитываем значение MTU

Найти оптимальное значение MTU можно с помощью старой-доброй команды ping. Предположим, что мы определяем значение этого параметра для проводного подключения. Открываем командную строку Windows и пишем такую команду:

В Linux команда обычно имеет вид ping -M do -s 1472 www.google.com, а в macOS ping -D -s 1472 www.google.com (в некоторых версиях систем ключи могут отличаться, рекомендуем обратиться к man ping, если команда не работает). В данном случае мы отправляем по адресу www.google.com пакеты размером 1472 байта и запрещаем фрагментировать данные. Если пакеты такого размера не могут быть отправлены, команда сообщит, что необходима фрагментация пакета. Перезапустите эту команду несколько раз, постепенно уменьшая размер пакета на 8–10 байт. В итоге после нескольких попыток вы подберете значение размера, при котором отсылка данных состоится. Помните: если используется беспроводное подключение, размер пакета может быть больше 1500 байт.

Запомните полученное значение и прибавьте к нему 28 байт (длина служебных заголовков). Получившееся значение – это оптимальное (или близкое к оптимальному) значение MTU для вашей сети.

Устанавливаем значение MTU

Теперь вы знаете, какое значение MTU можно использовать в вашей домашней сети. Укажем операционной системе, что необходимо использовать именно его (дальнейшие примеры иллюстрируют настройку сети IPv4).

В Windows открываем командную строку с правами администратора и выполняем команду:

netsh interface ipv4 show subinterfaces

На экране появится список всех сетевых подключений, их названия и текущий размер MTU. Запоминаем название нужного нам подключения и пишем следующую команду:

netsh interface ipv4 set subinterface Ethernet mtu=1450 store=persistent

Здесь Ethernet – название интерфейса (может быть другим), 1450 – выбранный размер MTU. Если название состоит из нескольких слов, его надо указывать в кавычках.

Для отключения автоматической настройки MTU можно выполнить команду:

netsh int tcp set global autotuninglevel=disabled

Включить автоматическое определение MTU можно той же командой с параметром autotuninglevel=normal.

Если необходимо сбросить настройки к исходному состоянию, выполняем команду:

В Linux настройка MTU осуществляется с помощью команды ip. Посмотрим текущее значение MTU:

А далее установим желаемое значение:

Здесь eth0 – название интерфейса, оно может быть другим на вашем компьютере. Для того чтобы выбранное значение MTU использовалось постоянно при каждом входе в систему, необходимо прописать значение в файл /etc/network/interfaces, либо создать модуль для systemd. Рекомендуем обратиться к документации используемого дистрибутива для получения более подробной информации.

В macOS посмотреть размер MTU для подключения en0, а затем установить значение параметра можно в терминале:

networksetup -setMTU en0 1450

Вы можете указать размер MTU и в настройках маршрутизатора. Во многих моделях роутеров соответствующая настройка находится в разделе WAN. Более подробную информацию можно получить на сайтах производителей сетевого оборудования.

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

Когда постоянно происходят сбои при подключении к интернету, многие идут на решительные меры. Они меняют роутер, меняют провайдера. Одна из причин возможных неполадок – не корректно выставленное значение MTU. Давайте разберемся, что это такое и как его правильно выставить.

MTU в роутере что это

Значение MTU (Maximum Transmission Unit) указывает, какого максимального размера пакеты отправляет устройство. Измеряется в байтах. То есть, если на роутер пришел блок данных большего размера, то он его нарежет на несколько пакетов (фрагментирует). Эти пакеты будут идти по сети, и если встретится на их пути маршрутизатор, который посчитает их слишком большими, он тоже их нарежет. Когда они достигнут последнего маршрутизатора, он, в свою очередь, перед отправкой на компьютер получателя, будет из фрагментированных пакетов собирать в исходные.

Все эти манипуляции по нарезке и сборке пакетов трудоемки. Соответственно, желательно выставлять оптимальное значение MTU на роутере.

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

Какой MTU поставить на роутере

Самый простой способ, это обратиться в службу поддержки провайдера (написать письмо, позвонить). Скорее всего, они подскажут актуальное значение. Но через некоторое время, провайдер может все переконфигурировать. Хотя это случается достаточно редко, но если вдруг начали возникать сбои, вполне вероятно, что следует уточнить правильность выставленного MTU.

Второй вариант, это найти оптимальный размер с помощью команды ping, отправляя пакеты, в которых установлено, что их нельзя фрагментировать. Пинговать следует удаленный ресурс, например, сайт или сервер провайдера.

Можно так же проверить наиболее посещаемые ресурсы в интернете: игровые сервера, сервера с которых смотрите фильмы, используемые IP телефоном.

Пример команды «ping -f -l 1472 yandex.ru», здесь:

  • 1472 – это количество отправляемых байт данных. Следует учитывать, что помимо данных, будет отправлен еще и заголовок, который составляет 28 байт (IP заголовок 20 + ICMP заголовок 8 = 28). Следовательно, в итоге размер пакета будет составлять 1472+28=1500 (байт), стандартный размер максимального стандартного Ethernet пакета. Есть правда пакеты большего размера, называемые jumbo-кадрами.
  • yandex.ru – это доменное имя сервера, на который будем отправлять команды, его можно поменять на IP адрес сервера провайдера. Можно поэкспериментировать с разными IP-адресами.

В итоге, выполнив такую команду, мы определим, требуется ли фрагментация пакета для доставки его к получателю.

Запускаем командную строку (это классическое приложение Windows, найти его можно, например, в поиске набрав «Командная строка»). И выполняем команды.

Здесь значении данных 997 байт, размер пакета 997+28=1025 байт, пакет не может быть доставлен без фрагментации.

Здесь значении данных 996 байт, размер пакета 996+28=1024 байт, пакет доходит до получателя без фрагментации.

Таким образом, изменяя размер отправляемого блока данных, мы можем вычислить DMTU – максимальный размер блока данных, который доставляется без фрагментации. Например, если команда ping проходит без фрагментации со значением 996. При попытке отправить команду со значением 997 получаем ответ: «Требуется фрагментация пакета, но установлен запрещающий флаг». Тогда мы рассчитываем параметр DMTU следующим образом: 996 байт данных + 28 байт IP заголовка = 1024 байта. Максимальный размер блока данных, который не будет фрагментирован, составит 1024 байта. Это значение и следует задать на маршрутизаторе, как размер MTU.

Как поменять MTU на роутере

Подключаемся к маршрутизатору через интернет браузер. Выставляем новый размер MTU. Затем сохраняем настройки.

Например, при использовании TP-Link, заходим в пункт «Сеть», там подпункт «WAN». Не забываем нажать после этого кнопку «Сохранить».

После изменения значений, можно проверить, насколько изменилась скорость скачивания файлов большого размера из интернета.

Настройка MTU на компьютере

Для увеличения производительности, чтобы на маршрутизатор не приходили слишком большие пакеты, возможна настройка MTU на оборудовании. В частности, можно выставить размер MTU на персональном компьютере, требуется воспользоваться командной строкой, запущенной от имени администратора:

  1. Определим текущее значение MTU. В командной строке выполнить команду «netsh interface ipv4 show subinterfaces». В строке ответа напротив Ethernet видим, что текущий параметр MTU, составляет 1500
  2. Установим новое значение. В командной строке следует выполнить команду, например, если необходимо заменить на 1024, то она будет выглядеть следующим образом: «netsh interface ipv4 set subinterface “Ethernet” mtu=1024 store=persistent»
  3. Проверяем, что новое значение установилось

После данной установки на компьютере, с него будут отправляться пакеты, у которых максимальный размер на уровне IP будет 1024 байта, но на MAC уровне максимальный отправляемый блок данных будет размером 1038 байт (14 из них для заголовка MAC).

Большего размера пакеты не будут отправляться. То есть, если в настройках роутера рассчитан и правильно выставлен MTU 1024, то точно такой же MTU следует задать в настройках подключенного к нему компьютера.

Автоматическая настройка – PMTU discovery

Существуют режимы работы некоторых устройств, когда размер MTU уточняется во время подключения к удаленному серверу (PMTU discovery). Алгоритм такой же, как и тот, которым пользовались при настройке MTU на роутере. В начале работы устройство отправляет блоки данных разного размера, пытаясь определить максимальный размер пакета, который дойдет без фрагментации.

В этом алгоритме есть одна проблема, называемая «MTU Discovery Black Hole». Она возникает в случае, когда администраторы сетей, чтобы избежать возможных атак на их сервера, запрещая маршрутизаторам передачу ICMP, в частности которые используются при команде ping.

Так конечно не корректно действовать. Устройство, не получив ответа на запрос не может продолжить работать.

Роутер для раздачи проводного интернета по Wi-Fi установлен практически в каждой современной квартире. Чаще всего пользователи настраивают маршрутизатор единожды, используя помощник по автоматической настройке, после чего не изменяя опции устройства. Подобная позиция не всегда правильная, и зачастую автоматическая настройка Wi-Fi роутера не позволяет добиться максимально качественного соединения с интернетом. Одной из опций в настройках маршрутизатора, которой пользователи не уделяют должного внимания, является MTU. В рамках данной статьи рассмотрим, что такое MTU в настройках роутера, и какое значение нужно выставить для оптимальной работы интернета.

Что такое MTU в настройках роутера

MTU (maximum transmission unit) – это максимальный уровень передачи данных в сети. Говоря другими словами, MTU является протоколом канального типа, который определяет максимальное число битов с полезной информацией, помещающихся в один сетевой пакет. Данные пакеты сведений передаются от провайдера к пользователю, то есть от серверов к клиенту. В пакете данные передаются без фрагментации, за счет чего удается увеличить скорость передачи данных по защищенным каналам связи.

Если не вдаваться в подробности, то можно сказать, что параметр MTU отвечает за качество передачи информации от провайдера к компьютеру пользователя. При этом под качеством понимается не только исключение вероятности потери данных при передаче, но и скорость.

Почему нужно ограничить размер MTU в настройках роутера

В большинстве современных роутеров размер передаваемых MTU определяется автоматически, и делается это не всегда правильно. Пользователям, которые заботятся о качестве и скорости соединения, рекомендуется самостоятельно ограничить размер MTU, определив его оптимальное значение и установив его в настройках маршрутизатора.

Благодаря правильно выставленным настройкам MTU удается:

  • Расширить канал передачи, за счет чего им одновременно смогут пользоваться различные службы, программы, процессы и так далее;
  • Избавить канал от лишней нагрузки, что увеличит скорость передачи данных;
  • Снизить практически до нуля шанс получения «испорченных пакетов» с данными при передаче по сети.

В целом, при правильно выставленных ограничениях MTU удается рационально использовать предлагаемый провайдером канал связи, с минимальным риском потери информации.

Правильная настройка MTU необходима, если имеются проблемы с интернетом на компьютере, например: долго загружаются сайты, высокий пинг при подключении к сторонним серверам, загрузка файлов из интернета время от времени беспричинно обрывается и возникают другие проблемы.

Какое значение MTU нужно выставить

Чтобы определить оптимальное значение MTU, нужно провести тестирование сети, что можно сделать с компьютера под управлением Windows. В ходе тестирования потребуется определить, как много времени уходит для передачи и возврата пакета с данными от используемого компьютера до сервера. При этом в ходе теста нужно будет варьировать количество байт информации, содержащейся в пакете. Снижать число байт потребуется до того момента, пока не удастся полностью исключить фрагментацию пакета.

Выполните тестирование сети следующим образом:

  1. Запустите командную строку Windows от имени администратора;
  2. Далее введите тестовую команду, например, для отправки запроса на сервер нашего сайта okeygeek. Выглядеть команда будет следующим образом:

В данной команде заменит XXXX на значение MTU. Как было отмечено выше, данное значение необходимо варьировать, в поиске идеального. Рекомендуем начать с MTU в 1500, то есть первой командой будет:

  • После выполнения команды, в строке отобразится результат. Будет указано, какое количество пакетов отправлено, получено и потеряно. Нужно добиться, чтобы потеряно было не более 10% пакетов.
  • Путем подбора определите оптимальное значение MTU, в нашем случае оно равно 1472 байтам.
  • Обратите внимание: Чаще всего оптимальное значение MTU находится в пределах от 1500 до 1400 байт.

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

    В среднем, на заголовок и запрос требуется 28 байт. Соответственно, идеальное значение в рассматриваемом случае будет:

    1472 байта + 28 байт = 1500 байт

    Значение 1500 потребуется прописывать в настройках роутера.

    Важно отметить, что максимально допустимые значения напрямую зависят от протокола передачи данных, который используется:

    • PPPoE – 1420 байт;
    • Dynamic/Static IP – 1500 байт;
    • L2TP – 1460 байт.

    Значение, определенное выше в ходе расчетов, не должно превышать максимально допустимое. Если оно его превышает, возникнут еще более серьезные проблемы с работой интернета.

    Почему нельзя точно определить объемы мту. Что такое MTU? Как изменить MTU в настройках роутера

    Многие пользователи сети интернет, для подключения к которой используются защищённые соединения со стороны провайдеров, могут ощущать дискомфорт в работе, связанный с невозможностью открытия некоторых интернет-ресурсов. Устранение проблемы порой решается радикально — меняется роутер или провайдер, однако существует высокая вероятность исправить ситуацию самостоятельно, произведя настройку всего одного параметра под названием MTU в роутере. Что это такое, как найти и правильно настроить — вопросы, которые рассмотрены в данной статье.

    Внесение ясности

    Для повышения скорости интернета по используется пакетная передача данных. Ведь нет смысла отправлять и получать информацию по каждому биту, загружая канал. Поэтому была создана технология, позволяющая собирать поток данных в специальный пакет, который передаётся на расстояния. При получении пакета конечный компьютер его просто распаковывает и получает исходные данные. В процессе пользования такой системой были выявлены ограничения, которые вели к потере скорости при увеличении размера пакета. Благодаря чему ввели соответствующий стандарт — максимально передаваемый пакет для оборудования (Maximum Transmission Unit), а сокращённо MTU, в роутере. Что это, понятно, осталось выявить причины, из-за которых данный стандарт работает некорректно.

    Паранойя или безопасность

    Естественно, любой стандарт предусматривает решение проблем в Для MTU была разработана специальная фрагментация, которая позволяла на низком уровне изменять размер пакета по просьбе конечного компьютера в сети. Сама просьба выполнялась на транспортном уровне TCP с помощью протокола ICMP, задачей которого является передача служебных сообщений. Протоколы канального уровня при невозможности принять пакет отправляют сообщение о невозможности этого. Отправитель уменьшает размер посылки и отправляет заново. Однако не всегда это работает. Ведь очень часто интернет-ресурсами управляют очень ленивые администраторы, которые, вместо того чтобы производить тонкую настройку системы безопасности, идут по лёгкому пути, отключая, на их взгляд, ненужные протоколы. Естественно, ICMP входит в их число. А нет сообщения — нет проблемы, конечный пользователь по чьей-то вине пользуется оплаченной услугой не в полном объёме.

    Отличный ping-показатель

    И чтобы навсегда ушли сомнения, которые поселяет в сознании пользователя служба технической поддержки любого провайдера, нужно знать важный факт — команда ping — не показатель. Так как его первостепенной задачей является проверка доступности ресурса, но не качества канала связи. В этом можно убедиться самостоятельно, выполнив в командной строке ping ya.ru. Ответ конечного сервера сообщит о том, что пакет размером 32 байта был принят. А если отправить пакет, установленный стандартом в 1500 байт? Команда будет выглядеть так: ping ya.ru -f -l 1500. Где l — размер, пакета, а f — запрет фрагментации. Могут появиться проблемы, начиная от невозможности принятия, заканчивая потерями на канале. Беря во внимание, что вся информация, получаемая из сети интернет, передаётся большими пакетами, доверять проверку канала нецелесообразно. В данном случае размер пакета — не что иное, как значение MTU, редактирование которого может улучшить работу интернета.

    Leave a comment