当 BGP 链路丢失然后又恢复时会发生什么?

网络工程 路由 bgp
2021-07-25 16:07:48

假设我们有两个路由器运行完全融合的 BGP,并且两个路由器都向彼此通告路由。它们之间的链接失败了(可以这么说)。现在,在hold down 计时器之后,两个路由器都认为对方已关闭。当链接恢复正常时会发生什么?我们是否必须重新配置 BGP 会话?如果不是,那么从每个路由器向另一个路由器通告的网络会发生什么情况?一旦链接恢复,它是否会立即再次通告,或者有某种更新计时器,以便每个路由器都将另一个视为向上邻居?

2个回答

当对等点重新启动时,它被视为一个新会话。TCP 握手,能力重新协商,地址族通告,然后 NLRI 交换。如果抑制计时器到期,则对等方被标记为死,会话进入空闲状态,并遵循自己的规则从空闲状态转换为活动状态(主动尝试建立 TCP 连接)。请注意,处于 IDLE 状态的对等方仍然可以接受来自其他路由器的入站 TCP 握手。

特定路由再次可用所需的确切时间取决于要在两个路由器之间交换的 NLRI 总数。如果您要交换完整表 (500K+ NLRI),根据两个路由器上的处理器大小,可能需要 5 分钟以上的时间。如果您只有 20 条路线要宣布,他们会很快处理 NLRI。

BGP以指定的时间间隔(默认为 60 秒)发送KEEPALIVE数据包。如果 BGP 没有收到来自邻居的 3 个 keepalive 数据包,HOLD DOWN 定时器超时,邻居被认为是死的。假设邻居关闭,关闭 BGP 会话,并从它的公告中撤消所有路由。

HOLD DOWN 计时器,它是 KEEPALIVE 的三倍(默认为 180 秒)。

当 BGP 对等体之间的链路恢复(物理上)并且邻居收到 KEEPALIVE 数据包时,会话将自动启动。对等点开始根据指定的标准在公告中通告他们的路由。您不必再次重新配置 BGP 会话。这是没有意义的,因为在实际环境中,BGP 会话经常失败。