[发明专利]一种丢包重传的通信机制及基于FPGA实现其的方法在审
申请号: | 202110304104.1 | 申请日: | 2021-03-22 |
公开(公告)号: | CN113132069A | 公开(公告)日: | 2021-07-16 |
发明(设计)人: | 卢小银;雷秀军 | 申请(专利权)人: | 合肥富煌君达高科信息技术有限公司 |
主分类号: | H04L1/18 | 分类号: | H04L1/18;H04L1/16 |
代理公司: | 合肥维可专利代理事务所(普通合伙) 34135 | 代理人: | 吴明华 |
地址: | 230088 安徽省合肥市*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 丢包重传 通信 机制 基于 fpga 实现 方法 | ||
本发明公开了一种丢包重传的通信机制及基于FPGA实现其的方法,其中发送端的通信机制包括对发送队列中当前待发送数据段生成新的发送序号,将当前待发送数据段携带发送序号封装后发送,同时接收确认回包;获取预设时间段内多个已发送数据段的发送序号,将与确认回包中的发送序号匹配的已发送数据段的确认回包接收标记修改为已接收;判断预设时间段内已发送数据段中发送时间最早的数据段确认回包接收标记是否为已接收,若否,则将数据段以最高优先级插入发送队列进入重传流程,本发明实现了在避免数据丢包的前提下提高数据传输带宽利用率,在判定数据丢包时及时以最高优先级插入发送队列进行重传,有效提高数据传输可靠性。
技术领域
本发明涉及通信技术领域,具体涉及一种丢包重传的通信机制及基于FPGA实现其的方法。
背景技术
在很多嵌入式小系统里,考虑降低系统的复杂度,往往并不会使用完整成熟的通信协议来传输指令及数据,此时就会使用一些自定义的通信协议或一些简单的通信协议。如串口通信的UART,网口通信的UDP等,这些简单的通信协议不能保证通信的可靠性。当系统连接不可靠或者受外界干扰时,就会出现丢包现象,从而漏掉一些重要指令及数据。因此,在一些简单的系统中,也有必要引入一些复杂度较低的丢包重传机制。
丢包重传的前提是要发现丢包,通常采用的方法是在通信过程中增加握手机制,即接收端在收到发送端的通信包后,返回一个确认包。在发送端确认收到回包后,即认为通信成功。对于命令发送,对带宽要求不高,可以逐条发送,逐条确认,但对于数据,如发送一个数据包后等待确认回包后,再继续发送下一个数据包,将会浪费带宽。
发明内容
针对上述现有技术存在的问题,本发明提供了一种复杂度较低且能提高宽带利用率的丢包重传机制及其实现方法,该技术方案如下:
第一方面,提供了一种丢包重传的通信机制,应用于发送端,包括:
(1)对发送队列中当前待发送数据段生成新的发送序号,将当前待发送数据段携带发送序号封装后发送,同时接收确认回包;
(2)获取预设时间段内多个已发送数据段的发送序号,将与确认回包中的发送序号匹配的已发送数据段的确认回包接收标记修改为已接收;
(3)判断预设时间段内已发送数据段中发送时间最早的数据段确认回包接收标记是否为已接收,若否,则将数据段以最高优先级插入发送队列,回到步骤(1)。
在一种可能的实现方式中,所述将数据段以最高优先级插入发送队列之前,还包括:判断数据段的重发次数是否达到上限值,若否,则将数据段以最高优先级插入发送队列。
在一种可能的实现方式中,所述(1)将当前待发送数据段携带发送序号封装发送,还包括:存储封装数据段的参数信息,所述参数信息包括数据段发送序号L、数据段A1、确认回包接收标记B、数据段重发次数C。
在一种可能的实现方式中,所述数据段以最高优先级插入发送队列时携带更新后的重发次数参数。
在一种可能的实现方式中,所述数据段重发次数C初始值为0,上限值为2。
在一种可能的实现方式中,所述(2)中预设时间段采用当前待发送数据段发送时间的前第一预设值个数据段发送周期内。
在一种可能的实现方式中,所述(2)中获取预设时间段内多个已发送数据段的发送序号,是指当前待发送数据段前第一预设值个数据段的发送序号。
在一种可能的实现方式中,所述第一预设值取16。
第二方面,提供了一种丢包重传的通信机制,应用于接收端,包括:
(91)对接收到的封装数据段,解析其中携带的发送序号,将所述解析出来的发送序号封装成确认回包发送;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥富煌君达高科信息技术有限公司,未经合肥富煌君达高科信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110304104.1/2.html,转载请声明来源钻瓜专利网。