如何在BGP路由中找到环路

时间:2016-12-07 18:19:14

标签: network-programming bgp

我试图编写简化版的eBGP扬声器。对于导入策略,我想确保我导入的任何新路由都没有任何循环。我构建的路由表看起来像这样。

10.0.0.0/8 3 8 11
10.8.0.0/8 4
192.168.0.0/16 3 5 6
192.168.43.0/24 (local)

我的问题是,你如何检查路由循环?

现在我尝试了多种方法,我认为查看是否存在任何循环的正确方法是使用 all 路由表中的路由构建DAG。然后检查新路线是否在图表中创建了一个循环。但我无法理解在创建DAG时是否只应查看某些前缀。

1 个答案:

答案 0 :(得分:0)

在eBGP中,循环检测基于ASPATH。您不能接受包含您自己的ASN的ASPATH路由。

这在RFC4271中定义:

如果BGP路由的AS_PATH属性包含AS环路,则为BGP    路线应排除在第2阶段决策功能之外。 AS循环    通过扫描完整的AS路径完成检测(如    AS_PATH属性),并检查自治系统的编号    本地系统不会出现在AS路径中。 BGP的操作    配置为接受具有自己的自治路由的路由器的扬声器    AS路径中的系统编号超出了本文档的范围。

提示:如果您想实现BGP发言人,我建议您仔细阅读从RFC4271开始的所有相关RFC。

对于iBGP,没有环路检测需求,因为iBGP扬声器不会将iBGP学习路由转发到另一个iBGP扬声器。您需要将所有iBGP扬声器全网连接,使用路由反射器或联合会。

关于这些原则的文章(针对iBGP):http://www.rogerperkin.co.uk/routing-protocols/bgp/bgp-confederation-vs-route-reflector/