具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明实施例中提出一种路由迭代的方法,应用于BGP组网中,根据路由迭代需要,在需要路由迭代的IBGP邻居和静态路由配置上使能预设的路由迭代策略,在BGP路由和IGP路由不同步的情况下避免流量丢失。
该BGP组网中包括多个AS,任一AS中包括多个边界路由器,对于任一边界路由器路由迭代的方法参见图2,图2为本发明实施例中路由迭代方法流程示意图。具体步骤为:
步骤201,任一边界路由器根据迭代路由的原始下一跳,确定所述迭代路由对应的依赖路由,其中,所述迭代路由包括所述边界路由器学习到IBGP邻居发布的BGP路由和本地生成的原始下一跳为IBGP邻居的静态路由。
本步骤中学习到的BGP路由,或本地生成的静态路由都包括路由的目的IP地址和原始下一跳。在学习BGP路由的过程中将学习到的BGP路由的IP地址和原始下一跳添加到BGP路由表中,将静态路由的IP地址和原始下一跳添加到静态路由表中。
其中,根据迭代路由的原始下一跳,确定所述迭代路由对应的依赖路由,包括:
根据所述BGP路由或所述静态路由的原始下一跳,在本地全局路由表中通过最长掩码匹配原则查找到最优路由作为当前的依赖路由;以及,
在当前的依赖路由匹配失败时,进一步在本地全局路由表中通过最长掩码匹配原则查找到次优路由以更新当前的依赖路由,直至当前的依赖路由匹配成功或者在本地全局路由表中查找到的所有依赖路由都匹配失败。
步骤202,所述边界路由器判断所述依赖路由是否与预设的迭代策略匹配成功。
本步骤中预设的迭代策略根据实际应用中的组网情况,以及实现需要进行设置。所述预设的迭代策略为下述之一或任意组合:路由协议的迭代策略、路由IP地址范围的迭代策略、协议进程号的迭代策略、度量值的迭代策略、邻居地址的迭代策略、AS号的迭代策略。
在实际应用时,可以根据需要配置一个上述迭代策略或多个迭代策略,配置的迭代策略个数越多,通过配置的迭代策略匹配后过滤的越精细,越能避免流量丢失的问题。
其中,当所述迭代策略为路由协议迭代策略时,所述通过使能的迭代策略匹配所述查找到的依赖路由包括:判断所述依赖路由的协议类型是否与所述路由协议迭代策略中指定的路由协议类型一致。
当所述迭代策略为IP地址范围的迭代策略时,所述通过使能的迭代策略匹配所述查找到的依赖路由包括:判断所述依赖路由的IP地址是否在所述迭代策略中指定的IP地址范围内。
当所述迭代策略为协议进程号的迭代策略时,所述通过使能的迭代策略匹配所述查找到的依赖路由包括:判断所述依赖路由的协议进程号是否与所述协议进程号的迭代策略中指定的协议进程号一致。
当所述迭代策略为路由协议迭代策略和IP地址范围的迭代策略时,所述通过使能的迭代策略匹配所述查找到的依赖路由包括:先判断所述依赖路由的协议类型是否与所述路由协议迭代策略中指定的路由协议类型一致,如果一致,再判断所述依赖路由的IP地址是否在所述迭代策略中指定的IP地址范围内。
其他策略的判断过程与上述举例的判断过程一致,这里不再详细一一赘述。
步骤203,所述边界路由器在所述依赖路由与所述迭代策略匹配成功时,将所述迭代路由发布给EBGP邻居,其中,匹配成功的依赖路由对应的转发路径上的每一个路由器,都存在与所述迭代路由前缀相同的路由。
本步骤中在所述依赖路由与所述迭代策略匹配成功时,该方法进一步包括:
将在所述全局路由表中匹配到的所述依赖路由对应的真实下一跳和出接口绑定添加到BGP路由表中所述BGP路由对应的表项中,或静态路由表中所述静态路由对应的表项中;将所述BGP路由或静态路由的目的IP地址同所述真实下一跳和出接口绑定添加到全局路由表中。
所述边界路由器接收到目的IP地址为所述BGP路由或静态路由的目的IP地址的报文时,查找所述全局路由表,并根据查找结果转发所述接收的报文。
本发明的具体实现中,当通过预设的迭代策略匹配成功时,才发布该BGP路由或静态路由;当该AS域内某链路故障,而配置的策略为对应的报文在该AS域内需要走该路径时,通过该路由迭代策略匹配时,就会匹配不成功,也不会发布该路由,也就不会将对应的报文引过来,因此避免了报文流量丢失。
当全局路由表中任一路由的属性发生变化,且该路由通过迭代策略迭代过时,对该路由根据迭代策略重新进行匹配,当重新匹配的匹配结果与上一次匹配结果不一致时,根据匹配结果更新BGP路由表或静态路由表中对应的路由表项,并向EBGP邻居发布或撤销该路由。
当路由的属性变化,则需要重新通过配置的迭代策略匹配该路由,属性变化后的路由在匹配时是否与变化前的匹配结果不一致,当匹配结果不一致时,需要更新BGP路由表或静态路由表中对应的表项。如果上一次匹配的结果是成功,当前匹配结果为匹配失败时,删除BGP路由表中对应的路由表项中的出接口和真实下一跳,并向EBGP邻居撤销该路由;如果上一次匹配的结果是匹配失败,当前匹配结果为匹配成功时,将该路由对应的出接口和真实下一跳添加到BGP路由表或静态路由表中对应的表项中,并向EBGP邻居发布该路由。
上述实施例中描述的是该边界路由器学习到IBGP邻居发布的BGP路由或本地生成的原始下一跳为IBGP邻居的静态路由时的处理方法,本发明的实施例中根据需要还可以通过配置迭代策略的方法,处理学习到的EBGP邻居发布的BGP路由,或本地生成的原始下一跳为EBGP邻居的静态路由,具体方法如下:
学习到EBGP邻居发布的BGP路由,或本地生成的原始下一跳为EBGP邻居的静态路由时,根据该BGP路由或静态路由的原始下一跳确定所述迭代路由对应的依赖路由;判断所述依赖路由是否与预设的迭代策略匹配成功;在所述依赖路由与所述迭代策略匹配成功时,将所述BGP路由或静态路由发布给IBGP邻居。
由上可见,配置的预设的迭代策略,以及处理过程同向EBGP邻居发布路由的迭代过程类似,在这里就不在详细赘述该处理过程。
下面结合附图,详细说明本发明具体实施例中如何实现路由迭代。以图1中的路由器D学习到其IBGP邻居路由器B发布的BGP路由为例。在该IBGP邻居配置上配置的迭代策略为协议类型的迭代策略和IP地址的范围的迭代策略。
路由器D学习到的路由器B发布的该BGP的BGP路由信息包括该BGP路由的IP地址和原始下一跳,并将这两项信息绑定记录到本地的BGP路由表中。
路由器D根据该BGP路由的原始下一跳在本地的全局路由中通过最长匹配原则查找到最优路由作为依赖路由,即优先匹配掩码为32位的路由,这里以IPv4举例,如果存在则作为最优路由,否则,匹配掩码长度次长,次长的掩码可为24位的路由,以此类推。当匹配到最优路由时,通过配置的迭代策略匹配查找到的最优路由,首先判断该作为依赖路由的路由协议类型是否与迭代策略中指定的路由协议类型一致,如果不一致,则确定该次路由迭代失败;如果一致,则继续判断该依赖路由的IP地址是否在迭代策略中指定的IP地址范围中,如果不在,则继续在全局路由表中匹配查找次优路由,重复上述迭代策略匹配过程;如果在指定的IP地址范围中,则该次路由迭代成功,将该BGP路由发布给EBGP邻居路由器E,并获得最终匹配的依赖路由在全局路由表中对应的真实下一跳和出接口,添加到BGP路由表中该BGP路由对应的表项中,同时将该BGP路由的IP地址和真实下一跳,以及出接口绑定添加到全局路由中,以便收到目的IP地址为该BGP的IP地址的报文时查找进行转发。
如果匹配查找到的次优路由,还是不能迭代成功,则继续匹配查找,直到最终查找到的为全局路由表中掩码最短的依赖路由,并通过迭代策略匹配,仍然未匹配成功时,才确定该次路由迭代失败。
本发明具体实施例中基于同样的发明构思,还提出一种装置,可应用于BGP组网中任一边界路由器上,参见图3,图3为本发明具体实施例中实现路由迭代的装置的结构示意图。该装置包括:配置单元301、确定单元302、判断单元303和处理单元304。
配置单元301,用于配置预设的迭代策略。
确定单元302,用于根据迭代路由的原始下一跳,确定所述迭代路由对应的依赖路由,其中,所述迭代路由包括所述边界路由器学习到IBGP邻居发布的BGP路由和本地生成的原始下一跳为IBGP邻居的静态路由。
判断单元303,用于判断确定单元302确定的依赖路由是否与配置单元301配置的预设的迭代策略匹配成功。
处理单元304,用于在判断单元303判断所述依赖路由与所述迭代策略匹配成功时,将所述迭代路由发布给EBGP邻居,其中,匹配成功的依赖路由对应的转发路径上的每一个路由器,都存在与所述迭代路由前缀相同的路由。
较佳地,
确定单元302,用于根据所述BGP路由或所述静态路由的原始下一跳,在本地全局路由表中通过最长掩码匹配原则查找到最优路由作为当前的依赖路由;以及,在当前的依赖路由匹配失败时,进一步在本地全局路由表中通过最长掩码匹配原则查找到次优路由以更新当前的依赖路由,直至当前的依赖路由匹配成功或者在本地全局路由表中查找到的所有依赖路由都匹配失败。
较佳地,该装置进一步包括表项单元305、接收单元306和发送单元307。
表项单元305,用于在判断单元303判断所述依赖路由与所述迭代策略匹配成功时,将在所述全局路由表中匹配到的所述依赖路由对应的真实下一跳和出接口绑定添加到BGP路由表中所述BGP路由对应的表项中,或静态路由表中所述静态路由对应的表项中;将所述BGP路由或静态路由的目的IP地址同所述真实下一跳和出接口绑定添加到全局路由表中。
接收单元306,用于接收报文。
发送单元307,用于当接收单元306接收到目的IP地址为所述BGP路由或静态路由的目的IP地址的报文时,在表项单元305中的全局路由表中查找,并根据查找结果转发所述接收的报文。
较佳地,
判断单元303,进一步用于判断所述全局路由表中任一路由的属性发生变化,且通过预设的迭代策略迭代过时,对该路由根据迭代策略重新进行匹配。
处理单元304,进一步用于当判断单元303判断重新匹配的匹配结果与上一次匹配结果不一致时,根据匹配结果更新BGP路由表或静态路由表中对应的路由表项,并向EBGP邻居发布或撤销该路由。
较佳地,
配置单元301,配置的预设的迭代策略为下述之一或任意组合:路由协议的迭代策略、路由IP地址范围的迭代策略、协议进程号的迭代策略、度量值的迭代策略、邻居地址的迭代策略、AS号的迭代策略。
较佳地,
判断单元303,用于当所述迭代策略为路由协议迭代策略时,判断所述依赖路由的协议类型是否与所述路由协议迭代策略中指定的路由协议类型一致;当所述迭代策略为IP地址范围的迭代策略时,判断所述依赖路由的IP地址是否在所述迭代策略中指定的IP地址范围内;当所述迭代策略为协议进程号的迭代策略时,判断所述依赖路由的协议进程号是否与所述协议进程号的迭代策略中指定的协议进程号一致。
较佳地,
确定单元302,进一步用于学习到EBGP邻居发布的BGP路由,或本地生成的原始下一跳为EBGP邻居的静态路由时,根据该BGP路由或静态路由的原始下一跳确定所述迭代路由对应的依赖路由。
判断单元303,进一步用于判断确定单元302确定的依赖路由是否与配置单元301配置的预设的迭代策略匹配成功。
处理单元304,进一步用于在判断单元303判断所述依赖路由与所述迭代策略匹配成功时,将所述迭代路由发布给IBGP邻居。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明具体实施例中在IBGP邻居和静态路由配置上使能迭代策略,当学习到的BGP路由或静态路由在全局路由表中确定依赖路由,根据使能的迭代策略匹配所述确定的依赖路由,只有通过预设的迭代策略匹配成功的路由,才会发布给EBGP邻居,因而在BGP路由和IGP路由不同步的情况下避免流量丢失。
迭代策略中指定依赖路由的各属性,或各属性的任意组合,提供灵活的路由迭代控制;并且在全局路由表中属性变化,且配置策略的路由重新进行迭代,当迭代结果与前一次迭代结果不一致时,将对应的迭代路由发布或撤销,在路由属性发生变化时,同样能够避免流量丢失。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。