IPSec VPN用于在两个端点间提供安全的IP通信,但只能加密并传播单播数据,无法加密并传输语音、视频、动态路由协议信息等组播数据流量。
GRE(通用路由封装协议)是一种隧道封装技术,提供了将一种协议的报文封装在另一种协议报文中的机制。GRE可以封装组播数据,并可以和IPSec结合使用,从而保证语音、视频等组播数据的安全。
GRE的优点
- GRE实现简单,对隧道两端设备的负担小;
- GRE隧道可以通过IPv4网络连通多种网络协议的本地网络,有效利用了原有网络架构,降低成本;
- GRE隧道扩展了跳数受限的网络协议的使用范围,支持企业灵活设计网络拓扑;
- GRE隧道可以封装组播数据,和IPSec结合使用,可以保证语音、视频等组播业务的安全;
- GRE隧道支持使能MPLS LDP,使用GRE隧道承载MPLS LDP报文,建立LDP LSP,实现MPLS骨干网通;
- GRE隧道将不连续的子网联系起来,组成VPN,实现企业总部和分支间安全连接。
GRE基本原理
报文在GRE隧道中传输包括封装和解封装两个过程。
封装
Ingress PE从连接x协议的网络接口接收到x协议报文后,首先交由x协议处理;
x协议根据报文头中的目的地址,在路由表或转发表中寻找出口,确定如何转发此报文,如果发现出口是GRE Tunnel接口,则对报文进行GRE封装,即添加GRE包头;
根据骨干网传输协议为IP,给报文加上IP头,IP头的源地址是隧道源地址,目的地址是隧道目的地址;
根据该IP的目的地址,在骨干网的路由表中查找相应的出接口并发送该报文,之后封装后的报文在该骨干网中传输。
解封装
Egress PE从GRE Tunnel接口收到该报文,分析IP头,发现报文的目的地址为本设备,则Egress PE去掉IP头后,交给GRE协议处理;
GRE协议去掉GRE头后,获取x协议报文,再交给x协议进行后续的转发处理。
GRE报文格式
乘客协议:封装前的报文称为净荷,封装前的协议称为乘客协议。
封装协议:GRE报头由封装协议完成并填充,封装协议也称为运载协议。
传输协议:负责对封装后的协议进行转发的协议称为传输协议。
GRE头字段:
GRE头字段 | 字段解释 |
---|---|
C | 校验和验证位。“1”表示插入校验和字段;“0”表示不含校验和字段 |
K | 关键字位。“1”表示插入关键字字段;“0”表示不含关键字段 |
Recursion | 表示GRE报文被封装的层数,每封装一次该值就加1,如果该值大于3则丢弃该报文。该字段的作用是防止报文被无限次的封装 |
Flags | 预留字段。当前必须置“0” |
Version | 版本号。当前必须置“0” |
Checksum | 对GRE头及其负载的校验和字段 |
Key | 隧道接收端用于对收到的报文进行验证 |
GRE的配置
首先保证物理链路的联通,要配置路由表
AR1的配置:
<Huawei>sys
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 12.1.1.1 24
[Huawei-GigabitEthernet0/0/0]q
//配置静态路由
[Huawei]ip route-static 23.1.1.0 24 g0/0/0 12.1.1.2
[Huawei]ip route-static 33.1.1.0 24 g0/0/0 12.1.1.2
[Huawei]int lo1
[Huawei-LoopBack1]ip add 11.1.1.1 24
[Huawei-LoopBack1]q
AR2的配置:
<Huawei>sys
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 12.1.1.2 24
[Huawei-GigabitEthernet0/0/0]q
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 23.1.1.1 24
[Huawei-GigabitEthernet0/0/1]q
//配置静态路由
[Huawei]ip route-static 11.1.1.0 24 g0/0/0