BGP路由聚合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BGP路由聚合相关的知识,希望对你有一定的参考价值。

在BGP协议中,路由可以分为自动聚合和手支聚合两种。
自动聚合:只对重分布到BGP中的路由生效,自动聚合会聚合到主类网络,这会导致不精确的汇总,我们不应该在生产环境中使用自动聚合。命令:summary automatic
手工聚合:要求本路由器至少有一条明细路由才能进行手工聚合,并且要使用network通告明细路由。命令:aggregate 。手工聚合后面可以携带一些参数,下面我们分别就这些参数进行简单的讲解。

  1. Detail-suppressed:对于华为路由器来讲,在进行BGP的手工聚合时,默认不会抑制明细路由,即在手工聚合以后,会将汇总路由和明细路由都通告给邻居。使用Detail-suppressed可以抑制明细路由的通告,只通告汇总路由给邻居。
  2. AS_set:携带路由起源的AS属性,用于防环。当在非明细路由起源的AS聚合路由时,默认会丢弃明细路由的起源AS属性,这样可能导致环路,可添加AS_set属性则会携带明细起源的AS号到路径属性的最右边,如果明细从多个AS产生,明会使用{}括起来。
  3. Attribute-policy:可以更改路由的属性,比如一条路由的起源属性更改为incomplete.
  4. Suppress-policy:抑制策略,如果使用Detail-suppressed则会抑制所有的路由,而使用Suppress-policy则只会抑制被route-policy匹配的路由。
    下面我们通过实验,来验证一下这些属性。
    拓扑图如下:
    在拓扑中:R4和R2 R3建立IBGP邻居,R1同R2和R3建立直连的EBGP邻居,R1上有三个环回口11.1.1.1/32,11.1.1.2/32,11.1.1.3/32,将它们通告到BGP中。

技术分享图片

实验一:自动聚合
在R1上重分布直连,并进行自动聚合
R1:
bgp 100
summary automatic #自动聚合只对重分布的路由生效,对于network的不生效。
import-route direct

在R2上查看结果,发现已经能看到这条汇总路由了。
R2:
<R2>display bgp routing-table

> 11.0.0.0 123.1.1.1 0 100? 已经没有掩码了
> 123.0.0.0 123.1.1.1 0 100?

实验二:手工聚合
在默认情况下,手工聚合不抑制明细路由,明细和汇总路由会一起通告给邻居。
[R1-bgp]display this
[V200R003C00]
#
bgp 100
router-id 11.1.1.1

aggregate 11.1.1.0 255.255.255.252
network 11.1.1.1 255.255.255.255
network 11.1.1.2 255.255.255.255
network 11.1.1.3 255.255.255.255

在R1上查看BGP表,发现有明细路由和汇总路由,都是有效且最优的。
[R1-bgp]display bgp routing-table
> 11.1.1.0/30 127.0.0.1 0 i
> 11.1.1.1/32 0.0.0.0 0 0 i
> 11.1.1.2/32 0.0.0.0 0 0 i
> 11.1.1.3/32 0.0.0.0 0 0 i

在R2上查看BGP表,可以看到明细,也可以看到汇总路由
<R2>display bgp routing-table
> 11.1.1.0/30 123.1.1.1 0 100i
> 11.1.1.1/32 123.1.1.1 0 0 100i
> 11.1.1.2/32 123.1.1.1 0 0 100i
> 11.1.1.3/32 123.1.1.1 0 0 100i

实验三: 在R1上通告汇总路由并且抑制明细
R1:
bgp 100
aggregate 11.1.1.0 255.255.255.252 detail-suppressed
network 11.1.1.1 255.255.255.255
network 11.1.1.2 255.255.255.255
network 11.1.1.3 255.255.255.255

在R1和R2上查看BGP表:
[R1-bgp]display bgp routing-table # 明细路由被抑制了,不会通告给邻居
*> 11.1.1.0/30 127.0.0.1 0 i
s> 11.1.1.1/32 0.0.0.0 0 0 i
s> 11.1.1.2/32 0.0.0.0 0 0 i
s> 11.1.1.3/32 0.0.0.0 0 0 i

<R2>display bgp routing-table #在R2上已经看不到明细路由了
*> 11.1.1.0/30 123.1.1.1 0 100i

