基于FPGA的SmartNIC技术及其在数据中心的应用
来源:EET发布时间:2021-08-23457浏览
询问 AI| EETC https://www.eet-china.com |
自上世纪80年代中期首批PC机面市后不久,网络接口卡(NIC)就已经进入了市场。然而,在过去的几年里,我们看到了SmartNIC的兴起。什么是SmartNIC?按照最基本的定义,SmartNIC就是可编程NIC。很多厂商只是顺应SmartNIC这一概念在自身实现中堆砌冗繁的芯片与固件。一个比较准确的定义是SmartNIC是包含客户可用的额外计算资源和使用这些资源所需的开源工具的NIC。这些额外的计算资源用来处理进出服务器时的网络流量,以及在应用层面卸载主机CPU。
计算单元
SmartNIC在同一张卡上融合有线网络和计算资源。这些计算资源的构成可包含下列一种或数种类型的资源:传统x86CPU,如Arm核;数字信号处理器(DSP)专用核;人工智能(AI);网络处理单元(NPU);或现场可编程门阵列(FPGA)。一个SmartNIC上含有多个上述计算单元的情况并不罕见。
服务器与NIC连接
每个服务器使用NIC连接到网络。有时也使用通常用来支持摄像头和恒温器等物联网(IoT)设备的嵌入式无线连接,但大多数服务器还是以有线方式连接到网络。采用有线联网的原因较多,不过两个最重要的原因是性能和可用性。
在可用性方面,有线网络只有在电缆受损或拆除的情况下才中断。至于网络性能方面,我们重点关注两个指标:一个是带宽,可通过网络传输的数据量;另一个是时延,即传输数据所用的时间。
提升算力
虽然今天的数据中心联网采用的是25GbE,并且正在迅速升级到50GbE和100GbE,但仍需要认真地考虑为SmartNIC添加额外的计算资源。对于传统的CPU核(比如Arm的CPU核),最高效的使用方式是将它们预留给控制平面管理。例如,一个双核或四核Arm核组常被用于控制平面管理任务,如将软件卸载到其他计算单元和记录日志。
今天的数据中心NIC每秒要处理数百万乃至超过一亿个网络数据包。即便主频在3GHz的Arm核,也不能胜任每秒检查和处理数百万个数据包的工作,更别说数千万个数据包了。每秒的指令数根本不够应付这样大数量的数据包。处理这样大数量的数据包,需要使用专用计算资源,如专用网络处理器、FPGA或GPU核。
FPGA的并行处理和可编程逻辑特性,常常使其成为这种任务的最佳选择。FPGA可以通过重配置快速解析网络数据包报头,甚至是数据包本体。然后采取必要的处理,如丢弃数据表、包装数据包或以线速率修改数据包内容。赛灵思AlveoSN1000SmartNIC就是包含一个Arm核组和一个网络处理器的基于FPGA的SmartNIC的典型示例。

卸载
CPU卸载是SmartNIC的一个关键用途。区块链散列和视频转码等计算密集型任务交由SmartNIC单独处理即可,从而释放了宝贵的服务器CPU资源。
区块链依赖的是求解工作量证明。网络上完成求解的第一个节点会得到奖励,并允许在链上捆绑并发布下一个区块。SmartNIC能在计算下一个解时,将区块链和待完成事项保存在存储器中。如果求解成功,SmartNIC就公布这个区块并开始处理下一个区块。
视频转码是另一种非常适合SmartNIC从主机CPU卸载的任务。使用自适应比特率(ABR)压缩支持移动设备的视频转码,是另一种CPU密集型任务(特别是对于实时视频应用而言)。这些压缩任务极度线性,在移植到基于FPGA的加速器上后,被证明效率较通用CPU提高10倍到20倍。
此外,SmartNIC还内置基本的Netfilter防火墙,从主机CPU卸载过滤出入站数据包的任务。Netfilter是一种新版本的IP信息包过滤系统,为过滤网络流量提供了非常可靠的架构。将这个防火墙卸载到SmartNIC,每秒可为主机CPU节省数百万条指令,以支持于在服务器上运行的其它应用。
我们也提供数据包封装,也就是封包功能。一旦我们对虚拟化或容器化系统使用叠加网络,我们就需要封装网络数据表,让它们在这些叠加网络间正确路由。叠加网络处理的例子如OpenvSwitch(OvS)。它有非常高的CPU占用率,因此将这个任务卸载到SmartNIC可释放大量主机CPU周期。
最后,我们还可以卸载通常运行在DNS等服务器上或内存数据库上的主要网络应用。完全在SmartNIC内处理DNS查询是一种典型的SmartNIC应用,因为事务较小而且查找表处理速度较快。
采用SmartNIC进行存储控制
SmartNIC也能兼用作存储控制器。像赛灵思AlveoU25这样的一些SmartNIC,自己的本地存储拥有千兆字节片上和板载存储器(比如U25有6GB)。这种存储可兼用作服务器自己的NVMe磁盘的缓存。这种做法很有意义,因为ComputeExpressLink(CXL)等协议能让未来的SmartNIC直接管理与NVMe驱动器的关系。
赛灵思AlveoU25智能网卡
此外,SmartNIC也能在硬件中进行抹除编码,还可以为存储加密。对于驱动器加密,SmartNIC提供了一种独特的安全机制。如果使用SmartMIC为存放到NVMe存储的数据进行加密或解密,要破解这种加密,就需要同时拥有这两个设备。如果管理员拆下NVMe驱动器到其他地方去解密,他们只能使用暴力破解法,猜测被留在SmartNIC上的缺失的加密密钥。
SmartNIC可以方便地采用密码术保障上电周期间密钥的安全性,进一步提高系统的可靠性和安全性。例如,被赛灵思收购的Solarflare在NIC上保持着一个硬件安全隔离区,过去几年一直在其X2芯片上存储NIC密钥。未来的SmartNIC安全隔离区将有望为SSL/TLS端点加密保存数十万个安全密钥并保障它们的安全。
电子交易
最后,SmartNIC还在另外一个领域里大有前途。那就是超低时延电子交易。我们在上文里谈论过在几百亿分之一秒内传输网络数据包。今天,高性能25-GbENIC的时延在1,000ns左右。采用正确架构的系统、正确的软件和调试到位的SmartNIC,能在收到网络数据包的同时完成分析,一次四个字节。响应数据包则能以令人惊奇的22ns内注入到网络中。这比传统的高性能NIC速度提高了40多倍。当用于电子交易时,这些SmartNIC的投资回报(ROI)有时可以不到一秒就能测得。

市场采用日益攀升
随着云服务提供商不断扩大容量,他们也在增加SmartNIC的部署,以将宝贵的CPU核心释放给业务应用,优化服务器利用率。今天的服务器往往把30%的CPU周期用在管理网络上。即相当于每三部生产服务器中就有一部用于组网。SmartNIC支持系统架构师将高性能计算资源部署在服务器的边缘,也就是网络上。然后SmartNIC就能用于保护服务器,进而保护企业,同时有力地从成本高昂得多的服务器CPU上卸载任务。
根据市场研究公司Dell’OroGroup,到2024年,SmartNIC的市场规模预计将超过6亿美元,占全球以太网适配器市场的23%。我们已经看到博通、英特尔、迈络思和赛灵思等公司纷纷推出新一代SmartNIC。因此,当您设计您的新一代数据中心部署的时候,也许可以考虑将SmartNIC纳入到您的计划中,而不是单纯将标准NIC当作服务器的默认配置。
本文作者KartikSrinivasan是赛灵思数据中心事业部联网与存储产品管理总监
责编:Amy Guan
新闻来源:EET,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。
