本申请要求于2004年7月14日提交的美国申请序号10/890,273、名称为“Grouping of Session Objects(会话对象的分组)”的优先权,在此将其整体引用以供参考。
具体实施方式
I.操作环境
在详细地描述本发明之前,首先描述可以使用本发明的环境是有帮助的。因此,图1是依照本发明实施例的操作环境的图。在此环境中,从会话提供方102向多个终端设备106发送信息。
会话提供方102采用多播会话(例如FLUTE会话)的形式来发送信息。此信息可以包括多个对象或文件,所述对象或文件例如可以表示ESG、视频广播等。另外,此信息可以包括所述对象的描述和关于所述对象的分组信息。如图1所示,会话提供方102包括存储部分108和通信部分110。这些部分可以用硬件、软件、固件或其任何组合来实现。
存储部分108可以存储多个对象(例如,文件、元数据片段和/或元数据包封)以及用于表明所述多个对象的一个或多个分组的描述。多个对象和描述与递送会话相关联。通信部分110向所述会话的客户端发送多个对象和描述。
例如,信息可以跨过多个分布网络104而被发送到终端设备。这些分布网络包括DVB网络104a、WLAN网络104b、蓝牙网络104c、蜂窝式网络104d和有线网络(例如,经由电缆的数据服务接口规范(Data-Over-Cable Service Interface Specification,DOCSIS)网络)104e。因此,终端设备106可以以各种实现方式存在,诸如移动电话机、机顶盒等。尽管未示出,然而一个或多个中间网络(例如因特网)可以存在于会话提供方102和分布网络104之间。
II.电子服务向导
ESG信息被作为一个或多个元数据片段发送到用户终端。元数据片段是可以包含服务描述的元数据(例如SDP、XML等)。元数据包封(通常为XML)可以用于确定元数据信息(即元数据片段)的版本、更新和终止所述元数据信息(或保持当前信息)。
图2A是示出示例性的ESG 200的图。如图2所示,ESG 200包括依照具有多级的树层次布置的信息。这些级包括根级202、类别(category)级204、服务入口(portal)级206、服务级208、会话级209和服务项级210。
依照本发明的技术,ESG 200可以被设备接收并且向用户显示。例如,图2B是依照本发明实施例由无线通信设备250所显示的ESG200的视图。
III.ALC、LCT和FLUTE
ALC是在M.Luby等人的“Asynchronous Layered Coding(ALC)Protocol Instantiation”中所描述的协议,RFC 3450,互联网协会,2002年12月(“RFC 3450”)。在此将其内容整体引用以供参考并且可以从http://www.ietf.org/rfc/rfc3450.txt下载。
由于不要求上行链路信号传送,因此任何数量的附加接收器不会对系统施加附加要求,所以ALC是高度可扩展的(就用户数目而言)。然而,ALC不是100%可靠的,这是因为它不能确保接收,因而它通常被描述为耐用(robust)的。
ALC提供了从单个发送器到数目不限的并行接收器的、拥塞受控的可靠的内容异步递送。这通过利用分层编码传输(Layered CodingTransport,LCT)构建块、多速率拥塞控制构建块和前向纠错(FEC)构建块来执行。ALC被设计成用于IP多播网络服务并且不要求从接收器到发送器的反馈分组。被称为对象的信息在ALC会话中从发送器被传送到一个或多个接收器。
ALC可以支持几种不同的可靠内容递送服务模型。一个这种模型被称作推送(push)服务模型,涉及向所选的一组接收器并行递送对象。另一模型被称作按需(on-demand)内容递送服务模型。在此模型中,发送器在一时间段中发送对象(例如,软件)。在此时间段期间,接收器可以加入会话并且恢复对象。此时间段可以比接收器下载对象所需要的时间长得多。从而,接收器在此时间段期间加入会话,并且当它们已经接收到用以恢复对象的足够的分组时离开所述会话。这种会话由会话描述来标识,所述会话描述例如可以经由网络服务器来获得。ALC使用这样一种分组格式,包括用户数据报协议(UDP)标题,后面是LCT标题、FEC有效负载ID和分组有效负载。
在Luby等人的“Layered Coding Transport(LCT)构建块”中描述了LCT,RFC 3451,互联网协会,2002年12月。在此将该文件的内容全面引用以供参考并且可以从http://www.ietf.org/rfc/rfc3451.txt下载。LCT为可靠的内容递送和流递送协议提供了传输级支持。LCT会话包括在单个发送器处发起的一个或多个相关的LCT信道。所述信道用于在一定时间段传送包含LCT标题的分组。这些分组可以被一个或多个接收器接收。尽管LCT要求从发送器到接收器的连接,然而它不要求从所述接收器到发送器的连接。因此,LCT可以用于单播和多播递送这两者。
FLUTE是基于ALC而构建以经由因特网单向递送文件的协议。由Paila等人在互联网草案(Internet Draft)中的题目为“FLUTE-FileDelivery over Unidirectional Transport”中描述了FLUTE,2004年6月。在此将其内容全面引用以供参考并且可以从http://www.ietf.org/internet-drafts/draft-ietf-rmt-flute-08.txt下载。
如上所述,ALC定义了任意二进制对象的传输。然而,对于文件递送应用来说,仅仅传输对象没有向接收设备提供描述所传输的对象实际上表示什么的必要信息。FLUTE利用发信号并且把文件属性映射为ALC概念的机制来提供此必要信息。
ALC/LCT会话包括与单个发送器相关联的一组逻辑上分组的ALC/LCT信道,所述单个发送器发送具有用于一个或多个对象的ALC/LCT标题的分组。ALC/LCT信道由发送器和由所述发送器与信道相关联的地址的组合来定义。接收器加入信道以便开始接收由发送器向所述信道所发送的数据分组,并且接收器离开信道以便停止从所述信道接收数据分组。
在ALC/LCT标题中所携带的字段之一是传输会话标识符(Transport Session Identifier,TSI)。TSI由源IP地址来定范围,并且会话由源IP地址和TSI的配对来唯一标识。因此,接收设备可以使用此配对(在每个分组中所携带)来识别对应于所述分组的会话。
可以在会话中传输多个对象。为了使对象是可区分的,ALC/LCT标题可以包括传输对象标识符(Transport Object Identifier,TOI)字段。在FLUTE会话中,对于所有发送的分组来说要求TOI。所述TOI传送用于表明与分组相关联的会话的特定对象的值。每个对象在FLUTE会话的范围内具有唯一的TOI。
在FLUTE中,TOI字段值‘0’表示文件递送表(File DeliveryTable,FDT)实例的递送,其在一个会话期间可以重复几次。此外,每个FDT实例由FDT实例ID来唯一地标识。因此,在FLUTE会话期间,分组由用于文件对象的TOI以及由用于FDT实例对象的TOI、和FDT实例ID这两者来定范围。
文件递送表(FDT)提供了关于文件的描述性信息(或属性),所述文件将要在FLUTE文件递送会话内被递送。从实现方式的角度来看,FLUTE FDT是一组文件描述条目,其中每个条目用于要在会话中递送的文件。要求每个文件描述条目包括特定的属性。这些要求的属性包括条目所描述的文件的TOI以及用于标识所述文件的URI。
可以在FLUTE FDT中传送的进一步属性的例子包括用于文件的前向纠错(FEC)对象传输信息(包括FEC编码ID,并且如果相关的话,还有FEC实例ID)。文件属性的其它例子包括携带文件的传输对象的大小,以及向所有信道发送分组的综合速率(aggregaterate)。用于文件的TOI属性的例子还包括文件的MIME媒体类型、文件的大小、文件的编码以及文件的消息摘要。
文件递送会话的接收器(例如,终端设备)为所接收的文件描述条目保持FDT数据库。接收器例如当接收到FDT实例时维护所述数据库。因而,在任何给定时间,FDT数据库的内容表示文件递送会话的FDT的接收器当前视图。
为了例示而并非限制的目的提供了图4的步骤。因此,步骤的其它顺序以及添加和/或消除某些步骤也在本发明的范围之内。
IV.对象的分组
本发明提供了用于分组在例如FLUTE会话之类的会话中所发送的各个文件和/或对象的机制。在实施例中,该机制涉及把新属性加入到FLUTE FDT中。该新的属性通知(signal)在单个会话期间所发送的各个文件和/或对象的分组。一旦收到此属性,则接收设备被通知:在该会话期间所发送的特定文件和/或对象相关联,而且应当彼此结合地接收这些文件和/或对象。
本发明的分组机制实现了高效递送以及在接收器重构所发送的数据。例如,这样的分组机制可以用来根据元数据片段形成合成ESG。ESG用来向用户以及终端提供关于可用服务的信息。
图3是依照本发明实施例示出在FLUTE会话中沿着时间轴301的传输序列的图。这些传输包括FDT 302、对象304(也被称为对象X)、对象306(也被称为对象Y)和对象308(也被称为对象Z)。
FDT 302标识由会话所提供的对象。例如,FDT 302标识对象X、对象Y和对象Z。另外,FDT 302提供了关于这些对象的关系信息。此关系信息采用对象分组的形式。具体地,FDT 302表明存在两个组:组1和组2。如图3所示,对象X和Y属于组1,而对象Z属于组2。
如图3所示,FDT 302首先被发送,然后顺序传输对象304、306和308。然而,可以依照其它顺序来进行传输。
图4是依照本发明实施例的示例性操作的流程图,其中设备从FLUTE会话提供方获得各个对象。这些对象可以是元数据片段,所述设备可以使用所述元数据片段来构建合成元数据或ESG。此操作包括步骤402,在步骤402中设备加入FLUTE会话。这可以基于所述设备早先已经接收的一些(例如,带外)信息,并且所述设备根据所述信息得知正确的会话细节(诸如源IP地址、端口号等)。带外信息可以是从不同的源和/或经由不同的通信介质所接收的信息。
在步骤404,所述设备在会话期间获得(接收)FDT。一旦获得,那么所述设备在步骤406分析FDT。
在步骤408,所述设备确定所述会话是否提供了任何感兴趣的信息。对于ESG来说,感兴趣信息的例子包括ESG的元数据包封和元数据片段(或ESG的若干部分)。此确定可以是基于FDT的。或者,此确定可以基于从带外源所接收的信息。如果会话提供了任何感兴趣的信息,那么操作继续至步骤410。否则,操作可以继续至可选步骤409,在步骤409中所述设备中止参与对象递送会话。
在步骤410,设备根据所述感兴趣的信息来识别它需要从会话获得的信息(例如,对象)。此识别的信息包括在FLUTE会话期间所发送的整个信息的全部或一部分。一旦收到FDT,那么所述设备可以确定一个特定的感兴趣对象属于具有其它对象的组。因此,在实施例中,所述设备可以在步骤410识别它需要从所述会话中获得与在步骤408所确定的感兴趣信息共享组成员资格(group membership)的一个或多个对象。
步骤412在步骤410之后。在此步骤中,所述设备把在步骤410所识别的一个或多个对象下载为与在步骤408所确定的感兴趣信息共享组成员资格。
在步骤414,所述设备根据在FDT中所传送的对象和分组信息来存储信息。此信息可以是属于特定组的对象的汇编(compilation)。因此,这种汇编可以采用一个或多个列表的形式,其中每个列表可以包括属于一个或多个特定的组的一个或多个对象,例如URI(也被称为“共用于组的对象(common-to-group objects)”)。例如,一个列表可以包括在会话期间所发送的属于两个特定组的所有对象。所述设备然后可以(在步骤410)选择下载此列表中的所有对象。
在某些情况中,所述设备可能已经占有(例如存储在存储器中)在会话期间所发送的一些对象。在这种情况下,所述设备可以从FDT汇编关于在该设备并未占有的组中的对象、例如URI(也被称为“新的共用于组的对象”)的信息。如在上面的情况中,这种编译可以采用列表的形式,其中每个列表对应于一个或多个特定的组。所述设备然后可以在会话期间下载用于形成此列表的对象。
此特征在ESG的情况下是尤为有用的,其中更新的元数据片段可以在一个会话内经常发送或作为多个会话的一部分发送。根据确定版本的信息(versioning information)来在“新”和“旧”元数据片段之间进行区分,所述确定版本的信息可以提供在元数据包封中、片段本身中或其它地方(诸如FDT或带外)。
步骤410中的信息标识可以基于标识由FLUTE会话所提供的各个对象的组成员资格。参考图3的示例性会话,FLUTE会话可以发送属于相同组(即,组1)的对象X和Y。作为使用情况的一个例子,对象X可以是元数据包封,而对象Y可以是被对象X所引用的元数据片段。
因此,在步骤408,设备确定对象X是感兴趣的,由此在步骤410中把它标识为需要的对象。然而,由于对象X和Y属于相同的组,所以在步骤410设备也把对象Y标识为需要的对象。然而,通过步骤408的执行,设备可以确定对象Z(其不属于组1)不是感兴趣的。此确定可以是出于各种原因。例如,对象Z可能是一些软件代码或另一元数据片段,当被元数据包封(对象X)引用时,接收器在步骤408判断它不是感兴趣的。此外,由于对象Z属于与对象X的组不同的组,所以在步骤410中,所述设备不会标识它以用于下载。因而在此例子中,在步骤412所述设备下载对象X和Y。
可以依照“接收一个,则接收所有”的方式来使用本发明的分组机制。即,如果接收器接收作为某个组的一部分发送的任何对象,那么所述接收器应当接收在会话期间作为该组的一部分发送的所有对象。此功能在诸如视频下载和ESG下载的几个应用中是有用的。作为此“接收一个,则接收所有”特征的一个例子,当在步骤408中特定组的对象被设备确定为感兴趣时,在步骤410,所述设备把该特定组中的所有对象标识为需要的。
还可以使用本发明的分组机制来把一个或多个元数据片段的接收与元数据包封的接收联系在一起。例如,如果在步骤408中设备把正作为组的一部分在会话内发送的片段标识为感兴趣的,那么(依照此方面)在步骤410所述设备把在所述会话中发送的相应包封(其也是相同组的一部分)标识为需要的。
此外,本发明的分组机制还可以被用作为事件的“触发器”。例如,用于形成ESG的元数据片段可以在会话期间作为组的一部分发送。接收作为此组一部分的所有对象足以在所述设备触发特定的动作。例如,在ESG的情况下,设备接收特定量的信息会触发在屏幕上向用户显示ESG信息。或者,此信息的接收足以触发在可能的另一信道上的设备加入另一会话。
发送器可以发送特定的多目的互联网邮件扩展(MultipurposeInternet Mail Extension,MIME)类型作为单个组的一部分。MIME是用于格式化非ASCII消息的规范。此特征可以帮助接收器接收这些对象并且适当地使用它们,例如把它们传递到适当的应用上。可以结合使用MIME类型来使用分组机制。例如,接收器可以在会话期间首先只下载元数据包封。然后,根据在会话期间所发送对象的MIME类型以及对象所属的组,接收器可以选择只从特定的组中下载特定的对象。例如,在接收FDT之后,接收器可以选择只接收作为特定组X的一部分的SDP MIME类型的对象。此特征当例如使用传送带方法发送对象或文件时是非常有用的。
V.分组机制
如上所述,本发明的实施例提供了要被添加到FLUTE句法的新属性。具体地,本发明提供了用于分组并且关联在相同的FLUTE会话内递送的不同文件/对象的各种技术。例如,在实施例中,在TOI级分组文件/对象。然而在进一步的施例中,在会话级分组文件/对象。
表1和2提供了在TOI级分组对象的FDT实例的例子。
<FDT><TOI ID=″A1″><Group=″Group X″></TOI><TOI ID=″A2″><Group=″Group X″></TOI>………<TOI ID=″An″><Group=″Group X″></TOI></FDT> |
表1
表1的例子示出了使用新属性<Group=“Group X”>。此属性作为FLUTE FDT的一部分被包括。所述属性作为在FLUTE会话中所发送的每个对象的描述的一部分被包括。即,以“每个TOI”为基础包括该属性。
还可以使用此属性来发送属于一个以上组的对象。下面的表2是用于提供此特征的例子的FDT实例。
<FDT><TOI ID=″A1″><Group =″Group X″></TOI><TOI ID=″A2″><Group=″Group X″></TOI>………<TOI ID=″An″><Group=″Group X″></TOI><TOI ID=″B1″><Group=″Group Y″></TOI><TOI ID=″B2″><Group =″Group Y″></TOI>………<TOI ID=″Bm″><Group=″Group Y″></TOI></FDT> |
表2
在所述会话中接收到对象时,接收器分析FDT信息并且确定‘Group’属性等于‘X’的对象彼此相关。
如上所述,可以在“会话级”而不是如表1和2中的“对象级”进行对象的分组。下面的表3提供了在FLUTE会话中所递送的FDT实例的例子,其中在会话级进行分组。
<FDT><Group=″Group X″><TOI ID=″A1″></TOI><TOI ID=″A2″></TOI>………<TOI ID=″An″></TOI></FDT> |
表3
表3的例子示出了使用上述参数<Group=“Group X”>。然而在这种情况下,在会话级使用所述参数。即,取代在FLUTE FDT中按每个TOI(或每个对象)使用该参数,如上所示将在FLUTE会话中所发送的对象的FDT描述分组在单个参数<Group=“Group X”>内。
当接收设备经由表3的FLUTE FDT进行分析时,确定所递送的、作为FDT中组X的一部分的对象是相关联的。然后接收器可以组合所述对象。
此外,可以使用此会话级方法在单个FDT中指定多个组。下面在表4中提供了这种使用情况的例子。
<FDT><GrouP=″Group X″><TOI ID=″A1″></TOI><TOI ID=″A2″></TOI>………<TOI ID=″An″></TOI><Group=″Group Y″><TOI ID=″B1″></TOI><TOI ID=″B2″></TOI>………<TOI ID=″Bm″></TOI></FDT> |
表4
本发明的一个方面在于同一个对象可以存在于多个组中。在这种情况下,尽管所述对象(或文件或片段)在该会话中被作为单个实例发送,不过其通过使用上述‘分组’参数与一个或多个组相关联。下面在表5和6中提供了FDT实例的例子,其中对象是多个组的成员。具体地,表5提供了使用会话级分组的例子,而表6提供了使用TOI级分组的例子。
<FDT><Group=″Group X″><TOI ID=″A1″>URI=File 1</TOI><TOI ID=″A2″></TOI>………<TOI ID=″An″></TOI><Group=″Group Y″><TOI ID=″A1″>URI=File 1</TOI><TOI ID=″B1″></TOI>………<TOI ID=″Bm″></TOI></FDT> |
表5
如上面表5所示,通过利用TOI A1在会话内标识文件1(File 1)。此文件在会话期间被作为单个实例发送。然而,接收设备解释表5的FDT实例中的分组信息,使得文件1属于组X和Y这二者。
下面的表6示出了可以在TOI级实现相同的多个分组。在此FDT实例中,文件1的描述向接收器表明文件1属于组X和Y这二者。从而,尽管在会话期间只发送文件1这一个实例,不过接收设备根据此FDT实例解释文件1属于组X和Y这二者。
<FDT><TOI ID=″A1″>URI=File 1<Group=″Group X″><Group=″Group Y″></TOI><TOI ID=″A2″><Group=″Group X″></TOI>………<TOI ID=″An″><Group=″Group X″></TOI><TOI ID=″B1″><Group=″Group Y″></TOI>………<TOI ID=″B2″><Group =″Group Y″></TOI><TOI ID=″Bm″><Group=″Group Y″></TOI></FDT> |
表6
VI.终端设备
图5是示出依照本发明一方面的终端设备体系结构的图。此体系结构包括会话客户端502(例如ESG客户端)、通信接口504(例如,蓝牙无线电、WLAN无线电、DVB接收器或电缆接口)和对象数据库509。
如图5所示,会话客户端502被耦合到通信接口504。通信接口504负责与其它设备交换(即,接收和/或传输)通信信号。接口504包括通信模块512和收发器514。另外,对于使用无线通信的体系结构来说,通信接口包括天线516。
通信模块512执行与链路建立、安全和控制相关的功能。这些功能可以涉及依照一个或多个协议发现相应的远程设备并与它们通信。这种协议可以包括用于通信技术的链路层协议和媒体存取控制协议,诸如蓝牙、WLAN、DVB、电缆(例如,DOCSIS)、蜂窝式。因此,模块512执行用于传输的基带处理,诸如纠错编码和解码。另外,通信模块512依照物理层协议与在远程设备处的相应实体交换数据。物理层协议的例子包括例如自动重复请求(automatic repeat request,ARQ)协议的重发协议。这种协议还可以涉及(例如在DVB通信中)一个或多个时间分片猝发传输的接收。
收发器514包括用于允许(例如结合天线516)图5的设备与远程设备接收并交换信号(例如,DVB、蓝牙和/或WLAN信号)的电子设备。这些电子设备包括调制器、解调器、放大器和/或滤波器。如图5所示,收发器514可以包括发送器518和接收器520。发送器518包括用于发送信号的组件(例如,电子设备),而接收器520包括用于接收信号的组件(例如,电子设备)。在另外的实施例中,设备体系结构可以只包括接收器而不是收发器514。
通信模块512依照较高层协议与会话客户端502交换信息,终端设备与一个或多个远程会话提供方共享所述较高层协议。这种协议的例子包括ALC和FLUTE。会话客户端502例如可以是ESG客户端,所述ESG客户端接收ESG信息(例如元数据)并且经由用户接口向用户显示所述ESG信息。
对象数据库509存储从远程会话提供方所接收的关于由所述会话提供方提供的对象(例如,文件)的信息。这种信息可以包括用于所述对象的资源标识符,例如统一资源标识符(URI),以及关于各个对象可以属于的一个或组的分组信息。
图5的体系结构可以用硬件、软件、固件或其任何组合来实现。在图6中示出了一个这种实现方式。此实现方式包括处理器602、存储器604和用户接口606。另外,图6的实现方式包括收发器514和天线516。可以如上所述参考图5来实现收发器514。
如图6所示,处理器602被耦合到收发器514。处理器602控制设备操作。可以利用一个或多个微处理器来实现处理器602,所述微处理器都能够执行在存储器604中所存储的软件指令。
存储器604包括随机存取存储器(RAM)、只读存储器(ROM)和/或闪速存储器,并且采用数据和软件组件(这里也被称作为模块)的形式来存储信息。这些软件组件包括可以由处理器602执行的指令。各种类型的软件组件可以被存储到存储器604中。例如,存储器604可以存储用于控制收发器514的操作的软件组件。存储器604还可以存储用于提供会话客户端502、通信模块512和对象数据库509的功能的软件组件。
另外,存储器604可以存储软件组件,所述软件组件经由用户接口606来控制信息交换。如图6所示,用户接口606也被耦合到处理器602。用户接口606便于设备与用户相交互。例如,用户接口606用于使用户访问ESG。图6示出了用户接口606包括用户输入部分608和用户输出部分610。用户输入部分608可以包括允许用户输入信息的一个或多个设备。这种设备的例子包括小键盘、触摸屏和麦克风。用户输出部分610允许用户从无线通信设备接收信息。从而,用户输出部分668可以包括诸如显示器和一个或多个音频扬声器的各种设备。示例性的显示器包括液晶显示器(LCD)和视频显示器。
可以依照各个技术来耦合图6中所示出的元件。一个这种技术涉及经由一个或多个总线接口耦合收发器514、处理器602、存储器604和用户接口606。另外,这些组件中的每一个被耦合到电源,例如可再充电和/或可拆卸的电池组(未示出)。
VII.结论
虽然上面已经描述了本发明的各个实施例,但是应当理解的是,仅仅以举例形式而不是限制的形式来给出这些实施例。例如,尽管已经描述了涉及FLUTE的例子,但其它会话递送协议和机制也在本发明的范围之内。
因此,对相关领域内的技术人员来说,在不脱离本发明的精神和范围的情况下进行形式和细节上的改变是显而易见的。从而,本发明的外延和范围不应该由上述任何示例性的实施例来限制,而应该仅仅依照下列权利要求及其等同物来定义。