如何为UDP协议进行拥堵控制?[英] How can I do congestion control for a UDP protocol?

本文是小编为大家收集整理的关于如何为UDP协议进行拥堵控制?的处理方法,想解了如何为UDP协议进行拥堵控制?的问题怎么解决?如何为UDP协议进行拥堵控制?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个自定义的UDP协议,其中包含多个发件人/接收器,旨在尽可能快地发送大型文件.它是基于客户端/服务器.

如何检测到LAN上的拥塞以减慢发送的UDP数据包的速率?

编辑:请不要对UDP使用是否合适任何评论.该协议到达时使用UDP,但将数据包重新组合到整个文件中.

重新提出一个问题:拥塞控制算法如何工作,如何检测到拥塞?

推荐答案

这是假设您必须使用UDP(首选TCP).

从应用程序内部,网络拥塞的唯一指示是IP数据包的丢失.根据您的协议的方式,您可能想执行每个数据报号码之类的操作,如果接收者发现它缺少某些(或丢失订单),请向发件人发送消息(或多个)表明IP数据包的损失并放慢速度.

有一个协议,称为 rtp (实时运输协议)实时流式应用程序.

RTP在UDP和RTCP(实时运输控制协议)上运行,与RTP一起运行,提供了QoS(服务质量)等措施,例如数据包丢失,延迟,抖动等,以报告给发送者向下或更改编解码器.

不说您可以使用RTP,但是看看它如何工作可能会有所帮助.

其他推荐答案

潜伏期是检测拥塞的好方法.如果您的延迟开始上升,那么您可能应该放慢脚步.丢失的数据包等效于延迟=无穷大.但是您永远无法确定包是丢失或只是非常慢,因此您应该有一个超时来"检测"丢失的数据包.

其他推荐答案

流量控制是一个本质上困难的问题,因为您真正知道的只是发送数据包和收到数据包时.诸如延迟,损失甚至速度之类的都是您必须计算和解释的统计数据.

以下文章讨论了这些统计数据及其含义深入: dei Tech Note 0021:损失,潜伏期和速度

找到一个好的解决方案一直是许多研究和许多商业努力的主题. 不同的算法( tcp /wiki/udp-ased_data_transfer_protocol" rel =" nofollow"> udt , multeCurpose fressaction 等.)使用不同的方法并做出不同的假设,所有这些都试图根据可用的数据非常稀疏来弄清网络中发生的情况.

本文地址:https://www.itbaoku.cn/post/359217.html