背景技术
IP (Internet Protocol,互联网协议)组播(IP Multicast)是介于单播(Unicast)和广播(Broadcast)之间的一种分组传送形式,又称为IP多播,是指IP数据由单一的发送者(组播源)产生,经过网络分发给一组接收者。通常,把工作在网络层的IP组播称为三层组播,相应的组播协议称为三层组播协议,包括IGMP(Internet Group Management Protocol,互联网组管理协议)/MLD(Multicast Listener Discovery Protocol,组播侦听者发现协议)、PIM(Protocol Independent Multicast,协议无关组播)/IPv6(Internet Protocol Version 6,互联网协议第6版)PIM等;把工作在数据链路层的IP组播称为二层组播,相应的组播协议称为二层组播协议,包括IGMP Snooping(窥探)/MLD Snooping等。
三层组播协议包括组播组管理协议和组播路由协议两种类型,它们在网络中的应用位置如图1所示,其中:
组播组管理协议
在主机和与其直接相连的三层组播设备之间通常采用组播组管理协议IGMP或MLD,协议规定了主机与三层组播设备之间建立和维护组播组成员关系的机制。
组播路由协议
组播路由协议运行在三层组播设备之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由建立了从一个数据源端到多个接收端的无环(loop-free)数据传输路径,即组播分发树。最常应用的域内组播路由协议是PIM。
二层组播协议包括IGMP Snooping/MLD Snooping、PIM Snooping/IPv6 PIM Snooping、组播VLAN(Virtual Local Area Network,虚拟局域网)/IPv6组播VLAN等,它们在网络中的应用位置如图2所示。
IGMP是TCP(Transmission Control Protocol,传输控制协议)/IP协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由设备之间建立、维护组播组成员关系。
当共享网段上存在多个组播路由设备时,由组播路由协议(IGMPv1)或IGMP自身选举机制(IGMPv2和IGMPv3)选举出一个指定组播路由设备来充当查询器,负责周期性发送查询报文,以及向IP主机转发组播数据。其中,IGMP查询响应示意图可以如图3所示,查询器向主机发送查询报文,主机接收到查询报文(Query)后,通过接收到查询报文的端口响应报告(Report)报文。
IGMPv2的查询器选举过程如下:
(1)所有IGMPv2路由设备在初始时都认为自己是查询器,并向本地网段内的所有主机和路由设备发送IGMP普遍组查询报文;
(2)本地网段中的其它IGMPv2路由设备在收到该报文后,将报文的源IP地址与自己的接口地址作比较。通过比较,IP地址最小的路由设备将成为查询器,其它路由设备成为非查询器
(3)所有非查询器上都会启动一个定时器。在该定时器超时前,如果收到了来自查询器的IGMP查询报文,则重置该定时器;否则,就认为原查询器失效,并发起新的查询器选举过程。
IGSP(IGMP Snooping,互联网组管理协议窥探),是运行在二层设备上的组播约束机制,用于管理和控制组播组。
参见图4,运行IGMP Snooping的二层设备通过对收到的IGMP报文进行分析,为端口和MAC组播地址建立起映射关系,并根据所建立的映射关系转发组播数据:
(1)收到查询报文的端口,添加为路由设备端口,查询报文向所有端口转发;
(2)收到IGMP Report报文,添加为对应Group的成员端口,Report报文只向路由设备端口转发;
(3)收到组播数据,向该组播MAC对应的组成员端口转发。
在实现本发明的过程中,发明人发现现有技术中至少存在以下问题:
现有技术中,共享网段存在多个组播路由设备时,根据选举机制选出一个IGMP路由设备作为唯一的查询器,负责发送查询报文和转发组播数据。其他作为非查询器的IGMP路由设备,不会转发组播报文。在组播组信息量较大,组播业务流量较多的情况下,IGMP查询器负担增大,容易引发故障,而其他作为非查询器的IGMP路由设备不需要转发组播数据,处于空闲状态,造成资源浪费。
发明内容
本发明的目的在于提供一种负载均衡的实现方法和设备,以实现三层组播路由设备的负载均衡,提高网络资源利用率,为此,本发明采用如下技术方案:
一种负载均衡的实现方法,应用于包括主机、二层交换设备以及至少两个三层组播路由设备的系统中,所述主机、二层交换设备以及至少两个三层组播路由设备属于同一虚拟局域网VLAN,该方法包括:
当所述VLAN内使能互联网组管理协议窥探IGSP功能时,所述二层交换设备通过所述VLAN内的路由设备端口发送使能通知消息,以使所述至少两个三层组播路由设备均周期性发送互联网组管理协议IGMP普遍组查询报文;
所述二层交换设备将接收到的IGMP普遍组查询报文转发给所述主机,并接收所述主机返回的IGMP 报告Report报文;
所述二层交换设备根据所述IGMP Report报文中携带的组播组地址确定对应的路由设备端口,并将所述IGMP Report报文发送给该路由设备端口对应的三层组播路由设备,以使所述三层组播路由设备根据该IGMP Report报文发起相应的组播组加入过程。
其中,所述二层交换设备根据所述IGMP Report报文中携带的组播组地址确定对应的路由设备端口,具体为:
所述二层交换设备将所述IGMP Report报文中携带的组播组地址和所述VLAN内的路由设备端口的索引值,作为参数进行hash运算,根据hash运算结果确定组播组地址与路由设备端口的对应关系,并根据所述组播组地址与路由设备端口的对应关系,确定所述IGMP Report报文中携带的组播组地址对应的路由设备端口。
其中,该方法还包括:
所述二层交换设备记录所述组播组地址与路由设备端口的对应关系;
当所述二层交换设备接收到IGMP Report报文时,根据该IGMP Report报文中携带的组播组地址查询自身记录的组播组地址和路由设备端口的对应关系,并当所述二层交换设备查询到所述IGMP Report报文中携带的组播组地址与路由设备端口的对应关系时,所述二层交换设备根据该查询到的对应关系确定所述IGMP Report报文中携带的组播组地址对应的路由设备端口。
其中,所述根据hash运算结果确定组播组地址与路由设备端口的对应关系,具体为:
对于同一个组播组地址,比较不同路由设备端口对应的hash值,选择hash值最大或最小的路由设备端口作为该组播组地址对应的路由设备端口;
当不同路由设备端口对应的hash值相同时,选择路由设备端口的索引值最大或最小的路由设备端口作为该组播组地址对应的路由设备端口。
其中,所述二层交换设备将接收到的IGMP普遍组查询报文转发给所述主机,具体为:
当所述二层交换设备通过路由设备端口接收到IGMP普遍组查询报文时,所述二层交换设备启动对应该路由设备端口的查询报文接收定时器,并将所述IGMP普遍组查询报文转发给所述主机;
当所述二层交换设备在所述查询报文接收定时器超时前,再次从该路由设备端口接收到IGMP普遍组查询报文时,所述二层交换设备不转发该IGMP普遍组查询报文。
其中,该方法还包括:
当所述VLAN内去使能IGSP功能时,所述二层交换设备通过所述VLAN内的路由设备端口发送去使能通知消息,以使所述至少两个三层组播路由设备进行查询器选举,并由查询器周期性发送IGMP普遍组查询报文;
当所述二层交换设备接收到主机发送的IGMP Report报文时,所述二层交换设备将所述IGMP Report报文发送给所述查询器,由该查询器根据该IGMP Report报文发起相应的组播组加入过程。
一种网络设备,作为二层交换设备应用于包括主机以及至少两个三层组播路由设备的系统中,所述主机、二层交换设备以及至少两个三层组播路由设备属于同一虚拟局域网VLAN,该网络设备包括:
第一发送模块,用于当所述VLAN内使能互联网组管理协议窥探IGSP功能时,通过所述VLAN内的路由设备端口发送使能通知消息,以使所述至少两个三层组播路由设备均周期性发送互联网组管理协议IGMP普遍组查询报文;
第一接收模块,用于接收三层组播路由设备发送的IGMP普遍组查询报文;
第二发送模块,用于将所述第一接收模块接收到的IGMP普遍组查询报文转发给所述主机;
第二接收模块,用于接收所述主机返回的IGMP 报告Report报文;
确定模块,用于根据所述第二接收模块接收到的IGMP Report报文中携带的组播组地址确定对应的路由设备端口;
第三发送模块,用于将所述IGMP Report报文发送给所述确定模块确定的路由设备端口对应的三层组播路由设备,以使三层组播路由设备根据该IGMP Report报文发起相应的组播组加入过程。
其中,所述网络设备还包括:
所述确定模块具体用于,将所述IGMP Report报文中携带的组播组地址和所述VLAN内的路由设备端口的索引值,作为参数进行hash运算,根据hash运算结果确定组播组地址与路由设备端口的对应关系,并根据所述组播组地址与路由设备端口的对应关系,确定所述IGMP Report报文中携带的组播组地址对应的路由设备端口。
其中,所述网络设备还包括:
记录设备,用于记录所述确定模块确定的组播组地址与路由设备端口的对应关系。
所述确定模块还用于,当所述第二接收模块接收到IGMP Report报文时,根据该IGMP Report报文中携带的组播组地址查询所述记录模块记录的组播组地址和路由设备端口的对应关系,并当查询到所述IGMP Report报文中携带的组播组地址与路由设备端口的对应关系时,根据该查询到的对应关系确定所述IGMP Report报文中携带的组播组地址对应的路由设备端口。
其中,所述确定模块具体用于,对于同一个组播组地址,比较不同路由设备端口对应的hash值,选择hash值最大或最小的路由设备端口作为该组播组地址对应的路由设备端口;当不同路由设备端口对应的hash值相同时,选择路由设备端口的索引值最大或最小的路由设备端口作为该组播组地址对应的路由设备端口。
其中,所述第二发送模块具体用于,当所述第一接收模块通过路由设备端口接收到IGMP普遍组查询报文时,启动对应该路由设备端口的查询报文接收定时器,并将所述IGMP普遍组查询报文转发给所述主机;当所述第一接收模块在所述查询报文接收定时器超时前,再次从该路由设备端口接收到IGMP普遍组查询报文时,不转发该IGMP普遍组查询报文。
其中,所述第一发送模块还用于,当所述VLAN内去使能IGSP功能时,通过所述VLAN内的路由设备端口发送去使能通知消息,以使所述至少两个三层组播路由设备进行查询器选举,并由查询器周期性发送IGMP普遍组查询报文;
所述第三发送模块还用于,当所述第二接收模块接收到主机发送的IGMP Report报文时,将所述IGMP Report报文发送给所述查询器,由该查询器根据该IGMP Report报文发起相应的组播组加入过程。
本发明上述实施例中,当VLAN内使能IGSP功能时,二层交换设备通过VLAN内的路由设备端口发送使能通知消息,以使三层组播路由设备取消查询器选举,各三层路由设备均周期性地发送IGMP普遍组查询报文;当二层交换设备接收到主机发送的IGMP Report报文时,二层交换设备根据该IGMP Report报文中携带的组播组地址确定对应的路由设备端口,并将该IGMP Report报文发送到该路由设备端口对应的三层组播路由设备,以使三层组播路由设备根据该IGMP Report报文发起相应的组播组加入过程,实现了三层组播路由设备的负载均衡,提高了网络资源利用率。
具体实施方式
针对现有技术存在的上述问题,本发明实施例提供了一种实现负载均衡的技术方案,可以应用于包括主机、二层交换设备以及至少两个三层组播路由设备的系统中,该主机、二层交换设备以及至少两个三层组播路由设备属于同一VLAN。在该技术方案中,当VLAN内使能IGSP功能时,二层交换设备通过VLAN内的路由设备端口发送使能通知消息,以使三层组播路由设备取消查询器选举,各三层路由设备均周期性地发送IGMP普遍组查询报文;当二层交换设备接收到主机发送的IGMP Report报文时,二层交换设备根据该IGMP Report报文中携带的组播组地址确定对应的路由设备端口,并将该IGMP Report报文发送到该路由设备端口对应的三层组播路由设备,由该三层组播路由设备根据该IGMP Report报文发起相应的组播组加入过程,实现了三层组播路由设备的负载均衡,提高了网络资源利用率。
在本发明实施例中,由于三层组播路由设备不再选举查询器,各三层组播路由设备均周期性发送IGMP普遍组查询报文,且二层交换设备接收到IGMP Report报文后,根据IGMP Report报文中携带的组播组地址确定对应的路由设备端口,均衡的向三层组播路由设备转发IGMP Report报文,由各三层组播路由设备分别根据接收到的IGMP Report报文发起相应的组播组加入过程,并在后续流程中对接收到的相应组播组的组播数据进行转发,与现有技术中组播组加入以及组播数据转发均由单一的三层组播路由设备(查询器)完成相比,实现了三层组播路由设备的负载均衡,提高了网络资源利用率。
其中,IGMP普遍组查询报文是三层组播路由设备向组播组成员发送的报文,用于查询哪些组播组存在成员;IGMP Report报文是主机向三层组播路由器发送的报告报文,用于申请加入某个组播组或者应答IGMP查询报文。
下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。其中,为了便于描述,在本发明实施例中,若未特殊说明,查询报文即为IGMP普遍组查询报文。
如图5所示,为本发明实施例提供的一种负载均衡的实现方法的流程示意图,可以包括以下步骤:
步骤501、当VLAN内使能IGSP功能时,二层交换设备通过VLAN内的路由设备端口发送使能通知消息,以使各三层组播路由设备均周期性发送IGMP普遍组查询报文。
具体的,在本发明实施例中,定义一种新的IGMP消息类型,当VLAN内使能IGSP功能时,二层交换设备通过VLAN内的路由设备端口发送使能通知消息。
当前网络中的三层组播路由设备接收到二层交换设备发送的使能通知消息后,取消查询器选举:三层组播路由设备中的非查询器删除当前查询器信息,恢复周期性发送查询报文;三层组播路由设备中的查询器保持周期性发送查询报文。
其中,在当系统中有新的三层组播路由设备加入时,该三层组播路由设备会发送查询报文,二层交换设备接收到该查询报文后,将接收到该查询报文的端口添加为新的路由设备端口,并向该路由设备端口发送使能通知消息。新加入的三层组播路由设备接收到使能通知消息后,不会启用查询器选举机制,而是周期性发送查询报文。
步骤502、二层交换设备将接收到的查询报文转发给VLAN内的主机,并接收主机返回的IGMP Report报文。
具体的,二层交换设备接收到三层组播路由设备发送的查询报文后,通过VLAN内的主机端口(成员端口)发送给VLAN内的主机。主机接收到查询报文后,向二层交换设备返回IGMP Report报文。
在本发明实施例中,二层交换设备接收到查询报文后,若接收到该查询报文的端口为已知的路由设备端口,则二层交换设备更新该路由设备端口对应的老化定时器;若接收到该查询报文的端口为非已知的路由设备端口,则二层交换设备将该端口添加为新的路由设备端口,并启动对应该路由设备端口的老化定时器。
其中,二层交换设备在一个查询周期内接收到的第一份查询报文,向VLAN内的各主机端口转发,一个查询周期内接收到的非第一份查询报文,则仅更新对应路由设备端口对应的老化定时器,而不对该查询报文进行转发。具体的,二层交换设备接收到查询报文后,可以启动对应接收到该查询报文的路由设备端口的查询报文接收定时器,并当二层交换设备在查询报文接收定时器超时前,再次从该路由设备端口接收到查询报文时,二层交换设备确定其为一个查询周期内通过该路由设备端口接收到的非第一份查询报文,不做转发处理,以保证主机在每个查询周期内仅接收到一份查询报文,从而仅需要对一次查询报文进行响应,减少系统资源消耗。
步骤503、二层交换设备根据接收到的IGMP Report报文中携带的组播组地址确定对应的路由设备端口,并将该IGMP Report报文发送给该路由设备端口对应的三层组播路由设备,以使该三层组播路由设备根据该IGMP Report报文发起相应的组播组加入过程。
具体的,在本发明实施例中,当二层交换设备接收到IGMP Report报文时,二层交换设备可以根据该IGMP Report报文中携带的组播组地址确定对应的路由设备端口,并将该IGMP Report报文发送给该路由设备端口对应的三层组播路由设备。
其中,在本发明实施例中,二层交换设备根据IGMP Report报文中携带的组播组地址确定对应的路由设备端口可以具体通过以下方式实现:
二层交换设备以IGMP Report报文中携带的组播组地址以及各路由设备端口的索引值作为参数进行hash运算,分别计算各路由设备端口对应的hash值。对于同一组播组地址,可以选择hash值最大(或最小)的路由设备端口为该组播组地址对应的路由设备端口;当各路由设备端口对应的hash值相同时,可以选择路由设备端口的索引值最大(或最小)的路由设备端口作为该组播组地址对应的路由设备端口。其中,IGMP Report报文中主要包含源MAC地址、目的MAC地址、源IP地址、目的IP地址、报文类型、组播组地址等字段;源MAC地址为发送IGMP Report报文的主机的MAC地址,目的MAC地址为该主机请求加入的组播组的组播组地址对应的MAC地址,源IP地址为该主机的IP地址,目的IP地址为该主机请求加入的组播组地址,报文类型用于标识该报文为Report报文,组播组地址为该主机请求加入的组播组地址。
二层交换设备确定了IGMP Report报文中携带的组播组地址对应的路由设备端口后,可以记录组播组地址与路由设备端口的对应关系,并当后续流程中,再次接收到IGMP Report报文后,可以根据IGMP Report报文中携带的组播组地址查询自身记录的组播组地址与路由设备端口的对应关系,若查询到对应的路由设备端口,则从查询到的路由设备端口转发IGMP Report报文;若未查询到对应的路由设备端口,则可以通过上述方式确定对应的路由设备端口,并记录该组播组地址与路由设备端口的对应关系。
其中,二层交换设备接收到IGMP Report报文后,若接收到该IGMP Report报文的端口为已知的主机端口,则二层交换设备更新该主机端口对应的老化定时器;若接收到该IGMP Report报文的端口为非已知的主机端口,则二层交换设备将该端口添加为新的主机端口,并启动对应该路由设备端口的老化定时器。
其中,二层交换设备在一个查询周期内收到的第一份该组播组的IGMP Report报文,向对应的特定的路由设备端口转发。
进一步地,在本发明实施例中,二层交换设备接收到主机发送的IGMP Report报文后,还可以根据该IGMP Report报文中携带的组播组地址,以及接收到该IGMP Report报文的主机端口,记录主机端口与组播组地址的对应关系。
当二层交换设备接收到组播数据时,二层交换设备可以根据该组播数据中携带的组播组地址,以及自身记录的主机端口与组播组地址的对应关系,将组播数据通过对应的主机端口转发给相应的主机。
需要注意的是,在本发明实施例提供的技术方案中,二层交换设备也可以不记录组播组地址与路由设备端口的对应关系,而是在每次接收到主机发送的IGMP Report报文时,根据IGMP Report报文中携带的组播组地址确定对应的路由设备端口(如通过上述实施例中hash运算方法),并由该路由设备端口向对应的三层组播路由设备转发IGMP Report报文。此外,在本发明实施例提供的技术方案中,确定组播组地址与路由设备端口的对应关系也并不限于通过上述实施例提供的hash运算方法,也可以通过其他方法(如顺序选择,随机选择等)实现,其具体实现方式在此不再赘述。
如图6所示,本发明实施例提供的负载均衡的实现方法还可以包括以下步骤:
步骤504、当VLAN内去使能IGSP功能时,二层交换设备通过VLAN内的路由设备端口发送去使能消息,以使三层组播路由设备进行查询器选举,并由查询器周期性发送查询报文。
具体的,在本发明实施例中,还可以定义另一种新的IGMP消息类型,当VLAN内去使能IGSP功能时,二层交换设备通过VLAN内的路由设备端口发送去使能通知消息。
当前网络中的三层组播路由设备接收到二层交换设备发送的去使能通知消息后,启动查询器选举机制,重新选举查询器。
步骤505、当二层交换设备接收到主机发送的IGMP Report报文时,二层交换设备将该IGMP Report报文发送给查询器,由查询器根据该IGMP Report报文发起相应的组播加入过程。
具体的,当VLAN内去使能IGSP后,二层交换设备对IGMP Report报文的转发流程,以及后续流程中查询器向上游发起加入过程和向下游转发组播数据的流程可以与现有技术中的相应处理流程相同,在此不再赘述。
为了更好地理解本发明实施例提供的技术方案,以下结合具体的应用场景对本发明实施例提供的技术方案进行更加详细地描述。
如图7所示,为本发明实施例提供一种负载均衡的实现方法的具体应用场景的架构示意图,其中:
二层交换设备Switch A分别通过路由设备端口Port 1、Port 2以及Port 3与三层组播路由设备Router A、Router B以及Router C连接,且Router C为查询器;Switch A、Router A、Router B、Router C、Host(主机)A、Host B、Host C以及Host D属于同一VLAN。
基于图7所示的应用场景,本发明实施例提供的负载均衡的实现方法的流程示意图可以如图8所示,可以包括以下步骤:
步骤801、当VLAN内使能IGSP功能时,Switch A分别通过Port 1、Port 2以及Port 3向Router A、Router B以及Router C发送使能通知消息。
步骤802、Router A和Router B接收到使能通知消息后,删除当前查询器信息,并周期性发送查询报文;Router C接收到使能通知消息后,仍保持周期性发送查询报文。
步骤803、Switch A接收到查询报文后,将查询报文分别转发给Host A、Host B、Host C以及Host D,并接收Host A、Host B、Host C以及Host D返回的IGMP Report报文。
步骤804、Switch A根据接收到的IGMP Report报文中携带的组播组地址确定对应的路由设备端口,并将IGMP Report报文通过对应的路由设备端口发送给相应的三层组播路由设备。
具体的,在该实施例中,二层交换设备将组播组地址以及路由设备端口的索引值作为参数进行hash运算,对于同一个组播组地址,比较不同路由设备端口计算出来的hash值,选择hash值最大的路由设备端口作为该组播组地址对应的路由设备端口;若各路由设备端口的hash值相同,则选择路由设备端口的索引值最大的路由设备端口作为该组播组地址对应的路由设备端口。
例如,在本发明实施例中,假设经过hash计算后,组播组地址与端口的对应关系如下:
Group address Router Port
225.0.0.0 Port 1
225.0.0.1 Port 2
225.0.0.2 Port 1
225.0.0.3 Port 3
225.0.0.4 Port 2
225.0.0.5 Port 2
225.0.0.6 Port 3
225.0.0.7 Port 1
则当Switch A收到组播组地址为225.0.0.0、225.0.0.2、225.0.0.7的IGMP Report报文时,就会只向Router A转发,Router A负责向这些组播组发起加入,并向下游转发这些组播组的组播流量。当Switch A收到组播组地址为225.0.0.1、225.0.0.4、255.0.0.5的IGMP Report报文时,只向Router B转发,Router B负责向这些组播组发起加入过程,并向下游转发这些组播组的组播流量。当Switch A收到组225.0.0.3、225.0.0.6的IGMP Report报文时,只向Router C转发,Router C负责向这些组播组发起加入过程,并向下游转发这些组播组的组播流量。
步骤805、三层组播路由设备接收到IGMP Report报文后,根据其中携带的组播组地址向对应的组播组发起加入过程,并向下游转发对应组播组的组播流量。
具体的,三层组播组路由设备向下游转发组播流量的处理方法可以与现有技术中查询器向下游转发组播流量的处理方法相类似,在此不再赘述。
步骤806、当VLAN内去使能IGSP功能时,Switch A向分别通过Port 1、Port 2以及Port 3向Router A、Router B以及Router C发送去使能通知消息。
步骤807、Router A、Router B以及Router C接收到去使能通知消息后,启用查询器选举机制,重新选举查询器。
具体的,Router A、Router B以及Router C进行查询器选举,以及选择出查询器后的报文和数据转发与现有技术中的相应处理流程相类似,在此不再赘述。
通过以上描述可知,在本发明实施例提供的方案中,当VLAN内使能IGSP功能时,通过二层交换设备向三层组播路由设备发送使能通知消息,使三层组播路由设备取消查询器选举;当二层交换设备接收到主机发送的IGMP Report报文后,根据其中携带的组播组地址确定对应的路由设备端口,并将IGMP Report通过该路由设备端口发送给对应的三层组播路由设备,由该三层组播路由设备向相应的组播组发起加入过程。通过使用本发明,一个组播组地址唯一对应一个路由设备端口,不同组播组地址均衡地对应不同的路由设备端口。二层交换设备将从主机接收到的不同组播组的IGMP Report报文,均衡的向上游的三层组播路由设备转发,从而实现了三层组播路由设备的负载均衡,提高了网络资源利用率。
基于上述方法实施例系统的发明构思,本发明实施例还提供了一种网络设备,可以作为二层交换设备应用于上述方法实施例。
如图9所示,为本发明实施例提供的一种网络设备的结构示意图,该网络设备可以作为二层交换设备应用于包括主机以及至少两个三层组播路由设备的系统中,所述主机、二层交换设备以及至少两个三层组播路由设备属于同一虚拟局域网VLAN,该网络设备包括:
第一发送模块91,用于当所述VLAN内使能互联网组管理协议窥探IGSP功能时,通过所述VLAN内的路由设备端口发送使能通知消息,以使所述至少两个三层组播路由设备均周期性发送互联网组管理协议IGMP普遍组查询报文;
第一接收模块92,用于接收三层组播路由设备发送的IGMP普遍组查询报文;
第二发送模块93,用于将所述第一接收模块92接收到的IGMP普遍组查询报文转发给所述主机;
第二接收模块94,用于接收所述主机返回的IGMP 报告Report报文;
确定模块95,用于根据所述第二接收模块94接收到的IGMP Report报文中携带的组播组地址确定对应的路由设备端口;
第三发送模块96,用于将所述IGMP Report报文发送给所述确定模块确定的路由设备端口对应的三层组播路由设备,以使所述三层组播路由设备根据该IGMP Report报文发起相应的组播组加入过程。
其中,所述确定模块95具体用于,将所述IGMP Report报文中携带的组播组地址和所述VLAN内的路由设备端口的索引值,作为参数进行hash运算,根据hash运算结果确定组播组地址与路由设备端口的对应关系,并根据所述组播组地址与路由设备端口的对应关系,确定所述IGMP Report报文中携带的组播组地址对应的路由设备端口。
其中,所述网络设备还包括:
记录设备97,用于记录所述确定模块95确定的组播组地址与路由设备端口的对应关系。
所述确定模块95还用于,当所述第二接收模块94接收到IGMP Report报文时,根据该IGMP Report报文中携带的组播组地址查询所述记录模块97记录的组播组地址和路由设备端口的对应关系,并当查询到所述IGMP Report报文中携带的组播组地址与路由设备端口的对应关系时,根据该查询到的对应关系确定所述IGMP Report报文中携带的组播组地址对应的路由设备端口。
其中,所述确定模块95具体用于,对于同一个组播组地址,比较不同路由设备端口对应的hash值,选择hash值最大或最小的路由设备端口作为该组播组地址对应的路由设备端口;当不同路由设备端口对应的hash值相同时,选择路由设备端口的索引值最大或最小的路由设备端口作为该组播组地址对应的路由设备端口。
其中,所述第二发送模块93具体用于,当所述第一接收模块92通过路由设备端口接收到IGMP普遍组查询报文时,启动对应该路由设备端口的查询报文接收定时器,并将所述IGMP普遍组查询报文转发给所述主机;当所述第一接收模块在所述查询报文接收定时器超时前,再次从该路由设备端口接收到IGMP普遍组查询报文时,不转发该IGMP普遍组查询报文。
其中,所述第一发送模块91还用于,当所述VLAN内去使能IGSP功能时,通过所述VLAN内的路由设备端口发送去使能通知消息,以使所述至少两个三层组播路由设备进行查询器选举,并由查询器周期性发送IGMP普遍组查询报文;
所述第三发送模块96还用于,当所述第二接收模块94接收到主机发送的IGMP Report报文时,将所述IGMP Report报文发送给所述查询器,由该查询器根据该IGMP Report报文发起相应的组播组加入过程。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。