CN106656431B - 一种报文传输方法及用户设备 - Google Patents
一种报文传输方法及用户设备 Download PDFInfo
- Publication number
- CN106656431B CN106656431B CN201510605226.9A CN201510605226A CN106656431B CN 106656431 B CN106656431 B CN 106656431B CN 201510605226 A CN201510605226 A CN 201510605226A CN 106656431 B CN106656431 B CN 106656431B
- Authority
- CN
- China
- Prior art keywords
- message
- sending
- packet
- retransmission
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 92
- 230000005540 biological transmission Effects 0.000 title claims abstract description 58
- 238000012790 confirmation Methods 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims description 44
- 238000004891 communication Methods 0.000 claims description 36
- 230000006854 communication Effects 0.000 claims description 36
- 238000011217 control strategy Methods 0.000 claims description 23
- 230000006870 function Effects 0.000 description 17
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 238000001514 detection method Methods 0.000 description 12
- 238000013459 approach Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000011084 recovery Methods 0.000 description 10
- 102100036409 Activated CDC42 kinase 1 Human genes 0.000 description 9
- 101000928956 Homo sapiens Activated CDC42 kinase 1 Proteins 0.000 description 9
- 230000001960 triggered effect Effects 0.000 description 8
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/188—Time-out mechanisms
-
- 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/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- 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
- H04L1/1628—List acknowledgements, i.e. the acknowledgement message consisting of a list of identifiers, e.g. of sequence numbers
-
- 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/18—Automatic repetition systems, e.g. Van Duuren systems
-
- 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1809—Selective-repeat protocols
-
- 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/1874—Buffer management
-
- 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/1887—Scheduling and prioritising arrangements
-
- 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/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1867—Arrangements specially adapted for the transmitter end
- H04L1/189—Transmission or retransmission of more than one copy of a message
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/54—Loss aware scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Mobile Radio Communication Systems (AREA)
- Communication Control (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种报文传输方法及用户设备,其中该方法包括:发送节点通过向接收节点传输多个报文,接收来自接收节点的多个确认报文,并基于接收到的多个确认报文确定第一报文丢失后,重传第一报文;若检测到重传报文丢包,则在预定的时间间隔内,发送节点连续向接收节点重传所述第一报文至少两次。本发明方案能够使得重传报文发生丢包后被及时检测和恢复,减少超时重传的次数,提高了传输速率,同时,降低了重传报文的丢包概率,进而减少了超时重传的概率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种报文传输方法及用户设备。
背景技术
在计算机网络通信中,丢包恢复算法扮演着至关重要的角色,它是TCP(Transmission Control Protocol)协议栈中保证数据传输可靠性的重要算法,是数据包丢失的情况下给出的一种容错机制,也直接影响着数据传输的效率以及网络带宽的利用率。RFC2581对典型的丢包恢复算法进行了定义和描述,主要包括超时重传和快速重传。超时重传是TCP协议保证数据可靠性的一个重要机制,其原理是发送节点在发送一个报文后就开启一个超时计时器,如果超时计时器的计时时间到,发送节点仍没有接收到表征该报文已被正确接收的确认报文(Acknowledgement,简称ACK),就重新发送该报文,其中,重新发送的报文通常也称为重传报文。快速重传是对超时重传的优化机制,如果发送端接收到N个(一般情况下,N等于3)以上的重复ACK,就判定有报文丢失,于是立即重传丢失的报文。快速重传机制不需要等到重传定时器超时就进行报文重传,大大提高了数据传输的效率。
在TCP传输中避免不必要的超时重传一直是学术界和工业界的研究热点。然而,在当前大部分TCP协议栈中,都没有重传报文丢包的检测机制,如果重传报文丢失,必然会导致超时重传,进而极大的降低了TCP连接的传输效率。
当前,关注重传报文丢包检测与恢复的算法主要有DAC(DuplicateAcknowledgement Counting)和SACK+(Selective Acknowledgment Plus)算法。DAC算法和SACK+算法都是TCP单边加速算法,只需要部署在发送端,它们的基本思想也非常类似。
DAC算法的主要原理如下:在重传报文时,发送端估算此时正在网络中传输的报文数量n,并统计重传报文之后收到的重复ACK个数,其中,已发送且未被接收端确认同时也未被发送端判定为丢失的报文被定义为正在网络中传输的报文;如果积累确认在收到多于n个ACK之后仍然没有更新,则判定本次重传的报文丢失,立即再次重传该报文而不必等待超时重传。
如图1所示,假设在一个发送窗口内,序列号为3的报文丢失。如图1中步骤101所示,发送端在收到3个重复ACK之后,启动快速重传,重传序列号为3的报文,同时使用DAC算法估算正在网络中传输的报文数量。一种可行的估算方法如下(注意,估算方法不仅仅限于此方法):发送端已知已发送报文的最大序列号是8,收到的积累确认序列号是2,收到3个重复确认,判定1个报文丢失,估算出正在网络中传输的报文数量等于8-2-3-1=2个。然后,如图1中步骤102所示,发送端在重传之后对收到的重复ACK计数。当发送端收到重传之后的第3个重复ACK时,积累确认的序列号依然是2,没有更新,发送端判定重传报文丢失。最后,如图1中步骤103所示,发送端不需要等到重传定时器超时,立即再次重传序列号为3的报文,避免进入超时重传。
SACK+算法的原理与DAC算法类似,主要区别在于SACK算法通过确认报文中的SACK选项携带的选择确认信息来判断重传报文是否丢失。
然而,通过测试发现,无论是采用DAC算法,还是SACK+算法,有很大的概率不能及时检测重传报文丢包,从而使得重传报文丢失后不能被发送端及时检测和恢复,最终导致超时重传,而在高丢包率场景下,频繁超时重传会导致传输时延的增大以及传输速率的急剧下降。
发明内容
本发明实施例提供一种报文传输方法、发送装置及通信系统,用于减少报文超时重传的概率,降低报文传输时延,提高报文传输速率。
为达到上述发明目的,一方面,本发明实施例提供了一种报文传输方法,该方法包括:发送节点通过与接收节点之间的通信链路向该接收节点传输多个报文;发送节点在确定该多个报文中的第一报文丢失之后,重传该第一报文;基于重传第一报文之后接收到的确认报文确定重传报文丢失后,再次重传第一报文,并在第一时间间隔内,发送第一报文至少一次。
在第一方面的第一种可能的实现方式中,该方法还包括:接收来自接收节点的一个或多个确认报文,并根据所述一个或多个确认报文携带的ack字段或者扩展字段,确定第一报文丢失。
结合第一方面,或者第一方面第一种可能的实现方式,在第二种可能的实现方式中,该方法还包括:发送节点在所述第一时间间隔内,发送第二报文;其中,该第二报文为发送节点未发送过的报文。
第二方面,本发明实施例提供了一种报文传输方法,包括:发送节点通过与接收节点之间的通信链路向该接收节点传输多个报文;发送节点在确定该多个报文中的第一报文丢失之后,重传所述第一报文,并基于重传第一报文之后接收到的确认报文确定重传报文丢失之后,再次重传第一报文,并判断发送缓存是否为空;如果发送缓存非空,则发送节点在第一时间间隔内发送该发送缓存中的至少一个报文;其中,发送缓存中的报文为发送节点未发送过的报文。
在第二方面的第一种可能的实现方式中,该方法还包括:如果所述发送缓存为空,则发送节点在所述第一时间间隔内发送所述第一报文至少一次。
结合第二方面,或者第二方面第一种可能的实现方式,在第二种可能的实现方式中,发送节点基于重传所述第一报文之后接收到的确认报文确定重传报文丢失,包括:发送节点根据重传第一报文之后接收到的确认报文携带的ack字段或者扩展字段,判断重传报文丢失,重传报文为重传的第一报文。
第三方面,本发明实施例提供了一种报文传输方法,包括:发送节点通过与接收节点之间的通信链路向接收节点传输多个报文;发送节点确定该多个报文中的第一报文丢失后,重传所述第一报文;发送节点基于重传第一报文之后接收到的确认报文确定重传报文丢失后,再次重传第一报文,并判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;如果发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则所述发送节点在第一时间间隔内发送所述第一报文至少一次。
在第三方面的第一种可能的实现方式中,还包括:如果发送缓存非空,并且当前拥塞控制策略允许发送新的报文,则发送节点在第一时间间隔内发送该发送缓存中的至少一个报文。
在以上任一方面或任一方面的任一种可能的实现方式中,第一时间间隔大于等于零,且小于第一报文的超时计时器的周期;且发送节点在第一时间间隔内未接收到用于指示再次重传的第一报文丢失的确认报文。
在以上任一方面或任一方面的任一种可能的实现方式中,发送节点与接收节点之间的通信链路为TCP连接。
在以上任一方面或任一方面的任一种可能的实现方式中,发送缓存中的报文为发送节点未发送过的报文。
结合上述任一方面,或者任一方面的任意一种可能的实现方式,发送节点在检测到重传报文丢失后的预定时间间隔内,重传丢失的第一报文;其中,该预定时间间隔以发送节点检测出重传的第一报文丢失的时刻为起点,且该预定时间间隔大于等于零并且小于第一报文的超时计时器的周期;或者该预定时间间隔趋近于零。
第四方面,本发明实施例提供了一种用户设备,包括:无线调制解调器、处理器、天线和TCP协议栈;其中,无线调制解调器与天线连接,TCP协议栈用于在处理器的控制下,将所述用户设备上运行的应用程序的数据封装成多个报文,并发送给无线调制解调器;无线调制解调器将接收到的报文调制成模拟信号并通过天线发送给服务器;TCP协议栈还用于,在确认多个报文中的第一报文丢失之后,通过无线调制解调器及天线向服务器重传第一报文;基于重传第一报文之后接收到的确认报文确定重传报文丢失后,再次重传第一报文,并在第一时间间隔内,向服务器发送第一报文至少一次。
在第四方面的第一种可能的实现方式中,该TCP协议栈还用于,在所述第一时间间隔内,通过无线调制解调器及天线发送第二报文;其中,该第二报文为用户设备未发送过的报文。
第五方面,本发明实施例提供了一种用户设备,包括:无线调制解调器、处理器、天线和TCP协议栈;其中,无线调制解调器与天线连接,TCP协议栈用于,在处理器的控制下,将该用户设备上运行的应用程序的数据封装成多个报文,并发送给无线调制解调器;该无线调制解调器将接收到的报文调制成模拟信号并通过天线发送给服务器;该TCP协议栈还用于,在确认所述多个报文中的第一报文丢失之后,通过无线调制解调器及天线向服务器重传第一报文,基于重传第一报文之后接收到的确认报文确定重传报文丢失;再次向所述服务器重传第一报文,并判断发送缓存是否为空;如果发送缓存非空,则在第一时间间隔内向服务器发送该发送缓存中的至少一个报文。
在第五方面的第一种可能的实现方式中,该TCP协议栈还用于,在发送缓存为空的情况下,在第一时间间隔内通过无线调制解调器及天线向服务器发送第一报文至少一次。
结合第五方面,或者第五方面第一种可能的实现方式,在第二种可能的实现方式中,TCP协议栈具体用于,根据重传第一报文之后接收到的确认报文携带的ack字段或者扩展字段,判断重传报文丢失。
第六方面,本发明实施例提供了一种用户设备,包括:无线调制解调器、处理器、天线和TCP协议栈;其中,无线调制解调器与天线连接,TCP协议栈用于,在处理器的控制下,将用户设备上运行的应用程序的数据封装成多个报文,并发送给无线调制解调器;无线调制解调器用于将接收到的报文调制成模拟信号并通过天线发送给服务器;该TCP协议栈还用于,在确认该多个报文中的第一报文丢失之后,通过无线调制解调器及天线向服务器重传第一报文,基于重传第一报文之后接收到的确认报文确定重传报文丢失;再次向服务器重传第一报文,并判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;如果发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则在第一时间间隔内向服务器发送第一报文至少一次。
在第六方面的第一种可能的实现方式中,该TCP协议栈还用于,在发送缓存非空,并且当前拥塞控制策略允许发送新的数据包的情况下,在第一时间间隔内通过无线调制解调器及天线向服务器发送该发送缓存中的至少一个报文。
在第四至第六方面或第四至第六方面的任一种可能的实现方式中,第一时间间隔大于等于零,且小于第一报文的超时计时器的周期;且用户设备在第一时间间隔内未接收到用于指示再次重传的第一报文丢失的确认报文。
在第四至第六方面或第四至第六方面的任一种可能的实现方式中,发送缓存中的报文为用户设备未发送过的报文;重传报文为用户设备首次检测到第一报文丢失后,重传的第一报文。
在第四至第六方面或第四至第六方面的任一种可能的实现方式中,该TCP协议栈具体用于,在确认出该多个报文中的第一报文丢失之后的预定时间间隔内通过无线调制解调器及天线向服务器重传第一报文;其中,该预定时间间隔大于等于零并且小于第一报文的超时计时器的周期;或者该预定时间间隔趋近于零。
第七方面,本发明实施例提供了一种用户设备,包括:发送单元,用于向与用户设备通信连接的接收节点发送多个报文;接收单元,用于接收来自接收节点的多个确认报文;处理单元,用于根据接收单元接收到的多个确认报文,确定该多个报文中的第一报文丢失;触发发送单元向该接收节点重传第一报文;以及根据重传第一报文之后接收单元接收到的确认报文,确定重传报文丢失;发送单元还用于,在处理单元确定所述重传报文丢失后,在第一时间间隔内,连续发送第一报文至少两次。
在第七方面的第一种可能的实现方式中,发送单元还用于,在第一时间内,发送第二报文;其中,所述第二报文为发送单元未发送过的报文。
第八方面,本发明实施例提供了一种用户设备,包括:发送单元,用于向与用户设备通信连接的接收节点发送多个报文;接收单元,用于接收来自该接收节点的多个确认报文;处理单元,用于根据接收单元接收到的多个确认报文,确定该多个报文中的第一报文丢失;触发发送单元向该接收节点重传第一报文;以及根据重传第一报文之后接收单元接收到的确认报文,确定重传报文丢失;发送单元还用于,在处理单元确定重传报文丢失后,再次重传第一报文,并判断发送缓存是否为空;如果发送缓存非空,则在第一时间间隔内发送该发送缓存中的至少一个报文。
在第八方面的第一种可能的实现方式中,发送单元还用于,如果发送缓存为空,则在第一时间间隔内发送第一报文至少一次。
第九方面,本发明实施例提供了一种用户设备,包括:发送单元,用于向与用户设备通信连接的接收节点发送多个报文;接收单元,用于接收来自该接收节点的多个确认报文;处理单元,用于根据接收单元接收到的多个确认报文,确定该多个报文中的第一报文丢失;触发发送单元向接收节点重传第一报文;以及根据重传第一报文之后接收单元接收到的确认报文,确定重传报文丢失;发送单元还用于,在处理单元确定重传报文丢失后,再次重传第一报文,并判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;如果发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则在第一时间间隔内发送第一报文至少一次。
在第九方面的第一种可能的实现方式中,发送单元还用于,如果发送缓存非空,并且当前拥塞控制策略允许发送新的报文,则在第一时间间隔内发送该发送缓存中的至少一个报文;其中,该发送缓存中的报文为发送单元未发送过的报文。
在第八至第九方面或第八至第九方面的任一种可能的实现方式中,发送段元具体用于,在处理单元确定重传报文丢失后,在预定时间间隔内再次重传第一报文;其中,该预定时间间隔大于等于零并且小于第一报文的超时计时器的周期;或者该预定时间间隔趋近于零。
在第七至第九方面或第七至第九方面的任一种可能的实现方式中,第一时间间隔大于等于零,且小于第一报文的超时计时器的周期;且接收单元在第一时间间隔内未接收到用于指示再次重传的第一报文丢失的确认报文。
在第七至第九方面或第七至第九方面的任一种可能的实现方式中,发送缓存中的报文为发送节点未发送过的报文。
在第七至第九方面或第七至第九方面的任一种可能的实现方式中,发送单元用于在检测到重传报文丢失后的预定时间间隔内,重传丢失的第一报文;其中,该预定时间间隔大于等于零并且小于第一报文的超时计时器的周期;或者该预定时间间隔趋近于零。
第十方面,本发明实施例提供了一种报文传输方法,包括:发送节点通过与接收节点之间的通信链路向所述接收节点传输多个报文;接收来自该接收节点的多个确认报文;基于接收到的多个确认报文确定该多个报文中的第一报文丢失;向接收节点重传第一报文,并在第一时间间隔内,发送第一报文至少一次;其中,第一时间间隔大于等于零,且小于第一报文的超时计时器的周期;发送节点在第一时间间隔内未接收到用于指示重传的第一报文丢失的确认报文。
第十一方面,本发明实施例提供了一种报文传输方法,包括:发送节点通过与接收节点之间的通信链路向接收节点传输多个报文;接收来自该接收节点的多个确认报文;基于接收到的多个确认报文确定该多个报文中的第一报文丢失;向接收节点重传第一报文,并判断发送缓存是否为空;如果发送缓存非空,则发送节点在第一时间间隔内发送该发送缓存中的至少一个报文;其中,发送缓存中的报文为发送节点未发送过的报文;其中,第一时间间隔大于等于零,且小于第一报文的超时计时器的周期;发送节点在第一时间间隔内未接收到用于指示重传的第一报文丢失的确认报文。
在第十一方面的第一种可能的实现方式中,如果所述发送缓存为空,则发送节点在第一时间间隔内发送第一报文至少一次。
第十二方面,本发明实施例提供了一种报文传输方法,包括:发送节点通过与接收节点之间的通信链路向所述接收节点传输多个报文;接收来自接收节点的多个确认报文;基于接收到的多个确认报文确定该多个报文中的第一报文丢失;发送节点向接收节点重传第一报文,并判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;如果发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则发送节点在第一时间间隔内发送第一报文至少一次。
在第十至第十二方面或第十至第十二方面的任一种可能的实现方式中,第一时间间隔以再次重传第一报文的时刻为起点,并以再次重传第一报文之后接收到的第一个确认报文的时刻为终点。
在第十至第十二方面或第十至第十二方面的任一种可能的实现方式中,第一时间间隔大于等于零,且小于第一报文的超时计时器的周期;发送节点在第一时间间隔内未接收到用于指示重传的第一报文丢失的确认报文。
在第十至第十二方面或第十至第十二方面的任一种可能的实现方式中,发送节点在确定该多个报文中的第一报文丢失后,在预定时间间隔内再次重传第一报文;其中,该预定时间间隔大于等于零并且小于第一报文的超时计时器的周期;或者该预定时间间隔趋近于零。
本发明实施例还提供一种用户设备,该用户设备包括用于实现第十至第十二方面或第十至第十二方面的任一种可能的实现方式中的方法的功能单元。
本发明实施例还提供一种计算机可读存储介质,该存储介质存储程序代码,该程序代码用于执行以上任一方面或任一方面的可能的实现方式中所描述的方法步骤。
本发明实施例提供的报文传输方法及用户设备,检测到报文丢失后,快速将丢失的报文冗余发送多次,或者在重传丢失的报文之后立即发送新报文,尽可能使得发送节点在重传丢失的报文后可以持续接收到确认报文,并根据确认报文及时触发重传报文丢包检测与恢复算法,使得重传报文丢失后能被及时检测和恢复,减少超时重传的次数,提高了传输速率。另外,由于重传报文如果再次丢失,很可能触发超时重传,而在短时间内将重传报文快速重传多次,指数级降低了重传报文的丢失概率,进而减少了超时重传的概率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术丢包恢复算法示意图;
图2是本发明实施例提供的通信系统示意图;
图3是TCP报文格式示意图;
图4是现有技术中的快速重传方法原理图;
图5是本发明实施例提供的报文传输方法示意图;
图6是本发明实施例提供的另一报文传输方法示意图;
图7是本发明实施例提供的另一报文传输方法示意图;
图8是本发明实施例的一个应用场景示意图;
图9是本发明实施例提供的另一报文传输方法示意图;
图10是本发明实施例提供的TCP协议栈工作原理图;
图11是本发明实施例提供的用户设备示意图;
图12是本发明实施例提供的用户设备示意图;
图13是本发明实施例提供的用户设备示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明实施例提供的技术方案可典型地应用于丢包率较高的无线通信系统中,比如,例如:全球移动通讯系统(GSM,Global System of Mobile communication)网络,码分多址(CDMA,Code Division Multiple Access)网络,宽带码分多址(WCDMA,Wideband CodeDivision Multiple Access Wireless)网络,通用分组无线业务(GPRS,General PacketRadio Service)网络,长期演进(LTE,Long Term Evolution)网络,软件定义网络(SDN,Software Defined Network),无线传感器网络(Wireless Sensor Network)等。
图2是本发明实施例提供的一种通信系统100的简化框图,该通信系统100仅作为本发明的一种应用场景,不应理解为对本发明应用场景的限定。可以理解的是,任何基于TCP/IP协议栈的通信系统都适用于本发明实施例的提供的技术方案。需要说明的是,TCP/IP协议栈是指参照TCP/IP参考模型所定义的协议层级划分方式实现的协议栈,TCP/IP协议栈包括两个核心协议:TCP(传输控制协议)和IP(网际协议),本发明实施例主要对TCP协议实现进行了优化。可以理解的是,本发明实施例的方法同样适用于具有报文重传机制的其它可靠性传输协议。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
该通信系统100包括用户设备110、接入点10、无线接入网关12、广域网14、以及第一应用服务器20、第二应用服务器30、以及第三应用服务器40。所属领域的技术人员可以理解一个通信系统通常可包括比图2中所示的部件更少或更多的部件,或者包括与图2中所示部件不同的部件,图2仅仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。
例如,虽然图2中已经描述了三个应用服务器20、30、40,但所属领域的技术人员可理解成一个通信系统可包含任何数量的应用服务器,甚至不包含应用服务器。各应用服务器20、30、40分别包括相应的TCP协议栈21、31、41。TCP协议栈21、31、41的功能可分别由运行在各应用服务器20、30、40上的软件、硬件和/或固件的适当组合执行。该广域网14可包括公用网络、专用网络、因特网的一部分和/或其任何组合。该无线接入网关12和该接入点10可包括在一个无线网络中,出于简洁之目的,该无线网络的其它部分并未进行阐述。该接入点10还包括天线11。
该用户设备110包括处理器120、TCP协议栈130、无线调制解调器140和存储器150。该无线调制解调器140可与天线142连接。所属领域的技术人员可理解TCP协议栈130可由软件、硬件和/或固件的适当组合执行。TCP协议栈130、无线调制解调器140和天线142在处理器的控制下配合完成报文的发送和接收。此外,所属领域的技术人员可以理解用户设备可包括比图2中所示部件更少或更多的部件,图2所示的用户设备110仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。
通常用户设备110的存储器150中存储有应用程序,例如,第一应用程序121、第二应用程序123和第三应用程序125。第一应用程序121、第二应用程序123和第三应用程序125分别为第一应用程序服务器20、第二应用程序服务器30和第三应用程序服务器40的客户端侧应用程序。处理器120可以读取存储器150中的应用程序并执行,以实现特定功能。
TCP协议栈采用客户端-服务器通信模型,其中客户端请求并接受服务器提供的服务,如网页内容。例如,该第一应用程序121可以是从第一应用程序服务器20请求信息的网页浏览器。。
本发明实施例中的用户设备110,可以是移动终端(Mobile Terminal),例如手机、运动相机、笔记本电脑等便携式、穿戴式、或者车载的移动设备,也可以是计算机、服务器等设备,还可以是路由器、网关等网络设备等。用户设备110可与其它用户设备建立TCP连接,进而通过该TCP连接来收发报文。TCP报文的格式如图3所示,其中,源端口和目的端口用于确定发送端和接收端应用进程,源端口号、目的端口号、源IP地址和目的IP地址可以唯一确定一个TCP连接;TCP报文头部的序列号(Sequence Number,一般也简称为seq)字段携带报文负荷中第一个数据字节的序列号。接收节点在接收到TCP报文后,通过TCP连接发送确认(ACK)报文至发送节点。ACK报文头部的确认号(Acknowledge Number,一般也简称为ack)字段值,表征接收节点接收到的报文的"Sequence Number"字段的值,同时也意味着接收端已经接收到发送端发送所有"Sequence Number"的值小于所述ACK报文的"AcknowledgeNumber"的报文。窗口大小用于指示接收端当前接收缓冲区的大小。另外,TCP报文头部还有6个标志比特:
URG:紧急指针有效;
ACK:确认号有效;
PSH:立即上送应用层处理;
RST:异常复位;
SYN:同步标志,置1建立连接;
FIN:终止标志,请求释放连接。
用户设备110可以经有线网络或无线网络(比如Wi-Fi网络、WSN或蜂窝网络)与应用程序服务器20或者与其它用户设备建立TCP连接。与应用程序服务器20的TCP连接的建立可由软件应用程序(如浏览器或图1中的第一应用程序121)发起。具体地,用户设备110和应用程序服务器20可以通过三次握手建立TCP连接,比如可以由第一应用程序121生成套接字开启(socket open)命令,该命令被提供给用户设备110的TCP协议栈120,以触发TCP协议栈130通过三次消息交互与应用程序服务器20建立TCP连接,然后,TCP协议栈130通知上层第一应用程序121,连接已经建立。应用程序服务器20的TCP协议栈也会通知其上层应用进程,连接已经建立。接下来,用户设备110上的第一应用程序121和应用程序服务器20就可以基于建立的TCP连接进行数据传送了。所属领域的技术人员可理解该用户设备110和接入点10通过相应的天线142和天线11来接入无线业务信道。
下面通过一个具体实例来说明现有技术中的TCP丢包检测及快速重传机制,为了简化描述,本发明部分实施例中将已建立通信连接的两个设备中的一个称为发送节点,另一个称为接收节点。可以理解的是,发送节点和接收节点可以是具有数据收发能力的任何设备,比如,上述的用户设备或应用程序服务器。如图4所示,假设发送节点发出了序列号为1,2,3,4,5的5个报文,序列号为1的报文(简称报文1)最先被接收节点接收了,于是接收节点回复确认号ack=1的确认报文ACK1,如果报文2因为某些原因没有到达接收节点,而报文3到达了,于是接收节点还是回复ACK1,后面的4和5都到达了,接收节点还是回复ACK1,因为报文2还没有到达接收节点,于是发送节点收到了三个ack=1的确认报文,判断报文2丢失,于是发送节点不需要等到重传定时器超时,立即再次重传序列号为2的报文。然后,接收节点收到了2,此时因为3,4,5都收到了,于是接收节点回复确认号ack=5的确认报文ACK5。
TCP报文超时重传是导致网络带宽利用率低,传输时延增大的一个重要原因,现有的快速重传机制一定程度上减少了超时重传的概率,但如果重传报文再次丢失,而又没有被及时检测和恢复的话,必然导致超时重传。尽管现有技术,如DAC和SACK+算法能进行重传报文的丢包检测与恢复,然而发明人经反复测试研究发现,在引入重传报文丢包检测与恢复算法之后,吞吐率并没有显著提高。发明人发现,发现造成这一结果的主要原因是,现有的重传丢包检测和恢复方法在大多数情况下没有被及时触发,导致重传报文丢失后,没有被及时检测和恢复,最终导致超时重传。具体来说,现有的快速重传方案主要依赖于重传报文之后接收到的ACK报文来判断重传报文是否丢失,进而进行重传,避免进入超时重传。但是如果没有在重传报文之后无报文发送,现有的重传丢包检测和恢复方法很可能不会被触发,最终必然导致超时重传。这样,因超时导致的报文重传的概率较大,从而导致吞吐率降低。
为了解决上述问题,本发明实施例提供一种报文传输方法,在快速重传报文之后,如果检测到重传报文丢失,则将丢失的报文连续发送多次(包括但不限于2次)或者在重传丢失的报文之后立即发送新的报文。这样一方面避免了没有足够的ACK报文触发重传报文丢包检测与恢复算法,使得重传报文发生丢包后能被及时检测和恢复,减少超时重传的次数;另一方面,将丢失的报文连续重传多次,只有所有重传报文全部丢失才会触发超时重传,实际效果是指数级降低了重传报文的丢包概率,进而减少了超时重传的次数,提高了数据传输速率。如图5所示,本发明实施例提供报文传输方法,包括:
步骤501:发送节点通过与接收节点之间的通信链路向所述接收节点传输多个报文(如图5的报文1-8),并接收来自接收节点的确认报文,如图5中从接收节点指向发送节点的箭头所示。其中,发送节点发送的报文是TCP报文。每个报文头部的序列号字段(SequenceNumber,一般也简称为seq)携带该报文负荷中第一个数据字节的序列号。接收节点每接收到一个报文,就会向发送节点回复一个确认(ACK)报文,表明接收节点已正确接收该报文。可选地,在步骤501之后,发送节点还可以记录已发送的报文的最大序列号,用于后续的丢包检测。
步骤503:发送节点在判断出第一报文丢失之后,立即将丢失的第一报文重传;其中,重传的第一报文(即FR 3)也称为重传报文。
通常,发送节点发送的多个报文中有个别报文可能因为网络状况等原因不能到达接收节点,从而发生丢失。根据接收节点返回的确认报文,发送节点可以判断是否发生丢包。例如,发送节点基于接收到的确认报文确定该多个报文中的第一报文(如图5的报文3)丢失。
具体地,发送节点可以通过多种方式来确定第一报文丢失。以图4所示的快速重传机制为例,如果发送节点接收到N个(一般情况下,N等于3)及以上的ack值相同的确认报文,就确定序列号为该相同ack值加1的第一报文丢失。如图5所示,发送节点接收到了3个ack字段值为2的确认报文,则判定序列号为3的报文丢失。又例如,在另一个实施例中,在确认报文中扩展一个SACK字段,用于指示接收缓存的报文信息,其中,接收缓存用于临时存储已接收的报文,SACK字段的值定义为sack值。例如,sack值可以为接收节点接收到的报文的序列号,这样,发送节点根据接收节点返回的确认报文中的sack值,即可知道哪些报文已被接收节点接收,哪些报文未被接收节点接收,进而确定是否有报文丢失。
可选地,在步骤503中,发送节点也可以在第一报文的超时计时器超时之后,将丢失的第一报文重传。
步骤505:发送节点在检测到重传的第一报文丢失之后,立即将所述第一报文连续发送二次或二次以上。本发明实施例所描述的“立即”,是指在一个预定的时间间隔之内。也就是说,在步骤505中,发送节点在检测到重传报文丢失后的预定时间间隔内,会将丢失的第一报文连续发送两次或两次以上。其中,这里的预定时间间隔应该大于等于零,并且小于,甚至远小于第一报文的超时计时器的周期。例如,如果第一报文对应的超时计时器的周期为T,则预定时间间隔应小于T,或者小于T/2,甚至小于T/4。优选地,该预定时间间隔以发送节点检测出重传的第一报文丢失的时刻为起点,且该预定时间间隔等于零或者趋近于零;若预定时间间隔等于零,意味着检测出重传报文丢失和发送第一报文的动作是同时或几乎同时完成的。另外,连续两次发送第一报文之间的间隔(以下称为第一时间间隔),即图5中的t也应大于等于零,并且小于,甚至远小于第一报文的超时计时器的周期,并且,发送节点在该第一时间间隔(t)内未接收到用于指示再次重传的所述第一报文丢失的确认报文。即发送节点在没有接收到用于指示再次重传的第一报文丢失的确认报文(无法判断再次重传的第一报文是否丢失)的情况下,在第一时间间隔(t)内冗余发送第一报文。
需要说明的是,超时计时器用于TCP超时重传,即发送节点在发送一个报文的同时或之后,会开启一个超时计时器,该超时计时器的计时周期为T,若超时计时器的一个计时周期结束,仍未接收到该报文对应的确认报文,发送节点会判定该报文丢失,并进行超时重传。通常,协议栈给每个报文设置相同的超时计时器周期都相同,即每个报文都有相同的超时计时器周期。具体地,在一个实施例中,步骤505包括:
STEP1:发送节点根据重传第一报文之后接收到的确认报文,判定重传的第一报文(即步骤503中重传的第一报文FR3)发生丢失。例如,发送节点记录的当前已发送报文的最大序列号为8,如果发送节点接收到sack值大于8的确认报文时,例如,收到sack值为9的确认报文时,即可判定重传报文丢失。其中,sack是确认报文扩展字段(SACK)携带的,用于指示接收节点已接收到的报文的序列号。可以理解的是,发送节点还可以根据其它方式检测重传报文是否发生丢失。
STEP2:立即再次重传第一报文;其中,此处“立即”是指在发送节点判定重传报文丢包后的一个预定时间间隔内;该预定时间间隔以发送节点检测出重传的第一报文丢失的时刻为起点,该预定时间间隔应该大于等于零,并且小于,甚至远小于第一报文的超时计时器的周期。优选地,该预定时间间隔等于零或者趋近于零;若预定时间间隔等于零,意味着发送节点检测出重传报文丢失和再次重传第一报文的动作是同时或几乎同时完成的。
STEP3:发送节点再次重传第一报文之后,在第一时间间隔(t)内发送所述第一报文至少一次。这里的第一时间间隔(t)应该大于等于零,同时小于,甚至远小于第一报文的超时计时器的周期。例如,如果发送节点的超时计时器的计时周期为T,则t<=T,或者t<=T/2,甚至t<=T/4。优选地,第一时间间隔以再次重传所述第一报文的时刻为起点,若第一时间间隔等于零,意味着STEP2和STEP3中发送第一报文的动作是同时或几乎同时完成的。另外,发送节点在该第一时间间隔内未接收到用于指示再次重传的所述第一报文丢失的确认报文。即发送节点在没有接收到用于指示再次重传的第一报文丢失的确认报文(无法判断再次重传的第一报文是否丢失)的情况下,冗余发送第一报文。
进一步地,在一个实施例中,STEP2中重传第一报文和STEP3中发送第一报文的动作是连续的,且STEP2中重传第一报文和STEP3中发送第一报文两个动作之间的时间间隔t内,发送节点没有发送其它报文。例如,如果STEP2中重传的第一报文序号为N,则STEP3中发送的报文序号为N+1。
可选地,在步骤505之后,该方法还包括:
步骤507:发送节点继续发送后续报文。
具体地,步骤507包括:
如果当前允许发送新的报文,则发送节点还发送至少一个新的报文;该新的报文是指发送节点之前未发送过的报文。在一个实施例中,发送节点可以依据当前的发送缓存,和/或拥塞控制策略来判断当前是否允许发送新的报文;例如,如果在所述第一时间间隔内发送缓存非空,则发送节点在所述第一时间间隔内发送至所述发送缓存中的至少一个报文。
在以上描述的实施例中,发送节点在检测到重传报文丢失后,会在很短的时间间隔内,将第一报文重复发送二次或二次以上。这样发送节点可以持续接收到确认报文,使得重传报文发生丢包后能被及时检测和恢复,减少超时重传的次数,降低传输时延,提高了传输速率。同时,由于重传报文如果再次发生丢包,很可能触发超时重传,而在短时间内将重传报文快速重传多次,指数级降低了重传报文的丢包概率,进而减少了超时重传的概率。
基于上述实施例,本发明还提供另一种报文传输方法,如图6所示,该方法包括:
步骤601:发送节点通过与接收节点之间的通信链路向所述接收节点传输多个报文(如图6的报文1-8)。其中,所述报文是TCP报文,其中,每个报文头部的序列号字段(Sequence Number,一般也简称为seq)携带该报文负荷中第一个数据字节的序列号。可选地,在步骤601之后,发送节点还可以记录已发送的报文的最大序列号,用于后续的丢包检测。
步骤603:发送节点在判断出第一报文(如图6的报文3)丢失之后,立即将丢失的第一报文重传;其中,重传的第一报文(即FR 3)也称为重传报文。
具体地,在步骤603中,发送节点接收来自接收节点的确认报文,并基于接收到的确认报文确定所述多个报文中的第一报文(如图6的报文3)丢失。其中,发送节点根据确认报文确定第一报文丢失的具体方法可以参照步骤503相关的描述。在本发明的另一个实施中也可通过超时计时器超出预定的时间间隔后,立即将丢失的第一报文重传一次或多次。其中,步骤603中所述的“立即”,是指在判断出第一报文丢失之后的预定时间间隔内,且该预定时间间隔大于等于零,并且小于,甚至远小于第一报文的超时计时器的周期。优选地,该预定时间间隔以检测出重传的第一报文丢失的时刻为起点,且该预定时间间隔等于零或者趋近于零。
步骤605:发送节点根据重传第一报文之后接收到的确认报文,判定重传报文(即步骤602中重传的第一报文FR3)丢失,并立即再次重传第一报文。其中,发送节点判定重传报文丢失的具体方法可以参照图5中STEP1的相关描述,另外,步骤605中“立即”的相关含义及解释与步骤505中所描述的类似,此处不再赘述。
步骤607:发送节点判断发送缓存是否为空,如果发送缓存为空,则发送节点在再次重传第一报文之后的第一时间间隔内发送所述第一报文至少一次。其中,第一时间间隔的定义请参见图5所示的实施例。进一步地,在另一个实施例中,步骤607中的第一时间间隔可以以再次重传所述第一报文的时刻为起点,并以再次重传所述第一报文之后接收到的第一个确认报文的时刻为终点。这样,发送节点在再次重传第一报文后,实质上是在接收到用于指示再次重传的所述第一报文丢失的确认报文之前就再次发送了第一报文。
需要说明的是,步骤607中所述的发送缓存,用于缓存应用待发送的数据,即发送节点未发送过的数据。发送缓存中的报文会在特定时间插入发送队列,并从发送队列发送出去。发送队列中即可以包含发送节点未发送过的报文,同时重传报文也可能会插入发送队列。
进一步地,如图6所示,在一个实施例中,步骤607还包括:如果发送缓存非空,则发送节点在再次重传第一报文之后在第一时间间隔(图6中的t)内发送所述发送缓存中的第二报文(如图6中的报文11)。可以理解的是,所述第二报文为新的报文,即所述发送节点在再次重传所述第一报文之前未发送过的报文。
在另一个实施例中,以上步骤605和607在均在预定的时间间隔内完成,即再次重传第一报文,判断发送缓存是否为空,以及冗余发送第一报文或者发送第二报文的动作在预定的时间间隔内完成,该预定时间间隔大于等于零,同时小于,甚至远小于第一报文的超时计时器的周期。另外,发送节点在该预定时间间隔内未接收到用于指示再次重传的所述第一报文丢失的确认报文。即发送节点在没有接收到用于指示再次重传的第一报文丢失的确认报文(无法判断再次重传的第一报文是否丢失)的情况下,冗余发送第一报文。
进一步地,在一个实施例中,发送节点可以在与接收节点的传输报文的过程中收集状态信息,进而在重传第一报文之后,能够并根据收集的状态信息计算发送节点是否能在重传第一报文之后立即发送一个新的报文。其中,所述状态信息包括但不限于以下信息中的至少一种:发送节点的发送缓存大小、发送节点的拥塞窗口大小、发送节点的拥塞控制策略和接收节点的接收窗口大小。相应地,在步骤607中,如果发送节点的发送缓存非空,发送节点的拥塞控制策略允许发送新的报文,则发送节点判定当前允许发送新的报文,进而会在再次重传第一报文之后的第一时间间隔内发送新的报文。或者,如果发送节点的发送缓存非空,且发送节点的拥塞控制策略不允许发送新的报文,则发送节点仍然判定当前可以发送新的报文,并在再次重传第一报文之后的第一时间间隔(t)内发送新的报文。即在步骤607中,发送节点仅根据发送缓存来判定是否在第一时间间隔内发送新的报文,而忽略了虑拥塞控制策略的限制。其中,忽略拥塞控制策略的具体方法包括:,发送节点再次重传丢失的报文后,如果发送缓存非空,则发送节点可以暂时将拥塞窗口增大,以在第一时间间隔内避免拥塞控制策略的限制,快速发送新的报文。进一步地,发送节点在完成新的报文发送之后,会恢复拥塞窗口。
需要说明的是,本发明实施例的报文传输方法与图5所示的方法相区别的是,本发明实施例中,发送节点在检测到重传报文丢失之后,并不是每次都将丢失的第一报文在第一时间间隔内重复发送二次或二次以上,而是进一步判断当前是否能发送新的报文,如果可以,则会在第一时间间隔内发送至少一个新的报文,与图5所示的方法相比,本发明实施例的方法在减少重传丢包概率的同时,进一步减少了报文的冗余发送,提高了网络传输的效率。
基于图6所示的方法,本发明实施例还提供另一种报文传输方法,如图7所示,包括:
步骤701:发送节点通过与接收节点之间的通信链路向所述接收节点传输多个报文(如图7的报文1-8)。
步骤703:发送节点在判断出第一报文(如图7的报文3)丢失之后,立即将丢失的第一报文重传;其中,重传的第一报文(即FR 3)也称为重传报文。此处“立即”是指在趋近于零的时间间隔内,具体可以参见图5、图6所示的实施中的相关表述。
步骤705:发送节点根据重传第一报文之后接收到的确认报文,判定重传报文(即步骤602中重传的第一报文FR3)丢失,并立即再次重传第一报文。其中,发送节点判定重传报文丢失的具体方法可以参照图5中STEP1的相关描述。另外,步骤705中“立即”的相关含义及解释与步骤505和步骤605中所描述的类似,此处不再赘述。
步骤707:判断发送缓存是否为空,以及拥塞控制策略是否允许发送新的报文;如果发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则发送节点在第一时间间隔(如图7中的t)内发送所述第一报文至少一次;否则,如果发送换存非空,并且当前的拥塞控制策略允许发送新的报文,则发送节点在所述第一时间间隔内发送至少一个新的报文。其中,关于第一时间间隔的定义请参见图5所示的方法实施例,不再赘述。
进一步,如图7所示,在步骤707之后,该报文传输方法还包括:
步骤709:发送节点:判断发送缓存是否为空,如果为空,则返回或等待;如果发送缓存非空,则判断当前的拥塞控制策略是否允许发送新的报文,如果不允许,则返回或等待;如果允许,则发送新的报文。
与图6所示的方法相比,图7所示的方法在判断是否发送新的报文时,同时参考了发送缓存和拥塞控制策略,并因未发送新报文而遵从了拥塞控制策略。
下面基于一个具体的应用场景(网络视频监控场景)来描述本发明实施例的另一报文传输方法。如图8所示,假定用户使用用户设备查看远程网络摄像机拍摄的视频。网络摄像机的芯片集成了一个轻量化TCP/IP协议栈,该协议栈实现了本专利发明实施例的报文传输方法。假设链路的丢包率是5%。在TCP报文传输过程中,假定序列号为3的报文3丢失,本发明实施例的报文传输方法如图9所示。
步骤1001,网络摄像机检测到报文3丢失后,重传报文3,同时记录当前已发送报文的最大序列号,为8。
步骤1002,在发送缓存非空,且拥塞控制策略允许发送新的报文时,发送节点继续发送新的报文。
步骤1003,当收到重传报文3之后的第3个重复ACK时,积累确认的序列号依然是2,没有更新,而序列号为9的报文已经被确认,网络摄像机判定重传报文丢包。
步骤1004,立即再次重传报文3,同时记录当前已发送报文的最大序列号,为10。
步骤1005,根据发送缓存以及拥塞控制策略判断当前是否可以继续发送新的报文。
步骤1006,如果发送缓存非空,但当前的拥塞控制策略不允许发送新的报文,则立即发送至少一个新的报文;或者如果发送缓存为空,则立即将报文3发送至少一次。本发明实施例所描述的“立即”,是指在一个预定的时间间隔之内。也就是说,发送节点在再次重传报文3后的预定时间间隔内,会将丢失的报文3冗余发送至少一次,或者发送新的报文。其中,这里的预定时间间隔应该大于等于零,并且小于,甚至远小于报文3的超时计时器的周期。例如,如果报文3对应的超时计时器的周期为T,则预定时间间隔应小于T,或者小于T/2,甚至小于T/4。优选地,该预定时间间隔以再次重传报文3的时刻为起点,且网络摄像机检测在该预定时间间隔内未收到用于指示再次重传的报文3丢失的确认报文。
本发明实施例的方法中,网络摄像机在检测到报文丢失之后,将报文重传,同时判断当前是否还能发送新的报文,如果不能发送新的报文,则发送节点在预定的时间间隔内,冗余发送丢失的报文。这样,可以降低丢包的概率,提高数据传输的效率。
本发明实施例在具有不同丢包率的网络环境中实验结果如表1和表2所示。根据表1,在传输200MB数据的场景下,使用本发明实施例的报文传输方法,丢包次数比DAC算法降低了2-5倍。如表2所示,使用本发明方法时,吞吐率比DAC方法提升2倍以上。在高丢包率场景下,吞吐率超越linux原生协议栈。
表1.不同丢包率场景下传输200MB数据的丢包次数
丢包率 | 1% | 3% | 5% | 7% | 9% | 11% |
DAC | 0 | 9 | 52 | 134 | 291 | 534 |
优化 | 0 | 0 | 8 | 31 | 84 | 169 |
表2.不同丢包率场景下传输200MB数据的吞吐率
以上图5-7描述的方法实施例描述的均是在检测到重传报文丢包之后的报文发送机制,可以理解的是,在本发明一个可选的实施例中,在首次检测到报文(如第一报文)丢失后,也可以在第一时间间隔内连续将第一报文重传多次。在另一个实施例中,发送节点在首次检测到第一报文丢失后,如果当前的发送缓存非空,则发送节点在第一时间间隔内连续发送第一报文以及至少一个新的报文,否则,发送节点在第一时间间隔内将第一报文连续发送至少两次。在另一个实施例中,发送节点在首次检测到第一报文丢失后,如果当前的发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则发送节点在第一时间间隔内连续第一报文至少一次;否则连续发送第一报文以及至少一个新的报文。
可以看出,本发明图5-7描述的描述的冗余发包机制,不限于在检测到重传报文丢失后触发,也可以在首次检测到某一报文丢失后即冗余发送该报文。
基于上述方法实施例,本发明还提供一种用户设备,以实现上述各个方法实施例中发送节点的功能。具体地,参照图2,该用户设备110包括:处理器120,TCP协议栈130、天线142、无线调制解调器140和存储器150。其中,无线调制解调器140与天线142连接。TCP协议栈130用于,在处理器120的控制下,根据TCP/IP协议规范将应用程序的数据封装成特定数据格式的多个报文,发送给无线调制解调器140;无线调制解调器140用于将接收到的报文调制成模拟信号并通过天线发射出去;应用程序服务器20可以通过无线网络接收用户设备110发射的模拟信号,将其解调成数字信号,并传递给应用程序服务器20的TCP协议栈21,TCP协议栈21用于对数字信号解封装,最终得到应用程序的数据。其中,用户设备110以及应用程序服务器20的TCP协议栈包括:物理层、链路层、网络层、传输层和应用层。TCP协议栈对报文封装和解封装的过程如图10所示。可以看出,报文封装的过程实质上是TCP协议栈对报文添加报头和/或帧尾的过程,而报文解封装的过程实质上是对报文去除报头和/或帧尾的过程。
进一步地,应用程序服务器20在接收到用户设备110发送的报文之后,会回复确认报文,表明该报文已经收到;TCP协议栈130还用于,在处理器120的控制下,根据接收到的来自应用程序服务器的确认报文确认第一报文丢失;并在预定的时间间隔内,连续重传所述第一报文至少二次。
优选地,在另一个实施例中,TCP协议栈130还用于,在处理器120的控制下,执行图5、图6或图7中的部分或全部步骤。
需要说明的是,TCP协议栈130可由用户设备110上的软件、硬件和/或固件的适当组合执行。例如,在一个实施例中,TCP协议栈130以可执行程序代码的形式存储于存储器150中;处理器120执行TCP协议栈130对应的程序代码,以执行图5、图6或图7所描述的部分或全部步骤。具体地,如图12所示,用户设备100按照逻辑层级被划分为:芯片/硬件平台,芯片/硬件平台之上的内核,中间件,以及中间件之上运行的应用程序。其中,内核、中间件以及应用程序均以可执行代码的方式存储于用户设备110的存储器150中,这些代码被处理器解析为具体的指令执行,以完成相应的功能。执行芯片包括通用处理器、微处理器、图形处理器和基带处理器中的至少一种;硬件平台包括芯片、存储器、通信接口等。内核具备包括:芯片驱动程序、外设驱动程序(例如通信接口、传感器的驱动)、硬件适配层,以及基础内核;基础内核提供内存管理、中断管理、进程管理、文件系统等功能。处理器通过运行内核对应的可执行代码,以调度硬件资源实现特定的功能。比如读写数据,生成控制指令等。
进一步地,中间件作为内核与上层应用程序的结合点,可以包括多种类型的协议栈,以使用户设备支持不同类型的协议,例如,中间件可以包括以上实施例所描述的TCP协议栈。中间件还包括有应用程序接口(API)以及不同类型的业务组件,其中,业务组件是针对特定应用或服务开发的,为应用或服务提供一些扩展功能,针对图8所示的应用场景,业务组件可以包括视频组件,用于提供视频优化和/或视频编解码功能,以支持视频监控应用的运行。API用于上层应用程序与中间件、内核之间的互联互通,以便于消息传递。可选地,中间件还包括安全组件,用于实现设备的认证和鉴权。
具体地,应用程序(例如APP 1)在被处理器执行的过程中,可以调用API将数据报文传递给网络协议栈(比如TCP协议栈),TCP协议栈在感知到该报文后,通过系统函数调用内核中的硬件驱动程序,以驱动相关的硬件,比如无线调制解调器140、天线142进行报文的发送、接收及处理。另外,数据报文丢包检测以及报文重传也是由处理器运行TCP协议栈来实现的。TCP协议栈检测丢包以及传输报文的具体实现细节可以参见前述方法实施例,在此不再赘述。
在另一个实施例中,TCP协议栈130可以由现场可编程门阵列(FieldProgrammable Gata Array,FPGA)或特定用途集成电路(Application SpecificIntegrated Circuit,ASIC)等硬件电路或专用芯片来实现,在这种情形下,处理器120和用于实现TCP协议栈的TCP硬件电路或专用芯片通过总线连接;处理器运行存储器150中的应用程序,同时调用用于实现TCP协议栈的TCP硬件电路或专用芯片,对应用程序运行过程中产生的数据进行传输和处理。具体地,处理器120将应用程序对应的代码译码成机器指令并逐条执行,在执行指令的过程中,利用相应的驱动程序调用TCP硬件电路或专用芯片执行报文的发送和接收操作;相应地,该TCP硬件电路或专用芯片在处理器120的调用下,与其它硬件配合完成本发明方法实施例所描述的步骤或功能。另外,TCP协议栈该TCP硬件电路或专用芯片执行上述方法步骤的相关细节可以参见上述方法实施例,在此不再赘述。
如图11所示,本发明实施例还提供另一种用户设备300包括:处理电路302,以及与其连接的通信接口304和存储介质320。
处理电路302用于处理和/或发送数据,控制数据访问和存储,发出命令以及控制其它设备执行操作。处理电路302可以被实现为一个或多个处理器,一个或多个控制器和/或可用于执行程序等的其它结构。处理电路302具体可以包括通用处理器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑组件。通用处理器可以包括微处理器,以及任何常规的处理器,控制器,微控制器,或状态机。处理电路302也可以实现为计算组件,例如DSP和微处理器的组合。
存储介质306可以包括计算机可读存储介质,如磁存储设备(例如,硬盘,软盘,磁条),光存储介质(例如,数字多功能盘(DVD)),智能卡,闪存设备,随机存取存储器(RAM),只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),寄存器,以及它们的任意组合。存储介质306可以耦合到处理电路302以使得处理电路302可读取信息和将信息写入到存储介质306。具体地,存储介质306可以集成到处理电路302,或者存储介质306和处理电路302可以是分开的。
处理电路302适于执行存储在存储介质306上存储的程序。本发明实施例所使用的术语“程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应用,软件包,线程,进程,函数,固件,中间件等。
通信接口304可包括电路和/或程序以实现用户设备300与一个或多个无线网络设备(例如,网络节点)之间的双向通信。通信接口304可以耦合到一个或多个天线(图11中未示出),并包括至少一个接收电路316和/或至少一个发射电路318。在一个实施例中,通信接口304可以是全部或部分由无线调制解调器来实现。
在一个实施例中,存储介质306中存储有协议栈程序320,处理电路302执行协议栈程序320以实现协议栈模块308的功能,协议栈模块308可以对通信接口304接收的数据进行解码和/或解封装处理后,传递给上层应用程序,也可以对应用程序的数据进行封装处理,然后通过通信接口发送给其它设备。其中,协议栈模块308的具体的工作过程请参照上一实施例中TCP协议栈130和21,以及图11的相关描述。
在一个实施例中,协议栈模块308可以包括:物理层模块、数据链路层模块、网络层模块、传输层模块和应用层模块,用于实现各个层的协议。例如,物理层模块可包括电路和/或程序,用于定义物理设备接口特性、传输介质类型、传输速率、传输模式等,以及实现物理层的信号处理。同样,数据链路层模块可包括电路和/或程序,用于实现数据链路层的功能,比如负责分发网络层生成的信令,以及处理由物理层产生的信息。数据链路层模块可包括一个或多个子模块,例如媒体接入控制(Media Access Control,MAC)层模块,无线链路控制(RLC)层模块和逻辑链路控制(LLC)层模块,分别用于实现MAC层、RLC层和LLC层的功能。例如,MAC层模块用于利用物理层提供的服务传输上层协议数据,以及管理上层与空口之间的数据接入;RLC层模块用于数据分段和重组;LLC层模块用于提供流量和顺序控制,以及差错控制功能。进一步,网络层模块可包括电路和/或程序,用于实现网络层功能,比如逻辑编址、路由选择。传输层模块可包括电路和/或程序,用于实现传输层功能,比如端口编址、分段重组、连接控制、流量控制和差错控制。应用层层模块可包括电路和/或编程,用于实现提供接口给上层应用程序。
根据本发明实施例的一个或多个方面,处理电路302被适配为执行存储在与存储介质306中的协议栈程序320,以实现协议栈模块308的功能。其中协议栈模块308的具体实现了上述方法实施例中的部分或全部步骤。
如图13所示,本发明实施例还提供一种用户设备13,以实现上述各方法实施例中发送节点的功能。该用户设备13包括:接收单元131,发送单元133和处理单元132,其中:
发送单元133,用于向与用户设备13通信连接的接收节点14发送多个报文;
接收单元131,用于接收来自接收节点14的确认报文;
在一个实施例中,处理单元132用于,根据接收单元131接收到的确认报文,确定所述多个报文中的第一报文丢失;触发发送单元133向接收节点14重传所述第一报文;进一步地,处理单元132还用于,根据重传所述第一报文之后接收单元131接收到的确认报文,确定重传报文丢失,并立即触发发送单元133在第一时间间隔内,连续发送所述第一报文至少两次;其中,所述重传报文为重传的第一报文。关于“立即”和“第一时间间隔”的详细定义请见上述方法实施例。
在另一个实施例中,处理单元132用于,根据接收单元131接收到的确认报文,确定所述多个报文中的第一报文丢失;触发发送单元133向接收节点14重传所述第一报文;进一步地,处理单元132还用于,根据重传所述第一报文之后接收单元131接收到的确认报文,确定重传报文丢失,并触发发送单元133再次重传所述第一报文,以及判断发送缓存是否为空;如果所述发送缓存非空,则在第一时间间隔内发送所述发送缓存中的至少一个报文;其中,所述发送缓存中的报文为所述发送单元未发送过的报文。进一步地,处理单元132还用于,如果所述发送缓存为空,则触发发送单元在133所述第一时间间隔内发送所述第一报文至少一次。其中,关于第一时间间隔的详细定义请见上述方法实施例。
在另一个实施例中,处理单元132用于,根据接收单元131接收到的确认报文,确定所述多个报文中的第一报文丢失;触发发送单元133向接收节点14重传所述第一报文;进一步地,处理单元132还用于,根据重传所述第一报文之后接收单元131接收到的确认报文,确定重传报文丢失,并触发发送单元133再次重传所述第一报文,以及判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;如果所述发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则在第一时间间隔内发送所述第一报文至少一次。进一步地,处理单元132还用于,如果所述发送缓存非空,并且当前拥塞控制策略允许发送新的报文,则在所述第一时间间隔内发送所述发送缓存中的至少一个报文;其中,所述发送缓存中的报文为所述发送单元未发送过的报文。关于第一时间间隔的详细定义请见上述方法实施例。
需要说明的是,接收单元131,发送单元133和处理单元132的详细工作过程可参见前述方法实施例,在此不再赘述。
本发明实施例还提供一种用户设备,包括:发送单元、接收单元和处理单元;其中:
发送单元,用于向与该用户设备通信连接的接收节点发送多个报文;
接收单元,用于接收来自所述接收节点的多个确认报文;
在一个实施例中,所述处理单元用于,根据所述接收单元接收到的多个确认报文,确定所述多个报文中的第一报文丢失;并触发所述发送单元立即向所述接收节点重传所述第一报文,并在第二时间间隔内,发送所述第一报文至少一次;其中,所述第二时间间隔大于等于零,且小于所述第一报文的超时计时器的周期;所述发送节点在所述第二时间间隔内未接收到用于指示重传的所述第一报文丢失的确认报文。另外,这里所述的“立即”,是指在判断出第一报文丢失之后的预定时间间隔内,且该预定时间间隔大于等于零,并且小于,甚至远小于第一报文的超时计时器的周期。优选地,该预定时间间隔等于零或者趋近于零。
在另一个实施例中,所述处理单元用于,根据所述接收单元接收到的多个确认报文,确定所述多个报文中的第一报文丢失;并触发所述发送单元立即向所述接收节点重传所述第一报文;进一步地,所述处理单元还用于,判断发送缓存是否为空,如果所述发送缓存为空,则触发所述发送单元在第二时间间隔内发送所述第一报文至少一次。进一步地,所述处理单元还用于,如果所述发送缓存非空,则触发所述发送单元在第一时间间隔内发送所述发送缓存中的至少一个报文;其中,所述发送缓存中的报文为所述发送单元未发送过的报文。其中,所述第二时间间隔大于等于零,且小于所述第一报文的超时计时器的周期;所述发送节点在所述第二时间间隔内未接收到用于指示重传的所述第一报文丢失的确认报文。另外,这里所述的“立即”,是指在判断出第一报文丢失之后的预定时间间隔内,且该预定时间间隔大于等于零,并且小于,甚至远小于第一报文的超时计时器的周期。优选地,该预定时间间隔等于零或者趋近于零。
在另一个实施例中,所述处理单元用于,根据所述接收单元接收到的多个确认报文,确定所述多个报文中的第一报文丢失;并触发所述发送单元立即向所述接收节点重传所述第一报文;进一步地,所述处理单元还用于,判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;如果所述发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则触发所述发送单元在第二时间间隔内发送所述第一报文至少一次。进一步地,所述处理单元还用于,如果发送缓存非空,且当前的拥塞控制策略允许发送新的报文,则触发所述发送单元在第二时间间隔内发送所述发送缓存中的至少一个报文;其中,所述发送缓存中的报文为所述发送单元未发送过的报文。所述第二时间间隔大于等于零,且小于所述第一报文的超时计时器的周期;所述发送节点在所述第二时间间隔内未接收到用于指示重传的所述第一报文丢失的确认报文。另外,这里所述的“立即”,是指在判断出第一报文丢失之后的预定时间间隔内,且该预定时间间隔大于等于零,并且小于,甚至远小于第一报文的超时计时器的周期。优选地,该预定时间间隔等于零或者趋近于零。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件(例如处理器)来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的报文传输方法、及用户设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种报文传输方法,其特征在于,包括:
发送节点通过与接收节点之间的通信链路向所述接收节点传输多个报文;
所述发送节点在确定所述多个报文中的第一报文丢失之后,重传所述第一报文;
所述发送节点基于重传所述第一报文之后接收到的确认报文确定重传报文丢失;所述重传报文为重传的第一报文;
所述发送节点再次重传所述第一报文,并判断发送缓存是否为空;
如果所述发送缓存为空,则所述发送节点在再次重传所述第一报文之后立即发送所述第一报文至少一次;如果所述发送缓存非空,则所述发送节点在再次重传所述第一报文之后立即发送所述发送缓存中的第二报文;其中,所述第二报文为新的报文。
2.根据权利要求1所述的方法,其特征在于,所述发送节点基于重传所述第一报文之后接收到的确认报文确定重传报文丢失,包括:
所述发送节点根据重传所述第一报文之后接收到的确认报文携带的ack字段或者扩展字段,判断重传报文丢失。
3.根据权利要求1或2所述的方法,其特征在于,所述发送节点与所述接收节点之间的通信链路为TCP连接。
4.一种报文传输方法,其特征在于,包括:
发送节点通过与接收节点之间的通信链路向所述接收节点传输多个报文;
所述发送节点确定所述多个报文中的第一报文丢失后,重传所述第一报文;
所述发送节点基于重传所述第一报文之后接收到的确认报文确定重传报文丢失;所述重传报文为所述重传的第一报文;
所述发送节点再次重传所述第一报文,并判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;
如果所述发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则所述发送节点在再次重传所述第一报文之后立即发送所述第一报文至少一次;如果所述发送缓存非空,并且当前拥塞控制策略允许发送新的报文,则所述发送节点在再次重传所述第一报文之后立即发送所述发送缓存中的第二报文;其中,所述第二报文为新的报文。
5.一种用户设备,其特征在于,包括:无线调制解调器、处理器、天线和TCP协议栈;其中,所述无线调制解调器与所述天线连接,所述TCP协议栈用于,在所述处理器的控制下,将所述用户设备上运行的应用程序的数据封装成多个报文,并发送给所述无线调制解调器;所述无线调制解调器用于将接收到的报文调制成模拟信号并通过所述天线发送给服务器;
所述TCP协议栈还用于,确认所述多个报文中的第一报文丢失之后,通过所述无线调制解调器及所述天线向所述服务器重传所述第一报文,并基于重传所述第一报文之后接收到的确认报文确定重传报文丢失,所述重传报文为所述重传的第一报文;再次向所述服务器重传所述第一报文,并判断发送缓存是否为空;如果所述发送缓存为空,则在再次重传所述第一报文之后立即通过所述无线调制解调器和天线向所述服务器发送所述第一报文至少一次;
如果所述发送缓存非空,则在再次重传所述第一报文之后立即通过所述无线调制解调器和天线向所述服务器发送所述发送缓存中的第二报文;其中,所述第二报文为新的报文。
6.根据权利要求5所述的用户设备,其特征在于,所述TCP协议栈具体用于,根据重传所述第一报文之后接收到的确认报文携带的ack字段或者扩展字段,判断所述重传报文丢失。
7.一种用户设备,其特征在于,包括:无线调制解调器、处理器、天线和TCP协议栈;其中,所述无线调制解调器与所述天线连接,所述TCP协议栈用于,在所述处理器的控制下,将所述用户设备上运行的应用程序的数据封装成多个报文,并发送给所述无线调制解调器;所述无线调制解调器用于将接收到的报文调制成模拟信号并通过所述天线发送给服务器;
所述TCP协议栈还用于,确认所述多个报文中的第一报文丢失之后,通过所述无线调制解调器及所述天线向所述服务器重传所述第一报文,并基于重传所述第一报文之后接收到的确认报文确定重传报文丢失,所述重传报文为所述重传的第一报文;再次向所述服务器重传所述第一报文,并判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;如果所述发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则在再次重传所述第一报文之后立即向所述服务器发送所述第一报文至少一次;
如果所述发送缓存非空,并且当前拥塞控制策略允许发送新的报文,则在再次重传所述第一报文之后立即通过所述无线调制解调器和天线向所述服务器发送所述发送缓存中的第二报文;其中,所述第二报文为新的报文。
8.一种用户设备,其特征在于,包括:
发送单元,用于向与所述用户设备通信连接的接收节点发送多个报文;
接收单元,用于接收来自所述接收节点的多个确认报文;
处理单元,用于根据所述接收单元接收到的多个确认报文,确定所述多个报文中的第一报文丢失;触发所述发送单元向所述接收节点重传所述第一报文;以及根据重传所述第一报文之后所述接收单元接收到的确认报文,确定重传报文丢失;其中,所述重传报文为所述重传的第一报文;
所述发送单元还用于,在所述处理单元确定所述重传报文丢失后,再次重传所述第一报文,并判断发送缓存是否为空;如果所述发送缓存为空,则在再次重传所述第一报文之后立即发送所述第一报文至少一次;如果所述发送缓存非空,则在再次重传所述第一报文之后立即发送所述发送缓存中的第二报文;其中,所述第二报文为新的报文。
9.一种用户设备,其特征在于,包括:
发送单元,用于向与所述用户设备通信连接的接收节点发送多个报文;
接收单元,用于接收来自所述接收节点的多个确认报文;
处理单元,用于根据所述接收单元接收到的多个确认报文,确定所述多个报文中的第一报文丢失;触发所述发送单元向所述接收节点重传所述第一报文;以及根据重传所述第一报文之后所述接收单元接收到的确认报文,确定重传报文丢失;其中,所述重传报文为所述重传的第一报文;
所述发送单元还用于,在所述处理单元确定所述重传报文丢失后,再次重传所述第一报文,并判断发送缓存是否为空,或者当前的拥塞控制策略是否允许发送新的报文;如果所述发送缓存为空,或者当前的拥塞控制策略不允许发送新的报文,则在再次重传所述第一报文之后立即发送所述第一报文至少一次;如果所述发送缓存非空,并且当前拥塞控制策略允许发送新的报文,则在再次重传所述第一报文之后立即发送所述发送缓存中的第二报文;其中,所述第二报文为新的报文。
Priority Applications (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510605226.9A CN106656431B (zh) | 2015-09-21 | 2015-09-21 | 一种报文传输方法及用户设备 |
BR112018005373-2A BR112018005373A2 (zh) | 2015-09-21 | 2016-09-20 | A message transmission method and user equipment |
KR1020187008310A KR102136563B1 (ko) | 2015-09-21 | 2016-09-20 | 패킷 전송 방법 및 사용자 장비 |
EP16848097.8A EP3337072B1 (en) | 2015-09-21 | 2016-09-20 | Packet transmission method and user equipment |
PCT/CN2016/099480 WO2017050216A1 (zh) | 2015-09-21 | 2016-09-20 | 一种报文传输方法及用户设备 |
JP2018515052A JP6522855B2 (ja) | 2015-09-21 | 2016-09-20 | パケット送信方法およびユーザ機器 |
EP20174896.9A EP3780449A1 (en) | 2015-09-21 | 2016-09-20 | Packet transmission method and user equipment |
CA2997637A CA2997637C (en) | 2015-09-21 | 2016-09-20 | Packet transmission method and user equipment |
RU2018114691A RU2691240C1 (ru) | 2015-09-21 | 2016-09-20 | Способ пакетной передачи и абонентское устройство |
US15/926,174 US10601554B2 (en) | 2015-09-21 | 2018-03-20 | Packet transmission method and user equipment |
US16/802,279 US11153041B2 (en) | 2015-09-21 | 2020-02-26 | Packet transmission method and user equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510605226.9A CN106656431B (zh) | 2015-09-21 | 2015-09-21 | 一种报文传输方法及用户设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106656431A CN106656431A (zh) | 2017-05-10 |
CN106656431B true CN106656431B (zh) | 2020-09-29 |
Family
ID=58385688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510605226.9A Active CN106656431B (zh) | 2015-09-21 | 2015-09-21 | 一种报文传输方法及用户设备 |
Country Status (9)
Country | Link |
---|---|
US (2) | US10601554B2 (zh) |
EP (2) | EP3337072B1 (zh) |
JP (1) | JP6522855B2 (zh) |
KR (1) | KR102136563B1 (zh) |
CN (1) | CN106656431B (zh) |
BR (1) | BR112018005373A2 (zh) |
CA (1) | CA2997637C (zh) |
RU (1) | RU2691240C1 (zh) |
WO (1) | WO2017050216A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108270682B (zh) * | 2016-12-30 | 2022-06-24 | 华为技术有限公司 | 一种报文传输方法、终端、网络设备及通信系统 |
CN106788916B (zh) * | 2016-12-30 | 2021-08-27 | 深圳市优必选科技股份有限公司 | 用于总线的数据传输方法及数据传输装置 |
CN109981385B (zh) * | 2017-12-27 | 2022-10-28 | 华为技术有限公司 | 一种实现丢包检测的方法、装置和系统 |
JP7335966B2 (ja) * | 2019-02-05 | 2023-08-30 | カーサシステムズ インコーポレイテッド | ネットワーク関連付け情報を回復するための方法及び装置 |
WO2020179993A1 (en) * | 2019-03-07 | 2020-09-10 | Samsung Electronics Co., Ltd. | Apparatus and method for transmitting and receiving data in wireless communication system |
CN115396078A (zh) * | 2019-03-25 | 2022-11-25 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN111830913B (zh) * | 2019-04-22 | 2024-07-12 | 北京国电智深控制技术有限公司 | 一种数据获取方法及装置 |
CN112019306B (zh) * | 2019-05-28 | 2022-02-18 | 上海华为技术有限公司 | 一种数据重传方法以及装置 |
CN110233856B (zh) * | 2019-06-28 | 2022-04-05 | 北京云中融信网络科技有限公司 | 报文处理方法、装置及计算机可读存储介质 |
CN112311725B (zh) * | 2019-07-26 | 2022-01-11 | 华为技术有限公司 | 一种数据处理方法、装置及终端 |
KR20210019307A (ko) * | 2019-08-12 | 2021-02-22 | 삼성전자주식회사 | 상태 보고를 이용하여 신호 재전송을 수행하는 무선 통신 장치 및 이를 포함하는 무선 통신 시스템의 동작 방법 |
CN115801199A (zh) * | 2019-10-28 | 2023-03-14 | 华为技术有限公司 | 一种确认报文的处理方法和通信装置以及存储介质 |
CN113765626B (zh) * | 2020-06-01 | 2022-11-11 | 大唐移动通信设备有限公司 | 一种移动通信系统的数据传输方法和装置 |
CN111953555A (zh) * | 2020-06-29 | 2020-11-17 | 联想(北京)有限公司 | 一种链路检测方法、cpe及存储介质 |
CN112087361A (zh) * | 2020-09-17 | 2020-12-15 | 宏图智能物流股份有限公司 | 一种可实现不同仓库网络平台对接的方法 |
EP4207654A4 (en) * | 2020-09-17 | 2023-09-27 | Huawei Technologies Co., Ltd. | PACKET RETRANSMISSION METHOD AND APPARATUS |
CN113645015A (zh) * | 2021-10-13 | 2021-11-12 | 徐州工程学院 | 一种被动重发的可靠传输方法 |
CN114442598B (zh) * | 2022-02-09 | 2023-12-12 | 一汽解放汽车有限公司 | 诊断冲突协调方法、装置、计算机设备和存储介质 |
CN115941128A (zh) * | 2022-11-07 | 2023-04-07 | 天津津航计算技术研究所 | 一种基于QCache的报文协议超时重发管理方法 |
CN117459608A (zh) * | 2023-10-26 | 2024-01-26 | 北京光润通科技发展有限公司 | 网卡链路层tcp重传卸载方法及系统 |
CN117692396B (zh) * | 2024-02-04 | 2024-04-26 | 湖南国科亿存信息科技有限公司 | 一种复杂网络环境下的tcp单边加速方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296161A (zh) * | 2007-04-26 | 2008-10-29 | 华为技术有限公司 | 一种数据重传的方法、系统、装置、接收设备及发送设备 |
CN101631065A (zh) * | 2008-07-16 | 2010-01-20 | 华为技术有限公司 | 一种无线多跳网络拥塞的控制方法和装置 |
CN102075436A (zh) * | 2011-02-10 | 2011-05-25 | 成都市华为赛门铁克科技有限公司 | 以太网络及其数据传输方法和装置 |
CN102480346A (zh) * | 2010-11-26 | 2012-05-30 | 中国科学院声学研究所 | 一种网络数据可靠传输方法 |
CN103220091A (zh) * | 2012-01-20 | 2013-07-24 | 华为技术有限公司 | 数据传输的方法及装置 |
CN103401666A (zh) * | 2013-06-29 | 2013-11-20 | 华为技术有限公司 | 数据重传方法和装置 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1146261C (zh) * | 2000-10-27 | 2004-04-14 | 清华大学 | 一种在衰落信道中重传丢失分组的方法 |
US7607062B2 (en) | 2002-03-25 | 2009-10-20 | Akamai Technologies, Inc. | System for fast recovery from losses for reliable data communication protocols |
JP2004187099A (ja) * | 2002-12-04 | 2004-07-02 | Shinko Electric Ind Co Ltd | 通信制御方法、通信システム及び通信装置 |
US8503294B2 (en) * | 2003-07-11 | 2013-08-06 | Nec Corporation | Transport layer relay method, transport layer relay device, and program |
JP3871661B2 (ja) * | 2003-07-25 | 2007-01-24 | 株式会社東芝 | マルチメディアコンテンツ受信装置及びマルチメディアコンテンツ受信方法 |
JP2007060345A (ja) * | 2005-08-25 | 2007-03-08 | Kazunori Nakamura | ネットワークシステム |
JP5014281B2 (ja) | 2008-07-30 | 2012-08-29 | パナソニック株式会社 | Tcp送信制御装置及びtcp送信制御方法 |
CN101753275A (zh) | 2008-12-15 | 2010-06-23 | 华为技术有限公司 | 重传视频报文的方法、装置及系统 |
JP5387058B2 (ja) * | 2009-03-04 | 2014-01-15 | 日本電気株式会社 | 送信装置、送信レート算出方法及び送信レート算出プログラム |
US8611354B2 (en) | 2009-06-29 | 2013-12-17 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for relaying packets |
US8804513B2 (en) * | 2010-02-25 | 2014-08-12 | The Trustees Of Columbia University In The City Of New York | Methods and systems for controlling SIP overload |
US9503223B2 (en) * | 2011-03-04 | 2016-11-22 | Blackberry Limited | Controlling network device behavior |
JP5942706B2 (ja) * | 2012-08-29 | 2016-06-29 | 富士通株式会社 | 監視装置,監視プログラム,監視方法 |
US9496971B2 (en) * | 2012-12-10 | 2016-11-15 | Qualcomm Incorporated | Techniques for determining actual and/or near states of proximity between mobile devices |
CN103986548B (zh) | 2013-02-07 | 2018-02-23 | 华为技术有限公司 | 一种确定丢包原因的方法和终端 |
JP6094357B2 (ja) * | 2013-04-22 | 2017-03-15 | 富士通株式会社 | 通信方法、通信システム、及び通信装置 |
US9240939B2 (en) * | 2013-10-22 | 2016-01-19 | Cisco Technology, Inc. | Detecting packet loss and retransmission in a network environment |
CN104660573A (zh) * | 2013-11-25 | 2015-05-27 | 上海益尚信息科技有限公司 | 一种用于sctp协议的低信息交互的多基站置 |
RU2622770C1 (ru) * | 2013-12-20 | 2017-06-20 | Телефонактиеболагет Лм Эрикссон (Пабл) | Высоконадежная схема передачи с низким уровнем использования ресурсов |
JP2016058909A (ja) * | 2014-09-10 | 2016-04-21 | 沖電気工業株式会社 | 通信システム、通信装置、通信方法及び通信プログラム |
US20160226628A1 (en) * | 2015-01-30 | 2016-08-04 | Huawei Technologies Co., Ltd. | System and method for data retransmission |
CN110730105B (zh) * | 2015-05-29 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 图片数据传输方法、装置、设备及存储介质 |
-
2015
- 2015-09-21 CN CN201510605226.9A patent/CN106656431B/zh active Active
-
2016
- 2016-09-20 RU RU2018114691A patent/RU2691240C1/ru active
- 2016-09-20 EP EP16848097.8A patent/EP3337072B1/en active Active
- 2016-09-20 WO PCT/CN2016/099480 patent/WO2017050216A1/zh active Application Filing
- 2016-09-20 EP EP20174896.9A patent/EP3780449A1/en not_active Withdrawn
- 2016-09-20 BR BR112018005373-2A patent/BR112018005373A2/zh unknown
- 2016-09-20 KR KR1020187008310A patent/KR102136563B1/ko active IP Right Grant
- 2016-09-20 JP JP2018515052A patent/JP6522855B2/ja active Active
- 2016-09-20 CA CA2997637A patent/CA2997637C/en active Active
-
2018
- 2018-03-20 US US15/926,174 patent/US10601554B2/en active Active
-
2020
- 2020-02-26 US US16/802,279 patent/US11153041B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296161A (zh) * | 2007-04-26 | 2008-10-29 | 华为技术有限公司 | 一种数据重传的方法、系统、装置、接收设备及发送设备 |
CN101631065A (zh) * | 2008-07-16 | 2010-01-20 | 华为技术有限公司 | 一种无线多跳网络拥塞的控制方法和装置 |
CN102480346A (zh) * | 2010-11-26 | 2012-05-30 | 中国科学院声学研究所 | 一种网络数据可靠传输方法 |
CN102075436A (zh) * | 2011-02-10 | 2011-05-25 | 成都市华为赛门铁克科技有限公司 | 以太网络及其数据传输方法和装置 |
CN103220091A (zh) * | 2012-01-20 | 2013-07-24 | 华为技术有限公司 | 数据传输的方法及装置 |
CN103401666A (zh) * | 2013-06-29 | 2013-11-20 | 华为技术有限公司 | 数据重传方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3337072A4 (en) | 2018-08-15 |
JP6522855B2 (ja) | 2019-05-29 |
US11153041B2 (en) | 2021-10-19 |
EP3337072B1 (en) | 2020-07-22 |
CA2997637A1 (en) | 2017-03-30 |
KR20180048760A (ko) | 2018-05-10 |
US20180212721A1 (en) | 2018-07-26 |
JP2018535582A (ja) | 2018-11-29 |
WO2017050216A1 (zh) | 2017-03-30 |
US20200195390A1 (en) | 2020-06-18 |
EP3780449A1 (en) | 2021-02-17 |
CN106656431A (zh) | 2017-05-10 |
BR112018005373A2 (zh) | 2018-10-09 |
EP3337072A1 (en) | 2018-06-20 |
KR102136563B1 (ko) | 2020-07-22 |
RU2691240C1 (ru) | 2019-06-11 |
US10601554B2 (en) | 2020-03-24 |
CA2997637C (en) | 2021-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106656431B (zh) | 一种报文传输方法及用户设备 | |
US11272420B2 (en) | Method and apparatus for transmitting data packets using dual sequence numbers | |
US10924421B2 (en) | Packet transmission method, terminal, network device, and communications system | |
US20200396169A1 (en) | Data Transmission Method, Computing Device, Network Device, and Data Transmission System | |
CN112713970B (zh) | 一种发送报文的方法、装置、芯片及终端 | |
US9049017B2 (en) | Efficient TCP ACK prioritization in wireless networks | |
KR102300300B1 (ko) | 헤더 압축을 이용한 패킷 통신 방법 및 장치 | |
EP3490293B1 (en) | Data receiving method, data sending method, receiving device and system | |
JP4384676B2 (ja) | データ通信装置の制御方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |