回环概念与成因
网络回环听起来像理论概念,但实际工作中我遇到过好几次。说白了,就是一个数据帧在交换机之间绕圈,永远到不了目的地。你想想看,本来该送到服务器A的包,结果在交换机B和C之间来回传,直到网络资源被耗尽。
什么是网络回环
网络回环(Loop)是指二层网络中,两台或多台交换机之间存在多条物理路径,且没有启用生成树协议(STP)或其他环路保护机制。正常情况下,交换机通过MAC地址表转发帧。但一旦出现环路,就会出现几个连锁反应。
我16年在一家工厂调试网络时,就因为一根跳线误插到了同一台交换机的两个端口上,直接导致整层办公网瘫痪。当时还以为是核心设备坏了,查了半小时才发现是回环。从那以后,我养成了每次布线后先做环路测试的习惯。
广播风暴的形成
广播帧在环路中会无限复制。假设交换机A收到一个广播帧,会从所有其他端口转发出去。交换机B收到后也重复这个过程。更可怕的是——每经过一台交换机,帧的数量就翻一倍。短短几秒,网络带宽就会被填满。
我记得有个外包项目,客户说他们的监控视频每隔十分钟就卡死一次。我用Wireshark一抓包,广播帧占到了总流量的92%。现场排查发现,新装的无线AP的网线被塞错了孔位,形成了环路。拔掉那根线,整个世界都清净了。
MAC地址表震荡
MAC地址表是交换机转发报文的“大脑”。正常情况下一张表里每个MAC地址只对应一个端口。但环路出现后,同一个MAC的帧会从不同端口反复收到。交换机每收到一次就更新一次端口映射,这就叫MAC地址表震荡。
震荡的后果很直接:
交换机CPU忙着处理更新,无法及时转发正常数据;
MAC表不断刷新,有效的转发条目被错误覆盖;
单播帧变成“泛洪”,每个端口都收到不该收到的流量。
display mac-address | count(华为)或 show mac address-table count(思科),如果MAC表条目在几秒内激增后又减少,或者动态条目数量远超设备数量,基本可以判定存在MAC地址震荡。
| 现象 | 直接原因 | 典型判断指标 |
|---|---|---|
| 广播风暴 | 广播帧在环路中无限复制 | 广播帧占比>80%,端口流量持续饱和 |
| MAC地址表震荡 | 同一MAC从不同端口反复收到 | MAC表每秒更新次数>100次 |
| 单播泛洪 | MAC表频繁刷新导致正常条目丢失 | 大量未知单播帧出现 |
环路对网络的影响
环路不是小事。我曾经在一次故障复盘会上说:环路是二层网络中最隐蔽、最致命的问题,没有之一。它不像链路断开会直接告警,而是先让网络变慢、丢包,然后彻底瘫痪。影响分为几个级别:
- 性能下降: 可用带宽从100%降到近乎0,响应时间从毫秒级变成秒级甚至超时。
- 设备过载: 交换机CPU占用率飙升至90%以上,管理会话超时,无法远程登录。
- 连锁故障: 一台交换机的环路可以通过广播帧扩散到整个广播域,拖垮所有相连设备。
- 数据损坏风险: 同样的帧被复制多次,接收方可能收到重复包,造成应用层逻辑错误。
为了避免这些,我在架设网络时有一个原则:任何可能形成环路的物理链路,都必须启用STP/RSTP/MSTP。即使你确信只有一条链路,也要开启——人为误操作防不胜防。