DOCA 文档 v2.10.0

InfiniBand QoS

服务质量 (QoS) 需求源于在 IB 网络上实现 I/O 整合。由于多个应用程序和 ULP 共享同一 fabric,因此需要一种方法来控制它们对网络资源的使用。

image2019-2-28_12-25-37-version-2-modificationdate-1733170749650-api-v2.png

基本需求是区分提供给不同流量的服务级别,以便可以实施策略并控制每个流量对 fabric 资源的利用率。

InfiniBand 架构规范定义了若干硬件功能和管理接口来支持 QoS

最多 15 条虚拟通道 (VL) 以非阻塞方式传输流量

  • 不同 VL 流量之间的仲裁由两优先级加权轮询仲裁器执行。仲裁器可通过 (VL, 权重) 对序列以及在服务低优先级之前要处理的最大高优先级信用额度进行编程

  • 数据包在其标头 SL 字段中携带 0 到 15 范围内的服务等级标记

  • 每个交换机都可以根据可编程表 VL=SL-to-VL-MAP(入端口、出端口、SL)将其 SL 的传入数据包映射到特定的输出 VL

  • 子网管理器通过将参数作为对路径记录 (PR) 或多路径记录 (MPR) 查询的响应来控制每个通信流的参数

DiffServ 架构(IETF RFC 2474 和 2475)广泛用于高度动态的 fabric 中。以下小节提供了各种软件元素的函数定义,这些软件元素在 NVIDIA OFED 软件堆栈上启用类似 DiffServ 的架构。

QoS 功能在 SM/SA、CMA 和各种 ULP 之间分配。我们采用“时间顺序方法”来描述整个系统如何工作。

  1. 网络管理员(人)提供一组规则(策略),这些规则定义了网络的配置方式以及其资源如何分配给不同的 QoS 级别。该策略还定义了如何确定每个应用程序或 ULP 或服务使用哪个 QoS 级别。

  2. SM 分析提供的策略以查看其是否可实现,并执行必要的 fabric 设置。此策略的一部分定义了每个分区的默认 QoS 级别。SA 得到增强,可以将请求的源、目标、QoS 类、服务 ID、PKey 与策略进行匹配,以便客户端(ULP、程序)可以获得策略强制执行的 QoS。SM 还可以设置具有适当 IPoIB 广播组的分区。此广播组携带其 QoS 属性:SL、MTU、速率和数据包生存时间。

  3. 正在设置 IPoIB。IPoIB 使用多播组上可用的 SL、MTU、速率和数据包生存时间,该多播组形成此分区的广播组。

  4. 提供非基于 IB 连接管理的 MPI 应配置为使用硬编码的 SL 运行。它为每个打开的 QP 使用这些 SL。

  5. 使用 CM 接口(如 SRP)的 ULP 具有自己预先分配的服务 ID,并在获取 PathRecord/MultiPathRecord (PR/MPR) 以建立连接时使用它。接收 PR/MPR 的 SA 将其与策略进行匹配,并返回适当的 PR/MPR,包括 SL、MTU、速率和生存时间。

  6. ULP 和程序(例如 SDP)使用 CMA 建立 RC 连接,并向 CMA 提供目标 IP 和端口号。ULP 也可能提供 QoS 类。然后,CMA 为 ULP 创建服务 ID,并在 PR/MPR 请求中传递此 ID 和可选的 QoS 类。生成的 PR/MPR 用于配置连接 QP。

PathRecord 和 Multi Path Record 的 QoS 增强

如上所述,PathRecordMultiPathRecord 属性得到增强,以携带作为 64 位值的服务 ID。还提供了一个新字段 QoS 类。

一个新的功能位描述了 SA 类端口信息中的 SM QoS 支持。这种方法通过不引入新的 PR/MPR 属性集,为现有的访问层和 ULP 提供了一条简单的迁移路径。

QoS 策略在独立文件中指定,分为以下四个小节

端口组

共享相同设置的一组 CA、路由器或交换机。端口组可以是分区管理器策略定义的分区、GUID 列表或基于 NodeDescription 的端口名称列表。

Fabric 设置

定义应如何设置 SL2VL 和 VLArb 表。

注意

在 OFED 中,策略的这一部分被忽略。SL2VL 和 VLArb 表应在 OpenSM 选项文件 (opensm.opts) 中配置。


QoS 级别定义

本节定义了客户端可能映射到的 QoS 参数的可能集合。每个集合都包含 SL,并且可以选择包含:最大 MTU、最大速率、数据包生存时间和路径位。

注意

路径位未在 OFED 中实现。


匹配规则

将传入的 PR/MPR 请求与 QoS 级别匹配的规则列表。规则按顺序处理,例如应用第一个匹配项。每个规则都由一组匹配表达式构成,所有表达式都应匹配才能应用该规则。匹配表达式是为以下字段定义的

  • SRC 和 DST 到端口组列表

  • 服务 ID 到服务 ID 值或范围列表

  • QoS 类到 QoS 类值或范围列表

CMA 接口通过端口空间的概念(作为端口号的前缀)来支持服务 ID,端口空间是提供给 rdma_resolve_add() 的 sockaddr 的一部分。CMA 还允许 ULP(如 SDP)传播对特定 QoS 类的请求。CMA 在发送的 PR/MPR 中使用提供的 QoS 类和服务 ID。

IPoIB

IPoIB 查询 SA 的广播组信息,并使用多播组上可用的 SL、MTU、速率和数据包生存时间,该多播组形成此广播组。

SRP

当前的 SRP 实现使用其自己的 CM 回调(不是 CMA)。因此,SRP 自行在 PR/MPR 中填写服务 ID,并在设置 QP 时使用该信息。

SRP 服务 ID 由 SRP 目标 I/O 控制器定义(它也符合 IBTA 服务 ID 规则)。服务 ID 由 I/O 控制器在 ServiceEntries DMA 属性中报告,如果 SA 报告其处理 QoS PR/MPR 的能力,则应在 PR/MPR 中使用。

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