RDMA需要专门的RDMA网卡或者InfiniBand卡才能使用,学习RDMA而又没有这些硬件设备,可以使用一个软件RDMA模拟环境,softiwarp ,

- 这是加载地址:https://github.com/zrlio/softiwarp

- 这是安装教程:http://www.reflectionsofthevoid.com/2011/03/how-to-install-soft-iwarp-on-ubuntu.html

————————————————

 


centos 6.8  安装

系统:

采用VMware虚拟机安装,网卡模式选择桥接模式。(选择nat模式会配置失败!)

如果机器是desk版的,启用NetworkManager 服务

如果机器是minimal版,不用管NetworkManager服务


1、安装依赖包

yum install epel-release -y  
yum install gcc gcc-c++ bc openssl-devel automake ncurses-devel libibverbs ncurses* -y
yum install libibverbs-devel libibverbs-utils librdmacm librdmacm-devel librdmacm-utils perl-Switch elfutils-libelf-devel -y

2、 librxe-dev 和 rxe-dev下载

下载地址

Github: https://github.com/SoftRoCE/rxe-dev.git # 备注:rxe-dev下载v18版本,即rxe-dev-rxesubmissionv18
Github: https://github.com/SoftRoCE/librxe-dev.git #这个选择1.0.0版本的

3、安装rxe-dev

 

unzip rxe-dev-rxe_submission_v18.zip
cd rxe-dev-rxe_submission_v18/
cp /boot/config-3.10.0-514.el7.x86_64 .config
make menuconfig
#会出现选择界面(如果没出现,需要安装 ncurse-devel)
#输入 "/" ,然后输入 rxe,按下 enter,会查找有关 rxe 的选择项。
#输入数字 1,就会选择到“Software RDMA over Ethernet (ROCE) driver”的设#置,输入 "M" ,选中 RDMA 的配置,如果 输不了 M,那就输入空格。
#移动到保存按钮,回车,装保存到.config中,退出安装界面(exit)。
vi .config #来确认一下三项:
CONFIG_RDMA_RXE 为 m
CONFIG_INFINIBAND_ADDR_TRANS 和
CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS 为 y

make -j 4 # -j 指定CPU核数的,提高编译速度的。
make modules_install # 可能执行中途 会提示 丢失一些 module,这个 没关系,无关紧要。
make install # 可能执行中途 会提示 丢失一些 module,这个 没关系,无关紧要。
make headers_install INSTALL_HDR_PATH=/usr
vim /etc/grub.conf # 确认新的内核是否在 grub 引导中。查看 /etc/grub.cfg 即可看见。在开机的时候可以选择 新内核启动

 

4、安装 librxe-dev  


先按照:MLAN---软件包(见另外一个文档)(centos6.8这一步可以忽略)

 

centos6.8的系统忽略这一步:
yum -y install tcl tk
tar -zxvf MLNX_OFED_LINUX-4.2-1.2.0.0-rhel7.4-x86_64.tgz
cd MLNX_OFED_LINUX-4.2-1.2.0.0-rhel7.4
./mlnxofedinstall
/etc/init.d/openibd start
/etc/init.d/opensmd start
chkconfig openibd on
chkconfig opensmd on
ibstat
----> status: Active

 

 

unzip librxe-dev-librxe-1.0.0.zip
cd librxe-dev
./configure --libdir=/usr/lib64/ --prefix=
make
make install
reboot # 重启操作系统,在开机启动时,选择4.7.0-rc3内核!!!

 

 uname -r     #  启动后,查看内核版本,是否是4.7的版本

5、验证 rdma (依次输入一下命令)


[root@ab ~]# rxe_cfg start

  Name        Link  Driver  Speed  NMTU  IPv4_addr  RDEV  RMTU  

  eth0        yes   e1000                                       

                                      

[root@ab ~]# rxe_cfg add eth0      # centos7.3 就是ens33


[root@ab ~]# rxe_cfg status

  Name        Link  Driver  Speed  NMTU  IPv4_addr  RDEV  RMTU          

  eth0         yes   e1000                           rxe0  1024  (3)  

  virbr0      no    bridge                                              

  virbr0-nic  no    tun

查看rxe设备

ibvdevices 程序显示该系统中目前所有设备,而 ibvdevinfo 命令会给出每个设备的具体信息


[root@ab ~]# ibv_devices

    device                 node GUID

    ------              ----------------

    rxe0                020c29fffe55c818

[root@ab ~]# ibv_devinfo  rxe0

hca_id:    rxe0

    transport:            InfiniBand (0)

    fw_ver:                0.0.0

    node_guid:            021c:29dd:fe55:c818

    sys_image_guid:            0000:0000:0000:0000

    vendor_id:            0x0000

    vendor_part_id:            0

    hw_ver:                0x0

    phys_port_cnt:            1

        port:    1

            state:            PORT_ACTIVE (4)

            max_mtu:        4096 (5)

            active_mtu:        1024 (3)

            sm_lid:            0

            port_lid:        0

            port_lmc:        0x00

            link_layer:        Ethernet

6、softRoCE连通性测试


服务端IP为:192.168.1.10,在服务端开启RDMA

rping -s -a 192.168.1.10 -v -C 10

出现的等待窗口,



客户端IP为:192.168.1.34,按照同样的方式安装RDMA(因为rping的命令需要使用以上软件的安装才能生成)

rping -c -a 192.168.1.10 -v -C 10


[root@bogon ~]# rping  -c -a 192.168.1.10 -v -C 10

【RDMA】部署software RDMA的步骤|RDMA编程学习环境搭建--未消化_github View Code

此时的服务端会出现一下信息:

[root@jack ~]# rping -s -a 192.168.1.10 -v -C 10

 

server ping data: rdma-ping-0: ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr
server ping data: rdma-ping-1: BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs
server ping data: rdma-ping-2: CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst
server ping data: rdma-ping-3: DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
server ping data: rdma-ping-4: EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv
server ping data: rdma-ping-5: FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw
server ping data: rdma-ping-6: GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx
server ping data: rdma-ping-7: HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy
server ping data: rdma-ping-8: IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
server ping data: rdma-ping-9: JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzA
server DISCONNECT EVENT...
wait for RDMA_READ_ADV state 10

 

下面的这个软件不知道有个什么用?======> 用于生成客户端的rping命令的,这样客户端还是要安装rdma的。否则不成功。

7、关于librdmacm编译说明

 

git clone https://github.com/ofiwg/librdmacm.git
cd librdmacm
yum install autoconf automake gettext gettext-devel libtool libibverbs* -y
./autogen.sh
./configure
make
make install

 

8、常见问题

(1)如果你克隆虚机,需要解决网卡问题

(2)使用rdma,请将防火墙与selinx关闭