Схема:
Область применения данного функционала:
- IP over GRE (L3 GRE)
- Ethernet over GRE (L2 GRE)
- MPLS over GRE ( сервисы L2VPN, L3VPN ).
Задача:
Необходимо трафик, приходящий из устройства Office 1 зоны Site A отправить через сеть Интернет посредством СПД провайдера (ISP) в устройство Office 2 зоны Site B. Размер передаваемого трафика неоднородный и может иметь как стандартное значение MTU, так и нестандартное (MTU > 1514 bytes). Помимо этого, трафик с нестандартным MTU может иметь выставленный DF-bit = 1, что запрещает транзитным узлам подвергать его фрагментации. Решением в данной ситуации может быть туннелирование трафика посредством GRE-туннеля с включенным в нём функцией безусловной фрагментации.
Терминология:
- Начальный хост - хост, генерирующий IP-пакет определённого размера MTU, IP-адрес которого значится в поле Source Address.
- Конечный хост - хост, принимающий IP-пакет определённого размера MTU, IP-адрес которого значится в поле Destination Address
- Транзитный интерфейс - физический интерфейс, принимающий/передающий транзитный (относительно этого устройства ) трафик и имеющий ifMTU .
- Туннелеобразующий интерфейс - физический интерфейс, от которого строится tunnel GRE.
- tunnel GRE - туннельный интерфейс GRE (Generic Routing Encapsulation), на котором происходит инкапсуляция/декапсуляция трафика, имеет greMTU.
- packetMTU - значение MTU оригинального пакета, сгенерированного начальным хостом.
- ifMTU (interface MTU) - значение MTU физического интерфейса.
- greMTU - значение MTU туннеля GRE.
Необходимые условия:
Для работы безусловной фрагментации необходимы соблюдать следующие условия.
- транзитные/source интерфейсы, через которые направляется трафик в GRE туннель для его инкапсуляции, должны иметь MTU>=packetMTU, чтобы иметь возможность пропустить/сгенерировать пакет определённого размера.
- packetMTU должен быть <= greMTU
- внутри туннеля GRE должен быть отключен механизм PMTUd (Path MTU Discovery)
- внутри туннеля GRE должна быть активирована опция игнорирования флага DF
Принцип работы:
1. Пакет с packetMTU поступает из Office 1 на физический транзитный интерфейс Gi1/0/1 устройства R1 с ifMTU, с которого трафик будет отправлен на инкапсуляцию в туннель GRE. Если packetMTU > ifMTU, транзитный интерфейс отбросит данный трафик и пошлёт ICMP Type 3 (Destination Unreachable) с Code 4 (Fragmentation needed) начальному хосту, сообщая о необходимости фрагментации. Если packetMTU <= ifMTU, транзитный интерфейс принимает пакет и перенаправляет его в туннель GRE.
2. Далее, в tunnel GRE: Если packetMTU > greMTU, то пакет не будет принят tunnel GRE, а транзитным интерфейсом Gi1/0/1 будет послан ICMP Type 3 (Destination Unreachable) с Code 4 (Fragmentation needed). Данное поведение связано с текущей реализацией работы туннеля GRE на устройствах линейки ESR: туннельному интерфейсу необходимо принять весь пакет целиком, чтобы затем инкапсулировать его целиком в заголовок GRE и отправить на выход с условием игнорирования значения поля DF-bit. Если packetMTU <= greMTU, то пакет будет принят для его дальнейшей инкапсуляции и фрагментирования.
3. Туннелеобразующий интерфейс может иметь любое значение MTU и фрагментировать инкапсулированные GRE-пакеты по своему максимальному значению MTU. Он фрагментирует инкапсулированные пакеты и отправляет их в сторону ISP, где они проходят через СПД и попадают на туннелеобразующий интерфейс R2.
4. На туннелеобразующем интерфейсе устройства R2 инкапсулированные пакеты принимаются и пересылаются на tunnel GRE.
5. Tunnel GRE собирает фрагменты пакета воедино и перенапрваляет их на исходящий из R2 транзитный интерфейс, за которым, согласно таблице маршрутизации R2, имеется Destination IP из декапсулированного пакета IP.
Решение:
Превадрительно должны быть настроено:
- MTU на исходящем интерфейсе Office 1/2 в сторону R1/2 , удовлетворяющее условию ifMTU <= packetMTU;
- Линковочные подсети между Office 1 и R2 и Office 2 и R2 соответственно;
- Маршрутизация между устройствами Office и R ( статическая или динамическая );
В данном примере функционал Firewall отключён
Включить поддержку Jumbo-фреймов с помощью команды "system jumbo-frames" (для вступления изменений в силу требуется перезагрузка устройства) на обоих пограничных устройствах.
Настроим транзитный интерфейс gigabitethernet 1/0/1 на R1 и R2 на значение MTU, равное packetMTU. В нашем примере это значение будет 9000 bytes:
configure system jumbo-frames interface gigabitethernet 1/0/1 mtu 9000 ip firewall disable ip address 10.10.10.1/24 exit
configure system jumbo-frames interface gigabitethernet 1/0/1 mtu 9000 ip firewall disable ip address 10.10.20.1/24 exit
Настроим туннелеобразующий интерфейс gigabitethernet 1/0/4, ведущие к ISP. В tunnel GRE на R1 и R2 необходимо настроить greMTU, удовлетворяющее неравенству packetMTU<=greMTU. В нашем случае это значение 9000 bytes. Для работы безусловной фрагментации внутри GRE-туннеля необходимо активировать функцию игнорирования поля DF-bit, а так же отключить механизм PMTUd:
interface gigabitethernet 1/0/4 ip firewall disable ip address 192.0.2.2/30 exit tunnel gre 10 mtu 9000 ip firewall disable local address 192.0.2.2 remote address 192.0.2.6 ip address 192.168.0.1/30 ip path-mtu-discovery disable ip dont-fragment-bit ignore enable exit
interface gigabitethernet 1/0/4 ip firewall disable ip address 192.0.2.6/30 exit tunnel gre 10 mtu 9000 ip firewall disable local address 192.0.2.6 remote address 192.0.2.2 ip address 192.168.0.2/30 ip path-mtu-discovery disable ip dont-fragment-bit ignore enable exit
Диагностика:
Для диагностики состояния работы функцонала безусловной фрагментации следует использовать команду show tunnels configuration gre <номер туннеля>. В выводимой информации следует обратить внимание на поле Don't fragment bit suppression - при активной функции безусловной фрагментации значение параметра должно быть Enabled:
R1# show tunnels configuration gre 10 State: Enabled Description: -- Mode: ip Bridge group: -- VRF: -- Local address: 192.0.2.2 Remote address: 192.0.2.6 Calculates checksums for outgoing GRE packets: No Requires that all input GRE packets were checksum: No key: -- TTL: Inherit DSCP: Inherit MTU: 9000 Path MTU discovery: Disabled Don't fragment bit suppression: Enabled Security zone: -- Multipoint mode: Disabled Keepalive: State: Disabled Timeout: 10 Retries: 6 Destination address: --