IP : 边界网关协议(BGP)

了解 BGP 中的路由聚合

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

边界网关协议 (BGP) 允许通过使用 aggregate-address address mask [as-set] [summary-only] [suppress-map map-name] [advertise-map map-name] [attribute-map map-name] 命令将多个特定路由聚合为一个路由。当您发出不带任何参数的 aggregate-address 命令时,不会继承各个路由属性(如 AS_PATH 或 community),这会导致粒度损失。本文档说明如何在使用 aggregate-address 命令时操作不同的属性以及对传播有何影响。

先决条件

要求

Cisco 建议您了解以下主题:

使用的组件

本文档不限于特定的软件和硬件版本。然而,在本文的配置用Cisco IOSï ¿  ½软件版本12.2(28)测试。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

网络图

/image/gif/paws/5441/aggregation1.gif

不带 as-set 参数的聚合

使用 as-set 参数通过自治系统 (AS) 算法集创建一个聚合地址。使用此 as-set 参数可以汇总所有单个路由的 AS_PATH 属性。使用以下示例配置可以检查此功能,并了解该参数如何起到协助 BGP 检测和避免环路的作用。

路由器 A
Current configuration: 

 hostname RouterA 
 ! 
 interface Serial1 
  ip address 2.2.2.2 255.0.0.0 
 !  
interface Loopback0
  ip address 160.20.1.1 255.255.0.0
 !
 router bgp 100 
  network 160.20.0.0 

!--- Router A advertises network 160.20.0.0/16.      

  neighbor 2.2.2.1 remote-as 300 
 ! 
 end

路由器 B
Current configuration: 

 hostname RouterB 
 ! 
 interface Serial0 
  ip address 3.3.3.3 255.0.0.0 
 ! 
interface Loopback0
  ip address 160.10.1.1 255.255.0.0
 !
 router bgp 200 
  network 160.10.0.0 

!--- Router B advertises network 160.10.0.0/16.      

  neighbor 3.3.3.1 remote-as 300 
 ! 
 end

路由器 C
Current configuration: 

 hostname RouterC 
 ! 
 interface Serial0 
  ip address 2.2.2.1 255.0.0.0 
 ! 
 interface Serial1 
  ip address 3.3.3.1 255.0.0.0 
 ! 
 interface Serial2 
  ip address 4.4.4.1 255.0.0.0 
 ! 
 router bgp 300 
  neighbor 2.2.2.2 remote-as 100 
  neighbor 3.3.3.3 remote-as 200 
  neighbor 4.4.4.4 remote-as 400 
  aggregate-address 160.0.0.0 255.0.0.0 summary-only  

!--- The network is summarized, and Router C only
!--- advertises 160.0.0.0/8.

 ! 
 end  

路由器D
Current configuration: 

 hostname RouterD
 ! 
 interface Serial0 
  ip address 4.4.4.4 255.0.0.0 
 ! 
 router bgp 400 
  neighbor 4.4.4.1 remote-as 300                     
 ! 
 end 

路由器 C (AS-300) 分别将来自 AS-100 和 AS-200 的路由 160.20.0.0/16 和 160.10.0.0/16 进行聚合。之所以执行此操作,是因为您已在路由器 C 上配置了 summary-only 参数。路由器 C 只会向路由器 D 声明聚合 160.0.0.0/8。聚合 160.0.0.0/8 是无类域间路由选择 (CIDR) 路由。更具体的 160.10.0.0/16 和 160.20.0.0/16 路由已被抑制,因为路由器 C 上的该 BGP 表显示:

RouterC# 
show ip bgp
 
BGP table version is 6, local router ID is 4.4.4.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 160.0.0.0/8      0.0.0.0                            32768 i
s> 160.10.0.0       3.3.3.3                  0             0 200 i
s> 160.20.0.0       2.2.2.2                  0             0 100 i

这是路由器 D 的 BGP 表。注意聚合路由的路径信息:

