参数是什么
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 钳制,而不是长期依赖加大重组缓冲来兜底。