链路状态通告发送方法、ospf设备及网络系统的制作方法

文档序号:7863873阅读:185来源:国知局
专利名称:链路状态通告发送方法、ospf设备及网络系统的制作方法
技术领域
本发明涉及计算机网络通信技术,尤其涉及一种链路状态通告发送方法、OSPF设备及网络系统。
背景技术
目前,各行业的组网开始出现网络扁平化趋势。具体地,扁平化网络是将传统的“核心层+汇聚层+接入层”三层组网中的汇聚层省略掉,核心层设备直接和多个接入层设备相连,这样不但可以减少中间层网络的数量,还可以简化网络管理方便网络维护。一个典型的扁平化网络如图I所示,该网络中核心层OSPF (Open Shortest PathFirst,开放最短路径优先协议)设备A下联1000台接入层设备BI B1000。接入层设备BI B1000为核心层OSPF设备A的邻居设备。在这样的网络中,核心层OSPF设备需要和·与其直接相连的接入层设备建立完全邻接关系,以进行报文交互。而在核心层OSPF设备与接入层设备建立完全邻接关系的过程中,核心层OSPF设备需要与接入层设备进行数据描述报文交互,并通过链路状态请求报文、链路状态更新报文以及链路状态应答报文的交互生成链路状态通告(Link State Advertisement,简称LSA),以使所述的核心层OSPF设备将所述LSA发送至所有与所述核心层OSPF设备已建立完全邻接关系的邻居设备。所有与所述核心层OSPF设备已建立完全邻接关系的邻居设备根据所述LSA向其反馈链路状态确认(Link State Acknowledge,简称LS ACK)反馈报文。若所述核心层OSPF设备上同时需建立的邻居数量很多,则所述核心层OSPF设备需同时生成大量的LSA并接收大量的LS ACK。因核心层OSPF设备处理资源有限,这样势必会影响核心层OSPF设备维持完全邻接关系的Hello报文的及时发送与接收,从而导致网络中与核心层OSPF设备已经建立完全邻接关系的邻居丢失,最终引起路由不能正常收敛。例如,A与BI建立了完全邻接关系后,如果B2也与A建立完全邻接关系,就可能导致A不能正常处理维持与BI完全邻接关系的Hello报文,即不能及时地向BI发送Hello报文或者不能及时的接收BI发送的Hello报文并进行处理,从而导致A与BI已经建立的完全邻接关系丢失。在与B2建立完全邻接关系后,A与BI需要再次尝试建立邻接关系,这样又有可能导致A与其他邻居设备建立的完全邻接关系丢失。在这样一种情形下,可能导致核心层OSPF设备与邻居设备的邻接关系处于不断的振荡状态,最终不能够达到收敛状态,严重影响路由器网络的网络性能和网络的正常使用。为解决上述问题,现有技术方案是通过在OSPF设备A出接口静态指定LSA的发送速率来减少大量LSA的发送,即指定在固定时间内发送多少个LSA,以保证与建立完全邻接关系的邻居设备之间的Hello报文的发送和接收。而邻居设备的发现是个动态的过程,静态指定一个固定的发送速率无法适应邻居设备的数量动态变化的场景。举例来说,当已建立完全邻接关系的邻居设备的数量较大时,为了保证与这些邻居设备之间的Hello报文的发送和接收,需要限制LSA的发送速率,但若将LSA的发送速率设定得较小,则当发现一个新的邻居设备时,无法及时的将LSA发送给所有邻居设备,则势必会影响整个网络系统的性能。

