![TAP 适配器是否对数据包进行排队?](https://linux22.com/image/127863/TAP%20%E9%80%82%E9%85%8D%E5%99%A8%E6%98%AF%E5%90%A6%E5%AF%B9%E6%95%B0%E6%8D%AE%E5%8C%85%E8%BF%9B%E8%A1%8C%E6%8E%92%E9%98%9F%EF%BC%9F.png)
Linux 或 OpenBSD TAP 适配器是否会对数据包进行排队,或者如果我尝试在单个线程上处理传入的数据包,它是否会丢失数据包?我并不担心无法处理所有进入的数据包,但如果多个数据包在一个数据包上开始处理时立即进入,那么如果适配器没有内部队列,它可能会丢失一些数据包。
答案1
在阅读了 Linuxdrivers/net/tun.c
和 OpenBSD后sys/net/if_tun.c
,我得出的结论是它们都使用队列来处理数据包。
具体来说,Linux 使用 tun/tap 驱动程序中的队列,而 OpenBSD 使用预先存在的网络堆栈的队列。
我还没有手动测试队列功能。