Network programming 如何在BGP路由中找到循环

Network programming 如何在BGP路由中找到循环,network-programming,bgp,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) 我的问题是,如何检查路由循环 现在我尝试了多种方法,我认为正确的方法是使用路由表中的所有路由构造一个DAG,以查看是否存在任何循环。然后检查新路线是否在图形中创建循环。但是我不明白在创建DAG时是否应该只查看某些前缀。eB

我正在尝试编写一个简化版本的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时是否应该只查看某些前缀。

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

这在RFC4271中定义:

如果BGP路由的AS_路径属性包含AS循环,则BGP 应将路线排除在第2阶段决策功能之外。AS循环 通过扫描完整AS路径(如 作为_路径属性),并检查 本地系统不显示在AS路径中。BGP的操作 配置为使用自己的自治网络接受路由的扬声器 AS路径中的系统编号不在本文档范围内

提示:如果您想要实现BGP扬声器,我建议您仔细阅读所有相关的RFC,从RFC4271开始

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


关于这些原则的文章(对于iBGP):

要清楚,CIDR网络后的
3811
356
是否为路径?