使用nc & pv测试发送速度

本文介绍了如何使用nc和pv工具测试网络发送速度。通过一个发包工具的TCP和UDP模式,详细阐述了测试原理和过程。在TCP测试中,发送1G数据,工具和nc/pv的结果基本一致。而在UDP测试中,通过调整payload大小解决pv统计异常问题,测试结果与理论计算相符。
摘要由CSDN通过智能技术生成

最近写了一个用于测试网络速度的发包工具,再工具发布之前,我使用nc配合pv对工具进行了测试,即确认工具发送的数据流量和nc/pv接收到的是一致的,确认工具是按设定参数发送数据。

先说一下发送数据的工具的工作原理
对于TCP,参数为每次写入的数据块的大小,以及数据块的数量,比如每次写入1M,共发送1000个,这样就发送了1G的数据。工具是服务端,收到客户端的任意数据后开始发送,所以可以配合nc使用,只要让nc执行时重定向一个文件进去。TCP可以在服务端这边测试速度,只要计算一下全部发送完的时间即可,由于是用go实现的,很方便,一个循环里面发送完,然后计时,算速度。
对于UDP,参数为目标带宽,发送时间以及每次发送的udp数据报负载大小。通过目标带宽,计算出每秒发送多少个udp数据报。然后在一个循环里面发送,发送时需要动态计算速度,如果速度超了需要sleep直到速度降下来才继续发送。整个发送时间到了退出。有点需要注意的是,带宽到udp发包速度的计算,我使用的算法是:
udpBw := (float64(bandwidth) / 8.0) / float64(1538) * (1500 - 28)
udpPackPerSec := udpBw * 1000000 / float64(udpPackSize)
因为网络上跑的是以太网的帧,所以要算出每秒可以发送多少个以太网帧,然后再乘以mtu为1500时udp负载的容量,当然这算法也是近似的,没有考虑到ip分片的情况,有分片的时候从第二个分片开始是没有udp头的,所以不需要减去28,减20就行。然后由于我们说的带宽多少MB,都是1K=1000的,所以这儿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值