一种在直连广播链路上路由的计算方法及系统转让专利

申请号 : CN200610061334.5

文献号 : CN100591040C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张江平傅超

申请人 : 华为技术有限公司

摘要 :

本发明提供一种在直连广播链路上路由计算方法及系统,前缀提取单元取待计算路由的前缀;直连广播链路判断单元判断所述待计算路由的前缀是否在直连广播链路上;前缀判断单元判断本地配置的前缀中是否包含所述待计算路由的前缀;路由信息获得单元获得对端的本地链路地址作为到所述待计算路由的前缀的路由的下一跳。本发明在对端的IPv6前缀和本地前缀不同的情况下,如所参考的网络LSA是和本地直连的,并且本地配置的前缀中不包含所述待计算路由的前缀时,通过获得对端的本地链路地址作为所述待计算路由的前缀的路由的下一跳,来实现指导报文转发。

权利要求 :

1、一种直连广播链路上路由的计算方法,应用于IPv6的最短路径优先路 由协议OSPF,其特征在于,包括如下步骤:A1、从区域内前缀LSA中取待计算路由的前缀;

A21、判断所述区域内前缀LSA的参考LSA是否是网络LSA,如果是,执 行步骤A22;

A22、判断所述网络LSA是否和本地相连,如果是,则确定所述待计算路 由的前缀是在直连广播链路上,执行步骤A3;

A3、判断本地配置的前缀中是否包含所述待计算路由的前缀,如果不包含 所述待计算路由的前缀,执行步骤B;

B、获得对端的本地链路地址作为到所述待计算路由的前缀的路由的下一 跳。

2、根据权利要求1所述的方法,其特征在于,所述步骤A22具体为:查找所述网络LSA包含的路由器ID,如果存在本地的路由器ID,则所述 网络LSA和本地相连,所述待计算路由的前缀是在直连广播链路上,执行步骤 A3。

3、根据权利要求1所述的方法,其特征在于,所述步骤A3还包括步骤:A31、如果本地配置的前缀中包含所述待计算路由的前缀时,以所述网络 LSA为参考LSA,得到所述待计算路由的前缀的路由信息。

4、根据权利要求3所述的方法,其特征在于,所述步骤A31具体包括步 骤:A32、以所述网络LSA为参考LSA,通过邻居发现协议得到对端的本地链 路地址,作为到所述待计算路由的前缀的路由的下一跳。

5、根据权利要求1所述的方法,其特征在于,所述步骤B具体为:从所述 网络LSA包含的路由器中,找到配有所述待计算路由的前缀的路由器,以该路 由器的LSA为参考LSA,得到其下一跳地址,所述下一跳地址为对端的本地链 路地址。

6、根据权利要求5所述的方法,其特征在于,所述以该路由器的LSA为 参考LSA得到其下一跳地址的步骤具体为:在该路由器所属的链路LSA中,找到地址前缀与所述待计算路由的前缀相 同的链路LSA,得到所述链路LSA的本地链路地址作为对端的本地链路地址。

7、根据权利要求1所述的方法,其特征在于,所述步骤B还包括步骤:获得所述网络LSA的距离作为到所述前缀的路由的距离。

8、一种直连广播链路上路由的计算系统,其特征在于,包括:前缀提取单元,从区域内前缀LSA中取待计算路由的前缀;

参考LSA判断单元,判断所述待计算路由的前缀LSA的参考LSA是否是 网络LSA;

网络LSA判断单元,判断所述网络LSA是否和本地相连;

第二判断单元,当所述待计算路由的前缀在直连广播链路上时,判断本地 配置的前缀中是否包含所述待计算路由的前缀;

信息获得单元,当所述本地配置的前缀中不包含所述待计算路由的前缀时, 获得对端的本地链路地址作为到所述待计算路由的前缀的路由的下一跳,将获 得所述待计算路由的前缀的路由信息写入路由表。

9、根据权利要求8所述的系统,其特征在于,所述第二判断单元包括:前缀判断单元,判断本地配置的前缀中是否包含所述待计算路由的前缀;

