您的位置:首页 > 其它

BGP的选路原则

2013-03-07 00:03 260 查看
以下为BGP选路原则:

CISCO所定义的选路原则标准是11条,这里加了两条(中文的两条),共13条。所加的两条算不上标准的选路原则,只是做一个补充而已。

Prefer highest weight (local to router).
Prefer highest local preference (global within AS).
Prefer route originated by the local router (next hop = 0.0.0.0).
前三条值越大越优先,第四条起值越小越优先。
Prefer shortest AS path.
Prefer lowest origin code (IGP < EGP < incomplete).
Prefer lowest MED (exchanged between autonomous systems).
Prefer EBGP path over IBGP path.
Prefer the path through the closest IGP neighbor.
如果配置了maximum-path[ibgp]n,如果存在多条等价的路径,会插入多条路径。
Prefer oldest route for EBGP paths.
Prefer the path with the lowest neighbor BGP router ID.
多跳路径的始发路由器ID相同,那么选择CLUSTER_LIST长度短的
Prefer the path with the lowest neighbor IP address.

<Weight>
·CISCO的私有属性
·该属性本地有效。只在本路由器上起作用,不能传递给任何邻居
·weight属性用来影响本路由器自已的选路
·当一个路由器学到两条相同目的地路由,它可以根据WEIGHT值决定哪一条最优
·默认值=0 如果是本地产生的路由weight值为32768 
·在进行比较时,weight值越大越好

例:通过修改Weight来选路





需求:
如上图所示,R3同时从R1和R4学到172.16.1.0的BGP路由,想优选从R1走

解法:
可以在R3上改动weight值

R3:
router bgp 1
Neighber 1.1.1.1 weight 100 //从邻居1.1.1.1传来的所有BGP路由weight值都改为100

也可使用route-map针对某一条路由单独修改
R3:
access-list 1 permit 172.16.1.0

route-map WE
match ip address 1
set weight 8
route-map WE 20 //一定要加上这条空的route-map语句

router bgp 1
neighber 1.1.1.1 route-map WE in

<Local_Preference>越大越好

本地优先级是公认自由决定的属性,它告诉AS中的路由器,哪条路径是离开AS的首选路径。

特点:
·优先级属性用来影响IBGP邻居,告诉自己的IBGP邻居如何离开本AS。
·只能在本AS内传递,不能传给EBGP邻居。
·默认值=100

设置方法:通常可以在AS的边界路由器上设置本地优先级,用以下命令。

R1:
router bgp 1
bgp default local-preference 200 //将本地优先级默认值改为200

这条命令只对EBGP邻居路由器传过来的路由以及本路由器自己宣告的路由有效,对IBGP邻居路由器传过来的路由,不会改变它们的local-preference。如果将一个IBGP邻居传来的路由传给另外一个IBGP邻居,那我必须是RR。
·对"EBGP传过来的路由"\"自己network的路由"\"AS-Path为空的聚合路由"起效,要show明细才能看到。
·对"IBGP传过来的路由"\"联邦中的EBGP传过来的路由"\"AS-Path非空的聚合路由"不起效。

也可以针对邻居传过来的某一条路由单独设置本地优先级:
例如:如果在边界R1上,向R3传172.16.1.0的路由时,将优先级设置为100,在边界R4上向R3传172.16.1.0的路由时,将本地优先级设置为200,则内部路由器R3在选路时,流量会从R4走。




R1:
access-list 1 permit 172.16.1.0

route-map WE
match ip address 1
set local-preference 100
route-map WE 20

router bgp 1
neighbor 3.3.3.3 route-map WE out

R4:
access-list 1 permit 172.16.1.0

route-map WE
match ip address 1
set local-preference 200
route-map WE 20

router bgp 1
neighbor 3.3.3.3 route-map WE out

<AS-Path>shortest AS-path
·BGP路由每经过一个AS,就会将这个AS号加入自已的AS-Path中。
·当一个路由器收到两条相同目的地的路由,它将选择AS路径最短的路由。
·这个属性只能在EBGP邻居之间传路由时进行改动,对IBGP邻居传来的路由改不了
·如果做了路由聚合,并加了as-set参数,聚合后继承明细路由的属性,在大括号里面的as-path在计算长度时,只算一个。在联盟内小括号里面的AS号,在选路时,不计算到as-path长度里面。





例:
如上图所示,要求在R1上从R2收到172.16.1.0路由时,在AS-PATH中加三个AS号,7、8、9。

R1:
access-list 1 permit 172.16.1.0

route-map AS
match ip add 1
set as-path prepend 7 8 9 设置虚拟的AS号

router bgp 1
neighbor 2.2.2.2 route-map AS in

也可以让R2在传出路由给R1的时候加AS号,但要注意,在IN方向加和在OUT方向加as号时,在AS-PATH中的排列顺序有一点区别。

做OUT方向时在原有AS号的后面加
做IN方向时在原有AS号的前面加
·做out方向:出本AS之前预先设定AS号,人为设定的AS号顺序不变。
·做in 方向:进本AS之前预先设定AS号,人为设定的AS号顺序不变。

建议:通常都会这样加set as-path prepend 1 1 1 加自已的AS号,不容易出问题

在as-path prepend的后面还有一个参数,last-as,如:
route-map AS
set as-path prepend last-as ?
<1-10> number of last-AS prepends
意思是将离我最近的AS,将它的AS号在as-path里面再重复出现几次。这个10看起来可以和allowas-in里面的10对应起来。

bgp bestpath as-path ignore(隐藏命令)
这条命令可以使我们在选路时,跳过as-path的选路,直接往下继续选择最优路径。

<origin attribute>
本属性是用来说明BGP路由的起源,是如何成为BGP路由的。总共只有三个值:

