IPoIB(IP over Infiniband)协议简介 IPoIB(Internet Protocol over InfiniBand)是指利用IB物理网络设备(包括IB网卡、IB线缆、IB交换机等),完美支持基于TCP/IP协议编写的应用程序无需作出任何修改可以在IB链路上直接进行数据通信。 IPoIB支持如下功能:IPv4,IPv6DHCPIP 多播 一、IPoIB体系结构 IPoIB的体系架构如图1所示。在Linux操作系统中,IPoIB协议是作为标准Linux网络驱动程序的一部分实现的,任何基于 TCP/IP 协议栈的应用程序或内核驱动程序无需修改即可使用InfiniBand 传输。使用IPoIB网络接口发送数据,需要经过内核的网络协议栈,无法从InfiniBand 设备的内核旁路、零拷贝等功能中受益,因此IPoIB性能比RDMA通信方式性能要低。
图1 IPoIB体系结构 二、IPoIB硬件地址 IPoIB硬件地址其作用类似于以太网中网卡设备的mac地址,IPoIB硬件地址无法通过ifconfig指令查看,需要使用ip addr指令查询IPoIB的硬件地址,IPoIB设备硬件地址由20 个字节构成,以下部分组成:前 4 个字节是保留位和QP序号接下来的 8 个字节是子网前缀 opensm配置文件默认子网前缀为 0xfe:80:00:00:00:00:00:00。当设备接入到IB子网后,SM会根据opensm配置文件定义的子网前缀下发到IB网络设备。最后 8 个字节是厂商为IPoIB 设备设置的端口的GUID(全球唯一)。
三、IPoIB数据包格式 IPoIB数据包将TCP/IP协议栈数据包封装在IB帧payload部分,从而使得TCP/IP数据包可以在IB数据链路进行数据传输。IB帧payload部分由4字节的封装头作为前缀,剩余部分为 IP 或 ARP 数据部分。4字节的封装头的前2个字节为type字段剩余2个字节是保留字段,type字段与协议类型关系见表1。
图2 IPoIB 数据包格式 表1 type字段与协议类型关系Type字段协议类型0x800IPv40x806ARP0x8035RARP0x86DDIPv6IPoIB工作在Datagram模式,每个消息大小不允许超过infiniband MTU值,根据IB帧paylod构成,IPoIB在封装IP数据包有4字节的封装头,因此IPoIB MTU 比 InfiniBand link-layer MTU 小 4 字节,如IB链路层MTU是2048字节,而工作在Datagram模式的IPoIB设备的MTU值为2044字节。 四、IPoIB数据包发送工作流程 IPoIB数据通信大致可以划分为以下几个主要步骤: IPoIB设备加入多播组、IP地址解析、Infiniband路径解析、单播包发送。 (一)IPoIB设备加入多播组 为了支持IP多播功能,IPoIB节点首先需要加入多播组。在IPoIB设备初始化过程,将与SA通信请求加入到多播组,加入流程如下:在发送多播包/广播包之前(如:ARP),IPoIB设备加入到InfiniBand多播组主机A向SA(Subnet Administrator)发送带有组MGID的Set(MCMemberRecord)指令SA向主机A发送带有组MLID的应答消息
(二)IP地址解析 1、查询主机ARP表是否有主机B的ARP记录,若没有则主机A向多播组发送ARP消息,为了获得请求主机B的地址信息,ARP消息包括:主机B的IP地址主机A的硬件地址:端口GID分配到IPoIB会话的QPN 2、主机B对应的地址IPoIB硬件地址作为响应报文sigusoft给主机A端口GIDQPN
(三)Infiniband路径解析和单播包发送 主机A向SA请求查询主机B的路径记录,所需的 IB 属性SA响应主机A,包括主机B的IB属性:LIDSL路径速率 主机A收到应答消息,封包进行发送添加IPoIB封装头向QP发送WR向目标主机的DLID开始发送数据
五、IPoIB配置方法 (一)Ubuntu配置流程 创建和编辑netplan配置文件,如:/etc/netplan/01-netcfg.yaml确定IPoIB接口ibdev2netdevmlx4_1 port 1 ==> eth1 (Up)mlx4_0 port 1 ==> ib0 (Up)mlx5_0 port 1 ==> ib1 (Up)mlx5_1 port 1 ==> eth2 (Up)在配置文件添加ib0接口和配置IP地址 重启net plan使用如下指令: sudo netplan apply 运行指令“ip address show ib0″查看接口up和配置生效,与其他节点互ping确认工作正常 (二)Red HAT/CENTOS配置流程 创建与编辑IPoIB接口对应的ifcfg配置文件,/etc/sysconfig/network-scripts/ifcfg-ibx 确定IPoIB接口mlx4_1 port 1 ==> eth1 (Up)mlx4_0 port 1 ==> ib0 (Up)mlx5_0 port 1 ==> ib1 (Up)mlx5_1 port 1 ==> eth2 (Up)在配置文件添加ib0接口和配置IP地址DEVICE=ib0BOOTPROTO=staticIPADDR=192.168.12.2NETWORK=192.168.12.0NETMASK=255.255.255.0BROADCAST=192.168.12.255ONBOOT=yes重启网络服务,使配置生效service network restart运行指令“ip address show ib0″查看接口up和配置生效,与其他节点互ping确认工作正常 本篇文章转载自天翼云官方网站开发者社区,了解更多云计算知识可登录天翼云官方网站开发者社区,专栏查看更多技术干货,与技术大咖促膝论道!
往期回顾:kernel crash简介及kdump配置 – 知乎 (zhihu.com)
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/46452.html