Linux 或 OpenBSD TAP 适配器是否会对数据包进行排队,或者如果我尝试在单个线程上处理传入的数据包,它是否会丢失数据包?我并不担心无法处理所有进入的数据包,但如果多个数据包在一个数据包上开始处理时立即进入,那么如果适配器没有内部队列,它可能会丢失一些数据包。
答案1
在阅读了 Linuxdrivers/net/tun.c
和 OpenBSD后sys/net/if_tun.c
,我得出的结论是它们都使用队列来处理数据包。
具体来说,Linux 使用 tun/tap 驱动程序中的队列,而 OpenBSD 使用预先存在的网络堆栈的队列。
我还没有手动测试队列功能。