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  # 加载配置
相关推荐
贵沫末7 小时前
Ubuntu——常用软件安装
linux·运维·ubuntu
Doraemomo7 小时前
Linux内核驱动开发——中断与定时器
linux·运维·驱动开发
2301_808414387 小时前
Linux中动静态库的理解
linux·运维·服务器
分布式存储与RustFS8 小时前
模型 checkpoint 放对象存储:分片上传、断点续传与残留清理
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
M78佐菲8 小时前
ARM学习笔记(11)
linux·arm开发·笔记·嵌入式硬件·学习
M78佐菲8 小时前
ARM学习笔记(10)
linux·arm开发·笔记·嵌入式硬件·学习
半仙白桑9 小时前
内核篇第十五讲:system-V共享内存
linux·共享内存·shmget·shmat·shmdt·shmctl
一条破秋裤9 小时前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维
可涵不会debug9 小时前
第一次学 LangGraph:用一个快递案例搞懂 State、Node、Edge 和 compile
服务器·数据库·mysql
s65166549610 小时前
IDT和GDT是什么
linux