网管员们都会有解决各种各样网络故障的经历,一般情况下稍微有些经验的网管员都能凭借着自己的技术知识解决大多数问题,但是有些时候一些奇怪的不同寻常的故障也会使一个有经验的网管员备感困惑,甚至因找不到问题的根源而使问题迟迟得不到解决。

笔者遇到过两次用户投诉网络时断时续的故障,着实让我头疼不已,虽然最终这些问题是解决了,但是我想需要认真总结经验教训,加深对问题的理解并找寻合理的对策。

一、网络环路引起的网络故障

通常有人投诉网络完全中断或不稳定而无法使用的时候,我们会从硬件软件两个方面分析,分别找到问题的可能原因,或者更换设备线路、或者调整网络配置。一般一台电脑出现此类故障时,问题可能出现在核心三层交换机、交换机、线路、用户终端之间的任何一个环节,但是如果一批电脑出现这样的问题就多半是网络设备的故障了。有一次便接到有个办公室这样的投诉,说网络每隔20分钟就要断一下严重影响工作,在排除交换机本身硬件故障(如状态灯不正常、所有端口指示灯不停亮灭等故障现象)、网线已经正常连接以后,正感奇怪,陆续又有其他不同地方的人申告网络不稳定,于是登录他们共同的上层的三层交换机,用dis log查看日志,发现有如下信息:
Loopback does exist on Ethernet0/33 vlan 137, please check it
显然是网络中有环路了,根据vlan信息很容易的找到了擅自连接交换机引起环路的人,原来我那天有事,没有及时帮他联网,而他又急着使用网络,就自己乱接,于是造成了这起故障。问题看起来是解决了,但是有2个令我困惑的问题:
1、我在这个网络几乎每台交换机(包括申告故障办公室的二层交换机)都设置了stp enable为什么没有发生作用?如果说是stp重新计算引起网络路由的不稳定,那最慢也应该几分钟就达到稳定态了啊。
2、引起交换机环路的位置与申告故障者根本就不在一个楼,虽然他们最终接入了同一个三层交换机,但是环路引起的阻塞不是应该只是发现环路的端口吗?怎么波及面这么广呢?
根源在于华为交换机默认每个端口都开放了环路检测功能(loopback-detection),对于下行端口,如果交换机发现某个端口有其自身的mac地址,就会认为此端口下有环路,默认情况下会将此端口设置为受控态,该端口不再学习mac地址并且其流量与其他端口隔离,以避免网络风暴影响其他端口。而设定了stp(stp/rstp/mstp)的网络,每个交换机相对的上行端口默认也是检测环路的,于是在网络有环路的时候,stp与环路检测机制就发生了冲突,因为环路检测机制会将发现环路的端口up/down,这会影响到stp协议报文传送,进而使得stp的计算结果未能将出现环路的端口discarding掉。而且这样的计算是全网的,会耗费交换机的大量资源并且引起端口的不断迁移,影响到全网的性能,所以就会出现前面所述的网络的动荡。
找到问题的症结就好办了,只要将交换机上行端口的环路检测功能关闭即可,进入端口态,执行undo loopback-detection enable,关闭干路的环路检测。
通过这个故障也明白了另一起故障的原因,当时也是同样的一台三层交换机下另一个方向的一对光电转换器坏了,使得三层交换机检测到该端口环路,也是影响到了整个网络,不同的是当时的情况是三层交换机下的网络完全中断,后来换了一对光电转换器就好了,因为故障解决了也就没有对该问题深究,结果造成了同样原因引起的故障,这也算是一个深刻的教训了。

二、网络病毒引起的网络故障

公司有一个三层交换机是专门连接各个基站的动环监控的,因为接入的晚,没有布放光纤直接接入核心路由器,而是暂时连接到附近的二层交换机上,网络一直也还稳定。
不过有一次接到申告说他们整个网络都中断了,因为设备比较重要所以非常紧张,赶紧现场检测。重做了网线、重启了机器,然后忽然莫名其妙就好了,虽然很困惑,但是也以为只是一个偶然的故障,以为是某个不经意的动作将它修复了,然后便把这个故障放在一边了。可是随后一两天断断续续的会出现同样的网络全断情况,而且非常随机,有时候断的时间长,有时候断的时间短,发生的时间也不固定。
于是检测CPU负荷、拔网线减小负载……,征求了各种意见,总总方法都使了还是效果不佳。终于,问题严重到与它相连的二层交换机也无法访问,终于在此时我们发现了原因。
原来交换机可以对端口下的广播包通过类如 broadcast-suppression 10(广播包占比不超过10%)加以限制,但是对多播包( multicasts)却没有限制的命令,由于网络中某台电脑感染病毒,大规模的发送多播包,造成相连网络的堵塞。也因此整个故障现象如此随机不可捉摸。经过对端口出入流量的检查,最终定位到一台双网卡的机器,迅速将其隔离故障随之消失。

总结

从以上类似的表象不同的原因这一点说起来,网络技术算得上是一门有一定技术含量的技术,但是理论知识只是基础,往往实践经验会使我们更迅速成长。所以事后我们应该及时总结,思考如何采用优化技术手段、完善管理制度等方法,使我们管理的网络更加稳定安全。就以上问题而言,我们在配置stp的时候可以采取将不参与stp计算的端口关闭stp功能、指定某台交换机为stp树根、启动根保护等等方法来加快stp的计算性能、提高网络的安全性,我们还可以通过规章考核明令禁止私拉乱接、禁止双网卡接入等不安全的行为提高整个网络的运维水平。
从另一方面说,如果每个网管员有一个很好的老师,就会有一个比较好的基础平台,可以学习到很多良好的习惯与有价值的技巧。如果身边没有这样的老师,就需要自己更多一点独立思考,时常从不同的角度想想怎样才可以更好的打造出更稳定更安全的网络。虽然有些问题会使人焦头烂额,但事实上每一个技术的难题都是一次难得的锻炼提高的机会,它会教给我们去更全面的思考、去关注容易忽视的细节,以免我们再次在同样的地方摔倒。当然我们也可以从杂志、网络各种渠道获得有益的息,给自己的技术提供充足的营养。但是任何时候都要有自己的独立思考与判断,特别在征求他人意见或网上求助的时候,我们一定要自己睁大眼睛分辨,免得走弯路。

文章如转载,请注明转载自:http://www.5iadmin.com/post/1055.html