路由器对BGP路由的处理过程
l 策略机:操纵路径属性,对属性置值。通过影响路由表的生成,从而影响用户数据的转发
Ø 输入策略机影响自己及下游路由器
Ø 输出策略机不影响自己,只影响下游路由器
l 路由决策:根据BGP路由选择规则选择最佳路径,可用且最优的路由将加载到IP路由表
BGP路由选路原则
l 当到达同一个目的网络存在多条BGP路由时,BGP通过以下顺序进行路由优选
前提条件:路由下一跳不可达或没有解决同步问题,不能参与路由优选
1. 优选Weight值较高的路由(锐捷默认32768,且不可修改)
2. 优选Local Preference较大的路由
3. 优选AS-Path长度较短的路由
4. 依次选择Origin属性为IGP、EGP、INCOMPLETE类型的路由
5. 优选MED较小的路由
6. 优选EBGP路由,然后联盟EBGP路由,最后IBGP路由
7. 优选最近的IGP邻居通告的路由
8. 执行等价负载均衡
9. 优选BGP Router-ID小的Peer通告的路由
10. 优选Cluster-list长度较短的路由
11. 优选较小Peer地址路由器通告的路由
Next hop不可达的路由不参与路由优选
l 跨AS传递BGP路由时,Next hop默认是EBGP更新源的地址,并且路由携带的这个next hop在 AS内部传递时默认也不会改变。因此AS内部路由表查不到这个地址的路由,导致BGP路由表中。此路由下一跳不可达,因此不能参与路由优选。
l 需要在边界路由(ASBR),对内部路由配置“next-hop-self”
BGP路由选路原则详解
第一条:Weight属性
l 比较原则及配置注意事项:
Ø Cisco私有,锐捷默认32768,且不可修改;
Ø 本地有效,无法传递给其他BGP Peer,携带的Weight值越大,则该路由越优先。本地始发路由的默认值是32768,从其他BGP Peer学习过来的路由的默认值是0。
第二条:Local Preference属性
l 比较原则及配置注意事项:
Ø 值越大,越优先
Ø 默认情况下,本地始发的路由的LP为100,从IBGP Peer接收的路由的LP为100.
Ø Local Preference属性只能在IBGP Peer之间传递,不能在EBGP Peer之间传递,如果在EBGP Peer之间收到的路由的路径属性中携带了Local Preference,则会触发Notifacation报文,造成会话中断
Ø 通常用于自治系统内的数据分流
第三条:AS-Path长度
l 比较原则及配置注意事项
Ø 优选长度小的AS-Path列表
Ø 其他AS-Path的注意事项:
p 可以通过对EBGP Peer使用IN/OUT方向的Route-map,使用set as-path prepend命令来添加AS号;
p Route-map in 将AS号附加在原始AS号的左侧;
p Route-map out 将AS号附加在原始AS号的右侧;
Ø 当向EBGP Peer 通告路由时,将自己的AS号加在AS-Path列表的最左端
Ø 当向IBGP Peer 通告路由时,AS-Path保持不变
Ø 可以在BGP进程下使用bgp bestpath as-path ignore命令来跳过AS-Path的长度比较
第四条:Origin属性
l 比较原则及配置注意事项
Ø 三种不同的Origin属性的优先顺序:IGP>EGP>incomplete
Ø Origin属性会一直在BGP路由中携带
Ø Origin属性配置方法:
p 将IGP路由引入BGP时关联Route-map进行设置
• 默认情况下,network方式产生的BGP路由的Origin属性为IGP,而redistribute方式产生的BGP路由的Origin属性为“?”
p 对BGP Peer应用IN/OUT方向的Route-map进行设置
Ø 很少使用设置Origin属性作为BGP路由选路策略
第五条:MED属性
l MED设置方法:
Ø 将IGP路由引入BGP时关联Route-map进行设置
Ø 对BGP Peer应用IN/OUT方向的Route-map进行设置
Ø 非Route-map(自动)方式:
p 使用network或redistribute方式将IGP路由引入BGP时, MED将继承IGP路由的Metric(直联路由的Metric为0)
p 使用aggregate-address方式引入路由,则MED为空(锐捷将空白的MED以0填充)
l MED属性在比较时,优选MED值较小的BGP路由
l 将一条BGP路由通告给EBGP Peer时;
Ø 如果该BGP路由是本地始发(network或redistribute)的,则携带相应的MED值发送给EBGP Peer;
Ø 如果该BGP路由是其他BGP Peer传递的,则将该路由通告给EBGP Peer时,不携带MED属性(不对EBGP Peer使用Route-map时,锐捷会将空白的MED以0填充);
l 将一条BGP路由通告给IBGP Peer时
Ø 如果该BGP路由携带MED值,则携带MED值发送给IBGP 邻居;
Ø 如果该BGP路由不携带MED值,则将MED设置为0,通告给IBGP邻居;
l 默认情况下,只能比较来自同一个AS路由的MED值,可以使用bgp always-compare-med命令修改这一特性;
l 其他MED相关配置命令(BGP进程下):
Ø bgp always-compare-med //如果接收到来自不同AS的路由,默认情况下是不会比较其MED值的,只有来自同一个AS的路由才会比较其MED值。使用这条命令可以使得针对来自不同AS的同一条路由,总是比较其携带的MED值
Ø bgp deterministic-med //使用该命令后,BGP表里的条目会以AS为组进行排列,先从同一个AS内的所有路径中选出一条最优,然后再根据BGP选路原则进行优选。
Ø bgp bestpath med missing-as-worst //如果从邻居收到一条BGP路由,没有携带MED值,锐捷默认将它置为0,也可以使用这条命令将其置为4294967294(32位全1,意味着这条路由在通过MED优选时会被淘汰)
Ø bgp bestpath med confed //只能用来比较AS路径属性中含有AS联盟序列的路由(联邦内子AS间路由)进行MED值的比较
l MED为BGP选路策略中经常使用的一个路径属性
第六条:优选EBGP路由,然后比较联盟EBGP路由,最后IBGP路由
l 比较原则
Ø 当使用前面六条原则仍无法决定出路由的优先顺序时,会根据EBGP路由>联盟EBGP路由>IBGP路由这条原则进行优选
Ø 该原则不会做为BGP路由选路策略
第七条:优选最近的IGP邻居通告的路由
l 比较原则
Ø 比较peer的更新源地址在本地IGP路由表中的Metric值,越小越优先
p 注:该值与路由条目的MED没有任何关系
Ø 几乎很少使用该原则作为BGP路由选路策略
第八条:执行等价负载均衡
l 等价负载均衡说明:
Ø 前面的8条选路原则都无法优选出最优路由时,在BGP进程下面配置maximum-paths [ibgp/ebgp] n,n的取值为2-32,那么将执行等价负载均衡;
p 关联ibgp关键字,那么会对IBGP路由执行等价负载均衡;
p 关联ebgp关键字,那么会对EBGP路由执行等价负载均衡;
Ø 如果不配置maximum-paths,那么将进行到下一条选路原则。
第九条:优选BGP Router-ID小的Peer通告的路由
l 比较原则
Ø Router-ID越小,越优先
Ø 前8条选路原则已经完成EBGP路由的优选,因此第9-11条选路原则都是针对IBGP路由
第十条:优选Cluster-list长度较短的路由
l 比较原则
Ø 长度越小,越优先
Ø 仅在存在反射器的环境下,才会进行Cluster-list长度的比较,RR在执行路由反射动作时会将自己的Cluster ID添加在Cluster-list中
第十一条:优选较小Peer地址路由器通告的路由
l 比较原则
Ø 配置的邻居地址越低,越优先
Ø 邻居地址是指BGP进程下,使用neighbor命令指定的IP地址
总结
l 首先,路由下一跳不可达或没有解决同步问题,则不能参与路由优选
l 比较Weight属性:值大的优先
l 比较Local Preference属性:值大的优先
l 比较AS_Path属性:AS路径短的优先
l 比较Origin属性:为IGP、EGP和INCOMPLETE类型的路由
l 比较MED属性:值小的优先
l 比较通告路由设备的peer类型:EBGP优于IBGP
l 比较到达Next hop的IGP metric:度量值较小的优先
l 执行等价负载均衡
l 比较通告路由设备的BGP Router ID: Router ID小的优先
l Cluster-list长度
l BGP peer指定地址的大小