zoukankan      html  css  js  c++  java
  • BGP选路原则


                bgp
    选路原则

     

     

     

    1 最高有weight优先,默认为0(思科特有,选大的)

    2 本地优先级高的优先(只可以在IBGP邻居之间传递

    3 起源本路由器上的路由(networkaggregate-address

    4 as-path最短的优先

    5 最小的起源代码 (IGP 优先 EGP 优先 incomplete)

    6 最低的med

    7 ebgp>ibgp

    8 通过最近BGP邻居的路由

    9  如果配置了maixmum-path[IBGP],就负载均衡。

    10 最老的EBGP邻居学到的路由,是路由最老

    11 更低的router-id

    12 始发路由器ID相同,那么选择 cluster-list短的,

    13 优选来自于最低的邻居地址的路径,是BGPneigbor配置中地址 

     

     

     

     

     

     

     

     


    一、    weight

    理论简介:

    1.优选有最大Weight的路由 (范围0 65,535) weightCISCO私有的参数,路由器配置了Weight在本地有效。

    2. 缺省情况下,通过本路由器宣告、重分布或者汇总的路由的weight32768,从BGP邻居学习到的路由的weight0

    3:只在本地(影响自己一个路由器)有用,影响本路由的选路.

    修改方法:

     1neighbor  xxx weight xxx  (从此xxx邻居学到的所有的路由都加)

     2route-map xxx permit 10 

    Set weight  xxx

     只能在本路由器的入方向上做.


    二、local-prefrence 

    理论简介:

    1.通过第一条选路原则不能选出最优BGP条目的情况下,优选有最大local preference值的BGP条目。

    2.local preference值只可以在IBGP邻居之间传递,在EBGP邻居之间不能传递,也就是说不能在EBGP的出方向上做,因为只在本AS内生效。

    3.对于从EBGP邻居学习到的BGP条目,local preference缺省值为100,这个值可以通过命令bgp default local-preference修改

    修改方法:

      1bgp default local-preference xxx

    修改后,对IBGP学来的路由不起作用,只对EBGP传来的和自己产生的路由起作用。

      2route-map xxx permit 10

           set local-preference xxx

      3)不能在EBGP邻居关系的出方向做修改。

     3local-preference的默认值是100

       show ip bgp 中看到是空,其实也是100

         show ip bgp xxxx 看明细的时候可看见路由的local-preference


     

    三:起源本路由器上的路由 ,

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

    注意对于CISCO IOS,如果是从本地往BGP里注入一条路由,缺省的weight值为32768,由于这个weight值很大,对于该注入路由,会根据第一条选路原则成为最优BGP条目。因此对CISCO IOS来说,第三条选路原则作用不大。然而考虑到第一条选路原则为CISCO私有,不是所有厂家都支持,第三条选路原则的作用就显现出来了。


    四、AS-PATH

    在通过前三条选路原则不能选出最优BGP条目的情况下,优选AS path长度短的路由条目

    注意:修改AS path长度只能在EBGP邻居关系之间进行,IBGP邻居关系是不可以的

     1as-path只可以在EBGP邻居关系的out方向和in的方向去修改

       1out方向做: 加在本来AS号的前面(右边

       2in方向做:    加在本来AS号的后面(左边 

    2last-as 表示在离这个路由器最近的AS号,重复加次数

      route-map xx permit 10

         match ip address 1

         set as-path prepend last-as 数字(加多少次)

    3、当写下面两个命令时,哪个先生效?

       set as-path prepend  23 

       set as-path prepend last-as 数字

     入/出方向的时候,as-path prependlast-as同时使用,都是last-as先生效,然后as-path prepend才生效

     (1)、聚合   聚合后的{}内的AS算几个?一个

     (2)、联邦   联盟内的()内的AS算几个?一个也不算

     (3)、neighbor xxx remove-private-AS 删除私有AS号,起源于本AS无效,在出方向做。

    5、如何跳过as-path选路原则

         bgp bestpath as-path ignore 


    五、起源代码origin

    在通过前四条选路原则不能选出最优BGP条目的情况下,优选最低起源类型的BGP路由

    最低起源类型的顺序是 IGP 优先 EGP 优先 incomplete,其中EGP的方式现在已经不用了。

    通过Networkaggregate方式产生的BGP路由的起源属性是i,通过重分布产生的BGP路由的起源属性是incomplete

    1:

      i-------igp  network xxxxx   

      e-------egp  (没有了)

      ?-------重分发

    2、origin EBGP/IBGPinout方向都可以做

     route-map xxx permit 10

         match ip address pre 1

         set origin incomplete ?


     

    六、MED

    MED值的用途:在两个相临AS之间有多个BGP连接的情况下,MED值用于影响从相邻AS到本AS的路由选择,即用于影响邻居AS到本AS的流量从哪个接口进来,这是通过向相邻ASEBGP邻居发送具有不同MED值的路由条目来实现的,但是需要注意选路过程的实现是相邻AS的路由器自身根据13条选路原则独立完成,MED值的的比较是前面的五条选路原则都不能选出最优的情况下才起作用。

    MED的生成: 

    1)本地network方式生成的BGP条目,会带上IGPmetric,(同时也会带上路由的下一跳,开启汇总后会被取消)会传给所有邻居。

    2:如果从EBGP邻居学习到的BGP条目的metric值传递给其他IBGP邻居,但不传给EBGP

                    -----以上表示MED值只传递一次EBGP邻居-----

    3:如果从IBGP邻居学习到一条BGP条目的metric0或者其他值,缺省不会传给给EBGP邻居,显示为空

    4)汇总方式生成的BGP条目,metric值为空

    5)重分布方式生成的BGP条目,metric值为IGPcostmetrichop,如果开启自动汇总会被清除。

    6:缺省情况下,空的metric0看待 

    优选最小MED 值的路由(范围 04,294,967,295). 

      A.只有在通过两条路径得到第一个AS(对等体)是同一个AS时才进行MED比较;任何子自治域的联盟系统都会被忽略。也就是说,只有在AS序列号中第一个AS号码一致时,才进行MED比较;任何联盟AS序列号(AS_CONFED_SEQUENCE)都会被忽略,也就是说从不同联邦AS学到的路由都会比较MED

      B.如果路由器上配置了 bgp always-compare-med,在全部的路径进行MED比较。但是这需要全体AS都同时启用这个功能,否则有可能发生路由环路。 

      C.如果路由器上配置了bgp bestpath med confed,将对所有包括/.AS_CONFED_SEQUENCE的路径进行MED比较。默认不比较

      D.如果接收到的路径没有分配MED值,则将此路径分配为0,除非路由器上配置了bgp bestpath med missing-as-worst,将被看作MED值为4294967295的路由将在注入到路由选择表之前被改为4294967294 

     1只能在相邻的AS传递,一般在EBGP邻居的OUT方向的做。影响入站的流量。(IBGP之间是可以修改的)

     6bgp deterministic-med

        是指把路由过来的MED值进行分组

      同一个AS的分一组

      其他的AS的分一组

     先比较同一个ASMED值,在和其他ASMED值比较路由器那个最小的ROUTE-ID


    七、EBGP > IBGP

       EBGPAD小于IBGPAD是无关的 

       EBGP>联盟EBGP>IBGP

     

     

     


    八、最近的BGP邻居

       指的去往BGP邻居用的IGP路由的metric

    EBGP,IBGP邻居都会有效。

    r3#sh ip b 22.22.22.0

    BGP routing table entry for 22.22.22.0/24, version 4

    Paths: (1 available, best #1, table Default-IP-Routing-Table)

      Not advertised to any peer

      1

        1.1.1.1 (metric 1) from 1.1.1.1 (1.1.1.1)

          Origin IGP, localpref 100, valid, external, best


    九、配置了maixmum-path [IBGP],存在多条等价的路径,会负载均衡     

          其实这不算选路的原则,是指当前面的八条选不出最优路由时,在BGP 的进程下配置maximum-paths 命令后,会产生负载均衡

       r3(config)#router bgp 3

       r3(config-router)#maximum-paths ?

           <1-6>  Number of paths

           ibgp   iBGP-multipath

    非等价的负载---bgp dmzlink-bw –先进程启用

                   Neighbor xxxx dmzlink-bw  再针对邻居启用


    十、old最长的EBGP路由,存在时间最长的优先

    bgp bestpath compare-routerid 

       这句命令的意思是指,选路是前8条都选不出来时,跳过第十条最老的EBGP邻居

       直接选最小的ROUTE-ID

       

    优选最老的路由(最先被学习到的路由). 

      A.此步骤可以将路由摆动的影响减到最小,因为新接收到的路径不会取代老的,即使这条新接收的路径是通过下面提及到的额外路径选择标准来进行选择的。这使得只在iBGP路径下应用额外的选择步骤更有意义。 

      B.此步骤可以被bgp bestpath compare_routerid命令语句所关闭。 

      C.如果路由器标志是一样的,此步骤可以被屏蔽,因为这说明路由器正在从自己那里接收路由。 

      D.如果当前没有最优路由器,此步骤可以被屏蔽。当提供某个路径的对等体路由器宏机,就会发生丢失 


     

    十一、 lowest router-id

    最小的IBGP邻居route-id

    在有RR的情况下不比邻居的route-ID,比起原ID 起始者标识将代替route-id在路径选择过程中起作用。

    将不会用到11条选路原则,会用到12或者13条选路原则。

    一个路由器从多个RR收到相同路由进行最优路径选择时,第11条选路原则用的Router-ID被更改为originator ID(此ID既是在本AS学得路由的第一跳路由器的Router-ID,是RR的一个client),而不是RRRouter-ID,因此如果BGP路由只是从一个ASBR学习到然后传入AS内部,将不会用到11条选路原则,会用到12或者13条选路原则。

    如果在同一时间学习到多条到同一目的地的路由,优选最小BGP-router-ID的路由,注意,如果一个路径包括路由反射器属性,


     

     

    十二、cluster list length

    多条路径的始发路由器ID相同,那么选择 cluster-list短的,

     

     

    因为每经过一个RR cluster-list会加上这个RR cluster-id


    十三、lowest neihbor address

          BGP优选来自于最低的邻居地址的路径,是BGPneigbor配置中地址

     





  • 相关阅读:
    es6 常用方法
    vue HTTP 请求(vue-resource)
    vue 常用语法糖
    js中slice,SubString和SubStr的区别
    浅谈JavaScript中forEach与each
    vue 新版本 webpack 代理 跨域设置
    js 动态添加class封装(es6语法)
    jsonp promise 封装
    location.origin兼容IE
    给zTree的treeNode添加class
  • 原文地址:https://www.cnblogs.com/tcheng/p/6736292.html
Copyright © 2011-2022 走看看