02-IP业务分册- 服务支持- H3C

GREGeneric Routing Encapsulation,通用路由封装)协议是对某些网络层协议(如IPIPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。GRE采用了Tunnel(隧道)技术,是VPNVirtual Private Network)的第三层隧道协议。

Tunnel是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel的两端分别对数据报进行封装及解封装。

一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过加封装与解封装两个过程,下面以的网络为例说明这两个过程:

协议网络通过GRE隧道互连

 

1. 加封装过程

l              Router A连接Group 1的接口收到X协议报文后,首先交由X协议处理;

l              X协议检查报文头中的目的地址域来确定如何路由此包;

l              若报文的目的地址要经过Tunnel才能到达,则设备将此报文发给相应的Tunnel接口;

l              Tunnel口收到此报文后进行GRE封装,封装完成后交给IP模块处理,在封装IP报文头后,设备根据此IP包的目的地址及路由表对报文进行转发,从相应的网络接口发送出去。

2. GRE封装后的报文格式

封装好的报文的形式如下图所示:

报文格式

 

举例来说,一个封装在IP Tunnel中的X协议报文的格式如下:

中传输报文的格式

 

需要封装和路由的数据报文,称之为净荷(Payload),净荷的协议类型为乘客协议(Passenger Protocol)。系统收到一个净荷后,首先使用封装协议(Encapsulation Protocol)对这个净荷进行GRE封装,即把乘客协议报文进行了“包装”,加上了一个GRE头部成为GRE报文;然后再把封装好的原始报文和GRE头部封装在IP报文中,这样就可xx由IP层负责此报文的前向转发(Forwarding)。通常把这个负责前向转发的IP协议称为传输协议(Delivery Protocol或者Transport Protocol)。

3. 解封装的过程

解封装过程和加封装的过程相反。

l              RouterBTunnel接口收到IP报文,检查目的地址;

l              如果发现目的地是本路由器,则RouterB剥掉此报文的IP报头,交给GRE协议处理(进行检验密钥、检查校验和及报文的序列号等);

l              GRE协议完成相应的处理后,剥掉GRE报头,再交由X协议对此数据报进行后续的转发处理。

 

1.1.2  应用范围

GRE主要能实现以下几种服务类型:

1. 多协议的本地网通过单一协议的骨干网传输

 

上图中,Group 1Group 2是运行Novell IPX协议的本地网,Team 1Team 2是运行IP协议的本地网。通过在Router ARouter B之间采用GRE协议封装的隧道(Tunnel),Group 1Group 2Team 1Team 2可以互不影响地进行通信。

2. 扩大了步跳数受限协议(如IPX)的网络的工作范围

 

两台终端之间的步跳数超过15,它们将无法通信。而通过在网络中使用隧道(Tunnel)可以隐藏一部分步跳,从而扩大网络的工作范围。

3. 将一些不能连续的子网连接起来,用于组建VPN

连接不连续子网

 

运行Novell IPX协议的两个子网Group 1Group 2分别在不同的城市,通过使用隧道可以实现跨越广域网的VPN

 

GRE相关的协议规范有:

l              RFC1701Generic Routing Encapsulation (GRE)

l              RFC 1702Generic Routing Encapsulation over IPv4 networks

l              RFC 2784Generic Routing Encapsulation (GRE)

 

设备上的接口(如VLAN接口,GigabitEthernet接口等)已经配置IP地址,能够进行正常通讯。这些接口将作为Tunnel虚接口的源接口,以保证隧道目的地址路由可达。

隧道

隧道

操作

命令

说明

进入系统视图

system-view

-

使能IPv6报文转发功能

ipv6

可选

缺省情况下,关闭IPv6报文转发功能。

IPv6 over IPv4 GRE隧道上该功能为必选。

 

创建一个Tunnel接口,并进入该Tunnel接口视图

interface tunnel interface-number

必选

缺省情况下,设备上无Tunnel接口

配置Tunnel接口的IPv4地址

ip address ip-address { mask | mask-length }

三者必选其一

缺省情况下,Tunnel接口上没有设置IPv4地址

在隧道上配置IPv4地址或者IPv6地址请根据实际情况选择

缺省情况下,Tunnel接口上没有设置IPv6全球单播地址或站点本地地址

配置IPv6全球单播地址或站点本地地址

ipv6 address { ipv6-address prefix-length | ipv6-address/prefix-length }

ipv6 address ipv6-address/prefix-length eui-64

配置IPv6链路本地地址

ipv6 address auto link-local

可选

缺省情况下,当接口配置了IPv6全球单播地址或站点本地地址后,会自动生成链路本地地址

ipv6 address ipv6-address link-local

配置隧道模式为GRE

tunnel-protocol gre

可选

缺省情况下,采用GRE隧道模式

在隧道的两端应配置相同的隧道模式,否则可能造成报文传输失败

设置Tunnel接口的源端地址或接口

source { ip-address | interface-type interface-number }

必选

缺省情况下,Tunnel接口上没有设置源端地址和接口

设置Tunnel接口的目的端地址

destination ip-address

必选

缺省情况下,Tunnel接口上没有设置目的端地址

配置通过Tunnel的路由

配置的详细情况请参见“IP路由分册”中的“静态路由配置”或其他路由协议配置

可选

在源端路由器和目的端路由器上都必须存在经过Tunnel转发的路由,这样需要进行GRE封装的报文才能正确转发。可以选择配置静态路由,也可以选择配置动态路由。在Tunnel的两端都要进行此项配置

