网卡是如何将网络中的报文分发到不同的队列呢?
常用的方法有微软提出的RSS与英特尔提出的Flow Director技术,前者是根据哈希值希望均匀地将包分发到多个队列中。后者是基于查找的精确匹配,将包分发到指定的队列中。
1、RSS(Receive-Side Scaling,接收方扩展)
RSS就是根据如下“关键字”通过哈希函数计算出哈希值,再由哈希值对网卡队列数求余确定数据包放到哪个队列。
关键字是如何确定的呢?
哈希函数一般选取微软托普利兹算法(Microsoft Toeplitz Based Hash)或者对称哈希。
2、Flow Director技术是Intel公司提出的根据包的字段精确匹配,将其分配到某个特定队列的技术:网卡上存储了一个Flow Director的表,表的大小受硬件资源限制,它记录了需要匹配字段的关键字及匹配后的动作;
驱动负责操作这张表