IPoIB

原文链接:https://zhuanlan.zhihu.com/p/523265464

Upper Layer Protocol
IPoIB ULP是在IB网络上运行的一个网络接口,IPoIB通过InfiniBand连接或数据报传输服务封装IP数据报,实现了一下功能:

在IB网络通过子接口实现vlan模拟
通过bonding实现高可用HA
改变MTU的值
接收数据包的计算校验和
两种运行模式:dategram和connected
connected模式支持large MTU
IPoIB 还支持下面功能的基于软件的增强模式:

Giant Receive Offload
NAPI
Ethtool support
增强模式 IPoIB
增强型IPoIB支持下列功能:

无状态卸载
复合序列
协调中止
共享send/receive序列
供应商特定优化
唯一UD模式
注意在 Enhanced mode and ULP mode之间转换,只有通过设定IPoIB参数“ipoib_enhanced” to 1 or 0.
为了确认是否运行增强模式IPoIB,运行

ip link show ibX
IPoIB 模式设置
IPoIB ULP 运行时有两种模式: Connected mode and Datagram mode。默认情况下,IPoIB ULP 设定的工作模式是 Datagram mode,为了更好的性能和扩展性,我们建议您使用Datagram mode。

如果想要转换为Connected mode,您可以通过编辑文件 /etc/infiniband/openib.conf, 然后设置’SET_IPOIB_CM=yes’ 。改变模式之后,需要重新启动驱动程序,运行命令

/etc/init.d/openibd restart
为了验证现在运行的模式,运行命令

cat /sys/class/net/ib/mode
注意:1 改变IPoIB模式 (CM vs UD) 接口必须在down状态。

2 enhanced IPoIB不支持Connected mode。

IPoIB配置方法
IPoIB需要分配给每个网卡端口分配一个ip地址和子网掩码,主机上的第一张网卡的第一个端口叫做ib0,第二个端口叫ib1,依此类推。IPoIB 配置可以基于DHCP 或者静态地址,您还可以应用手动配置,该配置仅持续到下次重新启动或驱动程序重新启动。

基于 DHCP的IPoIB 配置
设置基于DHCP的IPoIB接口与配置以太网接口非常类似,换言之, 你要确保IPoIB配置文件包括下列命令:

对RedHat

BOOTPROTO=dhcp
IPoIB 配置文件 ifcfg-ib 文件包括在下面目录之中:

/etc/sysconfig/network-scripts/ 红帽系统
/etc/sysconfig/network/ SuSE 系统

DHCP 服务器

为使DHCP服务器能给DHCP客户端提供配置的记录文件,需要创建一个合适的配置文件。默认的,DHCP服务器需要在/etc目录下的dhcpd.conf 。您可以编辑这个文件或者新建一个文件,使用-cf参数提供一个文件的文件路径(参看模板docs/dhcpd.conf0)

DHCP server需要运行在一个加载IPoIB模块的系统上,运行DHCP服务需要输入命令:

dhcpd -d #如dhcpd ifconf-ib0 -d
静态IPoIB配置
您需要提供一个包含完整IP配置的安装文件,文件可以在下面两个配置文件中确定

静态IPoIB配置文件
基于以太网配置文件的IPoIB配置文件
下面是配置文件的的模板

Static settings; all values provided by this file

IPADDR_ib0=11.4.3.175
NETMASK_ib0=255.255.0.0
NETWORK_ib0=11.4.0.0
BROADCAST_ib0=11.4.255.255
ONBOOT_ib0=1

Based on eth0; each ‘*’ will be replaced with a corresponding octet

from eth0.

LAN_INTERFACE_ib0=eth0
IPADDR_ib0=11.4.‘‘.’
NETMASK_ib0=255.255.0.0
NETWORK_ib0=11.4.0.0
BROADCAST_ib0=11.4.255.255
ONBOOT_ib0=1

Based on the first eth interface that is found (for n=0,1,…);

each ‘*’ will be replaced with a corresponding octet from eth.

LAN_INTERFACE_ib0=
IPADDR_ib0=11.4.‘‘.’
NETMASK_ib0=255.255.0.0
NETWORK_ib0=11.4.0.0
BROADCAST_ib0=11.4.255.255
ONBOOT_ib0=1
手动配置IPoIB
注意:手动配置仅在下次启动之前有效

1为默认的ib分区(vlan)进行手动配置,执行下列步骤

通过ifconfig命令配置接口,如下

恰当的IB接口(ib0,ib1等)
想要配置的IP地址
分配给接口的子网掩码
示例

host1$ ifconfig ib0 11.4.3.175 netmask 255.255.0.0
2 查看目前的配置,输入命令如下

host1$ ifconfig ib0
b0 Link encap:UNSPEC HWaddr 80-00-04-04-FE-80-00-00-00-00-00-00-00-00-00-00
inet addr:11.4.3.175 Bcast:11.4.255.255 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:65520 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:128
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
如果还需配置其他接口,重复以上步骤.

子接口(sub-interfaces)
你可以为一个主接口或者(primary IPoIB interface)创建子接口(sub-interfaces)来隔离通信。每个子接口(也叫做child interface)拥有一个不同于接口的IP地址和子网掩码,默认的Partition Key(PKey)应用于主(父)接口。

这一部分描述了1 创建子接口 2 移除子接口

创建子接口
1 决定子网中要使用的PKey(有效值可以是0或任何16位无符号值)。实际使用的PKey是一个16位数字,设置了最重要的比特位。例如,值1将给出值为0x8001的PKey。

2 创建子接口,

host1$ echo > /sys/class/net//create_child
Example:

host1$ echo 1 > /sys/class/net/ib0/create_child
这样就创建了接口ib0.8001。

3 确认接口的配置

host1$ ifconfig .
用上一步举例

host1$ ifconfig ib0.8001
ib0.8001 Link encap:UNSPEC HWaddr 80-00-00-4A-FE-80-00-00-00-00-00-00-00-00-00-00
BROADCAST MULTICAST MTU:2044 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:128
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
4 如上所示,这个子接口没有IP地址,这就需要按照手动配置IPoIB的部分来设置。

5 为了能够使用这个接口,需要配置子网管理器,以便被选定的PKey可以被识别,而且这个PKey定义了广播地址。

移除子接口
为了移除子接口,运行命令

echo /sys/class/net/<ib_interface>/delete_child
例如

echo 0x8001 > /sys/class/net/ib0/delete_child
注意当删除接口时,必须使用最重要比特位形式的PKey值。例如上面的0x8000。

验证IPoIB功能
Bonding IPoIB
Bonding of IPoIB 的配置方式与以太网bonding方式类似。IPoIB从机的网络脚本文件以IPoIB接口命名。(e.g: ifcfg- ib0)
IPoIB中唯一有意义的绑定策略是高可用性(绑定模式1或主动备份)
绑定参数"fail_over_mac"在IPoIB接口中没有意义,因此,唯一支持的值是默认值:0
对于持久绑定IPoIB网络配置

在bonding master 配置文件中,使用参数MTU=65520

65520 is a valid MTU value only if all IPoIB slaves operate in Connected mode (See “IPoIB Mode Setting”) and are configured with the same value. For IPoIB slaves that work in datagram mode, use MTU=2044. 如果你没有设置正确的MTU 或没有配置MTU , 接口性能可能会削弱。
对于RHEL 用户:在 /etc/modprobe.b/bond.conf 加入下面命令行:
alias bond0 bonding
重启openibd 不会保留bonding配置通过网络脚本. 你必须重启网络服务为了 the bonding master. 配置保存后, 重启网络设备 通过运行 /etc/init.d/network restart。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值