智能手机似乎迎来了“智能”化的时代,并掀起了物联网(IoT)革命。那么,是什么让 SmartNIC 实现了智能化?是硬件、编程还是其他什么?
网络接口卡(NIC)自 20 世纪 80 年代中期第一台 PC 推出后不久便开始投放市场,但我们在过去的几年里才看到 SmartNIC 的出现。这一市场上的每家公司对 SmartNIC 产品的细分市场都有着不同定义。最基本的定义就如同一个可编程的 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 等资源库的广泛采用,开发者期待这些工具能够免费使用。