5G的到来无疑将加速网络虚拟化的进程,在电信领域,网络虚拟化不仅在核心网,也在网络的边缘。但是,仅仅通过软件解决方案不能提供足够的网络可靠性和服务质量,而具有高级可编程功能智能网卡(Smart NIC),将在虚拟化网络中扮演非常重要的角色。
网卡的发展史
近年来公有云中虚拟化技术的发展以及SDN技术的兴起,对端系统协议栈提出了更高的要求,而传统的高性能网卡已经难以满足这些要求。为此,智能网卡技术开始走进大众的视野。不同于传统网卡,智能网卡同时具备高性能及可编程的能力,既能处理高速的网络数据流,又能对网卡进行编程,实现定制化的处理逻辑。
传统网卡:早期的网卡仅实现数据链路层和物理层的功能,而端系统CPU负责处理网络协议栈中更高层的逻辑。CPU按照网络协议栈中传输层、路由层的逻辑,负责数据包的封装和解封;网卡则负责更底层的数据链路层帧的封装和解封,以及物理层电气信号的相应处理。
智能网卡:为适应高速网络,现代网卡硬件中普遍卸载了部分传输层和路由层的处理逻辑(如校验和计算、传输层分片重组等),来减轻CPU的处理负担。甚至有些网卡如RDMA网卡还将整个传输层的处理都卸载到网卡硬件上,以完全解放CPU。得益于这些硬件卸载技术,端系统的网络协议栈处理才能与现有的高速网络相匹配。
具体来说,传统网卡面向的用户痛点包括:
随着VXLAN等overlay协议以及OpenFlow、Open vSwitch(OVS)等虚拟交换技术的引入,使得基于服务器的网络数据平面的复杂性急剧增加。
网络接口带宽的增加意味着在软件中执行这些功能会给CPU资源造成难以承受的负载,留给运行应用程序的CPU资源很少或根本没有。
传统网卡固定功能的流量处理功能无法适应SDN和NFV。
在SmartNIC出现之前,解决这些问题的方法大概有:
使用英特尔开放网络平台,DPDK用作加速手段,但处理过程依赖于未针对数据传输进行优化的服务器和标准NIC,这是一个瓶颈,由于吞吐量性能低下,并且需要大量的CPU内核/资源,因此将导致服务器数量增加。
使用网卡支持的PCI Express单根IO虚拟化(SR-IOV)技术,允许网卡将物理端口映射为多个虚拟端口或虚拟功能(VF),使得每个虚拟端口都可以绑定到VM,这样吞吐量性能和CPU使用效率得到改善,但灵活性却降低了,复杂性也增加了;并且,大多数网卡最多有效支持1GbE端口的8-16个虚拟端口和10GbE端口的40-64个虚拟端口。
目前最有效的硬件方法Smart NIC,将虚拟交换机功能完全从服务器CPU转移到网卡,释放昂贵的服务器CPU的计算能力以返回给应用程序,从而更好地扩展网卡功能并提供更高的性能。SmartNIC的存在能够:
实现基于服务器的复杂网络数据平面功能,例如,包括多匹配操作处理、计量整形、流统计等。
通过更新的固件负载或客户编程来支持可替代的数据平面,对执行的功能几乎没有预先设定限制。
与现有的开源生态系统无缝协作,以最大程度地提高软件功能的速度和影响力。
SmartNIC可以执行加密/解密、防火墙、TCP / IP和HTTP处理,非常适合高流量的Web服务器。
智能网卡的N种分类方式
智能网卡之所以“智能”,即是拥有可编程能力,它并没有固定的分类方式,你可以根据智能网卡设计采用形式,将它分为:
多核智能网卡,基于包含多个CPU内核的ASIC
基于现场可编程门阵列(FPGA)的智能网卡
FPGA增强型智能网卡,它将硬件可编程FPGA与ASIC网络控制器相结合
也可以根据其加速不同的工作负载将它分为:
基本连接NIC
面向网路加速的智能网卡
面向存储加速的智能网卡
同时,由于不同的供应商的架构不同,因此SmartNIC可以基于ASIC、FPGA和片上系统(SOC)。
不同的实现方式在成本、可编程性和灵活性方面各有优劣。
ASIC具有价格优势,但灵活性有限,尽管基于ASIC的NIC相对容易配置,但最终功能将受到基于ASIC中定义的功能的限制,这可能会导致某些工作负载无法得到支持。
相比之下,FPGA NIC是高度可编程的,并且可以相对有效地支持几乎任何功能,不过众所周知的是,FPGA最大的问题是编程难度大且价格昂贵。
针对更复杂的用例,SOC是最佳的SmartNIC选择,价格与性能兼具、易于编程且高度灵活。
可编程还是性能,二者如何抉择?
从理论上来说若想兼顾高性能和智能,一个最优的智能网卡架构应将不同场景下各网络协议栈都需具备的相同处理逻辑固化成专用ASIC芯片,而将其余随场景变化的处理逻辑通过可编程芯片定制化实现。
然而现实面对的困难是,目前对网络协议栈各层的功能没有一个很好的模块化抽象,各层内的各个处理逻辑之间甚至跨层的部分逻辑之间都依据场景高度耦合,难以提取有意义的共性和特性逻辑分别由ASIC和可编程芯片处理。现有智能网卡要想具备足够的可编程能力,能应对各种场景,只能将从上到下各层几乎所有的逻辑都交由可编程芯片实现,牺牲了性能。
若想突破此难题,一种可行的思路是从模块化的角度出发重构现有网络协议栈,在其各层协议中清晰地抽象出共性功能模块以及可依据场景定制的特性模块。从网卡设计的角度出发,区分各种场景下的网络协议栈中到底哪些部分可以由ASIC固化、哪些部分需要灵活地定制逻辑。
智能网卡的应用场景
SmartNIC用例包括虚拟化软件定义存储、超融合基础设施以及其他云资源。
在虚拟化爆发之前,大多数服务器只是运行本地存储,这虽然不是很高效,但是很容易使用。然后是网络存储的兴起——SAN、NAS,以及NVMe over Fabrics(NVMe-oF)。但是,并非每个应用程序都可识别SAN,并且某些操作系统和虚拟机管理程序(例如Windows和VMware)尚不支持NVMe-oF。SmartNIC可以虚拟化网络存储,效率更高、更易于管理,且应用程序更易于使用。SmartNIC甚至可以虚拟化GPU(或其他神经网络处理器) ,这样任何服务器都可以在需要的时候通过网络访问任意数量的GPU。
软件定义存储和超融合基础设施都使用管理层(通常作为VM或作为虚拟机管理程序本身的一部分运行)来虚拟化和抽象化本地存储和网络,以使其可用到群集中的其他服务器或客户端,能够实现快速部署,有利于共享存储资源,但是管理和虚拟化层占用了本应运行应用程序的CPU周期。与标准服务器一样,网络运行的速度越快,存储设备的速度越快,则必须投入更多的CPU来虚拟化这些资源。
SmartNIC一方面可以卸载并帮助虚拟化网络(加速私有云和公共云,这就是为什么它们有时被称为CloudNIC)的原因,另一方面可以卸载网络和大部分的存储虚拟化,可以减轻SDS和HCI的功能负担,例如压缩、加密、重复数据删除、RAID、报告等。
超融合架构数据中心中,Smart NIC为SDN和虚拟化应用程序提供硬件加速与网络接口紧密结合,并可分布在大型服务器网络中,减小CPU负载,提供额外的边缘计算能力,加速特定应用和虚拟化功能,并且通过正确的语言和工具链支持,为用户提供应用加速即服务的附加价值。
白盒作为最受欢迎的COTS硬件,可以加入插件实现软件定义网络(SDN)和网络功能虚拟化(NFV)的各种计算和网络功能。Smart NIC可以将代码从CPU引入网卡,显著加速用于安全应用的加密/解密或用于深度包检测(DPI)应用程序,降低CPU负载,并且支持灵活的网络可编程性。
各显神通的厂商
目前业界提供基于FPGA的Smart NIC的厂商包括Accolade、BittWare、Enyx、Ethernity、Napatech、Netcope、Reflex CES、Silicom和Solarflare,通常集成自Intel或Xilinx的FPGA来实现。此外,Broadcom,Cavium,Intel,Kalray,Mellanox,Netronome,Silicom和SolidRun均可提供基于处理器的Smart NIC,使用带有集成处理器内核或FPGA的处理器或智能I/O处理器;亚马逊和谷歌已经开发了Smart NIC ASIC。
赛灵思
今年3月,赛灵思发布了其首款“一体化SmartNIC(智能网卡)平台”——Alveo U25的数据中心加速卡,在单颗器件上实现了网络、存储和计算加速功能的融合。
随着网络端口速度不断攀升,2 级和 3 级云服务提供商、电信和私有云数据中心运营商正面临日益严峻的联网问题和联网成本挑战。与此同时,开发和部署 SmartNIC 所需的大量研发投资,也成为其被广泛采用的障碍。
依托于赛灵思业界领先的 FPGA 技术,Alveo U25 SmartNIC 平台相比基于 SoC 的 NIC,可以提供更高的吞吐量和更强大的灵活应变引擎,支持云架构师快速为多种类型的功能与应用提速。
Intel
2015年6月,Intel 宣布以 167 亿美元的价格收购全球第二大 FPGA 厂商 Altera,成为该公司有史以来最贵的一笔收购,随后Intel 也在 Altera 的基础上成立了可编程事业部,且一直在推进 FPGA 与至强处理器的软硬件结合,但却并没有能够进入大规模商用阶段。
三年后,Intel终于踏出了历史性的一步。2019年4月19日,Intel 宣布旗下的 FGPA 已经被正式应用于主流的数据中心 OEM 厂商中。具体来说,戴尔 EMC PowerEdge R640、R740 和 R740XD 服务器集成了 Intel FPGA ,并且已经可以进行大规模部署;而富士通即将发布的 PRIMERGY RX2540 M4 也采用了 Intel FGPA 的加成,这款产品即将发布,并已经支持重点客户提前使用。
上述FGPA主要指的是 Intel Arria 10 GX 可编程加速卡(Programmable Acceleration Card,简称 PAC),同时Intel 还为 OME 厂商提供一个面向包含 FPGA 的 Intel 至强可扩展处理器的 Intel 加速堆栈。二者结合起来,就形成了一个完整的硬软件结合 FPGA 解决方案。
迈络思
Mellanox是面向数据中心服务器和存储系统的高性能、端到端智能互连解决方案的领先供应商,今年3月,迈络思宣布,ConnectX-6 Dx 智能网卡全面上市, BlueField-2 IPU(I/O 处理单元) 也将很快上市。这两款产品都拥有一系列先进的安全加速引擎和平台安全功能,助力公有云、内部私有云和边缘计算环境构建大规模、高度安全可靠且高效的数据中心基础架构。
ConnectX-6 Dx 和 BlueField-2 在分布式的零信任安全体系架构中发挥着重要作用,它们将传统的边界防护扩展到每个端点。通过将先进的 IPsec 和 TLS 加密加速技术与领先的开源上游软件解决方案相结合,使用户和合作伙伴可以在新建的及现有的数据中心环境中利用创新的硬件加速功能。
博通
博通的Stingray SmartNIC SoC系列具有集成的全功能100G NIC,强大的8核CPU,运行在3 GHz下,支持数据包处理(Truflow™)、加密、RAID和重复数据删除(FlexSPARX™)等硬件引擎,是用于主机卸载、裸机服务和网络功能虚拟化的理想SmartNIC解决方案。
今年4月,百度云宣布正在与博通紧密合作,利用Stingray SmartNIC的可编程性,提供高级的云原生应用、网络功能虚拟化和分布式安全。博通的Stingray适配器提供8个ARM A72 CPU内核,运行在3GHz、300G内存带宽和100G NetXtreme Ethernet网卡上。
微软
Azure加速网络(AccelNet)是使用基于FPGA的自定义Azure SmartNIC将主机网络卸载到硬件的解决方案。自2015年底以来,微软已在超过100万台主机的新Azure服务器上部署了实施AccelNet的Azure SmartNIC。自2016年以来,AccelNet服务已向Azure客户提供,提供一致的<15μs VM-VM TCP延迟和32Gbps吞吐量。
2014年,微软在计算机架构领域的顶会ISCA上发表了一篇名为“A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services”的论文,详细介绍了微软Catapult项目团队如何在其数据中心里的1632台服务器中部署了英特尔StraTIx V FPGA,并用FPGA对必应(Bing)搜索引擎的文件排名运算进行了硬件加速,得到了高达95%的吞吐量提升。这标志FPGA不再仅仅是硬件公司的专属产品,而是可以有效的应用于像微软这样的互联网公司,并有机会部署在谷歌、亚马逊、阿里等其他互联网巨头的服务器中。微软也是第一个在公有云基础设施中部署FPGA的主要云服务提供商。
总结
据预测,到2024年,SmartNIC市场规模将超过6亿美元,占全球以太网适配器市场的23%。云服务提供商的不断纵向扩容敦促着他们持续增加 SmartNIC 的部署,而电信服务提供商则是另一大潜力的市场,他们正考虑将 SmartNIC 从核心网集成到边缘网,为 NFV和AI推断等应用提供服务。未来,SmartNIC市场或超百亿。