一种大容量组播路由表下提高组播数据转发效率的方法

文档序号:7943395阅读:298来源:国知局
专利名称:一种大容量组播路由表下提高组播数据转发效率的方法
技术领域
本发明一般涉及网络通信技术,特别涉及一种用于减少组播PIM协议的路由表项从而提高大容量组播路由情况下的组播数据转发效率的方法。
背景技术
传统的互联网应用都是用点对点的IP传输(单播技术),而点对多点的IP传输(广播技术)只限于局域网内部应用,组播技术则是在广域网内实现点到多点的IP传输技术。
20世纪80年代,斯坦福大学的博士生Steve Deering开始了三层组播技术的研究并于1991年12月发表了其博士论文——《在一种数据报网络里的组播》。在该论文中描述了组播组管理IGMP协议(互联网组管理协议)和组播路由DVMRP协议(距离矢量组播路由协议)的基础,它成功地把组播技术推进到IP层。关于IP组播技术的探索一直在进行,在Deering博士的基础上,人们陆续完成了PIM(协议无关组播协议)等组播路由协议,把组播协议推向整个互联网。组播路由技术的基本思想是在离接收者最近的地方才复制组播数据,所以可以大大节省大量重复数据传输时的网络带宽,因而越来越多的人相信,在今后的宽带互联网应用中,组播技术将成为多媒体数据通信的主要路由协议之一。
组播数据依靠组播路由表项完成转发。在PIM-DM协议(PIM组播路由协议密集模式)中,组播路由项的表现形式都是(S,G),即,通过一个源(S)和一个组(G)组成的二元组表达组播路由的基本信息,其中S和G都是唯一的IP地址而不是一个网段。

图1为常规组播数据转发过程的示意图,如图1所示,当组播数据到达路由器的时候,路由器将根据该数据的源地址和目的组地址完成组播路由表的查找并转发。
PIM-SM协议(PIM组播路由协议稀疏模式)相对复杂一些。对于PIM-SM协议来说,除了需有与PIM-DM协议相同的(S,G)路由表外,还有(*,G)路由表来指导数据在共享树的转发。PIM-SM协议中,组播数据的转发分成两种情况,一种是基于汇集点的组播共享树转发,这种转发依靠(*,G)路由表项,一种是基于源的最短路径树转发,这种转发基于(S,G)路由表项。(*,G)路由表项与(S,G)路由表项的区别在于前者可以匹配所有的S,也就是说,不管哪一个组播源发送到组播组G的数据,都可以匹配到这条路由,但是需要指出的是,(*,G)路由是基于汇聚点的共享转发树建立的,不一定是组播源到组播组的最佳路径,因此PIM-SM协议在用户收到组播数据报文后,还有一个从共享转发树到最短路径转发树切换的过程,切换完成后,从组播源S到组播接收者G之间的路由器都创建(S,G)路由表项。图2为数据传输共享树和最短路径树的示意图。在图2中,共享树路径由B-C-D表示,最短路径树则由A-E-D表示。因此,从图2可以看出,组播数据从S到G沿最短路径树要比共享树少经过一跳路由器。
通过以上描述,我们可以看出(S,G)表项是组播PIM协议中使用最多的组播表项,当组播用户和组播源比较多的时候,(S,G)表项的数目也比较多,因而减少(S,G)表项的数目将大大节约路由器的内存,提高路由查找速度和数据转发效率。
另外,组播在现阶段仅处在应用的起步阶段,应用较少,在实际的应用中,路由表项数目很少,因而对路由器的实际影响还看不出来,减少路由表的需求也不迫切,目前的协议中都没有涉及这方面的描述。
从另一个方面来看,组播PIM-SM协议引入了共享树的概念,客观上把组播在共享树上的路由表项数目减少了很多,在共享树上转发数据,对应于通一个组G的多个组播源S(S1到Sn),仅需要一条组播路由(*,G)就可以匹配。与PIM-SM协议类似,其他基于共享树的组播协议也有类似功能。
但是,上述实现仅在组播共享树上解决了路由数量的问题,在最短路径树上依旧存在大量的(S,G)路由表项,而且在实际应用中,考虑到数据转发效率,所有的共享树转发都会切换成最短路径树转发,因此共享树的(*,G)表项对减少组播路由项的作用不大。
总之,在现有技术的组播路由表中存在大量的(S,G)路由表项,在组播路由多的情况下严重影响组播数据的转发效率,消耗路由器的内存资源,因此为了提高组播数据的转发效率,支持大容量的组播应用,必须减少(S,G)路由表项。

