17-GRE配置
本章节下载 (598.54 KB)
目 录
GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(如IP和IPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。封装后的数据报文在网络中传输的路径,称为GRE隧道。GRE隧道是一个虚拟的点到点的连接,其两端的设备分别对数据报进行封装及解封装。
图1-1 GRE封装后的报文格式
如图1-1所示,GRE封装后的报文包括如下几个部分:
· 净荷数据(Payload packet):需要封装和传输的数据报文。净荷数据的协议类型,称为乘客协议(Passenger Protocol)。
· GRE头(GRE header):系统收到净荷数据后,在净荷数据上添加GRE头,使其成为GRE报文。对净荷数据进行封装的GRE协议,称为封装协议(Encapsulation Protocol)。
· 传输协议的报文头(Delivery header):负责转发封装后报文的网络协议,称为传输协议(Delivery Protocol或者Transport Protocol)。在GRE报文上需要增加传输协议的报文头,以便传输协议对封装后的报文进行转发处理。
图1-2 GRE封装报文举例
IPv6报文通过GRE隧道穿越IPv4网络时,报文格式如图1-2所示。其中,乘客协议为IPv6,封装协议为GRE,传输协议为IPv4。
根据传输协议的不同,GRE隧道可以分为:
· GRE over IPv4:传输协议为IPv4,乘客协议为任意网络层协议。
· GRE over IPv6:传输协议为IPv6,乘客协议为任意网络层协议。
图1-3 X协议网络通过GRE隧道互连
下面以图1-3的网络为例说明X协议的报文穿越IP网络在GRE隧道中传输的过程:
· Router A连接Group 1的接口收到X协议报文后,首先交由X协议处理;
· X协议检查报文头中的目的地址域来确定如何路由此包;
· 若报文的目的地址要经过Tunnel才能到达,则设备将此报文发给相应的Tunnel接口;
· Tunnel接口收到此报文后进行GRE封装,再封装IP报文头后,设备根据此IP包的目的地址及路由表对报文进行转发,从相应的网络接口发送出去。
解封装过程和加封装的过程相反。
· Router B从Tunnel接口收到IP报文,检查目的地址;
· 如果发现目的地是本路由器,且IP报文头中的协议号为47(表示封装的报文为GRE报文),则Router B剥掉此报文的IP报头,交给GRE协议处理(进行检验密钥、检查校验和及报文的序列号等);
· GRE协议完成相应的处理后,剥掉GRE报头,再交由X协议对此数据报进行后续的转发处理。
GRE收发双方的加封装、解封装处理,以及由于封装造成的数据量增加,会导致使用GRE后设备的数据转发效率有一定程度的下降。
为了提高GRE隧道的安全性,GRE还支持由用户选择设置Tunnel接口的识别关键字(或称密钥),和对隧道封装的报文进行端到端校验。
在RFC 1701中规定:
· 若GRE报文头中的Key标识位置1,则收发双方将进行通道识别关键字的验证,只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则将报文丢弃。
· 若GRE报文头中的Checksum标识位置1,则校验和有效。发送方将根据GRE头及Payload信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进行进一步处理,否则丢弃。
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。
图1-7 GRE-IPsec隧道应用
GRE可以和IPsec结合使用,即对于路由协议、语音、视频等数据先进行GRE封装,再对封装后的报文进行IPsec的加密处理,以提高数据在隧道中传输的安全性。
与GRE相关的协议规范有:
· RFC 1701:Generic Routing Encapsulation (GRE)
· RFC 1702:Generic Routing Encapsulation over IPv4 networks
· RFC 2784:Generic Routing Encapsulation (GRE)
设备上存在已经配置IP地址、能够进行正常通讯的接口(如VLAN接口,GigabitEthernet接口,Loopback接口等),该接口将作为Tunnel接口的源接口。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建一个Tunnel接口,并进入该Tunnel接口视图 |
interface tunnel interface-number |
必选 缺省情况下,设备上无Tunnel接口 |
设置Tunnel接口的IPv4地址 |
ip address ip-address { mask | mask-length } |
必选 缺省情况下,Tunnel接口上没有设置IPv4地址 |
配置隧道模式为GRE over IPv4 |
tunnel-protocol gre |
可选 缺省情况下,采用GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式,否则可能造成报文传输失败 |
设置Tunnel接口的源端地址或接口 |
source { ip-address | interface-type interface-number } |
必选 缺省情况下,Tunnel接口上没有设置源端地址和接口 |
设置Tunnel接口的目的端地址 |
destination ip-address |
必选 缺省情况下,Tunnel接口上没有设置目的端地址 |
使能GRE的keepalive功能,探测Tunnel接口状态,并配置keepalive报文发送周期及最大发送次数 |
keepalive [ seconds [ times ] ] |
可选 缺省情况下,不启用GRE的keepalive功能 |
使能GRE报文校验和功能 |
gre checksum |
可选 缺省情况下,未使能GRE报文校验和功能 |
设置GRE类型隧道接口的密钥 |
gre key key-number |
可选 缺省情况下,没有设置GRE类型隧道接口的密钥 隧道两端要么设置相同的密钥,要么都不设置密钥 |
设置GRE头的Recursion Control字段值 |
gre recursion recursion-value |
可选 缺省情况下,GRE头的Recursion Control字段值为0 |
指定转发当前隧道接口流量的业务处理板(非IRF模式) |
service slot slot-number |
可选 缺省情况下,没有指定转发当前接口流量的业务处理板 如果隧道的源端为三层聚合接口,则必须配置该命令来指定转发隧道接口流量的业务板 不同型号的产品支持情况见下表 |
指定转发当前隧道接口流量的成员设备和业务处理板(IRF模式) |
service chassis chassis-number slot slot-number |
|
退回系统视图 |
quit |
- |
配置通过Tunnel转发报文的路由 |
配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置 |
必选 在源端路由器和目的端路由器上都必须存在经过Tunnel转发报文的路由,这样需要进行GRE封装的报文才能正确转发。可以配置静态路由,也可以配置动态路由 |
SR6600/SR6600-X路由器各款型对于本节所描述的命令及参数的支持情况有所不同,详细差异信息如下:
型号 |
特性 |
描述 |
SR6602 |
指定转发当前接口流量的业务处理板 |
不支持 |
SR6602-X |
支持 |
|
SR6604/SR6608/SR6616 |
支持 |
|
SR6604-X/SR6608-X/SR6616-X |
支持 GRE隧道如果使用SAP-4EXP进行硬件转发,该命令不起作用 |
· Tunnel接口的详细介绍,及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。
· interface tunnel、tunnel-protocol、source和destination命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
· Tunnel的源端地址与目的端地址唯一标识了一个通道。Tunnel两端必须配置源端地址与目的端地址,且两端地址互为源地址和目的地址。
· 两个或两个以上使用同种封装协议的Tunnel接口不能配置完全相同的源地址和目的地址。
· 配置Tunnel接口的源端地址时,若采用配置源接口形式,则Tunnel的源地址取的是源接口的主IP地址。
· 隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。
· 配置通过Tunnel转发的路由时,可以手工配置一条静态路由,目的地址是未进行GRE封装的报文的目的地址,下一跳是对端Tunnel接口的地址。也可以在Tunnel接口上和与私网相连的路由器接口上分别使能动态路由协议,由动态路由协议来建立通过Tunnel转发的路由表项。
· 在Tunnel接口配置的静态路由的目的地址不能与Tunnel接口的地址在同一网段。
· 对于SR6604/SR6608/SR6616/SR6604-X/SR6608-X/SR6616-X路由器,因为各种业务和流量转发都在业务板上进行,禁止使用service slot命令指定主控板转发当前接口流量。service命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
设备上存在已经配置IP地址、能够进行正常通讯的接口(如VLAN接口,GigabitEthernet接口,Loopback接口等),该接口将作为Tunnel接口的源接口。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能IPv6报文转发功能 |
ipv6 |
必选 缺省情况下,关闭IPv6报文转发功能 |
创建一个Tunnel接口,并进入该Tunnel接口视图 |
interface tunnel interface-number |
必选 缺省情况下,设备上无Tunnel接口 |
设置Tunnel接口的IPv4地址 |
ip address ip-address { mask | mask-length } |
必选 缺省情况下,Tunnel接口上没有设置IPv4地址 |
配置隧道模式为GRE over IPv6 |
tunnel-protocol gre ipv6 |
必选 缺省情况下,采用GRE over IPv4隧道模式 在隧道的两端应配置相同的隧道模式,否则可能造成报文传输失败 |
设置Tunnel接口的源端地址或接口 |
source { ipv6-address | interface-type interface-number } |
必选 缺省情况下,Tunnel接口上没有设置源端地址和接口 |
设置Tunnel接口的目的端地址 |
destination ipv6-address |
必选 缺省情况下,Tunnel接口上没有设置目的端地址 |
设置隧道允许的最大嵌套封装次数 |
encapsulation-limit [ number ] |
可选 缺省情况下,最大嵌套封装次数为4 |
使能GRE报文校验和功能 |
gre checksum |
可选 缺省情况下,未使能GRE报文校验和功能 |
设置GRE类型隧道接口的密钥 |
gre key key-number |
可选 缺省情况下,没有设置GRE类型隧道接口的密钥 隧道两端要么设置相同的密钥,要么都不设置密钥 |
设置GRE头的Recursion Control字段值 |
gre recursion recursion-value |
可选 缺省情况下,GRE头的Recursion Control字段值为0 |
指定转发当前隧道接口流量的业务处理板(非IRF模式) |
service slot slot-number |
可选 缺省情况下,没有指定转发当前接口流量的业务处理板 如果隧道的源端为三层聚合接口,则必须配置该命令来指定转发隧道接口流量的业务板 不同型号的产品支持情况见下表 |
指定转发当前隧道接口流量的成员设备和业务处理板(IRF模式) |
service chassis chassis-number slot slot-number |
|
退回系统视图 |
quit |
- |
配置通过Tunnel转发报文的路由 |
配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”或其他路由协议配置 |
必选 在源端路由器和目的端路由器上都必须存在经过Tunnel转发报文的路由,这样需要进行GRE封装的报文才能正确转发。可以配置静态路由,也可以配置动态路由 |
SR6600/SR6600-X路由器各款型对于本节所描述的命令及参数的支持情况有所不同,详细差异信息如下:
型号 |
特性 |
描述 |
SR6602 |
指定转发当前接口流量的业务处理板 |
不支持 |
SR6602-X |
支持 |
|
SR6604/SR6608/SR6616 |
支持 |
|
SR6604-X/SR6608-X/SR6616-X |
支持 GRE隧道如果使用SAP-4EXP进行硬件转发,该命令不起作用 |
· interface tunnel、tunnel-protocol、source、destination和encapsulation-limit命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
· Tunnel接口的详细介绍,及Tunnel接口下的更多配置命令,请参见“三层技术-IP业务配置指导”中的“隧道”。
· 以上各项Tunnel接口下进行的功能特性配置,在删除Tunnel接口后,该接口上的所有配置也将被删除。
· Tunnel的源端地址与目的端地址唯一标识了一个通道。Tunnel两端必须配置源端地址与目的端地址,且两端地址互为源地址和目的地址。
· 两个或两个以上使用同种封装协议的Tunnel接口不能配置完全相同的源地址和目的地址。
· 配置Tunnel接口的源端地址时,若采用配置源接口形式,则Tunnel的源地址取的是源接口的主IP地址。
· 隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。
· 配置通过Tunnel转发的路由时,可以手工配置一条静态路由,目的地址是未进行GRE封装的报文的目的地址,下一跳是对端Tunnel接口的地址。也可以在Tunnel接口上和与私网相连的路由器接口上分别使能动态路由协议,由动态路由协议来建立通过Tunnel转发的路由表项。
· 在Tunnel接口配置的静态路由的目的地址不能与Tunnel接口的地址在同一网段。
· 对于SR6604/SR6608/SR6616/SR6604-X/SR6608-X/SR6616-X路由器,因为各种业务和流量转发都在业务板上进行,禁止使用service slot命令指定主控板转发当前接口流量。service命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
在完成上述配置后,在任意视图下执行display命令可以显示配置后GRE的运行情况,通过查看显示信息验证配置的效果。
表1-3 GRE的显示和维护
操作 |
命令 |
显示Tunnel接口的相关信息 |
display interface [ tunnel ] [ brief [ down ] ] [ | { begin | exclude | include } regular-expression ] display interface tunnel number [ brief [ description ] ] [ | { begin | exclude | include } regular-expression ] |
显示Tunnel接口的IPv6相关信息 |
display ipv6 interface tunnel [ number ] [ brief [ description ] ] [ | { begin | exclude | include } regular-expression ] |
display interface tunnel和display ipv6 interface tunnel命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
路由器Router A和路由器Router B之间通过Internet相连。运行IP协议的私有网络的两个子网Group 1和Group 2,通过在两台路由器之间使用GRE建立隧道实现互联。
图1-8 GRE over IPv4应用组网图
在开始下面的配置之前,需确保Router A和Router B之间路由可达。
(1) 配置路由器Router A
# 配置接口GigabitEthernet2/1/1。
<RouterA> system-view
[RouterA] interface gigabitethernet 2/1/1
[RouterA-GigabitEthernet2/1/1] ip address 10.1.1.1 255.255.255.0
[RouterA-GigabitEthernet2/1/1] quit
# 配置接口Serial2/2/0(隧道的实际物理接口)。
[RouterA] interface serial 2/2/0
[RouterA-Serial2/2/0] ip address 1.1.1.1 255.255.255.0
[RouterA-Serial2/2/0] quit
# 创建Tunnel0接口。
[RouterA] interface tunnel 0
# 配置Tunnel0接口的IP地址。
[RouterA-Tunnel0] ip address 10.1.2.1 255.255.255.0
# 配置Tunnel封装模式。
[RouterA-Tunnel0] tunnel-protocol gre
# 配置Tunnel0接口的源地址(Serial2/2/0的IP地址)。
[RouterA-Tunnel0] source 1.1.1.1
# 配置Tunnel0接口的目的地址(Router B的Serial2/2/1的IP地址)。
[RouterA-Tunnel0] destination 2.2.2.2
[RouterA-Tunnel0] quit
# 配置从Router A经过Tunnel0接口到Group 2的静态路由。
[RouterA] ip route-static 10.1.3.0 255.255.255.0 tunnel 0
(2) 配置路由器Router B
# 配置接口GigabitEthernet2/1/1。
<RouterB> system-view
[RouterB] interface gigabitethernet 2/1/1
[RouterB-GigabitEthernet2/1/1] ip address 10.1.3.1 255.255.255.0
[RouterB-GigabitEthernet2/1/1] quit
# 配置接口Serial2/2/1(隧道的实际物理接口)。
[RouterB] interface serial 2/2/1
[RouterB-Serial2/2/1] ip address 2.2.2.2 255.255.255.0
[RouterB-Serial2/2/1] quit
# 创建Tunnel0接口。
[RouterB] interface tunnel 0
# 配置Tunnel0接口的IP地址。
[RouterB-Tunnel0] ip address 10.1.2.2 255.255.255.0
# 配置Tunnel封装模式。
[RouterB-Tunnel0] tunnel-protocol gre
# 配置Tunnel0接口的源地址(Serial2/2/1的IP地址)。
[RouterB-Tunnel0] source 2.2.2.2
# 配置Tunnel0接口的目的地址(Router A的Serial2/2/0的IP地址)。
[RouterB-Tunnel0] destination 1.1.1.1
[RouterB-Tunnel0] quit
# 配置从Router B经过Tunnel0接口到Group 1的静态路由。
[RouterB] ip route-static 10.1.1.0 255.255.255.0 tunnel 0
(3) 验证配置结果
# 完成以上配置后,分别查看Router A和Router B的Tunnel接口状态。
[RouterA] display interface tunnel 0
Tunnel0 current state: UP
Line protocol current state: UP
Description: Tunnel0 Interface
The Maximum Transmit Unit is 1476
Internet Address is 10.1.2.1/24 Primary
Encapsulation is TUNNEL, service-loopback-group ID not set.
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel keepalive disabled
Tunnel protocol/transport GRE/IP
GRE key disabled
Checksumming of GRE packets disabled
Output queue : (Urgent queuing : Size/Length/Discards) 0/100/0
Output queue : (Protocol queuing : Size/Length/Discards) 0/500/0
Output queue : (FIFO queuing : Size/Length/Discards) 0/75/0
Last clearing of counters: Never
Last 300 seconds input: 0 bytes/sec, 0 packets/sec
Last 300 seconds output: 0 bytes/sec, 0 packets/sec
10 packets input, 840 bytes
0 input error
10 packets output, 840 bytes
0 output error
[RouterB] display interface tunnel 0
Tunnel0 current state: UP
Line protocol current state: UP
Description: Tunnel0 Interface
The Maximum Transmit Unit is 1476
Internet Address is 10.1.2.2/24 Primary
Encapsulation is TUNNEL, service-loopback-group ID not set.
Tunnel source 2.2.2.2, destination 1.1.1.1
Tunnel keepalive disabled
Tunnel protocol/transport GRE/IP
GRE key disabled
Checksumming of GRE packets disabled
Output queue : (Urgent queuing : Size/Length/Discards) 0/100/0
Output queue : (Protocol queuing : Size/Length/Discards) 0/500/0
Output queue : (FIFO queuing : Size/Length/Discards) 0/75/0
Last clearing of counters: Never
Last 300 seconds input: 2 bytes/sec, 0 packets/sec
Last 300 seconds output: 2 bytes/sec, 0 packets/sec
10 packets input, 840 bytes
0 input error
10 packets output, 840 bytes
0 output error
# 从Router B可以Ping通Router A上GigabitEthernet2/1/1接口的地址。
[RouterB] ping 10.1.1.1
PING 10.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 10.1.1.1: bytes=56 Sequence=1 ttl=255 time=2 ms
Reply from 10.1.1.1: bytes=56 Sequence=2 ttl=255 time=2 ms
Reply from 10.1.1.1: bytes=56 Sequence=3 ttl=255 time=2 ms
Reply from 10.1.1.1: bytes=56 Sequence=4 ttl=255 time=2 ms
Reply from 10.1.1.1: bytes=56 Sequence=5 ttl=255 time=2 ms
--- 10.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 2/2/2 ms
运行IP协议的两个子网Group 1和Group 2通过IPv6网络相连通过在路由器Router A和路由器Router B之间建立GRE over IPv6隧道,实现两个子网穿越IPv6网络互联。
图1-9 GRE over IPv6应用组网图
在开始下面的配置之前,需确保Router A和Router B之间路由可达。
(1) 配置路由器Router A
<RouterA> system-view
# 使能IPv6。
[RouterA] ipv6
# 配置接口GigabitEthernet3/0/1。
[RouterA] interface gigabitEthernet 3/0/1
[RouterA-GigabitEthernet3/0/1] ip address 10.1.1.1 255.255.255.0
[RouterA-GigabitEthernet3/0/1] quit
# 配置接口Serial2/2/0(隧道的实际物理接口)。
[RouterA] interface serial 2/2/0
[RouterA-Serial2/2/0] ipv6 address 2002::1:1 64
[RouterA-Serial2/2/0] quit
# 创建Tunnel0接口。
[RouterA] interface tunnel 0
# 配置Tunnel0接口的IP地址。
[RouterA-Tunnel0] ip address 10.1.2.1 255.255.255.0
# 配置Tunnel封装模式。
[RouterA-Tunnel0] tunnel-protocol gre ipv6
# 配置Tunnel0接口的源地址(Serial2/2/0的IP地址)。
[RouterA-Tunnel0] source 2002::1:1
# 配置Tunnel0接口的目的地址(Router B的Serial2/2/1的IP地址)。
[RouterA-Tunnel0] destination 2002::2:1
[RouterA-Tunnel0] quit
# 配置从Router A经过Tunnel0接口到Group 2的静态路由。
[RouterA] ip route-static 10.1.3.0 255.255.255.0 tunnel 0
(2) 配置路由器Router B
<RouterB> system-view
# 使能IPv6。
[RouterB] ipv6
# 配置接口GigabitEthernet3/0/1。
[RouterB] interface gigabitethernet 3/0/1
[RouterB-GigabitEthernet3/0/1] ip address 10.1.3.1 255.255.255.0
[RouterB-GigabitEthernet3/0/1] quit
# 配置接口Serial2/2/1(隧道的实际物理接口)。
[RouterB] interface serial 2/2/1
[RouterB-Serial2/2/1] ipv6 address 2002::2:1 64
[RouterB-Serial2/2/1] quit
# 创建Tunnel0接口。
[RouterB] interface tunnel 0
# 配置Tunnel0接口的IP地址。
[RouterB-Tunnel0] ip address 10.1.2.2 255.255.255.0
# 配置Tunnel封装模式。
[RouterB-Tunnel0] tunnel-protocol gre ipv6
# 配置Tunnel0接口的源地址(Serial2/2/1的IP地址)。
[RouterB-Tunnel0] source 2002::2:1
# 配置Tunnel0接口的目的地址(Router A的Serial2/2/0的IP地址)。
[RouterB-Tunnel0] destination 2002::1:1
[RouterB-Tunnel0] quit
# 配置从Router B经过Tunnel0接口到Group 1的静态路由。
[RouterB] ip route-static 10.1.1.0 255.255.255.0 tunnel 0
(3) 验证配置结果
# 完成以上配置后,分别查看Router A和Router B的Tunnel接口状态。
[RouterA] display interface Tunnel 0
Tunnel0 current state: UP
Line protocol current state: UP
Description: Tunnel0 Interface
The Maximum Transmit Unit is 1456
Internet Address is 10.1.2.1/24 Primary
Encapsulation is TUNNEL, service-loopback-group ID not set.
Tunnel source 2002::1:1, destination 2002::2:1
Tunnel protocol/transport GRE/IPv6
GRE key disabled
Checksumming of GRE packets disabled
Output queue : (Urgent queuing : Size/Length/Discards) 0/100/0
Output queue : (Protocol queuing : Size/Length/Discards) 0/500/0
Output queue : (FIFO queuing : Size/Length/Discards) 0/75/0
Last clearing of counters: Never
Last 300 seconds input: 0 bytes/sec, 0 packets/sec
Last 300 seconds output: 0 bytes/sec, 0 packets/sec
10 packets input, 840 bytes
0 input error
10 packets output, 840 bytes
0 output error
[RouterB] display interface Tunnel 0
Tunnel0 current state: UP
Line protocol current state: UP
Description: Tunnel0 Interface
The Maximum Transmit Unit is 1456
Internet Address is 10.1.2.2/24 Primary
Encapsulation is TUNNEL, service-loopback-group ID not set.
Tunnel source 2002::2:1, destination 2002::1:1
Tunnel protocol/transport GRE/IPv6
GRE key disabled
Checksumming of GRE packets disabled
Output queue : (Urgent queuing : Size/Length/Discards) 0/100/0
Output queue : (Protocol queuing : Size/Length/Discards) 0/500/0
Output queue : (FIFO queuing : Size/Length/Discards) 0/75/0
Last clearing of counters: Never
Last 300 seconds input: 0 bytes/sec, 0 packets/sec
Last 300 seconds output: 0 bytes/sec, 0 packets/sec
10 packets input, 840 bytes
0 input error
10 packets output, 840 bytes
0 output error
# 从Router B可以Ping通Router A上GigabitEthernet3/0/1接口的地址。
[RouterB] ping 10.1.1.1
PING 10.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 10.1.1.1: bytes=56 Sequence=1 ttl=255 time=3 ms
Reply from 10.1.1.1: bytes=56 Sequence=2 ttl=255 time=2 ms
Reply from 10.1.1.1: bytes=56 Sequence=3 ttl=255 time=2 ms
Reply from 10.1.1.1: bytes=56 Sequence=4 ttl=255 time=2 ms
Reply from 10.1.1.1: bytes=56 Sequence=5 ttl=255 time=3 ms
--- 10.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 2/2/3 ms
GRE的配置相对比较简单,但要注意配置的一致性,大部分的错误都可以通过使用调试命令debugging gre和debugging tunnel定位。这里仅就一种错误进行分析,如图1-10所示。
图1-10 GRE排错示例
Tunnel两端接口配置正确且Tunnel两端可以ping通,但Host A和Host B之间却无法ping通。
可以按照如下步骤进行:
· 在任意视图下,在Router A和Router C分别执行display ip routing-table命令,观察在Router A是否有经过Tunnel0接口到10.2.0.0/16的路由;在Router C是否有经过Tunnel0接口到10.1.0.0/16的路由。
· 如果在上一步的输出中发现缺少相应的静态路由,在系统视图下使用ip route-static命令添加。以Router A为例,配置如下:
[RouterA] ip route-static 10.2.0.0 255.255.0.0 tunnel 0
图2-1 点到多点GRE隧道应用
传统的GRE隧道是一个点到点的连接。GRE应用于如图2-1所示的企业网时,需要在企业中心节点和各个分支机构之间建立多条点到点GRE隧道。当企业分支机构众多时,配置工作量巨大;而且,如果新增分支机构,则需要在中心节点上增加配置,增加了网络维护的负担;此外,分支机构采用ADSL等方式拨号上网时,分支机构公网地址的不确定性也增加了中心节点配置的复杂度。
虽然动态VPN技术,如DVPN(Dynamic Virtual Private Network,动态虚拟专用网络),可以学习公网地址和私网地址的对应关系,并动态地在中心节点和分支机构、不同分支机构之间建立隧道,但是目前动态VPN技术没有统一的规范,各个厂商都采用私有协议实现动态VPN,无法互通。
点到多点GRE隧道很好地解决了上述问题,非常适用于分支机构众多的企业网络。点到多点GRE隧道组网中,需要在中心节点上配置点到多点GRE模式的隧道接口(以下简称为点到多点GRE隧道接口)、分支机构上配置传统的点到点GRE over IPv4模式的隧道接口(以下简称为点到点GRE隧道接口),这样就可以实现在中心节点和多个分支机构之间动态建立隧道。
点到多点GRE隧道的报文加解封装的过程与点到点GRE隧道相同,详细介绍请参见“三层技术-IP业务配置指导”中的“GRE”。
与点到点GRE隧道接口不同的是,点到多点GRE隧道接口上不需要手工配置隧道目的地址,而是根据接收到的GRE报文动态学习隧道目的地址。如图2-2所示,配置了点到多点GRE隧道接口的设备(Router A)接收到对端设备(Router B)发送的GRE报文后,从该报文中获取传输协议(IPv4)报文头的源地址和乘客协议(IPv4)报文头的源地址,分别作为隧道的目的地址和报文的目的地址(即分支网络的私网地址),建立一条隧道表项。
通过点到多点GRE隧道转发报文时,设备根据报文的目的地址,在隧道表项中查找对应的隧道目的地址,使用此地址作为GRE封装传输协议(IPv4)报文头的目的地址。
隧道表项中报文目的地址的掩码长度可以手工配置。配置报文目的地址掩码后,中心节点只会为属于同一个网段的私网IP地址建立一条隧道表项,从而减少中心节点上的表项数量,并保证分支网络可以通过模拟去往中心网络的数据流触发中心节点建立访问整个分支网络的隧道表项。
图2-3 分支机构的GRE隧道备份
如图2-3所示,为了提高网络的可靠性,分支机构可以部署多台网关设备,在中心节点和多个网关设备之间分别建立GRE隧道,形成备份。
在分支机构的网关设备上创建GRE隧道时,可以设置GRE Key。中心节点根据分支机构发送的GRE报文创建隧道表项时,从该GRE报文中获取GRE Key,记录在隧道表项中。中心节点根据GRE Key来判断隧道表项的优先级,并根据优先级最高的隧道表项转发报文,优先级低的隧道表项作为备份。未记录GRE Key的表项优先级最高;记录了GRE Key的表项,Key值越小优先级越高。
只能在分支节点的点到点GRE隧道接口上配置GRE Key,中心节点的点到多点GRE隧道接口上不能配置GRE Key。
图2-4 中心节点的GRE隧道备份
如图2-4所示,为了提高网络的可靠性,中心网络可以部署多台网关设备,通过在主设备(Router A)上为点到多点GRE隧道指定备份接口(Tunnel1接口),实现中心网络设备和传输路径的备份。当主设备与分支机构之间的链路出现故障时,发送给分支机构的报文在主设备上查找不到匹配的隧道表项,主设备通过备份接口把该报文发送给备份设备(Router B),由备份设备将报文发送到分支机构。备份接口应配置为GRE over IPv4模式的隧道接口。
当主设备上存在隧道表项时,备份接口也可以参与转发隧道的选择,根据优先级决定是否采用备份接口转发报文。如果没有为备份接口配置GRE Key,则其优先级低于所有的点到多点隧道表项;如果为备份接口配置了GRE Key,则与点到多点隧道表项中记录的GRE Key比较,Key值小的优先级高。
点到多点GRE隧道具有如下优点:
· 配置简单。中心节点上只需配置点到多点GRE隧道,无需在中心节点上创建到达每个分支机构的点到点GRE隧道。
· 维护代价小。增加分支机构时,中心节点会动态学习到新增分支机构的地址,并与其建立隧道,无需手工配置。
· 分支机构接入方式灵活。中心节点动态学习隧道的目的地址,分支机构是否动态获取公网地址(如采用ADSL等拨号方式接入网络)对中心节点的配置没有影响。
· 以标准的GRE协议为基础,不需要特殊的协议或者私有协议来配合使用,具有较好的互通性。
· 对于分支机构使用的网关设备没有特殊要求,只要支持GRE协议即可,避免用户网络设备的重复投资。
· 支持分支机构和中心节点的GRE隧道备份,提高网络的可靠性。
点到多点GRE隧道存在如下的局限性:
· 点到多点GRE隧道的传输协议和乘客协议只能是IPv4。
· 点到多点GRE隧道组网中,中心网络不能主动向分支网络发送报文。只有中心网络接收到分支网络的报文,并在中心节点上建立隧道表项后,中心网络发往分支网络的报文才能转发成功。
· 点到多点GRE隧道组网中,分支网络之间无法建立隧道,不能通信。
设备上存在已经配置IP地址、能够进行正常通讯的接口(如VLAN接口,Ethernet接口,Loopback接口等),该接口将作为Tunnel接口的源接口。
表2-1 配置点到多点GRE隧道
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建一个Tunnel接口,并进入该Tunnel接口视图 |
interface tunnel interface-number |
必选 缺省情况下,设备上无Tunnel接口 |
设置Tunnel接口的IPv4地址 |
ip address ip-address { mask | mask-length } |
必选 缺省情况下,Tunnel接口上没有设置IPv4地址 |
配置隧道模式为点到多点GRE隧道模式 |
tunnel-protocol gre p2mp |
必选 此模式下,传输协议和乘客协议只能是IPv4 对端设备的隧道接口应该配置为GRE over IPv4隧道模式 |
设置Tunnel接口的源端地址或接口 |
source { ip-address | interface-type interface-number } |
必选 缺省情况下,Tunnel接口上没有设置源端地址和接口 在分支节点上,需要将GRE over IPv4隧道的目的端地址配置为点到多点GRE隧道接口的源端地址 |
使能GRE报文校验和功能 |
gre checksum |
可选 缺省情况下,未使能GRE报文校验和功能 |
配置隧道表项老化时间 |
gre p2mp aging-time aging-time |
可选 缺省情况下,隧道表项的老化时间为5秒 |
配置备份接口 |
gre p2mp backup-interface tunnel number |
可选 缺省情况下,未指定备份接口 备份接口应为GRE over IPv4模式的隧道接口,且指定的备份接口必须是已经存在的隧道接口 |
配置分支网络私网IP地址的掩码 |
gre p2mp branch-network-mask { mask | mask-length } |
可选 缺省情况下,分支网络私网IP地址的掩码为255.255.255.255,即掩码长度为32 |
指定转发当前隧道接口流量的业务处理板(非IRF模式) |
service slot slot-number |
可选 缺省情况下,没有指定转发当前接口流量的业务处理板 如果隧道的源端为三层聚合接口,则必须配置该命令来指定转发隧道接口流量的业务板 不同型号的产品支持情况见下表 |
指定转发当前隧道接口流量的成员设备和业务处理板(IRF模式) |
service chassis chassis-number slot slot-number |
|
退回系统视图 |
quit |
- |
配置通过Tunnel转发报文的路由 |
配置的详细方法请参见“三层技术-IP路由配置指导”中的“静态路由”或其它路由协议配置 |
必选 在源端设备和目的端设备上都必须存在经过Tunnel转发报文的路由,这样需要进行GRE封装的报文才能正确转发。可以配置静态路由,也可以配置动态路由 |
SR6600/SR6600-X路由器各款型对于本节所描述的命令及参数的支持情况有所不同,详细差异信息如下:
型号 |
特性 |
描述 |
SR6602 |
指定转发当前接口流量的业务处理板 |
不支持 |
SR6602-X |
支持 |
|
SR6604/SR6608/SR6616 |
支持 |
|
SR6604-X/SR6608-X/SR6616-X |
支持 GRE隧道如果使用SAP-4EXP进行硬件转发,该命令不起作用 |
· 关于Tunnel接口的详细介绍及Tunnel接口下的相关配置,请参见“三层技术-IP业务配置指导”中的“隧道”。
· interface tunnel、tunnel-protocol和source命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
· 对于SR6604/SR6608/SR6616/SR6604-X/SR6608-X/SR6616-X路由器,因为各种业务和流量转发都在业务板上进行,禁止使用service slot命令指定主控板转发当前接口流量。
· 在SR6602-X/SR6604/SR6608/SR6616/SR6604-X/SR6608-X/SR6616-X路由器上配置点到多点GRE隧道时,必须执行service命令指定转发当前接口流量的业务处理板。service命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。
· 两个或两个以上点到多点GRE隧道接口不能配置完全相同的源地址。
· 配置点到多点GRE隧道接口的源端地址时,若采用配置源接口形式,则源端地址为源接口的主IP地址。
· 隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不会对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。
· 配置通过Tunnel转发的路由时,可以手工配置一条静态路由,目的地址是未进行GRE封装的报文的目的地址,下一跳是对端Tunnel接口的地址。
· 在Tunnel接口配置的静态路由的目的地址不能与Tunnel接口的地址在同一网段。
在完成上述配置后,在任意视图下执行display命令可以显示配置后点到多点GRE隧道的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令清除点到多点GRE隧道的相关信息。
表2-2 点到多点GRE隧道的显示和维护
操作 |
命令 |
显示指定点到多点GRE模式隧道接口的隧道表项信息 |
display gre p2mp tunnel-table interface tunnel number [ | { begin | exclude | include } regular-expression ] |
清除点到多点GRE隧道的隧道表项信息 |
reset gre p2mp tunnel-table [ interface tunnel number [ dest-address tunnel-dest-address] ] |
企业拥有一个中心网络和众多分支机构;分支机构和中心网络之间建立GRE隧道,实现隧道两侧内网主机互通;分支机构之间不会互相访问。如图2-5所示,Router A为企业中心节点网关设备,Router B为企业分支节点网关设备。Host A为中心节点内网用户,Host B为分支节点内网用户。
如果在中心节点网关设备Router A上配置点到点GRE隧道接口,则配置的隧道接口数量与分支节点个数相同。为了简化配置,需要在Router A上配置点到多点GRE隧道接口,在Router B上配置GRE over IPv4类型的隧道接口。
本举例中仅以一个分支节点网关设备Router B为例说明分支节点的配置方法,其他分支节点的配置与Router B上的配置类似。
图2-5 基本点到多点GRE隧道组网图
(1) 配置Router A
# 配置接口GigabitEthernet3/0/1。
<RouterA> system-view
[RouterA] interface gigabitethernet 3/0/1
[RouterA–GigabitEthernet3/0/1] ip address 11.1.1.1 255.255.255.0
[RouterA–GigabitEthernet3/0/1] quit
# 配置接口GigabitEthernet3/0/2。
[RouterA] interface gigabitethernet 3/0/2
[RouterA–GigabitEthernet3/0/2] ip address 192.168.11.1 255.255.255.0
[RouterA–GigabitEthernet3/0/2] quit
# 配置Tunnel0接口的IP地址。
[RouterA] interface tunnel 0
[RouterA-Tunnel0] ip address 192.168.22.1 255.255.255.0
# 配置Tunnel封装模式为点到多点GRE隧道模式。
[RouterA-Tunnel0] tunnel-protocol gre p2mp
# 配置Tunnel0接口的分支网络地址掩码。
[RouterA-Tunnel0] gre p2mp branch-network-mask 255.255.255.0
# 配置隧道表项的老化时间为20秒。
[RouterA-Tunnel0] gre p2mp aging-time 20
# 配置Tunnel0接口的源地址。
[RouterA-Tunnel0] source 11.1.1.1
[RouterA-Tunnel0] quit
# 配置经过Tunnel0接口到达分支网络的静态路由。
[RouterA] ip route-static 192.168.12.0 255.255.255.0 tunnel 0
(2) 配置Router B
# 配置接口GigabitEthernet3/0/1。
<RouterB> system-view
[RouterB] interface gigabitethernet 3/0/1
[RouterB–GigabitEthernet3/0/1] ip address 11.1.1.2 255.255.255.0
[RouterB–GigabitEthernet3/0/1] quit
# 配置接口GigabitEthernet3/0/2。
[RouterB] interface gigabitethernet 3/0/2
[RouterB–GigabitEthernet3/0/2] ip address 192.168.12.1 255.255.255.0
[RouterB–GigabitEthernet3/0/2] quit
# 配置Tunnel0接口的IP地址。
[RouterB] interface tunnel 0
[RouterB-Tunnel0] ip address 192.168.22.2 255.255.255.0
# 配置Tunnel封装模式为GRE over IPv4隧道模式。
[RouterB-Tunnel0] tunnel-protocol gre
# 配置Tunnel0接口的源地址。
[RouterB-Tunnel0] source 11.1.1.2
# 配置Tunnel0接口的目的地址。
[RouterB-Tunnel0] destination 11.1.1.1
[RouterB-Tunnel0] quit
# 配置经过Tunnel0接口到达中心节点的静态路由。
[RouterB] ip route-static 192.168.11.0 255.255.255.0 tunnel 0
# 完成以上配置后,查看Router A上的隧道表项。此时Router A上不存在隧道表项。
[RouterA] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
# 在Host B上ping Host A,可以ping通。
# 再次查看Router A上的隧道表项。此时,分支节点发往中心节点的报文已经触发Router A建立隧道表项。
[RouterA] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
192.168.12.0 255.255.255.0 11.1.1.2
企业中心机构在内网出口处采用双网关进行备份,企业分支节点Router C上创建两条GRE隧道,一条与中心节点网关Router A相连,另一条与中心节点的备份网关Router B相连。正常情况下,报文通过Router A和Router C之间的隧道转发;当Router A和Router C之间的链路出现故障时,报文通过Router B和Router C之间的隧道转发。
为了满足上述需求,需要在Router A和Router B上分别创建连接分支网络的点到多点GRE隧道,并在Router A和Router B之间创建一条GRE over IPv4隧道。Router A上该GRE over IPv4隧道接口作为点到多点GRE隧道接口的备份接口,当Router A找不到分支网络对应的隧道表项时,将报文发给Router B,由Router B负责将报文转发给分支网络。
为了避免出现环路,在Router B上不要将连接Router A的隧道接口Tunnel1配置为点到多点GRE隧道接口的备份接口。
图2-6 双中心节点备份的点到多点GRE隧道组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Router A |
GE3/1/1 |
11.1.1.1/24 |
Router B |
GE3/1/1 |
11.1.1.2/24 |
GE3/1/2 |
10.1.1.1/24 |
GE3/1/2 |
10.1.1.2/24 |
||
GE3/1/3 |
192.168.11.1/24 |
GE3/1/3 |
192.168.11.2/24 |
||
Tunnel0 |
172.168.1.1/24 |
Tunnel0 |
172.168.2.2/24 |
||
Tunnel1 |
192.168.22.1/24 |
Tunnel1 |
192.168.22.2/24 |
||
Router C |
GE3/1/1 |
11.1.1.3/24 |
Router C |
Tunnel0 |
172.168.1.3/24 |
GE3/1/2 |
192.168.12.1/24 |
Tunnel1 |
172.168.2.3/24 |
请按照图2-6配置各以太网接口的IP地址和子网掩码,具体配置过程略。
(1) 配置Router A
# 配置Tunnel1接口的IP地址。
<RouterA> system-view
[RouterA] interface tunnel 1
[RouterA-Tunnel1] ip address 192.168.22.1 255.255.255.0
# 配置Tunnel封装模式为GRE over IPv4隧道模式。
[RouterA-Tunnel1] tunnel-protocol gre
# 配置Tunnel1接口的源地址和目的地址。
[RouterA-Tunnel1] source 10.1.1.1
[RouterA-Tunnel1] destination 10.1.1.2
[RouterA-Tunnel1] quit
# 配置Tunnel0接口的IP地址。
[RouterA] interface tunnel 0
[RouterA-Tunnel0] ip address 172.168.1.1 255.255.255.0
# 配置Tunnel封装模式为点到多点GRE隧道模式。
[RouterA-Tunnel0] tunnel-protocol gre p2mp
# 配置Tunnel0接口的分支网络地址掩码。
[RouterA-Tunnel0] gre p2mp branch-network-mask 255.255.255.0
# 配置隧道表项的老化时间为20秒。
[RouterA-Tunnel0] gre p2mp aging-time 20
# 配置Tunnel0接口的源地址。
[RouterA-Tunnel0] source 11.1.1.1
# 配置Tunnel0接口的备份接口。
[RouterA-Tunnel0] gre p2mp backup-interface tunnel 1
[RouterA-Tunnel0] quit
# 配置经过Tunnel0接口到达分支网络的静态路由。
[RouterA] ip route-static 192.168.12.0 255.255.255.0 tunnel 0
(2) 配置Router B
# 配置Tunnel0接口的IP地址。
<RouterB> system-view
[RouterB] interface tunnel 0
[RouterB-Tunnel0] ip address 172.168.2.2 255.255.255.0
# 配置Tunnel封装模式为点到多点GRE隧道模式。
[RouterB-Tunnel0] tunnel-protocol gre p2mp
# 配置Tunnel0接口的源地址。
[RouterB-Tunnel0] source 11.1.1.2
# 配置Tunnel0接口的分支网络地址掩码。
[RouterB-Tunnel0] gre p2mp branch-network-mask 255.255.255.0
# 配置隧道表项的老化时间为20秒。
[RouterA-Tunnel0] gre p2mp aging-time 20
[RouterB-Tunnel0] quit
# 配置经过Tunnel0接口到达分支网络的静态路由。
[RouterB] ip route-static 192.168.12.0 255.255.255.0 tunnel 0
# 配置Tunnel1接口的IP地址。
[RouterB] interface tunnel 1
[RouterB-Tunnel1] ip address 192.168.22.2 255.255.255.0
# 配置Tunnel封装模式为GRE over IPv4隧道模式。
[RouterB-Tunnel1] tunnel-protocol gre
# 配置Tunnel1接口的源地址和目的地址。
[RouterB-Tunnel1] source 10.1.1.2
[RouterB-Tunnel1] destination 10.1.1.1
[RouterB-Tunnel1] quit
(3) 配置Router C
# 配置Tunnel0接口的IP地址。
<RouterC> system-view
[RouterC] interface tunnel 0
[RouterC-Tunnel0] ip address 172.168.1.3 255.255.255.0
# 配置Tunnel封装模式为GRE over IPv4隧道模式。
[RouterC-Tunnel0] tunnel-protocol gre
# 配置Tunnel0接口的源地址和目的地址。
[RouterC-Tunnel0] source 11.1.1.3
[RouterC-Tunnel0] destination 11.1.1.1
[RouterC-Tunnel0] quit
# 配置经过Tunnel0接口到达中心网络的静态路由,优先级为1。
[RouterC] ip route-static 192.168.11.0 255.255.255.0 tunnel 0 preference 1
# 配置Tunnel1接口的IP地址。
[RouterC] interface tunnel 1
[RouterC-Tunnel1] ip address 172.168.2.3 255.255.255.0
# 配置Tunnel封装模式为GRE over IPv4隧道模式。
[RouterC-Tunnel1] tunnel-protocol gre
# 配置Tunnel1接口的源地址和目的地址。
[RouterC-Tunnel1] source 11.1.1.3
[RouterC-Tunnel1] destination 11.1.1.2
[RouterC-Tunnel1] quit
# 配置经过Tunnel1接口到达中心网络的静态路由,优先级为10。该路由的优先级低于Tunnel0接口对应静态路由的优先级,以保证Router C优先选择Router A和Router C之间的隧道转发报文。
[RouterC] ip route-static 192.168.11.0 255.255.255.0 tunnel 1 preference 10
Router A和Router C之间的链路出现故障时,Router C必须能够感知到该故障,并将转发报文的路径切换到Router B和Router C之间的链路上,否则Router B无法学习到隧道表项。
如果Router A和Router C之间直连,则在Router C上配置静态路由即可保证Router C能够感知链路故障;如果Router A和Router C之间非直连,则需要采用以下两种方式之一使得Router C能够感知链路故障:
· 在Router A、Router B和Router C上配置动态路由协议。
· 在Router C上配置静态路由与Track项关联,通过Track项监测静态路由是否有效。Track项的详细介绍,请参见“可靠性配置指导”中的“Track”。
# 完成以上配置后,在Host C上ping Host A,可以ping通。查看Router A和Router B 上的隧道表项。
[RouterA] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
192.168.12.0 255.255.255.0 11.1.1.3
[RouterB] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
以上显示信息表示Router A上存在到达分支网络的隧道表项,发往分支网络的报文通过Router A转发。
# 使Router A到Router C的隧道中断。
[RouterC] interface tunnel 0
[RouterC-Tunnel0] shutdown
# 经过隧道表项老化时间(20秒)后,查看Router A上的隧道表项。
[RouterA] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
# 在Host C上ping Host A。查看Router B上的隧道表项。
[RouterB] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
192.168.12.0 255.255.255.0 11.1.1.3
此后,在Host A上ping Host C ,可以ping通。
以上验证过程表示Router A和Router C之间的链路出现故障后,Router A上的隧道表项在老化时间到达后被删除,Router A通过备份接口将发往分支网络的报文转发给Router B,由Router B将报文发送到分支网络。
企业分支机构在内网出口处采用双网关进行备份,企业中心节点Router A上配置点到多点GRE隧道接口,使得Router A可以与分支机构建立两条GRE隧道:一条与分支网络网关Router B相连,另一条与分支网络的备份网关Router C相连。中心节点Router A能够根据GRE Key决定通过哪条GRE隧道向分支网络内的主机发送报文。
为了满足上述需求,需要在Router B和Router C上分别为GRE隧道配置不同的GRE Key,以便Router A根据GRE Key选择优先级高的隧道转发报文。
本例中,要求Router A优先通过与Router B连接的GRE隧道向分支网络内的主机发送报文。
图2-7 分支节点备份的点到多点GRE隧道组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Router A |
GE3/1/1 |
11.1.1.1/24 |
Router B |
GE3/1/1 |
11.1.1.2/24 |
GE3/1/2 |
172.17.17.1/24 |
GE3/1/2 |
192.168.1.2/24 |
||
Tunnel0 |
192.168.22.1/24 |
Tunnel0 |
192.168.22.2/24 |
||
Router C |
GE3/1/1 |
11.1.1.3/24 |
Router C |
Tunnel0 |
192.168.22.3/24 |
GE3/1/2 |
192.168.1.3/24 |
|
|
请按照图2-7配置各以太网接口的IP地址和子网掩码,具体配置过程略。
# 配置Tunnel0接口的IP地址。
<RouterA> system-view
[RouterA] interface tunnel 0
[RouterA-Tunnel0] ip address 192.168.22.1 255.255.255.0
# 配置Tunnel封装模式为点到多点GRE隧道模式。
[RouterA-Tunnel0] tunnel-protocol gre p2mp
# 配置Tunnel0接口的分支网络地址掩码。
[RouterA-Tunnel0] gre p2mp branch-network-mask 255.255.255.0
# 配置隧道表项的老化时间为20秒。
[RouterA-Tunnel0] gre p2mp aging-time 20
# 配置Tunnel0接口的源地址。
[RouterA-Tunnel0] source 11.1.1.1
[RouterA-Tunnel0] quit
# 配置经过Tunnel0接口到达分支网络的静态路由。
[RouterA] ip route-static 192.168.1.0 255.255.255.0 tunnel 0
(2) 配置Router B
# 配置Tunnel0接口的IP地址。
<RouterB> system-view
[RouterB] interface tunnel 0
[RouterB-Tunnel0] ip address 192.168.22.2 255.255.255.0
# 配置Tunnel封装模式为GRE over IPv4隧道模式。
[RouterB-Tunnel0] tunnel-protocol gre
# 配置Tunnel0接口的源地址和目的地址。
[RouterB-Tunnel0] source 11.1.1.2
[RouterB-Tunnel0] destination 11.1.1.1
# 配置Tunnel0接口的密钥为1。
[RouterB-Tunnel0] gre key 1
[RouterB-Tunnel0] quit
# 配置经过Tunnel0接口到中心网络的静态路由。
[RouterB] ip route-static 172.17.17.0 255.255.255.0 tunnel 0
(3) 配置Router C
# 配置Tunnel0接口的IP地址。
<RouterC> system-view
[RouterC] interface tunnel 0
[RouterC-Tunnel0] ip address 192.168.22.3 255.255.255.0
# 配置Tunnel封装模式为GRE over IPv4隧道模式。
[RouterC-Tunnel0] tunnel-protocol gre
# 配置Tunnel0接口的源地址和目的地址。
[RouterC-Tunnel0] source 11.1.1.3
[RouterC-Tunnel0] destination 11.1.1.1
# 配置Tunnel0接口的密钥为2。
[RouterC-Tunnel0] gre key 2
[RouterC-Tunnel0] quit
# 配置经过Tunnel0接口到中心网络的静态路由。
[RouterC] ip route-static 172.17.17.0 255.255.255.0 tunnel 0
# 在Host B上设置Router C为默认网关。在Host B上ping Host A,可以ping通。查看Router A上的隧道表项。
[RouterA] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
192.168.1.0 255.255.255.0 11.1.1.3 2
# 在Host B上设置Router B为默认网关。在Host B上ping Host A,可以ping通。查看Router A上的隧道表项。
[RouterA] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
192.168.1.0 255.255.255.0 11.1.1.3 2
192.168.1.0 255.255.255.0 11.1.1.2 1
以上显示信息表示Router A上存在两条到达分支网络的隧道表项,Router A优先选择GRE Key值小的隧道表项,即通过Router B转发报文。
# 使Router A到Router B的隧道中断。
[RouterB] interface tunnel 0
[RouterB-Tunnel0] shutdown
# 将Host B的默认网关设置为Router C。Router B对应的隧道表项老化后,在Host B上ping Host A,仍然可以ping通。查看Router A上的隧道表项。
[RouterA] display gre p2mp tunnel-table interface tunnel 0
Dest Addr Mask Tunnel Dest Addr Gre Key
192.168.1.0 24 11.1.1.3 2
以上显示信息表示Router A和Router B之间的链路出现故障后,Router A上只存在通过Router C将报文发送到分支网络的隧道表项。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!