14-隧道配置
本章节下载: 14-隧道配置 (412.27 KB)
目 录
1.5.7 开启Tunnel接口的UPDOWN日志助记符带Tunnel标签功能
1.5.8 配置VXLAN模式Tunnel接口所属的VXLAN隧道组
3.5.1 IPv4 over IPv4隧道基本组网配置举例
本章仅介绍隧道接口的配置,有关隧道模式的介绍请参见后续章节。
隧道技术是一种封装技术,即一种网络协议将其他网络协议的数据报文封装在自己的报文中,然后在网络中传输。封装后的数据报文在网络中传输的路径,称为隧道。隧道是一条虚拟的点对点连接,隧道的两端需要对数据报文进行封装及解封装。隧道技术就是指包括数据封装、传输和解封装在内的全过程。
目前支持的隧道技术包括:
· GRE(Generic Routing Encapsulation,通用路由封装)隧道,GRE的相关介绍和配置请参见“三层技术-IP业务配置指导”中的“GRE”。
· MPLS TE(Multiprotocol Label Switching Traffic Engineering,多协议标记交换流量工程)隧道,MPLS TE的相关介绍和配置请参见“MPLS配置指导”中的“MPLS TE”。
· VXLAN(Virtual eXtensible LAN,可扩展虚拟局域网络)隧道和VXLAN-DCI(VXLAN Data Center Interconnect,VXLAN数据中心互联)隧道,VXLAN和VXLAN-DCI的相关介绍和配置请参见“VXLAN配置指导”中的“VXLAN”。
· IPv6 over IPv4隧道和IPv4 over IPv4隧道。
在分布式设备上,主备倒换或备用主控板拔出时,建立在主控板或备用主控板上的隧道接口不会被删除,若再配置相同的隧道接口,系统会提示隧道接口已经存在。如果需要删除隧道接口,请使用undo interface tunnel命令。
同一台设备上,多个Tunnel接口不要同时配置完全相同的目的端地址和源端地址。
设备工作在二层增强模式(配置system-working-mode bridgee命令)时,不支持本特性。
封装后的报文不能根据目的地址和路由表进行第二次三层转发,需要将封装后的报文发送给业务环回组,由业务环回组将报文回送给转发模块后,再进行三层转发。因此,需要创建tunnel类型的业务环回组,以实现隧道报文的接收和发送。关于业务环回组的创建和配置,请参见“二层技术-以太网交换配置指导”中的“业务环回组”。
隧道两端的设备上,需要创建虚拟的三层接口,即Tunnel接口,以便隧道两端的设备利用Tunnel接口发送报文、识别并处理来自隧道的报文。
Tunnel接口配置任务如下:
(1) 创建Tunnel接口
(2) (可选)配置封装后隧道报文的属性
(3) (可选)配置隧道目的端地址所属的VPN实例
(4) (可选)恢复当前Tunnel接口的缺省配置
(5) (可选)开启Tunnel接口的UPDOWN日志助记符带Tunnel标签功能
(6) (可选)配置VXLAN模式Tunnel接口所属的VXLAN隧道组
(7) (可选)配置隧道模块的告警功能
(1) 进入系统视图。
system-view
(2) 创建Tunnel接口,指定隧道模式,并进入Tunnel接口视图。
interface tunnel number mode { gre | ipv4-ipv4 | ipv6-ipv4 | mpls-te | vxlan | vxlan-dci }
在隧道的两端应配置相同的隧道模式,否则可能造成报文传输失败。
(3) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(4) 设置隧道的目的端地址。
destination ipv4-address
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址。
(5) (可选)配置接口描述信息。
description text
缺省情况下,接口描述信息为“该接口的接口名 Interface”。
(6) (可选)配置Tunnel接口的MTU值。
mtu size
缺省情况下,隧道接口的状态始终为Down时,隧道的MTU值为64000;隧道接口的状态当前为Up时,隧道的MTU值为根据隧道目的地址查找路由而得到的出接口的MTU值减隧道封装报文头长度。
(7) (可选)配置Tunnel接口的期望带宽。
bandwidth bandwidth-value
缺省情况下,接口的期望带宽=接口的最大速率÷1000(kbit/s)。
期望带宽供业务模块使用,不会对接口实际带宽造成影响。
(8) 开启Tunnel接口。
undo shutdown
缺省情况下,Tunnel接口处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 设置封装后隧道报文的ToS。
tunnel tos { copy-inner-tos | tos-value }
缺省情况下,对于VXLAN隧道,封装后隧道报文的ToS值为0;对于非VXLAN隧道,封装后隧道报文的ToS值与封装前原始报文的ToS值相同。
仅VXLAN隧道支持copy-inner-tos参数。
(4) 设置封装后隧道报文的TTL值。
tunnel ttl ttl-value
缺省情况下,封装后隧道报文的TTL值为255。
隧道的源端地址和目的端地址必须属于相同的VPN实例,否则隧道接口链路状态无法UP。在隧道的源接口上通过ip binding vpn-instance命令可以指定隧道源端地址所属的VPN实例。ip binding vpn-instance命令的详细介绍,请参见“MPLS命令参考”中的“MPLS L3VPN”。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 配置隧道目的端地址所属的VPN实例。
tunnel vpn-instance vpn-instance-name
缺省情况下,隧道目的端地址属于公网,设备查找公网路由表转发隧道封装后的报文。
接口下的某些配置恢复到缺省情况后,会对设备上当前运行的业务产生影响。建议您在执行本配置前,完全了解其对网络产生的影响。
您可以在执行default命令后通过display this命令确认执行效果。对于未能成功恢复缺省的配置,建议您查阅相关功能的命令手册,手工执行恢复该配置缺省情况的命令。如果操作仍然不能成功,您可以通过设备的提示信息定位原因。
(1) 进入系统视图。
system-view
(2) 进入Tunnel接口视图。
interface tunnel number
(3) 恢复当前接口的缺省配置。
default
本功能针对Tunnel接口UPDOWN日志信息增加Tunnel标签,以便于用户通过正则表达式区分Tunnel口的信息,例如:
· 开启该功能前的日志信息
%Jan 8 18:45:33:621 2011 Sysname IFNET/3/PHY_UPDOWN: Physical state on the interface Tunnel1 changed to down.
· 开启该功能后的日志信息
%Jan 8 18:45:33:621 2011 Sysname IFNET/3/TUNNEL_PHY_UPDOWN: Physical state on the interface Tunnel1 changed to down
(1) 进入系统视图。
system-view
(2) 开启Tunnel接口的UPDOWN日志助记符带Tunnel标签功能。
tunnel log updown with-tag
缺省情况下,Tunnel接口的UPDOWN日志助记符带Tunnel标签功能处于关闭状态,UPDOWN日志助记符不带Tunnel标签。
VXLAN隧道组是由同一台设备上的一个或多个VXLAN模式的Tunnel接口组成。本功能可以将设备上指定的VXLAN模式Tunnel接口加入到VXLAN隧道组中,通过与流量重定向功能配合使用,将报文引流到VXLAN隧道组后,实现报文在多条VXLAN隧道上的复制转发。有关流量重定向功能的详细介绍,请参见“ACL和QoS配置指导”中的“QoS”。
一个VXLAN模式Tunnel接口只允许同时加入一个VXLAN隧道组。如果需要为当前接口加入其他VXLAN隧道组,需在VXLAN模式Tunnel接口视图下使用undo group命令使当前接口退出已加入的VXLAN隧道组。
一个VXLAN隧道组最多允许加入2个VXLAN模式Tunnel接口。
(1) 进入系统视图。
system-view
(2) 进入VXLAN模式Tunnel接口视图。
interface tunnel number
(3) 配置VXLAN模式Tunnel接口所属的VXLAN隧道组。
group group-id
缺省情况下,未配置VXLAN模式Tunnel接口所属的VXLAN隧道组。
用户可根据业务需求开启指定隧道类型的告警功能:
· 开启了VXLAN隧道配置下发失败的告警功能后,设备会将配置下发失败的Tunnel接口编号信息作为告警信息发送到设备的SNMP模块。
· 开启了解封装VXLAN报文失败的告警功能后,设备会将解封装失败的VXLAN报文的源地址IP类型、源地址IP、目的地址IP类型、目的地址IP等信息作为告警信息发送到设备的SNMP模块。
· 开启了Tunnel接口数量告警功能后,当设备上的Tunnel接口个数超过了告警阈值,即设备允许创建数量的80%时,设备会将超出的Tunnel接口的框号和板号信息作为告警信息发送到设备的SNMP模块。
· 开启了VXLAN over IPv4隧道状态的告警功能后,设备上的VXLAN over IPv4隧道状态发生变化时,设备会将此隧道信息记录在告警信息中,生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关特性。
· 开启了VXLAN over IPv6隧道状态的告警功能后,设备上的VXLAN over IPv6隧道状态发生变化时,设备会将此隧道信息记录在告警信息中,生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关特性。
· 当不指定任何参数时,设备将同时开启VXLAN over IPv4/IPv6隧道状态的告警功能。
有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
仅Release 2825及以上版本支持本命令。
(1) 进入系统视图。
system-view
(2) 开启隧道模块的告警功能。
snmp-agent trap enable tunnel [ max-threshold-reached | vxlan-config-failure | vxlan-decap-failure | vxlan-tunnel-status | vxlan-ipv6-tunnel-status ] *
缺省情况下,隧道模块的告警功能处于关闭状态。
在任意视图下执行display命令可以显示隧道配置后的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除Tunnel接口的统计信息。
表1-1 隧道显示和维护
操作 |
命令 |
显示Tunnel接口的相关信息 |
display interface [ tunnel [ number ] ] [ brief [ description | down ] ] |
显示Tunnel接口的IPv6相关信息(本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”) |
display ipv6 interface [ tunnel [ number ] ] [ brief ] |
清除Tunnel接口的统计信息 |
reset counters interface [ tunnel [ number ] ] |
清除Tunnel接口的IPv6统计信息(本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”) |
(独立运行模式) reset ipv6 statistics [ slot slot-number ] (IRF模式) reset ipv6 statistics [ chassis chassis-number slot slot-number ] |
在Tunnel接口上配置了相关的参数后(例如隧道的源端地址、目的端地址和隧道模式),Tunnel接口仍未处于up状态。
Tunnel接口未处于up状态的原因可能是隧道起点的物理接口没有处于up状态,或隧道的目的端地址不可达。
使用display interface命令查看隧道起点的物理接口状态为up还是down。如果物理接口状态是down的,请检查网络连接。
使用display ipv6 routing-table和display ip routing-table命令查看是否目的端地址通过路由可达。如果路由表中没有保证隧道通讯的路由表项,请配置相关路由。
如图2-1所示,IPv6 over IPv4隧道是在IPv6数据报文前封装上IPv4的报文头,通过隧道使IPv6报文穿越IPv4网络,实现隔离的IPv6网络互通。IPv6 over IPv4隧道两端的设备必须支持IPv4/IPv6双协议栈,即同时支持IPv4协议和IPv6协议。
图2-1 IPv6 over IPv4隧道原理图
IPv6 over IPv4隧道对报文的处理过程如下:
(1) IPv6网络中的主机发送IPv6报文,该报文到达隧道的源端设备Device A。
(2) Device A根据路由表判定该报文要通过隧道进行转发后,在IPv6报文前封装上IPv4的报文头,通过隧道的实际物理接口将报文转发出去。IPv4报文头中的源IP地址为隧道的源端地址,目的IP地址为隧道的目的端地址。
(3) 封装报文通过隧道到达隧道目的端设备(或称隧道终点)Device B,Device B判断该封装报文的目的地是本设备后,将对报文进行解封装。
(4) Device B根据解封装后的IPv6报文的目的地址处理该IPv6报文。如果目的地就是本设备,则将IPv6报文转给上层协议处理;否则,查找路由表转发该IPv6报文。
IPv6 over IPv4隧道配置任务如下:
(1) 配置IPv6 over IPv4隧道
(2) (可选)配置丢弃含有IPv4兼容IPv6地址的IPv6报文
· 在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。
· 在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
· 如果封装前IPv6报文的目的IPv6地址与Tunnel接口的IPv6地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv6地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv6地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置IPv6 BGP动态路由,在Tunnel接口使能IPv6 BGP动态路由协议。在隧道的两端都要进行此项配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“IPv6静态路由”或“BGP”。
(1) 进入系统视图。
system-view
(2) 进入模式为IPv6 over IPv4隧道的Tunnel接口视图。
interface tunnel number [ mode ipv6-ipv4 ]
(3) 设置Tunnel接口的IPv6地址。
详细配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
(4) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(5) 设置隧道的目的端地址。
destination ipv4-address
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址。
(6) (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。
tunnel dfbit enable
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
如图2-2所示,两个IPv6网络分别通过Switch A和Switch B与IPv4网络连接,要求在Switch A和Switch B之间建立IPv6 over IPv4隧道,使两个IPv6网络可以互通。
图2-2 IPv6 over IPv4隧道组网图
缺省情况下,本设备的接口处于ADM(Administratively Down)状态,请根据实际需要在对应接口视图下使用undo shutdown命令开启接口。
在开始下面的配置之前,请确保Switch A和Switch B上已经创建相应的VLAN接口,且两者之间IPv4报文路由可达。
(1) 配置Switch A
# 配置接口FortyGigE1/0/2(隧道的实际物理接口)加入VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
[SwitchA-vlan100] port fortygige 1/0/2
[SwitchA-vlan100] quit
# 配置接口Vlan-interface100的IP地址。
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ip address 192.168.100.1 255.255.255.0
[SwitchA-Vlan-interface100] quit
# 配置接口FortyGigE1/0/1加入VLAN101。
[SwitchA] vlan 101
[SwitchA-vlan101] port fortygige 1/0/1
[SwitchA-vlan101] quit
# 配置接口Vlan-interface101的IPv6地址。
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] ipv6 address 3002::1 64
[SwitchA-Vlan-interface101] quit
# 创建业务环回组1,并配置服务类型为tunnel。
[SwitchA] service-loopback group 1 type tunnel
# 将接口FortyGigE1/0/3加入业务环回组1。
[SwitchA] interface fortygige 1/0/3
[SwitchA-FortyGigE1/0/3] port service-loopback group 1
[SwitchA-FortyGigE1/0/3] quit
# 创建模式为IPv6 over IPv4隧道的接口Tunnel0。
[SwitchA] interface tunnel 0 mode ipv6-ipv4
# 配置Tunnel0接口的IPv6地址。
[SwitchA-Tunnel0] ipv6 address 3001::1/64
# 配置Tunnel0接口的源接口为Vlan-interface100。
[SwitchA-Tunnel0] source vlan-interface 100
# 配置Tunnel0接口的目的端地址(Switch B的Vlan-interface100的IP地址)。
[SwitchA-Tunnel0] destination 192.168.50.1
[SwitchA-Tunnel0] quit
# 配置从Switch A经过Tunnel0接口到IPv6 network 2的静态路由。
[SwitchA] ipv6 route-static 3003:: 64 tunnel 0
(2) 配置Switch B
# 配置接口FortyGigE1/0/2(隧道的实际物理接口)加入VLAN100。
<SwitchB> system-view
[SwitchB] vlan 100
[SwitchB-vlan100] port fortygige 1/0/2
[SwitchB-vlan100] quit
# 配置接口Vlan-interface100的IP地址。
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ip address 192.168.50.1 255.255.255.0
[SwitchB-Vlan-interface100] quit
# 配置接口FortyGigE1/0/1加入VLAN101。
[SwitchB] vlan 101
[SwitchB-vlan101] port fortygige 1/0/1
[SwitchB-vlan101] quit
# 配置接口Vlan-interface101的IPv6地址。
[SwitchB] interface vlan-interface 101
[SwitchB-Vlan-interface101] ipv6 address 3003::1 64
[SwitchB-Vlan-interface101] quit
# 创建业务环回组1,并配置服务类型为tunnel。
[SwitchB] service-loopback group 1 type tunnel
# 将接口FortyGigE1/0/3加入业务环回组1。
[SwitchB] interface fortygige 1/0/3
[SwitchB-FortyGigE1/0/3] port service-loopback group 1
[SwitchB-FortyGigE1/0/3] quit
# 创建模式为IPv6 over IPv4隧道的接口Tunnel0。
[SwitchB] interface tunnel 0 mode ipv6-ipv4
# 配置Tunnel0接口的IPv6地址。
[SwitchB-Tunnel0] ipv6 address 3001::2/64
# 配置Tunnel0接口的源接口为Vlan-interface100。
[SwitchB-Tunnel0] source vlan-interface 100
# 配置Tunnel0接口的目的端地址(Switch A的Vlan-interface100的IP地址)。
[SwitchB-Tunnel0] destination 192.168.100.1
[SwitchB-Tunnel0] quit
# 配置从Switch B经过Tunnel0接口到IPv6 network 1的静态路由。
[SwitchB] ipv6 route-static 3002:: 64 tunnel 0
# 完成上述配置后,在Switch A和Switch B上分别执行display ipv6 interface命令,可以看出Tunnel0接口处于up状态。(具体显示信息略)
# 从Switch A和Switch B上可以Ping通对端的Vlan-int101接口的IPv6地址。下面仅以Switch A为例。
[SwitchA] ping ipv6 3003::1
Ping6(56 data bytes) 3001::1 --> 3003::1, press CTRL_C to break
56 bytes from 3003::1, icmp_seq=0 hlim=64 time=45.000 ms
56 bytes from 3003::1, icmp_seq=1 hlim=64 time=10.000 ms
56 bytes from 3003::1, icmp_seq=2 hlim=64 time=4.000 ms
56 bytes from 3003::1, icmp_seq=3 hlim=64 time=10.000 ms
56 bytes from 3003::1, icmp_seq=4 hlim=64 time=11.000 ms
--- Ping6 statistics for 3003::1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 4.000/16.000/45.000/14.711 ms
(1) 进入系统视图。
system-view
(2) 配置丢弃含有IPv4兼容IPv6地址的IPv6报文。
tunnel discard ipv4-compatible-packet
缺省情况下,不会丢弃含有IPv4兼容IPv6地址的IPv6报文。
IPv4 over IPv4隧道(RFC 1853)是对IPv4报文进行封装,使得一个IPv4网络的报文能够在另一个IPv4网络中传输。例如,运行IPv4协议的两个子网位于不同的区域,并且这两个子网都使用私网地址时,可以通过建立IPv4 over IPv4隧道,实现两个子网的互联。
图3-1 IPv4 over IPv4隧道原理图
报文在隧道中传输经过封装与解封装两个过程,以图3-1为例说明这两个过程:
· 封装过程
Device A连接IPv4主机所在子网的接口收到IPv4报文后,首先交由IPv4协议栈处理。IPv4协议栈根据IPv4报文头中的目的地址判断该报文需要通过隧道进行转发,则将此报文发给Tunnel接口。
Tunnel接口收到此报文后,在IPv4报文外再封装一个IPv4报文头,封装的报文头中源IPv4地址为隧道的源端地址,目的IPv4地址为隧道的目的端地址。封装完成后将报文重新交给IPv4协议栈处理,IPv4协议栈根据添加的IPv4报文头查找路由表,转发报文。
· 解封装过程
解封装过程和封装过程相反。Device B从接口收到IPv4报文后,将其送到IPv4协议栈处理。IPv4协议栈检查接收到的IPv4报文头中的协议号。如果协议号为4(表示封装的报文为IPv4报文),则将此IPv4报文发送到隧道模块进行解封装处理。解封装之后的IPv4报文将重新被送到IPv4协议栈进行二次路由处理。
· 在本端设备上为隧道指定的目的端地址,应该与在对端设备上为隧道指定的源端地址相同;在本端设备上为隧道指定的源端地址,应该与在对端设备上为隧道指定的目的端地址相同。
· 在同一台设备上,隧道模式相同的Tunnel接口建议不要同时配置完全相同的源端地址和目的端地址。
· 本端隧道接口的IPv4地址与隧道的目的端地址不能在同一个网段内。
· 如果封装前IPv4报文的目的IPv4地址与Tunnel接口的IPv4地址不在同一个网段,则必须配置通过Tunnel接口到达目的IPv4地址的转发路由,以便需要进行封装的报文能正常转发。用户可以配置静态路由,指定到达目的IPv4地址的路由出接口为本端Tunnel接口或下一跳为对端Tunnel接口地址。用户也可以配置IS-IS或BGP动态路由,在Tunnel接口开启IS-IS或BGP动态路由协议。在隧道的两端都要进行此项配置,配置的详细情况请参见“三层技术-IP路由配置指导”中的“静态路由”、“IS-IS”或“BGP”。
· 配置经过隧道接口的路由时,路由的目的地址不能与该隧道的目的端地址在同一个网段内。
(1) 进入系统视图。
system-view
(2) 进入模式为IPv4 over IPv4隧道的Tunnel接口视图。
interface tunnel number [ mode ipv4-ipv4 ]
(3) 设置Tunnel接口的IPv4地址。
ip address ip-address { mask | mask-length } [ sub ]
(4) 设置隧道的源端地址或源接口。
source { ipv4-address | interface-type interface-number }
缺省情况下,未设置隧道的源端地址和源接口。
如果设置的是隧道的源端地址,则该地址将作为封装后隧道报文的源IP地址;如果设置的是隧道的源接口,则该接口的主IP地址将作为封装后隧道报文的源IP地址。
(5) 设置隧道的目的端地址。
destination ipv4-address
缺省情况下,未设置隧道的目的端地址。
隧道的目的端地址是对端接收报文的接口的地址,该地址将作为封装后隧道报文的目的地址。
(6) (可选)设置封装后隧道报文的DF(Don’t Fragment,不分片)标志。
tunnel dfbit enable
缺省情况下,未设置隧道报文的不分片标志,即转发隧道报文时允许分片。
某些场景下,客户端需要通过构造多层封装的IPv4-in-IPv4报文来检测一条传输路径是否路由可达。此时,需要在传输路径的各个节点设备上配置本功能,即配置用于解封装IPv4-in-IPv4报文的地址对,来配合客户端完成传输路经可达性检测。
每组解封装地址对中包含一个目的IP地址和若干个源IP地址。目的IP地址可根据需要配置,并无无实际作用。源IP地址可通过如下三种方式配置:
· 指定设备上的一个路由可达的IP地址(通过source ip-address参数)作为地址对的源IP地址;
· 指定一个源接口(通过source interface-type interface-number参数),该接口的主IP地址将作为地址对中的源IP地址;
· 指定一组源IP地址(通过source direct参数)。系统通过遍历设备上所有接口状态为Up的三层接口、VLAN接口和LoopBack口,并将遍历到的接口的主IP地址(除子接口地址、VPN内地址、InLoopBack口地址以外)作为地址对中的源IP地址。
在待检测路径的各个节点设备上都需要配置一组解封装地址对。其中,待检测路径的终点设备上的地址对源IP地址可以通过指定源IP地址组、源IP地址或者源接口的方式配置,其它中间节点设备上的地址对源IP地址必须通过指定源IP地址组的方式配置。
在客户端构建IPv4-in-IPv4报文时,需将原始报文的目的地址设置为客户端自己的IP地址,然后在原始报文上逐层封装IP报文头。
IPv4-in-IPv4报文封装IP报文头的顺序应该与路径上节点设备解封装报文头的顺序相反,封装IP报文头的数量为链路节点设备个数×2-1。
IPv4-in-IPv4报文中每层IP报文头的源地址和目的地址都需要解封装该层报文头的节点设备上的解封装地址对对应,关系如下:
· 报文头中源地址对应解封装地址对中的目的IP地址;
· 报文头中目的地址对应解封装地址对中的源IP地址。
客户端构建的多层封装IPv4-in-IPv4报文每经过一个节点设备时,节点设备都会对接收到的报文进行解封装匹配,即将报文头中的源地址和目的地址与设备上配置的解封装地址对匹配。如果符合,则对该报文头进行解封装,否则不进行解封装。
节点设备解封装报文头后,会根据转发表项将该报文转发到下一个节点设备。后续报文转发路径上的节点设备依次执行以上匹配和解封装的动作,直到最后一个节点设备完成解封装。由于该多层封装IPv4-in-IPv4报文的原始报文目的地址为客户端自己的IP地址,如果该报文能够回到客户端,则说明路径可达;否则说明路径不可达。
例如:检测一条由2个节点设备组成的链路,以客户端为起点的设备顺序为:Host—>A—>B。
图3-2 IPv4 in IPv4报文匹配解封装流程图
解封装后,节点Device A根据转发表项将该报文转发到下一个节点Device B。节点Device B收到报文后,发现报文头与配置的解封装地址对匹配,对报文进行解封装后,根据转发表项将该报文转发到下一个节点Device A。节点Device A重复Device B的匹配和解封装的动作,将报文的最后一层报文头解封装。节点Device A根据转发表项将该报文转发到Host。Host收到报文后,则说明检测的路径可达。
指定一组IP地址作为解封装地址对的源IP地址的场景下,如果设备上存在端口地址借用的情况,当借用端口修改为非借用端口时,本功能会失效,需要重新配置本命令使功能生效。关于端口地址借用的详细信息请参见“三层技术-IP业务配置指导”中的“IP地址”。
仅Release 2825及以上版本支持本命令。
(1) 进入系统视图。
system-view
(2) 配置解封装IPv4-in-IPv4报文的地址对。
tunnel ip-in-ip decapsulate-any [ destination ip-address ] source { ip-address | interface-type interface-number | direct }
缺省情况下,未配置解封装IPv4-in-IPv4报文的地址对。
运行IP协议的两个子网Group 1和Group 2位于不同的区域,这两个子网都使用私网地址。通过在交换机Switch A和交换机Switch B之间建立IPv4 over IPv4隧道,实现两个子网的互联。
图3-3 IPv4 over IPv4隧道组网图
缺省情况下,本设备的接口处于ADM(Administratively Down)状态,请根据实际需要在对应接口视图下使用undo shutdown命令开启接口。
在开始下面的配置之前,请确保Switch A和Switch B上已经创建相应的VLAN接口,且两者之间IPv4报文路由可达。
(1) 配置Switch A
# 配置接口FortyGigE1/0/1加入VLAN100。
<SwitchA> system-view
[SwitchA] vlan 100
[SwitchA-vlan100] port fortygige 1/0/1
[SwitchA-vlan100] quit
# 配置接口Vlan-interface100的地址。
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] ip address 10.1.1.1 255.255.255.0
[SwitchA-Vlan-interface100] quit
# 配置接口FortyGigE1/0/2(隧道的实际物理接口)加入VLAN101。
[SwitchA] vlan 101
[SwitchA-vlan101] port fortygige 1/0/2
[SwitchA-vlan101] quit
# 配置接口Vlan-interface101的IP地址。
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] ip address 2.1.1.1 255.255.255.0
[SwitchA-Vlan-interface101] quit
# 创建业务环回组1,并配置服务类型为tunnel。
[SwitchA] service-loopback group 1 type tunnel
# 将接口FortyGigE1/0/3加入业务环回组1。
[SwitchA] interface fortygige 1/0/3
[SwitchA-FortyGigE1/0/3] port service-loopback group 1
[SwitchA-FortyGigE1/0/3] quit
# 创建模式为IPv4 over IPv4隧道的接口Tunnel1。
[SwitchA] interface tunnel 1 mode ipv4-ipv4
# 配置Tunnel1接口的IP地址。
[SwitchA-Tunnel1] ip address 10.1.2.1 255.255.255.0
# 配置Tunnel1接口的源端地址(Vlan-interface101的IP地址)。
[SwitchA-Tunnel1] source 2.1.1.1
# 配置Tunnel1接口的目的端地址(Switch B的Vlan-interface101的IP地址)。
[SwitchA-Tunnel1] destination 3.1.1.1
[SwitchA-Tunnel1] quit
# 配置从Switch A经过Tunnel1接口到Group 2的静态路由。
[SwitchA] ip route-static 10.1.3.0 255.255.255.0 tunnel 1
(2) 配置Switch B
# 配置接口FortyGigE1/0/1加入VLAN100。
<SwitchB> system-view
[SwitchB] vlan 100
[SwitchB-vlan100] port fortygige 1/0/1
[SwitchB-vlan100] quit
# 配置接口Vlan-interface100的IP地址。
[SwitchB] interface vlan-interface 100
[SwitchB-Vlan-interface100] ip address 10.1.3.1 255.255.255.0
[SwitchB-Vlan-interface100] quit
# 配置接口FortyGigE1/0/2(隧道的实际物理接口)加入VLAN101。
[SwitchB] vlan 101
[SwitchB-vlan101] port fortygige 1/0/2
[SwitchB-vlan101] quit
# 配置接口Vlan-interface101的IP地址。
[SwitchB] interface vlan-interface 101
[SwitchB-Vlan-interface101] ip address 3.1.1.1 255.255.255.0
[SwitchB-Vlan-interface101] quit
# 创建业务环回组1,并配置服务类型为tunnel。
[SwitchB] service-loopback group 1 type tunnel
# 将接口FortyGigE1/0/3加入业务环回组1。
[SwitchB] interface fortygige 1/0/3
[SwitchB-FortyGigE1/0/3] port service-loopback group 1
[SwitchB-FortyGigE1/0/3] quit
# 创建模式为IPv4 over IPv4隧道的接口Tunnel2。
[SwitchB] interface tunnel 2 mode ipv4-ipv4
# 配置Tunnel2接口的IP地址。
[SwitchB-Tunnel2] ip address 10.1.2.2 255.255.255.0
# 配置Tunnel2接口的源端地址(Vlan-interface101的IP地址)。
[SwitchB-Tunnel2] source 3.1.1.1
# 配置Tunnel2接口的目的端地址(SwitchA的Vlan-interface101的IP地址)。
[SwitchB-Tunnel2] destination 2.1.1.1
[SwitchB-Tunnel2] quit
# 配置从Switch B经过Tunnel2接口到Group 1的静态路由。
[SwitchB] ip route-static 10.1.1.0 255.255.255.0 tunnel 2
# 完成上述配置后,在Switch A和Switch B上分别执行display interface tunnel命令,可以看出Tunnel接口处于up状态。(具体显示信息略)
# 从Switch A和Switch B上可以Ping通对端的Vlan-interface100接口的IPv4地址。下面仅以Switch A为例。
[SwitchA] ping -a 10.1.1.1 10.1.3.1
Ping 10.1.3.1 (10.1.3.1) from 10.1.1.1: 56 data bytes, press CTRL_C to break
56 bytes from 10.1.3.1: icmp_seq=0 ttl=255 time=2.000 ms
56 bytes from 10.1.3.1: icmp_seq=1 ttl=255 time=1.000 ms
56 bytes from 10.1.3.1: icmp_seq=2 ttl=255 time=0.000 ms
56 bytes from 10.1.3.1: icmp_seq=3 ttl=255 time=1.000 ms
56 bytes from 10.1.3.1: icmp_seq=4 ttl=255 time=1.000 ms
--- Ping statistics for 10.1.3.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
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!