实施BGP的路由稳定性
应用环境
要实现BGP的路由稳定性主要包括BGP Damping、路由聚合、GR三个方面的技术。
BGP Damping
发生路由振荡时,路由协议就会向邻居发布路由更新,收到更新报文的路由器需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。为了防止持续的路由振荡带来的不利影响,BGP使用衰减来抑制不稳定的路由。
路由聚合
在大规模的网络中,网络变动的可能性增大,BGP路由表也十分庞大,使用路由聚合(Routes Aggregation)可以抑制具体路由的波动,同时大幅度减小了路由表的规模。VRP支持自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性,以及决定是否发布具体路由。
GR
GR(Graceful Restart)的详细说明请参见“实施BGP GR”。
配置思路
在实施BGP的路由稳定性时,采用如下的配置思路:
1. 配置BGP基本功能
2. 配置路由聚合
3. 配置BGP Dampening
配置注意事项
BGP Dampening只对EBGP生效。
配置实例
如下图,RouterA、RouterB、RouterC和RouterD四台路由器分别属于不同的自治系统,四台路由器之间建立EBGP连接。在RouterA和RouterD上引入路由。配置路由聚合和路由衰减,使路由的振荡不会引起RouterC路由表的频繁变动。
实施BGP的路由稳定性组网图
适用产品和版本
采用NE系列路由器,版本为(VRP5.30)及后续版本。
配置步骤
步骤 1 配置各接口的IP地址(略)
步骤 2 配置BGP的基本功能
# 配置RouterA。 [RouterA] bgp 100 [RouterA-bgp] router-id 1.1.1.1 [RouterA-bgp] peer 10.1.3.1 as-number 200 [RouterA-bgp] quit # 配置RouterB。 [RouterB] bgp 200 [RouterB-bgp] router-id 2.2.2.2 [RouterB-bgp] peer 10.1.3.2 as-number 100 [RouterB-bgp] peer 10.1.1.1 as-number 300 [RouterB-bgp] quit # 配置RouterC。 [RouterC] bgp 300 [RouterC-bgp] router-id 3.3.3.3 [RouterC-bgp] peer 10.1.1.2 as-number 200 [RouterC-bgp] peer 10.1.2.2 as-number 400 [RouterC-bgp] quit # 配置RouterD。 [RouterD] bgp 400 [RouterD-bgp] router-id 4.4.4.4 [RouterD-bgp] peer 10.1.2.1 as-number 300 [RouterD-bgp] quit
# 查看BGP对等体的连接状态。以RouterC为例,状态是“Established”,表明BGP对等体成功建立。
[RouterC] display bgp peer
BGP local router ID : 3.3.3.3
Local AS number : 300
Total number of peers : 2 Peers in established state : 2
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.1.1.2 4 200 4 4 0 00:02:34 Established 0
10.1.2.2 4 400 5 5 0 00:01:48 Established 0
步骤 3 在BGP中引入路由。
# 配置RouterA。 # 配置静态路由。 [RouterA] ip route-static 192.168.240.0 24 NULL0 [RouterA] ip route-static 192.168.241.0 24 NULL0 [RouterA] ip route-static 192.168.242.0 24 NULL0 [RouterA] ip route-static 192.168.243.0 24 NULL0 [RouterA] ip route-static 192.168.244.0 24 NULL0 [RouterA] ip route-static 192.168.245.0 24 NULL0 # 在BGP进程中引入静态路由。 [RouterA] bgp 100 [RouterA-bgp] import-route static # 配置RouterD。 # 配置静态路由。 [RouterD] ip route-static 172.16.1.0 24 NULL0 [RouterD] ip route-static 172.17.1.0 24 NULL0 [RouterD] ip route-static 172.18.1.0 24 NULL0 # 在BGP进程中引入静态路由。 [RouterD] bgp 400 [RouterD-bgp] import-route static [RouterD-bgp] quit
查看各路由器的BGP路由表,以RouterB和RouterC的路由表为例,
[RouterB] display bgp routing-table
Total Number of Routes: 9
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 172.16.1.0/24 10.1.1.1 0 300 400?
*> 172.17.1.0/24 10.1.1.1 0 300 400?
*> 172.18.1.0/24 10.1.1.1 0 300 400?
*> 192.168.240.0 10.1.3.2 0 0 100?
*> 192.168.241.0 10.1.3.2 0 0 100?
*> 192.168.242.0 10.1.3.2 0 0 100?
*> 192.168.243.0 10.1.3.2 0 0 100?
*> 192.168.244.0 10.1.3.2 0 0 100?
*> 192.168.245.0 10.1.3.2 0 0 100?
[RouterC] display bgp routing-table
Total Number of Routes: 9
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 172.16.1.0/24 10.1.2.2 0 0 400?
*> 172.17.1.0/24 10.1.2.2 0 0 400?
*> 172.18.1.0/24 10.1.2.2 0 0 400?
*> 192.168.240.0 10.1.1.2 0 200 100?
*> 192.168.241.0 10.1.1.2 0 200 100?
*> 192.168.242.0 10.1.1.2 0 200 100?
*> 192.168.243.0 10.1.1.2 0 200 100?
*> 192.168.244.0 10.1.1.2 0 200 100?
*> 192.168.245.0 10.1.1.2 0 200 100?
从路由表中可见,各路由器已经学习到RouterA和RouterD引入的静态路由。
步骤 4 配置路由聚合
# 在RouterA上配置路由聚合,不使用控制聚合的参数,即同时发布聚合路由和具体路由。 [RouterA-bgp] aggregate 192.168.240.0 255.255.240.0 [RouterA-bgp] quit
# 查看RouterB和RouterC的路由表,可以看到RouterA同时发布了聚合路由和具体路由。
[RouterB] display bgp routing-table
Total Number of Routes: 10
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 172.16.1.0/24 10.1.1.1 0 300 400?
*> 172.17.1.0/24 10.1.1.1 0 300 400?
*> 172.18.1.0/24 10.1.1.1 0 300 400?
*> 192.168.240.0/20 10.1.3.2 0 100?
*> 192.168.240.0 10.1.3.2 0 0 100?
*> 192.168.241.0 10.1.3.2 0 0 100?
*> 192.168.242.0 10.1.3.2 0 0 100?
*> 192.168.243.0 10.1.3.2 0 0 100?
*> 192.168.244.0 10.1.3.2 0 0 100?
*> 192.168.245.0 10.1.3.2 0 0 100?
[RouterC] display bgp routing-table
Total Number of Routes: 10
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 172.16.1.0/24 10.1.2.2 0 0 400?
*> 172.17.1.0/24 10.1.2.2 0 0 400?
*> 172.18.1.0/24 10.1.2.2 0 0 400?
*> 192.168.240.0/20 10.1.1.2 0 200 100?
*> 192.168.240.0 10.1.1.2 0 200 100?
*> 192.168.241.0 10.1.1.2 0 200 100?
*> 192.168.242.0 10.1.1.2 0 200 100?
*> 192.168.243.0 10.1.1.2 0 200 100?
*> 192.168.244.0 10.1.1.2 0 200 100?
*> 192.168.245.0 10.1.1.2 0 200 100?
步骤 5 配置路由策略
# 在RouterA上配置Route-Policy,为具体路由加上no_export团体属性,这样在RouterB收到的具体路由不会发布给RouterC。 # 创建名为Aggregate的IP地址前缀列表,用于过滤聚合路由。 [RouterA] ip ip-prefix Aggregate index 10 permit 192.168.240.0 20 # 创建名为Community的Route-Policy节点10,聚合路由匹配到地址前缀列表后,不设置团体属性。 [RouterA] route-policy Community permit node 10 [RouterA-route-policy] if-match ip-prefix Aggregate [RouterA-route-policy] apply community none [RouterA-route-policy] quit # 创建名为Community的Route-Policy节点20,具体的路由在经过此节点时,路由的团体属性设置为no_export。 [RouterA] route-policy Community permit node 20 [RouterA-route-policy] apply community no-export [RouterA-route-policy] quit # 配置RouterA向RouterB发布团体属性,并应用名为Community的Route-Policy。 [RouterA] bgp 100 [RouterA-bgp] peer 10.1.3.1 advertise-community [RouterA-bgp] peer 10.1.3.1 route-policy Community export [RouterA-bgp] quit
# 查看RouterB的路由表,可见RouterA向RouterB公布了聚合路由和具体路由。
[RouterB] display bgp routing-table
Total Number of Routes: 10
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 172.16.1.0/24 10.1.1.1 0 300 400?
*> 172.17.1.0/24 10.1.1.1 0 300 400?
*> 172.18.1.0/24 10.1.1.1 0 300 400?
*> 192.168.240.0/20 10.1.3.2 0 100?
*> 192.168.240.0 10.1.3.2 0 0 100?
*> 192.168.241.0 10.1.3.2 0 0 100?
*> 192.168.242.0 10.1.3.2 0 0 100?
*> 192.168.243.0 10.1.3.2 0 0 100?
*> 192.168.244.0 10.1.3.2 0 0 100?
*> 192.168.245.0 10.1.3.2 0 0 100?
# 查看RouterC的路由表,可见RouterB只向RouterC公布了聚合路由。
[RouterC] display bgp routing-table
Total Number of Routes: 4
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 172.16.1.0/24 10.1.2.2 0 0 400?
*> 172.17.1.0/24 10.1.2.2 0 0 400?
*> 172.18.1.0/24 10.1.2.2 0 0 400?
*> 192.168.240.0/20 10.1.1.2 0 200 100?
步骤 6 配置BGP damping功能。
# 配置RouterA。 [RouterA] bgp 100 [RouterA-bgp] dampening # 配置RouterB。 [RouterB] bgp 200 [RouterB-bgp] dampening # 配置RouterC。 [RouterC] bgp 300 [RouterC-bgp] dampening # 配置RouterD。 [RouterD] bgp 400 [RouterD-bgp] dampening
验证结果
如果配置成功,则:
使用命令display bgp routing-table查看RouterC的路由表,可以看到RouterC的路由表中只有RouterA发布的聚合路由,没有RouterA发布的具体路由。
删除RouterA上的两条静态路由192.168.242.0/24和192.168.243.0/24,RouterC的路由表保持不变,不受RouterA上具体路由变化的影响,如下:
[RouterC] display bgp routing-table
Total Number of Routes: 4
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 172.16.1.0/24 10.1.2.2 0 0 400?
*> 172.17.1.0/24 10.1.2.2 0 0 400?
*> 172.18.1.0/24 10.1.2.2 0 0 400?
*> 192.168.240.0/20 10.1.1.2 0 200 100?
另外使用display bgp routing-table查看BGP路由信息时,还可以看到路由的振荡情况。例如,在RouterD上删除的路由172.17.1.0/24,标记为h,172.16.1.0/24不停的振荡,标记为d。
[RouterC] display bgp routing-table
Total Number of Routes: 4
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
*d 172.16.1.0/24 10.1.2.2 0 0 400?
*h 172.17.1.0/24 10.1.2.2 0 0 400?
*> 172.18.1.0/24 10.1.2.2 0 0 400?
*> 192.168.240.0/20 10.1.1.2 0 200 100?
在路由表规模较大的时候,可以通过命令display bgp routing-table flap-info查看到振荡路由的信息,例如:
[RouterC] display bgp routing-table flap-info
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Network From Flaps Duration Reuse Path/Origin
*d 172.16.1.0/24 10.1.2.2 3 00:01:00 00:29:25 400?
*h 172.17.1.0/24 10.1.2.2 1 00:00:11 400?





