在InfiniBand网络中,服务器是如何获取地址的?

龅牙兔谈科技 2024-05-24 08:40:57

在现代高性能计算(HPC)和数据中心环境中,InfiniBand(IB)网络凭借其低延迟和高带宽的优势,成为了连接服务器、存储设备和其他网络设备的首选技术之一。与传统的以太网不同,InfiniBand网络采用了一种更加高效的通信协议,能够满足超级计算、人工智能训练、数据分析等高密度计算任务的需求。

在 InfiniBand 网络中,每个设备都需要一个唯一的地址来进行通信。类似于以太网中的 IP 地址,InfiniBand 使用 Local Identifier (LID) 和 Global Identifier (GID) 来标识网络中的节点。这些地址的分配和管理对于网络的正常运行至关重要。

本文将深入探讨在 InfiniBand 网络中,服务器是如何获取地址的,并介绍相关的地址分配机制、协议以及具体的实现过程。

地址获取过程启动过程:当 GPU 服务器启动时,它的 InfiniBand 网络接口控制器(Host Channel Adapter,HCA)也会启动。加入子网:HCA 启动后,会向 IB 交换机发送一个 "Subnet Management Agent" (SMA) 请求,告知交换机该节点希望加入 IB 子网。Subnet Manager (SM) 分配LID地址:IB 交换机上的 "Subnet Manager" (SM) 收到请求后,会分配一个全局唯一的 "Local Identifier" (LID) 给该 HCA。LID 是一个局部地址,用于在 IB 子网内部进行通信。Subnet Manager (SM) 分配GID地址:同时,SM 也会分配一个 "Global Identifier" (GID),它是基于 GUID(Globally Unique Identifier)生成的全球唯一地址,类似于 IP 网络中的 IP 地址。

拓扑流程图:

FAQHCA是什么

详细介绍,请参见笔者

SM是什么

详细介绍,请参见笔者、和

LID、GUID和GID是什么

详细介绍,请参见笔者

为什么服务器需要LID和GID两个地址

LID 是 InfiniBand 子网内部的局部地址,用于在子网内部节点之间进行通信。LID 是一个 16 位的整数,表示范围为 0 到 65535。例如,一个节点可能被分配到 LID 1024。

GID 是一个全局唯一的标识符,通常用于在不同子网之间的通信。GID 是一个 128 位的地址,由一个 64 位的前缀和一个 64 位的接口标识符组成。例如,一个节点的GID值 fe80:0000:0000:0000:0210:83ff:fe11:2233。

性能和效率

① LID的优势:LID较短(16位)且简单,适用于子网内部快速、高效的路由查找和数据包转发。使用LID进行子网内通信可以减少交换机和路由器的处理时间,降低网络延迟。

② GID的优势:GID较长(128位),能够提供全球唯一性,适用于跨子网或更大范围的网络通信。GID的使用确保了在全球范围内的设备唯一标识,但由于其长度较长,不适合子网内高频率的数据包转发。

灵活性和可扩展性

① 子网内通信:通过使用LID,子网内设备可以实现快速的通信和数据转发,提高网络效率。

② 跨子网通信:通过使用GID,不同子网之间的设备可以进行无缝通信,支持更复杂的网络拓扑和更广泛的应用场景。

假如没有LID,只有GID

① 复杂性增加:如果只有GID一个地址,交换机和路由器在进行每次数据包转发时都需要处理较长的地址,这将增加查找和处理时间,降低网络效率。

② 性能降低:使用较长的GID地址进行子网内的高频通信,会导致路由查找速度变慢,增加网络延迟,不利于高性能计算环境的需求。

③ 管理难度:在大规模网络环境中,仅依赖GID进行地址管理和分配,会使得地址管理变得更加复杂和困难,增加网络运维成本。

对于LID来说,如何判断多台服务器是否同处一个子网

① 获取服务器的 LID 和 GID:每台服务器的 Host Channel Adapter (HCA) 都会有一个 LID 和一个或多个 GID。LID 用于子网内部通信,而 GID 用于跨子网通信。

② 比较 LID:

在同一个子网内,服务器的 LID 会被分配在一个特定的范围内。子网管理器 (Subnet Manager, SM) 会为同一子网内的所有设备分配唯一的 LID。可以通过查询这些 LID 来判断它们是否在同一子网内。例如,如果服务器 A 的 LID 是 1000,服务器 B 的 LID 是 1001,这两个 LID 在同一个子网范围内,则它们在同一个子网内。

③ 比较 GID 的前缀:

在 InfiniBand 网络中,GID 是 128 位的地址,通常由 64 位的子网前缀和 64 位的接口标识符组成。GID 的子网前缀用于标识子网。因此,如果多台服务器的 GID 具有相同的子网前缀,则它们属于同一个子网。例如,服务器 A 的 GID 是 fe80::0210:83ff:fe11:2233,服务器 B 的 GID 是 fe80::0210:83ff:fe11:2234,它们的子网前缀 fe80:: 相同,因此它们属于同一个子网。

0xfe80000000000000 是默认的链路本地子网前缀,常用于本地子网通信。

可以手动配置LID和GID吗

可以。

在典型的 IB 网络中,地址分配是自动完成的,无需手工配置。这是通过 IB 交换机上的 Subnet Manager (SM) 来实现的。SM 自动管理和分配 LID 和 GID,简化了网络配置和管理。尽管大多数情况下使用自动配置,但在某些特定场景下,也可以手工配置 LID 和 GID。这通常用于需要精细控制和调试的高级设置。手工配置涉及直接在 HCA 或交换机上设置地址,这需要高级网络知识和对 IB 协议的深入理解。ibstat  //查询当前配置sudo ibportstate -G <GUID> -P <PortNum> lid <LID>  //配置静态 LIDsudo ibportstate -G <GUID> -P <PortNum> gid <GID>  //配置静态 GID结论

InfiniBand 网络中的地址获取过程不仅涉及到网络设备本身,还涉及到网络管理软件(如 Subnet Manager,SM)的协同工作。SM 是 InfiniBand 网络的核心管理组件,负责管理和分配网络地址,确保网络中所有设备能够高效、无冲突地进行通信。

通过对 InfiniBand 地址获取过程的详细分析,我们不仅可以更好地理解 InfiniBand 网络的工作原理,还能为高性能计算和数据中心网络的设计和优化提供有价值的参考。

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

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



0 阅读:1

龅牙兔谈科技

简介:感谢大家的关注