文章目录

  • BGP 路由的聚合所产生的问题
  • 参考阅读
  • 说明
  • 一、实验搭建
  • 1.1 配置EBGP
  • 1.2 宣告路由
  • 1.3 路由聚合
  • 1.3.1 network方式
  • 1.3.2 aggregate方式
  • 1.4 团体属性
  • 1.5 AS-Path属性
  • 二、附加思考


BGP 路由的聚合所产生的问题


说明

此篇Blog阐述了BGP路由汇总时的问题

  • 抑制明细会有什么影响,如何避免这种影响
  • 如何即抑制明细又传递团体属性
  • 跨AS域做汇总会有什么影响

一、实验搭建

场景

你是公司的网络管理员。公司的网络采用了BGP协议作为路由协议。公司的网络由多个自制系统组成,不同的分支机构使用了不同的AS号。随着公司规模的扩大,路由器中已经有越来越多的路由表,进行BGP的路由汇总迫在眉睫。

实验拓扑如下

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_sed

地址规划

  • 各个路由器之间的直连网段使用10.0.xy.xy/24 ,如R1连接R5的链路IP地址为10.0.15.1/24 与10.0.15.5/24,其他同理;
  • 环回的地址如上图所示,注意模拟真实主机,即使用32位

1.1 配置EBGP

[R1]router id 10.1.1.1
[R1]bgp 64513
[R1-bgp]peer 10.0.12.2 as-number 64514
[R1-bgp]peer 10.0.14.4 as-number 64512
[R1-bgp]peer 10.0.15.5 as-number 64516 

[R2]router id 10.1.2.2
[R2]bgp 64514
[R2-bgp]peer 10.0.12.1 as-number 64513
[R2-bgp]peer 10.0.23.3 as-number 64515 

[R3]router id 10.1.3.3
[R3]bgp 64515
[R3-bgp]peer 10.0.23.2 as-number 64514 

[R4]router id 10.0.4.4
[R4]bgp 64512
[R4-bgp]peer 10.0.14.1 as-number 64513 

[R5]router id 10.1.5.5
[R5]bgp 64516
[R5-bgp]peer 10.0.15.1 as-number 64513

检查各个路由器的BGP的对等体关系

[R1]dis bgp peer 

 BGP local router ID : 10.1.1.1
 Local AS number : 64513
 Total number of peers : 3                Peers in established state : 3

  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv

  10.0.12.2       4       64514       16       15     0 00:10:23 Established       1
  10.0.14.4       4       64512       13       14     0 00:10:23 Established       1
  10.0.15.5       4       64516       13       15     0 00:10:23 Established       1
  
[R3]dis bgp peer 

 BGP local router ID : 10.1.3.3
 Local AS number : 64515
 Total number of peers : 1                Peers in established state : 1

  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State PrefRcv

  10.0.23.2       4       64514       17       13     0 00:11:15 Established       2

1.2 宣告路由

在各个路由器的BGP进程中宣告自身的回环

[R1]bgp 64513
[R1-bgp]network 10.1.1.1 255.255.255.255

[R2]bgp 64514
[R2-bgp]network 10.1.2.2 255.255.255.255

[R3]bgp 64515
[R3-bgp]network 10.1.3.3 255.255.255.255

[R4]bgp 64512
[R4-bgp]network 10.0.4.4 255.255.255.255

[R5]bgp 64516
[R5-bgp]network 10.1.5.5 255.255.255.255

在R4上查看BGP的路由表,可见其他AS域宣告的路由,观察其AS-Path属性为这条路由进入本AS域所经过的AS号

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_路由表_02

1.3 路由聚合

路由汇总的目的在于减少路由条目,提高查表转发的效率与速度;对于IGP来说叫做路由汇总,而对于BGP而言存在成千上万条路由条目,其就叫做路由聚合,本质上是一个道理

1.3.1 network方式

使用network的方式汇总路由,首先在R1上配置一条静态,即空接口防环路由,为了防止在未来当明细路由丢失的情况下产生的路由黑洞无法处理的情况;然后将其宣告在BGP进程中

[R1]ip route-static 10.1.0.0 16 NULL 0
[R1]bgp 64513
[R1-bgp]network 10.1.0.0 255.255.0.0

