管理内容传送期间的拥塞响应的制作方法

文档序号:18554037发布日期:2019-08-30 22:20阅读:142来源:国知局
管理内容传送期间的拥塞响应的制作方法

本发明涉及一种用于管理通过网络传送内容数据序列期间对分组丢失的拥塞响应的方法和装置。



背景技术:

对通过网络传送媒体内容(例如,音频和/或视频内容)的需求不断增加。

通过网络传送媒体内容流的一种方法是将媒体内容流分段为多个时间片段。然后,各片段可以以一系列数据分组的形式通过网络进行传送。将内容流分段为时间片段的一类技术是自适应比特率传送。

在自适应比特率传送中,媒体内容流以多个比特率分别进行编码以产生多个编码流。如果媒体内容包括音频和视频内容(使得媒体流包括音频流和视频流),则可以以多个比特率分别对音频和视频流中的每一个进行编码以产生多个编码视频流和多个编码音频流。各编码媒体流被分段为多个时间片段。例如,每个时间片段可以包含2到15秒的解码媒体内容。媒体内容的分段可以在对媒体流进行编码之前或之后发生。然后,媒体内容的片段作为一系列数据分组通过网络被传送到接收器设备。

传送到接收器的各媒体内容片段的比特率可以选自用来对内容进行编码的比特率的集合。因此,接收器设备可以接收到以不同的编码比特率编码的媒体内容片段。该比特率可以由接收器请求或由发送器选择。

与通过网络传送分段媒体内容相关联的问题是给定片段的传送时间可能是高度可变的。虽然自适应比特率传送可以操作以实时调整传送的内容流的质量(即,编码比特率)以考虑可用的网络资源,但是它仍经常遭受给定的内容片段的不可预测和可变的传送时间。这种可变性可能部分地源于用于传送媒体内容的通信协议的性质。

例如,通过如互联网的分布式计算机网络传送媒体内容通常实现使用tcp作为传输协议。

tcp被设计成通过网络实现可靠的数据传输,目的是避免对竞争tcp业务流的网络吞吐量产生不利影响。根据tcp协议,重传传输中丢失的分组以试图实现可靠传送。另外,tcp协议实现拥塞响应或拥塞避免方案。作为该方案的一部分,在假设分组丢失是由网络上的拥塞引起的情况下,在检测到分组丢失之后,通常降低通过网络从发送器到接收器的分组的传输速率。

可以通过称为拥塞窗口(该拥塞窗口在本文中被表示为cwnd)的参数来控制分组到网络中的传输速率。拥塞窗口可以指示在任何给定时间已被传送到网络中但尚未被接收器确认的最大可允许分组数量。tcp发送器(例如,媒体内容服务器)可以针对各接收器(例如,内容客户端)连接维持拥塞窗口。在检测到给定连接上的分组丢失之后,tcp发送器通常采取快速动作以显著减小拥塞窗口的大小,以便降低该连接的传输速率。这转而导致在传送给定内容片段期间分组的传输速率是可变的,并且高度取决于在传送该片段期间遭受的分组丢失率。

如果一段内容的传送时间是可变且不可预测的,则接收器处的媒体播出的性能可能受到缓冲延迟和播出停顿(stalling)的不利影响。使这些性能缺陷的风险最小化的一种方法是在接收器内包括大量缓冲。然而,由于充分填充缓冲器所需的时间,这种方法可能转而引发高端到端延迟的性能损失(performancepenalty)。



技术实现要素:

根据本公开的一个方面,提供了一种通过网络传送媒体内容的方法,所述媒体内容包括多个时间片段,其中,各时间片段包括多个数据分组,所述方法包括以下步骤:

选择第一拥塞窗口的初始大小;

使用第一拥塞窗口传送第一片段的多个数据分组,第一拥塞窗口的初始大小用于在第一片段传送的持续时间内控制第一拥塞窗口的大小;

测量传送第一片段期间的数据分组丢失;

根据所测得的第一片段的分组丢失来确定第二拥塞窗口的初始大小;以及

使用第二拥塞窗口传送第二片段,第二拥塞窗口的初始大小用于在第二片段传送的持续时间内控制第二拥塞窗口的大小。

在第一片段传送的持续时间内,第一拥塞窗口的大小可以等于其初始大小。

第一拥塞窗口的大小可以在整个传送第一片段期间根据分组丢失而变化,并且在传送第一片段的持续时间内被控制为大于或等于其初始大小。

使用第一拥塞窗口传送第一片段的步骤可以包括在没有分组丢失的时段期间从第一拥塞窗口的初始大小开始增加第一拥塞窗口的大小,并且在传送第一片段期间响应于每次分组丢失将第一拥塞窗口的大小重置为其初始大小。

可以根据第一片段的大小和用于传送第一片段的指定时间间隔来选择第一拥塞窗口的初始大小。

第一拥塞窗口的初始大小cwnd1可以大于或等于其中,rtt是往返时间,d是第一片段的数据大小,以及δt1是传送第一片段的指定时间间隔。

可以根据所测得的在第一片段之前传送的前面片段的分组丢失率来选择第一拥塞窗口的初始大小。

该方法还可以包括:根据所测得的分组丢失计算传送第一片段期间的分组丢失率;以及根据所计算出的第一片段的分组丢失率来确定第二拥塞窗口的初始大小。

