You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于L4端口PBR规则的内核PMTU更新机制是否存在问题?

UDP PMTU管理与L4端口路由规则的逻辑问题

发送带DF标志UDP报文的路由逻辑

当发送携带DF(禁止分片)标志的UDP报文时,内核协议栈会使用包含UDP源端口(sport)和目的端口(dport)的flowi4结构体执行fib_lookup路由查找。因此,若系统配置了基于L4端口的ip rule,不同L4端口的UDP报文可能匹配不同的路由规则,最终使用不同的下一跳。

ICMP FRAG_NEEDED报文处理的路由疏漏

当收到类型为UNREACH FRAG_NEEDED的ICMP报文时,会进入UDP的err_handler处理流程。该流程会执行路由查找以获取原报文输出时对应的dst_entry,但此时构建的flowi4并未设置UDP的sport和dport字段,仅基于IP层信息进行路由匹配。这会导致返回的dst_entry可能与发送原UDP报文时使用的条目不一致,进而使PMTU更新无法关联到正确的路由条目,最终PMTU更新失效。

判断结论

你的判断完全准确,这属于Linux内核的一个bug场景。内核在处理ICMP分片需求报文时,没有复用原UDP报文的L4端口信息来构建路由查找所需的flowi4,忽略了基于L4端口的路由规则对路由结果的影响,导致PMTU更新作用到了错误的路由条目上,无法解决后续报文的分片问题。


内容的提问来源于stack exchange,提问作者Romain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:16:10