网
工
圈
网络工程师阿龙 圈内最早的公益公众号,本号已认证!学网络关注我一个就够了!(关注近5w+)关注 听说 99%的 网工都来这里充电吖老规矩,先做个小回顾,汇总一下,目前龙哥都与大家分享了哪些BGP选路原则:
1、首选值(华为特性)。默认为0,值越高越优选。 2、Local-preference。默认为100,值越高越优选。 3、优选本地生成路由(0.0.0.0)。手工聚合>自动聚合>network>import 4、优选最短的AS路径(AS_Path)。5、优选Origin类型(i>e>?)
本期与大家分享的是第6条BGP路由优选原则:MED值
阅读完本篇,您将收益如下 1、MED默认值为0; 2、本地产生的MED,仅在本AS内传递; 3、针对不同相邻的AS设置的MED,仅在两个相邻的AS之间传递MED,收到MED的AS一方,不会再传给任何其他的AS。 4、掌握compare-different-as-med命令的含义、场景。 思路 1、搭好拓扑图,连接好线; 2、标注IP信息、router id; 3、启动设备,配置好设备名、router-id,每个设备直连IP信息。 4、配置IGP路由,这里我配OSPF,AS之间理论上使用静态路由也可以,这里我统一都跑OSPF,都在area 0,不影响本次实验。 5、配置BGP,使得:- R1、R2分别于R3形成ebgp邻居关系;
- R3与R4形成ibgp邻居关系;
- R4分别与R5、R6形成ebgp邻居关系;
- R7分别与R5、R6、R8形成ibgp邻居关系。
这里,我以R7路由器为例,我们先看看R7的bgp路由信息:
为空,正常,因为我们还没宣告任何bgp路由。
然后我在R7创建loopback 70,ip地址为70.70.70.70/24 ,然后network到bgp中,再来查看一下R7的bgp路由信息:
我们可以看到bgp路由信息了,同时也看到了MED=0;
由此,我们明白了:
MED默认值为0
2 本地生成的MED我们分别先看一下R4、R5的bgp路由信息:(目的是与待会进行对比)
均没有bgp路由,毕竟我们都没有宣告任何路由信息,当然肯定没有了,是吧! 现在,我打算在R7引入OSPF路由: 我们在R7查看bgp路由,会有一列MED的信息,这些数值是怎么来的? 这些就是OSPF路由协议的cost值,不信?我们可以看看OSPF的路由信息, 以3.3.3.3为例,看看OSPF的cost是否为3?现在,我们在R4、R5看看bgp路由信息,看看是否有携带MED?
由图可知,R4收到R5、R6发过来的BGP路由是没有携带MED值的,为空。 R5上查看,收到本AS内R7过来的bgp路由是有携带MED值的。 我们可以顺便在查看一下R6、R8的bgp路由信息: 同样,R6、R8收到本AS内R7发过来的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条都无法pk出来,才可以,是吧! 关于MED值,其实我个人理解,就是Cost值的意思,换了个名字而已。 你可以理解:你在深圳,去往北京,可通过先去上海再转机到北京,费用2500元;也可以先去武汉再转机到北京,费用1500元。这是你当然会选择费用1500元的这个方案了是吧!所以,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值较小的了。 说明: 缺省情况下,不允许比较来自不同AS邻居 相同路由信息的MED值。 但可以使用命令:compare-different-as-med 来允许比较来自不同的AS邻居路由的MED值。 但注意了,除非能够确认不同AS采用了同样的IGP和路由选择方式,否则不要使用此命令。右下角求好看,喵~ 点击