分享

BGP路由优选原则之MED值

 网络工程师阿龙 2022-02-08

  网

  工

  圈

网络工程师阿龙
圈内最早的公益公众号,本号已认证!学网络关注我一个就够了(关注近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,使得:
  1. R1、R2分别于R3形成ebgp邻居关系;
  2. R3与R4形成ibgp邻居关系;
  3. R4分别与R5、R6形成ebgp邻居关系;
  4. R7分别与R5、R6、R8形成ibgp邻居关系。
6、验证
7、得出结论。


拓扑图

基础配置
基础配置主要是:
根据思路进行配置,设备名、router-id、直连接口ip、loopbackip、IGP路由协议(OSPF),如果还有不会的同学,可以参考往期的,也可以点击阅读原文,下载我配置文件。
配置完后,建议检查路由协议的邻居关系是否ok?
关键配置
1
MED的默认值

这里,我以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和路由选择方式,否则不要使用此命令。
右下角求好看,喵~

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多