DOCA 文档 v2.10.0

DOCA 文件完整性应用程序指南

本指南提供了基于 NVIDIA® BlueField® DPU 的文件完整性实现。

文件完整性应用程序展示了如何使用 DOCA ComchDOCA SHA 库安全地发送和接收文件。

应用程序的逻辑包括客户端和服务器端

  • 客户端 – 应用程序打开一个文件,计算其 SHA(安全哈希算法)摘要,并将源文件的摘要与文件本身一起发送到服务器

  • 服务器端 – 应用程序计算接收文件的 SHA,并将接收到的摘要与计算出的摘要进行比较,以检查文件是否已损坏

注意

SHA 硬件加速仅在 BlueField-2 DPU 上可用。此应用程序在 BlueField-3 上不受支持。

文件完整性应用程序以客户端模式(主机)和服务器模式(DPU)运行。

sys-design-version-1-modificationdate-1734469587867-api-v2.png

文件完整性应用程序基于 DOCA Comm Channel API 运行,以从主机和 DPU 发送和接收文件。

app-arch-version-1-modificationdate-1734469588703-api-v2.png

  1. 连接由 Comm Channel API 在双方建立。

  2. 客户端使用 DOCA SHA 库提交 SHA 作业,并将结果发送到服务器。

  3. 客户端发送发送文件内容所需的消息数量。

  4. 客户端发送大小不超过 4032 字节的数据段。

  5. 服务器在每个接收到的段上提交部分 SHA 作业。

  6. 当文件的所有部分都成功接收时,服务器向客户端发送 ACK 消息。

  7. 服务器将接收到的 SHA 与计算出的 SHA 进行比较。

此应用程序利用以下 DOCA 库

有关更多信息,请参阅它们各自的编程指南。

信息

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

DOCA 参考应用程序的安装包包含应用程序的源代码以及匹配的编译说明。这允许“按原样”编译应用程序,并提供修改源代码,然后编译应用程序新版本的能力。

提示

有关应用程序以及开发和编译技巧的更多信息,请参阅《DOCA 参考应用程序》页面。

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

编译所有应用程序

所有 DOCA 应用程序都在一个 meson 项目下定义。因此,默认情况下,编译包括所有应用程序。

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

复制
已复制!
            

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

信息

doca_file_integrity/tmp/build/file_integrity/ 下创建。


仅编译当前应用程序

要直接仅构建文件完整性应用程序

复制
已复制!
            

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

信息

doca_file_integrity/tmp/build/file_integrity/ 下创建。

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

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

    • enable_all_applications 设置为 false

    • enable_file_integrity 设置为 true

  2. 运行以下编译命令

    复制
    已复制!
                

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

    信息

    doca_file_integrity/tmp/build/file_integrity/ 下创建。

故障排除

对于应用程序编译中遇到的任何问题,请参阅《DOCA 故障排除》

应用程序执行

文件完整性应用程序以源代码形式提供。因此,在执行应用程序之前需要进行编译。

  1. 应用程序使用说明

    复制
    已复制!
                

    Usage: doca_file_integrity [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: -p, --pci-addr DOCA Comm Channel device PCI address -r, --rep-pci DOCA Comm Channel device representor PCI address -f, --file File to send by the client / File to write by the server -t, --timeout Application timeout for receiving file content messages, default is 5 sec

    信息

    此使用情况打印输出可以使用 -h(或 --help)选项打印到命令行

    复制
    已复制!
                

    ./doca_file_integrity -h

    信息

    有关更多信息,请参阅“命令行标志”部分。

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

    复制
    已复制!
                

    ./doca_file_integrity -p 03:00.0 -r 3b:00.0 -f received.txt

    注意

    DOCA Comm Channel 设备 PCIe 地址 (03:00.0) 和 DOCA Comm Channel 设备代表 PCIe 地址 (3b:00.0) 都应与所需 PCIe 设备的地址匹配。

  3. 在主机上运行应用程序的 CLI 示例

    复制
    已复制!
                

    ./doca_file_integrity -p 3b:00.0 -f send.txt

    注意

    DOCA Comm Channel 设备 PCIe 地址 (3b:00.0) 应与所需 PCIe 设备的地址匹配。

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

    复制
    已复制!
                

    ./doca_file_integrity --json [json_file]

    例如

    复制
    已复制!
                

    ./doca_file_integrity --json ./file_integrity_params.json

    注意

    在执行之前,请确保使用的 JSON 文件包含正确的配置参数,尤其是部署所需的 PCIe 地址。

命令行标志

标志类型

短标志

长标志/JSON 键

描述

JSON 内容

通用标志

h

help

打印帮助概要

N/A

v

version

打印程序版本信息

N/A

l

log-level

设置应用程序的日志级别

  • DISABLE=10

  • CRITICAL=20

  • ERROR=30

  • WARNING=40

  • INFO=50

  • DEBUG=60

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

复制
已复制!
            

"log-level": 60

N/A

sdk-log-level

设置程序的日志级别

  • DISABLE=10

  • CRITICAL=20

  • ERROR=30

  • WARNING=40

  • INFO=50

  • DEBUG=60

  • TRACE=70

复制
已复制!
            

"sdk-log-level": 40

j

json

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

N/A

程序标志

f

file

对于客户端 – 要发送的文件路径

对于服务器 – 将文件写入的路径

注意

这是一个强制标志。

复制
已复制!
            

"file": "/tmp/data.txt"

p

pci-addr

Comm Channel DOCA 设备 PCIe 地址

注意

这是一个强制标志。

复制
已复制!
            

"pci-addr": 03:00.1 

r

rep-pci

Comm Channel DOCA 设备代表 PCIe 地址

注意

此标志仅在 DPU 上是强制性的。

复制
已复制!
            

"rep-pci": b1:00.1 

信息

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


故障排除

对于 DOCA 应用程序的安装或执行中遇到的任何问题,请参阅《DOCA 故障排除》

  1. 解析应用程序参数。

    1. 初始化参数解析器资源并注册 DOCA 通用参数。

      复制
      已复制!
                  

      doca_arg_init();

    2. 注册文件完整性应用程序参数。

      复制
      已复制!
                  

      register_file_integrity_params();

    3. 解析应用程序参数。

      复制
      已复制!
                  

      doca_argp_start();

  2. 设置端点属性。

    复制
    已复制!
                

    set_endpoint_properties();

    1. 设置最大消息大小为 4032 字节。

    2. 设置每个连接允许的最大消息数。

  3. 创建 Comm Channel 端点。

    复制
    已复制!
                

    doca_comm_channel_ep_create();

    1. 为客户端/服务器创建端点。

  4. 创建 SHA 上下文。

    复制
    已复制!
                

    doca_sha_create();

    1. 创建 SHA 上下文以提交客户端/服务器的 SHA 作业。

  5. 运行客户端/服务器主逻辑。

    复制
    已复制!
                

    file_integrity_client/server();

  6. 清理文件完整性应用程序。

    复制
    已复制!
                

    file_integrity_cleanup();

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

  • /opt/mellanox/doca/applications/file_integrity/

  • /opt/mellanox/doca/applications/file_integrity/file_integrity_params.json

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