Вычисление MTU маршрута
Если маршрут, связывающий два хоста, проходит через несколько сетей, и размер передаваемого пакета превышает наименьшее значение MTU этих сетей, то пакет разбивается на фрагменты. Так как фрагментация пакетов может снизить производительности сети, ее желательно избегать путем передачи пакетов, размер которых не превышает значений MTU на протяжении всего маршрута. Этот размер называется MTU маршрута.
Операционная система поддерживает алгоритм вычисления MTU маршрута, описанный в RFC 1191. Включить вычисление маршрута MTU в приложениях TCP и UDP можно изменив опции tcp_pmtu_discover и udp_pmtu_discover команды no. Если применение этого алгоритма включено, то размер всех пакетов, передаваемых приложениями TCP, не будет превышать MTU маршрута. Поскольку приложения UDP сами определяют размер передаваемых пакетов, они должны получать информацию об MTU маршрута с помощью опции IP_FINDPMTU сокета, даже если включена опция udp_pmtu_discover команды no. По умолчанию параметры tcp_pmtu_discover и udp_pmtu_discover включены.
При попытке вычисления MTU маршрута в таблице MTU маршрут (PMTU) создается запись pmtu. Эту таблицу можно посмотреть с помощью команды pmtu. Можно избежать создания большого числа записей pmtu, ограничив время существования неиспользуемых записей и разрешив их удаление. Время существования записи PMTU можно задать с помощью опции pmtu_expire команды no. По умолчанию значение pmtu_expire равно 10 минутам.
Значение MTU маршрута может динамически изменяться вместе с самим маршрутом. Уменьшение значения MTU маршрута приводит к фрагментации пакетов, поэтому периодически должна проводиться проверка этого значения. По умолчанию значение MTU маршрута проверяется каждые 10 минут. Периодичность проверки можно изменить, указав необходимое значение в параметре pmtu_default_age команды no.
Приложения UDP всегда требуют включения опции сокета IP_DONTFRAG для обнаружения уменьшения PMTU. Это включает немедленное обнаружение снижения MTU маршрута, а не проверку его снижения каждые pmtu_default_age минут.
При увеличении MTU маршрута появляется возможность повышения производительности сети, поэтому периодически выполняется проверка возможности увеличения MTU маршрута. По умолчанию значение MTU маршрута проверяется каждые 30 минут. Периодичность проверки можно изменить, указав необходимое значение в параметре pmtu_rediscover_interval команды no.
Поскольку не все маршрутизаторы в сети поддерживают RFC 1191, иногда невозможно определить точное значение MTU маршрута. В таких случаях для добавления или удаления значений MTU маршрута можно использовать команду mmtu.
- Алгоритм вычисления MTU маршрута неприменим для одинаковых маршрутов, в том числе тех, которые созданы для групповой маршрутизации (обратитесь к разделу Ограничения применения маршрутизации). Вычисление MTU маршрута можно использовать на дублирующих маршрутах.
- При включении функции вычисления MTU маршрута параметру arpqsize команды no присваивается значение не меньше 5. Это значение не уменьшается после выключения функции вычисления MTU маршрута.