智能网卡SmartNIC:“大”x86 Server中的“小”arm Server


Version 2.1, Winnie Shao, 2020 Mar

免责声明:个人观点,不代表任何公司。文章中列举的数据,皆来自于公开新闻和会议。看文要打赏,但是大家也别太多了,请按觉得有用的程度打赏1-5块钱,就当我做市场调查了。(在文末打赏的朋友,将直接支持给作者Winnie shao博士)

这文章我三个月的时间反反复复写了4,5次,写到2月底,放弃了。而且因为我放弃了,没好好保留资料,因此这篇捡回来的文章,就没有资料列表了。

这个周末朋友圈里有又相关话题的讨论,我觉得,还是应该发一下。

其实我的朋友圈,谈这个话题是蛮危险的,容易被内行打脸,这是我折腾三个月,从热情洋溢,到纠结卡文,最后放弃的主要原因。当初的动机是读了一个heavy reading的智能网卡的报告,据说那个报告市价2850刀,我觉得吧,照那个标准,我写一个值5000刀的报告简直是分分秒秒的事情:)

什么是SmartNIC ?按照产业惯例,一般新产品的定义都是由市场的老大确定。

Mellanox占了10G速率以上网卡的70%市场份额(Crehan Research ),它对SmartNIC的定义是一个可以卸载通常由系统CPU处理的任务的网络接口卡。智能网卡利用其板上的处理器,能够完成加密/解密,防火墙,TCP/IP,HTTP等任何处理任务的组合。

下图来自微软举办的云网络大会的材料,展示了从卸载功能的⻆度看,一个传统网卡与智能网卡的区别。


但是如我取的标题,来自于Broadcom的BD的演化,我觉得一个插在标准服务器中的小服务器,更合适描述SmartNIC的未来发展趋势。

关于这篇文章的逻辑顺序,我返工过几次。

第一次,先讲智能网卡的分类,LOM, FPGA-based,ASIC-based,然后按照分类与主要供应商,分析细分市场的发展与份额预测,这是按照市场分析报告的思路来写。这种报告,多半是给投资者看的。其实heavy reading的报告就是这种给股市/公司投资者的市场分析报告。

第二次,我试图先讲智能网卡的三个主要部分:NIC,控制层面,数据层面。然后,按照25G/40G/50G/100G的规格,分析一下各个模块的主要供应商和关键性能参数,并附上主要供应商的产品明细,这是按照专业技术报告来写,给行内的采购者和应用者看的。

第三次,我试图按照我个人的理解顺序,先讲why SmartNIC,SDN与I/O-offload关系,然后从大厂的发展策略,预测一下未来发展趋势。然后就因为规划太大,写不下去了。

看SmartNIC的发展起因,主要是为了预测一下这个产品的发展方向。

按照Patty Kummrow,Intel的以太网部⻔GM&VP,在一次会议上的话,就是“我们卖网卡卖了30多年”,怎么就出了新概念呢? 在Mellanox给的智能网卡定义中,有两个关键词,一个是卸载,一个是处理器。一个网卡明明不过是IO设备,怎么就和处理器强关系起来了呢?而且如果是简单的IO+CPU的组合,Intel明明有先机的,回头看Intel在10Gbps网卡市场那是压倒性的市场份额,又是CPU的大厂,怎么可能被Mellanox拿一个网卡+CPU的东西翻盘?

简单说,两个因素:SDN与25Gpbs + IO接口的需求

市面上讨论智能网卡SmartNIC的时候,总是提到SDN-Software defined Networking,但是我理解的SDN是控制面与数据面的分离,方便tele-com标准化硬件平台,解除供应商锁定。这个SDN跟SmartNIC也没有直接联系。

如果从虚拟化技术看起,VMWare搞出虚机,颠覆了原有物理网络对(物理)服务器的不移动的基础假设,因此要自己做一个主机上运行的Software Switch,解决网络与VM的对应关系,关键是解决虚机迁移,服务跟随两大问题。(中间有一大段的和Cisco的来回曲折,因为Cisco这样的网络设备提供商,肯定是想用物理switch上构建虚拟网络来解决这个网络与VM的对应关系,但是最后还是在主机上,过去是用纯软件,先是主机上的网络加软件的方式解决的,因此我就略掉这段故事了)。既然是软件实现的switch,套用SDN的框架,或者说归一到SDN框架下,去解决标准问题,也就顺理成章。现在的服务器软件栈中,网络的组件功能特别丰富,不是一个vSwitch能描述的。

