InfiniBand网络:TCA/HCA/PKey/GUID/跨分区/有限&完全成员

龅牙兔谈科技 2024-05-13 02:32:08

笔者基于前文,及粉丝私信提及的问题,将在本文中统一整理呈现。

前文相关链接如下:

TCA(Target Channel Adapter):目标通道适配器,主要用于连接 InfiniBand 网络的存储设备等非计算类型设备。TCA 通常作为存储节点或非计算节点的适配器,负责在 InfiniBand 网络中与计算节点或主机进行数据交互。它通常与存储设备、外部资源或外部计算设备相连,以提供高性能的数据传输。使用场景:存储节点:TCA 可以作为存储设备的接口,将存储设备集成到 InfiniBand 网络中,为计算集群提供高速的存储访问。其他目标节点:包括外部资源或设备,提供计算节点的数据输出或数据目标。HCA(Host Channel Adapter):主机通道适配器,主要用于将计算节点或服务器连接到 InfiniBand 网络。HCA 是主机系统与 InfiniBand 网络之间的接口,使得主机系统能够通过 InfiniBand 网络传输和接收数据。它支持高速、低延迟的数据传输,并提供远程直接内存访问(RDMA)功能。使用场景:计算节点:HCA 适配器通常用于计算节点(服务器或工作站),以便这些节点能够与 InfiniBand 网络中的其他节点或存储资源进行高速通信。网络负载:为计算节点提供更高的数据吞吐量、低延迟以及 RDMA 支持。HCA与TCA对比表:

HCA:主要用于连接计算节点,使其能够在 InfiniBand 网络中高速通信和访问外部资源。

TCA:主要用于连接存储或外部资源节点,确保这些资源能够与 InfiniBand 网络中的计算节点进行高速数据交换。

比较维度

Host Channel Adapter(HCA)

Target Channel Adapter(TCA)

用途

连接计算节点(服务器、工作站等)与 InfiniBand 网络

连接存储或非计算节点与 InfiniBand 网络

主要目标

负责主机节点的高速数据传输与通信

提供与存储或外部资源的高性能数据传输

通信类型

支持主机节点间的高速通信和远程直接内存访问(RDMA)

为目标节点提供数据输入或输出

典型场景

高性能计算集群、服务器、工作站等计算节点

存储节点、存储系统、外部设备等

接口类型

支持计算节点的标准接口(PCIe、SAS 等)

支持与存储或外部资源的接口

主要功能

提供计算节点之间的高速通信和网络负载

支持与存储系统或外部资源的高性能通信

软件支持

支持操作系统和计算应用的驱动和软件

支持存储或外部设备的协议和驱动

网络协议

支持 InfiniBand 网络标准及 RDMA 协议

支持 InfiniBand 网络标准与目标节点协议

性能特点

高吞吐量、低延迟、直接内存访问

高吞吐量、数据目标管理

设备例子

计算节点、服务器、工作站等

存储节点、外部资源、数据目标设备

