CN109327288B - 数据传输加速方法、装置及系统 - Google Patents
数据传输加速方法、装置及系统 Download PDFInfo
- Publication number
- CN109327288B CN109327288B CN201811262174.XA CN201811262174A CN109327288B CN 109327288 B CN109327288 B CN 109327288B CN 201811262174 A CN201811262174 A CN 201811262174A CN 109327288 B CN109327288 B CN 109327288B
- Authority
- CN
- China
- Prior art keywords
- packet
- data packet
- sequence number
- node
- receiving
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 134
- 238000000034 method Methods 0.000 title claims abstract description 81
- 230000001133 acceleration Effects 0.000 title abstract description 30
- 238000005096 rolling process Methods 0.000 claims abstract description 101
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 claims description 79
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 claims description 79
- 230000015654 memory Effects 0.000 claims description 40
- 238000012545 processing Methods 0.000 claims description 26
- 238000013507 mapping Methods 0.000 claims description 23
- 238000012546 transfer Methods 0.000 claims description 11
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims 10
- 238000004891 communication Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000000903 blocking effect Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 239000000243 solution Substances 0.000 description 6
- 102100036409 Activated CDC42 kinase 1 Human genes 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000002347 injection Methods 0.000 description 3
- 239000007924 injection Substances 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W40/00—Communication routing or communication path finding
- H04W40/02—Communication route or path selection, e.g. power-based or shortest path routing
- H04W40/12—Communication route or path selection, e.g. power-based or shortest path routing based on transmission quality or channel quality
-
- 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/34—Flow control; Congestion control ensuring sequence integrity, e.g. using 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/1607—Details of the supervisory signal
- H04L1/1671—Details of the supervisory signal the supervisory signal being transmitted together with control information
-
- 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/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
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0829—Packet loss
-
- 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/196—Integration of transport layer protocols, e.g. TCP and UDP
-
- 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/25—Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
-
- 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/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
-
- 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/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/267—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets sent by the destination endpoint
-
- 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/27—Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
-
- 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
-
- 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
-
- 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
Abstract
本发明实施例公开了一种数据传输加速方法及相关的装置和系统。发送节点以初始速率向接收节点发送多个数据包,每个数据包携带一个随机序列号以及一个与发包次序相关的滚动序列号,其中随机序列号用于唯一标识一个数据包,滚动序列号用于指示数据包的传输次序;接收节点根据接收到的数据包的滚动序列号,快速判断丢失的数据包,并向发送节点发送丢包反馈信息,以请求发送节点重传丢失的数据包。发送节点基于收到的丢包反馈信息重传丢失的数据包,被重传的数据包携带有新的滚动序列号。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据传输加速方法及相关的装置和系统。
背景技术
在网络通讯中,如何保证可靠、高效地在网络上进行数据传输一直是学术界和工业界的研究重点,而数据传输效率与网络协议的性能直接相关,其中,吞吐率/传输速率是用来衡量网络协议性能的重要指标之一。在现有的通信网络中,通常采用传输控制协议(Transmission Control Protocol,TCP)或用户数据报协议(User Datagram Protocol,UDP)作为传输层协议。TCP和UDP是TCP/IP模型中最通用的两种传输层协议。根据统计,目前全球互联网数据流量90%以上通过TCP传输,通过UDP传输的不足10%。而且TCP所占份额还在继续扩大,就连目前广泛采用UDP协议的多媒体应用也逐渐开始采用TCP协议传输多媒体数据包。然而,设计于二十多年前的TCP传输协议已经越来越不适应飞速发展的高速网络环境和新型应用的需求。比如,由于TCP自身的“双窗口”拥塞控制,丢包重传等机制,当网络中存在一定程度的丢包和延时的时候,TCP连接的吞吐率显著下滑,无法有效地利用带宽,导致了TCP协议不能很好的支持数据的高吞吐率/传输速率传输。
针对TCP的传输速率的问题,各种网络加速技术应运而生。这些加速技术基本上可以分为三类:基于丢包的TCP加速技术、基于延时的TCP加速技术和基于学习的TCP加速技术。
基于丢包的TCP加速技术沿袭了主流TCP以丢包来判断拥塞并调整传输速率的方式。其对传统TCP的改进主要是通过增大初始拥塞控制窗口(Congestion Window,CNWD),同时在通过丢包判断出现拥塞后使用比传统TCP更激进的方式恢复CNWD,以期减少拥塞对速率的影响。尽管这些改进在很多情况下确实能够提升速率,但很多网络会产生非拥塞因素的丢包,特别是无线网络,如信号被干扰等因素导致的丢包并不意味有拥塞发生,因此基于丢包的TCP加速技术将丢包作为拥塞发生的信号很容易误判,导致传输速率下降,带宽得不到有效利用。
基于延时的TCP加速技术克服了基于丢包的TCP加速技术的主要缺陷,采用延迟的变化来判断拥塞程度并相应调整传输速率。这一机制更符合现代网络的特点,能够在发生拥塞网络节点的队列开始堆积时就及时下调传输速率,避免拥塞恶化,减少甚至避免丢包的发生。同时,基于延时的TCP加速技术不将丢包当作拥塞,在非拥塞因素发生的丢包时可以保持较高的速率。因此,设计优良的基于延时的TCP加速技术比基于丢包的TCP加速技术在传输速率上有了显著的提升。尽管如此,当网络路径本身的延迟就变化很大时,基于延时的TCP加速技术会将非拥塞因素导致的延迟增加误判为拥塞并转入拥塞处理,从而导致没有必要的压低传输速率。例如,包括移动互联网在内的无线网络延迟变化就很频繁,一些网络设备(特别是安全设备)也可能不定时地引入额外的数据包处理延迟。
基于学习的TCP加速技术采用网络路径特征自学习的动态算法,基于每一个TCP连接实时观察、分析网络特征,根据学习到的网络特征随时调整算法来更准确的判断拥塞程度、更及时地判断丢包,从而更恰当的进行拥塞处理并更快速的进行丢包恢复。这一设计从原理上克服了静态算法无法适应网络路径特征变化的问题,保证了在各种不同网络环境及频繁变化的网络延迟、丢包特征下加速效果的持续有效性。然而,基于学习的TCP加速技术需要靠对历史记录的学习来了解当前网络的情况,但是对于随机丢包,延迟抖动大的网络,这种学习/判断效果并不明显,使得网络的吞吐率/传输速率的提升并不显著。
综上,现有的传输协议的吞吐率/传输速率人仍然有较大的提升空间,尽管有一些加速算法可以起到一定的加速作用,但网络的发展趋势是流量特征越来越复杂并难以预测,尤其是在高延迟,高丢包,高带宽延迟积的场景下,网络路径特征不断发生变化,因此加速的效果也会起伏不定,有时甚至出现反效果。因此,现有技术中传输层协议的吞吐率/传输速率仍然有待提升。
发明内容
本发明实施例提供一种数据传输加速方法及相关的装置和系统,用于提高数据传输的速率。
为达到上述发明目的,一方面,本发明实施例提供了一种报文传输方法,该方法包括:发送节点以预定传输速率向接收节点传输多个数据包,接收节点根据接收到的数据包的序列号检测出一个或多个丢失数据包后,向发送节点发送丢包反馈信息,以请求重传丢失的数据包,发送节点接收到丢包反馈信息后,根据丢包反馈信息中的指示,重传丢失的数据包。与传统TCP尽力发送数据包的机制不同,在本发明实施例的数据传送方法中,数据包是以特定的速率均匀发送的,可以减少缓数据包瞬时注入网络造成网络拥塞的情况,同时也不会像TCP一样,由于发送窗口、拥塞窗口等限制而造成有包不能发的现象,可以显著提高数据传输速率和带宽利用率。
在第一种可能的实现方式中,发送节点发送的数据包携带有一个随机序列号(SEQ)和一个滚动序列号(PKT.SEQ);接收节点可以根据接收到的数据包中的滚动序列号来检测丢失数据包。由于PKT.SEQ是用来指示数据包传输次序的,且只与数据包传输的次序相关,因此接收节点可以根据前后到达包的PKT.SEQ来迅速的判断丢包。双SEQ机制可以在一个往返时间(Round Trip Time,RTT)内发现任意丢失数据包,相对于TCP使用的超时重传,时延更小。
根据第一方面第一种可能的实现方式,在第二种可能的实现方式中,发送节点传输的多个数据包的滚动序列号与该多个数据包的传输次序对应。
根据第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,重传的数据包携带有新的滚动序列号。
根据第一方面的第一种或第二种可能的实现方式,在第四种可能的实现方式中,重传的数据包携带的随机序列号与首次传输该数据包时携带的随机序列号相同,重传的数据包携带的滚动序列号与首次传输该数据包时携带的滚动序列号不同。
根据第一方面或以上实现方式种的任意一种,在第五种可能的实现方式中,丢包反馈信息包含有丢失数据包的序列号信息,该序列号信息具体可以为随机序列号或滚动序列号。或者在第六种可能的实现方式中,丢包反馈信息包含有接收节点已接收的数据包的序列号信息,比如随机序列号或滚动序列号。
根据第一方面或第一方面的以上实现方式种的任意一种,在第七种可能的实现方式中,接收节点发送的丢包反馈信息为包含丢包指示字段的NACK控制包,该丢包指示字段用于携带丢失数据包的滚动序列号;相应地,发送节点接收到NACK控制包之后,基于NACK控制包所携带的滚动序列号,以及发送节点已发送的数据包的随机序列号和滚动序列号之间的映射关系,确定丢失数据包的随机序列号,并给确定出丢失数据包赋予新的滚动序列号后重传。或者在第八种可能的实现方式中,NACK控制包的丢包指示字段也可以用于携带丢失数据包的随机序列号,接收节点可以根据丢失数据包的滚动序列号,查询数据包随机序列号与滚动序列号的映射关系表,确定丢失数据包的随机序列号,将确定出的序列号携带在丢包指示字段,反馈给发送节点。
根据第一方面第五种或第七种可能的实现方式,在第九种可能的实现方式中,NACK控制包的丢包指示字段包括:丢包开始字段(START)和丢包结束字段(END),其中,所述丢包开始字段和丢包结束字段分别用于指示多个连续的丢失数据包中首包和尾包的滚动序列号。相应地,发送节点在接收到NACK控制包后,可以根据NACK控制包中的丢包开始字段和丢包结束字段,确定连续的多个丢失数据包,并重传该多个连续的丢失数据包。接收节点用一个NACK控制包向发送节点反馈连续丢失的多个数据包,从而可以减少NACK控制包的个数,节省网络资源,提高重传效率。
根据第一方面或第一方面的以上任意一种可能的实现方式,在第十种可能的实现方式中,数据包的随机序列号和滚动序列号的映射关系以映射表的形式存储在所述发送节点。进一步地,在第十一种可能的实现方式中,发送节点在传输数据包的过程中,将已发送的数据包的随机序列号和滚动序列号的映射关系添加到该映射表,从而可以实现映射表动态更新。
根据第一方面或或第一方面的以上任意一种可能的实现方式,在第十二种可能的实现方式中,NACK控制包包含:释放字段(Release SEQ),该释放字段用于携带接收节点当前已接收到的数据包的随机序列号或滚动序列号。相应地,发送节点在接收到NACK控制包后,可以根据释放字段的指示,从发送缓存中释放接收节点已接收到的数据包所占用的空间。进一步地,接收节点也可以及时释放已接收到的数据包所占用的接收缓存。
根据第一方面或或第一方面的以上任意一种可能的实现方式,在第十三种可能的实现方式中,接收节点还周期性发送PACK控制包,该PACK控制包携带有HOL包的随机序列号,其中,HOL包包括:未被所述发送节点感知的丢失数据包,和/或重传后再次丢失的数据包;相应地,发送节点接收到PACK控制包之后,会重传与所述PACK控制包携带的随机序列号对应的数据包。通过周期性发送PACK控制包,并在PACK控制包中携带HOL包的随机序列号(SEQ),可以有效解决由于NACK控制包丢失或者重传的数据包再次丢失导致的接收内存阻塞的问题。
进一步地,根据第一方面的第十三种可能的实现方式,在第十四种可能的实现方式中,PACK控制包还可以包括数据包接收速率和数据包丢失率中的至少一种。进一步地,在第十五种可能的实现方式中,发送节点根据PACK包含的数据包接收速率和/或数据包丢失率,调整初始传输速率,使其与数据包接收速率相适应。通过周期性发送的PACK控制包,可以发送节点可以实现传输速率的动态调整,使得发送节点和接收节点的配合更加有效,进而可以提高数据传输的效率。可选地,接收节点也可以将数据包接收速率和/或数据包丢失率等信息携带在另一个单独的控制包中,反馈给发送节点。
根据第一方面的第十三种至第十五种可能的实现方式中的任一种,在第十六种可能的实现方式中,接收节点发送PACK的周期可以由max(RTT/a,threshold),(1<a<6)来计算。
根据第一方面的第十三种至第十六种可能的实现方式中的任一种,在第十七种可能的实现方式中,接收节点在接收到首个数据包后会启动一个PACK定时器,如果PACK定时器时间到,则发送PACK。
根据第一方面或第一方面的任意一种可能的实现方式,在第十八种可能的实现方式中,发送节点和接收节点建立UDP连接,并基于该UDP连接进行数据传送。
本发明实施例第二方面还提供一种发送节点,包括协议栈,以及通过总线连接的处理器、存储器和通信接口;其中,协议栈用于在处理器的控制下,执行第一方面或第一方面的任一可能的实现方式中发送节点的流程。
本发明实施例第三方面还提供一种节点,包括协议栈,以及通过总线连接的处理器、存储器和通信接口;其中,协议栈用于在处理器的控制下,执行第一方面或第一方面的任一可能的实现方式中接收节点的流程。在第二方面和第三方面的第一种可能的实现方式中,通信接口包括发射电路和接收电路,协议栈具体用于通过发射电路传输数据包,并通过接收电路接收数据包。在第二方面和第三方面的第二种可能的实现方式中,协议栈由以可执行程序的形式存储在存储器中,被处理器执行以实现发送节点和接收节点的功能。
本发明实施例第四方面还提供一种数据传送系统,包括第二方面的发送节点和第三方面的接收节点。
本发明实施例第五方面还提供一种数据传送系统,包括发送节点和接收节点,其中发送节点包括实现第一方面或第一方面的任一可能的实现方式中发送节点的功能的一个或多个功能单元;接收节点包括实现第一方面或第一方面的任一可能的实现方式中接收节点的功能的一个或多个功能单元。
本发明实施例第六方面还提供一种计算机可读存储介质,该存储介质存储程序代码,该程序代码用于执行以上任一方面或任一方面的可能的实现方式中所描述的方法步骤。
在本发明实施例任一方面或任一方面的任一种实现方式中,数据包接收速率用于表示接收节点接收数据包的速率,或者接收节点从接收缓存读取数据包的速率,或者所述接收节点从接收缓存读取数据包的速率,或者接收节点接收有效数据包的速率,这里的有效数据包时指非冗余的数据包。发送缓存和接收缓存分别位于发送节点和接收节点的内存中。随机序列号标识数据包的身份或数据部分的信息,用于确保数据在发送缓存中按序排列;滚动序列号用于指示发送节点传输数据包的次序。随机序列号与数据包的数据部分相关,而滚动序列号只与数据包的传输次序相关,与数据包的数据部分无关。
本发明实施例提供的数据传送方法、装置及数据传送系统中,发送器以一定的发送速率向接收器推送数据包,接收器在检测到有丢失包的时候,通过快速的流中重传,迅速的‘拉’回丢失包,并释放已接收到的按序连续数据包所占用的内存。从而能够可以在高延迟,高丢包率的网络中提高网络吞吐率/传输速率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的一种典型应用场景示意图;
图2是本发明实施例提供的一种数据传送系统示意图;
图3是本发明实施例提供的协议栈工作原理图;
图4是本发明实施例提供的数据传送方法示意图;
图5是本发明实施例提供的协议栈工作原理图;
图6是本发明实施例提供的双序列号机制的示意图;
图7是本发明实施例的数据传送方法流程图;
图8是本发明实施例提供的NACK控制包的结构示意图;
图9是本发明实施例提供的PACK控制包的结构示意图;
图10是本发明实施例提供的发送节点的工作流程图;
图11是本发明实施例提供的接收节点的工作流程图
图12是本发明实施例提供的数据传送系统的数据交互流程示意图;
图13是本发明实施例提供的另一种数据传送系统结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明实施例描述的网络架构以及业务场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
图1为本发明方案的适用的一个典型的应用场景示意图。如图1所示,在一种场景下,用户设备(user equipment,UE)通过因特网服务提供商(Internet Service Provider,ISP)接入互联网,并基于传输协议与服务器进行数据传输,比如,从服务器下载内容,或者备份UE本地的内容至服务器,等等。通常,UE与服务器之间数据传输可能跨越多个地域,多个ISP,高延迟和高丢包率不可避免。在另一些场景下,UE之间,或者服务器之间也可以通过有线或无线链路传输数据,因为链路等因素,同样也存在数据包丢失的情况。因此为了保证数据的可靠传输,传输控制协议(Transmission Control Protocol,TCP)成为不同设备之间传输协议的首选。但是TCP为了保障数据传输可靠性而引入的基于窗口的发送机制,拥塞控制、超时重传等机制会极大的限制数据的传送速率,降低链路利用率。本申请旨在保证数据可靠传输的前提下,进一步提高数据的传输速率,提高链路利用率。可以理解的是,任何基于TCP/互联网协议(Internet Protocol,IP)参考模型的通信系统都适用于本发明实施例的提供的技术方案,其中,TCP/IP参考模型是一个抽象的分层模型,它通常也被通称为TCP/IP协议栈,这个模型中,所有的网络协议都被归类到5个抽象的"层"中:物理层、链路层、网络层、传输层以及应用层,关于各层的定义均为现有技术,本发明实施例不再赘述。
本申请所涉及到的用户设备(User Equipment,UE)可以包括图1所示的个人电脑(personal computer,PC)、智能手机、笔记本电脑、平板电脑、数字相机(digital camera,DC)等各种具有通信功能的手持设备、车载设备、可穿戴设备、计算设备以及各种形式的用户设备,移动台(Mobile station,MS),终端(terminal),终端设备(Terminal Equipment)等等。为方便描述,本申请中,上面提到的设备统称为用户设备或UE。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
图2是本发明实施例提供的一种数据传送系统100的简化框图,根据图2,该数据传送系统100包括发送节点110、接入点10、无线接入网关12、广域网14、以及接收节点20。所属领域的技术人员可以理解一个数据传送系统通常可包括比图2中所示的部件更少或更多的部件,或者包括与图2中所示部件不同的部件,图2仅仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。
另外,发送节点110和接收节点可以独立的物理设备,也可以是虚拟机。在一种场景下,发送节点110可以是图1中描述的用户设备,接收节点20也可以是图1中描述的服务器。在另一种场景下,用户设备和服务器的角色也可以互换,即服务器作为发送节点,而用户设备作为接收节点。当然,发送节点110和接收节点20也可以均为用户设备,或者均为服务器,本发明不做特别限制。广域网14可包括公用网络、专用网络、因特网的一部分和/或其任何组合。无线接入网关12和接入点10可包括在一个无线网络中,出于简洁之目的,该无线网络的其它部分并未进行阐述。另外还需要说明的是,本发明实施例主要是对发送节点和接收节点上的部署的网络协议进行优化,以提升数据传输速率,与发送节点和接收节点之间的网络类型无关。图2所描述的发送节点和接收节点基于无线网络传输数据只是本发明实施例的一种典型应用场景,可以理解的是,不同的设备之间通过有线或无线网络传输数据,例如,图1中不同UE之间通过无线网络(如Wi-Fi网络、蜂窝网络),或者服务器之间通过有线或无线方式传输数据的场景下,均可使用本发明实施例提供的方法。
根据图2,发送节点110包括处理器120、通信接口140和存储器150。相应地,接收节点20也包括处理器、通信接口和存储器(图2中未示出)。发送节点110和接收节点20还分别包括协议栈130和协议栈21。其中,协议栈130和21的功能可由软件、硬件和/或固件的适当组合执行。此外,所属领域的技术人员可以理解发送节点110和接收节点20可包括比图2中所示部件更少或更多的部件,图2仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。
发送节点110的存储器150中存储有应用程序121(也可以称为发送应用程序),例如,应用程序121可以是用于上传内容至接收节点20的备份程序,也可以是用于从接收节点20请求内容的浏览器,本发明实施例不做特别限定。应用程序通常属于应用层,处理器120可以读取存储器150中的应用程序121并执行,以实现特定的功能。相应地,接收节点20上也运行有应用程序22(也可称为接收应用程序)。应用程序121和22可以基于协议栈130和21进行数据传送。其中,参见图3,发送节点110以及接收节点20的协议栈至少包括:网络层协议(IP)和传输层协议(本发明实施例优选UDP)。
进一步地,如图3所示,本发明实施例的数据传送系统中发送节点和接收节点的协议栈还包括加速协议Fillp,用于提供数据传输加速能力。其中,如图4所示,发送节点上的Fillp主要用于将上层应用程序的数据包封装后以稳定的传输速率持续从内存中‘推送’至接收节点;接收节点上的Fillp主要用于检测丢失数据包,并发送‘拉’请求以指示发送节点重传丢失数据包。其中,Fillp可以典型地承载与UDP之上,数据包经发送节点上的Fillp处理之后,会依次传递给底层的UDP和IP进行封装处理,并最终通过物理层的链路发送出去。相应地,接收节点从物理链路接收到数据包后,IP和UDP会对数据包解封装,然后传递给Fillp处理后,写入接收节点内存,最终提交给上层应用程序。其中,发送节点110以及接收节点20的协议栈对报文封装和解封装的过程如图5所示,从图5可以看出,报文封装的过程实质上是根据协议栈各层协议规范对报文添加报头和/或帧尾的过程,而报文解封装的过程实质上是根据协议栈各层协议规范对报文去除报头和/或帧尾的过程。
更具体地,根据图3,在发送节点侧,Fillp协议主要实现:应用层数据包封装、基于特定速率的数据包传输、基于接收节点的丢包反馈信息进行重传;在接收节点侧,Fillp协议主要实现:数据包解封装、丢包检测以及丢失包处理功能。可选地,Fillp协议还可以包括如下功能中的至少一种:基于接收节点反馈信息的传输速率控制、数据包加/解密,网络环境初始化,以及前向纠错编码(forward error correction,FEC)。关于加速协议Fillp的功能的实现细节请见后续实施例。可以理解的是,在一个实施例中,如图3所示,Fillp可以位于传输层之上;在另一个实施例中,Fillp的加速能力也可以作为传输层协议(如UDP)的扩展,集成到传输层协议中,或者也可以在应用层以应用程序或应用程序插件的形式实现,甚至也可以介于物理层(网卡)和网络层之间,本发明实施例不做特别限制。
如图3所示,在一个实施例中,发送节点和接收节点完成网络环境初始化之后,建立连接(本发明实施例以UDP连接为例进行说明);发送节点上运行的应用程序将数据写入发送缓存,发送缓存通常是发送节点的内存或内存的部分区域。Fillp采用双序列号机制来封装应用程序的数据包,并将数据包传递给底层UDP协议和IP协议封装处理之后通过物理层的物理链路发送给接收节点。具体地,如图6所示,每个数据包包含头部(Header)和数据部分(data),其中,头部包含两个序列号:一个随机序列号(用SEQ表示)和一个滚动序列号(用PKT.SEQ表示);其中,随机序列号的作用和TCP数据包头部中的序列号(sequencenumber)一样,都是用于标识数据包的身份(数据部分的信息),确保数据在发送缓存中按序排列;例如,随机系列号可以与TCP报文头部的序列号类似,为一个32字节的无符号值;在连接建立后,发送节点发送的首个数据包的随机序列号通常是发送节点随机产生的,后续的数据包的随机序列号可以在首个数据包的随机序列号的基础上,根据数据包数据部分的长度(占用的字节数)增加或减少;或者数据包的随机序列号也可以根据数据包数据部分的内容,采用特定算法(比如哈希算法,或消息摘要算法等)生成。滚动序列号与发送节点传输数据包的次序(也可以等同于发送节点已发送数据包的个数)对应,例如,如果发送节点当前已发送n个数据包,则发送节点发送的下一个数据包的滚动序列号可以为n+1,n+2,或者其它与n呈线性关系或者单调函数关系的数值。在同一连接或同一会话中,发送节点传输的每个数据包的滚动序列号都是唯一的,发送节点连续发送的多个数据包的滚动序列号应该是单调递增序列、单调递减序列、或等比序列。需要说明的是,在本发明实施例中,随机序列号是与数据包数据部分相关的,如果两个数据包的数据部分相同,则其随机序列号也相同,比如一个数据包的随机序列号为N,则无论是首次传输,还是重传该数据包,其随机序列号均不变;而滚动序列号只与数据包的传输次序相关,与数据包的数据部分无关,即在同一连接或同一会话中,每个数据包的滚动序列号都是唯一的,且数据包的滚动序列号与传输次序构成具有单调性的函数。这样,一个数据包在首次传输和重传时,随机序列号保持不变,但滚动序列号发生了变化。同时,接收节点侧的Fillp可以根据接收到的数据包的滚动序列号,快速检测出丢失的数据包,并反馈丢包信息给发送节点,以请求发送节点快速重传丢失的数据包。在一个实施例中,以上描述的双序列号机制可以用用到现有TCP中,以解决TCP中的丢包检测问题,特别是丢失包重传后再丢失的检测问题。进一步地,在另一个实施例中,接收节点侧的Fillp还可以将接收速率,数据包丢失率等信息反馈给发送节点,以便发送节点进行传输速率的调整。
在本发明实施例的数据传送系统中,不采用传统的TCP中基于“窗口”的发送机制,以及丢失包超时重传机制,而是使用发送节点的内存作为发送缓存,发送节点匀速从内存中‘推’送数据包至接收节点;接收节点及时释放已接收到的按序连续数据包所占用的发送缓存,并在检测到丢失包的时候,发送‘拉’请求,以使发送节点重传丢失包。这种发送节点主动‘推’数据包以及接收节点根据‘推’送过来的数据‘拉’丢失包的机制可以容忍链路的一定丢包,从而避免拥塞速率调整,做到链路的高吞吐和高传输率。
基于上述实施例描述的加速协议Fillp的基本框架和原理,下面描述本发明实施例的数据传送系统在部署Fillp协议后进行数据传送的方法,如图7所示,该方法主要包括以下步骤:
步骤703:基于发送节点和接收节点之间建立的连接(本发明实施例优选UDP连接),发送节点以初始传输速率向接收节点传输多个数据包,其中,每个数据包都携带有两个序列号,分别为随机序列号和滚动序列号;关于随机序列号和滚动序列号的定义及实现可以参见图5和图6相关实施例的描述,不再赘述。需要说明书的是,TCP是基于窗口发送数据包的,只要在窗口内的数据包都会全力发送,这样很容易导致大量的数据包瞬时拥挤到网络上,造成瞬时拥堵的问题。而在本发明实施例的数据传送方法中,数据包是以特定的速率均匀发送的,可以减缓数据包包瞬时注入网络,同时也不会像TCP一样,由于发送窗口、拥塞窗口等限制而造成有包不能发的现象,可以显著提高数据传输速率和带宽利用率。
在一个实施例中,发送节点的初始传输速率可以由用户通过用户界面、脚本或配置文件配置;在另一个实施例中,初始传输速率可以由发送节点根据其与接收节点之间的网络带宽自动配置。只要发送节点的发送缓存中有待发送的数据包,发送节点就一直以该初始传输速率传输发送缓存中的数据包,除非接收到传输速率调整指令。
步骤705:接收节点接收多个数据包;
在一个实施例中,接收节点接收数据包的速率与发送节点的初始传输速率相匹配,比如两者相等,或者近似等。在一个实施例中,若接收节点的接收速率大于或小于发送节点的初始传输速率时,可以反馈控制信息给发送节点,使发送节点调整该初始发送速率,使其与接收节点的接收速率向匹配。
步骤706:接收节点根据接收到的一个或多个数据包携带的序列号,检测出一个或多个丢失数据包,并根据检测出的丢失数据包的信息生成丢包反馈信息发给发送节点。
在一个实施例中,接收节点可以根据接收到的数据包的滚动序列号PKT.SEQ来快速检测丢包。例如,接收节点接收到滚动序列号PKT.SEQ=3的数据包后,如果PKT.SEQ=1的数据包已收到,但PKT.SEQ=2的数据包还未收到,则判定PKT.SEQ=2丢失。与传统TCP需要通过多个ACK才能判定丢包相比,本发明实施例的方法更高效。
在一个实施例中,接收节点将检测出的丢失数据包的随机序列号或滚动序列号携带在ACK包中,发送给发送节点。
在另一个实施例中,接收节点将检测出的丢失数据包的序列号携带在NACK(Negative Acknowledge)控制包(以下简称NACK)中,发送给发送节点。具体地,在一种可能的实现方式中,NACK包含丢包指示字段,该字段用于携带丢失数据包的滚动序列号;例如,如果接收节点根据当前接收到的数据包的序列号,判定PKT.SEQ=2的数据包丢失,则随即将NACK的丢包指示字段填充为2,发送给发送节点。在另一种可能的实现方式中,如图8所示,NACK可以包括:丢包开始字段START和丢包结束字段END,其中,所述丢包开始字段START和丢包结束字段分别用于携带多个连续的丢包中首包和尾包的滚动序列号。可以理解的是,由于数据包的滚动序列号是按传输顺序递增的,因此如果接收节点检测到多个连续的丢包,则丢包开始字段和丢包结束字段分别指示了这多个连续的丢失数据包中滚动序列号数值最小和最大的数据包。如果接收节点当前只检测到单个丢失的数据包,则构造的NACK中START和END字段值相同,均为该丢失的数据包的滚动序列号。如图8所示的,当接收节点收到PKT.SEQ=1的数据包,接着又收到PKT.SEQ=5的数据包,则判定连续丢失PKT.SEQ=2至4的3个数据包,并构造START=2,END=4的NACK,以请求发送节点重传这几个连续丢失的数据包。当接收节点继续接收到PKT.SEQ=7的数据包之后,判定PKT.SEQ=6的数据包丢失,因此构造START=6,END=6的NACK发送给发送节点。可以看出,通过START和END字段,可以用一个NACK控制包向发送节点反馈连续丢失的多个数据包,从而可以减少NACK控制包的个数,节省网络资源,提高重传效率。在另一种可能的实现方式中,NACK包含的丢包指示字段也可以携带丢失数据包的随机序列号;例如,如果接收节点根据当前接收到的数据包的滚动序列号(PKT.SEQ),判定PKT.SEQ=2的数据包丢失,则接收节点根据数据包的随机序列号与滚动序列号的映射关系,确定该丢失数据包对应的随机序列号,并将确定出的随机序列号填充到NACK的丢包指示字段,发送给发送节点,使得发送节点根据NACK的丢包指示字段的指示,重传对应的数据包。
步骤707:发送节点根据接收到的丢包反馈信息的指示,重传丢失的数据包。
在一个实施例中,发送节点基于接收到的NACK所携带的滚动序列号,以及发送节点已传输的数据包的随机序列号和滚动序列号之间的映射关系,确定丢失数据包的随机序列号,然后根据确定出的随机序列号,从发送缓存中查找到对应的数据包并重传;其中,重传的数据包携带有原始的随机序列号和新的滚动序列号。在这种情形下,发送节点通常会记录数据包的随机序列号和滚动序列号的映射关系,比如,发送节点会将已传输和/或待传输的数据包的随机序列号与滚动序列号之间的映射关系以哈希表的形式存储,便于后续收到NACK后,根据NACK携带的滚动序列号,确定对应的丢失数据包。
在另一个实施例中,发送节点可以根据接收节点已接收到的ACK包携带的接收节点已接收的数据包的序列号,确定丢失数据包,并重传丢失数据包。
进一步地,在一个实施例中,NACK还包含:释放字段(Release SEQ),释放字段用于指示接收节点当前已接收到的数据包的随机序列号和/或滚动序列号。如图8所示,当接收节点收到PKT.SEQ=5的数据包,判定PKT.SEQ=2至4的3个数据包丢失,并且在丢包之前已接收的数据包的最大PKT.SEQ=1,因此Release SEQ字段的值填充为1,以指示发送节点将PKT.SEQ=1对应的数据包所占用的发送缓存释放。进一步地,假设接收节点检测到PKT.SEQ=6的数据包丢失时,若重传的PKT.SEQ=2至4(之前被判定为丢失的3个数据包)已经收到,则会构造Release SEQ字段值为5的NACK,以指示发送节点将PKT.SEQ=2至5对应的数据包所占用的发送缓存释放。相应地,在本实施例中,发送节点还执行步骤709:根据接收到的NACK中的Release SEQ字段,从发送缓存中释放Release SEQ字段所指示的数据包所占用的空间。发送缓存通常为发送节点的内存,或内存的部分区域。
需要说明的是,本发明所有实施例中的丢失数据包,是指接收节点根据已接收数据包的信息判定为丢失的数据包,因为网络传输的不确定因素,接收节点判定出的丢失数据包并不一定真正发生了丢失,即接收节点有一定概率为“误判”,但这种误判并不是实质影响本发明的效果。可选的,发送节点接收到丢包反馈信息后并不一定马上重发丢失数据包,可以等待一段时间,减少由包乱序接收导致的‘误判’带来的影响,这个等待时间可以由用户配置。
从以上描述可以看出,本发明上述实施例通过数据包的滚动序列号来快速检测丢失数据包,同时在检测到丢失数据包后发送丢包反馈信息给发送节点,以请求及时重传丢失数据包。由于数据包发送以及提交给至上层应用程序时的保序要求,如果某个数据包未被接收节点接收,那么该数据包后续的数据包被接收后必须保存在接收缓存,直至该数据包被重发并到达接收节点之后,才会提交给应用程序,同时其占用的接收缓存才会被释放,即如果接收缓存中的数据不连续(即接收缓存中存在缺失的数据包),就无法及时释放接收缓存。但在某些情形下,例如由于链路拥塞等原因,接收节点发送的丢包反馈信息在传输的过程中丢失,或者发送节点重传的丢失数据包再次发生丢失,接收节点都就会长时间接收不到丢失数据包,接收缓存中该数据包的缺失会导致的数据不连续,从而使得接收缓存中的其它数据包长时间无法释放,阻塞接收缓存。这种接收缓存中缺失的数据包,即造成接收缓存阻塞的数据包(典型代表为接收节点未接收到,但未被发送节点感知为丢失的数据包,以及重传后再次丢失的数据包),通常也称为队首(Head of Line,HOL)包,这种因为HOL包造成的接收缓存阻塞的现象通常也称为HOL效应。为解决HOL包阻塞接收缓存的问题,本发明实施例的数据传送的方法进一步还包括:
步骤713:接收节点周期性地向发送节点发送PACK(Period ACK)控制包(以下简称为PACK);其中,如图9所示,PACK中包含HOL SEQ字段,该字段用于携带HOL包的随机序列号信息。具体地,接收节点检测出丢失数据包,并向发送节点发送丢包反馈信息后,如果在一定的时间间隔内或者在PACK定时器时间到的时候仍未接收到丢失数据包,则判定该丢失数据包为HOL包,并在下一次发送的PACK中携带该HOL包的随机序列号信息。其中,这里的时间间隔可以为一个RTT,或者用户根据实际需求设置的值。接收节点将HOL包的随机序列号填充在PACK的HOL SEQ字段,这样,发送节点在接收到PACK后,可以根据HOL SEQ字段的指示,重传HOL包,并且由于PACK是周期性发送的,即便一个PACK发生丢失,仍能通过后续的PACK中将HOL包的信息反馈给发送节点,从而很好地解决了上述HOL包导致接收缓存阻塞的问题。在一个实施例中,接收节点发送PACK的周期可以由max(RTT/a,threshold),(1<a<6)来计算,其中,RTT全称为Round Trip Time,是指一个数据包在发送节点和接收节点之间往返传输一次的时间,另外,这里的Threshold可以是由用户来设置的一个阈值,本发明实施例优选设置为15ms。当然这里的计算公式只是一个典型示例,这个周期可以由本领域技术人员根据实际需求定义,不局限于该公式。进一步地,接收节点在接收到第一个数据包之后,可以开启一个PACK定时器,该定时器的周期可以根据以上描述的方法来设置,当定期器时间到,接收节点就发送一个PACK,并将定时器清零,重新开始计时。
可选地,如图9所示,在一个实施例中,每个PACK携带有数据包接收速率和/或数据包丢失率中;其中数据包接收速率用于表示接收节点接收数据包的速率,或者接收节点从接收缓存读取数据包的速率,或者接收节点接收有效数据包的速率,这里的有效数据包时指非冗余的数据包。数据包丢失率是由接收节点统计出的数据包丢失的比率,用于体现一段时间内的网络状况。相应地,本发明实施例的数据传送的方法进一步还包括:
步骤715:发送节点根据接收到的PACK,调整初始传输速率,使其与PACK指示的数据包接收速率相适应。
步骤717:发送节点基于调整之后的传输速率,继续向接收节点传输数据包;
步骤719:接收节点接收数据包,并重复以上步骤706-715。
可选地,如图9所示,在一个实施例中,PACK还包含:释放字段(Release SEQ),该字段的具体含义与NACK中的Release SEQ字段一样,均是为了指示发送节点及时释放接收节点已接收的数据包所占用的发送缓存。可选地,基于以上描述的任一实施例,在另一个实施例中,在步骤703之前,发送节点和接收节点还执行步骤701:初始化网络环境,以建立通信连接。
可选地,基于以上描述的任一实施例,在另一个实施例中,发送节点会记录已发送的数据包的随机序列号和滚动序列号的映射关系,比如,可以采用哈希表,或其它形式的映射表来存储该映射关系。进一步地,在一个实施例中,发送节点还执行步骤711:将已发送的数据包的随机序列号和滚动序列号的映射关系添加到所述映射表,以实现映射表的动态更新。
本发明实施例提供的数据传送方法及系统中,发送节点以相对固定的传输速率连续向接收节点传输数据包,接收节点检测到丢失数据包后即时发送丢包反馈信息给发送节点,以请求发送节点重传丢失数据包。这种发送节点主动‘推’数据包以及接收节点根据‘推’送过来的数据‘拉’丢失包的机制,在内存足够的情况下,不会像TCP一样,由于发送窗口、拥塞窗口等限制而造成有数据包不能发的现象,可以显著提高数据传输速率和带宽利用率,同时,由于数据包是以一定的速率发送的,可以减缓数据包瞬时注入网络。进一步地,基于双序列号传输数据包,使得接收节点可以快速检测丢失数据包;进一步地,通过在NACK中携带Release SEQ字段来快速释放可以释放的协议栈内存。进一步地,通过周期性的PACK控制包来解决HOL包导致接收缓存阻塞的问题。
下面结合图10来描述本发明一个优选的实施例中发送节点的工作流程,根据图10,发送节点将从上层应用程序接收到数据封装后写入发送缓存,其中,发送节点在封装数据包的时候会在数据包头部中添加前述实施例所描述的随机序列号和滚动序列号。如果发送节点当前接收到接收节点发送的NACK,则根据NACK中的丢包指示字段和释放字段,释放可释放的发送缓存,并把丢失包加入丢失包序列;如果发送节点当前接收到接收节点发送的PACK,则根据PACK携带的数据包接收速率和/或数据包丢失率,调整传输速率;如果发送节点当前既未接收到PACK,又未接收到NACK,则判断丢失序列是否为空,该丢失序列用于存放被接收节点判定为丢失的数据包,若丢失序列非空,则发送丢失序列中的丢失数据包;若丢失序列为空,则继续判断发送缓存是否为空,如果发送缓存非空,则按照特定传输速率从发送缓存发送数据包,如果发送缓存为空,则继续判断上层应用程序是否传输完毕,如果是,则关闭与接收节点之间建立的连接(如UDP连接),释放发送缓存,如果否,则继续等待从上层应用程序接收数据并执行上述流程。
相应地,下面结合图11来描述本发明一个优选的实施例中接收节点的工作流程,根据图11,接收节点接收到数据包后,判断当前已接收到的数据包是否可以提交给应用程序的连续数据包,如果是,则提交连续数据包给应用程序,并释放已提交的数据包所占用的发送/接收缓存,如果否,则接收节点判定有数据包丢失,发送NACK至发送节点,同时把当前接收到的数据包放入接收缓存,这里的连续数据包是指传输次序连续的数据包。进一步地,接收节点会启动一个PACK定时器(通常在接收到首个数据包后启动),如果定时器时间到,则会触发接收节点发送PACK,并将定时器清零,重新开始计时。如果应用程序完成了全部的数据包接收,则接收节点关闭与发送节点之间建立的连接(如UDP连接),释放接收缓存。
在本发明的一个实施例中,以上描述的图10和图11的流程可以分别由发送节点和接收节点的协议栈来实现。更具体地,在一个实施例中,图10和图11的流程可以由分别部署在发送节点和接收节点的加速协议(Fillp)来实现,从协议层级来看,Fillp可以在任何一层实现,比如在一个实施例中,Fillp可以介于网络层和物理层之间,或者在传输层协议之上(Fillp优选承载在UDP之上)。在另一个实施例中,以上描述的流程也可以直接由发送节点和接收节点的协议栈中的传输层协议(比如UDP)来实现,当然,需要对现有的传输层协议做功能扩展。在另一个实施例中,以上描述的流程也可以分别由部署在发送节点和接收节点的一个应用程序或应用程序插件来实现。
下面通过图12所示的示例来展示本发明实施例的数据传送系统中数据包发送和接收的详细流程,根据图12,该流程主要包括以下步骤:
步骤1:发送节点确定初始传输速率,并通过与接收节点之间建立的连接(优选UDP连接)以初始传输速率传输多个数据包,其中,发送节点会在每个数据包的包头里添加双序列号(随机序列号和滚动序列号PKT.SEQ,以下为描述简便,随机序列号用SEQ表示,滚动序列号用PKT表示),比如数据包1中的:SEQ=1,PKT=1;数据包中SEQ=2,PKT=2等。需要说明的是,为了便于理解,图12中我们假设每个数据包只带1byte的数据,因此相邻的数据包的随机序列号只相差1。可选地,发送节点会建立一个PKT.SEQ->SEQ的哈希(Hash)表。
步骤2:当接收节点收到第一个数据包(PKT=1)后,PACK计时器开始计时。
步骤3:由于链路原因,PKT=2,3,4的数据包丢失。SEQ=5,PKT=5的数据包被接收到,这时接收节点马上返回NACK,NACK中携带可释放内存release SEQ=1(PKT=1的数据包已经接收到),丢包指示字段NPKT=2至4(START=2,END=4)。这里接受节点可以根据滚动序列号更快的发现丢失的数据包,相比TCP来说,这时候TCP还无法做出判断丢包。
步骤4:发送节点继续传输数据包,SEQ=6,PKT=6的数据包又丢失。
步骤5:SEQ=7,PKT=7数据包被接收到,:接收节点马上发出NACK(release SEQ=1,NPKT=6)通知PKT=6的数据包丢失。
步骤6:接收节点之前发出的NACK(NPKT=2至4)被发送节点接收到,根据发送节点已经建立的PKT.SEQ->SEQ映射表,确定SEQ=2,3,4的数据包丢失,发送节点马上进入重传阶段:取出SEQ=2,3,4的数据,并赋予新的PKT.SEQ,重传。注意,这里SEQ=2,3,4的数据包对应的PKT已经变成了8,9,10,并且PKT.SEQ->SEQ映射表更新。进一步地,发送节点根据NACK中带的release SEQ=1,释放SEQ=1的数据包占用的发送缓存。
步骤7:接收节点接收到重传的SEQ=2,3,4,PKT=8,9,10的数据包。对比于TCP来说,TCP是不能一次性的把丢失包全部重发的,只是会重传序列号紧挨ACK number的一个丢失包,而本发明实施例的数据传送系统中,发送节点可以把确认的丢失包在某一时刻全部重发,重传的效率更高。
步骤8:发送节点接收到NACK(NPKT=6),和上面处理NACK方式一样,重发SEQ=6的数据包,重传的该数据包的SEQ不变,但是PKT更新成11。
步骤9:发送节点继续发送SEQ=8,PKT=12的数据包,假设由于链路问题,重传的SEQ=6,PKT=11的数据包又再次丢失。
步骤10:当收到SEQ=8,PKT=12的数据包时候,接收节点发出NACK(release SEQ=5,NPKT=11)来通知发送节点PTK=11的数据包又丢失了(这里是SEQ=6的重传包又丢失)。
步骤11:发送节点继续发送SEQ=9,10,PKT=13,14的数据包,并被接收方接收到。
步骤12:发送节点收到NACK(release SEQ=5,NPKT=11),通过映射表查询,发现重传的SEQ=6又丢失了,再次重传,PKT更新为PKT=15。同时根据release SEQ=5,释放掉SEQ=2至5的数据包占用的发送缓存。
步骤13:接受节点接收到SEQ=6,PKT=15的数据包(SEQ=6的数据包一共重传了2次)。
步骤14:发送节点发送SEQ=11,PKT=16和SEQ=12,PKT=17数据包,由于链路质量,SEQ=11的数据包丢失。
步骤15:接收节点接收到SEQ=12,PKT=17的数据包后判断出PKT=16的数据包丢失,发送NACK(release SEQ=10,NPKT=16)。
步骤16:发送节点发送SEQ=13,PKT=18和SEQ=14,PKT=19的数据包。
步骤17:接收节点接收到SEQ=13,PKT=18的数据包。这时候,由于PACK计时器到时,接收节点发送PACK,由于在接收缓存中SEQ=11的数据包缺失,导致接收缓存中的数据不连续,无法及时提交给应用程序并释放接收缓存,所以在PACK中Nseq=11,通知发送方SEQ=11的数据包没有收到,这个SEQ就是HOL包的SEQ。PACK发送结束后,PACK计时器归0,重新计时。
步骤18:发送节点收到NACK(release SEQ=10,NPKT=16),查询映射表,得知SEQ=11的数据包丢失,重传SEQ=11的数据包,重传的数据包PKT更新为20。释放SEQ=6至10的数据包占用的发送缓存。
步骤19:发送节点接收到PACK(release SEQ=10,Nseq=11),发现SEQ=11的包丢失,成为阻塞接收缓存的HOL包,重发SEQ=11,PKT=21的数据包。进一步地,发送节点根据PACK中携带的接收速率和/或数据包丢失率信息,调整传输速率。
步骤20:接收节点接收到SEQ=11,PKT=20的数据包,又接收到SEQ=11,PKT=21的数据包,丢弃。
从以上流程可以看出,发送节点的发包速率是固定的,属于匀速发送,对比与TCP的窗口发送,不会造成瞬时注入网络的数据包过多而导致的拥塞问题。进一步地,双序列号机制可以在一个RTT内发现任意丢失数据包,相对于TCP来说,判断方法也比较简单,相对于TCP使用的超时重传,节约了更多时间。
下面描述本发明的装置实施例,如图2所示,本发明实施例一方面提供一种发送节点110,包括:处理器120、协议栈130、通信接口140和存储器150,其中,处理器120具体可以包括通用处理器,数字信号处理器(digital signal processor,DSP),专用集成电路(Application-specific integrated circuit,ASIC),现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或其它可编程逻辑组件。存储器150可以包括计算机可读存储介质,如磁存储设备(例如,硬盘,软盘,磁条),光存储介质(例如,数字多功能盘(DVD)),智能卡,闪存设备,随机存取存储器(RAM),只读存储器(read-only memory,ROM),可编程只读存储器(programmable read-only memory,PROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM),寄存器,以及它们的任意组合。通信接口140具体包括:发射电路142和接收电路146;发送节点110的存储器150中存储有应用程序121,应用程序121可被处理器执行,以实现特定业务功能。协议栈130通常由软件实现,例如以可执行程序的形式存储在存储器150中,被处理器执行以实现数据处理、发送和接收。在某些场景下,协议栈130也可以由FPGA或ASIC等硬件电路或专用芯片来实现。具体地,在一个实施例中,应用程序121在被处理器执行的过程中,一方面可以调用应用程序编程接口(Application Programming Interface,API)将数据传递给协议栈130,协议栈130在接收到数据后,根据协议规范对数据进行封装等处理,然后通过系统函数调用内核中的硬件驱动程序,以驱动相关的硬件,比如发射电路142将数据包发送出去。另一方面接收电路146在接收到数据包之后,在硬件驱动程序的作用下会将接收事件上报给内核,内核会调用协议栈130对数据进行处理。其中,协议栈130的传输、接收及处理数据的过程请参见图3至图12所示实施例中发送节点的工作流程,不再赘述。进一步地,存储器150包括内存,该内存的全部或部分空间作为协议栈130的发送缓存。
另一方面,参见图2,本发明实施例还提供一种接收节点20,包括:协议栈21、处理器、通信接口和存储器(图中未示出),其中,通信接口具体包括:发射电路和接收电路;其中协议栈21、处理器、通信接口和存储器的具体形态与发送节点110的协议栈、处理器、通信接口和存储器类似,相关工作过程可以参照前述实施例的描述。进一步地,接收节点20的协议栈21发送/接收、处理数据包的过程请参见图3至图12所示实施例中接收节点的工作流程,不再赘述。
本发明实施例还提供一种数据传送系统,如图13所示,包括:发送节点13和接收节点23,其中,发送节点13和接收节点23上分别运行有应用程序131和应用程序22。
其中,发送节点13包括:发送单元133、处理单元132和接收单元131,其中,处理单元132用于将发送节点13上运行的应用程序的数据封装成多个数据包,发送单元133用于以初始传输速率通过向接收节点传输多个数据包,接收单元131用于接收来自接收节点23的丢包反馈信息,发送单元133还用于,基于接收到的丢包反馈信息重传丢失数据包;其中,重传的数据包携带有新的滚动序列号。接收节点23包括:发送单元231、处理单元232以及接收单元233,其中,接收单元233用于接收发送节点13以初始传输速率传输的多个数据包,处理单元232用于实现根据接收单元233接收到的数据包的滚动序列号检测出至少一个丢失数据包后,通过发送单元231向发送节点13发送丢包反馈信息,以指示发送节点13重传丢失数据包。需要说明的是,发送单元133、处理单元132和接收单元131还用于配合实现上述各方法实施例中发送节点的功能;发送单元133在处理单元132的控制下进行数据包的发送,接收单元131在处理单元132的控制下进行数据包的接收,处理单元132还用于根据接收到的控制包确定丢失数据包,并控制发送单元进行数据包重传,可选地,处理单元还可以根据接收单元131收到的控制包进行数据传输速率的调整。相应地,发送单元231、处理单元232以及接收单元233还用于配合实现上述各方法实施例中接收节点的功能,各单元的功能划分与发送节点13类似,或者采用其他本领域技术人员通用的划分方式。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件(例如处理器)来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。本发明实施例所使用的术语“程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应用,软件包,线程,进程,函数,固件,中间件等。
以上对本发明实施例所提供的报文传输方法、系统及用户设备和服务器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (59)
1.一种数据传输方法,其特征在于,包括:
发送节点以初始传输速率向接收节点传输多个数据包,所述多个数据包中的每个数据包都携带有随机序列号和滚动序列号;其中,所述随机序列号与所述数据包的数据部分相关,所述滚动序列号与所述数据包的传输次序相关;
所述发送节点接收所述接收节点发送的丢包反馈信息,所述丢包反馈信息用于指示重传丢失数据包;
所述发送节点根据接收到的所述丢包反馈信息中的指示,重传至少一个丢失数据包;其中,重传的数据包携带有新的滚动序列号。
2.根据权利要求1所述的方法,其特征在于,所述丢包反馈信息包含所述至少一个丢失数据包的随机序列号或滚动序列号信息。
3.根据权利要求1或2所述的方法,其特征在于,所述至少一个丢失数据包包括第一丢失数据包,所述丢包反馈信息为NACK控制包,所述NACK控制包携带所述第一丢失数据包的滚动序列号;所述重传所述至少一个丢失数据包包括:所述发送节点基于接收到的所述NACK控制包所携带的滚动序列号,以及所述发送节点已发送的数据包的随机序列号和滚动序列号之间的映射关系,确定所述至少第一丢失数据包的随机序列号;从发送缓存中确定与所述第一丢失数据包的随机序列号对应的数据包并重传。
4.根据权利要求1或2所述的方法,其特征在于,所述至少一个丢失数据包包括多个连续的第二丢失数据包;所述丢包反馈信息为NACK控制包,所述NACK控制包包含丢包开始字段和丢包结束字段,其中,所述丢包开始字段和丢包结束字段分别用于携带所述多个连续的第二丢失数据包中首包和尾包的滚动序列号。
5.根据权利要求3所述的方法,其特征在于,所述NACK控制包还包含:释放字段,所述释放字段用于携带所述接收节点已接收到的数据包的随机序列号或滚动序列号。
6.根据权利要求4所述的方法,其特征在于,所述NACK控制包还包含:释放字段,所述释放字段用于携带所述接收节点已接收到的数据包的随机序列号或滚动序列号。
7.根据权利要求5所述的方法,其特征在于,还包括:所述发送节点从发送缓存中释放所述NACK控制包的释放字段所指向的数据包。
8.根据权利要求6所述的方法,其特征在于,还包括:所述发送节点从发送缓存中释放所述NACK控制包的释放字段所指向的数据包。
9.根据权利要求1或2所述的方法,其特征在于,还包括:
所述发送节点接收PACK控制包,所述PACK控制包是由所述接收节点周期性发送的,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号,其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述发送节点重传与所述PACK控制包携带的随机序列号对应的数据包。
10.根据权利要求3所述的方法,其特征在于,还包括:
所述发送节点接收PACK控制包,所述PACK控制包是由所述接收节点周期性发送的,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号,其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述发送节点重传与所述PACK控制包携带的随机序列号对应的数据包。
11.根据权利要求4所述的方法,其特征在于,还包括:
所述发送节点接收PACK控制包,所述PACK控制包是由所述接收节点周期性发送的,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号,其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述发送节点重传与所述PACK控制包携带的随机序列号对应的数据包。
12.根据权利要求5所述的方法,其特征在于,还包括:
所述发送节点接收PACK控制包,所述PACK控制包是由所述接收节点周期性发送的,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号,其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述发送节点重传与所述PACK控制包携带的随机序列号对应的数据包。
13.根据权利要求6所述的方法,其特征在于,还包括:
所述发送节点接收PACK控制包,所述PACK控制包是由所述接收节点周期性发送的,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号,其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述发送节点重传与所述PACK控制包携带的随机序列号对应的数据包。
14.根据权利要求7所述的方法,其特征在于,还包括:
所述发送节点接收PACK控制包,所述PACK控制包是由所述接收节点周期性发送的,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号,其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述发送节点重传与所述PACK控制包携带的随机序列号对应的数据包。
15.根据权利要求8所述的方法,其特征在于,还包括:
所述发送节点接收PACK控制包,所述PACK控制包是由所述接收节点周期性发送的,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号,其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述发送节点重传与所述PACK控制包携带的随机序列号对应的数据包。
16.根据权利要求9所述的方法,其特征在于,所述PACK控制包还携带有数据包接收速率或数据包丢失率;所述方法还包括:所述发送节点根据所述数据包接收速率或数据包丢失率,调整所述初始传输速率,调整后的传输速率与所述数据包接收速率或数据包丢失率相适应。
17.一种数据传输方法,其特征在于,包括:
接收节点接收发送节点传输的多个数据包,所述多个数据包中的每个数据包都携带有随机序列号和滚动序列号;其中,所述随机序列号与所述数据包的数据部分相关,所述滚动序列号与所述数据包的传输次序相关;
所述接收节点根据所述多个数据包的滚动序列号检测出至少一个丢失数据包,并向所述发送节点发送丢包反馈信息,所述丢包反馈信息用于指示所述发送节点重传所述至少一个丢失数据包;
所述接收节点接收所述发送节点根据所述丢包反馈信息重传的数据包;其中,所述重传的数据包携带有新的滚动序列号。
18.根据权利要求17所述的方法,其特征在于,所述丢包反馈信息包含所述至少一个丢失数据包的随机序列号或滚动序列号信息。
19.根据权利要求17或18所述的方法,其特征在于,所述至少一个丢失数据包包括第一丢失数据包,所述丢包反馈信息为NACK控制包,所述NACK控制包携带所述第一丢失数据包的滚动序列号。
20.根据权利要求17或18所述的方法,其特征在于,所述至少一个丢失数据包包括多个连续的第二丢失数据包;所述丢包反馈信息为NACK控制包,所述NACK控制包包括:丢包开始字段和丢包结束字段,其中,所述丢包开始字段和丢包结束字段分别用于携带所述多个连续的第二丢失数据包中首包和尾包的滚动序列号。
21.根据权利要求19所述的方法,其特征在于,所述NACK控制包还包含:释放字段,所述释放字段携带有所述接收节点已接收到的数据包的随机序列号或滚动序列号。
22.根据权利要求20所述的方法,其特征在于,所述NACK控制包还包含:释放字段,所述释放字段携带有所述接收节点已接收到的数据包的随机序列号或滚动序列号。
23.根据权利要求17或18所述的方法,其特征在于,还包括:
所述接收节点向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收节点接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
24.根据权利要求19所述的方法,其特征在于,还包括:
所述接收节点向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收节点接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
25.根据权利要求20所述的方法,其特征在于,还包括:
所述接收节点向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收节点接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
26.根据权利要求21所述的方法,其特征在于,还包括:
所述接收节点向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收节点接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
27.根据权利要求22所述的方法,其特征在于,还包括:
所述接收节点向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收节点接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
28.根据权利要求23所述的方法,其特征在于,所述PACK控制包还携带有数据包接收速率或数据包丢失率,其中,所述数据包接收速率用于表示所述接收节点接收数据包的速率,或者所述接收节点从接收缓存读取数据包的速率。
29.一种发送节点,其特征在于,包括:处理单元、发送单元和接收单元;
所述处理单元用于,将应用程序的数据封装成多个数据包;
所述发送单元用于,以初始传输速率向接收节点传输所述多个数据包,其中,所述多个数据包中的每个数据包都携带有随机序列号和滚动序列号;所述随机序列号与所述数据包的数据部分相关,所述滚动序列号与所述数据包的传输次序相关;
所述接收单元用于,接收来自所述接收节点的丢包反馈信息,所述丢包反馈信息用于指示重传丢失数据包;
所述发送单元还用于,根据接收到的所述丢包反馈信息中的指示,重传至少一个丢失的数据包;其中,重传的数据包携带有新的滚动序列号。
30.根据权利要求29所述的发送节点,其特征在于,所述丢包反馈信息包含所述至少一个丢失数据包的随机序列号或滚动序列号信息。
31.根据权利要求29或30所述的发送节点,其特征在于,所述至少一个丢失数据包包括第一丢失数据包,所述丢包反馈信息为NACK控制包,所述NACK控制包携带所述第一丢失数据包的滚动序列号;所述处理单元还用于,基于所述NACK控制包所携带的滚动序列号,以及已发送的数据包的随机序列号和滚动序列号之间的映射关系,确定所述至少一个丢失数据包的随机序列号。
32.根据权利要求29或30所述的发送节点,其特征在于,所述至少一个丢失数据包包括多个连续的第二丢失数据包;所述丢包反馈信息为NACK控制包,所述NACK控制包包括:丢包开始字段和丢包结束字段,其中,所述丢包开始字段和丢包结束字段分别用于携带所述多个连续的第二丢失数据包中首包和尾包的滚动序列号。
33.根据权利要求31所述的发送节点,其特征在于,所述NACK控制包还包含:释放字段,所述释放字段用于携带所述接收节点已接收到的数据包的随机序列号或滚动序列号。
34.根据权利要求32所述的发送节点,其特征在于,所述NACK控制包还包含:释放字段,所述释放字段用于携带所述接收节点已接收到的数据包的随机序列号或滚动序列号。
35.根据权利要求33所述的发送节点,其特征在于,还包括内存,所述内存的全部或部分用作发送缓存;所述处理单元用于,从所述发送缓存中释放所述NACK控制包的释放字段所指向的数据包。
36.根据权利要求34所述的发送节点,其特征在于,还包括内存,所述内存的全部或部分用作发送缓存;所述处理单元用于,从所述发送缓存中释放所述NACK控制包的释放字段所指向的数据包。
37.根据权利要求29或30所述的发送节点,其特征在于,所述接收单元还用于,接收所述接收节点发送的PACK控制包,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;所述发送单元还用于,重传与所述PACK控制包携带的随机序列号对应的数据包;其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种。
38.根据权利要求31所述的发送节点,其特征在于,所述接收单元还用于,接收所述接收节点发送的PACK控制包,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;所述发送单元还用于,重传与所述PACK控制包携带的随机序列号对应的数据包;其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种。
39.根据权利要求32所述的发送节点,其特征在于,所述接收单元还用于,接收所述接收节点发送的PACK控制包,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;所述发送单元还用于,重传与所述PACK控制包携带的随机序列号对应的数据包;其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种。
40.根据权利要求33所述的发送节点,其特征在于,所述接收单元还用于,接收所述接收节点发送的PACK控制包,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;所述发送单元还用于,重传与所述PACK控制包携带的随机序列号对应的数据包;其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种。
41.根据权利要求34所述的发送节点,其特征在于,所述接收单元还用于,接收所述接收节点发送的PACK控制包,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;所述发送单元还用于,重传与所述PACK控制包携带的随机序列号对应的数据包;其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种。
42.根据权利要求35所述的发送节点,其特征在于,所述接收单元还用于,接收所述接收节点发送的PACK控制包,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;所述发送单元还用于,重传与所述PACK控制包携带的随机序列号对应的数据包;其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种。
43.根据权利要求36所述的发送节点,其特征在于,所述接收单元还用于,接收所述接收节点发送的PACK控制包,其中,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;所述发送单元还用于,重传与所述PACK控制包携带的随机序列号对应的数据包;其中,所述缺失的数据包包括未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种。
44.根据权利要求37所述的发送节点,其特征在于,所述PACK控制包还携带有数据包接收速率或数据包丢失率;所述处理单元还用于,根据所述数据包接收速率或数据包丢失率,调整所述初始传输速率,使其与所述数据包接收速率或数据包丢失率相适应。
45.一种接收节点,其特征在于,包括:处理单元,发送单元和接收单元;
所述接收单元用于,接收发送节点传输的多个数据包,其中,每个数据包都携带有随机序列号和滚动序列号;其中,所述随机序列号与所述数据包的数据部分相关,所述滚动序列号与所述数据包的传输次序相关;
所述处理单元用于,根据所述多个数据包的滚动序列号检测出至少一个丢失数据包后生成丢包反馈信息,所述丢包反馈信息用于指示所述发送节点重传所述至少一个丢失数据包;
所述发送单元用于,向所述发送节点发送所述丢包反馈信息;
所述接收单元还用于,接收所述发送节点根据所述丢包反馈信息重传的数据包;其中,所述重传的数据包携带有新的滚动序列号。
46.根据权利要求45所述的接收节点,其特征在于,所述丢包反馈信息包含所述至少一个丢失数据包的随机序列号或滚动序列号信息。
47.根据权利要求45或46所述的接收节点,其特征在于,所述至少一个丢失数据包包括第一丢失数据包,所述丢包反馈信息为NACK控制包,所述NACK控制包携带所述第一丢失数据包的滚动序列号。
48.根据权利要求45或46所述的接收节点,其特征在于,所述至少一个丢失数据包包括多个连续的第二丢失数据包;所述丢包反馈信息为NACK控制包,所述NACK控制包包括:丢包开始字段和丢包结束字段,其中,所述丢包开始字段和丢包结束字段分别用于携带所述多个连续的第二丢失数据包中首包和尾包的滚动序列号。
49.根据权利要求47所述的接收节点,其特征在于,所述NACK控制包还包含:释放字段,所述释放字段携带有所述接收节点已接收到的数据包的随机序列号或滚动序列号。
50.根据权利要求48所述的接收节点,其特征在于,所述NACK控制包还包含:释放字段,所述释放字段携带有所述接收节点已接收到的数据包的随机序列号或滚动序列号。
51.根据权利要求45或46所述的接收节点,其特征在于,所述发送单元还用于,向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收单元还用于,接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
52.根据权利要求47所述的接收节点,其特征在于,所述发送单元还用于,向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收单元还用于,接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
53.根据权利要求48所述的接收节点,其特征在于,所述发送单元还用于,向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收单元还用于,接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
54.根据权利要求49所述的接收节点,其特征在于,所述发送单元还用于,向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收单元还用于,接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
55.根据权利要求50所述的接收节点,其特征在于,所述发送单元还用于,向所述发送节点周期性发送PACK控制包,所述PACK控制包携带有所述接收节点的接收缓存中缺失的数据包的随机序列号;其中,所述缺失的数据包包括:未被所述发送节点感知的丢失数据包,和重传后再次丢失的数据包中的至少一种;
所述接收单元还用于,接收所述发送节点响应于所述PACK控制包重传的所述缺失的数据包。
56.根据权利要求51所述的接收节点,其特征在于,所述PACK控制包还携带数据包接收速率或数据包丢失率,其中所述数据包接收速率用于表示所述接收节点接收数据包的速率,或者所述接收节点从接收缓存读取数据包的速率。
57.一种数据传送系统,其特征在于,包括如权利要求29至44任一项所述的发送节点,以及如权利要求45至56任一项所述的接收节点。
58.一种计算机可读存储介质,所述存储介质上存储有程序,其特征在于,所述程序被处理器执行时实现如权利要求1至16任一项所述方法的步骤。
59.一种计算机可读存储介质,所述存储介质上存储有程序,其特征在于,所述程序被处理器执行时实现如权利要求17至28任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811262174.XA CN109327288B (zh) | 2015-12-14 | 2015-12-14 | 数据传输加速方法、装置及系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510926077.6A CN106878191B (zh) | 2015-12-14 | 2015-12-14 | 一种数据传送方法、发送节点、接收节点及数据传送系统 |
CN201811262174.XA CN109327288B (zh) | 2015-12-14 | 2015-12-14 | 数据传输加速方法、装置及系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510926077.6A Division CN106878191B (zh) | 2015-12-14 | 2015-12-14 | 一种数据传送方法、发送节点、接收节点及数据传送系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109327288A CN109327288A (zh) | 2019-02-12 |
CN109327288B true CN109327288B (zh) | 2023-11-10 |
Family
ID=59055674
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510926077.6A Active CN106878191B (zh) | 2015-12-14 | 2015-12-14 | 一种数据传送方法、发送节点、接收节点及数据传送系统 |
CN201811262174.XA Active CN109327288B (zh) | 2015-12-14 | 2015-12-14 | 数据传输加速方法、装置及系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510926077.6A Active CN106878191B (zh) | 2015-12-14 | 2015-12-14 | 一种数据传送方法、发送节点、接收节点及数据传送系统 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10701616B2 (zh) |
EP (2) | EP3370376B1 (zh) |
KR (2) | KR102109021B1 (zh) |
CN (2) | CN106878191B (zh) |
BR (1) | BR112018010735A8 (zh) |
WO (1) | WO2017101503A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3252979B1 (en) * | 2016-06-03 | 2019-01-30 | Mitsubishi Electric R&D Centre Europe B.V. | Requesting retransmission of data in a multicast network |
WO2018024315A1 (en) * | 2016-08-02 | 2018-02-08 | Telecom Italia S.P.A. | Dynamic bandwidth control over a variable link |
CN109257138B (zh) * | 2017-07-13 | 2020-11-17 | 华为技术有限公司 | 一种数据传输控制方法以及相关设备 |
CN107395441A (zh) * | 2017-08-31 | 2017-11-24 | 江苏省公用信息有限公司 | 一种检测网络丢包状况的方法 |
CN108494698B (zh) * | 2017-12-13 | 2022-02-25 | 天地伟业技术有限公司 | 一种基于传输速率的拥塞控制方法 |
CN108512774A (zh) * | 2018-04-18 | 2018-09-07 | 清华大学 | 无丢失网络中的拥塞控制方法 |
CN110943933B (zh) * | 2018-09-25 | 2023-09-01 | 华为技术有限公司 | 一种实现数据传输的方法、装置和系统 |
FR3086824A1 (fr) * | 2018-10-02 | 2020-04-03 | Orange | Procede de preservation d'un debit d'emission de donnees d'un terminal dans un reseau de communications |
CN111385523B (zh) * | 2018-12-27 | 2022-10-28 | 北京图森智途科技有限公司 | 一种数据接收方法、图像处理设备和汽车 |
CN109605383B (zh) * | 2019-01-29 | 2021-05-28 | 达闼机器人有限公司 | 一种信息通信方法、机器人及存储介质 |
CN111740808B (zh) * | 2019-03-25 | 2022-07-22 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN111835651B (zh) * | 2019-04-19 | 2022-03-18 | 上海哔哩哔哩科技有限公司 | 数据写入方法、系统、设备及计算机可读存储介质 |
CN110311847B (zh) * | 2019-06-26 | 2022-08-05 | 北京和利时系统集成有限公司 | 一种批量数据传输方法和装置 |
CN112217686B (zh) | 2019-07-12 | 2022-12-27 | 华为技术有限公司 | 一种评估往返时延的系统、方法及装置 |
CN110417644A (zh) * | 2019-07-29 | 2019-11-05 | 中国工商银行股份有限公司 | 即时通讯的消息发送方法及装置 |
CN111615006B (zh) * | 2020-05-29 | 2022-02-01 | 北京讯众通信技术股份有限公司 | 基于网络状态自评估的视频编码转换传输控制系统 |
CN113938945B (zh) * | 2020-06-29 | 2023-11-28 | 华为技术有限公司 | 数据包发送的方法、装置 |
CN114070459B (zh) * | 2020-08-04 | 2023-11-07 | 成都鼎桥通信技术有限公司 | 数据传输方法、装置、终端设备和存储介质 |
CN112165355B (zh) * | 2020-10-23 | 2022-03-22 | 中国电子科技集团公司第三十研究所 | 一种面向卫星网络的基于udp的可靠数据传输方法 |
CN112953835B (zh) * | 2021-01-18 | 2023-03-14 | 广州三七互娱科技有限公司 | 数据传输方法、装置及系统 |
CN114979015B (zh) * | 2021-02-19 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 一种数据包的处理方法及装置 |
CN113132069A (zh) * | 2021-03-22 | 2021-07-16 | 合肥富煌君达高科信息技术有限公司 | 一种丢包重传的通信机制及基于fpga实现其的方法 |
CN115150372B (zh) * | 2021-03-31 | 2024-03-15 | 海能达通信股份有限公司 | 一种防止呼叫中语音丢失的方法、通信系统及终端 |
CN113572582B (zh) * | 2021-07-15 | 2022-11-22 | 中国科学院计算技术研究所 | 数据发送、重传控制方法及系统、存储介质及电子设备 |
CN113595694B (zh) * | 2021-09-28 | 2022-04-01 | 阿里巴巴(中国)有限公司 | 数据的传输方法、计算设备及存储介质 |
CN113992654A (zh) * | 2021-10-22 | 2022-01-28 | 西安热工研究院有限公司 | 一种高速的文件传输方法、系统、设备及介质 |
CN114337942B (zh) * | 2021-12-29 | 2023-06-13 | 伟乐视讯科技股份有限公司 | 一种报文重传方法、装置及电子设备 |
CN114257350A (zh) * | 2021-12-31 | 2022-03-29 | 广东省教育研究院 | 传输质量优化方法、装置及传输系统 |
CN114676083B (zh) * | 2022-03-30 | 2024-02-23 | 深圳唯创知音电子有限公司 | 一种具有较强抗干扰能力的两线串口控制方法 |
CN115118632B (zh) * | 2022-06-21 | 2024-02-06 | 中电信数智科技有限公司 | 一种基于云网融合的主机丢包自动检测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101588225A (zh) * | 2009-06-25 | 2009-11-25 | 杭州再灵电子科技有限公司 | 一种基于分组交换网络的快速重传技术 |
CN101729228A (zh) * | 2008-10-31 | 2010-06-09 | 华为技术有限公司 | 丢包抑制重传的方法、网络节点和系统 |
CN103152359A (zh) * | 2013-03-25 | 2013-06-12 | 重庆大学 | 一种端到端无线传输控制协议线性网络编码的改进方法 |
CN103684787A (zh) * | 2013-12-13 | 2014-03-26 | 北京大学深圳研究生院 | 基于网络传输的数据包的加密解密方法及终端 |
CN104113722A (zh) * | 2014-06-19 | 2014-10-22 | 南京熊猫电子股份有限公司 | 一种无线视频会议传输方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526022B1 (en) * | 1998-06-30 | 2003-02-25 | Sun Microsystems | Detecting congestion by comparing successive loss of packets in windows to provide congestion control in reliable multicast protocol |
US7035285B2 (en) * | 2000-04-07 | 2006-04-25 | Broadcom Corporation | Transceiver method and signal therefor embodied in a carrier wave for a frame-based communications network |
EP1638238A1 (en) * | 2004-09-15 | 2006-03-22 | Siemens Aktiengesellschaft | Method for combining data packets by a telecommunication device |
US8214707B2 (en) | 2007-06-26 | 2012-07-03 | Aspera, Inc. | Method and system for reliable data transfer |
CN101179362B (zh) * | 2006-11-07 | 2012-07-11 | 中兴通讯股份有限公司 | 适宜移动流媒体应用的自动重传请求机制 |
US8068491B2 (en) * | 2008-02-13 | 2011-11-29 | Telcordia Technologies, Inc. | Methods for reliable multicasting in local peer group (LPG) based vehicle ad hoc networks |
CN102025717B (zh) * | 2010-09-10 | 2013-09-11 | 香港城市大学深圳研究院 | 一种传输多媒体数据的方法 |
US9210609B2 (en) * | 2011-05-30 | 2015-12-08 | Megachips Corporation | Communication system |
US9386127B2 (en) * | 2011-09-28 | 2016-07-05 | Open Text S.A. | System and method for data transfer, including protocols for use in data transfer |
US20130250853A1 (en) * | 2012-03-20 | 2013-09-26 | Qualcomm Incorporated | Methods and apparatuses to improve round trip time in transfer control protocol using accelerated acknowledgement messages |
-
2015
- 2015-12-14 CN CN201510926077.6A patent/CN106878191B/zh active Active
- 2015-12-14 CN CN201811262174.XA patent/CN109327288B/zh active Active
-
2016
- 2016-08-26 KR KR1020187016871A patent/KR102109021B1/ko active IP Right Grant
- 2016-08-26 EP EP16874563.6A patent/EP3370376B1/en active Active
- 2016-08-26 EP EP20206839.1A patent/EP3855688B1/en active Active
- 2016-08-26 WO PCT/CN2016/096957 patent/WO2017101503A1/zh active Application Filing
- 2016-08-26 KR KR1020207012792A patent/KR102249741B1/ko active IP Right Grant
- 2016-08-26 BR BR112018010735A patent/BR112018010735A8/pt active Search and Examination
-
2018
- 2018-06-11 US US16/005,664 patent/US10701616B2/en active Active
-
2020
- 2020-05-19 US US16/878,567 patent/US11272420B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101729228A (zh) * | 2008-10-31 | 2010-06-09 | 华为技术有限公司 | 丢包抑制重传的方法、网络节点和系统 |
CN101588225A (zh) * | 2009-06-25 | 2009-11-25 | 杭州再灵电子科技有限公司 | 一种基于分组交换网络的快速重传技术 |
CN103152359A (zh) * | 2013-03-25 | 2013-06-12 | 重庆大学 | 一种端到端无线传输控制协议线性网络编码的改进方法 |
CN103684787A (zh) * | 2013-12-13 | 2014-03-26 | 北京大学深圳研究生院 | 基于网络传输的数据包的加密解密方法及终端 |
CN104113722A (zh) * | 2014-06-19 | 2014-10-22 | 南京熊猫电子股份有限公司 | 一种无线视频会议传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106878191B (zh) | 2018-11-16 |
KR20180082571A (ko) | 2018-07-18 |
EP3370376B1 (en) | 2021-04-28 |
US20200280902A1 (en) | 2020-09-03 |
EP3370376A1 (en) | 2018-09-05 |
KR102109021B1 (ko) | 2020-05-11 |
EP3370376A4 (en) | 2018-11-07 |
US10701616B2 (en) | 2020-06-30 |
EP3855688A1 (en) | 2021-07-28 |
WO2017101503A1 (zh) | 2017-06-22 |
US20180295555A1 (en) | 2018-10-11 |
BR112018010735A8 (pt) | 2019-02-26 |
EP3855688B1 (en) | 2023-10-11 |
KR102249741B1 (ko) | 2021-05-07 |
CN106878191A (zh) | 2017-06-20 |
BR112018010735A2 (zh) | 2018-11-13 |
CN109327288A (zh) | 2019-02-12 |
US11272420B2 (en) | 2022-03-08 |
KR20200051059A (ko) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109327288B (zh) | 数据传输加速方法、装置及系统 | |
US11153041B2 (en) | Packet transmission method and user equipment | |
KR102203509B1 (ko) | 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템 | |
US20220337528A1 (en) | Data Transmission Method, Computing Device, Network Device, and Data Transmission System | |
US20220014312A1 (en) | Data transmission method and apparatus | |
JP5523350B2 (ja) | Tcpフロー制御のための方法及び装置 | |
KR20190073479A (ko) | 메시지들을 송신하기 위한 방법 및 디바이스, 칩 및 단말 | |
US10932159B2 (en) | Data transmission method, data receiving device, and data sending device | |
WO2019128964A1 (zh) | 一种实现丢包检测的方法、装置和系统 | |
WO2012083762A1 (zh) | 数据传输方法、设备及系统 | |
CN104580171B (zh) | Tcp协议的传输方法、装置和系统 | |
WO2020154872A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |