第六条BGP路由优选原则:MED值的结论
1、MED默认值为0;
2、本地产生的MED,仅在本AS内传递;
3、针对不同相邻的AS设置的MED,仅在两个相邻的AS之间传递MED,收到MED的AS一方,不会再传给任何其他的AS。
4、掌握compare-different-as-med命令的含义、场景。
一、拓扑图如下,相关配置:
R1、R2分别于R3形成ebgp邻居关系;R3与R4形成ibgp邻居关系;R4分别与R5、R6形成ebgp邻居关系;R7分别与R5、R6形成ibgp邻居关系。

1、MED的默认值
在R7创建loopback 70,ip地址为70.70.70.70/24 ,然后network到bgp中,再来查看一下R7的bgp路由信息:

我们可以看到bgp路由信息了,同时也看到了MED=0;由此,我们明白了:MED默认值为0
2、本地生成的MED
在R7引入OSPF路由:

在R7查看bgp路由,会有一列MED的信息,这些数值是怎么来的呢?
这些就是OSPF路由协议的cost值,我们可以看看OSPF的路由信息:

现在,我们在R4、R5看看bgp路由信息,看看是否有携带MED值信息?


R5、R6上查看,收到本AS内R7过来的bgp路由是有携带MED值的。
而R4收到R5、R6发过来的BGP路由是没有携带MED值的,为空。
由此,我们明白了:本地生成的MED,仅在本AS内传播。
3、相邻AS之间的MED
在AS 200内的R4查看 AS300发过来的BGP路由信息:

由此可知,R4收到两条bgp路由,分别是R5、R6发送过来的,优选R5。因为是R5的router id比R6小。

现在我们可以通过MED值来改变R4优选R6了。
要让R4使用MED值来选路,前提是前面5条都无法比较出来。
关于MED值,其实我个人理解,就是Cost值的意思,换了个名字而已。
你可以理解:你在深圳,去往北京,可通过先去上海再转机到北京,费用200元;也可以先去武汉再转机到北京,费用100元。这是你当然会选择费用100元的这个方案了是吧!所以,MED值越小越优选。
现在我们把R5的MED值改大,改为100,R6的MED值设置50,这样就可以优选R6了。


现在,我们在R4可以看到优选R6了:

R4没有选R5发过来的bgp路由原因是:没有更优的MED值。

我们在R4的G0/0/1抓包一下:
开启抓包后,可以在R4刷新一下BGP路由信息,这样R5就会立即发送一份bgp路由信息,这样我们才可以抓到相关信息:


现在,我们在R3、R1上看看关于70.70.70.0/24的bgp路由信息:


从上图可知,AS 200内的R3收到R4的bgp路由携带了MED值,而AS 100的R1、R2没有携带MED值了。
由此,我们明白了:针对不同相邻的AS设置的MED,仅在两个相邻的AS之间传递MED,收到MED的AS一方,不会再传给任何其他的AS。
4、来自不同AS间的MED值
现在,我们来把拓扑图变形一下,把R2归属到AS 400中

然后我们分部在R1、R2创建相同的20.20.20.20/24的loopback接口,然后也宣告到bgp中。
在R1传给R3 BGP路由 设置MED 值100,R2传给R3 BGP路由 设置MED值 50。
现在,我们来R3查看一下关于20.20.20.0的bgp路由:

我们会很奇怪发现,R3居然优选MED值大的。我们来看看优选原因:

原因竟然是没有更优的Router id,这说明跳过了MED值的比较了。
可以在R3执行如下命令让其不跳过了MED值的比较:


现在就优选med值较小的了。
说明:
缺省情况下,不允许比较来自不同AS邻居 相同路由信息的MED值。
但可以使用命令:compare-different-as-med 来允许比较来自不同的AS邻居路由的MED值。
但注意了,除非能够确认不同AS采用了同样的IGP和路由选择方式,否则不要使用此命令。