其次,在R1与R4建立BGP对等体时过滤掉汇总路由中的明细,抓路由,调用即可

[R1]ip ip-prefix det permit 10.1.0.0 8 less-equal 24
[R1]bgp 64513
[R1-bgp]peer 10.0.14.4 ip-prefix det export

在R4上查看BGP的路由表,产生了一条由AS64513的汇总路由

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_路由表_03

1.3.2 aggregate方式

首先,删除上一方式的配置,然后使用aggregate来聚合10.1.0.0的路由

[R1]bgp 64513
[R1-bgp]aggregate 10.1.0.0 255.255.0.0

R4上查看BGP路由表,可见一条由AS64513而来的聚合路由;但是还存在一些明细路由

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_R3_04

聚合时抑制明细

[R1-bgp]aggregate 10.1.0.0 16 detail-suppressed

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_sed_05

由于明细路由的消失,必然要空接口防环,所以抑制明细后,R1上会自动产生一条空接口防环的路由;R1上的明细路由被打上s标志,即suppressed,被抑制的意思

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_R3_06

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_sed_07

1.4 团体属性

验证聚合后的路由是否会清洗明细的属性

思路:R5将自己的回环发布给R1时携带团体属性(前提是打开传递团体属性的开关),在R4上查看是否还存在(R1上做了聚合)

步骤一:打开传递团体属性的开关

[R5]bgp 64516
[R5-bgp]peer 10.0.15.1 advertise-community

[R1]bgp 64513
[R1-bgp]peer 10.0.14.4 advertise-community

步骤二:制作策略

[R5-acl-basic-2000]di th
[V200R003C00]
#
acl number 2000  
 rule 5 permit source 10.1.5.5 0 
#
return

[R5-route-policy]di th
[V200R003C00]
#
route-policy com permit node 10 
 if-match acl 2000 
 apply community 100 
#
return

步骤三:对对等体调用

[R5-bgp]peer 10.0.15.1 route-policy com export

验证:

R1上查看是否携带团体属性,可见,这条被抑制的明细路由是携带团体属性的;而R4上没有是因为R1在做汇总后清洗掉了明细路由的属性

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_路由聚合_08

[R4]dis bgp routing-table  community

 Total Number of Routes: 0

聚合后如何使其不丢失明细的团体属性?

答:使用attribute-policy

步骤1:R1上抓取聚合的路由,制作策略,即为这个聚合的路由进行团体值的设定

[R1-acl-basic-2000]di th
[V200R003C00]
#
acl number 2000  
 rule 5 permit source 10.1.0.0 0.0.255.255 
#
return

[R1-route-policy]di th
[V200R003C00]
#
route-policy comm permit node 10 
 if-match acl 2000 
 apply community 100:2 
#
return

步骤2:对等体间调用

[R1-bgp]aggregate 10.1.0.0 16 attribute-policy comm

R4上验证查看,可见即保留了聚合路由的团体属性,又继承了明细路由的团体属性

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_路由聚合_09

如何,即抑制明细,又继承团体属性?

[R1-bgp]aggregate 10.1.0.0 16 attribute-policy comm detail-suppressed

1.5 AS-Path属性

聚合的路由还会丢失明细路由的AS-Path属性,这个属性的丢失极会导致环路的产生

那么,如何使聚合路由不丢失这个属性呢?

答:as-set

[R1-bgp]aggregate 10.1.0.0 16 detail-suppressed as-set

R4上验证,可见保留了明细路由的AS-Path属性,明细的属性在{}中,聚合的始发在最前面

BGP聚合路由时产生指向NULL0的路由 bgp协议路由聚合_R3_10

至此,实验完成,验证完成!


二、附加思考

  • 完成as-set以后,R5是否能访问到R3的Loopback地址?
    不能,因为R1上执行aggregate时带上了as-set,即保留明细上的AS-Path属性,即携带了来自明细路由的AS-Path属性,那么这条汇总路径将不能在进入其他产生明细路由的AS域,这种汇总的方式其实是不应该的,一般汇总的都是本AS域内的汇总,这样的汇总是跨AS域的汇总
  • AggregateSummary automatic有什么区别?
    Aggregate**是清洗了路由的属性后的一种聚合方式