DOCA 文档 v2.10.0

DOCA Eth L2 转发应用程序指南

本文档介绍了基于 NVIDIA® BlueField® DPU 的以太网 L2 转发实现。

以太网 L2 转发应用程序是一个基于 DOCA 以太网 的应用程序,它将流量从单个 RX 端口转发到单个 TX 端口,反之亦然,利用 DOCA 的任务/事件批处理功能来增强性能。

该应用程序可以在主机和 BlueField 上运行,并且有两种主要模式

  • 双向转发 – 设备 1 → 设备 2 设备 2 → 设备 1

  • 单向转发 – 设备 1 → 设备 2 设备 2 → 设备 1

单向模式提供更好的性能,提高了数据包转发速率。

下图显示了在主机上运行的应用程序

以太网 L2 转发应用程序在主机或 BlueField 上运行。

image-2024-4-24_19-22-9-1-version-1-modificationdate-1734469528930-api-v2.png

下图显示了在 BlueField 上运行的应用程序

image-2024-4-25_18-4-10-1-version-1-modificationdate-1734469528700-api-v2.png

以太网 L2 转发应用程序在 DOCA 以太网 API 之上运行,以形成两个端口之间的(双向/单向)L2 转发。

image-2024-4-28_12-3-37-1-version-1-modificationdate-1734469528307-api-v2.png

  1. 打开了两个 DOCA 设备。

  2. 创建了两个 DOCA mmap。

  3. 配置并启动了两个 DOCA 流端口,每个端口都使用不同的已打开 DOCA 设备。

  4. 初始化了两个 DOCA 以太网 TXQ 和 RXQ 上下文,每个 TXQ-RXQ 对都使用不同的已打开 DOCA 设备,以便将流量从设备引导至相应的 RXQ,并从相应的 TXQ 引导至设备。

  5. 转发 - 设备 x 接收的数据包被引导至 RXQ x,然后分配给 TXQ y 并由设备 y 发送(反之亦然)。

此应用程序利用以下 DOCA 库

有关所用 DOCA 库的更多信息,请参阅相应的编程指南。

安装

有关如何安装 BlueField 相关软件的详细信息,请参阅 DOCA Linux 安装指南

概述

DOCA 参考应用程序的安装包含应用程序的源代码以及匹配的编译说明。这允许“按原样”编译应用程序,并提供修改源代码然后编译应用程序新版本的能力。有关应用程序的更多信息,以及开发和编译技巧,请参阅 DOCA 参考应用程序 主要指南。

应用程序的源代码可以在应用程序的目录下找到:/opt/mellanox/doca/applications/eth_l2_fwd/

编译所有应用程序

应用程序都在单个 meson 项目下定义,这意味着默认编译将编译所有 DOCA 应用程序。

要一起构建所有应用程序,请运行

复制
已复制!
            

cd /opt/mellanox/doca/applications/ meson /tmp/build ninja -C /tmp/build

注意

doca_eth_l2_fwd 将在 /tmp/build/eth_l2_fwd/ 下创建。


仅编译当前应用程序

  1. 要直接仅构建以太网 L2 转发应用程序

    复制
    已复制!
                

    cd /opt/mellanox/doca/applications/ meson /tmp/build -Denable_all_applications=false -Denable_eth_l2_fwd=true ninja -C /tmp/build

    注意

    doca_eth_l2_fwd 将在 /tmp/build/eth_l2_fwd/ 下创建。

  2. 或者,可以在 meson_options.txt 文件中设置所需的标志,而不是在编译命令行中提供它们

    1. 编辑 /opt/mellanox/doca/applications/meson_options.txt 中的以下标志

      • enable_all_applications 设置为 false

      • enable_eth_l2_fwd 设置为 true

    2. 应使用与上一节中所示相同的编译命令

      复制
      已复制!
                  

      cd /opt/mellanox/doca/applications/ meson /tmp/build ninja -C /tmp/build

      注意

      doca_eth_l2_fwd 将在 /tmp/build/eth_l2_fwd/ 下创建。

故障排除

有关编译 DOCA 应用程序时可能遇到的任何问题,请参阅 DOCA 故障排除

应用程序执行

