CN110784289B - 一种数据重传方法以及数据重传装置 - Google Patents
一种数据重传方法以及数据重传装置 Download PDFInfo
- Publication number
- CN110784289B CN110784289B CN201911074339.5A CN201911074339A CN110784289B CN 110784289 B CN110784289 B CN 110784289B CN 201911074339 A CN201911074339 A CN 201911074339A CN 110784289 B CN110784289 B CN 110784289B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- data retransmission
- sending end
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signaling, i.e. of overhead other than pilot signals
- H04L5/0055—Physical resource allocation for ACK/NACK
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Communication Control (AREA)
Abstract
本公开涉及一种总线互联中当出现错误时,使用ACK/NAK协议进行数据重传的机制,包括:1)发送端和接收端对每个报文维护一个共同的序列号来进行报文的同步;2)发送端设置一个发送缓存,当接收端接收的报文有错误时,可从缓存中获取错误的报文,并重传接收错误的报文以及其后面所有的报文;3)发送端根据自身缓存使用情况主动向接收端询问ack的报文序列号;4)发送端根据接收端的ack报文序列号更新读指针,发送端根据接收上游总线的报文更新写指针;5)当发送端缓存满时不再接收上游发送的报文;6)当缓存满超过预设时间,则认为链路出错,可重新进行链路训练。
Description
技术领域
本公开属于集成电路相关的信息安全领域,应用于数据安全存储、数据加密及解密,提供了一种应用于芯片存储数据安全的保护机制。
背景技术
在现有技术中,ACK/NAK机制是一种滑动窗口协议,在可靠的总线互联中,当发送端收到否认字符(Negative Acknowledgment,NAK)信息后,需要重传NAK的报文。在低速总线中,发送端发送一笔数据可以等接收端返回确认字符(Acknowledgment,ACK)之后再发送下一笔数据,这种ACK/NAK机制简单有效,但是带宽利用率较低,只适用于低速总线。发送端将会在收到NAK后,重新发送否认字符序列号(NAK sequence number)之后所有的报文。但是如果发送端能够重发NAK sequence number之后所有报文的前提是NAK sequencenumber之后的报文还在发送端的窗口缓存中,发送端缓存中NAK sequence number的报文被新的报文覆盖掉了,那么发送端收到NAK将不能进行数据重传,这可能造成系统死机。
发明内容
[用于解决技术课题的技术方案]
一种数据重传方法,用于在发送端和接收端之间重传数据,发送端根据自身缓存的使用情况主动向接收端发送确认字符序列号(Acknowledgment_sequence,ack_seq)消息询问正确接收的报文序列号;发送端根据接收端发送的ack消息中的正确接收的报文序列号更新缓存中读取数据的位置。
也可以是,接收端仅在接收到发送端发送的ack_seq的情况下,向发送端发送ack消息。
也可以是,发送端根据接收端发送的ack中的正确接收的报文序列号更新发送端的缓存中读取数据位置的读指针。
也可以是,发送端根据缓存空闲的状态,判断是否接收上游报文。
也可以是,发送端在判断为接收上游报文时,接收的上游的报文并更新缓存中数据写入位置的写指针。
也可以是,设从发送端向接收端发送信息的时间为t1、从接收端向发送端响应该信息的时间为t2,计算上游在t1+t2时间内能发送多少个报文到发送端缓存,并计算发送端缓存的剩余空间,判断在t1+t2时间内上游能够发送写满缓存的报文个数时,则判断为缓存将满,在发送端判断为缓存将满时,向接收端发送ack_seq消息询问正确接收的报文序列号。
也可以是,利用上游的带宽计算上游在t1+t2时间内向发送端发送报文的个数。
也可以是,在发送端判断为缓存将满时,停止上游对发送端的数据写入。
也可以是,发送端根据写指针与读指针的位置,计算缓存的剩余空间。
也可以是,发送端设置超时机制,当缓存满超过预设时间,则判断为链路出错,进行链路的重置。
一种数据重传装置,该数据重传装置设置在发送端,发送端从上游接收数据,并且从发送端向接收端发送数据,该数据重传装置根据发送端缓存的使用情况主动向接收端发送ack_seq消息询问正确接收的报文序列号;该数据重传装置根据接收端发送的ack消息中的的正确的接收报文序列号更新缓存中读取数据的位置。
也可以是,接收端仅在接收到数据重传装置发送的ack_seq的情况下,向该数据重传装置发送ack消息。
也可以是,该数据重传装置根据接收端发送的ack中的正确接收的报文序列号更新发送端的缓存中读取数据位置的读指针。
也可以是,该数据重传装置根据发送端缓存空闲的状态,判断是否接收的上游的报文更新缓存中数据写入位置的写指针。
也可以是,该数据重传装置判断为接收上游报文时,接收的上游的报文并更新缓存中数据写入位置的写指针。
也可以是,设从该数据重传装置向接收端发送信息的时间为t1、从接收端向数据重传装置响应该信息的时间为t2,计算上游在t1+t2时间内能发送多少个报文到发送端的缓存,并计算出缓存的剩余空间,该数据重传装置判断当在t1+t2时间内上游能够发送写满缓存的报文个数时,则该数据重传装置判断为缓存将满,在该数据重传装置判断为缓存将满时,向接收端询问正确接收的报文序列号。
也可以是,利用上游的带宽计算上游在t1+t2时间内向该数据重传装置发送报文的个数。
也可以是,在该数据重传装置判断为缓存将满时,该数据重传装置停止向缓存写入来自上游的数据。
也可以是,该数据重传装置根据写指针与读指针的位置,计算缓存的剩余空间。
也可以是,该数据重传装置设置超时机制,当缓存满超过预设时间,则判断为链路出错,进行链路的重置。
[发明效果]
本公开提供的方案,通过从接收端接收的ACK或NAK sequence number来更新读指针,从而保证从缓存(buffer)中释放掉的报文都已经被接收端正确接收。当发送端缓存满时,不再接收上游数据,所以当发送端接收到NAK时,NAK的报文不会被新的报文覆盖掉,从而发送端可以重新发送NAK的报文。发送端只有在接收端正确接收时才会发生重传,也减少了无效的重传带来的带宽压力。
附图说明
图1是示出本公开的数据传送体系的概略的说明图。
图2是将本公开的发送端到接收端数据重传流程的说明图。
图3是对本公开的发送端发送一个报文以及接收端响应时间的说明图。
图4是对本公开的由读写指针来计算缓存还剩余的空间大小的示意图。
图5是对本公开的通过读写指针计算剩余缓存大小的示意图。
图6是根据本公开的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本公开;本公开的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本公开的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本公开的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本公开方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
本公开主要提供一种使用ACK/NAK协议进行数据重传的机制。ACK/NAK机制是一种滑动窗口协议,ACK被接收端用来通知发送端数据被正确接收,NAK被接收端用来通知发送端数据的没有被正确接收。在可靠的总线互联中,当发送端收到NAK信息后,需要重传NAK的报文。在低速总线中,发送端发送一笔数据可以等接收端返回ACK之后再发送下一笔数据,例如I2C总线协议,每个字节后都会带有一个ACK/NAK标识,发送端收到ACK才会发下一笔数据,发送端收到NAK立即停止传输。这种ACK/NAK机制简单有效,但是带宽利用率较低,只适用于低速总线。在高速总线中,发送端发送数据和接收端发送ACK/NAK位为异步的,常见的策略是发送端每发送一个报文并为其加上一个编号(Sequence number),并把发出去的报文在一个窗口中缓存。接收端发送NAK或ACK时,使用sequence number通知发送端最后一个正确接收或者不正确接收报文的序列号。发送端将会在收到NAK后,重新发送NAK sequencenumber之后所有的报文。但是如果发送端能够重发NAK sequence number之后所有报文的前提是NAK sequence number之后的报文还在发送端的窗口缓存中,发送端缓存中NAKsequence number的报文被新的报文覆盖掉了,那么发送端收到NAK将不能进行数据重传,这可能造成系统死机。
传统中的使用ACK/NAK的数据重传机制的不足,传统中的使用ACK/NAK的数据重传机制的主要不足是:无法准确计算发送端所需的缓存大小,造成接收端在接收到NAK后,原始的报文被新的报文覆盖,导致无法重传NAK报文。接收端定时发送ACK和NAK导致带宽上的浪费。
为了使发送端在收到NAK后能够重传NAK sequence number后所有的报文,就需要采取一种机制来保证发送端缓存中NAK sequence number的报文不会新的报文覆盖掉。例如,在PCIE总线协议中使用的ACK/NAK机制,需要接收端在一定的窗口内发送ACK或NAK到发送端,发送端只有在收到ACK才会清除发送端的缓存,如果发送端在一定的时间内没有收到接收端的ACK或NAK,发送端将会自动进行重传。这种重传机制使数据可靠性得到有效的保证,但是在造成了带宽的浪费:首先是接收端需要定时发送ACK/NAK,其次是如果因为物理连接上的问题导致发送端没有在规定的时间内收到ACK或NAK,发送端重传也会造成带宽的浪费。
另外一种简单的实现方式是只在接收端不能正确接收数据时,才向接收端发送一个NAK,而发送端的缓存大小只要能够满足发送端发送一个报文到接收端返回该报文是NAK的这段时间(图3,t1+t2)内能够从上游接收的报文个数,就能够保证接收端在收到NAK时,NAK的报文不会被上游新来的报文覆盖掉。理论上,根据总线速率可计算出发送端发送报文的时间和接收端返回NAK的时间,但是如果因为外界因素,例如温度过高,导致总线传输速率低于理论速率,那么在就无法计算报文发送时间和NAK返回时间,发送端缓存中的NAK报文依然有可能被上游新来的报文覆盖掉。
图1是示出本公开的数据传送体系的概略的说明图。如图1所示,在该数据传送体系中具有发送端,其从上游接收数据,缓存到发送端的缓存,向接收端发送该数据。图1仅为对本公开的概要表示,而不是对本公开的限定,例如该数据传送体系可以是网络,也可以是总线连接的结构。
图2是将本公开的发送端到接收端数据重传流程的说明图。本公开涉及一种总线互联中当出现错误时,使用ACK/NAK协议进行数据重传的机制,包括:1)发送端和接收端对每个报文维护一个共同的序列号来进行报文的同步;2)发送端设置一个发送缓存(buffer),当接收端接收的报文有错误时,可从缓存中获取错误的报文,并重传接收错误的报文以及其后面所有的报文;3)发送端根据自身缓存使用情况主动向接收端询问ack的报文序列号;4)发送端根据接收端的ack报文序列号更新读指针,发送端根据接收上游总线的报文更新写指针;5)当发送端缓存满时不再接收上游发送的报文;6)发送端设置超时机制,当缓存满超过预设时间,则认为链路出错,可重新进行链路训练。该方案可适用于任何需要进行可靠的数据传输链路当中。
本公开的方案可以保证在接收端收到NAK后NAK报文依然存在于发送端的缓存,且不需要发送端自动进行重传,和接收端频繁的ACK/NAK响应,有效节省总线的带宽。本公开提供的方案主要包括:
接收端和接收端,使用sequence number,用来定位接收端非正确接收的报文,sequence number随着发送报文累加。
发送端发送ack_req报文到接收端,用来询问接收端最后正确接收的报文sequence number,接收端发送ACK sequence number用来表示接收端最后一个正确接收报文的sequence number。在接收到错误报文时,接收端发送NAK sequence number用来表示接收端最后一个正确接收报文的sequence number,且NAK sequence number+1的报文没有被正确接收。
图4是对本公开的由读写指针来计算缓存还剩余的空间大小的示意图。发送端缓存写指针在接收到上游的报文写入后更新,读指针在接收到接收端发发送的ACK或NAK后更新。如图4所示。
当上述读指针等于写指针时,缓存为满,发送端不再接收上游的报文。
图5是对本公开的通过读写指针计算剩余缓存大小的示意图。由读写指针来计算缓存还剩余的空间大小,得到缓存的剩余空间。计算图3中t1+t2时间,根据上游写发送端缓存的带宽得到上游在t1+t2时间内能发送多少个报文到发送端缓存,参见图3,t1+t2为报文在发送端和接收端之间的往返时间。当发送端缓存剩余的条目(buffer entry countleft)<=t1+t2时间内上游能够发送到缓存的报文个数时,判断缓存为接近满的状态(almost full)。
定义ack_req报文,仅当缓存达到almost full时,发送端发送ack_req报文到接收端,用来询问接收端最后正确接收的报文sequence number。
另外,每当接收端收到非正确的报文,立即返回NAK sequence number。当接收端收到的报文一直是正确的,仅当接收端在收到发送端发来的ack_req报文后,需要向发送端返回最后正确接收的ACK sequence number。
当接收端收到一个非正确的报文后,将停止sequence number的更新,认为发送端会从重新发送非正确接收的报文后所有的报文。
发送端收到接收端返回的ACK或NAK sequence number,将更新缓存的读指针。计算读指针时需要根据接收端上一次接收的ACK或NAK sequence number和当前接收的ACK或NAK sequence number之差来计算。
根据本公开提供的方案,具体实现流程如下:
1)首先需要计算buffer almost full的条件。假设设置的发送端,上游写缓存的带宽为每秒可以写m个缓存条目(buffer entry)。那么buffer almost full条件为当缓存剩余的条目(entry)个数小于等于m*(t1+t2)。
2)假设sequence number使用10位来表示,那么sequence number从0累加到1023后再从0开始计算。Sequence number位数要大于发送端缓存条目个数。发送端每发送一个报文,发送的sended_sequence number加1,接收端每接收一个报文,接收端的recieved_sequence number加1。发送报文的顺序和接收报文的顺序相同。
3)发送端缓存每接收一个上游的报文,wptr加1,当发送端在almost full之前收到接收端发送的NAK,NAK中附带最后一个正确接收的报文的recieved_sequence_number,那么发送端根据recieved_sequence_number更新的rptr。报文的地址计算方式如下:
上一次从接收端得到的ACK sequence number,记为last_ack_seq_num,,初始值为0。当前从接收端得到的ACK sequence number,记为cur_ack_seq_num。当前读指针为rptr,对应last_ack_seq_num的地址,那么要更新的读指针rptr_update=(rptr+(cur_ack_seq_num-last_ack_seq_num)%1024)%n。
也即,rptr_update=(rptr+(cur_recieved_sequence_number–last_received_sequence_number)%1024)%n
4)当buffer almost full时发送ack_req报文,ack_seq报文不参与sequencenumber的计算。接收端可能有以下两种情况:
a)接收端在收到ack_req时已经向发送端发送了一个NAK,,那么接收端在收到ack_req时不再向接收端发送ACK或NAK。
b)接收端收到ack_req后判断它正确接收的最后一个sequence number,并向发送端发送ack,ACK中附带最后一个正确接收的recieved_sequence_number,那么发送端根据recieved_sequence_number更新读指针(rptr),更新方法参照3)中的公式。
5)发送端根据3)的计算方式计算得到缓存的读指针。
6)如果发送端在缓存满时仍然未收到接收端的ACK或NAK,那么发送端停止接收上游的报文。当缓存满的时间超过一个预先设置的超时时间,则认为当前链路存在问题导致应该信号无法正常返回,此时发送中断,可申请软件介入,重新进行链路训练。
本公开通过设置buffer almost full窗口大小,确保在缓存满(buffer full)之前能够释放缓存,有效利用缓存空间。并且,发送端主动向接收端询问ACKsequencenumber,并根据ACKsequence更新读指针,确保在发生重传时能够从缓存得到需要重传的报文。
为解决上述技术问题,本公开实施例还提供一种电子设备。下面参考图6,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的终端设备可以是上述系统中的各种终端设备。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,用于控制电子设备的整体操作。处理装置可以包括一个或多个处理器来执行指令,以完成上述的方法的全部或部分步骤。此外,处理装置601还可以包括一个或多个模块,用于处理和其他装置之间的交互。
存储装置602用于存储各种类型的数据,存储装置602可以是包括各种类型的计算机可读存储介质或者它们的组合,例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
传感器装置603,用于感受规定的被测量的信息并按照一定的规律转换成可用输出信号,可以包括一个或多个传感器。例如,其可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器等,用于检测电子设备的打开/关闭状态、相对定位、加速/减速、温度、湿度和光线等的变化。
处理装置601、存储装置602以及传感器装置603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
多媒体装置606可以包括触摸屏、触摸板、键盘、鼠标、摄像头、麦克风等的输入装置用以接收来自用户的输入信号,在各种输入装置可以与上述传感器装置603的各种传感器配合完成例如手势操作输入、图像识别输入、距离检测输入等;多媒体装置606还可以包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置。
电源装置607,用于为电子设备中的各种装置提供电力,可以包括电源管理系统、一个或多个电源及为其他装置分配电力的组件。
通信装置608,可以允许电子设备600与其他设备进行无线或有线通信以交换数据。
上述各项装置也均可以连接至I/O接口605以实现电子设备600的应用。
虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装。在该计算机程序被处理装置执行时,执行本公开实施例的方法中限定的上述功能。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。
要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
根据本公开的一个或多个实施例,提供了一种数据重传方法,用于在发送端和接收端之间重传数据,该数据重传方法的特征在于,
发送端根据自身缓存的使用情况主动向接收端发送ack_seq消息询问正确接收的报文序列号;
发送端根据接收端发送的ack消息中的正确接收的报文序列号更新缓存中读取数据的位置。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,接收端仅在接收到发送端发送的ack_seq的情况下,向发送端发送ack消息。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,发送端根据接收端发送的ack中的正确接收的报文序列号更新发送端的缓存中读取数据位置的读指针。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,发送端根据缓存空闲的状态,判断是否接收上游报文。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,发送端在判断为接收上游报文时,接收的上游的报文并更新缓存中数据写入位置的写指针。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,设从发送端向接收端发送信息的时间为t1、从接收端向发送端响应该信息的时间为t2,计算上游在t1+t2时间内能发送多少个报文到发送端缓存,并计算发送端缓存的剩余空间,判断在t1+t2时间内上游能够发送写满缓存的报文个数时,则判断为缓存将满,在发送端判断为缓存将满时,向接收端发送ack_seq消息询问正确接收的报文序列号。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,利用上游的带宽计算上游在t1+t2时间内向发送端发送报文的个数。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,在发送端判断为缓存将满时,停止上游对发送端的数据写入。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,发送端根据写指针与读指针的位置,计算缓存的剩余空间。
根据本公开的一个或多个实施例,提供了一种数据重传方法,其特征在于,发送端设置超时机制,当缓存满超过预设时间,则判断为链路出错,进行链路的重置。
根据本公开的一个或多个实施例,提供了一种数据重传装置,该数据重传装置设置在发送端,发送端从上游接收数据,并且从发送端向接收端发送数据,其特征在于,该数据重传装置根据发送端缓存的使用情况主动向接收端发送ack_seq消息询问正确接收的报文序列号;该数据重传装置根据接收端发送的ack消息中的的正确的接收报文序列号更新缓存中读取数据的位置。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,接收端仅在接收到数据重传装置发送的ack_seq的情况下,向该数据重传装置发送ack消息。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,该数据重传装置根据接收端发送的ack中的正确接收的报文序列号更新发送端的缓存中读取数据位置的读指针。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,该数据重传装置根据发送端缓存空闲的状态,判断是否接收的上游的报文更新缓存中数据写入位置的写指针。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,该数据重传装置判断为接收上游报文时,接收的上游的报文并更新缓存中数据写入位置的写指针。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,设从该数据重传装置向接收端发送信息的时间为t1、从接收端向数据重传装置响应该信息的时间为t2,计算上游在t1+t2时间内能发送多少个报文到发送端的缓存,并计算出缓存的剩余空间,该数据重传装置判断当在t1+t2时间内上游能够发送写满缓存的报文个数时,则该数据重传装置判断为缓存将满,在该数据重传装置判断为缓存将满时,向接收端询问正确接收的报文序列号。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,利用上游的带宽计算上游在t1+t2时间内向该数据重传装置发送报文的个数。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,在该数据重传装置判断为缓存将满时,该数据重传装置停止向缓存写入来自上游的数据。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,该数据重传装置根据写指针与读指针的位置,计算缓存的剩余空间。
根据本公开的一个或多个实施例,提供了一种数据重传装置,其特征在于,该数据重传装置设置超时机制,当缓存满超过预设时间,则判断为链路出错,进行链路的重置。
根据本公开的一个或多个实施例,提供了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上述任一项所述的方法。
根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (15)
1.一种数据重传方法,用于在发送端和接收端之间重传数据,该数据重传方法的特征在于,包括以下步骤:
所述发送端根据自身缓存的使用情况主动向接收端发送ack_seq消息询问正确接收的报文序列号;
所述发送端根据所述接收端发送的ack消息中的正确接收的报文序列号更新缓存中读取数据的位置,
所述发送端根据所述接收端发送的ack消息中的正确接收的报文序列号更新所述发送端的缓存中读取数据位置的读指针,
设从所述发送端向所述接收端发送信息的时间为t1、从所述接收端向所述发送端响应该信息的时间为t2,
计算上游在t1+t2时间内能发送多少个报文到所述发送端缓存,并计算所述发送端缓存的剩余空间,
判断在t1+t2时间内上游能够发送写满缓存的报文个数时,则判断为缓存将满,
在所述发送端判断为缓存将满时,向所述接收端发送ack_seq消息询问正确接收的报文序列号。
2.如权利要求1所述的数据重传的方法,其特征在于,
所述接收端仅在接收到所述发送端发送的所述ack_seq消息的情况下,向所述发送端发送ack消息。
3.如权利要求1所述的数据重传的方法,其特征在于,
利用上游的带宽计算上游在t1+t2时间内向所述发送端发送报文的个数。
4.如权利要求1所述的数据重传的方法,其特征在于,
在所述发送端判断为缓存将满时,停止上游对所述发送端的数据写入;否则,允许上游对所述发送端的数据写入,并更新缓存中数据写入位置的写指针。
5.如权利要求1所述的数据重传的方法,其特征在于,
所述发送端根据写指针与读指针的位置,计算缓存的剩余空间。
6.如权利要求1所述的数据重传的方法,其特征在于,
所述发送端设置超时机制,当缓存满超过预设时间,则判断为链路出错,进行链路的重置。
7.一种数据重传系统,在发送端和接收端之间重传数据,该数据重传系统的特征在于,
所述发送端根据自身缓存的使用情况主动向接收端发送ack_seq消息询问正确接收的报文序列号;
所述发送端根据所述接收端发送的ack消息中的正确接收的报文序列号更新缓存中读取数据的位置,
所述发送端根据所述接收端发送的ack消息中的正确接收的报文序列号更新所述发送端的缓存中读取数据位置的读指针,
设从所述发送端向所述接收端发送信息的时间为t1、从所述接收端向所述发送端响应该信息的时间为t2,
计算上游在t1+t2时间内能发送多少个报文到所述发送端缓存,并计算所述发送端缓存的剩余空间,
判断在t1+t2时间内上游能够发送写满缓存的报文个数时,则判断为缓存将满,
在所述发送端判断为缓存将满时,向所述接收端发送ack_seq消息询问正确接收的报文序列号。
8.一种数据重传装置,该数据重传装置设置在发送端,所述发送端从上游接收数据,并且从所述发送端向接收端发送数据,其特征在于,
该数据重传装置根据所述发送端缓存的使用情况主动向所述接收端发送ack_seq消息询问正确接收的报文序列号;
该数据重传装置根据所述接收端发送的ack消息中的正确的接收报文序列号更新缓存中读取数据的位置,
该数据重传装置根据所述接收端发送的所述ack中的正确接收的报文序列号更新所述发送端的缓存中读取数据位置的读指针,
设从该数据重传装置向所述接收端发送信息的时间为t1、从所述接收端向数据重传装置响应该信息的时间为t2,
计算上游在t1+t2时间内能发送多少个报文到所述发送端的缓存,并计算出缓存的剩余空间,
该数据重传装置判断当在t1+t2时间内上游能够发送写满缓存的报文个数时,则该数据重传装置判断为缓存将满,
在该数据重传装置判断为缓存将满时,向所述接收端询问正确接收的报文序列号。
9.如权利要求8所述的数据重传装置,其特征在于,
所述接收端仅在接收到数据重传装置发送的ack_seq的情况下,向该数据重传装置发送ack消息。
10.如权利要求8所述的数据重传装置,其特征在于,
利用上游的带宽计算上游在t1+t2时间内向该数据重传装置发送报文的个数。
11.如权利要求8所述的数据重传装置,其特征在于,
在该数据重传装置判断为缓存将满时,该数据重传装置停止向缓存写入来自上游的数据;否则,允许上游对所述发送端的数据写入,并更新缓存中数据写入位置的写指针。
12.如权利要求8所述的数据重传装置,其特征在于,
该数据重传装置根据写指针与读指针的位置,计算缓存的剩余空间。
13.如权利要求8所述的数据重传装置,其特征在于,
该数据重传装置设置超时机制,当缓存满超过预设时间,则判断为链路出错,进行链路的重置。
14.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911074339.5A CN110784289B (zh) | 2019-10-31 | 2019-10-31 | 一种数据重传方法以及数据重传装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911074339.5A CN110784289B (zh) | 2019-10-31 | 2019-10-31 | 一种数据重传方法以及数据重传装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110784289A CN110784289A (zh) | 2020-02-11 |
CN110784289B true CN110784289B (zh) | 2022-04-05 |
Family
ID=69389469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911074339.5A Active CN110784289B (zh) | 2019-10-31 | 2019-10-31 | 一种数据重传方法以及数据重传装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110784289B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112040502B (zh) * | 2020-08-31 | 2024-02-23 | 广东电网有限责任公司广州供电局 | 一种pdc测试数据传输方法及装置 |
CN112583529B (zh) * | 2020-12-18 | 2023-10-31 | 脸萌有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN113286000A (zh) * | 2021-05-21 | 2021-08-20 | 国网河北省电力有限公司 | 应用在电力单向传输系统中的数据收发方法及装置 |
CN115914426B (zh) * | 2021-09-30 | 2024-07-12 | 龙芯中科技术股份有限公司 | 数据传输方法、装置、设备及存储介质 |
CN115580587B (zh) * | 2022-12-06 | 2023-03-14 | 北京云脉芯联科技有限公司 | 报文信息处理方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741526A (zh) * | 2008-11-27 | 2010-06-16 | 中兴通讯股份有限公司 | 一种发送混合自动重传请求反馈信息的方法和装置 |
CN105721950A (zh) * | 2016-03-30 | 2016-06-29 | 浙江宇视科技有限公司 | 一种可靠媒体流传输装置 |
CN106059718A (zh) * | 2016-05-05 | 2016-10-26 | 浙江宇视科技有限公司 | 一种数据重传方法及装置 |
CN106982176A (zh) * | 2017-03-22 | 2017-07-25 | 北京东土军悦科技有限公司 | 一种数据传输方法及设备 |
CN109743143A (zh) * | 2018-11-16 | 2019-05-10 | 深圳证券交易所 | 数据的重传方法、装置和计算机可读存储介质 |
-
2019
- 2019-10-31 CN CN201911074339.5A patent/CN110784289B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741526A (zh) * | 2008-11-27 | 2010-06-16 | 中兴通讯股份有限公司 | 一种发送混合自动重传请求反馈信息的方法和装置 |
CN105721950A (zh) * | 2016-03-30 | 2016-06-29 | 浙江宇视科技有限公司 | 一种可靠媒体流传输装置 |
CN106059718A (zh) * | 2016-05-05 | 2016-10-26 | 浙江宇视科技有限公司 | 一种数据重传方法及装置 |
CN106982176A (zh) * | 2017-03-22 | 2017-07-25 | 北京东土军悦科技有限公司 | 一种数据传输方法及设备 |
CN109743143A (zh) * | 2018-11-16 | 2019-05-10 | 深圳证券交易所 | 数据的重传方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110784289A (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110784289B (zh) | 一种数据重传方法以及数据重传装置 | |
US6449631B1 (en) | Method and apparatus for transmitting data in a network wherein acknowledgment signals are transmitted to acknowledge receipt of data | |
JP4985565B2 (ja) | 送受信回路、受信回路及び送受信回路の制御方法 | |
US10671558B1 (en) | Distributed time synchronization protocol for an asynchronous communication system | |
US8700866B2 (en) | Data transfer apparatus, data transfer device, and data transfer method in a data transfer device | |
JPS604624B2 (ja) | 正しくない情報フレ−ムを再送するシステム | |
WO2022227895A1 (zh) | 数据传输方法、装置、终端设备及计算机可读存储介质 | |
CN113067750B (zh) | 带宽测量方法、设备及电子设备 | |
US10812251B2 (en) | Distributed time synchronization protocol for an asynchronous communication system | |
JP6287451B2 (ja) | データ受信装置、データ受信装置の制御方法及びデータ送信装置とデータ受信装置とを有するデータ送受信システム | |
JP3709289B2 (ja) | データ再送を実行するデータ送受信装置及び並列プロセッサシステム | |
JP2001142845A5 (zh) | ||
WO2021057068A1 (zh) | Rdma数据流控方法、系统、电子设备及可读存储介质 | |
EP2075943B1 (en) | Methods and systems for error detection of data transmission | |
US8522104B2 (en) | Smart aging retry buffer | |
KR100261149B1 (ko) | 피씨아이(pci) 이더넷(ethernet) 제어장치 및 제어방법 | |
WO2020250778A1 (ja) | 通信装置および通信方法、並びにプログラム | |
JP2014230072A (ja) | データ通信デバイス、データ通信装置及びデータ通信方法 | |
KR102126671B1 (ko) | 히스토리 큐를 이용한 통신 에러 복구 장치 및 그 방법 | |
JP6273664B2 (ja) | データ送信装置、およびデータ送信方法 | |
JPH0234501B2 (zh) | ||
CN104102604A (zh) | 一种业务处理装置 | |
CN117785762A (zh) | 一种信息存储方法、装置、设备和存储介质 | |
CN111416802B (zh) | 基于tcp的数据处理方法、装置、电子设备和可读介质 | |
CN101446887A (zh) | 一种原语处理方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 300450 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8 Applicant after: Haiguang Information Technology Co., Ltd Address before: 300450 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone Haitai West Road 18 North 2-204 Industrial Incubation-3-8 Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |