BGP 收敛

  • BGP 收敛过程

  • 资料来源:

    <>

  • 更新

    1
    20.10.27 初稿完成

导语

方向突变到了 BGP 的研究,最近在疯狂试图平衡 效率 时间 和 睡眠..

积累了不少 BGP 的笔记,但是还没整理完,先发篇 bgp 收敛.

两个参考文献翻译(有少量删节)

  • BGP Path Hunting and Exploration
  • Understanding BGP Convergence

BGP 路径打猎和探索(??)

各类研究表明,BGP 收敛可以大致由以下公式给出

$$收敛 = (最长 AS_PATH – 最短 AS_PATH) x MRAI$$

根据 RFC 可知,MRAI(最低的路由通告间隔) 是指 bgp 对等体会话传递同一前缀的连续路由通告必须等待的时间,默认是 30s.最短时间适用于所有路由通告,即使路由撤销也不例外.在不同的 BGP 实现中,MRAI 可能由不同的取值,因此收敛时间大致由上面的公式给出.

让我们看看这个公式是如何得出的,一个如下的网络拓扑.

图1

A B C D E 分别是不同的 AS,假设在所有路由都已收敛的情况下,A 宣告自己有 10/8 的可达性.这意味 E 会将下面有关 10/8 的路径添加进 adj-RIBs-In:

  • p(B) -> AS_PATH {B A} (path learnt from B)
  • p(C) -> AS_PATH {C B A} (path learnt from C)
  • p(D) -> AS_PATH {D C B A} (path learnt from D)

在稳定状态下,E 会为 10/8 选择 AS_PATH {E B A}.

之后让我们看一下当 A 到 10/8 断路的情况,如下图所示.

图2

  • B 运行决策过程,发现没有其他路线可以到 10/8,向对等体 C E 发送明确的路由撤销.

  • E 收到 B 的撤销信息,运行决策过程.发现此时到 10/8 最佳路由是从 C 学到的 AS_PATH {C B A},于是 E 更新 RIB,并通告对等体,如图3所示.
    图3

  • E 切换到了下一个最佳路由(通过 C),继续转发流量 10/8,但是需要注意的是此时 E 绝对没可能知道 C 也收到了来源于 B 的 10/8 的路由撤回.

  • C 运行决策,并向对等体 D E 发送明确路由撤回.

  • E 收到 C 的撤回,重新运行决策,发现目前还有一条来自 D 的 AS_PATH {D C B A} 随即切换到该路径.当然 E 并不知道 D 收到了 C 的路由撤回.
    图4

  • 最后 D 向 E 发送路由撤回,E 删除了所有到 10/8 的可能路径,此时 BGP 收敛完成.
    ![图5](D now sends a withdrawal to E, and thereby removing all possible paths to 10/8 from E (fig 5). Its now that the network is converged.)

    刚刚我们看到的过程是 E 的 BGP 路径搜索.BGP 会搜索所有可能的 AS 路径,从短到长直到最后收敛.

    很容易证明,随着网络拓扑越来越复杂,路径搜索的数量在增加.最简单的情况,一颗联通无环图,可能的路径只有一个.每增加一个链路,都会在图增加一个环路,也就是可搜索的路径数量再增大.

    最坏的情况下,bgp 会搜索全部的可能路径后才能收敛.根据观察目前互联网上普遍的情况是,bgp 路径搜索需要额外 2 到 3 次的 bgp 更新,即路径搜索要 2 到 3次,bgp 才能收敛.

理解BGP收敛

这一篇似乎是能找到的比较好的关于 BGP 收敛的资料了.也有一些文章翻译了,先贴上了,又一个等日后..

理解BGP收敛 | Github Pages of D. HT. Y.