20-GRE配置
本章节下载: 20-GRE配置 (473.67 KB)
目 录
GRE(Generic Routing Encapsulation,通用路由封装)协议用来对某种协议(如IP、以太网)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络(如IP)中传输。封装前后数据报文的网络层协议可以相同,也可以不同。封装后的数据报文在网络中传输的路径,称为GRE隧道。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-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隧道互连
GRE支持GRE Key验证、校验和验证两种安全机制。
通过GRE Key验证可以检查报文的合法性。
发送方在发送的报文中携带本地配置的GRE Key。接收方收到报文后,将报文中的GRE Key与接收方本地配置的GRE Key进行比较,如果一致则对报文进行进一步处理,否则丢弃该报文。
通过GRE校验和验证可以检查报文的完整性。
发送方根据GRE头及Payload信息计算校验和,并将包含校验和信息的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进行进一步处理,否则丢弃该报文。
GRE主要有以下几种应用场景。
如图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通过骨干网互不影响地进行通信,实现两地互通。
在IP网络中,报文的TTL值最大为255。如果两台设备之间的跳数超过255,它们将无法通信。通过在网络中使用GRE隧道可以隐藏一部分跳数,从而扩大网络的工作范围。如图1-4所示,使用了GRE隧道之后,Host A和Host B之间的跳数减少为3跳,GRE隧道经过的设备中只有隧道两端的设备(Device A和Device D)参与跳数计算。
如图1-5所示,GRE可以和IPsec(IP Security,IP安全)配合使用,通过建立GRE over IPsec隧道,对路由协议、语音、视频等数据先进行GRE封装,再对封装后的报文进行IPsec处理。二者配合使用的优势如下:
· 提高数据在隧道中传输的安全性。
· 解决IPsec只能处理单播报文的问题。GRE可以支持组播、广播和非IP报文,先对这些报文进行GRE封装,使其成为普通的单播报文。然后,IPsec就可以对其进行进一步的处理。
· 简化IPsec的配置。由于所有报文都先经过GRE封装后再进行IPsec处理,因此只要根据GRE隧道的源/目的端地址来定义需要IPsec保护的数据流即可,不需要关注原始报文的源/目的地址。
GRE和IPsec还有另外一种配合方式,即IPsec over GRE隧道。但这种方式不能充分利用二者的优势,一般不推荐使用。
关于IPsec的详细介绍请参见“安全配置指导”中的“IPsec”。
与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
· GRE收发双方的加封装、解封装处理,以及由于封装造成的数据量增加,会导致使用GRE后设备的数据转发效率有一定程度的下降。
· 隧道两端必须都配置隧道的源端地址和目的端地址,且本端配置的源端地址(目的端地址)应该与对端配置的目的端地址(源端地址)相同。
· 在同一台设备上,相同隧道模式的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
· 隧道两端可以根据各自的实际应用需要决定是否要开启GRE报文校验和功能。如果本端开启了GRE报文校验和功能,则会在发送的报文中携带校验和信息,由对端来对报文进行校验和验证。对端是否对收到的报文进行校验和验证,取决于报文中是否携带校验和信息,与对端的配置无关。
· 如果封装前报文的目的地址与Tunnel接口的地址不在同一个网段,则必须配置通过Tunnel接口到达报文目的地址的路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达报文目的地址的路由出接口为本端Tunnel接口;也可以配置动态路由,在Tunnel接口、与私网相连的接口上分别使能动态路由协议,由动态路由协议来建立通过Tunnel接口转发的路由表项。
本配置任务仅列出了配置GRE over IPv4隧道涉及的Tunnel接口相关的基础配置命令(interface tunnel、source、destination和tunnel dfbit enable命令),关于Tunnel接口下更多配置命令的详细介绍,请参见“网络互通配置指导”中的“隧道”。
(1) 进入系统视图。
system-view
(2) 创建模式为GRE over IPv4隧道的Tunnel接口,并进入该Tunnel接口视图。
interface tunnel number mode gre
在隧道的两端应配置相同的隧道模式,否则可能造成报文传输失败。
(3) 根据乘客协议,设置Tunnel接口的IP地址。
(IPv4网络)
IPv4地址的配置方法,请参见“网络互通配置指导”中的“IP地址”。
(IPv6网络)
IPv6地址的配置方法,请参见“网络互通配置指导”中的“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
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
本配置任务仅列出了配置GRE over IPv6隧道涉及的Tunnel接口相关的基础配置命令(interface tunnel和source、destination命令),关于Tunnel接口下更多配置命令的详细介绍,请参见“网络互通配置指导”中的“隧道”。
(1) 进入系统视图。
system-view
(2) 创建模式为GRE over IPv6隧道的Tunnel接口,并进入该Tunnel接口视图。
interface tunnel number mode gre ipv6
在隧道的两端应配置相同的隧道模式,否则可能造成报文传输失败。
(3) 根据乘客协议,设置Tunnel接口的IP地址。
(IPv4网络)
IPv4地址的配置方法,请参见“网络互通配置指导”中的“IP地址”。
(IPv6网络)
IPv6地址的配置方法,请参见“网络互通配置指导”中的“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。
在完成上述配置后,在任意视图下执行display命令可以显示配置后GRE的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除Tunnel接口的统计信息。
表1-1 GRE显示和维护
操作 |
命令 |
显示Tunnel接口的相关信息(本命令的详细介绍,请参见“网络互通命令参考”中的“隧道”) |
display interface [ tunnel [ number ] ] [ brief [ description | down ] ] |
显示Tunnel接口的IPv6相关信息(本命令的详细介绍,请参见“网络互通命令参考”中的“IPv6基础”) |
display ipv6 interface [ tunnel [ number ] ] [ brief ] |
清除Tunnel接口的统计信息(本命令的详细介绍,请参见“网络互通命令参考”中的“隧道”) |
reset counters interface [ tunnel [ number ] ] |
清除Tunnel接口的IPv6统计信息(本命令的详细介绍,请参见“网络互通命令参考”中的“IPv6基础”) |
reset ipv6 statistics |
AC和Device分别连接IPv4私有网络Group 1和Group 2,这两个私有网络都使用私网地址。通过在AC和Device之间建立GRE over IPv4隧道,实现两个私有网络的互联。
图1-6 GRE over IPv4隧道应用组网图
在开始下面的配置之前,假设设备各接口的地址都已配置完毕,并且AC和Device之间路由可达。
(1) 配置AC
# 创建Tunnel0接口,并指定隧道模式为GRE over IPv4隧道。
<AC> system-view
[AC] interface tunnel 0 mode gre
# 配置Tunnel0接口的IP地址。
[AC-Tunnel0] ip address 10.1.2.1 255.255.255.0
# 配置Tunnel0接口的源端地址(AC的Vlan-interface101的IP地址)。
[AC-Tunnel0] source 1.1.1.1
# 配置Tunnel0接口的目的端地址(Device的GE1/0/2的IP地址)。
[AC-Tunnel0] destination 2.2.2.2
[AC-Tunnel0] quit
# 配置从AC经过Tunnel0接口到Group 2的静态路由。
[AC] ip route-static 10.1.3.0 255.255.255.0 tunnel 0
(2) 配置Device
# 创建Tunnel0接口,并指定隧道模式为GRE over IPv4隧道。
<Device> system-view
[Device] interface tunnel 0 mode gre
# 配置Tunnel0接口的IP地址。
[Device-Tunnel0] ip address 10.1.2.2 255.255.255.0
# 配置Tunnel0接口的源端地址(Device的GE1/0/2的IP地址)。
[Device-Tunnel0] source 2.2.2.2
# 配置Tunnel0接口的目的端地址(AC的Vlan-interface101的IP地址)。
[Device-Tunnel0] destination 1.1.1.1
[Device-Tunnel0] quit
# 配置从Device经过Tunnel0接口到Group 1的静态路由。
[Device] ip route-static 10.1.1.0 255.255.255.0 Tunnel 0
# 查看AC的Tunnel接口状态。
[AC] display interface tunnel 0
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
Internet address: 10.1.2.1/24 (primary)
Tunnel source 1.1.1.1 (Vlan-interface101), destination 2.2.2.2
Tunnel keepalive disabled
Tunnel TTL 255
Tunnel protocol/transport GRE/IP
GRE key disabled
Checksumming of GRE packets disabled
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
# 查看Device的Tunnel接口状态。
[Device] display interface tunnel 0
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
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
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
# 从Device可以Ping通AC上Vlan-interface100的地址。
[Device] 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
运行IPv4协议的两个子网Group 1和Group 2通过IPv6网络相连。通过在AC和Device之间建立GRE over IPv6隧道,实现两个子网穿越IPv6网络互联。
图1-7 GRE over IPv6隧道应用组网图
在开始下面的配置之前,假设设备各接口的地址都已配置完毕,并且AC和Device之间路由可达。
(1) 配置AC
# 创建Tunnel0接口,并指定隧道模式为GRE over IPv6隧道。
<AC> system-view
[AC] interface tunnel 0 mode gre ipv6
# 配置Tunnel0接口的IP地址。
[AC-Tunnel0] ip address 10.1.2.1 255.255.255.0
# 配置Tunnel0接口的源端地址(AC的Vlan-interface101的IP地址)。
[AC-Tunnel0] source 2002::1:1
# 配置Tunnel0接口的目的端地址(Device的GE1/0/2的IP地址)。
[AC-Tunnel0] destination 2001::2:1
[AC-Tunnel0] quit
# 配置从AC经过Tunnel0接口到Group 2的静态路由。
[AC] ip route-static 10.1.3.0 255.255.255.0 tunnel 0
(2) 配置Device
# 创建Tunnel0接口,并指定隧道模式为GRE over IPv6隧道。
<Device> system-view
[Device] interface tunnel 0 mode gre ipv6
# 配置Tunnel0接口的IP地址。
[Device-Tunnel0] ip address 10.1.2.2 255.255.255.0
# 配置Tunnel0接口的源端地址(Device的GE1/0/2的IP地址)。
[Device-Tunnel0] source 2001::2:1
# 配置Tunnel0接口的目的端地址(AC的Vlan-interface101的IP地址)。
[Device-Tunnel0] destination 2002::1:1
[Device-Tunnel0] quit
# 配置从Device经过Tunnel0接口到Group 1的静态路由。
[Device] ip route-static 10.1.1.0 255.255.255.0 tunnel 0
# 查看AC的Tunnel接口状态。
[AC] display interface tunnel 0
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
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
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
# 查看Device的Tunnel接口状态。
[Device] display interface tunnel 0
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
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
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
# 从Device可以Ping通AC上Vlan-interface100的地址。
[Device] 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
GRE的配置相对比较简单,但要注意配置的一致性,大部分的错误都可以使用调试命令debugging gre和debugging tunnel定位。这里仅就一种错误进行分析。
如图1-8所示,Tunnel两端接口配置正确且Tunnel两端可以ping通,但Host A和Host B之间却无法ping通。
图1-8 GRE排错示例
出现该故障的原因可能是Device A或Device C上没有到达对端网络的路由。
(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
EoGRE(Ethernet over GRE,通用路由封装传输以太网报文)协议用来对以太网数据报文进行封装,使这些被封装的数据报文能够在IP网络中传输。封装后的数据报文在网络中传输的路径,称为EoGRE隧道。EoGRE隧道是一个虚拟的点到点的连接,其两端的设备分别对数据报文进行封装及解封装。
EoGRE隧道的模式分为EoGRE隧道模式和UDP封装的EoGRE隧道模式。若二层以太网报文跨三层网络转发且穿越NAT,EoGRE隧道需设置为UDP封装的EoGRE隧道模式,若不穿越NAT,EoGRE隧道需设置为EoGRE隧道模式。
如图2-1所示,EoGRE隧道模式封装后的报文包括如下几个部分:
· 以太网报文:需要封装和传输的以太数据报文。
· GRE头(GRE header):采用GRE协议对以太数据进行封装所添加的报文头,包括协议类型和扩展标志等内容。添加GRE头后的报文称为EoGRE报文。对以太数据进行封装的GRE协议,称为封装协议(Encapsulation Protocol)。
· 传输协议报文头(Delivery header):在EoGRE报文上添加的报文头,以便传输协议对EoGRE报文进行转发处理。传输协议(Delivery Protocol或者Transport Protocol)是指负责转发EoGRE报文的网络层协议。设备支持IPv4传输协议,EoGRE隧道称为EoGRE over IPv4隧道。
图2-1 EoGRE封装后的报文格式
如图2-2所示,UDP封装的EoGRE隧道模式封装后的报文包括如下几个部分:
· 以太网报文:需要封装和传输的以太数据报文。
· GRE头(GRE header):采用GRE协议对以太数据进行封装所添加的报文头,包括协议类型,扩展标志以及扩展头等内容。如果扩展标志为1,携带扩展头;如果扩展标志为0,不携带扩展头。扩展头包括Network Policy ID和AP MAC,AP MAC可以是本设备桥MAC或者本设备BSSID。添加GRE头后的报文称为EoGRE 报文。对以太数据进行封装的GRE协议,称为封装协议(Encapsulation Protocol)。
· UDP头(UDP header):在GRE报文上添加的UDP报文头,包括源端口和目的端口号等内容,源端口为4754,目的端口缺省为4754,目的端口可根据需要配置。添加UDP头后的报文称为UDP报文。对GRE报文进行封装的UDP协议,称为封装协议(Encapsulation Protocol)。
· 传输协议报文头(Delivery header):在UDP报文上添加的报文头,以便传输协议对UDP报文进行转发处理。传输协议(Delivery Protocol或者Transport Protocol)是指负责转发UDP报文的网络层协议。设备支持IPv4传输协议,EoGRE隧道称为UDP封装的EoGRE over IPv4隧道。
图2-2 EoGRE封装后的报文格式
下面以图2-3、图2-4的网络为例说明以太网报文通过EoGRE隧道穿越IPv4网络进行传输的过程。
(1) Device A从连接Network 1的接口收到以太网报文后,首先查找二层MAC地址表判定此报文需要通过Interface A发送,然后根据Interface A查找映射的EoGRE模式的隧道口(本例中为Tunnel0),并将报文发给Tunnel接口处理。
(2) EoGRE隧道模式的Tunnel接口收到此以太网报文后,先在报文前封装上GRE头,如果是UDP封装的EoGRE隧道,再封装上UDP头,然后再封装上IPv4头。IPv4头中的源地址为隧道的源端地址(本例中为Device A的Interface A接口的IP地址),目的地址为隧道的目的端地址(本例中为Device B的Interface B接口的IP地址)。
(3) Device A根据封装的IPv4头中的目的地址查找路由表,将封装后的IPv4报文通过EoGRE隧道的实际物理接口(Interface A)转发出去。
(4) 封装后的IPv4报文通过EoGRE隧道到达目的端设备Device B后,由于报文的目的地址是本设备,且IPv4头中的协议号为6558(表示封装的报文为二层报文),Device B将此报文交给EoGRE协议进行解封装处理。
(5) 对于UDP封装的EoGRE隧道,EoGRE协议依次剥离掉此报文的IPv4头、UDP头、GRE头后,将报文交给二层转发模块转发进行后续的处理;对于GRE封装的EoGRE隧道,EoGRE协议依次剥离掉此报文的IPv4头、GRE头后,将报文交给MAC转发进行后续的处理。
图2-4 以太网报文通过UDP封装的EoGRE隧道互连
以太网需要实现二层以太网报文跨三层网络互通时,可以通过配置EoGRE隧道来实现。如图2-5所示,Network 1和Network 2是运行以太网协议的网络。在Device A和Device B之间建立EoGRE隧道,可以使Network 1和Network 2的二层以太网报文通过骨干网互不影响地进行通信,实现两地互通。
图2-5 EoGRE应用场景
与EoGRE相关的协议规范有:
· RFC 1701:Generic Routing Encapsulation (GRE)
· RFC 1702:Generic Routing Encapsulation over IPv4 networks
· RFC 2784:Generic Routing Encapsulation (GRE)
· EoGRE收发双方的加封装、解封装处理,以及由于封装造成的数据量增加,会导致使用EoGRE后设备的数据转发效率有一定程度的下降。
· 隧道两端必须都配置隧道的源端地址和目的端地址,且本端配置的源端地址(目的端地址)应该与对端配置的目的端地址(源端地址)相同。
· 在同一台设备上,相同隧道模式的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
· EoGRE隧道断开后,与EoGRE模板有映射关系的无线服务模板的SSID会自动隐藏,且从该无线服务模板上线的无线客户端会被强制下线。EoGRE隧道恢复连接前,不允许无线客户端从该无线服务模板上线。
因为AP设备部署位置原因,无法直接进行配置,需要在AC上配置命令后,将配置下发给AP。在AC上配置EoGRE模板和无线服务模板,将无线服务模板与EoGRE模板进行映射,然后将无线服务模板与指定AP绑定。当AP上线后,AP上会动态生成二层虚拟以太接口、EoGRE隧道。AC也会将二层虚拟以太接口和EoGRE隧道的映射以及EoGRE隧道的相关参数一起下发给AP。本配置任务仅列出了AC上配置EoGRE隧道相关的基础配置命令。
(1) 进入系统视图。
system-view
(2) 创建EoGRE模板,并进入EoGRE模板视图。
eogre template template-name
缺省情况下,不存在EoGRE模板。
(3) 设置隧道的目的端地址。
tunnel destination ipv4-address
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端从EoGRE隧道上接收报文的实际物理接口的地址,该地址将作为封装后隧道报文的目的IPv4地址。该地址不能与Tunnel接口的地址在同一网段。
(4) (可选)配置EoGRE隧道的模式。
tunnel mode { eogre | eogre-udp }
缺省情况下,EoGRE隧道为UDP封装的EoGRE隧道模式。
(5) (可选)配置EoGRE报文携带的GRE扩展字段。
eogre carry network-policy-id id-value mac-address { bridge | bssid }
缺省情况下,未配置EoGRE报文携带的GRE扩展字段。
(6) (可选)设置封装后隧道报文的ToS(Type of Service,服务类型)值。
eogre tos tos-value
缺省情况下,封装后隧道报文的ToS值为0。
(7) (可选)配置EoGRE报文的目的UDP端口号。
eogre udp-port port-value
缺省情况下,EoGRE报文的目的UDP端口号为4754。
(8) (可选)开启EoGRE的keepalive功能,并配置keepalive报文发送周期及最大发送次数。
keepalive [ interval [ times ] ]
缺省情况下,EoGRE的keepalive功能处于关闭状态。
(9) (可选)开启EoGRE隧道的路径MTU值学习功能。
tunnel path-mtu enable
缺省情况下,EoGRE的路径MTU值学习功能处于关闭状态。
(10) (可选)设置Tunnel接口的MTU(Maximum Transmission Unit,最大传输单元)值。
mtu size
缺省情况下,隧道接口的状态始终为Down时,隧道的MTU值为64000;隧道接口的状态当前为Up时,隧道的MTU值为根据隧道目的地址查找路由而得到的出接口的MTU值减隧道封装报文头长度。
(11) 退回系统视图。
quit
(1) 创建无线服务模板,并进入无线服务模板视图。
wlan service-template service-template-name
(2) 配置无线服务模板的VLAN。
vlan vlan-id
缺省情况下,无线服务模板的VLAN为VLAN 1。
配置无线服务模板的VLAN即配置无线客户端从指定无线服务模板上线后所属的VLAN。
此处配置的VLAN ID不能与AP物理口上配置的VLAN ID相同。如果为AP下发多个EoGRE模板,则不同的EoGRE模板映射的无线服务模板上配置无线客户端上线后所属的VLAN之间不能重合。
(3) 配置无线客户端的数据报文转发位置在AP上。
client forwarding-location ap
缺省情况下,客户端数据报文的转发位置在AC上。
(4) 开启无线服务模板。
service-template enable
缺省情况下,无线服务模板处于关闭状态。
(5) 创建无线服务模板与EoGRE模板的映射。
map eogre-template template-name
缺省情况下,不存在无线服务模板与EoGRE模板的映射。
(6) 退回系统视图。
quit
(1) 进入AP视图或AP组ap-model视图。
¡ 进入AP视图。
wlan ap ap-name
¡ 请依次执行以下命令进入AP组ap-model视图。
wlan ap-group group-name
ap-model ap-model
(2) 进入Radio视图。
radio radio-id
(3) 绑定无线服务模板。
service-template service-template-name
缺省情况下:
Radio视图:继承AP组Radio配置。
AP组Radio视图:未绑定无线服务模板。
无线服务模板绑定到Radio上时,请勿指定VLAN ID或VLAN组。
在完成上述配置后,在任意视图下执行display命令可以显示配置后EoGRE的运行情况,通过查看显示信息验证配置的效果。无线AC设备上无下述显示和维护信息。
在用户视图下执行reset命令可以清除Tunnel接口的统计信息。
表2-1 EoGRE显示和维护
操作 |
命令 |
显示Tunnel接口的相关信息(本命令的详细介绍,请参见“网络互通配置指导”中的“隧道”) |
display interface [ tunnel [ number ] ] [ brief [ description | down ] ] |
清除Tunnel接口的统计信息(本命令的详细介绍,请参见“网络互通配置指导”中的“隧道”) |
reset counters interface [ tunnel [ number ] ] |
AP和Device分别位于Network1和Network2,AC上进行EoGRE配置,配置下发给AP,会动态下发创建VE-Bridge接口,Tunnel接口,以及VE-Bridge接口与Tunnel接口的映射,通过在AP和Device之间建立EoGRE over IPv4隧道,实现以太网络跨三层网络互联。
图2-6 EoGRE over IPv4隧道应用组网图
在开始下面的配置之前,假设设备各接口的地址都已配置完毕,并且AP和Device之间路由可达、Network1的各设备之间路由可达、Network2的各设备之间路由可达、AC和AP之间互通。
(1) 配置AC
# 创建EoGRE模板,并进入EoGRE模板视图。
<AC> system-view
[AC] eogre template abc
# 配置Tunnel接口的目的端地址。
[AC-eogre-template-abc] tunnel destination 2.2.2.2
# 配置Tunnel接口的隧道模式。
[AC-eogre-template-abc] tunnel mode eogre
[AC-eogre-template-abc] quit
# 创建无线服务模板。
[AC] wlan service-template service1
[AC-wlan-st-service1] ssid eogre
# 配置无线服务模板的VLAN。
[AC-wlan-st-service1] vlan 105
# 配置无线客户端的数据报文转发位置在AP上。
[AC-wlan-st-service1] client forwarding-location ap
# 开启无线服务模板。
[AC-wlan-st-service1] service-template enable
# 创建无线服务模板与EoGRE模板的映射。
[AC-wlan-st-service1] map eogre-template abc
[AC-wlan-st-service1] quit
# 创建AP并配置序列号。
[AC] wlan ap ap10 model WA6320
[AC-wlan-ap-ap10] serial-id 219801A23V8198E0000Z
# 进入Radio视图。
[AC-wlan-ap-ap10] radio 1
# 绑定无线服务模板。
[AC-wlan-ap-ap10-radio-1] service-template service1
# 开启射频功能。
[AC-wlan-ap-ap10-radio-1] radio enable
[AC-wlan-ap-ap10-radio-1] quit
(2) 配置Device
# 创建二层虚拟以太网接口。
<Device> system-view
[Device] interface ve-bridge 1
[Device-VE-Bridge1] quit
# 创建Tunnel0接口,并指定隧道模式为EoGRE over IPv4隧道。
[Device] interface tunnel 0 mode eogre
# 配置Tunnel0接口的IP地址。
[Device-Tunnel0] ip address 10.1.2.2 255.255.255.0
# 配置Tunnel0接口的源端地址(Device的GE1/0/2的IP地址)。
[Device-Tunnel0] source 2.2.2.2
# 配置Tunnel0接口的目的端地址(AP的Vlan-int1的IP地址)。
[Device-Tunnel0] destination 1.1.1.1
# 配置Tunnel0接口与VE-Bridge1接口的映射。
[Device-Tunnel0] map bridge ve-bridge 1
[Device-Tunnel0] quit
# 当AP上线后,查看Device的Tunnel接口状态。
[Device] display interface tunnel 0
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64kbps
Maximum transmission unit: 64000
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 EoGRE/IP
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
# 从Network2中Client2可以Ping通Network1中Client1的地址。
C:\Users\system32> ping 10.1.1.1
Pinging 10.1.1.1 with 32 bytes of data:
Reply from 10.1.1.1: bytes=32 time=8ms TTL=255
Reply from 10.1.1.1: bytes=32 time<1ms TTL=255
Reply from 10.1.1.1: bytes=32 time<1ms TTL=255
Reply from 10.1.1.1: bytes=32 time<1ms TTL=255
Ping statistics for 10.1.1.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 8ms, Average = 0ms
EoGRE的配置相对比较简单,但要注意配置的一致性,大部分的错误都可以使用调试命令debugging gre和debugging tunnel定位。这里仅就一种错误进行分析。
如图2-7所示,Tunnel两端接口配置正确且Tunnel两端可以ping通,但Network1和Network2上的接口之间却无法ping通。
图2-7 EoGRE排错示例
出现该故障的原因可能是Device A或Device C上没有到达对端网络的路由。
在Device A和Device C分别执行display ip routing-table命令,观察Device A的Tunnel0接口到Device C的Tunnel0接口是否路由可达。
如下图所示,在部署了EoGRE隧道的网络中,存在如下异常情况:
· 在无线网络覆盖范围内,无线客户端无法搜索到与EoGRE模板有映射关系的无线服务模板的SSID。
· 在与EoGRE模板有映射关系的无线服务模板上上线的无线客户端被强制下线。
· 无线客户端无法接入与EoGRE模板有映射关系的无线服务。
图2-8 EoGRE应用场景示例
出现该故障的原因可能是EoGRE隧道断开。
在设备上执行display interface tunnel命令,查看隧道状态是否为UP。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!