1.根本原因

导致路由收敛环路的根本原因是:同前缀的不同路径,比较顺序不同,最佳路径选择的结果不同——存在路径比较环路

例如Net A有三条路径abc,如果存在如下关系,则可能会发生路由收敛环路

a > bb > cc > a

而如果不满足上述条件,三条路径相互比较,一定能够比较出优先级序列,例如

a > bc > ba > c,则有a > c > b

在此情况下,由于选路优先级明确,即便在收敛过程中可能会出现浮动,但是最终一定能够收敛到预测的结果


BGP中,具体表现为AS_PATH中最近的AS不一致时,不比较MED;而AS_PATH中最近的AS相同时比较MED

当有多条路径时,可能导致某些路径比较MED值,而某些路径比较其它选路参数


2.收敛环路现象及解决办法

2.1 现象

BGP Table Version值不断增加

and

BGP路径不断切换,路径数量也会发生浮动

2.2 解决办法

①配置deterministic-med,防止路由比较环路的产生——推荐做法

always-compare-med

③将MED值置为0(可以配合community使用)


3.iBGP全互联环境下的收敛环路

220353157.png

如上图所示,联盟内某个AS 4台设备分别收到4条相同前缀的更新,其优先情况为R1> R2 > R3R4 > R1R2 > R4R3 > R4

3.1 初始情况

R1

Path

Next Hop

AS_PATH

MED

RID

1

-

100

1

10.10.10.10

其它设备同理,这里不一一列出,红色路径表示当前选择的最佳路径

3.2 4台设备相互发送更新后,其BGP转发表分别如下

R1

Path

Next Hop

AS_PATH

MED

RID

1

R2

100

2

2.2.2.2

2

R4

200

1

4.4.4.4

3

R3

100

3

3.3.3.3

4

-

100

1

10.10.10.10

R1上选路未发生改变,下一步本地无操作

R2

Path

Next Hop

AS_PATH

MED

RID

1

R3

100

3

3.3.3.3

2

R4

200

1

4.4.4.4

3

R1

100

1

10.10.10.10

4

-

100

2

2.2.2.2

此时R2上的选路发生改变,R2下一步将回收向R1R3R4通告的更新

R3

Path

Next Hop

AS_PATH

MED

RID

1

R2

100

2

2.2.2.2

2

R4

200

1

4.4.4.4

3

R1

100

1

10.10.10.10

4

-

100

3

3.3.3.3

此时R3上的选路发生改变,R2下一步将回收向R1R2R4通告的更新

R4

Path

Next Hop

AS_PATH

MED

RID

1

R2

100

2

2.2.2.2

2

R3

100

3

3.3.3.3

3

R1

100

1

10.10.10.10

4

-

200

1

4.4.4.4

R4上选路未发生改变,下一步本地无操作

3.3 R2、R3的更新被回收

R1

Path

Next Hop

AS_PATH

MED

RID

1

R4

200

1

4.4.4.4

2

-

100

1

10.10.10.10

R1上的最佳路径发生改变,R1将回收通告的更新

R2

Path

Next Hop

AS_PATH

MED

RID

1

R4

200

1

4.4.4.4

2

R1

100

1

10.10.10.10

3

-

100

2

2.2.2.2

R2上最佳路径发生改变,R2将通告更新

R3

Path

Next Hop

AS_PATH

MED

RID

1

R4

200

1

4.4.4.4

2

R1

100

1

10.10.10.10

3

-

100

3

3.3.3.3

R4

Path

Next Hop

AS_PATH

MED

RID

1

R1

100

1

10.10.10.10

2

-

200

1

4.4.4.4

R4上最佳路径未发生改变,下一步无操作

3.4 R1回收更新,R2、R3通告更新

R1

Path

Next Hop

AS_PATH

MED

RID

1

R3

100

3

3.3.3.3

2

R2

100

2

2.2.2.2

3

R4

200

1

4.4.4.4

4

-

100

1

10.10.10.10

R1上的最佳路径发生改变,R1将通告更新

R2

Path

Next Hop

AS_PATH

MED

RID

1

R3

100

3

3.3.3.3

2

R4

200

1

4.4.4.4

3

-

100

2

2.2.2.2

R2上最佳路径未发生改变

R3

Path

Next Hop

AS_PATH

MED

RID

1

R2

100

2

2.2.2.2

2

R4

200

1

4.4.4.4

3

-

100

3

3.3.3.3

R3上最佳路径发生改变,R3将回收通告的更新

R4

Path

Next Hop

AS_PATH

MED

RID

