1. 起源 #
自从了解到 tunnel 的优势后,它已经成为许多人替代传统 system proxy 的首选。然而,tunnel 模式有三种不同的网络堆栈实现,每种都有其特点和适用场景。
2. Tunnel 模式概述 #
Tunnel模式在网络层(第三层)接收流量,主要处理的是 TCP 和 UDP 协议的数据(虽然 ICMP 也是第三层协议,但通常不会去实现对它的处理)。接收到这些流量后,需要对可能被分割的数据包进行重组,以恢复完整的数据。
3. 三种网络堆栈 #
3.1 System #
- 解释:使用操作系统内核(kernelspace)创建 TCP 连接。
- 优点:效率最高,直接利用系统内核的网络栈。
- 缺点:兼容性可能受限于特定操作系统。
3.2 gVisor #
- 解释:在用户空间(userspace)实现的轻量级 IP 协议栈(lwIP)。
- 优点:兼容性最佳,可在各种环境中运行。
- 缺点:效率相对较低,因为在用户空间运行。
举个例子,在ios设备上用sing-box的tunnel模式,堆栈选择system不能在ios上正常启动,但是使用gVisor即可正常启动。这个实际上就是兼容性问题了。
3.3 mixed #
- 解释:TCP 使用 system 模式,UDP 使用 gVisor 模式。
- 优点:平衡了效率和兼容性。
- 缺点:实现复杂度增加,可能在某些特殊情况下表现不一致。
4.如何选择 #
个人建议,不管在什么环境下都按照 system>mixed>gvisor 这个顺序进行尝试
这样能保证性能最优,使用起来效果最佳。
5.鸣谢 #
sukka