Firewall Offload 调研

Firewall Offload 调研

Created
Sep 16, 2021 07:49 AM
Tags
Linux
SmartNIC
Category
Networking
Last Edited
Last updated July 15, 2022
Abstract
Related to Reading List (Column)

一、ConnectX NIC

其搭载的 ASAP 框架提供了两种方案1

1. ASAP Direct

notion image
  • 主要配合 SR-IOV 技术使用,其在网卡中维护了一个 eSwitch 转发平面,来处理 SR-IOV 的流量。
  • 当配合 OvS 使用时,主机中会维护一个 vSwitch 与 SDN controller 通信。
  • 适合多租户的场景,也可以抛弃最上层的租户层。
  • OvS 提供的 TC Flower 已经支持硬件卸载,可将规则卸载到网卡的 eSwitch 中。
notion image

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 中。
notion image
通过使用 SUME 架构提供的 send_dig_to_cpu 和 dst_port 可以实现 slow_path ,通过 RMA 将其转发到主机中,然后上层程序可以通过调用 c 或 python 的 api 下发对应的规则到硬件中,以实现之后包的 fast_path。
notion image
SDNet 相比起标准的 P4C,缺失了一些功能:https://build-a-router-instructors.github.io/documentation/p4c-sdnet-missing-features.pdf
除去使用 P4 的方式,也可自己使用 PFGA 上的低级编程语言进行开发,但开发成本应该很高。
注: SDNet 由 XILINET 公司开发,但好像已经多年无人维护了,包的下载地址也已经失效,官网也仅能搜索到一份 SDNet 的日文介绍

四、总结

卸载方案对比
ConnectX-6
BlueField
NetFPGA
基于 Open vSwitch TC Flower 实现
基于 DPDK rte-flow 实现(无DOCA情况下)
基于 p4 进行下发
低(仅需开发一个规则生成程序,然后配置 TC Flower 即可)
中(需开发一个规则生成程序,以及使用 DPDK 编写一个 rte-flow 处理程序)
中(需开发一个规则生成程序,以及使用 p4 编写一个包处理程序)
6000+
1w+

  1. Mellanox ASAP2 Accelerated Switching and Packet Processing. https://www.mellanox.com/files/doc-2020/sb-asap2.pdf
  1. OvS Hardware Offload withTC Flower. http://www.openvswitch.org/support/ovscon2017/horman.pdf
  1. OpenVSwitch 硬件加速浅谈. https://www.sdnlab.com/23003.html