ranet3:基于策略路由的高性能 IPsec mesh SD-WAN
Show HN: Ranet3 – High performance policy routed IPsec mesh SD-WAN
StepBroBD 在 Hacker News 发布开源 SD-WAN 项目 ranet3,用标准 IKEv2、ESP、Babel 和 SRv6 构建策略路由的 IPsec mesh,用户态数据面单向吞吐达 8.39 Gbit/s,为 10 GbE 线速的 95%。
..::----::.. .:-++++++++++++++-:. :=+++-:.. ..:-+++=: :=++-. .-+-. .=++-. :::::: . .::. :++=. :+#@@@@@@@@#+: *@@@@= :++= -#@@%*+-::-+*%@@#- :@@@@@@ .++= .*@@#- -#@@*. .#@@@@* -++. .#@@= =@@#. -++: .++- *@@- :++: -@@* :++. .@@# -%@@@@%- #@@. .--: -++ .++: %@@@@@@% +@@: ++- -++ %@@@@@@% +@@: ++- :++. .=+-. -%@@@@%- #@@. .++: .++- :%@@@%: :++: -@@* -++. -++. =@@@@@= =@@#. .++- .++= +%@%+ -#@@*. =++. :++= =*+-::-+*%@@#- =++: :++=. .#@@@@@@@@#+: .=++: .=++-. :::::: .-++=. :=++-. .-++=: :=+++-:.. ..:-+++=: .:-++++++++++++++-:. ..::----::..
高性能 策略路由 IPsec 网状网络 SD-WAN
为什么选择 ranet3
标准协议
对等节点只需支持标准 IKEv2、ESP、Babel 和 SRv6。
互操作性已针对以下项目进行验证:
- strongSwan
- 使用 Ed25519 密钥的 IKEv2 和 ESP 会话
- BIRD
- 带 RTT 度量的 Babel 路由,逐条路由匹配
- Linux
- 内核 seg6local 会处理 ranet3 写入的 SRv6 头部
任何其他支持带 Ed25519 密钥的 IKEv2、Babel 和 SRv6 的路由器或交换机也应能互操作。
常见的网状 VPN 和 SD-WAN 工具(Tailscale、NetBird、ZeroTier、Nebula 等)只接纳运行其自身代理的节点,而 ranet3 可与它们在同一主机上并行运行。
延迟路由
Babel 会测量每条链路的往返时间,只要直连链路较慢,就会通过中继进行路由。
RTT 会持续测量,丢包和中断会计入链路。流量始终走最快路径,一旦直连链路重新变快,就会切回直连链路。
段路由
基于源和目的前缀的策略会将流量发送到选定的途经点,并从选定的出口发出。段路由在用户空间实现,即使在 XNU 内核不支持该功能的 macOS 上也能工作。
途经点可以按用户指定的任意顺序出现,并且可以重复,例如 A->B->C->B->D,其中 D 为出口。
基准测试
| 数据平面 | 运行于 | 协议与密码 |
|---|---|---|
| ranet3 | 用户空间 | UDP 中的 ESP,AES-256-GCM |
| wireguard-go | 用户空间 | WireGuard,ChaCha20-Poly1305 |
| WireGuard | 内核 | WireGuard,ChaCha20-Poly1305 |
| IPsec | 内核(xfrm) | UDP 中的 ESP,AES-256-GCM |
95%
在 10 GbE 载荷上限中,单向单流
8.84 Gbit/s 中的 8.39
1.6-2.1 倍
内核 WireGuard 吞吐量
全部 6 项测试
1.2-1.5 倍
wireguard-go 吞吐量
全部 6 项测试
1.91-4.96 ms
饱和状态下的 RTT p99
内核数据平面 0.85-2.51 ms
饱和状态下 3 次运行的中位数
正面比较
| 数据平面 | 吞吐量越高越好 | 每 Gbit/s 的 CPU 越低越好 | 延迟 p99 越低越好 |
|---|---|---|---|
| wireguard-go 用户态 | 1.2-1.5 倍 更好 | 0.8-0.9 倍 更好 | 0.2-1.0 倍 参差不齐 |
| WireGuard 内核 | 1.6-2.1 倍 更好 | 0.6 倍 更好 | 1.9-2.4 倍 更差 |
| IPsec 内核 | 1.8-3.9 倍 更好 | 1.1-1.7 倍 更差 | 1.6-2.0 倍 更差 |
每个范围都是 ranet3 的结果除以另一个数据平面在以下 6 项测试中的结果。
内核与用户空间
用户空间数据平面会将每个数据包复制到自己的进程中,通常预期会比内核数据平面慢。
| 1 流,Gbit/s | 单向 | 双向 | 单向线路占比 |
|---|---|---|---|
| 线路上限 (10 GbE) | 8.84 | 18.76* | 100% |
| 内核,2 次中最佳 | 5.35 | 7.46 | 61% |
| 用户空间,wireguard-go | 6.77 | 10.78 | 77% |
| 用户空间,ranet3 | 8.39 | 14.87 | 95% |
* 无隧道的普通 TCP
内核 WireGuard 单向保持在 5.1 至 5.4 Gbit/s。
内核 IPsec 保持在 4.0 至 4.7 Gbit/s,因为其单一流落在 1 个网卡接收队列上。
完整结果
| ranet3用户态 | wireguard-go用户态 | WireGuard内核 | IPsec内核 | |
|---|---|---|---|---|
| 1 流, 出 | 8.39 | 6.77 | 5.35 | 4.67 |
| 1 流, 入 | 8.37 | 6.95 | 5.10 | 4.44 |
| 1 流, 双向 | 14.87 | 10.78 | 7.46 | 4.67 |
| 8 流, 出 | 8.52 | 6.06 | 5.14 | 3.97 |
| 8 流, 入 | 8.48 | 6.72 | 5.12 | 4.06 |
| 8 流, 双向 | 15.79 | 10.33 | 7.41 | 4.10 |
| ranet3用户态 | wireguard-go用户态 | WireGuard内核 | IPsec 内核 | |
|---|---|---|---|---|
| 1 条流, 出 | 0.909 | 1.079 | 1.511 | 0.672 |
| 1 条流, 入 | 0.925 | 1.092 | 1.525 | 0.664 |
| 1 条流, 双向 | 0.898 | 0.996 | 1.504 | 0.525 |
| 8 条流, 出 | 0.996 | 1.213 | 1.740 | 0.845 |
| 8 条流, 入 | 0.990 | 1.182 | 1.748 | 0.866 |
| 8 条流, 双向 | 0.948 | 1.087 | 1.500 | 0.620 |
在“双向”行中,内核 IPsec 仅承载了所提供的 6 Gbit/s 中的 4.67 和 4.14。
| ranet3 用户 | wireguard-go 用户 | WireGuard 内核 | IPsec 内核 | |
|---|---|---|---|---|
| 1 条流, 出 | 2.01 | 2.10 | 1.07 | 1.04 |
| 1 条流, 入 | 1.91 | 2.18 | 0.85 | 1.23 |
| 1 条流, 双向 | 3.17 | 3.15 | 1.65 | 1.76 |
| 8 条流, 出 | 2.77 | 16.40 | 1.26 | 1.53 |
| 8 条流, 入 | 2.86 | 5.09 | 1.17 | 1.50 |
| 8 条流, 双向 | 4.96 | 7.69 | 2.48 | 2.51 |
设置
硬件
- 主机
- 2 台 Dell PowerEdge C6420
- 处理器
- Intel Xeon Gold 6130,16 核 32 线程
- 内存
- 192 GiB
- 网卡
- Intel X710
- 接口
- SFP+
- 带宽
- 每个方向 10 Gbit/s
- 交换机
- 两台主机均连接同一台 Dell S5296F-ON
软件
- 操作系统
- Debian 13
- 内核
- Linux 6.12.111
- wireguard-go
- 0.0.20250522
- wireguard-tools
- 1.0.20260223
- iproute2
- 7.1.0
- iperf3
- 3.21
方法
- 流量
- TCP,使用 cubic,内层 MTU 1400
- 流数
- 1 和 8
- 负载
- 吞吐量和延迟测试采用饱和负载,CPU 开销测试采用每个方向 3 Gbit/s
- 方向
- 每个方向单向以及双向同时
- 运行次数
- 3 次 10 秒运行的中位数,数据平面交错进行
- CPU 开销
- 所有数据平面均未绑核时,两台主机上 /proc/stat 中繁忙核心数之和
- 线路上限
- 采用 ESP in UDP 封装时单向 TCP 载荷为 8.84 Gbit/s,无隧道时双向为 18.76 Gbit/s
来源:Hacker News · ranet3.com