我试图编写简化版的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时是否只应查看某些前缀。
答案 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/