实验四: 在R2上聚合11.1.1.0/30的路由,添加AS_set属性。
我们取消在R1上做的手工聚合,改成在R2上做聚合,如果不加AS_set,则这条聚合路由在AS200中默认不是没有AS_path属性的。
R2:
bgp 200
aggregate 11.1.1.0 255.255.255.252

在R2和R4上查看BGP表,这条路由都没有AS_path属性。
<R2>display bgp routing-table

*> 11.1.1.0/30 127.0.0.1 0 i

<R4>display bgp routing-table

*>i 11.1.1.0/30 22.1.1.1 100 0 i

在R2上将聚合路由带上as_set属性,这样会在聚合路由上添加明细路由起源自哪个AS,用于防环。如果这些明细来自不同的AS,则会在AS_path的最右边使用{}将产生明细的多个AS放入{}中。
[R2-bgp]aggregate 11.1.1.0 255.255.255.252 as-set

接着在R2和R4上查看BGP表
[R2-bgp]display bgp routing-table

*> 11.1.1.0/30 127.0.0.1 0 100i

<R4>display bgp routing-table
*>i 11.1.1.0/30 22.1.1.1 100 0 100i

实验五:更改聚合路由的属性,将起源属性更改为未完成
R2:

route-policy ATT1 permit node 10
apply origin incomplete

aggregate 11.1.1.0 255.255.255.252 as-set attribute-policy ATT1

查看BGP表,发现11.1.1.0/30这条汇聚路由的起源属性变成了?。
<R2>display bgp routing-table
*> 11.1.1.0/30 127.0.0.1 0 100?

<R4>display bgp routing-table
*>i 11.1.1.0/30 22.1.1.1 100 0 100?
实验六:在R2上聚合11.1.1.0/30,只抑制11.1.1.2这一条明细路由。
[R2-bgp]aggregate 11.1.1.0 255.255.255.252 as-set attribute-policy ATT1 suppress-policy supp

route-policy supp permit node 10
if-match acl 2000

acl number 2000
rule 10 permit source 11.1.1.2 0

查看R2的BGP表,发现11.1.1.2/32的路由是存在的(被抑制),但这条路由在R4上是不存在的。
[R2]display bgp routing-table

> 11.1.1.0/30 127.0.0.1 0 100?
> 11.1.1.1/32 123.1.1.1 0 0 100i
s> 11.1.1.2/32 123.1.1.1 0 0 100i
*> 11.1.1.3/32 123.1.1.1 0 0 100i

[R2]display bgp routing-table 11.1.1.2 32,被抑制的路由,没有通告给任何的邻居。

BGP local router ID : 22.1.1.1
Local AS number : 200
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 11.1.1.2/32:
From: 123.1.1.1 (11.1.1.1)
Route Duration: 00h08m12s
Direct Out-interface: GigabitEthernet0/0/2
Original nexthop: 123.1.1.1
Qos information : 0x0
AS-path 100, origin igp, MED 0, suppressed, pref-val 0, valid, external, best, select, active, pre 255
Not advertised to any peer yet

[R2]display bgp routing-table 11.1.1.1 32 像这条路由,就通告到R4上去了。

BGP local router ID : 22.1.1.1
Local AS number : 200
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 11.1.1.1/32:
From: 123.1.1.1 (11.1.1.1)
Route Duration: 00h08m38s
Direct Out-interface: GigabitEthernet0/0/2
Original nexthop: 123.1.1.1
Qos information : 0x0
AS-path 100, origin igp, MED 0, pref-val 0, valid, external, best, select, active, pre 255
Advertised to such 1 peers:
44.1.1.1

<R4>display bgp routing-table

*>i 11.1.1.0/30 22.1.1.1 100 0 100?
i 11.1.1.1/32 123.1.1.1 0 100 0 100i
i 11.1.1.3/32 123.1.1.1 0 100 0 100i

#:有博客中,为缩减篇幅,将输出的BGP表的信息进行了删减,只保留了一些跟实验现象有关的内容。

手动刷新BGP的路由。
<R2>refresh bgp all import
<R2>refresh bgp all export

以上是关于BGP路由聚合的主要内容,如果未能解决你的问题,请参考以下文章

乾颐堂军哥HCIE9-解决BGP路由黑洞聚合的各种参数以及RR基础

华为BGP选路原则

BGP聚合路由 执行最苛刻的条件

BGP聚合路由 执行最苛刻的条件

BGP的地址聚合

OSPF发布聚合路由