Infiniband技术规范之架构预览 (1)

https://zhuanlan.zhihu.com/p/336680341

 

本文摘自公众号:网络技术风云汇

IBA定义了一个系统区域网络(System Area Network,SAN),用于连接多个独立处理器平台(即主机处理器节点)、i/O平台和i/O设备(见图6)。IBA SAN是一种通信和管理基础设施,支持一个或多个计算机系统的I/O和处理器间通信(interprocessor communications, IPC)。IBA系统可以从一个拥有一个处理器和几个I/O设备的小型服务器到安装有数百个处理器和数千个I/O设备的大型并行超级计算机。此外,IBA的互联网协议(IP)友好性质允许桥接到internet、intranet或与远程计算机系统的连接。

IBA定义了一种交换通信结构(亦称为Fabric,下同,可互换),允许许多设备在受保护的远程管理环境中以高带宽和低延迟并发通信。一个终端节点可以通过多个IBA端口进行通信,并且可以利用IBA Fabric的多条路径。IBA端口和路径的多样性可用于容错和增加数据传输带宽。

IBA硬件从CPU卸载大部分I/O通信操作。这允许多个并发通信,而无需与通信协议相关的传统开销。IBA SAN提供其I/O和IPC客户端零处理器拷贝数据传输,无需内核参与,并使用硬件提供高可靠性、容错通信。

IBA系统局域网由处理器节点和I/O单元组成,它们通过由级联交换机和路由器组成的IBA Fabric连接。

IO单元的复杂程度可以从单个ASIC IBA连接设备(如SCSI或LAN适配器)到大型内存丰富的RAID子系统(其复杂性可与处理器节点媲美)到复杂的分布式并行文件系统。

1 架构范围

此InfiniBand架构规范定义了互连结构、路由元素、端节点、管理基础设施以及通信格式和协议。它不指定I/O命令或群集服务。

例如,考虑一个IBA-SCSI适配器。IBA没有定义磁盘I/O命令、SCSI适配器如何与磁盘通信、操作系统(OS)如何查看磁盘设备,也没有定义集群中哪个节点拥有磁盘适配器。IBA是这些操作的基础,但并不直接定义任何操作。相反,IBA定义了如何在处理器节点上的I/O驱动程序和SCSI适配器之间传输数据和命令。

IBA在多计算机环境中处理I/O和IPC的数据通信。它支持IO所需的高带宽和可扩展性。它满足了IPC所需的极低延迟和低CPU开销。通过IBA,操作系统可以为客户端提供绕过操作系统内核的通信机制,直接访问IBA网络通信硬件,实现高效的消息传递操作。

IBA非常适合最新的计算模型,是新形式I/O和集群通信的构建块。IBA允许I/O单元之间以及与系统中的任何或所有处理器节点进行通信。因此,I/O单元具有与任何处理器节点相同的通信能力。

1.1 拓扑和组件

在较高的层次上,IBA充当终端节点的互连,如图7所示。每个节点可以是处理器节点、I/O单元和/或到另一个网络的路由器。

IBA网络被细分为由路由器互连的子网,如图8所示。端节点可以连接到一个子网或多个子网。

IBA子网由端节点、交换机、路由器和子网管理器组成,通过链路互连,如图9所示。每个IBA设备可以连接到一个或多个交换机和/或直接彼此连接。任何两个IBA设备之间可以存在多个链路。

该体系结构针对包含多个独立进程和线程(使用者)的单元进行了优化,如图10所示。每个通道适配器构成结构上的一个节点。该体系结构支持每个单元有多个通道适配器,每个通道适配器提供一个或多个连接到fabric的端口,在这种情况下,处理器节点呈现为(被当做)fabric的多个端节点。

在处理器节点中,消息和数据服务是一个不在本文档范围内的操作系统组件。本文档指定消息和数据服务与通道适配器之间接口的语义行为。这个语义接口被称为IBA Verbs。Verbs描述配置、管理和操作主机通道适配器所需的功能。这些Verbs标识每个特定功能需要包含的适当参数。本规范中定义的Verbs不是API,而是描述API必须提供的语义行为,以便使用者能够直接访问InfiniBand通道适配器提供的服务。

IBA被构建为first order网络,因此它定义主机行为(Verbs)并定义内存操作,以便通道适配器可以尽可能靠近存储器复合体。它在同意的消费者之间提供独立的直接访问,而不管这些消费者是I/O驱动程序和I/O控制器,还是基于点对点通信的软件进程。IBA提供了通道语义(发送和接收)和直接内存访问,并提供了防止非参与用户访问的保护级别。

