BGP路径选择-MED
一,原理概述
- 当一台BGP路由器中存在许多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由。
- BGP路由属性的比较顺序为Preferred Value属性,Local Preference属性,路由生成方式,AS_Path属性,Origin属性,MED属性,BGP对等体类型等。
- MED也称为多出口鉴别器,它是一个4字节的整数,取值范围为0~4294967295.缺省情况下,MED的值为0,但通过命令 default med value 可对其进行修改。
- MED值小越优先,常被称为Cost。MED的作用是控制邻居AS的流量从哪个入口进入到AS中 。
- 缺省情况下,去往同一目标网络的多条路由来自同一个邻居AS时,BGP才会比较这些MED值,但是,配置命令 compare-different-as-med后,则会比较来自不同邻居AS的目标网络相同的BGP路由的MED值。
- 注意,MED只会影响相邻两个AS,收到MED属性的AS不会把此属性再继续传递给别的AS。
实验注意事项:
- BGP邻居关系状态为Established表示已建立
- MED属性:类似cost,当某个AS有多个入口时,可以用MED属性来帮助其外部的AS选择一个较好的入口路径。一条路由的MED值越小,其优先级越高,默认值0。
二,实验(对着书来的)
(一)实验目的
- MED属性对BGP路径选择的影响
- 修改MED的方法
- 通过修改MED值实现流量分担的方法
(二)实验内容
(三)实验拓扑
(四)实验步骤
1,基本配置
2,配置BGP路由协议
[R1]bgp 100
[R1-bgp]router-id 10.0.1.1
[R1-bgp]peer 10.0.12.2 as-number 200
[R1-bgp]peer 10.0.13.3 as-number 200
[R1-bgp]peer 10.0.14.4 as-number 300
[R1-bgp]network 172.16.1.0 255.255.255.0
[R1-bgp]network 172.16.2.0 24
[R1-bgp]network 192.168.1.0 24
[R1-bgp]network 10.0.1.1 32
[R2]bgp 200
[R2-bgp]router-id 10.0.2.2
[R2-bgp]peer 10.0.12.1 as-number 100
[R2-bgp]peer 10.0.23.3 as-number 200
[R2-bgp]peer 10.0.23.3 next-hop-local
[R2-bgp]peer 10.0.25.5 as-number 400
[R2-bgp]network 10.0.2.2 32
[R3]bgp 200
[R3-bgp]router-id 10.0.3.3
[R3-bgp]peer 10.0.13.1 as-number 100
[R3-bgp]peer 10.0.23.2 as-number 200
[R3-bgp]peer 10.0.23.2 next-hop-local
[R3-bgp]peer 10.0.35.5 as-number 400
[R3-bgp]network 10.0.3.3 32
[R4]bgp 300
[R4-bgp]router-id 10.0.4.4
[R4-bgp]peer 10.0.14.1 as-number 100
[R4-bgp]peer 10.0.45.5 as-number 400
[R4-bgp]network 10.0.4.4 32
[R5]bgp 400
[R5-bgp]router-id 10.0.5.5
[R5-bgp]peer 10.0.25.2 as-number 200
[R5-bgp]peer 10.0.35.3 as-number 200
[R5-bgp]peer 10.0.45.4 as-number 300
[R5-bgp]network 10.0.5.5 32
查看BGP邻居,若R1,R2,R3,R4,R5 上面的数量都是3个,都为Established状态,就表示BGP邻居建立成功。
再查看BGP路由表,哄框内为去往连接的三个网络的路径条目
可以看到:
- R2,R3,R4,R5上都接收到了R1的四个网段的路由信息。
- 通过IBGP和EBGP邻居接收到的路由条目以及路由器自身的BGP路由条目,他们的MED都为0.
- 若接收到的路由条目经过了一个AS进行中转,MED会丢失,变为空。(概念:MED只会影响相邻两个AS,收到MED属性的AS不会把此属性再继续传递给别的AS。)
- 在BGP选择最佳路径时,MED值为空就表示值为0.
3,控制来自同一AS的数据流量的最佳路径选择
根据BGP选路机制中EBGP优于IBGP路由的原则,则R2去往R1的loopback通过R1的G0/0/2口作为进入AS100的入口;R3去往R1的loopback通过R1的G0/0/0口作为进入AS100的入口;使用tracert命令进行验证
可以看到,R2去往172.16.1.1和172.16.2.1的下一跳为10.0.12.1(R1的G0/0/2口),R3去往172.16.1.1和172.16.2.1的下一跳为10.0.13.1(R1的G0/0/0口)
现在AS100的管理员要求AS200访问172.16.1.0 24网络的流量从R1的G0/0/2口进入AS100,访问172.16.2.0 24网络流量从R1的G0/0/0接口进入AS100
在R1上使用前缀列表匹配要修改MED值的路由。
[R1]ip ip-prefix 1 permit 172.16.1.0 24
[R1]ip ip-prefix 2 permit 172.16.2.0 24
在R1上创建Route-Policy 1,将172.16.1.0 24的MED配置为100,将172.16.2.0 24的MED配置为200.
[R1]route-policy 1 permit node 10
[R1-route-policy]if-match ip-prefix 1
[R1-route-policy]apply cost 100
[R1-route-policy]route-policy 1 permit node 20
[R1-route-policy]if-match ip-prefix 2
[R1-route-policy]apply cost 200
[R1-route-policy]route-policy 1 permit node 30
然后在R1上创建Route-Policy 2,将172.16.2.0 24的MED配置为100,将172.16.1.0 24的MED配置为200
[R1]route-policy 2 permit node 10
[R1-route-policy]if-match ip-prefix 2
[R1-route-policy]apply cost 100
[R1-route-policy]route-policy 2 permit node 20
[R1-route-policy]if-match ip-prefix 1
[R1-route-policy]apply cost 200
[R1-route-policy]route-policy 2 permit node 30
在R1上配置peer 10.0.12.2 route-policy 1 export命令,使得R1在传递路由给R2时调用Route-Policy 1,再配置peer 10.0.13.3 route-policy 2 export命令,使得R1在传递路由给R3时调用Route-Policy 2.
[R1-bgp]peer 10.0.12.2 route-policy 1 export
[R1-bgp]peer 10.0.13.3 route-policy 2 export
配置完成后,在R2和R3上查看BGP路由表
在PrefVal属性,LocPrf属性,路由生成方式,AS_path属性,Origin属性都相同的情况下,BGP会选择最小的MED值的路由作为最优路由。
可以看到,在R2的BGP路由表中,去往172.16.1.0/24的下一跳为10.0.12.1,MED值为100(G0/0/2)进入AS100;去往172.16.2.0/24的下一跳为10.0.13.1,选择了R1的G0/0/0口作为进入AS100的入口。
在R2和R3上,使用Tracert命令验证数据经过路径。
可以看到,AS200访问172.16.1.0/24从G0/0/2口进入,172.16.2.0/24从G0/0/0口进入AS100的。满足需求
查看R2,R3,R5上关于172.16.1.0的BGP路有详细信息
可以看到,R2,R3去往172.16.1.0/24的路由携带了MED属性,R5去往172.16.1.0/24的路由没有MED值
- 说明MED属性只传递给邻居AS,邻居AS不会将收到的MED属性再传递给其他AS。
4,控制来自不同AS且去往同一目标网络的数据流量的最佳路径选择
查看R5的BGP路由表
R5上面有多条去往192.168.1.0的路由。在Preferred Value属性,Local Preference属性,路由生成方式,AS_Path属性,Origin属性的比较无法选出最有路由时,BGP将比较MED属性。但是在默认情况下,BGP不会比较来自不同AS路由的MED属性,所以R5无法通过比较MED属性选择去往192.168.1.0/24的最优路由。为此,BGP会继续比较邻居类型,下一跳的 IGP(内部网关协议)开销值等,最后结果是R5选择了Router-ID最小的路由器R2发布的路由作为最优路由。
现在,需求是AS400去往192.168.1.0/24的网络流量流经R4,然后从R1的G0/0/1口进入AS100,采用的方法是修改R2,R3,R4在传递关于192.168.1.0/24的路由信息给R5时的MED属性值。
在R2上使用前缀列表匹配路由192.168.1.0/24
[R2]ip ip-prefix 1 permit 192.168.1.0 24
在R2上使用Route-Polity将192.168.1.0/24的MED值配置为200
[R2]route-policy 1 permit node 10
[R2-route-policy]if-match ip-prefix 1
[R2-route-policy]apply cost 200
[R2-route-policy]route-policy 1 permit node 20
在R2上配置**peer 10.0.25.5 route-policy 1 export **命令,在传递路由时给R5时调用Route-Policy
[R2]bgp 200
[R2-bgp]peer 10.0.25.5 route-policy 1 export
在R3上也配置
[R3]ip ip-prefix 1 permit 192.168.1.0 24
[R3]route-policy 1 permit node 10
[R3-route-policy]if-match ip-prefix 1
[R3-route-policy]apply cost 200
[R3-route-policy]route-policy 1 permit node 20
在R3上配置**peer 10.0.35.5 route-policy 1 export **命令,在传递路由时给R5时调用Route-Policy
[R3]bgp 200
[R3-bgp]peer 10.0.35.5 route-policy 1 export
在R4上完成类似的配置
[R4]ip ip-prefix 1 permit 192.168.1.0 24
[R4]route-policy 1 permit node 10
[R4-route-policy]if-match ip-prefix 1
[R4-route-policy]apply cost 100
[R4-route-policy]route-policy 1 permit node 20
在R4上配置peer 10.0.45.5 route-policy 1 export命令,在传递路由给R5时调用Route-Policy。
[R4]bgp 300
[R4-bgp]peer 10.0.45.5 route-policy 1 export
在R5上配置compare-different-as-med命令,让R5强制比较来自不同AS且去往同一目标网络的路由的MED属性值。
[R5]bgp 400
[R5-bgp]compare-different-as-med
配置后,再查看R5的BGP路由表
可以看到,R5去往192.168.1.0/24网络的路由的MED值都被修改了,并且选择了MED值最小的路由座位了最优路由。使用tracert命令验证路径。
可以看到,从AS400 到192.168.1.0/24的流量现在经过了R4,并且经由R1的G0/0/1接口进入AS100。
实验表明,BGP路由中的MED属性可以用来控制流量经过哪个入口一个AS,并且MED只传递给邻居AS,邻居AS不会再将接收到的MED传递给其他AS。缺省情况下,对于来自不同AS的前缀相同的路由,BGP不会比较他们的MED属性。