TCP – TAP性能

Linux操作系统。

使用tap设备和eth0这样的硬件会有性能损失吗?

目标是创build一个用户空间的TCP / IP堆栈,并尽可能地避免内核。

我想确保在水龙头设备上进行开发是正确的。

谢谢

由于评论权限不足,我将此发布为答案。

从我的经验来看,由于TCP的性质,通过TCP – tap的VPN在无线连接上最好不过了。 当切换到UDP时,没有更多的连接超时发生 – 甚至更好的tun设备。 我build议你在糟糕的networking连接下testingTCP和UDP,然后点击/ tun。

就在这里。 使用轻击设备会导致客户端进程和持有轻叩设备的进程之间的上下文切换。 这也会导致额外的副本,因为需要将数据从客户端进程复制到内核中,然后从内核复制到分接头中。

但是,Linux在上下文切换方面非常出色,并且内置caching副本相当便宜,所以开销可能足够小。 我build议你在用户空间中实现你的堆栈,使用tap,然后执行一些基准testing和分析,以决定是否值得将代码移入内核。