网络中邻接关系的建立方法及装置转让专利

申请号 : CN200710074421.9

文献号 : CN100591049C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 傅超

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

摘要 :

本发明实施例公开了一种网络中邻接关系的建立方法及装置,该方法包括以下步骤:本地路由器与邻居路由器协商主从关系;本地路由器与邻居路由器交换数据库描述报文;当数据库描述报文没有完成交换时,判断邻居路由器中是否有本地路由器没有的链路状态通告,若有,则将该链路状态通告加到请求列表中并向邻居路由器发送链路状态请求报文,请求该链路状态通告;本地路由器接收邻居路由器发送的链路状态更新报文。本发明实施例可减少OSPF邻接关系的建立过程中的报文数量,加快了完全邻接的邻接建立速度。

权利要求 :

1、一种网络中邻接关系的建立方法,其特征在于包括以下步骤:本地路由器与邻居路由器协商主从关系;

本地路由器与邻居路由器交换数据库描述报文;

当数据库描述报文没有完成交换时,判断邻居路由器中是否有本地路由器没 有的链路状态通告,若有,则将该链路状态通告加到请求列表中并向邻居路由 器发送链路状态请求报文,请求该链路状态通告;

本地路由器接收邻居路由器发送的链路状态更新报文,所述本地路由器在接 收到所述链路状态更新报文后不向所述邻居路由器回应链路状态应答报文。

2、如权利要求1所述的网络中邻接关系的建立方法,其特征在于,当数据 库描述报文没有完成交换时,还进一步包括:判断本地路由器中是否有生存期达到最大值的链路状态通告,若有,则将 该链路状态通告加入邻居重传列表。

3、如权利要求2所述的网络中邻接关系的建立方法,其特征在于,所述网 络中邻接关系的建立方法还进一步包括:当数据库描述报文完成交换时,本地路由器通过链路状态更新报文发送本 地路由器中生存期达到最大值的链路状态通告给邻居路由器。

4、如权利要求3所述的网络中邻接关系的建立方法,其特征在于,所述本地 路由器通过链路状态更新报文发送本地路由器中生存期达到最大值的链路状态 通告给邻居路由器之后还包括以下步骤:本地路由器接收邻居路由器回应的链路状态应答报文。

5、如权利要求1或2所述的网络中邻接关系的建立方法,其特征在于,当数 据库描述报文没有完成交换时,还进一步包括:判断本地路由器中是否收到或产生新的链路状态通告,若收到或产生新的链 路状态通告,则将该链路状态通告加入邻居重传列表。

6、如权利要求5所述的网络中邻接关系的建立方法,其特征在于,所述网络 中邻接关系的建立方法还进一步包括:当数据库描述报文完成交换时,本地路由器通过链路状态更新报文发送该收 到或产生新的链路状态通告给邻居路由器。

7、如权利要求6所述的网络中邻接关系的建立方法,其特征在于,所述本地 路由器通过链路状态更新报文发送该收到或产生新的链路状态通告给邻居路由 器之后还包括以下步骤:本地路由器接收邻居路由器回应的链路状态应答报文。

8、一种网络中邻接关系的建立装置,其特征在于包括:主从关系协商模块,用于协商邻居路由器和本地路由器的主从关系;

数据库描述报文交换模块,用于在邻居路由器和本地路由器之间交换数据 库描述报文;

第一链路状态通告报文判断模块,用于当数据库描述报文没有完成交换时, 判断邻居路由器中是否有本地路由器没有的链路状态通告报文;

第一链路状态通告报文添加模块,用于当第一链路状态通告报文判断模块 的判断结果是邻居路由器中有本地路由器没有的链路状态通告报文时,将链路 状态通告报文加到请求列表中;

链路状态请求报文发送模块,用于向邻居路由器发送链路状态请求报文,请 求该链路状态通告报文;

链路状态更新报文接收模块,用于接收邻居路由器发送的链路状态更新报 文;

