由于要测试另一个IDC给的带宽是否给足了,所以要从一个机房打10G的流量到测试IDC。之初 采用多线程下载工具,多进程方法下载,可是不理想,跑量达不到要求。
Iperf是一个网络性能测试工具。可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告 带宽,延迟抖动和数据包丢失.
服务器上架,首要的是进行操作系统安装,然后进行联通性测试和网络质量测试。我们曾经有过教训,一个服务器上的业务一直不正常,技术人员排查了好久,在应用和系统上一直没有找到问题,最后发现是一根质量低劣的成品网络线,造成网络质量极差从而引起系统无法正常工作。
网络质量的指标,主要有以下几个:
- 带宽(throughput),网络的吞吐率,端到端之间可以传输的最大速率。比如服务器之间的千兆网络带宽是1000Mbps,或者用户adsl上网速率是 2Mbps。
- 延时(latency),数据包从本地传输到对端之间需要的时间,一般是来回的时间。如果延时过大,就会觉得网络慢,特别是一些交互性强的应用。比如延时超过300ms,通过ssh就会明显感到服务器响应比较慢,跟不上键盘输入的速度。延时一方面和两地之间的传输距离有关,比如中美之间通过海底光缆传输半个地球,来回距离加起来最起码4万公里,光速是30万公里每秒,所以理论延时最起码是130ms,再加上光缆需要转接和绕路,以及其他损耗,所以中美之间网络延时最好的时候也在170ms左右。延时另外一个原因是网络带宽的占用率,如果占用率高,则延时也高,比如天朝的特色,电信和网通之间,互相掐架,互联带宽很小,网络瓶颈,造成互相之间延时很高。很多时候,同一个城市的网通到电信,比到美国去绕一圈还要慢。延时的其他原因,是cpu处理跟不上等。
- 丢包(loss),由于线路带宽占用过高,数据包从一端到另外一端传输的途中,会产生丢失。丢包率是网络的一个重要指标,一旦产生丢包,说明网络带宽不足,系统会自动重传,导致继续劣化,所以丢包率超过10%以后,网络质量会迅速劣化。
- 抖动(jitter),如果延时不稳定,忽快忽慢,网络就存在抖动。抖动这个指标,在VOIP,视频会议等场合,是一个非常重要的指标,如果产生抖动,往往声音和图像也会抖动,无法听清楚或者看清楚。
普通用户测试网络质量的工具,通常的有:
1、ping
谁最常用的一个测试网络质量的一个工具,在各种操作系统、网络设备中一般都自带该工具。ping可以测试网络的延时、丢包率,优点是使用方便,不用安装。
ping的缺陷也比较明显:
- 测试的时候,仅仅发送很小的负载icmp包,无法测试真实负载下的网络质量,比如单位里的网络平时是正常的,但是开一个迅雷下载,就很糟糕了。
- 测试的指标单一,对于带宽、抖动无法测试
2、下载工具,可以测试带宽
这里介绍一个优秀的网络质量测试工具iperf,这个工具在我们的 asterisk 网络电话项目中,立下了汗马功劳。iperf 可以测试真实载荷下的网络质量,可以测试端到端的网络质量,可以测试一定吞吐率下的丢包、抖动。
先介绍下安装
如果是centos 的话。添加第三方的源(rpmforge)就可以直接yum
yum -y install iperf
当然也可以用源码包编 译安装 。官方站: http://sourceforge.net/projects/iperf/
tar xvf iperf-xxx.tar
cd iperf
./configure
make
make install
用法:
root@ubuntu:~# iperf -h
Usage: iperf [-s|-c host][options]
Client/Server:
Server specific:
Client specific:
Miscellaneous:
[KM] Indicates options thatsupport a K or M suffix for kilo- or mega-
The TCP window size optioncan be set by the environment variable
TCP_WINDOW_SIZE. Most otheroptions can be set by an environment variable
IPERF_<longoption name>, such as IPERF_BANDWIDTH.
Report bugs to<iperf-users@lists.sourceforge.net>
一般的网络传输,使用 tcp 测试(普通网络应用),测试传输带宽
语音服务器应该使用 udp 方式 (-u 选项),主要用于voip,视频会议,一些游戏
使用范例
1.
Server
root@ubuntu:~# iperf -s -p 5800 -M 1460 -i 1
WARNING: attempt to set TCP maximum segment size to 1460, but got 536
------------------------------------------------------------
Server listening on TCP port 5800
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.102.205 port 5800 connected with 192.168.102.205 port 37792
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 1.0 sec 886 MBytes 7.43 Gbits/sec
[ 4] 1.0- 2.0 sec 939 MBytes 7.88 Gbits/sec
[ 4] 2.0- 3.0 sec 845 MBytes 7.09 Gbits/sec
[ 4] 3.0- 4.0 sec 850 MBytes 7.13 Gbits/sec
[ 4] 4.0- 5.0 sec 846 MBytes 7.10 Gbits/sec
[ 4] 5.0- 6.0 sec 893 MBytes 7.49 Gbits/sec
[ 4] 6.0- 7.0 sec 710 MBytes 5.96 Gbits/sec
[ 4] 7.0- 8.0 sec 658 MBytes 5.52 Gbits/sec
[ 4] 8.0- 9.0 sec 757 MBytes 6.35 Gbits/sec
[ 4] 9.0-10.0 sec 838 MBytes 7.03 Gbits/sec
[ 4] 0.0-10.0 sec 8.03 GBytes 6.89 Gbits/sec
WARNING: attempt to set TCP maximum segment size to 1460, but got 536
------------------------------------------------------------
Client connecting to 192.168.102.205, TCP port 5800
TCP window size: 160 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.102.205 port 37793 connected with 192.168.102.205 port 5800
[ 5] local 192.168.102.205 port 5800 connected with 192.168.102.205 port 37793
[ 4] 0.0- 1.0 sec 1.02 GBytes 8.72 Gbits/sec
[ 5] 0.0- 1.0 sec 1.02 GBytes 8.73 Gbits/sec
[ 4] 1.0- 2.0 sec 1.21 GBytes 10.4 Gbits/sec
[ 5] 1.0- 2.0 sec 1.21 GBytes 10.4 Gbits/sec
[ 4] 2.0- 3.0 sec 902 MBytes 7.57 Gbits/sec
[ 5] 2.0- 3.0 sec 902 MBytes 7.57 Gbits/sec
[ 4] 3.0- 4.0 sec 908 MBytes 7.62 Gbits/sec
[ 5] 3.0- 4.0 sec 908 MBytes 7.62 Gbits/sec
[ 4] 4.0- 5.0 sec 717 MBytes 6.02 Gbits/sec
[ 5] 4.0- 5.0 sec 718 MBytes 6.02 Gbits/sec
[ 4] 5.0- 6.0 sec 1.27 GBytes 10.9 Gbits/sec
[ 5] 5.0- 6.0 sec 1.27 GBytes 10.9 Gbits/sec
[ 4] 6.0- 7.0 sec 1.04 GBytes 8.90 Gbits/sec
[ 5] 6.0- 7.0 sec 1.04 GBytes 8.90 Gbits/sec
[ 4] 7.0- 8.0 sec 896 MBytes 7.51 Gbits/sec
[ 5] 7.0- 8.0 sec 896 MBytes 7.52 Gbits/sec
[ 4] 8.0- 9.0 sec 1.31 GBytes 11.2 Gbits/sec
[ 5] 8.0- 9.0 sec 1.31 GBytes 11.2 Gbits/sec
[ 4] 9.0-10.0 sec 1.29 GBytes 11.1 Gbits/sec
[ 4] 0.0-10.0 sec 10.5 GBytes 9.00 Gbits/sec
[ 5] 9.0-10.0 sec 1.29 GBytes 11.1 Gbits/sec
[ 5] 0.0-10.0 sec 10.5 GBytes 8.99 Gbits/sec
Client
root@ubuntu:~# iperf -c 192.168.102.205 -p 5800 -M 1460 -m -i 1 -r
WARNING: attempt to set TCP maximum segment size to 1460, but got 536
WARNING: attempt to set TCP maximum segment size to 1460, but got 536
bind failed: Address already in use
------------------------------------------------------------
Client connecting to 192.168.102.205, TCP port 5800
TCP window size: 23.5 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.102.205 port 37792 connected with 192.168.102.205 port 5800
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 887 MBytes 7.44 Gbits/sec
[ 3] 1.0- 2.0 sec 940 MBytes 7.88 Gbits/sec
[ 3] 2.0- 3.0 sec 844 MBytes 7.08 Gbits/sec
[ 3] 3.0- 4.0 sec 850 MBytes 7.13 Gbits/sec
[ 3] 4.0- 5.0 sec 846 MBytes 7.10 Gbits/sec
[ 3] 5.0- 6.0 sec 893 MBytes 7.49 Gbits/sec
[ 3] 6.0- 7.0 sec 709 MBytes 5.95 Gbits/sec
[ 3] 7.0- 8.0 sec 658 MBytes 5.52 Gbits/sec
[ 3] 8.0- 9.0 sec 757 MBytes 6.35 Gbits/sec
[ 3] 9.0-10.0 sec 838 MBytes 7.03 Gbits/sec
[ 3] 0.0-10.0 sec 8.03 GBytes 6.90 Gbits/sec
[ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)
2.
双向测试
Server
root@ubuntu:~# iperf -s -i 1 -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.102.205 port 5001 connected with 192.168.102.205 port 47287
------------------------------------------------------------
Client connecting to 192.168.102.205, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 5] local 192.168.102.205 port 43917 connected with 192.168.102.205 port 5001
[ 4] local 192.168.102.205 port 5001 connected with 192.168.102.205 port 43917
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 59.2 MBytes 497 Mbits/sec 0.001 ms 298/42519 (0.7%)
[ 3] 1.0- 2.0 sec 58.4 MBytes 490 Mbits/sec 0.001 ms 0/41682 (0%)
[ 3] 2.0- 3.0 sec 58.4 MBytes 490 Mbits/sec 0.004 ms 0/41663 (0%)
[ 3] 3.0- 4.0 sec 58.0 MBytes 487 Mbits/sec 0.004 ms 0/41383 (0%)
[ 3] 4.0- 5.0 sec 58.0 MBytes 486 Mbits/sec 0.000 ms 0/41354 (0%)
[ 3] 5.0- 6.0 sec 58.7 MBytes 493 Mbits/sec 0.002 ms 0/41895 (0%)
[ 3] 6.0- 7.0 sec 57.8 MBytes 485 Mbits/sec 0.000 ms 0/41247 (0%)
[ 3] 7.0- 8.0 sec 58.0 MBytes 487 Mbits/sec 0.002 ms 0/41395 (0%)
[ 3] 8.0- 9.0 sec 58.0 MBytes 486 Mbits/sec 0.002 ms 0/41366 (0%)
[ 3] 0.0-10.0 sec 583 MBytes 489 Mbits/sec 0.001 ms 297/416234 (0.071%) #在client到server方向有packet loss
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
[SUM] 0.0-10.0 sec 642 MBytes 539 Mbits/sec
Client
root@ubuntu:~# iperf -c 192.168.102.205 -i 1 -u -t 10 -b 500m -d
------------------------------------------------------------
Client connecting to 192.168.102.205, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.102.205 port 47287 connected with 192.168.102.205 port 5001
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 59.6 MBytes 500 Mbits/sec
[ 3] 1.0- 2.0 sec 58.4 MBytes 490 Mbits/sec
[ 3] 2.0- 3.0 sec 58.4 MBytes 490 Mbits/sec
[ 3] 3.0- 4.0 sec 58.0 MBytes 487 Mbits/sec
[ 3] 4.0- 5.0 sec 58.0 MBytes 486 Mbits/sec
[ 3] 5.0- 6.0 sec 58.7 MBytes 492 Mbits/sec
[ 3] 6.0- 7.0 sec 57.8 MBytes 485 Mbits/sec
[ 3] 7.0- 8.0 sec 58.0 MBytes 487 Mbits/sec
[ 3] 8.0- 9.0 sec 58.0 MBytes 486 Mbits/sec
[ 3] 9.0-10.0 sec 58.5 MBytes 491 Mbits/sec
[ 3] 0.0-10.0 sec 584 MBytes 489 Mbits/sec
[ 3] Sent 416235 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 583 MBytes 489 Mbits/sec 0.001 ms 297/416234 (0.071%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
上面客户端测试结果包括带宽、抖动、丢包:
[ 3] Server Report:
[ 3] 0.0-10.0 sec 583 MBytes 489 Mbits/sec 0.001 ms 297/416234 (0.071%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
单向测试
server
root@ubuntu:~# iperf -s -i 1 -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.102.205 port 5001 connected with 192.168.102.205 port 41641
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 58.3 MBytes 489 Mbits/sec 0.002 ms 0/41608 (0%)
[ 3] 1.0- 2.0 sec 58.7 MBytes 493 Mbits/sec 0.000 ms 0/41894 (0%)
[ 3] 2.0- 3.0 sec 58.8 MBytes 493 Mbits/sec 0.001 ms 0/41939 (0%)
[ 3] 3.0- 4.0 sec 58.2 MBytes 488 Mbits/sec 0.000 ms 0/41539 (0%)
[ 3] 4.0- 5.0 sec 58.2 MBytes 488 Mbits/sec 0.000 ms 0/41521 (0%)
[ 3] 5.0- 6.0 sec 58.5 MBytes 491 Mbits/sec 0.001 ms 0/41720 (0%)
[ 3] 6.0- 7.0 sec 58.2 MBytes 488 Mbits/sec 0.000 ms 0/41497 (0%)
[ 3] 7.0- 8.0 sec 58.2 MBytes 488 Mbits/sec 0.006 ms 0/41483 (0%)
[ 3] 8.0- 9.0 sec 58.4 MBytes 490 Mbits/sec 0.003 ms 0/41673 (0%)
[ 3] 9.0-10.0 sec 58.4 MBytes 490 Mbits/sec 0.005 ms 0/41690 (0%)
[ 3] 0.0-10.0 sec 584 MBytes 490 Mbits/sec 0.007 ms 0/416565 (0%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
client
root@ubuntu:~# iperf -c 192.168.102.205 -i 1 -u -t 10 -b 500m
------------------------------------------------------------
Client connecting to 192.168.102.205, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 224 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.102.205 port 41641 connected with 192.168.102.205 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 58.3 MBytes 489 Mbits/sec
[ 3] 1.0- 2.0 sec 58.7 MBytes 492 Mbits/sec
[ 3] 2.0- 3.0 sec 58.8 MBytes 493 Mbits/sec
[ 3] 3.0- 4.0 sec 58.2 MBytes 488 Mbits/sec
[ 3] 4.0- 5.0 sec 58.3 MBytes 489 Mbits/sec
[ 3] 5.0- 6.0 sec 58.5 MBytes 490 Mbits/sec
[ 3] 6.0- 7.0 sec 58.2 MBytes 488 Mbits/sec
[ 3] 7.0- 8.0 sec 58.2 MBytes 488 Mbits/sec
[ 3] 8.0- 9.0 sec 58.4 MBytes 490 Mbits/sec
[ 3] 9.0-10.0 sec 58.4 MBytes 490 Mbits/sec
[ 3] 0.0-10.0 sec 584 MBytes 490 Mbits/sec
[ 3] Sent 416566 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 584 MBytes 490 Mbits/sec 0.006 ms 0/416565 (0%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order
http://blog.sina.com.cn/s/blog_68f770d90100xdyt.html
http://blog.youkuaiyun.com/yanheven1/article/details/17303905