站点图标 Linux-技术共享

Cisco BGP-4 命令与配置手册

1-1 aggregate-address address mask

Cisco BGP-4 命令与配置手册
语法描述:

address:聚合路由的IP地址。

mask:聚合路由的掩码。

用途:在BGP表中创建聚合路由。只有当BGP表中存在待创建聚合路由的明细路由时,才能创建出相应的聚合路由。这种形式的aggregate-address命令,在通告聚合路由的同时,还会通告构成该聚合路由的所有明细路由。

Cisco IOS软件版本:10.0

1.1.1 配置案例1:聚合本路由器生成的路由

在本例中,我们会演示聚合源自本机(本BGP路由器)的路由(locally sourced routes)。如图1-1所示,路由器B将聚合172.16.0.X~172.16.3.X这4个网络。

 

路由器B上已经创建好了4个loopback接口,用来模拟路由器本机生成的路由,这也是本例需要聚合的路由。仅当BGP表中至少存在一条聚合路由的明细路由时,BGP路由器才会通告聚合路由。为了将聚合路由的明细路由置入BGP路由表,必须在路由器B上配置BGP network命令。在聚合由loopback接口所生成的前缀之前,还需在路由器A和B上验证BGP表中相关明细路由的有效性。

 

现在,修改路由器B上的BGP配置,激活聚合路由的通告。

 

路由器B的配置中包含了多条network命令,意在通告构成聚合路由的每一条前缀。其实,BGP表中只要有一条明确路由,便能够生成相应的聚合前缀,因此本例只需一条network命令足矣。但是,只配置一条network命令会造成某些隐患——只要相关网络发生故障,这条明细路由便会从BGP表中消失。一旦这条唯一的明细路由“不翼而飞”,聚合路由也将从BGP表中“退位”。通过使用network命令逐一列出构成聚合路由的明细路由,只要其中一条明细路由有效(up),聚合路由便能够得以通告。

验证
在路由器A和B的BGP表中验证聚合路由存在与否。

在路由器A上查看与聚合路由相关的详细信息。

 

请注意,该聚合路由具有atomic-aggregate(原子聚合)属性。这表明该聚合路由的AS属性信息已经丢失。在本例中,这不会导致任何问题,其原因是构成聚合路由的明细路由,以及聚合路由本身都是由同一台路由器生成。下一个示例会清晰地讲解atomic-aggregate属性。读者还应注意的是,本例中的聚合路由只包含172.16.0.0/24~172.16.3.0/24这4条前缀。针对这4条前缀执行路由聚合时,可使用一个更短的掩码。比方说,在路由器B上形成聚合路由时,可使用一个16位的掩码,如下面的配置所示。但不推荐使用这么长的掩码,因为这有可能会将不属于自己的网络也一并聚合。

注意,在IP路由表中,BGP会自动安装一条下一跳为Null 0的聚合路由,图1-2描述了这条下一跳为Null 0的聚合路由的用途。

 

假定网络172.16.2.0/24发生了故障,路由器B将会从BGP表中“拿走”这条明细路由,但仍会通告聚合路由。假设路由器B设有一条指向路由器A的默认路由,但并未设置下一跳为Null 0的BGP聚合路由172.16.0.0/22。收到目的地址为172.16.2.x的IP数据包时,路由器A会因自己的IP路由表中包含了聚合路由172.16.0.0/22,而将数据包发给路由器B。路由器B接收到数据包时,会检查器IP路由表,以确定如何遵循路由转发数据包。因网络172.16.2.0/24发生了故障,故路由器B的路由表中相应的路由表项消失。路由器B会遵循默认路由转发数据包,而这条默认路由却指向了路由器A。当路由器A收到数据包后,会再次将其发回给路由器B,路由器B又回发给路由器A。该过程循环往复,直到IP数据包报头中的TTL值变为0。倘若路由器B设有一条下一跳为Null 0的聚合路由172.16.0.0/22,那么当172.16.2.0/24网络发生故障时,便会简单地将相关数据包丢弃。

1.1.2 配置案例2:聚合经过重分发的路由

在本配置示例中,不再使用network命令将明细路由置入BGP表,而是先重分发直连路由,然后再将其聚合,如配置案例1所示。修改路由器B的BGP配置,使用重分发,弃用network命令。为了防止路由器生成网络172.16.0.0/16的有类汇总路由,还需配置no auto-summary命令(更多与no auto-summary命令有关的信息,可参见第2章)。

1.1.3 配置案例3:聚合学得的BGP路由

如图1-3所示,路由器A从路由器B学得前缀172.16.0.0/24~172.16.3.0/24。由于这4条路由现在已在路由器A的BGP表中现身,因此路由器A可直接将它们聚合为前缀172.16.0.0/22。

 

验证
路由器A和C的BGP表中应该包含有这条聚合路由。

 

请注意,在路由器C的BGP表中,明细路由与聚合路由的路径信息有所不同。路由器A形成了这条聚合路由,因此这条聚合路由看起来似乎发源于路由器A。如果在路由器C上查看这条聚合路由的详细信息(如下面的输出所示),可以看见该聚合路由携带了atomic属性,这意味着其AS路径属性信息的丢失。

 

要想保留聚合路由的AS路径属性信息,请参见1-3节。

1.1.4 配置案例4:利用静态路由执行聚合

如图1-1所示的场景,可先在路由器B上创建一条静态路由,然后再将其重分发进BGP,以此来生成聚合路由。

 

验证
检查路由器A和B的BGP表,验证是否生成并通告了聚合路由。

 

故障排除
步骤1:使用show ip bgp neighbors命令来验证BGP邻居是否处于Established状态。

如果邻居关系不是处于Established状态,请见8-23节。

步骤2:执行show ip bgp命令,弄清BPG表中是否至少有一条明细路由隶属于待聚合网络的地址范围。

步骤3:若BGP表中至少拥有了一条这样的明细路由,请跳到步骤5。

步骤4:若BGP 表中没有这样的明细路由,请执行以下操作。

检查BGP network命令的语法(地址和掩码)。返回步骤2。
若以重分发的方式在BGP中注入路由(直连、静态,或IGP路由),请执行no auto-summary命令,关闭自动汇总特性。检查重分发命令的语法。返回步骤2。
步骤5:验证是否是过滤器阻挡了聚合路由的通告。

退出移动版