BGP手动路由聚合

本文详细介绍了BGP的路由聚合,包括自动聚合和手动聚合的区别,重点讨论了手动聚合的两种方法,即通过静态路由或IGP协议聚合后再通告,以及直接使用aggregate命令聚合。实验中展示了如何配置BGP邻居、通告网络、聚合路由,并通过No-Advertise和Detail-Suppressed关键字来控制路由信息的传播,以增强网络的稳定性和可控性。
摘要由CSDN通过智能技术生成

原理概述

BGP的路由聚合含有两种,一种是自动聚合,一种是手动聚合,相比较自动聚合,手动聚合具有更高的灵活性和可控性。

BGP手动聚合时,可以手动控制聚合路由的掩码长度,修改聚合路由属性等。 手动路由集合时又有两种方法,一种是配置一条静态路由或者IGP协议先做聚合,然后再用network命令进行通告;另一种是直接使用aggregate命令进行聚合。

采用第一种方法时,无法对通告的静态路由加以控制,并且明细路由仍然会被通告进去。如果要抑制明细路由,则需要结合route-policy来对明细路由进行过滤,实现起来配置较多,同时还会丢失明细路由的某些BGP属性。

采用第二种方法时,缺省情况下明细和聚合路由也都会被发送出去,但是可以通过关键字来对全部 或者 部分明细路由进行抑制,另外还可以对聚合路由的属性进行修改。和第一种方法相比,第二种方法对路由聚合的控制以及对路径选择会更加灵活。

实验内容

每台路由使用直连物理接口建立邻居关系,整网运行BGP协议。在R5和R6上使用network命令通告Loopback 1 至Loopback7接口所在网络到BGP进程中,在R5上用aggregate命令聚合这些loopback 接口所在网络的路由,在R6上配置一条静态路由,并且使用network命令通告这条静态路由来实现路由聚合。

实验拓扑

实验步骤

1.配置BGP路由协议

配置BGP邻居关系

[R1] bgp 100
[R1-bgp] peer 10.0.12.2 as-number 200
[R1-bgp] peer 10.0.13.3 as-number 300

[R2]bgp 200
[R2-bgp]peer 10.0.12.1 as-number 100
[R2-bgp]peer 10.0.24.4 as-number 300

[R3]bgp 300
[R3-bgp]peer 10.0.13.1 as-number 100
[R3-bgp]peer 10.0.34.4 as-number 300
[R3-bgp]peer 10.0.35.5 as-number 400

[R4]bgp 300
[R4-bgp]peer 10.0.24.2 as-number 200
[R4-bgp]peer 10.0.34.3 as-number 300
[R4-bgp]peer 10.0.46.6 as-number 400

[R5]bgp 400
[R5-bgp]peer 10.0.35.3 as-number 300
[R5-bgp]peer 10.0.56.6 as-number 400

[R6]bgp 400
[R6-bgp]peer 10.0.46.4 as-number 300
[R6-bgp]peer 10.0.56.5 as-number 400

使用 Display bgp peer 来查看BGP邻居建立是否成功

[R1]dis bg peer
BGP local router ID : 10.0.13.1
Local AS number : 100
Total number of peers : 2                Peers in established state : 2
Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv
10.0.12.2       4         200       40       41     0 00:27:07 Established      14
10.0.13.3       4         300       41       45     0 00:29:33 Established      14


[R2] dis bg peer
BGP local router ID : 10.0.12.2
Local AS number : 200
Total number of peers : 2                Peers in established state : 2
Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv
10.0.12.1       4         100       41       40     0 00:27:45 Established      14
10.0.24.4       4         300       37       39     0 00:26:26 Established      14
 
[R3] dis bg peer
BGP local router ID : 10.0.13.3
Local AS number : 300
Total number of peers : 3                Peers in established state : 3
Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv
10.0.13.1       4         100       44       42     0 00:30:32 Established       0
10.0.34.4       4         300       39       41     0 00:28:55 Established      14
10.0.35.5       4         400       47       47     0 00:33:08 Established      14

可以看到路由器之间的邻居状态都为Established,表示邻居关系已经正常建立。

2.使用network通告路由

我们需要在R5和R6上将loopback 1-7 通过network通告进BGP里。

[R5-bgp] network 172.16.1.0 255.255.255.0
[R5-bgp] network 172.16.2.0 255.255.255.0
[R5-bgp] network 172.16.3.0 255.255.255.0
[R5-bgp] network 172.16.4.0 255.255.255.0
[R5-bgp] network 172.16.5.0 255.255.255.0
[R5-bgp] network 172.16.6.0 255.255.255.0
[R5-bgp] network 172.16.7.0 255.255.255.0