在所述链路状态更新报文接收模块接收到所述链路状态更新报文后不向所 述邻居路由器回应链路状态应答报文。

9、如权利要求8所述的网络中邻接关系的建立装置,其特征在于所述建立装 置还包括:第二链路状态通告报文判断模块,用于判断本地路由器中是否有生存期达到 最大值的链路状态通告报文;

第二链路状态通告报文添加模块,用于当所述第二链路状态通告报文判断模 块的判断结果是本地路由器中有生存期达到最大值的链路状态通告报文时,将 生存期达到最大值的链路状态通告报文加入邻居重传列表。

10、如权利要求9所述的网络中邻接关系的建立装置,其特征在于所述建立 装置还包括:第二链路状态通告报文发送模块,用于发送本地路由器中生存期达到最大值 的链路状态通告报文给邻居路由器。

11、如权利要求10所述的网络中邻接关系的建立装置,其特征在于所述建立 装置还包括:链路状态应答报文接收模块,用于接收邻居路由器回应的链路状态应答报 文。

12、如权利要求8或9所述的网络中邻接关系的建立装置,其特征在于所述建 立装置还包括:第三链路状态通告报文判断模块,用于判断本地路由器中是否收到或产生新 的链路状态通告报文;

第三链路状态通告报文添加模块,用于当所述第三链路状态通告报文判断模 块的判断结果是本地路由器中收到或产生有新的链路状态通告报文时,将收到 或产生新的链路状态通告报文加入邻居重传列表。

13、如权利要求12所述的网络中邻接关系的建立装置,其特征在于所述建立 装置还包括:第三链路状态通告报文发送模块,用于发送收到或产生新的链路状态通告报 文给邻居路由器。

14、如权利要求13所述的网络中邻接关系的建立装置,其特征在于所述建立 装置还包括:链路状态应答报文接收模块,用于接收邻居路由器回应的链路状态应答报 文。

说明书 :

技术领域

本发明涉及网络通信领域,尤其涉及一种网络中邻接关系的建立方法及装 置。

背景技术

在目前的网络中,路由信息通常是通过BGP(Border Gateway Protocol,边 界网关协议)/IGP(Interior Gateway Protocol,内部网关协议)来收集、分发的, 其中,OSPF协议是当前主要的IGP协议中应用最广泛的一种。
OSPF属于链路状态协议,收集当前设备在网络中的拓扑信息与路由信息, 以LSA(Link State Advertisement,链路状态通告)的方式表达出来,这些LSA 信息通过OSPF的同步与扩散机制被发送到整个网络中的每一台设备上,所有这 些信息组成了OSPF的LSDB(Link State Database,链路状态数据库),最后, 整个网络中的OSPF设备上拥有的完全相同的LSDB,这时每台设备都以各自为 根结点,通过使用SPF(Shortest Path First,最短路径)算法,计算出路由。
在OSPF协议中,OSPF会在每一条链路上与邻居路由器建立邻接关系,只有 与邻居路由器建立完全邻接的邻接关系以后,才会计算通过该邻居路由器的路 由。在与邻居路由器建立邻接关系的过程中,需要传送大量报文。
OSPF中的邻居状态机的状态变迁如图1所示,其中Down(停止)、Attempt (尝试)、Init(初始)、2-Way(双向)、ExStart(开始交换)、Exchange(交 换)、Loading(装载)、Full(完全邻接)为邻居路由器的不同状态,中间的 连线表示了引起状态迁移的事件,从ExStart开始一直到Full,称为与邻居路由器 建立邻接关系。
邻接关系的建立过程中主要有以下操作:
1、邻接状态进入ExStart状态后,邻居路由器和本地路由器开始协商 Master/Slave(主从)关系;
2、主从关系协商完成后,邻接状态进入Exchange状态,邻居路由器和本地 路由器开始交换DD报文(Database Description,数据库描述报文),DD报文中 的LSA摘要信息不包含生存期达到最大值的LSA;
2.1、在DD报文交换过程中,如果发现邻居路由器有本地路由器没有的LSA, 则将该LSA加到请求列表中并向邻居路由器发送LSR(Link State Request,链路 状态请求报文)报文,请求该LSA;
2.2、邻居路由器收到该LSR报文,向本地路由器发送LSU(Link State Update ,链路状态更新报文)报文;
2.3、本地路由器收到邻居路由器发过来的LSU报文,向邻居路由器回应一 个LSAck(Link State Acknowledgment,链路状态应答报文)报文;
2.4、对于本地路由器中生存期达到最大值的LSA,不通过DD报文交换该LSA 摘要,而是加入重传列表,定时通过LSU报文发送给邻居路由器;邻居路由器收 到LSU报文,会回应一个LSAck报文;
2.5、在邻接状态为Exchange及其以上的时候,如果本地路由器收到或产生 新的LSA,会向邻居路由器进行Flooding(洪泛),发送LSU报文;邻居路由器 收到LSU报文,会回应一个LSAck报文;
3、DD报文交换完成后,邻接状态达到Full,邻接关系建立完成。
其中操作2、2.1、2.2中的报文交换会影响到邻接状态的变迁。操作2.4、2.5 中发送的报文和操作2.1、2.2、2.3中的报文会交织在一起,即建立邻接关系和保 持同步两个过程交织在一起。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:由于现有 技术在邻居路由器收到本地路由器发送的LSR报文的时候,会向本地路由器发 送一个LSU报文,然后本地路由器会向邻居路由器回应一个LSAck报文,因 此链路中会存在大量的LSU和LSAck报文,造成链路拥塞,从而可能导致DD报 文丢失,进而延缓FULL邻接的建立。

