14-GRE配置
本章节下载: 14-GRE配置 (293.53 KB)
目 录
GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(如IP和IPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。GRE是Tunnel(隧道)技术的一种,属于第三层隧道协议。
GRE隧道是一个虚拟的点到点的连接,为封装的数据报文提供了一条传输通路,GRE隧道的两端分别对数据报进行封装及解封装。
图1-1 X协议网络通过GRE隧道互连
下面以图1-1的网络为例说明X协议的报文穿越IP网络在GRE隧道中传输的过程:
· Router A连接Group 1的接口收到X协议报文后,首先交由X协议处理;
· X协议检查报文头中的目的地址域来确定如何路由此包;
· 若报文的目的地址要经过Tunnel才能到达,则设备将此报文发给相应的Tunnel接口;
· Tunnel接口收到此报文后进行GRE封装,在封装IP报文头后,设备根据此IP包的目的地址及路由表对报文进行转发,从相应的网络接口发送出去。
封装后的报文的形式如图1-2所示:
举例来说,一个封装在IP Tunnel中的X协议报文的格式如下:
图1-3 IP Tunnel中传输报文的格式
需要封装和传输的数据报文,称之为净荷(Payload),净荷的协议类型为乘客协议(Passenger Protocol)。系统收到一个净荷后,首先使用封装协议(Encapsulation Protocol)对这个净荷进行GRE封装,即把乘客协议报文进行了“包装”,加上了一个GRE头部成为GRE报文;然后再把封装好的原始报文和GRE头部封装在IP报文中,这样就可完全由IP层负责此报文的前向转发(Forwarding)。通常把这个负责前向转发的IP协议称为传输协议(Delivery Protocol或者Transport Protocol)。
根据传输协议的不同,可以分为GRE over IPv4和GRE over IPv6两种隧道模式。
解封装过程和加封装的过程相反。
· RouterB从Tunnel接口收到IP报文,检查目的地址;
· 如果目的地是本路由器,且IP报文头中的协议号为47(表示封装的报文为GRE报文),则RouterB剥掉此报文的IP报头,交给GRE协议处理(进行检验密钥、检查校验和及报文的序列号等);
· GRE协议完成相应的处理后,剥掉GRE报头,再交由X协议对此数据报进行后续的转发处理。
GRE收发双方的加封装、解封装处理,以及由于封装造成的数据量增加,会导致使用GRE后设备的数据转发效率有一定程度的下降。
GRE主要应用于以下几种环境:
图1-4中,Group 1和Group 2是运行Novell IPX协议的本地网,Team 1和Team 2是运行IP协议的本地网。通过在Router A和Router B之间采用GRE协议封装的隧道,Group 1和Group 2、Team 1和Team 2可以互不影响地进行通信。
两台终端之间的步跳数超过15,它们将无法通信。而通过在网络中使用隧道可以隐藏一部分步跳,从而扩大网络的工作范围。
图1-6 Tunnel连接不连续子网
运行Novell IPX协议的两个子网Group 1和Group 2分别在不同的城市,通过使用隧道可以实现跨越广域网的VPN。
设备暂时不支持连接Novell IPX网络。
与GRE相关的协议规范有:
· RFC 1701:Generic Routing Encapsulation (GRE)
· RFC 1702:Generic Routing Encapsulation over IPv4 networks
· RFC 2784:Generic 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 |
||
退回系统视图 |
quit |
- |
配置丢弃含有IPv4兼容IPv6地址的IPv6报文 |
tunnel discard ipv4-compatible-packet |
可选 缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文 |
有关interface tunnel、source、destination和mtu的相关配置可参考“三层技术-IP业务命令参考”中的“隧道”。
· Tunnel的源端地址与目的端地址唯一标识了一个通道。Tunnel两端必须配置源端地址与目的端地址,且两端地址互为源地址和目的地址。
· 两个或两个以上使用同种封装协议的Tunnel接口不能配置完全相同的源地址和目的地址。
· 配置Tunnel接口的源端地址时,若采用配置源接口形式,则Tunnel的源地址取的是源接口的主IP地址。
· 配置通过Tunnel转发的路由时,可以手工配置一条静态路由,目的地址是未进行GRE封装的报文的目的地址,下一跳是对端Tunnel接口。也可以在Tunnel接口上和与私网相连的路由器接口上分别使能动态路由协议,由动态路由协议来建立通过Tunnel转发的路由表项。
· 在Tunnel接口配置的静态路由的目的地址不能与Tunnel接口的地址在同一网段。
在完成上述配置后,在任意视图下执行display命令可以显示配置后GRE的运行情况,通过查看显示信息验证配置的效果。
表1-2 GRE的显示和维护
操作 |
命令 |
显示指定Tunnel接口的相关信息 |
display interface [ tunnel ] [ brief [ down ] ] [ | { begin | exclude | include } regular-expression ] display interface tunnel number [ brief ] [ | { begin | exclude | include } regular-expression ] |
显示指定Tunnel接口的IPv6相关信息 |
display ipv6 interface tunnel [ number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
display interface tunnel和display ipv6 interface tunnel命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
路由器Router A和路由器Router B之间通过Internet相连。运行IPv4协议的私有网络的两个子网Group 1和Group 2,通过在两台路由器之间使用GRE建立隧道实现互联。
在配置GRE隧道之前,需要分别配置路由器Router A和路由器Router B上连接Internet的接口,并配置相关路由协议。使Router A和Router B之间路由可达。
图1-7 GRE应用组网图
(1) 配置路由器Router A
# 配置接口GigabitEthernet4/1/1。
<RouterA> system-view
[RouterA] interface GigabitEthernet 4/1/1
[RouterA-GigabitEthernet4/1/1] ip address 10.1.1.1 255.255.255.0
[RouterA-GigabitEthernet4/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接口。
[RouterA] interface tunnel 3
# 配置Tunnel3接口的IP地址。
[RouterA-Tunnel3] ip address 10.1.2.1 255.255.255.0
# 配置Tunnel封装模式。
[RouterA-Tunnel3] tunnel-protocol gre
# 配置Tunnel3接口的源地址(GigabitEthernet 3/1/1的IP地址)。
[RouterA-Tunnel3] source 1.1.1.1
# 配置Tunnel3接口的目的地址(Router B的GigabitEthernet 3/1/2的IP地址)。
[RouterA-Tunnel3] destination 2.2.2.2
[RouterA-Tunnel3] quit
# 配置从Router A经过Tunnel3接口到Group 2的静态路由。
[RouterA] ip route-static 10.1.3.0 255.255.255.0 tunnel 3
(2) 配置路由器Router B
# 配置接口GigabitEthernet4/1/1。
<RouterB> system-view
[RouterB] interface GigabitEthernet 4/1/1
[RouterB-GigabitEthernet4/1/1] ip address 10.1.3.1 255.255.255.0
[RouterB-GigabitEthernet4/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接口。
[RouterB] interface tunnel 3
# 配置Tunnel3接口的IP地址。
[RouterB-Tunnel3] ip address 10.1.2.2 255.255.255.0
# 配置Tunnel封装模式。
[RouterB-Tunnel3] tunnel-protocol gre
# 配置Tunnel3接口的源地址(GigabitEthernet 3/1/2的IP地址)。
[RouterB-Tunnel3] source 2.2.2.2
# 配置Tunnel3接口的目的地址(Router A的GigabitEthernet 3/1/1的IP地址)。
[RouterB-Tunnel3] destination 1.1.1.1
[RouterB-Tunnel3] quit
# 配置从Router B经过Tunnel3接口到Group 1的静态路由。
[RouterB] ip route-static 10.1.1.0 255.255.255.0 tunnel 3
GRE的配置相对比较简单,但要注意配置的一致性,大部分的错误都可以通过使用调试命令定位。这里仅就一种错误进行分析,如图1-8所示。
图1-8 GRE排错示例
故障之一:Tunnel两端接口配置正确且Tunnel两端可以ping通,但Host A和Host B之间却无法ping通。
故障排除:可以按照如下步骤进行。
· 在任意视图下,在Router A和Router C分别执行display ip routing-table命令,观察在Router A是否有经过Tunnel1接口到10.2.0.0/16的路由;在Router C是否有经过Tunnel1接口到10.1.0.0/16的路由。
· 如果在上一步的输出中发现缺少相应的静态路由,在系统视图下使用ip route-static命令添加。以Router A为例,配置如下:
[RouterA] ip route-static 10.2.0.0 255.255.0.0 tunnel 1
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!