专利名称:一种路由选择的方法、系统及路由器的制作方法
技术领域:
本发明涉及路由技术领域,特别涉及一种路由选择的方法、系统及路由器。
背景技术:
因特网协议(IP,Internet Protocol)组播是一种数据流传输方式,它是指在IP网络中将数据流以尽力传送(best-effort)的形式发送到网络中的某个确定节点子集。这个节点子集称为组播组(Multicast group)。IP组播的基本思想是,源主机只发送一份数据,这份数据的目的地址为组播组地址;组播组中的主机都可以接收到同样的数据拷贝,并且只有组播组内的主机,即目的主机可以接收该数据拷贝,网络中其它主机则无法接收。
组播方式中,数据传输的路径称为组播分发树,组播路由协议的任务就是构建组播分发树来实现组播数据流的转发。协议无关组播(PIM,ProtocolIndependent Multicast)是常用的域内组播路由协议,包括稀疏模式协议无关组播(PIM-SM,Protocol Independent Multicast-Sparse Mode)和密集模式协议无关组播(PIM-DS,Protocol Independent Multicast-Dense Mode)。在密集模式下,PIM构建以组播源为根的源分发树;在稀疏模式下,PIM构建以组播共享树汇聚点(RP,Rendezvous Point)为根的共享分发树。
PIM协议利用路由器保存的单播路由表作反向路径转发(RPF,ReversePath Forwarding)检查,由此获得组播分发树。具体来讲,当路由器要加入某个组播树时,路由器首先查询自己的单播路由表,选择到达组播源地址或组播RP地址的最短路由所对应的下一跳路由器,将其作为自己的下一跳路由器,进而发送加入报文或嫁接报文到选定的下一跳路由器。下一跳路由器收到此加入报文或嫁接报文后,将接收该报文的接口加入到其保存的组播转发表项的出接口列表中。每个路由器的组播转发表项包括组播源地址、组播组地址、入接口和出接口的集合,共享分发树中路由器的组播转发表项还包括组播RP地址。每个路由器都重复上述过程,直到选定的下一跳路由器为组播源或组播RP时,组播分发树建立完成。
后续在转发消息报文时,按照建成的组播分发树进行转发。路由器将收到的报文复制后从每个出接口转发一份。
上述建立组播分发树的过程中,路由器在查询单播路由表时,如果组播源地址出现等价路由,也就是组播源地址有多个对应的下一跳路由器,需要从多个下一跳路由器中选择一个作为自己的下一跳路由器,现有技术的做法是选择IP地址最大的下一跳路由器作为自己的下一跳路由器。
可见,目前的组播数据流路由选择是根据组播源进行的。在组播源不同的情况下,能够实现组播数据流的负载分担。但是,对于组播源或组播RP相同的情况,当路由器到达组播源或组播RP存在等价路由时,只能固定选择其中一个路由所对应的下一跳路由器作为其下一跳路由器,而其它下一跳路由器则不可能被选到。后续在转发组播数据时也只能按照这一条路径进行转发,无法做到组播数据流的负载分担。
发明内容
本发明实施例提供一种路由选择的方法,在采用该方法建立的组播分发树上分发组播数据流,能够实现组播数据流的负载分担。
本发明实施例还提供了一种路由选择的系统及路由器,在采用该系统及路由器建立的组播分发树上分发组播数据流,能够实现组播数据流的负载分担。
为了达到上述目的,本发明提出的技术方案为一种路由选择的方法,该方法包括路由器将组播转发表项的组播组地址、组播组的掩码、及对应的每个下一跳路由器地址作为输入,采用哈希(hash)算法分别进行计算,在组播转发表项对应的多个下一跳路由器地址中,选择计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。
本发明实施例还提供了一种路由选择的系统,该系统包括多个路由器,其中,所述每个路由器,用于将组播转发表项的组播组地址、组播组的掩码、及对应的每个下一跳路由器地址作为输入,采用hash算法分别进行计算,选择计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。
本发明实施例还提供了一种路由器,该路由器包括计算模块和选择模块;所述计算模块,用于将组播转发表项的组播组地址、组播组的掩码、及对应的每个下一跳路由器地址作为输入,采用hash算法分别进行计算,将计算结果发送给选择模块;所述选择模块,用于对从计算模块接收到的计算结果进行比较,在每个组播转发表项对应的多个下一跳路由器地址中,选出计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。
可见,本发明实施例提出的方法、系统及路由器,在路由器到多个下一跳路由器之间的路由出现等价情况下,该路由器采用hash算法,从路由器的组播转发表项对应的多个下一跳路由器地址中,选择一个hash算法计算结果最大的下一跳路由器作为该路由器针对该组播转发表项的下一跳路由器,进而构建组播分发树。由于使用了hash算法,路由器针对组发转发表选择的下一跳路由器机会均等,因此,在后续在用这种方法、系统及路由器建立的组播分发树上转发组播数据流时,就能够实现组播数据流的负载分担。
图1为本发明实施例组播源相同、组播组不同的路由选择方法示意图;
图2为本发明实施例组播RP相同、组播组不同的路由选择方法示意图;图3为本发明实施例组播源不同、组播组不同的路由选择方法示意图;图4为本发明实施例组播RP不同、组播组不同的路由选择方法示意图;图5为本发明实施例路由选择系统的结构示意图;图6为本发明实施例路由器的结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
本发明实施例提供的方法、系统及路由器,在路由器到多个下一跳路由器之间的路由出现等价情况下,该路由器采用hash算法,从路由器的组播转发表项对应的多个下一跳路由器地址中,选择一个hash算法计算结果最大的下一跳路由器作为该路由器针对该组播转发表项的下一跳路由器,进而在整个系统中构建组播分发树。本发明实施例由于使用了hash算法,路由器针对组发转发表选择的下一跳路由器机会均等,因此,在后续在用这种方法、系统及路由器建立的组播分发树上转发组播数据流时,就能够实现组播数据流的负载分担。
在本发明实施例中,在每个路由器中都存储了组播转发表,该组播转发表具有多个组播转发表项分别与可达的下一跳路由器地址相对应,当然,如果路由器到多个下一跳路由器之间的路由出现等价时,一个组播转发表项就会对应于多个下一跳路由器地址。
在路由器中存储的组播转发表项出现以下几种情况时,可能在路由器到多个下一跳路由器之间的路由出现等价情况组播源相同、组播组不同;组播RP相同、组播组不同;组播源不同、组播组不同;组播RP不同、组播组不同。
以下分别对这几种情况,举例说路由器如何采用hash算法计算,在组播转发表项对应的多个下一跳路由器地址中,选择计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。
实施例一组播源相同、组播组不同的路由选择。如图1,图1为本发明实施例组播源相同、组播组不同的路由选择方法示意图。路由器RTC103到达组播源S1存在两条等价路由,这两条路由对应的下一跳路由器分别为RTA101和RTB102。路由器RTC103上存在(S1,G1)和(S1,G2)组播转发表项,S1为组播源地址,G1和G2为组播组地址。两个组播转发表项的组播源相同、组播组不同。
在选择(S1,G1)对应的下一跳路由器时,路由器RTC103通过hash算法Value(G1,M1,N)=(1103515245*((1103515245*(G1&M1)+12345)XOR N)+12345)mod2^31分别计算两个下一跳路由器RTA101的地址N1和RTB102的地址N2对应的Value,选择Value大的下一跳路由器作为(S1,G1)对应的下一跳路由器。上式中,M1为组播组G1的掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
在选择(S1,G2)对应的下一跳路由器时,路由器RTC103通过hash算法Value(G2,M2,N)=(1103515245*((1103515245*(G2&M2)+12345)XOR N)+12345)mod2^31分别计算两个下一跳路由器RTA101的地址N1和RTB102的地址N2对应的Value,选择Value大的下一跳路由器作为(S1,G2)对应的下一跳路由器。上式中,M2为组播组G2的掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
由于使用了hash算法,路由器针对组播组地址、组播组掩码选择的下一跳路由器能够有效地散列开,做到针对不同的组播转发表项选择不同的下一跳路由器作为其下一跳路由器。本例中,针对(S1,G1)选择RTA101作为下一跳路由器,针对(S1,G2)选择RTB102作为下一跳路由器。
在选定了下一跳路由器后,选出的下一跳路由器可以重复上述同样的步骤,直到下一跳路由器为S1时,组播分发树建成。在该组播分发树上转发数据流,可以实现组播数据流的负载分担。
在上述hash算法中,所有地址G1、G2、M1、M2、N1、N2都是32位的IP地址。如果出现IPv6地址,则将该IPv6地址每32位截取一段,将截取的4个32位的二进制序列进行按位异或操作,生成一个新的32位二进制序列,代入上述hash算法的式子进行计算。
实施例二组播RP相同、组播组不同的路由选择。如图2,图2为本发明实施例组播RP相同、组播组不同的路由选择方法示意图。路由器RTC203到达组播RP1存在两条等价路由,这两条路由对应的下一跳路由器分别为RTA201和RTB202。路由器RTC203上存在(*,G1)和(*,G2)组播转发表项,其中“*”表示所有的源地址,G1、G2为组播组地址。两个组播转发表项的组播RP相同、组播组不同。
在选择(*,G1)对应的下一跳路由器时,路由器RTC203通过hash算法Value(G1,M1,N)=(1103515245*((1103515245*(G1&M1)+12345)XOR N)+12345)mod2^31分别计算两个下一跳路由器RTA201的地址N1和RTB202的地址N2对应的Value,选择Value大的下一跳路由器作为(*,G1)对应的下一跳路由器。上式中,M1为组播组G1的掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
在选择(*,G2)对应的下一跳路由器时,路由器RTC203通过hash算法Value(G2,M2,N)=
(1103515245*((1103515245*(G2&M2)+12345)XOR N)+12345)mod2^31分别计算两个下一跳路由器RTA201的地址N1和RTB202的地址N2对应的Value,选择Value大的下一跳路由器作为(*,G2)对应的下一跳路由器。上式中,M2为组播组G2的掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
由于使用了hash算法,路由器针对组播组地址、组播组掩码选择的下一跳路由器能够有效地散列开,做到针对不同的组播转发表项选择不同的下一跳路由器作为其下一跳路由器。本例中,针对(*,G1)选择RTA201作为下一跳路由器,针对(*,G2)选择RTB202作为下一跳路由器。
在选定了下一跳路由器后,选出的下一跳路由器可以重复上述同样的过程,直到下一跳路由器为RP1时,组播分发树建成。在该组播分发树上转发数据流,实现组播数据流的负载分担。
在上述hash算法中,所有地址G1、G2、M1、M2、N1、N2都是32位的IP地址。如果出现IPv6地址,则将该IPv6地址每32位截取一段,将截取的4个32位的二进制序列进行按位异或操作,生成一个新的32位二进制序列,代入上述hash算法的式子进行计算。
实施例三组播源不同、组播组不同的路由选择。如图3,图3为本发明实施例组播源不同、组播组不同的路由选择方法示意图。路由器RTC303到达组播源S1、S2均存在两条等价路由,对应的下一跳路由器分别为RTA301和RTB302。路由器RTC303上存在(S1,G1)和(S2,G2)组播转发表项,S1、S2为组播源地址,G1、G2为组播组地址。两个组播转发表项的组播源和组播组都不同。
在选择(S1,G1)对应的下一跳路由器时,路由器RTC303通过hash算法Value(S1,G1,M1,N)=(1103515245*((1103515245*((S1^G1)&M1)+12345)XOR N)+12345)mod 2^31分别计算两个下一跳路由器RTA301的地址N1和RTB302的地址N2对应的Value,选择Value大的下一跳路由器作为(S1,G1)对应的下一跳路由器。上式中,M1为组播组G1的掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
在选择(S2,G2)对应的下一跳路由器时,路由器RTC303通过hash算法Value(S2,G2,M2,N)=(1103515245*((1103515245*((S2^G2)&M2)+12345)XOR N)+12345)mod2^31分别计算两个下一跳路由器RTA301的地址N1和RTB302的地址N2对应的Value,选择Value大的下一跳路由器作为(S2,G2)对应的下一跳路由器。上式中,M2为组播组G2的掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
由于使用了hash算法,路由器针对组播源地址、组播组地址、组播组掩码选择的下一跳路由器能够有效地散列开,做到针对不同的组播转发表项选择不同的下一跳路由器作为其下一跳路由器。本例中,针对(S1,G1)选择RTA301作为下一跳路由器,针对(S2,G2)选择RTB302作为下一跳路由器。
在选定了下一跳路由器后,选出的下一跳路由器可以重复上述同样的过程,直到下一跳路由器为S1或S2时,组播分发树建成。在该组播分发树上转发数据流,可以实现组播数据流的负载分担。
在上述hash算法中,所有地址S1、S2、G1、G2、M1、M2、N1、N2都是32位的IP地址。如果出现IPv6地址,则将该IPv6地址每32位截取一段,将截取的4个32位的二进制序列进行按位异或操作,生成一个新的32位二进制序列,代入上述hash算法的式子进行计算。
实施例四组播RP不同、组播组不同的路由选择。如图4,图4为本发明实施例组播RP不同、组播组不同的路由选择方法示意图。路由器RTC403到达组播RP1、RP2均存在两条等价路由,对应的下一跳路由器分别为RTA401和RTB402。路由器RTC上存在(RP1,G1)和(RP2,G2)组播转发表项,RP1、RP2为组播RP地址,G1、G2为组播组地址。两个组播转发表项的组播RP和组播组都不同。
在选择(RP1,G1)对应的下一跳路由器时,路由器RTC403通过hash算法Value(RP1,G1,M1,N)=(1103515245*((1103515245*((RP1^G1)&M1)+12345)XOR N)+12345)mod2^31分别计算两个下一跳路由器RTA401的地址N1和RTB402的地址N2对应的Value,选择Value大的下一跳路由器作为(RP1,G1)对应的下一跳路由器。上式中,M1为组播组G1的掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
在选择(RP2,G2)对应的下一跳路由器时,路由器RTC403通过hash算法Value(RP2,G2,M2,N)=(1103515245*((1103515245*((RP2^G2)&M2)+12345)XOR N)+12345)mod2^31分别计算两个下一跳路由器RTA401的地址N1和RTB402的地址N2对应的Value,选择Value大的下一跳路由器作为(RP2,G2)对应的下一跳路由器。上式中,M2为组播组G2的掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
由于使用了hash算法,路由器针对组播RP地址、组播组地址、组播组掩码选择的下一跳路由器能够有效地散列开,做到针对不同的组播转发表项选择不同的下一跳路由器作为其下一跳路由器。本例中,针对(RP1,G1)选择RTA401作为下一跳路由器,针对(RP2,G2)选择RTB402作为下一跳路由器。
在选定了下一跳路由器后,选出的下一跳路由器可以重复上述同样的过程,直到下一跳路由器为RP1或RP2时,组播分发树建成。在该组播分发树上转发数据流,可以实现组播数据流的负载分担。
在上述hash算法中,所有地址RP1、RP2、G1、G2、M1、M2、N1、N2都是32位的IP地址。如果出现IPv6地址,则将该IPv6地址每32位截取一段,将截取的4个32位的二进制序列进行按位异或操作,生成一个新的32位二进制序列,代入上述hash算法的式子进行计算。
实施例五等价路由情况下组播数据流路由选择的系统。参见图5,图5为本发明实施例路由选择系统的结构示意图。
该系统包括多个路由器。其中,路由器RTA501的组播转发表项(S1,G1)对应的下一跳路由器有两个RTB502和RTC503。其中S1为组播源地址,G1为组播组地址。路由器RTA501采用hash算法,选择组播转发表项(S1,G1)对应的下一跳路由器为RTB502。
选定RTB502为下一跳路由器后,如果RTB502存在等价路由,则重复上述的选择过程,选定它的下一跳路由器,否则直接选择到组播源RTn506的最短路由对应的下一跳路由器作为其下一跳路由器。直到下一跳路由器为组播源RTn506。路由器RTA501、所有途经的下一跳路由器、及组播源RTn506共同组成本发明的系统。
本发明系统也可以将组播源RTn506替换为组播RP。
实施例六等价路由情况下组播数据流路由选择的路由器。参见图6,图6为本发明实施例路由器的结构示意图。
路由器RTa610包括计算模块612和选择模块613。
假设路由器RTa610的组播转发表项(S1,G1)对应的下一跳路由器有两个RTb620和RTc630。其中S1为组播源地址,G1为组播组地址,RTb620的地址为N1,RTc630的地址为N2。
计算模块612进行如下hash计算
Value(G1,M1,N1)=(1103515245*((1103515245*(G1&M1)+12345)XOR N1)+12345)mod2^31Value(G1,M1,N2)=(1103515245*((1103515245*(G1&M1)+12345)XOR N2)+12345)mod2^31其中,M1为组播组G1的掩码,&为按位与,XOR为按位异或,mod为取余。
计算模块612将计算结果发送给选择模块613。
选择模块613将收到的两个计算结果Value(G1,M1,N1)和Value(G1,M1,N2)进行比较,选择结果最大的下一跳路由器作为路由器RTa610的组播转发表项(S1、G1)对应的下一跳路由器。假设Value(G1,M1,N1)大,则选择RTb620。
计算模块还可以进行如下hash计算Value(S,G,M,N)=(1103515245*((1103515245*((S^G)&M)+12345)XOR N)+12345)mod2^31其中,S为源地址、G为组播组地址、M为组播组掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
或Value(RP,G,M,N)=(1103515245*((1103515245*((RP^G)&M)+12345)XOR N)+12345)mod2^31其中,RP为组播RP地址、G为组播组地址、M为组播组掩码,N为下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
可见,本发明实施例能够在出现等价路由时,根据组播组信息、组播源和组播组信息、以及组播RP和组播组信息,选择不同的路由。在使用这种方法建立的组播分发树上分发数据流,可以做到组播数据流的负载分担。
权利要求
1.一种路由选择的方法,其特征在于,该方法包括路由器将组播转发表项的组播组地址、组播组的掩码、及对应的每个下一跳路由器地址作为输入,采用哈希hash算法分别进行计算,在组播转发表项对应的多个下一跳路由器地址中,选择计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。
2.根据权利要求1所述的方法,其特征在于,所述采用hash算法分别进行计算为Value(G,M,N)=(1103515245*((1103515245*(G&M)+12345)XOR N)+12345)mod 2^31其中,G为组播转发表项的组播组地址,M为组播转发表项的组播组的掩码,N为组播转发表项对应的每个下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
3.根据权利要求2所述的方法,其特征在于,在采用hash算法分别进行计算之前,还包括组播转发表项的组播组地址、组播组的掩码、或/和下一跳路由器地址为因特网协议版本6地址IPv6地址时,将该IPv6地址每32位截取一段,将截取的4个32位的二进制序列进行按位异或操作,生成一个32位二进制序列,分别作为hash算法中使用的G、M、或/和N。
4.根据权利要求1所述的方法,其特征在于,所述采用hash算法分别进行计算,还包括将组播转发表项的组播源地址作为输入进行计算,所述采用hash算法进行计算为Value(S,G,M,N)=(1103515245*((1103515245*((S^G)&M)+12345)XOR N)+12345)mod2^31其中,S为组播转发表项的组播源地址,G为组播转发表项的组播组地址,M为组播转发表项的组播组的掩码,N为组播转发表项的每个下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
5.根据权利要求4所述的方法,其特征在于,在采用hash算法分别进行计算之前,还包括组播转发表项的组播源地址、组播组地址、组播组的掩码、或/和下一跳路由器地址为IPv6地址时,将该IPv6地址每32位截取一段,将截取的4个32位的二进制序列进行按位异或操作,生成一个32位二进制序列,分别作为hash算法中使用的S、G、M、或/和N。
6.根据权利要求1所述的方法,其特征在于,所述采用hash算法分别进行计算,还包括将组播转发表项的组播共享树汇聚点RP地址作为输入进行计算;所述采用hash算法进行计算为Value(RP,G,M,N)=(1103515245*((1103515245*((RP^G)&M)+12345)XOR N)+12345)mod2^31其中,RP为组播转发表项的组播RP地址,G为组播转发表项的组播组地址,M为组播转发表项的组播组的掩码,N为组播转发表项的每个下一跳路由器地址,&为按位与,XOR为按位异或,mod为取余。
7.根据权利要求6所述的方法,其特征在于,在采用hash算法分别进行计算之前,还包括组播转发表项的组播RP地址、组播组地址、组播组的掩码、或/和下一跳路由器地址为IPv6地址时,将该IPv6地址每32位截取一段,将截取的4个32位的二进制序列进行按位异或操作,生成一个32位二进制序列,分别作为hash算法中使用的RP、G、M、或/和N。
8.一种路由选择的系统,其特征在于,该系统包括多个路由器,其中,所述每个路由器,用于将组播转发表项的组播组地址、组播组的掩码、及对应的每个下一跳路由器地址作为输入,采用hash算法分别进行计算,在组播转发表项对应的多个下一跳路由器地址中,选择计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。
9.根据权利要求8所述的系统,其特征在于,所述路由器包括计算模块和选择模块;所述计算模块,用于将组播转发表项的组播组地址、组播组的掩码、及对应的每个下一跳路由器地址作为输入,采用hash算法分别进行计算,将计算结果发送给选择模块;所述选择模块,用于对从计算模块接收到的计算结果进行比较,在组播转发表项对应的多个下一跳路由器地址中,选出计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。
10.一种路由器,其特征在于,该路由器包括计算模块和选择模块;所述计算模块,用于将组播转发表项的组播组地址、组播组的掩码、及对应的每个下一跳路由器地址作为输入,采用hash算法分别进行计算,将计算结果发送给选择模块;所述选择模块,用于对从计算模块接收到的计算结果进行比较,在每个组播转发表项对应的多个下一跳路由器地址中,选出计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。
全文摘要
本发明公开了一种路由选择的方法、系统及路由器。本发明方法的步骤为路由器将组播转发表项的组播组地址、组播组的掩码、及对应的每个下一跳路由器地址作为输入,采用哈希(hash)算法分别进行计算,在组播转发表项对应的多个下一跳路由器地址中,选择计算结果最大的下一跳路由器作为该组播转发表项对应的下一跳路由器。在采用该方法建立的组播分发树上分发组播数据流,能够实现组播数据流的负载分担。
文档编号H04L12/18GK101060494SQ200710107038
公开日2007年10月24日 申请日期2007年5月17日 优先权日2007年5月17日
发明者郭锋, 程松明, 周小牛, 张海峰 申请人:华为技术有限公司