要全面了解BGP,首先我们要回答以下看上去很简单的问题:为什么需要BGP,也就是说BGP是如何产生的,它解决了什么问题。带着以上问题,我们先简单的回顾一个路由协议发展的轨迹。
首先路由的实质是描述一个网络结构的表达方式,路由表其实是一个结果的集合。在早期的ARPANet网络时代,网络规模有限,路由数量也不大,因此所有的路由器可以维护整个网络拓扑,那时候使用的路由协议叫GGP(Gateway-to-Gateway Protocol)。GGP自然成为第一个内部网关协议(IGP)。在1980年左右。当时的网络管理者遇到了与今天类似的问题:网络规模扩大导致的路由数量不断增长。为了解决这种网络规模的增长问题,提出了自治系统的概念(AS),也可以叫做路由管理域。在AS内部使用一种路由协议,然后在AS之间使用另一种路由协议。这样做的好处显而易见,不同的网络可以自己选择IGP协议,然后再通过一个统一的AS间协议进行互连就可以了。
在IGP的发展领域中,先是RIP成为IP路由的主流,之后出现了更高级的IGP协议包括OSP和ISIS,这些协议自动化程度更高、更智能更可靠。同一个AS的路由器间是有相互信任关系的,而且这些路由器往往由同样的管理人员维护,因此IGP的自动发现和路由计算信息泛洪处于完全开放的状态,人工干预的行为是比较少的。
不同AS互相连接的需求,推动产生了外部网关协议(EGP),EGP的主要目的是在不同的AS之间传递路由协议。而不同的AS之间往往是直接相连,大多数AS互联行为只涉及少量的边界路由器(ASBR),所以EGP的设计也非常简单。EGP的RFC827发布于1982年,看上去似乎早于RIP的第一个标准FRC1058,但其实在RFC1058之前,RIP已经被广泛的使用。在当时,RIP+EGP成为一种标准的路由组合。
EGP被设计的如此简单,以至于很快就不能满足网络管理的要求。EGP单纯的发布网络可达信息,不做任何优选,也没有考虑环路避免。有人甚至认为EGP算不上是一个路由协议,EGP的众多缺陷,最终导致被BGP所取代。BGP的第一个FRC1105是1989年发布的,和EGP相比,BGP更像是一个路由协议,具有很多路由协议的特征,比如解决环路问题、收敛问题、触发更新等等。
就像是不同的企业有各自的企业文化和标准,但是企业间的交往却要遵循统一的行为规范和标准一样。对于AS间的路由交互,也必须有一个统一的标准。BGP相比EGP的众多优势,使BGP成为唯一的外部网关协议,并广泛的使用在互连网上。
综上所述,BGP是为了替代EGP而出现的一个外部网关协议,它必须能够进行路由优选、路由环路的避免、能够更高效率的传递路由和维护大量的路由。因为BGP部署在不具有完全信任关系的AS之间,因此需要BGP有丰富的路由控制能力,并且可以通过一些简单统一的方法对BGP进行扩展。
--------------------------------------------------------------------------------------
什么是BGP
BGP(Border Gateway Protocol)即边界网关协议,是互联网上一个核心的去中心化自治路由协议。它通过维护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使用原则
①多条路径时,BGPSpeaker只选最优的路径给自己使用。
②BGPSpeaker只把自己使用的路由通告给邻居。
③BGPSpeaker从EBGP获得的路由会向它所有BGP邻居通告(包括EBGP和IBGP)。
④BGPSpeaker从IBGP获得的路由不向它的IBGP邻居通告。
⑤BGPSpeaker从IBGP获得的路由是否通告给它的EBGP邻居要依IGP和BGP同步的情况来决定。
⑥连接一旦建立,BGPSpeaker将把自己所有BGP路由通告给新邻居。
[编辑]
BGP属性[1]
BGP是一种外部路由协议,与OSPF、RIP等的内部路由协议不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最好的路由。
为控制路由的传播和路由选择,BGP为路由附带属性信息。BGP可在给定的路由上附上很多属性,因此,IGP使用的路由更新包比BGP使用的路由更新报文更小,这也是IGP和BGP最大的不同之处。
BGP路由属性是一套参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。在配置路由策略时将广泛地使用路由属性,但是不是所有路由属性都要被用上。路由属性被分为以下几类。
- 必遵属性:在路由更新数据报文中必须存在的路由属性,这种属性域在BGP路由信息中有着不可替代的作用,如果缺少必遵属性,路由信息就会出错。如AS-Path就是必遵属性,BGP用它来避免路由环路,没有它路由就可能出问题。
- 可选属性:它是可选的,不一定存在于路由更新数据报文中,设置它完全是根据需要。如MED属性,就用它来控制选路。
- 过渡属性:具有AS间可传递性的属性就是过渡属性,过渡属性的域值可以被传递到其他AS中去并继续起作用。如Origin属性,路由信息的起源一旦确定,域值会一直存在,无论此路由信息被传到哪个AS中去。
- 非过渡属性:只在本地起作用,出了自治系统,域值就恢复成默认值,如Local preference。以下列出几种常用属性的情况,如表所示。
表:几种常用属性
类型代码 | 属性名 | 必遵/可选 | 过渡/非过渡 |
1 | Origin | 必遵 | 过渡 |
2 | AS-Path | 必遵 | 过渡 |
3 | Next-hop | 必遵 | 过渡 |
4 | MED | 可选 | 非过渡 |
5 | Local-preference | 可选 | 非过渡 |
8 | Community | 可选 | 过渡 |
每个属性都有特定的含义并可以灵活地运用,使得BGP的功能十分强大。BGP属性可以扩展到256种。这里列出了一些BGP的常用属性。
- Origin起点属性:定义路径信息的来源,标记一条路由是怎样成为BGP路由的。如IGP、EGP和Incomplete等。
- AS-PathAS路径属性:是路由经过的AS的序列,即列出在到达所通告的网络之前所经过的AS的清单。BGP发言者将自己的AS前置到接收到的AS路径的头部,它可以防止路由循环,并用于路由的过滤和选择。
- Next-hop下一跳属性:包含到达更新消息所列网络的下一跳边界路由器的 IP地址。BGP的下一跳与IGP有所不同,它可以是通告此路由的对等体的地址,如EBGP,这同IGP是相同的。而在其他情况下,BGP使用第三方的下 一跳,如IBGP对从EBGP对等体获得的下一跳不加改变地在自治系统内传递。在多路访问媒体上,BGP以路由的实际来源为下一跳,即使它不是BGP对等 体。
- MED(Multi-Exit-Discriminators)属性:当某个AS有多个入口时,可以用MED属性来帮助其外部的邻居路由器选择一个较好的人口路径。一条路由的MED值越小,其优先级越高。
- Local-preference本地优先属性:用于在自治系统内优选到达某一个目的地的路由。反映了BGP发言人对每个外部路由的偏好程度。本地优先属性值越大,路由的优选程度就越高。
Community团体属性:标识了一组具有相同特征的路由信息,与它所在的IP子网和自治系统无关。公认的团体属性值有NO-EXPORT、N0一ADVERTISE、LOCALAS和INTERNET。
----------------------------------------------------------------------------
BGP(自治系统间的路由)协议详解
1、介绍 BGP是自治系统间的路由协议。BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。特别地,BGP交换 包含全部AS path的网络可达性信息,按照配置信息执行路由策略。 随着近年来互联网的进步和增长,它也不得不面对一
1、介绍
BGP是自治系统间的路由协议。BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。特别地,BGP交换包含全部AS path的网络可达性信息,按照配置信息执行路由策略。
随着近年来互联网的进步和增长,它也不得不面对一些严重的规模问题,包括:
-B类网络地址空间的耗尽。该问题的主要原因之一,是缺少适于 中型组织的中等大小的网络;C类网络,最多拥有254个主机地址,实在太少,而B类网络允许最多65534个地址,却又太大无法充分使用。
-互联网路由器中路由表的增长使目前的软件(和人们)无法有效管理。
-32位IP地址空间的耗竭。
很明显,前两个问题和最后一个问题可能分别在今后一两年内和三年内变得急迫。无类别域间路由(CIDR)试图解决这些问题,设计相应机制来降低路由 表和对新IP网络分配需求的增长速度。它并没有解决更具长期性的第三个问题,而是努力让近期问题推迟使得互联网仍能有效运作,同时着手远期的解决方案。
BGP-4对BGP-3做了扩展,支持路由信息的聚合及基于无类别域间路由体系(CIDR)的路由减少。本备忘录论述了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间路由信息的兼容性,是一个重大问题。
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,可以用来探测可能的矛盾。
对于外部对等体,对等体分别属于不同的AS,但共享同一数据链路子网。这共同的子网用来在对等体之间运输BGP信息。如果BGP使用通过一个干预的AS,则将使AS path信息无效。自治系统号必须在BGP中使用,用来标明BGP发言人所在的自治系统。