概述 GRE (Generic Routing Encapsulation)
GRE是一种最传统的隧道协议,其根本功能就是要实现隧道功能,通过隧道连接的两个远程网络就如同直连,GRE在两个远程网络之间模拟出直连链路,从而使网络间达到直连的效果,为此,GRE需要完成多次封装,总共有3次,换句话说,就是在GRE隧道中传输的数据包都有3个爆头,因为只谈IP协议,所以GRE中的IP数据包是一层套一层,总共有3个IP地址,GRE在实现隧道时,需要创建虚拟直连链路,GRE实现的虚拟链路可以认为是隧道,隧道是模拟链路,所以隧道两端也有IP地址,但隧道需要在公网中找到起点和重点,所以隧道的源和终点分别都以公网IP地址结尾,该链路是通过GRE协议来完成的,隧道传递数据包的过程分为3步:
1、接收原始IP数据包当作乘客协议,原始数据包包头的IP地址为私有IP地址,
Cisco GRE(隧道协议)
。2、将原始IP数据包封装进GRE协议,GRE协议成为封装协议(Encapsulation Protocol),封装的包头IP地址为虚拟直连链路两端的IP地址。
3、将整个GRE数据包当作数据,在外层封装公网的IP包头,也就是隧道的起源和终点,从而路由到隧道终点。
GRE隧道中传输的数据包格式如下:
GRE要在远程路由器之间创建虚拟直连链路,也就是隧道(Tunnel),如果没有该隧道,GRE不能完成隧道功能,隧道是GRE最基本的功能,也是GRE所有功能;上图环境中,当上海分公司R2将数据包IP地址封装为192.168.1.4发往武汉时,GRE操作过程如下:
1、假设R1与R3的GRE虚拟直连链路(隧道)已经简历,隧道链路两端的地址分别为1.1.1.1和1.1.1.2,隧道两端的起源和终点分别为202.1.1.1和61.1.1.1.
2、R1收到目标IP为192.168.1.4的数据包后,将原始数据包当作乘客数据包封装进GRE协议中,并且添加GRE包头,包头中源IP为隧道本端地址1.1.1.1,包头中目标IP为隧道对端地址1.1.1.2,从而完成GRE数据包的分装。
3、在封装了GRE隧道地址的数据包外面分装GRE隧道起源IP地址,该IP地址为公网地址,即源IP为100.1.1.1,目标IP为隧道终点200.1.1.1,最后将数据包发出去。
说明:图中Internet 使用路由器R2来模拟!
配置R1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Router>en
Router#conf t
Router(config)#no ip do lo
Router(config)#lin con 0
Router(config-line)#no exec-t
Router(config-line)#logg s
Router(config-line)#exit
Router(config)#ho CHENYI-R1
CHENYI-R1 (config)#int f0/0
CHENYI-R1 (config-if)#ip add 10.1.1.1 255.255.255.0
CHENYI-R1 (config-if)#no sh
CHENYI-R1 (config-if)#int f1/0
CHENYI-R1 (config-if)#ip add 202.1.1.1 255.255.255.0
CHENYI-R1 (config-if)#no sh
CHENYI-R1 (config-if)#ip route 0.0.0.0 0.0.0.0 202.1.1.10
说明:配置R1的接口地址,并写默认路由指向Internet(路由器R2),地址为202.1.1.10,
电脑资料
《Cisco GRE(隧道协议)》(http://meiwen.anslib.com)。配置R3:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Router>en
Router#conf t
Router(config)# no ip do lo
Router(config)#lin con 0
Router(config-line)#no exec-t
Router(config-line)#logg s
Router(config-line)#exit
Router(config)#ho CHENYI-R3
CHENYI-R3(config)#int f0/0
CHENYI-R3(config-if)#ip add 61.1.1.1 255.255.255.0
CHENYI-R3(config-if)#no sh
CHENYI-R3(config-if)#int f1/0
CHENYI-R3(config-if)#ip add 192.168.1.3 255.255.255.0
CHENYI-R3(config-if)#no sh
CHENYI-R3(config-if)#ip route 0.0.0.0 0.0.0.0 61.1.1.10