使用STP协议,为的是解决环路问题,然而在特殊情况下,反而会导致链路被阻断,业务中断。
某日,一用户反应,两台核心之间出现异常现象,直连时不通,但是通过一台交换机中转就通了。
上图中,二层交换机本来是作为核心A的下级交换机,接了大量服务器,网关都在核心A上,核心A与核心B之间为三层连接,互指路由通讯。改造前的结构明显不合理,客户决定将核心直接互联,但是互联后,直连接口无法PING通。线缆,接口配置都已检查过均没有问题。
到达现场,首先依旧从线缆及接口配置检查开始,将笔记本配置为核心A地址与核心B互联,通;反之也通。排除线缆及接口配置问题。
第二步,在核心A上检查ARP表,空白,没有对端的ARP表项。
第三步,接口下无任何针对对端MAC的限制策略,没有IP+MAC绑定
第四步,检查STP状态,发现STP将核心A与核心B的互联口阻断。
直接原因找到,但是从眼前的拓扑结构来说,不应该阻断接口,换一种情况,如果核心A与核心B之间确实还有一条没有找到的线路,那么线路中间串一个二层交换机,为什么就不会阻断接口了,而且业务是正常的,没有出现被环路影响的情况。核心A与核心B之间是三层互联,使用路由通信,本身也就不会有二层环路。
下面再举个例子说明一下
两台交换机两个线互联,两边的G0/0/1口属于vlan10,两边的G0/0/2口属于vlan20,这种情况下是否是环路,如果开启STP会出现什么情况。
从实际效果来说,这不是环路,vlan10和vlan20内的广播报文是不会传到对方vlan内的,这也是划分vlan的主要目的之一。但是开启了STP后,是会阻断一个口的。
这里最关键的一点就是,STP报文与vlan无关,它是协议报文,不论接口下划分什么类型,放行或阻断什么vlan都不会阻碍它的传递。这也就解释了上图的现象。
那么返回最初的问题,接口被阻断的原因知道了,为什么中间串了二层交换机就正常了,其实也狠简单,那台二层交换机没有开启STP协议,收到STP报文后就直接丢弃了,所以核心A与核心B在STP这个层面里感知只有一条线路是互联的。
最后,那条不知道隐藏在哪里的线路依旧没有找到,也许那中间又串了几台交换机。这个故障其实是可以避免的,在进行网络设计及改造的时候,交换机之间在逻辑上应该要保证只有一条线路,可以多口进行捆绑。合理、规范的设计可以为后期的网络运维避免很多的疑难杂症,切记切记。