[R6-bgp] network 192.168.1.0 255.255.255.0
[R6-bgp] network 192.168.2.0 255.255.255.0
[R6-bgp] network 192.168.3.0 255.255.255.0
[R6-bgp] network 192.168.4.0 255.255.255.0
[R6-bgp] network 192.168.5.0 255.255.255.0
[R6-bgp] network 192.168.6.0 255.255.255.0
[R6-bgp] network 192.168.7.0 255.255.255.0

我们在R1上查看BGP路由

[R1]dis bg routing-table
BGP Local router ID is 10.0.12.1
Status codes: * - valid, > - best, d - damped,                h - history,  i - internal, s - suppressed, S - Stale
                Origin : i - IGP, e - EGP, ? - incomplete


    Total Number of Routes: 28
        Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

    *>   172.16.1.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.2.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.3.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.4.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.5.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.6.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.7.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.1.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.2.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.3.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.4.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.5.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.6.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.7.0        10.0.13.3                             0      300 400i

可以看到,R1 已经接受到了BGP协议的明细路由。

3.配置BGP路由聚合

上述步骤中,R5和R6的Loopback 1至 Loopback 7接口所在的网络已经被通告到BGP进程中了,并且每台路由器都接收到了R5和R6的明细路由。但是如果某条明细路由出现丢失或者震荡的情况,则网络中所有其他路由器都将删除这条路由或发送路由表震荡问题。现在我们在R5和R6上配置路由聚合,将这种明细路由的变化隔离在AS内部,不会对其他AS产生影响。

我们需要将这7条聚合成一条路由。

192.168.1.0

192.168.2.0

192.168.3.0

192.168.4.0

192.168.5.0

192.168.6.0

192.168.7.0

首先将不同的网络位,转换至二进制。

192.168.00000001.0

192.168.00000010.0

192.168.00000011.0

192.168.00000100.0

192.168.00000101.0

192.168.00000110.0

192.168.00000111.0

由此我们可以清楚的看见,第三段的前5位是一样的,所以网络位就是8+8+5=21。聚合地址就是192.168.0.0/21

在R6上配置这条聚合路由为静态路由,然后使用network命令通告出去

[R6]ip route-static 192.168.0.0 21 NULL 0
[R6]bgp 400
[R6-bgp]network 192.168.0.0 21

在R5上使用aggregate命令进行通告。

[R5]bgp 400
[R5-bgp]aggregate 172.16.0.0 21

使用aggregate命令进行聚合,要求BGP路由表中至少要存在一条属于聚合后的路由的子网路由,否则聚合不会生效

在R1上查看BGP路由表

[R1]dis bg routing-table
BGP Local router ID is 10.0.12.1
Status codes: * - valid, > - best, d - damped,                h - history,  i - internal, s - suppressed, S - Stale
                Origin : i - IGP, e - EGP, ? - incomplete


    Total Number of Routes: 32
        Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

    *>   172.16.0.0/21      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.1.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.2.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.3.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.4.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.5.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.6.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.7.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.0.0/21     10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.1.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.2.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.3.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.4.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.5.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.6.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.7.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i

可以看到R1的路由表上出现了R5和R6的聚合路由,但同时还包含了有每个明细路由条目。若R5或者R6的明细路由发送丢失或震荡,依然会导致路由表的波动,并没有解决路由不稳定的问题。

4.使用No-Advertise关键字控制路由聚合

上述步骤中配置了聚合路由,但明细路由还是被通告出去了。若想抑制明细路由,则需要配合使用Route-Policy来实现对明细路由的抑制。如果被抑制明细路由的数量比较多时,配置工作量就会比较大,维护起来不方便,这种方法的扩展性和可维护性都比较差。

使用Aggregate命令的方法时,默认情况下也不会抑制明细路由,这种特效在某种情况下也是有利的。如果要求R5、R6将明细和聚合全部通告到R3、R4上,但R3、R4只将聚合路由通告给R1、R2时,只需要在R5、R6上发布明细路由时给路由添加No-Advertise团体属性。

在R5、R6上使用前缀列表和Route-Policy给这些明细路由添加No-Advertise团体属性,并通告给R3、R4

