启用了RSTP之后整网环路排障实战案例

【背景介绍】

新疆某企业网络部署为核心-汇聚-接入的典型三层架构,网络拓扑如下:

图片[1]-启用了RSTP之后整网环路排障实战案例-编程社

配置规划大致如下:

  • 所有管理设备为VLAN100网段,即交换机PVID均配置VLAN100;
  • 核心上起多个VLANIF接口,不同部门划分对应VLAN;
  • 核心和汇聚交换机均启用RSTP,互联口VLAN全透传;
  • 汇聚上联口VLAN全透传,下联口仅透传部门归属VLAN;
  • 接入层PoE交换机不支持生成树,上下联口仅透传部门归属VLAN。

近期公司网管发现整个网络突然出现断网的问题,异常时无法ping通核心交换机的各个VLANIF接口。本以为是核心交换机故障,发现重启了设备后依然存在问题,由此来看排除设备原因,可能是存在环路导致整网瘫痪?但是现场所有交换机已经启用了RSTP啊!为何无法破环,我们来一起看下吧~

【基础排查】

首先我们需要了解典型的环路拓扑:

图片[2]-启用了RSTP之后整网环路排障实战案例-编程社

图1 典型环路类型如上图,为3种典型拓扑。一般来讲,排查环路的方案有2种:

  • 初级方法:物理拔线。看拔掉哪个接口后恢复正常。但一般情况下这种排查方式很痛苦,仅适用于1个环,多个环的情况下没法准确判断;
图片[3]-启用了RSTP之后整网环路排障实战案例-编程社
  • 通用方法:查看端口的报文接收速率找环路口。广播&组播包疯狂骤增的端口会存在环路,对于交换机我们只需要看入口方向(RX)即可。
图片[4]-启用了RSTP之后整网环路排障实战案例-编程社

如果仅存在1个端口RX方向广播&组播骤增,说明该端口下联链路成环(如图1的类型2);

如果存在多个端口RX方向的广播&组播骤增,说明这些端口都成环,有n个端口异常就有≥n/2个环(如图1的类型1、类型3)。

记住一句话:多个环的情况下物理拔线没用,得看端口RX方向收包统计确认(破环协议STP、环路保护的基本思想)。

【环路排查】

第一步、查找环路端口

由于核心交换机web挂了,故串口进入核心交换,查看各个端口下的数据统计:

图片[5]-启用了RSTP之后整网环路排障实战案例-编程社

通过数据,很快我们就发现了1/0/16端口存在大量的RX异常,表现如下:两次敲命令时间<1s,核心交换机收包增长组播包收进了75W个包;广播包收进了12W8千个包。这个端口下至少有1个环,并且要注意:这是一个下联汇聚的Trunk全透传口,环路可能存在于不同的VLAN!

第二步、查找其他环路端口

我们继续排查核心的其它物理端口是否有环路,发现其它端口RX均无异常(没有报文骤增),所以基本确定就是1/0/16下联网络造成的环路,导致大量的DHCP、ARP、LLDP等组播&广播包冲击核心交换机CPU将其搞死。

由于仅1个口RX异常,大概猜测为类型2的拓扑致环:

图片[6]-启用了RSTP之后整网环路排障实战案例-编程社

判断禁用1/0/16端口基本就能恢复业务使用。

第三步、验证环路端口影响

进一步验证1/0/16造成的影响,于是将核心交换机该端口禁用:

图片[7]-启用了RSTP之后整网环路排障实战案例-编程社

禁用此端口后终端就能ping通核心交换机了,其它端口下的终端也都网络恢复。

第四步、确认环路存在的VLAN

通过上述步骤已经找到了物理口1/0/16下环路,回到最初的问题:网络中核心和汇聚均启用了RSTP,怎么还会产生环路呢??要确定这个问题,我们得看下到底环路发生在哪个VLAN。由于1/0/16口是Trunk全透传口,确认哪个VLAN环路有两种方案:

  • 方法1:查看VLANIF接口的统计计数。突增的VLANIF接口即是环路VLAN,比如华为交换机支持,命令如下:
[Huawei]dis counters interface Vlanif 10
InboundInterface  Octets(bytes) Unicast(pkts) Multicast(pkts) Broadcast(pkts)
Vlanif10          0             0               0               0
OutboundInterfac  Octets(bytes) Unicast(pkts) Multicast(pkts) Broadcast(pkts)
Vlanif10          0             0               0               0
  • 方法2:禁用VLANIF接口排查。上述1如果不支持查看VLANIF计数,就挨个禁用掉对应的VLANIF接口对比物理口计数慢慢找,相较于方法1更麻烦一些。打个比方:
禁用VLAN10,1/0/16物理口计数骤增
禁用VLAN10、20,1/0/16物理口计数骤增
禁用VLAN10、20、30,1/0/16物理口计数停止
启用VLAN10,1/0/16物理口计数停止
启用VLAN20,1/0/16物理口计数骤增
通过以上步骤,基本确认环路发生在VLAN20和30接口

不幸的是,现场某K交换机不支持VLANIF计数,因此采用方法2“艰难”的找到环路发生在VLAN30下,排查确定是“类型2”的环路。

【解决方案】

通过排障分析定位问题:从核心交换机上定位是产品部VLAN30环路,于是现场“顺藤摸瓜”找到产品部所在的接入交换机确定了环路线路:

图片[8]-启用了RSTP之后整网环路排障实战案例-编程社

实景如下,整改后恢复。

图片[9]-启用了RSTP之后整网环路排障实战案例-编程社

【疑惑解答】

问题1:上述网络中核心和汇聚均启用RSTP,为何还存在VLAN30环路?

Re:其实很好理解,规划的VLAN配置是这样的:

图片[10]-启用了RSTP之后整网环路排障实战案例-编程社

如上图规划:汇聚发出的BPDU不带tag,进入接入层SW会被打上PVID=100(PVID值按照管理网段统一配置)。

但接入交换机仅允许30通过,故BPDU被丢弃不会被环回去,因此汇聚交换机下联口无法阻塞。解决方案就是改掉接入交换机PVID为30,能环回透传BPDU即可。

问题2:VLAN30环路为什么会影响到其他VLAN上网?

Re:VLAN30发生环路后大量的报文冲击核心CPU会将其搞宕机,如果VLAN10、20本地局域网互访是没问题的,但上网流量需要经过核心,核心死了自然无法正常上网。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称

    暂无评论内容