2 通信

2.1 队列

IBA操作的基础是异步性质,这意味着消费者可以排队执行一系列服务请求。硬件用于保存这些服务请求的队列称为工作队列。工作队列通常是成对创建的,称为队列对(Queue Pair,QP),一个用于发送操作,另一个用于接收操作。一般来说,发送工作队列保存导致(能使)数据在使用者的内存和另一个使用者的内存之间传输的指令,而接收工作队列保存关于将从另一个使用者接收到的数据放置在何处的指令。另一个使用者被称为远程使用者,即使它可能位于同一个节点上。IBA专门描述主机信道适配器(HCA)的排队关系,但不描述I/O单元,因为I/O单元不一定受制于主机环境中存在的第二方和第三方互操作性(即HCA供应商、OS供应商和IHV的I/O驱动程序或ISV的应用程序之间的互操作性)IPC)。下面介绍HCA队列模型。

使用者提交一个工作请求(WR),这将导致一个称为工作队列元素(WQE)的指令被放置到适当的工作队列中。通道适配器按照wqe在工作队列中的顺序执行WQEs。当通道适配器完成WQE时,完成队列元素(CQE)被放置在完成队列上。每个CQE指定完成工作所需的所有信息,或者直接包含该信息,或者指向包含该信息的其他结构,例如关联的WQE。

每个消费者可能有自己的一组工作队列,每对工作队列独立于其他工作队列。每个使用者创建一个或多个完成队列,并将每个发送和接收队列关联到特定的完成队列。工作队列对的发送和接收队列不一定都使用相同的完成队列。

因为有些工作队列需要来自远程节点的确认,而有些wqe使用多个数据包来传输数据,所以通道适配器可以同时有多个wqe在进行中,甚至来自同一个工作队列。因此,cqe被发布到完成队列的顺序是不确定的,除了相同工作队列的cqe通常按照相应WQE被发布到工作队列4的顺序被发布(4:可靠数据报服务的接收完成是例外,因为在多个EE上下文上并发接收可能导致无序。)。

有三类发送队列操作send、远程内存访问(RDMA)和内存绑定。

• 对于SEND操作,WQE在消费者的内存空间中指定一个数据块,以便硬件发送到目的地,让已经在目的地排队的接收WQE指定数据的放置位置。

• 对于RDMA操作,WQE还指定远程使用者内存中的地址。因此,RDMA操作不需要涉及目的地的接收工作队列。RDMA操作有3种类型,RDMA-WRITE、RDMA-READ和ATOMIC。

  • RDMA-WRITE操作规定硬件将数据从使用者的内存传输到远程使用者的内存。
  • RDMA-READ操作规定硬件将数据从远程内存传输到用户内存。
  • 原子ATOMIC操作规定硬件将执行远程64位内存位置的读取。目标返回读取的值,并通过将更新后的值写回同一位置,有条件地修改/替换远程内存内容。

• 内存绑定MEMORY BINDING指示硬件更改内存注册关系(见10.6.6.2节)。它将内存窗口与现有内存区域内的指定范围相关联(绑定)。内存绑定允许使用者指定它与其他节点共享注册内存的哪些部分(即远程节点可以访问的内存),并指定读写权限。结果产生一个内存键(R_KEY),使用者将其传递给远程节点,供其在RDMA操作中使用。

只有一个接收队列操作,它将指定一个接收数据缓冲区。

• RECEIVE WQE指定当另一个使用者执行SEND操作时,硬件将把从另一个使用者接收到的数据放置在何处。每次远程使用者成功地执行发送操作时,(本地?)硬件从接收队列获取下一个条目,将接收到的数据放置在该接收WQE中指定的内存位置,并在完成队列上放置CQE,向使用者指示接收操作已完成。因此,执行发送操作会导致远程使用者处的接收队列操作。

通常,RDMA操作不会在目的地使用receive WQE,但有一个例外。用于指定即时数据的RDMA写入操作。即时数据(Immediate data)是可选地在SEND或RDMA WRITE指令中提供的32位信息,作为操作的一部分进行传输,但不是将立即数据写入内存,而是将数据视为另一条状态信息并作为接收CQE状态的特殊字段返回。这意味着具有即时数据的RDMA写入将在目的地消耗一个接收WQE。

2.2 连接

IBA同时支持面向连接和数据报服务。对于连接的服务,每个QP只与一个远程用户相关联。在这种情况下,QP上下文配置为远程使用者的队列对的标识。远程使用者由端口和QP号码标识。端口由本地ID(LID)和可选的全局ID(GID)标识。在通信建立过程中,该信息和其他信息在两个节点之间交换。

