acm-header
登录

ACM通信

研究突出了

技术展望:hXDP:轻而高效的包处理卸载


uni-core概念,说明

来源:盖蒂图片社

在很长一段时间里,网络被认为是系统中最慢的部分。即使在今天,我们的CPU运行的时钟速度是几吉赫兹,而我们的家庭网络可能仍然以每秒几十到几百兆的速度运行。然而,在有线系统世界中,情况远非如此。网络交换机每秒处理数十太比特,许多网络接口卡(nic)有一个或多个100G端口。突然之间,与来自网络的数据速率相比,CPU变慢了。

不出所料,弥合CPU和网络之间性能差距的解决方案要么基于软件,要么基于硬件。在接下来的论文中,作者提供了一个有趣的解决方案:采用一个基于软件的解决方案(Linux的eXpress Data Path-XDP),并将其卸载到硬件(现场可编程门阵列- fpga)。在这一点上,它实现了两个方面的最佳效果:易于采用和使用,并具有性能优势。

XDP为可编程包处理提供了一个安全的执行环境,同时在内核中运行。这与其他一些解决方案(如DPDK)形成了对比,后者使用内核绕过。在内核中运行提供了应用程序隔离和安全性的机制,以及更好的可管理性。XDP在eBPF虚拟机中运行它的程序,程序用(受限的)C编写并编译到eBPF。

NIC是包处理卸载的理想目标:它位于网络和CPU之间,可以实现高的包处理速率,更重要的是,它可以释放CPU上的周期。这种类型的网卡通常被称为智能网卡。基于FPGA的智能网卡被认为比其他类型的智能网卡更灵活,可以支持一系列定制的加速器架构。然而,FPGA编程需要专业知识,而且包处理解决方案往往会消耗FPGA上的大量资源。虽然现有的解决方案简化了FPGA开发并使用高级编程语言,但它们往往会限制用户可用的功能、限制性能或消耗大量硬件资源。

本文中提出的解决方案称为hXDP,主要关注两个目标:能够在基于fpga的网卡上高效地运行XDP程序,并尽可能少地消耗硬件资源。

通过使用XDP,作者将程序员从学习新的编程语言、设计范例或硬件架构中解放出来,并允许使用知名的编程模型。通过最大限度地减少硬件资源消耗,作者允许将NIC用于不仅仅是数据包处理,也就是应用程序特定的加速器。

值得注意的是hXDP的非目标。首先,hXDP不试图超越之前基于nic的工作的数据包处理速率。相反,它专注于提供与在CPU上运行相同或更好的性能。这种区别使我们能够采用需要固定数量硬件资源的执行模型。

第二个非目标是为FPGA-NIC提供透明的卸载解决方案。程序员应该仍然知道他们的XDP程序将在NIC上运行,但是他们维护XDP编程模型,就像在Linux中一样。

通过仔细的工作,作者对XDP指令集提供了有趣的见解,它节省了资源并优化了hXDP的编译器。为此,作者对指令集进行了缩减和扩展。减少来自于取消内核验证器检查的指令,而使用更便宜的硬件检查。扩展利用FPGA可编程性,例如支持三操作数操作。

hXDP作为FPGA的独立逻辑模块实现,这意味着它可以从FPGA- nic设计中添加或删除。以资源效率为目标,hXDP只消耗10%的FPGA逻辑资源(在中档FPGA上)和不到4%的内存。这为相同NIC内的其他加速器提供了足够的资源,正如所希望的那样。

hXDP性能优于部分高端CPU,运行频率为CPU频率的10%。此外,包转发延迟比使用CPU和基于soc的类似NIC低一个数量级。

考虑到hXDP在实际网络密集型应用(如防火墙或负载均衡器)中实现了优于CPU的性能,同时释放了CPU资源,很容易理解为什么这项工作如此有趣。作者探索了进一步改进的场所,如多核设计和使用更大的内存。结合迁移到ASIC或更高端的FPGA,几乎可以保证进一步的性能提高。

智能网卡的世界正在迅速发展,英特尔和NVIDIA等巨头推出了结合标准SoC架构、可编程管道和加速器的新解决方案。如果10年后回顾这项工作,看看流行的是什么:编程和使用的便捷性、原始性能,还是两者兼而有之,那将是一件非常有趣的事情。

回到顶部

作者

诺亚Zilberman是英国牛津大学工程科学系计算基础设施小组的负责人和副教授

回到顶部

脚注

要查看随附的论文,请访问doi.acm.org/10.1145/3543668


版权归作者所有。
向所有者/作者请求(重新)发布权限

数字图书馆是由计算机协会出版的。版权所有©2022 ACM, Inc.


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
文章内容:
Baidu
map