UDP的拥塞控制方法是否可行/健全?

时间:2015-08-30 14:10:07

标签: networking congestion-control

  • 发件人发送数据。
  • 接收器等待几秒钟,然后计算吞吐率/秒
  • Receiver将接收数据包的速率(字节/秒)发送给发送方
  • 发件人计算其发送数据包的速率
  • 如果发件人的费率明显较高,请将其降低以匹配接收率。

或者,更先进的方法:

  • 发件人开始以预定义的最低费率(例如,1kb / s)发送
  • 接收方将计算出的接收率发送回发件人。
  • 如果接收率与发送率相同(考虑延迟),则将费率增加一个pct(例如,费率* 2)
  • 继续这样做,直到发送速率高于接收速率。
  • 持续监控费率,以便在需要时考虑带宽增加/减少率的变化。

如果你要实现自己的UDP拥塞控制算法,这可行吗?

1 个答案:

答案 0 :(得分:0)

当然,这是可行的。 现在,这会给你预期的结果,还是听起来......

我认为你正在努力解决由IETF非常聪明的人们研究和标准化的问题。我建议你看一下位于UDP之上的RTP / RTCP,只是理解为什么这是一个棘手的问题并抓住一些想法。

https://en.wikipedia.org/wiki/RTP_Control_Protocol

“RTCP的主要功能是通过定期向流式多媒体会话中的参与者发送统计信息,提供有关媒体分发中的服务质量(QoS)的反馈。”

https://en.wikipedia.org/wiki/Real-time_Transport_Protocol

事实上,它的主要用例是音频/视频流,我认为并不那么重要:RTCP的目的是在参与者之间提供有关UDP数据流的反馈[*]。

警告:

  • 这些是复杂的协议,因为手头的问题确实很复杂。

  • IIRC,RTCP没有定义发送方应该对这些QoS报告做什么。它只是正式确定了这些报告的交换方式。

[*]:嗯,不是因为在A / V中,同步是一个重要的方面(“及时发送/接收”),而你想要做的是“尽可能快地” ,但不是太快“。