国家 / 地区

07-三层技术-IP业务配置指导

17-GRE配置

本章节下载  (431.53 KB)

docurl=/cn/Service/Document_Software/Document_Center/Home/Routers/00-Public/Configure/Operation_Manual/H3C_MSR810[2600][3600]_CG(V7)-R0707-6W304/07/201909/1224891_30005_0.htm

17-GRE配置


1 GRE

1.1  GRE简介

GRE(Generic Routing Encapsulation,通用路由封装)协议用来对某种协议(如IP、MPLS、以太网)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络(如IP)中传输。封装前后数据报文的网络层协议可以相同,也可以不同。封装后的数据报文在网络中传输的路径,称为GRE隧道。GRE隧道是一个虚拟的点到点的连接,其两端的设备分别对数据报文进行封装及解封装。

1.1.1  GRE封装后的报文格式

图1-1所示,GRE封装后的报文包括如下几个部分:

·              净荷数据(Payload packet):需要封装和传输的数据报文。净荷数据的协议类型,称为乘客协议(Passenger Protocol)。乘客协议可以是任意的网络层协议。

·              GRE头(GRE header):采用GRE协议对净荷数据进行封装所添加的报文头,包括封装层数、版本、乘客协议类型、校验和信息、Key信息等内容。添加GRE头后的报文称为GRE报文。对净荷数据进行封装的GRE协议,称为封装协议(Encapsulation Protocol)。

·              传输协议的报文头(Delivery header):在GRE报文上添加的报文头,以便传输协议对GRE报文进行转发处理。传输协议(Delivery Protocol或者Transport Protocol)是指负责转发GRE报文的网络层协议。设备支持IPv4和IPv6两种传输协议:当传输协议为IPv4时,GRE隧道称为GRE over IPv4隧道;当传输协议为IPv6时,GRE隧道称为GRE over IPv6隧道。

图1-1 GRE封装后的报文格式

 

1.1.2  GRE隧道原理

下面以图1-2的网络为例说明IPv6协议的报文通过GRE隧道穿越IPv4网络进行传输的过程。

(1)      Device A从连接IPv6 network 1的接口收到IPv6报文后,查找路由表判定此报文需要通过GRE隧道模式的Tunnel接口(本例中为Tunnel0)转发,并将报文发给相应的Tunnel接口。

(2)      GRE隧道模式的Tunnel接口收到此IPv6报文后,先在报文前封装上GRE头,再封装上IPv4头。IPv4头中的源地址为隧道的源端地址(本例中为Device A的Interface A接口的IP地址),目的地址为隧道的目的端地址(本例中为Device B的Interface B接口的IP地址)。

(3)      Device A根据封装的IPv4头中的目的地址查找路由表,将封装后的IPv4报文通过GRE隧道的实际物理接口(Interface A)转发出去。

(4)      封装后的IPv4报文通过GRE隧道到达隧道的目的端设备Device B后,由于报文的目的地是本设备,且IPv4头中的协议号为47(表示封装的报文为GRE报文),Device B将此报文交给GRE协议进行解封装处理。

(5)      GRE协议先剥离掉此报文的IPv4头,再对报文进行GRE Key验证、校验和验证、报文序列号检查等处理,处理通过后再剥离掉报文的GRE头,将报文交给IPv6协议进行后续的转发处理。

图1-2 IPv6协议网络通过GRE隧道互连

 

 

1.1.3  GRE安全机制

GRE支持GRE Key验证、校验和验证两种安全机制。

1. GRE Key验证

通过GRE Key验证可以检查报文的合法性。

发送方在发送的报文中携带本地配置的GRE Key。接收方收到报文后,将报文中的GRE Key与接收方本地配置的GRE Key进行比较,如果一致则对报文进行进一步处理,否则丢弃该报文。

2. GRE校验和验证

通过GRE校验和验证可以检查报文的完整性。

发送方根据GRE头及Payload信息计算校验和,并将包含校验和信息的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进行进一步处理,否则丢弃该报文。

1.1.4  GRE应用场景

GRE主要有以下几种应用场景。

1. 通过单一协议的骨干网连接采用不同协议的网络

图1-3所示,IPv6 network 1和IPv6 network 2是运行IPv6协议的网络,IPv4 network 1和IPv4 network 2是运行IPv4协议的网络。在Device A和Device B之间建立GRE隧道,可以使IPv6 network 1和IPv6 network 2、IPv4 network 1和IPv4 network 2通过骨干网互不影响地进行通信,实现两地互通。

图1-3 通过单一协议的骨干网连接采用不同协议的网络

 

2. 扩大网络的工作范围

在IP网络中,报文的TTL值最大为255。如果两台设备之间的跳数超过255,它们将无法通信。通过在网络中使用GRE隧道可以隐藏一部分跳数,从而扩大网络的工作范围。如图1-4所示,使用了GRE隧道之后,Host A和Host B之间的跳数减少为3跳,GRE隧道经过的设备中只有隧道两端的设备(Device A和Device D)参与跳数计算。

图1-4 扩大网络的工作范围

 

3. 组建VPN

图1-5所示,属于VPN 1的两个站点Site 1和Site 2分别位于不同的城市,通过使用GRE隧道可以实现跨越广域网连接VPN 1的两个站点。

图1-5 组建VPN

 

4. 与IPsec配合使用

图1-6所示,GRE可以和IPsec(IP Security,IP安全)配合使用,通过建立GRE over IPsec隧道,对路由协议、语音、视频等数据先进行GRE封装,再对封装后的报文进行IPsec处理。二者配合使用的优势如下:

·              提高数据在隧道中传输的安全性。

·              解决IPsec只能处理单播报文的问题。GRE可以支持组播、广播和非IP报文,先对这些报文进行GRE封装,使其成为普通的单播报文。然后,IPsec就可以对其进行进一步的处理。

·              简化IPsec的配置。由于所有报文都先经过GRE封装后再进行IPsec处理,因此只要根据GRE隧道的源/目的端地址来定义需要IPsec保护的数据流即可,不需要关注原始报文的源/目的地址。

图1-6 GRE over IPsec隧道应用

 

GRE和IPsec还有另外一种配合方式,即IPsec over GRE隧道。但这种方式不能充分利用二者的优势,一般不推荐使用。

关于IPsec的详细介绍请参见“安全配置指导”中的“IPsec”。

1.1.5  协议规范

与GRE相关的协议规范有:

·              RFC 1701:Generic Routing Encapsulation (GRE)

·              RFC 1702:Generic Routing Encapsulation over IPv4 networks

·              RFC 2784:Generic Routing Encapsulation (GRE)

·              RFC 2890:Key and Sequence Number Extensions to GRE

1.2  GRE配置限制和指导

·              GRE收发双方的加封装、解封装处理,以及由于封装造成的数据量增加,会导致使用GRE后设备的数据转发效率有一定程度的下降。

·              隧道两端必须都配置隧道的源端地址和目的端地址,且本端配置的源端地址(目的端地址)应该与对端配置的目的端地址(源端地址)相同。

·              在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。

·              GRE隧道和点到多点GRE隧道不能配置相同的源端地址和目的端地址。

·              隧道两端可以根据各自的实际应用需要决定是否要开启GRE报文校验和功能。如果本端开启了GRE报文校验和功能,则会在发送的报文中携带校验和信息,由对端来对报文进行校验和验证。对端是否对收到的报文进行校验和验证,取决于报文中是否携带校验和信息,与对端的配置无关。

·              如果封装前报文的目的地址与Tunnel接口的地址不在同一个网段,则必须配置通过Tunnel接口到达报文目的地址的路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达报文目的地址的路由出接口为本端Tunnel接口;也可以配置动态路由,在Tunnel接口、与私网相连的接口上分别使能动态路由协议,由动态路由协议来建立通过Tunnel接口转发的路由表项。

1.3  配置GRE over IPv4隧道

1. 配置限制和指导

本配置任务仅列出了配置GRE over IPv4隧道涉及的Tunnel接口相关的基础配置命令(interface tunnelsourcedestinationtunnel dfbit enable命令),关于Tunnel接口下更多配置命令的详细介绍,请参见“三层技术-IP业务配置指导”中的“隧道”。

2. 配置步骤

(1)      进入系统视图。

system-view

(2)      创建模式为GRE over IPv4隧道的Tunnel接口,并进入该Tunnel接口视图。

interface tunnel number mode gre

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

(3)      根据乘客协议,设置Tunnel接口的IP地址。

(IPv4网络)

IPv4地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IP地址”。

(IPv6网络)

IPv6地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。

缺省情况下,Tunnel接口上未设置IP地址。

(4)      设置隧道的源端地址或源接口。

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

