一种有效检测重传数据包丢失并预防重传超时方法技术

技术编号:19150859 阅读:38 留言:0更新日期:2018-10-13 10:29
本发明专利技术公开了一种有效检测重传数据包丢失并预防重传超时方法,属于移动网络领域。本发明专利技术首先在发送端获取接收端返回给发送端的每一个SACK;然后遍历SACK的每一段,比较与前一个SACK段的差别;最后根据上一步的比较结果判断重传数据包是否丢失,如果断定为丢失那么触发再次重传,且防止重传超时。本发明专利技术保证了在复杂的网络环境而导致的高丢包率情形下,重传数据包的再次丢失能被有效的检测,并触发发送端再次重传,提高了网络吞吐率。

An effective method for detecting retransmission packet loss and preventing retransmission timeout

The invention discloses an effective method for detecting retransmission packet loss and preventing retransmission timeout, belonging to the field of mobile network. The invention first obtains each SACK returned by the receiving end to the sending end, then traverses each segment of the SACK, compares the difference with the previous SACK segment, and finally judges whether the retransmitted data packet is lost, triggers the retransmit if it is determined to be lost, and prevents the retransmit from overtime. The invention guarantees that in the case of high packet loss rate caused by complex network environment, the retransmitted packet loss can be effectively detected, and triggers the sender to retransmit again, thereby improving the network throughput.

【技术实现步骤摘要】
一种有效检测重传数据包丢失并预防重传超时方法
本专利技术涉及一种有效检测重传数据包丢失并预防重传超时方法,属于移动网络领域。
技术介绍
作为广泛使用的TCP协议在高速移动网络中遇到了新的性能瓶颈。例如,Mascolo等人还有Fu和Liew设计了新的方法来辨别网络中的非拥塞丢包和拥塞丢包,防止不必要的减小拥塞窗口造成带宽利用率损失。也有人在丢失重传阶段重新设计拥塞控制算法来提高TCP的带宽利用率。Liu和Lee还有Leong等人提出了基于队列长度的自适应丢失恢复算法来取代原先TCP中的丢失恢复算法,他们将数据包丢失和拥塞控制解耦,使传输速率或拥塞窗口的调整在重传或者发送新包时仅受所评估的链路中队列长度的影响。他们在丢失恢复阶段持续的调整传输速率或者发送窗口以便使队列长度围绕目标队列长度值波动。相比较传统的TCP算法,他们的结果显示,他们的方法能有效缓解在移动网络中因随机丢包造成的带宽利用率下降问题。为进一步的提高带宽利用率,Zha和Liu提出了机会式重传算法—OR和新的发送缓存区动态分配策略,来分别解决快速重传阶段的流量控制导致的性能瓶颈和applicationstall问题。流量控制本文档来自技高网...

【技术保护点】
1.一种有效检测重传数据包丢失并预防重传超时方法,其特征在于:包括如下步骤:首先在发送端获取接收端返回给发送端的每一个SACK;然后遍历SACK的每一段,比较与前一个SACK段的差别;最后根据上一步的比较结果判断重传数据包是否丢失,如果断定为丢失那么触发再次重传,且防止重传超时。

【技术特征摘要】
1.一种有效检测重传数据包丢失并预防重传超时方法,其特征在于:包括如下步骤:首先在发送端获取接收端返回给发送端的每一个SACK;然后遍历SACK的每一段,比较与前一个SACK段的差别;最后根据上一步的比较结果判断重传数据包是否丢失,如果断定为丢失那么触发再次重传,且防止重传超时。2.根据权利要求1所述的有效检测重传数据包丢失并预防重传超时方法,其特征在于:具体步骤如下:Step1:在发送端的Linux内核处理SACK前截获接收端返回给发送端的每一个SACK;Setp2:检测SACK的标志位flag,在Linux内核中,SACK的flag代表了对应数据包的状态;Step3:将SACK的标志位flag与Linux内核中的数据包标志位表达式FLAG_NOT_DUPorFLAG_SND_UNA_ADVANCEDorFLAG_DATA_SACKED做逻辑与操作,FLAG_NOT_DUP表示收到的SACK不是一个重复SACK,FLAG_SND_UNA_ADVANCED表示收到的SACK更新了接收窗口—Awnd的起始序号,FLAG_DATA_SACKED表示SACK确认了新的数据包,如果逻辑与的条件为真,则表示当前SACK和收到的上一个SACK完全一样,意味着重传数据包可能丢失,那么进入Step4做进一步的判断;如果逻辑与的条件为假,那么代表该SACK是正常的,不需要进行处理,所以跳转到Step11,直接交给Linux内核按照正常流程进行重传数据包检查;Step4:由Step3知道,该SACK为不正常SACK,于是调用内核函数tcp_for_write_queue_from遍历发送端缓存snd_mem,每次传送一个snd_mem数据包的指针_skb给Step5处理,判断是否需要被重传;Step5:如果当前snd_mem的数据包大于snd_mem记录的最高已发送序号highest_sack_sequence,表示已经遍历完snd_mem,于是跳转到S...

【专利技术属性】
技术研发人员:汪海涛万文凯姜瑛陈星
申请(专利权)人:昆明理工大学
类型:发明
国别省市:云南,53

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1