■福建 王刚 曾玮琳 郑洪飞
引言:环路问题一直是导致网络质量下降甚至瘫痪的主要原因之一,在网络日常使用中,由于操作不当、配置错误等原因造成网络环路,数据流通不畅,无论是政府单位还是电信运营商,数据流通不畅都可能带来巨大损失。如何快速破坏网络环路,最大程度减少损失显得非常重要。
为了能够及时发现网络中的二层网络环路,避免对整个网络造成严重影响,当网络中出现环路时,可利用交换机环路检测技术(Loopback Detection),及时发出告警信息,通知用户检查网络连接和配置情况,并能够将出问题的接口置于某种管制状态,以实现快速破坏二层网络环路,最小程度地影响网络使用,环路检测功能并不能破坏二层网络环路,必须结合交换机物理接口管制状态才能快速破坏二层网络环路。
所有环路的形成都是由于目的路径不明确导致混乱而造成的,环路会造成网络动荡,引起数据包数量增加,造成丢包,严重时会导致网络瘫痪。在多数网络故障中,链路和设备故障导致网络通讯质量下降的占多数,通常在网络部署和网络设备调整过程中也会因路径的设置不当导致二层网络环路,造成各种危害。
环路一旦形成,网络中的环路会对广播、组播以及未知单播等报文进行不断地循环转发、广播和重复发送,无法结束进而造成网络广播风暴,阻塞带宽,耗尽交换资源,能让交换机的CPU使用率高达85%以上,造成网络资源浪费甚至交换机瘫痪。
由于交换机具有学习功能,网络内的主机只要发送广播报,交换机就必须在相应的物理端口学习MAC地址形成MAC地址表,当有环路存在时,交换机会在多个端口学习到同一MAC地址和IP地址,从而形成错误的MAC地址表,这种现象就是MAC地址飘移,会影响数据包的正常转发,造成网络中断。
在规模较大的局域网网络中,时常会遇到网络通道被严重堵塞的现象,造成这种故障现象的原因有很多,常见的主要原因有6种。一是网络中交换机改动、乱入或位置变化。因为频繁改动网络时很容易引发网络环路,而由网络环路引起的网络堵塞现象常常具有较强的隐蔽性,不利于故障现象的高效排除。二是网络线路调整。在调试设备时测试光路形成的环路。有时我们会在远端进行线路回环对线路是否正常进行测试,有时因操作导致线路混乱而产生环路。三是配置不当。例如,为实现二层网络双路由保护或流量分担,链路进行聚合操作,当在参加的接口上取消了链路聚合功能就会形成环路,还比如,交换机启动了生成树协议,当取消生成树协议后,原来可能阻塞的环路恢复环路等。四是病毒引发环路。原本网络中存在环路,但因使能生成树协议后环路失效,但因病毒引发线路阻塞,导致生成树保活的协议失效,导致生成树协议失效,引发环路恢复。五是报文转发异常导致环路。当数据转发给外连交换机时,因外连交换机的处理能力不足,外连交换机会反弹转发,从而造成网络环路。六是硬件故障。这种故障比较少,因为即使交换机接口出现故障一般也不会形成环路,但有时接口被高压等原因击穿后接口内部会形成环路。
环路检测技术是通过连续周期性发送环路检测报文来检测网络中是否存在环路的检测技术。二层环路分为单臂环路和双臂环路,单臂环路为环路检测报文从交换机某端口发出,又从该端口接收到该环路检测报文如图1所示,可以判断出该接口产生物理故障或外连网络有环路。双臂环路为环路检测报文从交换机端口发出,从该交换机的另一端口接收到环路检测报文,可以判断出该接口产生物理故障或该交换机产生自环如图2所示。
图1 环路检测报文
图2 交换机产生自环
表1 检测报文结构说明
环路检测报文是由交换机发送,报文携带交换机自身MAC地址和相应接口的接口信息,目的MAC地址为BPDU MAC、广播或组播,这样就可以区别于其他交换机发出的检测报文,当交换机接口在接收到自己发送的检测报文后会进行比对,如果MAC地址是自己的MAC地址则说明网络中存在环路,如果报文中的接口信息同接收到报文的接口信息一致,则说明网络中存在单臂环路,如果不一致则说明网络中存在双臂环路。华为交换机环路检测报文结构说明,如表1所示。
启动环路检测后,一旦网络中有网络环路,交换机会发送告警和记录日志,并能根据管理员事先设置的处理动作使物理接口处于相应的管制状态,从而快速破坏二层网络环路,减小环路对交换机乃至整个网络的影响,接口被管制后仍会继续发送检测报文,当在设定的时间或默认的时间内再未接收到检测报文后就认为网络中的环路被消除了,这时被管制的物理接口会恢复为正常工作状态。
LDT-Type 检测报文的类型,包括协议号和子协议号两部分。其中,协议号取值为0x9998,子协议号取值为0x0001,表示是环路检测报文。
Port Information 发送检测报文的接口信息。
Flag表示Untagged报文或tagged报文,Untagged用于普通接口检测,tagged用于VLAN环境检测。
一是环路检测使能后需要发送大量检测报文来进行环路检测,会消耗大量的网络资源,如非排除故障最好关闭环路检测功能。二是因Eth-Trunk接口及其成员接口都不支持配置环路检测,不建议和生成树等协议共同使用。三是为减少环路检测报文发送数量和频率,可对发送环路检测报文默认周期适当延长。
使能环路检测命令
当交换机未划分VLAN时:
进入系统视图,在系统视图执行loopback-detect enable命令,使能所有接口的环路检测功能。如需在单个接口使能环路检测功能,方法如下:一是在系统视图执 行interface interfacetype interface-number,进入接口视图(interfacetype为接口类型,比如:GigabitEthernet 接 口、Vlanif接 口。interfacenumber为相应接口或VLAN 编号,比如:0/0/1、100等)。二是执行命令loopback-detect enable,在此接口使用环路检测功能。
表2 处理动作
图3 配置事例
当交换机划分VLAN时(对指定VLAN进行检测):
在系统视图执行interface interface-type interface-number命 令,进入VLAN接口视图。执行命令loopback-detect packet vlan xxx(xxx 为指定VLAN检测编号),配置对指定的VLAN进行环路检测。
配置检测报文的发送周期
执 行loopback-detect packet-interval xxx命令(xxx为设置的发送周期时间,默认为5秒),配置环路检测报文的发送周期。
配置环路检测处理动作
华为交换机环路检测处理动作有5种,如表2所示。
执行命令interface interface-type interfacenumber,进入接口视图。执行命令loopback-detect action { block | nolearn |shutdown | trap | quitvlan}(缺省情况下,环路检测对接口的处理动作为shutdown)。
如图3所示。
配置思路
为检测交换机A所在网络是否存在环路,可以在交换机A上的GE0/0/1和GE0/0/2上分别使能环路检测功能,并配置对VLAN 100进行环路检测,实现对交换机A所在网络环路检测。
配置步骤
图4 配置结果
图5 阻塞示意
图6 说明
刚配置完毕,在系统视图执行display loopbackdetect命令,可以看到配置结果如图4所示。
再等待一段时间,在系统视图执行display loopback-detect命令,可以看出接口GigabitEthernet 0/0/2被阻塞如图5所示,二层环路被破坏。
破坏交换机B和交换机C之间的链路,再过一段时间,发现链路中无环路检测报文,说明网络中无环路,如图6所示。
利用交换机环路检测功能,当网络中存在二层网络环路,可以快速发现二层网络环路,通过物理处理动作可快速破坏环路,减少中断时长,最大程度减少损失。