AS-path属性:
                    特点:1、公认必遵属性
                               2、AS间防环的属性
                               3、用于BGP路由的路径选择。
防环机制:

  1. BGP路由器将BGP路由传递给EBGP邻居的时候,会将自身AS号添加到AS-PATH属性前面。
  2. BGP路由器从EBGP邻居收到路由时,将会对as-path进行检查,如果这条路由的as-ptah属性,携带了自身的AS号,那么将丢弃这条路由。
  3. IBGP邻居之间不做AS-PATH的防环检测。

BGP添加AS号是在下面图红圈处,策略处理是在之前,所以策略修改ASpath列表的时候,添加的as号在本身的AS号之前。

bgp python 示例代码 bgp add path_静态路由

例子:

 

 

bgp python 示例代码 bgp add path_bgp python 示例代码_02

上图中  ar1在as1中,有一条静态路由192.168.1.0 24 null0。将静态路由network进bgp路由协议里面。

分别在ar2和ar3上查看bgp routingtable

bgp python 示例代码 bgp add path_bgp python 示例代码_03

 

bgp python 示例代码 bgp add path_静态路由_04

现在我们通过route-policy 来在ar1与ar3之间的bgp路由添加AS号,以便达到静态路由从ar1--ar2---ar3 

[ar1]  //系统视图

       route-policy aspath permit node 10   // route-policy 创建名称为 aspath

         apply as-path 99 88 77 additive   // 添加 as号为 99 88 77到as-path列表中,添加顺序为77 88 99 

[bgp1] //进入bgp协议视图

          peer 10.0.13.3 route-policy aspath export   // 在与ar3建丽bgp邻居的时候关联route-policy  

查看ar3上的bgp routingtable  :

bgp python 示例代码 bgp add path_bgp python 示例代码_05

从上图中我们可以得出以下结论:

1.根据bgp的选路原则,优先选择aspath短的。所以现在192.168.1.0 这条路由经过ar2到ar3。

2.策略添加的as号优先处理添加,最后在添加本身的as号,最后将bgp路由发出给邻居。

3.我们在实际添加as号到列表的时候,最好添加这边已经存在的AS号,这样可以避免在以后的网络扩展时候遇到麻烦。

命令总结: apply as-path 1 2 3 4 additive    //添加as号到as-path  添加顺序为 4 3 2 1 

                  apply as-path 1 2 3 4 overwrite  // 用指定的as-path列表来覆盖原来的列表

                  apply as-path  one overwrite    //  清空之前的的as-path列表

                  peer allow-as-loop xx //用来配置本地的as号重复次数,默认情况下as号不允许重复。xx的取值默认为1,取值范围 1-10 

                  bestroute as-path-ignore  //配置bgp路由器选择路由的时候,忽略as-path属性的比较,直接比较下一条。

将上面的ar1的192.168.1.0 这条路由添加上as2到aspath列表。

[ar1 ]  route-plicy aspath1 permit node 10  // route-policy 策略aspath1

           apply as-path 3 additive     //添加as3到列表

[bgp 1 ]

            peer 10.0.12.2 route-policy aspath1 export   //在与ar2建立bgp的时调用策略

查看ar2的bgp路由表

bgp python 示例代码 bgp add path_静态路由_06

查看ar3的bgp路由表:egp的防环原则不允许接收含有自身as号的路由。

bgp python 示例代码 bgp add path_路由协议_07

 

在ar3上使用peer allow-as-loop,并查看结果。

bgp python 示例代码 bgp add path_路由表_08

 

bestroute as-path-ignore //bgp路由器在选路的时候忽略比较as-path属性的比较,直接比较下一条。

小例子:

bgp python 示例代码 bgp add path_bgp python 示例代码_09

 

如上图:

        在ar1 上import 静态路由192.168.1.0 24 null0     //import -route static

        在ar5上network静态路由192.168.1.0 24 null0    //network 192.168.1.0 24

       在ar4上策略添加as234到aspath列表     //   peer 2.2.2.2 route policy aspath 

                                                                    //    route-policy aspath permit node 10

                                                                      //   apply as-path 234 additive   

  现在我们在ar2上查看bgp 路由表

  

bgp python 示例代码 bgp add path_路由协议_10

比较aspath列表的时候,宣告的路由由于列表添加了as234,所以反而没有引入的路由更优。

现在我们在ar2的路由器上通过bestroute as-path-ignore  来忽略aspath列表的比较

[ar2-bgp]

              bestroute as-path-ignore 

然后再查看bgptable

bgp python 示例代码 bgp add path_bgp python 示例代码_11

完毕 -----2022-04-24 上午10:53