天天看点

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

本节书摘来异步社区《cisco bgp-4 命令与配置手册》一书中的第1章,第1.1节,作者:【美】william r. parkhurst,更多章节内容可以访问云栖社区“异步社区”公众号查看

cisco bgp-4 命令与配置手册

语法描述:

address:聚合路由的ip地址。

mask:聚合路由的掩码。

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

cisco ios软件版本:10.0

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

验证

在路由器a和b的bgp表中验证聚合路由存在与否。

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

假定网络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网络发生故障时,便会简单地将相关数据包丢弃。

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

路由器a和c的bgp表中应该包含有这条聚合路由。

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

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

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

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

检查路由器a和b的bgp表,验证是否生成并通告了聚合路由。

《Cisco BGP-4 命令与配置手册》——1-1 aggregate-address address mask

故障排除

步骤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:验证是否是过滤器阻挡了聚合路由的通告。

继续阅读