Traitement en cours

Veuillez attendre...

Paramétrages

Paramétrages

Aller à Demande

1. CN107211196 - Method and devices for transmitting a data stream according to a multipoint transmission mode

Note: Texte fondé sur des processus automatiques de reconnaissance optique de caractères. Seule la version PDF a une valeur juridique

[ ZH ]
用于以多播传输模式发送数据流的方法和设备


技术领域
本发明涉及一种用于在服务器设备与客户端设备之间以多播传输模式发送数据流的方法,以及实现所述方法的客户端设备和服务器设备。该方法受益于将客户端设备连接到服务器设备的多个网络接口的存在。
背景技术
使用多播通信模式的数据传输应用是已知的。多播通信模式主要用在服务器设备必须向多个客户端设备发送相同的数据流时。多播通信模式尤其用于在网络上广播多媒体节目的应用,诸如,例如,用于在因特网上广播电视节目、因特网上的视频点播或无线电节目的应用。
多播传输模式的一个优点是避免了在通信网络的某些部分上重复数据。
图1A示意性地示出了在服务器设备(或服务器)101与客户端设备(或客户端)103、104和105之间使用多播通信模式的第一示例。在图1A的示例中,通信链路106将服务器101连接到路由器102。通信链路107、108和109分别将路由器102连接到客户端103、104和105。通信链路107(又或者108和109)和106在服务器101与客户端103(又或者客户端104和客户端105)之间形成通信路径106/107(又或者106/108和106/109)。因此,通过使用路径106/107(又或者路径106/108和路径106/109),客户端103(又或者客户端104和客户端105)具有将其连接到服务器设备101的网络接口。
每个客户端103、104和105可以是能够使用由服务器101发送的数据流的终端客户端(诸如,多媒体设备)。多媒体设备可以例如是计算机、触摸平板、智能电话、电视机或数字电视节目解码器。每个客户端103、104和105也可以是终端客户端与服务器101之间的中间客户端。中间客户端可以例如是将局部网络(局域网-LAN)中的多媒体流中继到终端客户端设备的因特网网关。
多播通信模式需要希望接收在多播组上发送的数据流的客户端订阅多播组。管理多播组的订阅需要在多播组中涉及的每个服务器、路由器和客户端之间交换多播组管理请求。这种订阅管理通常由RFC 988(版本0)、1112(版本1)、2236(版本2)和3376(版本3))中相继地描述的IGMP(因特网组管理协议)来实现。
在图1A的示例中,只有客户端103是被称为目标多播组的多播组的订户。为此,客户端103已经向路由器102发送了IGMP订阅请求,以便通知路由器102客户端103希望订阅目标多播组。如果没有连接到路由器102的其它客户端已经订阅了所述目标多播组,则路由器102向服务器101发送IGMP订阅请求,以便通知服务器客户端希望接收与所述目标多播组对应的数据流。以这种方式,激活与所述目标多播组对应的数据流的传输。只要订阅是无效的,在服务器101与客户端103之间就没有与数据流对应的数据分组通过。一旦订阅是有效的,数据分组P1、P2、P3、P4就通过路径106/107。
图1B示意性地示出了在服务器设备101与客户端设备103、104和105之间使用多播通信模式的第二示例。在该示例中,客户端104和105订阅与客户端103相同的多播组。为此,它们各自向路由器102发送IGMP订阅请求,以便向其指示他们希望订阅所述目标多播组。因为在这种情况下,客户端103已经是目标多播组的订户,所以在接收到来自客户端104和105的IGMP订阅请求之后,路由器102不必向服务器101发送IGMP订阅请求。图1B中的示例示出了多播通信模式的优点。虽然三个客户端是订户,但分组P7和P8不在链路106上重复,所述链路106作为通信路径106/107、106/108和106/109之间的共用链路。仅在路由器102之后,在通信路径106/107、106/108和106/109之间不共用的链路107、108和109上重复分组,所述分组已被路由器102重复。以这种方式,所有路径共用的每个通信路径的部分不会被每个分组的多个副本过载。
在下文中,当我们谈到订阅请求和取消订阅请求时,这些请求与如由IGMP协议定义的IGMP订阅请求和IGMP取消订阅请求对应。
图1C示意性地示出了当客户端设备具有将客户端设备连接到服务器设备的多个网络接口时的多播通信模式的限制。在该示例中,每个客户端103、104和105具有将其连接到服务器101的两个网络接口。客户端103(又或者104和105)具有通过路径106/107(又或者106/108和106/109)将该客户端103连接到服务器101的第一接口和通过包括链路110和112(又或者链路110和113以及链路110和114)并且通过路由器111的路径110/112(又或者110/113和110/114)将该客户端103连接到服务器101的第二网络接口。如当前定义的多播通信模式不能使客户端从多个通信接口的存在受益。这是因为多播通信只能使用一个通信路径来发送数据流。例如,在订阅多播组的情况下,客户端只在路径106/107或路径110/112上接收与多播组对应的数据流。因为每个通信路径与带宽相关联,所以两个路径106/107和110/112的组合使用将允许增加客户端103的接收带宽。
期望克服现有技术的这些各种缺陷。
尤其期望使得订阅多播组的客户端能够从服务器获得数据流,以从将其连接到可用于所述客户端的服务器的所有网络接口受益。
尤其期望提供一种易于实现并且低成本的解决方案。
发明内容
根据本发明的第一方面,本发明涉及一种在服务器设备与客户端设备之间根据多播传输模式发送数据流的方法,该方法包括由客户端设备实现的以下步骤:获得用于订阅多播组(称为目标多播组)的第一请求,所述多播组允许获得数据流;利用多个第二订阅请求替换用于订阅目标多播组的第一请求,每个第二订阅请求与多播子组的集合中的多播子组相关联,每个多播子组允许获得形成数据流的子部分的数据子流,所有多播子组允许通过组合数据子流来获得所述数据流;将网络接口与每个第二订阅请求相关联,每个相关联的网络接口从将服务器设备连接到客户端设备并在客户端设备上可用的网络接口的集合中获取;通过与所述第二请求相关联的网络接口向服务器设备发送每个第二订阅请求;接收与所发送的第二订阅请求对应的数据子流,所接收到的每个数据子流通过发送与所述数据子流相关联的第二订阅请求的网络接口被接收到;使用所接收到的数据子流来重构数据流,以便能够使用所述数据流。
因此,本发明允许从客户端上可用的所有网络接口受益。与多播组对应的数据流的数据被分配在数据子流的集合中,每个数据子流与多播子组对应。然后,客户端可以从各种网络接口订阅多播子组,并通过所述网络接口接收数据子流。通过多个网络接口对数据流的接收允许将各种网络接口上可用的带宽相加在一起。
根据一个实施方式,在获得用于订阅目标多播组的第一请求之后,客户端设备在表示多播组的信息的集合中寻找表示所述目标多播组的信息,当在表示多播组的信息的集合中找到表示所述目标多播组的信息时,第一订阅请求被第二订阅请求替换。
根据一个实施方式,当在表示多播组的信息的集合中寻求表示所述目标多播组的信息时,客户端设备实现以下步骤:向服务器设备发送被称为GETCAPS请求的请求,请求表示可由所述服务器设备传递的每个数据流的信息;从所述服务器设备接收称为SENDCAPS请求的至少一个请求,提供表示可由所述服务器设备传递的每个数据流的信息;从表示所接收到的数据流的信息构建表示多播组的信息的集合;在表示如此构建的多播组的信息的集合中寻找表示所述目标多播组的信息。
以这种方式,当客户端设备没有关于多播组上可用的数据流的信息时,该客户端设备可以询问服务器设备,以便获得该信息。
根据一个实施方式,表示每个数据流的信息包括表示所述数据流的多播地址的信息和表示与所述数据流对应的数据子流的集合的信息,以及(针对每个数据子流)表示所述数据子流的多播地址的信息。
根据一个实施方式,表示每个数据流的信息还包括表示每个数据流和每个数据子流的传输速率的信息。
根据一个实施方式,每个GETCAPS请求和每个SENDCAPS请求与因特网组管理协议(IGMP)兼容。
根据一个实施方式,当接收到与所发送的第二订阅请求对应的数据子流时,客户端设备检查针对所发送的每个第二订阅请求对应于与所述第二订阅请求相关联的多播子组的数据子流是否被接收到,并且如果每个数据子流被接收到,则重构所述数据流。
根据一个实施方式,当至少一个数据子流未被接收时,客户端设备向服务器设备发送针对每个多播子组(针对该多播子组已经发送了第二订阅请求)的取消订阅请求。
根据一个实施方式,当在表示多播组的信息的集合中未找到表示所述多播组的信息时,客户端设备向服务器设备发送第一订阅请求,以接收数据流。
根据一个实施方式,当在接收与所发送的第二订阅请求对应的数据子流期间客户端设备检测将客户端设备连接到服务器设备的新的网络接口的打开时,客户端设备实现以下步骤:通过添加检测到的新的网络接口来增强所述网络接口的集合;将所述新的网络接口与至少一个第二请求相关联,所述至少一个第二请求用于订阅与目标多播组对应的多播子组的集合中的多播子组;通过使用新的网络接口向服务器设备发送与所述新的网络接口相关联的每个第二订阅请求;当通过包括所述新的网络接口的多个网络接口同时接收到和与通过所述新的网络接口发送的第二订阅请求相关联的多播子组对应的数据子流(称为重复子流)时,发送对与通过除了新的网络接口以外的网络接口接收到的重复子流对应的每个多播子组的取消订阅请求。
根据一个实施方式,当通过新的网络接口未接收到和与通过所述新的网络接口发送的第二订阅请求相关联的多播子组对应的数据子流时,客户端设备向服务器设备发送对与未被接收的数据子流对应的多播子组的取消订阅请求。
根据一个实施方式,当在接收与所发送的第二订阅请求对应的数据子流期间客户端设备检测将客户端设备连接到服务器设备的网络接口的抑制时,客户端设备实现以下步骤:通过移除被抑制的网络接口来缩减所述网络接口的集合;将先前与被抑制的网络接口相关联的每个第二订阅请求与经缩减的网络接口的集合中的网络接口相关联;使用经缩减的网络接口的集合中与每个第二订阅请求相关联的网络接口向服务器设备发送所述每个第二订阅请求,所述每个第二订阅请求先前与被抑制的网络接口相关联;如果在先前与被抑制的网络接口相关联的每个第二订阅请求的传输之后,接收到与所发送的每个第二订阅请求对应的每个数据子流,则重构所述多播流。
根据一个实施方式,如果在先前与被抑制的网络接口相关联的每个第二订阅请求的传输之后,与所发送的第二订阅请求对应的至少一个数据子流未被接收到,则客户端设备向服务器设备发送对每个多播子组的取消订阅请求。
根据一个实施方式,所述方法包括由服务器设备实现的以下步骤:通过接收接口接收每个第二订阅请求;在数据子流中分配数据流的数据;通过对应与接收和对应于所述数据子流的多播子组相关联的第二订阅请求的接口的网络接口发送每个数据子流。
根据一个实施方式,在将数据流的数据分配在数据子流中时,考虑表示每个数据流和/或每个子流的传输速率的信息。
根据本发明的第二方面,本发明涉及一种能够根据多播传输模式从服务器设备接收数据流的客户端设备,该客户端设备包括以下装置:用于获得用于订阅多播组(称为目标多播组)的第一请求的装置,所述多播组允许获得数据流;用于利用多个第二订阅请求替换用于订阅目标多播组的第一请求的装置,每个第二订阅请求与多播子组的集合中的多播子组相关联,每个多播子组允许获得形成数据流的子部分的数据子流,所有多播子组允许通过组合数据子流来获得所述数据流;用于将网络接口与每个第二订阅请求相关联的装置,每个相关联的网络接口从将服务器设备连接到客户端设备并在客户端设备上可用的网络接口的集合中获取;用于在与所述第二请求相关联的网络接口上向服务器设备发送每个第二订阅请求的装置;用于接收与所发送的第二订阅对应的数据子流的装置,所接收的每个数据子流通过发送与所述数据子流相关联的第二订阅请求的网络接口被接收到;用于使用所接收到的数据子流来重构数据流以便能够使用所述数据流的装置。
根据本发明的第三方面,本发明涉及一种能够以多播传输模式向客户端设备发送数据流的服务器设备,该服务器设备包括以下装置:接收装置,接收装置用于接收与由客户端设备发送的、替换用于订阅由客户端设备获得的目标多播组的第一请求的多个第二订阅请求对应的多个第二订阅请求,所述目标多播组允许获取数据流,每个第二订阅请求与多播子组的集合中的多播子组相关联,每个多播组允许获得形成数据流的子部分的数据子流,所有多播子组允许通过组合所述数据子流获得所述数据流;分配装置,所述分配装置用于将所述数据流的数据分配在所述数据子流中;发送装置(des moyens detransmission),所述发送装置用于通过与用于接收第二订阅请求的接口对应的网络接口发送每个数据子流,所述第二订阅请求与和所述数据子流对应的多播子组相关联。
根据本发明的第四方面,本发明涉及一种通信系统,该通信系统包括根据第三方面的服务器设备以及至少一个根据第二方面的客户端设备。
根据本发明的第五方面,本发明涉及一种计算机程序,该计算机程序包含用于当所述程序由服务器设备或客户端设备的处理器执行时由所述客户端设备或所述服务器设备实现根据第一方面的方法的指令。
根据本发明的第六方面,本发明涉及存储装置,该存储装置存储计算机程序,该计算机程序包含用于当所述程序由服务器设备或客户端设备的处理器执行时由所述客户端设备或所述服务器设备实现根据第一方面的方法的指令。
附图说明
上述本发明的特征(以及其它特征)将通过阅读下面的示例实施方式的描述而更清晰地呈现,结合附图给出所述描述,其中:
-图1A示意性地示出了在服务器设备与客户端设备之间实现多播通信模式的第一示例;
-图1B示意性地示出了在服务器设备与客户端设备之间实现多播通信模式的第二示例;
-图1C示意性地示出了当客户端设备具有将客户端设备连接到服务器设备的多个网络接口时的多播通信模式的限制;
-图1D示意性地示出了当客户端设备具有将客户端设备连接到服务器设备的多个网络接口时的本发明的实现;
-图2A示意性地示出了实现本发明的客户端设备的硬件架构的示例;
-图2B示意性地示出了实现本发明的服务器设备的硬件架构的示例;
-图3示意性地示出了在多播通信的背景下由客户端设备实现的方法的第一示例,所述方法允许从将该客户端设备连接到服务器设备的多个网络接口受益;
-图4示意性地示出了在多播通信的背景下由客户端设备实现的方法的第二示例,所述方法允许从将该客户端设备连接到服务器设备的多个网络接口受益;
-图5示意性地示出了在出现将客户端设备连接到服务器设备的新的网络接口时由客户端设备实现的方法的示例;
-图6示意性地示出了在将客户端设备连接到服务器设备的现有网络接口消失时由客户端设备实现的方法的示例;
-图7示意性地示出了由服务器设备实现的方法,该方法允许将与多播流对应的多播子流发送到至少一个客户端设备;
-图8示意性地示出了由客户端设备实现的方法的示例,该方法允许在表示多播组的信息的集合中寻找表示某一多播组的信息;
-图9示意性地示出了允许获得服务器可以提供的多播组的描述的请求的示例;
-图10示意性地示出了请求的示例,所述请求使得服务器设备能够提供表示可由所述服务器设备在相应的多播组中传递的每个数据流的信息;以及
-图11、图12和图13示意性地示出了请求的选项的示例,所述请求使得服务器设备能够提供表示可由所述服务器设备在相应的多播组中传递的每个数据流的信息。
具体实施方式
图1D示意性地示出了当客户端设备103、104和105具有将每个客户端设备103、104和105连接到服务器设备101的多个网络接口时的本发明的实现。该示例重复图1C中的情况,其中每个客户端103、104和105具有连接到服务器101的两个网络接口。我们在这里假设每个客户端103、104和105是因特网网关,每个因特网网关已经从位于其局部网络中的终端客户端接收到订阅允许获得数据流的相同多播组(被称为目标多播组)的第一请求。在本发明的背景下,根据随后描述的方法,每个客户端103、104和105用两个第二订阅请求替换用于订阅目标多播组的第一请求。每个第二订阅请求与多播子组的集合中的多播子组相关联。每个多播子组使得能够获得形成数据流的子部分的数据子流,所有多播子组允许通过组合数据子流来获得所述数据流。每个客户端103、104和105接下来向第一网络接口(例如,在通信路径106/107、106/108和106/109上)发送第一第二订阅请求,并在第二网络接口上(例如,在通信路径110/112、110/113、110/114上)发送第二订阅请求。当它们接收到第二订阅请求时,如果没有连接到路由器102和111的客户端尚不是子组中的一个子组的订户,则路由器102和111各自向服务器101发送与他们已接收到的第二订阅请求对应的第二订阅请求。在接收到这些第二订阅请求之后,服务器101开始第一数据子流到客户端103、104和105的第一网络接口的传输以及第二数据子流到客户端103、104和105的第二网络接口的传输。每个客户端103、104和105接下来从其接收到的数据子流重构数据流,并将重构的数据流重传到位于其局部网络中的其各自的终端客户端。因此,每个客户端103、104和105从使用对其可用的网络接口中的每一个获益。例如,客户端103受益于用于接收数据流的路径106/107和110/112的总带宽。
在下文中,在服务器和客户端之间的多播传输的背景下描述本发明,其中,客户端是因特网网关,其接收用于订阅位于该因特网网关的局部网络中的终端客户端的多播组的请求。然而,本发明可以在终端客户端(诸如,计算机、智能电话、触摸平板等)中以相同的方式实现。在后一种情况下,终端客户端不向利用多个第二订阅请求替换第一订阅请求的中间客户端发送用于订阅多播组的该第一请求,所述中间客户端而是所述终端客户端本身以多个第二订阅请求替换第一订阅请求。
此外,我们将在这里考虑用于以多播模式传输电视数据流的应用。然而,可以设想其它数据流(诸如,例如,无线电数据流)。
图2A示意性地示出了实现本发明的客户端设备的硬件架构的示例。这里我们以客户端103为例。客户端103然后包括(通过通信总线210连接的):处理器或CPU(中央处理单元)200;随机存取存储器(RAM)201;只读存储器(ROM)202;诸如SD(安全数字)卡读取器203的存储单元或存储介质读取器;连接接口的集合204,所述连接接口用于将客户端103连接到用于例如与服务器101通信的一个或更多个扩展网络(WAN,广域网)(例如,因特网)或者连接到用于例如与终端客户端通信的局部网络。
处理器200能够执行从ROM202、从外部存储器(未示出)、从诸如SD卡的存储介质或者从通信网络加载到RAM 201中的指令。当客户端103被上电时,处理器200能够从RAM 201读取指令并执行所述指令。这些指令形成计算机程序,该计算机程序使得通过处理器200实现下面结合图3、图4、图5、图6和图8描述的方法中的全部或一些。
图2B示意性地示出了实现本发明的服务器设备的硬件架构的示例。这里我们以服务器101为例。服务器101然后包括(通过通信总线250连接的):处理器或CPU(中央处理单元)240;随机存取存储器(RAM)241;只读存储器(ROM)242;诸如SD(安全数字)卡读取器243的存储单元或存储介质读取器;连接接口的集合244,所述连接接口用于将服务器101连接到一个或更多个扩展网络(WAN),以便例如与客户端103、104和105进行通信。
处理器250能够执行从ROM 242、从外部存储器(未示出)、从诸如SD卡的存储介质或者从通信网络加载到RAM 241中的指令。当服务器101被上电时,处理器240能够从RAM241读取指令并执行所述指令。这些指令形成计算机程序,该计算机程序使得通过处理器240实现下面结合图7描述的方法中的全部或一些。
下面结合图3、图4、图5、图6、图7和图8描述的算法的全部或部分可以通过由诸如DSP(数字信号处理器)或者微控制器的可编程机器执行一组指令来以软件的形式实现,或者通过机器或专用组件(诸如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))来以硬件的形式实现。
图3示意性地示出了在多播通信的背景下由客户端设备实现的方法的第一示例,所述方法允许从将该客户端设备连接到服务器设备的多个网络接口受益。我们在这里重复结合图1D描述的示例,服务器是服务器101,客户端是客户端103。
在步骤301中,客户端103获得用于订阅多播组(被称为目标多播组)的第一请求,所述多播组允许获得数据流。该订阅请求例如已由连接到客户端103的局部网络的终端客户端发送到客户端103。在图3中的示例中,用于订阅多播组的请求的目的是将终端客户端订阅到允许接收与电视频道对应的电视数据流的多播组。
在步骤304中,客户端103利用多个第二订阅请求替换用于订阅目标多播组的第一请求。每个第二订阅请求与多播子组的集合中的多播子组相关联。每个多播子组允许获得形成数据流的子部分的数据子流,所有多播子组允许通过组合数据子流来获得所述数据流。在图3中的示例中,假设客户端103具有对局部网络中包括的终端客户端可以订阅的所有多播组的描述。该描述将多播组的每个地址与多播子组的多个地址相匹配。多播子组的每多个地址使得能够订阅允许获得数据子流的多播子组,通过组合所述数据子流允许重构通过订阅目标多播组获得的数据流。
在步骤305中,客户端103将网络接口与每个第二订阅请求相关联。在一个实施方式中,客户端103具有网络接口的集合,该网络接口的集合包括足以使每个第二订阅请求与不同网络接口相关联的多个网络接口。
在步骤306中,客户端103通过与第二请求相关联的网络接口向服务器101发送所述每个第二订阅请求。通过经由给定的网络接口发送第二订阅请求,确保了将在该给定网络接口上接收与该第二订阅请求对应的数据子流。
在步骤307中,客户端103接收与所发送的第二订阅请求对应的数据子流,所接收的每个数据子流通过发送与所述数据子流相关联的第二订阅请求的网络接口被接收到。在一个实施方式中,针对其发送了第二订阅请求的所有数据子流被系统地接收到。
在步骤308中,客户端103从所接收到的数据子流重构数据流。在一个实施方式中,在其传输期间,每个数据子流被封装在各自包括序列号信息和时间指示符的数据分组(诸如,例如,与RTP协议(实时传输协议,RFC 1889)兼容的分组)中。包含序列号信息和时间指示符的分组的使用使得能够对所接收到的每个数据子流的数据分组进行重新排序,以便重构数据流。
在步骤309期间,客户端103将数据流发送到使用它的终端客户端。在用于发送电视数据的应用的情况下,终端客户端对电视数据流进行解码以便显示电视频道。
在一个实施方式中,包括在客户端103的局部网络中的终端客户端可以订阅的所有多播组的描述包括:(针对每个数据流)表示数据流的传输速率的信息;以及(针对每个数据子流)关于数据子流的传输速率的信息。此外,客户端103能够估计其具有的每个网络接口上可用的带宽。在该实施方式中,在步骤304期间,在进行利用第二订阅请求替换第一订阅请求之前,客户端103将与目标多播组对应的数据流的传输速率与客户端103上可用的网络接口上可用带宽的总和进行比较。仅当数据流的传输速率小于或等于带宽的总和时才执行替换。如果数据流的传输速率大于带宽的总和,则放弃对多播组使用的订阅,并且客户端103不实现步骤305至309。
如果数据流的传输速率小于带宽的总和,则在步骤305期间,在将第二订阅请求与网络接口相关联之前,客户端103检查和与所述接口相关联的第二订阅请求对应的子流的传输速率的总和是否小于所述网络接口上可用的带宽。如果第二订阅请求中的至少一个不能与客户端103上可用的网络接口中的一个相关联,则客户端103放弃对多播子组的订阅,并且不实现步骤306至309。
在一个实施方式中,客户端103具有的网络接口的数量小于多播子组的数量,所述多播子组包括在与目标多播组对应的多播子组的集合中。在这种情况下,一些网络接口与多个第二订阅请求相关联。
在一个实施方式中,与由客户端103发送的第二订阅请求对应的某些数据子流未被接收到。在这种情况下,客户端103从其接收到的数据子流重构数据流。在一个实施方式中,客户端103利用其所接收到的、在时间上最接近丢失的分组的流的数据分组替换其尚未接收到的子流的数据分组。在另一个实施方式中,客户端103不尝试替换其尚未接收到的流的数据分组,并且认为可以使用错误隐藏方法通过终端客户端掩蔽与这些数据分组对应的每个数据丢失。
在一个实施方式中,当其被上电时,客户端103不具有对包括在其局部网络中的终端客户端可以订阅的所有多播组的描述。然后有必要从服务器101获得它。然后,客户端103可以例如通过在服务器101的URL(统一资源定位符)地址上发送HTTP(超文本传输协议)请求来获得该描述。作为响应,服务器101例如以文本、HTML(超文本标记语言)或XML(可扩展标记语言)发送该描述。在下文中将结合图4的步骤302以及图3至图13来看使得客户端103能够基于IGMP协议恢复描述的第二方法。
图4示意性地示出了在多播通信的背景下由客户端设备103使用的方法的第二示例,所述方法允许从将客户端设备103连接到服务器设备101的多个网络接口受益。该方法重复结合图3描述的方法的步骤301、304、305、306、308和309,并添加了其它步骤。
该方法从结合图3描述的步骤301开始。
在步骤302中,客户端103在表示多播组的信息的集合中寻找表示目标多播组的信息。在下文中结合图8至图13详细描述步骤302。
在步骤303中,客户端103检查表示所述目标多播组的信息是否位于表示多播组的信息的集合中,并且检查在表示目标组的信息中,目标多播组的地址是否与多播子组的多个地址匹配。
如果表示所述多播组的信息位于表示多播组的信息的集合中,并且目标组的多播地址与多播子组的多个地址相匹配,则客户端103认为目标多播组适合于使用客户端103上可用的所有网络接口的传输。在这种情况下,客户端103实现已经结合图3说明的步骤304至306。
在步骤3070中,客户端103检查客户端103是否接收到与由客户端103发送的第二订阅请求对应的所有数据子流。如果是这种情况,则客户端103实现已经说明的步骤308和309。
如果与由客户端103发送的第二请求对应的至少一个数据子流未被客户端103接收到,则在步骤310中,客户端103向服务器101发送针对每个多播子组(针对其已发送第二订阅请求)的取消订阅请求。
在步骤303期间,如果表示所述目标多播组的信息位于表示多播组的信息的集合中,但目标组的多播地址与多播子组的多个地址不匹配,则客户端103认为目标多播组不适合使用客户端上可用的所有网络接口的传输。在这种情况下,步骤303之后是步骤311,在步骤311期间,向服务器101发送用于订阅多播组的第一请求。
在步骤312中,客户端103检查与目标多播组对应的数据流是否被接收到。
如果所述数据流被接收到,则客户端103继续步骤309。如果所述数据流未被接收到,则客户端103从目标多播组取消订阅。
在步骤303期间,如果表示所述多播组的信息不位于表示多播组的信息的集合中,则客户端103放弃订阅目标多播组的尝试。
图8示意性地示出了由客户端103设备实现的方法的示例,该方法允许在表示多播组的信息的集合中寻找表示某一多播组的信息。结合图8描述的方法详细描述了步骤302的实现。这里假设客户端103在被上电时不具有包括在客户端103的局部网络中的终端客户端可以订阅的所有多播组的描述,并因此,有必要从服务器101获得该描述。
在步骤3021中,客户端103通过其所有可用的网络接口发送与IGMP协议兼容的请求(称为GETCAPS请求)。在图1C和图1D的背景下,GETCAPS请求旨在从服务器101获得描述,服务器101是唯一可用的服务器。在另一个实施方式中,如果多个服务器可用,则GETCAPS请求旨在针对每个服务器,每个服务器能够响应于通过发送包括在客户端103的局部网络中的终端客户端可以订阅的多播组的描述接收到的GETCAPS请求。
图9示意性地示出了允许获得服务器可以提供的多播组的描述的GETCAPS请求的示例。GETCAPS请求包括:“type”字段91,例如十六进制等于0x30,其允许识别GETCAPS请求;“Max Resp Code”字段92,其允许指示分配用于从服务器获得响应的最大时间;以及“checksum”字段93,其包括允许检测GETCAPS请求中的错误的纠错码。“Max Resp Code”字段提供例如以十分之一秒表示的时间指示。在接收到GETCAPS请求后,接收GETCAPS请求的服务器必须在等于“Max Resp Code”字段的值的时间内进行响应。
在步骤3022中,服务器101对其已经接收到的GETCAPS请求进行响应。为此,当客户端订阅与数据流对应的多播组时,服务器101发送提供表示可由服务器101传递的每个数据流的信息的IGMP请求(称为SENDCAPS请求)。
图10示意性地示出了SENDCAPS请求的示例,所述SENDCAPS请求使得服务器设备能够提供表示可由所述服务器设备在相应的多播组中传递的每个数据流的信息。
SENDCAPS请求包括“type”字段1010,例如以十六进制等于值“0x31”,该字段1010允许识别SENDCAPS请求。SENDCAPS请求还包括保留字段“reserved”1020和“checksum”字段1030,所述“checksum”字段1030允许检测SENDCAPS请求中的错误的纠错码。“checksum”字段之后是“TTL”(离开时间)字段1040,所述“TTL”字段1040允许向客户端指示包含在SENDCAPS请求中的信息的有效期。“TTL”字段之后是至少一个可选字段1050。
可以通过SENDCAPS请求传送几种类型的可选字段1050。在用于广播电视数据流的应用中,结合图11描述的第一可选字段1050允许提供关于交付电视数据流的运营商的信息。可选字段1050因此包括“option type”字段1051,例如等于值“1”,其指示可选字段1050给出关于运营商的信息。在“option type”字段1051之后,可选字段1050包括“length”字段1052,其指示接着的指示运营商的名称的“name”字段1053的字节长度。
结合图12描述的第二可选字段1050允许描述电视数据流。结合图12描述的可选字段1050包括“option type”字段1051,例如等于值“5”,其指示可选字段1050给出关于数据流的信息。在“option type”字段1051之后,可选字段1050包括“length”字段1052,其指示接着的“channel code”1054、“channel name”1055、“stream transmission rate”1056和“group address“1057字段的字节总长度。“channel code”字段1054给出分配给与电视数据流对应的电视频道的代码。“channel name”字段1055给出与由“channel code”字段指示的电视频道的名称对应的名称。“stream transmission rate”字段1056指示数据流的传输速率。“group address”字段1057指示允许订阅与数据流对应的多播组的多播地址。
结合图13描述的第三可选字段1050使得能够给出关于与数据流对应的数据子流的信息。结合图13描述的可选字段因此允许在多播组与对应于该多播组的多播子组之间建立链路。结合图13描述的可选字段1050包括“option type”字段1051,例如等于值“6”,其指示可选字段1051给出关于与数据流对应的数据子流的信息。在“option type”字段1051之后,可选字段1050包括指示接着的字段(“channel code”字段1055,“subgroup address”字段1058和“sub-stream transmission rate”字段1059)的字节总长度的“length”字段1052,结合图13描述的可选字段包含多个连续的“subgroup address”1058和“sub-streamtransmission rate”1059字段对。“subgroup address”1058和“sub-stream transmissionrate”1059字段具有固定大小。“subgroup address”字段1058给出与数据子流对应的多播子组的地址。“sub-stream transmission rate”字段指示数据子流的传输速率。“channelcode”字段1055的存在允许在结合图12描述的可选字段1050中描述的数据流与结合图13描述的可选字段1050中描述的数据子流之间建立链接。
在某些情况下,在通过网络接口发送GETCAPS请求之后不会接收到SENDCAPS请求。该网络接口可以例如连接到不是客户端103针对其具有订阅的运营商的第三方运营商的第三方网络。在下文中,客户端103针对其具有描述的运营商称为主运营商。在一个实施方式中,为了能够使用第三方网络,使用结合图11描述的第一可选字段1050的变型。该变型使得服务器101能够向客户端103提供关于主运营商的可从第三方网络访问并使得客户端103能够与服务器101进行通信的网络单元的信息。在结合图11描述的选项1050的该变型中,字段“option type”1051获取指示可选字段1050通过第三方网络提供允许与服务器101进行通信的信息的值。例如,“option type”字段取值“2”。“length”字段1052指示接着的字段“name”1053的字节长度。字段“name”1053指示允许指定主运营商的可通过第三方网络访问的网络单元的绝对地址的完全合格域名(FQDN)。然后,通过连接到第三方网络的网络接口发送的客户端103的每个请求被发送到在“name”字段1053中指定的主运营商的网络单元,该网络单元将它们重定向到服务器101。
在步骤3023中,当其接收SENDCAPS请求时,客户端103构建表示多播组的信息的集合。表示多播组的信息的集合形成对客户端103的局部网络的终端客户端可以订阅的多播组的描述。该集合可以例如以表的形式被放置作为输入的多播组(称为输入多播组)的多播地址,并且针对每个输入多播组提供包括与该输入多播组对应的多播子组的地址以及关于当接收到SENDCAPS请求时获得的多播组的其它信息的描述。
在步骤3024中,客户端103在已经构建的表中寻找目标多播组。步骤1024之后是已经描述的步骤303。
经常地,在根据多播传输模式传输数据流期间,客户端的某些接口变得不可用(例如由于通信链路中断),或者变得可用(例如在打开新的通信链路之后)。
图5示意性地示出了当将客户端设备103连接到服务器设备101的新的网络接口出现时由客户端设备实现的方法的示例。
在步骤501中,客户端设备103检测将客户端设备103连接到服务器设备101的新的网络接口的打开。
在步骤502中,客户端设备103通过向其添加检测到的新的网络接口来增强其可用网络接口的集合。在步骤502期间,客户端103使用新的网络接口将该新的网络接口与用于订阅多播子组的至少一个第二请求相关联。
在步骤504中,客户端103检查与通过新的网络接口发送的第二请求对应的每个数据子流是否被接收到。
如果每个数据子流都被接收到,则步骤504之后是步骤505。
通过新的网络接口发送的第二订阅请求与通过不同于该新的网络接口的至少一个其它网络接口已经接收到的数据子流对应。这是因为在步骤306期间,客户端103已经发送了对允许重构终端客户端所需的数据流的所有数据子流的第二订阅请求。然后,当实现步骤306时,这些第二请求已经通过可用的客户端103的网络接口被发送。为了避免在步骤505期间多次接收相同的数据子流,当通过包括新的网络接口的多个网络接口接收到相同数据子流(称为重复子流)时,客户端103发送针对每个多播子组的取消订阅请求,所述每个多播子组与通过除了新的网络接口以外的网络接口接收到的重复子流对应。为此,客户端103通过接收重复子流的每个其它接口发送针对与重复子流对应的多播子组的取消订阅请求。
在步骤505之后,客户端103实现分别与步骤308和309相同的步骤507和步骤508。
在一个实施方式中,如果在步骤504期间与通过新的网络接口发送的请求对应的数据子流未被接收到,则步骤504之后是步骤506。在步骤506期间,客户端发送针对与通过新的网络接口未接收到的数据子流对应的多播子组的取消订阅请求,以避免该子流稍后被接收到并因此被重复。
步骤506之后是步骤507和508。
图6示意性地示出了当将客户端103连接到服务器101并且在步骤306期间可用的网络接口消失时由客户端设备实现的方法的示例。
在步骤601中,客户端设备检测对将客户端103连接到服务器101的网络接口的抑制。
在步骤602中,客户端设备103通过移除被抑制的网络接口来缩减其可用网络接口的集合。在步骤602期间,客户端103将先前与被抑制的网络接口相关联的每个第二订阅请求与经缩减的网络接口的集合中的网络接口相关联。
在步骤603中,客户端103使用经缩减的网络接口的集合中与每个第二订阅请求相关联的网络接口向服务器设备101发送所述每个第二订阅请求,所述每个第二订阅请求先前与被抑制的网络接口相关联。
在步骤604中,客户端103检查与先前与被抑制的接口相关联的第二请求对应的每个子流是否被适当地接收到。
如果每个子流都被适当地接收到,则客户端103实现分别与步骤308和309相同的步骤605和606。
如果至少一个子流未被接收到,则客户端103实现与步骤310相同的步骤609。
图7示意性地示出了由服务器101实现的方法,所述方法允许将与多播流对应的多播子流发送到至少一个客户端设备。
在步骤701中,服务器101通过网络接口(被称为接收接口)接收每个第二订阅请求。然后,服务器记忆其接收每个请求的接收接口,并将所述接收接口与请求中指示的多播子组相关联。
在步骤702中,服务器101将数据流的数据分组分配在与针对其接收到第二订阅请求的多播组对应的数据子流中。在一个实施方式中,服务器101在分配这些分组时考虑每个数据子流的目标传输速率。该目标传输速率与SENDCAPS请求中指示的每个子流的传输速率对应。
在步骤703中,服务器101通过与对应于子流的多播子组相关联的接收接口发送每个数据子流。以这种方式,服务器101确保该数据子流通过客户端103的用于发送对应于该子流的第二订阅请求的网络接口被接收到。
在图1C和图1D的示例中,结合图7描述的方法在存在客户端103、104或105中的至少一个的对与目标多播组对应的多播子组的第一订阅时被实现。在图7中的示例中,该第一订阅由客户端103实现。如果在客户端103的该第一订阅之后,客户端104和105中的至少一个发起对与目标多播组对应的相同多播子组的订阅过程,则服务器在这些订阅中不具有活跃角色。这是因为这些订阅完全由路由器102和111管理,路由器102和111负责重复用于客户端104和/或105的数据子流的数据分组。