可以根据所计算出的仅针对第一片段的分组丢失率来确定第二拥塞窗口的初始大小。

可以根据所计算出的第一片段和在第一片段之前传送的一个或更多个前面片段的分组丢失率来确定第二拥塞窗口的初始大小。

确定第二拥塞窗口的初始大小的步骤可以包括:根据所计算出的第一片段的分组丢失率,确定用于传送第二片段的目标比特率,以及根据目标比特率确定第二拥塞窗口的初始大小。

可以根据所计算出的第一片段的分组丢失率和在第一片段之前传送的一个或更多个前面片段的分组丢失率来确定目标比特率。

可以根据所计算出的第一片段和在第一片段之前传送的一个或更多个前面片段的分组丢失率的平均值来确定用于传送第二片段的目标比特率。

用于传送第二片段的目标比特率可以大于或等于在指定时间间隔δt2内传送第二片段所需的比特率。

根据本公开的第二方面,提供了一种用于通过网络传送媒体内容的服务器,所述媒体内容包括多个时间片段,其中,各时间片段包括多个数据分组,所述服务器包括:

拥塞窗口单元,该拥塞窗口单元被配置成选择第一拥塞窗口的初始大小;

分派单元,该分派单元被配置成使用第一拥塞窗口传送第一片段的多个数据分组,所述分派单元还被配置成在所述第一片段传送的持续时间内使用所述第一拥塞窗口的初始大小来控制所述第一拥塞窗口的大小;以及

分组丢失检测器,该分组丢失检测器被配置成测量传送第一片段期间的分组丢失;

其中,所述拥塞窗口单元还被配置成根据所测得的第一片段的分组丢失来确定第二拥塞窗口的初始大小;并且所述分派单元还被配置成使用第二拥塞窗口传送第二片段,并在第二片段传送的持续时间内使用第二拥塞窗口的初始大小来控制第二拥塞窗口的大小。

在第一片段的传送持续时间内,第一拥塞窗口的大小可以等于其初始大小。

分派单元可以被配置成在第一片段的整个传送过程中根据分组丢失来改变第一拥塞窗口的大小,并且在第一片段的传送持续时间内将第一拥塞窗口的大小保持为大于或等于其初始大小。

所述分派单元可以被配置成在没有分组丢失的时段期间从第一拥塞窗口的初始大小开始增加第一拥塞窗口的大小,并且在传送第一片段期间响应于每次分组丢失将第一拥塞窗口的大小重置为其初始大小。

拥塞窗口单元可以被配置成根据第一片段的大小和传送第一片段的指定时间间隔来选择第一拥塞窗口的初始大小。

第一拥塞窗口的初始大小cwnd1可以大于或等于其中,rtt是往返时间,d是第一片段的数据大小,以及δt1是传送第一片段的指定时间间隔。

拥塞窗口单元可以被配置成根据所测得的在第一片段之前传送的前面片段的分组丢失率来选择第一拥塞窗口的初始大小。

分组丢失检测器还被配置成根据所测得的分组丢失计算传送第一片段期间的分组丢失率;并且拥塞窗口单元被配置成根据所计算出的第一片段的分组丢失率来确定第二拥塞窗口的初始大小。

拥塞窗口单元可以被配置成根据所计算出的仅针对第一片段的分组丢失率来确定第二拥塞窗口的初始大小。

拥塞窗口单元可以被配置成根据所计算出的第一片段和在第一片段之前传送的一个或更多个前面片段的分组丢失率来确定第二拥塞窗口的初始大小。

服务器还可以包括比特率计算器,该比特率计算器被配置成根据所计算出的第一片段的分组丢失率来确定用于传送第二片段的目标比特率;并且拥塞窗口被配置成根据目标比特率确定第二拥塞窗口的初始大小。

比特率计算器可以被配置成根据所计算出的第一片段的分组丢失率和在第一片段之前传送的一个或更多个前面片段的分组丢失率来确定目标比特率。

比特率计算器可以被配置成根据所计算出的第一片段和在第一片段之前传送的一个或更多个前面片段的分组丢失率的平均值来确定目标比特率。

比特率计算器可以被配置成将用于传送第二片段的目标比特率设置为大于或等于在指定时间间隔δt2内传送第二片段所需的比特率。

附图说明

下面将参照附图通过示例的方式描述本发明。在附图中:

图1示出了通信网络的示例;

图2示出了形成图1中的网络的一部分的服务器的示例;

图3示出了形成图1中的网络的一部分的客户端的示例;

图4是通过网络传送媒体内容的方法的步骤的流程图;以及

图5是针对传统tcp实现和根据本公开的示例的内容片段传送期间拥塞窗口的大小的示意图。

具体实施方式

本公开的示例涉及通过网络传送媒体内容的方法。媒体内容可以是视频内容(例如,以视频序列的形式)、音频内容(例如,以音频序列的形式)或者它可以包括音频和视频内容(即,媒体内容可以是多媒体内容)。媒体内容包括多个时间片段。各片段可以包含针对较短播出持续时间的数据(例如,2至15秒的数据)。每段媒体内容的数据分组的数量取决于时间片段的持续时间、编码比特率以及各数据分组的大小,并且可以在几十个数据分组到数千个数据分组的范围内变化。例如,对于持续时间10s的时间片段、1mbit/s的编码比特率和1500字节的数据分组大小,各媒体内容片段将包括833个数据分组(10×1000000/(1500×8))。

使用关联的第一拥塞窗口来传送媒体内容的第一片段(例如,从发送器设备传送到接收器设备)。为简洁起见,第一拥塞窗口在本文中可以被表示为cwnd1。在传送内容的第一片段之前,选择第一拥塞窗口的初始大小。该初始大小用于在第一片段传送的持续时间内控制第一拥塞窗口的大小。也就是说,第一拥塞窗口的初始大小用于在整个第一片段的传送过程中控制第一拥塞窗口大小。例如,第一拥塞窗口的大小可以是恒定的并且等于传送第一片段的持续时间的初始大小(即,与任何分组丢失无关)。另选地,第一拥塞窗口的大小可以在没有检测到分组丢失的时段期间从其初始值增加,并且可以响应于在传送第一片段期间的每个检测到的分组丢失而被重置为其初始大小。

测量在传送第一片段期间承受的分组丢失。该所测得的分组丢失用于确定用于传送第二内容片段的第二拥塞窗口的初始大小。然后,使用关联的第二拥塞窗口通过网络传送第二内容片段,其中,类似于第一片段,第二拥塞窗口的初始大小用于确定第二片段传送的持续时间内第二拥塞窗口的后续大小。

第一片段和第二片段可以是时间上连续的片段,尽管它们不是必须的。例如,第一片段和第二片段可以是由一个或更多个时间中间片段分隔开的内容数据序列的非连续片段。此外,使用“第一”和“第二”来引用内容片段并不用于暗示序列中片段的时间顺序:第一片段在序列内可以在第二片段之前或之后。

通过使用拥塞窗口的初始大小来控制整个内容片段的传送过程中的窗口的后续大小,本文中描述的实施方式旨在使在给定内容片段的传送期间对分组丢失的全部拥塞响应与分组丢失事件本身分离。由于在传送片段期间承受的分组丢失量通常是不可预测和可变的,因此在传送给定内容片段期间将拥塞响应与分组丢失事件分离使得该片段的传送时间更可预测且变化更小。此外,因为所测得的在传送第一片段期间承受的分组丢失被用于确定用于传送第二片段的拥塞窗口的大小(以及因此传输速率),所以与所承受的分组丢失量相当的拥塞响应可以在比一个片段更长的时间范围内实现。这意味着,从长远来看,在支配网络的可用带宽而损害竞争业务的同时,媒体内容可以以更加可预测的片段传送时间通过网络进行传递,从而使得本文描述的示例实施方式适合与tcp一起使用。

现在将描述本公开的示例实施方式。为了清楚起见,在以下示例中,根据使用自适应比特率传送的http和底层tcp协议通过网络传送媒体内容。http协议可以是例如http自适应流传输协议,诸如,http实时流传输(hls)协议、mpeg-dash、smoothstreaming、adobehttp动态流传输等。tcp协议可以是任何合适的协议,诸如,tcpreno、tcpnewreno、tcpcubic、tcptahoe、tcpvegas等。

图1示出了通信系统100的示例。该系统包括内容发送器(以服务器的形式)104和由通信网络106分隔开的多个接收器(以内容客户端的形式)108、110和112。网络106可以是无线网络、有线网络或有线和无线网络的组合。网络106可以是分布式计算网络(诸如,互联网)(或可以形成分布式计算网络的一部分)。

内容服务器104被示为通信地连接到内容生成器102。内容生成器102可以被配置成对媒体内容进行编码并将媒体内容传达到内容服务器104。如上所述,媒体内容可以包括视频和/或音频流。内容生成器102可以被配置成以多个不同的比特率分别对视频流进行编码,以生成各自以不同的比特率进行编码的多个编码视频流。视频内容可以例如根据itu-th.264标准进行编码,但是当然也可以使用其它标准。如果媒体内容另外还包括音频内容,则可以仅以单个比特率(以生成单个编码音频流)或以多个比特率对其进行编码以生成相应的编码音频流。用于编码音频流的标准的一个示例是mpeg-4heaac,但是当然可以另选地使用其它标准。内容生成器102还可以被配置成将媒体内容分段为多个离散的时间片段。如果媒体内容以多个比特率被编码,则可以对每个编码流进行分段。可以在编码之前或之后对该内容流或每个内容流进行分段。也就是说,可以对内容流进行分段,其中,以不同的比特率对每个得到的片段进行编码;或者可以对每个编码内容流进行分段来生成多个编码片段。

内容服务器104被配置成从内容生成器102接收媒体内容并且可以存储所接收到的内容。如上所述,可以对内容生成器102接收到的媒体内容进行编码和分段。内容服务器可以经由网络106将媒体内容传达或传送到客户端108、110和112中的一个或更多个。内容服务器104可以是视频流服务器,并且可以根据请求向客户端传送视频(和/或音频)内容。因此,客户端设备108、110和112可以用于从服务器104请求媒体内容。例如,客户端设备可以是适当配置的机顶盒、pc、膝上型电脑、智能电话、平板电脑、智能电视等。