3 通信堆栈

IBA的通信堆栈如图13所示。该体系结构提供了许多IBA事务,消费者可以使用这些事务与远程消费者执行事务。使用者向QP发布工作队列元素(WQE),通道适配器解释每个WQE以执行操作。

对于发送队列Send Queue操作,通道适配器解释WQE,创建请求消息。如有必要,将消息分为多个数据包,添加适当的路由标头,并将数据包发送到相应的端口。

端口逻辑通过链路传输数据包,交换机和路由器通过fabric将数据包中继到目的地。

当目的地接收到数据包时,端口逻辑验证数据包的完整性。信道适配器将接收到的分组与特定QP相关联,并使用该QP的上下文来处理分组并执行操作。如果需要,通道适配器将创建一个响应(确认)消息,并将该消息发送回发起方。

接收某些请求消息会导致通道适配器使用接收队列中的WQE。当它这样做时,与所消费的WQE相对应的CQE被放置在适当的完成队列上,这使得向拥有QP的消费者发出工作完成。

4 IBA组件

IBA系统中的设备分为:

  • 交换机
  • 路由器
  • 信道适配器
  • 中继器repeaters
  • 互连交换机、路由器、中继器和信道适配器。

链路管理基础架构包括:

  • 子网管理器subnet managers
  • 一般服务代理general service agents

4.1 链路和中继器

链路将信道适配器、交换机、中继器和路由设备互连以形成一个Fabric/结构。链路可以是铜缆、光缆或背板上的印刷电路布线。中继器是一种透明的设备,可以扩展链路的范围。InfiniBand Architecture的第2卷规定了各种媒介类型的链路和中继器要求,并定义了I/O设备的各种模块形式。第1卷中描述的体系结构独立于链路类型和外形因素。

链路和中继器不能直接寻址,但是链路状态可以通过链路两端的设备来确定。

4.2 信道适配器/通道适配器

通道适配器(或叫信道适配器)是处理器节点和I/O单元中生成和使用数据包的IBA设备。IBA定义了两种类型的信道适配器:主机信道适配器(HCA)和目标信道适配器(TCA)。HCA提供一个使用者接口,提供IBA Verbs指定的功能。IBA没有为TCA指定使用者接口的语义。

信道适配器是一种具有特殊保护功能的可编程DMA引擎,允许在本地和远程启动DMA操作

通道适配器可以有多个端口。通道适配器的每个端口都分配了一个本地ID(LID)或一系列LID。每个端口都有自己的一组发送和接收缓冲区,这样每个端口都能够并发地发送和接收。缓冲通过虚拟通道(VL)传输,每个VL都有自己的流量控制。

通道适配器提供内存转换和保护(MTP)机制,该机制将虚拟地址转换为物理地址并验证访问权限。本文件未规定具体的内存管理机制,也未对TCA规定此类机制的要求。

通道适配器以由发送和接收工作队列组成的队列对(QP)的形式向其使用者提供通信接口的多个实例。

子网管理器用每个物理端口(即端口的LID)的本地地址配置信道适配器。为了配置通道适配器而与子网管理器通信的实体称为子网管理代理(SMA)。

每个通道适配器都有一个由通道适配器供应商分配的全局唯一标识符(GUID)。由于子网管理器分配的本地ID不是持久的(即,可能会在每次关机后更改),因此通道适配器GUID(称为节点GUID)成为用于永久标识通道适配器的主要对象。此外,每个端口都有一个由通道适配器供应商分配的端口GUID。

4.3 交换机

交换机主要根据数据包的本地路由报头中的目标地址来传递数据包。交换机还消耗和获取管理交换机本身所需的数据包。可选地,交换机端口可以包含物理TCA端口的属性。

IBA交换机是子网内路由的基本路由组件(子网间路由由IBA路由器提供)。交换机之间的链路通过中继连接。

交换机公开两个或多个端口,在这些端口之间中继数据包。

子网中的每个目的地都配置了一个或多个唯一的本地标识符(LID)。数据包包含一个指定目的地的地址。从交换机的角度来看,目的地表示通过交换机的路径。交换机元素配置有转发表。单个数据包在交换机内根据数据包的目标LID和交换机的转发表转发到一个或多个出站端口。

IBA交换机支持单播转发,也可以支持多播转发。单播是将单个数据包传送到单个目的地,而多播是结构/fabric将单个数据包传送到多个目的地的能力。

子网管理器配置交换机,包括加载其转发表。

