如何通过一些平均 ping 速率计算 Internet 连接的速度。其中涉及哪些计算。是否可以通过 ping 速率计算上传/下载限制
编辑 如果 ping 不是解决方案,还有什么?
如何通过一些平均 ping 速率计算 Internet 连接的速度。其中涉及哪些计算。是否可以通过 ping 速率计算上传/下载限制
编辑 如果 ping 不是解决方案,还有什么?
我使用 ping 计算本地网络中的带宽。我认为它与其他测量带宽的方法(例如下载大文件)一样准确。如果您有到 Internet 的对称链接(即不是 adsl),您也可以将它用于您的 Internet 连接。
这是我的做法:
我有一个千兆以太网 LAN,我想测量我的计算机和服务器机房中的主机之间的速度。我的 MTU 是 1500,所以我使用数据包大小 1472。只是随机的,我在这个测试中使用了 83,333 个数据包(大约 1 千兆位)。然后:
sudo ping -f -c 83333 -s 1472 192.168.3.103
在结果的最后我得到:
round-trip min/avg/max/stddev = 0.174/0.219/2.078/0.020 ms
所以平均发送 1500 字节和接收 1500 字节需要 0.219 毫秒,即 24 kb。
24 kb / 0.219 ms = 110 Mb/s
如果要将其用于 Internet 上的服务器,则需要将数据包大小降低到 1464(对于 MTU 1492),删除 -f 选项并降低计数,这样就不会花费太长时间来完成。
ps我认为这应该交给超级用户,而不是stackoverflow。
延迟不同于带宽。想象一下,一卡车的 DVD 正在全国各地行驶。带宽很高,但延迟很大。
实际上,仅从类似 ping 的测量中得出带宽估计是可能的。
在 GigE 链路上传输一个 1500 字节的数据包总是需要 12.3µs。换句话说,如果您能够以协议允许的速度通过不拥塞的 GigE 链路从一台机器向另一台机器发送两个 1500 字节的数据包,它们将相隔大约 12.3µs 到达。观察这种情况可以确认您的 GigE 链路实际上没有拥塞。
现在来看一个跨 WAN 测量的简单示例(再次假设它没有拥塞):
HostA -------- RouterA -------- RouterB -------- HostB
GigE OC-3 GigE
主机 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 有多条路径,祝你好运。
通常更容易爆炸流量并查看有多少通过。然后您将确定您的可用带宽是多少——零。
ping 是通过 ICMP 在网络上发送的单个数据包。通常每秒发送一个数据包来 ping 远程机器,并且路由可能与通常用于数据传输的 TCP 和 UDP 不同;远程机器可能拒绝回复 ping 请求。因此,通过 ping 请求测量网络吞吐量是不可靠的,而且可能毫无用处。
ping 远程主机将允许您测量网络的延迟(主机是否响应)。它不会为您提供有关该网络连接上可用带宽的有用信息。
不,这不对。
ping 数据包很小,仅用于验证从 A 点到 B 点的速度(或者更常见的用法 - 如果它们之间存在路径,则 IE 如果计算机完全响应)
一个 Ping(到一个 Pong)的过程是一个小包从 A 发送到 B 当 B 得到这个包时,它用一个 Pong 来响应,这个 Pong 立即被发送回 A。总时间(希望以毫秒为单位)已注册,并且您的 Ping 以毫秒为单位。
这当然假设 B 没有设置为拒绝 ping 或根本没有到达那里,或者位于 VPN 或其他减慢响应速度的措施后面。
最后,您得到的只是 Ping 从 A 运行到 B 再返回 A 所需的时间。
为了比较,试着跑过马路然后回来。测量时间。现在找到一种方法来计算你的体重。
正如其他人所说,ping 会告诉你延迟而不是带宽。
试试netperf。http://www.netperf.org/netperf/。您可能必须提供特定选项(如 TCP/UDP)等。
这是可能的,尽管不切实际且不可靠。
它在您的本地网络 (LAN) 上效果最好。
默认情况下,ping
发送仅指示延迟的小数据包。但是,该命令需要参数来修改数据包大小和速率。理论上,您可以将数据包的大小和速率增加到使链路饱和的程度,然后您可以使用数据包统计信息来计算发生这种情况的速度。
Ping 测量延迟(有多快)。不是吞吐量(容量)。此外,时间是以往返来衡量的。使用选项 -c 您可以指定 ping 携带的有效负载大小(以字节为单位)。总数据大小为“有效负载大小 + 标头”。
为了测量数据速率(容量或吞吐率),您需要指定 MAX 允许的有效负载大小,即 65536 字节(2 字节标头长度字段允许的 0xFFFF 字节)。
这是我的命令,然后是我的测量结果:
ping -v -f -c 100 -s 65507 192.168.0.24
我用它连接到我子网中的另一台 PC。使用有线以太网连接。结果如下:
linuxlab@linuxlab-murugan:/boot$ sudo ping -v -f -c 100 -s 65507 192.168.0.24 [sudo] password for linuxlab: ping: socket: Permission denied, attempting raw socket... PING 192.168.0.24 (192.168.0.24) 65507(65535) bytes of data. --- 192.168.0.24 ping statistics --- 100 packets transmitted, 100 received, 0% packet loss, time 1146ms rtt min/avg/max/mdev = 11.428/11.490/11.702/0.153 ms, ipg/ewma 11.576/11.483 ms
计算:
65535 字节 x 2 发送和接收 100 次。平均耗时 11.490 毫秒。
*因此:(65535 字节 x 2 来回)x 8 位/字节/0.01149 秒 = 91259878 位/秒,即 91.3 Mbps。
- 如果我的回答不正确或需要改进,请在评论中输入 - 谢谢