在图2中更详细地示出了服务器104的示例。服务器包括输入接口202;数据存储器204和输出接口210。服务器还包括拥塞窗口单元212、连接到输出接口的分派单元214、分组丢失检测器216和比特率计算器218。分组丢失检测器可以连接到输出接口210,如该示例中所示。内容服务器104可以被配置成在输入接口202处从内容生成器接收编码内容片段并且将接收到的编码片段206存储在数据存储器204中。各内容片段可以与清单文件208相关联,清单文件208可以包含关于用来对相关联的内容片段进行编码的比特率的信息,以及关联的内容片段在服务器的存储器204中的存储位置的指示。各清单文件还可以可选地存储在关联的内容片段中编码的媒体内容的持续时间的指示。清单文件也可以存储在存储器204中。各内容片段作为一系列数据分组从服务器经由输出接口210进行发送。也就是说,各内容数据片段由多个数据分组组成。内容服务器104还可以经由输出接口210从服务器已向其发送数据分组的一个或更多个内容客户端接收确认分组。通信系统可以被布置成使得内容服务器接收针对通过网络成功传送到客户端的各数据分组的确认分组。下面将参照图4描述拥塞窗口单元212、分派单元214、分组丢失检测器216和比特率计算器218的操作。

在图3中更详细地示出了内容客户端(在这种情况下,客户端108)的示例。在该示例中,客户端108包括:输入接口302;状态处理和状态信息存储器304;客户端决策模块308;内容片段和清单存储器306以及媒体内容解码器,在该示例中是视频解码器310和音频解码器312的形式。

客户端108通过经由接口302向服务器104传送与所需内容片段相关联的清单文件的请求来发起对内容传送的请求。响应于从服务器104接收到所请求的清单文件,客户端108将该文件存储在内容片段和清单存储器306中。决策模块308对清单文件进行分析,并且作为响应,从服务器104以指定的编码比特率发出对内容片段的请求。该请求经由接口302从客户端108传达到服务器104。响应于接收到请求,服务器104通过网络106将所请求的内容片段传送到客户端108。客户端108通过其接口302接收(以一系列数据分组的形式的)内容片段并将其传递到内容片段和数据存储器306。接收到的内容片段被传递到媒体解码器310和312。解码器310和312对内容片段执行解码操作,并输出解码的媒体内容(即,解码的音频和/或视频内容),以呈现给用户。一旦内容片段已被解码,就可以将其从片段存储器306中移除。针对接收到的各数据分组,客户端108还可以通过网络106将确认分组发送回服务器。该确认分组可以经由客户端的接口302来发送。

状态处理和信息存储器304可以监视指示来自服务器104的媒体内容的传送的状态的一个或更多个状态参数。这些参数可以包括以下中的一项或更多项:在接口302处接收内容数据的速率;内容通过媒体解码器被解码并呈现给用户的速率;以及存储在片段和清单存储器306中的(尚未解码的)内容片段数据的量。

客户端决策模块308可以确定下一个请求的内容片段,并且根据对该片段的关联的清单文件的分析和由状态处理存储器304确定的状态参数来确定该片段的编码比特率。

由客户端108发出到服务器104的媒体内容请求可以是http请求(例如,httpget请求)。可以针对每个媒体数据片段发出请求。

尽管上面仅更详细地描述了客户端108,但是应当理解,客户端110和112可以具有与客户端108相同并且以类似的方式操作的组件。

现在将参照图4的流程图来描述根据本发明在通过通信网络106传送媒体数据的片段时服务器104的操作。在该示例中,服务器通过网络将媒体内容传送到客户端108。

将参照被称为‘第一片段’的一段内容来描述以下步骤。该第一片段不必是服务器与客户端之间的流传输会话中的第一个片段,并且可以指作为流传输会话的一部分传达的任何片段。第一片段可以是在实现的tcp协议已经完成其慢启动过程时或者在从服务器到客户端的流传输会话开始时发起的一些其它类似过程的情况下被调度用于传送到客户端的任何片段。该片段可能已经作为服务器与客户端之间的流传输会话的一部分被客户端中的一个(例如,客户端108)以上述方式请求传送。

在步骤400,将片段索引n设置为“1”以指代通过网络106传送到客户端的第一片段。

在步骤402,拥塞窗口单元212选择第一拥塞窗口的初始大小。第一拥塞窗口将用于通过网络106传送第一片段。片段n的拥塞窗口通常可以表示为cwnd(n)。为清楚起见,将在该示例中提到的第一拥塞窗口表示为cwnd1。如本文所使用的,拥塞窗口的大小可以根据分组的数量或根据字节来指定。

第一拥塞窗口的初始大小可以等于紧接在初始慢启动过程完成之后的拥塞窗口的大小。也就是说,拥塞窗口的初始大小可以等于tcp协议的拥塞避免阶段开始时的拥塞窗口的大小。

另选地,可以由拥塞窗口单元212根据第一片段的大小和用于传送第一片段的指定时间间隔来选择第一拥塞窗口的初始大小。第一片段的“大小”可以指第一片段中的数据量(例如,以比特、字节等为单位)。通过网络106将内容片段传送到客户端108的时间间隔可以由客户端指定。例如,客户端可以向内容片段的服务器请求添加期望传送该片段的时间的指示。另选地,可以由服务器104指定传送的时间间隔。服务器可以基于以最小延迟及时地将媒体内容作为整体传送到客户端108的考虑来指定用于传送的时间间隔。这种类型的内容传送(其中,服务器指定用于传送内容片段的时间间隔)可以被称为http推送,其中,服务器104被称为实现http推送机制。

