Узел 1 повторно отправляет 1338-байтный пакет, который в конечном итоге доставляется на узел 2. 13. Дополнительные рекомендации Настройка команды tunnel path-mtu-discovery на туннельном интерфейсе позволит улучшить взаимодействие между GRE и IPsec в случае, если они настроены на одном и том же маршрутизаторе. Напомним, что если команда tunnel path-mtu-discovery не была настроена, то бит DF будет всегда сбрасываться в IP-заголовке GRE. Таким образом, пакет GRE IP будет фрагментироваться даже тогда, когда в IP-заголовке инкапсулированных данных установлен бит DF (обычно этот бит запрещает фрагментировать пакет).
Если на интерфейсе туннеля GRE настроена команда tunnel path-mtu-discovery , то тогда происходит следующее. GRE копирует бит DF из IP-заголовка данных в IP-заголовок GRE. 1. 2. Если в IP-заголовке GRE установлен бит DF и если после шифрования IPsec размер пакета оказывается слишком большим по сравнению со значением IP MTU физического исходящего интерфейса, тогда IPsec отбрасывает пакет и просит туннель GRE уменьшить величину своего IP MTU. IPsec выполняет PMTUD для своих пакетов, и если значение PMTU IPsec меняется (уменьшается), IPsec не уведомляет об этом GRE. Однако когда придет еще один слишком большой пакет, то повторится пункт 2. 3.
Теперь значение IP MTU протокола GRE уменьшилось, поэтому GRE отбрасывает любые IP-пакеты данных, в которых установлен бит DF и которые теперь стали слишком большими, и посылает отправляющему узлу ICMP-сообщение. 4. Команда tunnel path-mtu-discovery помогает интерфейсу GRE динамически установить свой IP MTU (а не статически – по команде ip mtu ). В действительности рекомендуется использовать обе этих команды. Команда ip mtu используется для того, чтобы предоставить место для служебной информации GRE и IPsec относительно IP MTU локального физического исходящего интерфейса.
Команда tunnel path-mtu-discovery позволит дополнительно уменьшить IP MTU туннеля GRE в случае, если на пути между одноранговыми узлами IPsec существует канал IP MTU с более низким значением IP MTU. Ниже приводятся еще несколько советов, которыми можно воспользоваться при возникновении проблем с PMTUD в сети, в которой настроены туннели GRE + IPsec. Самые удачные решения идут в начале списка. При неработающем PMTUD проблема обычно связана с тем, что ICMP-сообщения блокируются маршрутизатором или брандмауэром. Используйте команду ip tcp adjust-mss для туннельных интерфейсов таким образом, чтобы маршрутизатор уменьшил значение TCP MSS в пакете TCP SYN.
Это позволит узлам на обоих концах (TCP-отправитель и TCP-получатель) использовать пакеты достаточно маленького размера, избегая тем самым необходимости использовать PMTUD. Используйте политику маршрутизации на входном интерфейсе маршрутизатора и настройте карту маршрутов таким образом, чтобы бит DF в IP-заголовке данных сбрасывался до того, как он поступит на интерфейс туннеля GRE. Теперь IP-пакеты данных будут фрагментироваться перед инкапсуляцией GRE. Увеличьте значение ip mtu туннеля GRE таким образом, чтобы оно равнялось значению MTU исходящего интерфейса. Теперь IP- пакеты данных будут инкапсулироваться протоколом GRE без предварительной фрагментации.
Потом пакет GRE будет зашифровываться при помощи IPsec и затем фрагментироваться для последующей передачи через исходящий физический интерфейс. В этом случае не следует настраивать команду tunnel path-mtu-discovery на интерфейсе туннеля GRE. Это может значительно уменьшить пропускную способность, поскольку повторная сборка пакетов IP на одноранговых узлах IPsec выполняется в режиме переключения процессов. Дополнительные сведения Протоколы маршрутизируемые по IP Страница поддержки IP-маршрутизации Страница поддержки IPSec (протокол IP-безопасности) RFC 1191 Path MTU Discovery (алгоритм определения значений MTU для пути)