Mturoute как пользоваться
Есть две точки, связанные через EzVPN.
Внутри канала на первый взгляд всё хорошо. Ходят длинные пинги. Например:
ping server -t -l 20000
Ходит rdp.
Но при попытке открыть корпоративный портал ( http://server/portal ), загрузка страницы начинает тормозить и в итоге не проходит (загружается только логотип и заголовок). Хотя сертификаты https-сессий и маленькие странички (наподобие дефолтового апачевского It works!) проходят.
Ограничений траффика между точками нет.
Подскажите что может быть не так?
Если бы были проблемы с MTU, то и длинные пинги не проходили. Так ведь?
Зарегистрирован: 14 май 2009, 12:57
Сообщения: 2067
Откуда: Волгоград
sadm писал(а):
Есть две точки, связанные через EzVPN.
.
Если бы были проблемы с MTU, то и длинные пинги не проходили. Так ведь?
На внутреннем интерфейсе что-нибудь типа ip tcp adjust-mss 1408 пробовали?
Зарегистрирован: 01 янв 1970, 03:00
Сообщения: 95
_2e_ писал(а):
sadm писал(а):
Есть две точки, связанные через EzVPN.
.
Если бы были проблемы с MTU, то и длинные пинги не проходили. Так ведь?
На внутреннем интерфейсе что-нибудь типа ip tcp adjust-mss 1408 пробовали?
Пробовал на внутреннем, на внешнем, на туннельном — не помогает.
Зарегистрирован: 14 май 2009, 12:57
Сообщения: 2067
Откуда: Волгоград
sadm писал(а):
Пробовал на внутреннем, на внешнем, на туннельном — не помогает.
Зарегистрирован: 01 янв 1970, 03:00
Сообщения: 176
У меня так:
на тоннельных интерфейсах заданы ip mtu и ip tcp adjust-mss, также активирован PMTUD
на локальном интерфейсе ip unreachables не отключен (на внешних вырублен).
Всё работает ок.
Зарегистрирован: 01 янв 1970, 03:00
Сообщения: 176
Да, и ещё, пробуйте с разных ОС.
P.S. Если ничего не поможет правьте в реестре MTU.
P.P.S.S. Вы неправильно проверяли проходимость длинных пингов, надо запрещать фрагментирование. -f
А ещё лучше пользовать утиль mturoute, она сама покажет MTU. Рекомендую всем.
Зарегистрирован: 01 янв 1970, 03:00
Сообщения: 492
sadm писал(а):
Есть две точки, связанные через EzVPN.
Внутри канала на первый взгляд всё хорошо. Ходят длинные пинги. Например:
ping server -t -l 20000
Если бы были проблемы с MTU, то и длинные пинги не проходили. Так ведь?
Если речь идёт о windows-директиве, то для проверки mtu используйте ping с ключом -f. Команда «ping server -t -l 20000» пошлёт серию icmp-пакетов, которые сетевой картой (из-за соот.ключа в реестре) будут дробиться на 1500 байт — мы так на cisco-курсах проверяли ОС прокси (максимально разрешённый размер пакета). У меня была описанная вами проблема в филиале — помогло снижение mtu через опцию в VPN-клиенте Cisco.
Супермодератор
Зарегистрирован: 01 окт 2008, 12:24
Сообщения: 4439
А на циске кроме ВПН никакого ip inspect или ZBF не настроено случаем?
Зарегистрирован: 01 янв 1970, 03:00
Сообщения: 95
Всем спасибо. Проблема решена. Указан правильный размер MTU на внутреннем интерфейсе.
Действительно на винде нужно было использовать ключ -f чтобы определить размер пакета и накинуть 28 байт заголовка.
Утилита mturoute странная — MTU она определяла с достаточно большим разбросом по разным хостам сети. Но «пристрелляться» она помогает.
ip inspect и zbf не включено.
В процессе игр с MTU возникло несколько непонятных моментов. Может кто-нибудь сможет их прояснить?
Во-первых непонятно чем mtu отличается от ip mtu на интерфейсе (синонимы?).
Во-вторых не до конца понял зачем нужен ip tcp adjust-mss (для того, чтобы сообщать сопредельным хостам наше MTU?).
В-третьих поймал непонятную ситуацию, когда на внутреннем интерфейсе циски стоит
ip mtu 1380
, на разные хосты на другом конце VPN-канала проходят пинги разного максимального размера
на первый сервер проходит
ping 10.0.0.15 -t -l 1352 -f
на второй
ping 10.0.0.91 -t -l 1362 -f
(пингуем с windows XP, опция -l — размер тела пакета, без заголовка):
Может быть такой вариант, что в первом случае заголовок пакета — 28 байт, во втором — 18.
Зарегистрирован: 01 янв 1970, 03:00
Сообщения: 184
IP MTU указывает максимальный размер для IP-пакетов.
С Cisco.com:
Changing the MTU value (with the mtu interface configuration command) can affect the IP MTU value. If the current IP MTU value is the same as the MTU value, and you change the MTU value, the IP MTU value will be modified automatically to match the new MTU. However, the reverse is not true; changing the IP MTU value has no effect on the value for the mtu command.
На некоторых интерфейсах можно менять только ip mtu.
MSS — параметр TCP, указывает максимальный размер передаваемого сегмента.
При установлении соединения, каждая сторона предлагает свой MSS, из них выбирается наименьший.
Когда дана команда ip tcp adjust-mss, маршрутизатор подменяет MSS в каждой сессии.
Получается, что удаленная сторона начинает упаковывать данные в меньшие tcp-сегменты, и тем самым уменьшает размер IP-пакета.
MSS нужно ставить, как IP MTU — 40 (размер заголовков TCP и IP).
Страница 1 из 1 | [ Сообщений: 10 ] |
MTU — а надо ли?
Господа, а Вам не кажется, что эти свистопляски с гаданием/изменением MTU несколько излишни? Почему? сейчас объясню:
Проблема с MTU возникает в следствие того, что TCP пакет заварачивается в UDP пакет, удлинняясь на величину служебных заголовков. И в этот момент общая длина такого конверта получается чуть-чуть выше, чем допускается у клиента (ADSL-модем, роутер (провайдера) и т.п.). В результате пакет на каком-то этапе просто отбрасывается. В том числе и потому что, возможно, не всякое оборудование еще и позволяет фрагментировать UDP-пакеты.
Что предлагаю:
Бить пакеты в самом AMICON NDIS-драйвере сразу по 300 байт (а на сервере — собирать) тогда они ГАРАНТИРОВАННО пройдут через сеть.
Конечно понадобится вносить изменения в клиентское и серверное ПО, но проблема-то исчезнет навсегда. И, ГЛАВНОЕ уйдет поиск труднодиагностируемых ошибок прикладного ПО, связанных с «плохим MTU»
Ведь сам факт того что на компьютере КЛИЕНТА вносятся изменения (читай — костыли) в сетевую инфраструктуру влияет на престиж организации-установщика ФПСУ-клиента.
Deonis
Well-Known Member
Debug the MTU values between you and a host
Diagnoses and treatment of black hole routers
Slavian
Member
mihmih написал(а):
Господа, а Вам не кажется, что эти свистопляски с гаданием/изменением MTU несколько излишни? Почему? сейчас объясню:
Проблема с MTU возникает в следствие того, что TCP пакет заварачивается в UDP пакет, удлинняясь на величину служебных заголовков. И в этот момент общая длина такого конверта получается чуть-чуть выше, чем допускается у клиента (ADSL-модем, роутер (провайдера) и т.п.). В результате пакет на каком-то этапе просто отбрасывается. В том числе и потому что, возможно, не всякое оборудование еще и позволяет фрагментировать UDP-пакеты.
Что предлагаю:
Бить пакеты в самом AMICON NDIS-драйвере сразу по 300 байт (а на сервере — собирать) тогда они ГАРАНТИРОВАННО пройдут через сеть.
Конечно понадобится вносить изменения в клиентское и серверное ПО, но проблема-то исчезнет навсегда. И, ГЛАВНОЕ уйдет поиск труднодиагностируемых ошибок прикладного ПО, связанных с «плохим MTU»
Ведь сам факт того что на компьютере КЛИЕНТА вносятся изменения (читай — костыли) в сетевую инфраструктуру влияет на престиж организации-установщика ФПСУ-клиента.
полностью поддерживаю, я уже задолбался — соединяеться с 20го раза.. у меня провайдер двухсторонний спутниковый и так лагает, тут еще MTU на проксе да на клиентских машинах менять.
кстати, mihmih, я смотрю ты разбираешся хорошо, подскажи настройки чтобы соединение проходило нормально, а то я со своим провайдером уже воевал изза клиентом Минбанка — тоже проблема с MTU была, так ничего дельного и не подсказали
Deonis
Well-Known Member
У Windows XP есть параметр реестра
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services\tcpip\parameters\EnablePMTUBHDetect
с помощью которого можно включить обнаружение таких «черных дыр» с грубой подгонкой значения MTU для прохождения через такие роутеры. Но на мой взгляд, это не самое изящное и далеко не самое оптимальное решение.
Для определения максимального MTU, можно воспользоваться утилитой mturoute (
Для этого надо установить ФПСУ подключение и «натравить» эту утилиту на один из узлов, указанных в списке хостов ФПСУ. Далее, попробовать задать полученное значение MTU для интерфейса, через который устанавливается VPN соеднинение.
Подробности здесь:
Slavian
Member
Deonis спасибо за ссылку на програмку,
ну всё же опять на пустом месте не надо гонять, человек же предложил вообще не заморачиваться с MTU, а призвал разработчиков решить проблему кординальным образом с ихним софтом! Кто нибудь из разработчиков может откликнуться по данному топику?
Roman_Sein
Администратор
Команда форума
Ваши советы, уважаемые, не лишены смысла и естественно требуют дополнительных затрат времени для их реализации. По возможности, в новых версиях ip-клиента, мы все это учтем.
Slavian
Member
Alex_N
Администратор
Команда форума
Больше проблем с MTU в ФПСУ-IP/Клиент быть не должно.
В версии, выложенной на сайте, добавлен механизм регулировки MSS TCP(работает автоматически).
Аналогичный механизм реализован в ФПСУ в версии 2.52 (в общих параметрах есть опция «Корректировать MSS TCP»).
Реализовано по просьбе специалистов Сбербанка из г. Саратов. Спасибо им за полезное предложение.
IP MTU и туннели IPSec и GRE
IP protocol был разработан для самых различных типов подключений, и хотя максимальная длина для IP datagram составляет 64K, большинство подключений (transmission links) используют меньший максимальный размер для IP-пакета или MTU.
MTU, Maximum Transmission Unit — максимальный размер блока в байтах, который может быть передан на канальном уровне сетевой модели OSI.
Значение MTU зависит от типа подключения. Дизайн IP сетей допускает возможность фрагментирования IP пакетов в том случае когда MTU меньше размера пакета, — в этом случае принимающая станция вновь собирает искомый пакет из фрагментов.
На рисунке отображен заголовок IP пакета и то, как он инкапсулируется в датаграмму второго уровня.
Здесь важно отметить, что в поле FLAGS включает в себя три бита, один из которых «don’t fragment» (DF) bit, который определяет разрешено данный пакет фрагментировать или нет.
Вопросы с IP фрагментированием
Хотя фрагментация пакета выполняется достаточно быстро, обратная сборка исходного пакета требует значительных ресурсов: затрат памяти, вопросы быстродействия.
В случае потери одного из фрагментов вся датаграмма должна быть передана заново.
Фрагметы очень тяжело обрабатывать на брендмауэрах (с 4-го по 7 уровень), при неправильной последовательности они будут забракованы.
TCP MSS и избегание дефрагментации
TCP Maximum Segment Size (MSS) — определяет максимальный размер датаграммы TCP/IP, которую будет принимать данный хост.
Датаграмма TCP/IP может быть фрагментирована на уровне IP.
Значение MSS отсылается внутри TCP header только в сегментах TCP SYN. Каждая сторона TCP соединения объявляет другой стороне свое значение MSS.
Вопреки распространенному мнению, значение MSS не согласовывается между хостами, — у каждого хоста они могут оставаться разными, только отсылающий хост отдает сегменты размером не больше, чем требует принимающий хост.
Таким образом TCP MSS позволяет избежать фрагментации на уровне двух участников сессии TCP. Но TCP MSS не может обработать тот случай, когда по пути между хостами есть меньший MTU.
PMTUD
PMTUD (Path Maximum Transmission Unit Discovery) — был разработан для избегания фрагментации по пути между хостами. PMTUD используется для автоматического определения минимального MTU вдоль пути пакета между хостами.
PMTUD поддерживается только TCP, UDP и другие протоколы не поддерживают PMTUD.
Хост отсылает нефрагментированный пакет с установленным DF bit. Если маршрутизатор пытается отдать пакет на link, с меньшей MTU чем этот пакет, маршрутизатор дропнет этот пакет и возвратит сообщение ICMP «Destination Unreachable», с кодом «fragmentation needed and DF set» (type 3, code 4). Когда Хост-источник получает эту информацию, он понижает MSS и затем пересылает TCP сегмент заново.
Наиболее часто встречающаяся проблема с PMTUD — это среда в которой не пропускается сообщения ICMP
Где актуально использование PMTUD
Как уже было сказано, PMTUD нужен в случаях, когда по пути от хоста А к хосту Б встречаются линки с меньшими значениями MTU.
Наиболее общие примеры:
— PPPoE (часто используемый вместе с ADSL) использует 8 bytes для своего заголовка. Это уменьшает эффективное значение MTU для Ethernet до 1492 (1500 — 8).
— Туннельный протоколы GRE, IPsec, and L2TP также используют пространство для своих заголовков, что также уменьшает эффективное MTU на исходящем интерфейсе.
Вообще Path MTU Discovery (RFC 1191) осуществляется всеми клиентами включая Windows 2000/2003/XP/7/8.
Для нормальной работы PMTUD необходимо, чтобы пропускался протокол ICMP, в частности должны пропускаться сообщения ICMP «unreachable» и «time-exceeded».
Для проверки можно использовать утилиту mturoute.exe. Утилита отрабатывает аналогично PMTUD и возвращает значение MTU, которое необходимо использовать на данном хосте.
Текущее значение MTU можно увидеть через команды:
Windows 7, Windows Vista: netsh interface ipv4 show subinterfaces
Windows XP: netsh interface ip show interface
Значения MTU для локальной машины можно поменять и вручную (хотя и не рекомендуется)
Adjusting IP MTU, TCP MSS, and PMTUD on Windows and Sun Systems
Также можно использовать утилиту Set MTU, поставляемой с Cisco Systems VPN Client.
Что такое туннель
Туннель — это логический интерфейс на маршрутизаторе, который обеспечивает инкапсуляцию полезных пакетов внутрь транспортного протокола.
Туннель состоит из основных компонентов:
— Passenger protocol
— Carrier protocol. Протокол, осуществляющий инкапсуляцию:
GRE
IP in IP tunnels
— Transport protocol. Протокол отвечающий за маршрутизацию encapsulated protocol. В нашем случае это IP.
На приведенном рисунке IP у нас выступает как transport protocol и как passenger protocol.
Инкапсуляция трафика дает следующие преимущества:
- Endpoints могут использовать private addresses
- Позволяет строить VPN поверх WAN сетей
- Возможность использования шифрования
Рекомендации построения туннельных интерфейсов
Исходя из того, что наиболее «тяжелый» вариант — это одновременное использование GRE и IPsec, рекомендации будут следующие:
— PMTUD позволяет установить на GRE интерфейсе оптимальное значение MTU и включается на туннельном интерфейсе командой tunnel path-mtu-discovery
— Обеспечьте нормальную работу PMTUD, при этом на обоих целевых хостах должна успешно выполняться mturoute.exe
— Также рекомендуется одновременно использовать и команду ip mtu 1400. В этом случае ip mtu будет обеспечивать пространство для GRE + IPSec, в случае же более низких значениях MTU по пути, IP MTU бует подкорректировано динамически. Значение 1400 рекомендовано, т.к. оно покрывает большинство возможных комбинаций GRE + IPSec.
— Следует использовать ip tcp adjust-mss 1360 на туннельном интерфейсе. Это позволит маршрутизатору уменьшить значение TCP MSS в TCP SYN Packet. Что позволить двух конечным хостам генерировать достаточно малые пакеты. (1360 = 1400 — 20(TCP) — 20 (IP))
Общий конфиг для туннельного интефейса DMVPN + IPSec будет выглядеть:
interface Tunnel200
description ### DMVPN TUNNEL HUB
ip address 10.5.0.1 255.255.255.0
no ip redirects
ip mtu 1400
tunnel path-mtu-discovery
ip nbar protocol-discovery
ip hold-time eigrp 1 35
no ip next-hop-self eigrp 1
ip flow ingress
ip flow egress
ip nhrp authentication baurus
ip nhrp map multicast dynamic
ip nhrp network-id 200
ip tcp adjust-mss 1360
no ip split-horizon eigrp 1
delay 100000
tunnel source 87.237.40.107
tunnel mode gre multipoint
tunnel key 123
tunnel protection ipsec profile DMVPN
MTU в роутере — что это? Увеличиваем скорость Интернета. MTU в роутере: что это такое и какое значение установить
MTU в роутере что это и почему от этого параметра зависит скорость вашего интернет-соединения? Детальное описание сетевого параметра mtu, его особенностей и свойств.
В статье приведена инструкция для правильного определения и изменения настроек mtu в wi-fi роутере.
MTU (максимальный уровень передачи в сети — maximum transmission unit (MTU )) – это протокол канального уровня, который определяет наибольшее количество «полезных» блоков битов в одном сетевом пакете.
Как известно, обмен информацией между сервером и клиентом (провайдером и пользовательским ПК) возможен благодаря трансферу отдельных пакетов данных.
Эти пакеты образуют наборы полезных блоков.
В результате использования защищенного протокола, информация в пакете передается без фрагментации, что в свою очередь позволяет ускорить обмен данными в глобальной сети.
Простыми словами, MTU необходим для обеспечения стабильной работы интернета на вашем компьютере.
Благодаря проставлению его правильного значения можно добиться отличной скорости с минимальными сбоями в работе.
Зачем нужно ограничивать MTU?
Этот протокол канального уровня подлежит обязательному ограничению. Это делается путем присвоения mtu определённого цифрового значения.
Такое действие необходимо для достижения следующих целей:
- Рационального распределения нагрузки между блоками передачи и приема информации в сети;
- Сокращения общей нагрузки. Благодаря этому уменьшится и время передачи информации;
- Расширения функций канала передачи. Таким образом, его смогут использовать одновременно несколько приложений, служб и процессов;
- Увеличения отклика сети. В результате сеть будет работать эффективнее, а вероятность появления «битых» пакетов данных (которые не оправились) сводится к минимуму.
Находим правильный размер MTU для сети
Зачастую у пользователей роутеров tp-link, d-link, asus и других, в настройках маршрутизатора указано неверное значение mtu. Из-за этого могут возникать:
- Проблемы с воспроизведением потокового видео;
- Ошибки во время скачивания файлов;
- Просроченные сертификаты безопасности для некоторых сайтов;
- Общая медленная работа Интернета.
Рис. 1 – проблемы с Интернетом
Если вы обнаружили, что в последнее время соединение с сетью стало слишком медленным и привычные сайты больше не открываются или происходит их «вечная» загрузка, необходимо настроить mtu.
Клиентский компьютер не может открыть сайт, если значение mtu больше максимального значения пакета данных, который передается через протокол.
Детальнее о настройке разнообразных роутеров читайте в нашем материале: Как войти в настройки роутера — TP-Link, D-Link, Asus, Zyxel Keenetic, Ростелеком
Каждый маршрутизатор может изменять число mtu автоматически. Иногда такая возможность действует не в пользу скорости сети, поэтому вы можете изменить значение вручную.
Определить «идеальное» число mtu можно с помощью проведения тестирования под названием Ping Test .
Пинг (ping — задержка) – это время, которое необходимо одному пакету данных, отосланному с вашего ПК, для прохождения до другого ПК (или сервера) и его возврата обратно на компьютер, с которого он был отправлен.
Вам также может быть интересно:
В процессе пинг теста следует отправлять повторяющиеся запросы, периодически снижая размер пакета данных.
Это нужно делать до полного прекращения фрагментации пакета. В результате вы узнаете наиболее точное число mtu, которое необходимо для быстрой работы конкретной сети.
- Зайдите в командную строку;
- Введите указанную на рисунке ниже команду для соединения с доменом;
Рис. 2 – подключение к домену тестирования
Заметьте! XХXX – это значение MTU. Во время тестирования изменяйте его в пределах от 1500 до 500 с шагом 10 байт. Успешный результат – это когда процент потерь не превышает 1%.
- В результате правильно выполнения команды появятся строки со статистикой пинга (количество отправленных и полученных пакетов, приблизительное время их передачи в миллисекундах, процент потерь);
Рис. 3 – результат успешной команды
- Теперь следует еще раз повторить эту же команду. Выполняйте ее, пропустив одну строку;
- Повторяйте тест каждый раз с новым значением mtu, пока не получите наилучший результат передачи пакетов с минимальным процентом утрат. Запомните цифры mtu – именно это значение нам понадобится в дальнейшей настройке mtu.
Рис. 4 – найденное в результате тестирования наилучшее значение для MTU
Изменение MTU в маршрутизаторе
Пользователи маршрутизаторов могут самостоятельно изменять все настройки соединения и . Для этого зайдите в меню конфигурации.
Откройте любой установленный на ПК браузер и в его адресной строке введите локальный IP адрес 192.168.0.1, нажмите Ввод.
Если окно авторизации не появилось, в строку следует ввести адрес 192.168.1.1
В открывшемся диалоговом окне появится форма для введения логина и пароля администратора ПК.
В обоих полях пропишите слово admin или другие данные для входа в сеть (их можно прочитать в или спросить у провайдера). Дождитесь авторизации.
Окно настроек каждой модели маршрутизатора может иметь внешнее отличие, однако, структура полей в основном одинаковая. Для начала следует определиться с конечной величиной mtu.
Возьмите результат, полученный в процессе тестирования. В нашем случае это 1458 бит и прибавьте еще 28 байт. Дополнительные байты – это место для заголовков пакета и запроса.
В результате получаем 1458+28 = 1486 байт для mtu.
Для роутеров TP-Link
Чтобы изменить mtu, кликните на пункт меню «Сеть» . Затем в правой части окна найдите поле mtu и пропишите необходимое значение, как указано на рисунке:
Рис. 5 – изменение значения для TP-Link
В тот момент, когда хост должен передавать данные через интерфейс, он ссылается на максимальный размер полезного блока данных для одного пакета Maximum Transmission Unit, чтобы определить, сколько данных он может поместить в каждый пакет. Например, интерфейсы Ethernet имеют MTU по умолчанию 1500 байт, не включая заголовок или трейлер Ethernet. Это означает, что хост, которому необходимо отправить данные по TCP-протоколу, обычно будет использовать первые 20 из этих 1500 байтов для заголовка IP, следующие 20 для заголовка TCP, а оставшиеся 1460 байт для полезной нагрузки. Инкапсуляция данных в пакеты максимального размера, подобные этому, позволяет потреблять полосу пропускания наиболее эффективно, минимизируя использование служебного трафика протокола передачи данных. Оптимальный размер MTU — ключ к эффективному использованию сетевых каналов передачи данных и снижению нагрузки на сетевое оборудование.
К сожалению, не все устройства в сети Интернет имеют одинаковый максимальный размер полезного блока данных MTU. MTU может различаться в зависимости от типа физического носителя или сконфигурированной инкапсуляции (например, туннелирование GRE или шифрование IPsec). Когда маршрутизатор решает переслать IPv4 пакет через интерфейс и определяет, что размер пакета превышает MTU интерфейса, маршрутизатор должен разбить пакет так, чтобы передать его как две (или более) отдельные части, каждая из которых не превышает предельный размер MTU канала между абонентами. Фрагментация довольно дорого стоит, как в ресурсах маршрутизатора, так и в использовании полосы пропускания. Должны быть созданы новые заголовки и прикреплены к каждому фрагменту. В спецификации протокола IPv6 из маршрутизатора полностью удалена фрагментация пакетов, но эта тема для отдельного разговора.
Определение оптимального размера MTU пакета данных
Чтобы использовать канал наиболее эффективным образом, хосты должны определить оптимальный размер MTU — это минимальный MTU среди всех узлов на пути между хостами. Например, для двух хостов, путь между которыми состоит из 3-х маршрутизаторов с различными максимально возможными размерами пакетов: 1500, 800 и 1200 байтов, каждый из конечных хостов должен принять наименьший размер пакета 800 байт, чтобы избежать фрагментации.
Do not Fragment и Destination Unreachable, Fragmentation Needed
Пакеты могут перемещаться по сетям произвольным образом и невозможно заранее просчитать все маршруты и максимальный размер пакетов для каждого подключения. В RFC 1191 прописана методология определения размера MTU. Процесс, посредством которого хост для конкретного подключения может обнаруживать меньший размер MTU, чем поддерживает его собственный сетевой интерфейс. Ключевыми являются два компонента: бит “Не фрагментировать” (Do not Fragment (DF)) заголовка IP и субкод сообщения ICMP-протокола Destination Unreachable, Fragmentation Needed.
Установка бита DF в IP-пакете не позволяет маршрутизатору выполнять фрагментацию, когда он обнаруживает MTU меньше, чем размер пакета. Вместо этого пакет отбрасывается и по ICMP отправителю приходит сообщение о необходимости фрагментации пакетов. По сути, маршрутизатор указывает, что для отправки далее ему необходимо разбить пакет на части, но флаг Don’t Fragment (DF) не позволяет это сделать. RFC 1191 расширяет ICMP-сообщение, запрашивающее фрагментацию, с включением размера MTU для текущего подключения.
Теперь, когда был обнаружен максимальный размер пакета для подключения, хост может кэшировать это значение и формировать последующие соответствующего размера. Обратите внимание, что обнаружение максимального размера пакетов для конкретного подключения является непрерывным процессом. В случае использования динамической маршрутизации и перестроении маршрута между отправителем и получателем хост периодически продолжает попытки установить флаг DF для обнаружения дальнейшего уменьшения размера пакетов. RFC 1191 также позволяет периодически тестировать возможность увеличения максимального размера пакетов для каждого маршрута, иногда пытаясь передать пакет больше, чем кешированный. Если пакет передается успешно, то значение предельно допустимого размера пакета увеличивается.
Расчет максимального размера MTU пакета с помощью трассировки
Вы можете вычислить максимальный размер пакета MTU для каждого маршрута через с помощью инструмента, такого как трассировка пути. Является частью пакета Linux — IPutils. Или утилита, написанная для Windows — mturoute:
Привожу пример определения MTU для маршрута между двумя хостами через шифрованный GRE-туннель. Видим как утилита последовательно подбирает максимальный размер пакета:
C:\bin>mturoute.exe 192.168.3.1 * ICMP Fragmentation is not permitted. * * Speed optimization is enabled. * * Maximum payload is 10000 bytes. * — ICMP payload of 1472 bytes is too big. + ICMP payload of 92 bytes succeeded. + ICMP payload of 782 bytes succeeded. + ICMP payload of 1127 bytes succeeded. + ICMP payload of 1299 bytes succeeded. — ICMP payload of 1385 bytes is too big. + ICMP payload of 1342 bytes succeeded. + ICMP payload of 1363 bytes succeeded. + ICMP payload of 1374 bytes succeeded. — ICMP payload of 1379 bytes is too big. + ICMP payload of 1376 bytes succeeded. + ICMP payload of 1377 bytes succeeded. + ICMP payload of 1378 bytes succeeded. Path MTU: 1406 bytes.
В компьютерных сетях термин maximum transmission unit (MTU) означает максимальный размер полезного блока данных одного пакета (англ. payload), который может быть передан протоколом без фрагментации. Обычно заголовки протокола не входят в MTU, но в некоторых системах в некоторых протоколах заголовки могут учитываться. Когда говорят об MTU обычно имеют в виду протокол канального уровня сетевой модели OSI.
Однако, этот термин может применяться и для других уровней:
L1 — media mtu (полный L2 кадр);
L2 — mtu, hw mtu, system mtu;
L3 — ip mtu (ip заголовок учитывается), mtu routing;
L4 — tcp mssВнесистемные: tunnel mtu, vlan mtu, mpls mtu.
Ограничение на максимальный размер кадра накладывается по нескольким причинам:
Для уменьшения времени на повторную передачу в случае потери или неисправимого искажения пакета. Вероятность потерь растёт с увеличением длины пакета.
Чтобы при полудуплексном режиме работы хост не занимал долгое время канал (также для этой цели используется межкадровый интервал (англ. Interframe gap)).
Чем больше отправляемый пакет, тем больше ожидание отправления других пакетов, особенно в последовательных интерфейсах. Поэтому маленький MTU был актуален во времена медленных коммутируемых соединений.
Малый размер и быстродействие сетевых буферов входящих и исходящих пакетов. Однако слишком большие буферы тоже ухудшают производительность.
Значение MTU определяется стандартом соответствующего протокола, но может быть переопределено автоматически для определённого потока (протоколом PMTUD) или вручную для нужного интерфейса. На некоторых интерфейсах MTU по умолчанию может быть установлено ниже максимально возможного. Значение MTU ограничено снизу как правило минимально допустимой длиной кадра.
Для высокопроизводительной сети причины, вызвавшие начальные ограничения MTU, устарели. В связи с этим для Ethernet был разработан стандарт Jumbo-кадров с увеличенным MTU.
Хост знает значение MTU для собственного (возможно и своих соседей) интерфейса, но минимальное значение MTU для всех узлов сети обычно неизвестно. Другая потенциальная проблема заключается в том, что протоколы более высокого уровня могут создавать пакеты большего размера, не поддерживаемые другими узлами сети.
Прохождение больших пакетов по сети с фрагментацией. Для устранения этих проблем IP поддерживает фрагментацию, что позволяет разбивать дейтаграмму на меньшие кусочки, каждый из которых будет достаточно мал, чтобы беспрепятственно пройти через узел, из-за которого происходит фрагментация. Фрагменты пакетов маркируются таким образом, чтобы IP целевого хоста мог произвести сборку фрагментов в оригинальную дейтаграмму. Недостатки фрагментации пакетов, заключающиеся в скорости.
Хотя фрагментация решает проблему несоответствия размеров пакетов и значения MTU, она ощутимо снижает производительность сетевых устройств. В связи с этим, в 1988 году была предложена альтернативная технология, названная Path MTU discovery (RFC 1191). Суть технологии заключается в том, что при соединении двух хостов устанавливается параметр DF (don’t fragment — не фрагментировать), который запрещает фрагментацию пакетов. Это приводит к тому, что узел, значение MTU которого меньше размера пакета, отклоняет передачу пакета и отправляет сообщение ICMP «необходима фрагментация, но установлен флаг её запрета (DF)». Хост-отправитель уменьшает размер пакета и отсылает его заново. Такая операция происходит до тех пор, пока пакет не будет достаточно мал, чтобы дойти до хоста-получателя без фрагментации.
Однако, и у этой технологии существуют потенциальные проблемы. Некоторые маршрутизаторы настраиваются администраторами на полное блокирование ICMP пакетов (это не очень грамотно, но может быть самым простым решением нескольких проблем безопасности). В результате, если размер пакета не соответствует значению MTU на определённом участке, пакет отбрасывается, а хост-отправитель не может получить информацию о значении MTU и не отправляет пакет заново. Поэтому соединение между хостами не устанавливается. Проблема получила название MTU Discovery Black Hole (RFC 2923), и протокол был модифицирован для детектирования таких маршрутизаторов.
Поскольку Windows (XP,7,8) автоматически выбирает наилучшее MTU (PMTU), в нашем случае необходимо просто удостовериться, что для этого соединения не установлено какое-то, отличное от оптимального, фиксированное значение. Кстати, это самое оптимальное значение выяснить довольно легко, проведя несложный эксперимент. Откройте консоль cmd.exe и введите в ней команду:
PING -f -l 1472 xxx.xxx.xxx.xxx
где xxx.xxx.xxx.xxx — IP-адрес шлюза вашего провайдера,
F запрещает фрагментацию пакета,
L устанавливает размер пакета.
Если вы получите в ответ что-то типа “Reply from xxx.xxx.xxx.xxx: bytes=1472 time=144ms TTL=10”, то это будет означать что MTU=1500 (28 байт заголовка не учитываются). Если же ответ будет “Packet needs to be fragmented but DF set”, то уменьшайте значение 1472 до тех пор, пока не получите прохождение пакета — это значение плюс 28 байт заголовка и будет равным искомому MTU.
Полученное значение (+28 байт заголовка) необходимо сравнить со значением MTU, используемым системой, которое можно определить с помощью команды, в той же командной строке:
netsh interface ipv4 show subinterfaces
(В результате будет выведено значение MTU для сетевых интерфейсов ipv4).
Изменить значение MTU в ос Windows (XP,7,8) можно с помощью комманды
(Действие по изменению параметров настройки желательно выполнять только опытному пользователю, так как неверное значение повлияет на работу сети в худшую сторону. ):
netsh interface ipv4 set subinterface “ХХХХХХХХ” mtu=1500 store=persistent
Где ХХХХХХХХ — Название сетевого интерфейса (По умолчанию — «Подключение по локальной сети», для удобства можно переименовать, например в Lan1 в папке «Сетевые подключения» в «Панели управления»).
В отличии от ОС Windows большинство роутеров (Wi-Fi Домашних маршрутизаторов) используют статическую настройку MTU, указанную в настройках роутера. По умолчанию значение MTU 1500.
Провайдер «Триолан» обеспечивает передачу пакетов Ethernet максимального полезного размера, которому соответствует настройка MTU 1500.
Есть провайдеры, настройка сети которых ограничивает размер MTU до значений меньше 1500. Зачастую это связано с использованием протоколов дополнительной инкапсуляции (PPPoE,L2P и др.). В таком случае ОС Windows настраивает необходимое значение MTU по протоколу PMTU, но в случае возникновения проблем, могут потребоваться настройки, описанные выше. Чаще проблемы с MTU связанны именно с роутерами, в которых неверно настроено значение MTU.Для сетей «Триолан» это значение составляет 1500, для других сетей — может быть опредено с помощью командной строки, как описано выше.
Число MTU представляет собой максимально передаваемый пакет данных, который отправляется от сервера к оборудованию. Оно применяется в интернет-соединении и напрямую влияет на его скорость. Как работает MTU? Чтобы передача соединения была быстрой и эффективной, данные передаются не по одному байту, а целыми пакетами. Компьютер распаковывает пакет и загружает информацию, к примеру, интернет-страницу, игру и т. п.
Мало кто из обычных пользователей задавался вопросом, что такое MTU и для чего он указывается в настройках
Почему стоит проверять и изменять такой параметр? Часто бывает, что пользователь подключает интернет, и, хотя заявленная скорость соединения должна быть высокой, браузер медленно грузит сайт или игру, или же вовсе не хочет заходить на некоторые страницы. При этом интернет не пропадает целиком, а плохая загрузка касается отдельных сайтов или приложений.
Чтобы справиться с проблемой, рекомендуется изменить настройки DNS. Сделать это можно через Панель управления. Откройте раздел с интернет-подключениями, выберите свою сеть и просмотрите её свойства. В них вы найдёте компоненты, среди которых следует выбрать протокол Интернета TCP/IP и вручную вписать DNS адреса — 8.8.8.8 и во второй строке 8.8.4.4.
Если вы попробовали поменять значение DNS, но это не помогло, стоит обратиться к настройкам размера пакетов данных. Когда у провайдера установлено одно число этого параметра, а в вашем роутере — другое, то скорость падает,и соединение работает плохо . На компьютере его менять не нужно, поскольку в последних версиях Windows система сама определяет оптимальное для работы сети значение.
Как узнать, какой установить MTU на роутере?
Есть стандартные значения этого параметра для роутеров. В большинстве случаев используется число 1500 — оно является базовым по умолчанию, применяется для динамического и статического IP-адреса.
Для соединения типа L2TP выбирается число 1460, а для PPPoE — 1420. Стоит попробовать комбинацию 1476 — она по умолчанию устанавливается для сетей типа 3G.
Другой вариант, при помощи которого вы можете узнать правильную комбинацию размера пакетной передачи для роутера, звонок в сервисный центр вашего провайдера. Там вам предоставят точные данные, но возможно, не смогут ответить на ваш запрос, поэтому стоит научиться определять это число самостоятельно.
Сделать это можно, сверив установленное значение MTU на компьютере и роутере . Если они не совпадают, это и есть причина плохой скорости соединения. Чтобы узнать комбинацию на компьютере, выполните следующее:
- Введите в Total Commanderстроку PING -f -l 1472 xxx.xxx.xxx.xxx, где вместо крестиков укажите свой IP-адрес.
- Если в результате появится текст «Reply from…»(«Ответ от…»), то правильное число MTU — 1500, как и должно быть по умолчанию. Почему 1472? Остальные килобайты являются системными и автоматически добавляются к этому числу, чтобы в сумме получилось 1500.
- Если в ответ на команду появился текст «Packet needs to be fragmented but DF set», нужно вручную искать правильное значение путём уменьшения числа 1472 на десятки, пока у вас не появится строка «Reply from…». Затем к конечному значению нужно добавить 28 системных килобайта, получив верное число.
Настройка MTU в роутере
После выяснения необходимой комбинации для максимально передаваемого пакета данных вводим её в параметры маршрутизатора .
Это делается следующим образом:
- Зайдите в настройки роутера. В строке браузера введите IP-адрес оборудования, в появившемся окне впишите логин и пароль (если вы не изменяли их, используйте слово Admin в обеих строках).
- Выберите раздел Network, откройте меню WAN.
- Введите необходимое число в строку MTU Size, сохраните изменения и выполните перезагрузку оборудования.
У вас недогружаются странички в браузере? Некоторые из них открываются только со второго или третьего раза? Потоковое видео с просторов интернета идет с прерываниями? Скорее всего, проблема заключается в неправильно выставленном параметре MTU вашего роутера.
Теория (кому просто нужно подобрать MTU, можете не читать, а сразу начинайте пользоваться программой)
Весь трафик в сети передается так называемыми пакетами данных. При коммутируемом доступе (это когда провод от провайдера вставлен в ваш компьютер) используется минимально возможная величина пакета в 576 байт, и это как раз и есть параметр MTU. Если у вас стоит роутер, то в нем выставлено значение по умолчанию, обычно 1492. Однако провайдер более жестко регламентирует MTU и чаще всего оно меньше. В итоге получается несоответствие величин, и роутеру для передачи приходится разбивать пакет на части, что называется фрагментацией. Мало того, что вместо одного такта на передачу одного пакета уходит два, но еще и имеет место потеря пакетов. Как следствие — тормозящий интернет, подолгу зависающие странички, медленно загружающееся видео и прочие-прочие «прелести».
Решается проблема достаточно просто: нужно просто позвонить в офис провайдера и задать вопрос о величине параметра, или же самостоятельно подобрать оптимальный параметр MTU, при котором пакеты не будут фрагментироваться. Первый вариант может оказаться и самым простым, и самым же сложным. Дело в том, что девушки, сидящие на телефонах, чаще всего не имеют даже понятия о том, какие параметры установлены в их сети. «Что, МТУ? Может, МТС? Нет, мы не офис МТС, мы у них не выставляем никакие параметры» — вот что, вероятнее всего, вы рискуете услышать в ответ на вопрос. Поэтому не тратим времени на переговоры, а сразу идем подбирать параметр MTU. Производится подбор путем передачи пакетов разной величины с запретом фрагментации. При тестах используется коммутируемый доступ, то есть без роутера .
Для подбора MTU используется пинг-тест командой вида ping ya.ru — f — l xxxx , где xxxx — значение MTU, ya.ru — пингуемый сервер (может быть любым из существующих) + параметры запрета фрагментации. Взяли максимальное значение, пинганули. Если потери составляют больше нулевого значения, значит, MTU неверный. Снижаем с шагом 8. И так далее, пока потери не составят 0%. Первое же значение MTU, при котором потери исчезнут, и будет оптимальным.
Но каждый раз набирать в командной строке этот набор символов не очень удобно, а скопировать и вставить из буфера не получится. Чтобы облегчить задачу, я написал маленькую программу, которая будет автоматически формировать команду для пинг-теста и выполнять его, постепенно снижая MTU. Вам нужно только следить за показателем потерь и нажимать кнопку Enter. Все остальное написано в окошке программы.
Когда значение MTU найдено, к нему надо прибавить 28 (на заголовки IP и ICMP) и ввести в соответствующее поле настроек роутера . У разных роутеров они разные, поэтому не спрашивайте меня, где ввести параметр у роутера какой-либо определенной модели. Всем добра!