详解UDP流量控制之分析篇

发布时间:2009-09-15编辑:VTCP阅读:70

    大都知道,UDP是不可靠传输协议与TCP刚好相反.


    不过因为UDP的特性适合传输不需要确认的数据,在应用层如果设计好的传输协议一样可以进行很好的可靠传输.比如RUDP协议.


    但是光可靠传输还不够,流量控制是很重要的.


     



    我们从简单的情况说起来说明流量控制的重要性.


     



    可靠性:


    故名思意,就是客户1发送一个包给客户2,客户2能收到这个包.这才叫可靠传输.


     



    最简单的可靠传输协议就是停止等待协议,一问一答方式.


    打个比方就是,我发了一封邮件,对方打开邮件后,发送一封回信,也叫回致,那么发送方知道了对方已经收到了我的邮件.


    很显然,在等待回信的时候,有很大一段时间是用来等待的,这样对于流量来说是很大的浪费.


     


     



    滑动窗口协议,是TCP使用的一种流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输.


     



    我们可以仿照TCP来完成UDP的可靠传输,而这篇BLOG不是用来说明滑动窗口协议.我们来分析一下本质.


     QQ截图20181015230518.jpg


     


    在流量控制上现在主要有几种技术方案,通过往返时间的增量来控制.丢包时间差控制,流量控制,ACK返回控制.等 主流控制方法.


     


    他们控制的核心就是控制发送窗口的大小,窗口越大意味着发送流量越大.


     


    我们分别对这些控制方法进行一个解说.当了解这些方法后,我们可以对实现这个可靠传输有了更准确的一个指导思想.


     



    RTT方法,这个方法代表的tcp实现是TCP vegas.

    他是通过测RTT,通过公式  Expected =WindowSiz/BaseRTT及Actual = WindowSize/RTT,及Diff = Expected-Actual,来动态更改发送窗口


     



    当流量超过负荷时就会发生丢包,这里会发生丢包现象.当丢包发生时,一般采用折半发送窗口解除拥塞.


     


    需要再次提到的,就是拥塞预测,这个是很重要的手段,传统的RENO算法,是通过丢包检测,

    这个方法理论上说是检测的本质,但是对于超大延时网络,如果当真的丢包了再去拥塞避免,其实已经晚已,因为,网关上已经有太多的包放在那里被无情丢弃掉了.



    这样的话,会马上引发慢启动.这样效率大大损失,这在其他UDP传输算法上,比如VTCP上表现比较明显,我想他们应该是没有拥塞预测方法的.


    拥塞预测方式,主要方法,可以通过RTT测量,和ACK频率测量,另外就是流量增量测量.


关键字