为了最大限度地提高可用性,可以在交换机结构中部署端节点之间的多条路径。如果交换机之间有多条路径可用,子网管理器可以将这些路径用于冗余或基于目标LID的负载共享。在存在多条路径的情况下,子网管理器可以通过重新加载fabric区域中受影响的交换机的转发表,围绕故障链路重新路由数据包。

4.4 路由器

和交换机一样,路由器不生成也不消耗数据包(管理包除外)。他们只是把它们传下去。路由器根据数据包的全局路由报头转发数据包,并在数据包从子网传递到子网时实际替换包的本地路由头。

IBA路由器是子网间路由的基本路由组件(子网内路由由IBA交换机提供)。路由器通过在子网之间中继数据包来互连子网。

路由器公开一个或多个端口,在这些端口之间转发数据包。路由器可以嵌入其他设备,如通道适配器或交换机。

路由器对终端节点不是完全透明的,因为源节点必须指定路由器的LID并提供目的地的GID。

每个子网都用称为子网前缀的子网标识唯一。子网管理器(通过PortInfo属性)用该子网的子网前缀对所有端口进行编程。当与端口GUID组合时,此组合将成为端口的自然GID。端口可能有其他本地管理的GID。

从路由器的角度来看,GID的子网前缀部分表示通过路由器的路径。IPv6指定路由器之间执行的协议以派生它们的转发表。单个包在路由器内根据包的目的地GID和路由器的转发表转发到一个或多个出站端口。

每个路由器通过下一个子网将数据包转发到另一个路由器,直到数据包到达目标子网。最后一个路由器使用与目的地GID相关联的LID作为目的地LID来发送包。

子网管理器用有关子网的信息配置路由器,例如要使用哪个VL和分区信息。

为了最大限度地提高可用性,可以在结构中部署子网之间的多条路径。如果有多条路径可用,路由器可能会将这些路径用于冗余或负载共享。当存在多个路径时,路由器可以围绕故障子网重新路由数据包。

4.5 管理组件

IBA管理提供了一个子网管理器和一个支持许多通用管理服务的基础设施。管理基础结构要求每个节点中都有一个子网管理代理,并定义了一个允许其他通用服务代理的通用服务接口。

该体系结构定义了一个公共管理数据报(MAD)消息结构,用于管理器和管理代理之间的通信。

4.5.1 子网管理器

子网管理器(SM)是连接到子网的实体,负责配置和管理交换机、路由器和通道适配器。SM可以与其他设备一起实现,例如信道适配器或交换机。

IBA支持每个子网多个子网管理器的概念,并指定多个子网管理器如何协商一个成为主SM。不禁止合作SMs之间的其他方法来管理主/备用关系。

主SM:

• 发现子网拓扑结构,

• 为每个信道适配器端口配置一系列LID、GIDs子网前缀和P_Key,

• 为每个交换机配置一个LID、子网前缀及其转发数据库,

• 维护子网的端节点和服务数据库,从而提供一个GUID到LID/GID解析服务以及一个服务目录。

4.5.2子网管理代理

每个节点提供一个子网管理代理(SMA),SM通过称为子网管理接口(SMI)的已知接口访问该代理。SMI允许LID路由包和直接路由包。直接路由提供了在配置交换机和终端节点之前进行通信的方法。只有SMI允许直接路由数据包。

4.5.3一般服务代理

每个节点可以包含称为通用服务代理(generalserviceagents,GSA)的附加管理代理,这些管理代理可以通过称为通用服务接口(generalserviceinterface,GSI)的众所周知的接口进行访问。GSI仅支持LID路由。IBA定义的一般服务类别为:

子网管理(SA)-这是由SM提供的服务,允许节点访问有关子网的信息,以发现其他节点和服务,解析路径,并注册其服务。

  • 性能管理-监视和报告定义良好的性能计数器。
  • 基板管理-提供使用第2卷中定义的IB-ML进行机箱管理的功能。
  • SNMP隧道-通过定义发送和接收SNMP消息的方法提供SNMP功能。
  • 供应商定义-允许设备供应商用于远程配置和管理其设备的专用扩展。
  • 通信管理(ComMgt)-提供终端节点之间的连接建立和其他通信管理功能。
  • 设备管理(DevMgt)-提供I/O资源管理。
  • 特定于应用程序-此类定义了一组可供应用程序使用的通用方法。应用程序可以自由定义新的方法和属性,但是它们必须符合本规范后面章节中描述的管理数据报格式和限制。

未完待续,请继续关注公众号“网络技术风云汇”的后续更新,谢谢!

 (二维码自动识别)

posted @ 2021-08-29 17:25  张同光  阅读(732)  评论(0编辑  收藏  举报