GRE
GRE (Generic Routing Encapsulation) — протокольный механизм, использующий IP (UDP) как транспортный протокол. GRE может быть использован для переноса различных протоколов внутри себя.
Для отправки в GRE туннель IP-пакет при прохождении через интерфейс туннеля получает сверху дополнительный заголовок GRE, в котором в качестве адреса источника и адреса назначения будут указаны ip адреса начальной и конечной точки туннеля. После прибытия пакета на интерфейс с адресом назначения туннеля служебный заголовок GRE будет отброшен и далее пакет будет обрабатываться в соответствии со своим «родным» IP заголовком.
Рисунок
MTU в протоколах туннелирования
Типичная размерность MTU для L3 интерфейса 1500 байт. В связи с добавлением служебного заголовка появляются новые требования к допустимому значению MTU при передаче пакета. Заголовок GRE имеет размерность 4 байта, 20 байт транспортный IP заголовок, заголовок IP пакета 20 байт, таким образом возникает необходимость задавать размер допустимого MTU на интерфейсах туннеля меньше стандартного значения.
Флаги в GRE
Реализация EcoRouterOS при инкапсулировании во внешнем заголовке устанавливает DF бит равным единице (не фрагментировать). Если приходящий кадр в заголовке IP содержит MF бит равный 1 (была фрагментация) или fragment offset бит равный 1 (последний фрагмент первоначального кадра), то кадр будет отброшен. При GRE инкапсуляции приходящие кадры, содержащие в заголовке GRE флаги checksum, routing, key, seq number, strict source route или recursion, отличные от нуля, будут отброшены.
Таблица — Флаги в GRE, команды настройки
Команда | Описание |
---|---|
interface tunnel.<номер> | Создание интерфейса туннеля, где номер произвольное число |
ip mtu <значение> | Задание значения mtu для интерфейса |
ip tunnel <source IP> <destination IP> mode <gre │ ipip> | Задание IP-адресов начала и конца туннеля и типа туннеля |
Пример базовой настройки туннеля GRE
Рисунок
Настроим туннель GRE между устройствами ER1 и ER2.
Шаг 1. Настроим интерфейсы и порты на маршрутизаторах EcoRouter.
ER1>enable
ER1#configure
ER1(config)#interface 2ge1
ER1(config-if)ip address 11.0.0.1/16
ER1(config)#interface 2ge2
ER1(config-if)ip address 192.168.0.1/24
ER1(config)#port ge1
ER1(config-port)#service-instance 4ge1
ER1(config-service-instance)#encapsulation untagged
ER1(config-service-instance)#connect ip interface 2ge1
ER1(config)#port ge2
ER1(config-port)#service-instance 4ge2
ER1(config-service-instance)#encapsulation untagged
ER1(config-service-instance)#connect ip interface 2ge2
Шаг 2. Создаём интерфейс туннеля c именем tunnel.0
ER1(config)#interface tunnel.0
Шаг 3. Назначение ip адреса
ER1(config-if)#ip add 172.16.0.1/16
Шаг 4. Выставление параметра MTU
ER1(config-if)#ip mtu 1400
Шаг 5. Задание режима работы туннеля GRE и адресов начала и конца туннеля
ER1(config-if)#ip tunnel 11.0.0.1 12.0.0.1 mode gre
Шаг 6. Настройка маршрутизации трафика в туннель
ER1(config)#ip route 12.0.0.0/8 11.0.0.2
ER1(config)#ip route 192.168.200.0/24 172.16.0.2
Аналогичная настройка производится на ER2.
ER2>enable
ER2#configure
ER2(config)#interface 2ge1
ER2(config-if)ip address 12.0.0.1/8
ER2(config)#interface 2ge2
ER2(config-if)ip address 192.168.200.1/24
ER2(config)#port ge1
ER2(config-port)#service-instance 4ge1
ER2(config-service-instance)#encapsulation untagged
ER2(config-service-instance)#connect ip interface 2ge1
ER2(config)#port ge2
ER2(config-port)#service-instance 4ge2
ER2(config-service-instance)#encapsulation untagged
ER2(config-service-instance)#connect ip interface 2ge2
ER2(config)#interface tunnel.0
ER2(config-if)#ip add 172.16.0.2/16
ER2(config-if)#ip mtu 1400
ER2(config-if)#ip tunnel 12.0.0.1 11.0.0.1 mode gre
ER2(config)#ip route 11.0.0.0/16 12.0.0.2
ER2(config)#ip route 192.168.0.0/24 172.16.0.1
Шаг 7. Настроим интерфейсы и порты на маршрутизаторе R1.
R1(config)#interface 2ge0
R1(config-if)#ip address 11.0.0.2/16
R1(config-service-instance)#interface 2ge1
R1(config-if)#ip address 12.0.0.2/8
R1(config-if)#port ge0
R1(config-port)#service-instance 4ge0
R1(config-service-instance)#encapsulation untagged
R1(config-service-instance)#connect ip interface 2ge0
R1(config-if)#port ge1
R1(config-port)#service-instance 4ge1
R1(config-service-instance)#encapsulation untagged
R1(config-service-instance)#connect ip interface 2ge1
Шаг 8. Установим адрес и шлюз для PC1 и PC2.
PC1> ip 192.168.0.10/24 192.168.0.1
PC2> ip 192.168.200.10/24 192.168.200.1
Команды просмотра
Для просмотра состояния туннеля используется команда show interface tunnel.<номер туннеля>
.
Для созданной выше конфигурации команда будет отображать следующий результат:
ecorouter#sh int tunnel.0
Interface tunnel.0 is up, line protocol is up
Ethernet address: 0000.ab27.8404
MTU: 1400
Tunnel source: 11.0.0.1
Tunnel destination: 12.0.0.2
Tunnel mode: GRE
ICMP redirection is on
<UP,BROADCAST,RUNNING,NOARP,MULTICAST>
inet 172.16.0.1/16 broadcast 172.16.255.255/16
total input packets 0, bytes 0
total output packets 0, bytes 0