【问题标题】:Bandwidth measurent by minimum data transfer通过最小数据传输测量带宽
【发布时间】:2014-02-06 10:23:01
【问题描述】:

我打算编写一个需要计算网络带宽以及延迟和丢包率的应用程序。限制之一是被动测量带宽(使用应用程序数据本身)。

我在网上阅读并从一些现有的应用程序中了解到,它们几乎都使用主动探测技术(即生成探测数据包流),并使用第一个和最后一个数据包到达之间的时间差来检测计算带宽。

这种技术的主要问题是它会用探测数据包淹没网络,这些数据包运行时间更长且不可扩展(因为我们需要在两端运行应用程序)。

其中一个建议是通过将数据包回显给发送者来计算数据包的 RTT,并使用以下公式计算带宽:

Bandwidth <= (Receive Buffer size)/RTT. 

我不确定这可能有多准确,因为接收器可能并不总是按时回显数据包以获得正确的 RTT。单独使用 ICMP 可能并不总是有效,因为许多服务器禁用它。

我的主应用程序通过 TCP 连接运行,因此我有兴趣使用 TCP 连接来测量特定时间段内提供的实际带宽。如果有人能提出一种简单的技术(可靠的公式)来测量 TCP 连接的带宽,我将不胜感激。

【问题讨论】:

  • 不要忘记接受您的问题的答案。您已经提出了 7 个问题,至今没有接受其中一个。

标签: bandwidth


【解决方案1】:

只有通过探测网络才能知道可用带宽。这是因为使用率为 80% 的链路仍会无延迟地发送回显数据包,即它似乎是 0% 的占用率。

如果您只是想测量应用程序正在使用的带宽,那会容易得多。例如。记录您在最后一秒传输的数据量,以 10 毫秒为间隔。

【讨论】:

    【解决方案2】:

    主动探测技术及其变体是带宽估计算法。您不想使用这些算法来测量带宽。注意“测量”和“估计”之间的区别。

    如果你想使用 tcp 来测量带宽,你应该知道 tcp 带宽受延迟的影响。

    使用 tcp 测量带宽的最简单方法是发送 tcp 数据包并测量传输的带宽。它将淹没网络。在高速网络中没有一种非泛洪算法是可靠的。另外,非泛洪算法假设通道没有流量。如果通道内还有其他流量,则结果会出现偏差。如果结果没有意义,我并不感到惊讶。

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2011-10-18
      • 1970-01-01
      • 2018-03-06
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      相关资源
      最近更新 更多