用于多径流式传输的基于fec的可靠传输控制协议的制作方法

文档序号:9583831阅读:438来源:国知局
用于多径流式传输的基于fec的可靠传输控制协议的制作方法
【专利说明】用于多径流式传输的基于FEC的可靠传输控制协议
[0001]本申请要求享有于2013年1月17日提交的美国临时申请序列号N0.61/753,884以及于2013年5月1日提交的美国临时申请序列号N0.61/818,106的利益,上述每份申请的全部内容以引用方式并入本文。
技术领域
[0002]本公开内容涉及媒体数据的传输。
【背景技术】
[0003]设备可以使用多个路径和低延时处置,通过数据通信网络来执行数据在端系统之间的快速传输。很多数据通信系统和高层数据通信协议提供可靠数据传输的便利通信提取,并提供速率控制,即,它们基于网络状况自动地调整它们的分组传输速率。诸如普遍存在的传输控制协议(TCP)之类的依据较低层的分组化数据传输的它们的传统底层实施方式遭受以下状况中的至少一种状况发生:(a)发送方和接收方之间的连接具有较大的往返时间(RTT) ;(b)数据的量很大,并且网络遭受突发和瞬时丢失。
[0004]—种广泛使用的可靠传输协议是传输控制协议(TCP)。TCP是一种普遍使用的具有确认机制的点到点分组控制方案。当发送方和接受方之间存在很少的丢失,并且发送方和接受方之间的RTT很小时,TCP很好地适用于一对一的可靠通信。然而,当甚至存在非常少的丢失时,或者当发送方和接受方之间存在任何显著的延时时,TCP的吞吐量将急剧地下降。
[0005]通过使用TCP,发送方发送有序分组,接受方对每个分组的接收进行确认。如果一个分组丢失,则不向发送方发送确认,并且基于后续接收的分组的接收或者基于超时,发送方将重新发送该分组。在使用诸如TCP之类的协议的情况下,这种确认范式允许在不具有整体失败的情况下,发生分组丢失,这是由于响应于确认的缺失或者响应于来自接受方的显式请求,可以仅对丢失的分组进行重传。
[0006]TCP提供了可靠性控制和速率控制二者。也就是说,实现TCP的设备确保将所有原始数据都传送到接收方,并基于诸如拥塞和分组丢失之类的网络状况来自动地调整分组传输速率。在使用TCP的情况下,可靠性控制协议和速率控制协议是相互缠绕而不可分离的。此外,根据增加的RTT和分组丢失的TCP的吞吐量性能远不是最优的。

【发明内容】

