FPGA智能网卡综述(4): 开源DMA

摘要:
使用DPDK软件NIC和基于FPGA的交换机评估NDP。NetFPGA等开源项目仅为基于FPGA的数据包处理提供函数库和平台,而不是专门为NIC开发设计的。此外,NetFPGA NIC参考设计使用XilinxXDMA内核,该内核不是为网络应用程序设计的。

https://zhuanlan.zhihu.com/p/359754525

Corundum

原版见FCCM2020

代码见:https://github.com/ucsdsysnet/corundum

这个专题主要对基于FPGA的智能网卡技术进行介绍,上篇介绍了NanoPU、PANIC、Tonic等,这次介绍“Corundum: An Open-Source 100-Gbps NIC ”,完全开源的100Gbps网卡,主要设计实现了一种可配置的DMA。高山留存阅读点滴。

网络接口控制器(NIC)是计算机与网络进行交互的关口。网卡在软件栈和网络之间形成一个桥梁,即定义了网络接口。网络接口的功能以及这些功能的实现都在迅速发展变化。这些变化是由不断增长的带宽/速率和支持高性能分布式计算和虚拟化的NIC功能的双重需求推动的,不断增长的带宽导致许多NIC功能必须用硬件而不是软件来实现。另一方面,为了实现高级的协议和网络体系结构,需要新的网络功能,例如对多个队列的精确传输控制。

为了满足新的网络协议和架构的开放式开发平台的需求,设计开发一个基于FPGA的高性能开放源码NIC原型平台Corundum,能够运行至少94Gbps,是完全开源的,连同它的驱动程序,可以使用在一个完整的网络协议栈。这种设计既具有好的移植型又紧凑,支持许多不同的设备,同时也为进一步定制(即使在较小的设备上)留下了充足的硬件资源。Corundum模块化设计和可扩展性允许协同优化的硬件/软件解决方案在系统中开发和测试高级网络应用程序。

动机和相关工作

现有NIC的网络接口功能设计关键在于硬件和软件之间进行功能划分。硬件NIC功能分为两大类。第一类由简单的卸载功能组成,这些功能可以从CPU中移除一些逐包的处理,例如校验和/哈希计算和分段卸载,这些功能使网络协议栈能够批量处理数据包。第二类包括必须在NIC上硬件中实现的功能,以实现高性能和公平性,这些特性包括流控制、速率限制、负载均衡和时间戳。

(1)ASIC NIC

传统的NIC的硬件功能实现于专有的专用集成电路(ASIC)中。再加上规模经济,这使得ASIC网卡具有高性能低成本特点。然而,这些ASIC可扩展性是有限的,添加新硬件功能的开发成本高周期长。为了克服这些限制,开发了各种智能NIC和软件NIC。智能网卡通常通过提供大量可编程处理核心和硬件原语,在网卡上提供强大的可编程性。这些资源可用于从主机上卸载各种应用程序、网络和虚拟化操作。然而,智能NIC不一定能很好地扩展到高性能,并且硬件功能可能受到限制。

(2)软件NIC

软件NIC通过在软件中实现网络功能,提供了最大的灵活性,绕过了大多数硬件卸载功能。因此,可以快速开发和测试新功能,但需要进行各种权衡,包括占用主机CPU周期和不一定支持线速处理。此外,由于软件固有的随机中断特性,开发需要精确传输控制的网络应用程序是不可行的。尽管如此,许多研究项目通过修改网络协议栈或使用内核旁路框架(如数据平面开发套件(DPDK))在软件中实现了新的NIC功能。

(3)FPGA NIC

基于FPGA的NIC结合了基于ASIC的NIC和软件NIC的优点:能够以线速运行,提供低延迟和精确计时,同时具有相对较短的功能开发周期。高性能、专有、基于FPGA的NIC也已有很多。例如,阿里巴巴开发了完全定制的基于FPGA的RDMA专用NIC,用于运行精确拥塞控制协议(HPCC)。商业产品也存在,包括Exablaze和Netcope等产品。

基于FPGA的数据包处理解决方案包括Catapult,它实现了网络应用程序卸载,FlowBlaze,它在FPGA上实现了可重构的匹配动作引擎。然而,这些平台将标准NIC功能留给了一个单独的基于ASIC的NIC,并且完全作为一个“bump-in-the-wire”模式来运行,不提供对NIC调度器或队列的显式控制。

其他项目使用软件实现或部分硬件实现。Shoal描述了一种网络体系结构,它使用自定义NIC和快速链路层交叉开关执行单元路由。Shoal是在硬件中构建的,但是只使用合成流量进行评估,没有与主机连接。SENIC描述了基于可伸缩NIC的速率限制。调度器的硬件实现是单独评估的,但系统级评估是在带有定制排队规程(qdisc)模块的软件中执行的。PIEO描述了一个灵活的NIC调度器,它是在硬件中单独评估的。NDP是数据中心应用程序的接收端驱动的拉模式传输协议。使用DPDK软件NICs和基于FPGA的交换机对NDP进行评估。Loom描述了一种高效的NIC设计,并用BESS软件对其进行了评估。

