摘要
本文深入解析了 IPoIB(InfiniBand over IP)协议栈中邻居表管理的关键函数。邻居表在 IPoIB 中用于存储和管理直接通信设备的地址及相关信息,对网络通信效率和资源管理至关重要。文章详细阐述了从哈希地址计算到邻居表清除等各关键函数的功能、实现细节及它们在网络通信中的作用。
1. 引言
在计算机网络中,邻居表是一个关键的数据结构,用于维护网络中直接通信设备的信息。对于 IPoIB 协议栈而言,邻居表的作用尤为重要,它不仅实现了地址解析和缓存功能,还通过维护邻居状态信息来优化网络通信。本文将对 IPoIB 邻居表管理中的多个关键函数进行详细解析,探讨它们如何协同工作以实现高效、可靠的邻居表管理。
2. 哈希地址计算函数:ipoib_addr_hash
2.1 函数功能
ipoib_addr_hash 函数负责将 InfiniBand 地址转换为哈希值,以便在邻居表(哈希表)中进行快速查找。这一过程对于提高邻居表操作的效率至关重要。
2.2 实现细节
该函数首先将输入的 InfiniBand 地址转换为 32 位的数组 d32。然后,利用 jhash_3words 函数基于 d32 的三个部分(d32[3]、d32[4] 和 IPOIB_QPN_MASK & d32[0])生成哈希值 hv。最后,通过与哈希表的掩码(htbl->mask&#x