一种流式数据传输控制方法
技术领域
本发明专利涉及通信数据传输控制,具体涉及一种流式数据传输控制方法。
背景技术
目前,在端对端数据传输服务的构建上,网络主要提供了两类服务模型:一类是面向链接,提供有序、可靠的数据交付服务,典型的代表为基于TCP(传输控制协议)进行数据传输;另一类是面向无连接,提供无序、不可靠的数据传输交付服务,典型代表为基于UDP(用户数据报协议)进行数据传输。
TCP传输协议通过复杂的设计,能够建立端到端的双向链接,提供有序可靠的流式数据传输服务,并能够根据网络的负载和拥塞情况,动态地调整数据的发送速率。
而UDP协议则值提供了非常原始和简单的数据发送和侦听接口,只提供了尽力而为的数据传输能力。如果需要有序、可靠的数据数据交付,需要由应用自己实现。于此同时,UDP 协议本身也不包含拥塞控制机制。
随着网络应用的持续丰富,新兴的应用(如流媒体应用)对网络传输的服务模型提出了新的需求,这些新的传输需求不需要完全可靠的数据交付,但也不希望数据传输完全不可靠。
发明内容
本发明的目的是提供一种可通过调整数据的发送精度从而确保数据传输进度的流式数据传输控制方法。
为了实现上述目的,本申请采用的技术方案是一种流式数据传输控制方法,包括以下操作:
1)将数据分割为数据段,按数据重要程度将各数据段分为多个等级,设定精度等级阈值;
2)使用拥塞窗口与往返时延的比值作为数据的最佳发送速率估计值,根据该值计算并更新各精度等级数据段的发送概率;
3)按照TCP的数据发送机制依次发送被选中的数据段;
4)根据ACK反馈估计网络的拥塞状况和可用带宽,以此更新拥塞窗口,并使拥塞窗口的值≤数据段的期望发送速率*往返时延;其中,
当数据段等级值<精度等级阈值时,该数据为基础精度数据;
当数据段等级值≥精度等级阈值时,该数据为增强精度数据;
当被选中的基础精度数据ACK(Acknowledgement,确认字符)超时,则进行重传,并更新拥塞窗口和各精度等级数据段的发送概率;
当被选中的增强精度数据ACK超时,不进行重传,只更新拥塞窗口和各精度等级数据段的发送概率;
当收到的ACK中包含ECN标记,则更新拥塞窗口和各精度等级数据段的发送概率。
应用需要进行流式传输的数据分为多个数据等级,其中一部分需要可靠、有序的数据交付,而另外一部分可以容忍非可靠的数据交付;应用希望网络提供一种介于两者之间的“半可靠”传输控制协议。该协议一方面可以保证可靠数据有序、可靠交付,另一方面能够根据传输路径中链路的负载情况,动态地调整非可靠数据传输的精度。
这种传输协议既能提供比UDP更高级的传输服务,又比TCP更简单,能更充分地利用网络带宽,更好地满足应用的数据传输需求。
上述的ECN(Explicit Congestion Notification)即显式拥塞通告,是某些版本的TCP 用来让中间设备提前告知发送者网络出现拥塞的机制。上述的一个数据段即对应TCP报文中的数据段(segment)。
进一步的是,数据段发送过程中,利用SYN报文和ACK报文的TCP options中的保留字段,按照预设流程协商和确认任务的最大精度分级数目、精度等级阈值和期望发送速率。SYN 即同步序列编号(Synchronize Sequence Numbers),为同步标志,标志仅在三次握手建立TCP 连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。ACK即确认编号(Acknowledgement Number)。TCP报头内的确认编号栏内包含的确认编号为下一个预期的序列编号,同时提示远端***已经成功接收该编号之前的所有数据。
进一步的是,所述预设流程包含以下操作:
最大精度分级数目、精度等级阈值和期望发送速率的协商发生在TCP链接建立阶段;此时,发送端在SYN的TCP options字段中携带P值和RD_MAX值分别表示发送端能够支持的最大精度分级数目以及最大期望发送速率;以及PD_DEFAULT和RD_DEFAULT表示发送端推荐使用的最大精度分级数目和期望发送速率;
其中,接收端将收到的P、RD_MAX、PD_DEFAULT、RD_DEFAULT值保存在本地;对SYN报文进行ACK过程中,接收端将所需的精度等级阈值和所需的期望发送速率,通过ACK报文的TCP options,向发送端确认;
其中,接收端反馈的精度等级阈值<发送端通告的最大精度分级数目,期望发送速率≤发送端通告的RD_MAX值;
如果接收端不反馈,发送端默认采用PD_DEFAULT和RD_DEFAULT作为该接收端对应的传输任务的精度等级阈值和期望发送速率。(对于P、RD_MAX、PD_DEFAULT、RD_DEFAULT,发送端在连接阶段就会发给接收端,此时,接收端可以反馈自己的PD,RD,其他时候,接收端可以再次反馈新的PD,RD,达到更新该值的目的。)
进一步的是,接收端将多个连续的数据段组成数据块,按数据块为单位进行解码,能够容忍增强精度数据段的缺失。在进行数据发送时按发送顺序对数据段进行编号,发送的数据段编号取值j,从0开始编号,与数据段一起发送;所述接收端在收到数据段时,可计算出该数据段对应的数据块编号值为k=j div P,其中div表示整除运算;对应的精度等级信息为i=j mod P,其中mod为求余运算。
若数据块k中所有数据段已经收到,则对该数据块进行解码;
若接收端存在编号值小于k,基础精度数据的数据段均已收齐但尚未解码的数据块,则对该数据块进行解码。
进一步的是,对待传输的所有数据段进行编号和配置;每个数据段中携带所述数据段的编号和表明该数据段重要程度的精度等级编号;等级编号、数据段编号存放于TCP数据段的 TCP options保留字段中,其中,数据段编号与TCP报文头中的seq序列编号独立。
进一步的是,使用拥塞窗口与网络往返时延的比值作为数据的最佳发送速率估计值时,采用第一预设策略随机地挑选所要进行传输的数据段并进行传输;所述第一预设策略为:
P为最大精度分级数目;
PD为精度等级阈值;
i为等级编号;
RD为期望发送速率;
对于精度等级为i的每个数据段,以数据段发送概率Pr(i)被选中;
设当前网络的往返延迟为rtt,拥塞控制窗口大小为cwnd,那么,Pr(i)的取值为:
对于i<PD的精度等级,Pr(i)=1;
对于PD≤i≤P-1的精度等级,Pr(i)=1-max(0,min(1,i-cwnd/rtt*P/RD))。
发送端在带宽充足时以期望发送速率传输数据,带宽不充足时动态降低传输精度以维持相同或相似的传输进度同时避免拥塞。
上述的数据精度或数据精度等级是通过数据段发送概率来刻画的。Pr(i)是一个0-1之间的数,表示精度等级为i的数据段,以多大的概率被选中传输。如果为1,表示该等级的数据段百分之百传输;如果是0,表示该等级的所有数据段都不传输。
进一步的是,发送端根据是否收到反馈的ACK以及ACK确认的TCP数据段确认号,判断传输过程中是否出现了丢包;
如果基础精度数据的ACK超时,则对该数据段进行重传,并按照TCP原有的策略调整滑动窗口的大小并且同时更新各精度等级数据段的发送概率;
如果增强型精度数据的ACK出现了超时,则不进行重传,按照第二预设策略调整滑动窗口的大小并且同时更新各精度等级数据段的发送概率;
如果发送端收到的ACK携带ECN标记,按照TCP原有的策略调整滑动窗口的大小,并按照新的滑动窗口值,更新各精度等级数据段的发送概率。
有些版本的TCP协议当收到多个确认号相同的ACK时,也为认为网络发生了丢包,会主动重传;同时,有的版本的TCP还引入了SACK等机制。在这些情形下,发送端均按照对应版本TCP原有的策略调整滑动窗口的大小,并更新各精度等级数据段的发送概率。
进一步的是,所述第二预设策略为:调整后的拥塞控制窗口大小=调整前的拥塞控制窗口大小–1。
进一步的是,接收端对于基础精度数据段已经收齐但尚未解码的数据块,当基础精度数据收齐的时间超过预设值时间T,则立即进行解码。
进一步的是,如果网络中间设备支持严格多优先级队列调度,则设支持的优先级数目为 PS,为基础精度数据的数据段携带最高优先级0;精度等级值为PD,PD+1,…,min(P-1, PD+PS-1)的增强精度数据的数据段分别携带优先级1,2,3,…,PS-1,其余精度等级的数据段携带优先级值PS-1。
本发明包含下列至少一种有益效果:
能够根据反馈的链路可用带宽信息,主动调整数据的发送精度,控制所要传输数据的量。如果网络带宽变好,则增加发送数据的精度;否者,减少发送数据的精度,从而减少所要发送的量,确保传输的进度。
根据精度等级将数据划分为需要可靠传输和不需要可靠传输的两类。当传输中出现丢包时,只对丢失的可靠数据进行重传,避免网络有效吞吐率的下降,让传输协议不被非可靠数据的丢包阻塞。
下面结合附图和具体实施方式对本发明做进一步的说明。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显。或通过本发明的实践了解到。
附图说明
构成本发明的一部分的附图用来辅助对本发明的理解,附图中所提供的内容及其在本发明中有关的说明可用于解释本发明,但不构成对本发明的不当限定。在附图中:
图1为用于说明实施方式中的实施方式中的流式数据传输控制方法示意图;
图2为用于说明实施方式中的数据段、数据块发送和编号顺序的示意图;
具体实施方式
下面结合附图对本发明进行清楚、完整的说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。在结合附图1和2对本发明进行说明前,需要特别指出的是:
本发明中在包括下述说明在内的各部分中所提供的技术方案和技术特征,在不冲突的情况下,这些技术方案和技术特征可以相互组合。
此外,下述说明中涉及到的本发明的实施例通常仅是本发明一分部的实施例,而不是全部的实施例。因此,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
关于本发明中术语和单位。本发明的说明书和权利要求书及有关的部分中的术语“包括”以及它的任何变形,意图在于覆盖不排他的包含。
参照图1、2,本实施方式采用一种带宽感知的分级多精度数据半可靠的流式数据传输控制方法。该控制方法可以通过扩展现有的TCP传输协议进行实现(支持在不同版本的TCP上进行扩展)。该方法在实施上包含三类参与者:数据发送端、接收端,以及一个或多个网络中间转发设备。传输控制方案通过发送端和接收端的协作完成。
采用的网络服务模型:
在该控制方法中,每个数据传输任务的需求由三元组<P,PD,RD>来描述。P为最大精度分级数目、PD为精度等级阈值、RD为数据的最佳发送速率。表示应用待传输的每份数据能够被拆分为0,1,…,P-1共P个精度等级(等级值越低越重要);其中,精度等级值小于PD的数据段需要可靠有序的数据交付,称其为基础精度数据;而精度等级值大于或等于PD的数据段只需尽力而为的数据传输服务,称其为增强精度数据;应用期望的数据发送速率为RD,称其为期望发送速率。<P,PD,RD>的取值由数据发送端和接收端在链接建立或数据发送过程中协商一致。
如图2所示,其中一行就是一个数据块,k,k+1,…为数据块编号。每行包含多个数据段, j为数据段编号。一个数据段刚好放到一个TCP数据段中进行传输。
即k为数据块编号,j是数据段编号。每个数据块最多包含P个数据段。解码时,一个数据块中收到的数据段越完整,解码获得的数据就越精确。i和j会携带在数据段中传输。对于接收端而言,通过j以及建立链接时候发送端告知接收端的P,能够反算出该数据段对应的k值。
在该方案中,待传输的数据被均匀的拆分为多个数据块,每个数据块又被编码为P个精度等级;每个数据块中相同精度等级的数据被打包到同一个数据段中,逐层的进行编号和传输。一个数据段对应于TCP传输中的一个数据包,数据段的大小根据网络中TCP的maximum segment size(MSS)确定。数据段中的编号采用循环编号的方式,与TCP的数据段序列号值 seq独立。接收端收到数据段后,解码恢复出各数据块的内容。如果一个数据块中的部分精度分级数据出现了缺失(即数据不全),接收端依然能够进行解码恢复,不过,解码获得的结果会不准确。对于每份数据块,接收端收到的数据段越全,解码获得的数据越精确;并且,等级值越低的数据段对解码精度的贡献越大。
面对上述传输需求,发送端和接收端之间建立一个类似TCP的网络传输链接,流式地进行数据传输;传输结束后断开链接。
链接建立过程中,发送端和接收端对该传输任务的<P,PD,RD>参数进行协商和确认。传输过程中,接收端可以更新该参数。
设当前发送端的拥塞窗口大小为cwnd,网络往返延迟值为rtt。
参照图1,本方法的步骤可以按下列进行:
1.发送端使用cwnd与rtt的比值作为数据的最佳发送速率估计值,并以此确定选择哪些精度的数据段进行传输,具体方式为调整各精度等级数据段的发送概率Pr(i)的取值,其中 i=0,1,…,P-1;对于精度等级为i的数据段,发送端随机地以概率Pr(i)选择是否要发送;
2.发送端按照TCP的数据发送机制依次发送被选中的数据段,接收端对收到的数据段进行确认;
3.发送端根据ACK反馈估计网络的拥塞状况和可用带宽,以此更新拥塞窗口cwnd,并使 cwnd的值不超过期望发送速率RD与往返时延rtt之积;
如果被选中的基础精度数据ACK超时,发送端则进行重传,并更新cwnd和Pr(i);如果被选中的增强精度数据ACK超时,发送端不进行重传,只更新cwnd和Pr(i);如果收到的ACK 中包含ECN标记,则更新cwnd和Pr(i)。
在实现上,本方法可基于现有各种版本的TCP协议进行修改扩展,实现相应的控制设计,也可以进行完整的重新设计。基于现有TCP进行扩展的实现方案能够与现有的网络设备兼容,并复用已有的TCP代码实现,因此作为本发明的优选实施方式。
在本方法中,链接建立(或数据发送)过程中,发送端和接收端利用SYN报文(或正常数据报文,即TCP链接建立完成后发送数据时的数据报文,除了在链接建立初期进行相关参数的协商配置外,在数据传输过程中也可以再次重新协商。这个时候,TCP链接已经建立完毕,借助的是数据报文而不是SYN报文来完成参数的传递。)和ACK报文TCP options中的保留字段,按照预设流程协商和确认任务的<P,PD,RD>参数。
这里的预设流程是:
<P,PD,RD>的协商发生在TCP链接建立/握手阶段,此时,发送端在SYN的TCPoptions 字段中携带P值和RD_MAX值,分别表示发送端能够支持的最大精度分级数目,以及最大发送速度;以及PD_DEFAULT和RD_DEFAULT表示发送端推荐使用的PD值和RD值。接收端将收到的P、RD_MAX、PD_DEFAULT、RD_DEFAULT值保存在本地。
对SYN报文进行ACK过程中,接收端将所需的PD值和RD值,通过ACK报文的 TCPoptions,向发送端确认。接收断反馈的PD必须小于发送端通告的P值,RD值不高于发送端通告的RD_MAX值。
如果接收端不反馈,发送端默认采用PD_DEFAULT和RD_DEFAULT作为该接收端对应的传输任务的PD和RD值。
在数据段发送过程中,接收段还可以对PD,RD进行更新,但不保证一定成功。此时,接收端在向发送端的连续M个ACK报文的TCP options中捎带新的PD值和RD值,M的取值根据网络状况设置,典型值为5。发送端收到后,更新该接收节点对应的PD值和RD值。
利用TCP options中的保留字段传输相关信息的设计如下表1:
表1
发送端对待传输的所有数据段进行编号和配置。每个数据段中携带数据段编号j(该编号与TCP报文头中的seq序列号码独立)。j存放于TCP数据段的TCP options保留字段中。
发送端会根据当前链接的cwnd值,依次通过第一策略随机地挑选所要进行传输的数据段,并进行传输;第一策略的目标是,协议在带宽充足时以速率RD传输数据,带宽不充足时动态降低传输精度以维持相同或相似的传输进度同时避免拥塞。采用的方法是随机丢包,对于精度等级为i的每个数据段,以Pr(i)的概率被选中。假设当前网络的往返延迟为rtt,拥塞控制窗口大小为cwnd,那么,Pr(i)的取值如下:
对于i<PD的精度等级,Pr(i)=1;
对于PD≤i≤P-1的精度等级,Pr(i)=1-max(0,min(1,i-cwnd/rtt*P/RD))。
发送端根据是否收到接收端反馈的ACK,以及ACK确认的TCP数据段确认号,判断传输过程中是否出现了丢包。如果基础精度数据段的ACK超时,则对该数据段进行重传,并按照 TCP原有的策略调整滑动窗口的大小;如果是增强型精度的ACK出现了超时,则不进行重传,按照第二策略调整滑动窗口的大小;对于收到的ACK如果携带了ECN标记,或者其他情况,均按照TCP原有的策略调整滑动窗口的大小。前述的第二策略为cwnd=cwnd–1。
接收端在收到数据段j时,该数据段对应的数据块编号值k=j div P,其中表示整除运算;对应的精度等级信息为i=j mod P,其中mod为求余运算。
若数据块k中所有数据段已经收到,则对该数据块进行解码;如果接收端存在编号值小于k,基础精度数据的数据段均已收齐当尚未解码的数据块,则对该数据块进行解码。
接收端对于基础精度数据段已经收齐但尚未解码的数据块,如果基础精度数据收齐的时间超过T(T可取值为rtt),则立即进行解码。
如果网络中间设备支持严格多优先级队列调度。假设支持的优先级数目为PS,那么,为基础精度数据的数据段携带最高优先级0;精度等级值为PD,PD+1,…,min(P-1,PD+PS-1) 的增强精度数据的数据段分别携带优先级1,2,3,…,PS-1,其余精度等级的数据段携带优先级值PS-1。
采用本实施方式的流式数据传输控制方法,发送端能够根据接收端反馈的链路可用带宽信息,主动调整数据的发送精度,控制所要传输数据的量。如果网络带宽变好,则增加发送数据的精度;否者,减少发送数据的精度,从而减少所要发送的量,确保传输的进度。根据精度等级将数据划分为需要可靠传输和不需要可靠传输的两类。当传输中出现丢包时,只对丢失的可靠数据进行重传,避免有效吞吐率的下降,让传输协议不被非可靠数据的丢包阻塞。
以上对本发明的有关内容进行了说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。基于本发明的上述内容,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。