[原创][补帖]用快速ping来简单测试网络质量_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3162 | 回复: 0   主题: [原创][补帖]用快速ping来简单测试网络质量        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2015-1-23 14:44:42 | [全部帖] [楼主帖] 楼主

我们在平时使用ping测试网络的时候,其实只能看到网络的通断情况,因为ping使用的数据包大小只有32(或64)个字节,并且正常情况是一秒钟一个ping包,这种情况下,网络的流量非常小,有些线路在流量小的时候用没问题,但流量一大就会出问题,比如一个百兆的网络,在10兆流量的时候正常,一旦超过50M,就会出现大量的丢包现象,遇到这种问题,在排除了病毒广播风暴之类的故障后,就要怀疑网络质量不好,特别是网络吞吐量,网线、网头、交换机质量对它都有影响。

测试网络吞吐量一般需要专用的工具或软件,软件比哪iperf就比较好用,但是需要两端都运行这个软件,如果需要测试到交换机或路由器、防火墙等设备,iperf就不好用了。

在实际中,可以用快速的ping来检测网络质量,在没有专业设备的情况下,可以可以应急用一下。

ping快速发包的两个关键参数:

 -i wait
Wait wait seconds between sending each packet.  The default is to
wait for one second between each packet.  The wait time may be
fractional, but only the super-user may specify values less than
1 second.  This option is incompatible with the -f option.
-s packetsize
Specify the number of data bytes to be sent.  The default is 56,
which translates into 64 ICMP data bytes when combined with the 8
bytes of ICMP header data.  Only the super-user may specify val‐
ues more than default.  This option cannot be used with ping
sweeps.


-i 参数表示发包的间隔,默认为1秒,也就是1秒发一个,这个参数可以是小数,比如0.1表示1秒发10个包,0.01为1秒发100个包,0.001为1秒发1000个,再小了,意义不是太大,一般的系统都会承受不住了。

-s 参数表示发包的大小,单位为字节。正常情况是发送56字节(windows是32-8=24字节),再加上8个字节的头,正好是64字节,正好是以太网最小传输帧的大小。

看到这地方,很多人已经明白基本原理了:
-i来控制发包的速率,但是一般的机器每秒限制在200,也就是对应-i 0.005,再小了也发不出去了,用默认的参数,每秒钟200个包,每个包64字节,才仅仅12Kbyte/s而已流量也不大。
所以可以用-s 来控制发包的大小,把每个包放到1460字节,就可以达到256K的水平了,这条命令比单纯的ping好用多了,网络状况不好的时候,通常会表现在这个命令中,但注意偶尔的轻微丢包还应该是在正常范围的:

ping -i 0.005 -s 1460 -c 200000 -q 192.168.0.1


也许你会奇怪问为什么不把-s 放的再大一些。
大多数交换机、路由器、防火墙都会设置最大传输单元,最大是1500字节,也有些特殊情况会小一些,一般来说,1460是比较安全的,超过这个数就会分组,一分组就会有被主动丢弃的可能,结果就不准确了。

但这也只能测试到256K的流量,再大一些有没有呢?FreeBSD的Ping还提供了另外一个参数——洪水ping:

 -f      Flood ping.  Outputs packets as fast as they come back or one
hundred times per second, whichever is more.  For every
ECHO_REQUEST sent a period “.” is printed, while for every
ECHO_REPLY received a backspace is printed.  This provides a
rapid display of how many packets are being dropped.  Only the
super-user may use this option.  This can be very hard on a net‐
work and should be used with caution.
# time ping -f -s 1460 -q -c 20000 192.168.0.1
PING 10.72.6.192 (10.72.6.192): 56 data bytes
--- 10.72.6.192 ping statistics ---
20000 packets transmitted, 19727 packets received, 1.4% packet loss
round-trip min/avg/max/stddev = 0.031/0.062/0.568/0.039 ms
0.068u 0.272s 0:05.28 6.2%      21+181k 0+0io 0pf+0w


这个是什么水平?5秒钟20000个包,平均每秒4000,每个包1460,1460*8*4000=46,720,000,接近50兆的水平,百兆网络应该可以了。
再来个千兆的看看:

# time ping -f -s 1460 -c 200000 -q  192.168.0.2
PING 10.72.6.254 (10.72.6.254): 1460 data bytes
--- 10.72.6.254 ping statistics ---
200000 packets transmitted, 199901 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.180/4.902/77.211/4.340 ms
0.649u 3.616s 0:19.68 21.5%     30+256k 0+0io 0pf+0w


这个20秒跑出了20万个,平均每秒1万个,也就是上面的2.5倍,相当于125M的水平,效果还是不错的。
再者说,一秒一万个包都没有丢,这网络基本上过关了。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论