《ONE参考》为您解读微软SDN利器之SmartNIC

2013年,谷歌在Sigcomm会议上发表论文,宣称在其B4骨干网上构建了一张SDN网络,引发业界对SDN的大力关注,自此之后,谷歌一直被视作SDN领域的风向标和领头羊。

但其实,在工业界SDN玩家并非谷歌一个,还有被绝大多数人忽视的微软,甚至说微软为资深的SDN玩家,也一点也不为过,微软在SDN领域的探索跟研究硕果累累,从公开出来的材料来看,丝毫不亚于谷歌。

微软在SDN领域,深入践行“软件定义”的概念,充分利用软件的灵活性和敏捷性,打造出一系列“SDN for the Cloud”的产品:

  • Azure Clos Fabric:Controller、Apps、...
  • Network SDN:ODM switch、SAI、SONiC、...
  • Host SDN:SmartNIC、VFP、...

今天,我们就从奠定目前整个Azure业务基础的SmartNIC入手,来分析一下SmartNIC的演变历程及其在Azure中的作用。

SmartNIC的前身

虽然我们都知道微软的SmartNIC就是拿FPGA实现的,但是在微软内部早期,FPGA并没有被用在网络上,而是仅仅只用作对上层业务流程的一些专用加速。

专用服务器时代:每台服务器24块FPGA,一台服务器一个集群

这个阶段的FPGA卡是在专门定制的机器上使用,每个机器插有4块FPGA加速卡,每块卡上有6个FPGA,这样每台机器累计有24个FPGA,一台机器就相当于一个FPGA资源池。

MacDown

单块FPGA卡

MacDown

单台机器

此时的FPGA机器跟服务器是异构的,在运维和管理上增加了额外的负担,而且由于不同机器FPGA之间无法直接通信,业务使用和扩展性上受限。

通用服务器时代:每台服务器一块FPGA,多台服务器组成一个集群

为了保证数据中心中服务器的同构性,微软对原来专用的FPGA卡进行了改造在每台服务器上插一块 FPGA卡,FPGA 之间通过专用网络连接。

MacDown

插在服务器上的FPGA卡

此时的FPGA卡相比上一代相比,出现了如下的变化:

  • 产品形态:依然通过PCIe和服务器主板连接,但是开始采用PCIe扣卡方式;
  • 网络功能:FPGA上新增网口,每块卡提供两个10GbE网口(网口并没有直接在卡上出,而是固定在服务器Tray Backplane上)

为了配合Bing搜索业务加速,FPGA以成组方式进行工作,每块FPGA卡的其中一个网口每8个一组连成环,另一个10G网口每6个一组连成环,每个FPGA卡FPGA在搜索流水线中各司其职,分工协作。为了将这些FPGA卡互连到一块,需要采用专门定制的线缆。

MacDown

FPGA组网用的定制线缆

SmartNIC的诞生

SmartNIC Gen1

FPGA在Bing业务上取得明显的成功,不仅降低了Bing搜索的延迟,而且显著提高了延迟的稳定性。这让微软看到了FPGA的巨大潜力,于是微软决定将其扩展到其他业务上,作为微软内部拥有最多服务器的Azure业务首当其中。

Azure业务中,最需要解决和优化的就是虚拟网络性能的提升,于是,微软创造性提出将FPGA嵌入到原有网络中,在新的架构下,FPGA卡和传统网卡配合工作,FPGA主要负责虚拟化和加速方面的业务,传统网卡主要负责物理网络和外部的交互。

MacDown

Azure服务器里FPGA和NIC的关系

此时的FPGA卡开始被称作SmartNIC或SmartNIC FPGA,它与Bing业务里使用的FPGA卡,有如下的不同点:

  • 产品形态:将FPGA卡做成标准的Mezzanine卡,但FPGA和NIC依然是单独的;
  • 部署模式:采用BITW架构(Bump in the wire),FPGA卡嵌入到服务器原有的网络中,承担部分网卡的功能;
  • 业务功能:相比Bing业务中单纯依靠FPGA的加速,SmartNIC提供了更丰富的功能:Crypto、QoS、Storage acceleration、RDMA等;
  • 网络带宽:从2个10G升级到2个40G,一个40G口连接外部交换机,一个40G口连接传统网卡(NIC);

MacDown

SmartNIC FPGA卡形态

SmartNIC对每个VM虚拟出一块网卡,VM通过SR-IOV的方式可以直接访问这块虚拟网卡,原本在虚拟交换机里面的数据平面功能被移到了FPGA中,省掉了CPU的参与,也不需要经过物理网卡。

MacDown

使用SmartNIC FPGA加速前后

SmartNIC FPGA卡的使用,极大提升了VM的网络性能,每个VM最大网络带宽可以达到25Gbps,且同数据中心VM间的网络延迟也降低了10倍。自2015年末以来,微软开始大部署SmartNIC,Azure业务中所有的计算节点服务器都搭载了该SmartNIC。

SmartNIC Gen2 @50G

传统网卡和SmartNIC作为两个独立的部件,外加外部互连的方式,不仅成本高,而且运维不方便,因此,微软推出了第二代智能网卡,相比第一代主要的变化有:

  • 产品形态:将NIC ASIC和FPGA整合到一块卡上,整块卡对外只出一个端口,依然采用Mezzanine卡形态;
  • 网络带宽:端口速率从40GbE提高到50GbE;

MacDown

第二代SmartNIC卡效果图

MacDown

第二代SmartNIC卡实物图

MacDown

新二代SmartNIC业务加速架构

微软SmartNIC小结

  • 硬件迭代周期长和不灵活性需要依靠软件来进行弥补,软硬件协同才能发挥最大价值;
  • SmartNIC是未来云业务场景下网络虚拟化和加速功能的很好的一个解决方案,目前除微软外,Amazon也在大量使用SmartNIC;

参考资料:

  • ONS Summit 2017, Accelerated SDN in Azure, Microsoft
  • OCP Summit 2016, SmartNIC:Accelerating Azure's Network witch FPGAs on OCS servers, Microsoft
  • ACM Sigcomm 2015, SDN for the Cloud, Microsoft
  • Hot Chips 26(2014), Large-Scale Reconfigurable Computing in a Microsoft Datacenter, Microsoft

Copyright © 2017, YUNQI Tech Co., Ltd. All Rights Reserved. 北京云启志新科技股份有限公司