一、ConnectX NIC
其搭载的 ASAP 框架提供了两种方案1:
1. ASAP Direct
- 主要配合 SR-IOV 技术使用,其在网卡中维护了一个 eSwitch 转发平面,来处理 SR-IOV 的流量。
- 当配合 OvS 使用时,主机中会维护一个 vSwitch 与 SDN controller 通信。
- 适合多租户的场景,也可以抛弃最上层的租户层。
- OvS 提供的 TC Flower 已经支持硬件卸载,可将规则卸载到网卡的 eSwitch 中。
2. ASAP Flow
- 主要用于配合 Linux Traffic Control (TC) 或者 Data Path Development Kit (DPDK) 使用。
- 与传统非 SDN 应用的卸载方案更类似。
- 网上的案例较少。
- 配合 DPDK rte-flow 进行硬件卸载 http://doc.dpdk.org/guides/nics/mlx5.html#supported-hardware-offloads
二、BlueField DPU
相比 ConnectX 网卡 多了一个 ARM SoC,因此可以运行操作系统,但需要分以下两种情况讨论:
1. 配合 DOCA
DOCA 是英伟达为 DPU 系列开发的 SDK
- 目前还在内测阶段,体验资格需要申请
- 预估能降低开发成本
2. 不配合 DOCA
- 如果没有 DOCA 的话,DPU 其实就相当于插了 ConnectX 的精简版服务器。
- 可以使用 DPDK rte-flow 进行硬件卸载。
- 感觉意义不大。
三、NetFPGA
为简化开发成本,目前较多方案是基于 SDNet 架构开发,SDNet 提供了一个编译器可以将 P4 程序编译成为 HDL 模块,写入到 NetFPGA 中。
通过使用 SUME 架构提供的 send_dig_to_cpu 和 dst_port 可以实现 slow_path ,通过 RMA 将其转发到主机中,然后上层程序可以通过调用 c 或 python 的 api 下发对应的规则到硬件中,以实现之后包的 fast_path。
SDNet 相比起标准的 P4C,缺失了一些功能:https://build-a-router-instructors.github.io/documentation/p4c-sdnet-missing-features.pdf
除去使用 P4 的方式,也可自己使用 PFGA 上的低级编程语言进行开发,但开发成本应该很高。
注: SDNet 由 XILINET 公司开发,但好像已经多年无人维护了,包的下载地址也已经失效,官网也仅能搜索到一份 SDNet 的日文介绍。
四、总结
卸载方案对比
- Mellanox ASAP2 Accelerated Switching and Packet Processing. https://www.mellanox.com/files/doc-2020/sb-asap2.pdf↩
- OvS Hardware Offload withTC Flower. http://www.openvswitch.org/support/ovscon2017/horman.pdf↩
- OpenVSwitch 硬件加速浅谈. https://www.sdnlab.com/23003.html↩