我们都知道BGP是一种运用于自治系统之间的路由协议,那么可想而知,BGP也经常被运用于大规模的网络中。而在这种复杂的环境下部署BGP时常会出现诸如对等体众多、路由表庞大等问题,在此,我们列举了大规模网络中部署BGP可能会出现的问题以及解决方案:

问题一、BGP对等体众多,配置复杂,维护难

解决方法:

1、对等体组:将拥有相同属性的对等体加入一个集合,这个集合就是对等体组(分为IBGP对等体组和EBGP对等体组),这样,我们就可以直接对对等体组进行配置,从而减少了对多个对等体做相同配置的步骤。

2、BGP团体:给拥有相同特征的目的地址的路由打上团体属性,方便以后的设备对这些路由进行控制,团体属性又分为公有属性和私有属性,公认团体属性包含:INTERNE(默认)、NO_EXPORT、NO_ADVERTISE、NO_EXPORT_SUBCONFED

问题二、BGP路由表庞大,占用CPU

解决方法:

BGP路由聚合:配置后不仅减少了BGP路由数量,同时因为一些子网路由信息被屏蔽,一定程度上避免了由于路有变化引起的路由震荡,增强路由的稳定性。

聚合分为自动聚合和手动聚合:

自动聚合:只能对引入的IGP路由进行聚合,不能对network发布或者从邻居学来路由进行聚合,并且如果聚合的子网不能构成一个完整的自然网段,可能会造成路由黑洞。

手动聚合:对从邻居学来的路由,network的路由,引入的路由都可以进行聚合,可以选择掩码,并且还可以实现:

1、同时发布聚合的路由以及具体的路由(不设置)

2、抑制具体路由,仅发布聚合的路由(detail-suppressed)

3、发布聚合路由和部分具体路由(suppress-policy 路由策略)

4、将指定的路由聚合成聚合路由(origin-policy路由策略)

问题三、IBGP全连接,应用起来困难

解决方法:

1、路由反射: 路由反射器的对等体分为客户机和非客户机,牢记3条转发原则:

从客户机收到的传给客户机和非客户机(除了自身)

从非客户机收到的仅给客户机

从EBGP对等体收到的给所有对等体

有可能从某个群发出的路由在进过多次反射又回到该群,所以有两个属性origin_id(路由发起者的ID)和cluster_LIST(所经过的群ID),路由器收到origin_id是自己的路由丢弃,反射器收到LIST中有自己的路由丢弃,一个集群里面多个路由反射器都要配置相同的CLUSTER_ID,为了防环。

2、联盟:BGP联盟与路由反射器一样,都是用来解决IBGP要求full-meshed而带来的问题。联盟是把一个AS划分为多个子AS,子AS内的BGP邻居要求full-meshed。子AS之间的连接类似于EBGP,所以两个子AS之间的路由器不需要full-meshed就能交换路由;但与EBGP不同的是,路由从一个子AS发布到另一个子AS,路由的下一跳、度量和本地优先等属性并不会改变(类似IBGP)。

联盟内的子AS的信息并不会传送给EBGP邻居。对于一个EBGP邻居来说,联盟就是一个单独的AS。一个联盟最多包含32个子自治系统。

问题四、网络路由变化频繁,造成路由更新频繁,消耗路由器相当数量的资源

解决方法:

BGP路由衰减:对路由的稳定性进行评估,每当路由变化一次(可达路由变不可达,不可达路由变可达,或者可达路由属性发生变化),惩罚值增加1000,一旦惩罚值超过抑制阈值,路由被抑制,不参与路由优选,接下来每经过一段时间惩罚值减少一半,这段时间称为半衰期,直到低于再使用阈值则重新参与优选。

查看原文 >>
相关文章