有时,在 InfiniBand Fabric网络(即通过电缆物理连接到交换机和路由器的一组终端节点)内,需要在特定节点之间提供隔离并创建只有它们才能通信的“虚拟Fabric”。 在以太网中,这称为虚拟 LAN (VLAN),它定义了广播域。 但是,InfiniBand 不支持广播,因此它仅提供虚拟隔离。 这称为分区。 而且它比VLAN还要强大一点点
分区使用分区键 (P_Key) 来表示(和实现),分区键是一个 16 位值,包含两部分:
只有配置为位于同一分区中的 QP 才能通信,并且至少其中一个 QP 应该是该分区中的完整成员。 我们将在下面详细讨论这一点
分区提供 InfiniBand 结构之间的隔离,并且与子网边界无关
P_Key Table是存在于每个端节点端口中的P_Key表。 该表大小是端口的一个属性,可以在 port_attr.pkey_tbl_len 中找到。 该表由分区管理器 (PM) 配置,分区管理器通常是子网管理器 (SM) 的一部分。 该表至少有一个有效的P_Key(关键部分(低15位)不为零的P_Key),默认P_Key 0xFFFF
P_Key表可以包含多个值,即是多个分区的成员,在其中一些分区中它可以是完整成员,在其中一些分区中它可以是部分成员。 它甚至可以是同一分区中的完整成员和部分成员
每个 QP 都配置有 P_Key 表的索引。 在连接建立期间调用 ibv_modify_qp(),可以在与 QP 关联的端口的 P_Key 表中设置索引, P_Key 表中的值不是恒定的,它们可能会发生变化,因此应用程序必须为此做好准备
将 SR 发布到 QP 发起要发送的数据包。 每个数据包都携带一个 P_Key 值。 发送数据包时,这个QP会检查报文的P_Key
任何传入数据包的 P_Key 值都将与接收方 QP 中配置的 P_Key 进行比较。 将进行以下检查:
如果上述检查中只要有一项失败,则该包将被视为 P_Key 违规,并且数据包将被静默丢弃,如果设备支持(IBV_DEVICE_BAD_PKEY_CNTR属性, 在 dev_cap.device_cap_flags 中设置),则 port_attr.bad_pkey_cntr 错误分区键计数器将增加。 但是接收方的QP状态不会改变
重要的是 P_Key 值,而不是它们在 P_Key 表中的位置。 特定的P_Key值可能在子网的不同端口的不同索引中可以找到
从上面的测试可以看出,Limited成员不能接受来自其他Limited成员的流量,并且所有其他成员类型组合之间都允许通信,即至少一方必须是完整成员
举个例子, 以下队列对A, B, C, D分别关联一个P_Key
QPA 和 QPB 可以通信(因为它们都是分区 0x0001 中的成员,并且 QPA 是完整成员)
QPA 和 QPC 可以通信(因为它们都是分区 0x0001 中的成员,并且 QPA 是完整成员)
QPB 和 QPC 无法通信(因为它们都是分区 0x0001 中的成员,但都不是完整成员)
示例中的 QPD 和任何其他 QP 无法通信(因为它们不是同一分区的成员)
默认 P_Key 是一个特殊值 (0xFFFF),提供默认分区中的完全成员身份
无效分区键:是一个特殊值,表示分区键表条目不包含有效键
P_Key表是由SM配置的并且SM可以改变它,但大多数时候它不能。 如果您缓存 P_Key 表的值,则在发生 IBV_EVENT_PKEY_CHANGE 事件时,您应该刷新这些值
作者: Dotan Barak,2014年4月30日,2018年10月13日
ibv_query_pkey()July 27, 2012In "General"
Working with IPoIBApril 21, 2015In "General"
IP over InfiniBand (IPoIB) architectureFebruary 16, 2015In "General"
RDMAmojo 分区键: https://www.rdmamojo.com/2014/04/30/partition-key-p_key/
查询分区键: https://www.rdmamojo.com/2012/07/27/ibv_query_pkey/
博客: https://cloud.tencent.com/developer/user/5060293/articles | https://logread.cn | https://blog.csdn.net/ssbandjl | https://www.zhihu.com/people/ssbandjl/posts
https://cloud.tencent.com/developer/column/101987
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。