背景技术
组播是一种信源主机将信息发送到某些确定接收主机的点到多点的通信方法。组播源发送组播报文,该组播报文的目的IP地址是一个组播组的地址,只有加入所述组播组的用户才能接收到该组播报文。当用户希望接收某个组播组的组播数据报文时,将通过发送互联网组播组管理协议(IGMP,Internet Group Management Protocol)的报告(report)报文加入该组播组,当用户不再希望接收该组播组的组播数据报文时,将通过发送IGMP的离开(leave)报文离开该组播组。下面,结合图1对用户加入和离开组播组的过程进行说明。
在图1中,二层组播设备包括3个下行端口,分别为端口1、端口2和端口3,以及1个缺省的上行端口,为端口25,4个端口都属于同一个虚拟局域网(VLAN,Virtual Local Area Network),即vlan25。当与端口1相连的用户希望加入组播组230.1.1.1时,将通过端口1发送组播组230.1.1.1的report报文给二层组播设备,端口1成为组播组230.1.1.1的成员端口。启用因特网组管理监听协议(IGMP-Snooping,Internet Group ManagementProtocal-Snooping)的二层组播设备接收到该report报文后,将端口1的信息,以及与组播组230.1.1.1唯一对应的组播介质访问控制(MAC,MediaAccessControl)地址添加到本机的组播地址表。当启用互联网组播组管理协议(IGMP,Internet Group Management Protocol)的三层组播设备将组播组230.1.1.1的组播数据报文转发到该二层组播设备时,该二层组播设备将通过本机的组播地址表查询到与组播组230.1.1.1对应的组播MAC地址,并查询到端口1与该MAC地址相对应,将来自组播组230.1.1.1的组播数据报文转发到端口1,而不需要将来自组播组230.1.1.1的组播数据报文转发到端口2和端口3。
当与端口1相连的用户希望离开组播组230.1.1.1时,将通过端口1发送组播组230.1.1.1的leave报文给二层组播设备。二层组播设备接收到该leave报文后,将在本机的组播地址表中删除端口1的信息,并删除与组播组230.1.1.1唯一对应的MAC地址。当三层组播设备将组播组230.1.1.1的组播数据报文转发到该二层组播设备时,由于二层组播设备在本机的组播地址表中查询不到端口1的信息,因此不再将组播组230.1.1.1的组播数据报文转发给端口1。当与端口1相连的用户希望重新加入组播组230.1.1.1时,二层组播设备需要重新建立端口1的信息。
当组播组230.1.1.1的所有用户都离开时,则需要在二层组播设备的组播地址表中删除该组播组的所有软件表项和硬件表项信息。三层组播设备也可能删除该组播组的所有软件表项和硬件表项,甚至删除三层组播路由协议中的相关信息。
当有用户希望重新加入组播组230.1.1.1时,二层组播设备需要在本机的组播地址表中重建该组播组的软件表项和硬件表项。如果三层组播设备已经删除该组播组的信息,则三层组播设备不仅要重建该组播组的软件表项,而且要从该组播组中的组播源引来组播数据报文,重建该组播组的硬件转发表项。
可以看出,当用户频繁地加入或者离开某一个组播组的时候,将会频繁的建立/删除相应成员端口信息,也可能导致对组播组信息频繁地建立/删除,这样不仅导致用户加入组播组的时间延长,降低用户在各组播组间的切换速度,而且会加重系统的运行负荷。
发明内容
有鉴于此,本发明解决的技术问题是提供一种组播组的维护方法,可以缩短用户加入组播组的时间,提高用户在各组播组间的切换速度,而且会减轻系统的运行负荷。
本发明包括:
一种组播组的维护方法,包括:
当满足预设置条件的组播组中的成员端口全部离开时,二层组播设备将所述组播组设置为延时保留状态,并保留所述组播组的相关信息。
其中,当满足预设置条件的组播组的成员端口离开该组播组时,二层组播设备将所述成员端口设置为延时保留状态,并保留所述成员端口的相关信息。
其中,进一步包括:
C、在预设置时间内,如果有成员端口加入所述组播组,二层组播设备将所述组播组设置为正常状态,并设置所述成员端口为正常状态;否则,删除所述组播组、以及该组播组中所有成员端口的相关信息。
其中,所述二层组播设备设置成员端口的状态,具体包括:二层组播设备为成员端口设置状态位,通过设置状态位的值来设置成员端口的状态。
其中,所述成员端口状态位有两个预设值,如果将状态位设置为第一预设值,则将成员端口设置为正常状态;如果将状态位设置为第二预设值,则将成员端口设置为延时保留状态。
其中,所述二层组播设备设置组播组的状态,具体包括:二层组播设备为组播组设置状态位,通过设置状态位的值来设置组播组的状态。
其中,所述组播组状态位有两个预设值,如果将状态位设置为第一预设值,则将组播组设置为正常状态;如果将状态位设置为第二预设值,则将组播组设置为延时保留状态。
其中,所述步骤C中的成员端口是从所述组播组离开的成员端口,其加入组播组的过程包括:
二层组播设备收到成员端口请求加入所述组播组的信息后,根据其保留的该成员端口的相关信息,为该成员端口转发所述组播组的组播数据报文。
其中,所述步骤C中的成员端口不是从所述组播组离开的成员端口,其加入组播组的过程包括:
二层组播设备收到成员端口请求加入所述组播组的信息后,建立该成员端口的相关信息,根据建立的该成员端口的相关信息为该成员端口转发所述组播组的组播数据报文。
其中,进一步包括:
二层组播设备收到三层组播设备的组播组查询报文,将遍历所有处于延时保留状态的组播组,为相应的处于延时保留状态的组播组构造相应的报告report报文,将所述report报文发送到三层组播设备。
其中,所述二层组播设备是启用因特网组管理监听协议的设备。
一种组播组的维护方法,包括:
二层组播设备将离开满足预设置条件的组播组的成员端口设置为延时保留状态,并保留所述成员端口的相关信息。
其中,进一步包括:
当满足预设置条件的组播组中的成员端口全部离开时,二层组播设备将所述组播组设置为延时保留状态,并保留所述组播组的相关信息。
其中,进一步包括:
在预设置时间内,如果有成员端口加入所述组播组,二层组播设备将所述组播组设置为正常状态,并设置所述成员端口为正常状态;否则,删除所述组播组、以及该组播组中所有成员端口的相关信息。
其中,所述二层组播设备是启用因特网组管理监听协议的设备。
在本发明中,当组播组满足预设置条件时,即该组播组可以被延时保留,如果该组播组中的成员端口离开该组播组,二层组播设备将延时保留所述成员端口的相关信息;如果该组播组的成员端口全部离开,二层组播设备还将延时保留该组播组的相关信息,并在预设置的延时等待时间内等待用户加入该组播组。如果在延时等待时间内有用户加入该组播组,则该组播组恢复正常状态;否则,删除该组播组、以及该组播组中所有成员端口的相关信息。
可以看出,当用户频繁地加入/离开某一个组播组的时候,将不再发生频繁的建立/删除成员端口信息这种情况,还会降低建立/删除组播组信息的频率,从而可以缩短用户加入组播组的时间,提高用户在各组播组间的切换速度,并且减轻系统的运行负荷。
具体实施方式
在本发明中,当组播组满足预设置条件时,即该组播组可以被延时保留,如果该组播组中的成员端口离开该组播组,二层组播设备将延时保留所述成员端口的相关信息;如果该组播组的成员端口全部离开,二层组播设备还将延时保留该组播组的相关信息,并在预设置的延时等待时间内等待用户加入该组播组。如果在延时等待时间内有用户加入该组播组,则该组播组恢复正常状态;否则,删除该组播组、以及该组播组中所有成员端口的相关信息。
下面结合具体实施例对本发明的方法做进一步具体说明。
参见图2,一种组播组的维护方法,包括:
步骤201:
设置延时保留组播组的条件,并设置相应的延时等待时间。在设置延时保留组播组的条件时,应该考虑的因素包括:加入组播组的用户数量、用户加入组播组的频率、组播组存活时间的长短,组播组存活时间的区段特征以及组播组流量的接收情况等。根据具体的应用场合特点,可以对这些需要考虑的因素进行适当的组合,再设置延时保留组播组的条件。设置相应的延时等待时间同样也要考虑多方面的因素。
下面以加入组播组的用户数量、组播组存活时间的长短作为考虑因素,来设置延时保留组播组的条件、以及相应的延时等待时间,其过程具体包括:
如果加入用户数量不少于3个,且存活时间超过2分钟,则该组播组需要被延时保留15分钟,即:即使所有的用户都离开该组播组,该组播组也不会被立即删除,而是被延时保留15分钟,等待用户加入。
步骤202:
在建立组播组时,为该组播组、以及该组播组的成员端口设置状态信息属性并将该组播组、以及该组播组的成员端口的状态设置为正常状态。为组播组、以及成员端口设置状态信息属性的方法可以是:为组播组、以及成员端口分别设置1比特的状态位,当该比特状态位置“0”时,表示组播组、成员端口的状态为正常状态;当该比特状态位置“1”时,表示组播组、成员端口的状态为延时保留状态,结合图1和步骤201,其具体过程包括:
组播组230.1.1.1包括3个用户,分别为用户1、用户2和用户3,相应的成员端口分别为端口1、端口2和端口3,所述3个用户属于同一个VLAN。二层组播设备为组播组230.1.1.1、端口1、端口2和端口3分别设置1比特的状态位,该并将状态位分别都置“0”,表示组播组230.1.1.1、端口1、端口2和端口3都处于正常状态。
其中,组播组、以及组播组中各成员端口的状态位也可以是多个比特,同样能够达到本发明的目的,这里不再重复举例说明。
步骤203:
在满足延时保留条件的组播组中,如果有用户离开该组播组,启用IGMP-Snooping的二层组播设备将与该用户相连的成员端口标记为延时保留状态,结合图1和步骤202,其具体过程包括:
当组播组230.1.1.1的存活时间超过2分钟时,组播组230.1.1.1将满足延时保留条件。如果用户3离开组播组230.1.1.1,二层组播设备将相应的端口3的状态位置“1”,而组播组230.1.1.1、端口1和端口2的状态位仍然置“0”;
如果用户2也离开组播组230.1.1.1,二层组播设备将相应的端口2的状态位也置“1”,而组播组230.1.1.1和端口1的状态位仍然置“0”。
步骤204:
如果所有用户都离开该组播组,所述二层组播设备将所有成员端口都设置为延时保留状态,并且将该组播组也设置为延时保留状态,结合图1和步骤203,其具体过程包括:
如果3个用户全部都离开组播组230.1.1.1,二层组播设备将端口1、端口2和端口3的状态位分别都置“1”,并将组播组230.1.1.1的状态位也“1”。
步骤205:
处于延时保留状态的组播组,将在预设置的延时等待时间内等待用户加入,如果在预设置的延时等待时间内没有用户加入该组播组,则二层组播设备删除该组播组。
其中,如果在预设置的延时等待时间内有用户加入该组播组,当该用户通过该组播组原来的成员端口加入时,二层组播设备将直接采用其保留的该成员端口的信息向该用户转发组播数据报文,并将该成员端口的状态信息设置为正常状态,并将该组播组的状态信息设置为正常状态;当该用户通过新的成员端口加入时,二层组播设备将首先建立新的成员端口的信息,然后根据新的成员端口信息向该用户转发组播数据报文,并将新的成员端口的状态信息设置为正常状态,将该组播组的状态信息设置为正常状态。结合图1和步骤204,其具体过程包括:
当组播组230.1.1.1的状态位为“1”时,该组播组将被延时保留15分钟,等待用户加入该组播组。
如果在15分钟内有用户加入组播组230.1.1.1,当该用户通过端口1、端口2或端口3加入该组播组时,二层组播设备将端口1、端口2或端口3的状态位置“0”,将组播组230.1.1.1的状态位置“0”,其余端口的状态位仍然被置“1”;当该用户通过新的成员端口加入该组播组时,例如:该用户通过端口5加入该组播组,则二层组播设备将建立端口5的信息,为端口5设置1比特状态位,并将端口5的状态位置“0”,将组播组230.1.1.1的状态位置“0”,端口1、端口2和端口3的状态位仍然被置“1”。
如果在15分钟内没有用户加入组播组230.1.1.1,则二层组播设备删除该组播组的软件转发地址表、硬件转发地址表等相关信息。
通过上述实施例所述的方法,在二层组播设备中通过命令行方式,可以设置组播组延时保留的条件、以及相应的延时等待时间或者延时等待时间段。对于满足延时保留条件的组播组,即使其所有的用户全部离开,二层组播设备也不会将该组播组、以及相应的成员端口的相关信息立刻删除,而是将该组播组、以及相应的成员端口的相关信息延时保留,在延时等待时间内等待用户加入该组播组。
如果处于延时保留状态的成员端口重新加入该组播组,该成员端口能够立刻接收该组播组的组播数据报文,从而可以缩短用户加入组播组的时间,提高用户在各组播组间的切换速度,而且会减轻系统的运行负荷。如果是新的成员端口,虽然本次加入组播组的时间并未缩短,但是当该成员端口离开组播组并再次回到组播组时,也将缩短加入组播组的时间。
图3是实现本发明方法的状态机。在组播组建立时,直接从初始状态转变为正常状态,当组播组的成员端口都处于活动状态时,组播组的状态一直维持在正常状态;当组播组的所有成员都离开该组播组后,组播组由正常状态切换到延时保留状态。如果组播组在延时等待期间没有收到过report报文,则组播组一直维持在延时等待状态;当组播组超过延时等待的时间,由延时保留状态切换到删除状态;如果组播组在延时等待期间从某一个端口收到report报文,则由延时等待状态切换到正常状态。
通过上述方法可以使二层组播设备延时保留组播组、以及相应成员端口的信息,但是,当启用IGMP的三层组播设备向二层组播设备发送组播组查询报文时,虽然二层组播设备保留了满足延时保留条件的组播组、以及相应的成员端口,但所述组播组的用户实际已经全部离开,所以所述组播组无法向三层组播设备反馈report消息。三层组播设备没有收到所述组播组的report报文,将删除该组播组的所有软件转发表项和硬件转发表项,甚至删除三层组播路由协议中的相关信息。
为在三层组播设备中同样能够延时保留组播组的相关信息,本发明还进一步提供在三层组播设备中延时保留组播组的方法。
当三层组播设备向二层组播设备发送组播组查询报文,以查询相应的组播组中是否还有用户时,如果三层组播设备收到来自二层组播设备的相应组播组的report信息,则三层组播设备获知所述组播组中还有用户,将继续保留所述组播组的相关信息;否则,三层组播设备获知所述组播组中的用户已经全部离开,将删除所述组播组的相关信息。
为在三层组播设备同样能够延时保留所述组播组,二层组播设备在收到三层组播设备的查询报文后,将为处于延时保留状态的组播组构造report报文,将所述report报文反馈到三层组播设备,从而避免三层组播设备将处于延时保留状态的组播组删除,其具体过程包括:
当二层组播设备收到三层组播设备发送的通用组播组查询报文时,将遍历所有处于延时保留状态的组播组,为处于延时保留状态的各组播组分别构造相应的report报文,将所述各report报文发送到三层组播设备,以避免三层组播设备删除处于延时保留状态的组播组的相关信息;
当二层组播设备收到三层组播设备发送的特定组播组查询报文时,将遍历所有处于延时保留状态的组播组,如果查找到特定查询报文中所指定的组播组,则二层组播设备只为该组播组构造report报文,将所述report报文发送到三层组播设备,以避免三层组播设备删除该组播组的相关信息。
在上述实施例中所述的二层组播设备是启用IGMP-Snooping协议的网络设备,在实际情况中,本发明同样可以用于满足下述条件的网络设备:
该网络设备能够通过对主机与配置IGMP协议的路由器之间的窥探,对组播组、VLAN和成员端口的关系进行维护,并把组播数据复制到相应的成员端口。
对于满足上述条件的网络设备,本发明所述的方法都适用,这里不再重复举例说明。
以上所述的实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。