自上世纪80 年代中期首批 PC 机面市后不久,网络接口卡 (NIC) 就已经进入了市场。然而,在过去的几年里,我们看到了 SmartNIC 的兴起。什么是 SmartNIC?按照最基本的定义,SmartNIC 就是可编程NIC。很多厂商只是顺应 SmartNIC 这一概念在自身实现中堆砌冗繁的芯片与固件。一个比较准确的定义是SmartNIC 是包含客户可用的额外计算资源和使用这些资源所需的开源工具的NIC。这些额外的计算资源用来处理进出服务器时的网络流量,以及在应用层面卸载主机CPU。
计算单元
SmartNIC在同一张卡上融合有线网络和计算资源。这些计算资源的构成可包含下列一种或数种类型的资源:传统x86 CPU,如 Arm 核;数字信号处理器 (DSP) 专用核;人工智能 (AI);网络处理单元 (NPU);或现场可编程门阵列 (FPGA)。一个SmartNIC 上含有多个上述计算单元的情况并不罕见。
服务器与NIC 连接
每个服务器使用NIC 连接到网络。有时也使用通常用来支持摄像头和恒温器等物联网 (IoT) 设备的嵌入式无线连接,但大多数服务器还是以有线方式连接到网络。采用有线联网的原因较多,不过两个最重要的原因是性能和可用性。
在可用性方面,有线网络只有在电缆受损或拆除的情况下才中断。至于网络性能方面,我们重点关注两个指标:一个是带宽,可通过网络传输的数据量;另一个是时延,即传输数据所用的时间。
提升算力
虽然今天的数据中心联网采用的是25 GbE,并且正在迅速升级到 50 GbE 和 100 GbE,但仍需要认真地考虑为 SmartNIC 添加额外的计算资源。对于传统的 CPU 核(比如 Arm 的 CPU 核),最高效的使用方式是将它们预留给控制平面管理。例如,一个双核或四核Arm 核组常被用于控制平面管理任务,如将软件卸载到其他计算单元和记录日志。
今天的数据中心NIC 每秒要处理数百万乃至超过一亿个网络数据包。即便主频在3GHz 的 Arm 核,也不能胜任每秒检查和处理数百万个数据包的工作,更别说数千万个数据包了。每秒的指令数根本不够应付这样大数量的数据包。处理这样大数量的数据包,需要使用专用计算资源,如专用网络处理器、FPGA或 GPU 核。
FPGA 的并行处理和可编程逻辑特性,常常使其成为这种任务的最佳选择。FPGA 可以通过重配置快速解析网络数据包报头,甚至是数据包本体。然后采取必要的处理,如丢弃数据表、包装数据包或以线速率修改数据包内容。赛灵思 Alveo SN1000 SmartNIC 就是包含一个 Arm 核组和一个网络处理器的基于 FPGA 的 SmartNIC 的典型示例。
卸载
CPU卸载是 SmartNIC的一个关键用途。区块链散列和视频转码等计算密集型任务交由SmartNIC 单独处理即可,从而释放了宝贵的服务器 CPU 资源。
区块链依赖的是求解工作量证明。网络上完成求解的第一个节点会得到奖励,并允许在链上捆绑并发布下一个区块。SmartNIC能在计算下一个解时,将区块链和待完成事项保存在存储器中。如果求解成功,SmartNIC就公布这个区块并开始处理下一个区块。
视频转码是另一种非常适合SmartNIC 从主机 CPU卸载的任务。使用自适应比特率 (ABR) 压缩支持移动设备的视频转码,是另一种 CPU 密集型任务(特别是对于实时视频应用而言)。这些压缩任务极度线性,在移植到基于 FPGA 的加速器上后,被证明效率较通用 CPU 提高 10 倍到 20 倍。
此外,SmartNIC 还内置基本的 Netfilter 防火墙,从主机 CPU 卸载过滤出入站数据包的任务。Netfilter 是一种新版本的 IP 信息包过滤系统,为过滤网络流量提供了非常可靠的架构。将这个防火墙卸载到 SmartNIC,每秒可为主机 CPU节省数百万条指令,以支持于在服务器上运行的其它应用。
我们也提供数据包封装,也就是封包功能。一旦我们对虚拟化或容器化系统使用叠加网络,我们就需要封装网络数据表,让它们在这些叠加网络间正确路由。叠加网络处理的例子如 Open vSwitch (OvS)。它有非常高的 CPU 占用率,因此将这个任务卸载到 SmartNIC 可释放大量主机 CPU 周期。
最后,我们还可以卸载通常运行在 DNS 等服务器上或内存数据库上的主要网络应用。完全在 SmartNIC 内处理 DNS 查询是一种典型的 SmartNIC 应用,因为事务较小而且查找表处理速度较快。
采用 SmartNIC 进行存储控制
SmartNIC 也能兼用作存储控制器。像赛灵思 Alveo U25 这样的一些 SmartNIC,自己的本地存储拥有千兆字节片上和板载存储器(比如 U25 有 6GB)。这种存储可兼用作服务器自己的 NVMe 磁盘的缓存。这种做法很有意义,因为 Compute Express Link (CXL) 等协议能让未来的 SmartNIC 直接管理与 NVMe 驱动器的关系。
赛灵思Alveo U25 智能网卡
此外,SmartNIC 也能在硬件中进行抹除编码,还可以为存储加密。对于驱动器加密,SmartNIC 提供了一种独特的安全机制。如果使用 SmartMIC 为存放到NVMe存储的数据进行加密或解密,要破解这种加密,就需要同时拥有这两个设备。如果管理员拆下 NVMe 驱动器到其他地方去解密,他们只能使用暴力破解法,猜测被留在 SmartNIC 上的缺失的加密密钥。
SmartNIC 可以方便地采用密码术保障上电周期间密钥的安全性,进一步提高系统的可靠性和安全性。例如,被赛灵思收购的Solarflare在 NIC 上保持着一个硬件安全隔离区,过去几年一直在其 X2 芯片上存储 NIC 密钥。未来的 SmartNIC 安全隔离区将有望为 SSL/TLS 端点加密保存数十万个安全密钥并保障它们的安全。
电子交易
最后,SmartNIC 还在另外一个领域里大有前途。那就是超低时延电子交易。我们在上文里谈论过在几百亿分之一秒内传输网络数据包。今天,高性能25-GbE NIC的时延在1,000ns左右。采用正确架构的系统、正确的软件和调试到位的 SmartNIC,能在收到网络数据包的同时完成分析,一次四个字节。响应数据包则能以令人惊奇的 22ns 内注入到网络中。这比传统的高性能 NIC 速度提高了 40 多倍。当用于电子交易时,这些 SmartNIC 的投资回报 (ROI) 有时可以不到一秒就能测得。
市场采用日益攀升
随着云服务提供商不断扩大容量,他们也在增加 SmartNIC 的部署,以将宝贵的 CPU 核心释放给业务应用,优化服务器利用率。今天的服务器往往把 30% 的 CPU 周期用在管理网络上。即相当于每三部生产服务器中就有一部用于组网。SmartNIC 支持系统架构师将高性能计算资源部署在服务器的边缘,也就是网络上。然后 SmartNIC就能用于保护服务器,进而保护企业,同时有力地从成本高昂得多的服务器 CPU 上卸载任务。
根据市场研究公司 Dell’Oro Group,到 2024 年,SmartNIC 的市场规模预计将超过 6 亿美元,占全球以太网适配器市场的23%。我们已经看到博通、英特尔、迈络思和赛灵思等公司纷纷推出新一代 SmartNIC。因此,当您设计您的新一代数据中心部署的时候,也许可以考虑将 SmartNIC 纳入到您的计划中, 而不是单纯将标准 NIC当作服务器的默认配置。
本文作者Kartik Srinivasan是赛灵思数据中心事业部联网与存储产品管理总监
责编:Amy Guan