即将到来的 Linux 7.1 内核周期将停止支持 UDP-Lite。UDP-Lite 协议允许部分校验和,即使潜在损坏/损坏的数据包也能被传递给应用程序。自 Linux 2.6.20 以来,一直有 UDP-Lite 支持,但由于多年来一直存在的问题,内核现在计划停止支持它,清理网络代码可以为非 UDP-Lite 用户带来性能优势。
Google 的 Kuniyuki Iwashima 开始停止支持 UDP-Lite 代码。他解释了多年来未得到解决的问题以及从内核中移除 UDP-Lite 的性能优势:
2023 年,syzbot 发现了一个空指针解引用错误,该错误在 UDP-Lite 尝试在 UDP-Lite 和 UDP 的总内存使用量超过系统范围的阈值 net.ipv4.udp_mem 后尝试对 skb 进行收费时被触发。
由于这个阈值与 UDP 共享,如果任何实际应用在使用 UDP-Lite,这个错误很容易被触发;然而,只有 syzbot 才偶然发现了它。
这个错误自 2016 年以来一直存在,表明在那时 UDP-Lite 已经 7 年没有使用。
该错误在提交 ad42a35bdfc6(”udplite: 修复__sk_mem_raise_allocated()中的空指针解引用”)中得到了修复,并且我们添加了另一个提交 be28c14ac8bb(”udplite: 打印弃用通知”)来宣布弃用计划。
从那以后,没有人抱怨了,所以是时候正式退役 UDP-Lite 了。
这一系列首先移除了 IPv6 和 IPv4 的 UDP-Lite 套接字,然后逐步清理 UDP 堆栈中剩余的已死/不必要的代码。
通过从快速路径中移除 UDP-Lite 的一堆条件判断,在 AMD EPYC 7B12(Zen 2)64 核处理器平台上,udp_rr 有 20,000 个流时,pps 提升了 10%(13.3 Mpps -> 14.7 Mpps)。
[ 使用 FDO 时,基准值要高得多,变化量约为 3%,20.1 Mpps -> 20.7 Mpps ]”
根据这些信息,UDP-Lite 代码多年来实际上没有被使用过,放弃它可以为其他 UDP 工作负载带来一些可衡量的性能提升(每秒 +3~10% 的数据包)。
早在 2023 年就为 UDP-Lite 发布了弃用通知,要求在 2025 年移除它。由于没有投诉,现在进入 2026 年(并且已经超过了 2025 年的 Linux 6.18 LTS),现在是移除的时候了。

此合并现在在 net-next 中,计划在 Linux 7.1 中退役 UDP-Lite。
转自 Linux 7.1 To Retire UDP-Lite – Allows For Better Performance With Cleansed Code – Phoronix
Linuxeden开源社区