1

R3

100

3

3.3.3.3

2

R2

100

2

2.2.2.2

3

-

200

1

3.3.3.3

R4上最佳路径发生改变,R4将回收通告的更新

3.5 R1通告更新,R3、R4回收更新

R1

Path

Next Hop

AS_PATH

MED

RID

1

R2

100

2

2.2.2.2

2

-

100

1

10.10.10.10

R1上最佳路径未改变

R2

Path

Next Hop

AS_PATH

MED

RID

1

R1

100

1

10.10.10.10

2

-

100

2

2.2.2.2

R2上最佳路径发生改变,将回收更新

R3

Path

Next Hop

AS_PATH

MED

RID

1

R1

100

1

10.10.10.10

2

R2

100

2

2.2.2.2

3

-

100

3

3.3.3.3

R3上最佳路径发生改变,下一步无操作

R4

Path

Next Hop

AS_PATH

MED

RID

1

R1

100

1

10.10.10.10

2

R2

100

2

2.2.2.2

3

-

200

1

3.3.3.3

R4上最佳路径发生改变,将通告更新

3.6 R2回收更新,R4通告更新

R1

Path

Next Hop

AS_PATH

MED

RID

1

R4

200

1

4.4.4.4

2

-

100

1

10.10.10.10

R2

Path

Next Hop

AS_PATH

MED

RID

1

R4

200

1

4.4.4.4

2

R1

100

1

10.10.10.10

3

-

100

2

2.2.2.2

R3

Path

Next Hop

AS_PATH

MED

RID

1

R4

200

1

4.4.4.4

2

R1

100

1

10.10.10.10

3

-

100

3

3.3.3.3

R4

Path

Next Hop

AS_PATH

MED

RID

1

R1

100

1

10.10.10.10

2

-

200

1

4.4.4.4

此时情况与(3)完全相同,收敛环路发生

3.7 小结

iBGP全互联网络存在路由收敛环路的风险,但是其发生概率相对较小,尤其是在非联盟环境中,由于MED之后将比较iBGPeBGP通告的更新(eBGP由于iBGP),当AS_PATH不同时,这往往会导致设备优选eBGP通告的更新,进而防止收敛环路发生

而在联盟内由于联盟内iBGP与联盟内eBGP优先级相同,此时路由会收到下一跳IGPmetricRID的影响,导致收敛环路发生的概率上升


4.RR环境下clients之间的收敛环路

220422133.png

如上图所示

R2收到更新为Net AAS_PATH 200 400MED 10R2RID22.22.22.22

R3收到更新为Net AAS_PATH 300 400MED 5R3RID33.33.33.33

R4收到更新为Net AAS_PATH 300 400MED 6R4RID4.4.4.4

三条更新如果直接比较有如下关系:

R2 > R3R3 >R4R4 > R2,存在路由比较环路

在该环境下,R2R3R4分别将更新通告给R1R1选择最优路径进行通告,依次下去,将产生路由收敛环路,这里不再详细分析


iBGP全互联相比,这里区别在于:

①选路由中间设备RR完成

RR上当MED无法比较出最优路径时,往往比较下一跳IGP开销或RID,而不存在eBGP由于iBGP的比较关系


5.RR网络的收敛环路

220444438.png

如上图所示

R2收到更新为Net AAS_PATH 200 400MED 10

R3收到更新为Net AAS_PATH 300 400MED 5

R4收到更新为Net AAS_PATH 300 400MED 6

R1上如果同时收到3条更新,IGP metric分别为

to R215

to R320

to R411

R8上入股同时收到3条更新,IGP metric分别为

to R220

to R325

to R46

三条更新如果在R1R8上直接比较有如下关系:

R2 > R3R3 >R4R4 > R2,存在路由比较环路

在该环境下同样存在路由收敛环路,这里不再详细分析


6.Confederation环境下的路由收敛环路

220511367.png

如上图所示,R5R6通告的更新内容与之前几个案例中相同,联盟内同一子AS中建立全互联iBGP会话,由于联盟内的子AS其长度为0,因此实际上该环境与RR网络中是相同的(R1R2R3中只选择最优的路径通告给R8,整体上讲,两个子系统都只将本地选择的最佳路径通告给另一个子系统),这里同样不再做详细分析


注意:

在上例与RR网络的收敛案例中,通过修改IGP metric确实也可以解决出现的问题,但是笔者认为,为了解决根本问题,还是应当配置deterministric-med这样的命令,一方面保证选路的合理性(相比较于always-compare-med),另一方面确保网络环境变化时的适用性