首页 > 技术文章 > Intel X710网卡VxLAN offload 性能测试

never-ending 2017-01-13 15:37 原文

 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个并发。

 

推荐阅读