BGP选路详解

BGP选路详解

Writed by Vindeselly

本文档详解了BGP的选路原则,采用GNS3模拟器、CISCO的IOS为工具,采取理论实验相结合的方式进行详解,其中英文来自CISCO官方BGP文档内容

一、优先选择WEIGHT最高的(Prefer the path with the highest WEIGHT)

WEIGHT是一个CISCO私有的参数,只在本地有效,不会传给对等体。取值范围0~65535,起源于本地的路由(宣告、重分发、聚合)的weight为32768,由于不传给BGP对等体,从PEER学习的更新weight为0

BGP选路详解_第1张图片

R1、R2、R3之间建立IBGP PEER关系,R1、R3上有loopback 0口,IP为1.1.1.1/32,R1、R3通过network的方式将1.1.1.1/32宣告进BGP进程。

R2默认的BGP转发表如下:

111

在R2上进行如下配置:


该命令表示从对端接收BGP路由更新时,在本地修改weight值为65535

此时BEST给了WEIGHT更大的条目

111

二、优先选择Local-preferences最高的(Prefer the path withthe highest LOCAL_PREF)

LOCAL_PREF作用于本地AS内,默认取值为100,LP为空时表示取默认值

     BGP选路详解_第2张图片

拓扑配置同上条选路原则

在R3上进行如下配置,更改发送给R2的Local-Preference的值



此时在R2上看到R3为下一跳时LP更大,所以优选R3


三、优先选择起源于本地

本地network或redistribute方式宣告的优于本地聚合的,优于非起源于本地的(Local paths that are sourced by the network or redistribute commandsare preferred over local aggregates that are sourced by the aggregate-addresscommand)

四、优先选择AS-PATH最短的(Prefer the path with the shortestAS_PATH)

主要用于比较来自外部AS的BGP条目,AS-PATH类似跳数,越短越优

BGP选路详解_第3张图片

R1、R2、R3采用直连口建立EBGPPEER,R1、R3分别network宣告1.1.1.1/32条目

R2的默认选路如下


在R1上采用ROUTE-MAP的方式增加本地宣告条目的AS-PATH长度


此时由于AS-PATH不同,R2优选AS-PATH最短的为BEST


在BGP进程中可以通过该命令忽略AS-PATH的比较:bgp bestpath as-path ignore

在聚合宣告时如果出现as-set参数,那么一个as-set等同一个AS号的长度

五、优选最低的起源代码(Prefer the path with the lowest origin type)

i(IGP)>e(EGP)>?(INCOMPLETE)

BGP选路详解_第4张图片

R1、R2、R3直连口建立IBGP PEER,R3采用network的方式宣告1.1.1.1/32条目

在R1上采用Redistribute connected方式宣告


在R2选取BEST时,比较i>e>?


现在已经没有EGP了,只能通过route-map在上游手动配置,此处不讨论

六、优选MED值最小的(Prefer the path with the lowest Multi-ExitDiscriminator)

MED表示去往该条目的开销或metric,在宣告时默认继承IGP中的metric值,并传递给BGPPEER

BGP选路详解_第5张图片

R1、R3通过直连口建立IBGP PEER,R2与R1、R3通过直连口建立EBGPPEER,R1、R3分别network宣告本地的1.1.1.1/32条目

(此处笔者为了达到AS-PATH等参数的绝对平衡,采取此拓扑和配置方式,并非多此一举)

R2的默认选路如下


此时R2将选择Metric最小的为BEST,如下


MED默认只在更新条目具有相同的AS-PATH时才作为选路参数,进行比较

以下是不同两条更新不同AS-PATH情况的默认选路

由于AS-PATH的不同,导致不进行MED的比较,通过PEER ADDRESS得出BEST如下


管理员可以手动通过always-compare-med命令使不同AS-PATH依然进行MED的比较


管理员也可以通过配置deterministric-med,实现只要AS_PATH中最左边的(最近的)AS相同,两条更新便可以比较MED值


七、EBGP优于IBGP(Prefer EBGPover IBGP paths)

EBGP>IBGP>联盟内EBGP=联盟内IBGP

BGP选路详解_第6张图片

R3 network宣告1.1.1.1/32条目,R1通过IBGP传给R2,R3通过EBGP传给R2

R2上的BGP的转发表如下,由于EBGP>IBGP:

 

八、优选去往BGP条目下一跳Metric最小的 (Preferthe path with the lowest IGP metric to the BGP next hop)

两传递端都是IBGP PEER可以进行比较规则,都是同AS的EBGP时,该规则不生效

BGP选路详解_第7张图片

底层OSPF协议互通,除了R1、R3上的loopback 0口1.1.1.1/32,R1的loopback 1口11.11.11.11/32,R3的Loopback 1口33.33.33.33/32,使用环回口建立IBGP邻居

R2的默认BEST选举如下(由于R1的Router-id小)


在R2上手动增大OSPF进程下去往11.11.11.11的cost值

BGP选路详解_第8张图片

九、可以配置Load Balance(Determine if multiple pathsrequire installation in the routing table for BGP Multipath)

该配置可以在路由表中实现负载均衡同时写入两个下一跳,不过还将继续往后选举唯一BEST的条目

 BGP选路详解_第9张图片

拓扑配置同选路原则一


该配置命令中的ibgp参数为可选参数,不添加表示EBGP多路


路由表中有两个下一跳,负载均衡,但是转发表就只有一个BEST


十、EBGP条目优选最先通告的(When both paths are external,prefer the path that was received first)

BGP选路详解_第10张图片

在此拓扑中,R1先宣告1.1.1.1/32,R3再宣告1.1.1.1/32,R2的BGP转发表如下

R2从R1处先学习到1.1.1.1/32条目,所以给BEST


在此拓扑中,R3先宣告1.1.1.1/32,R1再宣告1.1.1.1/32,R2的BGP转发表如下

R2从R3处先学习到1.1.1.1/32条目,所以给BEST


十一、优选通告设备RID最小的(Prefer the route that comes from theBGP router with the lowest router ID)

如果是正常通告的更新比较RID最小的,如果是通过RR反射的更新比较Originator ID最小的

 BGP选路详解_第11张图片

拓扑配置如同原则一,默认选路如下


修改R3的BGP ROUTER-ID


R2将优选更新通过设备BGP ROUTER-ID最小的为BEST


十二、优选Cluster List最短的(If the originator or routerID is the same for multiple paths, prefer the path with the minimum clusterlist length)

表示在同一AS内部的Cluster数量越少越优

十三、优选对等体IP地址最小的(Prefer the path that comes from thelowest neighbor address)

 BGP选路详解_第12张图片

R2选择PEER ADDRESS最小的为BEST

111

你可能感兴趣的:(路由协议,BGP,选路)