点击上方蓝字
关注我们吧
FDIR简介
在CPU单核时代,数据包经由网卡接收后均被送往唯一的CPU进行处理。随着多核时代到来,出现了负载均衡问题(某些core过载,而另一些core空载的情况)。为解决该问题,RSS(Receive Side Scaling)技术先通过hash操作将数据包发送到不同的core上进行中断处理,然后再经由core间转发将数据包发送到运行目的应用所在的core上。虽然负载看似在多core上均衡了,但由于hash的抗碰撞特性,大量数据包会被送到了不匹配的core上,因而数据包的core间转发成为性能瓶颈。
Intel® 以太网Flow Director技术(Intel® Ethernet Flow Director,简称FDIR)将数据包定向发送到对应应用所在core上,从而弥补了RSS的不足,可用来加速数据包到目的应用处理的过程。在新一代Intel® 以太网800系列网络适配器中,FDIR有了更多的规则空间硬件资源和更灵活的配置机制。
如同Linux提供了纯软件实现的RSS版本一样,Linux也提供了纯软件实现的ATR(Application Targeting Routing)模式的Flow Director,称为RFS(Receive Flow Steering)。尽管功能上等效,但是RFS无法达到FDIR对网络性能的提升效果,因为它必须通过某个core来执行调度数据包,而且该core大概率不是目的应用所在的core。因此,ATR模式的FDIR可被看作RFS的智能卸载硬件加速方案。
FDIR工作原理
在网络适配器硬件接收到数据包时,硬件Parser会通过Parse Graph状态机对数据包进行解析提取出一些重要信息(如数据包类型)并填充在该数据包的descriptor中;