13.8.4. 了解 InfiniBand P_Key 子网
InfiniBand 结构可以通过使用不同的
P_Key
子网在逻辑上细分为虚拟子网。这与在以太网接口上使用 VLAN 非常相似。所有交换机和主机必须是默认 P_Key
子网的成员,但管理员可以创建额外的子网,并将这些子网的成员限制为 fabric 中的主机或交换机的子集。P_Key
子网必须由子网管理器定义,然后主机才能使用它。有关如何使用 opensm 子网管理器定义 P_Key
子网的信息,请参阅 第 13.6.4 节 “创建 P_Key 定义” 部分。对于 IPoIB 接口,一旦创建了 P_Key
子网,我们可以为这些 P_Key
子网创建额外的 IPoIB 配置文件。正如以太网设备上的 VLAN 接口一样,每个 IPoIB 接口的行为就像它位于与其他 IPoIB 接口完全不同的结构上一样,这些接口共享同一链路,但具有不同的 P_Key
值。
IPoIB
P_Key
接口的名称有特殊要求。所有 IPoIB P_Key
s 范围从 0x0000
到 0x7fff
,高位 0x8000
表示 P_Key
成员资格是完全成员资格,而不是部分成员身份。Linux 内核的 IPoIB 驱动程序只支持 P_Key
子网中的完全成员资格,因此对于 Linux 可以连接的任何子网而言,会始终设置 P_Key
编号的高位。这意味着,如果 Linux 计算机加入 P_Key 0x0002
,一旦加入,实际的 P_Key
编号将为 0x8002
,表示我们是 P_Key 0x0002
的所有成员。因此,当在 opensm partitions.conf
文件中创建 P_Key
定义时,如 第 13.6.4 节 “创建 P_Key 定义” 部分所述,需要指定不使用 0x8000
的 P_Key
值,但在 Linux 客户端上定义 P_Key
IPoIB 接口时,将 0x8000
值添加到基本 P_Key
值。