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.

审核编辑 :李倩

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

    关注

    41

    文章

    6188

    浏览量

    181560
  • Linux
    +关注

    关注

    88

    文章

    11817

    浏览量

    219550

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    这个电路干啥用的呢?它的工作原理是怎么样?

    很多工程师认为圈起来的这个电路不能工作,我刚开始看到这个电路也是这么认为的!这个圈起来的三极管(PNP)电路到底能不能工作呢,怎么样的工作原理呢?欢迎工程师们在评论区畅所欲言。 APA320-160W+160W.
    发表于 04-15 11:03

    433M无线模块的工作原理和距离

    一、工作原理  433MHz无线模块的工作原理是通过发射器和接收器之间的模拟信号进行无线通信。具体来说,它由发射器和接收器两部分组成,这两部分通过433MHz的模拟信号进行通信。发射器工作原理
    发表于 04-10 14:44

    无线充电器的工作原理核心

    无线充电器的工作原理核心
    的头像 发表于 12-06 10:19 1903次阅读
    无线充电器的<b class='flag-5'>工作原理</b>核心

    增量式编码器工作原理是什么?

    增量式编码器工作原理是什么?增量式编码器是一种通过输出脉冲信号来反映旋转位置变化的传感器,广泛应用于电机测速、位置控制等领域。其工作原理可从机械结构、信号产生、信号处理三个层面展开,增量式编码器
    的头像 发表于 09-29 11:00 2529次阅读
    增量式编码器<b class='flag-5'>工作原理</b>是什么?

    高压清洗机的工作原理是什么?

    欢迎。那么,您是否了解高压清洗机的工作原理是什么呢?科伟达作为高压清洗机的领先品牌,本文将带您深度解析其工作原理,帮助您更好地理解和使用这种设备。高压清洗机的技术原
    的头像 发表于 07-18 16:39 1989次阅读
    高压清洗机的<b class='flag-5'>工作原理</b>是什么?

    超声波清洗机的工作原理和清洗技术特点是什么?

    超声波清洗机简介2.工作原理3.清洗技术特点4.应用领域5.总结1.超声波清洗机简介超声波清洗机是一种利用超声波振动产生的高频声波来清洗物品的设备。它通常包括发生
    的头像 发表于 06-27 15:54 1678次阅读
    超声波清洗机的<b class='flag-5'>工作原理</b>和清洗技术特点是什么?

    晶体管光耦的工作原理

    晶体管光耦(PhotoTransistorCoupler)是一种将发光器件和光敏器件组合在一起的半导体器件,用于实现电路之间的电气隔离,同时传递信号或功率。晶体管光耦的工作原理基于光电效应和半导体
    的头像 发表于 06-20 15:15 1170次阅读
    晶体管光耦的<b class='flag-5'>工作原理</b>

    语音控制模块工作原理

    ,才能够发出正确的指令。 语音芯片控制模块是实现 “语音指令 - 设备响应” 的核心组件,其工作原理可拆解为信号采集、处理、识别及指令执行的完整链路,下面将以WTK69000为例给大家分享一下整个流程的工作原理。 一、语音信号采集
    的头像 发表于 06-17 11:49 1681次阅读
    语音控制模块<b class='flag-5'>工作原理</b>

    烟气检测仪是如何工作的?工作原理大揭秘

    如何工作的呢? 烟气检测仪的工作原理基于多种检测技术,常见的有电化学传感器技术、红外吸收技术等。 电化学传感器技术是一种应用广泛的检测方法。其核心是电化学传感器,它由电极、电解质和透气膜等部分组成。当
    发表于 06-16 16:10

    电压传感器是什么?工作原理是哪样

    传感器广泛应用于电力系统、工业自动化、电子设备测试、新能源汽车等领域,用于监测电压变化、保护电路安全、优化系统性能等。 电压传感器的工作原理 电压传感器的工作原理根据其类型不同而有所差异,常见的电压传感器类型及
    的头像 发表于 06-13 18:00 3503次阅读

    管道浮力平衡压袋(配重压袋)工作原理

    管道浮力平衡压袋(配重压袋)工作原理
    发表于 06-12 15:09 0次下载

    FLASH的工作原理与应用

    14FLASHFLASH的工作原理与应用OWEIS1什么是FLASH?Flash闪存是一种非易失性半导体存储器,它结合了ROM(只读存储器)和RAM(随机访问存储器)的优点,具有电子可擦除和可编程
    的头像 发表于 05-27 13:10 2403次阅读
    FLASH的<b class='flag-5'>工作原理</b>与应用

    GPIO配置的工作原理是什么?

    我使用 EZ-USB 配置实用程序,我想知道是否有人知道 GPIO 配置的工作原理。 例如,GPIO0 可以用作传感器复位,我知道这个 GPIO0 用于重置传感器,但我不明白的是选项用户 GPIO 例如GPIO 1可以是User GPIO0,这是什么意思呢?
    发表于 05-19 06:56

    水质常规五参数探头工作原理

    在水环境监测领域,水质常规五参数(pH、溶解氧、电导率、浊度、温度)探头对于准确把握水质状况意义重大。本文以DX-W100-1在线多参数水质传感器为例,深入剖析这些参数探头的工作原理。一、pH探头
    的头像 发表于 05-13 17:07 1626次阅读
    水质常规五参数探头<b class='flag-5'>工作原理</b>

    电动调压器的工作原理

    电压调压器是一种用于控制电路中电压的装置,其工作原理因类型而异,以下是几种常见电压调压器的工作原理
    的头像 发表于 05-12 13:46 1627次阅读
    电动调压器的<b class='flag-5'>工作原理</b>