0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FDIR简介与工作原理

FPGA之家 来源:FPGA之家 作者:Guo, Junfeng 2022-07-31 10:37 次阅读

FDIR简介

CPU单核时代,数据包经由网卡接收后均被送往唯一的CPU进行处理。随着多核时代到来,出现了负载均衡问题(某些core过载,而另一些core空载的情况)。为解决该问题,RSS(Receive Side Scaling)技术先通过hash操作将数据包发送到不同的core上进行中断处理,然后再经由core间转发将数据包发送到运行目的应用所在的core上。虽然负载看似在多core上均衡了,但由于hash的抗碰撞特性,大量数据包会被送到了不匹配的core上,因而数据包的core间转发成为性能瓶颈。

e5593392-106a-11ed-ba43-dac502259ad0.png

Intel 以太网Flow Director技术(Intel Ethernet Flow Director,简称FDIR)将数据包定向发送到对应应用所在core上,从而弥补了RSS的不足,可用来加速数据包到目的应用处理的过程。在新一代Intel 以太网800系列网络适配器中,FDIR有了更多的规则空间硬件资源和更灵活的配置机制。

e56746c6-106a-11ed-ba43-dac502259ad0.png

如同Linux提供了纯软件实现的RSS版本一样,Linux也提供了纯软件实现的ATR(Application Targeting Routing)模式的Flow Director,称为RFS(Receive Flow Steering)。尽管功能上等效,但是RFS无法达到FDIR对网络性能的提升效果,因为它必须通过某个core来执行调度数据包,而且该core大概率不是目的应用所在的core。因此,ATR模式的FDIR可被看作RFS的智能卸载硬件加速方案。

e57156c0-106a-11ed-ba43-dac502259ad0.png

FDIR工作原理

在网络适配器硬件接收到数据包时,硬件Parser会通过Parse Graph状态机对数据包进行解析提取出一些重要信息(如数据包类型)并填充在该数据包的descriptor中;

e57b4220-106a-11ed-ba43-dac502259ad0.png

硬件Profile Chooser根据数据包的PTYPE、Flag位、所属VSI等信息生成Profile ID;硬件Field Extractor根据该Profile ID提取出对应的Field Vector;根据mask寄存器中的信息,对Field Vector中有效字段(word)进行mask操作;根据Input Set寄存器中Field Vector到Input Set的映射关系,生成FDIR的Input Set。

e58e767e-106a-11ed-ba43-dac502259ad0.png

基于数据包提取出的Input Set,FDIR会查表进行精确匹配和优先级判断,从而确定出对应的action。常见的action包括:1)Drop:根据FDIR表中对应规则的DROP Flag位决定是否drop该数据包。2)To Queue:将数据包发送至目的Queue,或在进行hash操作后发送至Queue Group(也叫Queue Region)中的某个Queue。3)Counter:对匹配的数据包进行统计计数,计数的方式有:基于个数、基于byte数据量、基于个数和byte数据量。

其中,FDIR匹配准则依据包括:1)Input Set向量域;2)数据包所属的VSI;3)数据包所匹配的Profile。

e59ba2b8-106a-11ed-ba43-dac502259ad0.png

FDIR使能机制

Intel 以太网800系列网络适配器最多可支持16k条FDIR规则,这些规则空间资源在硬件中是以 “独占( guaranteed )” + “共享( best effort )” 的形式进行分配的。其中,每个PF享有固定大小的独占资源,该独占资源又可被各PF下的VF分配使用;除去所有PF享有的独占资源,其余的FDIR空间资源都作为共享资源,被所有PF及其VF所共享使用。例如,在4端口25G E810中,每个PF独占资源有512,共享资源有14k(16k-512*4=14k)。独占和共享资源的配置,是通过写寄存器实现的。

e5a58dfa-106a-11ed-ba43-dac502259ad0.png

对FDIR Queue的初始化同样是通过写寄存器完成的,包括:分配FDIR VSI硬件资源;映射TC LAN Queue到VSI;初始化FDIR哈希表;初始化FDIR统计计数器;分配并初始化TX/RX LAN Queue;绑定中断到VSI Queue;分配并初始化Ring Buffer;分配FDIR Profile资源等。

在DPDK中,FDIR规则可以通过rte_flow的组织形式runtime进行配置。每条规则中包含了必要的 Pattern和Action信息。

e5b2526a-106a-11ed-ba43-dac502259ad0.png

紧接着基于rte_flow规则中解析出的Input Set,分配Profile ID;注册HW Profile;创建PTYPE Group的映射关系;在TCAM中添加对应的Field Vector。再之后driver根据解析出的Input Set的值分配Queue的Descriptor并对LAN+FDIR Descriptor进行填充,然后构建相应的FDIR Dummy Packet。

e5bfb2f2-106a-11ed-ba43-dac502259ad0.png

通过FDIR TX Queue将规则实体以特定的格式发送给网卡的firmware,并返回处理的状态结果。

e5d07362-106a-11ed-ba43-dac502259ad0.png

其中,每个FDIR规则实体的内容是由64 bytes数据构成,由以下参数组成:1)从数据包中提取的参数:48 bytes的Input Set;数据包所匹配的Profile等。2)从软件Descriptor中接收到的参数:目的Queue;FDIR ID;数据包所属的VSI;统计计数器;控制相关的Flag位等。3)自维护的存储管理参数:PF/VF/VSI标志位;有效Flag位等。

FDIR应用场景举例

OVS Partial Offload:在HW中设置带有mark ID的FDIR规则,匹配的数据包会在对应的descriptor中记录对应的mark ID,上层的OVS可以基于此mark ID直接对该数据包的SKB进行相应的处理,从而省去了大量的解析查询等操作并大大提升了性能。