为了了解如何基于用于传送第一片段的指定时间段来选择第一拥塞窗口的初始大小,考虑以下模型,在该模型中,可以通过网络106使用tcp协议实现的数据分组传送速率rtcp被近似为:

其中,cwnd是拥塞窗口大小(以分组的数量或以字节为单位),rtt是往返时间(即,从分组的服务器到网络的发送的时刻与在该服务器处从客户端接收到该数据分组的确认的时刻的时间间隔)。因此,取决于用于定义拥塞窗口大小的单位,rtcp可以以每秒分组或每秒字节为单位。

如果d表示片段的大小(再次,就形成片段的字节或分组的数量而言),并且用于传送片段的时间间隔是δt1,则用于及时传送该片段的最小数据分组传送速率rreq通过下式给出:

通过使等式(1)和(2)中的数据分组传送速率相等并且根据拥塞窗口大小重新安排,我们可以得出对拥塞窗口的大小的以下要求,以确保第一内容片段的及时传送:

因此,如果存在用于传送第一内容片段的指定时间间隔(由服务器或客户端),则可以根据等式(3)来选择第一拥塞窗口的初始大小。

一旦已经选择了第一拥塞窗口的初始大小,则在步骤404,服务器104使用第一拥塞窗口通过网络106将第一片段传送到客户端108。内容片段的传送受分派单元214控制,这可以使得内容片段的数据分组经由服务器的输出接口210通过网络进行传送。分派单元214还被配置成在第一片段传送的持续时间内(即,直到已经完成第一片段的传送为止)使用步骤402确定的第一拥塞窗口的初始大小来控制第一拥塞窗口的大小。

换句话说,在根据本公开的实施方式中,在传送第一内容片段期间的每个点处,根据在步骤402选择的第一拥塞窗口的初始大小的值来控制第一拥塞窗口的大小。即使在传送第一片段期间发生分组丢失也是如此,所述第一片段可能包括数百或数千个数据分组。分派单元214可以控制第一拥塞窗口的大小,使得在传送第一片段期间的分组丢失之后或响应于在传送第一片段期间的分组丢失,第一拥塞窗口的大小仅取决于第一拥塞窗口的初始大小。这与使用传统tcp实现的内容传送形成对比,在传统tcp实现中,在分组丢失之后,拥塞窗口的大小(或拥塞窗口的阈值大小)根据称为加性增乘性减的拥塞避免机制通常从其紧接在分组丢失之前的值大约减半。

相反,通过在整个第一片段的传送过程中使用拥塞窗口的初始大小来控制拥塞窗口的大小,并且在组成该片段的多个分组中的一个分组丢失之后不立即调整拥塞窗口,对tcp协议所需的数据分组丢失的拥塞响应可能会延迟,直到已经完成第一片段的传送为止。换句话说,可以避免(对于传统tcp实现来说是典型的)对分组丢失的快速响应-以及内容片段的传送时间的不可预测性的原因。

分派单元212可以在工作上以多种方式在传送第一片段期间控制第一拥塞窗口的大小。

在一个示例中,第一拥塞窗口的大小在第一片段传送的持续时间内是恒定的并且等于其初始大小。也就是说,分派单元212使得第一拥塞窗口的大小在传送第一片段的整个过程中保持恒定,而与在传送该片段的数据分组期间发生的任何分组丢失无关。如果根据等式(3)选择第一窗口大小的初始值,则该方法使得第一内容片段能够在指定的时间间隔内被传送到客户端108,而不管在传送该片段期间承受的分组丢失量。

在其它示例中,第一拥塞窗口的大小在第一片段的整个传送过程中可以根据在传送期间承受的分组丢失而变化。例如,第一拥塞窗口的大小可以在没有分组丢失的情况下在传送的时间段期间从其初始值增加,并且可以在每次检测到分组丢失之后由分派单元212进行重置。然而,不是将拥塞窗口的大小重置为紧接在分组丢失之前的值的一半(如在典型的tcp实现中通常所做的那样),而是在传送第一片段期间每次检测到分组丢失之后,分派单元212可以将第一拥塞窗口的大小重置为其初始大小(如在步骤402中所确定的)。因此,在传送第一片段期间的分组丢失之后,第一拥塞窗口的大小仅受第一拥塞窗口的初始大小控制。这避免了在通常在一些tcp拥塞控制方案中实现的加性增乘性减算法可能遇到的分组丢失之后拥塞窗口的大小的大幅减小。

分派单元212可以在无分组丢失的时段期间以加性方式增加拥塞窗口的大小,例如通过每个往返时间(即,在每个时间间隔等于在没有分组丢失的情况下经过的往返时间)将拥塞窗口的大小增加m个片段大小。m的值可以是任何合适的整数(例如,1、2、3等)。拥塞窗口的大小可以以其它方式增加。例如,每当在服务器104处从客户端108接收到确认消息时,拥塞窗口的大小可以增加m个片段大小。这将导致在没有检测到分组丢失的时段期间拥塞窗口的大小相对快速地增加。

