
ranet3 以用户态 IPsec 在多核 10GbE 测试中吞吐超过 Tailscale
来源标题:Beating Tailscale with Userspace IPsec
在 10GbE 直连两台主机上的基准测试中,ranet3 在所有饱和 TCP 测试里吞吐量最高,且 CPU 开销低于除 Tailscale 外的各 WireGuard 数据面。在数据包速率和 CPU 成本上,ranet3 落后于 NetBird 内核态与内核 WireGuard;在延迟方面,ranet3 逊于内核数据面。测试日期为 2026 年 11 月 1 日,每项取 10 次运行中位数。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
ranet3 基准测试 文档 联系 菜单 ranet3 关闭菜单 基准测试 文档 联系 主题 基准测试 测试于 2026 年 11 月 1 日。以下是 ranet3 与 wireguard-go、Tailscale、NetBird 用户态、NetBird 内核态、内核 WireGuard 及内核 IPsec 在两台通过 10 GbE 相连的主机上的对比结果。每项测试的结果取 10 次运行的中位数。延迟为 10 次运行汇总后 ping 的 RTT p99,ping 丢包率为这些 ping 中丢失的比例。正面对比 吞吐量 包速率 延迟 CPU 开销 内存 所有数据 测试环境 正面对比 在每个饱和 TCP 测试中,ranet3 承载的流量都最多。除对 Tailscale 的 6 项测试中有 1 项例外,其 CPU 开销低于每个 WireGuard 数据面。它在单向包速率上落后于 NetBird 内核态和内核 WireGuard,在 CPU 开销上落后于内核 IPsec,在饱和状态下的延迟上落后于各内核数据面。数据面 吞吐量 越高越好 包速率 越高越好 每 Gbit/s 的 CPU 越低越好 延迟 p99 越低越好 wireguard-go 用户态 好 1.2-1.6 倍 好 1.6-1.8 倍 好 0.9 倍 好 0.4-0.9 倍 Tailscale 用户态 好 1.3-1.6 倍 好 2.3-2.5 倍 0.9-1.0 倍 互有优劣 好 0.3-0.7 倍 NetBird 用户态 好 1.3-1.6 倍 好 1.7-1.9 倍 好 0.9 倍 好 0.5-0.9 倍 NetBird 内核态 好 2.2-2.7 倍 0.8-2.1 倍 互有优劣 好 0.6-0.7 倍 差 1.5-7.6 倍 WireGuard 内核态 好 1.6-1.9 倍 0.6-1.4 倍 互有优劣 好 0.7 倍 差 1.7-7.8 倍 IPsec 内核态 好 1.9-4.0 倍 1.0-1.2 倍 互有优劣 差 1.5-1.8 倍 差 1.6-7.0 倍 每个区间是 ranet3 的结果除以另一数据面在 6 项测试中的结果。中心刻度右侧的条形表示 ranet3 领先,采用对数刻度,从落后 8 倍到领先 8 倍,区间为实心,从刻度到区间的部分为浅色。吞吐量 用户态数据面会把每个数据包复制到自己的进程中,这是内核数据面可以避免的开销。ranet3 在一向保持在 10 GbE 上限,从 1 到 16 条流均如此;双向则达到 16.09 至 16.65 Gbit/s,而未加隧道时纯 TCP 可承载 18.77 Gbit/s。用户态 WireGuard 数据面和内核 IPsec 的吞吐量随流数增加而下降。内核 WireGuard 单向保持在 5.2 至 5.3 Gbit/s。单向 接收 Gbit/s,发出 越高越好 wireguard-go:1 条流 7.08,2 条流 6.94,4 条流 6.87,8 条流 6.68,16 条流 6.48 Tailscale:1 条流 6.72,2 条流 6.66,4 条流 6.52,8 条流 6.45,16 条流 6.41 NetBird 用户态:1 条流 6.83,2 条流 6.72,4 条流 6.59,8 条流 6.47,16 条流 6.26 NetBird 内核态:1 条流 4.04,2 条流 4.00,4 条流 4.04,8 条流 4.00,16 条流 4.00 内核 WireGuard:1 条流 5.33,2 条流 5.28,4 条流 5.27,8 条流 5.26,16 条流 5.19 内核 IPsec:1 条流 4.65,2 条流 4.57,4 条流 4.31,8 条流 4.03,16 条流 3.77 ranet3:1 条流 8.78,2 条流 8.80,4 条流 8.80,8 条流 8.78,16 条流 8.77 0 2 4 6 8 10 10 GbE 上限 8.84 ranet3 8.77 ranet3 8.77 wireguard-go Tailscale NetBird 用户态 NetBird 内核态 WireGuard 内核态 IPsec 内核态 1 2 4 8 16 流数 双向 接收 Gbit/s 越高越好 wireguard-go:1 条流 11.20,2 条流 10.95,4 条流 10.78,8 条流 10.45,16 条流 10.09 Tailscale:1 条流 10.91,2 条流 10.95,4 条流 10.55,8 条流 10.29,16 条流 10.15 NetBird 用户态:1 条流 10.84,2 条流 10.56,4 条流 10.40,8 条流 10.16,16 条流 9.90 NetBird 内核态:1 条流 6.38,2 条流 6.31,4 条流 6.45,8 条流 6.28,16 条流 6.19 内核 WireGuard:1 条流 8.44,2 条流 8.49,4 条流 8.54,8 条流 8.58,16 条流 8.32 内核 IPsec:1 条流 4.75,2 条流 4.62,4 条流 4.37,8 条流 4.12,16 条流 3.87 ranet3:1 条流 16.09,2 条流 16.22,4 条流 16.40,8 条流 16.65,16 条流 16.64 0 5 10 15 20 纯 TCP 18.77 ranet3 16.64 ranet3 16.64 wireguard-go Tailscale NetBird 用户态 NetBird 内核态 WireGuard 内核态 IPsec 内核态 1 2 4 8 16 流数 每个数据面的流量都到达 1 个网卡接收队列。在单向 1 条流时,内核 IPsec 的接收主机保持在 1.2 个繁忙核心,该队列的 softirq 为 1.0,而其他数据面将工作分散到 3.6 至 4.6 个核心。包速率 这些测试发送关闭 GSO 的 UDP,速率高于任何数据面所能承载的水平。在 64 字节单向时,ranet3 接收 0.32 Mpps,落后于 NetBird 内核态的 0.39 和内核 WireGuard 的 0.53,与内核 IPsec 的 0.31 持平。双向流量时,它在两种尺寸下都承载最多,分别为 0.62 和 0.52 Mpps,而内核 WireGuard 为 0.45 和 0.40,后者在单向领先。64 字节包 接收 Mpps,单向 / 双向 越高越好 单向,发出 双向 ranet3 用户态 0.32 / 0.62 wireguard-go 用户态 0.18 / 0.34 Tailscale 用户态 0.14 / 0.27 NetBird 用户态 0.17 / 0.33 NetBird 内核态 0.39 / 0.34 WireGuard 内核态 0.53 / 0.45 IPsec 内核态 0.31 / 0.54 0 0.2 0.4 0.6 1400 字节包 接收 Mpps,单向 / 双向 越高越好 ranet3 用户态 0.29 / 0.52 wireguard-go 用户态 0.17 / 0.32 Tailscale 用户态 0.12 / 0.23 NetBird 用户态 0.17 / 0.31 NetBird 内核态 0.33 / 0.25 WireGuard 内核态 0.40 / 0.40 IPsec 内核态 0.27 / 0.47 0 0.2 0.4 0.6 尺寸为内层数据包的大小,包含 IPv6 和 UDP 头。此负载下的繁忙核心数不能衡量单个数据包的开销,因为 iperf3 要求每个方向 10 Gbit/s,而通过每个数据面实际达到的速率不同。延迟 在饱和状态下,ranet3 的 RTT p99 是用户态 WireGuard 数据面的 0.3-0.9 倍,是内核数据面的 1.5-7.8 倍。在提供 3 Gbit/s 时,它降至 0.81-1.58 ms,为内核数据面的 0.5-1.9 倍。在 100 kbit/s 的 UDP 下,ranet3 在 7 个数据面中最高,为 1.04 ms,而 WireGuard 数据面为 0.92-0.99,内核 IPsec 为 0.38。1 条流 RTT p99,ms,单向发出 越低越好 100 kbit/s 3 Gbit/s 饱和,行末数值 ranet3 用户态 3.58 wireguard-go 用户态 5.45 Tailscale 用户态 5.29 NetBird 用户态 5.26 NetBird 内核态 1.26 WireGuard 内核态 1.15 IPsec 内核态 0.77 0.3 1 3 10 30 8 条流 RTT p99,ms,单向发出 越低越好 ranet3 用户态 8.60 wireguard-go 用户态 20.80 Tailscale 用户态 33.00 NetBird 用户态 13.10 NetBird 内核态 1.61 WireGuard 内核态 1.62 IPsec 内核态 1.22 0.3 1 3 10 30
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。