188e37e3dSYanteng Si.. include:: ../disclaimer-zh_CN.rst 288e37e3dSYanteng Si 388e37e3dSYanteng Si:Original: Documentation/infiniband/ipoib.rst 488e37e3dSYanteng Si 588e37e3dSYanteng Si:翻译: 688e37e3dSYanteng Si 788e37e3dSYanteng Si 司延腾 Yanteng Si <siyanteng@loongson.cn> 888e37e3dSYanteng Si 988e37e3dSYanteng Si:校译: 1088e37e3dSYanteng Si 1188e37e3dSYanteng Si 王普宇 Puyu Wang <realpuyuwang@gmail.com> 1288e37e3dSYanteng Si 时奎亮 Alex Shi <alexs@kernel.org> 1388e37e3dSYanteng Si 1488e37e3dSYanteng Si.. _cn_infiniband_ipoib: 1588e37e3dSYanteng Si 1688e37e3dSYanteng Si========================= 1788e37e3dSYanteng Siinfiniband上的IP(IPoIB) 1888e37e3dSYanteng Si========================= 1988e37e3dSYanteng Si 2088e37e3dSYanteng Si ib_ipoib驱动是IETF ipoib工作组发布的RFC 4391和4392所规定的 2188e37e3dSYanteng Si infiniband上IP协议的一个实现。它是一个“本地”实现,即把接口类型设置为 2288e37e3dSYanteng Si ARPHRD_INFINIBAND,硬件地址长度为20(早期的专有实现向内核伪装为以太网 2388e37e3dSYanteng Si 接口)。 2488e37e3dSYanteng Si 2588e37e3dSYanteng Si分区和P_Keys 2688e37e3dSYanteng Si============ 2788e37e3dSYanteng Si 2888e37e3dSYanteng Si 当IPoIB驱动被加载时,它会使用索引为0的P_Key给每个端口创建一个接口。要用 2988e37e3dSYanteng Si 不同的P_Key创建一个接口,将所需的P_Key写入主接口的 3088e37e3dSYanteng Si /sys/class/net/<intf name>/create_child文件里面。比如说:: 3188e37e3dSYanteng Si 3288e37e3dSYanteng Si echo 0x8001 > /sys/class/net/ib0/create_child 3388e37e3dSYanteng Si 3488e37e3dSYanteng Si 这将用P_Key 0x8001创建一个名为ib0.8001的接口。要删除一个子接口,使用 3588e37e3dSYanteng Si ``delete_child`` 文件:: 3688e37e3dSYanteng Si 3788e37e3dSYanteng Si echo 0x8001 > /sys/class/net/ib0/delete_child 3888e37e3dSYanteng Si 3988e37e3dSYanteng Si 任何接口的P_Key都由“pkey”文件给出,而子接口的主接口在“parent”中。 4088e37e3dSYanteng Si 4188e37e3dSYanteng Si 子接口的创建/删除也可以使用IPoIB的rtnl_link_ops来完成,使用两种 4288e37e3dSYanteng Si 方式创建的子接口的行为是一样的。 4388e37e3dSYanteng Si 4488e37e3dSYanteng Si数据报与连接模式 4588e37e3dSYanteng Si================ 4688e37e3dSYanteng Si 4788e37e3dSYanteng Si IPoIB驱动支持两种操作模式:数据报和连接。模式是通过接口的 4888e37e3dSYanteng Si /sys/class/net/<intf name>/mode文件设置和读取的。 4988e37e3dSYanteng Si 5088e37e3dSYanteng Si 在数据报模式下,使用IB UD(不可靠数据报)传输,因此接口MTU等于IB L2 MTU 5188e37e3dSYanteng Si 减去IPoIB封装头(4字节)。例如,在一个典型的具有2K MTU的IB结构中,IPoIB 5288e37e3dSYanteng Si MTU将是2048 - 4 = 2044字节。 5388e37e3dSYanteng Si 5488e37e3dSYanteng Si 在连接模式下,使用IB RC(可靠的连接)传输。连接模式利用IB传输的连接特性, 5588e37e3dSYanteng Si 允许MTU达到最大的IP包大小64K,这减少了处理大型UDP数据包、TCP段等所需的 5688e37e3dSYanteng Si IP包数量,提高了大型信息的性能。 5788e37e3dSYanteng Si 5888e37e3dSYanteng Si 在连接模式下,接口的UD QP仍被用于组播和与不支持连接模式的对等体的通信。 5988e37e3dSYanteng Si 在这种情况下,ICMP PMTU数据包的RX仿真被用来使网络堆栈对这些邻居使用较 6088e37e3dSYanteng Si 小的UD MTU。 6188e37e3dSYanteng Si 6288e37e3dSYanteng Si无状态卸载 6388e37e3dSYanteng Si========== 6488e37e3dSYanteng Si 6588e37e3dSYanteng Si 如果IB HW支持IPoIB无状态卸载,IPoIB会向网络堆栈广播TCP/IP校验和/或大量 6688e37e3dSYanteng Si 传送(LSO)负载转移能力。 6788e37e3dSYanteng Si 6888e37e3dSYanteng Si 大量传送(LSO)负载转移也已实现,可以使用ethtool调用打开/关闭。目前,LRO 6988e37e3dSYanteng Si 只支持具有校验和卸载能力的设备。 7088e37e3dSYanteng Si 7188e37e3dSYanteng Si 无状态卸载只在数据报模式下支持。 7288e37e3dSYanteng Si 7388e37e3dSYanteng Si中断管理 7488e37e3dSYanteng Si======== 7588e37e3dSYanteng Si 7688e37e3dSYanteng Si 如果底层IB设备支持CQ事件管理,可以使用ethtool来设置中断缓解参数,从而减少 7788e37e3dSYanteng Si 处理中断产生的开销。IPoIB的主要代码路径不使用TX完成信号的事件,所以只支持 7888e37e3dSYanteng Si RX管理。 7988e37e3dSYanteng Si 8088e37e3dSYanteng Si调试信息 8188e37e3dSYanteng Si======== 8288e37e3dSYanteng Si 8388e37e3dSYanteng Si 通过将CONFIG_INFINIBAND_IPOIB_DEBUG设置为“y”来编译IPoIB驱动,跟踪信 8488e37e3dSYanteng Si 息被编译到驱动中。通过将模块参数debug_level和mcast_debug_level设置为1来 8588e37e3dSYanteng Si 打开它们。这些参数可以在运行时通过/sys/module/ib_ipoib/的文件来控制。 8688e37e3dSYanteng Si 8788e37e3dSYanteng Si CONFIG_INFINIBAND_IPOIB_DEBUG也启用debugfs虚拟文件系统中的文件。通过挂 8888e37e3dSYanteng Si 载这个文件系统,例如用:: 8988e37e3dSYanteng Si 9088e37e3dSYanteng Si mount -t debugfs none /sys/kernel/debug 9188e37e3dSYanteng Si 9288e37e3dSYanteng Si 可以从/sys/kernel/debug/ipoib/ib0_mcg等文件中获得关于多播组的统计数据。 9388e37e3dSYanteng Si 9488e37e3dSYanteng Si 这个选项对性能的影响可以忽略不计,所以在正常运行时,在debug_level设置为 9588e37e3dSYanteng Si 0的情况下启用这个选项是安全的。 9688e37e3dSYanteng Si 9788e37e3dSYanteng Si CONFIG_INFINIBAND_IPOIB_DEBUG_DATA当data_debug_level设置为1时,可以 9888e37e3dSYanteng Si 在数据路径中启用更多的调试输出。 然而,即使禁用输出,启用这个配置选项也 9988e37e3dSYanteng Si 会影响性能,因为它在快速路径中增加了测试。 10088e37e3dSYanteng Si 10188e37e3dSYanteng Si引用 10288e37e3dSYanteng Si==== 10388e37e3dSYanteng Si 10488e37e3dSYanteng Si 在InfiniBand上传输IP(IPoIB)(RFC 4391)。 10588e37e3dSYanteng Si http://ietf.org/rfc/rfc4391.txt 10688e37e3dSYanteng Si 10788e37e3dSYanteng Si infiniband上的IP:上的IP架构(RFC 4392)。 10888e37e3dSYanteng Si http://ietf.org/rfc/rfc4392.txt 10988e37e3dSYanteng Si 11088e37e3dSYanteng Si infiniband上的IP: 连接模式 (RFC 4755) 11188e37e3dSYanteng Si http://ietf.org/rfc/rfc4755.txt 112