图5中示出了在传送第一片段期间拥塞窗口的大小以及它与传统tcp实现相比较如何的图示。图表500的x轴是时间,并且y轴是第一拥塞窗口的大小。时间间隔δt表示传送第一片段的时间。时间t1、t2和t3表示在传送片段期间相应的分组丢失的时间。用于传送片段的拥塞窗口的初始大小被表示为s0。

线502表示遵循诸如tcpnewreno的传统tcp实现的拥塞窗口的大小。在分组丢失之间的时段中,拥塞窗口的大小增加(例如,根据拥塞避免阶段)。在每次分组丢失之后,拥塞窗口的大小相对于紧接在分组丢失之前的大小减半。因此,紧接在时间t1处的分组丢失之前,拥塞窗口的大小是s1,并且紧接在分组丢失之后,大小减小到s1/2。在时间t2和t3处的分组丢失之后,拥塞窗口的大小分别从s2减小到s2/2以及从s3减小到s3/2。

线504表示在整个第一片段的传送过程中大小保持恒定的情况下的拥塞窗口的大小。线506表示在没有分组丢失的时段期间拥塞窗口的大小增加的情况下的拥塞窗口的大小,并且响应于每次分组丢失而被重置为其初始大小。可以看出,在每次分组丢失之后将拥塞窗口的大小重置为其初始大小限制了与传统tcp实现相比减小窗口的大小的量。另外,可以看出,根据本文描述的示例控制拥塞窗口的大小使得拥塞窗口的大小能够在第一段片传送的持续时间内保持在其初始大小或高于其初始大小。如果适当地选择初始大小,则这使得能够在预测时间或在预测时间之前传送完片段,而不管在传送片段期间经历的分组丢失。

在步骤404之后,完成将第一内容片段传送到客户端108。当服务器已经从客户端108接收到针对形成第一内容片段的各数据分组的确认消息时,服务器可以确定已经完成第一片段的传送。

在步骤406,测量在传送第一片段期间的分组丢失。分组丢失的测量由分组丢失检测器216执行,分组丢失检测器216可以被配置成检测每次分组丢失。分组丢失检测器216可以响应于观察到特定指示性事件而检测到已经发生分组丢失。这种指示性事件的一个示例是从客户端108接收到重复确认分组(即,包含相同序列号的确认消息)。如图2所示,分组丢失检测器216可以连接到接口210,以使检测器216能够检查在服务器104处接收的每个确认分组。检测器216可以检查每个接收到的确认分组的序列号,并且响应于检测到具有相同序列号的多个确认消息(例如,两个、三个或更多个),检测到已经发生分组丢失。分组丢失的指示性事件的另一示例是分组重传计时器的期满(称为‘超时’)。分组重传计时器可以被存储在服务器104中(图2中未示出),并且响应于发送分组而启动。分组重传计时器可以指定服务器在认为丢失和重新发送分组之前从客户端接收到分组确认的时间。可以响应于确认分组的接收而重置计时器。分组丢失检测器216可以连接到计时器,以使其能够检测计时器何时期满。

分组丢失检测器216可以被配置成存储指示何时发生片段传送期间的各分组丢失的记录。例如,对于每次检测到分组丢失,记录可以包括指示何时发生该丢失的参数。该参数可以是时间值、分组号或一些其它参数。分组丢失检测器可以被配置成在传送第一片段期间每次检测到分组丢失时填充记录。

为清楚起见,应当注意,步骤406可由分组丢失检测器216在整个第一片段的传送过程中执行。也就是说,步骤406可以在时间上至少部分地与步骤404重叠,使得服务器104可以同时执行步骤404和406。

在步骤408,服务器确定当前流传输会话的所有片段是否已被传送到客户端。如果确定已经传送了所有片段,则认为流传输会话已完成并且该过程结束。如果确定并非所有片段都已被传送,则在步骤410,片段索引n增加1,使得n被设置为n+1的值。继续本示例,在步骤410,片段索引增加为‘2’。

在步骤412,拥塞窗口单元212根据所测得的第一片段的分组丢失确定第二拥塞窗口的初始大小。第二拥塞窗口将用于传送具有片段索引n=2的片段(其将被称为第二片段),并且为了清楚起见,可以被表示为cwnd2。

通过在传送第一片段期间使用所测得的分组丢失来确定第二片段的初始拥塞窗口大小,可以在更长的时间尺度(即,长于一个片段的时间范围)上实现对所承受的分组丢失的合适的拥塞响应。这使得服务器104与客户端108之间的连接能够通过实现与所测得的分组丢失相称的拥塞响应而对竞争的tcp业务来说是公平的。然而,与传统的tcp实现相比,通过在更长的时间范围上实现拥塞响应,可以避免高度可变和不可预测的片段传送时间。

拥塞窗口单元212可以使用仅针对第一片段的所测得的分组丢失来确定第二拥塞窗口的初始大小(即,不考虑针对任何其它前面传送的片段的所测得的分组丢失)。另选地,拥塞窗口单元212可以根据所测得的第一片段的分组丢失并且还根据所测得的在第一片段之前传送的一个或更多个前面片段的分组丢失来确定第二拥塞窗口的初始大小(可以回想一下,为了本示例的目的,术语‘第一片段’用于标识片段,而不是暗示该片段是作为服务器和客户端之间的流传输会话的一部分而被传送的第一片段)。

