是什么让 SmartNIC 实现了智能化?

作者: Scott Schweitzer,来源: Xilinx赛灵思官微微信公众号

智能手机似乎迎来了“智能”化的时代,并掀起了物联网(IoT)革命。那么,是什么让 SmartNIC 实现了智能化?是硬件、编程还是其他什么?

网络接口卡(NIC)自 20 世纪 80 年代中期第一台 PC 推出后不久便开始投放市场,但我们在过去的几年里才看到 SmartNIC 的出现。这一市场上的每家公司对 SmartNIC 产品的细分市场都有着不同定义。最基本的定义就如同一个可编程的 NIC 一样简单。

反之,其他公司则通过在其实现方案中使用大量芯片和固件来使这一概念复杂化。不过,归根结底,通常人们会将其定义成一个 NIC,它包括向客户开放额外的可用计算资源,以及利用这些资源所必需的开源工具。

智能手机刚刚问世时,许多人都已经拥有手机。然而十年后,几乎所有人的手机都是智能手机。为什么会这样?这并不是因为人们都厌倦了《贪吃蛇》,想换成《糖果粉碎传奇》玩一玩。他们看到了一个集手机、相机和移动计算功能为一体的平台所能带来的价值,在这个平台上,他们可以管理社交媒体、通过电子邮件与办公室保持联系,以及做许多十年前未曾想过的事情。绝大多数智能手机用户永远都不会编写任何一行代码,而他们也不必这样做,因为应用商店里早已有上千万的应用可供他们选择。

从服务器 NIC 发展为 SmartNIC 会遵循相似的路线,但是过程更为短暂。如果 SmartNIC 仅仅只能传递数据包而无法进行其他操作,那就毫无意义。而如果要使其成为一个 SmartNIC,就需要未经分配的额外计算资源,并且需要分配代码空间来充分利用这些资源。

2002 年,3Com 推出了一款带有防火墙的 10/100Mbps 以太网 NIC。它使用3Com 的 3XP 处理器,并配备额外的存储器来完成这项任务。这已经是近 20 年前的事情,现在千兆位以太网已经开始得到广泛应用。尽管如此,如果处理器和存储器都完全用于防火墙应用,那它就是一个专用的安全产品,而非一个 SmartNIC。如果 3Com 开放了编程接口并出售无防火墙的版本,它们本应成为最早的 SmartNIC。他们本该提前二十年就开启 SmartNIC 时代,当时 10/100M 网络已处于应用曲线的衰落期,绝不应该在这个门类上推出新产品。最后,3XP 作为处理器的处理能力太低,无法应对 1GbE,因此在速度达到 1GbE 时弃用 3XP 是正确的做法。如今,数据中心 NIC 广泛采用 25GbE,甚至进一步扩展到 100GbE。

当今数据中心的网络容量为 25GbE,并迅速发展到 50GbE 和 100GbE,因此需要认真考虑 SmartNIC 上的其他计算资源。传统观点认为,应保留诸如 ARM 这样的传统 CPU 核用于控制平面管理,并在极少数情况下保留异常流处理。控制平面管理就如同 ARM CPU 核,可以造就优秀的警官,但只能造就糟糕的交警。目前,数据中心 NIC 每秒可处理数百万甚至超过一亿个网络数据包。ARM CPU 核,即便是频率为 3Ghz 的内核,都无法胜任每秒对数百万个数据包进行检查与处理。因为它每秒没有足够的指令来与这些数据保持同步。业界需要采用特定用途的计算资源来处理这些数据,如专用网络处理器、现场可编程门阵列( FPGA )或 GPU 核等。

在这一领域,FPGA 作为可编程逻辑的特性使其最适合这项任务。FPGA 可以被配置用于快速解析网络数据包报头,甚至是分析正文,然后从丢弃的数据包中采取必要操作,进行封装或完全以线速更改内容。赛灵思 Alveo U25 加速器卡就是基于 FPGA 的 SmartNIC 的一个绝佳例子,它还同时包括 ARM 组合体及网络处理器。因此,尽管某些 SmartNIC 声称它们能利用 ARM CPU 核处理数据流,但是潜在的数据量并进行计算仍应考虑在内。

接下来的主要问题是如何让 SmartNIC 的编程接口公开提供。如上所述,智能手机取得成功的关键在于其应用的可用性。Myricom 首次亮相是其 Myrinet 10G 系列网络产品在超级计算 2005 大会上公开亮相,其第一代 10GbE 产品就可称为 SmartNIC。当时,为 Myricom 的 NIC 提供动力支持的 Lanai10G 芯片曾是一个网络处理器,其 FLASH 中的固件空间用于编程,而高速 SDRAM 则用于数据存储。Myri-10G NIC 可支持三种工作模式:10G 以太网、Myrinet-10G 或基于以太网的 Myrinet Express ( MXoE )。在接下来的几年中,固件被加入以支持线速捕获、存储包加速和交易加速。这与我们对 SmartNIC 定义并不相符,因为编程环境从未公开供外部采用。Myricom 对此有众多正当解释,比如,它是一种类似于“C”的语言,很难编写,甚至更难调试。然而,这些原因都已不再重要。

有人可能会说,Tilera 的产品是第一款高性能的 SmartNIC,但是这种说法也不成立,因为他们拒绝公开提供编程接口和工具。2013 年春季,Tilera(后来成为 Mellanox Bluefield)坚定要求对访问其 SmartNIC 编程环境以及了解如何使用所需的相关课程进行收费。因此,它的采用率极低,应用开发也受到影响,市场接受度更近乎为零。一个向开发者收取访问费用的硬件平台充其量只能取得有限的成功。随着开源软件和 GitHub 等资源库的广泛采用,开发者期待这些工具能够免费使用。

最后,为了使 SmartNIC 取得巨大成功,他们需要一个用于 SmartNIC 应用的集中资源库,也就是一个 App Store (指应用商店)。独立的第三方应用开发者可以在其中提交他们的代码,并在安装或执行代码时获得相应报酬。然后编目、发布并推向市场。如果没有应用商店,用户只能从 NIC 提供商处购买应用,或从第三方供应商处搜寻并购买应用。试想一下,如果您必须从第三方网站购买智能手机的每一款应用,那么这种模式并不能算得上有多成功。我们已看到博通、英特尔、迈络思和赛灵思等公司开发的新一代 SmartNIC,而这些产品都可以充分利用广泛的计算资源。这些公司终于迎头赶上,为其环境发布编程工具,而第三方也正开始为他们的平台进行编程。

作者介绍

姓名:Scott Schweitzer
职位:赛灵思技术布道者

个人简介:
自从当年通过 TRS-80 计算机入门编程的世界,Scott 便成为了一名忠实的科技信徒。他曾为 IBM、NEC、Solarflare 以及现在的赛灵思编写过产品级的软件产品,构建过硬件产品,并担任过程序管理职务。在从事单插槽计算平台工作 20 年后,Scott 于 2003 年加入 NEC,管理其新推出的英特尔安腾(Itanium)多核 64 位超级计算服务器。自此,他一直都在该领域继续深耕。

2005 年,Scott 开始重点研究超级计算与超高性能联网聚类这两大领域。随着 10GbE 的普及,他推出了广受欢迎的 10GbE.net 博客。在 2017 年市场风云变幻之际,Scott 将 10GbE.net 打造成了一个每月拥有数千次页面浏览量的技术传播博客,同时还附带一个播客。Scott 在赛灵思的职责是与合作伙伴一起探寻新的加速机遇并定义创新解决方案。

推荐阅读