Technorati 标签: CCIE, CCNP, BGP, 实验, AS-path

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

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

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

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

1 HIGHEST WEIGHT--cisco私有属性

2 HIGHEST LOCAL PRERENCE -----公认可选

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有所认识和故障排查,这里一定是要掌握而不是了解)选路原则。

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

再来看看BGP的选路原则:

1、 优先选取具有最大权重(weight)值的路径,权重是Cisco专有属性。

2、 如果权重值相同,优先选取具有最高本地优先级的路由。

3、 如果本地优先级相同,优先选取本地路由(下一跳为0.0.0.0)上的BGP路由。

4、 如果本地优先级相同,并且没有源自本路由器的路由,优先选取具有最短AS路径的路由。

5、 如果具有相同的AS路径长度,优先选取具有最低源代码(IBGP<EBGP<INCOMPLETE)的路由。

6、 如果起源代码相同,优先选取具有最低MED值的路径。

7、 如果MED都相同,在EBGP路由和联盟EBGP路由中,首选EBGP路由,在联盟EBGP路由和IBGP路由中,首选联盟EBGP路由。

8、 如果前面所有属性都相同,优先选取离IGP邻居最近的路径。

9、 如果内部路径也相同,优先选取最低BGP路由器ID的路径。

AS-PATH属性详解

概念

AS-PATH是公认必遵属性该属性用一串AS号来描述去往的指定目的地AS间路径或路由BGP speaker发气一条路由将在AS_Path中增加自己的AS号。也就是说,这条路由每经过一个AS区域,就会加上一个AS号,用来标示路径的优先级。

As号叠加得越多,说明经过的AS越多,那么这个路由的优先级也越低。

相反,经过的AS越少,那么说明路由越优先.

而且AS-Path还可以防止BGP的环路。

工作原理比较简单,如果某台BGP路由器从其外部对等体接收到的某条路由的AS-Path中包含已有的自己的AS号,那么该路由器就知道该路由出现了环路,因为需要丢包处理。

其实在真实的网络环境中,不一定AS号越少的链路质量越高。而AS-PATH这个功能又是根据AS号来判断路由的优先的,AS号越少越优先。那么这个时候我们可能会用到AS-path的一个功能,来增加AS号的长度,从而实现选路的功能:

在这个图中,本来左边的路径是:500,200,100,右边的路径是300,100,现在在右边的路径上面多加几个相同的AS号,最后右边的路径就变成了:300,100,100,100,比左边路径的AS号要多。最后左边的路径为主要工作路径。

总结一下,这里AS-path一共有三个相关知识点:

1,一个路由的AS号附加得越多,路由的优先级越低。

2,AS-path属性可以防止环路.

3, 可以修改AS的附加称为path-prepending.

在这里有两个东西可以验证分别是132可以顺带看一下。

首先来验证总结一:

1,一个路由的AS号附加得越多,路由的优先级越低。

在这个拓扑图中,R1,有一个loopback接口,1.1.1.1/32,将该loopback network进bgp 100进程中,然后最终R3会从R1学到这条路由,也会从R2这个EBGP邻居学到这个路由。

这个时候,在R3上面,这两条路由的信息是这样的:

原则二:

AS-path属性可以预防环路。

这个特性其实很简单,这里就不做实验验证了。其实就是如果有一条AS-path属性为:100,200,300,400,100

如果发现了路径中有两个一样的属性那么就认为已经有了环路.

原则三:

可以修改AS的附加,称为path-prepending.

依然用这个拓扑图:

从R3上面学到的2条bgp路由关于1.1.1.1的,一个的AS path=100(R1-R3) ,另外一个AS=100,200(R1-R2-R3)

这个时候优的路由是R1-R3.

实际上这里可以通过欺骗的手段让bgp选路选择比较远的AS path=100(R1-R3).

现在就要让R3根据AS-path属性舍近求远。选择路径R1-R2-R3到达1.1.1.1

在R3上面进行配置:

注意我将route-map setAS-PATH 用到了13.0.0.1的入方向,之后clear ip bgp * soft以后,最后结果终于如我们所愿,路由bgp已经舍近求远了。

总结,AS-path属性比较简单,关于比较原则:

AS号少的路由为最优路由.可以通过命令set as-path prepend命令在原来有的as号前再进行人为的添加让这条路有劣于其他的路由。