IGP (i) 在BGP中用network命令宣告的路由
EGP (e) 从EGP协议重分布进BGP的中币,这个EGP指的是一种早期的协议,现已不用
Incomplete(?) 从IGP协议或者静态路由重分布进BGP的路由

这三个值有大小之分的:
i<e<? //在用来比较时,越小越优

默认每一条BGP路由都有起源属性,也可以用以下方法来改动一条路由的起源属性:

R2:
access-list 1 permit 172.16.1.0

route-map WOLF
match ip add 1
set origin egp
route-map WOLF 20

router bgp 1
nei 1.1.1.1 route-map WOLF out

<MED>Multi-Exit Discriminator多出口鉴别属性

特点:
·当两个AS之间存在多条路径的时候才使用
·用来影响EBGP邻居,告诉自己的EBGP邻居如何选最优路由。
·metric传递不能传出AS。例:始发路由器可以将metric传给任何邻居,可以是IBGP/EBGP,但邻居收到后,不能传出邻居所在的AS。
·默认值=0,MED值越小越好

Show ip bgp 中显示的Metric值就是MED





例:
AS2希望AS1来访问172.16.1.0网段时流量通过R1过来。来访问192.168.1.0网段时流量从R4过来。

R2:
access-list 1 permit 172.16.1.0
access-list 2 permit 192.168.1.0

route-map TO-R1 10
match ip add 1
set metric 100
route-map TO-R1 20
match ip add 2
set metric 200
route-map TO-R1 30

route-map TO-R4 10
match ip add 1
set metric 200
route-map TO-R4 20
match ip add 2
set metric 100
route-map TO-R4 30

router bgp 2
neighbor 1.1.1.1 route-map TO-R1 out
neighbor 4.4.4.4 route-map TO-R4 out

·默认不比较从不同AS传来路由的MED。如果要比较不同AS传来的MED值,要用下面的命令
R2(config-router)#bgp always-compare-med

在新的IOS中,将IGP中的路由重分布进BGP,BGP将自动继承IGP路由的metric值。在老的IOS里,如果需要继承,则需要在重分布时加route-map,如:
router bgp 1
Redistribute rip route-map RE
Route-map RE
set metric-type internal

默认情况下,在选最优路由时,只有在两条路径的第一个(邻近的)AS相同的情况下才会进行比较,并且任何联盟内的子自治系统都被忽略。任何多跳路径,只有在AS_SEQUENCE中的第一个AS相同的情况下,才会比较MED;任何打头的AS_CONFED_SEQUENCE都将被忽略。如果激活了bgp always-compare-med,那么对于所有路径都比较MED,而不考虑是否来自同一个AS。如果使用了这个选项,就应该在整个AS中都这样做,以避免路由选择环路。

Bgp deterministric-med配置后,先对AS-path进行分组,然后比较每个组的MED,然后组与组之间不比较MED,继续往下比,有可能会产生不同的效果,如:

例1:不打任何MED的命令,默认只有当所有路径的第一个AS相同的情况下才会进行比较。
R1从R2/R3/R4/R5都学来一条前缀:199.172.1.0/24
R2的router-id为2.2.2.2,MED为8,as-path为 1 2 i,
R5的router-id为5.5.5.5,MED为7,as-path为 1 2 i,
R3的router-id为3.3.3.3,MED为5,as-path为 3 2 i,
R4的router-id为4.4.4.4,MED为2,as-path为 1 4 i。
由于从4个peer学过来的路由的as-path不一样,所以不比较MED,继续往下比,比到最小的router-id,选择从R2走。

例2:输入Bgp deterministric-med,先对AS-path进行分组,然后比较每个组的MED,然后组与组之间不比较MED,继续往下比。
R1从R2/R3/R4/R5都学来一条前缀:199.172.1.0/24
R2的router-id为2.2.2.2,MED为8,as-path为 1 2 i,
R5的router-id为5.5.5.5,MED为7,as-path为 1 2 i,
R3的router-id为3.3.3.3,MED为5,as-path为 3 2 i,
R4的router-id为4.4.4.4,MED为2,as-path为 1 4 i。
由于R2/R5/R4的邻近的AS相同,所以先比较它们的MED,由于从R2学来的为8,R5为7,R4学来的为2,所以选R4的;最后R3/R4的as-path所以不比较,比较router-id,选择从R3走。
注意:这时候如果将Bgp deterministric-med给no掉,也不会回到第一种情况,很奇怪。继续是选择R3。保存重启试试。

例3:输入bgp always-compare-med,比较所有路径的MED值。
R1从R2/R3/R4/R5都学来一条前缀:199.172.1.0/24
R2的router-id为2.2.2.2,MED为8,as-path为 1 2 i,
R5的router-id为5.5.5.5,MED为7,as-path为 1 2 i,
R3的router-id为3.3.3.3,MED为5,as-path为 3 2 i,
R4的router-id为4.4.4.4,MED为2,as-path为 1 4 i。
这时候比较MED,由于R4学来的MED为2,最小,所以选择从R4走。

如果激活了bgp bestpath med-confed,对于所有只包含AS_CONFED_SEQUENCE的路径来说才比较MED,也就是说,这些路径是始发于本地联盟的。注意如果一条路径包含了任何外部的自治系统,那么这条路径就不参与比较,而它的MED在联盟内传递时不改变。

如果接收到路径没有MED,激活了bgp bestpath missing-as-worst,在这种情况下,这些路径的度量值被指定为4294967294(最大值)。优选那些主动设置了MED的路径。

本文出自 “罗涛的博客” 博客,请务必保留此出处http://netlt.blog.51cto.com/129510/1148814
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: