InfiniBand(IB)是一种高性能的网络互连技术,广泛应用于高性能计算(HPC)和数据中心。为了在InfiniBand网络上运行标准的IP协议栈,Linux内核提供了IP over InfiniBand(IPoIB)驱动模块。IPoIB允许在InfiniBand网络上传输IPv4和IPv6数据包,从而使得现有的IP应用程序能够无缝地在InfiniBand网络上运行。
本文将详细分析Linux内核中IPoIB驱动模块的初始化过程及其关键代码实现。我们将从枚举定义、全局变量、结构体定义、初始化函数等方面进行深入探讨。
1. 枚举定义
在IPoIB驱动模块中,枚举定义了一系列与协议相关的常量,这些常量用于配置IPoIB的各种参数。例如:
-
IPOIB_ENCAP_LEN 和 IPOIB_PSEUDO_LEN 分别表示封装头和伪头的长度。
-
IPOIB_HARD_LEN 是封装头和伪头的总长度。
-
IPOIB_UD_HEAD_SIZE 是无连接模式(UD)下的头部大小。
-
IPOIB_CM_MTU 是连接管理(CM)模式下的最大传输单