加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

理解BGP选路原则中的Med属性

(2015-01-04 16:17:08)
标签:

bgp选路

med

选路原则

分类: 路由交换

Med作为BGP众多属性中的一个,用以通知对端AS的设备当存在多个路径可以进入本AS的时候,应该优选选择哪条路径。在BGP中,有其他的属性,诸如weight. local preference, originate route AS path,如果以上属性能够选出最佳路径,那么Med将不会被考虑。也就是说,当其他属性一致的情况下,Med才会被考虑,并且选择Med小的路径作为最佳路径。

先通过实验验证MED属性是如何进行传递的。

实验1

l  BGP路由器将携带MED属性的路由,传递给IBGP邻居的时候,MED属性不会丢失

l  BGP路由器将从IBGP邻居学习过来的携带MED属性的路由,传递给EBGP邻居的时候,原本的MED属性会丢失。

http://s14/mw690/002GUXAWgy6OUVK7Ulf8d&690

R1的配置

router bgp 12

 no synchronization

 bgp router-id 1.1.1.1

 bgp log-neighbor-changes

 network 1.1.1.0 mask 255.255.255.0 route-map MED

 neighbor 12.1.1.2 remote-as 12

 no auto-summary

!

access-list 1 permit 1.1.1.0

!

route-map MED permit 10

 match ip address 1

 set metric 100

 

R2的配置

router bgp 12

 no synchronization

 bgp router-id 2.2.2.2

 bgp log-neighbor-changes

 neighbor 12.1.1.1 remote-as 12

 neighbor 23.1.1.3 remote-as 3

 no auto-summary

 

R3的配置

router bgp 3

 no synchronization

 bgp router-id 3.3.3.3

 bgp log-neighbor-changes

 neighbor 23.1.1.2 remote-as 12

 no auto-summary

 

 

验证结果:

http://s9/mw690/002GUXAWgy6OUVMqBxCc8&690

R2上增加一个loopback0,Loopback0 networkBGP,其MED值设置成200.

R2的配置

access-list 1 permit 2.2.2.0

!

route-map MED permit 10

 match ip address 1

 set metric 200

 

router bgp 12

 

 network 2.2.2.0 mask 255.255.255.0 route-map MED

http://s1/mw690/002GUXAWgy6OUVO0YBaf0&690

由此得出:如果将本地通告的一条路由传递给EBGP邻居的时候,其MED值会被传递。

 

总结得出一下结论:

l  本地在将一条BGP路由通告给EBGP Peer时,是否携带MED,需要根据以下条件进行判断(不对EBGP Peer使用Route-map的情况下)

        如果该BGP路由是本地始发的,则携带MED值发送给EBGP Peer (如果MED为空,则设置为0)

        如果该BGP路由是从其他BGP Peer学习过来的,那么将该路由通告给EBGP Peer时不携带MED

l  本地在将一条BGP路由通告给IBGP Peer时,一定会携带MED值,如果接收或产生的路由的MED为空,那么在向IBGP Peer通告时,MED设置为0

实验2

 

IGPBGP重分布,会将IGP的度量值作为BGPMED

http://s1/mw690/002GUXAWgy6OUVRjlAsc0&690

R1R2之间运行EIGRP,在R2上将EIGRP路由重分布进BGP

R1配置

router eigrp 88

 network 1.1.1.1 0.0.0.0

 network 12.1.1.1 0.0.0.0

 no auto-summary

 

R2配置

router eigrp 88

 network 12.1.1.2 0.0.0.0

 no auto-summary

!

router bgp 2

 no synchronization

 bgp router-id 2.2.2.2

 bgp log-neighbor-changes

 redistribute eigrp 88

 neighbor 23.1.1.3 remote-as 3

 no auto-summary

 

R3配置

router bgp 3

 no synchronization

 bgp router-id 3.3.3.3

 bgp log-neighbor-changes

 neighbor 23.1.1.2 remote-as 2

 no auto-summary

 

 

观察现象

http://s5/mw690/002GUXAWgy6OUVTYNaQd4&690

http://s15/mw690/002GUXAWgy6OUVUdXrw8e&690

http://s5/mw690/002GUXAWgy6OUVUplPu64&690

实验3:通过MED进行选路

http://s12/mw690/002GUXAWgy6OUVWSmZJ1b&690

通过上图实验,在R3上检查10.10.10.0/24这条路由

http://s3/mw690/002GUXAWgy6OUVYs1Wyf2&690

根据我们前面的2个实验,得出在R3上,从R1传递过来的路由,因为10.10.10.0/24R1始发,所以R1上的MED=0,那么R3上的MED=0。但是从R2上传递过来的就不会有MED属性了。但是根据BGP选路选择,一条有MED属性,一条没有MED,会不会比呢?通过实验来验证。(希望看客看到这里能想起BGP的选路原则)

