Linux 7.1 将淘汰 UDP-Lite —— 通过清理代码实现更佳性能

发布: (2026年3月16日 GMT+8 18:41)
3 分钟阅读
原文: Hacker News

Source: Hacker News

背景

即将到来的 Linux 7.1 内核周期计划取消对 UDP‑Lite 的支持。UDP‑Lite 允许部分校验和,这样即使数据包可能已损坏或出现错误,也仍能交付给应用程序。自 Linux 2.6.20 时代起就已经有 UDP‑Lite 支持,但由于长期存在的破坏性问题以及为非 UDP‑Lite 用户提升性能的机会,内核现在决定将其淘汰。

弃用细节

来自 Amazon/AWS 的 Kuniyuki Iwashima 解释了多年未被注意的问题以及移除 UDP‑Lite 所带来的性能收益:

在 2023 年,syzbot 发现了一个空指针解引用 bug,当 UDP‑Lite 在 以及 UDP 的总内存使用量超过系统阈值 net.ipv4.udp_mem 时尝试为 skb 计费会触发该 bug。
由于该阈值与 UDP 共享,如果有真实的应用在使用 UDP‑Lite,触发该 bug 将非常容易;然而,只有 syzbot 偶然发现了它。
该 bug 自 2016 年起就已存在,说明 UDP‑Lite 在那时已经有 7 年未被使用。
该 bug 在提交 ad42a35bdfc6(“udplite: Fix NULL pointer dereference in __sk_mem_raise_allocated().”)中被修复,另一提交 be28c14ac8bb(“udplite: Print deprecation notice.”)宣布了弃用计划。
此后没有人提出异议,因此是时候正式淘汰 UDP‑Lite 了。

弃用过程首先移除 IPv6 和 IPv4 的 UDP‑Lite 套接字,然后逐步清理 UDP 栈中剩余的死代码/不必要代码。

性能影响

通过从快速路径中移除大量针对 UDP‑Lite 的条件判断,udp_rr 在 20 000 条流上实现了 10 % 的每秒数据包数提升(13.3 Mpps → 14.7 Mpps),测试平台为 AMD EPYC 7B12(Zen 2)64‑核处理器。

使用 FDO 时,基准值要高得多,提升幅度约为 3 %(20.1 Mpps → 20.7 Mpps)。

因此,UDP‑Lite 代码多年来未被使用,其移除能够为其他 UDP 工作负载带来可观的(+3 % – 10 %)性能提升。

时间线

  • 2023 – 添加弃用通知,计划在 2025 年移除。
  • 2025 – 发布 Linux 6.18 LTS;未收到任何投诉。
  • 2026 – 在 Linux 7.1 周期中正式移除。

合并参考

Linux retiring UDP-Lite

此合并提交net-next 中退役了 UDP‑Lite,并计划在 Linux 7.1 中合并。

0 浏览
Back to Blog

相关文章

阅读更多 »

Meta 不再放弃 Jemalloc

- Meta 认识到 jemalloc 作为高性能内存分配器在其软件基础设施中的长期收益。 - 我们正在重新聚焦 jemalloc,……

你好

在开发者社区中建立联系 各位开发者!作为在技术领域工作多时的人,我一直对协作感到惊讶……