BGP是自治系统间的路由协议,BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。
BGP 是自治系统间的路由协议,BGP 交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。
简介
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 由一个管理机构管理,至少在外部看来它代表着该系统的路由信息。
拓扑模型
当我们说一个在两个 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.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 用来在多个自治系统间传递路由信息。其信息流如右图示:
这张图表说明,在 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 发言人所在的自治系统。