验证方法,将R1这条路径上的MED值调大,观察现象

 

R1的配置

ip prefix-list net10 seq 5 permit 10.10.10.0/24  //定义一个名字叫net10的前缀列表

!

route-map net10 permit 10    //定义一个名字叫net10route-map

 match ip address prefix-list net10   //调用名字为net10的前缀列表

 set metric 10   //设置MED10

!

route-map net10 permit 20

 

router bgp 12

 

 neighbor 13.1.1.3 route-map net10 out   //调用route-map net10

 

R3上观察结果

http://s5/mw690/002GUXAWgy6OUW1ozT6f4&690

http://s14/mw690/002GUXAWgy6OUW1F901ad&690

R1传递过来的MED=10R2传递过来的依旧没有MED属性。但是基于选路选择可以看出R2传递过来的路由被R3选为Best,由此得出,当从邻居收到一条没有MED属性的路由,则认为MED=0

 

其实对于这个MED属性,IETF小组已有定论。

[Internet工程任务小组(IETF)最近就BGP MED做出的决定是,对于没有MED的路由,将其MED值设置为无穷大,这使得这种路由被选中的可能性最小.运行Cisco IOS软件的BGP路由器的默认行为是,对于没有MED的路由,将其MED值视为0,这使得这种路由被选中的可能性最大.要配置路由器,使之遵循IETF标准,可使用路由器配置命令bgp bestpath med missing-as-worst] 

MED用于向外部邻居指出进入AS的首选路径。当入口有多个时,AS可使用MED来动态地影响其他AS如何选择进入路径。在BGP中,MED是惟一一个可影响数据如何进入AS的属性.

 

 

实验4 bgp deterministic-med bgp always-compare-med 命令对MED的影响

http://s4/mw690/002GUXAWgy6OUW4NJIvf3&690

基于拓扑配置相应的路由器,在R2上观察100.100.100.0/24网段(备注:默认情况下建立邻居的顺序会导致show ip bgp的时候显示的条目顺序也不一样,如何选出best要根据BGP的选路原则来比较)

http://s1/mw690/002GUXAWgy6OUW6Dyw030&690

我们来分析一下,将原有的show结果做个简单的示意,weightLocPrfAS-pathorigin都一致。

关于100.100.100.0/24的路由信息的示意条目,假如在BGP表里是如此排列顺序。

条目1AS 500  MED 200  internal  router-id 1.1.1.1

条目2AS 500  MED 500  external  router-id 3.3.3.3

条目3AS 100  MED 100  external  router-id 4.4.4.4

Case1bgp deterministic-med bgp always-compare-med都禁用

首先条目1和条目2进行比较,因为来自相同的AS MED比较,条目1胜出,然后条目1和条目3比较,不同AS,不比较MED,条目3external,条目3胜出.

Case2: bgp deterministic-med禁用,bgp always-compare-med启用

首先条目1和条目2进行比较,因为来自相同的AS,条目1胜出,接着条目1和条目3比较,条目3MED小,条目3胜出。

Case3: bgp deterministic-med启用,bgp always-compare-med禁用

bgp deterministic-med启用后,BGP表里的条目就会以AS为组进行排列,先从同一个AS内的所有路径中选出一条最优,然后再根据BGP选路原则进行best选路。条目1和条目2都来自AS 500,先进行比较,得出条目1胜出。来自AS 100的只有条目3,条目3胜出,然后条目1和条目3比较,bgp always-compare-med禁用,MED不比较,条目3胜出。

Case4bgp deterministic-med启用,bgp always-compare-med启用

条目1和条目2都来自AS 500,先进行比较,得出条目1胜出。来自AS 100的只有条目3,条目3胜出,然后条目1和条目3比较,bgp always-compare-med启用,条目3MED小,条目3胜出。

 

补充资料:

         只有两条路径来自于同一个AS时,才进行MED的比较。联盟子AS将被忽略。换句话说,就是多条路径的AS_SEQUENCE中的第一个AS相同时,才比较MED。任何AS_CONFED_SEQUENCE都将被忽略        

如果bgp always-compare-med被激活,将对所有路径进行MED比较。这个选项需要在整个AS中激活,否则可能出现路由环路        

如果bgp bestpath med-confed被激活,将在仅由AS_CONFED_SEQUENCE(由本地联盟产生的路径)组成的所有路径之间比较MED        

从邻居收到的MED值为4294967295的路径在插入BGP表之前,要将值改为4294967294        

 

对于收到的没有MED值的路径,除非bgp bestpath missing-as-worst命令被激活,否则都要分配一个MED0.在激活该命令的情况下,路径将赋予MED4294947294

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有