xref: /linux/Documentation/translations/zh_CN/infiniband/ipoib.rst (revision 762f99f4f3cb41a775b5157dd761217beba65873)
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