智享技巧屋
第二套高阶模板 · 更大气的阅读体验

网络告警总说UDP丢包?这5个原因最常见

发布时间:2026-01-24 14:21:24 阅读:172 次

公司监控平台突然弹出告警:“UDP率超15%”,运维小哥抓着咖啡杯盯了十分钟屏幕,ping是通的,TCP服务也正常——可视频会议卡顿、IoT传感器数据断续、语音对讲时断时续,问题就出在UDP上。

UDP本身不保证可靠,但丢包太多就是真毛病

UDP没重传、没确认、没顺序保障,所以“偶尔丢几个包”不算异常;可一旦告警频繁触发,说明底层链路或配置出了实际问题,不是“UDP特性”能背锅的。

网卡驱动太老,发包直接被内核吞掉

某次升级完Linux内核后,安防摄像头的UDP流开始间歇性失联。查dmesg发现大量:

igb 0000:02:00.0: tx hang timeout, resetting adapter
换掉三年没更新的igb驱动,丢包率从12%直降到0.03%。老旧网卡驱动对高吞吐UDP帧处理乏力,尤其在千兆口跑满时容易丢弃发送队列里的包。

防火墙悄悄拦了UDP回包

不少安全软件默认开启“状态检测+UDP连接跟踪”,但UDP没有三次握手,很多防火墙靠超时机制模拟“连接”。当设备端UDP心跳间隔超过防火墙设置的UDP连接超时(比如默认30秒),后续回包会被当成非法包丢弃。检查iptables规则:

iptables -t raw -L PREROUTING -n | grep udp
若看到类似CT invalid日志,大概率是这里卡住了。

交换机QoS策略误伤业务UDP流

办公网里视频会议用的UDP端口(如5004/5005)常被归类到“低优先级流量”,而交换机QoS把这类包直接限速或丢弃。抓包对比:镜像口能看到源设备已发出UDP包,但目标设备收不到——十有八九是中间交换机做了无差别限速。登录交换机查:

display qos policy interface gigabitethernet 1/0/1
看看是否有针对UDP端口范围的remark或car策略。

应用层发包太快,本地socket缓冲区溢出

某IoT网关程序用sendto()每毫秒发一个800字节UDP包,而系统net.core.wmem_default只有212992字节。结果内核发送队列长期满载,新包进来直接被丢。临时缓解:

echo 4000000 > /proc/sys/net/core/wmem_max
长期得改应用逻辑,加节流或用环形缓冲区控速。

MTU不匹配,IP分片遇上禁用DF标志

跨VPN或SD-WAN传输时,出口MTU设成1500,但中间某段链路只支持1400,又恰巧应用设置了IP_DONTFRAG,那大于1400的UDP包直接被路由器静默丢弃,连ICMP Fragmentation Needed都不回。用mtr加-U参数实测路径MTU:

mtr -U -s 1420 192.168.10.5
如果从某跳开始全*,基本就是MTU断点。