Technorati 标签:  BGP, CCNP, 路由, MED, 实验

该文档涉及的命令有:

bgp always-compare-med

bgp bestpath as-path ignore

bgp bestpath med missing-as-worst

3-1 BGP always-compare-med

命令的含义和产生的原因

根据bgp的选路原则我们都知道比较到第六步的时候就是比MED,哪个的MED就走哪条路径。

但是比较med是又限制的。通常情况下,BGP是不会比较接收自不同的自治系统的MED值,也就是说,如果相同的目的路由从对端相同的AS的不同的ASBR传递过来的,那么就会比较MED,否则的话,是不会比较MED而直接跳到第七步:EBGP>IBGP.然后再接着比下去而会忽略MED属性的比较.

用命令注释来解释这个命令就是:

Router(config-bgp)#bgp a?

always-compare-med Allow comparing MED from different AS neighbors//允许比较来自不同AS邻居的MED

下面这个实验来验证了这一特性也说明了命令bgp always-compare-med的用法.

clip_image002

首先通过分析:

这里可以看到,从R2传递到R3的到193.16.1.0/24的路由携带了MED=100,而R4传递到R3的到193.16.1.0/24的路由携带了MED=200.

那么R3上面bgp的数据库至少有2个到R1目的网段为193.16.1.0/24的路由。

在R3上面:

193.16.1.0/24-R2:weight=0,LP=100,next-hop 172.17.1.2(非全0),AS-path=100,200,起源属性=i,MED=100

193.16.1.0/24-R4:weight=0,LP=100,next-hop 10.1.1.2 (非全0),AS-path=100,400,起源属性=i,MED=200

今天要验证的命令就是要说明一个问题,来自不同的AS对于MED这个属性bgp是不会比较也没有可比性的.

如果按照上面的分析结果,对于R3来说最优的路由到达193.16.1.0/24的路由应该是:193.16.1.0/24.

在R3上面的配置为:

clip_image004

但是实际结果呢?

clip_image006

这里对于R3来说,这里并没有选择下一跳为172.17.1.2 携带MED=100的。而是直接开始比较第八个原则,宣告路由器的router-id,哪个小哪个优先。这里可以看到两个邻居的router-id,一个为172.17.1.2,一个为10.1.1.2,系统直接选择了10.1.1.2这个router-id小的作为best路由。

这也就是之前说的为什么不同AS宣告过来的MED是没有可比性的,因为默认bgp就不会去比较不同AS宣告过来的MED,而会忽略这个属性直接比较下一个去。

现在在路由器R3上面配置修改为:

clip_image008

最后清一下bgp *,我们现在可以看到,用了这个命令以后,bgp系统才会开始比较MED属性,并且按照我们的意愿去选择正确的路径:

clip_image010

clip_image012

最后在BGP-4命令与配置手册上还提示到:

如果使用了命令bgp always-compare-med的命令则会比较所有路径的MED如果确需比较所有路径的MED,请再AS中的每一台BGP路由器上配置该命令.按照我的理解这个命令是本地有效的。所以需要在同AS的所有路由事情该命令,否则没有事情的路由器仍然会忽略MED.

3-2 bgp bestpath as-path ignore

命令功能做出最佳路径决策时忽略AS路径(As-path)的属性.

clip_image014

拓扑图依旧用以前的。

在R3上面:

193.16.1.0/24-R2:weight=0,LP=100,next-hop 172.17.1.2(非全0),AS-path=100,200,起源属性=i,MED=200

193.16.1.0/24-R4:weight=0,LP=100,next-hop 10.1.1.2 (非全0),AS-path=600.700.800.100,400,起源属性=i,MED=200

如果是这样的比较,显然应该选择193.16.1.0/24-R2作为最优的路由。

现在先把环境搭建起来,一会再用命令bgp best-path as-path inore来忽略AS-path.

当换件搭建好以后,R2的相关配置为:

clip_image016

R4的配置为:

clip_image018

最后在R3上面,我们可以看到.因为AS-path是比较原则的第4步,而MED是比较原则的第六步,所以AS号少的路由优先.

clip_image020

193.16.1.0/24-R2:weight=0,LP=100,next-hop 172.17.1.2(非全0),AS-path=100,200,起源属性=i,MED=200

193.16.1.0/24-R4:weight=0,LP=100,next-hop 10.1.1.2 (非全0),AS-path=400.600.700.800.100,起源属性=i,MED=100

最终优的路由一定是193.16.1.0/24-R2,因为AS-path的计数器在这里只有2,而下面的有5.

现在修改R3的配置,在R3上面加上命令使路由器忽略比较AS-path的过程:

clip_image022

呵呵,最后我突然发现当前的IOS不支持这个命令,不知道是否已经把这个命令给忽略了。

clip_image024

但是我在迈普的设备找到了这个命令,有空的时候在我们公司自己的产品上验证一下:

clip_image026

这个实验只有以后有机会再进行验证了,各位同学在敲的时候一定要注意版本,呵呵。

3-3 BGP MED missing-as-worst

命令的含义和产生的原因

如果本端从EBGP邻居收到前缀未设置MED值的bgp路由BGP路由器会将该值设置为默认的0但是如果使用了bgp med missing-as-worst以后本地bgp路由器会以4294967294为未设置MED值的前缀附值。

其实我觉得用起来还是比较方便,这样只需要给优先的路由用route-map进行赋值,其他的都由本地路由器来处理.

clip_image028

首先,根据拓扑图,当R3上的配置只是建立2个EBGP邻居的时候,得到的答案应该是这样的:

clip_image030

这个时候从172.17.1.2 R2学来的路由是没有设置任何MED的,所以为空。

当将R3的bgp进程下面加上命令:

clip_image032

再到R3上面来看一下结果:

clip_image034

从R2学来的路由的Metric因为本地收到的时候并没有在MED中看到有任何值,所以加上了最大的MED.

这就是这个命令的用途.