Technorati 标签: ,,,,

在IGP时代我们都知道,比如说ospf,链路状态协议,在进行路由选择的时候,比的是链路的耗费,哪条链路耗费小则会更优先,如果两个链路耗费是一样的,那么就做负载均衡。

实际上就2个原则成就了ospf---最短路径优先的工作原理。

那如果在BGP中,有多条路由可以到达目的的时候,应当如何进行选择呢?哪一条路径是比较优先的呢?

来看看这11个属性的优先级,加深记忆,最好能熟练的背下来:

1 HIGHEST WEIGHT--cisco私有属性

2 HIGHEST LOCAL PRERENCE -----公认必尊well-known mandatory

3 ROUTE ORIGINATED BY THE ROUTER NEXT HOP=0.0.0.0 * -----公认必尊well-known mandatory

4 SHORTEST AS PATH * -----公认必尊well-known mandatory

5 LOWEST ORIGINATED IGP>EGP>INCOMPLETE * -----公认必尊well-known mandatory

6 LOWEST MED

7 EBGP PATH OVER IBGP PATH

8 PREFER THE PATH THROGH THE CLOSEST IGP NEIGHBOR

9 RREFER OLDEST ROUTER FOR EBGP PATH

10 PREFER THE PATH WITH THE LOWEST NEIGHBOR BGP ROUTER ID

11 BGP LOWEST ROUTER ID

12 MINIMUM CLASTER LIST LENGTH

在bgp中,除了有一大堆原理需要深刻理解以外,选路原则是重中之重。一定需要掌握(要想对bgp有所认识和故障排查,这里一定是要掌握而不是了解)选路原则。

该文档会逐一对每个属性进行验证.力求能达到让我自己在心里有数对这些概念。

Local_Pref属性详解:

Local_pref用来通告路由的优先程度,仅仅在IBGP对等体之间交换不通告给其他的AS.也就是说只在本AS内生效.BGP的路由器通过不同的IBGP对等体得到目的的地址相同但下一跳不同的多条路由的时候(也就是说不同的IBGP邻居通告过来相同的目的路由存在多跳的情况下),cisco中除了weight属性之后就是Local_Pref属性最优先了。Local_Pref属性值和weight一样,越高越优先。

03-BGP属性详解--Local_Pref_路由

从应用场合上线来看看weightLocal_Pref的区别

Local_Prefweight也有所不同weight使用的情况是一个ASBR分别连接两个不同ASASBR.本地路由器作为本AS的唯一出口当存在多条路径的时候在本地设置优先级weight权重权重大得优先。weight只是在本地路由器上有效。

Local_pref只是当一个IBGP路由器从另外两个IBGP邻居那里获得了有相同目的网段的路由以后,如果没有设置weight的话(默认在初始路由器的weight32768,而在其他任何路由器的weight都为0),那么这个时候就看这两条路由送过来时带的Local_Pref的属性值,哪个大,那么哪个路由优先,从而写到路由表中作为最优路由,还有一个次优路由在数据库中,等主用出现问题的时候,次优路由生效。

Local_Pref总结

只用于IBGP邻居之间只是AS内部。

默认100.可选范围是0-4294967295.

show ip bgp. 可以看得到LocPrf.

只在IBGP peer间进行通告.告知如何离开本地的AS.是走A离开好呢,还是走B离开好呢?

这个值越大越高.越高越优先.BGP不是根据带宽来的,而是根据策略来的。

这是一个出站策略。

还有一点需要提出,标准访问列表,既可以对路由层面的前缀进行匹配,也可以匹配数据转发层面的.

而扩展访问列表只能匹配上数据转发层面的数据包,要想对路由层面的路由前缀进行匹配需要用标准访问控制列表。

还有在博客http://361531.blog.51cto.com/351531/701272曾经提到weight是一个入站策略所以在配置的时候如是是用route-map的话应该用入方向

neigbor x.x.x.x route-map xxx in

这里用route-map的话一定是对IBGPout方向应用才会生效。因为Local_pref就是一个出站策略。

下面用实验来验证一下LP的原理,上图:

03-BGP属性详解--Local_Pref_路由_02

R2在AS 65520中,R1/R3/R4在AS 65500中,R3会通过R1还有R4这两个ASBR同时学到双份的50.50.50.50/100.100.100.100/150.150.150.150/200.200.200.200,最后要达到的效果就是,在R3上面,从R1学到的50.50.50.50和100.100.100.100的Local_pref=300.而在R3上面从R4学到的150.150.150.150和200.200.200.200的LP=300.那么最后达到的效果就是,50和100走的路径是R2-R1-R3, 150和200走的路径是R2-R4-R3.

R1的配置:

03-BGP属性详解--Local_Pref_CCNP_03

R4上的配置为:

03-BGP属性详解--Local_Pref_CCIE_04

最后在R3上面我们可以验证一下是否四条路由走两条路径,并且需要核查Local_pref.

03-BGP属性详解--Local_Pref_CCIE_05

这里我们已经可以看到通过R1和R4通告过来的路由都分别打上了不同的Local_pref值,越大越优先。

所以路由两条的下一跳是R1,还有两条的下一跳是R4.

最后我们在R3上面进行一下traceroute,最后验证一下路由的走向:

03-BGP属性详解--Local_Pref_CCIE_06