一、概述
在大型规模的网络中,BGP设备中的BGP路由表可能非常庞大,给设备造成了很大的负担,同时使发生路由振荡的几率也大大增加,影响网络的稳定性。路由聚合通过只向对等体发送聚合后的路由,而不发送所有的具体路由的方法,减小路由表的规模。并且被聚合的路由如果发生振荡,也不再对网络造成影响,从而提高了网络的稳定性。
二、BGP的聚合方式
BGP在IPv4网络中支持自动聚合和手动聚合两种方式,而IPv6网络中仅支持手动聚合方式。
- 自动聚合:对BGP通过import-route命令引入的路由进行聚合。配置自动聚合后,BGP按照自然网段聚合聚合路由(例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合成自然网段A类地址10.0.0.0/8),并且BGP向对等体只发送聚合后的路由。(这里的自然可以理解为子网划分当中的有类地址)
- 手动聚合:对BGP本地路由表中存在的路由进行聚合。手动聚合可以控制聚合路由的属性,以及决定是否发布具体路由。
在配置BGP路由聚合时要注意以下几个方面。
- 手动聚合后的路由的优先级高于自动聚合。
- 如果聚合路由中所包含的路由各Origin属性不相同,那么聚合路由的Origin属性按照优先级igp>egp>incomplete为准。聚合路由会携带原来所有具体路由中的团体属性。
- 手动聚合仅对BGP本地路由表中已经存在的路由表项有效,例如BGP路由表中不存在10.1.1.1/24等掩码长度大于16的路由,即使配置了aggregate 10.1.1.1 16命令,BGP也不会生成聚合路由。
- 为了避免路由聚合可能引起的路由环路,BGP设计了AS_Set属性。AS_Set属性是一种无序的AS_Path属性,仅标明聚合路由所经过的AS号,但并无先后次序之分。当聚合路由重新进入AS_Set属性中列出的任何一个AS时,BGP将会检测到自己的AS号在聚合路由的AS_Set属性中,于是会丢弃该聚合路由,从而避免了路由环路的形成。