BGP的选路原则

 以下为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的路径。
 
 

 

你可能感兴趣的:(BGP,BGP选路规则)