缺省情况下,未设置隧道的源端地址和源接口。

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IPv4地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IPv4地址。

(5)      设置隧道的目的端地址。

destination ip-address

缺省情况下,未设置隧道的目的端地址。

隧道的目的端地址是对端从GRE隧道上接收报文的实际物理接口的地址,该地址将作为封装后隧道报文的目的IPv4地址。该地址不能与Tunnel接口的地址在同一网段。

(6)      (可选)开启GRE的keepalive功能,并配置keepalive报文发送周期及最大发送次数。

keepalive [ interval [ times ] ]

缺省情况下,GRE的keepalive功能处于关闭状态。

(7)      (可选)配置GRE安全功能。

¡  开启GRE报文校验和功能。

gre checksum

缺省情况下,GRE报文校验和功能处于关闭状态。

¡  设置GRE类型Tunnel接口的GRE Key。

gre key key

缺省情况下,未设置GRE类型Tunnel接口的GRE Key。

隧道两端必须设置相同的GRE Key,或者都不设置GRE Key。

(8)      (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。

tunnel dfbit enable

缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。

(9)      (可选)配置GRE隧道转发类。

service-class service-class-value

缺省情况下,未设置GRE隧道转发类。

1.4  配置GRE over IPv6隧道

1. 配置限制和指导

本配置任务仅列出了配置GRE over IPv6隧道涉及的Tunnel接口相关的基础配置命令(interface tunnelsourcedestination命令),关于Tunnel接口下更多配置命令的详细介绍,请参见“三层技术-IP业务配置指导”中的“隧道”。

2. 配置步骤

(1)      进入系统视图。

system-view

(2)      创建模式为GRE over IPv6隧道的Tunnel接口,并进入该Tunnel接口视图。

interface tunnel number mode gre ipv6

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

(3)      根据乘客协议,设置Tunnel接口的IP地址。

(IPv4网络)

IPv4地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IP地址”。

(IPv6网络)

IPv6地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。

缺省情况下,Tunnel接口上未设置IP地址。

(4)      设置隧道的源端地址或源接口。

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

缺省情况下,未设置隧道的源端地址和源接口。

如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IPv6地址;如果设置的是隧道的源接口,则该接口的地址将作为封装后隧道报文的源IPv6地址。

(5)      设置隧道的目的端地址。

destination ipv6-address

缺省情况下,未设置隧道的目的端地址。

隧道的目的端地址是对端从GRE隧道上接收报文的实际物理接口的地址,该地址将作为封装后隧道报文的目的IPv6地址。该地址不能与Tunnel接口的地址在同一网段。

(6)      (可选)配置GRE安全功能。

¡  开启GRE报文校验和功能。

gre checksum

缺省情况下,GRE报文校验和功能处于关闭状态。

¡  设置GRE类型Tunnel接口的GRE Key。

gre key key

缺省情况下,未设置GRE类型Tunnel接口的GRE Key。

隧道两端必须设置相同的GRE Key,或者都不设置GRE Key。

(7)      (可选)配置GRE隧道转发类。

service-class service-class-value

缺省情况下,未设置GRE隧道转发类。

1.5  配置丢弃含有IPv4兼容IPv6地址的IPv6报文

1. 功能简介

开启本功能后,对于从隧道接收的报文,如果解封装后原始IPv6报文的源或目的地址为IPv4兼容IPv6地址,则丢弃该报文。

2. 配置步骤

(1)      进入系统视图。

system-view

(2)      配置丢弃含有IPv4兼容IPv6地址的IPv6报文。

tunnel discard ipv4-compatible-packet

缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文。

本命令详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”。

1.6  GRE显示和维护

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

在用户视图下执行reset命令可以清除Tunnel接口的统计信息。

表1-1 GRE显示和维护

操作

命令

显示Tunnel接口的相关信息(本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”)

display interface [ tunnel [ number ] ] [ brief [ description | down ] ]

显示Tunnel接口的IPv6相关信息(本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”)

display ipv6 interface [ tunnel [ number ] ] [ brief ]

清除Tunnel接口的统计信息(本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“隧道”)

reset counters interface [ tunnel [ number ] ]

清除Tunnel接口的IPv6统计信息(本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”)

(独立运行模式)

reset ipv6 statistics

(IRF模式)

reset ipv6 statistics [ slot slot-number ]

 

1.7  GRE典型配置举例

1.7.1  GRE over IPv4隧道配置举例

1. 组网需求

Router A和Router B分别连接IPv4私有网络Group 1和Group 2。这两个私有网络都使用私网地址,且属于同一个VPN。通过在Router A和Router B之间建立GRE隧道,实现两个私有网络的互联。

2. 组网图

图1-7 GRE over IPv4隧道应用组网图

3. 配置步骤

说明

在开始下面的配置之前,假设设备各接口的地址都已配置完毕,并且Router A和Router B之间路由可达。

 

(1)      配置Router A

# 创建Tunnel0接口,并指定隧道模式为GRE over IPv4隧道。

<RouterA> system-view

[RouterA] interface tunnel 0 mode gre

# 配置Tunnel0接口的IP地址。

[RouterA-Tunnel0] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel0接口的源端地址(Router A的GigabitEthernet1/0/2的IP地址)。

[RouterA-Tunnel0] source 1.1.1.1

# 配置Tunnel0接口的目的端地址(Router B的GigabitEthernet1/0/2的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

# 创建Tunnel0接口,并指定隧道模式为GRE over IPv4隧道。

<RouterB> system-view

[RouterB] interface tunnel 0 mode gre

# 配置Tunnel0接口的IP地址。

[RouterB-Tunnel0] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel0接口的源端地址(Router B的GigabitEthernet1/0/2的IP地址)。

[RouterB-Tunnel0] source 2.2.2.2

# 配置Tunnel0接口的目的端地址(Router A的GigabitEthernet1/0/2的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

4. 验证配置

# 查看Router A的Tunnel接口状态。

[RouterA] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64kbps

Maximum transmission unit: 1476

Internet address: 10.1.2.1/24 (primary)

Tunnel source 1.1.1.1, destination 2.2.2.2

Tunnel keepalive disabled

Tunnel TTL 255

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 rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 0 packets, 0 bytes, 0 drops

# 查看Router B的Tunnel接口状态。

[RouterB] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64kbps

Maximum transmission unit: 1476

Internet address: 10.1.2.2/24 (primary)

Tunnel source 2.2.2.2, destination 1.1.1.1

Tunnel keepalive disabled

Tunnel TTL 255

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 rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 0 packets, 0 bytes, 0 drops

# 从Router B可以Ping通Router A上GigabitEthernet1/0/1接口的地址。

[RouterB] ping -a 10.1.3.1 10.1.1.1

Ping 10.1.1.1 (10.1.1.1) from 10.1.3.1: 56 data bytes, press CTRL_C to break

56 bytes from 10.1.1.1: icmp_seq=0 ttl=255 time=11.000 ms

56 bytes from 10.1.1.1: icmp_seq=1 ttl=255 time=1.000 ms

56 bytes from 10.1.1.1: icmp_seq=2 ttl=255 time=0.000 ms

56 bytes from 10.1.1.1: icmp_seq=3 ttl=255 time=0.000 ms

56 bytes from 10.1.1.1: icmp_seq=4 ttl=255 time=0.000 ms

 

--- Ping statistics for 10.1.1.1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 0.000/2.400/11.000/4.317 ms

1.7.2  GRE over IPv6隧道配置举例

1. 组网需求

运行IPv4协议的两个子网Group 1和Group 2通过IPv6网络相连。通过在Router A和Router B之间建立GRE over IPv6隧道,实现两个子网穿越IPv6网络互联。

2. 组网图

图1-8 GRE over IPv6隧道应用组网图

3. 配置步骤

说明

在开始下面的配置之前,假设设备各接口的地址都已配置完毕,并且Router A和Router B之间路由可达。

 

(1)      配置Router A

# 创建Tunnel0接口,并指定隧道模式为GRE over IPv6隧道。

<RouterA> system-view

[RouterA] interface tunnel 0 mode gre ipv6

# 配置Tunnel0接口的IP地址。

[RouterA-Tunnel0] ip address 10.1.2.1 255.255.255.0

# 配置Tunnel0接口的源端地址(Router A的GigabitEthernet1/0/2的IP地址)。

[RouterA-Tunnel0] source 2002::1:1

# 配置Tunnel0接口的目的端地址(Router B的GigabitEthernet1/0/2的IP地址)。

[RouterA-Tunnel0] destination 2001::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

# 创建Tunnel0接口,并指定隧道模式为GRE over IPv6隧道。

<RouterB> system-view

[RouterB] interface tunnel 0 mode gre ipv6

# 配置Tunnel0接口的IP地址。

[RouterB-Tunnel0] ip address 10.1.2.2 255.255.255.0

# 配置Tunnel0接口的源端地址(Router B的GigabitEthernet1/0/2的IP地址)。

[RouterB-Tunnel0] source 2001::2:1

# 配置Tunnel0接口的目的端地址(Router A的GigabitEthernet1/0/2的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

4. 验证配置

# 查看Router A的Tunnel接口状态。

[RouterA] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64kbps

Maximum transmission unit: 1456

Internet address: 10.1.2.1/24 (primary)

Tunnel source 2002::1:1, destination 2001::2:1

Tunnel TTL 255

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 rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 0 packets, 0 bytes, 0 drops

# 查看Router B的Tunnel接口状态。

[RouterB] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64kbps

Maximum transmission unit: 1456

Internet address: 10.1.2.2/24 (primary)

Tunnel source 2001::2:1, destination 2002::1:1

Tunnel TTL 255

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 rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 0 packets, 0 bytes, 0 drops

# 从Router B可以Ping通Router A上GigabitEthernet1/0/1接口的地址。

[RouterB] ping -a 10.1.3.1 10.1.1.1

Ping 10.1.1.1 (10.1.1.1) from 10.1.3.1: 56 data bytes, press CTRL_C to break

56 bytes from 10.1.1.1: icmp_seq=0 ttl=255 time=2.000 ms

56 bytes from 10.1.1.1: icmp_seq=1 ttl=255 time=1.000 ms

56 bytes from 10.1.1.1: icmp_seq=2 ttl=255 time=1.000 ms

56 bytes from 10.1.1.1: icmp_seq=3 ttl=255 time=0.000 ms

56 bytes from 10.1.1.1: icmp_seq=4 ttl=255 time=1.000 ms

 

--- Ping statistics for 10.1.1.1 ---

5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss

round-trip min/avg/max/std-dev = 0.000/1.000/2.000/0.632 ms

1.8  GRE常见故障处理

1.8.1  GRE隧道两端连接的主机之间无法ping通

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

1. 故障现象

图1-9所示,Tunnel两端接口配置正确且Tunnel两端可以ping通,但Host A和Host B之间却无法ping通。

图1-9 GRE排错示例

 

2. 故障分析

出现该故障的原因可能是Device A或Device C上没有到达对端网络的路由。

3. 故障排除

(1)      在Device A和Device C分别执行display ip routing-table命令,观察在Device A是否有经过Tunnel0接口到10.2.0.0/16的路由;在Device C是否有经过Tunnel0接口到10.1.0.0/16的路由。

(2)      如果不存在上述路由,则在系统视图下使用ip route-static命令添加静态路由。以Device A为例,配置如下:

[DeviceA] ip route-static 10.2.0.0 255.255.0.0 tunnel 0


2 点到多点GRE

2.1  点到多点GRE简介

点到多点GRE隧道是一个虚拟的点到多点的连接,相对于传统的GRE隧道,点到多点GRE隧道能够提供一个中心节点到多个分支网络的虚拟连接。

2.1.1  点到多点GRE的产生背景

使用传统的GRE隧道应用于如图2-1所示的企业网时,需要在企业中心节点和各个分支机构之间建立多条点到点GRE隧道。当企业分支机构众多时,配置工作量巨大;如果新增分支机构,则需要在中心节点上增加配置,增加了网络维护的负担;此外,分支机构采用ADSL等方式拨号上网时,分支机构公网地址的不确定性也增加了中心节点配置的复杂度。

点到多点GRE隧道很好地解决了上述问题,非常适用于分支机构众多的企业网络。点到多点GRE隧道组网中,需要在中心节点上配置点到多点GRE模式的隧道接口(以下简称为点到多点GRE隧道接口)、分支机构上配置传统的点到点GRE over IPv4/IPv6模式的隧道接口(以下简称为点到点GRE隧道接口),这样就可以实现在中心节点和多个分支机构之间建立点到多点GRE隧道。

图2-1 点到多点GRE隧道应用

 

2.1.2  点到多点GRE的优点

点到多点GRE隧道具有如下优点:

·              配置简单。中心节点上只需配置点到多点GRE隧道,无需在中心节点上创建到达每个分支机构的点到点GRE隧道。

·              对于分支机构使用的网关设备没有特殊要求,只要支持GRE协议,不需要特殊的协议或者私有协议来配合使用,具有较好的互通性,避免用户网络设备的重复投资。

2.1.3  点到多点GRE的工作原理

点到多点GRE隧道的报文加解封装的过程与点到点GRE隧道相同。

通过点到多点GRE隧道转发报文时,设备根据报文的目的IP地址,在点到多点GRE隧道表项中查找对应的隧道目的IP地址,使用此地址作为GRE封装传输协议报文头的目的IP地址。

2.2  点到多点GRE与硬件适配关系

本特性的支持情况与设备型号有关,请以设备的实际情况为准。

型号

说明

MSR810、MSR810-W、MSR810-W-DB、MSR810-LM、MSR810-W-LM、MSR810-10-PoE、MSR810-LM-HK、MSR810-W-LM-HK、MSR810-LM-CNDE-SJK

支持

MSR810-LMS、MSR810-LUS

支持

MSR810-LMS-EA、MSR810-LME

支持

MSR2600-6-X1、MSR2600-10-X1

支持

MSR 2630

支持

MSR3600-28、MSR3600-51

支持

MSR3600-28-SI、MSR3600-51-SI

不支持

MSR3600-28-X1、MSR3600-28-X1-DP、MSR3600-51-X1、MSR3600-51-X1-DP

支持

MSR3610-I-DP、MSR3610-IE-DP、MSR3610-IE-ES

支持

MSR3610-X1、MSR3610-X1-DP、MSR3610-X1-DC、MSR3610-X1-DP-DC

支持

MSR 3610、MSR 3620、MSR 3620-DP、MSR 3640、MSR 3660

支持

MSR3610-G、MSR3620-G

支持

 

型号

说明

MSR810-W-WiNet、MSR810-LM-WiNet

支持

MSR830-4LM-WiNet

支持

MSR830-5BEI-WiNet、MSR830-6EI-WiNet、MSR830-10BEI-WiNet

支持

MSR830-6BHI-WiNet、MSR830-10BHI-WiNet

支持

MSR2600-6-WiNet、MSR2600-10-X1-WiNet

支持

MSR2630-WiNet

支持

MSR3600-28-WiNet

支持

MSR3610-X1-WiNet

支持

MSR3610-WiNet、MSR3620-10-WiNet、MSR3620-DP-WiNet、MSR3620-WiNet、MSR3660-WiNet

支持

 

型号

说明

MSR2630-XS

支持

MSR3600-28-XS

支持

MSR3610-XS

支持

MSR3620-XS

支持

MSR3610-I-XS

支持

MSR3610-IE-XS

支持

 

2.3  点到多点GRE配置限制和指导

关于interface tunnelsourceservicetunnel discard ipv4-compatible-packet命令以及Tunnel接口下更多配置命令的详细介绍,请参见“三层技术-IP业务配置指导”和“三层技术-IP业务命令参考”中的“隧道”。

1. 点到多点GRE隧道中心节点配置限制和指导

·              在同一设备上配置多个点到多点GRE隧道时,各Tunnel接口不能配置完全相同的源端地址。

·              GRE隧道和点到多点GRE隧道不能配置相同的源端地址和目的端地址。

·              中心节点的点到多点GRE隧道接口上不能配置GRE Key。

2. 点到多点GRE隧道分支节点配置限制和指导

·              点到多点GRE隧道组网中,分支网络之间无法建立隧道,不能通信。

·              在分支节点上,需要将GRE over IPv4/IPv6隧道的目的端地址配置为点到多点GRE隧道接口的源端地址。

·              Tunnel接口上配置的隧道目的端地址不能与Tunnel接口的地址在同一网段。

3. 点到多点GRE隧道通用配置限制和指导

·              隧道两端可以根据各自的实际应用需要决定是否要开启GRE报文校验和功能。如果本端开启了GRE报文校验和功能,则会在发送的报文中携带校验和信息,由对端来对报文进行校验和验证。对端是否对收到的报文进行校验和验证,取决于报文中是否携带校验和信息,与对端的配置无关。

·              如果封装前报文的目的地址与Tunnel接口的地址不在同一个网段,则必须配置通过Tunnel接口到达报文目的地址的路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达报文目的地址的路由出接口为本端Tunnel接口;也可以配置动态路由,在Tunnel接口、与私网相连的接口上分别使能动态路由协议,由动态路由协议来建立通过Tunnel接口转发的路由表项。

2.4  点到多点GRE隧道配置任务简介

点到多点GRE隧道配置任务如下:

(1)      配置基于点到多点GRE隧道静态表项的GRE隧道

(2)      配置处理接口流量的slot

2.5  配置点到多点GRE隧道

2.5.1  配置基于点到多点GRE隧道静态表项的GRE隧道

(1)      进入系统视图。

system-view

(2)      创建GRE P2MP隧道模板,并进入GRE P2MP隧道模板视图。

gre p2mp-template template-name

(3)      配置GRE P2MP隧道的映射表项。

map [ vpn-instance vpn-instance-name ] branch-network-address branch-network-address { mask | mask-length } tunnel-destination tunnel-dest-address [ checksum-fill checksum-value ]

缺省情况下,未配置GRE P2MP隧道的映射表项。

使用checksum-fill参数填充IPv4地址至checksum字段会导致GRE报文校验失败,因此,请结合实际组网要求准确使用checksum-fill参数。

(4)      退回系统视图。

quit

(5)      创建模式为点到多点GRE隧道的Tunnel接口,并进入该Tunnel接口视图。

interface tunnel number mode gre-p2mp

对端设备的隧道接口应该配置为GRE over IPv4隧道模式。

(6)      配置Tunnel接口的IPv4地址。

IPv4地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IP地址”

缺省情况下,Tunnel接口上未配置IPv4地址。

(7)      配置隧道的源端地址或源接口。

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

缺省情况下,未配置隧道的源端地址和源接口。

如果配置的是隧道的源端地址,则该地址将作为封装后隧道报文的源地址。

如果配置的是隧道的源接口,对于IPv4地址,该接口的主IP地址将作为封装后隧道报文的源IP地址。

(8)      配置GRE P2MP隧道接口与指定的GRE P2MP隧道模板关联。

gre p2mp-template template-name

缺省情况下,未配置GRE P2MP隧道接口与指定的GRE P2MP隧道模板关联。

指定的GRE P2MP隧道模板必须是已创建GRE P2MP隧道模板。

(9)      (可选)开启GRE报文校验和功能。

gre checksum

缺省情况下,GRE报文校验和功能处于关闭状态。

(10)   (可选)配置GRE P2MP隧道模板映射表项下发静态路由的优先级。

tunnel route-static [ preference preference-value ]

缺省情况下,隧道表项下发静态路由优先级为60,参数preference取值范围为1~255。

2.5.2  配置处理接口流量的slot

1. 功能简介

当要求同一个Tunnel接口的流量必须在同一个slot上进行处理时,可以在Tunnel接口下配置处理接口流量的slot。

为提高当前接口处理流量的可靠性,可以通过service命令和service standby命令为接口分别指定一个主用slot和一个备用slot进行流量处理。

接口上同时配置了主用slot和备用slot时,流量处理的机制如下:

·              当主用slot不可用时,流量由备用slot处理。之后,即使主用slot恢复可用,流量也继续由备用slot处理;仅当备用slot不可用时,流量才切换到主用slot。

·               当主用slot和备用slot均不可用时,流量由接收报文的slot处理;之后,主用slot和备用slot谁先恢复可用,流量就由谁处理。

如果接口上未配置主用slot和备用slot,则业务处理在接收报文的slot上进行。

2. 配置限制和指导

为避免不必要的流量切换,建议配置主用slot后,再配置备用slot。如果先配置备用slot,则流量由备用slot处理;在配置主用slot后,流量将会从备用slot切换到主用slot。

关于serviceservice standby配置命令的详细介绍,请参见“三层技术-IP业务配置指导”中的“隧道”。

3. 配置步骤

(1)      进入系统视图。

system-view

(2)      进入Tunnel接口视图。

interface tunnel number

(3)      配置处理接口流量的主用slot。

service slot slot-number

缺省情况下,未配置处理接口流量的主用slot。

(4)      配置处理接口流量的备用slot。

service standby slot slot-number

缺省情况下,未配置处理接口流量的备用slot。

2.6  点到多点GRE隧道显示和维护

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

在用户视图下执行reset命令可以清除点到多点GRE隧道的相关信息。

表2-1 点到多点GRE隧道的显示和维护

操作

命令

显示点到多点GRE隧道静态表项的报文统计信息

display gre p2mp tunnel-table statistics interface tunnel number [ branch-network-address branch-network-address { mask | mask-length } [ vpn-instance vpn-instance-name ] ]

清除点到多点GRE隧道静态表项的报文统计信息

reset gre p2mp tunnel-table statistics interface tunnel number [ vpn-instance vpn-instance-name ] [ branch-network-address branch-network-address { mask | mask-length } ]

 

2.7  点到多点GRE隧道典型配置举例

2.7.1  基于点到多点GRE隧道静态表项的GRE隧道配置举例

1. 组网需求

某企业拥有一个中心网络和众多分支机构,分支机构和中心网络之间建立GRE隧道,实现隧道两侧内网主机互通,中心网络能够主动访问分支机构,分支机构之间不会互相访问。如图2-2所示,为了简化配置,在中心节点网关设备Router A上配置点到多点GRE隧道接口,使中心节点网络可以与多个分支网络建立GRE隧道;在各分支节点上配置GRE over IPv4隧道接口,使分支网络可以和中心网络建立GRE隧道;在中心节点网关设备Router A上配置点到多点GRE隧道静态表项使中心网络能够主动访问分支机构。

2. 组网图

图2-2 基于点到多点GRE隧道静态表项的GRE隧道组网图

设备

接口

IP地址

设备

接口

IP地址

Router A

GE1/0/1

11.1.1.1/24

Router B

GE1/0/1

11.1.2.1/24

GE1/0/2

192.168.11.1/24

GE1/0/2

192.168.12.1/24

Tunnel0

192.168.22.1/24

Tunnel0

192.168.22.2/24

Router C

GE1/0/1

11.1.3.1/24

Router C

Tunnel0

192.168.22.3/24

GE1/0/2

192.168.13.1/24

 

 

 

3. 配置步骤

说明

·          在开始下面的配置之前,请确保设备各接口的地址都已配置完毕,并且Router A和Router B之间、Router A和Router C之间路由可达。

·          本举例中仅以一个分支节点网关设备Router B为例说明分支节点的配置方法,其他分支节点的配置与Router B上的配置类似。

·          本举例中仅以到达分支节点网关Router B为例,配置隧道的映射表项,到达其它分支节点的隧道配置此类似。

 

(1)      配置Router A

# 创建GRE P2MP隧道模板aa,并在模板aa视图下,配置一条映射表项,分支网络地址为192.168.12.2,掩码长度为32,隧道目的地址为11.1.2.1。

<RouterA> system-view

[RouterA] gre p2mp-template aa

[RouterA-p2mp-template-aa] map branch-network-address 192.168.12.2 32 tunnel-destination 11.1.2.1

# 创建Tunnel0接口,并指定隧道模式为点到多点GRE隧道。

[RouterA] interface tunnel 0 mode gre-p2mp

# 配置Tunnel0接口的IP地址。

[RouterA-Tunnel0] ip address 192.168.22.1 255.255.255.0

# 配置Tunnel0接口的源IP地址(Router A的GigabitEthernet1/0/1的IP地址)。

[RouterA-Tunnel0] source 11.1.1.1

# 配置GRE P2MP隧道与指定的GRE P2MP隧道模板aa关联。

[RouterA-Tunnel0] gre p2mp-template aa

# 配置处理接口流量的主用slot。

[RouterA-Tunnel0] service slot 1

[RouterA-Tunnel0] quit

(2)      配置Router B

# 创建Tunnel0接口,并指定隧道模式为GRE over IPv4隧道。

<RouterB> system-view

[RouterB] interface tunnel 0 mode gre

# 配置Tunnel0接口的IP地址。

[RouterB-Tunnel0] ip address 192.168.22.2 255.255.255.0

# 配置Tunnel0接口的源端地址(Router B的GigabitEthernet1/0/1的IP地址)。

[RouterB-Tunnel0] source 11.1.2.1

# 配置Tunnel0接口的目的端地址(Router A的GigabitEthernet1/0/1的IP地址)。

[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

4. 验证配置

# 完成以上配置后,查看Router A上的点到多点GRE隧道表项。此时Router A上存在点到多点GRE隧道静态表项。在Host A上Ping Host B,可以Ping通,并且能统计报文数。

[RouterA] display gre p2mp tunnel-table statistics interface Tunnel 0

 

VPN-instance name: -  Map number: 1

 

  Branch network address: 192.168.12.2/32

  Tunnel destination address: 11.1.2.1

  Input:

    5 packets, 420 bytes, 0 drops

  Output:

    5 packets, 420 bytes, 0 drops

 

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!