【背景介绍】
新疆某企业网络部署为核心-汇聚-接入的典型三层架构,网络拓扑如下:
配置规划大致如下:
- 所有管理设备为VLAN100网段,即交换机PVID均配置VLAN100;
- 核心上起多个VLANIF接口,不同部门划分对应VLAN;
- 核心和汇聚交换机均启用RSTP,互联口VLAN全透传;
- 汇聚上联口VLAN全透传,下联口仅透传部门归属VLAN;
- 接入层PoE交换机不支持生成树,上下联口仅透传部门归属VLAN。
近期公司网管发现整个网络突然出现断网的问题,异常时无法ping通核心交换机的各个VLANIF接口。本以为是核心交换机故障,发现重启了设备后依然存在问题,由此来看排除设备原因,可能是存在环路导致整网瘫痪?但是现场所有交换机已经启用了RSTP啊!为何无法破环,我们来一起看下吧~
【基础排查】
首先我们需要了解典型的环路拓扑:
图1 典型环路类型如上图,为3种典型拓扑。一般来讲,排查环路的方案有2种:
- 初级方法:物理拔线。看拔掉哪个接口后恢复正常。但一般情况下这种排查方式很痛苦,仅适用于1个环,多个环的情况下没法准确判断;
- 通用方法:查看端口的报文接收速率找环路口。广播&组播包疯狂骤增的端口会存在环路,对于交换机我们只需要看入口方向(RX)即可。
如果仅存在1个端口RX方向广播&组播骤增,说明该端口下联链路成环(如图1的类型2);
如果存在多个端口RX方向的广播&组播骤增,说明这些端口都成环,有n个端口异常就有≥n/2个环(如图1的类型1、类型3)。
记住一句话:多个环的情况下物理拔线没用,得看端口RX方向收包统计确认(破环协议STP、环路保护的基本思想)。
【环路排查】
第一步、查找环路端口
由于核心交换机web挂了,故串口进入核心交换,查看各个端口下的数据统计:
通过数据,很快我们就发现了1/0/16端口存在大量的RX异常,表现如下:两次敲命令时间<1s,核心交换机收包增长组播包收进了75W个包;广播包收进了12W8千个包。这个端口下至少有1个环,并且要注意:这是一个下联汇聚的Trunk全透传口,环路可能存在于不同的VLAN!
第二步、查找其他环路端口
我们继续排查核心的其它物理端口是否有环路,发现其它端口RX均无异常(没有报文骤增),所以基本确定就是1/0/16下联网络造成的环路,导致大量的DHCP、ARP、LLDP等组播&广播包冲击核心交换机CPU将其搞死。
由于仅1个口RX异常,大概猜测为类型2的拓扑致环:
判断禁用1/0/16端口基本就能恢复业务使用。
第三步、验证环路端口影响
进一步验证1/0/16造成的影响,于是将核心交换机该端口禁用:
禁用此端口后终端就能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环路,于是现场“顺藤摸瓜”找到产品部所在的接入交换机确定了环路线路:
实景如下,整改后恢复。
【疑惑解答】
问题1:上述网络中核心和汇聚均启用RSTP,为何还存在VLAN30环路?
Re:其实很好理解,规划的VLAN配置是这样的:
如上图规划:汇聚发出的BPDU不带tag,进入接入层SW会被打上PVID=100(PVID值按照管理网段统一配置)。
但接入交换机仅允许30通过,故BPDU被丢弃不会被环回去,因此汇聚交换机下联口无法阻塞。解决方案就是改掉接入交换机PVID为30,能环回透传BPDU即可。
问题2:VLAN30环路为什么会影响到其他VLAN上网?
Re:VLAN30发生环路后大量的报文冲击核心CPU会将其搞宕机,如果VLAN10、20本地局域网互访是没问题的,但上网流量需要经过核心,核心死了自然无法正常上网。
暂无评论内容