• 文章搜索:
  • 目录

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    BGP路由聚合

    作者:  |  上传时间:2010-10-12  |  关键字:网络大爬虫,第三期,BGP专题

    /孙丽

    1         路由聚合的必要性

    在大规模的网络中,BGP路由表变得十分庞大,存储路由表占有大量的路由器内存资源,传输和处理路由信息所必需的带宽和路由器传送与处理路由信息需要大量的资源。使用路由聚合(Routes Aggregation)可以大大减小路由表的规模;另外通过对路由的条目的聚合,隐藏一些具体的路由从而减少路由震荡对网络带来的影响。BGP路由聚合结合灵活的路由策略,从而使BGP更有效的传递和控制路由。

    2         路由聚合的方法

    聚合路由的方式:通过与静态路由组合对具体的路由条目进行路由聚合,自动聚合,手动聚合。

                                                                                                      图1 AS100中所有的内部网络都可以聚合成单一的地址192.168.192.0/21

    2.1        结合静态路由对具体路由条目进行聚合

    如上图1中,AS100中所有的内部网络都可以聚合路由成一跳单一的网段地址192.168.192.0/21 ;为了减少发送的bgp路由的条目,同时不影响AS100外部往目的地址是AS100C类网段的报文的转发;可以通过建立一条静态路由,然后用network命令公布出去。

    通过network命令公布的静态条目在BGP下生成一个聚合地址:

    #

    bgp 100

     network 192.168.192.0 255.255.248.0

     undo synchronization

     group ex external

     peer 192.168.1.253 group ex as-number 200

    #                                         

    ip route-static 192.168.192.0 255.255.248.0 NULL 0

    静态路由指向null0,因为聚合路由本身不是一个实际的目的地,在Router1中它只是用来代表更具体的地址。目的地址属于AS100中的C类地址的数据包与AS100外部一个路由器上的聚合地址相匹配,并且被转发到Router1。在Router1处,数据包匹配更具体的路由,并被转发到正确的下一跳路由器。如果Router1上的更具体的路由不存在,这些数据包将被丢弃。

    2.2        自动聚合:

    自动聚合是按照自然网段进行聚合,而且只能对引入的IGP子网路由进行聚合,对从BGP邻居学习来的路由和通过netwrok命令生成的BGP路由不起作用。命令为:

    summary automatic  

                                                                                                                                                                                      图2 自动聚合

    如图2Router1 Router2建立起EBGP邻居,AS100内运行的IGPrip

    Router1Router8学习到的rip路由,引入到BGP中发布出去。

    Router1上的loopback1loopback2接口的所在的网段通过network发布出去。

    [Router1] display  rip 1 route

     Route Flags: R - RIP, T - TRIP

                  P - Permanent, A - Aging, S - Suppressed, G - Garbage-collect

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

     Peer 82.112.2.190  on Ethernet6/0

          Destination/Mask        Nexthop     Cost    Tag   Flags   Sec

        192.168.192.0/24      82.112.2.190      1       0    RA      26

        192.168.193.0/24      82.112.2.190      1       0    RA      26

        192.168.194.0/24      82.112.2.190      1       0    RA      26

        192.168.195.0/24      82.112.2.190      1       0    RA      26

        192.168.196.0/24      82.112.2.190      1       0    RA      26

        192.168.197.0/24      82.112.2.190      1       0    RA      26

        192.168.198.0/24      82.112.2.190      1       0    RA      26

        192.168.199.0/24      82.112.2.190      1       0    RA      26

            109.0.0.0/24      82.112.2.190      1       0    RA      26

            109.0.1.0/24      82.112.2.190      1       0    RA      26

            109.0.2.0/24      82.112.2.190      1       0    RA      26    

    Router1rip路由引入BGPBGP的相关配置如下:

    [Router1-bgp]display  this

    #

    bgp 100

     network 55.1.1.1 255.255.255.255    \\loopback1接口的地址

     network 55.1.1.2 255.255.255.255    \\loopback2接口的地址

     import-route rip 1          \\引入rip路由

     undo synchronization

     peer 192.168.1.253 as-number 200

     peer 82.112.2.190 as-number 900

    我们先来看一下没有配置聚合前的Router1Router2BGP路由表:

    Router1BGP路由表

     [Router1]display bgp routing-table

     Total Number of Routes: 21

     BGP Local router ID is 213.168.133.93

     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

     

     *>  55.1.1.1/32        0.0.0.0         0                     0       i

     *>  55.1.1.2/32        0.0.0.0         0                     0       i

     *>  83.100.1.0/30      82.112.2.190                         0       900?

     *>  83.100.1.4/30      82.112.2.190                         0       900?

     *>  83.100.1.8/30      82.112.2.190                         0       900?

     *>  83.100.1.12/30     82.112.2.190                         0       900?

     *>  83.100.1.16/30     82.112.2.190                         0       900?

     *>  83.100.1.20/30     82.112.2.190                         0       900?

     *>  83.100.1.24/30     82.112.2.190                         0       900?

     *>  83.100.1.28/30     82.112.2.190                         0       900?

     *>  109.0.0.0/24       0.0.0.0         1                     0       ?

     *>  109.0.1.0/24       0.0.0.0         1                     0       ?

     *>  109.0.2.0/24       0.0.0.0         1                     0       ?

     *>  192.168.192.0      0.0.0.0         1                     0       ?

     *>  192.168.193.0      0.0.0.0         1                     0       ?

     *>  192.168.194.0      0.0.0.0         1                     0       ?

     *>  192.168.195.0      0.0.0.0         1                     0       ?

     *>  192.168.196.0      0.0.0.0         1                     0       ?

     *>  192.168.197.0      0.0.0.0         1                     0       ?

     *>  192.168.198.0      0.0.0.0         1                     0       ?

     *>  192.168.199.0      0.0.0.0         1                     0       ?

    Router1配置summary之前,Router2的路由表 :

    [Router2]display bgp routing-table

     Total Number of Routes: 21

     BGP Local router ID is 10.35.251.29

     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

     

     *>  55.1.1.1/32        192.168.1.254   0                     0       100i

     *>  55.1.1.2/32        192.168.1.254   0                     0       100i

     *>  83.100.1.0/30      192.168.1.254                         0       100 900?

     *>  83.100.1.4/30      192.168.1.254                         0       100 900?

     *>  83.100.1.8/30      192.168.1.254                         0       100 900?

     *>  83.100.1.12/30     192.168.1.254                         0       100 900?

     *>  83.100.1.16/30     192.168.1.254                         0       100 900?

     *>  83.100.1.20/30     192.168.1.254                         0       100 900?

     *>  83.100.1.24/30     192.168.1.254                         0       100 900?

     *>  83.100.1.28/30     192.168.1.254                         0       100 900?

     *>  109.0.0.0/24       192.168.1.254   1                     0       100?

     *>  109.0.1.0/24       192.168.1.254   1                     0       100?

     *>  109.0.2.0/24       192.168.1.254   1                     0       100?

     *>  192.168.192.0      192.168.1.254   1                     0       100?

     *>  192.168.193.0      192.168.1.254   1                     0       100?

     *>  192.168.194.0      192.168.1.254   1                     0       100?

     *>  192.168.195.0      192.168.1.254   1                     0       100?

     *>  192.168.196.0      192.168.1.254   1                     0       100?

     *>  192.168.197.0      192.168.1.254   1                     0       100?

     *>  192.168.198.0      192.168.1.254   1                     0       100?

     *>  192.168.199.0      192.168.1.254   1                     0       100?

     Router1上配置自动聚合,即进行如下配置:

    [Router1-bgp]summary automatic 

    查看Router2的路由表

    [Router2]display bgp routing-table

     Total Number of Routes: 19

     BGP Local router ID is 10.35.251.29

     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

     

     *>  55.1.1.1/32        192.168.1.254   0                     0       100i

     *>  55.1.1.2/32        192.168.1.254   0                     0       100i

     *>  83.100.1.0/30      192.168.1.254                         0       100 900?

     *>  83.100.1.4/30      192.168.1.254                         0       100 900?

     *>  83.100.1.8/30      192.168.1.254                         0       100 900?

     *>  83.100.1.12/30     192.168.1.254                         0       100 900?

     *>  83.100.1.16/30     192.168.1.254                         0       100 900?

     *>  83.100.1.20/30     192.168.1.254                         0       100 900?

     *>  83.100.1.24/30     192.168.1.254                         0       100 900?

     *>  83.100.1.28/30     192.168.1.254                         0       100 900?

     *>  109.0.0.0          192.168.1.254                         0       100?

     *>  192.168.192.0      192.168.1.254   1                     0       100?

     *>  192.168.193.0      192.168.1.254   1                     0       100?

     *>  192.168.194.0      192.168.1.254   1                     0       100?

     *>  192.168.195.0      192.168.1.254   1                     0       100?

     *>  192.168.196.0      192.168.1.254   1                     0       100?

     *>  192.168.197.0      192.168.1.254   1                     0       100?

     *>  192.168.198.0      192.168.1.254   1                     0       100?

     *>  192.168.199.0      192.168.1.254   1                     0       100?  

    通过比较不难发现Router2的路由表中没有了109.0.0.0/24 109.0.1.0/24109.0.2.0/24的路由,被聚合成了109.0.0.0/8的路由,而其他的路由没有发生变化。

    由于自动聚合只聚合路由器引入的IGP路由,只能对路由按照自然网段进行聚合:

    83.100.1.0/3083.100.1.28/30是从其他BGP邻居学习到的路由,因此没有被聚合;

    55.1.1.1/3255.1.1.2是通过network 实现的BGP路由,也不能被自动聚合,

    虽然自动聚合可以聚合自身引入的IGP路由,但192.168.192.0/24192.168.199.0/24 已经是自然网段,因此没有被聚合。

    我们再来看被自动聚合的路由,可以看出路由被自动聚合后,路由器只向邻居发送聚合后路由,不再发送详细路由。

    [Router2]display bgp routing-table 109.0.0.0

     BGP local router ID : 10.35.251.29

     Local AS number : 200

     Paths:   1 available, 1 best

     BGP routing table entry information of 109.0.0.0/8:

     From            : 192.168.1.254 (213.168.133.93)

     Original nexthop: 192.168.1.254

     AS-path         : 100

     Origin          : incomplete

     Attribute value : pref-val 0, pre 255

     State           : valid, external, best,

     Aggregator      : AS 100, Aggregator ID: 213.168.133.93

     Not advertised to any peers yet

    查看109.0.0.0这条路由不难发现,该条路由具有Aggregator属性,该属性标明路由是在哪里聚合的。针对109.0.0.0 ,产生这条聚合路由的自治系统为100,产生这条聚合路由的路由器的RouterID213.168.133.93,Router1router ID

    注:V3的设备的命令是summary

    由于自动聚合只能对自身引入的路由按照自然网段进行聚合,不能满足各种组网需求。 在许多场合会应用手动聚合。手动聚合Aggregate命令,有较多的选项,比较灵活,下面将重点说明。

    2.3        手动聚合

    2.3.1        通过手动聚合命令Aggregate对路由进行聚合,只发布聚合路由:

    要宣告有Aggergate 命令确定的聚合路由,首先属于聚合路由的更具体的路由已经在BGP的路由表中,这些具体路由可以是从邻居学习来的路由,也可以是引入的IGP的路由;或者是通过network命令生成的BGP路由。

    通过detail-suppressed选项,控制路由器,只发送聚合路由,不发送详细路由。

    2中,在Router1上,用Aggregate命令对路由进行聚合:

    [Router1-bgp]display this

    bgp 100

     aggregate 192.168.192.0 255.255.248.0 detail-suppressed

     aggregate 55.1.1.0 255.255.255.252 detail-suppressed

     aggregate 83.100.1.0 255.255.255.224 detail-suppressed

     summary automatic

     network 55.1.1.1 255.255.255.255

     network 55.1.1.2 255.255.255.255

     import-route rip 1

     undo synchronization

     peer 192.168.1.253 as-number 200

     peer 82.112.2.190 as-number 900  

      查看Router1的路由表:

      [Router1]display bgp routing-table

     Total Number of Routes: 25

     BGP Local router ID is 213.168.133.93

     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

     

     *>  55.1.1.0/30        127.0.0.1                             0       i

     s>  55.1.1.1/32        0.0.0.0         0                     0       i

     s>  55.1.1.2/32        0.0.0.0         0                     0       i

     *>  83.100.1.0/27      127.0.0.1                             0       ?

     s>  83.100.1.0/30      82.112.2.190                          0       900?

     s>  83.100.1.4/30      82.112.2.190                          0       900?

     s>  83.100.1.8/30      82.112.2.190                          0       900?

     s>  83.100.1.12/30     82.112.2.190                          0       900?

     s>  83.100.1.16/30     82.112.2.190                          0       900?

     s>  83.100.1.20/30     82.112.2.190                          0       900?

     s>  83.100.1.24/30     82.112.2.190                          0       900?

     s>  83.100.1.28/30     82.112.2.190                          0       900?

     *>  109.0.0.0          127.0.0.1                             0       ?

     s>  109.0.0.0/24       0.0.0.0         1                     0       ?

     s>  109.0.1.0/24       0.0.0.0         1                     0       ?

     s>  109.0.2.0/24       0.0.0.0         1                     0       ?

     *>  192.168.192.0/21   127.0.0.1                             0       ?

     s>  192.168.192.0      0.0.0.0         1                     0       ?

     s>  192.168.193.0      0.0.0.0         1                     0       ?

     s>  192.168.194.0      0.0.0.0         1                     0       ?

     s>  192.168.195.0      0.0.0.0         1                     0       ?

     s>  192.168.196.0      0.0.0.0         1                     0       ?

     s>  192.168.197.0      0.0.0.0         1                     0       ?

     s>  192.168.198.0      0.0.0.0         1                     0       ?

     s>  192.168.199.0      0.0.0.0         1                     0       ?

      注意到这里生成了聚合路由,83.100.1.0/27,AS-Path属性中没有AS900                                                                                          

    查看Router2bgp路由:

     [Router2]display bgp routing-table

     Total Number of Routes: 4

     BGP Local router ID is 10.35.251.29

     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

     *>  55.1.1.0/30        192.168.1.254                         0       100i

     *>  83.100.1.0/27      192.168.1.254                         0       100?

     *>  109.0.0.0          192.168.1.254                         0       100?

     *>  192.168.192.0/21   192.168.1.254                         0       100?

    Router1只给Router2传送了聚合路由,因此看到Router2上只有聚合路由。

    我们选其中一个聚合路由看一下其属性:

    [Router2]display bgp routing-table 83.100.1.0

     BGP local router ID : 10.35.251.29

     Local AS number : 200

     Paths:   1 available, 1 best

     

     BGP routing table entry information of 83.100.1.0/27:

     From            : 192.168.1.254 (213.168.133.93)

     Original nexthop: 192.168.1.254

     AS-path         : 100

     Origin          : incomplete

     Attribute value : pref-val 0, pre 255

     State           : valid, external, best,

     This route is an atomic-aggregated route

     Aggregator      : AS 100, Aggregator ID: 213.168.133.93

     Advertised to such 1 peers:

        23.1.1.1

    这条路由的AS-path100,丢失了原来的路径AS 900

    可以看到这条路由有一个atomic-aggregated属性,当运行BGP的路由器将更详细的路由聚合为较少细节的聚合路由,且已经出现了路径信息的丢失,atomic-aggregate属性将附加到聚合路由中。

    不使用detail-suppressed选项聚合路由和具体路由都被传送。

    2.3.2        聚合路由和具体路由都需要被传送

    对于图2的简单拓扑,不需要公布具体路由给邻居。但在图3中,公布两种路由是理想的。AS100AS200有多条路径,AS200需要根据来自AS100的所有路由来设置路由策略,但是它必须只将聚合路由公布给AS300AS100的具体路由都携带一个NO_EXPORT的团体属性,携带该属性的路由不能公布给EBGP邻居。因此,AS200知道这些路由不会发布给AS300

                                                                                                                                                             图3    AS100多宿主到AS200

    Router1上的路由聚合不配置detail-suppressed选项:那么聚合路由和具体路由都会被公布给AS200;并配置邻居Router2发布路由的策略,使聚合路由不发布community属性,具体路由发布community属性,那么AS300就可以收到聚合路由了。

    2.3.3        宣告聚合路由及挑选出来的更具体的路由

    利用Aggregatesuppress-policy参数detail-suppressed结合;

    在前一种方案中,将AS100的更具体的路由发送给了AS200,因此AS200能够执行路由策略。AS200这些路由来设置路由选项,从而使AS300能够向AS100发送业务量。

    在图3中,AS100AS200有两条链路,如果想从AS200AS100192.168.193.0/24业务量走Router3Router4的链路,而Router1Router2的链路作为备份链路。可以在Router1制定策略,使Router1上抑制192.168.193.0/24这条具体路由,发布聚合路由和其他更具体的路由。

    Router3上,制定策略,发布聚合路由和192.168.193.0/24这条聚合路由。

    在生成聚合路由时如果使用了suppress-policy参数来抑制部分参与聚合的路由,即符合suppress-policy的路由被抑制;不匹配的部分不被抑制。那么在发布路由时除了发布聚合路由,还会发布与suppress-policy中不匹配的部分具体路由。

    2.3.4        改变聚合的属性

    Aggregate命令使用Attribute-policy选项,改变聚合路由的属性。使用此参数能轻易改变聚合路由的一些属性,比如团体属性、起源以及cost等等。

    在图3中,AS100中的IGPrip,将路由引入到BGP中,那么192.168.192.0192.169.199.0BGP路由的Origin属性为incomplete .

    假设AS200希望所有到AS100的业务量,将Router1Router2的作为主链路,而把将Router3Router4的链路作为备份链路。

    那么就可以在Router1上进行路由聚合,使聚合路由的origin属性为IGP,而Router2上的聚合路由的属性不变,由于BGP会优选OriginIGP的路由。当Router1Router2的链路存在问题时,选择Router3Router4的链路。

    2.3.5        和聚合路由一起使用AS_SET

    AS_PATH属性有两种类型:

    l         AS_SEQUENCE:这是AS号的一个有规则的列表。

    l         AS_SET:到目的地的路径上AS号的一个无规则列表。

    AS_PATH的一个主要作用时防止路由环路。如果一个运行BGP的路由器从EBGP邻居收到一条路由含有它自己的AS号,知道出现了环路,将忽略此路由。

    如图4所示,当执行路由聚合时,会丢失AS_PATH的一些细节,产生环路的潜在因素就增加了。 经过AS3113上的路由器聚合后,丢失了详细路由的路径信息。AS810AS237AS225的路径信息被丢弃。假设AS810到其他AS有可选连接(如图5)。来自AS3113的路由聚合公布给AS6571,然后AS6571又回到AS810。因为在聚合点号的AS号没有包括在AS_PATH中,AS810不会检测到潜在的环路。

    假设AS810内的一个网络206.25.225.0/24出现了故障,在这个AS内的路由器会与来自AS6571的聚合路由相匹配,这样就出现了环路。

                                                                                                                                                  图4 聚合路由丢失一些具体路由路径信息

     

                                                                                                                                      图5 聚合路由丢失一些具体路由路径信息形成环路

    由上可知,AS_PATH防止环路的功能不要求AS号有顺序,重要的是接收路由器能够识别自己的AS号是否已经是AS_PATH的一部分了,此时就涉及到了AS_SET

    如图6,路由器生成聚合路由时,选择AS_SET选项,生成的聚合路由包括AS_PATH中所有的AS号并将它们作为一个AS_SET.可以看到AS_SET是没有顺序的。从聚合路由器开始了一个AS_SEQUENCE.

                                                                                                                                                  图6 AS_SET可以避免聚合路由形成环路

     

    在进行路由聚合时,使用as-set参数后,BGP路由表中聚合路由的路径信息带有每条具体路由的路径信息,并随着被聚合路由的更新而变化。聚合路由重新进入as-set中列出的任何一个ASBGP的环路检测机制检测到自己的AS号在聚合路由的as-set 属性列出的AS中,就会丢弃聚合路由,这样就避免了形成环路。利用AS_SET可以避免环路的同时,降低了网络的稳定性。如果AS225的链路出现故障,例如AS_SET发生了变化,那么会在聚合点以外的范围内公布此变化。

    2.3.6        基于选中的更具体路由的聚合路由

    Aggregate命令利用origin-policy选项来决定对哪些具体路由进行聚合,从而决定聚合路由携带什么样的属性。聚合路由只继承路由策略中指定的路由的属性,忽略了不匹配的路由的属性,从而达到了聚合路由控制的目的。如图6中,假设206.25.224.0/19具有NO_EXPORT属性,如果不排除这条路由进行聚合,聚合后的路由不会发送给其他的路由器。利用origin-policy选项进行聚合排除了这条路由,聚合后的路由将不继承NO_EXPORT属性。从而可以使聚合路由被传播。

    3         总结

    在现在的网络中,路由条目越来越多,路由聚合通过较少路由条目,减少了存储、传输和计算路由所需的网络资源的负担;通过隐藏一些具体路由,使聚合点之后的路由器,免受路由震荡带来的影响。路由聚合结合路由策略,可以实现链路的备份、负载分担等以满足日益丰富的组网的需求。同时,由于路由聚合隐藏了一些具体的路由,带来了形成路由环路的风险,需要设计者综合进行考虑使用。