一种快速组播的处理方法转让专利

申请号 : CN200810085584.1

文献号 : CN101242419B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 贾皓昕叶志宁刘嵘

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种快速组播处理方法,属于互联网通讯中的组播技术。本发明方法中,组播路由器查询三层组播表,命中某条表项后,设置发送组播报文的计数器计数值与所述三层组播表中的组播组出接口数目值相同;所述组播路由器根据所述三层组播表依次向所述各组播组出接口发送与其相对应的携带二层组播头信息的组播报文,每一组播组出接口的组播报文发送完毕后,通知所述组播路由器控制所述发送组播报文的计数器的计数值减1,直到所述计数器的计数值为零时,所述组播路由器结束发送组播报文。本发明大大降低组播路由器负载的负担,从而提高了组播路由器的工作效率,同时节省了大量的内存空间。

权利要求 :

1.一种快速组播的处理方法,其特征在于,

组播路由器查询三层组播表,命中某条表项后,设置发送组播报文的计数器计数值与所述三层组播表中的组播组出接口数目值相同;

所述组播路由器根据所述三层组播表依次向所述各组播组出接口发送与其相对应的携带二层组播头信息的组播报文,每一组播组出接口的组播报文发送完毕后,通知所述组播路由器控制所述发送组播报文的计数器的计数值减1,直到所述计数器的计数值为零时,所述组播路由器结束发送组播报文。

2.如权利要求1所述的方法,其特征在于,

所述三层组播表中至少包括组播组IP、组播组出接口数以及预封装好的所述二层组播头信息。

3.如权利要求2所述的方法,其特征在于,

所述三层组播表还包括源IP信息。

4.如权利要求1至3任一项所述的方法,其特征在于,所述组播路由器在生成组播路由条目时,根据所述组播组出接口的类型生成相应的二层组播头信息,再根据组播组IP、组播组出接口数生成所述三层组播表。

5.如权利要求4所述的方法,其特征在于,

当所述组播组出接口类型为以太接口时,所述二层组播头信息包括协议类型、源介质访问控制地址、转发组播报文入接口标识、转发组播报文的出接口标识以及转发组播报文的组播组出接口的介质访问控制地址信息。

6.如权利要求4所述的方法,其特征在于, 

所述组播路由器命中所述三层组播表中某条表项后,将该表项中所述组播报文的二层组播头信息与三层组播报文采用分段链式存储方式进行存储, 其中与所述各组播组出接口相对应的二层组播头信息使用线性存储方式进行存储。 

7.如权利要求1所述的方法,其特征在于, 

所述组播路由器结束发送组播报文后,释放内存中三层组播报文所占的空间。 

8.如权利要求1所述的方法,其特征在于, 

所述组播组出接口的组播报文发送完毕后,所述接口通过消息形式向所述组播路由器通知发送组播报文结束。 

说明书 :

技术领域

本发明属于互联网通讯中的组播技术,特别涉及一种快速组播处理方法。 

背景技术

组播是一种允许一个或多个发送者(组播源)一次性发送单一的数据包到多个接收者的网络技术。组播源把数据包发送到特定组播组,而只有属于该组播组的地址才能接收到数据包,因此组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包,另外,组播减少了主干网出现拥塞的可能性。其中,组播组中的主机可以是在同一个物理网络,若有组播路由器的支持时,主机还可以来自不同的物理网络。 
实现IP组播传输过程中,发送者(组播源)、接收者以及两者之间的下层网络都必须支持组播,主要包括以下几方面: 
1)交换机、组播路由器必须支持组播; 
2)主机的网络接口支持组播; 
3)有一套用于加入、离开、查询的组管理协议,即IGMP(v1,v2,v3); 
4)有一套IP地址分配策略,并能将第三层IP组播地址映射到第二层MAC地址; 
5)支持IP组播的应用软件; 
6)所有介于发送者(组播源)和接收者之间的组播路由器、TCP/IP栈、防火墙均需支持组播; 
7)主机的TCP/IP实现支持发送和接收IP组播。 
目前,IP组播技术得到硬件、软件厂商的广泛支持,比如,新生产的以 太网卡几乎都支持组播;有些组播路由器不仅支持DVMRP、PIM路由协议、IGMP组管理协议,而且支持专有组管理协议CGMP,再如微软的Windows95支持IP组播和IGMPvl,而Windows 98还支持IGMPv2。对于不支持IP组播传输的中间组播路由器可以采用IP隧道(Tunneling)技术作为过渡方案。由此可以看出IP组播技术的应用环境已基本具备。 
但是,在目前的组播实现技术中,报文是发送给一组接收者的,这些接收者使用一个逻辑地址标识,而组播路由器会主动地把组播信息包拷贝转发到多个接口,即有多少个接口需要发送组播报文,组播路由器就需要将组播报文复制几份之后发送出去,这样随着发送的接口数量的增加,不但组播路由器的内存空间的消耗增加,而且组播路由器的负载也将增加,从而降低组播路由器的处理能力,影响组播的速度。 

