SmartNIC / 智能网卡 发展现状

SmartNIC / 智能网卡 发展现状

Created
Aug 1, 2021 12:22 PM
Tags
SmartNIC
Category
Networking
Last Edited
Last updated July 15, 2022
Abstract
本文主要总结了 SmartNIC 出现的缘由,SmartNIC 的主要种类以及不同种类的主要应用场景
Related to Reading List (Column)

一、什么是 SmartNIC

1. 传统网卡

传统网卡仅实现数据链路层和物理层的功能,而端系统CPU负责处理网络协议栈中更高层的逻辑。CPU按照网络协议栈中传输层、路由层的逻辑,负责数据包的封装和解封;网卡则负责更底层的数据链路层帧的封装和解封,以及物理层电气信号的相应处理。
比如 Intel AX200 无线网卡
notion image
  • 附带了 Wifi 天线
  • 使用 PCIE 3.0 × 4 接口
notion image
  • 单口最高支持 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已经开始了应用
notion image

b. 可编程性

  • 随着 VxLAN 等 Overlay 协议以及 Open vSwitch 等虚拟交换机技术的引入,使得基于服务器的网络数据平面的复杂性急剧增加。
  • 传统网卡固定功能的流量处理功能无法适应 SDN 相关技术带来的技术的快速迭代。

3. SmartNIC

总体来说,引入 SmartNIC 的目的在于业务卸载(offload),具体来说有以下几点:
  • 将虚拟交换机功能完全从服务器 CPU 转移到网卡,释放昂贵的服务器 CPU 的计算能力以返回给应用程序。
  • 实现基于服务器的复杂网络数据平面功能,例如多匹配操作处理、计量整形、流统计等。
  • 通过更新的固件负载或客户编程来支持可替代的数据平面,对执行的功能几乎没有预先设定限制。
  • 与现有的开源生态系统无缝协作,以最大程度地提高软件功能的速度和影响力。

二、SmartNIC 的分类

1. 按设计方式

notion image

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 将主机网络卸载到硬件上。
notion image
其在NSDI 2018上发表了一篇名为“Azure accelerated networking: SmartNICs in the public cloud”的论文,里面介绍了他们最终选了 FPGA (Intel Stratix V D5),部署 SmartNIC 的主要目的在于加速网络的处理以及支持未来 SDN 方面的更多应用[^3],目前已经部署在了超过100万台主机上。

2. Intel

N3000

notion image
  • 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

notion image
  • 8 × A72 + ConnectX-6 Dx
  • PCIE 4.0 × 16
  • 2 * 200 Gb/s
  • 能运行独立的操作系统
  • 使用 DOCA 进行功能开发,类似 GPU 的 CUDA
  • 愿景是使用 DPU 接管网络、安全、存储、设备管理
notion image
  • 主要场景:
    • 云游戏:将网络优化与上层服务完全解耦,无论上层是 Win、Linux、x86、Arm 都可以兼容
    • 云原生超算:因为云往往意味着虚拟化,而这往往意味着 10% 以上的性能损失,这与超算的目的是相违背的。因此可以使用 DPU 去进行虚拟化、安全管理、隔离控制。甚至在未来可以将DPU、CPU、GPU 当作一个分布式系统,而 DPU 便可以作为其中的核心,CPU 和 GPU 只是适合不同计算任务的加速器[^8]。目前英伟达在收购 ARM 后,几乎是唯一可以实现这个想法的公司。同时在今年的 GTC 上,DPU 已经作为单独一个模块来讲,可以看出其重要程度。
      •  

    引用