发明内容
本发明实施例提供了一种过滤组播数据的方法、网络设备及路由器,有利于降低首跳路由器处理组播数据的压力,减少对组播源网络带宽和设备资源的占用,有利于提高组播源网络的处理效率。
第一方面,提供了一种过滤组播数据的方法,所述方法包括:
当网络设备需要向首跳路由器发送组播数据时,所述网络设备获取组播发送控制信息,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中;
所述网络设备根据所述组播发送控制信息判断是否允许向所述首跳路由器发送所述组播数据,若判断允许向所述首跳路由器发送所述组播数据,则将所述组播数据发送至所述首跳路由器,若判断不允许向所述首跳路由器发送所述组播数据,则拒绝发送所述组播数据至所述首跳路由器。
在所述第一方面的第一种可能的实现方式中,所述网络设备为所述组播源服务器,或者,所述网络设备为所述二层网络中的交换设备。
根据所述第一方面或所述第一方面的第一种可能的实现方式,还提供了所述第一方面的第二种可能的实现方式,在所述第一方面的第二种可能的实现方式中,所述方法还包括更新所述组播发送控制信息的步骤,所述步骤包括:
所述网络设备向所述首跳路由器发送查询请求报文,所述查询请求报文用于请求获得所述首跳路由器的组播数据需求信息,根据所述首跳路由器发送来的查询响应报文中的组播数据需求信息更新所述组播发送控制信息;
或者,
所述网络设备接收所述首跳路由器发送来的包含所述组播数据需求信息的报告报文,并根据所述报告报文中的所述组播数据需求信息更新所述组播发送控制信息。
根据所述第一方面的第二种可能的实现方式,还提供了第一方面的第三种可能的实现方式中,在所述第一方面的第三种可能的实现方式中,所述更新所述组播发送控制信息的步骤还包括:
当接收到所述组播数据需求信息时,重启对应所述组播数据需求信息的预先设置的定时器,当所述定时器超时时,删除所述组播数据需求信息。
根据所述第一方面的第二种可能的实现方式或所述第一方面的第三种可能的实现方式,还提供了所述第一方面的第四种可能的实现方式,在所述第一方面的第四种可能的实现方式中,所述组播数据需求信息包括:
组播源信息和组播组信息,或者,汇聚点对应的组播组信息,或者,汇聚点对应的组播组地址,其中,所述汇聚点对应的组播组地址若为0,则表示所述汇聚点对应的组播组为所有组播组。
根据所述第一方面的第二种可能的实现方式或所述第一方面的第三种可能的实现方式或所述第一方面的第四种可能的实现方式,还提供了所述第一方面的第五种可能的实现方式,在所述第一方面的第五种可能的实现方式中,所述首跳路由器触发发送所述报告报文的条件包括:
所述首跳路由器建立了新的组播数据需求信息,或者,删除了已经建立的组播数据需求信息。
根据所述第一方面的第二种可能的实现方式或所述第一方面的第三种可能的实现方式或所述第一方面的第四种可能的实现方式或所述第一方面的第五种可能的实现方式,还提供了所述第一方面的第六种可能的实现方式,在所述第一方面的第六种可能的实现方式中,所述查询请求报文包括:互联网组管理协议(Internet Group ManagementProtocol,IGMP)查询报文或组播接收者发现协议(Multicast Listener Discovery,MLD)查询报文;所述查询响应报文包括:IGMP查询响应报文或MLD查询响应报文或协议无关组播(Protocol Independent Multicast,PIM)加入报文;所述报告报文包括:IGMP报告报文或MLD报告报文或PIM加入报文或PIM剪枝报文。
根据所述第一方面的第六种可能的实现方式,还提供了所述第一方面第七种可能的实现方式中,在所述第一方面的第七种可能的实现方式中,所述查询请求报文包括:通用查询报文或组特定查询报文或源组特定查询报文;当组播网络中为多个组播组设置对应的汇聚点时,所述查询响应报文为第三版IGMP查询响应报文或第二版MLD查询响应报文。
第二方面,提供了一种传送组播数据需求信息的方法,所述方法包括:
首跳路由器生成包含组播数据需求信息的报告报文;
向网络设备发送所述报告报文,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中,所述组播数据需求信息用于所述网络设备确定组播发送控制信息,以便于所述网络设备根据所述组播发送控制信息判断是否允许向所述首跳路由器发送组播数据。
在所述第二方面的第一种可能的实现方式中,所述首路路由器生成包含组播数据需求信息的报告报文之前还包括:
接收所述网络设备发送的查询请求报文,所述查询请求报文用于请求获得所述首跳路由器的组播数据需求信息,所述报告报文为对应所述查询请求报文的查询响应报文。
根据所述第二方面的第一种可能的实现方式,还提供了所述第二方面的第二种可能的实现方式,在所述第二方面的第二种可能的实现方式中,所述查询请求报文包括:互联网组管理协议IGMP查询报文或组播接收者发现协议MLD查询报文;所述报告报文包括:IGMP报告报文或MLD报告报文或PIM加入报文或PIM剪枝报文。
根据所述第二方面的第二种可能的实现方式,还提供了所述第二方面的第三种可能的实现方式,在所述第二方面的第三种可能的实现方式中,所述查询请求报文包括:通用查询报文或组特定查询报文或源组特定查询报文;当组播网络中为多个组播组设置对应的汇聚点时,所述查询响应报文为第三版IGMP查询响应报文或第二版MLD查询响应报文。
第三方面,提供了一种过滤组播数据的网络设备,所述网络设备包括:
获取单元,用于当需要向首跳路由器发送组播数据时,获取组播发送控制信息,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中;
判断单元,用于根据所述获取单元获取的所述组播发送控制信息判断是否允许发送所述组播数据;
发送单元,用于若所述判断单元判断允许发送所述组播数据,则将所述组播数据发送至所述首跳路由器,若所述判断单元判断不允许发送所述组播数据,拒绝发送所述组播数据。
包括:
组播发送控制信息获取模块,用于当组播源所在的二层网络中的网络设备需要向首跳路由器发送组播数据时,获取组播发送控制信息;
组播数据发送控制模块,用于根据所述组播发送控制信息获取模块获取的组播发送控制信息确定是否允许发送所述组播数据,若允许,则将所述组播数据发送至所述首跳路由器,否则,拒绝发送所述组播数据。
在所述第三方面的第一种可能的实现方式中,所述网络设备为组播源服务器,或者,所述网络设备为所述二层网络中的交换设备。
根据所述第三方面或第三方面的第一种可能的实现方式,还提供了所述第三方面的第二种可能的实现方式,在所述第三方面的第二种可能的实现方式中,所述网络设备还包括更新单元和接收单元,
所述发送单元,还用于向所述首跳路由器发送查询请求报文,所述查询请求报文用于请求获得所述首跳路由器的组播数据需求信息;
所述接收单元,用于接收所述首跳路由器发送来的查询响应报文;
所述更新单元,用于根据所述接收单元接收的所述查询响应报文中的组播数据需求信息更新所述组播发送控制信息;或者,
所述接收单元,用于接收所述首跳路由器发送来的包含组播数据需求信息的报告报文;
所述更新单元,用于根据所述报告报文中的组播数据需求信息更新所述组播发送控制信息。
根据所述第三方面或所述第三方面的上述任意一种可能的实现方式,还提供了所述第三方面的第三种可能的实现方式中,在所述第三方面的第三种可能的实现方式中,所述网络设备还包括:
定时器控制单元,用于控制所述组播发送控制信息的有效时长,当接收到所述组播数据需求信息时,重启对应所述组播发送控制信息的预先设置的定时器,当定时器超时时,则删除所述组播发送控制信息。
第四方面,提供了一种路由器,所述路由器包括:
生成单元,用于生成包含组播数据需求信息的报告报文;
发送单元,用于向网络设备发送所述报告报文,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中,所述组播数据需求信息用于所述网络设备确定组播发送控制信息,以便于所述网络设备根据所述组播发送控制信息判断是否允许向所述首跳路由器发送组播数据。
在所述第四方面的第一种可能的实现方式中,所述路由器还包括:
接收单元,用于接收所述网络设备发送的查询请求报文,所述查询请求报文用于请求获得所述首跳路由器的组播数据需求信息,所述报告报文为对应所述查询请求报文的响应报文。
通过本发明实施例提供的技术方案,通过获取组播发送控制信息,确定是否允许向首跳路由器发送组播数据,只发送首跳路由器需要的组播数据,有利于降低首跳路由器处理洪泛的组播数据的压力,并且有利于减少组播源端网络对带宽的占用,避免组播源与首跳之间的二层网络中交换设备的资源浪费,从而提高了组播源端网络的处理效率。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实施例提供的一种过滤组播数据的方法,如图1所示,具体可以包括以下内容。
101,当网络设备需要向首跳路由器发送组播数据时,所述网络设备获取组播发送控制信息,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中。
其中,所述组播发送控制信息用于记录组播数据需求信息,根据该组播数据需求信息可以确定是否向所述首路路由器发送所述组播数据。所述组播数据信息是所述网络设备从所述组播源服务器接收的。
可选地,所述组播数据需求信息可以包括:组播源信息和组播组信息,或者,汇聚点对应的组播组信息,或者,汇聚点对应的组播组地址,其中,所述汇聚点对应的组播组地址字段若为0,则表示所述汇聚点对应的组播组为所有组播组。
102,所述网络设备根据所述组播控制信息判断是否允许向所述首跳路由器发送所述组播数据,若判断允许向所述首跳路由器发送所述组播数据,则执行步骤103,若判断不允许向所述首跳路由器发送所述组播数据,则执行步骤104。
103,将所述组播数据发送至所述首跳路由器。
104,拒绝发送所述组播数据至所述首跳路由器。
本发明实施例中,所述组播发送控制信息可以是预先设置的,也可以由所述网络设备动态获取。进一步地,由于组播网络中用户对所述组播数据的需求实时会发生变化,因而,为了保证所述组播发送控制信息的准确性,可以对所述组播发送控制信息进行更新操作。可选地,更新所述组播发送控制信息的包括但不限于以下任意一种方式:
方式一:所述网络设备向所述首跳路由器发送查询请求报文,所述查询请求报文用于请求获得所述首跳路由器的组播数据需求信息,接收所述首跳路由器发送的对应所述查询请求报文的查询响应报文,所述网络设备根据所述查询响应报文中的组播数据需求信息更新所述组播发送控制信息。
可选地,所述查询请求报文可以为:IGMP查询报文或MLD查询报文,所述查询响应报文可以包括:IGMP查询响应报文,如互联网组管理协议版本3(Internet GroupManagement Protocol Version3,IGMPv3)报文或MLD查询响应报文,如,组播接收者发现协议版本2(Multicast Listener Discovery Version2,MLDv2)报文或PIM加入报文。
可选地,所述查询请求报文可以为:通用查询报文、组特定查询报文或源组特定查询报文。所述通用查询报文用于查询所述首跳路由的所有组播数据需求信息,所述组特定查询报文用于查询所述首跳路由器的特定组播组的组播数据需求信息,所述源组特定查询报文用于查询所述首跳路由器的特定源组播组的组播数据需求信息。
方式二:所述网络设备接收所述首跳路由器发送来的包含组播数据需求信息的报告报文,并根据所述报告报文中的组播数据需求信息更新所述组播发送控制信息。
可选地,所述首跳路由器触发发送所述报告报文的条件可以但不限于包括:
所述首跳路由器建立了新的组播数据需求信息,则需要通过报告报文将新的组播数据需求信息通知给所述网络设备;或者,所述首跳路由器删除了已经建立的组播数据需求信息,则需要通过报告报文通知所述网络设备删除对应的组播数据需求信息;相应的,所述报告报文可以为:IGMP报告报文或MLD报告报文或PIM加入报文或PIM剪枝报文。
所述组播发送控制信息可能在经过一段时间后不再有效,为此可以针对组播数据需求信息设置相应的定时器。可选地,当接收到的所述组播数据需求信息时,重启对应所述组播数据需求信息的预先设置的定时器,当所述定时器超时时,删除所述组播数据需求信息。避免当所述首跳路由器已经不需要所述组播数据时,所述网络设备还通过所述组播发送控制信息向所述首跳路由器发送所述组播数据。
可选地,本发明实施例中,为在组播源网络中实现对组播数据的有效转发控制,可以在所述网络设备上启用IGMP或MLD查询器,但不使用查询选举功能,以保证所述网络设备可以通过相应的查询器进行组播数据需求信息的查询。
可选地,所述组播源所在的二层网络中的所述网络设备可以为组播源服务器,或者,所述网络设备为所述二层网络中与所述组播源相连的交换机。
可选地,在所述网络设备所述交换机上启用IGMP或MLD查询器,与所述首跳路由器之间交互IGMP或MLD报文。所述首跳路由器通过IGMP或MLD报文向所述网络设备报告希望接收的组播源的信息,所述网络设备根据所述组播数据需求信息设定访问控制列表(AccessControl List,ACL),以通过所述ACL过滤不需要传送到所述首跳路由器的组播源的组播数据,而仅向首跳路由器发送其所需要的组播数据。
可选地,所述网络设备的IGMP或MLD查询器可以不启用选举查询举功能,以保证所述查询请求报文可以可靠地生成。由于子网中路由器可能会启用查询器,为了减少查询报文的数量,可以将所述网络设备的地址配置为较小的IP地址,小于同一子网内路由器的接口IP地址,以抑制首跳路由器生成IGMP或MLD查询报文。
通过本发明实施例提供的技术方案,通过获取组播发送控制信息,确定是否允许向首跳路由器发送组播数据,只发送首跳路由器需要的组播数据,有利于降低首跳路由器处理洪泛的组播数据的压力,并且有利于减少组播源端网络对带宽的占用,避免组播源与首跳之间的二层网络中交换设备的资源浪费,从而提高了组播源端网络的处理效率。
参见图2,本发明实施例还提供了一种传送组播数据需求信息的方法,所述方法包括:
201,首跳路由器生成包含组播数据需求信息的报告报文;
202,向网络设备发送所述报告报文,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中,所述组播数据需求信息用于所述网络设备确定组播发送控制信息,以便于所述网络设备根据所述组播发送控制信息判断是否允许向所述首跳路由器发送组播数据。
可选地,所述首路路由器生成包含组播数据需求信息的报告报文之前还包括:
接收所述网络设备发送的查询请求报文,所述查询请求报文用于请求获得所述首跳路由器的组播数据需求信息,所述报告报文为对应所述查询请求报文的查询响应报文。
可选地,所述查询请求报文为IGMP查询报文或MLD查询报文,所述报告报文包括:IGMP报告报文或MLD报告报文或PIM加入报文或PIM剪枝报文
可选地,所述查询请求报文可以包括:通用查询报文或组特定查询报文或源组特定查询报文;当组播网络中为多个组播组设置对应的汇聚点时,所述报告报文为IGMPv3查询响应报文或MLDv2查询响应报文,通过扩展所述IGMPv3查询响应报文或所述MLDv2查询响应报文携带所述多个组播组对应的组播组地址。
可选地,为了减少所述查询响应报文的数量,在所述首跳路由器可以进行特定的限制,以限制所述查询响应报文的发送,例如,可以设定查询周期,使在所述查询周期内针对多个同一查询类型的查询请求报文只响应一次。所述查询类型可以为通用查询类型或组特定查询类型或源组特定查询类型等。
所述首跳路由器所在的组播网络中运行的协议的不同,所述首跳路由器报告自己对组播源的需求的方式也不同,下面将分别进行说明。
1、所述组播网络运行PIM-SSM协议
在所述组播网络中主要是通过PIM-SSM来构建组播数据接收者到组播源之间的三层网络上的源树。根据PIM-SSM协议的规定,所述首跳根据接收到的下游路由器的加入请求,建立组播路由表项(Multicast Forwarding Table),所述组播路由表由一组(S,G)表项组成,其中(S,G)表示由组播源S向组播组G发送组播数据的路由信息,其中,S表示组播源,G表示组播组。对于所述首跳路由器来说,有效的(S,G)状态反映了组播网络对组播源的需求。
当所述首跳路由器新建立一个组播路由表项时,将对应所述组播路由表项的(S,G)封装在所述报告报文中,并向所述网络设备发送所述报告报文,所述网络设备更新所述组播发送控制信息。
当所述首跳路由器删除一个组播路由表项时,将对应所述组播路由表项的(S,G)信息封装在所述报告报文。
当所述首跳路由器接收到来自所述网络设备的通用查询报文时,将所有的有效(S,G)信息封装在所述查询响应报文中。
当所述首跳路由器接收到来自所述网络设备的组特定查询报文时,将被查询的G组内的所有(S,G)信息封装在所述查询响应报文中。
当所述首跳路由器接收到来自所述网络设备的源组特定查询报文时,将被查询的(S,G)信息封装在所述查询响应报文中。
2、所述组播网络运行PIM-SM和BIDIR协议
对于所述组播网络中运行PIM-SM协议的情况,在所述组播网络中主要是通过PIM-SM用来构建接收者到源之间的三层网络上的共享树,BIDIR-PIM用来构建同种网络中的双向共享树。根据PIM-SM和BIDIR-PIM协议的规定,每个组播组都需要设定至少一个根汇聚点(RP,Rendezvous Point),无论所述RP的下游是否有对组播源的接收请求,所述首跳路由器都需要将组播数据向RP发送。所述RP的设定方式有多种,具体可以包括:为某个特定组播组设定RP,为所有组播组设定RP;为某一组播组地址范围设定RP。其中,RP的设定可以通过静态配置的方式在组播组内配置统一的RP,或者,也可以通过配置候选RP,采用自举路由器(BootStrap Router,BSR)动态完成组与RP之间的映射。
由于所述首跳路由器在有接收者请求之前无法获得组播源精确位置信息,因而,所述首跳路由器需要等待所述网络设备发送来的所述查询请求报文,以便从接收到所述查询报文的接口上报对组播数据需求信息。
当为某个特定的组播组设定RP时,所述首跳路由器上报所述组播数据需求信息的方式可以包括:
当所述首跳路由器新建(*,G)信息时(*表示任意源,G表示组播组)时,则将所述(*,G)封装在所述查询响应报文中,并通过接收到所述查询请求报文的接口向所述网络设备发送所述查询响应报文。
当所述首跳路由器删除某个(*,G)信息时,将所述(*,G)封装在所述查询响应报文中。
当所述首跳路由器接收到来自所述网络设备的通用查询报文时,将所有包含有效RP的(*,G)信息封装在所述查询响应报文中。
当所述首跳路由器接收到来自所述网络设备的组特定查询报文时,如果存在有效RP,则在所述查询响应报文中封装(*,G)信息。
当为所有组播组设定RP时,所述首跳路由器上报所述组播数据需求信息的方式可以包括:
当所述首跳路由器为所有组播组新建RP时,则在所述查询响应报文中封装所有组播组信息的(*,*)信息,并通过接收到所述查询请求报文的接口发送所述查询响应报文。如果在此之前未收到所述查询请求报文,则需等待接收到所述查询请求报文后,再通过接收到所述查询请求报文的接口发送所述查询响应报文,具体地,可以通过将所述查询响应报文的组地址字段设为0,以表示为所有组播组(*,*)信息的加入。
当首跳路由器删除为所有组播组设定的RP信息,则在所述查询响应报文中封装删除所有组播组信息的(*,*)信息。
当所述首跳路由器接收到来自所述网络设备的通用查询报文,则在所述查询响应报文中封装包含所有组播组信息的(*,*)信息。
当所述首跳路由器接收到来自所述网络设备的组特定查询报文,则将所述组特定查询报文对应的组播组的(*,G)信息封装在所述查询请求报文中;
当首跳路由器接收到来所述网络设备的源组特定查询报文,则将所述源组特定查询报文对应的组播组(S,G)信息封装在所述查询响应报文中。
当为一个组播组地址范围设定RP时,所述首跳路由器上报所述组播数据需求信息的方式可以包括:
所述首跳路由器需要向所述网络设备上报所述地址范围,所述查询响应报文可以为对IGMPv3或MLDv2报告报文的扩展报文。具体可以采用以下两种扩展方式:
扩展方式一:
IGMPv3报告报文和MLDv2报告报文的格式相同,以IGMPv3,参见图3,图3为扩展后的IGMPv3报告报文的报文格式,其中:
记录类型字段,用于标识记录的类型。
辅助数据长度字段,用于标识辅助数据总长度。
源数量字段,用于标识源地址的数量。
组播地址字段,用于标识组播组地址。
源地址1字段,用于标识源地址1。
源地址2字段,用于标识源地址2。
源地址n字段,用于标识源地址n。
辅助数据类型字段,用于标识辅助数据的类型。
长度字段,用于标识辅助数据内容长度。
掩码长度字段,用于标识所述地址范围的掩码长度。
扩展方式二:
以IGMPv3为例,参见图4所示,定义新类型的报告报文,在所述新类型的IGMPv3报告报文中,
类型字段,标识该报告报文用于传递特定地址范围,所述类型字段取值可以为0x25;
组记录数量字段,用于标识组记录的数量。
保留字段,用于保留以后扩展使用。
校验和字段,用于存储该报文的校验和。
组记录字段,用于承载所述特定的地址范围信息。相应的,所述组记录字段的格式参见图5所示,其中,
记录类型字段,用于标识组记录的类型。
辅助数据长度字段,用于标识辅助数据长度。
源数量字段,用于标识源地址的数量。
编码组地址地段,用于标识所述地址范围信息包含的组地址。
源地址或编码源地址字段,用于标识源地址。
其中,所述组地址范围信息包含的组地址可以采用编码组地址表示,编码组地址采用标准的格式定义,可以参见RFC4601,在编码组地址的掩码长度字段添入表示组地址范围的掩码长度信息。根据实际应用的需求,扩展组记录中的源地址既可采用普通的源地址,如IPv4或IPv6地址,也可采用标准的编码源地址格式。
基于上述针对IGMPv3报告报文的扩展,所述首跳路由器上报所述组播数据需求信息的方式可以包括:
当所述首跳路由器为一个组地址范围设定RP时,则将所述组地址范围信息(*,G/M)封装到所述扩展的IGMPv3报告报文中,其中M为掩码Mask。
当所述首跳路由器删除为某个组范围的设定的RP时,则将该组地址范围信息(*,G/M)封装到扩展的IGMPv3或MLDv2报文中。
当所述首跳路由器接收到来自通用查询报文,则将组地址范围信息(*,G/M)封装到扩展的IGMPv3或MLDv2报文中。
在本发明实施例中,若所述组播网络使用上述组播路由协议之外的其他方式建立组播转发路由表项,例如采用静态配置或其他方式建立组播转发表项或采用LDP建立点到多点或多点到多点MPLS转发树,或者,使用基于RSVP流量工程(Traffic Engineering,TE)建立的点到多点MPLS转发树,则所述首跳路由器在收到所述网络设备发送的所述查询请求报文时,也可以根据维护的(S,G)或(*,G)或(*,G/M)或(*,*)等信息,采用IGMP或MLD协议报文,或者PIM协议报文,报告自己对对组播数据需求信息。
通过本发明实施例提供的技术方案,通过获取组播发送控制信息,确定是否允许向首跳路由器发送组播数据,只发送首跳路由器需要的组播数据,有利于降低首跳路由器处理洪泛的组播数据的压力,并且有利于减少组播源端网络对带宽的占用,避免组播源与首跳之间的二层网络中交换设备的资源浪费,从而提高了组播源端网络的处理效率。
本发明实施例还提供了一种过滤组播数据的网络设备600,如图6所示,所述网络设备600具体包括:
获取单元601,用于当需要向首跳路由器发送组播数据时,获取组播发送控制信息,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中;
判断单元602,用于根据所述获取单元601获取的所述组播发送控制信息判断是否允许发送所述组播数据;
发送单元603,用于若所述判断单元602判断允许发送所述组播数据,则将所述组播数据发送至所述首跳路由器,若所述判断单元602判断不允许发送所述组播数据,拒绝发送所述组播数据。
可选地,所述网络设备600可以为组播源服务器,或者,所述网络设备600为与组播源服务器直接连接的交换设备。
可选地,所述网络设备600还包括更新单元和接收单元,
所述发送单元603,还用于向所述首跳路由器发送查询请求报文,所述查询请求报文用于请求获得所述首跳路由器的组播数据需求信息;
所述接收单元,用于接收所述首跳路由器发送来的查询响应报文;
所述更新单元,用于根据所述接收单元接收的所述查询响应报文中的组播数据需求信息更新所述组播发送控制信息;或者,
所述接收单元,用于接收所述首跳路由器发送来的包含组播数据需求信息的报告报文;
所述更新单元,用于根据所述报告报文中的组播数据需求信息更新所述组播发送控制信息。
可选地,所述网络设备600还包括:
定时器控制单元,用于控制所述组播发送控制信息的有效时长,当接收到所述组播数据需求信息时,重启对应所述组播发送控制信息的预先设置的定时器,当定时器超时时,则删除所述组播发送控制信息。
可选地,所述查询请求报文可以但不限于包括:IGMP查询报文或MLD查询报文,所述查询响应报文可以包括:IGMP查询响应报文,IGMPv3报文或MLD查询响应报文,如,MLDv2报文或PIM加入报文。
可选地,所述网络设备600可以为图1所述的方法中的网络设备。
可选地,所述组播数据需求信息可以但不限于包括:组播源信息和组播组信息,或者,汇聚点对应的组播组信息,或者,汇聚点对应的组播组地址,其中,所述汇聚点对应的组播组地址字段若为0,则表示所述汇聚点对应的组播组为所有组播组。
本发明实施例提供的网络设备600,通过获取组播发送控制信息,确定是否允许向首跳路由器发送组播数据,只发送首跳路由器需要的组播数据,有利于降低首跳路由器处理洪泛的组播数据的压力,并且有利于减少组播源端网络对带宽的占用,避免组播源与首跳之间的二层网络中交换设备的资源浪费,从而提高了组播源端网络的处理效率。
参见图7,本发明实施例提供还提供了一种的网络设备700,所述网络设备700包括存储器701和发送器702,以及分别与存储器701和发送器702连接的处理器703,存储器701用于存储组播发送控制信息,且存储器701用于存储一组程序代码,处理器703用于调用存储器701存储的程序执行如下操作:
当网络设备700需要向首跳路由器发送组播数据时,获取所述存储器701存储的组播发送控制信息;
根据所述组播发送控制信息判断是否允许向所述首跳路由器发送所述组播数据,若判断允许向所述首跳路由器发送所述组播数据,则触发所述发送器702将所述组播数据发送至所述首跳路由器,若判断不允许向所述首跳路由器发送所述组播数据,则不触发所述发送器702发送所述组播数据至所述首跳路由器。所述网络设备700位于组播源服务器与所述首跳路由器之间的二层网络中。
可选地,所述查询请求报文可以但不限于包括:IGMP查询报文或MLD查询报文,所述查询响应报文可以包括:IGMP查询响应报文,IGMPv3报文或MLD查询响应报文,如,MLDv2报文或PIM加入报文。
可选地,所述网络设备600可以为图1所述的方法中的网络设备。
可选地,所述组播数据需求信息可以为组播源信息和组播组信息,或者,汇聚点对应的组播组信息,或者,汇聚点对应的组播组地址,其中,所述汇聚点对应的组播组地址字段若为0,则表示所述汇聚点对应的组播组为所有组播组。
参见图8,本发明实施例还提供了一种路由器800,所述路由器800作为组播网络中的首跳路由器,所述首跳路由器800包括:
生成单元801,用于生成包含组播数据需求信息的报告报文;
发送单元802,用于向网络设备发送所述报告报文,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中,所述组播数据需求信息用于所述网络设备确定组播发送控制信息,以便于所述网络设备根据所述组播发送控制信息判断是否允许向所述首跳路由器发送组播数据。
可选地,所述路由器800还包括接受单元,
所述接收单元,用于在所述生成单元801生成包含组播数据需求信息的报告报文之前,接收所述网络设备发送的查询请求报文,所述查询请求报文用于请求获得所述首跳路由器的组播数据需求信息,所述报告报文为对应所述查询请求报文的查询响应报文。
可选地,所述路由器800可以为图3所述的方法中的首跳路由器。
可选地,所述查询请求报文包括:IGMP查询报文或MLD查询报文;所述报告报文包括:IGMP报告报文或MLD报告报文或PIM加入报文或PIM剪枝报文。
可选地,所述查询请求报文可以包括:通用查询报文或组特定查询报文或源组特定查询报文;当组播网络中为多个组播组设置对应的汇聚点时,所述报告报文为IGMPv3查询响应报文或MLDv2查询响应报文,通过扩展所述IGMPv3查询响应报文或所述MLDv2查询响应报文携带所述多个组播组对应的组播组地址。
可选地,为了减少所述查询响应报文的数量,在所述路由器800可以进行特定的限制,以限制所述查询响应报文的发送,例如,可以设定查询周期,使在所述查询周期内针对多个同一查询类型的查询请求报文只响应一次。所述查询类型可以为通用查询类型或组特定查询类型或源组特定查询类型等。
所述路由器800所在的组播网络中运行的协议的不同,所述路由器800报告自己对组播源的需求的方式也不同,下面将分别进行说明。
1、所述组播网络运行PIM-SSM协议
在所述组播网络中主要是通过PIM-SSM来构建组播数据接收者到组播源之间的三层网络上的源树。根据PIM-SSM协议的规定,所述首跳根据接收到的下游路由器的加入请求,建立组播路由表项,所述组播路由表由一组(S,G)表项组成,其中(S,G)表示由组播源S向组播组G发送组播数据的路由信息,其中,S表示组播源,G表示组播组。对于所述路由器800来说,有效的(S,G)状态反映了组播网络对组播源的需求。
当所述路由器800新建立一个组播路由表项时,将对应所述组播路由表项的(S,G)封装在所述报告报文中,并向所述网络设备发送所述报告报文,所述网络设备更新所述组播发送控制信息。
当所述路由器800删除一个组播路由表项时,将对应所述组播路由表项的(S,G)信息封装在所述报告报文。
当所述路由器800接收到来自所述网络设备的通用查询报文时,将所有的有效(S,G)信息封装在所述查询响应报文中。
当所述路由器800接收到来自所述网络设备的组特定查询报文时,将被查询的G组内的所有(S,G)信息封装在所述查询响应报文中。
当所述路由器800接收到来自所述网络设备的源组特定查询报文时,将被查询的(S,G)信息封装在所述查询响应报文中。
2、所述组播网络运行PIM-SM和BIDIR协议
对于所述组播网络中运行PIM-SM协议的情况,在所述组播网络中主要是通过PIM-SM用来构建接收者到源之间的三层网络上的共享树,BIDIR-PIM用来构建同种网络中的双向共享树。根据PIM-SM和BIDIR-PIM协议的规定,每个组播组都需要设定至少一个RP,无论所述RP的下游是否有对组播源的接收请求,所述路由器800都需要将组播数据向RP发送。所述RP的设定方式有多种,具体可以包括:为某个特定组播组设定RP,为所有组播组设定RP;为某一组播组地址范围设定RP。其中,RP的设定可以通过静态配置的方式在组播组内配置统一的RP,或者,也可以通过配置候选RP,采用BSR动态完成组与RP之间的映射。
由于所述路由器800在有接收者请求之前无法获得组播源精确位置信息,因而,所述路由器800需要等待所述网络设备发送来的所述查询请求报文,以便从接收到所述查询报文的接口上报对组播数据需求信息。
当为某个特定的组播组设定RP时,所述路由器800上报所述组播数据需求信息的方式可以包括:
当所述路由器800新建(*,G)信息时(*表示任意源,G表示组播组)时,则将所述(*,G)封装在所述查询响应报文中,并通过接收到所述查询请求报文的接口向所述网络设备发送所述查询响应报文。
当所述路由器800删除某个(*,G)信息时,将所述(*,G)封装在所述查询响应报文中。
当所述路由器800接收到来自所述网络设备的通用查询报文时,将所有包含有效RP的(*,G)信息封装在所述查询响应报文中。
当所述路由器800接收到来自所述网络设备的组特定查询报文时,如果存在有效RP,则在所述查询响应报文中封装(*,G)信息。
当为所有组播组设定RP时,所述路由器800上报所述组播数据需求信息的方式可以包括:
当所述路由器800为所有组播组新建RP时,则在所述查询响应报文中封装所有组播组信息的(*,*)信息,并通过接收到所述查询请求报文的接口发送所述查询响应报文。如果在此之前未收到所述查询请求报文,则需等待接收到所述查询请求报文后,再通过接收到所述查询请求报文的接口发送所述查询响应报文,具体地,可以通过将所述查询响应报文的组地址字段设为0,以表示为所有组播组(*,*)信息的加入。
当路由器800删除为所有组播组设定的RP信息,则在所述查询响应报文中封装删除所有组播组信息的(*,*)信息。
当所述路由器800接收到来自所述网络设备的通用查询报文,则在所述查询响应报文中封装包含所有组播组信息的(*,*)信息。
当所述路由器800接收到来自所述网络设备的组特定查询报文,则将所述组特定查询报文对应的组播组的(*,G)信息封装在所述查询请求报文中;
当路由器800接收到来所述网络设备的源组特定查询报文,则将所述源组特定查询报文对应的组播组(S,G)信息封装在所述查询响应报文中。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将网络设备的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。
参见图9,本发明实施例还提供了一种路由器900,所述路由器900作为组播网络中的首跳路由器,所述首跳路由器900包括存储器901和发送器902,以及分别与存储器901和发送器902连接的处理器903,存储器901用于存储一组程序代码,处理器903用于调用存储器901存储的程序执行如下操作:
生成包含组播数据需求信息的报告报文;
触发发送器902向网络设备发送所述报告报文,所述网络设备位于组播源服务器与所述首跳路由器之间的二层网络中,所述组播数据需求信息用于所述网络设备确定组播发送控制信息,以便于所述网络设备根据所述组播发送控制信息判断是否允许向所述首跳路由器发送组播数据。
可选地,所述路由器900还包括接收器,
所述路由器900调用存储器901存储的程序触发所述接收器在所述处理器900生成包含组播数据需求信息的报告报文之前,接收所述网络设备发送的查询请求报文,所述查询请求报文用于请求获得所述路由器900的组播数据需求信息,所述报告报文为对应所述查询请求报文的查询响应报文。
可选地,所述路由器900可以为图3所述的方法中的首跳路由器。
可选地,所述查询请求报文包括:IGMP查询报文或MLD查询报文;所述报告报文包括:IGMP报告报文或MLD报告报文或PIM加入报文或PIM剪枝报文。
可选地,所述查询请求报文可以包括:通用查询报文或组特定查询报文或源组特定查询报文;当组播网络中为多个组播组设置对应的汇聚点时,所述报告报文为IGMPv3查询响应报文或MLDv2查询响应报文,通过扩展所述IGMPv3查询响应报文或所述MLDv2查询响应报文携带所述多个组播组对应的组播组地址。
可选地,所述处理器703和处理器903可以为中央处理器(Central ProcessingUnit,CPU),所述存储器701和存储器901可以为随机存取存储器(Random Access Memory,RAM)类型的内部存储器,所述发送器702和发送器902可以包含普通物理接口,所述物理接口可以为以太(Ethernet)接口或异步传输模式(Asynchronous Transfer Mode,ATM)接口。所述处理器703、发送器702和存储器701可以集成为一个或多个独立的电路或硬件,如:专用集成电路(Application Specific Integrated Circuit,ASIC),所述处理器903、发送器902和存储器901可以集成为一个或多个独立的电路或硬件,如ASIC。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(Read-Only Memory,简称为ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以示例性说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明及本发明带来的有益效果进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求的范围。