首页/系统/Linux 内核与性能调优速查/net.ipv4.ipfrag_high_thresh 分片重组内存
网络栈调优98 条

net.ipv4.ipfrag_high_thresh 分片重组内存

IP 分片重组占用的内存上限(配套 low_thresh 触发回收);隧道、VPN、大数据包路径出现分片时关注其压力。

参数是什么

net.ipv4.ipfrag_high_thresh 限制 IP 分片重组队列可占用的内存上限,ipfrag_low_thresh 是开始回收的下限:占用超过高阈值后,新到达的分片会被丢弃,同时内核回收重组队列。分片通常意味着链路 MTU 不匹配,或隧道、VPN 封装带来额外开销。因此这个参数既是容量设置,也是「该去修正 MTU/MSS」的信号。

基本信息

参数net.ipv4.ipfrag_high_thresh 与 ipfrag_low_thresh
默认量级高阈值约 4MB、低阈值约 3MB(随内核与内存规模变化)
相关参数net.ipv4.ipfrag_time(分片保留时间)、ipfrag_max_dist
观测计数/proc/net/snmp 的 Ip 行中 ReasmReqds、ReasmOKs、ReasmFails
辅助诊断tracepath/mtr 探测路径 MTU,iptables 的 MSS 钳制规则
适用平台Linux 各发行版(IPv4 分片重组)

典型使用场景

  • 隧道或 VPN 场景出现分片重组失败与丢包
  • UDP 大报文或特定存储协议在路径 MTU 不匹配时表现异常
  • ReasmFails 持续增长,需要确认是否与分片有关
  • 验证调整 MTU/MSS 后分片数量是否明显减少
  • 评估分片类攻击的防护配置时确认上限与回收行为

查看与诊断

查看与诊断
sysctl net.ipv4.ipfrag_high_thresh net.ipv4.ipfrag_low_thresh net.ipv4.ipfrag_time  # 三个相关参数
grep -A1 '^Ip:' /proc/net/snmp  # 查看 ReasmReqds、ReasmOKs、ReasmFails 计数
# 间隔一分钟再采一次,比较 ReasmFails 增量判断是否持续失败
tracepath -n 203.0.113.10 2>/dev/null | tail -5  # 探测路径 MTU,发现 PMTU 黑洞
ip -s link show eth0 | head -20  # 查看网卡收发错误与丢包统计
iptables -t mangle -S 2>/dev/null | grep -i mss | head  # 是否已有 MSS 钳制规则

计数与参数读法

计数/参数含义判读要点
ReasmReqds收到的分片数量与业务特征对比判断是否异常
ReasmOKs成功重组的数量与请求量比例的直观体现
ReasmFails重组失败次数增长意味着分片被丢弃
ipfrag_high_thresh重组内存上限过高会增加资源耗尽风险
ipfrag_time分片保留时间过长会放大内存占用时间
分片重组是常见的资源耗尽攻击面:调大上限的同时要评估防护策略(限速、过滤、合理 MTU),否则等于给攻击留出更多空间。
治本方向是消除分片:隧道与封装要预留封装开销,必要时在边界设备做 MSS 钳制,而不是长期依赖加大重组缓冲来兜底。

易错点

  • 只调大上限不做防护评估:为资源耗尽类攻击留下更大的余量
  • 把 ReasmFails 当成普通丢包:它指向重组失败,与 MTU 强相关,方向不同
  • 忽略隧道与封装开销:本机 MTU 配置正常也可能出现分片
  • 调整后不验证:只改参数不对比分片计数增量,无法确认是否改善
  • sysctl -w 不持久:重启后回到默认值,问题在维护窗口后复现

数据来源与参考

  • Linux 内核 Documentation/admin-guide/sysctl/net.rst
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