发明内容
因此,本发明就是针对解决现有技术中的上述问题而做出的,其目的是提供一种能够减少组播PIM协议的路由表项从而提高大容量组播应用下的组播数据转发效率的方法。
为了实现上述目的,本发明提供了一种减少组播PIM协议的路由表项从而提高大容量组播路由存在的情况下组播数据转发效率的方法,该方法包括以下步骤1)组播路由器完成组播报文路由的创建;2)组播路由器进行组播路由聚合,生成聚合组播路由;3)当聚合完成后,从组播源发送的新的组播数据查找组播路由,使用聚合后的路由转发。
进一步,对于PIM-SM协议,在所述的步骤1)和步骤2)之间还包括从共享树切换到最短路径树的步骤。
其中,在所述步骤2)中只有组播组地址、入接口、出接口列表和标志位相同组播路由才可以聚合。
在上述步骤中,所生成的新的聚合组播路由的特征是该路由的入接口和出接口列表与原来的路由相同,各种标志位也相同,组播源源地址为聚合后的网段地址,并附带网段信息,组播组地址不变。
其中,计算组播源地址的掩码的方法优选地采用无差别地址掩码编码方法。
另外,所述步骤3)中优选地按照源地址最佳匹配原则查找组播路由。
进一步,上述步骤2)包括以下步骤2-1)检查组播路由表,判断是否存在多于1条的组播路由,如无,则结束聚合过程;如有则把同一组播组地址对应的组播路由找出来,进行排序,并取第一条路由为当前路由;2-2)判断是否还存在其他路由,如不存在,则结束聚合过程,如存在,则取下一条路由,并判断所取路由是否可以与当前路由聚合;如不可聚合,将所取路由设为当前路由,重复本步骤;如可聚合,则
2-3)对于可以聚合的路由表,生成一条新的聚合组播路由。以及2-4)判断是否有下一条路由,如无,则结束聚合过程;如有,取下一条路由,并判断该路由是否能和步骤2-3)中的聚合组播路由聚合;如不能,将所取路由设为当前路由,回到步骤2-2;如能则完成本路由与聚合路由的聚合,然后重复本步骤。
进一步所述步骤2-3)包括以下步骤a.计算组播源地址的掩码;b.生成聚合路由;c.将聚合组播路由中的周期性定时器,设为聚合前路由中的周期性定时器的最小值。
更进一步,本发明所提供的减少组播PIM协议的路由表项从而提高组播数据转发效率的方法中,还包括简化处理加入剪枝报文的步骤4),其特征在于报文中源地址信息是路由表项聚合后的网段地址。
本发明的方法对处在最短路径树上的组播路由器中的(S,G)路由表项按照组播源地址S实现聚合。其有益效果在于1)组播路由的源地址是单播IP地址,而单播的IP地址分配是有规律的,一般是按照一个网段进行分配,因此,按照单播地址实现组播(S,G)路由的聚合可以大大减少路由器中的组播路由数量,减少对路由器内存的消耗;2)同时因为路由表的数量减少,路由查找效率也得到相应提高,如果采用聚合路由指导组播数据转发,可以提高组播转发效率。3)优化后的加入剪枝报文可以大大减少,把大容量下的组播应用的协议消耗减少到最少。
附图的简要说明图1为常规组播数据转发过程的示意图;图2为数据传输共享树和最短路径树的示意图;图3为组播路由聚合的例子;图4为聚合过程示意图。
具体实施例方式
下面将结合附图对本发明的方法进行详细的描述。
为了实现组播路由的聚合,需要完成如下步骤1、组播路由器按照协议规定的正常流程完成组播报文路由的创建,两个组播源S1和S2向组播组G发送组播数据。为了便于描述,在本实施例中,S1的IP地址为10.10.1.2,S2的IP地址为10.10.1.5,组播组地址G为224.2.2.2。
如果是PIM-SM协议,需要完成从共享树切换到最短路径树,这样在组播源和组播接收者之间的所有路由器都有(10.10.1.2,224.2.2.2)和(10.10.1.5,224.2.2.2)路由。
2、组播路由器启动组播路由聚合过程,查找到同一组播组224.2.2.2的组播路由,发现有两条组播路由到组224.2.2.2,而且这两条路由除了源的IP地址不相同外,其他都相同,符合聚合条件,按照无差别编址方式进行聚合,生成新的组播路由(10.10.1.0/29,224.2.2.2),完成组播聚合的过程,把原来的两条组播路由删除(见图3)。需要注意的是,上述组播路由中的29代表着掩码的长度是29位,其含义等同于如下的表示方法(10.10.1.0/255.255.255.248,224.2.2.2),这表明它是一个网段的路由。
3、当聚合完成后,从源S1和S2发送的新的组播数据使用聚合后的路由完成转发。
以上描述了本方案的实现过程,下面就其中路由聚合的实现进行具体描述。
组播(S,G)路由除了包含组播源S和组播组信息外,一般还应该包括入接口,出接口列表,标志位和一些定时器值,只有以上所述中组地址、入接口、出接口列表和标志位相同的(S,G)路由表项才可以聚合。聚合后,原来路由表项还包括许多定时器,对于其中周期性的定时器,如定时的加入剪枝报文定时器,取原来所有表项的最小的值,这样保证处在组播转发树上游的路由器的表项不超时,其他定时器的取值根据实际进行分析,每个厂商可能定义自己特有的一些定时器,故剩余的定时器与每个厂商的具体实现相关。聚合后的路由需要保持原来的组播源S信息,以便路由分拆使用,在本实施例中,组播源信息以两种推荐的方式存在于聚合后的路由中,1、双向链表形式,在源比较少的情况下应用效率较高;2、Hash(哈希)表的形式,在源比较多的时候效率较高。
为完成组播路由的聚合,如图4所示,步骤2)包括以下步骤
2-1、检查组播路由表,判断是否存在多于1条的组播路由,如无,则结束聚合过程;如有则把同一组播组地址对应的组播路由找出来,进行排序,并取第一条路由;2-2、判断是否还存在其他路由,如不存在,则结束聚合过程,如存在,则取下一条路由,并按照上述标准判断其是否可以聚合;如不可聚合,重复本步骤;如可聚合,则2-3、对于可以聚合的路由表,计算其组播源地址的掩码,单播协议计算掩码的方法有两种,一种是采用无差别地址掩码编码(取源地址的最佳掩码,即能包含所有IP地址的最小掩码),一种采用自然网段聚合,前者处理比较复杂,计算量大,但路由匹配效果好,后者处理简单,但路由匹配不精确。考虑到组播的聚合条件比单播协议严格,当同一自然网段的多个源S到组G的组播路由出或入接口不一致时,按照自然网段聚合法表达聚合关系比较复杂,因此优选地采用无差别地址掩码编码方式实现组播路由的聚合。
然后生成一条新的聚合组播路由,该路由的入接口和出接口列表与原来的路由相同,各种标志位也相同,组播源源地址为聚合后的网段地址,要附带网段信息,组播组地址不变。然后2-4、取下一条路由,并判断该路由是否能和步骤2-3)聚合路由聚合;如不能,则回到步骤2-2;如能回到步骤2-3。
当有组播数据到达路由器的时候,按照源地址最佳匹配原则查找组播路由(即掩码最小),这样做的目的是如果组播路由不能参与聚合,其源地址掩码是32位,一定是最优的。
下面以一个实际的例子说明上面的过程假设路由器内到同一组224.1.1.1有5条组播路由如下(10.1.1.1,224.1.1.1)、(10.1.1.2,224.1.1.1)、(202.1.1.9,224.1.1.1)、(202.1.1.1,224.1.1.1)和(202.1.1.2,224.1.1.1)。
第一步,判断是否组224.1.1.1下是否有多于1条组播路由,然后对这5条路由按照源地址IP进行排序,结果如下(10.1.1.1,224.1.1.1)、(10.1.1.2,224.1.1.1)、(202.1.1.1,224.1.1.1)、(202.1.1.2,224.1.1.1)、(202.1.1.9,224.1.1.1)。
第二步,取第一条路由(10.1.1.1,224.1.1.1),然后再取路由(10.1.1.2,224.1.1.1),判断这两条路由是否能聚合,为了说明我们的问题,我们假设这两条路由能够聚合,则生成新聚合路由(10.1.1.0/255.255.255.252,224.1.1.1),聚合路由的生成过程如下首先,比较两条路由的入接口和出接口是否一致,如果一致,然后再比较两条路由的标记位是否相同,如果相同,表明两条路由能够聚合,然后计算能包含IP地址10.1.1.1和10.1.1.2的最小网段,并检查是否和现有的组播路由网段冲突,经过计算,网段为10.1.1.0/255.255.255.252,且与现有的组播路由没有冲突,那么在组播路由表中生成新的组播路由(10.1.1.0/255.255.255.252,224.1.1.1),其出入接口从聚合前的路由复制,标记位也做同样处理,最后把原来的两条路由删除,并把原来的源信息10.1.1.1和10.1.1.2记录在聚合路由中,以备将来表项分裂使用。
第三步,取路由(202.1.1.1,224.1.1.1),判断是否能和已经聚合的路由(10.1.1.0/255.255.255.252,224.1.1.1)聚合,为了说明问题,假设这个路由的标记与上面已经聚合的不一致,则该路由不能聚合。
第四步,继续取下一条路由(202.1.1.2,224.1.1.1),判断是否能和刚才的路由(202.1.1.1,224.1.1.1)聚合,假设能聚合,生成新的聚合路由(202.1.1.0/255.255.255.252,224.1.1.1)。
第五步,继续取下一条路由(202.1.1.9,224.1.1.1),判断是否可以和聚合路由(202.1.1.0/255.255.255.252,224.1.1.1)聚合,假设能够聚合,则生成新的路由(202.1.1.0/255.255.255.240,224.1.1.1)。
第六步,查找组224.1.1.1下是否还有组播路由,没有,本组播组的路由聚合完成。
可以看到,通过聚合,原来的5条组播路由变为2条。
在特定情况下,聚合路由会发生分裂1、已经聚合的路由收到了加入剪枝报文,使其状态改变,不再符合聚合的条件。
2、路由器创建了新的路由项。该路由项的源地址在已经聚合组播路由范围内,但原来的组播聚合路由并不能包括该路由。
对于情况1,因为原来的源S的信息保存在路由表项中,聚合路由以这条路由为界,分裂成两条聚合路由,因为采用无差别地址掩码编码实现聚合,因此这种分裂是可以进行的,而这条引起聚合路由分裂的组播路由自己形成一条非聚合路由。
对于情况2,新生成的组播路由被已经聚合的组播路由覆盖,但新的路由并不符合聚合条件,因此需要对原来聚合的路由进行分裂,以这条路由为界,把原来的聚合路由分裂成两个聚合路由。
路由实现聚合后,可以对PIM-SM中的加入(join)报文进行简化处理,按照组播协议规定,处在组播转发树的下游路由器要定期向上游路由器发送加入报文,加入报文是按照每个(S,G)表项构造的,因此下游路由器有很多表项的时候,发送Join报文到上游的数目也很多,严重影响了路由器的处理性能,但实现组播路由聚合后,可以把多个报文变为一个报文发送,减少报文发送的数量。例如聚合前,路由器有(S,G)表项100个,在每次Join报文发送的时候,需要构造100个报文发送。但如果实现聚合,100个组播路由表项变为5个聚合后的表项,因为聚合的路由之间的属性一致,故可以向共同的上游发送加入报文,在上例中,报文中源地址信息不再是单独的主机地址,而是一个网段地址,则相应的组播加入报文数目也减少到5个,上游路由器收到加入报文后,按照报文中的掩码来匹配组播路由,如果能匹配,则刷新相应的组播路由,因此聚合后的join报文处理效果是明显的。
需要注意的是,如果上游路由器不支持路由聚合,这种聚合后的报文就不能发送,还是应该按照每个(S,G)表项单独发送Join报文。这个功能依靠手工配置完成。
加入剪枝报文的简化可以大大提高组播协议本身的效率,减少组播协议消耗,从客观上空闲出更多的CPU能力处理转发事件,因而可进一步提高组播数据的转发效率。
采用无差别的编码方式实现路由聚合也可以实现转发表项的简化,对于采用软件转发的路由设备,聚合后的路由直接就可以指导组播数据的转发,由于表项的减少,查找表项的耗费时间也将减少,故转发过程的查找效率将得到提高。对于采用硬件转发的路由器,对于的转发表项可以从聚合后的路由生成,如果硬件平面支持掩码的源地址查找,则这些聚合的路由表项可以直接下发到微码,如果不支持,则可以根据聚合后表项记录的源S地址,把对应的聚合表项转换为独立的(S,G)表项信息下发到微码。
虽然以上对本发明的描述是参考其具体实施方式
来进行的,但是,这些描述不应当被认为是对本发明的限制。任何不背离本发明精神和范围的修改和变换都属于由附带权利要求所定义的本发明的范围之内。
权利要求
1.一种大容量组播路由表下提高组播数据转发效率的方法,包括以下步骤1)组播路由器完成组播报文路由的创建;2)组播路由器进行组播路由聚合,生成聚合组播路由;以及3)当聚合完成后,从组播源发送的新的组播数据查找组播路由,使用聚合后的路由转发。
2.根据权利要求1所述的大容量组播路由表下提高组播数据转发效率的方法,其特征在于对于PIM-SM协议,在所述的步骤1)和步骤2)之间述包括从共享树切换到最短路径树的步骤。
3.根据权利要求1所述的大容量组播路由表下提高组播数据转发效率的方法,其特征在于在所述步骤2)中只有组播组地址、入接口、出接口列表和标志位相同的组播路由才可以聚合。
4.根据权利要求1、2或3所述的大容量组播路由表下提高组播数据转发效率的方法,其特征在于所生成的聚合组播路由的入接口和出接口列表中,各种标志位与原来的路由相同,组播源源地址为聚合后的网段地址,并附带网段信息,组播组地址不变。
5.根据权利要求4所述的大容量组播路由表下提高组播数据转发效率的方法,其特征在于所述网段地址采用无差别地址掩码编码方法计算。
6.根据权利要求1、2或3所述的大容量组播路由表下提高组播数据转发效率的方法,其特征在于所述步骤3)按照源地址最佳匹配原则查找组播路由。
7.根据权利要求1、2或3所述的大容量组播路由表下提高组播数据转发效率的方法,其特征在于所述步骤2)包括以下步骤2-1)检查组播路由表,判断是否存在多于1条的组播路由,如无,则结束聚合过程;如有则把同一组播组地址对应的组播路由找出来,进行排序,并取第一条路由为当前路由;2-2)判断是否还存在其他路由,如不存在,则结束聚合过程,如存在,则取下一条路由,并判断所取路由是否可以与当前路由聚合;如不可聚合,将所取路由设为当前路由,重复本步骤;如可聚合,则2-3)对于可以聚合的路由表,生成一条新的聚合组播路由。以及2-4)判断是否有下一条路由,如无,则结束聚合过程;如有,取下一条路由,并判断该路由是否能和步骤2-3)中的聚合组播路由聚合;如不能,将所取路由设为当前路由,回到步骤2-2;如能则完成本路由与聚合路由的聚合,然后重复本步骤。
8.根据权利要求7所述的大容量组播路由表下提高组播数据转发效率的方法,其特征在于步骤2-3)包括以下步骤a.计算组播源地址的掩码;b.生成聚合路由;c.将聚合组播路由中的周期性定时器,设为聚合前路由中的周期性定时器的最小值。
9.根据权利要求1或2所述的大容量组播路由表下提高组播数据转发效率的方法,其特征在于还包括步骤4)将加入剪枝报文中源地址信息设置为路由表项聚合后的网段地址。
全文摘要
本发明公开了一种大容量组播路由表下提高组播数据转发效率的方法,该方法包括以下步骤1)组播路由器完成组播报文路由的创建;2)组播路由器进行组播路由聚合,生成聚合组播路由;以及3)当聚合完成后,从组播源发送的新的组播数据查找组播路由,使用聚合后的路由转发。本发明通过按照单播地址实现组播(S,G)路由的聚合,从而大大减少了路由器中的组播路由数量,并减少对路由器内存的消耗。同时,因为路由表的数量减少,路由查找效率也得到相应提高,如果采用聚合路由指导组播数据转发,可以提高组播转发效率。另外,优化后的加入剪枝报文可以大大减少,从而将大容量下的组播应用的协议消耗减少到最小。
文档编号H04L12/24GK1595879SQ03156710
公开日2005年3月16日 申请日期2003年9月8日 优先权日2003年9月8日
发明者赵文鹏 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1