优先级设置不合理和IP冲突,导致BGP路由震荡

发布时间:  2016-03-30 浏览次数:  377 下载次数:  0
问题描述

组网如下:

 

AR151,V200R005C20SPC200版本。在AR151上查询,显示没有向对端发布任何路由:

 

    <Huawei>display bgp routing-table peer 172.xx.xx.125 advertised-routes statistics
      Advertised routes total: 0

      Default originated : 0

 

AR151的BGP配置如下:

 

#
interface LoopBack10
ip address 1.xx.xx.223 255.255.255.255
#
bgp 64669 
peer 172.xx.xx.125 as-number 9050 
peer 172.xx.xx.125 connect-interface Ethernet0/0/4
#
ipv4-family unicast
  undo synchronization
  preference 100 100 100
  network 1.xx.xx.223 255.255.255.255 
  import-route direct 
  peer 172.xx.xx.125 enable
  peer 172.xx.xx.125 ip-prefix clasalan_Primary export
  peer 172.xx.xx.125 route-policy Primary_in import 
  peer 172.xx.xx.125 preferred-value 275
  peer 172.xx.xx.125 allow-as-loop
#
route-policy Primary_in permit node 1
apply local-preference 200
#
route-policy Primary_ex permit node 1    
if-match as-path-filter 1
apply cost 50

ip ip-prefix clasalan_Primary index 20 permit 1.xx.xx.223 32
#
ip as-path-filter 1 permit ^$
#

 

处理过程

1. 分析配置:

 

    1)BGP中引入了直连路由,且通过 network 1.xx.xx.223 255.255.255.255 命令声明了该网段。

 

    2)出方向配置了route policy,并在这条route policy中引用了ip as-path-filter 1 permit ^$,

    此正则表达式代表AS-PATH为NULL,即只匹配本AS的生成的路由,而过滤掉从其他AS学习到的路由。1.xx.xx.223 这条路由是loopback口的直连路由,能够通过该AS-PATH过滤器。

 

    3)出方向配置了ip ip-prefix clasalan_Primary index 20 permit 1.xx.xx.223 32。

    1.xx.xx.223这条路由精确匹配到该IP-Prefix,可以通过该IP-prefix过滤。

 

    结论:配置无明显错误,AR151应该能够向对端发布1.xx.xx.223这条路由。需要抓Debugging进一步分析。

 

2. 分析debugging信息

    1)通过如下命令打开BGP的debugging

      <Huawei> debugging bgp all

      <Huawei> terminal debugging

      <Huawei> terminal monitor

      <Huawei> reset bgp all

 

    2)BGP主要日志解释:

 

  •     BGP.Public: Format UPDATEs for Group XXXX   ---- 向对端发布路由
  •     BGP.Public: Format UPDATEs(Withdraw) for Group ---- 删除之前发布给对端的路由

 

  •     BGP.Public: Recv UPDATE from 172.xx.xx.125 ---- 从对端收到路由
  •     BGP.Public: Recv UPDATE(Withdraw) MSG from 172.xx.xx.125 ---- 对端删除已经发布给本端的路由。

 

    3)分析日志,可以看到BGP邻居建立之后,AR151向对端发送了这条路由。

-----------------

 Mar 25 2016 10:32:29.103.11+00:00 XXX_Sf_Ghe_XXXXX RM/6/RMDEBUG:
        BGP.Public: Format UPDATEs for Group 1 for following destinations :

        MP_reach  : AFI/SAFI  1/1
        Origin    : IGP
        AS Path   : 64669
        Next Hop  : 127.0.0.1
        MED       : 50
        1.xx.xx.223/32,

 

-----------------

 

然而100ms后,又从对端收到了相同的路由

-----------------

 

 Mar 25 2016 10:32:29.233.3+00:00 XXX_Sf_Ghe_XXXXX RM/6/RMDEBUG:
        BGP.Public: Recv UPDATE from 172.xx.xx.125 with following destinations :

        Update message length : 57
        MP_reach  : AFI/SAFI  1/1
        Origin    : IGP
        AS Path   : 9050  
        Next Hop  : 172.xx.xx.125
        1.xx.xx.223/32,

 

-----------------

 

根据配置:peer 172.xx.xx.125 preferred-value 275,从对端收到的这条路由的协议优先级为275,高于直连路由协议优先级而成为优选路由。

已经发布给对端的直连路由变为非优选路由,因此AR151发送UPDATE消息从对端撤回了这条路由。 

-----------------

 

Mar 25 2016 10:32:29.233.8+00:00 XXX_Sf_Ghe_XXXXX RM/6/RMDEBUG:

        BGP.Public: Format UPDATEs(Withdraw) for Group 1 for following destinations :

        1.xx.xx.223/32,

 

-----------------

 

此时在AR上执行display bgp routing-table后,应该可以看到从对端收到的这条路由成为了优选路由(如下所示)。

-----------------

 

      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>   1.3.46.223/32      172.16.184.125  0          200        275    9050?
*                       0.0.0.0         0                     0      i
*                       0.0.0.0         0                     0      ?

 

-----------------

 

为验证该结论,在现网执行diaplay bgp routing-table,结果如下:现网BGP routing-table中却没有从对端学到的这条路由,无法印证上述分析结论。

 

-----------------

 

      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

*>   1.3.46.223/32      0.0.0.0         0                     0      i
*                       0.0.0.0         0                     0      ?

 

-----------------

 

 

 3)继续深入分析日志,发现在AR151向对端撤销了这条路由之后,对端很快也向AR151发送了update消息撤销该路由。

 

 

-----------------

 

Mar 25 2016 10:32:29.243.5+00:00 XXX_Sf_Ghe_XXXXX RM/6/RMDEBUG:
        BGP.Public: Recv UPDATE(Withdraw) MSG from 172.xx.xx.125 with following destinations :

        1.xx.xx.223/32, 
 

 

-----------------

 

接下来AR151上的直连路由重新成为优选路由,AR151重新通过UPDATE消息发布该路由给对端。几十毫秒后,对端也重新发布该路由给AR151。最终,双方路由器都循环进行“发送 --> 撤销--> 再发送 --> 再撤销”,该BGP上发生了路由震荡。

 

3. 检查对端配置,发现对端也配置从AR151收到路由为高优先级(preferred-value = 275)。

 

4. 至此,问题原因明确:

    1) 两个AS中存在重复的IP地址

    2) AR151和BGP peer都配置从对方收到的BGP路由优先级高于本地路由优先级,造成路由震荡。

 

 

 

整个路由震荡的过程可以用下图描述:

 

 

 

根因

    1. 两个AS中存在重复的IP地址

    2. AR151和BGP peer都配置从对方收到的BGP路由优先级高于本地路由优先级,造成路由震荡。

解决方案

1. 排查并修改两个AS中重复的IP地址

2. 在AR上调整优先级,使AR优选本地路由,避免路由震荡的可能性。

[Huawei]route-policy Primary_in permit node 1

Info: You are overwriting this sequence.

[Huawei-route-policy]undo apply local-preference

[Huawei-route-policy]q

 

[Huawei]bgp 64669

[Huawei-bgp]undo peer 172.xx.xx.125 preferred-value

建议与总结

要注意规划路由优先级,如果双方都配置从对端收到的路由优先级高于本地路由优先级,可能会造成路由震荡。

END