RouterD# 
show ip bgp

BGP table version is 6, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 160.0.0.0/8      4.4.4.1                                0 300 i

聚合路由 160.0.0.0/8 被视为源自具有源代码 IGP 的 AS-300。该路由已丢失独立前缀 160.10.0.0/16(来自 AS-200)和 160.20.0.0/16(来自 AS-100)的所有具体的 AS_PATH 信息。

带 as-set 参数的聚合

现在,您将在路由器 C 上配置 aggregate-address 命令中的 as-set 参数。以下是新配置:

路由器 C
Current configuration: 

 hostname RouterC 
 ! 
 interface Serial0 
  ip address 2.2.2.1 255.0.0.0 
 ! 
 interface Serial1 
  ip address 3.3.3.1 255.0.0.0 
 ! 
 interface Serial2 
  ip address 4.4.4.1 255.0.0.0 
 ! 
 router bgp 300 
  neighbor 2.2.2.2 remote-as 100 
  neighbor 3.3.3.3 remote-as 200 
  neighbor 4.4.4.4 remote-as 400 
  aggregate-address 160.0.0.0 255.0.0.0 summary-only as-set

!--- With the as-set configuration command, the aggregate 
!--- inherits the attributes of the more-specific routes.

 ! 
 end 

现在,看看此参数对路由器 D 上的 show ip bgp 输出有何影响:

RouterD# 
show ip bgp

BGP table version is 2, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 160.0.0.0/8      4.4.4.1                                0 300 {200,100} i

在使用 as-set 参数的情况下,BGP 表中聚合路由的路径信息更改为包含来自 300 {200,100} 的集合。此集合表明该聚合实际汇总了已经过 AS-200 和 AS-100 的路由。as-set 信息对于避免路由环路变得重要起来,因为该信息记录了路由经过的路径。

在任何封闭网络中,此聚合信息通过 BGP 进行传播,然后传播回 as-set 列出的某个 AS。这种传播为环路创造了可能性。BGP 的环路探测行为会在聚合更新的 as-set 中标出它自己的 AS 编号并删除该聚合。此操作可防止形成环路。

注意: as-set 参数包含聚合汇总的每个独立路由的相关信息。独立路由发生变化会导致聚合进行更新。在示例中,如果 160.10.0.0/16 断开,则聚合的路径信息会从 300 {200,100} 变化为 300 {200}。聚合会相应进行更新。如果该聚合汇总了数十或数百条路由且形成该聚合的路由出现了问题,则可能会经常出现翻动现象。

更改聚合路由的属性

带 as-set 参数的聚合部分向您介绍了如何使用 as-set 来保存特定路由的 AS_PATH 属性。某些情况下,您可能需要对聚合路由的属性进行更改。例如,这些属性包括 metric、community 和 origin。

此部分演示如何使用 attribute-map 参数操作 aggregate-address 属性。在这种情况下,您将用 no-export 团队属性配置一个或多个特定的聚合路由。路由器 A 将团队属性 no-export 设置为网络 160.20.0.0/16,并向路由器 C 声明该网络。此部分显示了配置。路由器 C 会继承团队属性 no-export,同时该路由器会聚合 160.0.0.8。因此,不会向路由器 D 通告 160.0.0.0/8。路由器 B、C 和 D 的配置不变。以下是路由器 A 的新配置:

路由器 A
Current configuration: 

 hostname RouterA 

 ! 
 interface Serial1 
  ip address 2.2.2.2 255.0.0.0 
 !  
 router bgp 100 
  network 160.20.0.0 

!--- Router A advertises network 160.20.0.0/16.

  neighbor 2.2.2.1 remote-as 300 
  neighbor 2.2.2.1 send-community 
  neighbor 2.2.2.1 route-map SET_NO_EXPORT out 
 ! 
 access-list 1 permit 160.20.0.0 0.0.255.255 
 route-map SET_NO_EXPORT permit 10 
  match ip address 1 
  set community no-export 