发明内容

本发明实施例提供一种网络中邻接关系的建立方法及装置,其可减少OSPF 邻接关系的建立过程中的报文数量,以加快完全邻接的邻接建立速度。
所述一种网络中邻接关系的建立方法,其包括以下步骤:
本地路由器与邻居路由器协商主从关系;
本地路由器与邻居路由器交换数据库描述报文;
当数据库描述报文没有完成交换时,判断邻居路由器中是否有本地路由器没 有的链路状态通告,若有,则将该链路状态通告加到请求列表中并向邻居路由 器发送链路状态请求报文,请求该链路状态通告;
本地路由器接收邻居路由器发送的链路状态更新报文,所述本地路由器在接 收到所述链路状态更新报文后不向所述邻居路由器回应链路状态应答报文。
所述一种网络中邻接关系的建立装置,其包括:
主从关系协商模块,用于协商邻居路由器和本地路由器的主从关系;
数据库描述报文交换模块,用于在邻居路由器和本地路由器之间交换数据 库描述报文;
第一链路状态通告报文判断模块,用于当数据库描述报文没有完成交换时, 判断邻居路由器中是否有本地路由器没有的链路状态通告报文;
第一链路状态通告报文添加模块,用于当第一链路状态通告报文判断模块 的判断结果是邻居路由器中有本地路由器没有的链路状态通告报文时,将链路 状态通告报文加到请求列表中;
链路状态请求报文发送模块,用于向邻居路由器发送链路状态请求报文,请 求该链路状态通告报文;
链路状态更新报文接收模块,用于接收邻居路由器发送的链路状态更新报 文;
在所述链路状态更新报文接收模块接收到所述链路状态更新报文后不向所 述邻居路由器回应链路状态应答报文。
上述技术方案具有如下有益效果:由于本发明实施例中,本地路由器在收到 链路状态更新报文以后不回应链路状态应答报文,因此减少了OSPF邻接关系的 建立过程中的报文数量,因此本发明实施例的方法加快了完全邻接的邻接建立 速度,从而加快了OSPF路由学习速度。

附图说明

图1是现有的OSPF中的邻居状态机的状态变迁示意图。
图2是本发明第一实施例网络中邻接关系的建立方法的流程图。
图3是本发明第一实施例网络中邻接关系的建立装置的功能模块框图。