10Gbps网络接口,如果按照MTU 1500Byte来算,0.83 Millions packet per second,一个3Ghz IPC 1.5的CPU单核,大约有5000指令的处理能力。再往上,25Gpbs,需要的CPU核数就剧增。而存储的网络化,以前HDD的性能瓶颈是磁盘的物理转速上限,SSD没有这个限制,SSD拉高了存储带宽,因此数据中心通过网络共享存储资源这个需求,例如NVMe-oF,迅速把网络接口速率拉高。从1Gbps的网卡到10Gbps的网卡,业界走了近10年,但是25Gbps,似乎3年就成大趋势了。而且还有隐隐加速的意思。

当用服务器的Xeon CPU处理主机上的软件网络栈,成为一件昂贵的事情的时候,Cost-down方案的机会就来了,当然由于有marketing这样的专业人士的存在,Cost-down这样的字样是不会出现的,大家看到的就是网络加速Network accelerate 或者业务卸载 workload-offload。

这里,让我插播一下,问一个拷问灵魂的问题,是先确定硬件平台,在向上构造软件生态的bottom to top的过程合理,还是先有软件应用方案,然后top to bottom逐步offload业务,交由硬件加速合理?

如果是从下往上发展的业务,也就是先有硬件,再围绕硬件打造软件栈,过程漫⻓,平台型软件的同志们痛苦(在很⻓的一段时间内,无法判断趋势,要么豪赌平台,要么消耗资源都支持),例如Nvidia漫⻓的打造CUDA之路,例如arm的服务器之路,但是如果是从上往下发展的业务,所谓的卸载业务,时间要短一点,但是硬件的同志们痛苦,而且战况往往惨烈(短时间的以真金白银的投入赢家通吃的市场), SmartNIC,AI芯片爆发都是这类。我给做应用的金主爸爸们一个建议:在硬件跟得上摩尔定律的时候,专心投钱做multi-arch软件,挑最快的顺风车搭。当硬件魔法失效的时候,给硬件码农们钱,让他们为你造一个独享的法拉利。

BTW,我曾经的心仪对象Cisco公司,最近统一了硬件平台,还开始外卖芯片 silicon one,以求扩大这个硬件平台的影响力。又统一了软件平台。我感觉有点要重新起飞的状态。(记得不构成投资建议的免责声明吧?这完全是个人喜好)

Why SmartNIC的思路理顺,我们下面看看几个大厂是怎么开始走上业务卸载——offload或者说硬件加速之路的。

Azure AccelNet SmartNIC


Azure在2015年部署了上百万的智能网卡。但是和Mellanox的定义不同,Azure并不是一个有处理器的方案,而是一个FPGA-based的方案。


为什么,如果回溯资料,无非是他们先有了一个FPGA的加速卡,已经插在服务器里了。而且作为先行者,他们实现的非标准(当然你也可以用“创新”这个词)VFP (virtual filteringplatform)很难在市场上找到可用的ASIC。他们估计一开始也没有想搞个大动作,搞个arm CPU授权做个自己的smartNIC chip,已经存在的FPGA项目就是最好的入手点。


看到这里,做FPGA的朋友们已经开始向我扔砖头了。但是发货上百万量级,就不在FPGA的甜蜜点上了,大家心里都明白的。


AWS Nitro项目


AWS Nitro项目,它不是一个芯片,也不是一个板卡,它是一个产品家族。它的设计目的非常清晰,就是把所谓的data center tax内部化。当它成功的全部内部化之后,一个新的产品形态,baremetal 裸金属服务器就出现了。


至于什么叫datacenter tax?就是所有的云供应商用于管理虚机VM,给虚机提供远程资源,加密解密,故障跟踪,安全策略等服务程序。这些服务程序,也消耗计算资源,这部分被消耗掉的计算资源,就像tax一样给附加在用户购买的云服务中。


所以Nitro项目都不能用网卡来命名,而且AWS的网卡驱动完全是个逻辑的,跟实际速率都无关。因此这个项目,算是把所谓的SmartNIC的NIC完全弱化掉,这跟Mellanox和Broadcom的SmartNIC产品是有点距离的。到这里,做NIC的朋友们也开始向我扔砖头了。

LITTLE Server on big Server


我喜欢B家的Stingray产品BD说的,这就是一个大服务器上的小服务器。当然,如果能加一个小arm服务器,就更好了。别管它叫什么名字,它本质上就是一个赤果果的cost-down方案么。



前景么,我有一万字的研究报告可以写,略了。


By 一个等着收砖头的人。


另推荐作者好文

《Arm服务器芯片编年史》

《多Die封装:Chiplet小芯片的研究报告》


注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。进一步交流技术,可以加我的QQ/微信:490834312。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)