发明内容

本发明要解决的技术问题是提供一种快速组播的处理方法,从而降低组播路由器上组播复制产生的工作负载,实现快速组播。 
为了解决上述问题,本发明提供了一种快速组播的处理方法,该方法中,组播路由器查询三层组播表,命中某条表项后,设置发送组播报文的计数器计数值与所述三层组播表中的组播组出接口数目值相同; 
所述组播路由器根据所述三层组播表依次向所述各组播组出接口发送与其相对应的携带二层组播头信息的组播报文,每一组播组出接口的组播报文发送完毕后,通知所述组播路由器控制所述发送组播报文的计数器的计数值减1,直到所述计数器的计数值为零时,所述组播路由器结束发送组播报文。 
进一步地,上述方法中,所述三层组播表中至少包括组播组IP、组播组出接口数以及预封装好的所述二层组播头信息。 
所述三层组播表还包括源IP信息。 
进一步地,上述方法中,所述组播路由器在生成组播路由条目时,根据所述组播组出接口的类型生成相应的二层组播头信息,再根据组播组IP、组播组出接口数生成所述三层组播表。
其中,当所述组播组出接口类型为以太接口时,所述二层组播头信息包括协议类型、源介质访问控制地址、转发组播报文入接口标识、转发组播报文的出接口标识以及转发组播报文的组播组出接口的介质访问控制地址信息。 
所述组播路由器命中所述三层组播表中某条表项后,将该表项中所述组播报文的二层组播头信息与三层组播报文采用分段链式存储方式进行存储,其中与所述各组播组出接口相对应的二层组播头信息使用线性存储方式进行存储。 
进一步地,上述方法中,所述组播路由器结束发送组播报文后,释放内存中三层组播报文所占的空间。 
进一步地,上述方法中,所述组播组出接口的组播报文发送完毕后,所述接口通过消息形式向所述组播路由器通知发送组播报文结束。 
本发明通过对组播报文的计数,从而避免了转发的每个接口都要进行复制一遍报文,节省了由于复制所占的内存空间,当转发的接口数目很多的情况下,会节省大量的内存空间,而且通过对组播报文计数的加减操作来代替对组播报文的复制操作,大大降低组播路由器负载的负担,提高组播路由器的工作效率,实现快速级播。 

附图说明

图1是本发明实现快速组播的流程图; 
图2是本发明技术方案中组播报文在组播路由器内存中存储方式示意图。 

具体实施方式

本发明的主要构思是,当组播路由条目生成时,组播路由器根据不同组播组出接口生成相应的二层组播头信息,组播路由器的内存中组播报文的二层组播头信息使用线性存储方式,组播报文的二层组播头信息与三层组播报 文采用分段链式存储形式,这样,当组播路由器查找组播表命中某条表项后,就可确定发送的组播报文接口的数目,即将发送组播报文的个数以及各个接口的二层组播头信息,并控制发送组播报文的计数器计数值与发送的组播报文接口的数目值相同,这样每向一个转发接口发送一个组播报文时,通过组播表将内存中与该接口相对应的二层组播头信息的组播报文发送出去即可,而每个接口发送组播报文完毕后发送消息给组播路由器,控制发送组播报文的计数器减1,当计数器为0时,表示此组播报文发送结束,释放内存中的三层组播报文所占的空间,但不释放二层组播头信息,这样省去了组播路由器对组播报文的复制操作,大大提高了组播路由器的工作效率。 
下面结合附图及具体实施方式对本发明技术方案作进一步详细说明。 
一种快速组播方法,是基于反向路径传播(RPF,reverse path forwarding)生成组播树所提出的,具体分为以下步骤,如图1所示: 
步骤101:组播包进入组播系统后,判断接收网络接口是否为RPF接口,如果是,则转发到一个输出网络接口集合,源介质访问控制(MAC,Media Access Control)地址被替换成输出网络接口MAC地址,建立三层组播表,如表1所示,否则丢弃该包; 
表1  三层组播表 