路由信息获得单元,以所述网络LSA为参考LSA,通过邻居发现协议得到 对端的本地链路地址,作为到所述待计算路由的前缀的路由的下一跳,得到所 述待计算路由的前缀的路由信息。

10、根据权利要求8所述的系统,其特征在于,所述信息获得单元包括:下一跳地址获得单元,从所述网络LSA包含的路由器中,找到配有所述待 计算路由的前缀的路由器,以该路由器的LSA为参考LSA,得到其下一跳地址, 所述下一跳地址为对端的本地链路地址。

11、根据权利要求10所述的系统,其特征在于,所述下一跳地址获得单元 包括:链路寻找单元,在配有待计算路由的前缀的路由器所属的链路LSA中,找 到地址前缀与所述待计算路由的前缀相同的链路LSA;

链路地址获得单元,得到所述找到的链路LSA的本地链路地址作为对端的 本地链路地址。

12、根据权利要求10所述的系统,其特征在于,所述信息获得单元还包括:路由距离获得单元,获得所述网络LSA的距离作为到所述前缀的路由的距 离。

说明书 :

技术领域

本发明涉及网络技术领域,具体地说,涉及一种在直连广播链路上路由 的计算方法及系统。

背景技术

随着网络通信技术的发展,OSPF(Open Shortest Path First,开放最短路径 优先)路由协议已经成为网络中应用最广泛的路由协议,该路由协议是一种采 用链路状态算法的协议,即各个路由器收集生成自己周围的链路状态信息,形 成LSA(Link State Advertisement,链路状态广播)在区域内传播,从而使区域内 的每个路由器都拥有相同的LSA,即区域内所有的LSA,所有的LSA组称为链 路状态数据库,描述区域的网络拓扑信息,每台路由器根据收到的所有的LSA 通过SPF算法计算出路由信息,生成用于指导报文转发的路由表。
不同类型的LSA标识了不同类型的网络拓扑,按照优先级,路由类型可分 为:区域内路由,区域间路由,自治系统外部类型1路由,自治系统外部类型2 路由,优先级依次降低。当路由器收到一个新的LSA时,将按照LSA的类别分 别将其放入各自的链路状态数据库中,然后标识该链路状态数据库拓扑发生变 化,并按照SPF算法对其进行重新计算,以更新路由表,使路由表可以反映出 链路状态信息的变化。当区域内部网络发生变化,会使所有的路由重新计算。
OSPFv3(Open Shortest Path First v3,开放最短路径优先第三版)动态路由 协议是一种支持IPv6(Internet Protocol Version 6,网际协议第六版)网络的路 由协议,其支持广播链路状态信息。如图1所示,IPV6转发层下载OSPFv3路由 信息,当报文经过IPV6转发层时,通过SPF(Shortest Path First,最短路径优先) 算法计算得到报文到达目的地的最短路由,指导报文转发。所述的路由信息包 含到目的地址的距离、本地的出接口和下一跳地址。
广播链路上的直连路由如图2所示,其中RTA(Router A,路由器A),RTB 和RTC通过接口Ia,Ib和Ic共享广播链路。RTB的接口Ib和RTC的接口Ic都与RTA 的接口Ia相连接;对于RTA而言,RTA通过接口Ia与RTB和RTC相连接,在接口 上配置的IPv6网段路由就是一种直连路由。
使用SPF算法计算得到OSPFv3的路由信息,通过计算LSA获得到相关地址 的路由信息。广播网络上由DR(Designed Router,选举路由器)产生一个网络 LSA,同时产生一个以该网络LSA为参考的区域内前缀LSA,则图2中的物理拓 扑可以抽象为图3中的逻辑拓扑。所述的区域内前缀LSA参考网络LSA,就是在 计算的过程中,只需要获得到该网络LSA的路由信息,参考该网络LSA的区域 前缀LSA就可以继承该网络LSA的路由信息,即两者的路由信息是一样的。如 图3所示,RTA到网络LSA的路由信息为:RTA到网络LSA的距离等于接口Ia上配 置的OSPFv3的距离值;RTA的出接口为接口Ia;下一跳为接口Ia上配置的链路 本地地址或为空。RTA到RTC接口Ic上配置的区域内前缀,其路由信息和RTA 到网络LSA的路由信息是一样的。
对于RTA而言,如果RTC接口Ic上配置的IPv6前缀和RTA接口Ia上配置的 IPv6区域内前缀相同,此时IPv6层的ND(Neighbor Discovery,邻居发现)协议 发挥作用,找到对端RTC的下一跳地址,即RTC接口Ic上的本地链路地址,指 导报文转发;但如果RTC接口Ic上配置的IPv6区域内前缀Ic和RTA接口Ia上配置 的IPv6区域内前缀Ia不相同,ND协议无法发挥作用,则RTA无法发现Ic上的IPv6 地址,从而产生如图4所示结果,即:是无法指导报文转发的。在广播链路上, 如果下一跳地址是本地链路地址或为空,是无法指导IPv6转发层进行报文转发 的。
如图7所示的直连广播链路IPv6前缀配置,如果不采用本发明提供的在直连 广播链路上路由计算方法,在计算RTA到IPv6区域内前缀LSA的路由信息的时 候,首先获得该网络LSA的路由信息,然后参考该网络LSA的区域前缀LSA, 并继承该网络LSA的路由信息,则RTA到IPv6前缀2003:3:3::/48的路由为 2003:3:3::/48,RTA到网络LSA的路由信息为:RTA到网络LSA的距离等于1; RTA的出接口为接口Ia;下一跳为FE80::RTA或为空。所获得的下一跳信息不能 指导报文转发到2003:3:3::/48所在的前缀地址。
所以现有技术的缺点是,在对端的IPv6区域内前缀和本地区域内前缀不同 的情况下,无法指导报文转发。