以太网 L2 转发应用程序以源代码形式提供,因此在执行应用程序之前需要进行编译。

  1. 应用程序使用说明

    复制
    已复制!
                

    Usage: doca_eth_l2_fwd [DOCA Flags] [Program Flags]   DOCA Flags: -h, --help Print a help synopsis -v, --version Print program version information -l, --log-level Set the (numeric) log level for the program <10=DISABLE, 20=CRITICAL, 30=ERROR, 40=WARNING, 50=INFO, 60=DEBUG, 70=TRACE> --sdk-log-level Set the SDK (numeric) log level for the program <10=DISABLE, 20=CRITICAL, 30=ERROR, 40=WARNING, 50=INFO, 60=DEBUG, 70=TRACE> -j, --json <path> Parse all command flags from an input json file   Program Flags: -d, --devs-names <name1,name2> Set two IB devices names separated by a comma, without spaces. -r, --rate <rate> Set packets receive rate (in [MB/s]), default is 12500. -ps, --pkt-size <size> Set max packet size (in [B]), default is 1600. -t, --time <time> Set packet max process time (in [μs]), default is 1. -nt, --num-tasks <num> Set number of tasks per batch, default is 128. -nb, --num-batches <num> Set number of task batches, default is 32. -o, --one-sided-forwarding <num> Set one-sided forwarding: 0 - two-sided forwarding, 1 - device 1 -> device 2, 2 - device 2 -> device 1. default is 0. -f, --max-forwardings <num> Set max forwardings after which the application run will end, default is 0, meaning no limit.

    有关更多信息,请参阅下面的 命令行标志 部分。

    注意

    可以使用 -h (或 --help) 选项将上述用法打印到命令行

    复制
    已复制!
                

    ./doca_eth_l2_fwd -h

  2. BlueField主机 上运行应用程序的 CLI 示例

    复制
    已复制!
                

    ./doca_eth_l2_fwd -d mlx5_0,mlx5_1

    注意

    两个 IB 设备标识符 (mlx5_0, mlx5_1) 应与所需 IB 设备的标识符匹配。

  3. 该应用程序还支持基于 JSON 的部署模式,其中所有命令行参数都通过 JSON 文件提供

    复制
    已复制!
                

    ./doca_eth_l2_fwd --json [json_file]

    例如

    复制
    已复制!
                

    ./doca_eth_l2_fwd --json ./eth_l2_fwd_params.json

    注意

    在执行之前,请确保使用的 JSON 文件包含正确的配置参数,尤其是部署所需的所需 IB 设备名称。

命令行标志

标志类型

短标志

长标志/JSON 键

描述

JSON 内容

通用标志

h

help

打印帮助概要

不适用

v

version

打印程序版本信息

不适用

l

log-level

设置应用程序的日志级别

  • DISABLE=10

  • CRITICAL=20

  • ERROR=30

  • WARNING=40

  • INFO=50

  • DEBUG=60

  • TRACE=70(需要使用跟踪级别支持进行编译)

复制
已复制!
            

"log-level": 60

不适用

sdk-log-level

设置程序的日志级别

  • DISABLE=10

  • CRITICAL=20

  • ERROR=30

  • WARNING=40

  • INFO=50

  • DEBUG=60

  • TRACE=70

不适用

j

json

从输入 json 文件解析所有命令标志

不适用

程序标志

d

devs-names

两个 IB 设备名称,用逗号分隔,没有空格。

注意

这是一个强制标志。

复制
已复制!
            

"devs-names": "mlx5_0,mlx5_1"

r

rate

RX 端口预计接收流量的速率(单位:[MB/s])。

复制
已复制!
            

"rate": 12500

ps

pkt-size

接收数据包的最大大小(单位:[B])。

复制
已复制!
            

"pkt-size": 1600

t

time

处理单个数据包的最长时间。

复制
已复制!
            

"time": 1

nt

num-tasks

每个任务批次要设置的任务数。

复制
已复制!
            

"num-tasks": 128

nb

num-batches

为 TX 端设置的任务批次数。

复制
已复制!
            

"num-batches": 32

o

one-sided-forwarding

设置 3 个选项之一的标志

0 - 双向转发。

1 - 从设备 1 到设备 2 的单向转发。

2 - 从设备 2 到设备 1 的单向转发。

复制
已复制!
            

"one-sided-forwarding": 0

f

max-forwardings

最大转发次数

复制
已复制!
            

"max-forwardings": 32

有关支持的标志和执行模式的更多信息,请参阅 DOCA Arg Parser

故障排除

有关安装或执行 DOCA 应用程序时可能遇到的任何问题,请参阅 DOCA 故障排除

  1. 解析应用程序参数。

    1. 初始化 Arg parser 资源并注册 DOCA 通用参数。

      复制
      已复制!
                  

      doca_argp_init();

    2. 注册以太网 L2 转发应用程序参数。

      复制
      已复制!
                  

      register_eth_l2_forwarding_params();

    3. 解析参数。

      复制
      已复制!
                  

      doca_argp_start();

      1. 解析 DOCA 标志。

      2. 解析应用程序参数。

  2. 执行以太网 L2 转发应用程序主逻辑。

    复制
    已复制!
                

    eth_l2_fwd_execute();

    1. 打开两个选定的 DOCA 设备。

    2. 初始化必要的 DOCA Core 对象。

    3. 初始化设备的 ETH RXQ/TXQ 上下文。

    4. 转发数据包。

  3. 清理应用程序资源。

    复制
    已复制!
                

    eth_l2_fwd_cleanup();

    1. 停止所有上下文并耗尽任务。

    2. 释放所有应用程序资源。

  4. Arg parser 销毁。

    复制
    已复制!
                

    doca_argp_destroy()

  • /opt/mellanox/doca/applications/eth_l2_fwd/

  • /opt/mellanox/doca/applications/eth_l2_fwd/eth_l2_fwd_params.json

© 版权所有 2025 NVIDIA。 上次更新于 2025 年 2 月 12 日。