[R5] ip ip-prefix NO-ADVER permit 172.16.1.0 24
[R5] ip ip-prefix NO-ADVER permit 172.16.2.0 24
[R5] ip ip-prefix NO-ADVER permit 172.16.3.0 24
[R5] ip ip-prefix NO-ADVER permit 172.16.4.0 24
[R5] ip ip-prefix NO-ADVER permit 172.16.5.0 24
[R5] ip ip-prefix NO-ADVER permit 172.16.6.0 24
[R5] ip ip-prefix NO-ADVER permit 172.16.7.0 24
[R5] ip ip-prefix NO-ADVER permit 192.168.1.0 24
[R5] ip ip-prefix NO-ADVER permit 192.168.2.0 24
[R5] ip ip-prefix NO-ADVER permit 192.168.3.0 24
[R5] ip ip-prefix NO-ADVER permit 192.168.4.0 24
[R5] ip ip-prefix NO-ADVER permit 192.168.5.0 24
[R5] ip ip-prefix NO-ADVER permit 192.168.6.0 24
[R5] ip ip-prefix NO-ADVER permit 192.168.7.0 24
[R5] route-policy NO-ADVER permit node 10
[R5 route-policy] if-match ip-prefix NO-ADVER
[R5 route-policy] apply community no-advertise
[R5] route-policy NO-ADVER permit node 20



[R5]bgp 400
[R5-bgp] peer 10.0.35.3 route-policy NO-ADVER export
[R5-bgp] peer 10.0.35.3 advertise-community
[R6] ip ip-prefix NO-ADVER permit 192.168.1.0 24
[R6] ip ip-prefix NO-ADVER permit 192.168.2.0 24
[R6] ip ip-prefix NO-ADVER permit 192.168.3.0 24
[R6] ip ip-prefix NO-ADVER permit 192.168.4.0 24
[R6] ip ip-prefix NO-ADVER permit 192.168.5.0 24
[R6] ip ip-prefix NO-ADVER permit 192.168.6.0 24
[R6] ip ip-prefix NO-ADVER permit 192.168.7.0 24
[R6] ip ip-prefix NO-ADVER permit 172.16.1.0 24
[R6] ip ip-prefix NO-ADVER permit 172.16.2.0 24
[R6] ip ip-prefix NO-ADVER permit 172.16.3.0 24
[R6] ip ip-prefix NO-ADVER permit 172.16.4.0 24
[R6] ip ip-prefix NO-ADVER permit 172.16.5.0 24
[R6] ip ip-prefix NO-ADVER permit 172.16.6.0 24
[R6] ip ip-prefix NO-ADVER permit 172.16.7.0 24
[R6] route-policy NO-ADVER permit node 10
[R6 route-policy] if-match ip-prefix NO-ADVER
[R6 route-policy] apply community no-advertise
[R6] route-policy NO-ADVER permit node 20
[R6] bgp 400
[R6-bgp] peer 10.0.46.4 route-policy NO-ADVER export
[R6-bgp] peer 10.0.46.4 advertise-community

peer x.x.x.x advertise-community 命令是为了将团体属性传递给任何对等体(组),缺省情况下是不传递的。

在R1、R3上看BGP路由表

     <R1>dis bgp routing-table 
BGP Local router ID is 10.0.12.1
Status codes: * - valid, > - best, d - damped,               h - history,  i - internal, s - suppressed, S - Stale
                Origin : i - IGP, e - EGP, ? - incomplete


    Total Number of Routes: 4
        Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

    *>   172.16.0.0/21      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.0.0/21     10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i

    <R3>dis bgp routing-table 

    BGP Local router ID is 10.0.34.3 
    Status codes: * - valid, > - best, d - damped,
                h - history,  i - internal, s - suppressed, S - Stale
                Origin : i - IGP, e - EGP, ? - incomplete


    Total Number of Routes: 18
        Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

    *>   172.16.0.0/21      10.0.35.5                             0      400i
    i                     10.0.46.6                  100        0      400i
    *>   172.16.1.0/24      10.0.35.5       0                     0      400i
    *>   172.16.2.0/24      10.0.35.5       0                     0      400i
    *>   172.16.3.0/24      10.0.35.5       0                     0      400i
    *>   172.16.4.0/24      10.0.35.5       0                     0      400i
    *>   172.16.5.0/24      10.0.35.5       0                     0      400i
    *>   172.16.6.0/24      10.0.35.5       0                     0      400i
    *>   172.16.7.0/24      10.0.35.5       0                     0      400i
    *>   192.168.0.0/21     10.0.35.5                             0      400i
    i                     10.0.46.6       0          100        0      400i
    *>   192.168.1.0        10.0.35.5                             0      400i
    *>   192.168.2.0        10.0.35.5                             0      400i
    *>   192.168.3.0        10.0.35.5                             0      400i
    *>   192.168.4.0        10.0.35.5                             0      400i
    *>   192.168.5.0        10.0.35.5                             0      400i
    *>   192.168.6.0        10.0.35.5                             0      400i
    *>   192.168.7.0        10.0.35.5                             0      400i

