从零学习 InfiniBand-network架构(十一) —— 管理器的介绍
🔈声明:
😃博主主页:王_嘻嘻的CSDN主页
🔑未经作者允许,禁止转载
🚩本专题部分内容源于《InfiniBand-network architecture》,侵权必删
本章将介绍IB协议中的管理器的概念,包括子网管理器,子网管理代理,通用服务管理器,通用服务管理代理。通用服务接口,子网管理包SMP,通用服务管理包GMPS,概念都较为抽象,可以简单了解一下。
子网管理器
对于IB架构而言,子网是软件入口,而子网管理器SM(Subnet Manager)负责管控整个子网,其具有以下功能:
- 发现所管理子网的拓扑结构;
- 给子网下的所有Port分配相同的子网ID;
- 给每个Port分配LID;
- 建立子网中所有节点之间的可能路径;
- 定期扫描子网,寻找拓扑变化。
SM可以驻留在子网中的任何设备内部,但最典型的是由运行在处理器节点上的程序组成。
子网如何与设备通信
子网管理器通过向QP0发送子网管理请求包subnet management request packet(SMPs)去管理设备,通常SMPs中需要携带:
- 属性ID;
- 方法/动作;
- 属性修改器:当需要修改特定属性时,属性修改器会标识端口的目标设备;
- 数据;
其中,QP0也被称作子网管理接口SMI,SMP是管理数据报的一种。
CA或路由器上的每个端口都会实现一个SMI(subnet management interface)来接收SMP请求报文和发送SMP响应报文,但是,在交换机上,只有Port0实现SMI,SMP即使从其他Port接收,依旧会转发到Port0处理。
此外,还有子网管理代理的概念,每个CA,交换机或路由器都会实现一个子网管理代理SMA,当接收到SMP后,都由SMA处理请求。SMA执行由SMP定义的操作,然后将SMP响应报文返回给SMI,SMI将响应SMP返回给SM。
注意:在另一个SM发送一个SMP来访问驻留在设备中的SM的SMInfo属性的情况下,SMI将SMP直接传递给设备的SM(而不是它的SMA)进行处理。
如何访问SM属性
子网管理器如同前文说的一般,存在控制流程的内部属性:从零学习 InfiniBand-network架构(二) —— 属性与管理器
接下来会举一个例子,介绍访问SM属性的全流程:
- 首先SM在主存中构建256B大小的数据报,MAD需要包括:
- Class=subn,表示MAD需要被传递到的目标端口的SMA进行处理;
- 方法(SET/GET);
- 属性ID;
- 属性修改器;
- 数据(属性写);
- SM执行一个Post request verb向SQ的QP0发布WR,并用此WR传输SMP。WR中指定了MAD的内存起始地址,也指定了目标端口的LID,以及目标QP,并调用verb对QP0的RQ发布WR;
- SQ从主存中读取MAD,并将其替换SMP中的Payload部分,将SMP转发给HCA的QP0;
- SMP通过一条或多条链路,最终达到目标port,并传输到port的QP0的RQ,最后传递到SMA;
- SMA组一个SMP响应包发送到接收port的SMI上,SMP请求报文中的SLID和DLID字段在响应报文的LRH: SLID和LRH:DLID字段中被反转,用于返回。BTH:DestQP字段设置为QPO。
- 响应包以同样路径返回到HCA port,并传给对应port的SMI的RQ进行处理;
- RQ通过分散缓冲列表来确定256字节的MAD响应在内存中的存放位置,并创建一个CQE;
- 完成上述所有操作后,HCA产生一个中断,通知SM操作已响应。
通用服务管理
除了SM和SA,子网下的设备还由通用服务管理器(general services managers GSM)来管理,包括以下管理类型:
- 性能管理:完成性能统计和错误信息的整理;
- 基板管理:可以访问IBA接口设备的组件,例如例如机箱温度监测和热插拔操作;
- 设备管理:提供执行IOC和IOU管理的方法,DM通过将DM GMP MADs发送到IOU的DMA执行来操作IOU或IOC中的DM相关属性;
- 供应商特定管理:允许供应商定义一组通用方法,来访问供应商设备的特定属性,供应商可以自由定义新的访问方法和属性。
- 特定应用管理器:提供一组通用访问方法,使得应用程序可以自由定义新的访问方法和属性。
- 通信管理(CM):在在qp或eec之间提供一种建立、终止和迁移连接的机制,并提供基本的服务ID解析。
- SNMP隧道管理:提供一组支持SNMP隧道的访问方法、数据格式和属性。SNMP报文嵌入在符合IBA规范的管理报文中。
子网管理员
子网管理员(SA)是一个被动的实体,提供子网拓扑、设备类型和设备特征的信息库,其通常是SM的子集。SA在很大程度上是被动的,因为它通常不会向其他实体发起访问请求。相反,它响应从其他实体收到的数据库查询。
例如,软件应用程序可能会查询SA,以了解可能被带到目标端口的各种路径以及与这些路径相关联的DLID或DGID。
GSM订阅事件通知
当GSM接收到来自特定CA、交换机或路由器的Trap时,CA内部或背后的软件可能希望得到通知。这是通过事件转发订阅机制完成的。订阅者向class管理器发送一个Set(informfo)请求,才能得到事件通知。
订阅者告诉GSM,当从特定端口或端口范围收到Trap MAD时,它希望得到通知。informinfo属性告诉GSM,哪些CA、路由器的端口或者交换机的管理端口是订阅者感兴趣的,端口其GID或LID指定。或者,订阅者可以通过指定LID地址范围来定义CA、路由器或交换机管理端口的集合。
类管理器用GetResp(informfo)消息来响应Set(informfo)请求GMP,以确认或拒绝请求的转发。订阅者可以通过查询SA确定哪些管理器存在以及它们在fabric上的位置。
搜索关注我的公众号【IC墨鱼仔】,获取我的更多IC干货分享!