Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routing and reachability information among autonomous systems (AS) on the Internet.[1] The protocol is often classified as a path vector protocol but is sometimes also classed as a distance-vector routing protocol. The Border Gateway Protocol makes routing decisions based on paths, network policies, or rule-sets configured by a network administrator and is involved in making core routing decisions.
BGP may be used for routing within an autonomous system. In this application it is referred to as Interior Border Gateway Protocol, Internal BGP, or iBGP. In contrast, the Internet application of the protocol may be referred to as Exterior Border Gateway Protocol, External BGP, or EBGP.
边界网关协议(英文:Border Gateway Protocol, BGP)是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。
BGP是为了替换外部网关协议(EGP)协议而创建的,允许运行一个完全分散的路由系统,从ARPANET模型的核心路由系统过渡到包括NSFNET骨干网及其相关区域网络的分散系统。这使得互联网成为一个真正的分权制度。自1994年以来,第四版本的BGP在互联网上使用,所有以前的版本现在已经过时不可用。在第4版主要的增强功能是通过支持无类别域间路由和路由聚合来减少路由表的大小。第4版是在早期的 RFC 1771 第4版的基础上编纂,通过20多个草案修改,最终在2006年1月通过形成 RFC 4271 。RFC 4271版本纠正了一些错误,澄清模糊之处,带来了更接近工业级应用标准的RFC行业惯例。
大多数互联网服务提供商(ISP)必须使用BGP来与其他ISP创建路由连接(尤其是当它们采取多宿主连接时)。因此,即使大多数互联网用户不直接使用它,但是与7号信令系统(SS7)相比,即通过PSTN的跨供应商核心响应设置协议,BGP仍然是互联网最重要的协议之一。特大型的私有IP网络也可以使用BGP。例如当需要将若干个大型的开放最短路径优先(OSPF)网络进行合并,而开放最短路径优先协议本身又无法提供这种可扩展性时。使用BGP的另一个原因是其能为多宿主的单个ISP(RFC 1998)或多个ISP网络提供更好的冗余网络。
_______________________________________________________________________________
_______________________________________________________________________________
简介BGP是自治系统间的路由协议。BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。
1、介绍
BGP是自治系统间的路由协议。BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策(要点见RFC 1104[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由一个管理机构管理,至少在外部看来它代表着该系统的路由信息。
2. BGP拓扑模型
当我们说一个在两个AS之间的连接时,意味着两件事:
物理连接:两个AS之间存在一条共享的数据链路子网,并且在该子网上,每个AS至少有一台自己的边界网关路由器。因此,每个AS的边界网关路由器可以转发数据包到其他AS的边界网关路由器,无需借助于AS内到AS间的路由。
BGP连接:在各个AS的BGP发言人之间有一个BGP会话进程,通过会话沟通路由,经过声明的AS到达某目标网络。
本文档中,我们对构成BGP连接的BGP发言人加以额外限制:他们必须是自己直接共享数据链路子网。因此,相邻AS间的BGP会话无需AS内或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之间的连接拓扑加以任何限制。
3. 互联网中的BGP
3.1 拓扑学考虑
互 联网拓扑可以视作过渡AS、多宿主AS和末端AS的任意互连。为了尽可能减少对目前互联网结构的影响,末端和多宿主AS不一定要使用BGP。这些AS 可以运行其他的协议(比如,EGP)来与过渡AS交换网络可达性信息。使用BGP的过渡AS将对这些信息做标记,以表明其学习自BGP以外的方法。BGP 不一定运行于末端或多宿主AS,这就不会对源于或终于末端AS或多宿主AS的数据包的AS间路由质量产生负面影响。
然而,仍然建议在末端和多宿主AS上使用BGP。在这些情况下,BGP相比其他目前使用的协议(比如EGP),可以提供更优的带宽和性能。另外,这将减少默认路由的使用,为多宿主AS的AS间路由提供更好选择。
3.2 BGP的整体特性
整体水平上,BGP用来在多个自治系统间传递路由信息。其信息流如下图示:
+-----------+ +------------+
BGP | BGP | BGP | BGP | BGP
-------------------+ +--------------------------+ +----------
| IGP | | IGP |
+------------+ +-----------+
<-AS A--> <--AS B->
这张图表说明,在AS间只用BGP传输信息,而在AS内BGP和IGP均可以传输信息。确保AS内BGP和IGP间路由信息的兼容性,是一个重大问题,最后将在附录A中详细讨论。
3.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使用的路由策略的例子:
1. 一个多宿主AS可以拒绝成为其他AS的过渡AS。(它只告知那些目标网络在自己AS内部的路由。)
2. 一个多宿主AS可以指定成为几个相邻AS的过渡AS,也就是说,一部分而不是全部AS,可以把该多宿主AS作为过渡AS。(它只把它的路由信息告知被允许的AS。)
3. 一个AS向外运输流量时,可以决定是否偏爱特定的AS。
BGP应用可以控制许多性能相关的标准:
1. 一个AS可以最少化过渡AS的数目。(AS path越短,越可能被采用。)
2. 过渡AS的权重。如果一个AS决定,两个以上的AS path可以用来到达目标网络,那么,AS可以使用多种方法来决定采纳哪个候选AS path。一个AS的权重值由以下几个因素决定:径向距离,链路速度,容量,拥塞的趋势,和运行质量。这些性能值可以由BGP以外的方法决定。
3. 优先考虑内部路由,而不是外部路由。
为了一个AS的统一性,那些产自策略和/或正常路由选择过程的等值路径,必须以一致的方式解决。
BGP的基础,是这样一个规则:一个AS只把自己使用的路由通知给相邻的AS。该规则反映了目前互联网常用的"一跳接一跳"的路由方式。
6. BGP的路径选择
BGP 发言人的一项主要任务,是评价诸条从自身出发到那些用网络前缀表达的目的地的路径,从中选出最优,应用合适的策略约束,然后将它通知给所有的BGP邻居。 关键问题是如何评价和比较这些不同的路径。传统的距离向量协议(比如RIP)中,每条路径只有一个度量。因此,不同路径的比较简化为两个值的比较。AS间 路由的复杂性,源自人们在如何评价外部路由的问题上缺少共同认可的度量。于是,每个AS拥有自己的一套对路径的评价指标。
BGP发言人构建的路由数据库,由所有可用的路径和每条路径可达的目标集合(表达为网络前缀)组成。为了达到前面讨论的目的,考虑目标网络所对应的 可用路径,是有用的。大多数情况下,我们期望找到唯一一条可用路径。但是,当不是这样时,所有可用的路径应当保存,当主要路径缺失时,保存能以最快的速度 适应,(产生新的主要路径)。任何时候,只有主要路径才会被广播。
路径选择过程可以形式化为,对所有可用路径及相对应的目标IP,定义完整的优先级。定义这种优先级的一种方法,是定义一个函数,将每条完整的AS path映射成一个非负整数,用来表示该路径的优先级。路径选择于是简化为,将该函数应用到所有可用路径,再选择最高的优先级。
在真实的BGP实现中,为路径分配优先级的标准在配置信息中说明。
为路径分配优先级的过程源于以下几个信息:
1. 整条AS path显示的信息
2. 由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的问题。
-链路动态。稳定的路径比不稳定的路径更受欢迎。注意,这个标准应被小心使用,避免出现路由抖动。一般来说,任何依赖于动态信息的标准都可能引发路由不稳定,所以应谨慎对待。
7. 支持路由策略的必备集合
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"的路由。
8. 与其他外部路由协议的关系
本部分建议的指导方针与[3]中陈述的指导方针一致。
一个AS应通告它内部目标网络的最小聚合及与实际使用的地址空间的关系。这可以被非BGP-4的AS的管理者用来决定从某条聚合路由可以解聚出多少路由。
一个携带ATOMIC_AGGREGATE路径属性的路由,不应传递于BGP-3或EGP2,除非这种传递不出现路由NLRI的解聚。
8.1 与EGP2交换信息
本文档对于BGP-4与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交换路由信息的情况,只可能发现在域(自治系统)边界。
8.2 与BGP-3交换信息
本文档对于BGP-4与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,不能是混合体。
9. 在虚拟交换线路上的运作
BGP使用在虚拟交换子网(SVC)上,被要求产生尽可能少的流量。特别地,可能被要求消除由周期性KEEPALIVE消息所产生的流量。BGP包含了一个机制,在虚拟交换线路(SVC)服务运作时,避免SVCs始终开启,允许它终止周期性KEEPALIVE消息的发送。
本部分论述了如何在没有周期性KEEPALIVE消息的条件下,使用智能的SVC管理,使SVC使用最少。所提议的方案也适用于"永久"线路,"永久"线路支持类似链路质量监测的特性,或者可以显示请求来决定链路连接的状态。
9.1 建立BGP连接
通过在OPEN消息中设定Hold Time为0来实现
9.2 线路管理器特性
线路管理必须具备足够的功能来弥补周期性KEEPALIVE消息的缺失:
-必须能够在失败发生的可预见的有限时间内,确定链路层的不可达性。
-关于确定不可达性,应该:
-开启一个配置死寂的计数器(与典型的保持计数器值相比)。
-试图重建链路层连接。
-如果死寂计数器终止,应该:
-发送一个内部线路DEAD指示给TCP。
-如果连接重建,应该
-取消死寂计数器
-发送一个内部线路UP指示给TCP。
9.3 TCP特性
TCP须做一点修改,来处理来自线路管理器的内部通告:
-DEAD:清除发送队列,取消TCP连接。
-UP:发送任何队列数据,或者允许向进程传递TCP调用
9.4 混合特性
一 些应用可能无法保证BGP进程和线路管理器统一工作;也就是说,当一个停止或崩溃时,另一个仍独立存在。如果这是事实,在BGP进程和线路管理器之间周期 性的双向握手就需要实现。如果BGP进程发现线路管理器死亡,它就关闭所有相关的TCP连接。如果线路管理器发现BGP进程死亡,它将关闭所有与BGP进 程相关的连接,拒绝新连接。
10. 结论
BGP协议为域间路由提供高度的控制和柔韧性,执行策略约束,避免路由回路。在此说明的指导方针为BGP使用提供了一个起点,随着BGP增长,它将提供更多高级和可管理的路由方法。
附录A. BGP与IGP的关系
本部分概述了BGP与IGP交换路由信息的方法。这些方法此处不提议作为标准BGP使用的一部分。这些方法仅是信息补充。应用在引入IGP信息时,可能需要考虑这些方法。
这是适用于一般IGP的概述信息。
BGP与某特定IGP的关系不在此部分讨论。特定IGP的方法应在其他文档论述,在将来应成为标准化用法。
概论
根 据定义,所有过渡AS必须能运输那些源于或终于该AS的流量。这要求在BGP和那个特定AS使用的内部网关协议(IGP)之间具有一定的联系和协调。一般 来说,源于外部AS的流量将同时穿越内部网关(只支持IGP)和边界网关(支持IGP和BGP)。所有内部网关都通过IGP从一个以上的边界网关那儿接收 有关外部路由的信息。
依靠在一个AS内传播BGP信息的机制,BGP和IGP之间的一致性须得到特别关注,因为状态的改变可能以不同的速度在AS 内传播。可能出现时间窗,两个时刻分别为:在某边界网关(A)从相同AS内的另一台边界网关(B)获取新的BGP路由信息;AS的IGP能够路由过渡流量 到边界网关(B)。在这两个时刻之间,错误路由和"黑洞"均可能发生。
为了尽可能减轻这个路由问题,在AS的所有内部网关准备好将目标为外部 IP 的流量发往正确出口边界网关(B)之前,边界网关(A)不应该向外部对等体广播那些通过边界网关(B)运往外部目标网络的路由。换句话说,内部路由须会聚 一个合适的出口网关,然后才能广播通过该出口网关前往外部对等体的路由。
A.2 实现稳定关系的方法
下面的讨论概述了几个能实现在AS内BGP和IGP之间稳定关系的技术。
A.2.1 通过IGP传递BGP信息
BGP 提供自己的机制在AS内传递BGP信息,同样,只要IGP支持全部路由信息的洪泛(提供分散BGP信息的机制)和一条通路的会聚(使得机制有效原子化), 就可以用来传输BGP信息。如果一个IGP用来传递BGP信息,前述的异步时间将不复存在,因为AS内部的BGP信息传递与IGP同步,IGP的会聚或多 或少与新路由信息的到来同步。注意,IGP只运输BGP信息,不对其解析或处理。
A.2.2 标记的内部网关协议
当向外的路由在 AS内传递时,一定的IGP可以用它们的出口点给它们做标记。每个边界网关应使用同一的标记声明外部路由信息(通过BGP接收),不管这些路由信息是进入 IGP还是传递到其他的内部对等体(拥有相同AS号的对等体)。边界网关产生的标记必须唯一对应那个特定的边界网关——不同的边界网关必须使用不同的标 记。
在一个AS内的所有边界网关必须遵守如下两条规则:
1. 如果边界网关A从内部对等体接收到信息声称某些目标网络不可达,则它必须向所有外部对等体传递该信息。
2. 如果边界网关A从内部对等体接收到关于某些可达目标网络X的信息,则它必须拥有到X的IGP路由,而且IGP和BGP的路由信息都有对应标记,否则无法将这些信息传递到任何外部对等体。
这些规则保证了除非IGP正确支持,否则不向外声明路由信息。它也可以部分避免"黑洞"。在AS内标记BGP和IGP的一种方法是使用出口边界网关的IP地址。这种情况下,BGP的UPDATE消息的"gateway"域将用作标记。
A.2.3 封装
封装为运输AS间过渡流量提供了最简单的机制(关于IGP和BGP的联系)。用这种方法,过渡流量封装在一个地址为出口网关的IP数据包内。这种方法对IGP的唯一要求是能够支持同一AS内边界网关间的路由。
前往某些外部目标网络X的出口网关A的地址,通过A向同一AS内其他边界网关发送的BGP OPEN消息中的BGP标识符进行声明。为了路由流量到目标X,AS内的每个边界网关都封装流量到以网关A为地址的IP数据包。然后,网关A解封装,将原 始数据包发送到外部AS的对应网关。
因为封装不依靠IGP来运输外部路由信息,所以在BGP和IGP之间无需同步。一些方法用来标识包含封装IP的数据包,如用IP协议类型码,必须在使用前定义。注意,如果一个封装后的数据包的长度非常接近MTU,这个数据包将被那个执行封装的网关分片。
A.2.4 遍布的BGP
如果一个AS内的所有路由器都是BGP发言人,那么就没有必要联系BGP和IGP。这种情况下,AS内的所有路由器拥有BGP路由的全部信息。IGP只用来在AS中路由,不再有BGP路由被导入成IGP。
如果路由器按此方式工作,它们必须能够完成对路由表的循环查找。第一次查找将使用一条BGP路由来建立出口路由器,第二次查找将决定前往出口路由器 的IGP路径。这种情形下,IGP不携带任何外部信息,所有BGP发言人一旦获得路由的新信息,该AS内的路由器将很快会聚。因为不存在为IGP的会聚延 迟,一个应用能广播这些路由,而没有延迟。
A.2.5 其他情况
有些AS的IGP,可能既无法传输BGP信息,也无法标记外部路由(比如,RIP)。另外,封装可能不可行或不被接受。这些情况下,以下两条规则须被遵守:
(1). 如果边界网关A从内部对等体接收到信息声称某些目标网络不可达,则它必须向所有外部对等体传递该信息。
(2). 如果边界网关A从内部对等体接收到关于某些可达目标网络X的信息,则它必须拥有到X的IGP路由,而且有足够的时间使IGP路由会聚,否则无法将这些信息传递到任何外部对等体。
- 中文名
- 边界网关协议
- 外文名
- Border Gateway Protocol
- 类 型
- 外部网关协议EGP
- 简 称
- BGP
- 释义
简介
BGP的结构和功能
特点
BGP消息类型及状态转换
-
Open消息:Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。
-
Keepalive消息:BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。
-
Update消息:Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。
-
Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。
-
空闲(Idle):为初始状态,当协议激活后开始初始化,复位计时器,并发起第一个TCP连接,并开始倾听远程对等体所发起的连接,同时转向Connect状态。。
-
连接(Connect):开始TCP连接并等待TCP连接成功的消息。如果TCP连接成功,则进入OpenSent状态;如果TCP连接失败,进入Active状态。
-
行动(Active):BGP总是试图建立TCP连接,若连接计时器超时,则退回到Connect状态,TCP连接成功就转为Open sent状态。
-
OPEN发送(Open sent):TCP连接已建立,自己已发送第一个OPEN报文,等待接收对方的Open报文,并对报文进行检查,若发现错误则发送Notification消息报文并退回到Idle状态。若检查无误则发送Keepalive消息报文,Keepalive计时器开始计时,并转为Open confirm状态。
-
OPEN证实(Open confirm):BGP等待Keepalive报文,同时复位保持计时器。如果收到了Keepalive报文,就转为Established状态,邻居关系协商完成。如果系统收到一条更新或Keepalive消息,它将重新启动保持计时器;如果收到Notification消息,BGP就退回到空闲状态。
-
已建立(Established):即建立了邻居(对等体)关系,路由器将和邻居交换Update报文,同时复位保持计时器。
BGP路由通告原则
-
多条路径时,BGP Speaker只选最优的给自己使用(负载均衡和FRR除外)。
-
BGP Speaker只把自己使用的路由(最优路由)通告给相邻体。
-
BGP Speaker从EBGP获得的路由会向自己所有BGP相邻体通告(包括EBGP和IBGP)。
-
BGP Speaker从IBGP获得的路由不向自己的IBGP相邻体通告(反射器除外)。
-
BGP Speaker从IBGP获得的路由是否通告给自己的EBGP相邻体要根据IGP和BGP同步的情况来决定。
-
当收到对端的refresh报文并且本端邻居支持refresh能力,BGP Speaker将把自己所 有BGP路由通告给对等体。
-
GR过程中,主备倒换方在GR结束时BGP Speaker会把自己所有BGP路由通告给对等体。
BGP属性
-
是公认所有BGP实现都必须识别的属性,这些属性被传递给BGP邻居。
-
公认强制属性必须出现在路由描述中,公认自由决定属性可以不出现在路由描述中。
-
非公认属性被称为可选的,可选属性可以是传递的或非传递的。
-
可选属性不要求所有的BGP实现都支持。
-
对于不支持的可选传递属性,路由器将其原封不动的传递给其他BGP路由器,在这种情况下,属性被标记为部分的。
-
对于可选非传递属性,路由器必须将其删除,而不将其传递给其他BGP路由器。
协议结构
报文结构
标记
|
长度
|
类型
|
报文数据(变长)
|
报文类型
代码
|
类型
|
说明
|
1
|
OPEN
|
初始化对等路由器间的通信
|
2
|
UPDATE
|
更新:通告或撤销路由
|
3
|
NOTIFICATION
|
对不正确BGP报文的通知
|
4
|
KEEPALIVE
|
测试与对等路由器的连接性
|