在过去的几年中,人们对现在的域间路由协议的替代方法,即边界网关协议(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:路径矢量协议中的策略传输问题
在图中AS2具有永不使用AS3进行数据传输这样一个策略。换句话说,源于AS4的业务总是通过大互联网而不是通过AS3传输到AS1。在公共互联网中这种情况很常见,比如当AS3是AS2的客户。那么,AS2将如何与AS4就该策略进行通信呢?
AS2可以简单地标记它发送到AS3的路由信息,使得AS3不能将它再次广播到AS4,但这是有问题的。通过将路由标记为NO_EXPORT群这种简单机制可以很容易让AS3简单地忽略它接收到的路由信息。我们可以对策略实施密码签名,使得AS3无法扰乱该策略而AS4从AS3接收到该信息后则能看到策略,但该机制本身即为问题之所在。
假设AS3直接从AS5接收到包含与AS2广播到AS3但却被AS3中止向AS4广播的的相同目的地址的聚合路由信息,AS3会将该路由信息向AS4重广播,AS4则选择这条较短前缀聚合作为到达AS1的目的地路径而不是选择通过大互联网的路径。AS4会转发流量到AS3,由于接收到的来自AS2的具有较长前缀的路由信息,AS2会转发流量到AS1中的目的地。与AS2的策略相反,AS3能够通过AS2传输流量到AS1。目前该问题还没有简单的解决方法。
安全性
BGP是一个不安全的协议,这点已经得到广泛的认同。它的许多地方都可能被攻击者入侵,嵌入错误路由信息以及进行其他攻击。IETF的路由协议安全(RPsec)工作组正在从事BGP脆弱性描述的相关工作,并且提出了各系统的BGP安全保证建议。关于这些草案的最新信息请参考RPsec主页:http://www.rpsec.org
对他们的工作可能会有哪些要求?
1. 任一建议机制必须能够体现具体的自治系统要经过授权才能发起明确路由信息这一原则
2. 任一建议机制必须能够表明在接收到的路由信息中承载的AS路径对应互联网中的一个真实路径,该路径由源AS开始并且结束于广播对等端。
除此之外,还有许多其他提供BGP安全的要求需要或者说应该得到满足,但这两点要求是在绝大多数领域都关心的。
解决问题
现在我们已经知道在这三个领域需要解决的问题了,但怎样才能真正解决这些问题呢?最好的解决方法应该是通过一个不会对目前的BGP改动过多的单一机制,当它被大范围的部署在互联网中时会给我们带来更多的好处并且能够理解和依赖于现有路由技术实现。
该机制的一个完美例子是简单地在BGP协议上覆盖一个互通链接状态图。该图提供自治系统间而非路由器间的联通信息并且可以用于传送互联网中的拓扑和策略信息而不是在互联网中查找一个非环路路径。
让我们回顾前面的三个例子,来看看如何通过覆盖一个互联网连接图来解决目前BGP面临的问题。
收敛速度
再次以我们的小互联网进行讨论:
图3:使用路径矢量协议的一个互联网样例
BGP查看自治系统中的每一个较长可能路径,直到最后发现丢失与10.1.1.0/24的连接时才收敛,如何来解决这个问题呢?AS12是否可以与互联网中每个自治系统直接通信并告诉它们它已经丢失了到10.1.1.0/24的连接,而不是象现在那样等待AS1去尝试每种可能路径并且依次发现每个路径都已被撤销了?
如果我们有一个网络的拓扑图,AS12就可以在它的连接信息中简单地删除10.1.1.0/24,然后AS12在域间基础上向互联网中的所有其他自治系统同时群发该信息。在最差的情况下,AS1会在它接收到来自AS6的关于10.1.1.0/24的第一个撤销消息时收到该信息,它会发现AS12不再连接到10.1.1.0/24,因此会删除包含AS12的所有到达10.1.1.0/24的可能路径。这会使AS1在同一时间删除路径{2,9,12}, {3,7,10,12},和{4,5,8,11,12} 。互联网能在AS1计算出新的连接图时收敛,并在它的本地表中检查每个进入条目和抛弃自治系统路径中包含AS12的路径。
我们并没有改变BGP在网络中查找路径的方式――除非我们从连接的对等端接收到广播否则路径不会生效。我们没有改变任何BGP更新消息的格式、也没改变任何对等状态机或任意其他东西。我们只是简单地在当前协议机制上覆盖了一个联通图,通过它我们可以加快网络的收敛。
如果只是部分部署将会怎样呢?比如只有自治系统6,7,8,9,10,11,和12运行了这种新的扩展,它仍然会帮助我们加快网络收敛吗?当AS12撤销10.1.1.0/24连接时,AS6, 7, 8, 9, 10和11将立即抛弃任何通过AS12到达10.1.1.0/24的路由。此时,他们将各自发出撤销路由信息,也即AS1,2,3和5会在同一时间接收到撤销信息。这减少了AS1搜索的路径的数量,降低了网络收敛的时间。即使没有全部部署,我们也可从这种新技术中获益。
策略
下面让我们看看在互联网上覆盖了联通图后我们遇到的策略问题会是怎样呢?
大互联网
不传输
聚合信息
图4 联通图上的策略应用
在此,我们会发现AS2可以对AS3应用不传输业务数据这一策略。根据此策略,AS4就可以独立地改变AS2对AS3的业务传输策略,即AS4检查它接受到的来自AS3的路由信息并决定是否要装载该路由信息。
联通图的缺陷
链接状态协议作为BGP的一个可能替代协议,在刚提出来时就遇到了两个主要的障碍:
1. 供应商不愿意接受用一个新协议来完全更换现有系统
2. 由于政策的原因许多运营商希望对其他运营上或客户隐藏它们的策略和连接特性
本文只是讨论BGP的改进而不是BGP的更换,因此上述第一个障碍对本文的方法来说并不是问题。而第二个障碍,即使用某一连接状态协议用于域间路由对我们来说也不是问题,因为我们没有建议改变网络中的BGP搜索无环路路径的方式。本文提出的联通图并不是用来在网络中查找路径,它只是用来加快路径丢失的信令传输(通过对撤销机制进行短路来实现)并提供了一个策略和安全信息处理的方法。
关注于一些小的方面使我们能够设计一个较小的能够以简单方式进行增量部署的解决方案集。
第二个问题比较难解决,这是因为在各种可能的情况下很难定义和理解路由系统内的策略。实际上,目前还有许多策略需求都无法通过BGP来满足,而是通过契约、分组过滤器以及其他机制来实现的(甚至有时是通过违反BGP规范实现)。
下面我们来考虑关于该建议的两个事实,该建议解决了我们在这个领域中碰到的许多问题:
1. 联通图可以应用于互联网的局部和不同地区。例如,某个服务供应商要依靠策略信息向它连接的不同对等端提供不同的视图。
2. 联通图只包含自治系统层的连接信息,而没有具体的对等端信息。比如,两个自治系统可能在许多地方都有连接,或者可能少到只有一个连接。但联通图并不关心这些细节,它只关心是否存在至少一个连接。这样一个联通图不会暴露对等自治系统间的实际连接点和有多少个连接,也不会暴露两个对等端之间商务关系的其他信息。
实际上,联通图能够提供的互连信息类型可以通过检查来自各种路由视图服务器的可用路由自治系统路径得到。这可能要求使用某些机制在一个可用的图中来比较这些信息,但目前大量的关于大规模网络的尺度和收敛属性的研究实际上依赖于在开始工作前建立联通图的能力,所以比较这些数据的机制已经存在了并且正在使用。
安全性
通过签名证书,网络联通图实际上可用于显示是否存在一条从源到广播端的路径。比如,soBGP[6] (ftp://ftp-eng.cisco.com/sobgp/index.html)使用该机制来验证接收的路由信息中承载的自治系统路径的有效性。该领域的其他研究目前也正在进行之中。
总结
我们提出了一个可以解决BGP近期面临的问题的简单方法,可能还为网络界提供了一个关于其他前沿领域的参考发展方向。对BGP进行逐步改进这一概念促使我们进行思考:是对BGP进行小的改变但使它越来越复杂呢还是承受所有部署问题而更换BGP协议呢?