边界网关协议,边界网关协议内容有哪些?
边界网关协议,边界网关协议内容有哪些?
介绍 BGP是自治系统间的路由协议。BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策(要点见RFC1104[2])。特别地,BGP交换包含全部AS path的网络可达性信息,按照配置信息执行路由策略。
随着近年来互联网的进步和增长,它也不得不面对一些严重的规模问题,包括:
-B类网络地址空间的耗尽。该问题的主要原因之一,是缺少适于中型组织的中等大小的网络;C类网络,最多拥有254个主机地址,实在太少,而B类网络允许最多65534个地址,却又太大无法充分使用。
-互联网路由器中路由表的增长使目前的软件(和人们)无法有效管理。
-32位IP地址空间的耗竭。
很明显,前两个问题和最后一个问题可能分别在今后一两年内和三年内变得急迫。无类别域间路由(CIDR)试图解决这些问题,设计相应机制来降低路由表和对新IP网络分配需求的增长速度。它并没有解决更具长期性的第三个问题,而是努力让近期问题推迟使得互联网仍能有效运作,同时着手远期的解决方案。
BGP-4对BGP-3做了扩展,支持路由信息的聚合及基于无类别域间路由体系(CIDR)[3]的路由减少。本备忘录论述了BGP-4在互联网中的应用。
本文档的所有讨论基于如下假设:互联网是一些随意连接的自治系统的集合。也就是说,互联网可以建模成一张一般的网络图,图上节点是AS,边是每对AS间的连接。
自治系统的经典定义是,一组路由器在统一管理之下,在AS内使用内部网关协议和统一度量来路由数据包,而通过外部网关协议将数据包路由到其他AS。该经典定义尚在发展,一些AS在其内部使用多种内部网关协议和度量。在此,强调一下自治系统在本文档中的含义,即使它采用多种IGP和度量,它的管理区别于其他 AS,其内部路由是一致的,当路由穿越它时,它在图上视作一个节点。
每个AS由一个管理机构管理,至少在外部看来它代表着该系统的路由信息。
BGP拓扑模型 当我们说一个在两个AS之间的连接时,意味着两件事:
物理连接:两个AS之间存在一条共享的数据链路子网,并且在该子网上,每个AS至少有一台自己的边界网关路由器。因此,每个AS的边界网关路由器可以转发数据包到其他AS的边界网关路由器,无需借助于AS内到AS间的路由。
BGP连接:在各个AS的BGP发言人之间有一个BGP会话进程,通过会话沟通路由,经过声明的AS到达某目标网络。
因此,在每个连接中,每个AS拥有一个以上的BGP发言人和边界网关路由器,这些BGP发言人和边界网关路由器分布在共享数据链路子网上。注意到, BGP发言人不一定是边界网关路由器,反之亦然。一条连接上一个AS的BGP发言人声明的路径可以被同一个共享子网上其他AS的边界网关路由器使用,也就是非直接的邻居是允许的。
一个AS内的流量,要么是源于该AS,要么是终于该AS(也就是说,IP数据包的源IP或目的IP在该AS内)。符合以上描述的流量称为"本地流量",否则称为"过渡流量"。BGP使用的主要目的是控制过渡流量。
按照某AS如何处理过渡流量,AS可以分为以下几类:
末端AS:只连接到一个其他AS。自然地,末端AS只运输本地流量。
多宿主AS:连接到超过一个的其他AS,但不运输过渡流量。
过渡AS:连接到超过一个的其他AS,可以运输本地和过渡流量。
一个完整的AS path提供了有效和简捷的方式来避免路由回路、消除伴随距离向量算法的"计数到无穷"问题,因此,BGP没有对AS之间的连接拓扑加以任何限制。
互联网中的BGP 1 拓扑学考虑
互联网拓扑可以视作过渡AS、多宿主AS和末端AS的任意互连。为了尽可能减少对目前互联网结构的影响,末端和多宿主AS不一定要使用BGP。这些AS 可以运行其他的协议(比如,EGP)来与过渡AS交换网络可达性信息。使用BGP的过渡AS将对这些信息做标记,以表明其学习自BGP以外的方法。BGP 不一定运行于末端或多宿主AS,这就不会对源于或终于末端AS或多宿主AS的数据包的AS间路由质量产生负面影响。
然而,仍然建议在末端和多宿主AS上使用BGP。在这些情况下,BGP相比其他目前使用的协议(比如EGP),可以提供更优的带宽和性能。另外,这将减少默认路由的使用,为多宿主AS的AS间路由提供更好选择。
2 BGP的整体特性
整体水平上,BGP用来在多个自治系统间传递路由信息。在AS间只用BGP传输信息,而在AS内BGP和IGP均可以传输信息。确保AS内BGP和IGP间路由信息的兼容性,是一个重大问题,最后将在附录A中详细讨论。
3 BGP邻居关系
互联网视作随意连接的AS的集合。通过BGP直接连接的路由器就是BGP发言人。BGP发言人可以在同一AS内,也可以在不同AS内。每个AS的BGP 发言人互相通信,遵照每个AS建立的策略,交换网络可达性信息。对某BGP发言人,如果与其他BGP发言人通信而且那个BGP发言人在不同的AS,则那个其他 BGP发言人称为外部对等体,而如果在相同的AS内,则称为内部对等体。
在一个AS内可以有许多BGP发言人并被认为是需要的。通常,如果一个 AS与其他AS有多个连接,则需要多个BGP发言人。所有BGP发言人代表着相同AS,对外保持统一形象。这就要求他们之间保持一致的路由信息。这些路由器可以通过BGP或其他方法互相通信。在同一AS内的所有BGP发言人的策略约束必须一致。一些技术,如使用带标记的IGP(参见A.2.2),可以用来探测可能的矛盾。
对于外部对等体,对等体分别属于不同的AS,但共享同一数据链路子网。这共同的子网用来在对等体之间运输BGP信息。如果BGP使用通过一个干预的AS,则将使AS path信息无效。自治系统号必须在BGP中使用,用来标明BGP发言人所在的自治系统。
4 路由聚合的需要
当路由信息由各部分聚合时,一致的BGP-4实现需要对其声明。例如,一个在自治系统边界的BGP发言人必须能产生某目标IP集合的聚合路由(在BGP -4 术语中该目标IP集合称为网络层可达性信息,NLRI),在它基础上进行管理(包括路由器自身代表的地址),即使当这些地址不是同时全部可达的。
当聚合的NLRI产生时,一致实现应能给予声明。
当NLRI解聚合时,一致实现应能给予声明。
当出现重叠路由时,一致实现应能支持如下选项:
-安装聚合和详细的路由
-只安装详细路由
-安装聚合路由
-均不安装
一定的路由策略可能依赖于NLRI(比如,"研究"与"商业")。因此,一个运行路由聚合的BGP发言人,可能的情况下,应该能认知聚合NLRI时路由策略的潜在实现。
5 BGP的策略生成
BGP通过各种路由参数选择和约束,实现策略。策略并不直接编入协议。而是,策略通过BGP的配置信息来实现。
BGP实现策略的途径有,影响从多条路径中的选择,控制路由信息的下步传递。策略由AS的管理者决定。
路由策略与政治、安全或经济考虑有关。
例如,如果一个AS不愿意将流量运输到其他AS,它可以制定策略来禁止。如下是一些能够改变BGP使用的路由策略的例子:
a. 一个多宿主AS可以拒绝成为其他AS的过渡AS。(它只告知那些目标网络在自己AS内部的路由。)
b. 一个多宿主AS可以指定成为几个相邻AS的过渡AS,也就是说,一部分而不是全部AS,可以把该多宿主AS作为过渡AS。(它只把它的路由信息告知被允许的AS。)
c. 一个AS向外运输流量时,可以决定是否偏爱特定的AS。
BGP应用可以控制许多性能相关的标准:
a. 一个AS可以最少化过渡AS的数目。(AS path越短,越可能被采用。)
b. 过渡AS的权重。如果一个AS决定,两个以上的AS path可以用来到达目标网络,那么,AS可以使用多种方法来决定采纳哪个候选AS path。一个AS的权重值由以下几个因素决定:径向距离,链路速度,容量,拥塞的趋势,和运行质量。这些性能值可以由BGP以外的方法决定。
c. 优先考虑内部路由,而不是外部路由。
为了一个AS的统一性,那些产自策略和/或正常路由选择过程的等值路径,必须以一致的方式解决。
BGP的基础,是这样一个规则:一个AS只把自己使用的路由通知给相邻的AS。该规则反映了目前互联网常用的"一跳接一跳"的路由方式。
6 BGP的路径选择
BGP 发言人的一项主要任务,是评价诸条从自身出发到那些用网络前缀表达的目的地的路径,从中选出最优,应用合适的策略约束,然后将它通知给所有的BGP邻居。关键问题是如何评价和比较这些不同的路径。传统的距离向量协议(比如RIP)中,每条路径只有一个度量。因此,不同路径的比较简化为两个值的比较。AS间路由的复杂性,源自人们在如何评价外部路由的问题上缺少共同认可的度量。于是,每个AS拥有自己的一套对路径的评价指标。
BGP发言人构建的路由数据库,由所有可用的路径和每条路径可达的目标集合(表达为网络前缀)组成。为了达到前面讨论的目的,考虑目标网络所对应的可用路径,是有用的。大多数情况下,我们期望找到唯一一条可用路径。但是,当不是这样时,所有可用的路径应当保存,当主要路径缺失时,保存能以最快的速度适应,(产生新的主要路径)。任何时候,只有主要路径才会被广播。
路径选择过程可以形式化为,对所有可用路径及相对应的目标IP,定义完整的优先级。定义这种优先级的一种方法,是定义一个函数,将每条完整的AS path映射成一个非负整数,用来表示该路径的优先级。路径选择于是简化为,将该函数应用到所有可用路径,再选择最高的优先级。
在真实的BGP实现中,为路径分配优先级的标准在配置信息中说明。
为路径分配优先级的过程源于以下几个信息:
a. 整条AS path显示的信息
b. 由AS path和BGP以外信息(比如,配置信息中的路由策略约束)引申出来的混合信息。
为路径分配优先级的可能的标准为:
-AS数目。AS越少,该条路径越好。
-策略考虑。BGP对基于策略路由的支持,源于对分布式路由信息的控制。 一个BGP发言人可能知道几条策略约束(包括自身AS的内外),进行合适的路径选择。不遵从策略要求的路径不被考虑。
-某些AS是否在路径中存在。依靠BGP以外的信息,一个AS可以知道某些AS的一些性能特点(比如,带宽,MTU,AS间径向距离),然后选择偏爱程度。
-路径起源。由BGP学习而来的整条路径(也就是说,路径终点与路径的上一个AS在BGP内部)相比那些部分学习自EGP及其他方法的路径,是更优的。
-AS path子集。通往同一目的地,一个较长AS path的子集将受到偏爱。在该较短AS path中存在的任何问题都也是较长AS path的问题。
-链路动态。稳定的路径比不稳定的路径更受欢迎。注意,这个标准应被小心使用,避免出现路由抖动。一般来说,任何依赖于动态信息的标准都可能引发路由不稳定,所以应谨慎对待。
支持路由策略的必备集合 BGP策略以配置信息的形式实现。该信息不直接编入协议。因此,BGP可以提供非常复杂的路由策略。但是,并不要求所有的BGP实现支持这些策略。
我们不试图将路由策略标准化使其适用于每个BGP实现,强烈鼓励所有的实现支持如下的路由策略集:
1. BGP实现应允许一个AS控制向相邻AS广播由BGP学习来的路由。实现还应支持对地址前缀大小的控制。实现还应支持对自治系统大小的控制,不管该自治系统是起源,还是邻居。如果某路由对某外部对等体按上述控制声明,则需注意该路由不能向那个对等体通告。特别地,本地系统必须明确向那个对等体通告,该路由现在不可用。
2. BGP实现应允许一个AS对某条路径优先考虑(当存在多条可用路径时)。实现至少具备以下相同功能,允许管理者对来自邻居的路由设置优先级。优先级的大小应在0到2^(31)-1之间。
3. BGP实现应允许一个AS忽略某些在AS_PATH属性中存在特定AS的路由。该功能的实现,可以使用[2]中说明的技术,设置这些AS的"weight"为"infinity"。路由选择过程必须忽略那些"weight"为"infinity"的路由。
与其他外部路由协议的关系 本部分建议的指导方针与[3]中陈述的指导方针一致。
一个AS应通告它内部目标网络的最小聚合及与实际使用的地址空间的关系。这可以被非BGP-4的AS的管理者用来决定从某条聚合路由可以解聚出多少路由。
一个携带ATOMIC_AGGREGATE路径属性的路由,不应传递于BGP-3或EGP2,除非这种传递不出现路由NLRI的解聚。
1 与EGP2交换信息
为过渡顺利,一个BGP发言人EGP2和BGP-4都可以参与。因此,一个BGP发言人接收IP可达性信息,可能产自EGP2,也可能产自BGP-4。由 EGP2产生的信息,将ORIGIN路径属性设为1后,可插入BGP-4。同样地,由BGP-4产生的信息也可以插入EGP2。但是,第二种情况,当从 BGP-4接收来的IP前缀代表连续的A/B/C类网络集合时,应清楚潜在的解聚信息。由BGP-4接收的NLRI代表IP子集,插入时,要求BGP发言人将相应的网络插入EGP2。本地系统将提供控制EGP2与BGP-4之间可达性信息交换的机制。特别地,当把来自BGP-4的可达性信息插入EGP2 时,一个一致实现要求支持所有如下选项:
-插入默认的(0.0.0.0),不传递其他NLRI
-允许受控的解聚,但只对特定路由;
-允许传递非聚合的NLRI
-允许只传递非聚合的NLRI
在一个参与BGP-4的BGP发言人和一个单纯的EGP2发言人之间以EGP2交换路由信息的情况,只可能发现在域(自治系统)边界。
2 与BGP-3交换信息
为过渡顺利,一个BGP发言人BGP-3和BGP-4都可以参与。因此,一个BGP发言人接收IP可达性信息,可能产自BGP-3,也可能产自BGP-4。
一个BGP发言人可能按如下方式将来自BGP-4的信息插入到BGP-3。
如果一条BGP-4路由的AS_PATH属性带有AS_SET路径段,那么,BGP-3路由的AS_PATH属性应为将此AS_SET段视作 AS_SEQUENCE段,最后的AS_PATH为单纯的一个AS_SEQUENCE。这个过程损失了set/sequence信息,但不影响预防路由回路,但可能影响策略,如果策略是建立在AS_PATH属性的内容或顺序上的话。 把源自BGP-4的NLRI插入BGP-3,当从BGP-4接收来的IP前缀代表连续的A/B/C类网络集合时,应清楚潜在的解聚信息。由BGP-4接收的NLRI代表IP子集,插入时,要求BGP发言人将相应的网络插入BGP-3。本地系统将提供控制BGP-3与BGP-4之间可达性信息交换的机制。特别地,当把来自BGP-4的可达性信息插入BGP-3时,一个一致实现要求支持所有如下选项:
-插入默认的(0.0.0.0),不传递其他NLRI
-允许受控的解聚,但只对特定路由;
-允许传递非聚合的NLRI
-允许只传递非聚合的NLRI
在一个参与BGP-4的BGP发言人和一个单纯的BGP-3发言人之间以BGP-3交换路由信息的情况,只可能发现在自治系统边界。在一个单独的自治系统内部,所有BGP发言人的会话必须要么是BGP-3,要么是BGP-4,不能是混合体。
在虚拟交换线路上的运作 BGP使用在虚拟交换子网(SVC)上,被要求产生尽可能少的流量。特别地,可能被要求消除由周期性KEEPALIVE消息所产生的流量。BGP包含了一个机制,在虚拟交换线路(SVC)服务运作时,避免SVCs始终开启,允许它终止周期性KEEPALIVE消息的发送。
本部分论述了如何在没有周期性KEEPALIVE消息的条件下,使用智能的SVC管理,使SVC使用最少。所提议的方案也适用于"永久"线路,"永久"线路支持类似链路质量监测的特性,或者可以显示请求来决定链路连接的状态。
1 建立BGP连接
通过在OPEN消息中设定Hold Time为0来实现
2 线路管理器特性
线路管理必须具备足够的功能来弥补周期性KEEPALIVE消息的缺失:
-必须能够在失败发生的可预见的有限时间内,确定链路层的不可达性。
-关于确定不可达性,应该:
-开启一个配置死寂的计数器(与典型的保持计数器值相比)。
-试图重建链路层连接。
-如果死寂计数器终止,应该:
-发送一个内部线路DEAD指示给TCP。
-如果连接重建,应该
-取消死寂计数器
-发送一个内部线路UP指示给TCP。
3 TCP特性
TCP须做一点修改,来处理来自线路管理器的内部通告:
-DEAD:清除发送队列,取消TCP连接。
-UP:发送任何队列数据,或者允许向进程传递TCP调用
4 混合特性
一些应用可能无法保证BGP进程和线路管理器统一工作;也就是说,当一个停止或崩溃时,另一个仍独立存在。
如果这是事实,在BGP进程和线路管理器之间周期性的双向握手就需要实现。如果BGP进程发现线路管理器死亡,它就关闭所有相关的TCP连接。如果线路管理器发现BGP进程死亡,它将关闭所有与BGP进程相关的连接,拒绝新连接。