Partition Key(PKey):在 InfiniBand 网络中,Partition Key(PKey)是用来划分和隔离网络中不同的通信流量或工作负载的。配置 PKey 的主要原因是为了确保不同工作负载之间的安全性、数据隔离性以及资源分配的合理性。它可以通过逻辑方式将网络划分为独立的区域,即“分区”。//示例如下:在一个高性能计算(HPC)集群中,不同的研究团队共享同一个 InfiniBand 网络资源,但他们的计算任务数据需要相互隔离,以避免数据泄露和未经授权的访问。通过配置 Partition Key,网络管理员可以将每个研究团队的计算节点划分到不同的逻辑分区,使其只能够访问和通信特定的节点。需要满足的要求:1、安全性:不同研究团队的计算节点只能在其各自的分区内进行通信,防止未经授权的访问。2、资源分配:通过 PKey,可以确保不同的团队能够获得平等或特定的网络资源,避免因资源争用引起的网络拥堵。3、数据隔离:分区内的节点可以自由通信,但不会与其他分区的节点通信,实现有效的数据隔离。配置 PKey 的命令和参数:NVIDIA InfiniBand 交换机通常通过 Subnet Manager(SM)进行管理和配置,PKey 可以通过 Subnet Manager 的配置文件或命令行工具进行设置。以下是通过 Subnet Manager 配置 PKey 的示例:方式1 - Subnet Manager 配置文件:(SM可以配置在具有SM功能的交换机上,也可以把SM安装服务器上)通常,Subnet Manager 的配置文件位于 /etc/opensm/opensm.conf 或类似的路径中。可以编辑配置文件,添加所需的 PKey 条目。例如:partition { name default partition_key 0x7fff ipoib on members guid=0x0002c90300035ea1 //默认是完全成员 members guid=0x0002c90300035ea2 //默认是完全成员} //该示例为默认的分区 default 配置了 PKey 0x7fff,并启用了 IP over IB(IPoIB)。方式2 - 使用命令行工具:使用 opensm 工具,可以直接在命令行下对 PKey 进行配置。例如:opensm --partition_conf /etc/opensm/partition.conf //这条命令将从指定的 partition.conf 文件中加载分区配置。方式3 - NVIDIA UFM 管理软件:使用 NVIDIA 的 Unified Fabric Manager(UFM)管理工具,可以通过图形界面管理 PKey,并分配给网络设备。配置示例:分别有3个分区:prod、test和dev,要求:prod与test和dev不互通,test和dev可以互通。规划 PKey:prod:设定 PKey 0x7fff,表示生产环境,且只允许它的成员互相通信。test:设定 PKey 0x7ffe,表示测试环境,并允许与 dev 环境互通。dev:设定 PKey 0x7ffd,表示开发环境,并允许与 test 环境互通。vim /etc/opensm/partition.conf)# prod 分区,只允许 prod 内的节点内部互相通信partition { name prod partition_key 0x7fff ipoib on members guid=0x0002c90300035ea1 //默认是full members guid=0x0002c90300035ea2 //默认是full members guid=0x0002c90300035ea3 //默认是full}# 为 test 和 dev 分区设置相同的 PKey,以允许两个分区之间的设备互相通信partition { name test_dev partition_key 0x5678 ipoib on members guid=0x0002c90300035eb1 members guid=0x0002c90300035eb2 members guid=0x0002c90300035ec1 members guid=0x0002c90300035ec2}# 配置逻辑与说明:prod:生产环境的 PKey 0x7fff 设置的节点列表应包括生产环境中的所有计算节点。它只允许这些 GUID 列表内的节点相互通信。test:测试环境的 PKey 0x7ffe 设置的节点列表应包括测试环境的所有计算节点,并且这些节点还可以与 dev 环境的节点互相通信。dev:开发环境的 PKey 0x7ffd 的节点列表应包括开发环境的所有计算节点,这些节点可以与 test 环境的节点互相通信。在配置完 PKey 后,需要重启 Subnet Manager 使之生效:systemctl restart opensmPKey值和GUID值说明:1、Partition Key(PKey)Partition Key 通常以 16 位的十六进制格式(0x 表示十六进制)来表示,例如 0x7fff 或 0x7ffe。这样的格式在 InfiniBand 协议规范中定义。有效的 PKey 是 16 位长,其中最高位通常用来表示完全成员或有限成员,剩下的 15 位代表实际的分区值。采用十六进制是 InfiniBand 标准规定的格式,通常在配置文件或命令行中都以 0x 开头。使用这种格式有助于保持一致性,并与 InfiniBand 设备之间的通信协议保持一致。完全成员与有限成员:完全成员:如果最高位为 1,表示此 PKey 是完全成员。有限成员:如果最高位为 0,表示此 PKey 是有限成员。2、GUID(全局唯一标识符)GUID(Globally Unique Identifier,全球唯一标识符)是用于标识 InfiniBand 网络中的每个设备的唯一标识符。它类似于以太网的 MAC 地址,但具有更大的范围和长度。使用 InfiniBand 工具如 ibstat 或 ibv_devinfo 来获取每个 HCA 的 GUID。在配置 Partition Key 时,需要通过 GUID 列表来指定哪些设备属于分区的成员。通过在 members 字段中列出这些 GUID,Subnet Manager 会将对应的 HCA 设备划分到特定的分区中。这可以确保不同分区的设备按设计保持隔离或互通,并提供合理的网络资源分配。GUID 的特点① 全球唯一性: * GUID 是一个全球唯一的 64 位标识符,通常以十六进制格式表示,如 0x0002c90300035ea1(0x 表示该数值以十六进制表示法,0002c90300035ea1 是 64 位的数值,是这个设备的 GUID)。16^16=18,446,744,073,709,552,000 * GUID 的具体组成如下: 制造商的标识符:GUID 的前 24 位(即前 6 位十六进制数,通常称为组织唯一标识符 OUI,Organizationally Unique Identifier)表示制造商的 ID。这部分由 IEEE 组织维护,并分配给设备制造商,使其能够确保其生产的设备具有全球唯一性。 设备序列号:GUID 的后 40 位(即后 10 位十六进制数)表示制造商分配的设备序列号,该序列号由制造商自行维护,以确保同一制造商生产的不同设备在全球范围内具有唯一的标识。 * 以 0x0002c90300035ea1 为例: 制造商 ID:0002c9 表示制造商的标识符(OUI),这 6 个十六进制数代表了某个特定的制造商,可以在 IEEE 数据库中查询。 设备序列号:0300035ea1 是制造商分配的唯一序列号,这 10 个十六进制数 确保了设备在同一制造商生产的其他设备中具有唯一性。② 设备类型: * 每个 InfiniBand 网络中的设备都有自己的 GUID,无论它是主机通道适配器(HCA)、目标通道适配器(TCA)、交换机、路由器,还是其他网络设备。 * 例如,主机通道适配器(HCA)和 InfiniBand 交换机的每个端口通常都有自己的 GUID。③ 制造商分配: * GUID 由设备制造商在出厂时为每个 InfiniBand 设备分配,类似于以太网 MAC 地址。 * 这确保每个设备在网络拓扑中具有唯一性和可识别性。GUID 的用途① 节点标识: * 在 InfiniBand 网络拓扑中,GUID 被用来唯一标识每个节点设备。② 配置与管理: * 在分区配置文件、策略管理和路径规划等方面,GUID 用于指定网络设备的身份,以便进行准确的管理和配置。 * 例如,在分区(Partition Key)配置文件中,使用 GUID 来指定哪些设备属于特定的分区。③ 调试与诊断: * 网络管理员可以使用 GUID 信息进行网络调试和故障排除,识别和定位特定的网络设备。3、跨分区访问(即PKey值不同的多个分区内的成员设备想要互相访问)在 InfiniBand 网络中,不同 PKey 的分区之间默认是隔离的,成员之间无法互相通信。如果希望某个分区的设备能够与其他分区的设备通信,可以为该设备同时配置多个 PKey 值,使该设备属于多个分区,进而允许跨分区访问。Subnet Manager 通常使用一个配置文件来管理分区,例如 /etc/opensm/partition.conf。如果没有该文件,可以自行创建,并确保 Subnet Manager 在启动时加载此文件。使用文本编辑器打开分区配置文件,并添加多个 PKey 的分区配置。# PKey 0x1234 分区的配置partition { name partition_1234 partition_key 0x1234 ipoib on members guid=0x0002c90300035ea1 # 设备A(完全成员) members guid=0x0002c90300035eb2 # 设备B(完全成员)}# PKey 0x5678 分区的配置partition { name partition_5678 partition_key 0x5678 ipoib on members guid=0x0002c90300035ea1 # 设备A(完全成员) members guid=0x0002c90300035ec3 # 设备C(完全成员)}在此示例中,设备 A(GUID 0x0002c90300035ea1)被同时配置在两个 PKey 分区(0x1234 和 0x5678)中,因此设备 A 可以同时访问这两个分区的成员。ipoib on 选项表示分区将启用 IP over IB(IPoIB)以便通过 IP 通信。编辑并保存配置文件后,重启 Subnet Manager 以应用更改:systemctl restart opensm4、有限分区内的成员设备想要互相访问有限分区内的成员设备彼此不能互通,除非某个成员设备是完全成员,作为通信中介。partition { name A //分区名为A partition_key 0x1234 //有限成员分区 ipoib on members guid=0x0002c90300035ea1 limited # 甲,只能指定为有限成员 members guid=0x0002c90300035eb2 limited # 乙,只能指定为有限成员 members guid=0x0002c90300035ec3 full # 丙,默认或指定为完全成员}systemctl restart opensm //编辑并保存配置文件后,重启 Subnet Managermembers guid=0x0002c90300035ea1 full 和 members guid=0x0002c90300035ea1 是一样的,即默认是完全成员。partition { name partition_9aaa partition_key 0x9aaa //这是一个完全成员分区 ipoib on members guid=0x0002c90300035ea1 limited //只能指定有限成员 members guid=0x0002c90300035eb2 full //默认或指定完全成员 members guid=0x0002c90300035ec3 full //默认或指定完全成员}完全成员(Full Member)和有限成员(Limited Member):① 完全成员:完全成员(默认)是指具有分区完全访问权限的设备,完全(full)成员拥有最完整的权限,可以与相同分区内的所有成员自由通信。② 有限成员:有限成员(手动指定)是指在分区中拥有受限访问权限的设备,有限成员只能与同一分区中的其他完全成员通信,但无法直接与其他有限成员通信。③ 在配置 Partition Key 时,完全成员和有限成员的区别体现在最高位:最高位为 1:表示完全成员,最高位为 0:表示有限成员。即:0x8000 ~ 0xffff:表示完全成员分区。0x0000 ~ 0x7fff:表示有限成员分区。理论上,一共有65536个分区。背景:一家大学的计算机科学系需要构建一个HPC集群,以满足其数据密集型科学研究和大型计算项目的需求。他们的目标是通过构建一个InfiniBand网络,以确保在数百台服务器之间实现高效的网络通信。1、网络拓扑设计:采用Clos架构,确保高可用性和性能。使用多台高性能InfiniBand交换机作为Spine层,每台交换机拥有多个端口和高带宽的连接能力。在Leaf层使用多个中低性能的InfiniBand交换机,将计算节点(服务器或工作站)连接到核心Spine交换机。在拓扑结构中,确保每个Leaf交换机都连接到至少两个Spine交换机,以提供冗余和故障切换。2、网络配置:在交换机上配置Subnet Manager(SM),以确保自动配置网络并维护连接表。通常需要至少一个主SM和一个或多个备SM,且多是选择Spine层交换机配置SM(SM是交换机里的软件配置)配置Partition Key(PKey)来分隔不同的工作负载,确保资源的安全和隔离。3、高可用性:使用双网卡(LACP或Bonding)设计为每个计算节点配置双路径,以提高容错能力。对应的交换机则需要配置堆叠或M-LAG。通过备用的SM管理器配置,确保在主SM故障时,备用SM可以接管。4、性能优化:在每个计算节点上启用RDMA(远程直接内存访问)技术,以减少数据传输的CPU占用,提高带宽利用率。调整交换机上的QoS设置,确保高优先级的数据传输不会受到干扰。指定主备SM:(SM可以配置在具有SM功能的交换机上,也可以把SM安装服务器上)ib sm start //启动 Subnet Manager 服务ib sm set --priority 10 //设置 SM 的优先级,数值越小,优先级越高。ib sm status //检查 SM 的状态,以确保主 SM 和备 SM 都已启动并运行注意事项:* 优先级:主 SM 的优先级应当低于备 SM 的优先级。通常主 SM 的优先级设为10,备 SM 设为20。* 定期测试:建议定期测试 SM 的主备切换能力,确保备 SM 在关键时刻能够正常接管。* 网络监控:使用网络监控工具或软件,实时了解 SM 服务的健康状态,以便及时发现并处理任何问题。设计SM的注意事项:1、SM 部署位置:Spine 层:通常主 SM 和备 SM 都部署在 Spine 层的交换机上,因为 Spine 层是网络的中心位置,通常连接到网络中的所有 Leaf 层交换机。这可以确保网络拓扑结构的管理最优。Leaf 层:在某些小型或特殊拓扑结构的网络中,如果没有 Spine 层,SM 也可以直接部署在 Leaf 层交换机上,但这不是常规做法。2、选择主 SM 和备 SM 的依据:网络稳定性:选择稳定的 Spine 层交换机作为主 SM,确保其具有良好的硬件性能和稳定的电源供应。网络连接性:应确保主 SM 能够直接访问所有的 Leaf 层交换机,方便进行网络拓扑结构的管理。业务连续性:备 SM 应部署在与主 SM 不同的物理交换机上,确保在主 SM 故障时备 SM 能够迅速接管,保持网络的正常运作。物理位置:为了降低单点故障的风险,主 SM 和备 SM 应部署在不同的数据中心或不同机架的交换机上,以应对机架级别或局部区域的故障。性能需求:SM 所在的交换机应具有充足的性能和容量来满足网络的拓扑管理需求。3、配置建议:主 SM 优先级较低:将主 SM 配置为优先级较低的值(如10),以确保其始终优先负责网络管理。备 SM 优先级较高:备 SM 通常设置为优先级较高的值(如20),以确保主 SM 故障时备 SM 能迅速接管。SM的主要作用:(类似SDN控制器的作用)1、拓扑发现与维护:网络发现:SM 定期扫描整个网络,发现新添加的设备、交换机和端口状态,构建完整的拓扑图。它可以识别不同设备的物理连接,形成网络的“地图”。拓扑更新:如果某个设备或交换机的状态发生变化(如端口连接断开或设备移除),SM 会自动更新网络的拓扑结构,并重新计算路由。2、路径选择与分配:路径计算:SM 负责为网络中的每个设备(HCA(即网卡)和交换机)计算合适的数据路径。它根据网络拓扑结构、带宽和网络负载等因素,选择最优的路由。多路径:SM 还可以为关键设备配置多路径冗余,确保数据流在一个路径故障时可以快速切换到另一条备用路径。3、分区管理:安全与隔离:SM 使用 Partition Key(PKey)将不同的网络设备和数据流隔离开来,确保特定工作负载之间的隔离性与安全性。资源分配:通过设置 PKey,SM 可以在网络中划分独立的分区,并根据工作负载类型和应用需求为分区分配资源。4、服务质量(QoS)管理:优先级设置:SM 允许为不同的网络流量设置优先级,确保高优先级的流量(如实时应用或关键数据流)获得更快的传输。流量控制:SM 可以启用链路级流量控制机制,防止网络中出现拥堵或过载,确保网络资源得到合理利用。5、管理与监控:网络监控:SM 持续监控网络中的设备状态,并报告设备故障、端口错误和性能问题。日志与报告:SM 生成详细的操作日志和报告,供管理员分析网络问题并优化网络性能。6、主备切换:高可用性:InfiniBand 网络中通常配置主 SM 和备 SM,以确保在主 SM 故障时备 SM 能迅速接管网络管理,从而提高网络的可用性和可靠性。SM管理节点的理论上限:理论上,Subnet Manager(SM)在 InfiniBand 网络中可以管理的节点设备数量没有绝对的上限。然而,实际数量受到 Subnet Manager 实现、硬件资源以及网络规模和复杂度的限制。1、理论上限:Subnet Manager 标准:根据 InfiniBand 标准的定义,SM 可以发现和管理 InfiniBand 网络中的所有节点设备,包括主机节点、交换机和其他网络设备。InfiniBand 地址空间:理论上,InfiniBand 网络的地址空间可以容纳数百万个节点。分区与拓扑:实际的节点数量上限还受限于网络拓扑、分区配置和通信路径的规划。2、实际限制:Subnet Manager 实现:不同的 SM 实现有不同的性能和优化。开源的 OpenSM 通常能够管理多达数千个节点的集群网络。3、硬件性能:运行 SM 的硬件性能(如 CPU、内存等)将影响 SM 处理大量节点和拓扑路径的能力。更强大的硬件配置可以提高 SM 对大量节点的管理能力。4、网络拓扑复杂度:网络拓扑的复杂度和路径规划的计算需求也会影响 SM 能够管理的最大节点数量。SM与SDN控制器对比表:

