SmartNIC 就是通过从 Host CPU 上 Offload(卸载)工作负载到网卡硬件,以此提高 Host CPU 的处理性能。其中的 “工作负载” 不仅仅是 Networking,还可以是 Storage、Security 等。
根据智能网卡设计采用形式,将它分为:
1、多核智能网卡,基于包含多个 CPU 内核的 ASIC(特殊应用集成电路)芯片:ASIC 具有价格优势,但灵活性有限,尽管基于 ASIC 的 NIC 相对容易配置,但最终功能将受到基于 ASIC 中定义的功能的限制,这可能会导致某些工作负载无法得到支持。
2、基于 FPGA(可编程门阵列)的智能网卡:FPGA 是高度可编程的,并且可以相对有效地支持几乎任何功能,不过众所周知的是,FPGA 最大的问题是编程难度大且价格昂贵。
3、FPGA 增强型智能网卡,将 FPGA 与 ASIC 网络控制器相结合。
同时,由于不同的供应商的架构不同,因此SmartNIC可以基于ASIC、FPGA和片上系统(SOC)三种技术实现。
不同实现方式的智能网卡在成本、编程的简易性和灵活性方面存在各种权衡。
网卡与智能网卡的性能对比(如表2所示)
以上内容整理自赛迪顾问《2021中国DPU行业发展白皮书》
多核智能网卡设计可能包括一个集成了许多 ASIC。这些 ASIC 内核通常是性能更高的 ARM 处理器,它们处理数据包并从主服务器 CPU(昂贵)上卸载任务。多核智能网卡 ASIC 还可以集成固定功能硬件引擎,它们可以卸载定义明确的任务,如标准化的安全和存储协议。
多核智能网卡至少受到两个制约因素的限制:
基于处理器的多核智能网卡设计在 10G 这一代网卡中得到了广泛的应用。然而,随着数据中心中的以太网数据速率从 10G 上升到 25G、40G、50G、100G 甚至更高,这些以软件为中心的多核智能网卡就已经难以跟上了。
这些多核智能网卡在这些较高的数据速率下无法达到所需的峰值带宽。同时,多核智能网卡 ASIC 中的固定功能引擎无法扩展去处理新的加密或安全算法,这是因为它们缺乏足够的可编程性,只能适应算法的细微改变。
基于 FPGA 的智能网卡利用 FPGA 更大硬件可编程性来构建卸载到智能网卡上的任务所需的任何数据平面功能。由于 FPGA 是可重编程的,利用 FPGA 实现的数据平面功能可以任意并且实时地去除和重新配置。所有这些卸载功能都以硬件而非软件速度运行。
与单纯基于软件的实现相比,基于 FPGA 的智能网卡设计可以将网络功能提速几个数量级。在智能网卡设计中使用 FPGA 可提供定制硬件的线速性能和功率效率,并能够创建支持复杂卸载任务和提高单数据流网络性能的深度数据包/网络处理流水线。
通过利用 FPGA 中固有的大量硬件并行性来复制这些流水线,可以提供巨大数据性能,足以满足基于更快的以太网网络的下一代数据中心架构的高性能、高带宽、高吞吐量需求。
对向后兼容性的需求催生了 FPGA 增强型智能网卡,它为多核智能网卡增加了 FPGA 功能。基于这种设计,网卡可以是现有的多核智能网卡,也可以只是一个简单的网卡专用集成电路(NIC ASIC)。
集成到这些设计中的网卡提供了向后兼容性,特别是对于超级管理程序的兼容性。因此,基于现有网卡的 FPGA 增强型智能网卡设计,加上用于扩展功能的 FPGA,可以立即实现其投资收益,因为它自动与现有网络 API 和接口协议兼容,因此可以使用现有的 API 和驱动程序。一个 FPGA 增强型智能网卡设计中的板载 FPGA 能够显著提高性能和扩展功能。
从网络虚拟化,看智能网卡发展史 - 腾讯云开发者社区-腾讯云
传统智能网卡 vs DPU智能网卡_光通信老兵的博客-CSDN博客_dpdk 智能网卡
NVIDIA ASAP² 技术保护并加速现代数据中心应用 - 知乎
FPGA智能网卡综述(5): FPGA inline - 知乎
《重识云原生系列》专题索引: