前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RDMA Infiniband - IB通信管理-子网管理(SM)和子网代理(SMA)

RDMA Infiniband - IB通信管理-子网管理(SM)和子网代理(SMA)

原创
作者头像
晓兵
修改2024-06-05 15:50:53
2040
修改2024-06-05 15:50:53
举报
文章被收录于专栏:DPUDPU

术语

  • IBA架构层次: 和典型的TCP/IP七层模型不同, IBA从上到下分为5层: verbs接口层/传输层/网络层/链路层/物理层 , 内部网络分网络/链路/物理共3层, 简化层级也带来了通信的高效率
  • SM: subnet manager 子网管理
  • MAD: Management Datagram 管理数据报文
  • VL: 虚拟通道 (VL) 提供了一种在单个物理链路内创建多个虚拟链路的机制。 虚拟通道表示端口中的一组发送和接收缓冲区。 所有端口均支持专为子网管理保留的 VL15。 还有 15 个其他 VL(VL0 至 VL14)称为数据 VL,所有端口都支持至少一个数据 VL(VL0),并可提供 VL1 至 VLn-1,其中 n 是端口支持的数据 VL 数量。 端口使用的实际数据 VL 由 SM 配置,并基于数据包中的服务级别 (SL) 字段。 默认使用 VL0,直到 SM 确定链路两端支持的 VL 数量并编程端口的 SL 到 VL 映射表, VL 分配仅存在于链路两端的端口之间,一条链路上的 VL 分配独立于其他链路上的分配。每个数据包都有一个在数据包标头中指定的 SL。 当数据包穿过结构时,其 SL 确定每个链路上将使用哪个 VL。 每个端口维护一个 SL 到 VL 映射表,以便数据包在适当的 VL 上发送。 当链路两端的端口支持不同数量的数据 VL 时,编号较大的端口将降级为另一个端口支持的数量。 因此,对于仅支持单个数据 VL 的端口,所有数据流量默认为 VL0
  • LID: 本地通信ID, 从发送者的角度唯一标识此连接的标识符。 发送方必须在通信建立和释放的所有阶段使用相同的标识符。 它不得在连接的生命周期内重复使用本地通信 ID,或者与连接相关的任何消息仍可能位于结构中。 (第 12.9.8.4 节涉及与连接相关的消息在结构中仍可存在的时间。)通信 ID 允许接收者确定该消息是否是旧消息的重复,或者代表新的连接请求
  • SMPs: 子网管理报文, SUBNET MANAGEMENT PACKETS (SMPS), 子网管理接口 (SMI) 与 QP0 关联。 QP0 专门用于发送和接收子网管理 MAD。 与通道适配器、交换机或路由器中的 SMA 的通信始终通过 SMI。 如果通道适配器、交换机或路由器托管 SM,则该 SM 与子网中每个通道适配器、交换机或路由器的 SMA 之间的通信也通过 SMI。 只有 SMA 和 SM 通过此接口进行通信。子网管理类的MAD称为SMP

简介

通信管理包含用于建立、维护和释放 IB 可靠连接、不可靠连接和可靠数据报传输服务类型的通道的协议和机制。 服务 ID 解析协议(参见第 12.11 节)使不可靠数据报服务的用户能够找到支持其所需服务的队列对。 通过本文描述的协议,在每个系统上的通信管理器(CM)之间通过除了用于连接的队列对之外的队列对来管理连接。 (参见图 131)CM 使用管理数据报 (MAD) 进行通信,通常通过每个系统上的通用服务接口 (GSI)

IBA 管理建立在四个基本概念之上。 其中包括:

·管理实体,

·代理,

·消息传递方案,

·特定消息的集合,包括消息内容和相关行为。

代理是嵌入在所有通道适配器、交换机和路由器中的低级功能主体的概念,它提供了设置和查询通道适配器、交换机或路由器内部的各种参数的方法

IB管理模型

每个子网至少有一个子网管理器 (SM)。 每个 SM 驻留在 CA、路由器或交换机的端口上,并且可以通过硬件或软件来实现。 当一个子网上有多个SM时,其中一个SM为主SM。 其余SM 必须是备用SM。 每个端口只有一个 SM。 主 SM 是初始化和配置 IB 子网的关键元素。 主 SM 作为子网初始化过程的一部分被选举出来,并负责以下功能

  • 发现该SM管理子网内的网络拓扑
  • 为子网内所有IB通信端口分配一个公共的子网ID(子网前缀)
  • 为子网内所有IB通信端口分配一个唯一的通信地址, 也即是本地ID(LID)
  • 在端口间建立可能的通信路径
  • 定期扫描子网内拓扑变化, 如: 添加/删除设备, 链路状态改变等

