简介
本文档介绍如何在使用 aggregate-address 命令时操作不同的属性以及对传播有何影响。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
本文档不限于特定的软件和硬件版本。不过,本文档中的配置已经过 Cisco IOS® 软件版本 12.2(28) 测试。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
背景信息
边界网关协议(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 命令时操作不同的属性以及对传播有何影响。
网络图
网络图
不带as-set 参数的聚合
使用 as-set 参数通过自治系统(AS)的数学集创建一个聚合地址。此参 as-set 数汇总了所有单个路由的AS_PATH属性。使用以下示例配置可以检查此功能,并了解该参数如何起到协助 BGP 检测和避免环路的作用。
Router A |
Current configuration:
hostname RouterA
!
interface Serial1
ip address 10.2.2.2 255.0.0.0
!
interface Loopback0
ip address 10.160.20.11 255.255.0.0
!
router bgp 100
network 10.160.20.0
!--- Router A advertises network 10.160.20.0/16.
neighbor 10.2.2.1 remote-as 300
!
end |
Router B |
Current configuration:
hostname RouterB
!
interface Serial0
ip address 10.3.3.3 255.0.0.0
!
interface Loopback0
ip address 10.160.10.1 255.255.0.0
!
router bgp 200
network 10.160.10.0
!--- Router B advertises network 10.160.10.0/16.
neighbor 10.3.3.1 remote-as 300
!
end |
路由器 C |
Current configuration:
hostname RouterC
!
interface Serial0
ip address 10.2.2.1 255.0.0.0
!
interface Serial1
ip address 10.3.3.1 255.0.0.0
!
interface Serial2
ip address 10.4.4.1 255.0.0.0
!
router bgp 300
neighbor 10.2.2.2 remote-as 100
neighbor 10.3.3.3 remote-as 200
neighbor 10.4.4.4 remote-as 400
aggregate-address 10.160.0.0 255.0.0.0 summary-only
!--- The network is summarized, and Router C only !--- advertises 10.160.0.0/8.
!
end |
路由器D |
Current configuration:
hostname RouterD
!
interface Serial0
ip address 10.4.4.4 255.0.0.0
!
router bgp 400
neighbor 10.4.4.1 remote-as 300
!
end |
路由器 C (AS-300) 分别将来自 AS-100 和 AS-200 的路由 10.160.20.0/16 和 10.160.10.0/16 进行聚合。之所以执行此操作,是因为您已在路由器C上配置了 summary-only 参数。路由器C只会向路由器D声明聚合10.160.0.0/8。聚合10.160.0.0/8是无类域间路由(CIDR)路由。更具体的 10.160.10.0/16 和 10.160.20.0/16 路由已被抑制,因为路由器 C 上的该 BGP 表显示:
RouterC# show ip bgp BGP table version is 6, local router ID is 10.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 *> 10.160.0.0/8 0.0.0.0 32768 i s> 10.160.10.0 10.3.3.3 0 0 200 i s> 10.160.20.0 10.2.2.2 0 0 100 i
这是路由器 D 的 BGP 表。注意聚合路由的路径信息:
RouterD# show ip bgp BGP table version is 6, local router ID is 10.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 *> 10.160.0.0/8 10.4.4.1 0 300 i
聚合路由 10.160.0.0/8 被视为源自具有源代码 IGP 的 AS-300。该路由已丢失独立前缀 10.160.10.0/16(来自 AS-200)和 10.160.20.0/16(来自 AS-100)的所有具体的 AS_PATH 信息。
带as-set 参数的聚合
现在在路由器C上配置 aggregate-address 命令中的 as-set 参数。以下是新配置:
路由器 C |
Current configuration:
hostname RouterC
!
interface Serial0
ip address 10.2.2.1 255.0.0.0
!
interface Serial1
ip address 10.3.3.1 255.0.0.0
!
interface Serial2
ip address 10.4.4.1 255.0.0.0
!
router bgp 300
neighbor 10.2.2.2 remote-as 100
neighbor 10.3.3.3 remote-as 200
neighbor 10.4.4.4 remote-as 400
aggregate-address 10.160.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 |
NReview此参数对路由器上 show ip bgp 输出的影响:
RouterD# show ip bgp BGP table version is 2, local router ID is 10.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 *> 10.160.0.0/8 10.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参数包含聚合汇总的每个独立路由的相关信息。独立路由发生变化会导致聚合进行更新。在本示例中,如果10.160.10.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 为网络10.160.20.0/16并向路由器C通告该网络。此部分显示了配置。路由器C继承community属性, no-export 而路由器聚合10.160.0.8。因此,不会向路由器 D 通告 10.160.0.0/8。路由器 B、C 和 D 的配置不变。以下是路由器 A 的新配置:
Router A |
Current configuration:
hostname RouterA
!
interface Serial1
ip address 10.2.2.2 255.0.0.0
!
router bgp 100
network 10.160.20.0
!--- Router A advertises network 10.160.20.0/16.
neighbor 10.2.2.1 remote-as 300
neighbor 10.2.2.1 send-community
neighbor 10.2.2.1 route-map SET_NO_EXPORT out
!
access-list 1 permit 10.160.20.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 10.160.20.0/16 ! end |
以下是路由器 C 对应于 10.160.0.0/8 的 BGP 表:
RouterC# show ip bgp 10.160.0.0 BGP routing table entry for 10.160.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 10.4.4.1) 0.0.0.0 from 0.0.0.0 (10.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获知10.160.0.0:
RouterD# show ip bgp 10.160.0.0 % Network not in table
可以在路由器C上配置attribute-map参数,以便从no-export操作到none操作聚合路由的社区属性。此配置允许将聚合通告给路由器D。
路由器 C |
Current configuration:
hostname RouterC
!
interface Serial0
ip address 10.2.2.1 255.0.0.0
!
interface Serial1
ip address 10.3.3.1 255.0.0.0
!
interface Serial2
ip address 10.4.4.1 255.0.0.0
!
router bgp 300
neighbor 10.2.2.2 remote-as 100
neighbor 10.3.3.3 remote-as 200
neighbor 10.4.4.4 remote-as 400
aggregate-address 10.160.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 对应于 10.160.0.0/8 的 BGP 表。由于该聚合路由没有团队设置,路由器 C 会向路由器 D 通告 10.160.0.0/8。
RouterC# show ip bgp 10.160.0.0 BGP routing table entry for 10.160.0.0/8, version 6 Paths: (1 available, best #1) Advertised to non peer-group peers: 10.2.2.2 10.3.3.3 10.4.4.4 {200,100}, (aggregated by 300 10.4.4.1) 0.0.0.0 from 0.0.0.0 (10.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学习了聚合路由10.160.0.0/8。
RouterD# show ip bgp 10.160.0.0 BGP routing table entry for 10.160.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 10.4.4.1) 10.4.4.1 from 10.4.4.1 (10.4.4.1) Origin IGP, localpref 100, valid, external, best
使用advertise-map 聚合特定路由的子集
如果您可以控制形成聚合路由的单个前缀,则可以更轻松地决定聚合可以承载哪些属性。更改聚合路由的属性部分中的示例从聚合路由中排除了前缀10.160.20.0。在这种情况下,聚合10.160.0.0/8不会继承社区属性 no-export 。为了进行此更改,请在路由器C上配置 advertise-map 参数。
路由器 C |
Current configuration:
hostname RouterC
!
interface Serial0
ip address 10.2.2.1 255.0.0.0
!
interface Serial1
ip address 10.3.3.1 255.0.0.0
!
interface Serial2
ip address 10.4.4.1 255.0.0.0
!
router bgp 300
neighbor 10.2.2.2 remote-as 100
neighbor 10.3.3.3 remote-as 200
neighbor 10.4.4.4 remote-as 400
aggregate-address 10.160.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 10.160.10.0 0.0.255.255
!
route-map SELECT_SP_ROUTE permit 10
match ip address 1
!
end |
现在,看看路由器 C 对应于 10.160.0.0/8 的 BGP 表:
RouterC# show ip bgp 10.160.0.0 BGP routing table entry for 10.160.0.0/8, version 15 Paths: (1 available, best #1) Advertised to non peer-group peers: 10.2.2.2 10.4.4.4 200, (aggregated by 300 10.2.2.1) 0.0.0.0 from 0.0.0.0 (10.2.2.1) Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic- aggregate, best, ref 2
只有AS-200是聚合的AS_PATH信息的一部分;AS-100不是该信息的一部分。此外,没有从10.160.20.0/16继承 no-export 的社区。因此,会向路由器 D 声明该聚合路由。 show ip bgp 160.0.0.0 输出显示了声明:
RouterD# show ip bgp 10.160.0.0 BGP routing table entry for 10.160.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 10.4.4.1) 10.4.4.1 from 10.4.4.1 (10.4.4.1) Origin IGP, localpref 100, valid, external, atomic-aggregate, best ip bgp 10.160.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 10.160.20.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 *> 10.160.0.0/8 10.2.2.1 0 300 200 i *> 10.160.20.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 configuration 命令的情况下使用 suppress-map 命令。
-
当将 as-set 与 suppress-map 一起使用时,虽然不会对受抑制的路由进行通告,但聚合路由会继承所有受抑制路由的属性。但可通过使用其他配置命令(如 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 配置命令覆盖选择的属性。
相关信息