免费版网络损伤仪也能玩转虚拟机

免费版网络损伤仪也能玩转虚拟机

国产网络损伤仪SandStorm可以模拟出带宽限制、时延、时延抖动、丢包、乱序、重复报文、误码、拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前能够得到充分地测试,确保应用程序正常运行。与软件Iperf,netperf, dpdk trafficgen相比较,minismb属于专业硬件网络发包测试仪, 具备精准测试速率,高吞吐率,可模拟千万级连接数等特点。
本文主要介绍SandStorm如何在两台KVM Linux系统上部署。

实验设备配置

宿主机:
CPU :Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz 6核
物理主机系统: Fedora-Workstation-Live-x86_64-33-1.2
KVM 系统: Fedora-Workstation-Live-x86_64-33-1.2
网卡:一对 Intel 82576 网卡

主要内容

1. 安装 KVM 前准备

1.1验证 cpu 是否支持 KVM

命令:cat /proc/cpuinfo | egrep 'vmx|svm'
效果:

1.2在 BIOS 中开机虚拟化功能

方法:开启按 delete 键进入 BIOS 中--用键盘方向键选中“Advanced”菜单--选中“Intel Virtual Technology”—切换“Enabled”开启
(因每台机器BIOS界面差异,开启虚拟化功能的具体位置会不同)

1.3关闭 SELinux

命令:vi /etc/sysconfig/selinux
效果:
将SELINUX=disabled 即可, 然后务必重启机器

2. 安装 KVM

2.1 安装 KVM 包

命令:sudo dnf -y install bridge-utils libvirt virt-install qemu-kvm

2.2 安装 KVM 虚拟机工具

命令:sudo dnf -y install virt-top libguestfs-tools
命令:sudo dnf -y install virt-manager
说明:
libvirt:必须要装的核心工具
bridge-utils:虚拟机与外界通信的命令管理工具
virt-install:虚拟机安装工具
virt-manager:虚拟机图形管理工具(宿主机有桌面环境时可以考虑安装,命令操作或者远程控制则不需要)

2.3 重启宿主机,加载 KVM 相关模块

命令:reboot

2.4 查看 KVM 模块是否被正确加载

命令:lsmod | grep kvm
出现以下信息则表示正确加载。

2.5 开启 KVM 服务,并设置开机启动

命令:systemctl start libvirtd.service(开启)
命令:systemctl enable libvirtd.service(开机启动)

2.6 查看操作结果,出现 Active:active(running)字样则说明运行情况良好

命令:systemctl status libvirtd(启动状态)
命令:systemctl is-enabled libvirtd(是否开机自动启动)
效果:

3.网桥搭建

3.1管理口网桥搭建

运行以下脚本创建网桥Br0(管理口), 注意 “BR_INTERFACE=enp5s0”要修改成管理网口的接口名字,在本例中使用 enp9s0
脚本代码:

# make up a bridge name, br0
export BR_NAME=br0

# this will vary depending on the mobo/eth card.  see `ip addr` to find device name
export BR_INTERFACE=enp5s0

# Get our device UUID
BR_INT_OG_UUID=$(nmcli -g GENERAL.CON-UUID device show "${BR_INTERFACE}")

# Create bridge
nmcli connection add type bridge autoconnect yes con-name "${BR_NAME}" ifname "${BR_NAME}"

# Disable STP
nmcli connection modify "${BR_NAME}" bridge.stp no

# Add our interface to our bridge
nmcli connection add type bridge-slave autoconnect yes con-name ${BR_INTERFACE} ifname ${BR_INTERFACE} master ${BR_NAME}

# Turn off our old interface
nmcli con down "${BR_INTERFACE}"

# Turn on our new bridge
nmcli con up "${BR_NAME}"

# delete our old interface config
nmcli con delete "${BR_INT_OG_UUID}"

3.2数据口网桥搭建

运行以下脚本创建网桥wan1、wan2(管理口), 注意 需要建立两个网桥,脚本代码如下:

# make up a bridge name, wan1
export BR_NAME=wan1

# Create bridge
nmcli connection add type bridge autoconnect yes con-name "${BR_NAME}" ifname "${BR_NAME}"

# Disable STP
nmcli connection modify "${BR_NAME}" bridge.stp no

# Turn on our new bridge
nmcli con up "${BR_NAME}"

通过命令 nmcli connection show 查看新建的三个网桥
效果:

3.3关闭NetworkManager

命令:sudo systemctl stop NetworkManager

4.配置 KVM SandStorm

命令:virt-manager 打开虚拟系统管理器图形化界面

4.1 添加存储池

选中QEMU/KVM 在Edit下 打开 Connection Details

点击后来到 Storage

点击左下角 + 号 添加镜像文件路径

更改存储池名称与路径

找到我们提前准备好的镜像文件 wanemu.unlimit.img 点击右上角open;

创建完成

4.2 创建虚拟机

4.3 创建现有磁盘映像 下一步

4.4 选中刚刚添加存储池路径中的wanemu.unlimit.img

4.5 选择操作系统 Generic ,下一步

4.6 选择内存和CPU设置(以下为推荐配置),下一步

4.7命名虚拟机并勾选在安装前自定义配置

按照本文档 3.网桥配置成功后,默认网络选择会是我们建立的网桥br0,点击完成

4.8 添加网桥wan1、wan2

需要操作的步骤如下:
①对PC1Linux虚拟机配置wan1网桥;
②对PC2Linux虚拟机配置wan2网桥;
③对SandStorm虚拟机配置wan1、wan2网桥;
注:其中br0作为管理口都是默认配置在虚拟机里的,无需手动添加;



验证网桥配置
命令:brctl show
效果:

红框中的vnet1、vnet3代表linux虚拟机的端口号,而vnet7、vnet8则是SandStorm的端口号,具体端口号可在KVm 中查看,如下:

SandStorm成功启动

5.配置SandStorm镜像文件

输入’y’确认进行配置:

选择第一个按’Enter’键作为管理口:

选择DHCP作为IP地址获取方式,按’Enter’键确认:

按’空格’键选择下面两个作为数据口,按’Enter’键确认:

输入’y’确认重启生效配置:

重启后稍等几秒后我们可以看到生成了IP地址:

6.配置SandStorm.exe

打开SandStorm 点击设备列表 输入上面获取到的IP地址:


添加链路:

选择自己想要的仿真功能:
(这边已时延设置举例)



(本案例中,两个接口都设置了固定延迟0.25ms 所以总延迟会在0.5ms左右)
设置好后,点击确认;
开启仿真:

设置Port1、Port:


(在Link Select选择模拟,同样的操作设置Port2)
在虚拟机中用终端通过互相ping对方的IP地址的方式,获得流量 并用SandStorm.exe观察打流情况:


通过在虚拟机中也可验证是否仿真成功:

我们可以发现,整体延迟确实在0.5ms左右;

以上为网络损伤仪SandStorm的部署,感谢大家的阅读与关注,祝大家新年万事如意、阖家幸福,再会。

posted on 2021-02-09 21:22  minismb  阅读(579)  评论(0编辑  收藏  举报

导航