CN1543160A - 一种实现路由器外部路由计算的方法 - Google Patents
一种实现路由器外部路由计算的方法 Download PDFInfo
- Publication number
- CN1543160A CN1543160A CNA031230512A CN03123051A CN1543160A CN 1543160 A CN1543160 A CN 1543160A CN A031230512 A CNA031230512 A CN A031230512A CN 03123051 A CN03123051 A CN 03123051A CN 1543160 A CN1543160 A CN 1543160A
- Authority
- CN
- China
- Prior art keywords
- array
- lsa
- address
- forwarding
- item
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种实现路由器外部路由计算的方法,该方法在路由器中申明一个数组,在数组中设置用于保存第五类或第七类链路状态通告(LSA)的接口地址(forwarding_address)、下一跳及路由距离信息的数组项,路由器如果需要根据某个LSA计算外部路由,则首先根据该LSA中的forwarding_address查找数组中是否有相应的数组项,如果有,则直接从该数组项中获取相关信息,并计算该外部路由,否则,从路由表中查找对应的下一跳及路由距离信息,将该信息设置在数组项中,并计算该外部路由。该方法解决了路由器在每次计算外部路由时都需要查找路由表的问题,利用该方法只需要查找信息很少的数组就能获得相关信息,提高了计算外部路由的效率。
Description
技术领域
本发明涉及网络链路状态路由协议(Open Shortest Path First,OSPF),更确切地说是涉及一种实现路由器外部路由计算的方法。
背景技术
OSPF是一种采用链路状态算法(SPF)来选择最优路由的协议,每个路由器生成自己周围的链路状态信息,形成链路状态通告(Links StateAdvertisement,LSA),所有的LSA在全网范围内传播,每个路由器根据其所收到的所有LSA计算路由信息。
基于OSPF协议的自治系统如果需要与外部路由系统连接,则需要自治系统中的自治系统边界路由器(ASBR)引入外部路由,具体来说就是自治系统中的ASBR引入本路由器中其他协议产生的路由,生成描述该自治系统到该外部路由系统路由的LSA。该自治系统如果是普通区域,则自治系统中的ASBR生成的是第五类LSA,如果是非根节点区域(NOT SO STUB AREA,NSSA),则自治系统中的ASBR生成的是第七类LSA。第五类和第七类LSA中都包含ASBR的接口地址(forwarding_address)、外部路由系统中某条路由的目的地址、掩码以及ASBR到该目的地址的距离等信息。但是第五类与第七类LSA中所填写的forwarding_address不同:自治系统中的ASBR在生成第五类LSA时,如果被引入的路由在共享网段运行,则该第五类LSA的forwarding_address中必须填写外部路由系统中对应ASBR的接口地址,否则填为0.0.0.0;在生成第七类LSA时,forwarding_address中需要填写本ASBR的某一个OSPF域的接口地址。
自治系统与外部路由系统连接后,如果自治系统中的某个路由器A需要与外部路由系统中的某个路由器B连接,则路由器A从自治系统的ASBR中获取与路由器B相关的LSA,并根据该LSA中的信息计算到该路由器的路由。该LSA可能是第五类LSA,也可能是第七类LSA,由于第五类LSA中的forwarding_address可能为空,因此在计算时需要首先对LSA中的forwarding_address进行判断,当forwarding_address为空时,不通过其计算路由,否则,自治系统中的ASBR需要根据forwarding_address中的地址信息从路由表中查找到路由器A与ASBR之间的OSPF路由,以及路由器A通过该路由到该forwarding_address所标识的ASBR之间的距离,假设该路由为R,路由器A通过R到ASBR的距离为X,而该LSA中所携带的ASBR到路由器B的距离信息为Y,则路由器A到路由器B的距离为X+Y,路由器A的下一跳即为路由R的下一跳。
由此可见,路由器在进行路由计算第五类或第七类LSA时,对每个forwarding_address不为空的LSA,都要根据forwarding_address中的地址信息查找路由表来确定该路由器到ASBR的下一跳及对应的距离。这种查找方法会有以下问题:
1)随着网络的增大,ASBR生成的第五类或第七类LSA的数目会越来越大,甚至可能达到几十万条之多,需要路由器计算的第五类或第七类LSA也会非常多,路由表中也可能会有上百万条路由,因此一台路由器在计算外部路由时,计算每个LSA都需要遍历如此复杂的路由表,这个计算量将非常大。
2)如果因网络振荡等原因而需要路由器重新计算所有路由,并将路由添加到路由表中,则要花费很多的时间,这时如果有报文需要转发,而路由表中没有此对应的路由,则该报文只能被丢弃,从而影响到报文的转发。
3)在实际组网中,引入外部路由的ASBR不会很多,对应的forwarding_address也不会很多,因此会有很多LSA中的forwarding_address信息相同,而路由器在计算每条路由时,都根据LSA中的forwarding_address遍历路由表,这样必然有很多次是根据相同的forwarding_address信息重复查找下一跳及对应的距离。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现第五类和第七类LSA路由计算的方法,使路由器在通过forwarding_address计算外部路由时,能够快速地查找到对应的下一跳及距离信息,且避免根据相同的forwarding_address在路由表中重复查找路由。
为达到以上目的,本发明的技术方案是这样实现的:一种实现路由器外部路由计算的方法,根据第五类或第七类LSA计算外部路由,该方法包括以下步骤:
a.在路由器中申明一个数组,该数组中设置用于保存LSA的forwarding_address的IP地址、该forwarding_address对应的下一跳及路由距离信息的数组项;
b.路由器获取该外部路由相应的LSA,判断该LSA是第五类LSA还是第七类LSA,如果是第五类LSA,则判断该第五类LSA中的forwarding_address是否为空,如果为空,则结束本流程,否则,进入下一步,如果是第七类LSA,则直接进入下一步;
c.路由器根据forwarding_address查找数组中是否有其对应的数组项,如果有,则从该数组项中获取相应的下一跳及路由距离信息,否则,根据forwarding_address从路由表中查找到该LSA的下一跳及路由距离信息,将该下一跳及路由距离信息以及forwarding_address的IP地址存储在数组项中;
d.路由器根据该下一跳、路由距离以及LSA中的信息计算外部路由。
所述步骤a中,设置数组中的数组项的数目少于10个,并在数组中设置一个用于标识本数组中已用数组项数目的下标。
所述下标的初始值设置为0。
所述步骤d在从路由表中查找到下一跳及路由距离信息后,根据数组的下标判断是否有空的数组项,如果有,则将该下一跳及路由距离信息以及forwarding_address存储在数组项中,并将数组的下标加1,否则,从数组中选择一个数组项,将下一跳及路由距离信息以及forwarding_address存储在该数组项中。
所述步骤a中,在数组项中设置LSA个数标识项,该标识项标识已计算过的、且与该数组项对应的LSA的数目,所述步骤d中,在将下一跳及路由距离信息以及forwarding_address存储在空的数组项中之后,将数组项中的LSA数目加1;如果数组中没有空的数组项,则在LSA数目最少的数组项中存储信息,并将该数组项中的LSA数目设置为1。
本发明方法通过在路由器中申明数组,将第一次根据forwarding_address计算外部路由时,根据forwarding_address从路由表中获取的下一跳及距离信息保存在数组的数组项中,下次再根据该forwarding_address计算外部路由时,通过遍历数组,从数组中获取下一跳及距离信息,使路由器在根据同一个forwarding_address计算外部路由时,可以只在第一次计算时从路由表中获取信息,其余计算时只需要从数组中获取该信息,减少了路由器遍历路由表的次数,大大提高计算第五类或第七类LSA路由的效率。并且,当网络振荡时,路由器能够很快地计算出路由,从而不会影响到数据的转发。在该数组中引入使用forwarding_address的LSA的个数,并在该数组中保留使用较多的forwarding_address所对应的数组项,保证数组中的数组项比较少,可以提高路由器查找数组的效率。
附图说明
图1为本发明实施例中路由器A连接路由器B的流程图。
具体实施方式
下面结合附图及具体实施例对本发明方法作进一步详细的说明。
首先阐述本发明的核心思想:本发明方案针对路由器在计算外部路由时,所使用的第五类或第七类LSA的forwarding_address中存有接口地址信息的情况,在需要计算外部路由的路由器中申明一个数组,该数组有多个数组项,每个数组项中保存一个forwarding_address的具体IP地址、路由器根据该forwarding_address从路由表中查找到的下一跳及相应距离,以及本路由器在计算外部路由时所使用的包含该forwarding_address信息的第五类或第七类LSA的个数,即LSA个数标识项。路由器在计算外部路由时,直接从该数组中获得相关的下一跳及相应距离信息。
基于上述思想,下面以自治系统中的路由器A与外部路由系统中的路由器B连接的过程为例,对本发明方案作详细说明。路由器A与路由器B连接的过程参见图1,对应以下步骤:
a.路由器A申明一个数组,在该数组中设置多个数组项,并设置数组下标以表示数组中已用数组项的个数。
数组项中保存该路由器根据一个forwarding_address信息从路由表中查找到的下一跳及相应距离,以及本路由器在计算外部路由时所使用的包含该forwarding_address信息的第五类或第七类LSA的个数。
该数组项可以根据自治系统中ASBR的个数设定,为了提高查找数组的速度,一般将数组项设置为10以内。
b.路由器A判断是否需要计算外部路由,如果需要,则进入下一步,否则,返回步骤b。
c.路由器A从本系统与该外部路由系统相关的ASBR中获取对应路由器B的LSA,判断该LSA是第五类LSA还是第七类LSA,如果是第五类LSA,则判断该第五类LSA的forwarding_address是否为空,如果为空,则结束本流程,否则,进入下一步;如果是第七类LSA,则直接进入下一步。
d.路由器A根据LSA中的forwarding_address遍历数组,如果数组中没有与该forwarding_address对应的数组项,则进入下一步;否则,从该数组项中直接获取该forwarding_address的下一跳及距离信息,根据该信息计算路由器A到路由器B的路由,将该数组项中使用该forwarding_address的LSA的个数加1,并返回步骤b。
e.根据forwarding_address遍历路由表获取相关的下一跳及距离信息,并根据数组的下标判断数组中是否有空的数组项,如果有,则将获取的下一跳及距离信息以及forwarding_address的具体IP地址信息保存在数组的数组项中,将该数组项中使用该forwarding_address的LSA的个数加1,同时将数组的下标加1,并返回步骤b;如果没有,则再次遍历该数组,找到该数组中LSA个数标识最少的数组项,用先前获取的下一跳及距离信息替换该数组项中的内容,并重新设置该数组项中LSA的个数标识,最后返回步骤b。
上述实施例对本发明在ASBR生成的LSA为第五类或第七类LSA的实施过程作了较为详细的说明,下面以ASBR生成的LSA是第七类LSA为例,以一个具体实施例对本发明方案作说明。
假设某个OSPF设备所在的区域为NSSA区域,该OSPF设备中有10万条第七类LSA,但是产生这10万条第七类LSA的ASBR只有5台,其中的一台ASBR产生的第七类LSA最少,只有1条,同时,路由表中已有的路由为10万条。在这样的OSPF设备中,forwarding_address一共只有5个。
如果该OSPF设备中的一个路由器需要计算与一个ASBR相关的外部路由,则该路由器先申明一个数组M,根据该OSPF设备的情况,可以在这个数组中设置4个数组项。该数组M的下标为X,X的初始值为0,最大值为4。
该路由器从该ASBR中获取所需要的第七类LSA后,根据该第七类LSA中的forwarding_address遍历数组,这时数组的下标X为0,其中的数组项都为空,因此需要根据forwarding_address查找路由表,获取相应的下一跳及距离信息,并将其保存在数组的一个数组项中,将该数组项中使用该forwarding_address的LSA的个数加1,并将该数组的下标X加1。
以后在计算其他的第七类LSA路由时,首先遍历数组,如果数组中已经有与该第七类LSA中的forwarding_address对应的数组项,则直接从该数组项中获取信息,并将该数组项中使用该forwarding_address的LSA的个数加1;如果数组中没有与该第七类LSA中的forwarding_address对应的数组项,则需要根据forwarding_address在路由表中查找到相应的下一跳及距离信息,并判断数组的下标是否小于4,如果小于4,则说明还有空的数组项,在该数组项中保存相应的信息,并将数组的下标加1,否则,再次遍历数组,根据数组项中保存的LSA的个数找到使用最少的forwarding_address对应的数组项,本实施例找到的是只使用过一次的forwarding_address对应的数组项,在该数组项中保存相应的信息。
在上述有关OSPF设备的实施例中,在路由器计算10万条第七类LSA时,只需要查找5次20万条路由规模的路由表,其余的199995次计算只需要查找一个具有4个数组项的数组就可以获得forwarding_address的相关信息,这必然能够大大提高计算第七类LSA路由的效率。用这样的方法同样可以提高计算第五类LSA路由的效率。
Claims (5)
1、一种实现路由器外部路由计算的方法,根据第五类或第七类链路状态通告(LSA)计算外部路由,其特征在于该方法包括以下步骤:
a.在路由器中申明一个数组,该数组中设置用于保存LSA的接口地址(forwarding_address)的IP地址、该forwarding_address对应的下一跳及路由距离信息的数组项;
b.路由器获取该外部路由相应的LSA,判断该LSA是第五类LSA还是第七类LSA,如果是第五类LSA,则判断该第五类LSA中的forwarding_address是否为空,如果为空,则结束本流程,否则,进入下一步,如果是第七类LSA则直接进入下一步;
c.路由器根据forwarding_address查找数组中是否有其对应的数组项,如果有,则从该数组项中获取相应的下一跳及路由距离信息,否则,根据forwarding_address从路由表中查找到该LSA的下一跳及路由距离信息,将该下一跳及路由距离信息以及forwarding_address的IP地址存储在数组项中;
d.路由器根据该下一跳、路由距离以及LSA中的信息计算外部路由。
2、根据权利要求1所述的方法,其特征在于所述步骤a中,设置数组中的数组项的数目少于10个,并在数组中设置一个用于标识本数组中已用数组项数目的下标。
3、根据权利要求2所述的方法,其特征在于,所述下标的初始值设置为0。
4、根据权利要求2所述的方法,其特征在于,所述步骤d在从路由表中查找到下一跳及路由距离信息后,根据数组的下标判断是否有空的数组项,如果有,则将该下一跳及路由距离信息以及forwarding_address存储在数组项中,并将数组的下标加1,否则,从数组中选择一个数组项,将下一跳及路由距离信息以及forwarding_address存储在该数组项中。
5、根据权利要求4所述的方法,其特征在于所述步骤a中,在数组项中设置LSA个数标识项,该标识项标识已计算过的、且与该数组项对应的LSA的数目,所述步骤d中,在将下一跳及路由距离信息以及forwarding_address存储在空的数组项中之后,将数组项中的LSA数目加1;如果数组中没有空的数组项,则在LSA数目最少的数组项中存储信息,并将该数组项中的LSA数目设置为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031230512A CN100490440C (zh) | 2003-04-29 | 2003-04-29 | 一种实现路由器外部路由计算的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031230512A CN100490440C (zh) | 2003-04-29 | 2003-04-29 | 一种实现路由器外部路由计算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1543160A true CN1543160A (zh) | 2004-11-03 |
CN100490440C CN100490440C (zh) | 2009-05-20 |
Family
ID=34321195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031230512A Expired - Fee Related CN100490440C (zh) | 2003-04-29 | 2003-04-29 | 一种实现路由器外部路由计算的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100490440C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008003253A1 (fr) * | 2006-06-26 | 2008-01-10 | Huawei Technologies Co., Ltd. | Procédé et système de calcul d'acheminement pour une liaison de diffusion directement connectée |
CN100384126C (zh) * | 2005-12-24 | 2008-04-23 | 华为技术有限公司 | 一种基于多接口路由设备的链路状态信息传输方法 |
CN102035739A (zh) * | 2010-12-14 | 2011-04-27 | 北京星网锐捷网络技术有限公司 | 接口地址的通告方法、装置和路由设备 |
CN102316005A (zh) * | 2010-07-05 | 2012-01-11 | 杭州华三通信技术有限公司 | 一种更新ospf路由的方法及ospf路由器 |
CN103501271A (zh) * | 2013-09-18 | 2014-01-08 | 杭州华三通信技术有限公司 | 一种lsa转换设备的选举方法和设备 |
-
2003
- 2003-04-29 CN CNB031230512A patent/CN100490440C/zh not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100384126C (zh) * | 2005-12-24 | 2008-04-23 | 华为技术有限公司 | 一种基于多接口路由设备的链路状态信息传输方法 |
WO2008003253A1 (fr) * | 2006-06-26 | 2008-01-10 | Huawei Technologies Co., Ltd. | Procédé et système de calcul d'acheminement pour une liaison de diffusion directement connectée |
CN102316005A (zh) * | 2010-07-05 | 2012-01-11 | 杭州华三通信技术有限公司 | 一种更新ospf路由的方法及ospf路由器 |
CN102316005B (zh) * | 2010-07-05 | 2014-03-19 | 杭州华三通信技术有限公司 | 一种更新ospf路由的方法及ospf路由器 |
CN102035739A (zh) * | 2010-12-14 | 2011-04-27 | 北京星网锐捷网络技术有限公司 | 接口地址的通告方法、装置和路由设备 |
CN103501271A (zh) * | 2013-09-18 | 2014-01-08 | 杭州华三通信技术有限公司 | 一种lsa转换设备的选举方法和设备 |
CN103501271B (zh) * | 2013-09-18 | 2017-01-18 | 杭州华三通信技术有限公司 | 一种lsa转换设备的选举方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100490440C (zh) | 2009-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7418505B2 (en) | IP address lookup using either a hashing table or multiple hash functions | |
Holmberg et al. | Optimization of internet protocol network design and routing | |
US7664040B2 (en) | Method of accelerating the shortest path problem | |
US6098107A (en) | Dynamic algorithms for shortest path tree computation | |
EP2371094B1 (en) | Method and communication apparatus for generating summarised network topology parameters | |
CN103370908B (zh) | 用于找到跨多个域的点到多点标签交换路径的系统以及方法 | |
CN101965715B (zh) | 最短路径确定中的打破平局 | |
US20040193729A1 (en) | Routing scheme based on virtual space representation | |
Ben-Ameur et al. | Routing strategies for IP networks | |
CN1816000A (zh) | 一次路由计算实现层次路由的拓扑方法 | |
CN113904985B (zh) | 一种段列表获取方法、报文转发方法、装置及电子设备 | |
CN1543160A (zh) | 一种实现路由器外部路由计算的方法 | |
CN1195364C (zh) | 基于宽度优先搜索的性能可调启发式服务质量路由方法 | |
Cicerone et al. | A fully dynamic algorithm for distributed shortest paths | |
Riedl | A versatile genetic algorithm for network planning | |
CN1139223C (zh) | 在一个分层传输系统中选择路由的方法和装置 | |
Yagyu et al. | An efficient hierarchical optical path network design algorithm based on a traffic demand expression in a cartesian product space | |
Shinn et al. | Combining the shortest paths and the bottleneck paths problems | |
Azimi et al. | An efficient heuristic algorithm for the traveling salesman problem | |
Cicerone et al. | Compact-port routing models and applications to distance-hereditary graphs | |
JP3801951B2 (ja) | 経路選択方法 | |
CN116566886B (zh) | 一种基于双平面的无状态单播保护路由方法 | |
Xiao et al. | Approximation and heuristic algorithms for delay constrained path selection under inaccurate state information | |
Wang et al. | Tabu artificial fish swarm algorithm based intelligent qos multicast routing algorithm | |
Hernández et al. | The optimal routing problem in multicomputer networks: an evolutionary approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090520 Termination date: 20150429 |
|
EXPY | Termination of patent right or utility model |