yyhhyy's blog

yyhhyy

Tunnel三种模式的区别

493
2024-08-21

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.鸣谢

狐狐🦊