本发明属于雷达数据传输,具体提供一种雷达数据可靠传输方法。
背景技术:
1、目前雷达数据传输通常是使用tcp协议或udp协议进行传输,tcp协议的传输速度较慢,不适用于实时性强的场景;而udp协议的传输可靠性较差,经常会发生数据丢包的现象。比如公开号为cn116074252a的专利文献中提出的一种udp数据传输方法、udp数据传输装置、存储介质及电子设备,其中,接收端从第二缓存区每读取m包数据向发送端发送一次丢包信息;但该方法没有对网络状况进行预测,在网络发生拥塞时会出现丢包过多的现象。又比如公开号为cn115695577a的专利文献中提出的一种udp数据传输的方法及其相关设备,该方法在udp数据包上封装一层tcp包头,将udp数据包进行封装后得到tcp数据包,然后利用建立好的tcp通道传输该tcp数据包;但该方法在出现丢包时无法进行数据重传,无法保证数据完整性。再比如公开号为cn116073957a的专利文献中提出的一种基于udp的可靠一对多数据传输方法,该方法中建立状态位图sbmp,由状态位图sbmp判断数据块是否发送完成;但该方法未考虑数据传输时的接收端接受能力和网络状态,会影响数据传输速度。
技术实现思路
1、本发明的目的在于提供一种雷达数据可靠传输方法,用以减少雷达数据传输过程中的传输等待时延,并在出现丢包现象时执行丢包重传功能。本发明在雷达数据帧数据可靠的基础上,降低雷达数据帧的传输时延,减少了传输过程中小包积累机制和延迟ack机制对传输等待时延的影响,缩短了数据传输时间。
2、为实现上述目的,本发明采用的技术方案为:
3、一种雷达数据可靠传输方法,包括:数据发送与数据接收,具体步骤如下:
4、步骤a.数据发送;
5、步骤a1.应用层交付数据进入数据分包模块,执行数据分包功能,并对每一个数据包增加可靠协议包头,然后根据远端窗口值判断是否放入发送队列,最后在发送队列中执行数据发送;
6、步骤a2.开启发送端网络监听线程,监听网络中接收到的报文包,根据可靠协议包头对报文包进行解析,判断报文包类型;
7、若报文包类型是ack报文包,则根据报文包信息更新ack队列,并在ack队列更新后更新发送队列,将已经确认的发送数据包移出snd_una链表;并根据ack报文包确认执行快速重传功能;
8、若报文包类型是窗口回复报文包,则根据收到的信息更新接收方窗口值;
9、步骤a3.开启发送端超时重传线程,发送队列中每发送一个数据包则开启一个定时器,定时器时间设置为rto,若在rto内未接收到此数据包的ack报文包,则执行超时重传功能,并将此数据包的rto参数更新为1.5倍;若在rto内接收到此数据包的ack报文包,则删除定时器,将此数据包从发送队列中移除;
10、步骤a4.每接收到一个ack报文包则执行拥塞控制功能;
11、步骤b.数据接收;
12、步骤b1.开启接收端网络监听线程,监听网络中接收到的报文包;根据可靠协议包头中的cmd参数对报文包进行解析,判断报文包类型;
13、若报文包类型是data报文包,则将接收到的数据包放入接收队列,进行数据合包功能,并且回复ack报文包;
14、若报文包类型是窗口探测报文包,则回复窗口回复报文包;
15、步骤b2.接收队列中接收到数据后,进行数据合包功能。
16、进一步的,步骤a1的数据分包模块中,首先计算数据块的字节数及分包数,然后进行倒序分包,并放入等待发送链表中;根据远端窗口值判断接收方窗口是否可用,当接收方窗口值大于等于发送需求时,判定接收方窗口可用,将数据块放入发送队列中,并执行发送,否则,执行等待。
17、进一步的,步骤a1中可靠协议包头包括:identi参数、cmd参数、frg参数、wnd参数、una参数、sn参数、ts参数、len参数;其中,identi参数代表本数据包为rudp专用数据包,当发送方与接收方的identi参数相等时数据包后续处理有效;cmd参数代表本数据包的类型,依次为:data数据包、ack数据包、窗口探测报文包、窗口回复报文包;frg参数代表分片包序号,wnd代表接收方窗口值,una代表待接收包序号,sn代表本数据包序号,ts代表本数据包时间戳,len参数代表本数据包长度;data段代表data数据。
18、进一步的,步骤a2中快速重传具体为:收到一个ack报文包后,为所有未接收ack的数据包的fastack参数加1,并遍历整个发送队列,对所有fastack参数等于3的未接收ack的数据包执行重传功能。
19、进一步的,步骤a3中,rto根据接收到的ack报文包计算得到的rtt参数进行更新,更新方法为:
20、采样rtt的时间并进行加权平均,计算得到平滑rtt值;根据每次接收到ack报文包的ts时间戳计算得到的往返时间rttn,再计算得到的平滑往返时间srttn与平滑方差devrttn;
21、第一次计算时,rto1更新如下:
22、srtt1=rtt1
23、devrtt1=rtt1/2
24、rto1=μ×srtt1+δ×devrtt1
25、根据新接收ack数据包时间戳得到最新rttn,后续计算rton为:
26、srttn=srttn-1+α×(rttn-srttn-1)
27、devrttn=(1-β)×devrttn-1+β×(|rttn-srttn|)
28、rton=μ×srttn+δ×devrttn
29、其中,α=0.125,β=0.25,μ=1,δ=4;rttn、srttn、devrttn分别表示第n个更新时刻的往返时间、平滑往返时间、平滑方差。
30、进一步的,步骤a4中拥塞控制功能为:
31、第n个更新时刻的拥塞窗口值记为cwndn,对应慢启动门限记为ssthreshn,发送方相邻两次接收到ack报文包期间接收方接收到的报文包数量记为ackcountn;
32、传输开始时启用慢启动模式,cwndn更新为:
33、cwndn=cwndn-1+ackcountn
34、当拥塞窗口值大于慢启动门限时,启用拥塞避免增长模式,cwndn更新为:
35、cwndn=cwndn-1+ackcountn/cwndn-1
36、当发生数据包重传时,启用拥塞发生算法:
37、当发生超时重传时,ssthreshn和cwndn更新为:
38、ssthreshn=cwndn-1/2
39、cwndn=1
40、当发生快速重传时,ssthreshn和cwndn更新为:
41、cwndn=cwndn-1/2
42、ssthreshn=cwndn
43、cwndn+1=ssthreshn+3。
44、基于上述技术方案,本发明的有益效果在于:
45、本发明提供一种雷达数据可靠传输方法,采用以太网中的udp协议,在此基础上设计了可靠协议包头以及分包功能,并结合多种重传机制、流量控制以及拥塞控制,使得发送端能发现丢包现象,并且传输效率高,保证了数据包的可靠性和传输的实时性;综上,本发明能够保证雷达数据帧的可靠性基础上降低总传输时间。