SoftRoCE实践

简介

SoftRoCE是RDMA的一种纯软件实现的方式,因此不需要特定的硬件支持,但是其性能与硬件支持的RDMA还是有一些差距的。通过softRoCE我们可以在传统的以太网进行RoCE通信。自4.9.0之后的内核已经内置sofrRoCE驱动,我们直接使用即可。

环境搭建

  1. 实验环境
ServerClient
ubuntu 18.04ubuntu 18.04
kernel 5.4.0kernel 5.4.0
x86x86
  1. 安装相关软件
sudo apt-get install libibverbs-dev librdmacm-dev rdma-core
#备注
 - libibverbs-dev - Development files for the libibverbs library
 - librdmacm-dev - Development files for the librdmacm library
 - rdma-core - RDMA core userspace infrastructure and documentation

联通测试

1.在server端和client端创建RoCE interface:

sudo rxe_cfg start
sudo rxe_cfg add enp3s0
	成功后出现:

在这里插入图片描述2. 测试前准备
查看rdma设备:

ibv_devices
ibv_devinfo

3.开始测试
采用rping命令

#server:
	rping -s -a [server-ip] -v -C 10
#client:
	rping -c -a [server-ip] -v -C 10

测试结果(server):
在这里插入图片描述

采用ibv_rc_pingpong命令

#server:
	ibv_rc_pingpong -g 2 -d rxe0
#client:
	ibv_rc_pingpong -g 2 -d rxe1 [server-ip]

测试结果(server):
在这里插入图片描述
备注
-g是设置网口的GID值,其要正确设置,否则会出现不能通信的问题。这里的设置正确是指客户端和服务端的GID的类型要统一,比如:
两者要么都是:GID fe80::6977:7a66:fa55:5334 这种格式,要么都是:GID ::ffff:192.168.50.59 这种格式,在不同的电脑上设置-g 1 或者 -g 2 出现的格式可能会不一样,所以我们需要通过灵活设置GID的值使二者的格式相同。
-d是设置具体的RDMA设备,该值可由sudo rxe_cfg status得出:
RDMA设备

由上图可见,RDMA设备值为rxe0

对GID的解释:
每当以太网设备的一个网络端口配置了一个IP地址时,就会在GID表格中创建一个表项。每个表项包含:GID值,GID类型,网络设备。对于两种模式都支持的设备端口,表中会存在两个GID,有相同的值,但是类型不同。表项中的网络设备是该GID关联的以太网设备的IP地址。

GID格式有可以有两种:IPv4和IPv6。IPv4版本的GID是一个IPv4映射的IPv6地址,而IPv6版本的GID是IPv6地址本身。对于RoCEv2,关联到IPv4版本GID的三层网络包,其头三层头部是IPv4,IPv6亦然。对于RoCEv1,关联到IPv6或IPv4版本GID的网络包,头部是IPv6或者GRH。

GID表格项的总数等于N(K+1), N是赋予给所有网络设备上关联端口的IP地址数量,包括VLAN设备,别名设备,和bonding master。链路本地的IPv6地址被排除在这个计数之外,因为它们的GID总是存在的,是默认的GID,处于每个GID表格的开始。K是支持的RoCE类型数量。每个硬件端口的表格项数量限制在128。show_gids命令可以查看系统中的GID表。

在系统文件sysfs中查看GID的路径是:

GID值:/sys/class/infinband//ports//gids/
GID类型:/sys/class/infinband//ports//gid_attrs/types/
GID网络设备:/sys/class/infinband//ports//gid_attrs/ndevs/
参考来源

SoftRoCE带宽测试

  1. 安装测试软件
sudo apt-get install perftest
  1. 开始测试
server:
	ib_send_bw -n 10000 -d rxe0 -i 1 -F --report_gbits
client:
	ib_send_bw -n 10000 -d rxe0 -i 1 -F --report_gbits [server-ip]
  1. 测试结果(server端):
    在这里插入图片描述

传统以太网带宽测试

1. iperf

参考:iperf使用指南

  1. 安装测试软件
	sudo apt-get install iperf
  1. 开始测试
	server:
		iperf -s -i 1 -f m
	client:
		iperf -c [server-ip] -i 1 -t 30 -f m 
  1. 测试结果(server)
    在这里插入图片描述

2. qperf

  1. 安装
sudo apt-get install qperf
  1. 使用
	#server
	qperf
	#client
		#直接测试TCP的带宽和延迟
		qperf [server-ip] tcp_bw tcp_lat conf
		#改变消息大小,从1Byte到64K,每次倍增的方式,通过测试查看带宽和延迟的变化情况
		qperf myserver -oo msg_size:1:64K:*2 -vu tcp_lat tcp_bw

RDMA卡检测方法