在过去的几年中,人们对现在的域间路由协议的替代方法,即边界网关协议(BGP)进行了大量的研究和思考。例如:
1. 2002年,互联网研究工作组(IRTF)发布了下一代域间路由协议的需求集合。实际上,关于此领域已经发布了好几个需求集合文档了。
2. 2001年12月,The Cook Report(客观审计报告)提到需要更换BGP协议
3. 2003年10月,互联网路由演进和设计工作组(WIRED)发表了若干论文讨论BGP需要被更换的问题
4. 2001年12月,互联网工程任务组(IETF)发布RFC 3221[5],作者Geoff Huston,文中提出了一些关于寻求BGP更换的背景信息
数以千计的杂志文章、会议记录和研究论文都认为应该更换BGP协议。当然,所有这些讨论都在同一个地方遇到了问题:在目前的公共互联网中甚至是在任何运行BGP协议的私有网络中大规模更换BGP几乎是不可能的。
最根本的问题是不能将互联网停止下来并且不能在互联网运行状态下更换路由协议。人们提出了许多好的想法来解决该问题――复杂过渡方案,移动分区以及各种其他想法。但最终,在互联网这种大规模以及地理分布和所有权不统一的网络上实现路由协议过渡的难度使得所有关于新域间路由协议的提案都遭到搁置。在《互联网协议期刊》的一篇文章中Geoff Huston说:
"另一种方法是考虑通过约束策略的应用和在发送和接收端管理流量工程需求对域间连接管理需求进行解耦。该方法可能会使用一个链接状态协议来维护域间网络拓扑的一致性,然后使用某种形式的覆盖协议对每个自治系统的策略需求进行协商并且进行再次覆盖来支持域间业务流需求。
在本文中,我们从一个新的角度来着手解决这个问题并建立这样一种概念:即与其要更换BGP或尝试一次性解决所有目前遇到的BGP相关问题,不如我们试着以一种不会影响BGP日常运行的方式来解决两个问题;与其要更换BGP,不如通过引入新的功能来增强它并满足新的需求。由于BGP已经部署于整个互联网中,因此如果处理得当,我们将可避免部署一种新路由协议的问题。
BGP问题
如果不讨论为什么如此之多的人认为需要更换BGP,那么关于BGP的讨论将是不完整的。我们需关注此领域的三个要点:收敛速度、策略和安全。每个要点都用一节来讨论。
BGP收敛速度
通过各种研究以及对BGP工作方式的检验,数据显示在域间环境中BGP总是粗略地按如下公式收敛:
(最大 AS_PATH-最小 AS_PATH)-最小广播间隔
要理解为什么会出现这种情况,我们看看下面例子中小互联网的收敛情况。
图1:互联网使用路径矢量协议的一个例子
我们假设自治系统(AS)12正在广播目的地址10.1.1.0/24,并且互联网中的其他自治系统均选择右边的路径以到达目的地。例如,AS4选择路径{5,8,11,12}到达10.1.1.0/24,AS3选择路径{7,10,12}到达10.1.1.0/24, AS2选择路径{9,12}到达10.1.1.0/24, AS6则选择路径{12}到达10.1.1.0/24。
现在,让我们看看如果AS12丢失了到10.1.1.0/24的连接会发生怎样的情况。首先AS12发出一个撤销消息,该消息几乎在同一时间到达AS6,9,10和11。然后这些自治系统发出撤销消息,第二组撤销消息同时到达AS1,2,7和8
当AS1接受到第一个撤销消息时,它会检查它的本地表并且找到到达10.1.1.0/24的下一个非常好的路径为通过AS2的{2,9,12}。可AS1并不知道在它收到来自AS6的关于该地址的撤销消息的同时AS2也收到了撤销消息。所以AS1切换到下一个非常好的路径并且继续转发流量给10.1.1.0/24.
AS2,7,8现在也发送撤销消息到它们的对等端,包括AS1,3,和5。现在AS1接收到另外一个撤销消息,该消息与它目前使用的到达10.1.1.0/24的路径冲突。AS1检查它的本地表并发现还有另外一条路径,即可以通过{3,7,10}到达10.1.1.0/24,所以它切换到该路径,却不知道AS3刚收到同一路径的撤销消息。紧接着AS3和5向它们的对等端AS1和4发出撤销消息。AS1再次接收到与它到达10.1.1.0/24路径冲突的消息,它将检查本地表并发现还可以通过{4,5,8,11,12}路径到达目的地,然后AS1切换到该路径,而不知道此时AS4刚接收到了撤销消息。
接着AS4发出到AS1的最后一个撤销消息,将AS1的最后到达路径从本地表中删除。现在AS1删除了所有到10.1.1.0/24的到达信息,此时网络收敛。需要注意的是在该情况下的实际收敛过程可能会更复杂一些,AS1每次发出更新消息时,所有其他的自治系统都会进行相应的再次收敛,但我们只使用通过网络的最简单消息集合来阐明收敛时BGP遵循的基本流程。
这个简短的例子阐述了BGP是如何具有前面描述的收敛特征的。BGP搜索每个可能的自治系统路径,从最短路径到较长路径,直到最后收敛为止。搜索每个可能的自治系统路径的速率取决于最小广播间隔,该间隔即为新的路由信息被允许在系统中传输的速率
该问题有若干个显而易见的解决方案。第一个方案是通过减少最小广播间隔加大路由信息经过系统的速率。但这与路由振荡惩罚和总体网络稳定冲突。因此,除了那些具有较低可能下限的网络外,减少最小广播间隔的方法是不可用的(在没有进一步改变BGP的前提下)。
另外一个解决方案是简单地在源撤销信息中增加一个"原因代码"。上述例子中如果AS12在源上声明它撤销到10.1.1.0/24的连接是因为它失去了到该地址的本地连接的话,与该地址相关的所有AS12路径都会在第一步骤时被立即抛弃。该方式的问题在于确保撤销消息在整个网络中传播,从AS12的所有路径到AS1。由于BGP是一种高效率的协议,类似的许多控制信息会通过隐性撤销、聚合和其他机制从网络中被清除掉。
策略
BGP的第二个问题是该协议对策略很不敏感。比如,以下面的小网络为例,我们以一个具体的例子来说明BGP的策略传输和执行是存在问题的。
大互联网
不传输
聚合信息
图2:路径矢量协议中的策略传输问题