可以看到,R1只接受了聚合路由,R3上既收到了聚合路由也收到了明细路由。

由此我们得知通过添加No-Advertise团体属性是通告路由策略高职对等体的,不要再将这些明细路由通告给其他任何BGP对等体。

5.使用Detail-Suppressed关键字控制路由聚合

可以利用aggregate命令结合使用Detail-Suppressed关键字来实现对明细路由的抑制,只将聚合后的路由发送出去。

[R5-bgp]aggregate 172.16.0.0 21 detail-suppressed

在R1上查看路由表

<R1> dis b rou
BGP Local router ID is 10.0.12.1
Status codes: * - valid, > - best, d - damped,                h - history,  i - internal, s - suppressed, S - Stale
                Origin : i - IGP, e - EGP, ? - incomplete


    Total Number of Routes: 18
        Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

    *>   172.16.0.0/21      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.0.0/21     10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.1.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.2.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.3.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.4.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.5.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.6.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.7.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i    

这里可以看到在R1的路由上只有R5的聚合路由并没有R5上的其他明细路由。

6.使用Suppressed-Policy关键字控制路由聚合。

Aggregate命令支持抑制全部明细路由,也可以支持仅抑制部分明细路由。如果需要R5将172.16.2.0/24、172.16.4.0/24、172.16.6.0/24 这几条明细路由进行抑制,而将其他的明细路由和聚合路由通告出去,则可以通过Supperss-Policy关键字配合Route-Policy来实现。前缀列表用来匹配那些路由需要被抑制,route-policy用来调用前缀列表,配合Supperss-Policy实现最终需求。

[R5]ip ip-prefix SUP_POLICY permit 172.16.2.0 24
[R5]ip ip-prefix SUP_POLICY permit 172.16.4.0 24
[R5]ip ip-prefix SUP_POLICY permit 172.16.6.0 24
[R5]route-policy SUP_POLICY permit node 10
[R5-route-policy]if-match ip-prefix SUP_POLICY
[R5-route-policy]bgp 400
[R5-bgp]aggregate 172.16.0.0 21 suppress-policy SUP_POLICY

配置完成后在R1 上查看BGP路由表

 <R1> dis bg routing-table
BGP Local router ID is 10.0.12.1
Status codes: * - valid, > - best, d - damped,                h - history,  i - internal, s - suppressed, S - Stale
                Origin : i - IGP, e - EGP, ? - incomplete


    Total Number of Routes: 26
        Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

    *>   172.16.0.0/21      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.1.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.3.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.5.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   172.16.7.0/24      10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.0.0/21     10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.1.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.2.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.3.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.4.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.5.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.6.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i
    *>   192.168.7.0        10.0.13.3                             0      300 400i
    *                       10.0.12.2                             0      200 300 400i

这里可以看到R1 的BGP路由表中没有 172.16.2.0/24、172.16.4.0/24、172.16.6.0/24 这几条被抑制了的明细路由。

7.使用Attribute-Policy关键字控制路由聚合

关键字Attribute-Policy 可用来设置聚合路由的属性。例如,在上述步骤中,R5通告的是属性没有经过任何修改的路由,其聚合路由的Origin属性是i。现在,通过Attribute-Policy将聚合路由的属性修改成Incomplete,在BGP路由表中显示为“”。

[R5]route-policy ATT_POLICY permit node 10
[R5-route-policy]apply origin incomplete
[R5-route-policy]bgp 400
[R5-bgp]aggregate 172.16.0.0 21 attribute-policy ATT_POLICY

我们在R1上查看BGP路由表

 <R1> dis bg routing-table
BGP Local router ID is 10.0.12.1
Status codes: * - valid, > - best, d - damped,               h - history,  i - internal, s - suppressed, S - Stale
                Origin : i - IGP, e - EGP, ? - incomplete


    Total Number of Routes: 32
        Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

    *>   172.16.0.0/21      10.0.13.3                             0      300 400?
    *                       10.0.12.2                             0      200 300 400?

可以看到R1的BGP路由表中的聚合路由的Origin属性变成了“?”——Incomplete

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值