Powered By Blogger

среда, 12 августа 2015 г.

Путь к DMVPN - часть 1 (Обзор GRE)

Протокол GRE (Generic Routing Encapsulation) описывается в нескольких RFC: 1701, 1702, 2784.
Основная цель - это передавать различные протоколы через различную среду. Одно из общих применений - это передавать IP multicast через среду IP.

Пример:
У системы есть пакет и ей надо его отправить удаленному получателю. Назовем этот пакет Payload packet (или Passenger protocol). Данный пакет мы инкапсулируем в GRE (Carrier protocol - перевозчик), затем то что получилось мы снова инкапсулируем в еще один IP (Transport protocol) и затем отправляем удаленному получателю.
GRE - протокол третьего уровня. GRE пакеты инкапсулированные в IP используют номер IP 47.






В Cisco IOS GRE реализованы как VTI (Virtual Tunnel Interface). Туннельный интерфейс регулирует процесс инкапсуляции. Когда мы указываем в VTI адрес источника (tunnel source) и адрес получателя (tunnel destination), именно она буду в новом IP заголовке (Transport protocol). Это должны быть реальные/маршрутизируемые адреса. Когда удаленный маршрутизатор получает пакет, он ищет соответствеющий VTI, снимает (декапсулирует) внешний IP заголовок и отправляет GRE пакет на него.

GRE туннели могут быть так же двух типов:
- Point-to-Point
- Point-to-Multipoint

Примеры:
1) Point-to-Point GRE
R1(config)#interface tunnel 1
R1(config-if)#ip address 10.0.0.1 255.255.255.0
R1(config-if)#tunnel source 7.7.7.1
R1(config-if)#tunnel destination 7.7.7.2

R2(config)#interface tunnel 1
R2(config-if)#ip address 10.0.0.2 255.255.255.0
R2(confiq-if)#tunnel source 7.7.7.2
R2(config-if)#tunnel destination 7.7.7.1

Примечание: по умолчанию в VTI инкапсуляция стоит GRE.

2) Point-to-Multipoint (Hub and Spokes) GRE
Hub(config)#interface tunnel 1
Hub(config-if)#tunnel mode gre multipoint
Hub(config-if)#tunnel source 7.7.7.1
Hub(config-if)#ip address 10.0.0.1 255.255.255.0
!
Spoke(config)#interface tunnel 1
Spoke(config-if)#tunnel source 7.7.7.2
Spoke(config-if)#tunnel destination 7.7.7.1
Spoke(config-if)#ip address 10.0.0.2 255.255.255.0

Примечание: Без протокола NHRP (Next Hop Resolution Protocol) второй пример работать не будет. Hub не знает как маршрутизировать GRE пакеты, т.к. он не знает реальных IP адресов удаленных получателей (Spokes).

GRE туннели по умолчанию stateless, т.е. локальный хост не проверяет состояние туннеля удаленного хоста. А это значит, что если по каким-то причинам удаленный туннель не поднялся (состояние Down), локальный хост будет отправлять трафик в этот самый туннель.
Чтобы этого избежать у Cisco реализован механизм Keepalive. Раз в отрезок времени отправляются Keepalive пакеты до удаленного хоста. Если ответ получен, то у туннеля состояние Up, если нет, то Down.
Когда у туннеля состояние Down все маршруты имеющие Next Hop этот туннельный интерфейс пропадают из таблицы маршрутизации.

Router(config-if)#keepalive 10 3



Комментариев нет:

Отправить комментарий