表1中,IPSRC表示源IP;IPGRP表示组播组IP;Out Int Num表明该组播组出接口数;MACSRC表示源MAC;VidIN表示转发组播报文入接口标识VLAN ID;VidOUT1...OUT2表示转发组播报文的组播组出接口标识VLAN ID;MACOUT1...OUT2表示转发组播报文的组播组出接口的MAC地址。 
该步骤中,与组播路由协议的源指定表项(S,G)对应的三层组播表包括IPSRC、IPGRP以及预封装好的二层组播头信息;而与不对发送源进行匹配的(*,G)表项对应的三层组播表包括*、IPGRP以及预封装好的二层组播头信息;其中二层组播头信息为L2封装所需的信息,该信息随着组播组出接口类型的不同而不同。本实施例中,组播组出接口为以太接口,此时二层组播头信息包括协议类型、MACSRC、VidIN、VidOUT1、MACOUT1、VidOUT2、MACOUT2......VidOUTN、MACOUTN等信息;在其它实施例中,组播组接口为同步光纤网上的分组接口(POS,Packet Over SONET/SDH)或者异步传输模式接口(ATM,Asynchronous Transfer Mode)等时,二层组播头信息可以包括协议类型及与L2封装信息相关的控制地址等信息。 
步骤102、组播路由器通过使用(S,G)或(*,G),查找三层组播表,匹配到组播表项,即可确定组播报文将要发送到哪些接口,从而确定转发组播报文的个数和组播组出接口信息; 
其中出接口信息包括接口标识以及L2封装所需的信息,在本实施例中,出接口信息包括接口标识和MAC地址,在其它实施例中组播组出接口信息根据其类型的不同而不同,例如,组播组出接口信息也可以是接口标识、协议类型以及L2封装所需的相关控制地址等信息; 
步骤103:组播路由器判断是否命中任何组播项,如果是,进入步骤104,否则丢弃组播报文,并控制发送组播报文的计数器清零,然后转入步骤108; 
步骤104:组播路由器根据命中的组播表项,确定转发报文的个数以及出接口的相关信息,同时将发送组播报文的计数器的计数值更改为转发组播报文的个数值Out Int Num; 
步骤105:组播路由器通过三层组播表向命中的组播表项中的组播组出 接口相对应的二层组播头信息的组播报文发送出去发; 
步骤106:当每个组播组出接口发送报文结束后,接口硬件发送消息通知组播路由器此接口发送结束,组播路由器接收到此消息后,将发送组播报文的控制计数器计数值减1; 
步骤107:组播路由器判断发送组播报文控制计数器计数值是否为零,如果是,进入步骤108,否则返回步骤105; 
步骤108:组播路由器释放三层组播报文所占的内存空间,结束转发组播报文。 
在实现上述快速组播的过程中,由于组播组出接口各不相同,所以在不同组播组出接口发送的组播报文的L2封装不同,因此组播路由器对组播报文按图2所示的方式存储在内存中,即将组播报文采用分段式存储,也就是组播报文的二层组播头信息与组播报文的其它内容采用链式分段存储,对于不同的组播组出接口的二层头采用线性存储方式。 
从上述实施例可以看出,本发明通过对组播报文的计数,从而避免了转发的每个接口都要进行复制一遍报文,节省了由于复制所占的内存空间,同时也减少了对内存访问占用的时间,当转发的接口数目很多的情况下,会节省大量的内存空间,而且通过对组播报文计数的加减操作来代替对组播报文的复制操作,大大降低组播路由器负载的负担,提高组播路由器的工作效率,实现快速级播。 
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。