我正在开发一个基于 Linux 的 VPN 应用程序。该应用程序将建立到多个目的地的基于 TLS 的自定义连接。客户端机器会将流量路由到运行此 VPN 应用程序的 Linux 机器。
我打算使用 tun/tap 设备来获取流量。由于我们将承受大量负载,因此我们的目的是使用多线程方法,其中多个工作线程将处理与不同位置的 VPN 连接。
我的问题是关于事物的 tun 接口方面。让每个工作线程分配一个 tun 接口,然后使用内核路由表将适当的流量路由到每个 tun 接口会更有效(甚至可能)吗?
或者......只使用一个主工作线程,它将数据包从单个 tun 接口中拉出,然后将这些数据包分发到每个工作线程以发送到适当的 VPN?
我认为第二种方法会导致瓶颈,但比有关设置的多个接口更易于使用。
然而,第一种方法避免了在主线程到工作线程之间传递消息,并且路由回源 tun 接口是自动的。
建议?