在大型网络中,到达同一目的地通常会存在多条有效BGP路由,设备只会优选一条最优的BGP路由,将该路由加载到路由表中使用,这一特点往往会造成很多流量负载不均衡的情况。
通过配置BGP负载分担,可以使得设备同时将多条等代价的BGP路由加载到路由表,实现流量负载均衡,减少网络拥塞。
值得注意的是,尽管配置了BGP负载分担,设备依然只会在多条到达同一目的地的BGP路由中优选一条路由,并只将这条路由通告给其他对等体。
只有满足条件的多条BGP路由才会成为等价路由,进行负载分担。
一、形成BGP路由等价负载分担的条件
-
Preferred-Value属性值相同。 -
Local_Preference属性值相同。 -
都是聚合路由或者非聚合路由。 -
AS_Path属性长度相同。 -
Origin类型(IGP、EGP、Incomplete)相同。 -
MED属性值相同。 -
都是EBGP路由或都是IBGP路由。 -
AS内部IGP的Metric相同。 -
AS_Path属性完全相同。
可以简单理解为满足前八条选路规则一致的路由才具备形成等价路由的条件。
实例分析:
BGP路由类型有两种:IBGP路由
和EBGP路由
,因此对应的负载分担类似也有两种,一般在AS内部的为IBGP,即通过多出口到达目的网段,在AS边界的可能配置EBGP路由负载分担。
属性值 | AR4 | AR5 |
---|---|---|
Preferred-Value属性值 | 0 | 0 |
Local_Preference属性值 | 100 | 100 |
是否聚合路由 | 否 | 否 |
AS_Path属性长度 | 200 | 300 |
Origin类型 | igp | igp |
MED属性值 | 0 | 0 |
路由类型 | IBGP | IBGP |
AS内部IGP的Metric | 1 | 1 |
AS_Path属性完全相同 | 200 | 300 |
上面的属性除了最后一条AS-Path属性完全一致是不满足的其它都是相同的,但是在实际情况中AR1作为AS内部路由器拥有多出口情况下AS-Path只能做到AS的长度一致。默认情况下设备只会对AS_Path完全相同的路由进行负载分担,可以使用load-balancing as-path-ignore
忽略AS_Path路径不一致。
查看AR1的路由表:
现在AR1的BGP路由表优选AR2到达192.168.1.0/24,然后BGP路由条目下发到IP全局路由表类型为IBGP路由,最终下发到FIB转发表。
配置负载分担:在AR1上配置负载分担。
bgp 100peer 2.2.2.2 as-number 100 peer 2.2.2.2 connect-interface LoopBack0peer 3.3.3.3 as-number 100 peer 3.3.3.3 connect-interface LoopBack0#ipv4-family unicastundo synchronizationmaximum load-balancing ibgp 2 # 配置最大的负载分担路由条数load-balancing as-path-ignore # 忽略AS号完全一致检查peer 2.2.2.2 enablepeer 3.3.3.3 enable
#
配置示例:maximum load-balancing {ibgp | ebgp | number(1-8)}
-
ibgp :表示对于IBGP学习到的路由进行负载分担 -
ebgp :表示对于EBGP学习到的路由进行负载分担,如果不设置ibgp或者ebgp则表示全局负载均衡 -
number:默认是1,默认不进行负载分担,最大数量视设备性能型号而定
查看负载分担后的AR1路由表:
发现BGP路由表依然只有一条最优路由,但是在IP全局路由表出现了两条,而且FIB转发表也是两条路由,这样就实现了IBGP路由的负载分担。
二、EBGP路由负载分担
分别配置好IP地址,不同AS间配置EBGP邻居,在AR1上通过network通过Lookback 0的网段192.168.1.0/24.
在AR2上查看邻居与路由。
在AR2配置路由负载分担:
bgp 100peer 10.1.23.3 as-number 200 peer 10.1.24.4 as-number 200 #ipv4-family unicastundo synchronizationmaximum load-balancing ebgp 2 # 配置针对EBGP路由的负载分担为2peer 10.1.23.3 enablepeer 10.1.24.4 enable# 这里为什么不需要忽略AS属性一致呢,因为AR2通过AR3和AR4的AS-Path路径都为200 300 。
最后查看路由表:
总结:通过配置BGP路由分担可以实现流量负载均衡,减少网络拥塞。通过使用load-balancing as-path-ignore
忽略AS_Path路径不一致。通过maximum load-balancing {ibgp | ebgp | number(1-8)}
配置负载分担。最终效果在BGP路由表还是优选一条,但是在全局路由表会有两条负载分担的等价路由。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布