[0007]概括地说,本发明描述了与应用于在多个并行网络路径上发送的数据的前向纠错(FEC)有关的技术。在一个例子中,可以通过把要传输的数据组织成数据块,可靠地从发送方向接收方传输数据,其中,每个数据块包括多个编码单元。可以在多个路径上从发送方向接收方发送针对第一数据块的编码单元,即,第一数据块的一些编码单元在一个路径上进行发送,而第一数据块的其它编码单元在第二路径上进行发送等等。发送方可以检测接收方对编码单元的接收的确认。在发送方处,可以检测接收方从针对第一数据块的已发送的编码单元中接收到第一数据块的足够的编码单元,以在接收方处恢复该第一数据块的概率,并且可以将该概率与门限概率进行测试比对,以确定是否满足了预定的测试条件。在测试的步骤之后,并在发送方接收到接收方处对第一数据块的恢复的确认之前,当满足预定的测试条件时,发送方可以在多个路径上从该发送方发送第二数据块的编码单元。在一些例子中,在已经发送了足够数量的第一块的编码单元以便接收方恢复第一块之前,发送方可以发送第二块的编码单元,因而发送方可以在发送了针对第二块的至少一些编码单元之后,发送针对第一块的另外的编码单元。此外,在一个块完全形成之前,发送方就可以向接收方发送该块的编码单元。在一些例子中,预定的测试条件是将所述概率与门限概率进行比较,当该概率大于门限概率时,确定满足了预定的测试条件。
[0008]在一些例子中,随着每个块的生成,发送方还可以动态地确定各个块的大小或者持续时间,确定在生成这些块中的数据时所按照的速率、以及确定在所述多个路径中的各个路径上向接收方发送编码单元时所按照的速率。
[0009]在一个例子中,一种计算机可读存储介质上存储有指令,其中当这些指令被执行时,使得客户端设备的处理器经由多个并行网络路径从服务器设备接收经前向纠错的数据,确定这些网络路径中的每个网络路径上的数据的丢失率,以及向服务器设备发送用于表示这些网络路径中的每个网络路径上的数据的丢失率的数据。
[0010]在另一例子中,一种计算机可读存储介质上存储有指令,其中当这些指令被执行时,使得服务器设备的处理器经由多个并行网络路径,向客户端设备发送经前向纠错的数据,从客户端设备接收用于表示在所述多个网络路径中的每个网络路径上发送的数据的丢失率的数据,以及基于用于表示所述丢失率的所述数据,修改在所述并行网络路径上针对后续数据传输发送的经前向纠错的数据的量。
[0011]在附图和下面的说明书中阐述了一个或多个例子的细节。根据该描述和附图,以及根据权利要求书,其它特征、目的和优点将变得显而易见。
【附图说明】
[0012]图1是可以使用本公开内容的技术的示例性网络、发送方端系统和接收方端系统的框图。
[0013]图2是模块化可靠传输协议架构以及使用这样的协议进行操作的相关系统的说明。
[0014]图3是发送方的基于FEC的可靠性控制协议架构以及使用这样的协议进行操作的相关系统的例子。
[0015]图4是接收方的基于FEC的可靠性控制协议架构以及使用这样的协议进行操作的相关系统的例子。
[0016]图5示出了可以由实现TF可靠性控制协议的系统使用的一组可能的格式。
[0017]图6是描绘了实现发送方TF可靠性控制协议的系统的逻辑的流程图。
[0018]图7是描绘了实现接收方TF可靠性控制协议的系统的逻辑的流程图。
[0019]图8是活动块的说明。
[0020]图9是可以由交织式可靠性控制协议使用的一组可能的格式的说明。
[0021]图10是实现基本发送方交织式可靠性控制协议的系统的逻辑的说明性例子。
[0022]图11是实现基本接收方交织式可靠性控制协议的系统的逻辑的说明性例子。
[0023]图12是一种多径流式传输系统的框图。
[0024]图13示出了可以由实现多径可靠性控制协议的多径流式传输系统使用的一组可能的数据格式。
[0025]图14是一种多径流式传输发送方的框图。
[0026]图15是一种多径流式传输接收方的框图。
[0027]图16描绘了在多径的基于FEC的可靠性传输控制方法的操作期间,源块的不同分类的快照。
【具体实施方式】
[0028]很多研究人员的研究已经表明,当使用TCP时,数据传送的吞吐量(以分组每秒为单位)与以下二者的乘积成反比:RTT(以秒为单位)和端到端连接上的丢失率的平方根。例如,美国和欧洲之间的典型端到端地面连接具有200毫秒的RTT和平均2%的分组丢失率,并且IP分组的大小通常大约为10千比特。在这些状况下,TCP连接的吞吐量是大约每秒最多300-400千比特(kbps),而无论端到端之间有多大的可用带宽。这种情形在卫星链路上更加严重,其中在卫星链路上,除了具有高RTT之外,还由于各种大气效应而丢失信息。
[0029]作为另一例子,已知移动网络(3G或LTE网络)中的移动设备经历较大的RTT、RTT的动态波动、以及可用带宽的动态波动。移动设备可能因为各种各样的原因而具有这些体验,所述原因包括:移动设备在小区内或者移动穿过小区边界的位置改变,这可能造成覆盖的波动;由于其它移动设备靠近或者离开向该移动设备提供覆盖的小区而造成的网络负载的变化;以及各种其它原因。TCP在这些类型的状况之下具有较差性能的主要原因在于:TCP使用的速率控制协议在这些状况下不能很好地工作,例如,即使可用带宽在较短的时间段内较高,TCP协议也不能够足够快速地反应来增加其传输速率以在该可用带宽再次降低之前充分利用该较高的可用带宽。
[0030]由于TCP使用的可靠性控制协议和速率控制协议是不可分离的,因此这意味着整个TCP协议不适用于这些状况。一种尝试克服TCP的这些限制的方式是在单独的路径上使用多个TCP连接,以进一步增加聚合的端到端吞吐量。此外,不同的应用对于传输的要求也不同,然而TCP相当普遍地用于所有网络状况下的各种应用,因而在很多情形下导致较差的性能。
[0031]例如,对于实时视频流式传输应用而言,视频可以在移动设备上的视野中生成,并可能使用通过WiFi系留或者连接到该生成移动设备的多个移动设备,在多个TCP连接上,可能在不同的3G或4G/LTE连接上,流式传输到将重构该原始视频流的接收设备。然而,由于可用带宽的波动和RTT的波动,这些多个TCP连接可能仍不能充分地利用可用带宽。对于这样的流式传输应用而言,实时流式传输应用对端到端延迟的要求可能是非常严格的,因而存在如下进一步的复杂度和要求:该流包括一系列的数据块,以及需要接收在不同的TCP连接上发送的针对各个数据块的足够的编码单元,以使得在接收设备处得以对该流的该数据块进行重构,以及通常在接收设备处以具有以下两个时间点之间的最小可能延迟来顺序地消费或回放这些数据块:当在发送方处使各个数据块(部分或全部)可用时以及当在接收设备处重构该数据块并使其可用于回放或消费时。这些要求可能使基于TCP的解决方案的能力受到最慢TCP连接的约束,故基于TCP的总解决方案可能是非常逊色的。
[0032]本公开内容包括改进的可靠性控制协议和速率控制协议的描述,这两种协议可以独立地使用,并且相同的可靠性控制协议可以与各种不同的速率控制协议一起使用,使得所选择的实际速率控制协议可以是基于应用要求和该应用所运行的网络状况。MicahAdler、Yair Bartal、John Byers、Michael Luby、Danny Raz 于 1997 年 6 月在第五届以色列计算和系统理论研讨会(the Fifth Israeli Symposium on Theory of Computingand Systems)的议程中发表的论文“A Modular Analysis of Network Transmiss1nProtocols”(下文称为“Adler”,并以引用方式并入本文)介绍了用于构建传输协议的模块化方法,其主张将可靠传输协议划分成独立的可靠性控制协议和速率控制协议。
[0033]对于任何可靠性控制协议而言,其性能的两项主要测量值是要求多少缓冲以及其“有效吞吐量”。在发送方和接收方二者处的可靠性控制协议中引入了缓冲。例如,发送方处的缓冲发生于:当数据被首次发送之后就对该数据进行缓冲,直到发送方获得了在接收方处已经接收到该数据的确认为止。接收方处的缓冲由于类似的原因而发生。对缓冲感兴趣的原因有两点:(1)其直接影响发送方和接收方可靠性控制协议使用多少存储器;(2)其直接影响发送方和接收方可靠性控制协议引入多大延时。有效吞吐量被定义为:将要传送的数据的大小除以在该传送期间在接收方端系统处接收到的已发送数据的量后得到的值。例如,如果在分组中发送的用于传送原始数据的数据的量是该原始数据的大小,则有效吞吐量=1.0,并且如果没有发送冗余数据,则可以实现有效吞吐量=1.0。
[0034]Adler概述了在很大程度上独立于所使用的速率控制协议的可靠性控制协议,其在下文被称为“无编码(no-code)可靠性控制协议”。无编码可靠性控制协议在某些方面类似于TCP中嵌入的可靠性控制协议,在该意义上,原始数据被划分成一些块,并且每个块在分组的有效载荷中发送,然后需要接收各个块的精确副本以确保可靠传送。使用无编码可靠性控制协议的问题在于:尽管有效吞吐量是最优的(基本上等于一),但当存在分组丢失时,无编码可靠性控制协议引入的缓冲可能非常大。Adler证明了无编码可靠性控制协议处于不使用编码来传输数据的可靠性控制协议之中的最佳常数因子内,在该意义上,该协议具有最佳的有效吞吐量,并且依据使发送方和接收方处所需要缓冲的量最小化而言,可证明是处于最佳常数因子内的。
[0035]在可靠性控制协议中已经使用的一种技术是前向纠错(FEC)编码,例如里德-所罗门编码(Reed-Solomon code)或Tornado编码或者链式反应编码(其是信息附加编码)。使用FEC编码,将原始数据划分成比分组的有效载荷更大的块,然后根据这些块来生成编码单元,并在分组中发送这些编码单元。与不使用编码的可靠性控制协议相比,这种方法的一项基本优点在于:反馈可能是更简单的和更不频繁的,即,对于每个块而言,接收方仅仅只需要向发送方指示接收到的编码单元的数量,而不用确切地列出接收到哪些编码单元。此外,与原始数据块的长度相比,聚合生成和发送更多的编码单元的能力,在设计可靠性控制协议时是一种强大的工具。
[0036]诸如里德-所罗门编码或Tornado编码之类的纠删编码针对固定长度的块生成固定数量的编码单元。例如,对于包括B个输入单元的块而言,可以生成N个编码单元。这N个编码单元可以包括B个原始输入单元和N-B个冗余单元。如果存储装置准许,则发送方可以只对针对各个块的编码单元的集合进行一次计算,并使用轮播协议(carousel protocol)来发送这些编码单元。
[0037]使用一些FEC编码的一个问题在于:它们要求过多的计算能力或存储器来进行操作。另一问题在于:必须在编码过程之前确定需要的编码单元的数量。如果分组的丢失率估计过高的话,这可能导致低效率,而如果分组的丢失率估计过低的话,则可能导致失败。
[0038]对于传统FEC编码而言,可以生成的可能的编码单元的数量与一个块被划分成的输入单元的数量具有相同的数量级。通常,但不完全是,这些编码单元中的大部分或者全部在发送步骤之前的预处理步骤中被生成。这些编码单元具有如下属性:可以根据这些编码单元的任何子集来重新生成输入单元,所述编码单元在长度上等于原始块或者比原始块稍微更长。
[0039]美国专利N0.6,307,487 (下文称为“Luby I ”,并以引用方式并入本文)中描述的链式反应解码可以提供一种解决上述问题的前向纠错的形式。对于链式反应编码而言,可以生成的可能的编码单元的池在数量级上大于输入单元的数量,并且可以非常迅速地生成根据该可能池的随机或者伪随机选择的编码单元。对于链式反应编码而言,可以与发送步骤同时地,在“按需的”基础上飞速生成编码单元。链式反应编码允许根据随机或伪随机生成的编码单元集合的子集来重新生成内容的全部输入单元,所述编码单元在长度上比原始内容稍微更长。
[0040]诸如美国专利N0.6,320,520、6,373,406、6,614,366、6,411,223、6,486,803 和美国专利公开N0.2003/0058958(下文称为“Shokrollahi I”)之类的其它文档描述了各种链式反应编码方案,并以引用方式并入本文。
[0041]使用链式反应编码的发送方可以针对正在发送的每个块,持续地生成编码单元。可以通过用户数据报协议(UDP)单播或者UDP多播(如适用)将这些编码单元发送给接受方。假定每个接受方都装备有解码单元,该解码单元对分组中接收的合适数量的编码单元进行解码以获得原始块。
[0042]现有的简单的基于FEC的可靠性控制协议(下文称为“TF可靠性控制协议”)发送针对给定数据块的编码单元,直到从接收方接收到已经接收了足够的编码单元来恢复该块的确认为止,然后发送方移动到下一个块。
[0043]假设RTT是从当发送方发送分组时开始,到发送方从接收方接收到该分组已经到达的确认为止的秒的数量,以及假设R是发送方的当前发送速率(以分组/秒为单位),以及假设B是块的大小(以分组为单位)。使用TF可靠性控制协议,包含为了恢复一个块而需要的最后分组之后发送的针对该块的编码单元的无用分组的数量是N = R*RTT。因而,f= N/(B+N)部分的发送的分组被浪费了,因而有效吞吐量至多是l_f。例如,如果R= 1,000分组/秒,RTT = 1秒,并且B = 3,000个分组,则f = 0.25,即,浪费了 25%的所接收的分组。因此,在这个例子中,有效吞吐量是不足的0.75 (与1.0的最大可能有效吞吐量相比)。
[0044]在这个例子中,还应当注意的是,块的大小B连同速率R —起意味着简单的基于FEC的可靠性控制协议所引入的延时至少是4秒(发送每个块总共需4秒钟),并且要求缓冲至少一个块,即3,000个数据分组。此外,为了增加有效吞吐量,要求增加缓冲,或者相反地,为了减少缓冲,则要求减少有效吞吐量。
[0045]以Luby等人名义申请的美国专利N0.7,447,235 (下文称为“Luby II”)描述了改进的基于FEC的可靠性协议。然而,用于在多个路径上进行流式传输的改进的可靠性控制协议是期望的。此外,提供可以与改进的可靠性控制协议进行组合的相应的速率控制协议,以获得使可靠性和有效吞吐量最大化,并使端到端延时最小化的适合于在多个路径上进行流式传输的传输协议是期望的。
[0046]在根据本公开内容的例子中,可以使用用于多径传输的交织式可靠性控制协议来提供相对于TCP、TF可靠性控制协议和无编码可靠性控制协议、以及Luby II中描述的基于FEC的可靠性协议的改进。此外,介绍了可以与改进的可靠性控制协议进行组合的改进的速率控制协议和生成速率协议,以提供使可靠性和有效吞吐量最大化,并使端到端延时最小化的适合于在多个路径上进行流式传输的传输协议。
[0047]在使用可靠性控制协议的情况下,数据块被发送为从发送方到接收方的一系列的编码单元,并且接收方对这些编码单元或者块的恢复进行确认,从而使发送方得以确定接收方是否接收到该数据,并当没有接收到时,对该数据进行重传,或者发送可用于恢复所接收的数据的其它数据。一些交织式可靠性控制协议的一种属性在于以交织的方式来发送针对不同块的编码单元。交织式可靠性控制协议具有如下属性:当与实质上任何速率控制协议进行组合时,它们提供高效的可靠数据传输,其使端系统处的缓冲(和随之发生的延时)最小化,并使该传输的有效吞吐量最大化。
[0048]根据本公开内容的技术,交织式可靠性控制协议可以与合适的速率控制协议一起使用,以确保数据的可靠传送,同时维持高吞吐量,即使当存在高丢失率时和/或当存在较大的RTT时。例如,速率控制协议可以与按照固定的速率进行发送一样简单,并且交织式可靠性控制协议将保证数据按照等于固定速率乘以成功到达的分组的比例后的速率进行传送,同时使该传送期间的缓冲和延时最小化。
[0049]作为由此处介绍的交织式可靠性控制协议所提供的量化性改进的例子,假使速率控制协议按照每秒R个分组的固定速率来发送分组,发送方和接收方之间的往返时间是RTT秒,因而N = R*RTT是在途的未被确认分组的数量。对于无编码可靠性控制协议而言,发送方处的总缓冲区大小B至少是N*ln(N),以及有效吞吐量近似是1.0,并且在所需要的缓冲的量和有效吞吐量之间不存在可能的其它权衡点。此处,In (X)被定义为X的自然对数。在使用TF可靠性控制协议的情况下,发送方处的总缓冲区大小至少是B,并且有效吞吐量近似是B/(B+N),其中B是选择的块大小
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1