配置虚拟机环境
Host1和Host2中配置虚拟机环境的操作大致相同,以下步骤默认需要在所有虚拟机都进行操作,有区别的会单独说明。
- 修改虚拟机配置文件。
- 配置组网。Host1和Host2均执行:
1
sh topology_all.sh setvxlan
- 验证组网。
1
ovs-vsctl show
不出现报错即组网成功。
- 配置虚拟机IP地址。
1
ifconfig eth0 <VM IP address> up
示例环境配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Host1: VM1 192.168.1.11/24 VM2 192.168.1.12/24 VM3 192.168.1.13/24 VM4 192.168.1.14/24 VM5 192.168.1.15/24 VM6 192.168.1.16/24 VM7 192.168.1.17/24 VM8 192.168.1.18/24 Host2: VM1 192.168.1.21/24 VM2 192.168.1.22/24 VM3 192.168.1.23/24 VM4 192.168.1.24/24 VM5 192.168.1.25/24 VM6 192.168.1.26/24 VM7 192.168.1.27/24 VM8 192.168.1.28/24
由于配置的是VXLAN组网,主机和虚拟机的默认MTU都是1500,如果虚拟机业务数据包超过1450,通过OVS转发后,加上VXLAN头部,最终数据包会超过1500,通过物理网卡发送出去,这时候物理网卡(OVS+DPDK处理)不会分片,导致虚拟机业务流量不通。这是开源方案遗留的问题,目前解决办法是将虚拟机MTU配置为1450以下,示例环境中所有虚拟机MTU配置都为1450:
1
ifconfig eth0 mtu 1450
- 关闭虚拟机防火墙和SELinux。
1 2
systemctl stop firewalld.service && systemctl disable firewalld.service setenforce 0
该操作为临时关闭SELinux,若需永久关闭,请修改配置文件“/etc/selinux/config”,配置“SELINUX=disabled”。
- 主机和虚拟机通信。
- 在主机上给OVS的br-int网桥配置一个虚拟机同网段的IP地址。
1
ifconfig br-int 192.168.1.254/24 up
- 验证通信情况。
1
ping <任一虚拟机IP地址>
确认通信畅通后,可使用FTP、SCP等工具通过网络传输资源给虚拟机。
- 在主机上给OVS的br-int网桥配置一个虚拟机同网段的IP地址。
- 在虚拟机上安装测试工具。
- 在主机上下载vnStat-2.6和Netperf-2.7.0。
vnstat:https://github.com/vergoh/vnstat/archive/refs/tags/v2.6.zip
netperf:https://github.com/HewlettPackard/netperf/archive/refs/tags/netperf-2.7.0.zip
- 将主机的vnStat传输到虚拟机。
1
scp vnstat-2.6.zip root@192.168.3.2:/home
输入虚拟机root用户密码即可将vnStat传输到虚拟机“/home”目录下。
- 使用同样方法将Netperf传输到虚拟机。
- 在虚拟机内解压编译vnStat和Netperf。
1 2 3 4 5 6
cd /home unzip vnstat-2.6.zip && cd vnstat-2.6 ./configure && make && make install cd /home unzip netperf-netperf-2.7.0.zip && cd netperf-netperf-2.7.0 ./configure && make && make install
在编译过程中需保证虚拟机里自带编译器。
- 在主机上下载vnStat-2.6和Netperf-2.7.0。
- 准备虚拟机测试脚本。
- 准备接收端Host2的虚拟机脚本,所有虚拟机使用的同样的脚本。(示例虚拟机中,脚本被命名为run.sh。)
1 2 3 4 5 6 7 8 9
pkill netserver taskset -c 0 netserver -4 -p 21101 taskset -c 1 netserver -4 -p 21102 taskset -c 2 netserver -4 -p 21103 taskset -c 3 netserver -4 -p 21104 taskset -c 0 netserver -4 -p 25101 taskset -c 1 netserver -4 -p 25102 taskset -c 2 netserver -4 -p 25103 taskset -c 3 netserver -4 -p 25104
- 分场景准备发送端Host1的虚拟机脚本。
- 软卸载包率测试脚本(示例环境中,脚本被命名为run_8VM.sh)
1 2 3 4 5 6 7 8 9
pkill netperf taskset -c 0 netperf -t UDP_STREAM -H 192.168.1.21 -p 21101 -l 10000 -- -m 18 & taskset -c 1 netperf -t UDP_STREAM -H 192.168.1.22 -p 21101 -l 10000 -- -m 18 & taskset -c 2 netperf -t UDP_STREAM -H 192.168.1.23 -p 21101 -l 10000 -- -m 18 & taskset -c 3 netperf -t UDP_STREAM -H 192.168.1.24 -p 21101 -l 10000 -- -m 18 & taskset -c 0 netperf -t UDP_STREAM -H 192.168.1.25 -p 21101 -l 10000 -- -m 18 & taskset -c 1 netperf -t UDP_STREAM -H 192.168.1.26 -p 21101 -l 10000 -- -m 18 & taskset -c 2 netperf -t UDP_STREAM -H 192.168.1.27 -p 21101 -l 10000 -- -m 18 & taskset -c 3 netperf -t UDP_STREAM -H 192.168.1.28 -p 21101 -l 10000 -- -m 18 &
VM2:同VM1,将脚本的端口都改成21102
VM3:同VM1,将脚本的端口都改成21103
VM4:同VM1,将脚本的端口都改成21104
VM5:同VM1,将脚本的端口都改成25101
VM6:同VM1,将脚本的端口都改成25102
VM7:同VM1,将脚本的端口都改成25103
VM8:同VM1,将脚本的端口都改成25104
- taskset -c 0 指明CPU亲和性。
- -t UDP_STREAM指明使用UDP打流。
- -H 192.168.1.21指定对端IP地址。
- -p 21101指定端口。
- -l 10000指定时长,单位秒。
- -m 1指明包长,单位byte,数据包不足64B会自动填充成64B。
- 软卸载带宽测试脚本(示例环境中,该脚本被命名为bw_8VM.sh)
1 2 3 4 5 6 7 8 9
pkill netperf taskset -c 0 netperf -t TCP_STREAM -H 192.168.1.21 -p 21101 -l 10000 & taskset -c 1 netperf -t TCP_STREAM -H 192.168.1.22 -p 21101 -l 10000 & taskset -c 2 netperf -t TCP_STREAM -H 192.168.1.23 -p 21101 -l 10000 & taskset -c 3 netperf -t TCP_STREAM -H 192.168.1.24 -p 21101 -l 10000 & taskset -c 0 netperf -t TCP_STREAM -H 192.168.1.25 -p 21101 -l 10000 & taskset -c 1 netperf -t TCP_STREAM -H 192.168.1.26 -p 21101 -l 10000 & taskset -c 2 netperf -t TCP_STREAM -H 192.168.1.27 -p 21101 -l 10000 & taskset -c 3 netperf -t TCP_STREAM -H 192.168.1.28 -p 21101 -l 10000 &
VM2:同VM1,将脚本的端口都改成21102
VM3:同VM1,将脚本的端口都改成21103
VM4:同VM1,将脚本的端口都改成21104
VM5:同VM1,将脚本的端口都改成25101
VM6:同VM1,将脚本的端口都改成25102
VM7:同VM1,将脚本的端口都改成25103
VM8:同VM1,将脚本的端口都改成25104
- 开源包率测试脚本(示例环境中,脚本被命名为run_3_4VM.sh)
1 2 3 4 5
pkill netperf taskset -c 0 netperf -t UDP_STREAM -H 192.168.1.21 -p 21101 -l 10000 -- -m 1 & taskset -c 1 netperf -t UDP_STREAM -H 192.168.1.21 -p 21102 -l 10000 -- -m 1 & taskset -c 2 netperf -t UDP_STREAM -H 192.168.1.21 -p 25103 -l 10000 -- -m 1 & taskset -c 3 netperf -t UDP_STREAM -H 192.168.1.21 -p 25104 -l 10000 -- -m 1 &
VM2:同VM1,但是将IP地址改为192.168.1.22
VM3:同VM1,但是将IP地址改为192.168.1.23
VM4:同VM1,但是将IP地址改为192.168.1.24
VM5:同VM1,但是将IP地址改为192.168.1.25
VM6:同VM1,但是将IP地址改为192.168.1.26
VM7:同VM1,但是将IP地址改为192.168.1.27
VM8:同VM1,但是将IP地址改为192.168.1.28
- 开源带宽测试脚本(示例环境中,脚本被命名为bw_3_4VM.sh)
1 2 3 4 5
pkill netperf taskset -c 0 netperf -t TCP_STREAM -H 192.168.1.21 -p 21101 -l 10000 & taskset -c 1 netperf -t TCP_STREAM -H 192.168.1.21 -p 21102 -l 10000 & taskset -c 2 netperf -t TCP_STREAM -H 192.168.1.21 -p 25103 -l 10000 & taskset -c 3 netperf -t TCP_STREAM -H 192.168.1.21 -p 25104 -l 10000 &
VM2:同VM1,但是将IP地址改为192.168.1.22
VM3:同VM1,但是将IP地址改为192.168.1.23
VM4:同VM1,但是将IP地址改为192.168.1.24
VM5:同VM1,但是将IP地址改为192.168.1.25
VM6:同VM1,但是将IP地址改为192.168.1.26
VM7:同VM1,但是将IP地址改为192.168.1.27
VM8:同VM1,但是将IP地址改为192.168.1.28
- 软卸载包率测试脚本(示例环境中,脚本被命名为run_8VM.sh)
- 准备接收端Host2的虚拟机脚本,所有虚拟机使用的同样的脚本。(示例虚拟机中,脚本被命名为run.sh。)