一、什么是 SmartNIC
1. 传统网卡
传统网卡仅实现数据链路层和物理层的功能,而端系统CPU负责处理网络协议栈中更高层的逻辑。CPU按照网络协议栈中传输层、路由层的逻辑,负责数据包的封装和解封;网卡则负责更底层的数据链路层帧的封装和解封,以及物理层电气信号的相应处理。
比如 Intel AX200 无线网卡
- 附带了 Wifi 天线
- 使用 PCIE 3.0 × 4 接口
- 单口最高支持 100GbE
- 使用 PCIE 4.0 × 16 接口
2. 网络处理带来的挑战
近年来公有云中虚拟化技术的发展以及SDN技术的兴起,对端系统协议栈提出了更高的要求,而传统的高性能网卡已经难以满足这些要求,可主要分为以下两个方面:
a. 性能
比如一个10 Gbps 网络接口,如果按照 MTU=1500 Byte 来算,大概需要 89 万 PPS( Packet Per Second) ,而在一个 8 核服务器上处理上限大约是 100 万 PPS。而且在现实网络环境中,包的平均大小会远小于 MTU,比如每个包 64 字节,这就需要 2000 万PPS。
而且近期存储的网络化,以前HDD的性能瓶颈是磁盘的物理转速上限,SSD没有这个限制,SSD拉高了存储带宽,因此数据中心通过网络共享存储资源这个需求,例如NVMe-oF,迅速把网络接口速率拉高。从1Gbps的网卡到10Gbps的网卡,业界走了近10年,但是25Gbps,似乎3年就成大趋势了,甚至100Gbps已经开始了应用。
b. 可编程性
- 随着 VxLAN 等 Overlay 协议以及 Open vSwitch 等虚拟交换机技术的引入,使得基于服务器的网络数据平面的复杂性急剧增加。
- 传统网卡固定功能的流量处理功能无法适应 SDN 相关技术带来的技术的快速迭代。
3. SmartNIC
总体来说,引入 SmartNIC 的目的在于业务卸载(offload),具体来说有以下几点:
- 将虚拟交换机功能完全从服务器 CPU 转移到网卡,释放昂贵的服务器 CPU 的计算能力以返回给应用程序。
- 实现基于服务器的复杂网络数据平面功能,例如多匹配操作处理、计量整形、流统计等。
- 通过更新的固件负载或客户编程来支持可替代的数据平面,对执行的功能几乎没有预先设定限制。
- 与现有的开源生态系统无缝协作,以最大程度地提高软件功能的速度和影响力。
二、SmartNIC 的分类
1. 按设计方式
a. ASIC
ASIC 在批量生产时因工艺简单所以价格会比较便宜,同时其比较容易上手使用,但功能受限于最初的设计。
b. FPGA
FPGA 的功能是高度可编程的,但其编程难度较大,且生产的价格昂贵。
c. Soc Based
性价比适中,可以使用高级编程语言进行功能开发。
2. 按应用场景
a. 网络加速(适合使用 ASIC、FPGA)
- 基础网络处理
- Overlay 协议处理(VxLAN、GRE)
- 加解密(IPSec、TLS)
b. 网络功能(适合 SOC)
- 虚拟交换机(OVS)
- 可编程的数据平面
- 提供虚拟化出来的服务(超算中心)
三、现有产品
1. Azure
2015年底开始实施了 AccelNet 计划,使用自研的 Azure SmartNIC 将主机网络卸载到硬件上。
其在NSDI 2018上发表了一篇名为“Azure accelerated networking: SmartNICs in the public cloud”的论文,里面介绍了他们最终选了 FPGA (Intel Stratix V D5),部署 SmartNIC 的主要目的在于加速网络的处理以及支持未来 SDN 方面的更多应用[^3],目前已经部署在了超过100万台主机上。
2. Intel
N3000
- Intel Arria 10 GT FPGA,处理速度 25.78 Gbps
- 9 GB 内存
- PCIE 3.0 × 16
- Intel XL710 NIC,2 × 25 GbE
- 主要用于网络加速,基于 NFV 实现一些网络功能的卸载,比如 vFirwall、SRv6、OvS
N5010
- 和 Silicom 公司合作
- Intel Stratix 10 DX210 FPGA
- PCIE 4.0 × 16
- Intel E810-CAM1 NIC,4 × 100 GbE
- 不光支持 NFV,还卸载了一些加解密功能,如 IPSec、TLS
C5020X
- 和 Inventec 公司合作
- 结合 FPGA (Stratix 10 DX) 和 至强 x86 SoC
- 内存:4G for FPGA,16G for SoC
- PCIE 3.0 × 8
- 2 * 25 GbE
- 除去上述功能外,能安装操作系统,带来更好的可扩展性
3. Nvidia
ConnectX-6 Dx
- 子公司 Mellanox 研发
- ASIC
- PCIE 4.0 × 16
- 2 * 200 Gb/s
- 支持加解密,通过 ASAP 框架支持一些 NFV 功能和 OvS 的包处理
- 针对 RDMA 进行了优化,支持RoCE、NVMe-oF
BlueField DPU
- 8 × A72 + ConnectX-6 Dx
- PCIE 4.0 × 16
- 2 * 200 Gb/s
- 能运行独立的操作系统
- 使用 DOCA 进行功能开发,类似 GPU 的 CUDA
- 愿景是使用 DPU 接管网络、安全、存储、设备管理
- 主要场景:
- 云游戏:将网络优化与上层服务完全解耦,无论上层是 Win、Linux、x86、Arm 都可以兼容
- 云原生超算:因为云往往意味着虚拟化,而这往往意味着 10% 以上的性能损失,这与超算的目的是相违背的。因此可以使用 DPU 去进行虚拟化、安全管理、隔离控制。甚至在未来可以将DPU、CPU、GPU 当作一个分布式系统,而 DPU 便可以作为其中的核心,CPU 和 GPU 只是适合不同计算任务的加速器[^8]。目前英伟达在收购 ARM 后,几乎是唯一可以实现这个想法的公司。同时在今年的 GTC 上,DPU 已经作为单独一个模块来讲,可以看出其重要程度。