GRE是一种通用封装协议,可以将多种网络协议的报文封装为IP报文,通过IP网络传输。通用路由封装(Generic Routing Encapsulation)是对某些网络层协议的报文进行封装,使这些被封装的报文能够在IP协议中传输。
GRE可以作为VPN的第三层隧道协议,在协议层之间采用隧道(Tunnel)技术。隧道是一个虚拟的点对点的连接,连接是通过逻辑的隧道接口建立,这个接口提供了一条通路,使封装的数据报能够在这个通路上传输,并在一个隧道的两端分别对数据报进行封
装及解封装。
说明
mGRE是在GRE基础上发展而来的一种点到多点GRE技术,应用于DSVPN。
1.多协议的本地网络通过IP 网络传输
示意图:
通过在RouterA和RouterB之间采用GRE协议封装的隧道(Tunnel),LAN1和LAN2、LAN3和LAN4可以互不影响地进行通信。
2.扩大跳数受限网络协议的工作范围
如图2所示,两台终端之间的设备组建IP网络,但步跳数超过255,两台终端无法通信。在网络中使用GRE隧道可以隐藏步跳,使两台终端之间的跳数小于255而可以通信,从而扩大网络协议的工作范围。
3.与IPSec 结合使用保护组播数据
GRE可以封装PIM-DM/SM组播数据,在GRE隧道中传输。IPSec只能对单播数据进行加密保护,无法保护组播数据。对于组播数据需要在IPSec隧道中传输的情况,如图3所示,可以使用GRE over IPSec先将组播数据进行GRE封装,再对封装后的报文进行IPSec加密,从而实现组播数据在IPSec隧道中的加密传输。
4.CE 采用GRE 隧道接入BGP/MPLS IP VPN
在基于MPLS的VPN中,为了让用户端设备CE(Customer Edge)接入VPN中往往需要CE与MPLS骨干网的PE(Provider Edge)设备之间有直接的物理链路。但实际组网中,并非所有的CE和PE都能用物理链路直接相连,此时可以通过在CE和PE之间配置GRE隧道,实现逻辑上的直连,如图1-4所示。
CE和PE间的连接有如下三种方式:
l 私有网络的GRE:GRE隧道关联某个VPN实例,而GRE隧道的源接口(或源地址)和目的地址也属于该VPN实例。
l 公共的GRE:GRE隧道关联某个VPN实例,GRE隧道的源地址和目的地址为公网地址,不属于VPN实例。
l 穿越VPN的GRE:GRE隧道关联某个VPN实例(例如VPN1),GRE隧道的源接口绑定了另一个VPN实例(例如VPN2),即GRE隧道需要穿越VPN2。
关于GRE的维护命令
用户视图下执行reset counters interface tunnel [ interface-number ]命令重置Tunnel接口的统计信息。
l 重置Tunnel接口的Keepalive报文相关统计信息。
1. 执行命令system-view,进入系统视图。
2. 执行命令interface tunnel interface-number,进入Tunnel接口视图。
3. 使用reset keepalive packets count命令重置Tunnel接口的Keepalive报文相关统计信息。
命令reset keepalive packets count只能在Tunnel接口视图下执行,且该接口的隧道协议必须配置为GRE。
Tunnel接口的Keepalive报文统计信息清零后,信息不可恢复,请谨慎使用。
在日常维护工作中,可以在任意视图下选择执行以下命令,了解GRE协议的运行情况,可以查看GRE隧道接口是否Up,是否存在错误报文,到目的地址的路由信息是否通过Tunnel接口正常转发。
操作步骤
l 使用display interface tunnel命令查看所有Tunnel接口的工作状态。
l 使用display ip routing-table命令查看通过Tunnel接口转发的公网路由信息。
l 使用display ip routing-table vpn-instance vpn-instance命令查看通过Tunnel接口转发的VPN路由信息。
当Tunnel接口绑定VPN实例,加入VPN时,应指定VPN实例,查看VPN路由转发表信息。
GRE配置举例参考以下资料:





