1

我正在尝试编写 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)

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

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

4

1 回答 1

1

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

这在 RFC4271 中定义:

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

提示:如果你想实现一个 BGP Speaker,我建议你仔细阅读所有以 RFC4271 开头的相关 RFC。

对于 iBGP,不需要环路检测,因为 iBGP 扬声器不会将 iBGP 获知的路由转发到另一个 iBGP 扬声器。您需要将所有 iBGP 扬声器以全网状连接,使用路由反射器或联盟。

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

于 2017-11-04T01:22:50.193 回答