思科Cisco BGP 专题 三)BGP选路原则 回顾:
我们先对上个BGP专题的内容进行简单的回顾,具体详细内容可回看上个专题
1、用loopback环回口建立BGP邻居的方法
2、BGP同步功能(系统默认关闭,现今主要使用mpls技术解决BGP路由黑洞问题)
3、BGP的水平分割(防环路)
4、邻居状态停留在 Idle或active的原因
5、当IBGP路由器A与EBGP互联时,如果路由器A的一个IBGP邻居路由器B收到一个条目,并且这个条目来自于路由器A的EBGP邻居,那么这个条目在路由器B那里显示下一跳地址时会保留EBGP的地址。{ROUTER B——ROUTER A——ROUTER EBGP)}
6、BGP选路规则第一条 weight (权重)
本章概述:
本章专题 主要介绍BGP的选路原则 主要介绍前6条,共13条):
1.prefer highest weight local to router). //优选weight属性高的,cisco私有属性
2.prefer highest local preference global within AS ). //优选本地优先级高的
3.prefer route originated by the local router next hop =0.0.0.0) //更相信自己network 的路由,下一跳为0.0.0.0
4.prefer shortest AS path. //更优选AS-PATH数量短的路由
5.prefer lowest origin code IGP<EGP<incomplete) //比较路由起源,优选起源值更小的路由,默认为i<e<?。也就是说i的起源最小,如果有两条一样的路由条目来自两个方向,一个起源为i,一个起源为?,那么将优选i的路由
6.Prefer lowest MED exchanged between autonomous systems). //优选 MED值更小的路由
下面我们逐条详细介绍。
第一条 权重 (weight) 优选weight属性高的,cisco私有属性 (prefer highest weight )
一、 详述权重:
1 参数本地有效,参数值不能传递。
2 本地条目默认值为32768。收到的条目默认值为0。越大越优。
3 在修改权重值参数时。只有本地in方向有效。
4 IBGP和EBGP都可以使用。
二、通过实验解释说明:
1、模拟环境拓扑:
我们模拟一个IBGP的环境,AS编号100。
IBGP1和IBGP2之间使用10.1.1.0/24网段。IBGP2和IBGP3之间使用20.1.1.0/24网段。
IBGP1 2 3 上分别建立loopback0端口,地址分别为1.1.1.1/32——3.3.3.3/32。
IBGP1和IBGP3上分别建立loopback1端口,都使用地址123.1.1.1/32。
底层使用IGP协议,保证底层互通。各路由器之间使用loopback0接口建立邻居关系。
详细配置过程不再一一列出。可以参考前几章的内容。
配置完成后,我们分别show ip bgp 看一下每个设备的BGP表。
IBGP1:
IBGP2:
收到两个BGP路由条目,去往123.1.1.1
IBGP3:图片对比可以看出:本地宣告的条目权重(weight)参数值为32768,收到的条目weight参数值为0.
2、权重参数值的修改方法
因为参数本地有效,不能传递。只针对于in方向有效。所以我们只能在IBGP2上进行修改。
从IBGP2的IBGP表中我们可以看到 去往123.1.1.1的路径下一条为1.1.1.1,我们通过修改weight值来修改下一条的路径。
具体修改步骤:
1、全局模式下 写一条acl 抓取 123.1.1.1的流量。
2、写一条route-map 将来自123.1.1.1的流量的参数值改为 100.
3、在同一个route-map下 再写一条permit ,放行其他流量。
4、将route-map 挂接在 BGP下。
此时来自3.3.3.3的条目weight值被修改为 100。我们show IBGP2的BGP表进行验证。
可以看到 去往123.1.1.1的路径有1.1.1.1 变为了3.3.3.3。
说明权重值越大越优。
我们是用的IBGP进行的示例。EBGP效果相同。感兴趣的同学可以自己实验尝试验证。
第二条 本地优先级( local preference)优选本地优先级高的
一、详述本地优先级:
1、参数默认数值为100,数值越大越优。
2、在IBGP环境中,修改参数值时in方向和out方向均有效。
3、在EBGP环境中,修改参数值时只针对in方向有效。
4、本地优先级应用环境偏向于IBGP环境。
二、实验演示:
实验环境与权重相同。具体配置不再一一列出。
我们在IBGP-2上show ip bgp 查看BGP表 。可以看到收到的条目,local preference值为100。
修改local preference 数值。在IBGP环境中 in方向out方向均可修改。
1、在in方向上修改,需要在IBGP-2上做route-map。具体思路可参考修改权重的方法。
此实验中,我们将来自3.3.3.3的 条目本地优先级修改为200。
我们show run一下配置。
2、在out方向上修改参数值,需要在IBGP-1或IBGP-3上配置。在BGP下调用时需要写out方向。
此实验中我们在IBGP-1上配置,将发出的的条目本地优先级改为300。
3、修改后,在IBGP-2上show ip bgp 查看验证。
发现local preference 发生了变化。因为300大于200,越大越优,所以去往123.1.1.1时,下一条为1.1.1.1。> 标识表示最优条目。
4、需要注意的是,在EBGP环境中。修改本地优先级参数时。只能针对in方向,即收到的条目进行修改。发出的条目修改本地优先级参数无效。
第三条 优先选用本地宣告的条目,下一跳地址为0.0.0.0
实验环境:
我们将之前的环境中的IBGP-1的AS改为100。IBGP-2的AS改为200。IBGP-3的AS改为300。其他环境与之前相同。
因为在IBGP-1中和IBGP-3中同时宣告了123.1.1.1。故IBGP-1中会有两个条目到达123.1.1.1。
我们在IBGP-1中show ip bgp 会发现去往123.1.1.1的下一跳会优先选择为0.0.0.0的条目。> 表示标识最优的条目。
第四条 比较AS-PATH属性 优选AS-PATH数量少的路由
1、比较as-path时,比较的是数量的多少,而不是数值的大小。
举例:图中 第一条有200,300连个AS。
第二条本地宣告的没有显示AS。优选AS数量少的路径。
2、修改AS-PATH时会累加本地的AS。
3、只能在EBGP邻居之间进行修改。但是无论时IBGP还是EBGP在选路比较时都是生效的。
实验示例:
实验环境:
R1-R5分别建立环回口loopback0,分别使用地址1.1.1.1-5.5.5.5/32
R1-R2之间使用10.1.1.0/24网段,R2-R3之间使用20.1.1.0/24网段。以此类推。
R1和R5上分别建立环回口loopback1,全部使用地址123.1.1.1/32
底层运行eigrp协议,保证底层互通。
R1所在AS为100,R2,R3,R4所在AS为200,R5所在AS为300。
R1和R2之间,R4和R5之间使用物理接口建立邻居关系。R2,R3,R4之间使用环回口建立邻居关系。
BGP邻居建立完成后,在R1和R5上分别将loopback1端口地址123.1.1.1/32宣告进BGP。
底层配置方法不再详细列出。不懂的同学可回看之前的专题。
我们在R3上show ip bgp 查看一下BGP表。发现去往123.1.1.1有两条路径。一个as 值为100,令一个为300。
我们在R3的邻居R2的out方向上修改as-path,或者R3本地的in方向上,看一下会不会生效。
配置在R2上。
再次在 R3上 show ip bgp ,发现R3的BGP表没有发生变化。
说明对于AS-PATH这个选路属性,在IBGP环境中,修改IBGP邻居之间传递的条目的AS-PATH值是无效的。
下面我们在R2的in方向上,也就是EBGP邻居R1的出方向上,进行修改。
R2配置
在R3上show ip bgp 查看 R3的BPG表,发现去往123.1.1.1的路径发生了变化。来自R1的条目的as-path值变为了 100 100 100。
说明在EBGP环境中,EBPG邻居之间修改传递条目的as-path值是有效的。
第五条 比较路由起源,优选起源值更小的路由,默认为i<e<?
i=igp(BGP内部)
e=egp(淘汰不用)
?=incomplete外部引入的路由条目)
解释说明:例如i的起源最小,如果有两条一样的路由条目来自两个方向,一个起源为i,一个起源为?,那么将优选i的路由 。
如下图所示,有两个条目去往123.1.1.1/32,起源为i的优先于 ?。
其中 > 代表最优路径。
在IBGP环境和EBGP环境中,无论是in方向和out方向,均可以被修改。
演示修改方法。实验拓扑与环境与演示权重时候的拓扑相同。
在没有修改起源值时,在IBGP-2上查看BGP表,显示两条路径的起源值均为i。
我们依旧使用写route-map的方法修改条目的起源值。
配置示例:我们在IBGP-2上进行配置,IBGP-2 in方向上做修改(与IBGP-1作为邻居)。
show run IBGP-2
修改完成后,我们再一次查看IBPG-2的BGP表进行验证,发现原先下一跳为1.1.1.1的条目,起源由i变为了?
去往123.1.1.1的路径由1.1.1.1变为了3.3.3.3。
第六条 优选 MED值更小的路由
med即BGP表中的metric值,越小越优先。
在IBGP环境和EBGP环境中都可以修改。
但是在EBGP环境中需要比较metri值时,需要敲入以下命令
实验示例: 实验环境与第五条相同。
我们先看一下IBGP-2上的BPG表。
metric值都为0。
我们修改一下其中一条metric,还是在IBGP-2in方向上修改,修改来自IBGP-1上的流量。依旧使用route-map
show run IBPG-2
修改完后,在IBPG-2上查看BGP表进行验证。发现下一跳为1.1.1.1的条目的metric值由0变为10。
去往123.1.1.1的路径由1.1.1.1变为3.3.3.3。
我们将在下一个BGP专题中继续介绍 其他BGP选路原则。