Протокол 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
- 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
GRE туннели по умолчанию stateless, т.е. локальный хост не проверяет состояние туннеля удаленного хоста. А это значит, что если по каким-то причинам удаленный туннель не поднялся (состояние Down), локальный хост будет отправлять трафик в этот самый туннель.
Чтобы этого избежать у Cisco реализован механизм Keepalive. Раз в отрезок времени отправляются Keepalive пакеты до удаленного хоста. Если ответ получен, то у туннеля состояние Up, если нет, то Down.
Когда у туннеля состояние Down все маршруты имеющие Next Hop этот туннельный интерфейс пропадают из таблицы маршрутизации.
Router(config-if)#keepalive 10 3
Комментариев нет:
Отправить комментарий