BGP 僵尸路由问题是指当 BGP 邻居发送撤销信息时,局部路由器未能处理该信息,导致路由表中仍然保留该路由的现象。这种情况下,局部 BGP 发言者仍然认为该路由存在,如果收到目的地址在该路由中的数据包,则会将其转发到仍然认为位于该路由路径上的路由器。由于邻居路由器已经撤销该路由,数据包最终会被丢弃。
BGP 路由刷新机制
BGP 路由刷新机制是通过 Route Refresh 请求来实现的,该请求允许一个 BGP 发言者请求其邻居重新发送其路由表中的所有路由。这种机制可以帮助解决 BGP 僵尸路由问题,但在早期的 BGP 规范中(直到 2000 年发布的 RFC 2918),这种机制并不存在。因此,在早期,BGP 发言者一旦与其邻居失去同步,唯一的解决方法是关闭 BGP 会话并重新启动。这种方法并不是非常有效,因为发送撤销路由的发言者假设邻居已经收到并处理了该信息,而接收者可能在处理之前已经丢弃了该事务。
BGP 僵尸路由问题的影响
BGP 僵尸路由问题可能会导致数据包被转发到错误的路由器,特别是在有覆盖聚合路由的情况下。这种情况下,数据包可能会被转发到错误的目的地,导致网络通信错误。为了解决这个问题,需要定期发送 Route Refresh 请求,但发送频率是一个需要考虑的问题。
研究现状
BGP 僵尸路由问题已经被长期怀疑,但直到 Gert Döring 在欧洲 RIPE 会议上开始定期报告 IPv6 路由表状态后,这个问题才被广泛注意到。目前,研究人员正在继续研究这个问题,以更好地理解其影响和解决方法。
对于运维和网络工程师来说,理解 BGP 僵尸路由问题及其解决方法至关重要。通过定期发送 Route Refresh 请求和监控路由表,工程师可以帮助确保网络通信的正确性和可靠性。同时,研究人员继续研究这个问题,以提供更好的解决方法和改进网络协议。
原文: APNIC Blog(2025-02-10)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog