Intel X710网卡VxLAN offload性能测试
1. 测试环境参数:
交换机:盛科E580
服务器:
Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz 384G RAM
Intel 800G SSD, Intel X710 万兆网卡
宿主机OS:
RHEL 7.1:
kernel: 3.10.0
Libvirt: 1.2.17
QEMU: 1.5.3
Open vSwitch: 2.5.0
Ubuntu 16.04:
kernel:4.4.0
Libvirt: 1.3.1
QEMU: 2.0.0
Open vSwitch: 2.5.0
虚拟机:RHEL 7.1, 2 vCPUs, 4G RAM, 40G Disk
网卡驱动:i40e,version: 1.5.25
NVM: 4.41 0x80001866 16.5.10
2. 配置步骤:
2.1. 交换机配置:
初始化配置:
1.连接到盛科交换机,传输速率设为115200
2.查看交换机软件版本,show version
如果版本不对,将新版本拷贝到交换机;
设置新版本启动(参照盛科交换机配置文档)
3.如果盛科交换机有初始化配置,可以删除。
cd flash:
delete startup-config.config 然后重启。
注意:重启时不要将当前内存中的东西写进文件。
配置交换机ip:
no management ip address dhcp
management ip address 192.168.201.60 255.255.255.0
management route add gateway 192.168.201.254
exit
write memory
配置端口(交换机1口配置示例)
config terminal
interface eth-0-1
speed 10G
no shutdown
exit
write memory
另一个端口以同样命令配置
2.2. 主机配置:
通过IPMI安装RHEL 7.1镜像:
安装Open vSwitch,更新libvirt:
1.首先删除redhat原有的yum ,因为redhat 原本的yum 没有注册为redhat用户是用不了的。
rpm -aq|grep yum|xargs rpm -e --nodeps
2.下载163的yum 安装包
wget http://mirrors.163.com/centos/7.2.1511/os/x86_64/Packages/yum-3.4.3-132.el7.centos.0.1.noarch.rpm
wget http://mirrors.163.com/centos/7.2.1511/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
wget http://mirrors.163.com/centos/7.2.1511/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://mirrors.163.com/centos/7.2.1511/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-34.el7.noarch.rpm
3.进行安装yum
rpm -ivh *.rpm
4.更新repo文件
mv /etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/rhel-debuginfo.repo.repo.bak
如果没有这个文件就直接创建
sudo vim /etc/yum.repos.d/rhel-debuginfo.repo
在文件中写入
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.163.com/centos/7.2.1511/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/7.2.1511/os/x86_64/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.163.com/centos/7.2.1511/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/7.2.1511/os/x86_64/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.163.com/centos/7.2.1511/extras//$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/7.2.1511/os/x86_64/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.163.com/centos/7.2.1511/centosplus//$basearch/
gpgcheck=1
enabled=0
保存退出
5. yum clean all
6 . yum update 测试。
7. 安装 epel 源
sudo yum install epel-release
sudo yum repolist检查是否安装成功
8. 更新openstack安装源
yum install https://rdoproject.org/repos/rdo-release.rpm
yum upgrade
9. 安装ovs相关包
yum install openvswitch
10. 如果有内核更新,重启服务器
安装网卡驱动:
最新版网卡驱动下载地址:
https://downloadcenter.intel.com/downloads/eula/24411/Intel-Network-Adapter-Driver-for-PCI-E-Intel-40-Gigabit-Ethernet-Network-Connections-under-Linux-?httpDown=https%3A%2F%2Fdownloadmirror.intel.com%2F24411%2Feng%2Fi40e-1.5.25.tar.gz
参考压缩包里的README文档安装:
生成rpm安装包:
rpmbuild -tb i40e-1.5.25.tar.gz
安装生成的rpm包:
yum localinstall ~/rpmbuild/RPMS/x86_64/i40e-1.5.25-1.x86_64.rpm
卸载掉当前的驱动,载入新的驱动:
rmmod i40e; modprobe i40e
升级initrd使系统重启时载入新的驱动:
dracut --force
验证安装:
lsmod | grep -i vxlan
若有i40e,说明驱动安装成功
通过IPMI安装ubuntu16.04:
安装openvswitch:
apt-get install openvswitch-switch
安装KVM及相关依赖包
sudo apt-get install qemu-kvm
sudo apt-get install qemu
sudo apt-get install virt-manager
sudo apt-get install virt-viewer
sudo apt-get install libvirt-bin
sudo apt-get install bridge-utils
ubuntu安装网卡驱动方法:
解压包:tar zxf i40e-1.5.25.tar.gz
cd i40e-1.5.25/src/
makeinstall
卸载掉当前的驱动,载入新的驱动:
rmmod i40e; modprobe i40e
升级initrd使系统重启时载入新的驱动:
update-initramfs -u
验证安装:
lsmod | grep -i vxlan
若有i40e,说明驱动安装成功
搭建网络环境
Host1 192.168.201.110 网络配置:
ovs-vsctl add-br br0
ovs-vsctl add-port br0 ens1f0
ovs-vsctl add-port br0 tep0 -- set interface tep0 type=internal
ip addr add 172.16.68.20/24 dev tep0
ip link set tep0 up
ovs-vsctl add-br br1
ovs-vsctl add-port br1 vx1 -- set interface vx1 type=vxlan options:remote_ip=172.16.68.10 options:key=5000 options:dst_port=4789
ip link set vx1 up
Host2 192.168.201.111 网络配置:
ovs-vsctl add-br br0
ovs-vsctl add-port br0 ens1f0
ovs-vsctl add-port br0 tep0 -- set interface tep0 type=internal
ip addr add 172.16.68.10/24 dev tep0
ip link set tep0 up
ovs-vsctl add-br br1
ovs-vsctl add-port br1 vx1 -- set interface vx1 type=vxlan options:remote_ip=172.16.68.20 options:key=5000 options:dst_port=4789
ip link set vx1 up
配置好以后ping172.16.68.20的地址验证是否互通
添加新的vtep对的话就需要在br0上新建新的tep端口,新的br以及vx端口用来连接虚机和tep。新的tep不能和现有的tep在同一网段。
将网卡mtu改为1600:
ip link set ens1f0 mtu 1600
2.3. 虚机配置:
用virt-manager创建虚机时,虚机网卡接在br1的port br1上
给虚机网卡配置ip:
vm1:ifconfig eth0 10.0.1.100/24
vm2:ifconfig eth0 10.0.1.101/24
清除iptables配置
iptables -F
ping对方地址验证是否互通
2.4. 网络结构图
2.5. 测试参数配置:
iperf server端:
vm1: iperf3 -s
iperf client端:限定带宽512Mbps
vm2: iperf3 -c 10.0.1.100(vm1的ip地址) -b 512M -t 600
开启/关闭网卡vxlan offload:
ethtool -K ens1f0 rx-checksum on/off
ethtool -K ens1f0 tx-udp_tnl-segmentation on/off
3. 测试结果
|
|
Recv (CPU util%) ubuntu16.04 |
Send (CPU util%) rhel 7.1 |
||||||
|
VM pairs |
us |
sys |
si |
total |
us |
sys |
si |
total |
No off |
8 |
4.1 |
3.8 |
0.3 |
8.3 |
1.8 |
1.7 |
0.3 |
3.5 |
offload |
|
1.9 |
0.4 |
0.2 |
2.6 |
0.5 |
1.5 |
0.3 |
2.3 |
No off |
16 |
11.2 |
8.5 |
5.1 |
24.8 |
3.5 |
3.9 |
1 |
7.4 |
offload |
|
6.3 |
4.6 |
4.6 |
16.4 |
1.8 |
3.1 |
1 |
5.9 |
No off |
24 |
14.3 |
9.4 |
6.8 |
30.5 |
5.3 |
6.3 |
1.4 |
13 |
offload |
|
10.9 |
6.7 |
6 |
23.6 |
2.9 |
4.8 |
1.3 |
9 |
No off |
32 |
16.3 |
10.5 |
8.7 |
35.5 |
9.5 |
10.6 |
2 |
22.1 |
offload |
|
14.2 |
8.5 |
8.1 |
30.8 |
6 |
7.6 |
1.9 |
15.5 |
No off |
40 |
21.5 |
17.9 |
11.6 |
51 |
13.3 |
14.9 |
6.8 |
35 |
offload |
|
19.5 |
14.3 |
10.9 |
44.7 |
10.8 |
10.3 |
6.6 |
27.7 |
No off |
44 |
35.3 |
30.1 |
17.5 |
82.9 |
17.1 |
19.8 |
7.9 |
44.8 |
offload |
|
30.1 |
29.6 |
17.5 |
77.2 |
14.5 |
15.1 |
7.5 |
37.1 |
限速200M带宽对比图
Host1 Host2
上图为测试限制带宽在200Mbits/sec, 在增加到40对虚机之后出现性能拐点,从数据看出offloading开启大概提升7%-60%左右的性能。流量越小提升的效果越明显,随着开启虚机对数越多流量越大,开启offloading提升的效果越小。开启offloading在45个并发,关闭offloading在42个并发。
|
VM pairs |
Recv (CPU util%) ubuntu16.04 |
Send (CPU util%) rhel 7.1 |
||||||
No off |
8 |
4.6 |
3.3 |
3.1 |
7.9 |
3.3 |
3.1 |
0.4 |
6.3 |
offload |
|
2.5 |
2.2 |
3 |
4.7 |
1.5 |
2.1 |
0.6 |
3.6 |
No off |
16 |
14 |
9 |
6.3 |
29.3 |
7.5 |
9.9 |
2 |
19.4 |
offload |
|
11 |
6 |
6.1 |
23.1 |
5 |
8 |
2.1 |
15.1 |
No off |
24 |
35 |
31 |
22.5 |
88.5 |
14.8 |
19.9 |
5 |
39.7 |
offload |
|
30 |
28 |
20.4 |
78.4 |
13.1 |
16.2 |
3 |
32.3 |
限速512M带宽对比图
Host1 Host2
上图为限速512Mbits/sec,增加到24对虚机host1 cpu利用率88.5%,host2为39.7,从数据看开启offloading 提升11 -40%的空间,流量越大提升效果越小。不开启offloading可以20个并发,开启offloading可以24个并发。