Print

路由器从EBGP收到MED值为4294967295的私网路由无法优选加表问题

1天前 发表

组网及说明

C1与B1建立直连EBGP(A2上起VPLS),A1与B1建立IBGP、A1与C1建立EBGP


问题描述

最初B1去C1下连的私网路由是通过A1学过来的(IBGP),既走B1-A1-C1,现网在C1与B1之间新增一条EBGP,当将C1与A1之间链路中断之后,区域汇聚路由器B1无法学到EBGP学习过来的路由,业务中断,此后过6min后,路由学习正常,业务恢复。

过程分析

1. B1无法学习到从EBGP(10.23.16.193)过来的路由10.22.11.0。

[DQQY-SR8808X-B]display  ip routing-table  10.22.11.21

Summary count : 5

Destination/Mask   Proto   Pre Cost        NextHop         Interface

0.0.0.0/0          Static  60  0           10.23.15.193    XGE0/1/1.299

                   Static  60  0           10.23.15.201    XGE0/1/1.300

10.0.0.0/8         BGP     255 0           10.33.5.81      Pos8/1/1

10.0.0.0/9         BGP     255 0           10.33.5.81      Pos8/1/1

10.22.11.0/24      BGP     255 0           10.33.20.1      Vlan300

2. 如下可以发现从10.23.16.193已经收到此路由,但是由于此时未加表,且学过来路由的MED值为4294967295,有点异常。

[DQQY-SR8808X-B]display  bgp routing-table ipv4  peer  10.23.16.193 received-routes

 Total number of routes: 5

 BGP local router ID is 10.33.20.2

 Status codes: * - valid, > - best, d - dampened, h - history

               s - suppressed, S - stale, i - internal, e - external

               a - additional-path

       Origin: i - IGP, e - EGP, ? - incomplete

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

*  e 10.22.10.0/24      10.23.16.193    4294967295            0       65317?

*  e 10.22.11.0/24      10.23.16.193    4294967295            0       65317?

*  e 10.22.13.0/24      10.23.16.193    4294967295            0       65317?

*  e 10.22.15.0/24      10.23.16.193    4294967295            0       65317?

*  e 10.23.16.0/24      10.23.16.193    4294967295            0       65317i

3. 再次查看详细信息可以发现,路由无法优选的原因是因为收到的MED值太大导致。因此下一步需要判断的是为何我们B1会收到这么大的一个MED值。

[DQQY-SR8808X-B]display bgp routing-table ipv4  10.22.11.21

 BGP local router ID: 10.33.20.2

 Local AS number: 65412

 Paths:   5 available, 3 best

From            : 10.23.16.193 (1.1.76.1)

 Rely nexthop    : 10.23.16.193

 Original nexthop: 10.23.16.193

 Out interface   : Ten-GigabitEthernet0/1/1.297

 Route age       : 00h01m04s

 OutLabel        : NULL

 RxPathID        : 0x0 

 TxPathID        : 0xffffffff 

 AS-path         : 65317

 Origin          : incomplete

 Attribute value : MED 4294967295, pref-val 0

 State           : valid, external, not preferred for med, not ECMP for med

 IP precedence   : N/A

 QoS local ID    : N/A

 Traffic index   : N/A

 Tunnel policy   : NULL

 Rely tunnel IDs : N/A

4. 怀疑是对端的一个机制, 想让我们延迟优选,因此本端开启debug看,是不是对端发过来的属性。

开启debugging bgp all 10.23.16.193,debugging bgp all 10.23.16.201发现是对端发过来的更新报文中携带的。

*Apr 14 01:06:38:087 2022 DQQY-SR8808X-B BGP/7/DEBUG: -MDC=1;

        BGP.: Recv UPDATE from peer 10.23.16.193 with following destinations:

        Update message length : 54

        Origin       : IGP

        AS path      : 65317

        Next hop     : 10.23.16.193

        MED          : 4294967295

        10.23.16.0/24 PathID 0 ,

5. 经过6min后,对端重新发了更新报文,此时MED值为0,路由优选加表,恢复正常。

*Apr 14 01:12:38:129 2022 DQQY-SR8808X-B BGP/7/DEBUG: -MDC=1;

        BGP.: Recv UPDATE from peer 10.23.16.193 with following destinations:

        Update message length : 54

        Origin       : IGP

        AS path      : 65317

        Next hop     : 10.23.16.193

        MED          : 0

        10.23.16.0/24 PathID 0 

解决方法

经上述定位:无法优选的原因是因为我们收到了MED 值为4294967295的路由,此路由无法成为BEST,此后过6min后,我们收到了MED值为0的路由,此时优选从EBGP收到的路由,业务正常。后续查对端C1设备(华为),此问题的根本原因是因为对端华为设备为解决回切场景丢包时间长的问题,配置了advertise lowest-priority all-address-family peer-up 360,当邻居建立后,先发送MED属性最低的路由,等定时器超时后才发送携带正常属性的路由,此时业务恢复正常。

advertise lowest-priority all-address-family peer-up命令用来在邻居状态由DownUp时将BGP路由的优先级调整为最低优先级。

应用于路由延时发布场景,解决回切场景丢包时间长的问题。如果没有配置advertise lowest-priority all-address-family peer-up命令,邻居建立后会马上发送携带正常属性的路由。如果配置advertise lowest-priority all-address-family peer-up命令,当邻居建立后,先发送MEDLocalPref属性最低的路由,等定时器超时后才发送携带正常属性的路由。

<HUAWEI> system-view

[~HUAWEI] bgp 100

[*HUAWEI-bgp] advertise lowest-priority all-address-family peer-up