网络环路的定义-四川亿家天下网络科技有限公司

Website Home



        以太网中的交换机之间存在不恰当的端口相连会造成网络环路,如果相关的交换机没有打开STP功能,这种环路会引发数据包的无休止重复转发,形成广播风暴,从而造成网络故障。一天,我们在校园网的网络运行性能监控平台上发现某栋搂的VLAN有问题——其接入交换机与校园网的连接中断。检查放置在网络中心的汇聚交换机,测得与之相连的100BASE-FX端口有大量的入流量,而出流量却非常少,显得很不正常。然而这台汇聚交换机的性能似乎还行,感觉不到有什么问题。于是,我们在这台汇聚交换机上镜像这个异常端口,用协议分析工具Sniffer来抓包,最多时每秒钟居然能抓到10万多个。对这些数据包进行简单分析,我们发现其中一些共同特征。当时,我们急于尽快抢修网络,没去深究这些数据包的特征,只看到第1点就以为网络受到不明来历的SynFlood攻击,估计是由一种新网络病毒引起,马上把这台汇聚交换机上该端口禁用掉,以免造成网络性能的下降。故障排除为了能在现场测试网络的连通性,在网络中心,我们把连接那栋大楼接入交换机的多模尾纤经光电转换器用双绞线连到一台PC上,并将其模拟成那个问题VLAN的网关。然后,到现场找来大楼网管员,想让他协助我们尽快把感染了未知病毒的主机查到并隔离。据大楼网管员反映,昨天网络还算正常,不过,当时本大楼某部门正在做网络调整,今天上班就发现网络不行了,不知跟他们有没有关系。我们认为调整网络应该跟感染病毒关系不大。在大楼主配线间,我们把该接入交换机上的网线都拔掉,接上手提电脑,能连通网络中心的测试主机。我们确认链路没问题后,每次将剩余网线数量的一半插回该交换机,经测试没问题则如是继续下去,否则换插另一半,逐渐缩小怀疑有问题网线的数量。我们最终找到一条会引起问题的网线,只要插上这根网线,该大楼网络就会与模拟网关中断连接。经大楼网管员辨认,这条网线是连接昨天在做网络调整的那个部门的。他还说以前该部们拉了一主一备两条网线,应该还有一条,并亲自在那台交换机上把另一条找了出来。随意插上这两条网线中的一条,网络没问题,但只要同时插上,就有问题,哪有在一台交换机上同时插上两条网线才会激活网络病毒的SYNFlood攻击的?这时我们倒是觉得这种现象更像是网络中有环路。我们到了那个部门发现有三台非管理型交换机,都是串在一起的,然而其中两台又分别通过那两条网线与接入交换机相连,从而导致了网络环路。显然是施工人员对网络拓扑不清楚,当时大楼网管员有事外出,就自以为是地把线接错了,从而造成了这起网络事故。原因找到就好办了,只需拔掉其中一条上联网线即可恢复网络连通。经过一番周折,网络恢复了正常,但我们还一直在想,是什么干扰了我们的判断呢?故障分析一起典型的网络环路故障,用协议分析工具Sniffer抓了这么多的数据包,经过一番分析却没看出问题来。显然,第一眼看到大量的SYN包让我们产生了错觉,想当然地就以为是SYNFlood攻击。事后,我们就这起网络环路故障排除过程做了检讨,重新仔细地分析抓回来的这些数据包,据此解释一下前面提到这些数据包所具有的5个共同特征,以便今后遇到同类问题时能及时做出正确的反应。先看前4个特征:汇聚交换机是网络层设备,该大楼所属VLAN的网络层接口就设置在这台汇聚交换机上,出于实施网络管理策略的需要,对已注册或没注册的IP地址都进行了MAC地址的绑定。TCP连接要经过3次握手才能建立起来,在这里发起连接的SYN包长度为28字节,加上14字节的以太帧头部和20字节的IP报头,由Sniffer捕获到的帧长度共为62字节(不包含4字节的差错检测FCS域)。恰巧当时访问该VLAN的单播帧来自外网的TCP请求包,根据以太网桥的转发机制,通过CRC正确性检测后,因已做静态ARP配置,这台汇聚交换机会将该单播帧的源MAC地址转换成本机的MAC地址,其目的MAC地址依据绑定参数来更换,并重新计算CRC值,更新FCS域,经过这样重新封装后,再转发到那栋楼的接入交换机。再看最后1个特征:网桥是一种存储转发设备,用来连接相似的局域网。这些网桥在所有端口上监听着传送过来的每一个数据帧,利用桥接表作为该数据帧的转发依据。桥接表是MAC地址和用于到达该地址的端口号的一个“MAC地址-端口号”列表,它利用数据帧的源MAC地址和接收该帧的端口号来刷新。网桥是这样来使用桥接表的:当网桥从一个端口接收到一个数据帧时,会先刷新桥接表,再在其桥接表中查找该帧的目的MAC地址。如果找到,就会从对应这个MAC地址的端口转发该帧(如果这个转发端口与接收端口是相同的,就会丢弃该帧)。如果找不到,就会向除了接收端口以外的其他端口转发该帧,即广播该帧。这里假定在整个转发过程中,网桥A、B、C和D都在其桥接表中查找不到该数据帧的目的MAC地址,即这些网桥都不知道应该从哪个端口转发该帧。当网桥A从上联端口接收到一个来自上游网络的单播帧时,会广播该帧,网桥B、C收到后也会广播该帧,网桥D收到分别来自网桥B、C的这个单播帧,并分别经网桥C、B传送回网桥A,到此网桥A收到了该单播帧的两个副本。在这样的循环转发过程中,网桥A不停地在不同端口(这时已经不涉及上联端口了)接收到相同的帧,由于接收端口在改变,桥接表也在改变“源MAC-端口号”的列表内容。前面已经假定网桥的桥接表中没有该帧的目的MAC地址,网桥A在分别收到这两个单播帧后,都只能再次向除了接收端口以外的其他端口广播该帧,故该帧也会向上联端口转发。就每个单播帧而言,网桥A重复前面提到的过程,理论上,广播一次会收到21个帧,广播两次就会收到22个帧……广播到第n次就会收到2n个帧。总之,网桥A照这样转发下去,很快就会形成广播风暴,这个单播帧的副本最终会消耗完100BASE-X端口带宽。尽管在这期间上联端口会有许多数据帧在相互碰撞而变的不完整,令Sniffer捕获不到,但可以想象得到,这个单播帧的重复出现次数仍然会非常多。我们再次检查那些抓回来的数据包,几乎都发现有当时没有注意到的重复标志(RetransmissionofFramen,这里的n是整数,表示接收到的第几个帧,见图1)。按64字节包长来计算,以太网交换机的100BASE-FX端口转发线速可达144000pps。在这种网络环路状态下,Sniffer完全有可能每秒抓到10万多个包长为66字节的数据包。基于上述理由,由于当时那4台交换机(如图2所示)的桥接表中都没有该包的目的MAC地址,处于上游网络的这台汇聚交换机向该大楼发送了一个TCP请求包后,就会不断地收到由该大楼接入交换机转发回来的该TCP包的副本,而且数量非常多(形成大流量),然而,它并不会把接收到的这些包重发回去;Internet的网络应用是基于请求/应答模式的,只有发送/接收两条信道都畅通,才能进行端到端的通信。一旦本次网络应用中有一条信道被堵塞了,就会使得该应用因无法进行而结束。网络应用结束后,一般来说,发起请求一方不会就本次应用再次自动发出请求包。于是,在网络环路状态中普遍会有一条信道有大流量,另一条信道几乎没有流量的现象。因为VLAN有隔离广播域的功能,这些大流量不会穿越网络层,所以不会对汇聚交换机造成很大压力。事实上,由于这种网络环路是数据链路层上的故障,只涉及到源MAC地址和目的MAC地址,不管高层封装的是什么类型的包都有可能引起广播风暴。也就是说,当时用Sniffer抓到各种各样的数据包都是有可能的。网络环路也分为第二层环路和第三层环路,你是问哪个?所有环路的形成都是由于目的路径不明确导致混乱而造成的,例如第二层,一个广播信息经过两个交换机的时候会不断恶性循环的产生广播,造成环路而第三层环路则是原路由意外不能工作,造成路由通告错误,形成一个恶性循环例子:网络192.168.0.0/24--路由1--路由2正常192.168.0.0/24网络被路由1通告到路由2,当网络出问题不能达到的时候,路由1把192.168.0.0/24路由信息删除,但是路由2通告给了路由1,让路由1误以为路由2的那边能达到192.168.0.0/24网络,结果造成恶心循环(例子建立在RIP,IGRP等路由协议下,只有这两个协议会造成第三层环路)单位A子网网络平时一直能够正常工作,不过笔者发现最近A子网中的工作站无法访问单位局域网服务器了,经过一番仔细检查后,笔者看到A子网网络中新投入使用的交换机设备经常连接不上单位局域网中的核心交换机。考虑到局域网中其他子网中的工作站能够正常工作,为此笔者认为单位局域网中的核心交换机设备不存在任何问题,而A子网网络中新投入使用的交换机设备属于刚刚才拆封的设备,所以该设备出现故障的可能性也不是很大,于是笔者认为很可能是A子网中新投入的交换机设备与单位局域网的核心交换机之间连接发生了故障。经过现场仔细勘察,笔者发现A子网中的新交换机是借助多模光纤这种介质与局域网核心交换机直接相连的,而使用这种介质连接网络时发生连接故障的可能性相对要小一些;因此笔者首先想到了A子网中的新交换机会不会发生了“软”式故障,想到了这一点,笔者重新启动了一下新交换机设备,等到该设备重新启动稳定后,笔者尝试了从A子网来访问单位局域网的服务器,结果发现故障现象一切照旧。笔者不甘心,又将单位局域网的核心交换机重新启动了一下,并且在核心交换机启动的过程中,笔者仔细观察了该交换机控制面板中的信号灯状态,结果发现连接A子网新交换机的那个端口所对应的信号灯状态闪烁了几秒钟后就立即断开了,难道是网络连接线路出现了接触不良的现象?不得已,笔者又重新将怀疑的目光“瞄”向物理线路连接介质;由于这里使用的连接介质是光纤线缆,为此笔者通过排除方法依次对光纤转接头、光纤两端熔接头、光纤主干线缆以及光纤跳线等因素进行了逐一排查测试,结果没有找到任何可疑现象,只是在进行上面的排查测试时,偶尔看到A子网新交换机与局域网核心交换机之间能够连通,不过几秒钟后又立即断开了。有没有可能是A子网中的新交换机没有正确设置好工作参数呢?考虑到这个因素,笔者立即按下A子网中新交换机控制面板中的恢复按钮,将该设备的各项参数全部恢复到默认的出厂数值,之后又按照正确方法重新设置了各个网络参数,并且在执行了保存操作之后又重新启动了一下A子网中的新交换机设备。原以为这个新交换机重新启动稳定后,网络不通的故障能够自动消除,可是当笔者再次从A子网中的一台工作站上来尝试访问单位局域网服务器时,笔者发现A子网仍然不能够正常访问单位局域网服务器。在万般无奈之下,笔者偶然看到A子网中的新交换机上有一光纤跳线好象存在问题,于是笔者顺手将这根跳线拔了下来,同时仔细观察了新交换机控制面板中的信号灯工作状态,结果发现与局域网核心交换机直接相连的那个端口所对应的工作状态竟然恢复正常了,此时再尝试从A子网来访问单位局域网的服务器时,网络访问居然也正常了。为了证实A子网工作站无法访问单位局域网服务器的故障是否就是由这根跳线引起的,笔者再一次将它重新连接到A子网中的新交换机上,结果发现只要接上这根跳线,新交换机上控制面板中的Link端口信号灯就处于急剧闪烁状态,坚持不了几秒钟,对应的端口信号灯就会自动熄灭,此时我们会发现A子网工作站将无法访问单位局域网服务器。根据上面的故障现象,笔者毫不犹豫地认为这根跳线就是网络故障的罪槐祸首,于是笔者开始仔细查看这根跳线以及该跳线所连接的网络设备。结果,笔者看到这根光纤跳线与另外一台交换机的千兆模块相连;再看看另外一台交换机时,笔者竟然看到有两台无线AP设备同时连接到该交换机设备上了,将这两台无线AP设备中的任意一台移走后,A子网中的工作站立即就能正常访问单位局域网服务器了。很明显,造成网络不通故障的真正原因其实就是这两台无线AP设备。经过进一步排查,笔者看到这两台无线AP设备的模式按照道理都应该被设置成AccessPoint工作模式,可是不知道怎么回事,笔者发现其中有一台无线AP设备的工作模式已经被修改为AccessPointClient工作模式了。那样的话,与同一台交换机设备直接相连的两个无线AP设备无形之中又形成了无线桥接网络,这个网络导致了A子网中出现了网络环路,正是这个网络环路导致了A子网中的工作站无法访问单位局域网服务器。小提示:通过上面的故障,我们不难发现网络布线是多么地重要。从表面上来看,网络布线好象非常简单,其实它是讲究先进性、实用性、保密性、安全性和可靠性的,它属于一种系统工程。只有对网络布线有了充分的认识,才能引起足够的重视,才能在实际布线过程中舍得投入资金,让网线布置更为系统、规范和合理。只有系统地进行网络布线,才可以保证通信网络的灵活扩展性和以后的平滑升级性,还可以大大减轻日后的网络维护工作量,特别是能够大量减少持续投入的网络维护费用。进行网络布线,其实是为整个通信网络系统组建一个传输性能良好的网络平台,利用该网络平台,保证整个通信网络系统具有一定的成熟性、灵活性、开放性、通用性、安全性,同时又有非常好的性能价格比,比方说,在对整个楼层或者整个建筑进行系统布线时,只要合理规划、配置工作人员资源,就能使网络通信的维护费用降低到原来一半。对网线进行系统布置时,可以采用共用标准互边系统,来方便、快捷地对网络设备进行布置、安装、检测、调试,从而使组网单位对网络建设方面的投资能获得比较理想的效率回报。通过系统化、结构化地网络布线,可以让通信网络组成一个有多元化功能的星形物理结构,该结构几乎能适用于各种不同的拓朴结构要求,从而能保证组建好的网络有很广泛的适用性。因为这种网络结构,特别方便维护和扩展升级,只需在某些网络节点处,进行一些局部的变动,几乎不需移动什么线缆与设备。此外,在进行规划布线时,应按照先进性、实用性的原则来进行;网络布线中涉及到的各种技术,应采用开放的技术标准,以确保网络系统方便互联与扩展;当然,为了保证日后的良好扩展性,我们还应在布线过程中采用标准化的设计,选用标准化的网络设备和产品;为了确保网络的可维护性,我们在规划网络布线时,应该尽量采用模块化的设计原则,充分考虑网络维护的层次化、可视化,确保网络维护简单、易行。