man7iss/rosenpass-bench
GitHub: man7iss/rosenpass-bench
提供 Rosenpass 后量子密钥交换在 WireGuard 上的首次系统级性能基准测试及可复现脚本。
Stars: 0 | Forks: 0
# rosenpass-bench
[Rosenpass](https://github.com/rosenpass/rosenpass)(WireGuard 的后量子密钥交换)的性能基准测试。
首次发布系统级测量结果。在此之前,不存在 Rosenpass 在真实条件下的端到端基准测试。
## 结果
| 指标 | 值 |
|--------|-------|
| 单节点握手 | **76 ms** |
| 数据路径吞吐量开销 | **零**(通过 SIGSTOP 确认) |
| PSK 轮换对吞吐量的影响 | **无**(300 秒测量) |
| 50 节点握手(并行) | **619 ms**(12 ms/节点) |
| 100 节点握手(2 vCPU 满载) | **2,093 ms**(21 ms/节点) |
| 每节点内存占用 | **~560 KB** |
| MTU 1400 时的分片 | **正常**(13 ms) |
| McEliece 公钥大小 | 524,160 字节(460896 参数集) |
## 脚本
用于在任何安装了内核 WireGuard 和 Rosenpass 的 Linux 机器上重现基准测试的 Shell 脚本。
- `setup-topology.sh` — 创建两个网络命名空间,并建立内核 WireGuard 隧道
- `setup-rosenpass.sh` — 生成 Rosenpass 密钥,并在两个命名空间中启动守护进程
- `bench-baseline.sh` — 阶段 0:仅 WireGuard 的吞吐量与握手延迟
- `bench-rosenpass.sh` — 阶段 1:使用 Rosenpass 的吞吐量,300 秒轮换稳定性测试
- `bench-scaling.sh` — 阶段 2:具有 N 个节点的星型拓扑(用法:`./bench-scaling.sh 50`)
- `teardown.sh` — 清理所有命名空间和守护进程
## 环境要求
- Linux 内核 5.6+(WireGuard 模块)
- `wireguard-tools`、`iperf3`、`jq`
- [Rosenpass](https://github.com/rosenpass/rosenpass)(`cargo install rosenpass`)
- Root 权限(网络命名空间需要 `CAP_NET_ADMIN`)
## 硬件
基准测试运行于 Hetzner CX23(2 vCPU AMD EPYC,4 GB 内存),内核 6.8,Rosenpass v0.2.2。
博客文章:[man7iss.com/posts/rosenpass-wireguard](https://man7iss.com/posts/rosenpass-wireguard)
标签:Cutter, iperf3, Linux网络命名空间, McEliece, Rosenpass, Shell脚本, VPN安全, WireGuard, 加密算法评测, 可扩展性测试, 后量子密码学, 吞吐量测试, 密钥交换, 延迟测量, 性能基准测试, 抗量子计算, 点对点加密, 系统级测试, 网络基准测试