具体实施方式
本发明公开了一种二层组播流转发方法,其核心思想为:由二层组播设备根据组播数据流来维护二层组播组表项和组播转发表项的建立和删除。而IGMP协议报文或MLD协议报文仅用于更新组播组和组播转发表项的端口集信息,不再涉及组播组表项和组播转发表项的建立和删除。对于当前没有组播流在转发的组播组,在接收到加入该组播组的报告报文时,二层组播设备并不立即创建组播组表项和组播转发表项,以解决现有技术中因用户终端大批量点播组播组而导致对组播设备软件和硬件造成巨大负荷的问题。以下分别按照组播组和组播转发表项的创建、查询、刷新和删除流程来具体描述本发明方案。
本发明方案下的组播组和组播转发表项的创建:在用户终端向三层网络设备发送IGMP报告报文或MLD报告报文、加入组播组时,二层组播设备在侦听到该用户终端发送的报告报文后,首先判断二层组播设备上是否已经存在该组播组的组播组表项和组播转发表项,如果存在则按照现有技术处理,将该用户终端端口加入该组播组。如果不存在,则二层组播设备将暂时不进行任何操作,只有在收到三层网络设备发送的该组播组的组播数据流时,二层组播设备才根据组播数据流的组播组地址,在二层组播设备上建立与该组播组对应的组播组表项和组播转发表项,其中组播组表项成员端口为空,组播转发表项的转发目的端口也为空。也就是说,本发明中组播组的组播组表项和组播转发表项的建立,是由三层组播设备发送的组播流触发的。
在组播组和组播转发表项的创建过程中,以二层组播设备处理用户终端发送的IGMP报文的过程为例,该二层组播流转发方法如图2所示,包括以下步骤:
步骤s201、二层组播设备侦听到用户终端向三层网络设备发送的加入组播组的IGMP报告报文;
步骤s202、二层组播设备判断该组播组的组播组表项和组播转发表项是否已经建立,如果已经建立则进行步骤s206,否则进行步骤s203;
步骤s203、二层组播设备接收三层网络设备发送的组播数据流;
步骤s204、二层组播设备根据该数据流的组播组地址,建立组播组表项,该组播组表项的成员端口为空;
步骤s205、二层组播设备根据该数据流的组播组IP地址(二层设备支持IP转发)或者MAC(Media Access Control,媒体访问控制)地址(二层设备只支持MAC转发),建立组播转发表项并结束,该组播转发表项的转发目的端口为空;
步骤s206、二层组播设备将该用户终端端口添加到已存在的组播组表项的成员端口集与组播转发表项的转发目的端口集中并结束。
采用上述步骤s201~步骤s206所述方法实现本发明时,由于初次建立的组播组表项中无成员端口,且组播转发表项中不包括任何转发目的端口,这样 在没有端口加入该组播组时,组播流匹配到一个不包括任何转发目的端口的空组播转发表项,避免了没有任何目的端口的未知组播流在VLAN内广播的情况。但是,当组播组的第一个用户终端发送IGMP报告报文或MLD报告报文加入组播组时,由于二层组播设备没有建立任何组播组表项和组播转发表项;这样,当组播流已经从三层网络设备到达二层组播设备时,二层组播设备的组播转发表项的转发目的端口仍为空,因此会导致第一个用户终端的第一个请求、以及其他在组播流从三层网络设备到达二层组播设备前发送报告报文的用户终端加入该组播组的请求失败。在预定的时间内用户终端需要发起第二次加入组播组的请求,以实现用户终端加入特定的组播组。但这样会导致用户终端最终获取组播流的时间延迟。如果系统不能容忍这种情况发生,优选地,以下提供两种解决方法:
方法(1):
在二层组播设备根据组播流建立组播组表项和组播转发表项后,将VLAN内的所有端口加入组播转发表项中,进行VLAN内广播,这样,先前点播的用户终端自然会在发起第一次请求报文后即时收到组播流,而当有端口再加入该组播组时,将该端口添加到组播组表项中,并将组播转发表项中的其他未请求加入该组播组的端口从该组播转发表项删除。
该二层组播流转发方法如图3所示,包括:
步骤s301、二层组播设备侦听到用户终端向三层网络设备发送的加入组播组的IGMP报告报文;
步骤s302、二层组播设备判断该组播组的组播组表项和组播转发表项是否已经建立,如果已经建立则进行步骤s311,否则进行步骤s303;
步骤s303、二层组播设备接收三层网络设备发送的组播数据流;
步骤s304、二层组播设备根据该数据流的组播组地址,建立组播组表项,该组播组表项的成员端口为空;
步骤s305、二层组播设备根据发送该数据流的组播组IP地址(二层设备支持IP转发)或者MAC地址(二层设备只支持MAC转发),建立组播转发表项,该组播转发表项的转发目的端口为空;
步骤s306、二层组播设备将VLAN内所有端口加入组播转发表项中,进行VLAN内广播,此时第一个用户终端即可收到点播的组播流;
步骤s307、系统设定的最长广播时间内无端口加入该组播时,进行步骤s308,否则进行步骤s309;该系统设定的最长广播时间为上游设备的IGMP通用查询的间隔时间(默认为125秒);
步骤s308、删除该组播转发表项中的所有未请求加入该组播组的端口并结束;
步骤s309、将新加入的端口集加入组播组表项,并将组播转发表项中的除新加入的端口集之外的其他端口删除;
步骤s310、保持向新加入的端口集发送组播流并结束;
步骤s311、二层组播设备将该用户终端端口添加到已存在的组播组表项的成员端口集与组播转发表项的转发目的端口集中并结束。
方法(2):
二层组播设备在从端口收到IGMP报告报文或MLD报告报文时,将加入的组播组与端口记录在高速缓冲区中,当二层组播设备根据从三层网络设备收到的组播流、建立组播组表项和组播转发表项时,将高速缓冲区中记录的端口加入该组播组表项和组播转发表项中,组播组就会向先前发送IGMP报告报文或MLD报告报文的端口转发组播数据流。
该方法涉及到高速缓冲区中组播组与端口信息的建立、更新、读取、删除等操作,而在高速缓冲区中记录的信息只包括少量的必要信息,其信息量与正常建立组播组和组播转发表项的信息量相比,操作时需要的资源要少的多,因此不会对系统的运行造成很大负担,不会影响系统的性能。
该二层组播流转发方法如图4所示,具体包括:
步骤s401、二层组播设备侦听到用户终端向三层网络设备发送的加入组播组的IGMP报告报文;
步骤s402、二层组播设备判断该组播组的组播组表项和组播转发表项是否已经建立,如果已经建立则进行步骤s410,否则进行步骤s403;
步骤s403、二层组播设备将发送该报告报文的端口和该报告报文要加入的 组播组存储到二层组播设备的高速缓冲区中;
步骤s404、二层组播设备接收三层网络设备发送的组播数据流;
步骤s405、二层组播设备根据该组播数据流的组播组地址,建立组播组表项,该组播组表项的成员端口为空;
步骤s406、二层组播设备根据该接收到的组播数据流的组播组IP地址(二层设备支持IP转发)或者MAC地址(二层设备只支持MAC转发),建立组播转发表项,该组播转发表项的转发目的端口为空;
步骤s407、二层组播设备读取高速缓冲区中存储的端口与组播组信息;
步骤s408、二层组播设备将端口添加到与该端口的组播组相匹配的组播组表项与组播转发表项中;
步骤s409、二层组播设备向该端口发送组播数据流并结束;
步骤s410、二层组播设备将该用户终端端口添加到已存在的组播组表项的成员端口集与组播转发表项的转发目的端口集中并结束。
采用如图2所示、步骤s201~步骤s206所述方法实现本发明时,在二层组播设备转发三层网络设备下发的查询报文时,对于通用查询报文的处理,与现有技术一致,要求二层组播设备将通用查询报文向VLAN中的所有端口转发。
对于特定组查询报文(例如:三层网络设备在需要查询特定组播组是否存在成员、或收到某一端口的离开报文、或某一端口的老化时间定时器超时等)的处理,按照现有技术规定,只需要向成员端口转发即可。但由于在本发明中,二层组播设备在组播组的组播数据流到来之前不会建立该组播组的组播组表项和组播转发表项,以及在组播数据流刚到来时组播组表项和组播转发表项的端口为空,因此在三层网络设备要求向特定成员端口发送特定组查询报文时,二层组播设备无法判断哪些端口是成员端口。为了解决该问题,在本发明中,为了让所有成员端口接收到特定组查询报文,二层组播设备将特定组查询报文向VLAN内所有端口转发。
本发明中,二层组播设备对三层网络设备发送的IGMP特定组查询报文的具体处理流程如图5所示,包括步骤:
步骤s501、二层组播设备接收三层网络设备发送的IGMP特定组查询报文;
步骤s502、二层组播设备发现组播组表项和组播转发表项尚未建立或组播组表项的成员端口和组播转发表项中的转发目的端口为空;
步骤s503、二层组播设备将IGMP特定组查询报文向VLAN内所有端口发送并结束。
采用如图2所示、步骤s201~步骤s206所述方法实现本发明时,当在组播组表项和组播转发表项建立前、以及组播组表项和组播转发表项中的端口为空时,如果此时二层组播设备收到VLAN内用户终端发送的IGMP离开报文或MLD离开报文(即多播侦听已完成报文),在这种情况下,二层组播设备在接收到来自上述这些用户终端发送的离开报文时,为了能够让三层网络设备正确维护三层组播组地址转发表,需要将离开报文向三层网络设备发送。除此之外,由于在二层组播设备上的组播组表项和组播转发表项不存在或端口集中不包括上述这些用户终端端口,因此二层组播设备不需要进行其他处理。
本发明中,二层组播设备对用户终端端口发送的IGMP离开报文的处理流程如图6所示,包括步骤:
步骤s601、二层组播设备接收用户终端发送的IGMP离开报文;
步骤s602、二层组播设备将该IGMP离开报文向三层网络设备转发;
步骤s603、二层组播设备判断组播组表项和组播转发表项是否已经建立,若已经建立则进行步骤s604,否则不进行任何处理并结束;
步骤s604、二层组播设备判断组播组表项的成员端口集和组播转发表项中的转发目的端口集中是否包括该用户终端端口,如果包括则进行步骤s605,否则不进行任何处理并结束;
步骤s605、按照现有技术中对离开报文的处理要求,向发送IGMP离开报文的端口发送IGMP特定组查询报文,对该用户终端是否离开进行确认;
步骤s606、二层组播设备判断该用户终端端口在系统设定的离开确认时间内是否响应,如果有响应则不作任何处理并结束,否则进行步骤s607;
步骤s607、二层组播设备将该用户终端端口从组播组表项和组播转发表项的端口集中删除并结束。
本发明方案下的组播组和组播转发表项的刷新机制与现有实现方式相 比,没有本质区别。区别仅在于在本发明中,组播组表项和组播转发表项在建立后,对组播组表项中成员端口和组播转发表项中的转发目的端口的刷新由二层组播设备根据用户终端端口发送的加入报文或离开报文进行维护,而组播组表项的刷新则是由组播数据流触发实现。
本发明方案下的组播组和组播转发表项的删除:本发明中,在组播组表项和组播转发表项建立后,当在设定时间内没有检测到组播组的数据流经过时,二层组播设备将删除该组播组的组播组表项与组播转发表项。这与现有技术中二层组播设备在组播组表项中的全部成员端口离开后、立即将组播组的组播组表项与组播转发表项删除的过程不同。
本发明中二层组播设备定时检测组播组表项和组播转发表项、删除该组播组的组播组表项与组播转发表项的核心思想如图7所示,包括步骤:
步骤s701、二层组播设备定时检测组播组表项和组播转发表项中的端口是否为空,若为空,进行步骤s702;不为空时,二层组播设备不进行任何处理并结束;
步骤s702、二层组播设备判断系统的一个等待周期内,是否有组播组的组播流从二层组播设备经过;若没有则进行步骤s703,否则不进行任何操作并结束;
步骤s703、二层组播设备删除该组播组的组播组表项与组播转发表项并结束。
具体而言,本发明中,二层组播设备在用户终端离开后,检测组播流并删除该组播组的组播组表项与组播转发表项的处理流程如图8所示,包括步骤:
步骤s801、二层组播设备接收到用户终端发送IGMP离开报文;
步骤s802、二层组播将该IGMP离开报文向三层网络设备发送;
步骤s803、二层组播设备向发送IGMP离开报文的端口发送IGMP特定组查询报文,对该用户终端是否离开进行确认;
步骤s804、二层组播设备判断该用户终端端口在系统设定的离开确认时间内是否响应,如果有响应则不作任何处理并结束,否则进行步骤s805;
步骤s805、将该用户终端端口从组播组表项和组播转发表项中删除;
步骤s806、二层组播设备判断是否组播组中所有成员都已离开,如果未都离开则不做任何处理并结束,否则进行步骤s807;
步骤s807、二层组播设备判断经过系统的一个等待周期内是否有组播流经过,如果有则不做任何处理并结束,否则进行步骤s808;
步骤s808、二层组播设备删除组播组表项与组播转发表项并结束。
另外一种情况下,为了节约二层组播设备的软硬件资源,在因某种原因而导致三层网络设备发送的组播流中断的情况下,若二层组播设备在经过系统的一个等待周期后仍未发现该组播流经过,即使组播组表项和组播转发表项中的端口集不为空,二层组播设备仍将删除该组播组的组播组表项和组播转发表项。
此情况下的二层组播设备删除该组播组的组播组表项与组播转发表项的处理流程如图9所示,包括步骤:
步骤s901、二层组播设备判断系统的一个等待周期内,是否有组播组的组播流从二层组播设备经过;若有则进行步骤s902,否则不进行任何操作并结束。
步骤s902、二层组播设备删除该组播组的组播组表项与组播转发表项并结束。
本发明还公开了一种二层组播设备,如图10所示,该二层组播设备10包括组播信息存储单元101、组播信息控制单元102、组播报文控制单元103、定时器单元104、三层网络设备侧接口105和用户终端侧接口106。
其中,组播信息存储单元101存储组播组表项和组播转发表项。
组播信息控制单元102管理组播组表项和组播转发表项的建立、和/或修改、和/或删除,其中组播组表项和组播转发表项的建立由从三层网络设备接收到的组播流触发;该单元进一步包括组播组表项成员端口控制子单元1021,在接收到组播流时建立组播组表项,在所有端口中选择组播组的成员端口并对组播组表项进行相应的修改、和/或删除;以及组播转发表项转发端口控制子单元1022,在接收到组播流时建立组播转发表项,并对组播转发表项中的转发目的端口进行相应修改、和/或删除。
组播报文控制单元103,根据组播信息控制单元维护的组播组表项和组播转发表项,控制用户终端与三层网络设备间的报告报文、和/或查询报文、和/或离开报文的转发。定时器单元104用于组播数据流转发过程中的记时。三层网络设备侧接口105和用户终端侧接口106分别用于该二层组播设备与三层网络设备间、该二层组播设备与用户终端间的报文和信息的交互。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。