专利名称:一种邻接表项更新的方法和路由器的制作方法
技术领域:
本申请涉及通信技术领域,特别涉及一种邻接表项更新的方法和路由器。
背景技术:
目前主流的路由协议主要包括开放式最短路径优先(OSPF)协议或0SPFv3协议、中间系统到中间系统路由协议(IS-IS)协议、路由信息协议(RIP)协议或RIPng协议、静态路由,在电信级的应用中,快速收敛是衡量一个路由协议实现好坏的重要指标。其中重要的一个指标,就是回切链路不丢包。对于点到点或点到多点类型网络的OSPF协议、IS-IS协议、RIP协议,协议建立邻居过程中,通常不会发送单播报文,进而不会触发对端邻接表项的学习;同样,静态路由的出接口和下一跳变为有效时,也不会触发对端邻接表项的学习,只有路由下发到转发信息 库(FIB)或流量匹配到路由时,才会触发对端邻接表的学习,这样,路由的更新可能会快于邻接表项的更新。在链路回切等应用场景中,路由协议会重新计算路由,下发路由更新消息,流量就会回切,这时,到对端的邻接表项可能还未建立,会导致回切的少量丢包。由上可见,在链路回切等应用中,实现路由与邻接表项的联动尤为重要。
发明内容
有鉴于此,本申请提供一种邻接表项更新的方法和路由器,能够实现路由与邻接表项的联动,解决了路由与邻接表项学习的时间差的问题。为解决上述技术问题,本发明的技术方案是这样实现的一种邻接表项更新的方法,应用于一路由器,该路由器与其他路由器之间建立邻居,包括在确定所述邻居的IP地址对应的邻接表项不存在或无效时,触发该邻居的IP地址对应的邻接表项的建立,标识该邻居的状态为不同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发转发信息库FIB;在该邻居的IP地址对应的邻接表项建立成功并更新时,将该邻居的状态恢复为同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。一种路由器,该路由器与其他路由器之间建立邻居,其特征在于,所述路由器包括确定单元、触发单元和处理单元;所述确定单元,用于确定所述邻居的IP地址对应的邻接表项是否存在,是否有效;所述触发单元,用于在所述确定单元确定所述邻居的IP地址对应的邻接表项不存在或无效时,触发所述邻居的IP地址对应的邻接表项的建立;所述处理单元,用于在所述确定单元确定所述邻居的IP地址对应的邻接表项不存在或无效时,标识该邻居的状态为不同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发信息转发库FIB ;当所述触发单元触发所述邻居的IP地址对应的邻接表项建立成功并更新时,将该邻居的状态恢复为同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。综上所述,本申请通过在邻居的邻接表项不存在或无效时,主动触发邻接表项的建立并更新,能够实现路由与邻接表项的联动,解决了路由与邻接表项学习的时间差的问题。
图I为本发明实施例中邻接表项更新的流程示意图;图2为本发明实施例所述方法的一种应用场景的组网结构示意图;图3为本发明具体实施例中通过OSPF协议建立的邻居的IP地址对应的邻接表项 更新的流程示意图;图4为本发明具体实施例中本地生成的静态路由的下一跳对应的邻接表项更新的流程示意图;图5为本发明具体实施例中应用于邻接表项更新的路由器的结构示意图。
具体实施例方式为使本发明的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。本发明实施例中提出一种邻接表项更新的方法,能够实现路由与邻接表项的联动,解决了路由与邻接表项学习的时间差的问题。参见图1,图I为本发明实施例中邻接表项更新的流程示意图。具体步骤为步骤101,路由器通过路由协议建立邻居。其中,路由协议包含0SPF协议或0SPFv3协议、IS-IS协议、RIP协议或RIPng协议;0SPF协议支持IPv4,0SPFv3协议支持IPv6,IS-IS协议同时支持IPv4和IPv6,RIP协议支持IPv4,RIPng协议支持IPv6。步骤102,该路由器确定所述邻居的IP地址对应的邻接表项不存在或无效时,触发所述邻居的IP地址对应的邻接表项的建立,标识该邻居的状态为不同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。这里,优选下发是指如果到某个目的地址仅有I条路由,则不管该路由是否为邻居状态同步的路由,都将该路由下发至FIB ;如果到某个目的地址有多条路由,则从该多条路由中选择邻居状态同步的路由下发FIB,如果该多条路由都不是邻居状态同步的路由,则可以按照预设规则或随机选择其中一条路由下发FIB。其中,邻居状态同步的路由是指对于该路由中的任一路由器,它的下一跳邻居的状态均为同步状态,即该路由中的任一路由器上都建立有下一跳邻居的IP地址对应的邻接表项。本步骤中标识该邻居的状态为不同步状态,可以通过字段标识,也可以通过修改邻居的参数值实现,通知所有邻居的实现,可以通过在已使用的报文中携带参数值表示,也可以新增一条相应协议的报文实现。在具体实现时,标识的是邻居的状态为不同步状态,在计算与本设备直连的路由时,当下一跳为该邻居的IP地址时,该路由自动继承该邻居的状态的不同状态,即路由的下一跳邻居的状态为不同步状态。也正因为与同一邻居可能学习到多条路由,因此可以标识该邻居的状态为不同步状态;如果计算的不是与本设备直连的路由时,则确定的是对应的链路上是否存在邻居状态不同步的路由。步骤103,若所述邻居的IP地址对应的邻接表项建立成功并更新,将该邻居的状态恢复为同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。由于一个接口可能会建立多个邻居,因此若所述邻居的IP地址对应的邻接表项建立成功并更新之后,将该邻居的状态恢复为同步状态之前,所述方法进一步包括确定与该邻居处于同一接口的其他邻居的状态是否均为同步状态,如果是,执行所述将该邻居的状态恢复为同步状态及后续步骤;否则,结束该流程,即不做任何处理。 本实施例的实现为在所述邻居的IP地址对应的邻接表项不存在或无效时,在进行路由计算时,优先使用该路由以外的路由进行计算,当所述邻接表项存在且有效,在进行路由计算时,该路由正常参与路由的计算。对于通过新增报文将该邻居的状态为不同步状态通知所有邻居,包括两种实现方式第一种通过携带状态为同步状态的邻居的邻居信息的通知报文,将该邻居的状态为不同步状态通知所有邻居;第二种通过携带该邻居的邻居状态为不同步状态的通知报文,将该邻居的状态为不同步状态通知所有邻居。其中,第一种实现方式是通知所有邻居时不携带该邻居的邻居信息;对接收到该通知报文的路由器来讲,相当于发送通知的路由器无该邻居。第二种实现方式是通知所有邻居该邻居的状态为不同步状态,对于接收到该通知报文的路由器来讲,相当于获知发送通知的路由器有该邻居,但是邻居状态不同步。同样道理,可以通过两种方式通知将该邻居的状态为同步状态通知所有邻居,具体为第一种通过携带所述邻居的状态为同步状态的邻居的邻居信息的通知报文,将该邻居的状态为同步状态通知所有邻居;第二种为携带该邻居的邻居状态为同步状态信息的通知报文,将该邻居的状态为同步状态通知所有邻居。通过更改邻居的参数值,利用已有报文通知所有邻居该邻居的状态的方法如下当所述建立邻居的路由协议为OSPF协议或0SPFv3协议,且路由器确定所述邻居的IP地址对应的邻接表项不存在或无效时,将该邻居的cost值修改为最大值(maxcost),更新LSA中的对应邻居的cost值发布给所有邻居;在本地进行路由计算时,优选cost值小的路由并下发FIB ;若所述邻居的IP地址对应的邻接表项建立成功并更新,将该邻居的cost值恢复为配置值,更新LSA中对应邻居的cost值发布给所有邻居;在本地进行路由计算时,优选cost值小的路由并下发FIB。其中,具体实现时maxcost设置为Oxffff ;更新LSA中对应邻居的cost值,在具体实现时为更新LSA中对应描述该邻居链路的cost值。当所述路由协议为IS-IS协议,且路由器确定所述邻居的IP地址对应的邻接表项不存在或无效时,将该邻居的cost值修改为maxcost,更新LSP中对应邻居的cost值,并发布给所有邻居;在本地进行路由计算时,优选cost值小的路由并下发FIB ;若所述邻居的IP地址对应的邻接表项建立成功并更新,将该邻居的cost值恢复为配置值,更新LSP中对应邻居的cost值,并发布给所有邻居;在本地进行路由计算时,优选cost值小的路由并下发FIB。其中,具体实现时当cost-type为wide模式时,maxcost设置为Oxffffff,cost-type为narrow模式时,maxcost设置为3f ;更新LSP中对应邻居的cost值,在具体实现时为更新LSP中对应邻居TLV中cost值。当所述路由协议为RIP协议或RIPng协议,且路由器确定所述邻居的IP地址对应的邻接表项不存在或无效时,将该邻居的cost值修改为maxcost,通过更新报文将所述邻居的cost值发布给所有邻居;在本地进行路由计算时,优选cost值小的路由并下发FIB ;若所述邻居的IP地址对应的邻接表项建立成功并更新,将该邻居的cost值恢复为配置值,通过更新报文将所述邻居的cost值发布给所有邻居;在本地进行路由计算时,优选cost值小的路由并下发FIB。其中,在具体实现时,maxcost设置为15 ;通过更新报文将所述邻居的cost值发布给所有邻居,具体实现为RIP更新的是对应邻居发布路由的cost值。该方法进一步包括
接收到任一所述邻居发送的其邻居同步状态的通知,更新该邻居的邻居同步状态,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。下面举例说明接收到邻居的通知时,具体处理过程参见图2,图2为组网结构示意图。图2中Rl和R3为R2的邻居。当R2确定邻居R3的IP地址对应的邻接表项不存在或无效时,标识邻居R3的状态为不同步状态,并通知邻居Rl和R3。当邻居Rl在计算到R3的路由时,其中在计算Rl经过R2再到R3的路由时,发现R2的邻居R3的状态为不同步状态,因此舍弃该路由,而优选Rl直接到达R3的路由。当R2确定邻居R3的IP地址对应的邻接表存在且有效时,恢复邻居R3的状态为同步状态,并通知邻居Rl和R3,Rl接收到该通知时,根据现有实现计算到达R3的路由。下面以路由协议为OSPF协议为例,通过具体实施例来详细说明邻接表项更新的过程。参见图3,图3为本发明具体实施例中通过OSPF协议建立的邻居的IP地址对应的邻接表项更新的流程示意图。步骤301,路由器通过OSPF协议与其他路由器建立邻居。步骤302,该路由器确定所述邻居的IP地址对应的邻接表项是否存在,如果是,执行步骤303 ;否则,执行步骤306。在上述路由协议建立邻居的过程中不会发送单播报文,进而不会触发对端邻接表项的学习,当路由下发到FIB,或者有流量匹配到路由时,才会触发对端邻接表项的学习。因此,邻居建立后,邻居的IP地址对应的邻接表项可能是还未建立的。其中,邻接表项的信息包含有邻居的IP地址、MAC地址、VLAN ID和出接口号等,同现有实现中邻接表项包含的内容相同,这里不再一一赘述。步骤303,该路由器确定所述邻居的IP地址对应的邻接表项是否有效,如果是,执行步骤307 ;否则,执行步骤304。如果邻接表项存在,还要判断该邻接表项是否有效,当接收到邻接表项变化的消息为删除邻接表项时,确定该邻接表项为无效,当接收到邻接表项变化的消息为增加邻接表项时,确定该邻接表项为有效。步骤304,该路由器触发与所述邻居的IP地址对应的邻接表项的建立,并将所述邻居的cost值修改为maxcost,更新本地产生的LSA,发布给所有邻居。本步骤中更新本地产生的LSA,并发布给所有邻居,即将LSA中对应邻居的cost值更新为Oxffff,并通知所有邻居,路由器的所有邻居接收到该通知,需要进行路由计算时,根据邻居的cost值确定路由,当存在其他路由的cost值也为Oxffff时,优选其他路由,即尽量不会使用路由器到达所述邻居的路径的路由。本步骤相当于主动触发邻接表项 的建立,不需要等到有报文流量进行路由匹配,或将路由下发到FIB之后才触发邻接表项的建立。建立的过程为根据邻居的IP地址,向对端邻居发送建立邻接表项的请求,接收到对端发送的响应报文,根据响应报文中的信息进行邻接表项的建立。步骤305,路由器确定所述邻接表项是否建立成功并更新,如果是,执彳了步骤306 ;否则,执行步骤308。步骤306,该路由器将所述邻居的cost值恢复为配置值,更新本地产生的LSA’并发布给所有邻居。步骤307,该路由器在本地进行路由计算,并下发FIB,执行步骤308。路由器到达同一目的路由器的路由的优先级相同,因此根据当前各路由的cost值确定选取哪条路由进行下发。通常情况下,配置的cost值不为maxcost,如果配置的cost值为maxcost,而由于邻接表项状态不同步,将当前邻居的cost值修改为maxcost,这样可以通过对该修改cost值的路由进行标识,以优选未标识的路由,至于如何标识根据使用者具体实现。步骤308,结束该流程。对于本地生成的静态路由,也需对其下一跳对应的邻接表项是否生成,是否有效进行处理,具体如下本地生成静态路由;确定该静态路由下一跳对应的邻接表项不存在或无效时,触发所述静态路由下一跳对应的邻接表项的建立,标识该静态路由的下一跳的状态为不同步状态,在进行路由计算时,优选下一跳的状态同步的路由并下发FIB ;。若所述静态路由下一跳对应的邻接表项建立成功并更新,将该静态路由下一跳的状态恢复为同步状态,在进行路由计算时,优选下一跳的状态同步的路由并下发FIB。这里的处理过程同通过路由协议建立邻居时,对邻居的目的IP地址的标识以及恢复,进行路由计算过程相同,只是这里仅对该静态路由的下一跳的状态进行处理即可,不涉及到邻居,因此也不需要向邻居发布信息。这里,优选下发是指如果到某个目的地址仅有I条静态路由,则不管该静态路由的下一跳状态是否同步,都将该静态路由下发至FIB ;如果到某个目的地址有多条路由(包括静态路由和动态路由),则根据预设规则(如路由优先级等)从该多条路由中选择邻居状态同步的路由或下一跳同步的静态路由下发FIB。通过优选下一跳的状态同步的路由进行下发,可以避免在有其他邻居状态同步的路由时,将下一跳的状态不同步的静态路由下发至 FIB。参见图4,图4为本发明具体实施例中本地生成的静态路由的下一跳对应的邻接表项更新的流程示意图。具体步骤为步骤401,路由器在本地生成静态路由。
步骤402,该路由器确定该静态路由下一跳对应的邻接表项不存在或无效时,触发所述静态路由下一跳对应的邻接表项的建立,并将该静态路由的优先级设置为最低;进行路由计算并下发FIB。静态路由生成且有效时,也不会触发静态路由的下一跳对应的邻接表项的学习;当该静态路由下发到FIB,或有流量匹配到该静态路由时,才会触发该静态路由下一跳对应的邻接表项的建立。在接收到邻接表项变化消息为删除邻接表项时,确定该静态路由下一跳对应的邻接表项无效;当接收到邻接表项变化信息为增加邻接表项时,确定该静态路由下一跳对应的邻接表项有效。当在进行路由计算时,优选优先级高的路由。当该静态路由的优先级修改后,若与其他路由的优先级相同,在进行路由计算时,优选未修改优先级的路由。具体实现时,可以对修改优先级的路由进行标识,进行路由优选时,选择未标识的路由。步骤403,若所述静态路由下一跳对应的邻接表项建立成功并更新,该路由器将该 静态路由的优先级恢复为配置值,进行路由计算并下发FIB。在本发明具体实施例的实现中,路由下发到FIB或流量匹配到路由时,还会触发对端邻接表的学习,当邻接表项存在时,不再学习。路由下发到FIB或流量匹配到路由时具体实现同现有实现,这里不再赘述。由上具体实施例可见,本发明具体实施例中,在邻接表项不存在或无效的情况下,由路由协议主动触发邻接表项的请求建立,并将当前邻接表项状态不同步信息发布给所有邻居。应用在链路回切时,保证远端链路不会将流量切换回该链路,当邻接表项建立成功并更新,将邻接表项状态恢复到同步时,将远端链路流量回切,实现流量平滑迁移。本发明具体实施例中基于同样的发明构思,还提出一种路由器,该路由器与其他路由器之间建立邻居。参见图5,图5为本发明具体实施例中应用于邻接表项更新的路由器的结构示意图。该路由器包括确定单元501、触发单元502和处理单元503。确定单元501,用于确定所述邻居的IP地址对应的邻接表项是否存在,是否有效。触发单元502,用于在确定单元501确定所述邻居的IP地址对应的邻接表项不存在或无效时,触发所述邻居的IP地址对应的邻接表项的建立。处理单元503,用于在确定单元501确定所述邻居的IP地址对应的邻接表项不存在或无效时,标识该邻居的状态为不同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发信息转发库FIB ;当触发单元502触发所述邻居的IP地址对应的邻接表项建立成功并更新时,将该邻居的状态恢复为同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。较佳地,该路由器进一步包括接收单元504。接收单元504,用于接收任一所述邻居发送的其邻居同步状态的通知。处理单元503,进一步用于当接收单元504接收到该邻居发送的其邻居同步状态的通知时,更新该邻居的邻居同步状态,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。较佳地,处理单元503,用于标识该邻居状态为不同步状态,并通过携带状态为同步状态的邻居的邻居信息,或携带该邻居的邻居状态为不同步状态的通知报文,将该邻居的状态为不同步状态通知所有邻居;标识该邻居的状态为同步状态,并通过携带状态为同步状态的邻居的邻居信息,或携带该邻居的状态为同步状态的通知报文,将该邻居的状态为同步状态通知所有邻居。较佳地,处理单元503,用于当确定单元501确定所述邻居的IP地址对应的邻接表项不存在或无效时,若建立邻居的路由协议为开放式最短路径优先OSPF协议或0SPFv3协议,将该邻居的cost值修改为maxcost,更新链路状态LSA中对应邻居的cost值发布给所有邻居;若所述路由协议为中间系统到中间系统路由协议IS-IS协议,将该邻居的cost值修改为maxcost,更新链路状态协议数据单元LSP中对应邻居的cost值,并发布给所有邻居;若所述路由协议为路由信息协议RIP协议或RIPng协议,将该邻居的cost值修改为maxcost,通过更新报文将所述邻居的cost值发布给所有邻居;当所述触发单元触发所述邻居的IP地址对应的邻接表项建立成功并更新时,若所述路由协议为OSPF协议或0SPFv3协议,将该邻 居的cost值恢复为配置值,更新LSA中对应邻居的cost值发布给所有邻居;若所述路由协议为IS-IS协议,将该邻居的cost值恢复为配置值,更新LSP中对应邻居的cost值,并发布给所有邻居;若所述路由协议为RIP协议或RIPng协议时,将该邻居的cost值恢复为配置值,通过更新报文将所述邻居的cost值发布给所有邻居;在本地进行路由计算时,优选cost值小的路由并下发FIB。较佳地,确定单元501,进一步用于触发单元502触发所述邻居的IP地址对应的邻接表项建立成功并更新时,确定与该邻居处于同一接口的其他邻居的状态是否为同步状态,如果是,触发处理单元503执行将该邻居的状态恢复为同步状态及后续操作;否则;触发处理单元503保持本地当前FIB不变。较佳地,该路由器进一步包括生成单元505。生成单元505,用于在本地生成静态路由。确定单元501,进一步用于确定生成单元505生成的静态路由下一跳对应的邻接表项是否存在,是否无效。触发单元502,进一步用于当确定单元501确定所述静态路由下一跳对应的邻接表项不存在或无效时,触发所述静态路由下一跳对应的邻接表项的建立。处理单元503,进一步用于当确定单元501确定所述静态路由下一跳对应的邻接表项不存在或无效时,标识该静态路由的下一跳的状态为不同步状态,并在进行路由计算时,优选下一跳状态同步的路由并下发FIB ;若触发单元502触发所述静态路由下一跳对应的邻接表项建立成功并更新,将该静态路由下一跳的状态恢复为同步状态,并在进行路由计算时,优选下一跳状态同步的路由并下发FIB。较佳地,该路由器进一步包括生成单元505。生成单元505,用于在本地生成静态路由。确定单元501,进一步用于确定生成单元505生成的静态路由下一跳对应的邻接表项是否存在,是否无效。触发单元502,进一步用于当确定单元501确定所述静态路由下一跳对应的邻接表项不存在或无效时,触发所述静态路由下一跳对应的邻接表项的建立。
处理单元503,进一步用于当确定单元501确定所述静态路由下一跳对应的邻接表项不存在或无效时,将该静态路由的优先级设置为最低,并进行路由计算以及下发FIB;若触发单元502触发所述静态路由下一跳对应的邻接表项建立成功并更新,将该静态路由的优先级恢复为配置值,并进行路由计算以及下发FIB。上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单兀。综上所述,本发明具体实施例中通过在邻居的邻接表项不存在或无效时,主动触发邻接表项的建立并更新,能够实现路由与邻接表项的联动,解决了路由与邻接表项学习的时间差的问题。同时在邻居的邻接表项不存在或无效时,标识该邻接表项状态为不同步状态,并通知所有邻居,使邻居不将流量切换到该路径;邻接表项建立成功并更新时,通知所有邻居,可以将流量切换到该路径上,实现流量的平滑迁移,不会产生丢包现象。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种邻接表项更新的方法,应用于一路由器,该路由器与其他路由器之间建立邻居,其特征在于,包括 在确定所述邻居的IP地址对应的邻接表项不存在或无效时,触发该邻居的IP地址对应的邻接表项的建立,标识该邻居的状态为不同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发转发信息库FIB ; 在该邻居的IP地址对应的邻接表项建立成功并更新时,将该邻居的状态恢复为同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。
2.根据权利要求I所述的方法,其特征在于,所述方法进一步包括 接收到任一所述邻居发送的其邻居同步状态的通知,更新该邻居的邻居同步状态,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。
3.根据权利要求I所述的方法,其特征在于,所述标识该邻居的状态为不同步状态并通知所有邻居,包括标识该邻居状态为不同步状态,并通过携带状态为同步状态的邻居的邻居信息,或携带该邻居的邻居状态为不同步状态的通知报文,将该邻居的状态为不同步状态通知所有邻居; 所述标识该邻居的状态为同步状态并通知所有邻居,包括标识该邻居的状态为同步状态,并通过携带状态为同步状态的邻居的邻居信息,或携带该邻居的状态为同步状态的通知报文,将该邻居的状态为同步状态通知所有邻居。
4.根据权利要求I所述的方法,其特征在于,所述标识该邻居的状态为不同步状态并通知所有邻居,包括 当建立该邻居的路由协议为开放式最短路径优先OSPF协议或0SPFv3协议时,将该邻居的代价cost值修改为最大代价maxcost,更新链路状态LSA中对应该邻居的cost值发布给所有邻居; 当所述路由协议为中间系统到中间系统路由协议IS-IS协议时,将该邻居的cost值修改为maxcost,更新链路状态协议数据单元LSP中对应邻居的cost值,并发布给所有邻居; 当所述路由协议为路由信息协议RIP协议或RIPng协议时,将该邻居的cost值修改为maxcost,通过更新报文将所述邻居的cost值发布给所有邻居; 所述标识该邻居的状态为同步状态并通知所有邻居,包括 当所述路由协议为OSPF协议或OSPFng协议时,将该邻居的cost值恢复为配置值,更新LSA中对应邻居的cost值发布给所有邻居;; 当所述路由协议为IS-IS协议时,将该邻居的cost值恢复为配置值,更新LSP中对应邻居的cost值,并发布给所有邻居; 当所述路由协议为RIP协议时,将该邻居的cost值恢复为配置值,通过更新报文将所述邻居的cost值发布给所有邻居; 所述优选邻居状态同步的路由并下发FIB,包括优选cost值小的路由并下发FIB。
5.根据权利要求I所述的方法,其特征在于, 在所述邻居的IP地址对应的邻接表项建立成功并更新之后,将该邻居的状态恢复为同步状态之前,所述方法进一步包括确定与该邻居处于同一接口的其他邻居的状态是否均为同步状态,如果是,执行所述将该邻居的状态恢复为同步状态及后续步骤;否则,结束流程。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法进一步包括 本地生成静态路由; 确定该静态路由下一跳对应的邻接表项不存在或无效时,触发所述静态路由下一跳对应的邻接表项的建立,标识该静态路由的下一跳的状态为不同步状态,并在进行路由计算时,优选下一跳状态同步的路由并下发FIB ; 若所述静态路由下一跳对应的邻接表项建立成功并更新,将该静态路由下一跳的状态恢复为同步状态,并在进行路由计算时,优选下一跳状态同步的路由并下发FIB。
7.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法进一步包括 本地生成静态路由; 确定该静态路由下一跳对应的邻接表项不存在或无效时,触发所述静态路由下一跳对应的邻接表项的建立,将该静态路由的优先级设置为最低,并进行路由计算以及下发FIB; 若所述静态路由下一跳对应的邻接表项建立成功并更新,将该静态路由的优先级恢复为配置值,并进行路由计算以及下发FIB。
8.—种路由器,该路由器与其他路由器之间建立邻居,其特征在于,所述路由器包括确定单元、触发单元和处理单元; 所述确定单元,用于确定所述邻居的IP地址对应的邻接表项是否存在,是否有效; 所述触发单元,用于在所述确定单元确定所述邻居的IP地址对应的邻接表项不存在或无效时,触发所述邻居的IP地址对应的邻接表项的建立; 所述处理单元,用于在所述确定单元确定所述邻居的IP地址对应的邻接表项不存在或无效时,标识该邻居的状态为不同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发信息转发库FIB ;当所述触发单元触发所述邻居的IP地址对应的邻接表项建立成功并更新时,将该邻居的状态恢复为同步状态并通知所有邻居,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。
9.根据权利要求8所述的路由器,其特征在于,所述路由器进一步包括接收单元; 所述接收单元,用于接收任一所述邻居发送的其邻居同步状态的通知; 所述处理单元,进一步用于当所述接收单元接收到该邻居发送的其邻居同步状态的通知时,更新该邻居的邻居同步状态,并在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。
10.根据权利要求8所述的路由器,其特征在于, 所述处理单元,用于标识该邻居状态为不同步状态,并通过携带状态为同步状态的邻居的邻居信息,或携带该邻居的邻居状态为不同步状态的通知报文,将该邻居的状态为不同步状态通知所有邻居;标识该邻居的状态为同步状态,并通过携带状态为同步状态的邻居的邻居信息,或携带该邻居的状态为同步状态的通知报文,将该邻居的状态为同步状态通知所有邻居。
11.根据权利要求8所述的路由器,其特征在于, 所述处理单元,用于当所述确定单元确定所述邻居的IP地址对应的邻接表项不存在或无效时,若建立邻居的路由协议为开放式最短路径优先OSPF协议或0SPFv3协议,将该邻居的cost值修改为maxcost,更新链路状态LSA中对应邻居的cost值发布给所有邻居;若所述路由协议为中间系统到中间系统路由协议IS-IS协议,将该邻居的cost值修改为maxcost,更新链路状态协议数据单元LSP中对应邻居的cost值,并发布给所有邻居;若所述路由协议为路由信息协议RIP协议或RIPng协议,将该邻居的cost值修改为maxcost,通过更新报文将所述邻居的cost值发布给所有邻居;当所述触发单元触发所述邻居的IP地址对应的邻接表项建立成功并更新时,若所述路由协议为OSPF协议或0SPFv3协议,将该邻居的cost值恢复为配置值,更新LSA中对应邻居的cost值发布给所有邻居;若所述路由协议为IS-IS协议,将该邻居的cost值恢复为配置值,更新LSP中对应邻居的cost值,并发布给所有邻居;若所述路由协议为RIP协议或RIPng协议时,将该邻居的cost值恢复为配置值,通过更新报文将所述邻居的cost值发布给所有邻居;在本地进行路由计算时,优选cost值小的路由并下发FIB。
12.根据权利要求8所述的路由器,其特征在于, 所述确定单元,进一步用于所述触发单元触发所述邻居的IP地址对应的邻接表项建立成功并更新时,确定与该邻居处于同一接口的其他邻居的状态是否为同步状态,如果是,触发所述处理单元执行将该邻居的状态恢复为同步状态及后续操作;否则;触发所述处理单元保持本地当前FIB不变。
13.根据权利要求8-12任意一项所述的路由器,其特征在于,所述路由器进一步包括生成单元; 所述生成单元,用于在本地生成静态路由; 所述确定单元,进一步用于确定所述生成单元生成的静态路由下一跳对应的邻接表项是否存在,是否无效; 所述触发单元,进一步用于当所述确定单元确定所述静态路由下一跳对应的邻接表项不存在或无效时,触发所述静态路由下一跳对应的邻接表项的建立; 所述处理单元,进一步用于当所述确定单元确定所述静态路由下一跳对应的邻接表项不存在或无效时,标识该静态路由的下一跳的状态为不同步状态,并在进行路由计算时,优选下一跳状态同步的路由并下发Fffi ;若所述触发单元触发所述静态路由下一跳对应的邻接表项建立成功并更新,将该静态路由下一跳的状态恢复为同步状态,并在进行路由计算时,优选下一跳状态同步的路由并下发FIB。
14.根据权利要求8-12任意一项所述的路由器,其特征在于,所述路由器进一步包括生成单元; 所述生成单元,用于在本地生成静态路由; 所述确定单元,进一步用于确定所述生成单元生成的静态路由下一跳对应的邻接表项是否存在,是否无效; 所述触发单元,进一步用于当所述确定单元确定所述静态路由下一跳对应的邻接表项不存在或无效时,触发所述静态路由下一跳对应的邻接表项的建立; 所述处理单元,进一步用于当所述确定单元确定所述静态路由下一跳对应的邻接表项不存在或无效时,将该静态路由的优先级设置为最低,并进行路由计算以及下发FIB;若所述触发单元触发所述静态路由下一跳对应的邻接表项建立成功并更新,将该静态路由的优先级恢复为配置值,并进行路由计算以及下发FIB。
全文摘要
本发明公开了一种邻接表项更新的方法,该方法包括路由器确定邻居的IP地址对应的邻接表项不存在或无效时,触发所述邻居的IP地址对应的邻接表项的建立,并标识该邻居的状态为不同步状态并通知所有邻居;若所述邻居的IP地址对应的邻接表项建立成功并更新,将该邻居的状态恢复为同步状态,并通知所有邻居;在本地进行路由计算时,优选邻居状态同步的路由并下发FIB。基于同样的发明构思,本发明还提出一种路由器,能够实现路由与邻接表项的联动,解决了路由与邻接表项学习的时间差的问题。
文档编号H04L12/56GK102811175SQ20121028839
公开日2012年12月5日 申请日期2012年8月14日 优先权日2012年8月14日
发明者林长望 申请人:杭州华三通信技术有限公司