您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Infiniband子网管理
Infiniband子网管理◦子网管理基础◦子网探测◦LID分配◦路由计算Infiniband子网管理器OpenSM分析◦OpenSM总体介绍◦OpenSM数据模型◦OpenSM运行模型◦拓扑探测实现分析◦LID分配实现分析◦路由计算实现分析物理模型子网管理器SM可以存在于任何一个CA、交换机或路由器的任何一个端口,一个子网中可以存在多个SM,但在子网运行时只能有一个主SM,其它的成为备份SM。子网管理代理SMA存在于每一个CA、交换机或路由器中。逻辑模型子网管理的实质是子网管理器和子网管理代理之间的信息交换。信息交换通过子网管理数据包完成。子网管理器通过查询子网管理代理,得到节点的部分信息。子网管理器综合所有从子网管理代理获得的信息后,可以生成每个节点的部分信息。子网管理代理也可以直接发送信息给子网管理器。子网管理数据包是信息交换的标准数据格式,还包括一套标准操作。子网管理数据包SMP为子网管理提供基础通信机制。为子网管理提供子网配置、检测和查询子网节点信息的功能。有两类SMP:LID路由SMP和直接路由SMP。LID路由SMP:交换机在转发这些SMP是根据其目的LID确定要转发的端口。使用LID路由SMP需要节点已经分配LID,经过的交换机必须已经配置正确的转发表。直接路由SMP:交换机转发这些SMP时根据SMP自带的路径字段确定要转发的端口。LID路由SMP用于子网初始化以后字段名长度描述通用MAD报头24字节通用MAD报头,具体见13章M_key8字节一个用于SM认证的64位密钥保留32字节用于和直接路由SMP的SMP数据字段对齐SMP数据64字节用于容纳方法的属性保留128字节保留直接路由SMP主要用于子网在初始化以前,发现子网拓扑结构字段名长度描述通用MAD报头14字节见13章D1比特方向位用于直接路由判断数据包的方向。如果是0,方向是从SM发往节点。如果是1,方向是从节点到SM状态15比特指示方法执行的状态码跳指针1字节跳指针指示初始路径或返回路径字段中当前的字节跳数1字节初始路径或返回路径中合法的字节数通用MAD报头216字节见13章M_ley8字节一个用于SM认证的64位密钥DrSLID2字节直接路由源本地标识符DrDLID2字节直接路由目的本地标识符保留28字节为了数据字段能够64字节对齐SMP数据64字节容纳方法的属性值初始路径64字节初始的直接路径,每个字节代表一个端口返回路径64字节返回时的直接路径,每个字节代表一个端口直接路由可以包含LID路由段,直接路由在路由的每一个中间节点都要经过子网管理接口SMI的处理,LID路由在路由的中间过程不需要经过SMI直接路由SMP有关的算法◦发起的直接路由SMP初始化◦SMI处理发起的直接路由SMP,需要填写返回路径字段◦响应直接路由SMP的初始化◦SMI处理响应直接路由SMP如果将每个节点(CA,交换机或路由器)看成是一个对象:子网管理代理SMA可以理解成节点对象的公共接口。SM通过这个接口可以设置(Set方法)或查询(Get方法)节点对象的属性(节点的信息)。SMA还可以主动向SM报告节点上的异常事件。主要操作SubnGet()◦由SM发起,用于获取节点属性SubnSet()◦由SM发起,用于设置节点属性SubnGetResp()◦SMA对SM的响应SubnTrap()◦SMA主动向SM报告异常事件SubnTrapRepress()◦SM对SMA报告异常事件的响应主要属性节点信息,交换机信息,GUID信息,端口信息,SM信息,密钥信息SL到VL的映射表,VL仲裁表,线性转发表,随机转发表,组播转发表事件类型,节点描述,厂家信息相对于以太网的分布式管理,在Infiniband网络中,SM通过SMA对子网进行集中管理。这种方式结构简单易于管理。为了防止单点失效问题,在Infiniband中可存在多个SM,一个主SM,多个备份SM。备份SM检测到主SM死亡时,会选择一个备份SM成为主SM,接管子网管理权。SM状态机DiscoveringStandbyMasterPollingtimeoutDiscoverInitHandoverNot-activeDisableStandbyDiscovercompletedMasterSMisdetectedACKNOWLEDGERespondtopollTopologychangeHANDOVERHandover主SM是IB子网初始化和配置的关键因素。主SM的选择也是初始化过程的一部分。主SM的主要作用是:◦发现子网的物理拓扑结构。◦为每个端节点,交换机和路由器分配本地标识符LID。◦确定各端节点之间的合理路径。◦扫描子网,发现拓扑改变处理节点加入和节点删除。子网探测主要是指在Infiniband子网初始化时,SM通过SMA获得子网内各节点信息。主要的信息就是各个节点的GUID,节点类型,端口信息以及各节点之间的连接关系。在子网初始化完毕后,SM还会定时的检查网络拓扑是否发生变化(某个交换机端口的状态发生改变)。交换机检测到自己的某个端口状态发生改变,可以通过Trap机制主动向SM报告拓扑改变。子网发现的过程:子网启动时,SM发送包含Get方法的直接路由SMP,SMA收到后会响应一个SMP,从而找到一个新的节点,然后SM通过这个新节点向外辐射只到找到所有的设备。对于一个已经初始化的子网,如果SM发现某一个交换机的一个端口的状态从DOWN变为UP,则说明有设备加入到子网中。对于一个已经初始化的子网,如果SM发现某一个交换机的一个端口的状态从UP变为DOWN,则说明有设备从子网中移除。LID(16位)由SM分配,在子网内唯一,不能在子网间使用LID地址空间分为保留空间,单播地址空间,组播地址空间LID在LRH(本地路由报头)中使用由于子网中两个节点中存在多条路径,可以通过在目的节点上绑定多个LID实现,每条路径使用一个LID。为了简化实现方式,LID的分配采用baselid+LMC的方式,baselid最后LMC位必须为0例:baselid=4,LMC=2,则分配的LID[4,7]在规范中,并没有规定LID的分配规则,只要满足上述的性质即可。具体实现时,LID的分配与特定的路由算法有关。最简单的分配方式是按照设备的发现顺序,从1开始连续分配。路由计算主要是指SM在得到子网拓扑以后,确定每两个节点之间的路径的过程。SM将这个计算结果以转发表的形式发布给交换机,使数据包沿着计算好的路径传递。转发表是一个[LID,PORT]组成的表,交换机接收到一个LID路由的数据包时,通过查找目的LID对应的表项,从而确定应该从那个端口转发这个数据包。OpenSM支持的功能特点开放源代码代码使用C语言编写,面向对象的思想且具有可扩展性程序内含由Robodoc编写的说明文档可方便用于其他平台和InfiniBand接口,当前运行在linux用户空间之上支持SM的主要特性,包括多路径传输、子网分区、多点传送组和SM选举机制等在任何拓扑结构中,保证两个端节点间的最佳路径支持通用的子网查询方便传送各个层的各种类型的管理数据报MADOpenSM不支持的功能特点不支持交换机的随机路由转发表不支持子网间的路由不支持完整的SA询问机制不支持虚拟通道机制不支持GUIOpenSM采用面向对象的思想,将Infiniband网络中的现实事物抽象成程序中的一系列类(结构),例如节点,交换机,端口,SM,分区等。这些现实事物之间的关联在通过类与类之间的关系反映出来。例如,在一个节点对象中包含若干个端口对象,每个端口对象又指向另一个端口对象,另一个端口对象可能是属于某各交换机对象的。OpensmSubnetsmsalogother...111111111*nodeswitchpartionmulticast1*1*1*1*1*phy_port1*11logic_port1*1*Subnet类是OpenSM中保存子网信息的一个类,最重要的就是子网的拓扑信息。在Subnet类中保存了子网中所有CA,交换机,路由器的信息,以及这些节点的端口的连接信息(拓扑)。子网的初始化和运行一个重要部分就是构造和维护Subnet类:子网启动以后,SM每发现一个设备,就构造一个对应的类,并将这个类加入到Subnet类中;子网运行过程中,SM也会根据子网的变化同步Subnet类,使得Subnet类中的拓扑和实际拓扑保持一致。子网的配置也是根据Subnet类中保存的信息综合以后进行的,例如每个交换机的转发表就是根据Subnet中的拓扑信息生成的。分配器分配器工作线程执行体执行线程执行体执行线程执行体执行线程发送线程接收线程VL15事件事件创建线程产生事件扫描线程事件发送事件发送事件从外界获取程序运行所需的配置参数创建各种数据结构,如日志对象,Opensm对象,sm对象,子网对象,以及用于保存程序运行信息的图表,如节点表,交换机表等。初始化各对象,如根据参数设置对象属性,初始化相关的定时器,线程,信号等。创建发送线程,接收线程,扫描线程,分配器工作线程等。循环等待,直到程序遇到结束标志。开始获取配置参数对象初始化创建分配器线程退出标志结束创建接收线程对象销毁循环等待创建发送线程创建扫描线程创建其它线程唤醒扫描线程对象创建发现子网分配LID构造每个交换机的LID矩阵构造每个交换机的转发表将转发表分发到对应的交换机将端口置为准备状态将端口置为活动状态发送一个直接路径长度为0的SMP,获取本地的节点信息。发送直接路径长度为1的SMP,如果SM所在节点为CA或路由器,则只需要发送一个,如果节点为交换机,则需要构造多个SMP,每个SMP的直接路径为交换机的一个活动端口。当收到响应时,判断响应节点是否是新设备,如果是新设备,则继续向外探测,直到没有新的设备发现为止(子网发现完成)。向每个交换机发送包含Get方法的SMP,更新每个交换机的信息。对于每个交换机的每个端口:如果端口的状态不是down,但是这个端口不指向一个端口,说明子网中新加入了设备,构造一个直接路由SMP(包含一段LID路由)获取这个端口连接的节点信息。如果发现有交换机的端口状态发生改变(拓扑改变),程序会重新扫描整个网络。扫描完成后,还会删除一些丢失的节点。所有已分配的LID保存在PORT_LID_TBL表中,端口的GUID和LID的映射表保存在GUID_TO_LID_TBL表中。若端口的GUID在GUID_TO_LID_TBL表中已经存在,则表明已经分配过LID,不需要再分配LID。在PORT_LID_TBL中寻找一个足够大小的区间(如果LMC0,每一个端口需要分配多于一个LID),分配这一段LID,更新PORT_LID_TBL和GUID_TO_LID_TBL,然后设置端口的PORTINFO中的LID字段。Minhop最小跳数算法(默认路由算法)UpdnUp/down算法Ftree胖树算法Lash算法从文件中加载路由表Dor算法每个交换机对象中都存有一个LIDMATRIX对象,LIDMATRIX中保存交换机从它的某个端口到达某个LID的最小距离LIDMATRIX中只表示交换机和交换机之间的连接,先忽略CA和路由器。在OpenSM中LIDMATRIX使用一个二维的hops[][]矩阵表示路由算法分两步执行:构造LID矩阵build_lid_matrices构造转发表ucast_build_fwd_tablesLID矩阵的内容在最初都是NO_PATH,即通过交换机的任何一个端口不能到达任何一个LID交换机到达自身的端口0(管理端口)的LID的距离是0,交换机到达和自己相连的交换机的端口0的LID的距离是1.交换机通过邻居交换机学习到更远的邻居的信息类似于路由协议中的距离矢量算法,LID矩阵的构造需要经过若干次迭代才能达到稳定状
本文标题:Infiniband子网管理
链接地址:https://www.777doc.com/doc-3205543 .html