与基于ASIC的NIC类似,商用的基于FPGA的NIC往往是专有的,具有不能修改的基本“黑盒”功能。基本NIC功能的不能升级,严重限制了开发新网络应用程序的实用性和灵活性。

商用高性能DMA组件,如Xilinx XDMA核心和QDMA核心,以及Atomic Rules Arkville DPDK 加速核心,没有提供完全可配置的硬件来控制传输数据流。Xilinx DMA内核是为计算卸载应用程序而设计的,因此提供了非常有限的排队功能,并且没有简便方法来控制传输调度。Xilinx QDMA核心和Atomic Rules Arkville DPDK加速核心通过支持少量队列和提供DPDK驱动程序面向网络应用程序。然而,XDMA核心支持的队列数量是的2K队列,Arkville核心的队列达128个队列,这两个核心都没有提供精确控制数据包传输的简单方法。

NetFPGA等开源项目只为基于FPGA的数据包处理提供了一个功能库和平台,并不是专门为NIC开发而设计的。此外,NetFPGA NIC参考设计使用了Xilinx XDMA内核,它不是为网络应用而设计的。将NetFPGA板的参考NIC设计中的Xilinx-XDMA内核替换为Corundum,可以获得更强大、更灵活的原型平台。

FPGA智能网卡综述(4): 开源DMA第1张

Corundum别于所有这些项目,因为它是完全开源的,可以运行在一个标准的主机网络栈,在实际的物理链路。它提供了数千个传输队列和可扩展的传输调度程序,用于流的细粒度控制。这就为开发结合了硬件和软件功能的网络应用程序提供了一个强大而灵活的开源平台。

智能网卡专题:

FPGA智能网卡专题回顾:

SoC智能网卡综述(8):Lynx - 极术社区 - 连接 AIoT 开发者与生态服务

FPGA智能网卡介绍(7)FairNIC

FPGA智能网卡介绍(6)HostSDN

FPGA智能网卡介绍(5):NICA

FPGA智能网卡介绍(4):Corundum

FPGA智能网卡介绍(3):Tonic

FPGA智能网卡介绍(2):Panic

FPGA智能网卡介绍(1):NanoPU

免责声明:文章转载自《FPGA智能网卡综述(4): 开源DMA》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue,element列表大数据卡顿问题,vue列表渲染慢,element表格渲染慢,表格渲染慢(卡),表格全选卡,使用umy-uischtasks命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

原创翻译:iOS 应用程序 蓝牙后台运行

    默认情况下,普通的CoreBluetooth 任务中的大多数,无论是Central还是peripheral ,在后台或者挂起状况下都是无法进行的。也就是说,你可以通过宣布你的应用程序支持后台处理模式来允许你的一个应用程序把你从一个挂起状态中唤醒来执行某些蓝牙相关的事件。   即使你的应用程序支持一种或者两种CoreBluetooth后台执行模式,那...

launcher- 第三方应用图标替换

有时候我们感觉第三方应用的icon不美观,或者跟我们主题风格不一致,这时候我们希望换成我们想要的icon,那我们可以这么做(以更换QQ应用icon为例): 1.首先我们当然要根据自己的需要做一张替换icon了(图片我们不妨命名为qq) 2.接下来我们需要得到第三方应用的信息,可以通过GetDftlayoutXml.apk 工具获得 具体步骤如下 1)网上...

git 的安装以及使用:是一个开源的分布式版本控制系统,可以对项目进行版本管理。 早期是linux之父用来管理linux系统源代码的(linux是和windows一样操作系统 开源免费的操作

## 总结 - 学会使用基本的git命令 管理源代码- 学会去github创建仓库 并将代码上传到github的仓库 (有待完成 回家有网再push)- 了解本地的.git和服务器github的.git的关系 是两个仓库 一个是本地 一个是服务器 需要使用一句命令来关联 git remote add origin 远端的.git的地址- 了解github的...

关于设置微信分享标题,图标

公众号端: 1.你得有一个公众号(订阅号、服务号) 2.当前网站域名加进公众号的js安全域名中(这一步必须,注意域名格式,已经将文件放入指定位置,域名一般会绑定一个路径到哪个文件夹,所以得将文件放入对的位置,否则不能添加) 3.当前网站服务器的ip加进公众号的ip白名单中(这一步必须,在公众号当中添加,否则在获取access_token的时候会获取不到,这...

阿里巴巴常用的 12 个后端开发工具,建议你快快收藏!

作者:爱马仕_人员链接:https://www.jianshu.com/p/4d1a4606ef61 从手动编码到自动化,从重复工作到创新,开发人员工具随着技术的发展而不断发展。阿里巴巴集团和阿里巴巴云已通过开源发布和基于云的实施向公众提供其技术。通过在各种业务场景中的多年开发积累了这些技术。 本文介绍了一些阿里巴巴开发人员工具,希望它们可以帮助您的开发过...

requests + bs4 爬取豌豆荚所有应用的信息

1.分析豌豆荚的接口的规律 - 获取所有app的接口url 2.往每一个接口发送请求,获取json数据 解析并提取想要的数据 app_data: 1.图标 app_img_url 2.名字 app_name - 3.下载量 app_download_num - 4.大小 app_size - 5.简介 app_comment - 6.详情页url a...