设置隧道接口的MTU

mtu mtu-size

可选

请根据实际情况选择

ipv6 mtu mtu-size

 

 

l    Tunnel的源端地址与目的端地址{wy}标识了一个通道。这些配置在Tunnel两端必须配置,且两端地址互为源地址和目的地址。

l    两个或两个以上使用同种封装协议的Tunnel接口不能配置xx相同的源地址和目的地址。

l    配置Tunnel接口的源端地址时,若采用配置源接口形式,则Tunnel的源地址取的是源接口的主IP地址。

l    配置通过Tunnel转发的路由时,可以手工配置一条静态路由,目的地址是未进行GRE封装的报文的目的地址,下一跳是对端Tunnel接口。也可以在Tunnel接口上和与xx相连的路由器接口上分别使能动态路由协议,由动态路由协议来建立通过Tunnel转发的路由表项。

 

在完成上述配置后,在任意视图下执行display命令可以显示配置后GRE的运行情况,通过查看显示信息验证配置的效果。

显示和维护

 

1.4.1  组网需求

路由器Router A和路由器Router B之间通过Internet相连。运行IPv4协议的私有网络的两个子网Group 1Group 2,通过在两台路由器之间使用GRE建立隧道实现互联。

在配置GRE隧道之前,需要分别配置路由器Router A和路由器Router B上连接Internet的接口,并配置相关路由协议。使Router ARouter B之间路由可达。

应用组网图

 

(1)        配置路由器Router A

# 配置接口GigabitEthernet4/1/1

<RouterA> system-view

[RouterA] interface GigabitEthernet 4/1/1

[RouterA-Ethernet4/1/1] ip address 10.1.1.1 255.255.255.0

[RouterA-Ethernet4/1/1] quit

# 配置接口GigabitEthernet 3/1/1(隧道的源接口)。

[RouterA] interface GigabitEthernet 3/1/1

[RouterA-GigabitEthernet3/1/1] ip address 1.1.1.1 255.255.255.0

[RouterA-GigabitEthernet3/1/1] quit

# 创建Tunnel3/0/1接口。

[RouterA] interface tunnel 3/0/1

# 配置Tunnel3/0/1接口的IP地址。

[RouterA-Tunnel3/0/1] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel封装模式。

[RouterA-Tunnel3/0/1] tunnel-protocol gre

# 配置Tunnel3/0/1接口的源地址(GigabitEthernet 3/1/1IP地址)。

[RouterA-Tunnel3/0/1] source 1.1.1.1

# 配置Tunnel3/0/1接口的目的地址(Router BGigabitEthernet 3/1/2IP地址)。

[RouterA-Tunnel3/0/1] destination 2.2.2.2

[RouterA-Tunnel3/0/1] quit

# 配置从Router A经过Tunnel3/0/1接口到Group 2的静态路由。

[RouterA] ip route-static 10.1.3.0 255.255.255.0 tunnel 3/0/1

(2)        配置路由器Router B

# 配置接口GigabitEthernet4/1/1

<RouterB> system-view

[RouterB] interface GigabitEthernet 4/1/1

[RouterB-Ethernet4/1/1] ip address 10.1.3.1 255.255.255.0

[RouterB-Ethernet4/1/1] quit

# 配置接口GigabitEthernet 3/1/2(隧道的源接口)。

[RouterB] interface GigabitEthernet 3/1/2

[RouterB-GigabitEthernet3/1/2] ip address 2.2.2.2 255.255.255.0

[RouterB-GigabitEthernet3/1/2] quit

# 创建Tunnel3/0/1接口。

[RouterB] interface tunnel 3/0/1

# 配置Tunnel3/0/1接口的IP地址。

[RouterB-Tunnel3/0/1] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel封装模式。

[RouterB-Tunnel3/0/1] tunnel-protocol gre

# 配置Tunnel3/0/1接口的源地址(GigabitEthernet 3/1/2IP地址)。

[RouterB-Tunnel3/0/1] source 2.2.2.2

# 配置Tunnel3/0/1接口的目的地址(Router AGigabitEthernet 3/1/1IP地址)。

[RouterB-Tunnel3/0/1] destination 1.1.1.1

[RouterB-Tunnel3/0/1] quit

# 配置从Router B经过Tunnel3/0/1接口到Group 1的静态路由。

[RouterB] ip route-static 10.1.1.0 255.255.255.0 tunnel 3/0/1

GRE的配置相对比较简单,但要注意配置的一致性,大部分的错误都可以通过使用调试命令debugging gredebugging tunnel定位。这里仅就一种错误进行分析,如所示。

排错示例

 

故障之一:Tunnel两端接口配置正确且Tunnel两端可以ping通,但Host AHost B之间却无法ping通。

故障排除:可以按照如下步骤进行。

l              在任意视图下,在Router ARouter C分别执行display ip routing-table命令,观察在Router A是否有经过Tunnel1/0/0接口到10.2.0.0/16的路由;在Router C是否有经过Tunnel1/0/0接口到10.1.0.0/16的路由。

l              如果在上一步的输出中发现缺少相应的静态路由,在系统视图下使用ip route-static命令添加。以Router A为例,配置如下:

[RouterA] ip route-static 10.2.0.0 255.255.0.0 tunnel 1/0/0

郑重声明:资讯 【02-IP业务分册- 服务支持- H3C】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——