发明内容
[0006] 本发明提出了一种基于丢包率的卫星通信分段式拥塞控制方法,其包括基于数据块发送的直接启动算法和基于丢包率判定的分段式拥塞避免算法。
[0007] 本发明将发送单位定义为数据块,数据块由多个数据段组成,而每个数据段又由1个或多个数据包组成,如图2所示。为简化卫星通信链路资源分配的复杂性,将发送窗口的大小定义为数据块中新发送数据包的个数或者新发送数据段的长度,忽略发送端和接收端的数据处理时延。
[0008] 本发明技术方案的主要思路是基于对丢包率判定的判断从而实现分段式拥塞控制。整个拥塞控制方法包含基于数据块发送的直接启动算法和基于丢包率判定的分段式拥塞处理算法。其中,基于数据块发送的直接启动算法代替传统的慢开始算法,直接以历史最大窗口进行数据发送,并通过反馈调节的方式实现算法的正常运行。基于丢包率判定的分段式拥塞处理算法是根据丢包率的大小对链路状态进行分段判断,从而采取更准确的窗口调整策略。
[0009] 本发明采取以下技术方案:
[0010] 1、启动阶段
[0011] 101、生成并发送初始数据块。
[0012] 生成初始发送数据块时,将发送端(终端A)缓存中的最大窗口值M作为初始发送窗口值,记为M1。发送端(终端A)生成数据块并将其发送至接收端(终端B)。初始发送数据块的结构如图2所示,包括初始发送数据段的长度M1、由编号1到M1的数据包所组成的初始发送数据段。
[0013] 102、生成并发送确认数据块。
[0014] 接收端(终端B)收到数据块后,进行差错检测,形成一个由“0”和“1”组成的长度为Mi个比特的接收指示序列(正确接收的数据包置为“0”,未正确接收的数据包置为“1”)。此处假设重传数据段中的数据重传后不再出现错误,因此不论是初始确认还是后续确认,该01序列均只进行1到Mi的排列。
[0015] 接收端(终端B)生成确认数据块并将其发送至发送端(终端A)。确认数据块的结构如图3所示,包括丢包起始序号Si、数据接收指示序列(长度为Mi个比特)及丢包数Ni。
[0016] 103、接收确认数据块后生成新数据块。
[0017] 发送端(终端A)接收到确认数据块后,按照下列步骤生成新的数据块:
[0018] 1)计算丢包率Xi。根据确认数据块中的丢包数Ni和发送数据段长度Mi进行计算,计算式如下:
[0019]
[0020] 2)计算新发送数据段的长度Mi+1。根据Mi计算Mi+1,计算方法如下:
[0021]
[0022] 0<α<ε<1,1<β<2 (3)
[0023] 其中,α、β、ε为预设的固定值,其取值范围如式(3)所示,α为卫星通信正常通信时的丢包率,ε为卫星通信较差链路状况时的丢包率,β为链路状况参考值。Mi+1值取整数。当Xi≤α时,链路状况很好,发送数据段的长度增大β倍;当αε时,链路状况极度恶化,发送数据段长度减小1-Xi倍。α、β、ε的具体取值是根据对长期的历史数据判断所得。
[0024] 3)通过数据接收序列与原数据段的比对提取所有未成功接收的数据包,并重新组合成为重传数据段,编号1到Ni。
[0025] 4)生成新数据块。其结构为新发送数据段长度Mi+1、编号1到Mi+1的新发数据段、编号为1到Ni的重传数据段。其中,重传数据段用丢包起始序号Si进行标识以便接收端(终端B)进行辨认,见图4。
[0026] 2、拥塞处理阶段
[0027] 201、普通拥塞处理。
[0028] 若丢包率α
[0029] 202、严重拥塞处理。
[0030] 若丢包率Xi>ε,则进入严重拥塞避免阶段。此时下一次发送新数据段的长度Mi+1根据公式(2)计算得到。其余按照步骤103进行。
[0031] 整个算法的流程按图5所示。
[0032] 本发明方法具有以下三个优势:
[0033] (1)本发明采用数据块为发送单位,直接采用历史最大窗口值启动,并且将每次需要重传的数据加入到下次发送数据块中,再通过算法的反馈特性,使窗口快速逼近临界值,尽可能保持最大发送窗口。
[0034] (2)本发明通过对丢包率的计算进行分段式的拥塞情况判断,按不同比例对发送窗口进行调整,传输效率得到提高。
[0035] (3)确认数据块的结构体现了丢包的位置和顺序,发送端易于对下次需要重传的数据包进行识别和重组,降低了算法的复杂度。