e5dc14ec-106a-11ed-ba43-dac502259ad0.png

结语

当前VMware或Microsoft并不支持FDIR功能。FDIR更适合在纯“裸机(bare metal)” 上的Linux应用程序中提升网络性能,特别是那些网络通信量极大、处理小数据包极多的应用程序。在那些看重网络性能的应用程序(例如Memcached)中,FIDR为以太网领域在高带宽、低延迟等方向提供了显着的性能增强。伴随的好处也包括降低CPU占有率、节省功耗等,因而更适合配合intel的高性能CPU使用。

e5ea7596-106a-11ed-ba43-dac502259ad0.png

参考资料

1. Columbia Park Ethernet IP Hardware Architecture Specification, Ethernet Products Group (EPG).

2. Introduction to intel Ethernet Flow Director and Memcached Performance, intel White Paper.

3. CVL Packet Processing, Qi Zhang.

4. DPDK Ethdev Foundation, Jingjing Wu, Beilei Xing.

5. Advanced AVF RSS & FDIR, Yahui Cao.

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5076

    浏览量

    166232
  • Linux
    +关注

    关注

    87

    文章

    10989

    浏览量

    206728

原文标题:基于Intel®以太网800系列网络适配器的FDIR功能及原理介绍

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    霍尔开关的工作原理及应用

    霍尔开关的工作原理及应用
    的头像 发表于 04-09 10:29 288次阅读
    霍尔开关的<b class='flag-5'>工作原理</b>及应用

    IGBT器件的结构和工作原理

    IGBT器件的结构和工作原理
    的头像 发表于 02-21 09:41 613次阅读
    IGBT器件的结构和<b class='flag-5'>工作原理</b>

    ev电机的工作原理是什么

    作为电动汽车的核心部件,电动机(EV电机)的工作原理是实现车辆驱动力的转换,将电能转变为机械能。EV电机的工作原理主要包括电磁感应定理、电磁场、电流控制等方面。下面将从原理、结构和工作过程三个方面
    的头像 发表于 01-08 10:04 486次阅读

    全面解析***结构及工作原理

    光刻与光刻机 ➢对准和曝光在光刻机(Lithography Tool)内进行。 ➢其它工艺在涂胶显影机(Track)上进行。 光刻机结构及工作原理 ➢光刻机简介 ➢光刻机结构及工作原理
    发表于 12-19 09:28 289次阅读
    全面解析***结构及<b class='flag-5'>工作原理</b>

    晶振的工作原理

    晶振的工作原理
    的头像 发表于 12-08 17:32 578次阅读
    晶振的<b class='flag-5'>工作原理</b>

    单片机中晶振的工作原理是什么?

    单片机中晶振的工作原理是什么?
    的头像 发表于 11-23 09:08 452次阅读
    单片机中晶振的<b class='flag-5'>工作原理</b>是什么?

    开关稳压器的工作原理和元件选择准则

    简介:本讲座将首先综术开关稳压器的基本工作原理,包括开关波形和元件选择准则;然后论述开关稳压器的控制方法;最后综述开关电容器变换器和线性稳压器。
    发表于 11-15 14:36 1次下载
    开关稳压器的<b class='flag-5'>工作原理</b>和元件选择准则

    锁相环路的工作原理

      简介:锁相环路的工作原理   §1-2 锁相环路的工作原理   锁相环路实质上是一个相差自动调节系统。为了掌握环境的工作原理,理解环 路
    发表于 11-09 15:16 0次下载
    锁相环路的<b class='flag-5'>工作原理</b>

    滚珠丝杆的工作原理是什么?

    滚珠丝杆的工作原理是什么?
    的头像 发表于 10-17 17:43 896次阅读
    滚珠丝杆的<b class='flag-5'>工作原理</b>是什么?

    逆变电路工作原理详解 逆变电路的基本工作原理

    逆变电路工作原理详解 逆变电路的基本工作原理 逆变电路是指将直流电变成交流电的电路。在现代电子技术中,逆变电路应用广泛,如电源的交流输出、家庭音响、笔记本电脑等等,逆变电路的工作原理是将直流电压通过
    的头像 发表于 10-16 15:42 2416次阅读

    励磁工作原理

      励磁工作原理是指在电磁设备中通过外加电流或磁场来增强设备中的磁场强度的过程。在电磁设备中,励磁是非常重要的步骤,它能够保证设备正常运行,并实现设备的预期功能。本文将从基本概念、工作原理和应用方面介绍励磁工作原理
    的头像 发表于 09-27 11:03 1882次阅读

    螺母的工作原理以及应用优势

    螺母的工作原理以及应用优势
    的头像 发表于 09-14 17:43 823次阅读
    螺母的<b class='flag-5'>工作原理</b>以及应用优势

    振弦采集仪的工作原理及应用范围

    岩土振动仪器:振弦采集仪的工作原理及应用范围 岩土振动仪器是研究岩土工程领域中振动特性的重要工具。振弦采集仪是岩土振动仪器中的一种,它是一种基于振弦理论的振动传感器,可以用来测量岩土地基中的振动特性
    的头像 发表于 09-11 10:52 516次阅读
    振弦采集仪的<b class='flag-5'>工作原理</b>及应用范围

    ABS系统的结构与工作原理

    ABS系统的结构与工作原理
    的头像 发表于 08-15 10:48 565次阅读
    ABS系统的结构与<b class='flag-5'>工作原理</b>

    FPGA工作原理简介

    来设置其工作状态的,因此工作时需要对片内RAM进行编程。用户可根据不同的配置模式,采用不同的编程方式。FPGA有如下几种配置模式:  并行模式:并行PROM、Flash配置FPGA;  主从模式:一片
    发表于 05-30 20:53