!--- This sets the community attribute no-export.    

  at Router A for route 160.20.0.0/16 
 ! 
 end

以下是路由器 C 对应于 160.0.0.0/8 的 BGP 表:

RouterC# show ip bgp 160.0.0.0
BGP routing table entry for 160.0.0.0/8, version 9
Paths: (1 available, best #1, not advertised to EBGP peer)
  Not advertised to any peer
  {200,100}, (aggregated by 300 4.4.4.1)
    0.0.0.0 from 0.0.0.0 (4.4.4.1)
      Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-
aggregate, best, ref 2
      Community: no-export

使用团队 no-export 可使路由器 C 停止向 eBGP 对等体路由器 D 声明聚合路由。路由器 D 显示它还未从路由器 C 学习 160.0.0.0:

RouterD# show ip bgp 160.0.0.0
% Network not in table

可在路由器 C 上配置 attribute-map 参数以将聚合路由的团队属性从 no-export 操纵为 none。使用此配置可以向路由器 D 通告聚合。

路由器 C
Current configuration: 

 hostname RouterC 
 ! 
 interface Serial0 
  ip address 2.2.2.1 255.0.0.0 
 ! 
 interface Serial1 
  ip address 3.3.3.1 255.0.0.0 
 ! 
 interface Serial2 
  ip address 4.4.4.1 255.0.0.0 
 ! 
 router bgp 300 
  neighbor 2.2.2.2 remote-as 100 
  neighbor 3.3.3.3 remote-as 200 
  neighbor 4.4.4.4 remote-as 400 
  aggregate-address 160.0.0.0 255.0.0.0 
  as-set summary-only attribute-map Map 

!--- Use of the attribute-map argument allows
!--- you to change the community of the aggregate.
 
 ! 
 route-map Map permit 10 
  set community none 

!--- This sets the community of the aggregate to none.

 end

现在,看看路由器 C 对应于 160.0.0.0/8 的 BGP 表。由于该聚合路由没有团队设置,路由器 C 会向路由器 D 通告 160.0.0.0/8。

RouterC# show ip bgp 160.0.0.0
BGP routing table entry for 160.0.0.0/8, version 6
Paths: (1 available, best #1)
  Advertised to non peer-group peers:
  2.2.2.2 3.3.3.3 4.4.4.4
  {200,100}, (aggregated by 300 4.4.4.1)
    0.0.0.0 from 0.0.0.0 (4.4.4.1)
      Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-
aggregate, best, ref 2

路由器 D 上的 show ip bgp 160.0.0.0 输出表明路由器 D 已从路由器 C 学习了聚合路由 160.0.0.0/8。

RouterD# show ip bgp 160.0.0.0
BGP routing table entry for 160.0.0.0/8, version 10
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
  300 {200,100}, (aggregated by 300 4.4.4.1)
    4.4.4.1 from 4.4.4.1 (4.4.4.1)
      Origin IGP, localpref 100, valid, external, best

使用 advertise-map 聚合特定路由的子集

如果对形成聚合路由的各个前缀具有控制权,则可更轻松地确定聚合将带来哪些属性。从在示例的会聚路由排除前缀160.20.0.0在崔凡吉莱会聚路由部分的属性。在这种情况下,聚合 160.0.0.0/8 不会继承团队属性 no-export。为了进行此更改,请在路由器 C 上配置 advertise-map 参数。

路由器 C
Current configuration: 

 hostname RouterC 
 ! 
 interface Serial0 
  ip address 2.2.2.1 255.0.0.0 
 ! 
 interface Serial1 
  ip address 3.3.3.1 255.0.0.0 
 ! 
 interface Serial2 
  ip address 4.4.4.1 255.0.0.0 
 ! 
 router bgp 300 
  neighbor 2.2.2.2 remote-as 100 
  neighbor 3.3.3.3 remote-as 200 
  neighbor 4.4.4.4 remote-as 400 
  aggregate-address 160.0.0.0 255.0.0.0
  as-set summary-only advertise-map SELECT_SP_ROUTE   

!--- You exclude a particular prefix with the
!--- use of advertise-map.

 ! 
 access-list 1 permit 160.10.0.0 0.0.255.255 
 ! 
 route-map SELECT_SP_ROUTE permit 10 
  match ip address 1 
 ! 
 end

现在,看看路由器 C 对应于 160.0.0.0/8 的 BGP 表:

RouterC# show ip bgp 160.0.0.0
BGP routing table entry for 160.0.0.0/8, version 15
Paths: (1 available, best #1)
  Advertised to non peer-group peers:
  2.2.2.2 4.4.4.4
  200, (aggregated by 300 2.2.2.1)
    0.0.0.0 from 0.0.0.0 (2.2.2.1)
      Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-
aggregate, best, ref 2

只有 AS-200 是聚合的 AS_PATH 信息的组成部分;AS-100 不是该信息的组成部分。另外,不会从 160.20.0.0/16 继承 no-export 组。因此,会向路由器 D 声明该聚合路由。Show ip bgp 160.0.0.0 输出显示了声明:

RouterD# show ip bgp 160.0.0.0
BGP routing table entry for 160.0.0.0/8, version 7
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
  300 200, (aggregated by 300 4.4.4.1)
    4.4.4.1 from 4.4.4.1 (4.4.4.1)
      Origin IGP, localpref 100, valid, external, atomic-aggregate, best
ip bgp 160.0.0.0

注意: 由于聚合 as-set 只包含 AS-200,因此 AS-100 中的路由器 A 将接受该聚合路由并将该路由安装在路由选择表中。接受此路由是由 BGP 环路检测机制决定的。BGP 环路检测机制不会在 as-set 中探测自己的 AS。

RouterA# show ip bgp
BGP table version is 3, local router ID is 160.20.0.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 160.0.0.0/8      2.2.2.1                                0 300 200 i
*> 160.20.0.0       0.0.0.0                  0         32768 i

使用 suppress-map 对其他配置命令造成的影响

aggregate-address 命令包括其他配置命令,如 suppress-map。为了了解组合使用所有配置命令所产生的影响,请注意当使用 as-set 配置命令时,aggregate-address 只会继承来自更具体路由的属性。例如,aggregate-address 可继承的属性包括 no-export 和 no-advertise。

  • 当将 suppress-map 配置命令与 summary-only 配置命令一同使用时,summary-only 配置命令不会产生任何作用。使用 suppress-map 配置命令时,suppress-map 所抑制的更具体的路由不会进行通告。不过,除聚合路由之外,suppress-map 未涉及的路由也会进行通告。因此,本部分中的说明适用于在使用或不使用 summary-only 配置命令的情况下使用 suppress-map

  • 当对 suppress-map 使用 as-set 时,虽然不会对受抑制的路由进行通告,但聚合路由会继承所有受抑制路由的属性。但可通过使用其他配置命令(如 attribute-map)覆盖继承的属性。更改聚合路由的属性部分介绍了如何使用 attribute-map

  • 当使用带 advertise-map 的 as-set 和 suppress-map 配置命令时,聚合形成。聚合只会从 advertise-map 中选择的路由继承属性,不会考虑 suppress-map 是否会抑制路由。请参阅使用 advertise-map 聚合特定路由的子集部分。

  • 当将 advertise-map 和 attribute-map 与 as-set 及其他配置命令一起使用时,attribute-map 会覆盖 advertise-map 中选择的属性。

一般来说,当使用 advertise-map 时,只有 advertise-map 会影响聚合。如果没有 advertise-map,聚合会继承更具体路由(包括受到抑制和未受抑制路由)的属性。在这两种情况下,您可使用 attribute-map 配置命令覆盖选择的属性。


相关信息


Document ID: 5441