UDP广播接收小优化

  • Linux 系统排查与优化

    • 查看当前缓冲区大小(默认通常很小,如 212992 字节): bash

      运行

      复制代码
      sysctl net.core.rmem_default  # 默认接收缓冲区
      sysctl net.core.rmem_max      # 最大接收缓冲区
    • 临时调高缓冲区(立即生效,重启失效): bash

      运行

      复制代码
      sysctl -w net.core.rmem_default=26214400  # 25MB
      sysctl -w net.core.rmem_max=52428800      # 50MB
    • 永久生效:编辑 /etc/sysctl.conf,添加上述两行,执行 sysctl -p 加载。

优化接收端 IP 分片重组缓冲区(核心)

Linux/Windows 默认的 IP 分片重组缓冲区较小,若大包分片到达不及时 / 数量多,会导致重组失败,表现为 "抓包能看到所有分片,但应用层收不到 UDP 包"。

(1)Linux 系统优化(临时 + 永久)

bash

运行

复制代码
# 1. 查看当前分片重组配置
sysctl net.ipv4.ipfrag_high_thresh  # 重组缓冲区高阈值(默认131072字节)
sysctl net.ipv4.ipfrag_low_thresh   # 低阈值(默认196608字节,注意:高阈值 < 低阈值是正常的)
sysctl net.ipv4.ipfrag_time         # 分片保留时间(默认30秒,即分片需30秒内全部到达)

# 2. 临时调高缓冲区(立即生效,重启失效)
sysctl -w net.ipv4.ipfrag_high_thresh=524288  # 512KB
sysctl -w net.ipv4.ipfrag_low_thresh=1048576  # 1MB
sysctl -w net.ipv4.ipfrag_time=60             # 延长分片保留时间到60秒

# 3. 永久生效(编辑/etc/sysctl.conf)
echo "net.ipv4.ipfrag_high_thresh = 524288" >> /etc/sysctl.conf
echo "net.ipv4.ipfrag_low_thresh = 1048576" >> /etc/sysctl.conf
echo "net.ipv4.ipfrag_time = 60" >> /etc/sysctl.conf
sysctl -p  # 加载配置
相关推荐
OKkankan15 小时前
深入理解linux进程
java·linux·c++
HABuo15 小时前
【linux线程(一)】线程概念、线程控制详细剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
路溪非溪15 小时前
BLE的广播、扫描和连接等工作机制总结
linux·arm开发·驱动开发
gjc59216 小时前
踩坑实录:MySQL服务器CPU爆高,元凶竟是SELinux的setroubleshootd?
运维·服务器·数据库·mysql·adb
我才是一卓16 小时前
linux 安装简易 git 服务端并使用
linux·运维·git
德彪稳坐倒骑驴16 小时前
MySQL Server 5.5 win端安装,安装SQLyog
运维·服务器
Wanliang Li16 小时前
AArch64虚拟化——virtio-mmio实现
linux·虚拟化·virtio·hypervisor·mmio
乔宕一16 小时前
windows SSH服务修改SSH登陆后的默认终端
运维·windows·ssh
嵌入式-老费17 小时前
vivado hls的应用(第一个axi接口的ip)
linux·服务器·tcp/ip
旺仔.29117 小时前
Linux系统基础详解(二)
linux·开发语言·网络