发明内容

本发明提供一种在直连广播链路上路由的计算方法及系统,解决了现有技 术在对端的IPv6前缀和本地前缀不同的情况下无法指导报文转发的技术问题。
本发明提供的一种直连广播链路上路由的计算方法,应用于IPv6的最短路 径优先路由协议OSPF,包括如下步骤:
A、取待计算路由的前缀,所述待计算路由的前缀在直连广播链路上且不 包含在本地配置的前缀中;
B、获得对端的本地链路地址作为到所述待计算路由的前缀的路由的下一 跳。
所述步骤A包括步骤:
A1、从区域内前缀LSA中取所述待计算路由的前缀;
A2、判断所述待计算路由的前缀是否在直连广播链路上,如果在直连广播 链路上,执行步骤A3;
A3、判断本地配置的前缀中是否包含所述待计算路由的前缀,如果不包含 所述待计算路由的前缀,执行步骤B。
所述步骤A2具体包括:
A21、判断所述区域内前缀LSA的参考LSA是否是网络LSA,如果是,执 行步骤A22;
A22、判断所述网络LSA是否和本地相连,如果是,则确定所述待计算路 由的前缀是在直连广播链路上,执行步骤A3。
所述步骤A22具体为:
查找所述网络LSA包含的路由器ID,如果存在本地的路由器ID,则所述 网络LSA和本地相连,所述待计算路由的前缀是在直连广播链路上,执行步骤 C。
所述步骤A3还包括步骤:
A31、如果本地配置的前缀中包含所述待计算路由的前缀时,以所述网络 LSA为参考LSA,得到所述待计算路由的前缀的路由信息。
所述步骤A31具体包括步骤:
A32、以所述网络LSA为参考LSA,通过邻居发现协议得到对端的本地链 路地址,作为到所述待计算路由的前缀的路由的下一跳。
所述步骤B具体为:从所述网络LSA包含的路由器中,找到配有所述待计 算路由的前缀的路由器,以该路由器的LSA为参考LSA,得到其下一跳地址, 所述下一跳地址为对端的本地链路地址。
所述以该路由器的LSA为参考LSA得到其下一跳地址的步骤具体为:
在该路由器所属的链路LSA中,找到地址前缀与所述待计算路由的前缀相 同的链路LSA,得到所述链路LSA的本地链路地址作为对端的本地链路地址。
所述步骤B还包括步骤:
获得所述网络LSA的距离作为到所述前缀的路由的距离。
一种直连广播链路上路由的计算系统,包括:
前缀提取单元,取待计算路由的前缀;
第一判断单元,判断所述待计算路由的前缀是否在直连广播链路上;
第二判断单元,判断本地配置的前缀中是否包含所述待计算路由的前缀;
信息获得单元,获得对端的本地链路地址作为到所述待计算路由的前缀的 路由的下一跳,将获得所述待计算路由的前缀的路由信息写入路由表。
所述第一判断单元包括:
参考LSA判断单元,判断所述待计算路由的前缀LSA的参考LSA是否是 网络LSA;
网络LSA判断单元,判断所述网络LSA是否和本地相连。
所述第二判断单元包括:
前缀判断单元,判断本地配置的前缀中是否包含所述待计算路由的前缀;
路由信息获得单元,以所述网络LSA为参考LSA,通过邻居发现协议得到 对端的本地链路地址,作为到所述待计算路由的前缀的路由的下一跳,得到所 述待计算路由的前缀的路由信息。
所述信息获得单元包括:
下一跳地址获得单元,从所述网络LSA包含的路由器中,找到配有所述待 计算路由的前缀的路由器,以该路由器的LSA为参考LSA,得到其下一跳地址, 所述下一跳地址为对端的本地链路地址。
所述下一跳地址获得单元包括:
链路寻找单元,在该路由器所属的链路LSA中,找到地址前缀与所述待计 算路由的前缀相同的链路LSA;
链路地址获得单元,得到所述链路LSA的本地链路地址作为对端的本地链 路地址。
所述信息获得单元还包括:
路由距离获得单元,获得所述网络LSA的距离作为到所述前缀的路由的距 离。
本发明在对端的IPv6前缀和本地前缀不同的情况下,如所参考的网络LSA 是和本地直连的,通过获得对端的本地链路地址作为所述前缀的路由的下一跳, 实现了指导报文转发。

