通过ping计算上传/下载速度

Hul*_*ulk 25 performance networking network-programming ping

如何通过一些平均ping速率来计算互联网连接的速度.它涉及的计算是什么.可以通过ping速率计算上传/下载限制

编辑 如果ping不是解决方案还有什么?

ime*_*l96 25

我用ping来计算本地网络的带宽.我认为它与测量带宽的其他方法一样准确(例如下载大文件).如果您有互联网的对称链接(即不是adsl),您也可以将它用于您的互联网连接.

我是这样做的:我有一个千兆以太网局域网,我想测量我的计算机和服务器机房中的主机之间的速度.我的MTU是1500,所以我使用数据包大小1472.随机,我在这个测试中使用83,333个数据包(大约1千兆位).然后:

sudo ping -f -c 83333 -s 1472 192.168.3.103

在结果我得到:往返min/avg/max/stddev = 0.174/0.219/2.078/0.020 ms

所以平均而言,发送1500字节需要0.219毫秒,接收1500字节,即24kb.24 kb/0.219 ms = 110 Mb/s

如果要将其用于Internet上的服务器,则需要将数据包大小降低到1464(对于MTU 1492),删除-f选项并降低计数,这样完成时间不会太长.

ps我认为这应该是超级用户,而不是stackoverflow.

  • 我不明白你的数学:“1500 字节并接收 1500 字节,即 24 kb。” ——你能解释一下吗?谢谢 (3认同)
  • 它是字节到位的转换,3,000字节= 24,000位= 24 kb (2认同)

Bri*_*new 11

延迟与带宽不同.想象一下,全国各地都有一大堆DVD被驱动.带宽很高,但延迟很大.

  • 为了将我的答案与你的答案联系起来,你可以通过一个接一个地发送2辆卡车来测量带宽.如果它们相隔30分钟出现在该国的另一边,那么系统的带宽限制为每小时2卡车.也许网络在一个特别低效的收费站拥挤,排队时间为30分钟.每辆卡车需要5天才能穿越全国这一事实是正交的. (3认同)

eat*_*ter 7

实际上可以从单独存在类似ping测量得出的带宽估计.

在GigE链路上传输1500字节的数据包总是需要12.3μs.换句话说,如果您能够像协议允许的那样快速地通过非拥塞的GigE链路从一台机器向另一台机器发送两个1500字节的数据包,它们将相隔约12.3μs到达.观察发生的情况确认您的GigE链接实际上并不拥挤.

现在举一个简单的WAN测量示例(再次假设它没有拥塞):

HostA -------- RouterA -------- RouterB -------- HostB
        GigE             OC-3             GigE
Run Code Online (Sandbox Code Playgroud)

主机A快速连续发送两个1500字节的数据包.当路由器A收到第一个数据包时,它开始通过OC-3 WAN链路(155Mbps)转发它.将一个1500字节的数据包转发到OC3需要81.5μs,因此当路由器A收到来自主机A的第二个数据包时,它将处于转发第一个数据包的过程中.它必须将第二个数据包排队,直到它完成传输第一.

当路由器B完成接收第一个数据包时,它将它转发给主机B,只需12.3μs; 同时路由器B开始接收第二个数据包.当路由器B完成接收第二个数据包时,它会将其转发给主机B.

因此,主机B看到12.3μs的数据包接收,69.2μs的静音,然后是12.3μs的数据包接收 - 换言之,81.5μs的到达间隔时间.根据该观察,主机B可以推断路径带宽限制为155Mbps.


现在这在理论上是伟大的,但在实践中事​​情变得更加复杂.拥塞事件往往是突发性的,所以有一次路由器的队列可能已经很满,下一次它们是空的.许多样本是获得任何有意义的必要条件.进行精确测量也很棘手.端到端延迟可能在几十或几百毫秒之内,您正在查看几微秒的差异.如果从A到B有多条路径,祝你好运.

通常只是更容易爆炸流量,看看有多少通过.然后,您将确切知道您的可用带宽为零.


dam*_*amg 2

ping 是通过 ICMP 在网络上发送的单个数据包。通常每秒发送一个数据包来 ping 远程计算机,并且路由可能与通常用于数据传输的 TCP 和 UDP 不同;远程计算机可能会拒绝回复 ping 请求。因此,通过 ping 请求测量网络吞吐量是不可靠的,而且可能毫无用处。