用于利用空闲带宽的技术的制作方法

文档序号:7949372阅读:148来源:国知局
专利名称:用于利用空闲带宽的技术的制作方法
技术领域
本发明涉及通信。更特别地,本发明涉及有效使用所分配的带宽。
背景技术
以数字格式将诸如音频和/或视频之类的多媒体内容传递到终端设备的处理正变得越来越平常。这种内容可以包括音频、视频以及其他那些经由广播传输介质传递的内容。由于这些内容的特性,多媒体(音频/视频)流的比特率可能会随时间而改变。典型的比特率是128~384千比特每秒(kbps)。在视频和音频压缩方面的最新进展强调的也正是上述效果,这是因为,与较老的压缩技术相比,现在的相关比特率变化相对较大。
对诸如手持式数字视频广播(DVB-H)之类的广播信道来说,这种信道的总容量是固定的。该信道的确切容量取决于所用的调制参数。对DVB-H来说,用于移动和室内接收的容量通常介于每秒5与15兆比特(Mbps)之间。在DVB-H中,这个总带宽被分成多个时间片信道,其中每个信道都具有静态比特率,以便帮助实施移动性和切换。
对每一个多媒体流来说,通常会向相应的广播信道(例如,相应的DVB-H时间片)分配一定数量的带宽。在理想情况下(但并不是必要的),DVB-H时间片信道只包含单个多媒体流,由此可以降低终端设备中的功耗。
这种带宽约束可以被强加于广播信道之上。这种强制方式可以包括通过缓存而使比特率变化变缓。但是,过多的缓存有可能产生延迟。因此,有一种用于确保不会出现过多延迟的方法,包括分配比流比特率的长期平均值更多的广播信道带宽。对DVB-H时间片信道来说,这意味着通常会存在剩余或空闲带宽。
带宽是一种宝贵的资源。因此,期望的是减小被浪费的带宽总量。

发明内容
本发明提供了一种分组封装器。该分组封装器包括一个过滤器模块,该模块用于从多个接收的分组中识别出一个或多个轮盘分组(carousel packet)。然后,所述一个或多个轮盘分组被保存在分组缓存器中。此外,该分组封装器还包括一个信道队列,用于对分组进行排队以便经由广播传输介质进行传送。举例来说,该信道队列还接收来自过滤器模块的转发分组。除此之外,当在广播传输介质中至少存在预定数量的可用带宽时,该信道队列还接收来自分组缓存器的一个或多个轮盘分组。
该广播传输介质可以是数字广播网络,例如手持式数字视频广播(DVB)(DVB-H)网络或DVB陆地(DVB-T)网络。作为替换,该广播网络也可以是其他类型的数字广播网络,其中包括ATSC、ISDB-T、数字音频广播(DAB)或世界数字广播(Digital RadioMondiale,DRM)。作为进一步的替换,该广播传输介质也可以是电缆网络。
分组封装器还可以包括一个比较表,用于存储与分组缓存器中的特定轮盘分组相对应的索引值。这些索引值可以是从相应的轮盘分组值中计算得到的散列值。
此外,该分组封装器还可以包括接收队列,该接收队列具有一个或多个与分组缓存器中保存的特定轮盘分组相对应的条目。接收队列中的这些条目是根据分组缓存器中的一个或多个轮盘分组的接收时间戳值而按照时间先后顺序排列的。
另外,该分组封装器还可以包括一个发送队列,该发送队列具有与分组缓存器中保存的特定轮盘分组相对应的条目。该发送队列还可以包括上一接收指针和上一发送指针,其中该上一接收指针用于指定将要添加与新分组相对应的条目的位置,该上一发送指针用于指定与分组缓存器中的最近发送到信道队列的轮盘分组相对应的条目。
所接收的分组可以是网际协议(IP)分组。这些分组可以包括一个静态时间戳字段。
本发明还提供了一种用于与远程服务器建立轮盘会话并且从远程服务器接收轮盘分组的方法和计算机程序产品。当先前没有接收到分组时,该方法和计算机程序产品会将接收到的轮盘分组添加到分组缓存器中,否则,当先前接收到了轮盘分组并且已将其存入了缓存器时,该方法和计算机程序产品将会更新分组缓存器中的所接收轮盘分组的时间戳。另外,该方法和计算机程序产品还会根据所接收的轮盘分组来更新一个或多个存取数据结构,并且将会接收广播传输介质中的可用带宽的指示。响应于这个指示,该方法和计算机程序产品将保存在分组缓存器中的一个或多个轮盘分组发送到信道队列。
该广播传输介质可以是数字广播网络,例如手持式数字视频广播(DVB)(DVB-H)网络或DVB陆地(DVB-T)网络。作为替换,该广播网络也可以是电缆网络。
有利的是,本发明提供了对带宽的有效使用。举例来说,空闲带宽可以用于其他类型的不需要保证带宽的数据服务。从下文的描述和附图中可以清楚了解本发明的其他特征和优点。


