一、故障背景
一位开发同事用办公后台的测试网段的用一台服务器写了个python脚本持续的向办公前台他自己的PC发udp包,一段时间后这个udp流量打到了整个办公前台二层的接入交换机上,使得整个二层瘫痪。
二、故障原因
由于测试发出的udp的包比较大,又是循环发送,导致这位开发同事的PC很快被打死,但是udp包是无连接的概念,因此依然会继续发送,一段时间后办公前台的汇聚交换机上这台pc的mac地址先老化,而ARP并未老化。这时这些udp流量达到办公前台汇聚后,可以查arp表查到对应的mac地址,但此时查mac表并找不到对应的接口,那么交换机默认会将这些udp流量向汇聚交换机的所有接口去泛洪,形成未知单播泛洪。由于我们办公前台汇聚用的是cisco4507,其引擎和板卡比较老,整块板卡16个port共享4G背板,等于在所有口流量都被打满的情况下,每个口只能抗250M,而这个UDP流量又比较大,所以导致这台45的所有下联口流量全部被打满,最终整个二层处于瘫痪状态。当然具体泛洪有多种情况,后面部分会详细分析。
三、未知单播泛洪的原理分析
下面通过一组实验来分析未知单播泛洪的原理: