我一直在阅读关于NIC捕获数据包后发生的事情,越看越迷惑。
首先,我了解到,传统上,在NIC捕获数据包后,它会被复制到内核空间中的一块内存中,然后再被复制到用户空间供应用程序处理。但是我也读到了关于DMA的内容,其中NIC直接将数据包复制到内存中,绕过CPU。那么,NIC->内核内存->用户空间内存的流程仍然有效吗?此外,大多数NIC(例如Myricom)是否使用DMA来提高数据包捕获率?
其次,RSS(Receive Side Scaling)在Windows和Linux系统中的工作方式是否相似?我只能在MSDN文章中找到RSS的详细说明,其中介绍了RSS(和MSI-X)在Windows Server 2008上的工作原理。但是RSS和MSI-X的相同概念应该也适用于Linux系统,对吗?
谢谢。
问候, Rayne