Skip to main content

HUAWEI:BGP Best Path Selection Algorithm

·206 words·1 min
Rs
Rory
Author
Rory
Step by step the ladder is ascended

本文介绍一下华为 BGP 的 13 条选路原则,附上示例。

Prefer-value (越大越好)
#

首选值,数值越大越优先,本地有效。

alt text

Local-pref (越大越好)
#

本地优先级,数值越大越优先,可传递给 IBGP 邻居,如果没有配置默认为 100

alt text

本地始发
#

本地生成路由优先,aggregate 手工生成聚合路由>summary automatic 自动聚合路由>network 命令宣告路由>import-route 引入的路由。

alt text

如上图,如果 R1,R2 都将 10.1.12.0/24 宣告进 BGP 的话,R2 能收到 R1 发过来的 10.1.12.0 的路由,prefer-value 和 local-preference 都一样,但是本地发起的优先,所以 bgp 表中自己宣告的路由为最优路径。

As-path (越短越好)
#

As-path 最短的路由(单个 AS 计数为 1)。AS_CONFED_SEQUENCE 和 AS_CONFED_SET(联盟内部 AS 号)不计入 as-path 长度。AS_SET 长度计为 1。(此条选路法则可以用命令忽略: bestroute as-path-ignore)

alt text

上图左侧路径路由传递过来 as-path 为 200, 100 长度为 2,右侧传递过来 as-path 为 400, 长度为 1。优选右侧传递过来的路由为最优路径。

Origin(i>e>?)
#

IGP>EGP>Incomplete

Med (越小越好)
#

数值越小越优先,默认为 0。(bestroute med-none-as-maximum 可以将 med 默认值改到最大 4294967295)默认只比较 as-path 中最近一个 as 号相同的路由,否则忽略此条。

alt text

compare-different-as-med 命令后,强制比较不同 as 的路由 med。

bestroute med-confederation,只比较 as-path 只包含联盟内部 as 且最近一个联盟内部 as 号相同的路由的 med。

deterministic-med,按相同最近 AS 号的先比,消除按接收顺序两两比较 med 对比较结果的影响。

as-path		med type(第7条选路法则)router id
200 100 	0 	IBGP 	1.1.1.1 		(配了之后)Best
200 300 	100 EBGP 	5.5.5.5
200 100 	100 EBGP 	2.2.2.2			没配deterministic-med之前最优

EBGP>IBGP
#

ebgp>ibgp>localcross 路由>remotecross 路由

alt text

IGP cost for next-hop (越小越好)
#

下一跳 igp 的 metric 最小的路由

alt text

是否支持负载均衡(maximumload-balance)
#

前 8 条一样,且 as-path 完全相同(都是聚合路由或都不是),如果配置了多路径负载均衡的话,进行负载均衡(这里默认 IBGP 和 EBGP 路由都参与负载均衡)

Cluster-list (越短越好)
#

每一个 cluster-id 计数为 1,长度最小的优先。

alt text

Originator-id (越小越好)
#

alt text

as 外部路由,originator-id 就是边界路由器 5 和 6,这里虽然邻居 R3 路由器 ID 小,但是由于 originator-id 是 4 那边小,所以选择右侧过来的路由为最优。

Router-id(越小越好)
#

alt text

Peer ip address (越小越好)
#

alt text

如图,下方路由器与上面路由器的 2 个地址 10.1.12.2 和 10.1.22.2 分别建立 2 个邻居,2 个链路 igp 开销也相同,由于这 2 个邻居其实是同一个路由器,所以路由器 id 一样,至此前面所有的法则都无法打破僵局,最终只能根据建邻居地址越低越优先,选择了 10.1.12.2 的邻居关系发来的 BGP 路由。