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

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

3天内不再提示

FDIR原理介绍及应用场景举例

FPGA之家 来源:DPDK与SPDK开源社区 作者:DPDK与SPDK开源社区 2021-04-02 17:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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有了更多的规则空间硬件资源和更灵活的配置机制。

7df03fc8-92eb-11eb-8b86-12bb97331649.png

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

7e1715f8-92eb-11eb-8b86-12bb97331649.png

FDIR工作原理

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

7e5d5144-92eb-11eb-8b86-12bb97331649.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。

7ec7989c-92eb-11eb-8b86-12bb97331649.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。

7f17ba20-92eb-11eb-8b86-12bb97331649.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)。独占和共享资源的配置,是通过写寄存器实现的。

7f618128-92eb-11eb-8b86-12bb97331649.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信息。

7fb7aa44-92eb-11eb-8b86-12bb97331649.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。

8024afe0-92eb-11eb-8b86-12bb97331649.png

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

80863b2a-92eb-11eb-8b86-12bb97331649.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进行相应的处理,从而省去了大量的解析查询等操作并大大提升了性能。

结语

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

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

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

责任编辑:haq

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

    关注

    41

    文章

    5924

    浏览量

    179541
  • intel
    +关注

    关注

    19

    文章

    3506

    浏览量

    190571

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32L083有哪些应用场景

    CW32L083有哪些应用场景
    发表于 11-24 07:37

    请问CW32L011有哪些应用场景

    请问CW32L011有哪些应用场景
    发表于 11-17 06:25

    CW32L0系列都有哪些应用场景?有哪些优势?

    目前芯源的低功耗MCU比较火爆,就是CW32L0系列都有哪些应用场景?有哪些优势?
    发表于 11-14 06:03

    京东API接口的应用场景介绍

    )。这些接口基于RESTful架构,使用HTTP协议进行通信,数据格式通常为JSON,支持OAuth 2.0认证以确保安全性。下面从技术角度,详细介绍几个关键应用场景,包括其实现机制和优势。 1. 商品信息检索与展示 应用场景
    的头像 发表于 11-03 14:13 183次阅读
    京东API接口的应<b class='flag-5'>用场景</b><b class='flag-5'>介绍</b>

    1688 API接口的应用场景介绍

    、集成企业系统,并支持JSON或XML格式的数据传输。认证机制通常采用OAuth 2.0或AppKey/AppSecret方式,确保安全访问。以下从技术角度,我将逐步介绍1688 API的核心应用场景
    的头像 发表于 11-03 13:58 291次阅读
    1688 API接口的应<b class='flag-5'>用场景</b><b class='flag-5'>介绍</b>

    淘宝API接口的技术应用场景介绍

    JSON或XML,支持OAuth 2.0认证机制以确保安全性。开发者通过这些接口可以编程式地访问淘宝的商品、订单、用户等核心数据和服务。以下从技术角度,分场景介绍其典型应用,每个场景包括技术实现细节和实际价值。 1. 商品数据获
    的头像 发表于 11-03 13:49 164次阅读
    淘宝API接口的技术应<b class='flag-5'>用场景</b><b class='flag-5'>介绍</b>

    UWB应用场景

    鸿合智远|捷扬微-产品简介介绍:UWB应用场景
    的头像 发表于 05-12 10:05 737次阅读
    UWB应<b class='flag-5'>用场景</b>

    取样示波器的技术原理和应用场景

    取样示波器,也称为采样示波器,是一种重要的电子测量仪器,其技术原理和应用场景可以归纳如下:技术原理取样示波器的根本原理是利用等效取样技术,将周期性高频(或高速)信号变换为与原来信号波形相似的低频(或
    发表于 03-12 14:34

    频域示波器的技术原理和应用场景

    频域示波器,其主要技术原理基于信号的傅里叶变换理论,通过快速傅里叶变换(FFT)算法将时域信号转换为频域信号,从而进行频谱分析。以下是对频域示波器的技术原理和应用场景的详细分析:一、技术
    发表于 03-11 14:37

    数据记录仪的计数原理和应用场景

    数据记录仪是一种用于测量、记录和分析各种数据的设备,其计数原理和应用场景可以归纳如下: 一、计数原理数据记录仪的计数原理主要基于传感器技术、信号处理技术以及数据存储技术。具体来说: 传感器采集
    发表于 02-24 14:28

    meshtastic的应用场景介绍

    meshtastic的应用场景介绍
    的头像 发表于 02-21 12:02 1260次阅读
    meshtastic的应<b class='flag-5'>用场景</b><b class='flag-5'>介绍</b>

    敏捷合成器的技术原理和应用场景

    敏捷合成器,作为一种高性能的信号发生器,其技术原理和应用场景值得深入探讨。技术原理敏捷合成器的技术原理主要基于先进的频率合成技术和数字信号处理技术。它通常具有宽频率范围、快速建立和可编程的相位、频率
    发表于 02-20 15:25

    脉冲信号分析仪‌的原理和应用场景

    脉冲信号分析仪是一种用于测量和分析脉冲信号的精密仪器。以下是对其原理和应用场景的详细介绍:一、原理脉冲信号分析仪的工作原理主要基于电子测量技术和信号处理技术。当脉冲信号被分析仪的接收器接收后,信号
    发表于 01-23 14:00

    混合信号分析仪的原理和应用场景

    混合信号分析仪是一种集成度高、功能强大的电子测量设备,其原理和应用场景如下:一、原理混合信号分析仪由模拟部分和数字部分组成,用于混合信号的分析。其工作原理主要包括以下几个方面: 信号采样:混合信号
    发表于 01-21 16:45

    多用示波器的原理和应用场景

    多用示波器是一种功能强大的电子测量仪器,其原理和应用场景如下:一、原理多用示波器主要是利用电子示波管的特性,将人眼无法直接观测的交变电信号转换成图像,显示在荧光屏上以便测量。具体来说,当被测信号输入
    发表于 01-09 15:42