自建VPN节点性能基准测试:从单线程到多用户并发场景分析
5/2/2026 · 2 min
测试环境与配置
本次测试采用两台阿里云ECS实例,分别作为服务端与客户端,配置均为2 vCPU、4 GB内存、5 Mbps带宽上限,操作系统为Ubuntu 22.04 LTS。服务端部署WireGuard与OpenVPN,客户端使用iperf3与flent进行网络性能测试。测试工具包括:iperf3(单线程/多线程吞吐)、flent(延迟与吞吐混合测试)、netperf(并发连接数)。
单线程性能基准
单线程场景模拟典型个人用户使用模式,如网页浏览、文件下载。测试结果如下:
- WireGuard:TCP吞吐量稳定在4.8 Mbps(接近带宽上限),UDP吞吐量4.9 Mbps,延迟增加约2 ms。
- OpenVPN (UDP模式):TCP吞吐量4.2 Mbps,UDP吞吐量4.5 Mbps,延迟增加约5 ms。
- OpenVPN (TCP模式):TCP吞吐量3.1 Mbps,UDP吞吐量3.5 Mbps,延迟增加约8 ms。
WireGuard在单线程场景下性能优势明显,主要得益于其精简的内核态实现与更少的加密开销。
多用户并发场景分析
模拟10个、50个、100个并发用户,每个用户运行一个iperf3 TCP流。测试结果:
- 10并发:WireGuard总吞吐4.7 Mbps,每个流平均0.47 Mbps;OpenVPN (UDP)总吞吐4.0 Mbps,平均0.40 Mbps。
- 50并发:WireGuard总吞吐4.5 Mbps,平均0.09 Mbps;OpenVPN (UDP)总吞吐3.2 Mbps,平均0.064 Mbps。
- 100并发:WireGuard总吞吐4.2 Mbps,平均0.042 Mbps;OpenVPN (UDP)总吞吐2.1 Mbps,平均0.021 Mbps。
WireGuard在多用户场景下仍能保持较高的总吞吐,而OpenVPN随着并发数增加,性能下降明显,主要受限于用户态进程调度与加密上下文切换。
延迟与抖动测试
使用flent进行RRUL(Realtime Response Under Load)测试,测量在背景流量下ICMP延迟的分布:
- 无VPN:平均延迟1.2 ms,抖动0.3 ms。
- WireGuard:平均延迟3.5 ms,抖动1.1 ms。
- OpenVPN (UDP):平均延迟6.8 ms,抖动2.5 ms。
- OpenVPN (TCP):平均延迟12.4 ms,抖动5.6 ms。
WireGuard在延迟与抖动控制上显著优于OpenVPN,尤其适合实时应用如VoIP与在线游戏。
优化建议
- 协议选择:优先使用WireGuard,除非需要兼容老旧客户端。
- 内核调优:调整net.core.rmem_default与wmem_default至262144,提升吞吐。
- 多核利用:WireGuard支持多队列,可绑定不同CPU核心处理不同隧道。
- QoS配置:使用tc工具对VPN流量进行优先级标记,保障实时流量。
结论
自建VPN节点性能受协议实现、并发模型与系统调优影响显著。WireGuard在单线程与多用户场景下均表现出色,是当前自建VPN的首选方案。OpenVPN在兼容性上有优势,但需注意其性能瓶颈。建议根据实际用户规模与业务类型,结合测试数据进行选型与配置优化。