使用缓冲器大小计算用于拥塞控制的传输速率的数据通信方法和系统的制作方法

文档序号:7742502阅读:135来源:国知局
专利名称:使用缓冲器大小计算用于拥塞控制的传输速率的数据通信方法和系统的制作方法
技术领域
本发明涉及一种用于数据通信的方法和系统,更具体而言,涉及一种用于通过网络发送一个或更多个数据流的方法和系统,以及一种用于接收上述发送数据的方法和系统。此外,本发明还涉及一种存储计算机程序的计算机可读存储介质,当在计算机上运行该计算机程序时,其控制计算机执行前述的数据发送和接收方法。
背景技术
近年来用于数据通信的电信网在数量、范围、和用户数量上已经有了极大的增加。先前,在这种电信网上进行的大部分数据通信的一个特征是这些数据基本上是“基于消息”的。“基于消息”的意思是那些在网络上传输的数据形成了,例如电子邮件消息、在传送过程中的文件、或在客户机-服务器系统之间传递的其他应用数据的一部分。这种“基于消息”的数据的一个主要特征是它不是特别地时间关键性的,时间关键性是指为了使数据有用,数据必须在某个传输时间内到达接收机终端。相反地,倘若数据在一个合理的时间量内到达了接收机,则其仍然是对最终用户有用的。先前巳知的这种“基于消息”的数据的实例例如是标准电子邮件和使用文件传送协议(FTP)传送的文件。
新近,注意力已经从数据通信网发送传统的基于消息的数据的能力转移到了能够以连续数据流从发射机向接收机发送数据的网络和相关设备。这种数据的价值常常是时间关键性,因为网络必须尽可能平滑和快速地把数据从发射机传送至接收机终端,最好避免重发数据的需要。接下来根据图1描述在现有技术中巳知的这种数据流式传输系统的一个实例。
通常,将被流式传输的数据是多媒体数据,诸如音频和视频数据。该音频和视频数据可能来自现场视听广播,诸如新闻或体育事件,或者可能来源于,例如,当用户选择时允许他们根据他们的选择观看电视节目和电影的视频点播服务。然而,无论该数据的来源是什么,相应的音频与视频馈送数据必须首先被适当地数字编码,以便将该音频和视频数据信号压缩成一个适合于在网络上传输的大小。通常,依照不同的MPEG标准之中的一个来执行音频和视频编码。
在音频和视频数据编码之后,将已编码的数据传递到网络服务器,在网络服务器中,数据在通过网络传输至客户机之前被存储在独立的音频缓冲器和视频缓冲器中。
在缓冲之后,如下述更详细的论述,数据通过网络被发送,并且由接收机接收,其中在解码之前缓冲该数据。在接收机中由一个适当的解码器执行解码,并且将所解码的数据发送给在该接收机上运行的应用程序用以再现。
当前使用的最普遍的网络类型中的一种当然是那些形成因特网的网络,并且其使用网际协议(IP)在网络的网络层以IP数据报的形式传送数据。由传送层协议(传输控制协议(TCP)和用户数据报协议(UDP))提供通过网络层的数据传送。在TCP和UDP都是本领域中已知的,并且在例如Tannenbaum A.S.,“计算机网络”第三版,Prentice Hall,PP521-542页中有所描述。
UDP已经被经常用于通过网络的流式数据服务,并且尤其是用于流式音频和视频数据。然而,UDP是一种无连接传输协议,并因此不提供服务质量控制机制,也不能够允许为一个用户保证特别的服务质量。此外,将UDP用于流式数据导致了其它的问题,因为它总是以相同的传输速率发送出数据,而不考虑网络拥塞状态以及在接收终端的接收数据缓冲器的状态,这很容易导致分组丢失,并由此丢失数据。也就是说,当对于流式数据使用UDP时,那么如果发生网络拥塞,UDP继续以相同的传输速率发送数据分组,从而助长了该网络拥塞。在没有用于减轻网络拥塞的机制的最坏情况下,结果可能是丢失多数或全部数据流分组。类似地,如果该数据流的数据传输速率高于接收机缓冲器清空的速率,则缓冲器会溢出,由此提供了另一种分组丢失的机制。在这种情况下的有害效应是双重的——不仅使接收机了溢出的数据,该溢出的数据在实时多媒体数据的情况下将导致更差质量的再现,而且该网络由于发送了那些随后在它们的目的地的溢出分组而浪费了带宽。
通过使用TCP作为网络传输协议可以略微减轻上述与使用UDP进行流式数据传输相关联的问题。TCP是一种面向连接的协议,其把分组确认提供至发送终端,该发送终端允许对数据传输速率的增加的控制量。更具体而言,TCP包括一个传输速率控制算法以解决网络拥塞,如在上述536至539页描述的。TCP传输控制算法是已知的“加法的-增加-乘法的-减少”类型的算法,其中一旦达到基本的阈值传输速率,则传输速率以一种加法方式,一个分组接一个分组地增加,直到发生分组,于是传输速率随后以一种乘法的方式减少,例如,将传输速率减半。因此当发生分组丢失时,TCP传输速率算法通过减少数据流的传输速率考虑了网络拥塞,但是减少的乘法性意味着通过网络的数据吞吐量的变化会是相当高的。
图2图解说明了一个使用TCP的数据吞吐量的实例,由此将领会到数据传输速率可以相对于时间产生相当大的变化。使用TCP时在传输速率中相对高的变化意味着它不是特别地适合于流式数据应用,其中,优选的是传输速率相对于时间平滑地变化的稳定状态。此外,TCP传输速率控制算法没有考虑接收机缓冲器状态,从而如果在接收机中TCP流传输速率高于解码速率,则再一次引入了分组丢失的可能性。正如UDP的情况一样,在目的地的分组丢失显示出双重的有害效应——不仅接收机丢失了溢出的数据,其在实时多媒体数据情况下将导致更差质量的再现,而且该网络由于发送那些随后在它们的目的地丢失的溢出分组而浪费了带宽。
当将要同时发送两个或更多包含相关数据(诸如音频和视频数据)的数据流时,与对流式数据使用TCP导致的数据传输速率的频繁变化相关的问题更复杂化。在这种情况下,当使用TCP并且以在独立的数据流中传输的音频和视频数据作为例子,由于音频流是通过与视频流独立的TCP连接发送的,于是每个相应的连接将应用它自己的传输速率控制算法,而不考虑另一个流的传输速率。最终的结果是,经过一段时间,通过网络的音频流的数据吞吐量变得基本上与视频流的相同,然而实际上对于大多数的视听源来说,通常每单位时间发送的视频数据比音频数据要多得多。如此通过TCP获得的在音频与视频流之间传输速率的相等可以在接收机具有这样的效果,即,影响数据的适当再现,由于因为这两个类型的数据不是分别以与音频和视频数据的产生相匹配的速率发送的,通常有足够的音频数据存储在接收机音频缓冲器中用于由视听应用程序再现,但是同时在接收机视频缓冲器中没有如音频数据一样足够的视频数据用于再现。
由于对每个相应的流应用各自的传输速率控制算法,尤其是由于标准TCP传输速率控制算法的乘法性减少的性质,产生了进一步的问题。考虑独立于视频流通过TCP连接发送音频流,而其中视频流也使用TCP发送的情况。通常,如先前所解释的,每个连接的平均吞吐量将基本相同,但是由于当在其中一个流中出现分组丢失时传输速率的乘法性减小,在任何特定的时刻在两个流各自的传输速率之间实际上可能存在很大的差异。这些在两个流之间的传输速率的潜在大的短期变化向数据传输引入了不确定性,并可能导致接收机中数据缓冲器的问题,因为出现临时的大的差异时,音频缓冲器例如可能充满并溢出从而丢失数据,但是相应的视频缓冲器可能已经被清空,由此阻止了AV再现的发生。
先前已经通过对每个流使用无连接UDP协议,并且简单地以合适的传输速率发送每个流以保持这些流之间的数据正确比率,处理了由于对多个数据流应用TCP传输速率控制算法而导致的上述问题。但是,如先前所讨论的,UDP没有考虑接收机缓冲器的状态来控制传输速率。因此,仍然需要能够保持每个流的传输速率的稳定性的传输速率控制方法和系统,同时该方法和系统仍考虑到接收机中缓冲器的状态,以防止在接收机中的不必要的分组丢失。

发明内容
本发明通过提供一种数据传输方法和系统处理上述问题,在该方法和系统中网络服务器确定接收机缓冲器的状态。服务器随后以数据传输比特率发送数据流,控制该流的数据传输速率以防止接收机缓冲器溢出。传输速率的控制还具有为数据流提供平滑稳定状态传输速率的效果。可以以开环或闭环的方式执行接收机缓冲器状态确定。
为上述目的,根据本发明的第一方面,提供了一种通过网络传输数据的方法,包括以下步骤以数据流的形式以一数据传输速率把数据发送到网络上以发送到接收机;确定接收机中的数据缓冲器的至少一个或更多个特征,在该数据缓冲器中存储了接收到的数据;以及响应于所确定的特征来控制数据流的数据传输速率,以防止接收机中的数据缓冲器溢出。
根据本发明的第二方面,还提供了一种用于通过网络传输数据的系统,包括数据流传输装置,用于在数据流中以一数据传输比特率把数据发送到网络上以发送到接收机;特征确定装置,用于确定接收机中存储了接收到的数据的数据缓冲器的至少一个或更多个特征;以及数据流控制装置,用于响应于所确定的特征来控制数据流的数据传输速率,以防止接收机中的数据缓冲器溢出。
通过确定接收机中的存储该流中接收到的数据的数据缓冲器的一个或更多个特征,本发明使得能够以这样的方式控制数据传输速率,即,使得在接收机端不会由于缓冲器溢出而丢失分组。其提供的优势在于提高了网络带宽利用率,如在重发任何丢失的数据分组的情况下,因为数据首先不会通过缓冲器溢出而丢失,因此不需要重发。此外,在例如通常不需要数据重发的实时数据的情况中,可以以更为平滑的方式实现实时数据的再现,并同时具有预期的再现质量。
特征确定可以是开环或闭环的。特别地,当所述确定是开环时,服务器仅记录它已经把多少分组发送到接收机,以及那些分组的解码速率将是多少。通过提前知道接收机缓冲器的大小,服务器可以保持一个接收机缓冲器中剩余多少空间的估计,并相应地调整传输速率。
当特征确定是闭环时,接收机向服务器发送表示该一个或更多个特征的信息,然后服务器使用接收到的信息作为传输速率控制的基础。
优选地,该一个或更多个特征至少包括在所述流中发送的数据在接收机中的解码速率,并且数据流的传输速率被进一步控制为至少为该接收机解码速率的函数。通过把数据流的传输速率和解码速率联系起来,可以实现从发射机到接收机的稳定的稳态传输,其特别适合于流式实时数据。
在其它实施例中,数据缓冲器的该一个或更多个特征包括表示缓冲器剩余容量的信息。通过确定剩余的缓冲器容量,可以适当地实现传输速率的连续或分步变化,例如通过把发送的数据改变成以较低的质量编码的数据,因此要求较小的缓冲器容量以重现相同的信息。
在其它优选实施例中,该方法进一步包括计算应当进行数据流发送的最大传输速率的步骤,并且将传输比特率控制在所计算的最大速率之内。
通过使用考虑了网络拥塞而导出的传输速率公式计算数据流的最大传输速率,可以控制流的最大传输速率,以体现那些在流被路由到的那部分网络中的拥塞,从而最小化其它分组丢失机制的影响。
优选地,计算最大传输速率以给出通过网络的平均数据吞吐量,该数据吞吐量类似于使用传输控制协议(TCP)而获得的吞吐量,以使得数据流可以被称为“TCP友好的”。通过使用TCP友好的传输速率控制方案,可获得以下优点,即可控制传输速率以体现网络拥塞,以及适应网络中的其它竞争TCP连接。
优选地,该方法进一步包括以下步骤把多个数据流发送到网络以传输到接收机,每一个数据流以各自的数据传输速率传输;确定各个存储了接收到的数据流的数据缓冲器的至少一个或更多个特征;以及,响应于接收到的反馈数据控制每个流各自的传输速率,以防止数据缓冲器溢出。
根据上文,本发明还具有在从发射机向一个或更多个相同或不同的接收机传输多个数据流的应用。
优选地,发送的数据流包含音频或视频数据。在同时传输两种数据流时,优选地,其中一个流包含音频数据,另一个流包含视频数据。优选地,音频和视频数据是相关的,因为预期在接收机端同时再现,例如视频数据是电视节目或电影,而音频数据是其配音。本发明特别用于流中的音频和视频数据的传输,其中本发明可以控制每个流的发送速率,以达到基本平滑,并防止接收机缓冲器溢出。优选地,控制发送速率,以匹配接收机缓冲器的读出速率。
优选地,本发明可进一步被设置为从所述或每个接收机中接收反馈数据,该反馈数据表示往返时间(RTT)、丢失率值、和/或接收机的接收速率值中的一个或更多个,并另外计算作为由反馈数据表示的作为一个或更多个接收到的值的函数的总传输速率。往返时间是数据从发射机到接收机并回到发射机所需的时间的度量,而丢失率值是网络中丢失的发送到接收机的数据量的度量。接收速率值是在往返时间内接收机接收到的比特数。
通过提供从接收机到服务器的反馈,可以向服务器提供最新信息,该信息例如表示网络上导致分组丢失的拥塞情况。服务器则能够根据当前网络的状态计算流的最大的可用传输速率,从而优化传输流的传输速率。
此外,根据本发明的第三方面,进一步提供了一种存储计算机程序的计算机可读存储介质,当在计算机上运行时,该程序可以控制计算机执行根据本发明第一方面的方法。
优选地,该计算机可读存储介质可以是光盘、磁盘、磁光盘、固态计算机存储器、或任何其它适合的数据存储介质中的任何一种。
根据本发明的第四方面,还提供了一种从网络接收数据的方法,该数据已经根据先前关于本发明的第一或第二方面说明的方法或系统发送,该方法包括以下步骤接收以一数据传输速率传输的数据流;将接收到的数据传递到数据缓冲器,以在其中缓冲;测量数据缓冲器的至少一个或更多个特征;以及将所测量的特征发送到发射机,以用于计算从发射机发送的数据流的传输速率。
通过将数据缓冲器的特征发送回发射机,可以使得发射机能控制它的数据传输速率,以防止接收机中的数据缓冲器溢出,和数据丢失。
优选地,在第四方面中,该方法进一步包括以下步骤以一解码速率对数据缓冲器中的数据进行解码,并将数据解码速率作为所述测量的特征中的至少一个发送到发射机。通过将数据解码速率传递到发射机,可以使得发射机可以控制它的传输速率,以获得稳定的稳态传输速率,其中解码速率基本上与传输速率相匹配,优选地解决了网络中的分组丢失。
此外,优选地,该一个或更多个特征进一步包括表示缓冲器剩余容量的信息。通过把此信息传递到发射机,发射机可以使用速率的分步变化作为紧急措施进一步控制数据流的传输速率,以防止缓冲器溢出。
根据本发明的第五方面,还提供了一种用于从网络接收数据的系统,该数据已经根据先前关于本发明的第一或第二方面说明的方法或系统发送,在第五方面中,该系统包括数据接收装置,用于接收以一数据传输速率传输的数据流;数据总线装置,用于把接收到的数据传递到数据缓冲器,以在其中缓冲;缓冲器监视装置,用于测量数据缓冲器的至少一个或更多个特征;以及数据传输装置,用于将所测量的特征发送到发射机,以用于计算从发射机发送的数据流的传输速率。
本发明的第五方面表现了与先前关于第四方面说明的相同的特征和优点,以及进一步的特征和优点。
此外,根据本发明的第六方面,还提供了一种存储计算机程序的计算机可读存储介质,当在计算机上运行时,该程序控制计算机执行根据本发明的第四方面的方法。如在第三方面一样,根据本发明第六方面的存储介质可以实现为磁盘、光盘、磁光盘、固态计算机存储器等中的任何一种或更多种。


通过下列参照附图仅仅以示例性的方式给出的本发明的实施例的描述,本发明的其它特征和优点将变得明显,附图中相同的标号表示相同的部分,其中图1是说明现有技术的多媒体流式系统的组件的示意框图;图2是说明使用现有技术的TCP协议的网络的数据吞吐量的图表;图3是说明用于本发明实施例中的服务器和客户机设备的设置的框图;图4是用于本发明实施例中的服务器设备中的主要组件的框图;图5是用于本发明实施例中的客户机设备中的功能组件的框图;图6是由本发明第一实施例中的服务器设备执行的方法步骤的流程图;图7是由用于本发明第一实施例中的客户机设备执行的方法步骤的流程图;图8是说明用于本发明的实施例中的丢失事件率的计算所涉及的步骤的流程图;图9是在本发明实施例中使用的滤波系数的图表;图10是用于本发明的实施例中的接收机设备中的滤波器组件的框图;图11是由本发明第二实施例中的服务器设备执行的方法步骤的流程图;图12是由在本发明第二实施例中使用的客户机设备执行的方法步骤的流程图;以及图13是使用本发明的实施例实现的数据流之一的通过网络的数据吞吐量的图表。
具体实施例方式
现在将参照图3-13说明构成本发明的三个实施例的各种组件的构造和操作。应当注意,本文中说明的优选实施例意在作为本发明应用到例如音频和视频数据的多媒体数据传输的非限制性的示例,本发明可以在几乎任何通过网络发送一个或更多个数据流的应用中使用。
在描述中术语“发射机”和“服务器”可互换地使用,术语“接收机”和“客户机”也是如此。
本文将要说明的本发明的每个实施例可使用相同的系统组件,尽管是以不同的程度,并在它们的操作方法上存在差异。因而接下来进行对可用于每个实施例的设备的通用的说明,接着依次分别说明每个实施例的操作。
在图3中说明了构成本发明优选实施例的系统的两个基本组件。这里,可以看出,提供了在其中设置有第一视频缓冲器42和第二视频缓冲器43的服务器40。第一视频缓冲器42被设置为存储已经以第一视频编码速率进行了编码的编码视频数据,而第二视频缓冲器43被安排为存储已经以第二视频编码速率编码的更多的编码视频数据,其中该第二视频编码速率低于存储在第一缓冲器42中的编码视频数据的编码速率。应当注意存储在两个缓冲器42和43中的编码视频数据是相同的原始视频数据得到的,但其仅是使用不同的编码速率被编码,以给出不同的编码视频数据。通常,由于用于生成存储在第一缓冲器42中的编码视频数据的编码速率更高,所以第一缓冲器42中的编码视频数据将比相应的存储在第二视频缓冲器43中的以较低的编码速率编码的编码视频数据更大。优选地使用H.623编码对视频数据进行编码,尽管应当理解可以使用任何适合的视频编码技术,例如MPEG等。
在服务器40中也提供了一个用于存储编码音频数据的音频数据缓冲器44。请注意,在优选实施例中仅以单个编码速率对音频数据进行编码,因此仅需要单个音频缓冲器。优选地,使用AMR音频编码对音频数据进行编码,尽管可以使用任何其它适合的音频编码技术,例如MP3等。
除了服务器40之外,在优选实施例中还提供了一个或更多个客户机计算机50。为了清楚起见,图3显示了单个客户机,但服务器有可能服务于多于一个的客户机,并且可以把多于一个的数据流发送给每个客户机。在本实施例中,每个客户机包括一个视频缓冲器52和一个音频缓冲器54。视频缓冲器52被设置为接收并存储从服务器40接收到的编码视频数据。视频缓冲器52存储接收到的编码视频数据,直到客户机计算机中提供的视频解码器从视频缓冲器52中取出编码视频数据,用于解码并再现其中被编码的视频信号。类似地,音频缓冲器54接收从服务器40发送的编码音频数据,对编码音频数据进行缓冲,直到客户机计算机中提供的音频解码器从音频缓冲器54中取出编码音频数据,用于解码并再现其中被编码的音频信号。
为了在服务器计算机和所述或每个客户机计算机之间提供数据通信,在服务器40和所述或每个客户机50之间提供第一用户数据报协议(UDP)连接10,沿着该连接从服务器40发送编码视频数据。类似地,从服务器40到所述或每个客户机50还提供了第二UDP连接20,沿着该连接发送编码音频数据。由服务器以下面将为本发明的每个实施例说明的方式对UDP连接10和20各自的传输速率进行控制。
除了在服务器和所述或每个客户机之间的UDP连接之外,在第一和第二实施例中在所述或每个客户机和服务器之间建立传输控制协议(TCP)连接30,以用于主要从所述或每个客户机返回到服务器的控制消息的传输,以使得能够有效地控制两个UDP连接10和20的传输速率,稍后将讨论在每个实施例中通过TCP连接从所述或每个客户机发送到服务器的反馈数据的进一步的细节。
现在转至图4,图4以框图的形式例示了在本发明优选实施例中的服务器计算机40中需要的组件。应当注意图4仅例示了本发明至少一个实施例的操作所必需的那些服务器组件,而没有例示服务器系统操作所需的那些其它组件,应当理解,预期的读者是本领域的技术人员,他们将可识别出完整操作服务器系统所需的那些附加的组件。
在优选实施例中,服务器计算机40包括多媒体应用控制器41,它被安排为接收编码音频数据和编码视频数据,并如先前关于图3所述,在缓冲器42,43和44中缓冲接收到的数据。请注意为清楚起见,这些缓冲器未在图4上显示。多媒体应用控制器41通过TCP连接30把控制消息发送到客户机计算机50,并接收来自客户机计算机50的控制消息。此外,多媒体应用控制器从适当的缓冲器向网络连接模块47提供编码视频数据和编码音频数据,该网络连接模块对数据进行分组化,用于通过网络向客户机计算机进行传输。因此,操作网络连接模块47以从多媒体应用控制器接收编码音频和视频数据,把数据分组化成适合传输的形式,并分别以适当的发送速率以两个相应的UDP数据流将数据分组发送到网络上。数据流各自的发送速率由发送速率计算器46根据稍后将为每个实施例讨论的适合的传输速率公式计算。发送速率计算器46把为音频和视频数据流计算的发送速率传递到网络连接模块47,以把所计算的传输速率通知给网络连接模块47。在第一和第二实施例中,通过从客户机计算机到多媒体应用控制器的TCP连接,获得在发送速率计算器46中计算的传输速率公式的输入数据,那些输入数据通过适合的连接从多媒体应用控制器传递到发送速率计算器。
进一步提供了网络控制器模块48,以控制网络连接47执行适当的数据分组化过程,以允许在网络上传输音频和视频数据。
此外,进一步提供了作为存储器等的重传缓冲器49,其被安排为从网络连接47接收数据分组以及适当的控制信号,并且如果网络连接47必须重发缓冲分组时,缓冲接收到的数据分组。所发送的数据分组的缓冲和重传与本发明无关,并因此没有在这里阐述进一步的细节。
尽管未在图4中显示,仍然应当注意服务器计算机40进一步包括至少一个计算机可读存储介质,该计算机可读存储介质存储用于控制服务器计算机的操作以执行本发明的计算机程序。该计算机可读存储介质可以是任何已知的类型,并且特别地可以由光盘、磁盘、磁光盘、固态计算机存储器、或任何其它适合的数据存储介质中的任何一个或其组合形成。
图5是本发明的实施例中需要的客户机计算机50的功能组件的框图。与服务器计算机40的说明相似,应当理解图5没有例示操作客户机计算机50所需的所有组件,而仅例示了本发明的至少一个优选实施例的操作需要的那些功能块组件。作为本领域技术人员的读者,应当理解为了进行完整的操作需要客户机计算机的哪些附加的组件。
在客户机计算机50中提供了多媒体应用控制器51,其对应于服务器中提供的多媒体应用控制器41。多媒体应用控制器51提供了在客户机计算机50中运行的多媒体应用的高级控制,并且通过由TCP连接30传递的控制消息与服务器中相应的多媒体应用控制器41进行通信。类似地,多媒体应用控制器51向构成优选实施例的客户机计算机50的其它功能组件提供控制信号。
在客户机计算机50中进一步提供了被安排为从网络接收一个或更多个数据流中的数据分组的网络连接模块57。与接收到的一个或更多个数据流中的数据有关的控制信息被传递到用于计算数量值的量度计算器(metrics calculator)56,这些数量值表示接收到的数据流的某些特征,并且所计算的数量值被传递到反馈发射机58,用以作为控制消息通过TCP连接30在网络上传回。稍后给出有关数量值计算的进一步信息。
网络连接57接收音频和视频数据流,并从每个流中的分组中提取编码音频和视频数据。编码音频和视频数据随后被传递给缓冲器控制器59,缓冲器控制器59把接收到的编码音频数据馈送到音频缓冲器54,并把接收到的编码视频数据馈送到视频缓冲器52。缓冲控制器59进一步被设置为监测音频缓冲器54和视频缓冲器52的状态,以确定每个缓冲器有多满,以及每个缓冲器清空的速率,该速率表示存储在缓冲器中的数据的解码速率。进一步提供了音频解码器53,它可从音频缓冲器54中读取编码音频数据,并对编码音频数据进行解码,以提供解码音频数据作为输出。类似地,提供了从视频缓冲器52取出编码视频数据,并对编码视频数据进行解码,以提供视频输出信号的视频解码器55。
缓冲器控制器59在接收到与音频和视频缓冲器状态有关的信息后,马上将此信息传递到反馈发射机,用以合并到通过TCP连接30传回服务器计算机的控制消息中。
尽管未在图5中显示,应当注意客户机计算机进一步包括至少一个计算机可读存储介质,它存储用于控制客户机计算机的操作以执行本发明的计算机程序。该计算机可读存储介质可以是任何已知的类型,并特别地可以由光盘、磁盘、磁光盘、固态计算机存储器、或任何其它适合的数据存储介质中的任何一种或其组合而形成。
已经说明了构成本发明的服务器设备和客户机计算机设备的基本功能块,现在将依次说明本发明优选实施例的操作。
第一实施例现在参照图6到10说明本发明的第一实施例,第一实施例具体涉及把一个或更多个独立的流发送到相同的或不同的客户机,并以闭环方式控制流的传输速率。
图6是根据本发明的第一实施例的由服务器计算机40执行的步骤的流程图。首先,在步骤102,发送速率计算器46为将要从服务器计算机40发送的各个数据流计算可用的总带宽。该max_rate值表示每个单独的数据流的传输速率都不应超过的传输速率上限。根据下列原理计算max_rate值。
典型地,当前在互联网中使用的先前的多媒体会议应用是基于UDP传输协议的,这正如先前讨论的,没有提供服务质量控制机制,并因此不能够执行诸如对例如网络拥塞进行补偿所需的控制措施。因此,如上所述,当出现网络拥塞时竞争TCP连接减小它们的传输速率,而没有UDP通信的任何速率减小。
为了避免此问题,在本发明的第一实施例中,采用拥塞控制方案增强了UDP音频和视频数据流,max_rate参数的计算形成了该拥塞控制方案的一部分。更特别地,计算该参数max_rate以对“TCP友好”的流提供最大的传输速率,它是在时间上与通过TCP连接实现的吞吐量相类似的传输速率。
在第一实施例中,使用已经导出的传输速率公式计算总传输速率参数max_rate,以便对TCP连接在时间上的平均吞吐量建模,并由此计算总速率,以便提供TCP友好的传输速率。在第一实施例中,我们使用下面的等式1中说明的传输速率公式bit_rate_stream=c(packet_medium_sizeRTTloss_rate)]]>等式1请注意,应用到普遍存在的TCP连接的上述等式的来源可参见Floyd S.“在分组交换网络中与多个拥塞网关的连接,第一部分单向通信(Connections with Multiple Congested Gateways in PacketSwitched Networks Part 1One Way Traffic)”,计算机通信评论(Computer Communications Review),1991年10月,卷21,第5期,30-47页。
在上面的等式中C是在0.87到1.31范围内的常数,RTT是分组从一计算机通过网络传输到另一计算机,并返回所需的以秒为时间度量的往返时间,loss_rate是在去往接收机的途中在网络中丢失的分组的度量,而packet_medium_size是作为计算对象将在流中发送的分组的平均大小。请注意,稍后进一步讨论等式1的这些项以及如何计算它们以用在传输速率公式中。
等式1给出了bit_rate_stream值,它是单个的TCP连接在现有网络条件中能够实现的平均带宽的估计。然而,在第一实施例中,我们不直接使用此估计作为流的总传输速率,而是将此bit_rate_stream值如下所示代入等式2中max_rate=min(bit_rate_stream,2*receiving_rate_stream) 等式2参数receiving_rate_stream是通过TCP连接从所述或每个客户机计算机接收到的,并且其对应于由客户机接收到的在RTT秒内计算的特定流的比特数量。
上面的等式2给出了使单个UDP流表现TCP友好性时可用的总带宽max_rate。此值是为了保持TCP友好,数据流应当被发送的速率的最大值。应当注意,应当为服务器发送的每个流分别执行等式1和2的计算。
在可用的最大传输速率的计算之后,在步骤S104,服务器中的发送速率计算器46为所述或每个数据流计算实际的传输速率(data_rate),它可以是音频UDP流或视频UDP流。如下计算data_rate。
如先前所述,本发明的主要目的是控制一个或更多个数据流的传输速率以使得接收机中的数据缓冲器中的数据的水平可以被控制,以防止在所述或每个客户机中的一个或更多个相应的缓冲器溢出。在第一实施例中独立于其它从服务器向相同的或不同的客户机发送的流的传输速率,控制从服务器发送的每个数据流的传输速率,响应于来自所述或每个客户机的与在解码之前存储所接收到的数据的数据缓冲器的状态有关的反馈数据实现该控制。在第一实施例中,假设所述或每个客户机计算机可以报告回数据解码速率(相当于缓冲器被清空的速率),或表示每个缓冲器有多满(或有多空)的信息中的至少一个或更多个。使用此信息,发送速率计算器46能够根据下列变型中的任何一个或更多个来为每个流计算data_rate。
在第一变型中,服务器对应于所接收的数据在客户机端的解码速率,即缓冲器被清空的速率,从客户机接收反馈数据。在最简单的情况下,传输速率被简单地设置为等于接收到的解码速率,而不考虑先前讨论的所计算的最大传输速率。在这种情况下,不执行涉及max_rate计算的步骤102。通过将传输速率设定为等于解码速率,可以确保缓冲器不会溢出,因为理论上数据应当以与它被从缓冲器清除的相同的速率到达缓冲器。随后将是稳定的传输速率,传输速率的变化取决于编码速率的变化。
然而,上面的第一变型假设通过网络的传输是理想的,在途中没有发生分组丢失。因此,在第二变型中,不仅从客户机接收解码速率,服务器还接收先前提到的loss_rate量度(稍后详细说明loss_rate值的计算),并且如下将其作为一项代入传输速率的计算式data_rate=(1+loss_rate)*decode_rate等式3如此,服务器能够为网络中的当前丢失率进行某种提前补偿。
在另一个变型中,服务器接收关于缓冲器有多满的信息,并执行传输速率的分步或连续变化,以防止缓冲器溢出。有很多可以应用于这种情况的算法,例如,数据速率反向地与缓冲器的填充百分比相关(即百分比越大,数据速率越低),或者通过使用门限技术实现分步变化(例如,在一个简单的情况中如果缓冲器<x%满,则以第一较高的速率发送,否则如果缓冲器>x%满,则以第二较低的速率发送。可同样地设想具有多于一个门限的算法)。可通过控制源数据的编码以给出较高的(较高质量)或较低的(较差质量)的编码速率,实现传输速率的分步变化。
在第四变型中,使用在步骤102计算的max_rate值。这里,服务器从客户机接收解码速率信息,并且发送速率计算器46首先检查接收到的解码速率是否小于所计算的max_rate。如果是,传输速率被设置为与客户机端的解码速率相同,否则传输速率被设置为所计算的最大传输速率。通过考虑如上所述的所计算的最大传输速率,可以体现网络拥塞,以及使数据流具有TCP友好性。
毫无疑问,预期的读者应当理解可以通过从客户机接收到的可用的信息,使用其它更为复杂的速率控制算法,并且上面的例子仅意在作为非限制性的示例。然而,本发明第一实施例的实质方面在于把与接收机缓冲器相关的反馈数据发送到服务器,并将其用于服务器以控制它的传输速率以防止在客户机端的缓冲器溢出。毫无疑问,预期的读者将明白除了上面那些概述方案之外的其它的方案也可用于实现此目的。
返回图6,在为每个流计算发送速率后,在步骤S106,服务器中的网络连接47以所计算的发送速率将一个或更多个流作为独立的UDP数据流发送。应当注意,当连续传输该一个或更多个流时,图11的步骤,尽管是顺序地显示的,实际上是并行地执行的,使得实际上一旦已计算出新的传输速率值,这些流的传输速率就被更新。然而,在执行新的计算时,继续以以前计算的速率发送所述流。
在图6的步骤S108,服务器计算机40从所述或每个客户机计算机50接收反馈数据,其在第一实施例中是执行步骤S102和S104的最大传输速率和数据流传输速率计算所需的数据。特别地对于每个流,服务器接收数据,该数据用以通知它在客户机端当前正在经历的往返时间、在客户机端的分组的丢失率、客户机中缓冲器的各自的解码速率、以及在客户机端每个数据流的数据接收速率。这些数量值通过TCP连接从所述或每个客户机被传回服务器。应当注意,为每个所发送的数据流,从所述或每个客户机传回这些值。
一旦从客户机接收到更新的反馈数据,就将其传递到服务器中的发送速率计算器46,发送速率计算器46再一次执行步骤S102和S104中的计算,把结果传递到网络连接47,网络连接47把这些流与新计算的发送速率一起发送。此过程在所述或每个客户机的会话期间是连续的。
现在将考虑如在图7中陈述的第一实施例中的客户机计算机之一的操作来讨论从所述或每个客户机计算机传回到服务器的数量值的计算。参照图7,在步骤S101,客户机计算机50中的网络连接57通过网络接收一个或更多个作为各个UDP传输的数据流。如上所述,网络连接57对来自各个UDP流的编码数据取消分组化,并将编码数据传递到缓冲器控制器59,用于缓冲和后续解码。
在包含音频或视频数据的单个流的情况下,由缓冲器控制器59接收的编码数据被分别存储在音频缓冲器54或视频缓冲器52之一中。在步骤S103,缓冲器控制器59分别询问音频缓冲器54和视频缓冲器52,以便确定每个缓冲器的状态。特别地,缓冲器控制器确定关于每个缓冲器有多满,以及音频和视频解码器53和55分别以多快的速率对每个缓冲器中的编码音频和视频信息进行解码的信息。这表示了音频和视频缓冲器将以多快的速度被各自的解码器清空。一旦缓冲器控制器确定了每个缓冲器的状态,所确定的信息被传递到反馈发射机58以封装成一个控制消息,以传回服务器计算机40。
除了把编码音频和视频数据传递到缓冲器控制器之外,网络连接57还把涉及接收到的数据的信息传递到量度计算器56,以使量度计算器56能够计算由反馈发射机58传回服务器的定量的量度值。因此,在步骤S105、S107和S109,量度计算器分别为每个流计算往返时间(RTT)、丢失事件率、和每个流接收到的数据速率,在服务器端需要所有这些数值作为等式1和2的输入,用于计算每个数据流可用的最大传输速率。应当注意,为每个接收到的数据流分别计算这三个量度,以为每个接收到的数据流提供一组量度。接下来依次讨论这些数量值的每一个的计算。
关于RTT,如先前所述的,RTT是分组从一计算机通过网络传送到另一计算机,并返回所需时间的度量。因此RTT是在客户机计算机的量度计算器56中测量的某个值,但是为了防止振荡,优选地如下进行计算RTT=0.2*RTTsample+0.8*RTTmean等式4RTTsample是量度计算器最近测量的RTT度量,然而RTTmean值是所有以前RTT度量的均值。
在步骤S107中,量度计算器56计算在客户机计算机处经历的每个流的丢失事件率。丢失事件率的计算是量度计算器56所要执行的最复杂的计算,并且依赖于根据到达分组的序列号检测UPD流中丢失的分组。由网络连接基于到达分组中的分组序列号的检测来执行此丢失分组的检测,其中如果至少有三个具有高于所期望的分组的序列号的分组到达了接收机,而所期望的分组还没有到达,那么所期望的分组被定义为丢失。因此,如果预期具有序列号5的分组,则在随后将要到达的分组是分组6、分组7、随后是分组5的情况下,不把分组5定义为丢失。但是,如果按顺序到达的下三个分组是分组7、分组8、和分组6,则因为到达的三个分组中的每一个都具有高于期望分组5的序列号,所以将分组5定义为丢失。
如上已经规定了如何将分组定义为丢失,然后量度计算器定义被称为丢失事件的另一个现象。在优选实施例中,丢失事件定义为在任何RTT度量中检测到一个或更多个分组的丢失。因此,如果在任何特定的RTT度量中,序号为4、6、7、9、10、11的分组到达,则尽管分组5和8已经丢失,但实际上在所测量的特定RTT中仅存在一个丢失事件。此方法解决了在网络中同时丢失多个分组的问题,而不会过度影响总丢失事件速率的计算。
一旦如上所述检测到丢失事件,在步骤S74,量度计算器56计算最近的丢失间隔,该丢失间隔是在当前检测的丢失事件和前一次检测到的丢失事件之间接收到的分组数。量度计算器存储最新计算的丢失间隔,以及n个最近计算的丢失间隔,用于应用在加权滤波器中,已给出一个平均丢失间隔值。如下计算平均丢失间隔值。
参照图9和10,图10说明了构成量度计算器和用于计算丢失率的一些功能组件。更具体而言,丢失事件检测器562如前述检测丢失事件,并将最近计算的丢失间隔输出至第一多个串联的丢失间隔缓冲器564。当一个新的丢失间隔被输入至第一串联缓冲器564时,保留在第一缓冲器中的前一次的丢失间隔值被移位至下一个缓冲器,后者的值被移位至串联缓冲器中的下一个缓冲器,等等,如在图10中显示。这样,n个最近的丢失间隔值被存储,用于在计算平均丢失间隔值时使用。每个存储在移位缓冲器564中的丢失间隔值分别与时间加权丢失间隔系数A0至An相乘,这些时间加权丢失间隔系数被存储在相应的系数存储器656中。根据图9中显示的时间加权系数函数导出系数A0到An的各个值,这保证了平均丢失间隔的计算在更大程度上依赖于最近丢失间隔而不是根据先前计算存储的历史丢失间隔。应用这种加权滤波器的目的是保证所计算的丢失事件速率平滑地发生变化。
在加法器566中将加权丢失时间间隔计算的结果相加,将其结果传递至反相器(inverter)568以计算丢失率,该丢失率是由加法器566计算的平均丢失间隔的倒数。这样计算的丢失率随后被传递至反馈发射机58,用于如先前所述传输到服务器计算机。
量度计算器56也执行对接收到的数据速率的计算,该接收到的数据速率是在RTT秒中由客户机在数据流中接收到的比特数量的直接度量。与在任何时间在每个流中接收到的数据量相关的信息从网络连接57传递至量度计算器56,用于计算每个流的接收速率。随后所计算的每个流的接收速率被传递至反馈发射机58,用于如先前所述传输回服务器计算机。
一旦反馈发射机58已经从缓冲器控制器59和量度计算器56接收到要求的信息,它就将该信息分组化成适合于通过网络以TCP连接30传输的形式。
应当注意,在图7的流程图中显示的步骤S101到S1013仅用于说明的目的,实际上所述或每个客户机计算机50可以以任何期望的顺序执行这些步骤中的任何一个或所有步骤。此外,还可以并行地执行这些步骤中的几个,例如缓冲器控制器59执行的音频和视频缓冲器的检查和度量可以与由量度计算器56执行的计算并行进行。但是请注意,在第一实施例中接收机必须已经实际上接收到了音频和视频数据流中的数据,以得到计算发送回服务器计算机的数量值所需的信息。
在服务器中,由网络控制器48和网络连接47一起通过根据计算的速率把分组实际释放到网络上来控制所述或每个流的实际传输速率。但是在数据流中的视频数据传输的特定情况下,计算的速率可能不能满足所用的特殊编码速率的传输速率需求。在此情况下,如果有迹象表明所计算的用于视频流的传输速率不得不下降,以使得以目前的视频编码速率不可能在视频流中发送足够的数据以防止接收机的视频缓冲器被清空,则网络控制器48控制网络连接47采用来自低速率编码视频缓冲器43的编码视频数据,该编码视频数据采用更低的质量进行编码,其更适合于以更低的计算传输速率通过网络传输。在接收机中,低速率编码视频数据被置于视频缓冲器中,并且视频解码器55检测到该低编码速率,并把它自己的解码速率改变为低速率,这减小了从视频缓冲器中读取视频数据的速率。这样的措施防止了视频缓冲器完全清空,从而使得能够在客户机计算机上连续进行视频再现。
第二实施例现在将参照图8到13说明本发明第二实施例的操作。本发明第二实施例具体涉及把多于一个的数据流发送到相同的客户机,并具体涉及在独立的音频和视频数据流中同时发送实时音频和视频数据。此外,与第一实施例一样,第二实施例也涉及以闭环方式控制流的传输速率。
图11是根据本发明第二实施例的由服务器计算机40执行的步骤的流程图。首先,在步骤2,发送速率计算器46计算可用于将从服务器计算机40发送的所有各个的数据流的总带宽。该值total_rate表示传输速率的上限,当每个独立的数据流各自的传输速率相加在一起时,不能超过该上限。根据下列规则计算total_rate值。
以在第一实施例中一样的方式来考虑在第二实施例中应用的每个流的传输速率的计算,因此分别对每个流应用如先前在第一实施例中描述的等式1和2,以获得每一个流的max_rate值,代表音频和视频数据流中的每一个的最大单独传输速率。但是,在本实施例中,我们关注于多个流的传输,因此必须对每个将要发送的数据流分别执行上述的计算。也就是说,对每个流(即第二实施例中的音频和视频流)都依次应用等式1和2,从而得到每个流的max_rate值。这样得到的用于每个流的各个值随后被相加以给出total_rate值,该值是可用于所有的流以提供TCP友好性的总带宽,并由此考虑了可能的网络拥塞。
在可用的总传输速率的计算之后,在步骤S4,服务器中的发送速率计算器46计算每个数据流各自的传输速率,该速率在第二实施例中是音频UDP流的传输速率(audio_rate)和视频UDP流的传输速率(video_rate)。audio_rate和video_rate的值如下计算。
如先前参照图3所述,音频数据以与视频数据分离的UDP流发送,视频数据通过另一个UDP流发送,因此存在两个独立的UDP连接,每一个UDP连接都用于一个流。虽然可以认为每个流在竞争相同的网络带宽,但实际上不是这样,因为不可能在相同的时刻发送视频和音频数据分组。因此,在两个数据流是音频和视频流的情况下,先前计算的总发送比特率可以等于音频发送比特率加上视频发送比特率。此外,如将在下文中说明的,在第二实施例中,服务器从客户机接收关于视频和音频缓冲器状态,以及视频和音频分组解码速率的信息。因此,可以控制音频和视频数据流的发送速率,以控制客户机中的缓冲器的填充速率。其如下实现。
首先,定义参数filling_rate_audio和filling_rate_video,它们分别是接收机中的音频和视频缓冲器填充数据的速率。在本实施例中filling_rate_audio=audio_rate-decoding_audio_rate等式5以及filling_rate_video=video_rate-decoding_video_rate等式6
假设需要控制接收机中的缓冲器,以便以比率x∶y填充缓冲器,则x(filling_rate_audio)=y(filling_rate_video)等式7以及total_rate=audio_rate+video_rate 等式8执行适当的代入,并分别解出audio_rate和video_rate,那么得出audio_rate=y(total_rate-decoding_video_rate)+x(decoding_audio_rate)x+y]]>等式9video_rate=x(total_rate-decoding_audio_rate)+y(decoding_video_rate)x+y]]>等式10这样,从上述很明显看出,可以依据在接收机中的各个音频和视频解码速率,控制各个音频发送速率和视频发送速率,以协调一个流与另一个流之间的比特率。此外,以上应当注意到,参数total_rate是先前应用等式1和2计算出来的值,以给出可用于所有数据流的传输的总可用带宽,即,total_rate=total_rate_stream_1+total_rate_stream_2+……+total_rate_stream_n其中,n是同时发送的数据流的数量。
返回到图11,在计算用于每个流的音频和视频发送速率之后,在步骤S6,服务器中的网络连接47采用计算的音频和视频发送速率,以独立的UDP数据流发送音频和视频流。应当注意,当连续发送音频和视频流时,图11的步骤,虽然是顺序地显示的,但是实际上是并行执行的,使得实际上一旦已经计算出了音频和视频传输速率的新值,就立即更新音频和视频流的传输速率。但是,当在执行新的计算时,这些流继续以先前计算的速率发送。
图13说明了当发送与由图2中描绘的TCP连接发送的相同的数据时,根据本发明实施例控制的一个数据流的测量的传输速率的曲线。从图13中可以看出,在会话开始时在经历了初始的瞬态变化之后,流的传输速率稳定了,并随着时间的过去以相对小的变化继续。此外,当与在图2中显示的TCP连接所经历的传输速率相比较时,将看到实现了一个几乎与TCP相等的平均吞吐量,但是没有由于TCP的乘法性减少控制算法所导致的大的传输速率变化。该提供了关于时间的平滑传输速率的特性使得本发明特别适合用于发送需要连续流的数据。
在图11的步骤S8,服务器40从客户机计算机50接收反馈数据,该反馈数据在优选实施例中是执行步骤S2和S4的总传输速率和数据流传输速率计算所需的数据。具体地说,对每一个数据流,服务器接收一数据,该数据用于通知它当前在客户机正在经历的往返时间、在客户机的分组丢失率、客户机中音频和视频缓冲器各自的解码速率、以及在客户机的各数据流的数据接收速率。这些数量值通过TCP连接从客户机发送回服务器。
一旦已以客户机接收到了更新的反馈数据,该数据被传递到服务器中的发送速率计算器46,发送速率计算器再一次执行步骤S2和S4的计算,将结果传递到网络连接47,网络连接发送具有新计算的发送速率的音频和视频流。该过程在客户机会话期间持续。
现在将相对于在图12中阐明的第二实施例中的客户机计算机的操作,讨论从客户机计算机传递回服务器的数量值的计算。参照图12,在步骤S1,客户机计算机50中的网络连接57把独立的音频和视频数据流作为通过网络的各个UDP传输接收。如先前所述,网络连接57解除来自各个UDP流的编码音频和视频数据的分组化,并且将编码视频和音频数据传递至缓冲器控制器59,用于缓冲和随后的解码。
由缓冲器控制器59接收的已编码的音频和视频被分别存储在音频缓冲器54和视频缓冲器52中。在步骤S3,缓冲器控制器59分别询问音频缓冲器54和视频缓冲器52,以便确定每个缓冲器的状态。特别地,缓冲器控制器确定关于每个缓冲器有多满,以及音频和视频解码器53和55分别以多快的速率对每个缓冲器中的编码音频和视频信息进行解码的信息。这表示了音频和视频缓冲器将以多快的速度被各自的解码器清空。一旦缓冲器控制器确定了每个缓冲器的状态,所确定的信息就被传递到反馈发射机58以封装成一个控制消息,以传回服务器计算机40。
除了把编码音频和视频数据传递到缓冲器控制器之外,网络连接57还把与接收到的数据相关的信息传递到量度计算器56,以允许量度计算器56计算由反馈发射机58传回服务器的定量的量度值。因此,在步骤S5,S7和S9,量度计算器分别为每个流计算往返时间(RTT)、丢失事件速率、和每个流的接收数据速率,在服务器端需要所有这些数值作为等式1和2的输入,用于计算每个数据流的可用传输速率。应当注意,为每个接收到的数据流分别计算这三个量度,以使得为每个接收到的数据流提供一组量度。用于每个流的这些量度中的每一个的计算都与先前在第一实施例中说明的完全一样,并因此这里不再重复。
一旦反馈发射机58已经从缓冲器控制器59和量度计算器56接收到需要的信息,它就将该信息分组化成适合于通过网络以TCP连接30传输的形式。
应当注意,在图12的流程图中显示的步骤S1到S13仅用于说明的目的,实际上客户机计算机50可以以任何期望的顺序执行这些步骤中的任何一个或所有步骤。此外,还可以并行地执行这些步骤中的几个,例如缓冲器控制器59执行的音频和视频缓冲器的检查和度量可以与由量度计算器56执行的计算并行进行。但是请注意,在第二实施例中接收机必须已经实际上接收到了在音频和视频数据流中的数据,以得到计算发送回服务器计算机的数量值所需的信息。
在服务器中,由网络控制器48和网络连接47一起通过根据计算的速率把分组实际释放到网络上来控制每个流的实际传输速率。但是在第二实施例中描述的音频和视频数据传输的特定情况下,如同在第一实施例中一样,对于视频数据,特别是所计算的传输速率可能不能满足特殊编码速率的传输速率需求。在这样的情况下,如果有迹象表明计算的用于视频流的传输速率不得不下降,以使得以目前的视频编码速率不可能在视频流中发送足够的数据以防止接收机的视频缓冲器被清空,则网络控制器48控制网络连接47采用来自低速率编码视频缓冲器43的编码视频数据,该编码视频数据采用了更低的质量进行编码,其更适合于以更低的计算传输速率通过网络传输。在接收机中,将低速率编码视频数据被置于视频缓冲器中,并且视频解码器55检测到该低编码速率,并把它自己的解码速率改变为低速率,这样减小了从视频缓冲器中读取视频数据的速率。这样的措施防止了视频缓冲器完全清空,从而使得能够在客户机计算机上连续进行视频再现。
应当注意到,由于本发明的第二实施例是致力于将音频和视频数据作为多个数据流发送的,则在第二实施例中,用于设定每一个流各自的比特率的标准被选择为反映音频和视频数据的特殊需要,因为它必须在接收机中被解码以再现原始的音频和视频信号。但是,本发明不限于音频和视频数据作为多个数据流的传输,实际上几乎任何类型的需要以一个或更多个流发送的数据类型都可以使用本发明进行发送。
此外,关于在本发明中可以使用的总的最大传输带宽的计算,在优选实施例中,我们使用了一种试图模拟由标准TCP连接获得的平均吞吐量的传输速率公式。但是,应当理解该特定的公式和使用该公式的原因都不是意在限制本发明,实际上,可以使用任何合适的传输速率公式计算随后用于计算各个流传输速率的可用最大传输速率。
更特别的,并作为一个示例,在将通过一个因特网协议网络进行传输的情况下,则可以使用其它提供TCP友好传输速率的传输速率公式,以替代在本特定实施例中使用的公式,在本领域中已知有各种其它TCP友好的公式。此外,当使用需要不同的参数作为输入的不同公式时,则应当将所述或每一个客户机计算机设置用来计算和提供服务器所需要的任何参数。在不使用IP网络的情况下,则所选择的传输速率公式应当优选地是对于使用在感兴趣的特定网络上的任何传输协议有意义的公式,并且其优选地提供有意义的传输速率控制,以考虑例如网络拥塞,以及所导致的分组丢失等等的因素。在本发明的其它实施例中,对于本领域的技术人员应当明白,什么传输速率公式是适合的取决于本发明的特定应用领域。
第三实施例现在将说明本发明的第三实施例。第三实施例具体涉及把一个或更多个独立的流发送到相同的或不同的客户机,并以开环的方式控制所述或每个流的传输速率。
先前讨论了与闭环控制系统相关的实施例,其中在服务器使用从客户机接收的信息,以控制传输速率。但是在第三实施例中,通过服务器记录它在所述或每个数据流中发送至客户机的分组,以及使用先验知识估算在客户机缓冲器中还有多少空间,来执行开环控制。所述先验知识包括客户机缓冲器大小(S)(字节)、在客户机开始从缓冲器中读取所接收的数据之前客户机将进行的静态缓冲的量、以及将从缓冲器中读取数据的速率。服务器可以保持一个经常性更新的有关客户机在其缓冲器中还剩多少空间的估算,并相应地控制传输速率。
更特别的,在第三实施例中,发送速率计算器46已经在其中存储了与所述或每个客户机的下列属性有关的信息a)在开始解码之前,客户机将进行多少静态缓冲(T秒);以及b)客户机的缓冲器有多少字节的大小(S字节)此外,服务器中的网络连接47监测与以下有关的信息,并将其传递到发送速率计算器c)在特定时间t发送的数据的原始解码速率(d(t)字节/秒);以及d)在该时间t数据的传输速率(tx(t)字节/秒)网络连接通过记录发送到客户机的每一个分组,计算客户机中的解码速率。由于每一个分组上具有一个时间戳,并且在服务器中的网络连接也知道每一个分组有多长的时间,所以能够计算客户机应当从它的缓冲器中消耗所接收分组时的分段每秒字节数。网络连接应当也知道传输速率,并且可以简单地随时间对其进行登记以保持一个它的记录。网络连接将与解码速率和过去的传输速率相关的信息传递至发送速率计算器。
已经确定和接收了上述变量之后,发送速率计算器可以通过应用下列等式确定在任何时间t在缓冲器中的剩余空间(space)的字节数
space=S-∫0ttx(t)dt]]>对于t<Tspace=S-∫0ttx(t)dt-∫tTd(t)dt]]>对于t≥T 等式11使用上述等式,不需要来自客户机的有关缓冲器填充状态或所接收的数据的解码速率(从接收机缓冲器中读取的速率)的反馈,但是要求服务器提前知道T的值(静态缓冲时间——在客户机开始从缓冲器中读取数据之前第一次接收到流时,客户机花了多少时间缓冲数据)以及S的值(客户机缓冲器的字节大小)。但是通过连续地执行上述计算,服务器可以在流传输期间一直保持客户机的缓冲器中剩余的空间量的一个估算,只要客户机做了服务器认为它将要做的事(即,直到开始后T秒才开始解码,并且具有缓冲器大小S)。当然,如果发生了另外的情况(即用户按了暂停),客户机将必须发信号,以使服务器重新计算。可以如先前关于第一实施例和第二实施例中所描述的那样通过TCP信道发这种信号。此外,如果发生了任何分组丢失,并且客户机将此情况返回,则可以通过该分组的大小来调整缓冲器的填充程度。
当然,当T&S未知时,或者是动态时,则需要当前缓冲器填充状态的反馈,如先前在第一实施例中说明的。
当服务器传输多个流时,为每个流执行上面的处理步骤,以为每个流分别确定每个相应的缓冲器的剩余空间。
上面的方法确定了在传输期间的任何特定时刻服务器认为客户机在其缓冲器中还有多少字节空间的估计space。然后有必要使用此信息实际控制所述或每个流的传输速率以防止缓冲器溢出。在第三实施例中,如第一实施例一样,这可以通过很多方式实现。
在第一变型中,服务器可以使用该空间信息执行传输速率的分步或连续变化,以防止缓冲器溢出。有很多可以应用于这种情况的算法,例如,数据速率反向地与缓冲器的填充百分比相关(即百分比越大,数据速率越低),或者通过使用门限技术实现分步变化(例如,在一个简单的情况下如果缓冲器<x%满,则以第一较高的速率发送,否则如果缓冲器>x%满,则以第二较低的速率发送。可同样地设想具有多于一个门限的算法)。可通过控制源数据的编码以给出较高的(较高质量)或较低的(较差质量)编码速率来实现传输速率的分步变化。
在另一个变型中,服务器可以在当前网络状态下以尽可能快的速率发送,以填充客户机的缓冲器(如服务器所估算的),并随后停止发送直到缓冲器被清空到一个特定的水平(又如服务器所估算的)。在此变型中,数据可以以突发型(burst-type)的方式作为一系列的流被发送,并且将不会实现通常对流式多媒体有利的稳态传输,但是这种突发型传输在一些可能的网络环境中具有优势。
毫无疑问,预期的读者应当理解可以与由服务器确定的空间信息一起,使用其它更为复杂的速率控制算法,并且上面的示例仅意在作为非限制性的示例。然而,本发明第三实施例的实质方面在于,服务器估算接收机缓冲器中的剩余空间,并在服务器中使用该信息以控制它的传输速率,以防止客户机的缓冲器溢出。毫无疑问,预期的读者将明白除了上面那些概述之外的其它的方案也可用于实现此目的。
也应注意,在第三实施例中也可以计算最大传输速率,并将所计算的最大速率作为上限应用于传输速率控制。最大传输速率的计算与先前关于第一和第二实施例所描述的是相同的。它在速率控制算法中的应用也相似,因为所计算的最大速率可作为最大上限简单地应用于任何所选择的速率控制算法,传输速率不能超过该上限。另选地,在进一步的变型中,将多个流发送到相同的客户机,传输速率控制可以如在第二实施例中所描述的,区别之处在于在速率控制等式中所使用的解码速率值是在服务器中监测的值,而不是从接收机传递回的值。
权利要求
1.一种通过网络传输数据的方法,包括以下步骤采用数据流的形式以一数据传输速率把数据发送到网络上以发送到接收机;确定所述接收机中的数据缓冲器的至少一个或更多个特征,在该数据缓冲器中存储了接收到的数据;以及响应于所确定的一个或更多个特征来控制所述数据流的数据传输速率,以防止所述接收机中的所述数据缓冲器溢出。
2.根据权利要求1的方法,其中所述确定步骤进一步包括以下步骤监测所述数据流中已经发送到所述接收机的数据量;存储一个或更多个与所述接收机缓冲器相关的参数;以及基于所监测的数据以及所存储的参数,估算所述一个或更多个特征;其中以一种不需重复地从所述接收机反馈所述接收机数据缓冲器的所述一个或更多个特征的开环方式执行估算步骤。
3.根据权利要求1的方法,其中所述确定步骤进一步包括以下步骤从所述接收机接收表示所述接收机数据缓冲器的所述一个或更多个特征的反馈数据;其中所述控制步骤响应于接收到的反馈数据控制所述数据传输速率。
4.根据前述任何一个权利要求的方法,其中所述一个或更多个特征至少包括在所述接收机接收到的流中发送的数据的解码速率;并进一步控制所述数据流的传输速率,使该传输速率至少作为该接收机解码速率的函数。
5.根据前述任何一个权利要求的方法,其中所述一个或更多个特征包括表示所述缓冲器剩余容量的信息。
6.根据前述任何一个权利要求的方法,进一步包括计算数据流应当被发送的最大传输速率,所述控制步骤被进一步设置为将传输比特率控制在所计算的最大比特率之内。
7.根据权利要求6的方法,其中计算所述最大传输速率以给出通过网络的平均数据吞吐量,该数据吞吐量类似于使用传输控制协议(TCP)而获得的数据吞吐量。
8.根据权利要求6或7中的任何一个的方法,其中所述计算步骤进一步包括以下步骤从所述接收机接收反馈数据,该反馈数据表示往返时间值(RTT)、丢失率值、和/或所述接收机的接收速率值中的一个或更多个;以及计算作为由该反馈数据表示的一个或更多个接收到的值的函数的所述最大传输速率;其中所述往返时间是数据从一发射机传送到所述接收机并回到所述发射机所需的时间的度量;所述丢失率值是发送到所述接收机的丢失的数据量的度量;而所述接收速率值是在所述往返时间内接收到的比特数。
9.根据权利要求8的方法,其中所述最大传输速率根据下式计算bit_rate_per_stream=c(data_medium_sizetRTTlossrate)]]>其中maximum_rate_stream=min(bit_rate_per_stream,2×Receiving_Rate)其中data_medium_size是所述流中通过网络发送的数据的平均大小的度量,并且c是在0.87≤c≤1.31范围内的一个常数。
10.根据前述任何一个权利要求的方法,进一步包括以下步骤将多个数据流发送到网络上,以将其传输到一个或更多个接收机,每一个流以各自的数据传输速率传输;对每一个流确定存储了在每个流中接收到的数据的各个数据缓冲器的至少所述一个或更多个特征;以及响应于接收到的反馈数据控制每个流各自的数据传输速率,以防止所述数据缓冲器溢出。
11.根据权利要求10的方法,当从属于权利要求6至9中的任何一个时,其中对于发送至同一个接收机的两个流,根据下列等式控制每个流各自的数据传输速率sr_str_1=y(tr-dr_str2)+x(dr_str1)x+y]]>sr_str_2=x(tr-dr_str1)+y(dr_str2)x+y]]>其中相关的变量如下Sr_str_1第一数据流的发送速率;Sr_str_2第二数据流的发送速率;tr为每个流计算的最大传输速率的总和;dr_str1第一数据流中的数据在接收机中的解码速率;dr_str2第二数据流中的数据在接收机中的解码速率;x在从第一数据流接收数据的接收机中的第一缓冲器的填充速率的系数;以及y在从第二数据流接收数据的接收机中的第二缓冲器的填充速率的系数。
12.一种在网络上产生一个或更多个数据流的方法,包括根据权利要求1至11中的任何一个的数据传输方法。
13.一种用于通过网络传输数据的系统,包括数据流传输装置,用于在数据流中以一数据传输比特率把数据发送到网络上以发送到接收机;特征确定装置,用于确定所述接收机中存储了接收到的数据的数据缓冲器的至少一个或更多个特征;以及数据流控制装置,用于响应于所确定的特征来控制所述数据流的所述数据传输速率,以防止所述接收机中的所述数据缓冲器溢出。
14.根据权利要求13的系统,其中所述特征确定装置进一步包括监测装置,用于监测所述数据流中已经发送到所述接收机的数据量;存储装置,用于存储一个或更多个与所述接收机缓冲器相关的参数;以及估算装置,用于基于所监测的数据以及所存储的参数,估算所述一个或更多个特征;其中所述估算装置可操作为以一种不需重复地从接收机反馈接收机数据缓冲器的所述一个或更多个特征的开环方式执行该估算。
15.根据权利要求13的系统,其中所述特征确定装置进一步包括数据接收装置,用于从所述接收机接收表示所述接收机数据缓冲器的所述一个或更多个特征的反馈数据;其中所述数据流控制装置进一步可操作为响应于接收到的反馈数据控制所述数据传输速率。
16.根据权利要求13至15中的任何一个权利要求的系统,其中所述一个或更多个特征至少包括在所述接收机接收到的流中发送的数据的解码速率;并且所述数据流控制装置进一步可操作为控制所述数据流的传输速率,使其至少作为该接收机解码速率的函数。
17.根据权利要求13至16的系统,其中所述一个或更多个特征包括表示所述缓冲器的剩余容量的信息。
18.根据权利要求13至17中的任何一个权利要求的系统,进一步包括计算装置,用于计算所述数据流应当被发送的最大传输速率,所述数据流控制装置进一步可操作为将传输比特率控制在所计算的最大比特率之内。
19.根据权利要求18的系统,其中所述计算装置可进一步操作为计算所述最大传输速率以给出通过网络的平均数据吞吐量,该数据吞吐量类似于使用传输控制协议(TCP)而获得的数据吞吐量。
20.根据权利要求18或19中的任何一个的系统,其中所述数据接收装置被进一步设置为从所述接收机接收反馈数据,该反馈数据表示往返时间值(RTT)、丢失率值、和/或所述接收机的接收速率值中的一个或更多个;并且所述计算装置被进一步设置为计算所述最大传输速率,使所述最大传输速率作为由该反馈数据表示的一个或更多个接收到的值的函数;其中所述往返时间是数据从一发射机传送到所述接收机并回到所述发射机所需的时间的度量;所述丢失率值是发送到所述接收机的丢失的数据量的度量;而所述接收速率值是在所述往返时间内接收到的比特数。
21.根据权利要求20的系统,其中所述最大传输速率根据下式计算bit_rate_per_stream=c(data_madium_sizetRTTlossrate)]]>其中maximum_rate_stream=min(bit_rate_per_stream,2×Receiving_Rate)其中data_medium_size是所述流中通过网络发送的数据的平均大小的度量,并且c是在0.87≤c≤1.31范围内的一个常数。
22.根据权利要求13至21中的任何一个权利要求的系统,包括用于将多个数据流发送到网络上以将其传输到一个或更多个接收机的装置,每一个所述数据流以各自的数据传输速率传输;用于对每一个流确定存储了在每个流中接收到的数据的各个数据缓冲器的至少所述一个或更多个特征的装置;以及用于响应于接收到的反馈数据控制每个流各自的数据传输速率以防止所述数据缓冲器溢出的装置。
23.根据权利要求22的系统,当从属于权利要求18至21中的任何一个时,其中对于发送至同一个接收机的两个流,根据下列等式控制每个流各自的数据传输速率sr_str_1=y(tr-dr_str2)+x(dr_str1)x+y]]>sr_str_2=x(tr-dr_str1)+y(dr_str2)x+y]]>其中相关的变量如下Sr_str_1第一数据流的发送速率;Sr_str_2第二数据流的发送速率;tr为每个流计算的最大传输速率的总和;dr_str1第一数据流中的数据在接收机中的解码速率;dr_str2第二数据流中的数据在接收机中的解码速率;x在从第一数据流接收数据的接收机中的第一缓冲器的填充速率的系数;以及y在从第二数据流接收数据的接收机中的第二缓冲器的填充速率的系数。
24.一种存储计算机程序的计算机可读存储介质,当该计算机程序在一计算机上运行时,其控制该计算机执行根据权利要求1至12中的任何一个的方法。
25.一种从网络中接收数据的方法,该数据已经根据权利要求3或从属于权利要求3时的权利要求4到11中的任何一个的传输方法发送,或者该数据已经由权利要求15或从属于权利要求15时的权利要求16到23中的任何一个的传输系统发送,该方法包括以下步骤接收以一数据传输速率传输的数据流;将接收到的数据传递到数据缓冲器,以在其中缓冲;测量所述数据缓冲器的至少一个或更多个特征;以及将所测量的特征发送到一发射机,以用于计算从该发射机发送的数据流的传输速率。
26.根据权利要求25的方法,进一步包括以下步骤以一解码速率对所述数据缓冲器中的数据进行解码;其中将所述数据解码速率作为所测量的多个特征中的至少一个发送到所述发射机。
27.根据权利要求25或26的方法,其中所述一个或更多个特征包括表示所述缓冲器的剩余容量的信息。
28.根据权利要求25至27中的任何一个权利要求的方法,进一步包括计算往返时间值(RTT)、丢失率值、和/或接收速率值中的一个或更多个,并且将所计算的值发送回所述发射机;其中所述往返时间是数据从一发射机传送到所述接收机并回到所述发射机所需的时间的度量;所述丢失率值是发送到所述接收机的丢失的数据量的度量;而所述接收速率值是在所述往返时间内由接收机接收到的比特数。
29.根据权利要求28的方法,其中使用n个最近丢失间隔的加权滤波计算所述丢失率,该丢失间隔为在两个丢失事件之间接收到的数据输出。
30.一种从网络中接收数据的系统,该数据已经根据权利要求3或从属于权利要求3时的权利要求4至11中的任何一个的传输方法发送,或者该数据已经由权利要求15或从属于权利要求15时的权利要求16至23中的任何一个的传输系统发送,该方法包括以下步骤数据接收装置,用于接收以一数据传输速率传输的数据流;数据总线装置,用于将接收到的数据传递到数据缓冲器,以在其中缓冲;缓冲器监测装置,用于测量所述数据缓冲器的至少一个或更多个特征;以及数据传输装置,用于将所测量的特征发送到一发射机,以用于计算从该发射机发送的数据流的传输速率。
31.根据权利要求30的系统,进一步包括解码装置,用于以一解码速率对所述缓冲器中的数据进行解码;其中将所述数据解码速率作为所测量的多个特征中的至少一个发送到所述发射机。
32.根据权利要求30或31的系统,其中所述一个或更多个特征包括表示所述缓冲器的剩余容量的信息。
33.根据权利要求30至32中的任何一个权利要求的系统,进一步包括计算装置,用于计算往返时间值(RTT)、丢失率值、和/或接收速率值中的一个或更多个;所述数据传输装置进一步可操作为将所计算的值发送回所述发射机;其中所述往返时间是数据从一发射机传送到所述接收机并回到所述发射机所需的时间的度量;所述丢失率值是发送到所述接收机的丢失的数据量的度量;而所述接收速率值是在所述往返时间内由接收机接收到的比特数。
34.根据权利要求33的系统,其中使用n个最近丢失间隔的加权滤波计算所述丢失率,该丢失间隔为在两个丢失事件之间接收到的数据输出。
35.一种存储计算机程序的计算机可读存储介质,当该计算机程序在一计算机上运行时,其控制该计算机执行权利要求25至29的方法。
全文摘要
公开了一种数据传输方法和系统,其中一个或更多个数据流以各自的传输速率发送,控制该传输速率以防止接收机中的数据缓冲器溢出。在一些实施例中,在发送服务器处接收与接收客户机中的每一个缓冲器的状态相关的反馈数据,并且使用该反馈数据调整发送速率已达到该效果。将表示数据解码速率或每一个缓冲器的填充程度的信息作为反馈数据传递到服务器。在其它实施例中,服务器对缓冲器中的剩余空间进行开环估算,并相应地控制该传输速率。同时也公开了一种适合于接收这些数据流的数据接收方法和系统。
文档编号H04L12/20GK1557072SQ02818399
公开日2004年12月22日 申请日期2002年9月13日 优先权日2001年9月21日
发明者爱德华·乌尔赛斯, 爱德华 乌尔赛斯, 大卫 沃克, 马滕·大卫·沃克 申请人:英国电讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1