GRE. Краткое описание протокола и его настройка.

GRE (англ. Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов, разработанный компанией Cisco Systems. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP-пакеты.

Пример стека протоколов:

Уровень модели OSI             Протокол
-------------------------------------------
5. Сеансовый                   X.225
4. Транспортный                UDP
3. Сетевой (GRE-инкапсуляция)  IPv6
Инкапсуляция                   GRE
3. Сетевой                     IPv4
2. Канальный                   Ethernet
1. Физический                  Ethernet

 

 

Особенности GRE протокола

1. RFC2784
2. Использует IP протокол 47
3. Внутри - любой трафик (IPv4, IPv6, unicast, multicast, etc.)
4. Добавляет 24 байта к изначальному заголовку
    - Новый IP заголовок - 20 байт (внешние (Underlay/NBMA) IP адреса);
    - GRE заголовок - 4 байта
5. Необходимо следить за IP MTU и TCP-adj-mss:
    - При использ-ии только GRE:
        MTU: 1500 byte - 24 byte = 1476 byte
        TCP-adj-mss: 1456 byte
    - При использ-ии GRE + шифрование:
        MTU: 1440 byte
        TCP-adj-mss: 1400 byte
 

Ограничения GRE протокола

1. Слабая масштабируемость (каждому направлению нужно настраивать свой туннель);
2. Наличие предопределенных ip-адресов;
3. Использование адресного пространства ( /30 для каждого туннеля);

 

Настройка GRE туннеля

interface Tunnel0
 tunnel mode gre ip                    ! В конфиг опция не отображается
 ip address 172.16.1.1 255.255.255.0   ! IP адрес локального туннеля
 tunnel source 1.1.1.1                 ! Внешний IP адрес локального роутера
 tunnel destination 2.2.2.2            ! Внешний IP адрес удаленного роутера
end
!
! Сети локального роутера, к-ые необх-о анонсировать
! В примере используется OSPF, но также использ-ся и статическая м.
!
router ospf 100
 log-adjacency-changes
 network 10.1.1.0 0.0.0.255 area 0
 network 172.16.1.0 0.0.0.255 area 0

 

Troubleshooting GRE туннеля

# sh ip route 172.16.1.2
# show interfaces Tunnel 0
# sh ip ospf 100 inter br
Interface    PID   Area            IP Address/Mask    Cost  State Nbrs F/C
Fa0/0        100   0               10.1.1.1/24        10    DR    0/0
Tu0          100   0               172.16.1.1/24      11111 P2P   1/1
# sh ip route ospf 100   
     10.0.0.0/24 is subnetted, 2 subnets
O       10.2.2.0 [110/11121] via 172.16.1.2, 00:02:21, Tunnel0