一.GRE介绍
1.GRE是通用路由封装协议,可以对网络层协议【ipx atm ipv等】的数据进行封装,将这些协议的报文封装在另一种协议报文中,使报文能够在异种网络中进行传输。
2.目的:解决异网传输的问题
二.GRE报文格式
1.乘客协议:封装前的报文叫净荷,封装前的报文协议叫乘客协议
2.封装协议:GRE Header
3.传输协议:负责对封装后的报文进行转发的协议称为传输协议
表1-1 GRE Header首部各字段解释
字段 | 长度 | 描述 |
C | 1 bit | 校验和验证位。如果该位置1,表示GRE头插入了校验和(Checksum)字段;该位为0表示GRE头不包含校验和字段。 |
K | 1 bit | 关键字位。如果该位置1,表示GRE头插入了关键字(Key)字段;该位为0表示GRE头不包含关键字字段。 |
Recursion | 3 bits | 用来表示GRE报文被封装的层数。完成一次GRE封装后将该字段加1。如果封装层数大于3,则丢弃该报文。该字段的作用是防止报文被无限次的封装。 |
Flags | 5 bits | 预留字段。当前必须设为0。 |
Version | 3 bits | 版本字段,必须置为0。Version为1是使用在RFC2637的PPTP中。 |
Protocol Type | 16 bits | 乘客协议的协议类型。 |
Checksum | 16 bits | 对GRE头及其负载的校验和字段。 |
Key | 31 bits | 关键字字段,隧道接收端用于对收到的报文进行验证。 |
三.GRE协议的基本原理及转发过程
GRE是tunnel隧道技术的一种,属于第三层隧道转发。GRE隧道是一个虚拟的点到点的连接,为封装的数据提供一条传输路经。GRE隧道的两端是tunnel接口,来进行数据的封装和解封装。
转发路径:
封装
1.routerA接受到ip数据报文后交给ip协议处理。
2.IP协议检查报文头部中的目的地址来确定如何转发。若需要经过GRE隧道,则将报文交给tunnel接口
3.tunnel接口打上GRE 报文头,交给ip协议处理。
4.ip协议为GRE报文封装新的IP报文头【源地址为隧道源接口ip,目的地址为隧道目的接口IP】,然后更据封装后的IP报文的目的地址及路由表进行转发,从相应的Internet的物理接口【隧道原接口】发送出去。
解封装
routerB从internet的物理接口收到IP报文后,检查目的地址,如果是routerB,且ip协议的报文头部为47【表示封装的报文是GRE报文】,则routerB剥掉此报文,交给GER报文协议,GRE协议进行校验和关键字识别后,再交给ip协议处理。ip协议将此数据报文转发到总部。
四:GRE的安全机制
1.校验和验证
作用:确认乘客信息的完整性
GRE报文头中C位标识为1,则有校验和验证。
发送方将根据GRE头部和乘客协议的信息计算校验和,并将校验和的报文发送给对端。
接受方收到报文后,计算校验和,并与报文中的校验和比较,一致下一步处理,不一致丢弃。
校验和的报文【checksum】在GRE hearder中
2.识别关键字【key】
作用:防止错误识别,接受到其他地方的报文
GER报文头的k位为1时,GRE头中插入一个4字节【key】关键字字段,收发的双方能进行关键字的验证。
关键字的作用是标识隧道中的流量,属于同一的流量报文使用相同的关键字。
GRE来识别key。只有tunnel两端设置的关键字相同,才通过验证。
五:GRE的Keepalive机制
由于GRE协议并不具备检测链路状态的功能。如果远端端口不可达,隧道并不能及时关闭该Tunnel连接,这样会造成源端会不断的向对端转发数据,而对端却因Tunnel不通而丢弃所有报文,由此就会形成数据发送的空洞。
作用:GRE的Keepalive检测功能用于时刻检测隧道链路是否处于Keepalive状态,即检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。
keepalive的实现过程:
a:当GRE隧道的源端使能keepalive检测功能后,就会建立一个定时器,周期性的发送keepalive探测报文,同时计数器进行不可达计数,每发送一个探测报文,不可达数加一。
b:对端每收到一个探测报文,就给源端回应报文。
c:如果源端的计数器值到达预先设置的值——重试次数(Retry Times)时,还没收到回送报文,就认为对端不可达。此时,源端将关闭隧道连接。
注:只需要在一端配置keepalive,另一端会自动回应。
六:GRE应用场景
1.GRE over Ipsec
2.ipv6 over ipv4
3.GRE vpn
六:优点和缺点
优点:
1.解决了异网传输的问题
2.可以封装组播协议
3.打破了rip最大跳数为一的限制【隧道端到端的条数为1】
4.GRE机制简单
缺点:
1.不支持加密
2.身份认证较弱
3.数据完整性较弱
七.实验 GRE静态路由
1.配ip
2.配置路由让公网互通
3.配置tunnel接口
Ar3
Int tunnnel 0/0/0
tunnel-protocol gre
source 202.1.1.1
destination 64.1.1.1
Ip ad 10.1.1.2
Ar1
Int tunnnel 0/0/0
tunnel-protocol gre
source 64.1.1.1
destination 202.1.1.1
Ip ad 10.1.1.2
4.指定路由从tunnel接口出
Ar3:ip route-static 192.168.1.0 24 10.1.1.1 对端tunnelip
Ar1:IP route-static 172.168.1.0 24 10.1.1.2 对端tunnelip
5.配饰key校验
AR1
Int tuunel 0/0/0
Gre key 1111
AR3
Int g0/0/0
Int tunnel 0/0/0
Gre key 1111
6.配置keepalive
AR1
Int tuunel 0/0/0
Keepalive
AR2
Int tuunel 0/0/0
keepalive
默认配置,指定发送Keeppalive报文定时器周期5秒。指定不可达计数器参数,默认3。
AR1:
int Tunnel 0/0/0
keepalive period 12 retry-times 4
AR3:
int Tunnel 0/0/0
keepalive period 12 retry-times 4
使能GRE隧道Keepalive功能并指定发送周期为12秒,不可达计数器为4
7.ping 或tracet。抓包查看
以下为动态GRE
1.将4.指定路由从tunnel接口出改为动态路由ospf
Ar3:ip route-static 192.168.1.0 24 10.1.1.1 对端tunnelip
Ar1:IP route-static 172.168.1.0 24 10.1.1.2 对端tunnelip
AR1:ospf
network 10.1.1.0 0.0.0.255
network 192.168.1.0 0.0.0.255
AR3:ospf
network 10.1.1.0 0.0.0.255
network 172.168.1.0 0.0.0.255
2.查看路由表
应有ospf 下一跳指向 tunnel接口的路由