主 SM 和 SMA 之间以及 SM 之间的通信通过子网管理数据包 (SMP) 执行。 SMP 提供了子网管理的基本机制。 SMP 有两种类型:LID 路由和定向直接路由(Directed)。 LID 路由数据包 SMP 根据目标的 LID 通过子网(由交换机)转发。 定向路由 SMP 基于定义通过子网的路径的端口号向量进行转发。 定向路由SMP 用于实现多种管理功能,特别是在将LID 分配给节点之前

每个交换机、CA 和路由器都有一个子网管理代理 (SMA), 由主SM管理

带LID的直接路由示意图:

子网与设备如何通信

通过子网接口SMI和子网管理报文SMPs, 子网管理将子网管理报文发送到管理目标设备的QP0, 该请求包携带以下信息:

  • 属性ID: 表明要操作的设备属性
  • 方法: 对指定设备属性的操作
  • 属性修饰符: 某些设备属性和操作方法也需要属性修饰符, 如: 访问端口的PortInfo时, 需要通过属性修饰符表明目的端口
  • 数据字段: 要写入或修改属性ID的值

然后接收子网管理需要通过子网管理报文响应请求方操作结果

QP0也就是子网管理接口SMI通道, 子网管理报文(SMPs)只是一种特殊的管理数据报文(MAD)

交换机只需要在PORT0上实现子网管理接口, 其他端口收到SMP时, 通过将请求包的DLID设置为Port0的LID, 就可以转发给PORT0实现的子网管理接口, 其他报文通过DLID和转发表匹配, 转到目的设备上

由子网管理代理SMA响应子网请求, 每个CA, 路由器, 交换机, 需要实现一个子网管理代理的功能, 如果是另一个子网发SMP请求访问SMInfo属性时, 则该子网管理接口将SMP请求转发给目的设备所在的子网管理, 而不是发给子网管理代理

SMInfo状态机

MAD管理接口(QP0使用VL15, QP1使用其他VL)

典型的子网属性访问流程

  • 在内存中构造管理数据报文: 该SM构造一个256字节的MAD, 包含以下信息:
    • 类(class): 设置为Subn, 表示这个MAD要发给目标端口的子网代理处理
    • 方法: 操作方法, 如: Set/Get
    • 属性ID
    • 属性修饰符
    • 数据: 操作值
  • 将MAD封装为工作请求WR, 提交到QP0的发送队列SQ: 该报文包含了目的子网代理端口后面设备的本地标识LID
  • 提交工作请求到QP0的接收队列RQ: 子网管理也会提前准备一个接收工作队列元素用于接收回复报文
  • 传输数据报文:
    • BTH基本传输头的操作码设置为UD报文, 所有的MAD报文为UD报文
    • 将报文的DLID设置为目标端口的LID
    • BTH的目的QP设置为目标端口的QP0(SMI)
    • 虚拟通道VL设置为15
  • SMP遍历一条或多条链路, 直到到达目标端口
  • 将报文发送到端口实现的SMI接口进行处理(QP0)
  • 将报文发送给子网管理代理SMA: SMI检测到MAD class=Subn, 所以将其转发给设备的SMA处理
  • SMA执行设备属性操作
  • SMA发送操作回复消息: 在回程前, 颠倒SMP的SLID和DLID
  • 通过SMI将报文原路返回
  • SMI消费接收队列顶部的WQE SGL, 填入256字节的响应MAD报文, 同时在QP0上产生一个完成请求CQE, 通过CQE的状态字段判断操作状态:
    • 状态位占用16bit, 仅在目标响应请求的MAD报文中有效
    • 低8位是所有类共用的, 它们是以下状态:
      • Busy: MAD被忽略
      • Redirect required: 需要重定位
      • Class not supported: 类型不支持
      • Method 不支持
      • Method/Atrribute: 方法和属性ID组合不支持
      • 一个/多个属性字段包含错误的值
    • 高8位: 该类指定的状态
  • 子网通知: HCA产生一个中断告诉子网管理, 响应已经在内存中

晓兵(ssbandjl)

博客: https://cloud.tencent.com/developer/user/5060293/articles | https://logread.cn | https://blog.csdn.net/ssbandjl | https://www.zhihu.com/people/ssbandjl/posts | https://chattoyou.cn

DPU专栏

https://cloud.tencent.com/developer/column/101987

技术会友: 欢迎对DPU/智能网卡/卸载/网络,存储加速/安全隔离等技术感兴趣的朋友加入DPU技术交流群

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 术语
  • 简介
    • IB管理模型
    • 子网与设备如何通信
      • MAD管理接口(QP0使用VL15, QP1使用其他VL)
      • 典型的子网属性访问流程
      • 晓兵(ssbandjl)
        • DPU专栏
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档