Iperf测试:使用udp设定带宽2M,5M,10M,同时观察对正进行的ping测试的影响。证明iperf使用udp测试/使用一定或最大带宽时,同样能影响tcp协议的流量。
任务
(1) (使用UDP,参数-u -b 2M)设定不同带宽
- # iperf3 -c 192.168.199.18 -p54321 -i 1 -t 1800 -u -b 1M
(2) 双向同时测试(在任一端多开一个iperf port/进程,然后在同一端使用参数-R进行测试)
服务端执行:
- # iperf3 -s -p54321
- # iperf3 -s -p54322
客户端执行:
- # iperf3 -c 192.168.199.18 -p54321 -i 1 -t 1800 -u -b 1M
- # iperf3 -c 192.168.199.18 -p54322 -i 1 -t 1800 -u -b 1M -R
注意事项
TCP协议测试不能计算出时延与丢包率,而且还不能指定发送带宽。
(1) Iperf主要功能:
Iperf可以用来测试网络节点间(也包括回环)TCP或UDP连接的性能,包括测试带宽、抖动以及丢包率,其中抖动和丢包率适应于UDP测试,而带宽测试适应于TCP和UDP。
(2) 双向同时测试方法:在任一端开多一个iperf port/进程(注意Port不同),然后在另一端使用参数-R进行测试
例如:
在测试机A(服务端) 执行:(windows需要打开多一个cmd窗口)
- # iperf3 -s -p23451
- # iperf3 -s -p50000
在测试机B(客户端)执行:
- # iperf3 -c 192.168.0.11 -p23451 -i 1 -t 3600 -u -b 1M
- # iperf3 -c 192.168.0.11 -p50000 -i 1 -t 3600 -u -b 1M -R
(3) Jitter(抖动值)就是连续发送时延差值的平均值
(4) 回环测试iperf是否安装成功
- # iperf3 -s
- -----------------------------------------------------------
- Server listening on 5201
- -----------------------------------------------------------
- # iperf3 -c 127.0.0.1
- Connecting to host 127.0.0.1, port 5201
- [ 4] local 127.0.0.1 port 58884 connected to 127.0.0.1 port 5201
- [ ID] Interval Transfer Bandwidth Retr Cwnd
- [ 4] 0.00-1.00 sec 705 MBytes 5.92 Gbits/sec 0 560 KBytes
- …..
(5) 测试吞吐量,抖动和丢包率
如果需要同时测试以上三个参数,那么只能通过UDP获得。使用-u参数进行UDP测试(iperf默认为TCP)。
在测试的最后server端会给出一个报告。
要获得带宽数据,需要不断在client端增加带宽值,直到server端出现轻微的丢包为止,此时server端显示的带宽就是被测系统的吞吐量。
(6) 一般来说,我们在做性能测试的时候需要指定包长,不同的包长会得到不同的吞吐量,通过-l指定,而使用-b指定带宽。
(7) 使用TCP测试带宽应注意的问题
有时候,我们需要使用TCP来测试网络带宽。这里有一个参数需要特别注意,那就是TCP窗口大小,可以使用-w参数指定。
网络通道的容量capacity = bandwidth * round-trip time
而理论TCP窗口的大小就是网络通道的容量。
比如,网络带宽为40Mbit/s,回环路径消耗时间是2ms,那么TCP的窗口大小不小于40Mbit/s×2ms = 80kbit = 10Kbytes
此时我们可以查询iperf默认的TCP窗口大小来决定是否需要设置此参数,在此例中,窗口大小应设计大于10Kbytes,当然,这仅仅是理论值,在实际测试中可能需要作出调整。