udpp 协议是如何控制流量的

2025-04-03 156 0

首先UDPP协议都是因为个人兴趣爱好才诞生的,我本不是计算机专业的,都是兴趣爱好,所以接下来写的也很随意,本意就是个人记录。下面没有提及快速重传、超时重传、选择重传、累积确认、累积发送等,因为以上这些都是最基本必须的功能,做好以上的讨论下面的才能锦上添花。

UDPP协议是基于UDP协议的一个自定义协议,因为UDP协议的特性,UDPP协议就需要有一套流量控制的算法来按照通信传输网络路径的最大传输效率来传输数据。这个最大传输效率是软件根据一系列的主观计算和统计针对当前传输路径估计出来的,也可以说对这个传输链路进行建模,根据链路本身的反馈来输出控制发送流程以什么速度去向接收端均匀的发送多少数量的数据,又以什么标准去判断已经发送的数据包已经丢失需要重传。

udpp协议主动跟踪了每个udp包的飞行时间,根据这个时间估计出链路的传输最佳时间和估计出链路的缓冲深度时间,用最佳时间去计算出最佳的传输速度,用链路缓冲深度时间去决定重传时机(必须要这样做才能适应网络的抖动和最大限度的减少不必要的重传)。

因为通过网络和cpu处理数据都是存在波动而不是理想化均匀的,这使估计得到的传输速度很多时候都并不一定就是准确的,我还统计跟踪了丢包率和发送端本地的缓冲深度,来微调整个发送过程,通过路径的实时参数不停更新输入,使输出参数越来越接近实际链路;总之目前为止udpp协议是这样去做的。

实现并做好以上部分协议基本上就能在大部分网络环境中奔放了,可是还有一个点也是流控算法的关键,对!就是竞争性,一个没有竞争性的流,你只会不停收敛退让,从而规零,跑着跑着直到一点速度都没有。还有如果你和另一股流量同时占用着一个链路,当另外的流量停止传输以后,没有合理的竞争性你就无法去使用其它流空出来的链路可用带宽。

合理的竞争性才是有效的竞争否则会不断加剧自身流的重传,一直在浪费可用带宽而不是最大化利用可用带宽,起到反作用效果。

目前udpp的竞争性是通过评估本地缓存深度和流控模型的反馈来实时决定是否进入可用带宽探测的。

相关文章

记爱快系软路由BUG
usend_sync使用的确实不错
udpp增加了USend_sync的接口
udpp协议近期优化
数据丢失了
世界,您好!

发布评论