目录


文章目录

目录

SmartNIC 基本组成示例

1. base NIC

2. 添加 DMA Engine 功能

3. 添加 Filter Engine 功能。

4. 添加外部 DRAM 到 Filter Engine

5. 添加 L2/L3 Offload Engine 功能

6. 添加 Tunnel Offload Engine 功能

7. 添加 Deep Buffering(深度缓冲)外部存储

8. 添加一个具有自己的外部 DRAM 存储的 Flows Engine 功能

9. 添加 TCP Offload Engine 功能

10. 添加 Security Offload Engine 功能

11. 添加 QoS Engine 功能

12. 添加一个可编程的数据包解码器

13. 添加一个或多个 ASIC 板载处理器


SmartNIC 基本组成示例

以 FPGA 来实现 Smart NIC 举例,了解到底有什么 workload 是可以 Offload 到 Smart NIC 上进行处理的。并且,使用 FPGA 可以根据需要轻松添加、或删除这些功能。

示例 1 到 13 说明了可以添加到 base NIC 的处理元素,以创建功能更加强大的 Smart NIC。

1. base NIC

采用多个 Ethernet MAC 和一个用于 Host CPU 接口的 PCIe Block。Host CPU 必须处理所有的 Ethernet 通信,包括主动的从 NIC 的存储器读取 pkts。

SmartNIC/DPU — 基本组成示例_数据

2. 添加 DMA Engine 功能

NIC 的存储器 Mapping 到 Memory,CPU 可以直接从 Memory 读取 pkts,而不需要从 NIC 存储器中 Copy,从而减少了 Host CPU 的工作负载。

SmartNIC/DPU — 基本组成示例_网络_02

3. 添加 Filter Engine 功能。

过滤器会阻止无需 Host CPU 处理的 pkts,进一步减少了 Host CPU 的任务负载。

SmartNIC/DPU — 基本组成示例_外部存储_03

4. 添加外部 DRAM 到 Filter Engine

外部 DRAM 用于存储 Filter Engine 的 Rules,有了足够的外部 DRAM,NIC 可以管理数百万条规则。

SmartNIC/DPU — 基本组成示例_网络_04

5. 添加 L2/L3 Offload Engine 功能

用于处理 NIC 的 Ethernet Ports 之间的低层 L2 交换和 L3 路由,进一步减少 Host CPU 的工作负载。同样的,可以为 L2/L3 Offload Engine 共用外部 DRAM 来缓冲网络数据包。

SmartNIC/DPU — 基本组成示例_网络_05

6. 添加 Tunnel Offload Engine 功能

用于卸载各种隧道协议封包(e.g. VxLAN、GRE),并进一步减轻 Host CPU 的周期密集型隧道性需求。

SmartNIC/DPU — 基本组成示例_包交换_06

7. 添加 Deep Buffering(深度缓冲)外部存储

用于对输入的 pkts 进行深度缓冲,从而实现了线速数据包交换和具有多个队列的分层 QoS 调度。

SmartNIC/DPU — 基本组成示例_包交换_07

8. 添加一个具有自己的外部 DRAM 存储的 Flows Engine 功能

使 Smart NIC 的 Routing Engine 能够处理数百万个路由表条目,同时还有助于卸载 NAT/PAT 网络能力。

SmartNIC/DPU — 基本组成示例_外部存储_08

9. 添加 TCP Offload Engine 功能

用于处理 TCP 协议的全部或部分工作,这样可以在不消耗更多 CPU 周期的情况下提高 Smart NIC 性能。

SmartNIC/DPU — 基本组成示例_外部存储_09

10. 添加 Security Offload Engine 功能

将部分/全部安全引擎添加到 Smart NIC 中,以每个 Flows 为基础从 Host CPU 卸载加密/解密任务。

SmartNIC/DPU — 基本组成示例_外部存储_10

11. 添加 QoS Engine 功能

Smart NIC 以此提供 SLA(服务等级协议)功能,而无需 Host CPU 的干预。

SmartNIC/DPU — 基本组成示例_数据_11

12. 添加一个可编程的数据包解码器

该解码器将类似 P4 的可编程功能集成到 Smart NIC 中。P4 是一种标准的网络编程语言,专门用于描述和编程分组数据包转发面的操作。

SmartNIC/DPU — 基本组成示例_数据_12

13. 添加一个或多个 ASIC 板载处理器

它们为 Smart NIC 提供了完整的软件可编程性(用于诸如 OAM 等任务),进一步实现了 Host CPU 的任务卸载。

SmartNIC/DPU — 基本组成示例_数据_13