1 实验目的
- 掌握Iperf在Linux环境下的安装和常用命令行参数的含义
- 熟悉Iperf应用实例
- 掌握SDN网络中使用Iperf测试网络带宽等
2 实验原理
网络性能测试主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能测试工具,而Iperf就是这样一款网络带宽测试工具。
3 实验任务
本实验在SDN网络环境中,使用Iperf测试数据层面两台相互通信的虚拟机之间的TCP和UDP带宽质量,提供网络延迟抖动、数据包丢失率等统计信息。
本实验基于两台虚拟机VM1、VM2(分别安装了OpenDaylight Helium版本和Mininet)进行模拟。在两台虚拟机建立通信以后,测试TCP吞吐量、UDP丢包和延迟。最后将视线转移到SDN上来,在Mininet中建立简单拓扑,使用Iperf测试TCP吞吐量。实验环境拓扑如下:
4 实验步骤
4.1 搭建环境
创建支持openflow1.3协议的mininet虚拟机和OpenDaylight Lithium版本虚拟机,启动实验和虚拟机。注意:为保证正常运行,内存至少选择4G;CPU最好选择2核或4核,方便后面的多线程测试。而我在这一步的时候选择了1核CPU,前期的实验并不影响,后期在多线程测试的时候我将再创建一个2核的虚拟机进行实验,所以为了避免麻烦,请大家在选择CPU内核的时候选2核或4核。
4.2 确保虚拟机间能相互通信
两台虚拟机能够互相通信:
4.3 测试单线程TCP吞吐量
步骤1:通过Iperf测试网络带宽利用率
1 分别在虚拟机odl和虚拟机mininet安装Iperf,安装命令
1 |
apt-get install iperf |
2 将虚拟机mininet作为服务器端,虚拟机odl作为客户端,进行带宽测试,测试结果如下:
可以看到Iperf默认的运行时间在10秒左右,网卡的带宽速率1.79Gbits/sec。
步骤2:添加“-t”和“-i”参数后的Iperf输出
Iperf提供很多参数,可以多角度、全方位地测试网络带宽利用率,例如,要改变Iperf运行的时间和输出频率,可以通过“-t”和“-i”参数来实现,如下图所示:
可以看到传输时间为30秒,输出频率为5秒的结果。带宽仍然保存在1.81Gbits/sec左右。
步骤3:Iperf客户端通过“-n”参数指定要传输的数据量
为了模拟大量的数据传输,也可以指定要发送的数据量,这可以通过“-n”参数来实现。在指定“-n”参数后,“-t”参数失效,Iperf在传输完毕指定大小的数据包后,自动结束,实验结果如下图所示:
4.4测试多线程TCP吞吐量
步骤1:创建虚拟机odl2,在上面搭建环境的时候有提到在进行多线程测试的时候,需要多核CPU才能看出实验效果,如果你在配置虚拟机odl的时候就是选择的多核CPU,那么跳过步骤1,进入步骤2。 登录odl2,安装Iperf(具体步骤同上)。测试单线程TCP吞吐量,结果如下:
步骤2:测试多线程吞吐量,这里线程数设置为2,实验结果如下:
由步骤1的3和步骤2对比来看,传输相同的5000M数据,多线程下消耗了39秒左右,单线程下消耗了18秒左右,由此可知,采用多线程不会提高程序的执行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间。而多线程的传输速率为2.1Gbits/sec左右,低于单线程的2.2Gbits/sec左右,从这个结果看,多线程对网络传输性能没有提高。理论上多线程的传输性能应该比单线程的要好,但是也受具体的网络环境影响。
4.5测试UDP丢包和延迟
Iperf也可以用于UDP数据包吞吐量、丢包率和延迟指标,但是由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此,对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。通过Iperf的“-u”参数即可测试UDP应用的传输性能,这里测试Iperf客户端传输100M的UDP数据包的输出结果:
这个输出结果过于简单,要了解更详细的UDP丢包和延时信息,可以在Iperf服务端查看,因为在客户端执行传输测试的同时,服务端也会同时显示传输状态,如下图所示:
图中,“Jitter”列表示抖动时间,也称为传输延迟,“Lost/Total Datagrams”列表示丢失的数据包和数据包数量,0%是平均丢包率。
4.6在Mininet中使用Iperf功能
步骤1:创建拓扑
1 在虚拟机mininet中创建拓扑,命令:
1 |
sudo mn --topo single,5 --switch ovsk --controller=remote,ip=10.0.0.2,port=6633 |
2 pingall验证连通正常。
1 在一台host上跑Iperf服务器,另一台host上跑Iperf客户端,查看带宽情况。
5 实验结论
本实验主要是通过实验平台,熟悉了网络性能测试工具Iperf的常用命令,根据实验测试SDN网络的性能。且在Mininet中,也能够通过实验Iperf命令查看拓扑中主机间通信的网络带宽。