【BGP】面试及项目排错中必不可少的知识点

2021-05-27 16:05:20 浏览数 (1)

当到达同一目的地存在多条路由时,BGP 依次对比下列属性来选择路由:

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

(2)优选本地优先级(Local_Pref)最高的路由。如果路由没有本地优先级,BGP 选路时将该路由按缺省的本地优先级100 来处理。

(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)优选 Cluster_List 最短的路由。

(10)优选 Router ID 最小的设备发布的路由。

如果路由携带 Originator_ID 属性,选路过程中将比较 Originator_ID 的大小

(不再比较 Router ID),并优选 Originator_ID 最小的路由。

(11)优选从具有最小 IP Address 的对等体学来的路由

BGP的选路规则,举例说明每条规则的具体使用

首先,路由的下一跳必须可达:

(1)prefer-value

首选值,默认为0,数值越大越优先,本地有效

(2)local-pre

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

(3)本地始发

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

如上图,如果R1,R2都将10.1.12.0/24宣告进BGP的话,R2能收到R1发过来的10.1.12.0的路由,prefer-value和local-preference都一样,但是本地发起的优先,

所以bgp表中自己宣告的路由为最优路径。

(4)as-path

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

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

(5)origin(i>e>?)

IGP>EGP>Incomplete

(6)med

数值越小越优先,默认为0。(bestroute med-none-as-maximum可以将med默认值改到最大4294967295)

默认只比较as-path中最近一个as号相同的路由,否则忽略此条。

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

(7)ebgp>ibgp

ebgp>ibgp>localcross路由>remotecross路由

(8)优选BGP的下一跳在IGP中metric值小的

II、是否支持负载均衡<maxmum load-balance>

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

(9)cluster-list

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

(10) 优选Router ID最小的设备发布的路由。

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

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

2、router-id越小越优先。

(11)peer ip address

peer命令后的地址,地址小的发来路由优先。

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

问题1:如图所示,控制AS10访问AR4的lo0,Local-preference可以怎么配置,有什么区别?

比如在R2上,

1.可以peer R4的import加上router-policy。改变local-preference,这样可以影响整个AS的选路;

2.可以peer R1的export加上router-policy,改变local-preference,这样影响AS内除R2外的所有路由器。

问题2:第3条选路原则和第5条选路原则有什么区别?

第3条选路原则,是针对自己产生的路由,当设备通过network和import产生相同的路由时,只会将network产生的路由发给BGP对等体。

第5条选路原则,是针对邻居产生的路由,路由器从两个不同的邻居处收到,通过network和import产生相同的路由,那么路由器会优选network产生的路由。

问题3:来自不同AS的相同BGP路由,会比较MED值吗?

不会比较MED。当然也可以通过配置一条命令:compare-different-as-med使设备即使从不同AS收到相同路由时,也会比较MED值;

问题4:BGP比较到哪一条就可以实现负载分担?

如果在前八条都一致,配置maximum load-balancing >=2 命令后,满足如下所有条件的多条BGP路由会成为等价路由,形成负载分担:

  1. 原始下一跳不相同。
  2. 都是聚合路由,或者都不是聚合路由;
  3. AS_Path属性完全相同;

问题5:为什么设计者要让EBGP优于IBGP?

此时属于选路规则第7条,证明上面的选路规则是一样的。

IBGP过来的路由是在本AS内传递了之后才传递给本台路由器的,(经过域内其他

设备)

EBGP邻居传来的路由是离目的网络更近的路径,

而就是说,这样设计,可以在一定程度上防止次优路径

问题6:为什么负载均衡要求as-path的内容一定要相同,为什么负载均衡默认不开启?

保证数据在传递的时候经过的AS相同,如果负载经过的AS不同,不同AS内的路径开销以及经过设备的数量不同,可能会导致次优路径;

BGP的路径属性不代表链路的开销及带宽情况(以及延迟和抖动);

环境描述:R1、R2、R3都属于AS10,R4、R5属于AS40,R1、R2、R3和R4建立

EBGP,R4和R5建立IBGP,R1、R2、R3上宣告了网络10.10.10.0/24,R4上的

maximum load-balancing为2,

问题:

此时R4会选择哪两条路由下放到路由表?

R4是否会把所有的路由都通告给R5?

R4会根据选路规则往下比,选择router-id小的那两条BGP路由放到路由表,R4

不会通告所有的路由给邻居,当R4使用命令maximum load-balancing后,R4会

把下一跳改为自己的更新源,所以只会传递一条最优的路由给R5。

问题7:如图所示,R1去往10.1.4.4/32的下一跳分别为R2(10.1.2.2)、R3(10.1.3.3),此时R1和R2之间运行ospf,cost=10。R1和R3之间运行rip,metric=1,那么R1去往10.1.4.4/32的下一跳是谁?

R1去往10.1.4.4/32时,下一跳为R3。

根据BGP选路规则,比较到第八条,metric值小的(不关心路由协议优先级)。

因此R1去往10.1.4.4/32时,下一跳为R3。

0 人点赞