目录
文章目录
目录
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。
2. 添加 DMA Engine 功能
NIC 的存储器 Mapping 到 Memory,CPU 可以直接从 Memory 读取 pkts,而不需要从 NIC 存储器中 Copy,从而减少了 Host CPU 的工作负载。
3. 添加 Filter Engine 功能。
过滤器会阻止无需 Host CPU 处理的 pkts,进一步减少了 Host CPU 的任务负载。
4. 添加外部 DRAM 到 Filter Engine
外部 DRAM 用于存储 Filter Engine 的 Rules,有了足够的外部 DRAM,NIC 可以管理数百万条规则。
5. 添加 L2/L3 Offload Engine 功能
用于处理 NIC 的 Ethernet Ports 之间的低层 L2 交换和 L3 路由,进一步减少 Host CPU 的工作负载。同样的,可以为 L2/L3 Offload Engine 共用外部 DRAM 来缓冲网络数据包。
6. 添加 Tunnel Offload Engine 功能
用于卸载各种隧道协议封包(e.g. VxLAN、GRE),并进一步减轻 Host CPU 的周期密集型隧道性需求。
7. 添加 Deep Buffering(深度缓冲)外部存储
用于对输入的 pkts 进行深度缓冲,从而实现了线速数据包交换和具有多个队列的分层 QoS 调度。
8. 添加一个具有自己的外部 DRAM 存储的 Flows Engine 功能
使 Smart NIC 的 Routing Engine 能够处理数百万个路由表条目,同时还有助于卸载 NAT/PAT 网络能力。
9. 添加 TCP Offload Engine 功能
用于处理 TCP 协议的全部或部分工作,这样可以在不消耗更多 CPU 周期的情况下提高 Smart NIC 性能。
10. 添加 Security Offload Engine 功能
将部分/全部安全引擎添加到 Smart NIC 中,以每个 Flows 为基础从 Host CPU 卸载加密/解密任务。
11. 添加 QoS Engine 功能
Smart NIC 以此提供 SLA(服务等级协议)功能,而无需 Host CPU 的干预。
12. 添加一个可编程的数据包解码器
该解码器将类似 P4 的可编程功能集成到 Smart NIC 中。P4 是一种标准的网络编程语言,专门用于描述和编程分组数据包转发面的操作。
13. 添加一个或多个 ASIC 板载处理器
它们为 Smart NIC 提供了完整的软件可编程性(用于诸如 OAM 等任务),进一步实现了 Host CPU 的任务卸载。