BGP对路由的处理
BGP对路由的处理如图9-3所示。BGP路由来源包括从其他协议引入和从邻居学习两个部分,为了减少路由规模,可以对优选的BGP路由进行聚合。在引入路由、从邻居接收或发送路由的过程中,可以通过路由策略实现对路由的过滤,也可以修改路由的属性。
路由引入请参见路由引入,BGP选路规则请参见路由选择,路由聚合请参见路由聚合,发送路由给BGP邻居的具体规则请参见BGP发布路由。
入口/出口策略的具体介绍请参见《NE20E 特性描述-路由策略》。
路由引入
BGP协议自身不能发现路由,所以需要引入其他协议的路由(如IGP或者静态路由等)注入到BGP路由表中,从而将这些路由在AS之内和AS之间传播。
- Import方式是按协议类型,将RIP路由、OSPF路由、ISIS路由、静态路由和直连路由等某一协议的路由注入到BGP路由表中。
- Network方式比Import方式更精确,将指定前缀和掩码的一条路由注入到BGP路由表中。
路由选择
- 在与RPKI服务器进行连接的情景中,应用起源AS验证结果后的BGP路由优先级顺序为Valid > NotFound > Invalid。
优选没有误码的路由。
配置bestroute bit-error-detection命令后将优选没有误码的路由。否则BGP路由不会按照此规则进行选路。
优选协议首选值(PrefVal)最高的路由。
协议首选值是华为设备的特有属性,该属性仅在本地有效。
优选本地优先级(Local_Pref)最高的路由。
如果路由没有本地优先级,BGP选路时将该路由按缺省的本地优先级100来处理。通过执行default local-preference命令可以修改BGP路由的缺省本地优先级。
优选本地生成的路由(本地生成的路由优先级高于从邻居学来的路由)。
本地生成的路由包括通过network命令或import-route命令引入的路由、手动聚合路由和自动聚合路由。- 优选聚合路由(聚合路由优先级高于非聚合路由)。
- 通过aggregate命令生成的手动聚合路由的优先级高于通过summary automatic命令生成的自动聚合路由。
- 通过network命令引入的路由的优先级高于通过import-route命令引入的路由。
优选携带AIGP(Accumulated Interior Gateway Protocol Metric)属性的路由。
- 有AIGP属性的路由优先级高于没有AIGP属性的路由。
- 如果路由都存在AIGP属性,则比较AIGP属性与其下一跳的IGP Metric之和,优选该值较小的。
- 优选AS路径(AS_Path)最短的路由。
- AS_Path的长度不包括AS_CONFED_SEQUENCE和AS_CONFED_SET。
- AS_SET的长度为1,无论AS_SET中包括多少AS号。
- 执行bestroute as-path-ignore命令后,BGP选路时,忽略AS_Path的比较。
配置load-balancing as-path-ignore命令后,As_Path不同的路由也可以进行负载分担。
比较Origin属性,依次优选Origin类型为IGP、EGP、Incomplete的路由。
- 优选MED(Multi Exit Discriminator)值最低的路由。
如果配置了bestroute med-plus-igp命令,将优选MED值与IGP Metric分别乘对应系数相加的结果较小的路由。
- 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命令(可能产生环路)。
- 执行deterministic-med命令后,将消除路由接收顺序对选路结果的影响。
依次优选本地VPN路由、LocalCross路由、RemoteCross路由
LocalCross路由指本地VPN交叉路由或公私网互引路由。PE上某个VPN实例的VPNv4路由的ERT匹配其他VPN实例的IRT后复制到该VPN实例,称为LocalCross;从远端PE学习到的VPNv4路由的ERT匹配某个VPN实例的IRT后复制到该VPN实例,称为RemoteCross。
优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)。
优选到BGP下一跳IGP Metric较小的路由。
执行bestroute igp-metric-ignore命令后,BGP选路时,忽略IGP Metric的比较。
优选Cluster_List最短的路由。
缺省情况下,BGP在选择最优路由时Cluster-List优先于Router ID。配置bestroute routerid-prior-clusterlist命令后,BGP在选择最优路由时Router ID优先于Cluster-List。
优选Router ID最小的路由器发布的路由。
执行bestroute router-id-ignore命令后,BGP选路时,忽略Router ID的比较。
如果路由携带Originator_ID属性,选路过程中将比较Originator_ID的大小(不再比较Router ID),并优选Originator_ID最小的路由。
比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由。
当本地配置了BGP Flow Specification路由时,优选先配置的BGP Flow Specification路由。
对于本地引入的路由,优选RM路由表中的路由。
如果同时引入直连路由、静态路由和IGP路由,则优选顺序为直连路由>静态路由>IGP路由。
优选ADD-PATH路由的recv pathID较小的路由。
优选远端交叉路由中RD较小的路由。
对于公私网互引的路由和本地收到的路由,优选本地收到的路由。
优选较早学到的路由。
BGP路由属性请参见BGP属性。
BGP选路的具体流程请参见图9-4:
路由聚合
在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小路由表的规模。
路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是通告所有的具体路由。
- 自动聚合:对BGP引入的路由进行聚合。配置自动聚合后,对参加聚合的具体路由进行抑制。配置自动聚合后,BGP将按照自然网段聚合路由(如10.1.1.1/24和10.2.1.1/24将聚合为A类地址10.0.0.0/8),并且BGP向对等体只发送聚合后的路由。
- 手动聚合:对BGP本地路由进行聚合。手动聚合可以控制聚合路由的属性,以及决定是否发布具体路由。
IPv4支持自动聚合和手动聚合两种方式,而IPv6仅支持手动聚合。