发明内容
本发明的多个方面提供一种链路状态通告发送方法、OSPF设备及网络系统,以提高与邻居设备的完全邻接关系的稳定性。本发明的第一个方面,提供一种链路状态通告发送方法,包括获取邻居设备完全邻接的保活时间;获取发送至所述邻居设备的链路状态通告LSA的发送时间间隔;获取当前CPU的利用率;根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短;在所述保活时间内,将所述长度L的LSA发送队列内的LSA发送至所述邻居设备。 本发明的第二个方面,提供一种OSPF设备,其特征在于,包括第一获取模块,用于获取邻居设备完全邻接的保活时间;第二获取模块,用于获取发送至所述邻居设备的链路状态通告LSA的发送时间间隔,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短;第三获取模块,用于获取当前CPU的利用率;第一处理模块,用于根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算所述邻居设备的LSA发送队列长度L ;发送模块,用于在所述保活时间内,将所述长度L的LSA发送队列内的LSA发送至所述邻居设备。本发明第三个方面,提供一种网络系统,包括本发明实施例提供的所述的OSPF设备,以及至少一个与所述OSPF设备连接的邻居设备。由上述技术方案可知,本发明实施例在发送LSA的过程中,基于OSPF设备的当前CPU的利用率动态的调整发送至各邻居设备的LSA发送队列长度,在各邻居设备完全邻接的保活时间内发送调整后的LSA发送队列长度内的LSA,既避免了 OSPF设备因无法及时发送或者接收Hello报文而影响邻居设备的完全邻接状态,又不影响路由收敛,提高了与邻居设备的完全邻接状态的稳定性及网络的性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍。显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I为现有技术中OSPF扁平化网络的结构示意图;图2为本发明提供的链路状态通告发送方法实施例一的流程示意图;图3为本发明提供的链路状态通告发送方法实施例二的流程示意图;图4为本发明提供的OSPF设备实施例一的结构示意图;图5为本发明提供的OSPF设备实施例中第一处理模块的结构示意图;图6为本发明提供的OSPF设备实施例二的结构示意图7为本发明提供的网络系统实施例一的结构示意图。
具体实施例方式首先,对本发明实施例涉及的几个概念进行解释。0SPF,包括0SPFv2 (开放最短路径优先协议版本2-0pen Shortest Path Firstversion 2)和 0SPFv3 (开放最短路径优先协议版本 3-Open Shortest Path First version
3)。其中,0SPFv2是 IETF (The Internet Engineering Task Force,互联网工程任务组)组织开发的一个基于链路状态的内部网关协议,具有适应范围广、收敛迅速、无自环、便于层级化网络设计等特点,因此在IPv4 (Internet Protocol version 4,互联网协议版本
4)网络中获得了广泛应用。0SPFv2对应的标准规范为RFC2328。0SPFv3,应用在IPv6网络中。0SPFv3协议保留了 0SPFv2协议的优点,并针对IPv6网络的特点,进行了部分的修 订;是IPv6 (Internet Protocol version 6,互联网协议版本6)网络中主流的路由协议。0SPFv3协议中有许多与0SPFv2的标准RFC 2328规定是一致的,差异的地方在RFC 5340中有规定。本发明提供的技术方案同时适用于0SPFv2和0SPFv3,本文中将0SPFv2和0SPFv3统称为OSPF。邻居,某台设备的邻居即为与该设备直接相连的所有设备,OSPF设备通过Hello协议的机制来发现与其相连的邻居设备。初始时,OSPF设备向直连网络中广播自己的存在,直连网络中的其他路由器也同样广播他们自己的存在,OSPF设备在接收到邻居的广播后,就确定与自己相连的所有邻居了。 完全邻接关系,OSPF设备发现邻居后,与邻居设备建立双向通信,进入到双向通信状态,即2-way状态。2-way状态是指OSPF设备与邻居设备双方都收到了对方发送的Hello报文时的状态。OSPF设备与邻居设备进入2-way状态后,向所述邻居设备发送生成的LSA以便OSPF设备与邻居设备的数据库进行链路状态信息的同步更新。当数据库同步更新完毕,则OSPF设备与邻居设备进入完全邻接关系,即进入到FULL状态。LSA, Link State Advertisement,中文链路状态通告。OSPF协议中将路由器的链路状态称为LSA。LSA描述了本路由器所有的链路信息,包括接口信息、路由器邻居信息以及他们的状态信息。OSPF设备会将自身已知的LSA通告给邻居,邻居收到LSA同时,会将学习到的LSA信息通告给其它的OSPF邻居。通过这种机制,最终所有的OSPF设备都学习到整网OSPF拓扑信息。LS ACK, Link State Acknowledge,中文链路状态确认。邻居设备在收到LSA后会反馈LSACK给发送LSA的OSPF设备确认已经接收到。邻居重传列表,核心层OSPF设备每发送一个LSA给邻居设备就同步该LSA到该邻居设备对应的重传列表中,如果在重传周期,通常默认为5s,内无法收到邻居设备反馈的LSACK就触发重传操作,否则就从邻居重传列表中删除该LSA。为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。如图2所示,本发明提供的链路状态通告发送方法实施例一的流程示意图。如图中所示,本实施例所述的方法包括步骤101、获取邻居设备完全邻接的保活时间。具体地,按照RFC 2328,默认的邻居设备的完全邻接的保活时间为40s。OSPF设备获取预设置的所述邻居设备完全邻接的保活时间。步骤102、获取发送至所述邻居设备的链路状态通告LSA的发送时间间隔。具体地,OSPF设备获取当前发送至所述邻居设备的LSA的发送时间间隔。步骤103、获取当前CPU的利用率。具体地,OSPF设备获取自身当前CPU的利用率。所述CPU利用率能有效的表征OSPF设备当前的忙闲状态。
步骤104、根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短。具体地,OSPF设备根据所述保活时间和LSA的发送时间间隔,采用预设第一计算函数计算所述邻居设备的LSA发送队列初始长度U。然后,所述OSPF设备根据所述CPU利用率和所述初始长度U,采用预设第二计算函数计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短。其中,当所述保护时间不变时,所述第一计算函数是所述LSA的发送时间间隔的递减型函数,当所述LSA的发送时间间隔不变时,所述第一计算函数是所述保活时间的递增型函数;所述第二计算函数是所述CPU利用率的递减型函数。具体地,所述第一计算函数可表示为LQ=f (Live_time, Send_time)。其中,Live_time为所述保活时间,Send_time为所述LSA的发送时间间隔。该第一计算函数符合如下条件当所述Live_time为不变时,所述Lff (Send_time)为任意递减型函数,当所述Send_time为不变时,所述Lff (Live_time)为任意递增型函数。该第一计算函数可依据实际经验或实际运行结果来具体设定。所述第二计算函数可表示为=L=LtlKCX其中,L为所述邻居设备的LSA发送队列长度,C为当前OSPF设备的CPU利用率。f (C)可以是任意递减型函数,即满足当OSPF设备的CPU利用率高时根据第二计算函数得出的L比OSPF设备的CPU利用率低时短即可。该f (C)可依据实际经验或实际运行结果来具体设定。例如,上述第一计算函数可以为L0=f (Live_time, Send_time) =Live_time/Send_time (11)上述第二计算函数可以为L=L0f (C) =L0X (I-C) (12)。其中,式(11)符合当所述Live_time为定值时,所述LQ=Live_timeX (1/Sendtime)。由于 Live_time 为正数且为定值,LQ=Live_timeX (1/Send_time)即为一典型的幂指数递减型函数。当所述Send_time为定值时,所述Ltl= (1/Send_time) XLive_time。由于Send_time为正数且为定值,L0= (1/Send_time) XLive_time即为一典型的线性递增型函数。式(12)中所述C为百分数。f (C) = (I-C)为一典型的线性递减型函数。假设,保活时间为40s,LSA的发送时间间隔为1ms,OSPF当前CPU的利用率为40%,则根据上述
(11)计算得出L0= (40s/0. 001s) =40000,根据上述(12)计算得出L=40000X (1-40%)=24000。当OSPF设备的CPU利用率为100%的时候,根据(11)和(12)得出LSA发送队列长度L为O,此时表征当前OSPF设备繁忙,不能向所述邻居设备发送LSA,以避免影响OSPF设备收发和处理与其他邻居设备维持邻接关系的hello报文,待所述OSPF设备的CPU利用率降低后,再向所述邻居设备发送LSA。步骤105、在所述保活时间内,将所述长度L的LSA发送队列内的LSA发送至所述邻居设备。 具体地,OSPF设备将待发送的编码在前L个的LSA放入至上述步骤104计算出的长度为L的发送队列中,并在所述保活时间内,将长度L的发送队列内的LSA发送至所述邻居设备。假设当前要发送的LSA总个数为N,如果N>L就选择N中的编号前L个LSA放入所述发送队列。当前队列中的LSA全部发送完毕后进入下一个发送周期,从剩余的N-L个LSA中选择编号前L个LSA放入队列,依此方式直至全部发送完毕。本实施例在发送LSA的过程中,基于OSPF设备的当前CPU的利用率通过动态的调整OSPF设备发送至各邻居设备的LSA发送队列长度,在各邻居设备完全邻接的保活时间内发送调整后的LSA发送队列长度内的LSA,既避免了 OSPF设备因无法及时发送或者接收·Hello报文而影响邻居设备的完全邻接状态,又不影响路由收敛,提高了与邻居设备的完全邻接状态的稳定性及网络的性能。正常情况下,OSPF设备发送给邻居设备一个LSA,邻居设备接收到后会立刻反馈LS ACK。OSPF设备与邻居设备维持完全邻接关系互相发送的Hello报文是每hello_interval (hello报文发送间隔)时间发送一次。hello_interval默认情况下为10s。当LSA没有正常的被发送到邻居设备时,在一个重传周期后OSP F设备的该邻居设备对应的邻居重传列表中就会有要重传的LSA,或者在hello_interval X 2的时间内,即所述邻居设备完全邻接的保活时间的一半时间内,没有收到邻居设备发送的hello报文,表明当前网络出现拥塞,会影响OSPF设备为正常处理维持邻接关系的hello报文的收发,此时就需要调整LSA的发送速率。相应地,当一个重传周期后邻居设备对应的邻居重传列表没有要重传的LSA并且hello_intervalX2的时间内接收到邻居设备发送的hello报文,表明当前网络没有拥塞,不会影响OSPF设备为正常处理维持邻接关系的hello报文的收发,为提高网络的性能,也可适应性的调整OSPF设备发送LSA的速率。由此,本发明为进一步提高网络的性能,提供了链路状态通告发送方法实施例二。如图3中所示,本链路状态通告发送方法实施例二除包括上述实施例一中所述的步骤101 105之外,还包括如下步骤步骤106、若在重传周期后所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设的时间内未接收到所述邻居设备反馈的Hello报文,则增大所述LSA的发送时间间隔,否则,减小所述LSA的发送时间间隔,以根据增大或减小后的LSA的发送时间间隔重新计算所述邻居设备的LSA发送队列长度L。具体地,若在重传周期后所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设时间内未接收到所述邻居设备反馈的Hello报文,则采用预设的第一调整模型增大所述LSA的发送时间间隔,否则,采用预设的第二调整模型减小所述LSA的发送时间间隔。其中,所述预设时间为所述邻居完全邻接保活时间的一半时间。实际上,所述邻居完全邻接保活时间的一半时间等于上述的hell0_interValX2的时间。所述第一调整模型可以具体是递增型函数,以按照函数递增规律增大所述LSA的发送时间间隔。所述第二调整模型可以具体是递减型函数,以按照函数递减规律减小所述LSA的发送时间间隔。下面分别列出了所述第一调整模型与第二调整模型的具体实现实例,以进一步详细说明本实施例所述的方法。所述第一调整模型,具体可表示为下述式(2 )和(3 )。n=log2(Send_time/Send_hold_time) +2 ; (2)Send_time_after=Send_hold_timeX 2η_1,且 Send_time ^ Send_max_time ; (3)其中,Send_time为所述LSA的发送时间间隔,Send_hold_time为预设的发送时间间隔的调整值,Send_max_time为预设的发送时间间隔上限,Send_first_time为预设的发送时间间隔下限,所述Send_time_after为调整后的LSA的发送时间间隔。
例如,Send_first_time 为 1ms, Send_hold_time 为 2ms, Send_max_time 为 Is。默认状态下,OSPF设备是每Send_first_time发送一个LSA,即Ims发送一个LSA。假设OSPF设备因在重传周期内所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设的时间内未接收到所述邻居设备反馈的Hello报文根据上述式(2)和(3)调整了一次SencLtime,该Send_time当前为2ms。若调整后,OSPF设备的邻居设备对应的邻居重传列表中有待重传的LSA或在预设的时间内未接收到所述邻居设备反馈的Hello报文,则所述OSPF设备还需采用上述式(2)和(3)调整了一次Send_time。当前Send_time=2ms,具体计算过程如下n=log2 (2/2) +2=2 ;Send_t ime_af t er=2 X 22-1=4ms。由上述计算可以得出,Send_time_after为4ms。此时,OSPF设备以Send_time_after的时间间隔向邻居设备发送LSA。基于上述实施例一,所述OSPF设备获取到所述LSA的发送时间间隔为4ms。基于上述实施例一所述的方法,由于当前LSA的发送时间间隔增大(Send_time_after>Send_time),因此计算出的LSA发送队列长度L较之前2ms发送间隔时缩短了。若在所述保活时间内,OSPF设备将缩短后的长度为L的发送队列内的LSA发送至所述邻居设备,还出现在重传周期内所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设的时间内未接收到所述邻居设备反馈的Hello报文的情况,则需继续根据上述第一调整模型调整所述LSA的发送时间间隔,直到调整后的Send_time_after等于Send_max_time就不再变化。所述第二调整模型,具体可表示为下述式(4)和(5)。n=log2 (Send_time/Send_hold_time) ; (4)Send_time after=Send_hold_timeX 2η-1,且 Send_time ^ Send_first_time ; (5)其中,Send_time为所述LSA的发送时间间隔,Send_hold_time为预设的发送时间间隔的调整值,Send_first_time为预设的发送时间间隔下限,Send_first_time为预设的发送时间间隔下限,所述Send_time_after为调整后的LSA的发送时间间隔。例如,Send_first_time 为 1ms, Send_hold_time 为 2ms, Send_max_time 为 Is。假设OSPF设备的当前Send_time=32ms,采用上述式(4)和(5)具体计算过程如下n=log2 (32/2) =4 ;Send_t ime_af t er=2 X 24-1=16ms。由上述计算可以得出,Send_time_after为16ms。此时,OSPF设备以Send_time_after的时间间隔向邻居设备发送LSA。基于上述实施例一,所述OSPF设备获取到所述LSA的发送时间间隔为16ms。基于上述实施例一所述的方法,由于当前LSA的发送时间间隔减小(Send_time_after〈Send_time),因此计算出的LSA发送队列长度L较之前32ms的发送间隔时增长了。若在所述保活时间内,OSPF设备将增长后的长度为L的发送队列内的LSA发送至所述邻居设备,还出现所述邻居设备对应的重传列表中没有待重传的LSA或在预设的时间内接收到所述邻居设备反馈的Hello报文时的情况,则可以继续根据上述第二调整模型调整所述LSA的发送时间间隔,直到调整后的Send_time_after等于Send_f irst_time就不再变化。
通过上述实施例一所述的方法可根据当前的情况实时计算出OSPF设备发往各邻居设备LSA的最优发送队列长度,通过本实施例二可实时判断当前的LSA发送速率是否会影响到hello报文的及时收发和处理,然后通过预设的第一调整模型或第二调整模型实现OSPF设备上的LSA发送速率的动态调整,返回来再采用实施例一所述的步骤调整所述OSPF设备发往各邻居设备LSA的最优发送队列长度,一方面可以增强与邻居设备的完全邻接关系的稳定性,另一方面在确保稳定的基础上不会影响路由的收敛速率,进一步的提闻了网络的性能。这里需要说明的是本发明提供的各实施例中所提到的所述递增型函数可以是线性递增型函数(如y=ax+b, a>0)、多项式递增型函数(如Yza1X^a2, a^O)、指数递增型函数(如y=aex, a>0)或幂指数递增型函数(如在区间[O, + °° ], y = x2)等等。所述递减型函数同样可以是线性递减型函数(如y=ax+b, a〈0)、多项式递减型函数(如Y=B1X^a2, a,O)、指数递减型函数(y=ax,0〈a〈l)或幂指数递减型函数(如在区间[O, + °° ], y=l/x)。结合图I所示的网络实例,对本发明提供的所述方法作进一步的说明。核心层OSPF设备A,预设的发送时间间隔下限Send_firs_time为Ims,预设的发送时间间隔的调整值Send_hold_time为2ms,预设的发送时间间隔上限Send_max_time为Is0 A默认邻居设备完全邻接的保活时间为40s,重传周期为5s,初始LSA发送时间间隔为Send_first_time,当前A的CPU利用率为O。基于上述实施例一计算得出当前发送至BI的最优发送队列长度L为L= (40s/lms) X (1-0) =40000,100000中选择编号前40000加入BI对应的长度为40000的发送队列中。在所述邻居设备完全邻接的保活时间40s内将所述发送队列中的40000个LSA发送至BI。这40000个LSA的发送过程中,5s后A发现BI对应的邻居重传列表中有待重传的LSA或者40/2=20s内没有收到BI发送的hello报文,根据上述实施例二中所述的第一调整模型调大LSA的发送时间间隔为2ms,同时根据当前LSA的2ms发送时间间隔及A的CPU利用率计算得出发送队列长度为20000。A将编号前20000的LSA放入发送队列中,等待在当前邻居设备完全邻接的保活时间内发送至BI。依据上述过程,直至A中的所有待发的LSA全部发送完毕为止。由上述可知,本发明提供的所述链路状态通告发送方法基于上述实施例二所述的方法不断地调大或者调小LSA发送时间间隔,进而调整LSA的发送队列长度,直到全部LSA发送完毕为止,整个过程至并不影响A维持与其他设备的邻接关系收发Hello报文并处理,还同时保证了路由的正常收敛,还进一步地增强了 A与已建立邻接关系设备的邻接稳定性,不会导致任何一个邻居丢失,提高了网络的性能。本发明提供的上述方法各实施例,只需要对核心层OSPF设备上进行相应的部署,即所述核心层OSPF设备部署可实现上述各实施例提供的方法对应的软件或相应可实现上述方法的硬件实现模块,与核心层OSPF设备下联的所有邻居设备无需部署并且也无需感知上联的核心层OSPF设备的因部署而发生的动态变化,实现方便简单,利于大规模网络的应用。需要说明的是对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。本领域普通技术人员可以理解实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。 如图4所示,本发明提供的OSPF设备实施例一的结构示意图。如图中所示,本实施例一所述的OSPF设备包括第一获取模块I、第二获取模块2、第三获取模块3、第一处理模块4和发送模块5。其中,所述第一获取模块I用于获取邻居设备完全邻接的保活时间。所述第二获取模块2用于获取发送至所述邻居设备的链路状态通告LSA的发送时间间隔,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短。所述第三获取模块3用于获取当前CPU的利用率。所述第一处理模块4用于根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算所述邻居设备的LSA发送队列长度L。所述发送模块5用于在所述保活时间内,将所述长度L的LSA发送队列内的LSA发送至所述邻居设备。进一步地,如图5所示,上述实施例一中所述的第一处理模块4包括第一计算单元401和第二计算单元402。其中,所述第一计算单元401用于根据所述保活时间和所述LSA的发送时间间隔,采用预设第一计算函数计算所述邻居设备的LSA发送队列初始长度U,其中,当所述保护时间不变时,所述第一计算函数是所述LSA的发送时间间隔的递减型函数,当所述LSA的发送时间间隔不变时,所述第一计算函数是所述保活时间的递增型函数。所述第二计算单元用于根据所述CPU利用率和所述初始长度U,采用预设第二计算函数计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短,其中,所述第二计算函数是所述CPU利用率的递减型函数。具体地,所述第一计算函数及所述第二计算函数的具体形式及实例可参照上述链路状态通告发送方法实施例一中的相关内容,此处不再赘述。本实施例在发送LSA的过程中,基于OSPF设备的当前CPU的利用率通过动态的调整OSPF设备发送至各邻居设备的LSA发送队列长度,在各邻居设备完全邻接的保活时间内发送调整后的LSA发送队列长度内的LSA,既避免了 OSPF设备因无法及时发送或者接收Hello报文而影响邻居设备的完全邻接状态,又不影响路由收敛,提高了与邻居设备的完全邻接状态的稳定性及网络的性能。如图6所示,本发明提供的OSPF设备实施例二的结构示意图。如图中所示,本实施例二除包括上述实施例中所述的模块外,还包括所述第二处理模块6。其中,所述第二处理模块6用于当在重传周期后所述邻居设备对应的重传列表中有待重传的LSA或在预设的时间内未接收到所述邻居设备反馈的Hello报文时,增大LSA的发送时间间隔;当在重传周期后所述邻居设备对应的重传列表中没有待重传的LSA或在预设的时间内接收到所述邻居设备反馈的Hello报文时,减小LSA的发送时间间隔。进一步地,所述第二处理模块具体用于若在重传周期后所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设时间内未接收到所述邻居设备反馈的Hello报文,则采用预设的第一调整模型增大所述LSA的发送时间间隔,否则,采用预设的第二调整模型减小所述LSA的发送时间间隔。其中,所述预设时间为所述邻居完全邻接保活时间的一半时间。所述第一调整模型可以具体是递增型函数,以按照函数递增规律增大所述LSA的发送时间间隔。所述递增型函数可以是线性函数(y=ax+b)、多项式函数(y = B1X1^a2Xlri+…aj^x+aJ、指数函数(y = aebx)或幂指数函数(y = axb)等等。所述第二调整模型可以具体是递减型函数,以按照函数递减规律减小所述LSA的发送时间间隔。所述递减函数可以是线性函数、多项式函数、指数函数或幂指数函数。例如,所述第一调整模型具体为 n=log2 (Send_time/Send_hold_time) +2 ; Send_time_after=Send_hold_time X 2η_1,且 Send_time ^ Send_max_time。所述第二调整模型,具体为n=log2 (Send_time/Send_hold_time);Send_time_after=Send_hold_time X 2η-1,且 Send_time ^ Send_first_time。上述各式中,Send_time为所述LSA的发送时间间隔,Send_hold_time为预设的发送时间间隔的调整值,Send_max_time为预设的发送时间间隔上限,Send_first_time为预设的发送时间间隔下限,所述Send_time_after为采用所述第一调整模型或第二调整模型调整后的LSA的发送时间间隔。具体本实施例所述的OSPF设备的实现实现原理和实例可参见上述提供的方法实施例中所述的相关内容,此处不再赘述。如图7所示,本发明提供的网络系统实施例一的结构示意图。如图中所示,所述网络系统包括OSPF设备以及至少一个与所述OSPF设备连接的邻居设备。其中,所述OSPF设备用于获取邻居设备完全邻接的保活时间,获取发送至所述邻居设备的链路状态通告LSA的发送时间间隔,获取当前CPU的利用率,根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时缩短所述长度L,在所述CPU利用率低时增长所述长度L,在所述保活时间内,将长度L的发送队列内的LSA发送至所述邻居设备。具体地,本实施例中所述的OSPF设备可采用上述实施例一或实施例二中所示的OSPF设备。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和网络系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本发明提供的所述方法实施例,只需要对核心层OSPF设备上进行相应的部署,即所述核心层OSPF设备部署可实现上述各实施例提供的方法对应的软件或相应可实现上述方法的硬件实现模块,与核心层OSPF设备下联的所有邻居设备无需部署并且也无需感知上联的核心层OSPF设备的因部署而发生的动态变化,实现方便简单,利于大规模网络的应用。本实施例中所述OSPF设备在发送LSA的过程中,通过动态的调整OSPF设备发送至各邻居设备的LSA发送队列长度,OSPF设备在邻居设备完全邻接的保活时间内发送调整后的LSA发送队列长度内的LSA,既避免了 OSPF设备因无法及时发送或者接收Hello报文而影响邻居设备的完全邻接状态,又不影响路由收敛,提高了邻居设备完全邻接状态的稳定性,又同时进一步地提高了网络的性能。在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到一个模块中。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1.一种链路状态通告发送方法,其特征在于,包括 犾取邻居设备完全邻接的保活时间; 获取发送至所述邻居设备的链路状态通告LSA的发送时间间隔; 获取当前CPU的利用率; 根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短; 在所述保活时间内,将所述长度L的LSA发送队列内的LSA发送至所述邻居设备。
2.根据权利要求I所述的链路状态通告发送方法,其特征在于,所述根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短,包括 根据所述保活时间和所述LSA的发送时间间隔,采用预设第一计算函数计算所述邻居设备的LSA发送队列初始长度U,其中,当所述保护时间不变时,所述第一计算函数是所述LSA的发送时间间隔的递减型函数,当所述LSA的发送时间间隔不变时,所述第一计算函数是所述保活时间的递增型函数; 根据所述CPU利用率和所述初始长度U,采用预设第二计算函数计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短,其中,所述第二计算函数是所述CPU利用率的递减型函数。
3.根据权利要求I或2所述的链路状态通告发送方法,其特征在于,还包括 若在重传周期后所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设时间内未接收到所述邻居设备反馈的Hello报文,则增大所述LSA的发送时间间隔,否则,减小所述LSA的发送时间间隔,以根据增大或减小后的LSA的发送时间间隔重新计算所述邻居设备的LSA发送队列长度L。
4.根据权利要求3所述的链路状态通告发送方法,其特征在于,所述若在重传周期后所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设时间内未接收到所述邻居设备反馈的Hello报文,则增大所述LSA的发送时间间隔,否则,减小所述LSA的发送时间间隔,具体为 若在重传周期后所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设时间内未接收到所述邻居设备反馈的Hello报文,则采用预设的第一调整模型增大所述LSA的发送时间间隔,否则,采用预设的第二调整模型减小所述LSA的发送时间间隔; 其中,所述第一调整模型为递增型函数,以按照函数递增规律增大所述LSA的发送时间间隔,所述第二调整模型为递减型函数,以按照函数递减规律减小所述LSA的发送时间间隔。
5.根据权利要求3所述的链路状态通告发送方法,其特征在于,所述预设时间为所述邻居设备完全邻接的保活时间的一半。
6.一种开放最短路径优先协议OSPF设备,其特征在于,包括 第一获取模块,用于获取邻居设备完全邻接的保活时间; 第二获取模块,用于获取发送至所述邻居设备的链路状态通告LSA的发送时间间隔,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短; 第三获取模块,用于获取当前CPU的利用率;第一处理模块,用于根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算所述邻居设备的LSA发送队列长度L ; 发送模块,用于在所述保活时间内,将所述长度L的LSA发送队列内的LSA发送至所述邻居设备。
7.根据权利要求6所述的OSPF设备,其特征在于,所述第一处理模块包括 第一计算单元,用于根据所述保活时间和所述LSA的发送时间间隔,采用预设第一计算函数计算所述邻居设备的LSA发送队列初始长度U,其中,当所述保护时间不变时,所述第一计算函数是所述LSA的发送时间间隔的递减型函数,当所述LSA的发送时间间隔不变时,所述第一计算函数是所述保活时间的递增型函数; 第二计算单元,用于根据所述(PU利用率和所述初始长度Lci,采用预设第二计算函数计算所述邻居设备的LSA发送队列长度L,以在所述CPU利用率高时所述长度L比在所述CPU利用率低时短,其中,所述第二计算函数是所述CPU利用率的递减型函数。
8.根据权利要求6或7所述的OSPF设备,其特征在于,还包括第二处理模块; 所述第二处理模块,用于当在重传周期后所述邻居设备对应的重传列表中有待重传的LSA或在预设的时间内未接收到所述邻居设备反馈的Hello报文时,增大所述LSA的发送时间间隔,当在重传周期后所述邻居设备对应的重传列表中没有待重传的LSA或在预设的时间内接收到所述邻居设备反馈的Hello报文时,减小所述LSA的发送时间间隔,以根据增大或减小后的LSA的发送时间间隔重新计算所述邻居设备的LSA发送队列长度L。
9.根据权利要求8所述的OSPF设备,其特征在于,所述第二处理模块,具体用于若在重传周期后所述邻居设备对应的邻居重传列表中有待重传的LSA或在预设时间内未接收到所述邻居设备反馈的Hello报文,则采用预设的第一调整模型增大所述LSA的发送时间间隔,否则,采用预设的第二调整模型减小所述LSA的发送时间间隔,以根据增大或减小后的LSA的发送时间间隔重新计算所述邻居设备的LSA发送队列长度L ; 其中,所述第一调整模型为递增型函数,以按照函数递增规律增大所述LSA的发送时间间隔,所述第二调整模型为递减型函数,以按照函数递减规律减小所述LSA的发送时间间隔。
10.一种网络系统,其特征在于,包括上述权利要求6 9中任一所述的OSPF设备,以及至少一个与所述OSPF设备连接的邻居设备。
全文摘要
本发明提供一种链路状态通告发送方法、OSPF设备及网络系统。其中,所述方法包括获取邻居设备完全邻接的保活时间;获取发送至邻居设备的链路状态通告LSA的发送时间间隔;获取当前CPU的利用率;根据所述保活时间、LSA的发送时间间隔及当前CPU利用率,计算邻居设备的LSA发送队列长度L,以在CPU利用率高时所述长度L比在CPU利用率低时短;在所述保活时间内,将长度L的LSA发送队列内的LSA发送至所述邻居设备。采用发明提供的技术方案,既避免了OSPF设备因无法及时发送或者接收Hello报文而影响邻居设备的完全邻接状态,又不影响路由收敛,增强了网络已有邻居设备完全邻接状态的稳定性。
文档编号H04L12/861GK102904817SQ20121041503
公开日2013年1月30日 申请日期2012年10月24日 优先权日2012年10月24日
发明者赵新星 申请人:福建星网锐捷网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1