业界最近在云数据中心服务器中开始使用智能网卡(SmartNIC),通过执行网络数据通路处理来卸载服务器中的CPU来提高性能,引起了业界的热议。在网卡上执行网络卸载并不新鲜,很多传统网卡支持卸载校验和分段等功能。而随着软件定义网络(SDN)和网络功能虚拟化(NFV)的发展,由此驱动的云数据中心网络架构的转变,对Smart NIC提出了需求。
为什么需要Smart NIC
对Smart NIC的需求主要有以下三个方面:
- 随着VxLan等隧道协议的引入和虚拟交换的复杂行为,基于服务器的网络数据平面的复杂性大大提高
- 增加网络接口带宽意味着在软件中执行这些功能会在CPU资源上产生不能承受的负载,造成剩余CPU资源过少甚至不能运行应用程序
- SDN的关键需求是网络数据平面必须互换,固定功能卸载技术不适用。
Smart NIC到底是什么?
标准网卡(NIC)和智能网卡(Smart NIC)的根本区别在于Smart NIC从主机CPU卸载的处理量,Smart NIC是围绕FPGA平台设计的,FPGA被设计为接受本地化编程,一旦安装就可以轻松更新。Smart NIC需要满足以下特征:
- 能够实现复杂的基于服务器的网络数据平面功能,包括多个匹配动作处理,隧道终止和发起,计量和整形以及流量统计。
- 通过固件加载或客户编程来支持可替换的数据平面,对可执行的功能几乎没有预定的限制
- 与现有的开源生态系统无缝集成,最大限度地提高软件功能
Smart NIC加速SDN的实践落地
具有高级编程功能Smart NIC能够提升应用程序和虚拟化性能,实现软件定义网络(SDN)的诸多优势。通过在每台服务器上使用Smart NIC,运营商可以确保网络虚拟化、负载均衡和其他低级功能从服务器CPU中卸载,确保为应用提供最大的处理能力。此外,Smart NIC还能够提供分布式硬件资源,可用于卸载或加速特定应用程序。运营商可以使用Smart NIC厂商或合作伙伴提供的软件,开发自己的软件或提供接入服务,以便用户使用定制化的软件。
过去30年来,网卡已经从具有单一MAC,PHY和系统接口的简单网卡发展到具有一个,两个或更多网络接口和用于TCP/IP的硬件卸载引擎的高性能适配器、虚拟化等功能。最新的NIC基于支持10Gbit/s,25Gbit/s,50Gbit/s或100Gbit/s网络接口的输入/输出(I/O)控制器。Smart NIC将FPGA、处理器或基于处理器的智能I/O控制器与分组处理和虚拟化加速集成在一起。大多数Smart NIC可以使用标准的FPGA或处理器开发工具进行编程,越来越多的厂商也开始增加了对可编程语言P4的支持。
Heavy Reading近期发布的一个针对18家厂商进行分析的报告,分析了基于FPGA和处理器的Smart NIC,确定了其关键特性,并指出了为服务提供商和电信解决方案提供商带来的优势。
目前业界提供基于FPGA的Smart NIC的厂商包括Accolade、BittWare、Enyx、Ethernity、Napatech、Netcope、Reflex CES、Silicom和Solarflare。这些适配器集成了来自Intel或Xilinx的FPGA,其中一些采用了最新的Stratix 10和UltraScale + FPGA的FPGA。基本的I/O控制器功能是使用FPGA实现的,或者由单独的I/O控制器进行处理。Broadcom,Cavium,Intel,Kalray,Mellanox,Netronome,Silicom和SolidRun均可提供基于处理器的Smart NIC。Smart NIC使用带有集成处理器内核或可编程交换的处理器或智能I/O处理器,亚马逊和谷歌已经开发了自己的Smart NIC ASIC。
从虚拟化应用程序中迁移到SDN可能会导致性能下降,并延长使用专有系统的延迟时间。Smart NIC为SDN和虚拟化应用程序提供硬件加速与网络接口紧密结合,并可分布在大型服务器网络中。Smart NIC正在成为很多大型超大规模数据中心的标准服务器,业界正在努力覆盖从基本的Smart NIC到将从服务器CPU卸载重要应用功能并处理多个100 Gbit/s连接的网卡的所有不同的需求,运营商可以使用Smart NIC来加速特定应用和虚拟化功能,并且通过正确的语言和工具链支持,为用户提供应用加速即服务的附加价值。