在附图中,相同的参考数字通常指示相同、功能相似和/或结构相似的部件。某一个部件首次出现时所在的附图是用参考数字中最左边的一个或多个数字表示的。本发明将参考附图来加以描述,其中图1是根据本发明实施例的操作环境的图示;图2是显示示例性的传输定时的图示;图3是显示示例性的轮盘方案的图示;
图4是根据本发明一个方面的轮盘操作的流程图;图5是根据本发明一个实施例的架构的图示;图6是显示根据本发明一个实施例的存取数据结构的示例性实施方式的图示;以及图7是示例性的计算机系统的图示。
具体实施例方式
I.操作环境图1是可以使用本发明的广播环境的图示。该环境包括多个基于分组的网络102以及多个广播网络104。
基于分组的网络102借助不同的协议通过对诸如网际协议(IP)分组之类的分组进行交换,来执行通信。因此,网络102可以具有各种不同的类型。举例来说,图1所示的环境包括作为局域网(例如以太网)的基于分组的网络102a,以及作为因特网的基于分组的网络102b。
广播网络104经由广播传输介质来提供点到多点的通信。每个广播网络都可以使用多种有线或无线技术。例如,图1显示了一个作为DVB-T网络的广播网络104a,以及作为DVB-H网络的广播网络104b。此外,图1还显示了作为电缆网络的广播网络104c,例如,它可以是电缆数据业务接口规范(Data Over Cable Service InterfaceSpecification,DOCSIS)网络。网络104a和104b传送的是可以由在覆盖范围以内的设备接收的无线信号。
图1的环境包括多个多媒体流式传输(streaming)服务器(M-SRV)106,这些服务器与一个或多个基于分组的网络102相耦合。服务器106产生多媒体流,并且这些流包含了诸如音频、视频和/或文本之类的内容。举例来说,某一个特定服务器106可以经由多个音频信道来提供多个音频流。此外,这个服务器还可以提供与相应的音频流相同步的文本流。
除了M-SRV 106之外,图1的环境还包括多个文件流式传输服务器(F-SRV)108。这些服务器产生的是以文件轮盘形式的文件流。文件轮盘通常包含了若干个文件,其中举例来说,这些文件是使用IP多播来传送的。这些文件每次都是以受控制的比特率传送的,直至所有文件都已被传送为止。这时,该文件轮盘将会重复传输这些文件。这种模式既可以持续进行,也可以在固定的时间间隔上进行。
每一个服务器106和108都可以经由基于分组的网络102将它们的流分发到一个或多个目的地。这种分发可能涉及IP多播协议。对特定服务器产生的所有流来说,其组合的比特率通常会随时间而改变。在某些实施例中,这些改变是围绕着一个稳定的平均值的。
图1显示了多个IP封装器(IPE)110,其中每一个IP封装器都耦合到一个或多个基于分组的网络102。IPE 110接收由服务器106和108所产生的分组流,并且作为网关在基于分组的网络102与广播网络104之间进行操作。特别地,IPE 110将接收到的分组流转换成广播网络传输流(例如,DVB-H传输流以及DVB-T传输流)。
就每个广播网络104而言,图1显示了复用器(MUX)112、调制器(MOD)114以及发射机(TX)116。特别地,图1显示了与广播网络104a相对应的MUX 112a、MOD 114a和TX 116a,与广播网络104b相对应的MUX 112b、MOD 114b和TX 116b,以及与广播网络104c相对应的MUX 112c、MOD 114c和TX 116c。如图1所示,每个MUX 112都可以耦合到一个或多个IPE 110。此外,每一个MOD114都耦合在其对应的MUX 112与TX 116之间。
每个复用器112都会将来自一个或多个不同信源(例如不同IPE110)的传输流组合成单个传输流。该单个流将被发送到与之耦合的调制器114,该调制器114将该传输流从数字表示转换成射频(RF)信号。与之耦合的发射机(TX)116放大该RF信号,并且将该信号传送(或广播)到处于相应广播网络104中的设备。对广播网络104a和104b来说,天线117a和117b允许以无线方式来传播这种传输。但是,对广播网络104c来说,这种传输是经由电缆介质119传播的。
图1示出了广播网络104包括一个或多个接收机(RX)120,这些接收机在这里也被称为终端设备。这些设备接收并处理由TX 116传送的RF信号。这样做允许这些设备向其终端用户呈现由RF信号所传送的服务(例如流)。如图1所示,设备120可以包括便携式手持设备(例如无线电话和PDA),以及电视机、机顶盒和个人计算机。
此外,广播网络104还可以包括其他设备,例如中继器和监视器(未显示)。中继器(REP)接收来自TX 116的RF信号,将其放大,并且再次在相同频率或不同频率上传送该信号。监视器(MON)是一个特殊的接收机,其目的仅仅是监视从发射机116接收的RF信号,并且向相应广播网络104的运营者提供警报。
II.时间分片(timeslicing)图2是描述根据本发明实施例的广播网络传输的图示。举例来说,这些传输可以由DVB发射机产生并由一个或多个终端设备接收。
如图2所示,多个时隙202是接连存在的。诸如流式传输视频节目(例如冰球比赛)之类的服务是在这些时隙期间传送的。特别地,图2显示了流在时隙202a开始并在时隙202f结束的服务。
服务流是根据时间分片技术传送的。也就是说,该服务流被分段为在时隙202的特定部分中发生的突发传输(或分组)204。这些特定部分被称为时间片。特别地,图2显示了分别在时隙202a~202f的时间片内部发生的突发204a~204f。
在实施例中,每个突发204都具有固定的持续时间。此外,连续的突发204在时间上是按固定间隔分离的。但是,在其它实施例中,突发的持续时间和/或突发之间的间隔是可以变化的。关于这种变化的信息可以在这些突发内部用信号通知,从而使得终端设备可以接收这些突发。
各种突发定时都是可能存在的。例如,图2包含了突发204a’和204a”,这些突发是用于突发204a的替换定时。如替换突发204a’和204a”所示,突发可以在一个特定时隙中开始而在后续的一个时隙中结束。这种情况有可能是因为诸如缓存和封装之类的处理所造成的延迟而产生的。在实施例中,突发204可以在不早于其相应时隙的结尾的时间结束。
如上所述,突发204由一个或多个终端设备接收。一旦被接收,每一个设备就会缓存并且处理(例如,解码、纠错等)在这些突发中传送的数据。由此,诸如视频和/或音频之类的内容将被再现,以供设备用户消费。
设备可以是便携式的。因此,在服务(例如电视节目)的传递过程中,设备有可能会移动到某个无法接收突发的位置。当这种情况发生时,该设备可能会接收到一个用于表明其处于此类区域的通知。另外,其他原因也有可能导致中断。图2显示了在时隙202d期间出现的示例性中断206。由于这种中断的影响,设备将无法接收突发204d、204e和204f。
在实施例中,突发204可以包括用于指示其传输时间的时间戳。通过分析所接收突发的时间戳,终端设备可以确定它接收了哪些突发以及它遗失了哪些突发,并对其进行存储。根据这种确定,终端设备可以通过例如重传和/或数据轮盘服务来接收遗失的突发。
III.重传在发端服务器(例如F-SRV或M-SRV)上,时间戳可以与相应的突发或分组保存在一起。有利的是,这个特征允许对遗失的分组进行重传(或“回放”)。数据的回放可以响应于从终端设备接收的请求而进行。这种请求可以由用户发起,或者也可以是自动的。
例如,当一个设备进入某个可以接收服务传输的区域时,该设备可以向服务器传送一个请求,以便要求重传(或回放)其未接收到的突发。这个请求可以规定各种重传条件。例如,该请求可以规定期望接收遗失的分组的时间(例如,由设备的用户来设置)。这种时间规定的实例包括即时重传或者在以后的某个预定时间上重传。
IV.数据轮盘不同设备的用户都有可能希望接收服务流的特定传输。但是,这些用户各自有可能具有不同的需要。例如,每个用户有可能希望得到服务流中的不同的遗失部分。为了适应这种差别,服务流可以被传递作为连续地(例如重复地)传送服务的“数据轮盘”。这种连续传输提供了设备可以可靠地访问所传送服务的遗失部分的优点。
数据轮盘可以是网络运营者提供的多种服务之一。由此,数据轮盘的存在和内容可以在电子服务指南(ESG)中进行通告。相应地,网络运营商可以选择哪些服务由数据轮盘提供。对轮盘中的数据所进行的访问可以取决于用户对数据轮盘服务的预订。特别地,只有服务的签约用户才可以访问轮盘中的数据。
数据轮盘可以采用多种方式来接收服务流。例如,数据轮盘可以用那些与服务流中正在传送的突发具有相同速率的突发来填充。由此,数据轮盘的内容将会持续增加。作为替换,数据轮盘也可以在服务流(例如,冰球比赛的初始广播)结束时形成。这时,数据轮盘有可能被完全填充,以便包含整个服务流。一旦出现了这种情况,数据轮盘就将被通告和传送。根据落入上述两种技术之间的另一种技术,突发是在发生延迟之后置入数据轮盘中的。
与初始服务流的传输相似的是,来自数据轮盘的传输可以处于突发之中。这些突发可以与初始传送的突发具有相同的持续时间以及时间间隔分离。作为替换,这些突发也可以具有不同于初始突发的持续时间和/或时间间隔分离。
设备可以接收关于数据轮盘服务的可用性的通知。这种通知可以处于数据轮盘可用之前,或者甚至可以处于初始服务流可用之前。与这些通知伴随的可以是关于数据轮盘服务的可访问性的信息(例如,轮盘起始时间,轮盘服务地址,轮盘服务带宽,轮盘服务可用性的持续时间等)。这种信息可以由网络运营者在ESG中提供。
如上所述,设备可以通过分析时间戳来确定所接收的服务流中的一个或多个遗失部分。相应地,根据数据轮盘服务的可访问性,设备可以确定一个或多个恰当的“开启”时间,以便开始接收其遗失的服务流部分。在这种情况下,没有必要向服务器(或网络运营者)传送请求。
数据轮盘存储服务流(例如视频节目)的处理可以采用多种方式来实现。例如,服务流可以被分成多个表示分组或突发的数据文件。在实施例中,这些文件将会相互链接。此外,每个数据文件都可以具有识别信息,例如时间戳,由此可以将时间信息与特定分组相关联(或者映射)。在这种情况下,设备可以使用数据轮盘来接收(和消费)先前接收的服务传输部分。
由此,终端设备可以使用数据轮盘来接收在接收中断期间发生的服务传输的某些部分。例如,终端设备可以“计数”在没有中断的情况下接收(和消费)传输流的持续时间。但是,当出现中断时,终端设备将会存储当前计数值。这个计数值可以由终端设备使用(例如在后续的时间上使用),以便从轮盘服务中识别和取得剩余部分的服务流。
作为一个实例,冰球比赛的视频流作为多个文件保存在数据轮盘中。这其中的每个文件都对应于视频流的总持续时间中的一个预定时间间隔(例如5分钟)。当终端设备请求从43分钟开始下载剩余的比赛部分的时候,终端设备可以从覆盖这个被请求时间的最早的文件(例如在40分钟时开始的文件)开始接收传输。
重传和/或数据轮盘服务可以经由与初始传输相同的通信介质来发送。但是,重传和/或数据轮盘服务也可以使用其他的载体或介质来传送。例如,通过使用移动电话网络,可以使用数据传送能力。关于这种能力的实例包括通用分组无线电服务(GPRS)、增强型数据GSM演进(EDGE)、通用移动电信系统(UMTS)等。相应地,这种传输的特性可以是单播而不是多播。不同通信介质的使用可以响应于终端设备请求而进行。
V.分组轮盘如上文中参考图1所述,IPE 110是作为网关在分组网络与广播网络之间工作的。在本发明的实施例中,一个或多个IPE 110可以提供一种在这里被称为“分组轮盘”的特征。该分组轮盘可以采用透明方式与例如SRV 106和F-SRV 108之类的在应用层实现的任何一种文件轮盘或消息传递系统一起工作。
图3是示例性的文件轮盘方案的图示。这个方案包括文件轮盘源302和分组轮盘提供方304。举例来说,文件轮盘源302可以是M-SRV106或F-SRV 108,而分组轮盘提供方304可以在IPE 110中实现。
在这个方案中,文件轮盘源302以恒定的(例如,低的)比特率输出文件流306。流306可以包括多个文件,这些文件形成了一个动态的文件轮盘。这个轮盘可以持续预定的时间量,例如一整天。在这一天里,文件可以被添加到轮盘中或者将其从轮盘中删除,但是不能被改变。
分组轮盘提供方304实现“轮盘会话”。轮盘会话具有规定的使用寿命,在这个使用寿命期间,分组轮盘提供方304收集所接收的地址(例如IP地址)属于规定的地址集的IP分组,并且会在具有可用于轮盘传输的带宽时广播这些分组。所收集的这些分组和相关信息可以保存在一个或多个队列中。这些队列在这里被称为“轮盘分组缓存器”。
图4是根据本发明实施例的示例性操作的流程图。这个操作可以由一个设备、例如IPE 110执行。如图4所示,这个操作包括步骤401,其中设备建立与诸如M-SRV 106或F-SRV 108之类的远程服务器的轮盘会话。在步骤402,该设备从这个服务器接收轮盘分组。
在步骤404,该设备确定先前是否已经接收并在分组轮盘缓存器中保存了分组。如果是的话,则执行步骤408,其中更新先前接收和存储的分组的接收时间戳。否则,该操作将会前进到步骤410。在步骤410中,所接收的分组将被添加到轮盘中。这个步骤可以包括将分组保存在存储器中。
在步骤408和410之后是步骤412。在步骤412中,设备更新它的一个或多个分组轮盘数据结构。这些数据结构可以包括各种不同的指针,其中每一个指针都引用已经保存在存储器(例如轮盘分组缓存器)中的一个特定分组。相应地,步骤412可以包括改变一个或多个指针所引用的一个或多个分组。
在步骤414中,该设备确定是否满足一个或多个清理条件,例如,是否到达所安排的清理时间。如果是的话,则操作前进到步骤416。在这个步骤中,该设备从它的分组轮盘缓存器中移除一个或多个到期的分组。此外,与所移除的分组相关的信息也可以从轮盘数据结构中删除。
图4的操作还包括对分组进行传输。相应地,在步骤418,该设备确定是否存在可用的传输带宽。如果是的话,则在步骤420中根据可用带宽数量来传送分组轮盘缓存器中的一个或多个分组。所述一个或多个分组是根据排队顺序被选择用于进行传输的。
图4的流程图是作为说明性实例而不是限制提供的。相应地,图4的步骤既可以按照其他顺序执行,也可以并行执行。并且这里图示的一个或多个步骤是可以绕过的。此外,在这里也可以包含另外的步骤。
VI.示例性架构A.概述图5显示了可以用于执行本发明的诸如图4所示的操作序列之类的技术的架构。参考图1的环境,这种架构可以在IPE 110中实现。图5的架构包括轮盘模块501、过滤器模块504以及信道队列模块509。这些部件可以采用硬件、软件、固件或是其任意组合的形式实现。在涉及软件的实施方式中,可以使用面向对象的开发技术。
如上所述,诸如IPE 110之类的设备从诸如M-SRV 106和F-SRV108之类的不同信源接收分组。图5示出了其中的每个分组都与一个特定流522相关联。过滤器模块504接收这些分组,并且基于与之关联的流522而将其识别为轮盘分组或非轮盘分组。这种识别可以基于一个或多个规则(在这里也被称为“过滤规则”)。举例来说,过滤规则可以包括分组报头中的地址字段值,这是因为这些值指示了特定的流。
一旦进行了识别,过滤器模块504就会将轮盘分组转发到轮盘模块501,并且将非轮盘分组转发到信道队列模块509。举例来说,图5显示了过滤器模块504将关联于流522a的分组转发到轮盘模块501并且将关联于流522b~d的分组转发到信道队列模块509。
轮盘模块501存储并处理轮盘分组,以便将其经由传输介质传递到一个或多个设备。这种传递(受信道队列模块509的控制)是以传输介质的空闲带宽可用性为基础的。在下文中将会提供关于轮盘模块501的结构和性能的更多细节。
信道队列模块509对分组进行排队,以便经由诸如DVB或电缆网络之类的传输介质来传送这些分组。如上所述,信道队列模块509接收来自过滤器模块504的非轮盘分组。此外,信道队列模块509还接收来自轮盘模块501的轮盘分组。这些轮盘分组是响应于信道队列模块509发布的命令526而接收的。在实施例中,信道队列模块509会在一个或多个相应传输介质至少具有预定量的空闲带宽的时候发布这个命令。
这个确定可以基于队列长度统计信息,例如,信道队列模块509当前排队的分组数量。在实施例中,信道队列模块509尝试保持其缓存器处于半满状态。由此,当缓存器低于半满状态时,信道队列模块509可以发布命令526。
如图5所示,信道队列模块509产生一个传输分组序列524,以便在广播网络中进行传输。相应地,图5示出了序列524可以被发送到某一个设备,例如MUX 112。但是,在实施例中,流524可以被转发到其他设备。
B.轮盘模块如图5所示,轮盘模块501包含了分组轮盘存储模块502以及各种工作模块。这些工作模块包括接收机模块505、发送机模块506以及清理模块508。
接收机模块505从过滤器模块504获取轮盘分组,并且将这些分组(以及相关信息)保存在分组轮盘存储模块502中。举例来说,轮盘分组保存在分组缓存器510中,而相关信息保存在各种不同的存储部件中,并且在这里将这些部件称为存取数据结构。
发送机模块506由来自信道队列模块509的命令526触发。如上所述,这个命令是在至少存在预定数量的传输带宽的时候发布的。命令526指定可以从分组轮盘存储模块502中取出一个或多个分组。由此,一旦接收到命令526,发送机模块506就会向轮盘存储模块502发布一个取回指令538。响应于这个指令538,从轮盘分组缓存器510(处于轮盘存储模块502内部)向信道队列模块509发送所存储的一个或多个分组528,以便进行排队。但是,所存储的这些分组没有必要从缓存器510中删除。此外,响应于命令538,保存在轮盘存储模块502中并与一个或多个取回的分组相关联的信息将被更新。在实施例中,这种更新处理是由发送机模块506执行的。
清理模块508从轮盘分组缓存器510中删除分组。一旦删除了这些分组,清理模块508还会删除存取数据结构(例如,比较表512、接收队列514以及发送队列516)中的相应信息。这些删除处理可以在发生某些事件和/或时间段终止的时候执行。由此,清理模块508可以有利地促进分组轮盘存储模块502的有效存储器使用。
C.分组轮盘存储模块如图5所示,分组轮盘存储模块502包括用于存储轮盘数据的轮盘分组缓存器510。轮盘分组缓存器510保存从诸如M-SRV 106和F-SRV 108之类的设备接收的轮盘分组。在实施例中,每一个轮盘分组都被保存在轮盘分组缓存器510内部的连续存储器区域中。图5显示了单个轮盘分组缓存器510。但是,该架构也可以包括多个分组缓存器。在这种架构中,每一个分组都是完全地保存在单个分组缓存器内部的。
此外,分组轮盘存储模块502还包括各种不同部件(在这里被称为存取数据结构),这些部件存储与轮盘分组缓存器510中所存储的分组相关的信息。在实施例中,这些数据结构包括比较表512、接收队列514以及发送队列516。这其中的每个数据结构都包含了与缓存器510中存储的各个轮盘分组相关的信息。此外,这些数据结构还可以包括指向缓存器510中的分组的指针。在实施例中,这些数据结构是作为相链接的列表来组织的。这样做提供了有效的存储器使用。但是,其他存储技术(例如阵列、容器类对象等)同样是可以使用的。
比较表512可以由接收机模块505访问或“查找”,以便确定先前是否接收过每一个到来的轮盘分组。该比较表512包括多个表条目。其中每个条目都存储了一个与轮盘分组缓存器510中的分组相对应的值,例如散列值。此外,这其中的每个条目都可以包括一个指向接收队列514中的条目的指针,以及一个指向发送队列516中的条目的指针。另外,比较表512中的每个条目还都可以包括一个指向冲突列表的指针。
散列值是使用公式从诸如轮盘分组之类的数据记录中计算得到的数值。这些数值提供了一组索引(也被称为散列表)。由此,为了搜索包含某个特定数据(例如某个特定IP分组)的记录,可以将公式应用于接收的轮盘分组,以便获取相应的散列值。与搜索全部记录直至发现匹配记录相比,这种技术更为有效。由此,可以访问比较表512来确定先前是否接收过特定到来分组(例如,是否存在匹配的散列值)。如果没有的话,则将该轮盘分组视为是新的分组。
接收队列514包含了多个条目,其中每个条目都对应于轮盘分组缓存器510中的一个分组。这其中的每个条目都包含了相应分组的一个索引值(例如散列值)。这个值被用于在比较表512中查找记录。此外,这其中的每个条目都包含了相应分组的接收时间戳。这个时间戳可以用于确定分组是否已经到期。另外,每一个条目都包含了一个指向分组缓存器510中的分组的指针。
接收队列514中的条目是根据其接收时间戳的值而按照时间先后顺序排列的。有利的是,这种排列有助于有效移除到期的IP分组。接收队列514可以采用多种方式实现。在其中一种实施方式中,接收队列514是一个双链接列表。除了具有多个条目之外,接收队列514还可以包括指向特定条目的指针。例如,接收队列514可以具有最新分组指针530和最老分组指针532。最新分组指针530指向接收队列514的开头。相比之下,最老分组指针532指向接收队列514的末端。
在实施例中,每当接收到分组时(无论它是否已经被保存在轮盘分组缓存器510中),其接收时间戳都会被刷新。也就是说,接收时间戳将被设置成当前时间。这种刷新操作是由接收机模块504执行的。
在各种不同时间上,将在至少预定数量的时间(也被称为到期时段)内未被接收或刷新的较早分组从接收队列514的末端移除。如上所述,该移除可以是由清理模块508执行的。所述移除可以在发生某个或某些事件的时候进行,例如,在插入新分组时进行。此外,该移除操作可以在一个或多个安排的时间上进行。例如,在实施例中,这个移除操作至少每半个到期时段就会执行一次。当移除分组时,其相应信息将会从其他存取数据结构(即,比较表512、接收队列514和发送队列516)中移除。
发送队列516包括多个条目,其中每一个条目都与轮盘分组缓存器510中的一个分组相对应。这其中的每个条目都包含了一个指向相应分组的指针。发送队列516可以采用多种方式实现。在这样的一个实施方式中,发送队列516是双链接列表。
发送队列516被设置成确保轮盘分组缓存器510中的有效分组是按照指定顺序发送的。例如,新的分组(例如从未被发送的分组)将被给予优先级。更特别地,如果在轮盘分组缓存器510中有新的分组,那么这种新分组中的最老分组将被首先发送,其后跟随的则是次最老分组,等等。但是,当分组缓存器510不包含新分组时,向具有最老先前发送时间的分组提供最高优先级。
为了实施这种传输排序,在发送队列516中可以指定各种不同的位置。例如,发送队列516可以包括上一接收指针534和上一发送指针536。上一接收指针534指示将新的分组添加到发送队列516中的哪个位置。上一发送指针536指示发送队列516中与最近传送的分组相对应的记录(或条目)。落入指针534与536之间的发送队列516的条目对应于从未发送过的轮盘分组,由此这些条目具有优先级。如果在发送操作之后没有这种分组,那么上一接收指针534和上一发送指针536将会一起前进(例如递增)。任何新分组都是在上一接收指针534之后添加的,然后该指针将会前进到指向新分组。
如上所述,分组缓存器510包括一个或多个分组。这些分组保存在相关联的存储器空间中。每一个分组都是根据其相应的散列值而处于这个存储器空间中的。由此,根据其散列值,可以定位和操作分组缓存器510中的轮盘分组(例如插入、存取、删除等)。在实施例中,为分组缓存器510分配了足够的存储器,由此可以避免分页。这样做有利地提高了执行速度和存取时间。
D.接收和发送如上所述,接收机模块505对它从过滤器模块504接收的轮盘分组进行操作。例如,接收机模块505使用强散列算法来对轮盘分组进行散列计算。然后,在比较表512中查找所得到的散列值。这个查找操作使用双散列处理。更特别地,接收机模块505查找散列值中最后的预定数量、即n个比特。然后,如果需要,接收机模块505查找散列值中的n个次最后比特,最后,查找冲突列表。
如果该查找操作在比较表512中没有发现所述散列值,那么该轮盘分组是新的。相应地,接收机模块505将该轮盘分组置入轮盘分组缓存器510中。此外,接收机操作505还将相应条目插入到比较表512中(可以重新使用先前删除的散列表条目),并且将其插入到接收队列514(在顶部)以及发送队列516中(在最近接收的描述符指针之后,然后该指针前进到指向最新插入的描述符)。
如果查找操作在比较表512中发现所述散列值,那么接收机模块505将会确定该分组轮盘分组是旧的。由此,接收机模块505会将该分组的描述符置于接收队列514的开头,并且已被保存在分组缓存器510中的相应分组的接收时间戳将被刷新。
如上所述,信道队列模块509接收来自不同流的分组。例如,图5显示了信道队列模块509从流522b、522c以及522d接收分组。此外,信道队列模块509还从轮盘分组缓存器510接收所取回的轮盘分组528(它在图5中被显示成与流522a相关联)。信道队列模块509包含一个缓存器(未显示),该缓存器对所接收的这些分组进行排队,并且会在广播传输介质中例如在某个时间片上以某个可用传输速率来释放分组。
当信道队列模块509发布命令526时,发送队列516中的上一发送指针536将会前进。如果上一接收指针534与上一发送指针536相同,那么这两个指针会一起前进。这时,一旦得到来自发送机模块506的指令,就可以将描述符现在指向的分组发送到信道队列模块509。
E.存储器分配轮盘存储模块502的部件需要保存的信息量是预先已知的。由此,在实施例中,分组轮盘存储模块502的一个或多个部分(例如,分组缓存器510,比较表512,接收队列514和/或发送队列516)在大小上可以非常灵活。这种灵活性可以基于如下参数,例如,估计分组大小参数518和估计分组数量参数520。根据这些参数,可以预测出对存储模块502中的一个或多个部分的存储器分配需求。这些参数越精确,存储器分配就越有效。
但是,在其他实施例中,存储器可以基于逐个分组而被灵活分配。例如,操作系统的存储器分配器可被用于为每一个轮盘分组单独分配累积(heap)空间。在其他实施例中,存储器是在较大的存储器部分或组块中分配的,以便优化分组分配。对这种分配技术而言,可以用某一个码(例如第一个字节0x00)来标识被删除的分组。此外,后续字节也可用于存储那些有助于存储器分配处理重新使用存储器的信息。
在这种实施例中,存储模块502可以包括它自己的轻型存储器管理功能(例如软件),其提供了诸如不返回到期分组的存储器之类的特征。尽管如此,轮盘分组缓存器510是在分组轮盘存储模块502终止的时候释放的(也就是说,其存储器被返回给操作系统)。
F.存取数据结构的示例性实施方式图6是显示比较表512、接收队列514和发送队列516的示例性实施方式的图示。如图6所示,比较表512包括多个散列表条目602。每一个条目602都包含了散列值604、接收队列指针606、发送队列指针608以及下一散列指针610。
每一个散列值604都是一个从相应轮盘分组中计算得到的散列值。每一个接收队列指针606和发送队列指针608引用相应轮盘分组在接收队列514和发送队列516中的相应位置。在图6的实例中,比较表512是作为链接列表实现的。相应地,每一个下一散列指针610都指向下一条目602。
一个或多个冲突列表条目601可以与每一个条目602相关联。冲突列表条目601被用于解析那些产生相同散列值的不同分组的标识。如图6所示,冲突列表条目601(类似于散列表条目602)包含散列值604、接收队列指针606、发送队列指针608以及下一散列指针610。下一散列指针610指向下一冲突条目601(如果存在的话)。相应散列表条目62中的指针(未显示)可以指向相应的冲突列表。
图6的实例显示了一个空的散列表条目6022。这种条目可以具有预定的值和指针(例如NULL)。在实施例中,前一表条目6021具有下一散列指针610,该指针并未引用空的散列表条目6022。取而代之的是,这个散列表条目引用散列表条目6023。
图6显示了具有最新指针530、最老指针5232以及多个条目611的接收队列514。每一个条目611都包含了前一条目指针612、接收时间戳614、散列值616以及下一条目指针618。如上所述,每一个接收时间戳614都存储了轮盘分组缓存器510中的相应分组的最近时间戳。每一个散列值616都是从相应轮盘分组值中计算得到的,并且使得能够在分组缓存器510中定位分组。在图6中,接收队列514是作为双链接列表实现的。由此,每一个前一条目指针612都引用了前一个条目611(如果存在的话),并且每一个下一条目指针618都引用了下一个条目611(如果存在的话)。
如图6所示,发送队列516包括上一接收指针534、上一发送指针536以及一个或多个条目619。每一个条目619都包含了前一条目指针620、散列值622以及下一条目指针624。每一个散列值622都是从相应轮盘分组值中计算得到的,并且使得能够在分组缓存器510中定位分组。在图6中,发送队列516是作为被配置为环形缓存器的双链接列表实现的。因此,每一个前一条目指针620都引用了前一个条目619,并且每一个下一条目指针624都引用了下一个条目619。但是,对第一个条目(也就是条目6191)来说,前一条目指针620指向最后一个条目(也就是条目619n)。按照类似的方式,对最后一个条目619n来说,其下一指针624(也就是下一指针624n)指向第一个条目6191。
VII.散列表如上所述,散列值可以从接收的分组中计算得到。在实施例中,这其中的每个值都是在包括其一个或多个报头的完整分组上计算得到的强壮散列值(例如MD5、SHA-1)。由此,对IP分组来说,这些散列值可以具有介于192与256个比特之间的长度。
在实施例中,用于计算IP散列值的算法非常强壮,由此使得对于实际目的而言具有相同散列值的不同IP分组的概率是可以忽略的。在使用键控散列算法的实施例中,所使用的键码对给定分组轮盘的所有散列操作来说都必须是相同的。
使用在IP分组上计算的散列值作为散列表索引,需要实现一个非常大的表格。但是,有利的是,强壮的散列算法允许将散列值中的最后n个比特用作索引。由此,本发明的实施例提供了一个大小为2n的散列表。n的典型值是在介于10与20之间的范围内。这些n值将会产生范围介于1000与1000000之间的散列表大小,以及高达1.5GB的IP分组缓存器大小。
散列表的大小应该被选择为log2(“估计分组数量”)+1。但是,其它的n值也是可以使用的。在没有给出“估计分组数量”或是“估计分组数量”过小(当散列表中的实际分组数量接近于散列表的大小时)的情况下,本发明的实施例会将比较表重新散列处理成较大的散列表(例如其大小的二倍)。执行重新散列的判定可以基于会话持续时间以及新分组到达的速率(例如,对接近其使用寿命结束的分组轮盘不进行重新散列,或者在可以估计出分组数量将会超过当前散列表的大小的两倍的时候不执行重新刷新)。
当在比较表512中查找轮盘分组的散列值时(通过使用最后n个比特作为散列索引来进行),可能遭遇到具有相同的最后n个比特但整个值却不同的散列值。当出现这种冲突时,本发明的实施例选取散列值中的n个次最后比特作为辅助散列索引。如果散列值中的n个次最后比特不同于比较表512中的值,那么将会检查冲突列表。如上文中参考图6所述,这样的冲突列表可以包括一个或多个冲突列表条目601。
如果第一次散列操作导致产生一个空的单元(例如,在两个指针字段中都具有NULL指针),或者如果第一次散列操作导致产生冲突,并且第二次散列操作导致产生空的单元,或者是如果第二次散列操作导致产生冲突并且不存在冲突列表,又或是如果存在一个在其中无法找到IP散列值的冲突列表,那么该分组不在所述比较表512中。
VIII.轮盘服务器如上所述,轮盘分组可以由诸如M-SRV 106和F-SRV 108之类的设备从文件中产生。在实施例中,这些设备始终为每一个文件产生一个或多个相同分组。这样做确保了文件的重复传输产生相同的分组集合,并且轮盘分组缓存器不会无意地包含同一分组的多个拷贝。
在本发明的实施例中,服务器通过不在分组中放置时间戳来产生相同的重复分组集合。举例来说,由M-SRV 106或F-SRV产生的IP轮盘分组可以包含一个时间戳字段,该字段具有预定的不变(“或静态”)的值。在使用了图5的架构的实施例中,接收机模块505可以使用其接收到轮盘分组时的实际时间戳值来替换这些静态值。
IX.会话如上文中参考步骤401所述,内容提供者可以与设备建立会话。这种设备(例如IPE 110)对应于广播网络。典型的会话(也称为“转发会话”)是其中每一个接收的分组只广播一次的会话,由此该会话必须适合于广播网络中的已分配带宽(例如时间片)。参考图5的架构,来自于M-SRV 106或F-SRV 108的转发会话的分组(或是转发分组流)会直接从过滤器模块504传递到信道队列模块509。
在本发明的实施例中,可以与诸如M-SRV 106和/或F-SRV 108之类的设备建立轮盘会话。在这种会话中,处于轮盘分组流中的轮盘分组被接收和处理,以便进行重复传输。在实施例中,这种处理是根据这里描述的技术执行的。
为了建立会话,服务器与分组轮盘提供设备(例如IPE 110)可以参与各种通信。这种通信可以包括设定一个或多个用于定义会话的参数。下文中的表1提供了一个示例性的会话参数集合。
表1

如表1所示,会话参数可以包括与轮盘会话特性相关的各种信息,会话开始日期和时间信息,以及会话持续时间信息。此外,在会话信息中还包含了各种分组相关信息,例如估计分组大小和估计分组数量(它可用于参数518和520)。另外,在会话信息中还可以包含各种编码、安全性和加密信息。
表1将源地址显示成是会话信息的一部分。如上文中参考图5所述,这种地址也可以是用于识别轮盘分组的规则。
X.示例性的计算机系统图5的架构可以利用一个或多个计算机系统来实现。在图7中显示了计算机系统701的一个示例。计算机系统701表示任何一种单处理器或多处理器计算机。此外,也可以使用单线程和多线程计算机。并且可以使用统一或分布式存储器系统。
计算机系统701包括一个或多个处理器,例如处理器704。一个或多个处理器704可以执行用于实现上文中参考图4所述的处理的软件。每一个处理器704都与一个通信基础设施702(例如,通信总线、横杆(cross-bar)或网络)相连。各种不同的软件实施例是利用这个示例性的计算机系统来描述的。在阅读了本描述之后,相关领域的技术人员很容易就可以想到如何使用其他计算机系统和/或计算机架构来实施本发明。
计算机系统701还包括一个主存储器707,并且该存储器优选是一个随机存取存储器(RAM)。计算机系统701还可以包括辅助存储器708。举例来说,该辅助存储器708可以包括硬盘驱动器710和/或可移除存储驱动器712,所述可移除存储驱动器表示软盘驱动器、磁带驱动器和光盘驱动器等。可移除存储驱动器712以公知的方式从可移除存储单元714中读取和/或向其写入。可移除存储单元71表示软盘、磁带、光盘等,该单元是由可移除存储驱动器712读取和写入的。可以想到的是,可移除存储单元714包含了一个计算机可用存储介质,其上存储了计算机软件和/或数据。
在替换实施例中,辅助存储器70可以包括其他类似装置,以便允许将计算机程序或其他指令加载到计算机系统701中。举例来说,此类装置可以包括可移除存储单元722和接口720。示例可以包括程序盒式磁盘以及盒式磁盘接口(例如,可在视频游戏设备中发现的接口),可移除存储器芯片(例如PROM、EPROM、EEPROM、闪存等)和相关联的插口,以及其他那些允许将软件和数据从可移除存储单元722传送到计算机系统701的其他可移除存储单元722和接口720。
计算机系统701还可以包括一个或多个通信接口724。通信接口724允许经由通信路径727在计算机系统701与外部设备之间传送软件和数据。关于通信接口724的示例包括调制解调器、网络接口(例如以太网卡)、通信端口等。经由通信接口724传送的软件和数据采用信号728的形式,其中该信号可以是电、电磁、光学或其他那些能够由通信接口724经由通信路径727接收的信号。应该注意的是,通信接口724提供了这样一种装置,借助该装置,计算机系统701可以对接到诸如因特网之类的网络。
本发明可以使用在与上文参考图7所述的环境相类似的环境中运行的软件来实现。在本文中,术语“计算机程序产品”被用于泛指可移除存储单元714和722、安装在硬盘驱动器710中的硬盘、或是经由通信路径727(无线链路或电缆)向通信接口724传送软件的信号。计算机可用介质可以包括磁介质、光学介质或其他可记录介质,或者可以包括用于传送载波或其他信号的介质。这些计算机程序产品是用于向计算机系统701提供软件的装置。
计算机程序(也称为计算机控制逻辑)保存在主存储器707和/或辅助存储器708中。计算机程序也可以经由通信接口724接收。当执行这种计算机程序时,这些计算机程序允许计算机系统701执行这里所描述的本发明的特征。特别地,在执行这些计算机程序时,该计算机程序允许处理器704执行本发明的特征。相应地,这类计算机程序代表了计算机系统701的控制器。
本发明可以作为控制逻辑利用软件、固件、硬件或是其任意组合来实现。在其中本发明是使用软件实现的一个实施例中,该软件可以保存在计算机程序产品中,并且可以使用可移除存储驱动器712、硬盘驱动器710或接口720加载到计算机系统701中。作为替换,该计算机程序产品可以经由通信路径727下载到计算机系统701中。在由一个或多个处理器704执行控制逻辑(软件)时,所述控制逻辑将会促使该一个或多个处理器704执行这里所描述的本发明的功能。
在另一个实施例中,本发明主要是例如通过使用诸如专用集成电路(ASIC)之类的硬件部件而采用固件和/或硬件实现的。对相关领域的技术人员来说,很明显,使用硬件状态机同样可以实现这里所描述的功能。
XI.结论虽然在上文中描述了本发明的各种不同实施例,但是应该理解,这些实施例是作为示例给出的,而不是加以限制。例如,虽然已经描述了示例包含DVB-T、DVB-H和电缆技术,但是其他技术同样处于本发明的范围以内。
因此,对本领域技术人员来说,很明显,在没有背离本发明的实质和范围的情况下,可以进行各种形式和细节方面的变化。因此,本发明的广度和范围不应受限于上述示例性实施例,而是仅仅根据后续权利要求及其等效内容来定义的。
权利要求
1.一种分组封装器,包括过滤器模块,被配置成从多个所接收分组中识别出一个或多个轮盘分组;分组缓存器,被配置成存储所述一个或多个轮盘分组;信道队列,用于对分组进行排队,以便经由广播传输介质进行传输,其中,当在广播传输介质中至少存在预定数量的可用带宽时,该信道队列接收来自分组缓存器的一个或多个轮盘分组。
2.根据权利要求1的分组封装器,其中广播传输介质是数字广播网络。
3.根据权利要求2的分组封装器,其中数字广播网络是手持式DVB(DVB-H)网络。
4.根据权利要求2的分组封装器,其中数字广播网络是DVB陆地(DVB-T)网络。
5.根据权利要求1的分组封装器,其中广播传输介质是电缆网络。
6.根据权利要求1的分组封装器,还包括比较表,用于存储一个或多个索引值,每一个索引值都与分组缓存器中的一个特定轮盘分组相对应。
7.根据权利要求6的分组封装器,其中每一个索引值都是从相应轮盘分组中计算得到的散列值。
8.根据权利要求6的分组封装器,还包括具有一个或多个条目的接收队列,每一个条目都与分组缓存器中存储的一个特定轮盘分组相对应,其中所述一个或多个条目是根据分组缓存器中的一个或多个轮盘分组的接收时间戳值而按照时间先后顺序排列的。
9.根据权利要求6的分组封装器,还包括具有一个或多个条目的发送队列,每一个条目都与分组缓存器中存储的一个特定轮盘分组相对应;其中,发送队列还包括上一接收指针和上一发送指针,其中上一接收指针指示要添加与新分组相对应的条目的位置,而上一发送指针指示与分组缓存器中的最近发送到信道队列的轮盘分组相对应的条目。
10.根据权利要求1的分组封装器,其中信道队列进一步接收来自过滤器模块的转发分组。
11.根据权利要求1的分组封装器,其中所接收的多个分组是网际协议(IP)分组。
12.一种方法,包括与远程服务器建立轮盘会话;接收来自远程服务器的轮盘分组;当该分组先前未被接收过时,将所接收的轮盘分组添加到分组缓存器中,否则,当先前接收了该轮盘分组并且已将其存入了分组缓存器中时,更新分组缓存器中的该接收轮盘分组的时间戳;基于所接收的轮盘分组来更新一个或多个存取数据结构;接收广播传输介质中的可用带宽的指示;以及响应于该指示,将分组缓存器中存储的一个或多个轮盘分组发送到信道队列。
13.根据权利要求12的方法,还包括一旦出现了清理条件,就从分组缓存器中移除一个或多个轮盘分组。
14.根据权利要求12的方法,其中清理条件是到达到期时间段。
15.根据权利要求12的方法,其中一个或多个存取数据结构包括比较表,用于存储一个或多个索引值,每一个索引值都对应于分组缓存器中的一个特定轮盘分组。
16.根据权利要求15的方法,其中每个索引值都是从相应轮盘分组中计算得到的散列值。
17.根据权利要求12的方法,其中轮盘分组是与静态时间戳值相关联的网际协议(IP)分组。
18.根据权利要求12的方法,其中信道队列对应于广播传输介质。
19.根据权利要求18的方法,其中广播传输介质是数字广播网络。
20.根据权利要求19的方法,其中数字广播网络是手持式DVB(DVB-H)网络。
21.根据权利要求19的方法,其中数字广播网络是DVB陆地(DVB-T)网络。
22.根据权利要求18的方法,其中广播传输介质是电缆网络。
23.根据权利要求12的方法,其中与远程服务器建立轮盘会话的步骤包括与远程服务器进行通信,以便设定一个或多个用于定义轮盘会话的会话参数。
24.一种计算机程序产品,包含计算机可用介质,该介质上记录有计算机程序逻辑,其用于使计算机系统中的处理器能够处理分组,该计算机程序逻辑包括用于使处理器能与远程服务器建立轮盘会话的程序代码;用于使处理器能从远程服务器接收轮盘分组的程序代码;用于使处理器能执行下述操作的程序代码在先前未接收到该分组时,将所接收的轮盘分组添加到分组缓存器中,否则,当先前接收了该轮盘分组并且已将其存入了分组缓存器中时,更新分组缓存器中的该接收轮盘分组的时间戳;用于使处理器能够根据所接收的轮盘分组来更新一个或多个存取数据结构的程序代码;用于使处理器能接收广播传输介质中的可用带宽的指示的程序代码;以及响应于该指示,用于使处理器能将保存在分组缓存器中的一个或多个轮盘分组发送到信道队列的程序代码。
全文摘要
一种分组封装器,包括一个过滤器模块,该模块从多个所接收分组中识别出一个或多个轮盘分组。然后,将所述一个或多个轮盘分组保存在分组缓存器中。该分组封装器还包括一个信道队列,用于对分组进行排队以便经由广播传输介质进行传送。举例来说,该信道队列还接收来自过滤器模块的转发分组。当在广播传输介质中至少存在预定数量的可用带宽时,该信道队列还接收来自分组缓存器的一个或多个轮盘分组。该广播传输介质可以是数字广播网络,例如手持式DVB(DVB-H)网络或DVB陆地(DVB-T)网络。作为替换,该广播传输介质也可以是电缆网络。
文档编号H04H1/00GK101053201SQ200580037510
公开日2007年10月10日 申请日期2005年10月27日 优先权日2004年11月1日
发明者多米尼克·穆勒, 拉里·韦莫拉, 哈里·佩克宁 申请人:诺基亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1