具体实施方式

请参阅图2,本发明第一实施例网络中邻接关系的建立方法具体包括以下步 骤:
S11、邻接状态进入ExStart状态后,本地路由器与邻居路由器协商 Master/Slave关系;
S12、Master/Slave关系协商完成后,邻接状态进入Exchange状态,本地路由 器与邻居路由器交换DD报文;
S13、当数据库描述报文没有完成交换时,判断邻居路由器中是否有本地路 由器没有的LSA,若有,则执行步骤S14,若没有,则结束;
S14、将该LSA加到请求列表中并向邻居路由器发送LSR报文,请求该LSA;
S15、本地路由器接收邻居路由器发送的LSU报文,在收到LSU报文以后不 回应链路状态应答LSAck报文,DD报文交换完成后,邻接状态达到Full,邻接关 系建立完成。
由于本发明第一实施例的网络中邻接关系的建立方法中,本地路由器在收到 LSU报文以后,不回应LSAck报文,因此减少了OSPF邻接关系的建立过程中的 报文数量,从而加快了完全邻接的邻接建立速度,及加快了OSPF路由学习速度。
请参阅图3,本发明第一实施例网络中邻接关系的建立装置包括:
主从关系协商模块,用于协商邻居路由器和本地路由器的主从关系;
数据库描述报文交换模块,用于在邻居路由器和本地路由器之间交换数据 库描述报文;
第一链路状态通告报文判断模块,用于当数据库描述报文没有完成交换时, 判断邻居路由器中是否有本地路由器没有的链路状态通告报文,若有,则指示 第一链路状态通告报文添加模块工作;
第一链路状态通告报文添加模块,用于将链路状态通告报文加到请求列表 中;
链路状态请求报文发送模块,用于向邻居路由器发送链路状态请求报文,请 求该链路状态通告报文;
链路状态更新报文接收模块,用于接收邻居路由器发送的链路状态更新报 文。
本发明第二实施例网络中邻接关系的建立方法与第一实施例网络中邻接关 系的建立方法的区别在于当数据库描述报文没有完成交换时,还进一步包括步 骤S23:本地路由器判断本地路由器中是否有生存期达到最大值的LSA,若有, 则将该LSA加入邻居重传列表,当数据库描述报文完成交换时,则执行步骤S24: 本地路由器通过LSU报文发送本地路由器中生存期达到最大值的LSA给邻居路 由器,然后执行步骤S25;
S25、本地路由器接收邻居路由器回应的链路状态应答LSAck报文。
由于在本发明第二实施例网络中邻接关系的建立方法中,对于本地路由器中 生存期达到最大值的LSA,在邻接状态达到FULL以后才开始通过LSU报文发送 给邻居路由器;邻居路由器收到所述LSU报文后,回应链路状态应答LSAck报文; 由于邻接状态在FULL之前,该邻接表示的链路并不会参与到OSPF的路由计算当 中,实质上是不会指导数据转发的,因此本发明第二实施例减少了OSPF邻接关 系的建立过程中的报文数量,又不会影响OSPF的路由计算及数据转发。
本发明第二实施例网络中邻接关系的建立装置与第一实施例网络中邻接关 系的建立装置的区别在于还包括:
第二链路状态通告报文判断模块,用于判断本地路由器中是否有生存期达到 最大值的链路状态通告报文,若有,则指示第二链路状态通告报文添加模块工 作;
第二链路状态通告报文添加模块,用于将生存期达到最大值的链路状态通告 报文加入邻居重传列表;
第二链路状态通告报文发送模块,用于发送本地路由器中生存期达到最大值 的链路状态通告报文给邻居路由器;
链路状态应答报文接收模块,用于接收邻居路由器回应的链路状态应答报 文。
本发明第三实施例网络中邻接关系的建立方法与第一实施例网络中邻接关 系的建立方法的区别在于当数据库描述报文没有完成交换时,还进一步包括步 骤S33:本地路由器判断本地路由器中是否收到或产生新的LSA,若收到或产生 新的LSA,则将该LSA加入邻居重传列表,当数据库描述报文完成交换时,则执 行步骤S34:本地路由器通过LSU报文发送该收到或产生新的LSA给邻居路由器, 然后执行步骤S35;
S35、本地路由器接收邻居路由器回应的链路状态应答LSAck报文。
本发明第四实施例网络中邻接关系的建立方法与第二实施例网络中邻接关 系的建立方法的区别在于当数据库描述报文没有完成交换时,还进一步包括步 骤S43:本地路由器判断本地路由器中是否收到或产生新的LSA,若收到或产生 新的LSA,则将该LSA加入邻居重传列表,当数据库描述报文完成交换时,则执 行步骤S44:本地路由器通过LSU报文发送该收到或产生新的LSA给邻居路由器, 然后执行步骤S45;
S45、本地路由器接收邻居路由器回应的链路状态应答LSAck报文。
在本发明第三和第四实施例网络中邻接关系的建立方法中,对于在邻接状态 为Exchange至FULL之前,路由器收到或产生新的LSA,只有邻接状态达到FULL 以后才开始通过LSU报文发送给邻居路由器;邻居路由器收到所述LSU报文后, 回应链路状态应答LSAck报文;由于邻接状态在FULL之前,该邻接表示的链路 并不会参与到OSPF的路由计算当中,实质上是不会指导数据转发的,因此本发 明第三实施例减少了OSPF邻接关系的建立过程中的报文数量,又不会影响OSPF 的路由计算及数据转发。
本发明第三实施例网络中邻接关系的建立装置与第一实施例网络中邻接关 系的建立装置的区别在于还包括:
第三链路状态通告报文判断模块,用于判断本地路由器中是否收到或产生新 的链路状态通告报文,若收到或产生新的链路状态通告报文,则指示第三链路 状态通告报文添加模块工作;
第三链路状态通告报文添加模块,用于将收到或产生新的链路状态通告报文 加入邻居重传列表;
第三链路状态通告报文发送模块,用于发送收到或产生新的链路状态通告报 文给邻居路由器;
链路状态应答报文接收模块,用于接收邻居路由器回应的链路状态应答报 文。
本发明第四实施例网络中邻接关系的建立装置与第二实施例网络中邻接关 系的建立装置的区别在于还包括:
第三链路状态通告报文判断模块,用于判断本地路由器中是否收到或产生新 的链路状态通告报文,若收到或产生新的链路状态通告报文,则指示第三链路 状态通告报文添加模块工作;
第三链路状态通告报文添加模块,用于将收到或产生新的链路状态通告报文 加入邻居重传列表;
第三链路状态通告报文发送模块,用于发送收到或产生新的链路状态通告报 文给邻居路由器。
在FULL的邻接建立完成以后,本地路由器会通过正常的重传、应答机制与 邻居路由器同步在邻接建立过程当中没有同步的LSA,因此本发明实施例的方法 不存在兼容性的问题;同时即使邻居路由器不支持该特性,也会显著减少邻接 建立过程中链路上的报文流量。
本发明实施例网络中邻接关系的建立方法适用于OSPF(Open Shortest Path First,最短路径优先)和OSPFv3(OSPF for IPv6),其应用在邻居路由器之间有大 量LSA信息需要交换的场合更具有显著的有益效果。主要包括以下场合:需要建 OSPF邻接的两台路由器中,一台或两台均有大量LSA,尤其是有大量不相同的 LSA的时候;路由器中有大量生存期达到最大值的LSA的时候;在建立邻接过程 当中,从其他路由器接收到大量更新的LSA的时候。在以上场合本发明实施例能 显著减少邻接建立过程当中的报文数量,加快FULL的邻接建立速度。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范 围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应 包含在本发明的保护范围之内。