网管对某一栋楼的汇聚交换机进行配置变更,要增加一台接入交换机,因为人员变多了,终端也就变多了,所以现有的网络和接入设备不能满足需求,需要新增一台接入层的交换机。
现网中新增一台接入交换机,这个配置是非常简单的。一般只需要将接入交换机上到机架,两根光纤连到汇聚交换机就搞定了。配置上都是将这个接入交换机所需要VLAN配上,再将接入交换机连接汇聚交换机的两个接口,或者一个接口配置成Trunk,搞定就好了。
然后为了保证这个链路的可靠性,需要从接入交换机到汇聚交换机配置一个链路聚合,配置也很简单。
刷完配置之后就回到了工位休息,而这个故障并没有马上出现。
不久后上班的人使用网络的时候才发觉,“啊?楼层交换机出现了故障!”,或者说才发觉当时“不能上网了!”
只是新增了一台设备,新增了一些配置,可这时候网络却出现了故障。
怎么分析这个故障?
展开来看下它的网络架构,网络架构其实就是传统的三层架构,核心连接汇聚,汇聚连接楼层接入交换机,简单吧?
只是说它的网络架构会用到堆叠这个技术。
它的核心交换机连接汇聚的时候,汇聚是两台做了堆叠,这边抛开核心交换机不看,两台汇聚交换机做堆叠,堆叠完成后,接入交换机上行两条链路,分别连到2台汇聚交换机。
虽然这边有2台汇聚交换机,但汇聚交换机在逻辑上是一台设备,因为他这两条链路上做了链路捆绑。链路捆绑也是堆叠的基本技术。因为用了堆叠这个技术,这样的一个拓扑,它其实就是一个无环的网络。
而汇聚是两台设备,那接入交换机只需要在连接下行的接口配上VLAN,连接下行终端——PC,只要做个VLAN划分,然后我们的上行接口,配置链路聚合,同时将这个上行的链路聚合口配置成trunk口,就这么简单的三个配置。
那这么简单的三个配置,为什么会导致这个网络出现环路?
当然,当时还不知道是环路。
网管第一反应不是怀疑环路的问题。
此时再看我们的第一个线索:无环网络。
以及第二线索:配置及其简单,只配了vlan,trunk、链路聚合这三个。
往下看第三个线索:设备无法远程登录。这该怎么理解?
实际上一般出现网络故障之后,一般人会采取应对做的第一步动作肯定是要远程登录到网络设备,进行配置查看,要看下配置对不对。因为都是刷上去的配置,所以第一步就是远程登录这台设备,可以登录汇聚交换机也可以登录接入交换机。但是试图登录的时候发现,上不去。没有办法登录到这两台设备上……
设备无法远程登录,通常会是什么情况?
它无法被ping通,无法对它talent,这应该有同学在工作中遇到过吧?
通常发生这种情况,如果设备没有办法ping通,你只要保证被路由没有问题,而设备却无法ping通,无法远程管理,这就说明它的CPU已经满了。
因为所有需要ping这台设备,需要直接访问这台设备的IP地址的所有报文,都是需要CPU来处理的。
ping或者talent这台设备,所有的远程报文都是需要CPU来处理的,这时候如果CPU飙到100%了,就会造成无法远程登录和管理。
这时候终于开始怀疑是不是网络环路了……
因为在二层网络里面,能够导致CPU 100%的情况,大概率是由环路导致的,所以基本上可以判断是一个环路。
但是为什么?为什么会出现环路?我命名配置的无环的!哪来的环路?
这时候要怎么办?只能跑现场了。
去现场一般来说你需要带上console和笔记本。
去设备的现场,一般通过console线远程或者直接连接到这个设备上,登录这个设备查看配置。
由于设备CPU 100%爆掉了,你如果通过console线登录设备,也会非常的卡,基本上你敲命令,过几秒钟才会有反应。
所以一般遇到环路这种问题,设备本身CPU满了,因为你很难对这个设备进行配置查看,也就很难排查。
所以当时用了个最笨的办法——拔线。
在汇聚交换机上,汇聚交换机所有连接接入交换机的这个口,一条条去拔线。
最后拔到新增的这台设备时发现网络恢复了,这时候基本上就可以定位到新增的这台交换机设备,它是存在问题的。
可配置明明这么简单,却出现环路了,离谱。
这个地方唯一有可能出现环路的是什么场景?
这里我直接告诉你,这是因为这里链路聚合的配置不对。他们在配置链路聚合的时候,只配了一端,只在汇聚交换机上刷了链路聚合的配置。
这里可以看出,汇聚交换机这两个口是捆绑在一起的,但下行的这台接入交换机,他的链路聚合没有配,也就是说,它是2个独立的口。
所以当时拔线拔到了网络恢复,我就登录进了设备查看配置。发现非常简单,只是漏了两条配置而已,在物理接口下漏配了两条链路聚合的命令,就这么简单。而就是这么简单的一个问题,就导致了这次的网络环路,这时候生成树是不生效的。
图片
其实也开了生成树,那为什么生成树不起作用?
因为对于汇聚交换机来说,只有一个口;而对于接入交换机来说,却存在独立的2个口。
只是从接入交换机发出的生成树BPDU报文,发到上行接口之后,汇聚交换机不会再从接口发出来。因为只有一个口,它是不会从这个接口再发出来的,所以这时候设备本身就不会认为网络有环路。于是就导致了,生成树这时候是没有作用的,即使你开了生成树也检测不到环路的。
后来把链路聚合的配置重新配上了,网络就恢复了。
其实就是一个非常简单的一个小的疏忽,就在刷配置的时候漏刷了2条命令,从而导致的网络故障。
实际上在现网中的网络故障里,50%以上都是人为的,基本上都是人为疏忽、配置变更导致的故障。由于设备本身的软件或者硬件出现问题而导致的故障是比较少见的。大部分都是人为的,要么配置配的不合理,要么规划不合理,才会导致这样或那样的问题。
对于环路来说,如果你的网络设备没有办法登录,那你只能用最笨的办法一根根去拔线,因为设备无法查看,非常卡。