拥塞窗口单元212可以使用所测得的针对多个前面传送的片段的分组丢失,通过对所测得的针对这些片段的分组丢失取平均值并且使用所计算出的平均分组丢失,来确定第二拥塞窗口的初始大小。平均值可以是未加权平均值,也可以是加权平均值。加权平均值可以赋予与最近接收到的片段相关联的所测得的分组丢失较高的权重。

可以使用所测得的分组丢失来选择第二拥塞窗口的初始大小的一种方式是通过计算分组丢失率并使用该分组丢失率来确定第二拥塞窗口的初始大小。例如,分组丢失检测器216可以使用所测得的针对第一片段的分组丢失来计算分组丢失率,并且拥塞窗口单元212可以根据所计算出的分组丢失率来确定第二拥塞窗口的初始大小。拥塞窗口单元212可以根据仅针对第一片段的分组丢失率或者根据第一片段和一个或更多个前面片段的分组丢失率来确定第二拥塞窗口的初始大小。如果使用多个分组丢失率,则分组丢失检测器216可以计算多个前面接收到的片段的平均分组丢失率(即,第一片段和一个或更多个前面片段的平均分组丢失率)。可以根据平均测量的分组丢失计算平均分组丢失率。如上所述,对于所测量的分组丢失,平均分组丢失率可以是加权或未加权的平均值。然后,拥塞窗口单元212可以根据该平均分组丢失率来计算第二拥塞窗口的初始大小。

可以使用分组丢失率来确定第二拥塞窗口的初始大小的一种方式是使用分组丢失率来计算用于传送第二片段的目标比特率,并且然后根据目标比特率计算第二拥塞窗口的初始大小。用于计算目标比特率的分组丢失率可以是仅针对第一片段的分组丢失率或者针对第一片段和一个或更多个前面片段的平均分组丢失率。目标比特率可以由比特率计算器218来计算。比特率计算器218接收由分组丢失检测器216计算出的分组丢失率,并根据该值计算目标比特率。比特率计算器被配置成将所计算出的目标比特率传达到拥塞窗口单元212,该拥塞窗口单元212可以使用该目标比特率来计算第二拥塞窗口的初始大小。

比特率计算器218可以将用于传送第二片段的目标比特率计算为典型的tcp实现可能已经实现在与由分组丢失检测器216计算的分组丢失率类似的分组丢失率下传送片段的比特率。例如,比特率计算器可以根据以下等式计算目标比特率:

其中,s是片段的大小,rtt是往返时间,并且p是分组丢失率(再次,仅用于传送第一片段的分组丢失率,或者用于传送第一片段和第一片段之前传送的一个或更多个前面片段的平均分组丢失率)。等式(4)估计对于如由分组丢失率p指定的给定分组丢失条件的典型tcp实现可以实现的比特率。

不是使用从等式(4)计算出的比特率作为目标比特率,比特率计算器218可以根据等式(4)计算出的比特率和一个或更多个其它因子(诸如,已对第二片段进行编码的比特率,以及先前已经传送到客户端108的一个或更多个前面片段到第二片段被编码的比特率)来计算目标比特率rt。比特率计算器218使用从等式(4)计算出的比特率来确定目标比特率的程度可以是应用特定的。例如,对于某些应用,可以更加重视以竞争业务友好速率来传送片段,在这种情况下,比特率计算器可以更加强调在计算目标比特率时使用等式(4)来计算的比特率。在其它应用中,可以更加强调实现一致的传送质量,代价是考虑短时间到中等时间范围的竞争业务。在这种情况下,比特率计算器218可以在计算目标比特率时减少对根据等式(4)计算的比特率的强调。

除了上述考虑之外,比特率计算器218可以被布置成将目标比特率rt设置为大于或等于在指定时间间隔δt2内传送第二片段所需的速率。如上所述,用于传送的指定时间间隔可以由客户端108请求或由服务器104确定。

一旦比特率计算器218已经计算出目标比特率rt,则拥塞窗口单元212可以根据如下重新排列的等式(1)来计算第二拥塞窗口的初始大小cwnd2:

cwnd2=rtt×rt(5)

在步骤414,服务器104使用第二拥塞窗口通过网络106将第二片段传送到客户端。第二片段的传送受分派单元214控制,这可以使得第二片段的数据分组经由服务器的输出接口210通过网络进行传送。分派单元214还被配置成在第二片段传送的持续时间内(即,直到已经完成第二片段的传送为止)使用步骤402确定的第二拥塞窗口的初始大小来控制第二拥塞窗口的大小。

根据上面参照步骤404描述的用于传送第一片段的任何示例,分派单元214可以在整个第二片段的传送过程中使用第二拥塞窗口的初始大小来控制第二拥塞窗口的大小。例如,第二拥塞窗口在整个第二片段的传送过程中可以是恒定大小并且等于其初始大小。另选地,分派单元可以在没有检测到分组丢失的时段在传送第二片段期间增加第二拥塞窗口的大小,并且可以在传送第二片段期间每次检测到的分组丢失之后将第二拥塞窗口的大小重置为等于其初始大小。

