sing-box TUN 使用的 gvisor 和 system stack 均没有为了透明代理场景的性能、能效和内存占用优化。
在 sing-box 1.15 新的测试版中,我们重新实现了 TCP/IP stack,避免了不必要的分配和损耗;对直连连接转移到了独立的高性能 Reactor I/O 路径;实现了 Linux tun GSO 和 multi queue 路径,在提高性能的同时能够随核心而扩展(如果您真的转发超过单核心可处理的流量!)。
同时,也实现并改进了我们的曾经的 已知全网最早开源 的「通过 UTUN_OPT_MAX_PENDING_PACKETS 和 recvmsg_x / sendmsg_x 实现 utun 批量首发 」的性能优化(在此时间点前,网络上无法搜索到 UTUN_OPT_MAX_PENDING_PACKETS 在实际代码中的使用)。
与开源项目对比
测试代码:SagerNet/tun-bench
与商业项目对比
测试方法:使用 iSH 运行 iperf3 服务器:
cat /dev/location >/dev/null &
iperf3 -s
然后使用 Surge iperf3 工具测试上传 / 下载。
iOS 使 Network Extension 固定运行在在一个能效 CPU 核心中,因此,该对比反映了各实现在单能效核心约束下的峰值 TCP 转发性能,并间接反映其能效。