圈内最早的公益公众号,本号已认证!学网络关注我一个就够了!(关注近5w+) 老规矩,先做个小回顾,汇总一下,目前龙哥都与大家分享了哪些BGP选路原则: 2、Local-preference。默认为100,值越高越优选。3、优选本地生成路由(0.0.0.0)。手工聚合>自动聚合>network>import5、优选Origin类型(i>e>?) 本期与大家分享的是第6条BGP路由优选原则:MED值 3、针对不同相邻的AS设置的MED,仅在两个相邻的AS之间传递MED,收到MED的AS一方,不会再传给任何其他的AS。 4、掌握compare-different-as-med命令的含义、场景。3、启动设备,配置好设备名、router-id,每个设备直连IP信息。4、配置IGP路由,这里我配OSPF,AS之间理论上使用静态路由也可以,这里我统一都跑OSPF,都在area 0,不影响本次实验。 根据思路进行配置,设备名、router-id、直连接口ip、loopbackip、IGP路由协议(OSPF),如果还有不会的同学,可以参考往期的,也可以点击阅读原文,下载我配置文件。这里,我以R7路由器为例,我们先看看R7的bgp路由信息: 为空,正常,因为我们还没宣告任何bgp路由。 然后我在R7创建loopback 70,ip地址为70.70.70.70/24 ,然后network到bgp中,再来查看一下R7的bgp路由信息: 我们可以看到bgp路由信息了,同时也看到了MED=0; 由此,我们明白了: MED默认值为0 我们分别先看一下R4、R5的bgp路由信息:(目的是与待会进行对比)
均没有bgp路由,毕竟我们都没有宣告任何路由信息,当然肯定没有了,是吧! 我们在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内传播。 在AS 200内的R4查看 AS300发过来的BGP路由信息:
由此可知,R4收到两条bgp路由,分别是R5、R6发送过来的,优选R5。因为是R5的router id比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。 现在,我们来把拓扑图变形一下,把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值大的。我们来看看优选原因: 缺省情况下,不允许比较来自不同AS邻居 相同路由信息的MED值。 但可以使用命令:compare-different-as-med 来允许比较来自不同的AS邻居路由的MED值。但注意了,除非能够确认不同AS采用了同样的IGP和路由选择方式,否则不要使用此命令。
|