附图说明

图1为现有技术中报文转发示意图;
图2为现有技术中直连广播链路上的路由示意图;
图3为现有技术中OSPFv3协议对广播链路的逻辑拓扑图;
图4为现有技术中OSPFv3协议计算出的下一跳示意图;
图5为本发明中直连广播链路的下一跳示意图;
图6为本发明在直连广播链路上路由计算方法的流程图;
图7为本发明实施例中直连广播链路的IPv6前缀配置示意图;
图8为本发明实施例在直连广播链路上路由的计算系统结构示意图。

具体实施方式

本发明提供了一种在直连广播链路上路由的计算方法,在计算区域内前缀 LSA的时候,当发现参考LSA是网络LSA且该网络LSA和本地直连,检查本 地是否配置到该区域内前缀路由器接口上配置的地址前缀,如果配置了,以当 前网络LSA为参考LSA,继承所述参考网络LSA的路由信息;如果没有配置, 则找到对应的配置该地址前缀的邻居路由器,参考该邻居路由器LSA的下一跳 信息,获得该地址前缀的路由的下一跳信息。
如图5所示,对RTA而言,在计算RTA到IPv6区域内前缀LSA的路由信 息的时候,当参考LSA是网络LSA,并且所参考的网络LSA与RTA直连,即 RTA在直连广播链路上,但RTA没有配置所述IPv6区域内前缀路由器的地址 前缀,而RTC接口Ic上配置的IPv6地址前缀Ic和IPv6区域内前缀路由器的 地址前缀相同,则RTC为RTA对应的配置地址前缀的邻居路由器,找到所述 对应的配置地址前缀的邻居路由器RTC,参考RTC LSA的下一跳信息,获得 所述地址前缀的路由的下一跳信息。
如图6所示,本发明提供的路由计算方法在计算区域内前缀LSA的路由信 息的时候,具体包括步骤:
S600:取第一个地址前缀,执行步骤S601;
S601:判断参考LSA是否是网络LSA;
如果参考LSA是网络LSA,执行步骤S602,如果参考LSA不是网络LSA, 执行步骤S603;
S602:检查所参考的网络LSA是否与本地直连,即所述地址前缀所在的路 由器是否在直连广播链路上;如果所参考的网络LSA与本地直连,执行步骤 S604,如果所参考的网络LSA不与本地直连,则执行步骤S603;
步骤S603:所述地址前缀LSA继承所述参考LSA的路由信息,执行步骤 S609;
步骤S604:取第一个网络LSA的子节点,即路由器LSA节点,检查所述 地址前缀是否与该路由器接口上配置的地址前缀相同;
如果所述地址前缀与该路由器接口上配置的地址前缀相同,执行步骤 S605,如果所述地址前缀与该路由器接口上配置的地址前缀不相同,则执行步 骤S606;
S605:以当前网络LSA为参考LSA,继承所参考LSA节点的路由信息, 执行步骤S603;
S606:取所述地址前缀所在的子节点,即路由器LSA节点,判断是否为空;
如果所述地址前缀所在的子节点为空,执行步骤S608,如果所述地址前缀 所在的子节点不为空,则执行步骤S607;
S607:从网络LSA取得所述地址前缀所在的节点到所述路由器LSA节点 的距离,以路由器LSA为参考LSA,取得路由器LSA的下一跳信息,执行步 骤S609;
S608:给出错误信息,执行步骤S609;
S609:获得所述地址前缀的路由信息并写入路由表,执行步骤S610;
S610:取下一个地址前缀,执行步骤S611;
S611:判断下一个地址前缀是否为空;
如果所述下一个地址前缀为空,流程结束;如果所述下一个地址前缀不为 空,则返回执行步骤S601。
下面给出本发明的一次具体的执行过程:
如图7所示的直连广播链路IPv6前缀配置,如果采用本发明提供的在直连广 播链路上路由计算方法,在计算RTA到IPv6区域内前缀LSA的路由信息时,首 先取RTA到IPv6的地址前缀,即2003:3:3::/48,然后在确定参考LSA是网络LSA, 且所述参考网络LSA与本地路由器RTA直连后,判断所述RTA到IPv6的地址前 缀与所述路由器RTA接口Ia上配置的地址前缀是否相同,可以看到,所述RTA 到IPv6的地址前缀为2003:3:3::/48,所述路由器RTA接口Ia上配置的地址前缀为 2001:1:1::/48,即所述RTA到IPv6的地址前缀与所述路由器RTA接口Ia上配置的 地址前缀不相同,则找到配置所述RTA到IPv6的地址前缀2003:3:3::/48的邻居路 由器RTC,即RTC是所述RTA到IPv6的地址前缀对应的路由器,然后判断所述 地址前缀2003:3:3::/48的邻居路由器RTC是否为空,确定不为空,则参考RTC LSA的下一跳信息,获得所述地址前缀的路由的下一跳信息,为FE80::RTC,而 RTA到IPv6地址前缀2003:3:3::/48的路由为2003:3:3::/48,则从网络LSA取得RTA 到网络LSA的距离,等于1,RTA的出接口为Ia。通过本发明方法所获得的下一 跳信息FE80::RTC可以指导报文转发到2003:3:3::/48所在的前缀地址。
本发明还提供了一种直连广播链路上路由的计算系统80,包括前缀提取单 元81,第一判断单元82,第二判断单元83和信息获得单元84。
所述前缀提取单元81从区域内前缀LSA中取所述待计算路由的前缀;
所述第一判断单元82判断所述待计算路由的前缀是否在直连广播链路上;
所述第二判断单元83判断本地配置的前缀中是否包含所述待计算路由的 前缀;
所述信息获得单元84在所述待计算路由的前缀在直连广播链路上,且本地 配置的前缀中不包含所述待计算路由的前缀,获得对端的本地链路地址作为到 所述待计算路由的前缀的路由的下一跳,将获得所述待计算路由的前缀的路由 信息写入路由表。
其中所述第一判断单元82包括参考LSA判断单元821和网络LSA判断单 元822;
所述参考LSA判断单元821判断所述区域内待计算路由的前缀LSA的参 考LSA是否是网络LSA;
所述网络LSA判断单元822判断所述网络LSA是否和本地相连。
如果所述区域内待计算路由的前缀LSA的参考LSA是网络LSA,且所述 网络LSA与本地相连,则所述待计算路由的前缀在直连广播链路上。
所述第二判断单元83包括前缀判断单元831,路由信息获得单元832和子 节点判断单元833;
所述前缀判断单元831判断本地配置的前缀中是否包含所述待计算路由的 前缀;
所述路由信息获得单元832以所述网络LSA为参考LSA,通过邻居发现协 议得到对端的本地链路地址,作为到所述待计算路由的前缀的路由的下一跳, 得到所述待计算路由的前缀的路由信息;
所述子节点判断单元833判断所述待计算路由的前缀所在的子节点,即路 由器LSA节点是否为空。
所述信息获得单元84包括下一跳地址获得单元841和路由距离获得单元 842;
所述下一跳地址获得单元841从所述网络LSA包含的路由器中,找到配有 所述待计算路由的前缀的路由器,以该路由器的LSA为参考LSA,得到其下一 跳地址,所述下一跳地址为对端的本地链路地址。
所述路由距离获得单元842获得所述网络LSA的距离作为到所述前缀的路 由的距离。
所述下一跳地址获得单元841包括链路寻找单元8411和链路地址获得单元 8412;
所述链路寻找单元8411在该路由器所属的链路LSA中,找到地址前缀与 所述待计算路由的前缀相同的链路LSA;
所述链路地址获得单元8412得到所述链路LSA的本地链路地址作为对端 的本地链路地址。
所述前缀提取单元81从区域内前缀LSA中取第一个地址前缀待计算,参 考LSA判断单元821判断参考LSA是否是网络LSA,如果参考LSA不是网络 LSA,路由信息获得单元832继承所述参考LSA的路由信息,获得所述地址前 缀的路由信息并写入路由表;
如果参考LSA是网络LSA,网络LSA判断单元822检查所参考的网络LSA 是否与本地直连,即所述地址前缀所在的路由器是否在直连广播链路上,如果 所参考的网络LSA不与本地直连,路由信息获得单元832继承所述参考LSA 的路由信息,获得所述地址前缀的路由信息并写入路由表;
如果所参考的网络LSA与本地直连,前缀判断单元831取第一个网络LSA 的子节点,即路由器LSA节点,检查所述地址前缀是否与该路由器接口上配置 的地址前缀相同,如果所述地址前缀与该路由器接口上配置的地址前缀相同, 路由信息获得单元832以当前网络LSA为参考LSA,继承所参考LSA节点的 路由信息,获得所述地址前缀的路由信息并写入路由表;
如果所述地址前缀与该路由器接口上配置的地址前缀不相同,子节点判断 单元833取所述地址前缀所在的子节点,即路由器LSA节点,判断是否为空, 如果所述地址前缀所在的子节点为空,给出错误信息,路由信息获得单元832 获得所述地址前缀的路由信息并写入路由表;
如果所述地址前缀所在的子节点不为空,路由距离获得单元842从网络 LSA取得所述地址前缀所在的节点到所述路由器LSA节点的距离,链路寻找单 元8411在该路由器所属的链路LSA中,找到地址前缀与所述待计算路由的前 缀相同的链路LSA,链路地址获得单元8412得到所述链路LSA的本地链路地 址作为对端的本地链路地址,获得所述地址前缀的路由信息并写入路由表。
本发明在对端的IPv6地址前缀和本地地址前缀不同的情况下,如所参考的 网络LSA是和本地直连的,以获得对端的本地链路地址作为所述前缀的路由的 下一跳,实现了指导报文转发。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易 想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护 范围应该以权利要求的保护范围为准。