在步骤416,分组丢失检测器216测量传送第二片段期间的分组丢失。分组丢失检测器216可以以与上面参照针对第一片段的步骤406描述的那些方式中的任何一个相同的方式确定第二片段的分组丢失。

然后,图4的过程返回到步骤408,并且服务器104判定是否已经为当前流传输会话传送了所有片段。如果确定已经传送了所有片段,则认为流传输会话已完成并且该过程结束。如果确定并非所有片段都已被传送,则在步骤410,片段索引n再次递增1,使得n被设置为n+1的值(继续本示例,n=3)。然后将重复步骤412到416以便将第三片段传送到客户端。具体地,在步骤412,拥塞窗口单元212根据传送第二片段期间的所测得的分组丢失确定用于传送第三片段的第三拥塞窗口的初始大小。在步骤414,服务器104使用第三拥塞窗口传送第三片段,其中,在传送第三片段的持续时间内使用第三拥塞窗口的初始大小来控制第三拥塞窗口的大小。在步骤416,分组丢失检测器216将测量在传送第三片段期间的分组丢失。然后,该过程返回到步骤408并重复直到当前流传输会话中的所有片段都已被传送。

以上示例说明了通过在片段传送的持续时间内使用拥塞窗口的初始大小来控制拥塞窗口的大小,如何在传送片段期间将对分组丢失的拥塞响应与分组丢失事件本身分离开。这使得能够在可预测且变化较小的时间内完成一段数据的传送。这转而使通信系统中的客户端能够减少他们所需的缓冲量,以使内容播出停顿的风险最小化,从而减少流传输会话的启动与客户端处内容播出的启动之间的端到端延迟。

已经在使用自适应比特率传送和底层tcp协议通过网络传送媒体内容的上下文中描述了以上示例。然而,应当理解,本发明不限于自适应比特率协议,而是可以在内容以片段的形式传送并且实现用于网络上的业务的拥塞控制的形式的各种通信系统中实现。

已经在服务器通过网络向客户端传送媒体内容的片段的上下文中描述了以上示例。例如,服务器可以是源服务器、内容传递网络(cdn)节点或住宅网关设备。更一般地,本文描述的服务器的功能可以由用于通过网络传送媒体内容的适当配置的发送器实现。客户端可以是http自适应比特率流传输客户端。客户端可以被配置成支持mpegdash、hls、smoothstreaming或一些其它自适应比特率流传输协议。更一般地,客户端可以是用于通过网络接收媒体内容的任何合适配置的接收器。

已经参照“第一片段”和“第二片段”描述了上面的示例。出于清楚和说明的目的,术语“第一”和“第二”被用作标签,但这不暗示内容流内的片段的相对时间顺序或内容流内的片段的时间位置。例如,“第一片段”不必是在流传输会话中传送的第一个片段,而是可以指作为内容流的一部分传送的任何非最终片段。一旦底层tcp协议在流传输会话开始时已完成快速启动过程(例如,如果底层tcp协议是tcpnewreno或tcpcubic),它就可以指的是正在传送的片段。第一片段可以另选地指代在快速启动过程或一些其它类似过程期间传送的片段。因此,从上述内容可以理解,如步骤402所述的第一拥塞窗口的初始大小可以由拥塞窗口单元212根据所测量的在第一片段之前传送的前面片段的分组丢失来选择。该前面片段可以是紧接在第一片段之前传送的片段或者内容流中通过一个或更多个中间片段与第一片段分离开的一些其它前面片段。

本文所描述并在图2和图3中示出的服务器和客户端被描述和示出为包括输入接口和输出接口中的一个或更多个。术语“输入”和“输出”不用于限制接口单独接收或发送数据,而是可以指接口与网络交换数据的方向。例如,服务器的输入接口可以是内容生成器的接口;并且服务器的输出接口可以是到下游网络(例如,网络106)的接口。客户端的输入接口(可以是服务器的下游)可以是到上游网络(例如,网络106)的接口。更一般地,输入接口和输出接口可以称为“第一”接口和“第二”接口。在一些实现中,服务器和/或客户端可以具有输入/输出接口形式的单个接口。

通常,上面针对通信系统的组件描述的任何功能、方法、技术或组件可以用软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。本文使用的术语“单元”、“检测器”和“计算器”通常可以表示软件、固件、硬件或其任何组合。在软件实现的情况下,单元、检测器和计算器表示在处理器上执行时执行指定任务的计算机程序代码或计算机可读指令。本文描述的算法和方法可以由执行使处理器执行算法/方法的代码的一个或更多个处理器来执行。计算机程序代码可以被存储在非暂时性计算机可读存储介质上。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或可由机器访问的其它数据以及其它存储器设备。

申请人在此独立地公开了本文所述的各个单独的特征以及两个或更多个这样的特征的任何组合,只要这些特征或组合能够基于本说明书作为整体根据本领域技术人员的共同一般知识被执行,而不管这些特征或特征的组合是否解决了本文公开的任何问题,并且不限制权利要求的范围。申请人指出,本发明的各方面可以包括任何这样的单独特征或特征组合。鉴于前面的描述,对于本领域技术人员显而易见的是,可以在本发明的范围内进行各种修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1