BGP选路原则(决策过程)
  1.优选有最大Weight的路由 (范围0 到 65,535)。
  A:weight是CISCO私有的参数,路由器配置了权重后在本地有效。 

  2.优选有最大LOCAL_PREF值的路由(范围 0到 4,294,967,295).

  3.优选从本路由器始发的路由(包括本地network配置的重分布,或者在IGP表中已经有一些需要被配置路由聚合的地址,在BGP中用Aggregate命令配置的路由聚合,)netwoke >重分布>Aggregate

  4.优选有最短AS_PATH的路由
  A.如果配置了Bgp bestpath as-path ignore(隐藏命令),则这个步骤被忽略
  B.一个AS路径集被当作一个AS,无论在这个集合中有多少AS。
  C.AS路径长度中没有包括AS_CONFED_SEQUENCE。

  5.根据Origin属性.优选具有最低起源类型的路由(IGP>EGP>Incomplete)

  6.优选最小MED 值的路由(范围 0到4,294,967,295).
  A.只有在通过两条路径得到第一个AS(对等体)是同一个AS时才进行MED比较;任何子自治域的联盟系统都会被忽略。也就是说,只有在AS序列号中第一个AS号码一致时,才进行MED比较;任何联盟AS序 列 号(AS_CONFED_SEQUENCE)都会被忽略。
  B.如果路由器上配置了 bgp always—compare—med ,在全部的路径进行MED比较。但是这需要全体AS 都同时启用这个功能,否则有可能发生路由环路。
  C.如果路由器上配置了 bgp bestpath med confed ,将对所有只包括AS_CONFED_SEQUENCE的路径进行MED比较(即路径是起源于本地联盟)。
  D.如果接收到的路径没有分配MED值,则将此路径分配为0,除非路由器上配置了 bgp bestpath missing-as worst,将被看作MED值为4,294,967,295的路由将在注入到BGP路由选择表之前被改为4,294 ,967,294。
  E.BGP明确的MED值9(详见本章后面的"BGP明确的MED"段落)也可以影响此步骤。

  7.外部路由EBGP优先于联盟(confederation)外部路由优于内部路由IBGP(优选 E-BGP路由)
  注意,路径中包括AS_CONFEND_SEQUENCE属性对联盟只有在本地有效,因此被看作是内部路径。无法区别外部联盟和内部联盟。
  8. 优选能通过最近的IGP邻居到达的路径(优选对BGP下一跳具有最低IGP度量值的路径);

  9.如果在路由器上配置了maximum—paths 【ibgp】N,而且从同一个对等体自治域/子自治域接收到多条外部/外部联盟的路径,则最多可以将N条最近接收到的路径加入到IP路由选择表中。这可以使得eBGP在多条路径上进行负载分担。目前N所代表的最大数目是6;当没有启用此功能时,缺省数值是1。在输入了show ip bgp x.x.x.x后系统输出信息中可以看到最早接收到的路径被标记为最优路径,在将这条最优路径转发到内部对等体之前,需要执行与next_hop_self作用相同的功能。

  10.如果是external的路由,优选最老的路由(最先被学习到的路由).
  A.此步骤可以将路由摆动的影响减到最小,因为新接收到的路径不会取代老的,即使这条新接收的路径是通过下面提及到的额外路径选择标准来进行选择的。这使得只在iBGP路径下应用额外的选择步骤更有意义。
  B.此步骤可以被bgp bestpath compare_routerid命令语句所关闭。
  C.如果路由器标志是一样的,此步骤可以被屏蔽,因为这说明路由器正在从自己那里接收路由。
  D.如果当前没有最优路由器,此步骤可以被屏蔽。当提供某个路径的对等体路由器宕机,就会发生丢失 当前最优路径的情况。

  11.如果在同一时间学习到多条到同一目的地的路由,优选最小BGP-router-ID的路由,注意,如果一个路径包括路由反射器属性,起始者标识将代替路由器标识在路径选择过程中起作用。

  12.如果路由从路由反射器上学习到 ,优选最小Cluster-ID(BGP_ID of the route reflector)长度的路由,而且它运行客户机和其他反射器族中的RR/Clients 之间做对等连接,在这种情况下,路由器必须知道BGP协议中的RR的具体配置。

  13.优选具有最低对等体地址接收到的路径。这个地址是在BGP对等体上配置并使用的地址,这个地址是本地对等体路由器在其上配置TCP邻居并与远端对等体建立连接时采用的地址。
以下为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).
Preferh
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值越大越好
<Local_Preference>越大越好
本地优先级是公认自由决定的属性,它告诉AS中的路由器,哪条路径是离开AS的首选路径。

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

设置方法:通常可以在AS的边界路由器上设置本地优先级,用以下命令。
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非空的聚合路由"不起效。
<AS-Path>shortest AS-path
·BGP路由每经过一个AS,就会将这个AS号加入自已的AS-Path中。
·当一个路由器收到两条相同目的地的路由,它将选择AS路径最短的路由。
·这个属性只能在EBGP邻居之间传路由时进行改动,对IBGP邻居传来的路由改不了
·如果做了路由聚合,并加了as-set参数,聚合后继承明细路由的属性,在大括号里面的as-path在计算长度时,只算一个。在联盟内小括号里面的AS号,在选路时,不计算到as-path长度里面。
也可以让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的路由
<MED>Multi-Exit Discriminator多出口鉴别属性

特点:
·当两个AS之间存在多条路径的时候才使用
·用来影响EBGP邻居,告诉自己的EBGP邻居如何选最优路由。
·metric传递不能传出AS。例:始发路由器可以将metric传给任何邻居,可以是IBGP/EBGP,但邻居收到后,不能传出邻居所在的AS。
·默认值=0,MED值越小越好
·默认不比较从不同AS传来路由的MED。如果要比较不同AS传来的MED值,要用下面的命令
R2(config-router)#bgp always-compare-med 

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

<Community>主要用来控制路由的传播范围
社团属性,也叫共同体属性,是可选传递属性  

·“可选”:意味着并不是所有的路由器都能识别这个社团属性。
·“传递”:意味着路由器即使不能识别这个属性,也能将这条路由继续传递下去。

·社团属性类似于tag标记,它允许路由器能够使用一个指示符来标记路由,并且允许其它路由器根据这个标记来控制路由的传播范围,或者对含有标记的路由做一些处理。

·一条路由可以设置多个社团属性,也就是说允许同时打上多个标记

·还可以利用社团属性实现一些扩展的功能。比如在MPLS-×××中的RT属性。

·默认情况下社团属性不会传递给邻居,必须有以下命令才行
  R2(config-router)#neighbor 1.1.1.1 send-community 

·社团属性只会传给指定的邻居,并只在此邻居上起效。
  比如上例:就只传给1.1.1.1这一邻居,并只在它上面起效,默认不会再向后传

-------------------------------------------
·社团属性分以下两种:
  1、well-known communities 公认团体
  2、Private communities  私有团体

·社团属性中已经预定义好的三类well-known属性:
   no-advertise:携带此属性的路由不会通告给任何BGP邻居。也就是说只传达给一个邻居
   local-AS:   携带此属性的路由不会传出小AS。   
   no-export:  携带此属性的路由不会传出本AS外,只会传给IBGP。(联邦中的小AS会传递)。
   Internet :   此属性为默认属性会全internet传递
配置公有团体属性:
route-map WOLF permit 10
  set community no-advertise/no-export/local-AS
router bgp 4
  neighbor 24.1.1.2 send-community
  neighbor 24.1.1.2 route- map WOLF out

在24.1.1.2上show明细可以看到社团属性,还有其它的一些属性

配置私有团体:
R4:
route-map WOLF permit 10
  set community 4:20
router bgp 4
  neighbor 24.1.1.2 send-community

做相应的策略:
R3:
ip community-list 1 permit 4:20
route-map WOLF deny 
  match community 1
route-map WOLF permit 20

router bgp 123
  nei 35.1.1.5 route-map WOLF out 调用

ip bgp new-format   可显示出私有的属性,新格式

BGP负载均衡【负载均衡实在前八条条件等同的条件下产生的】
高版本的IOS即可对EBGP路由进行负载均衡,也可对IBGP路由进行负载均衡
条件是:按照BGP选路原则前八条都比不出来的情况下,多条路由才能进行负载均衡

对EBGP路由负载均衡:
R1(config-router)#maximum-paths 2

对IBGP路由负载均衡:
R1(config-router)#maximum-paths ibgp 2


 


转载于:https://blog.51cto.com/caihaisheng/1263087