BGP选择路由的策略

当到达同一目的地存在多条路由时,BGP采取如下策略进行路由选择:

  1. 优选协议首选值(PrefVal)最高的路由。

    协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效。

  2. 优选本地优先级(Local_Pref)最高的路由。

    如果路由没有本地优先级,BGP选路时将该路由按缺省的本地优先级100来处理。通过执行default local-preference命令可以修改BGP路由的缺省本地优先级。

  3. 优选本地生成的路由(本地生成的路由优先级高于从邻居学来的路由)。

    本地生成的路由包括通过network命令或import-route命令引入的路由、手动聚合路由和自动聚合路由。

    1. 优选聚合路由(聚合路由优先级高于非聚合路由)。
    2. 通过aggregate命令生成的手动聚合路由的优先级高于通过summary automatic命令生成的自动聚合路由。
    3. 通过network命令引入的路由的优先级高于通过import-route命令引入的路由。
  4. 优选AS路径(AS_Path)最短的路由。

    • AS_Path的长度不包括AS_CONFED_SEQUENCE和AS_CONFED_SET。
    • AS_SET的长度为1,无论AS_SET中包括多少AS号。
    • 执行bestroute as-path-ignore命令后,BGP选路时,忽略AS_Path的比较。
  5. 比较Origin属性,依次优选Origin类型为IGP、EGP、Incomplete的路由。

  6. 优选MED(Multi Exit Discriminator)值最低的路由。

    • BGP只比较来自同一个AS(不包括联盟的子AS)的路由的MED值。即,只有两条路由的AS_SEQUENCE(不包括AS_CONFED_SEQUENCE)属性的第一个AS号相同时,BGP才会比较二者的MED值。
    • 如果路由没有MED属性,BGP选路时将该路由的MED值按缺省值0来处理;执行bestroute med-none-as-maximum命令后,BGP选路时将该路由的MED值按最大值4294967295来处理。
    • 执行compare-different-as-med命令后,BGP将强制比较来自不同自治系统中的邻居的路由的MED值。除非能够确认不同的自治系统采用了同样的IGP和路由选择方式,否则不要使用compare-different-as-med命令(可能产生环路)。
    • 执行bestroute med-confederation命令后,只有当AS_Path中不包含外部AS号(不属于联盟的子AS),且AS_CONFED_SEQUENCE的第一个AS号相同时,才能比较MED值的大小。
    • 执行deterministic-med命令后,将消除路由接收顺序对选路结果的影响。
  7. 优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)。

    依次优选EBGP路由、IBGP路由、LocalCross路由、RemoteCross路由。

    PE上某个×××实例的×××v4路由的ERT匹配其他×××实例的IRT后复制到该×××实例,称为LocalCross;从远端PE学习到的×××v4路由的ERT匹配某个×××实例的IRT后复制到该×××实例,称为RemoteCross。

  8. 优选到BGP下一跳IGP Metric较小的路由。【这个下一跳是指实际下一跳,而不是指BGP PEER ID】

    说明:

    如果配置了负载分担,当上述所有规则相同,且存在多条As_Path完全相同的外部路由,则根据配置的路由条数选择多条路由进行负载分担。

  9. 优选Cluster_List最短的路由。

  10. 优选Router ID最小的路由器发布的路由。

    说明:

    如果路由携带Originator_ID属性,选路过程中将比较Originator_ID的大小(不再比较Router ID),并优选Originator_ID最小的路由。

  11. 比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由。

BGP等价负载分担

当到达同一目的地址存在多条等价路由时,可以通过BGP等价负载分担实现均衡流量的目的。

形成BGP等价负载分担的条件是:“BGP选择路由的策略”的1至8条规则中需要比较的属性完全相同。