比较维度

Subnet Manager (SM)

SDN 控制器

作用

管理 InfiniBand 网络的拓扑、路径和配置。

控制以太网或混合网络的拓扑、路由和策略。

协议与技术栈

使用 InfiniBand 协议和特定技术栈。

使用 OpenFlow、BGP-LS 或其他协议。

路径选择

计算 InfiniBand 网络中的最佳数据路径。

动态分配和计算以太网或混合网络中的数据路径。

拓扑发现

定期扫描 InfiniBand 网络的设备与连接。

扫描网络拓扑,识别和管理不同的网络设备与连接。

集中管理

中央化管理 InfiniBand 网络的设备和拓扑。

通过控制器集中管理广泛的网络资源。

分区管理

基于 Partition Key (PKey) 分区。

基于虚拟网络(VLAN)或策略的分段。

服务质量管理

配置 InfiniBand 网络中的服务质量。

管理数据流量的优先级、策略和服务质量。

扩展性

专注于 InfiniBand 网络的可扩展性。

提供横向扩展的能力,适应以太网、广域网和混合网络。

网络类型

专用于 InfiniBand 网络。

主要用于以太网,也可用于多种网络类型。

应用领域

高性能计算、AI 训练和存储网络。

数据中心、广域网、企业网络和云网络。

SM 和 UFM 的比较:

比较维度

Subnet Manager(SM)必需

Unified Fabric Manager(UFM)非必需

角色

InfiniBand 网络的基本网络管理组件

用于集中化管理和监控 InfiniBand 网络的高级工具

主要功能

负责网络拓扑发现、路径选择和基础网络配置

实时监控、拓扑可视化、策略管理、网络优化和安全监控

拓扑管理

发现和维护网络拓扑,确保路径优化

提供拓扑自动发现、图形化视图以及高级拓扑管理

路径选择

计算最佳数据路径,确保通信可靠和高效

具备自动路径优化和流量均衡等高级路径管理功能

策略管理

基础的 Partition Key(PKey)配置

高级策略引擎,用于管理分区、VLAN、流量优先级等

安全性

实现基础的网络隔离与分区控制

实时检测网络异常、报警和流量审计

可视化

无图形界面或只提供基本的命令行输出

图形化界面,提供全面的拓扑、性能和状态可视化

扩展性

用于 InfiniBand 网络的基本配置管理

可与其他管理工具或 API 集成,实现网络管理自动化

应用场景

高性能计算集群和 InfiniBand 基础网络管理

大型或复杂的 InfiniBand 网络管理、优化和监控

开发/提供商

作为 InfiniBand 标准的一部分,通常是开源的

NVIDIA 提供的商业网络管理软件平台

部署和配置

通常配置在具有SM功能的交换机或单独的服务器上

作为软件平台,通常部署在服务器上

!!!【点赞】、【关注】不走丢^_^

!!!【点赞】、【关注】不走丢^_^



0 阅读:0

龅牙兔谈科技

简介:感谢大家的关注