如果我正确理解了 RSS(接收方缩放),则传入的 UDP 和 TCP 数据包的 src/dst IP +端口组合将被散列,并且数据包将使用该散列值分发到可用的 RSS 队列中,使用某些映射hashCode modulo numQueues
- 事实上,其细节对于这个问题并不重要。
这样,一个 RSS 队列的数据包将始终由同一个核心处理。换句话说,一个队列意味着只有一个核心处理数据包。这听起来像是禁用 RSS,其目的是将内核中的数据包处理分发给多个核心。但还有其他方法可以禁用 RSS,在同一个 NIC 设置对话框中,或通过netsh
。
那么,我在英特尔和 AT 适配器的 NIC 设置中看到的设置有什么用呢?
顺便说一句,在我目前正在进行的 UDP 数据包丢失测试中,RSSQueues=1 显示的数据包丢失率与完全关闭 RSS 的数据包丢失率大致相同。相比之下,设置 RSSQueues=2 可以大大降低数据包丢失率。