首先,BGP会检查路由的下一跳是否可达。如果下一跳不可达,该路由会被直接忽略。这是因为选择一个不可达的下一跳会导致数据包无法成功转发。
接下来,BGP遵循以下策略来确定最佳路由:
1. 优先选择协议首选值(PrefVal)最高的路由。这个值代表了路由的优先级,数值越高,优先级越高。
2. 如果多条路由的PrefVal相同,那么BGP会选择本地优先级(Local-Pref)最高的路由。本地优先级通常由网络管理员配置,用于指导本地路由选择。
3. 如果本地优先级相同,BGP会按照以下顺序选择:手动聚合路由、自动聚合路由、network路由、import-route路由,最后是从对等体学习到的路由。
4. 在上述条件下仍无法决出最佳路由时,BGP会选择AS路径(AS_Path)最短的路由。AS路径是路由经过的自治系统(AS)的序列,路径越短,意味着路由越直接。
5. 如果AS路径长度相同,BGP会优选手类型为IGP(内部网关协议)、EGP(外部网关协议)或Incomplete的路由。IGP通常被认为更可靠。
6. 对于来自同一AS的路由,BGP会选择MED(多路径外部度量)值最低的路由。MED值用于影响来自同一外部AS的路由选择。
7. 如果以上条件都相同,BGP会优选手类型为EBGP(外部BGP)的路由,然后是IBGP(内部BGP)路由、LocalCross路由,最后是RemoteCross路由。
8. 在这些条件都相同的情况下,BGP会选择到BGP下一跳的IGP度量值最小的路由。IGP度量值代表了路由的成本或距离。
9. 如果以上8条条件都相同,BGP可以选择开启负载均衡。默认情况下,负载均衡不启用,即默认最大下一跳个数为1。
10. 如果条件仍然相同,BGP会选择Cluster_List最短的路由。Cluster_List代表了路由在BGP路由反射器中的集群列表。
11. 如果Cluster_List也相同,BGP会选择OrigiNATor_ID最小的路由。Originator_ID是创建路由的BGP路由器的标识符。
12. 如果以上条件都相同,BGP会选择routerID最小的设备发布的路由。如果路由携带OID(原始ID),则不比较RouterID。
13. 最后,如果以上条件都相同,BGP会选择从具有最小IP Address的对等体学来的路由。这通常意味着选择具有最低ip地址的路由器。
通过这些详细的步骤,BGP能够确保网络中的数据包能够通过最优的路径进行转发,从而提高网络的整体性能和可靠性。这些策略不仅考虑了路由的技术参数,还考虑了网络管理员的主观配置,使得路由选择更加灵活和高效。
当到达同一目的地存在多条路由时,BGP依照如下策略顺序进行路由选择:
如果此路由的下一跳不可达,忽略此路由
1、优选协议首选值(PrefVal)最高的路由。
2、优选本地优先级(Local-Pref)最高的路由。
3、依次优选手动聚合、自动聚合、network、import-route、从对等体学习的路由。
4、优选AS路径(AS_Path)最短的路由。
5、依次优选Origin类型为IGP、EGP、Incomplete的路由
6、对于来自同一AS的路由,优选MED值最低的路由。
7、依次优选EBGP路由、IBGP路由、LocalCross路由、RemoteCross路由。
8、优选到BGP下一跳IGP度量值(metric)最小的路由。
9、以上8条相同时的可以开启负载均衡。默认最大下一跳个数为1,即不使用负载均衡。
10、优选Cluster_List最短的路由。
11、优选Originator_ID最小的路由。
12、优选RouterID最小的设备发布的路由。若携带OID,则不比这一条。
13、优选从具有最小IP Address的对等体学来的路由。
审核编辑:刘清