BGP

1. 边界网关协议(BGP)

边界网关协议(Border Gateway Protocol,简称 BGP)是互联网的核心协议之一,用于在自治系统(AS)之间交换路由信息。

BGP 是一种外部网关协议(EGP),其主要功能是通过维护 IP 路由表或“前缀”表来实现自治系统之间的可达性。

1.1. BGP 的工作原理

BGP 被分类为路径矢量协议,它通过路径、网络策略或规则集来决定路由,而不是使用传统的内部网关协议(IGP)的指标。

BGP 的邻居关系(或称通信对端/对等实体,peer)是通过人工配置实现的,对等实体之间通过 TCP 端口 179 建立会话交换数据。

BGP 路由器会周期性地发送保持存活(keep-alive)消息来维护连接(默认周期为 60 秒)。

1.2. BGP 的消息类型

BGP 使用五种主要的消息类型来进行通信:

  1. Open 消息:用于建立 BGP 对等体之间的连接,并协商参数。
  2. Update 消息:用于通告新的路由信息或撤销旧的路由信息。
  3. Notification 消息:用于报告错误并终止连接。
  4. Keepalive 消息:用于保持连接的活跃状态。
  5. Route-refresh 消息:用于请求对等体重新发送其路由信息。

1.3. BGP 的类型

BGP 主要分为两种类型:

  • 内部 BGP(iBGP):在同一个自治系统中的两个或多个对等实体之间运行的 BGP。
  • 外部 BGP(eBGP):在不同自治系统的对等实体之间运行的 BGP。

1.4. BGP 的路由选择过程

BGP 的路由选择过程是基于一系列属性和规则来决定最佳路径的。

以下是一些常见的 BGP 路由属性:

  • AS 路径(AS Path):记录了路由经过的自治系统序列,路径越短优先级越高。
  • 下一跳(Next Hop):指示到达目标网络的下一跳 IP 地址。
  • 本地优先级(Local Preference):用于在同一 AS 内部选择最佳路径,值越高优先级越高。
  • 多出口鉴别(MED):用于在不同 AS 之间选择最佳路径,值越低优先级越高。

1.5. BGP 的应用

BGP 广泛应用于互联网服务提供商(ISP)之间的路由连接,尤其是在多宿主连接的情况下。

大多数 ISP 必须使用 BGP 来与其他 ISP 建立路由连接。

此外,BGP 还被用于大型私有 IP 网络中,例如当需要将若干个大型的 OSPF(开放最短路径优先)网络进行合并时,BGP 提供了更好的可扩展性和冗余。

1.6. BGP 的历史

BGP 最初是为了取代外部网关协议(EGP)而创建的,其目的是运行一个完全分散的路由系统,从 ARPANET 模型的核心路由系统过渡到包括 NSFNET 骨干网及其相关区域网络的分散系统。

自 1994 年以来,第四版的 BGP(BGP-4)在互联网上使用,所有以前的版本现在都已过时且不可用。

BGP-4 的主要增强功能是通过支持无类别域间路由和路由聚合来减少路由表的大小。

1.7. BGP 的扩展

BGP 支持多种扩展应用,包括对 VPN 的扩展、对 IPv6 的扩展等。

不同的扩展应在各自的地址族视图下配置。

例如,BGP-IPv4 单播地址族用于维护公网 BGP 邻居并传递公网 IPv4 路由信息,而 BGP-IPv6 单播地址族则用于维护公网 IPv6 BGP 邻居并传递公网 IPv6 路由信息。

1.8. BGP 的配置示例

以下是一些常见的 BGP 配置示例:

1.8.1. 建立 iBGP 邻居

router bgp 200
neighbor 192.168.1.1 remote-as 200
neighbor 192.168.1.1 update-source Loopback0

注释:此配置用于在同一自治系统(AS 200)内建立 iBGP 邻居关系。update-source Loopback0 命令指定使用 Loopback0 接口的 IP 地址作为 BGP 会话的源地址。

1.8.2. 建立 eBGP 邻居

router bgp 100
neighbor 203.0.113.1 remote-as 200

注释:此配置用于在不同自治系统(AS 100 和 AS 200)之间建立 eBGP 邻居关系。

1.8.3. 配置 BGP 属性

router bgp 200
neighbor 192.168.1.1 route-map SET_LOCAL_PREF in
route-map SET_LOCAL_PREF permit 10
set local-preference 200

注释:此配置通过路由映射(route-map)设置本地优先级(local preference)。SET_LOCAL_PREF 路由映射将所有传入的路由的本地优先级设置为 200。

1.9. 图表示例

1.9.1. BGP 对等体关系

以下图表展示了 BGP 对等体关系的基本结构:

+----------------+           +----------------+
|    AS 100      |           |    AS 200      |
|                |           |                |
|  Router A      |-----------|  Router B      |
|  (eBGP邻居)   |           |  (eBGP邻居)   |
+----------------+           +----------------+
        |                           |
        |                           |
        |                           |
+----------------+           +----------------+
|    AS 100      |           |    AS 200      |
|                |           |                |
|  Router C      |-----------|  Router D      |
|  (iBGP邻居)   |           |  (iBGP邻居)   |
+----------------+           +----------------+

1.9.2. BGP 路由选择过程

以下流程图展示了 BGP 的路由选择过程:

+---------------------+
|  接收多个路径信息  |
+---------------------+
           |
           v
+---------------------+
|  选择本地优先级最高 |
+---------------------+
           |
           v
+---------------------+
|  选择AS路径最短     |
+---------------------+
           |
           v
+---------------------+
|  选择下一跳最优     |
+---------------------+
           |
           v
+---------------------+
|  选择MED值最低      |
+---------------------+
           |
           v
+---------------------+
|  选择最早接收的路径 |
+---------------------+
           |
           v
+---------------------+
|  选择路由ID最小     |
+---------------------+

1.10. 结论

BGP 作为互联网的核心协议之一,其重要性不言而喻。

它不仅在 ISP 之间的路由连接中发挥关键作用,还在大型私有网络和多种扩展应用中提供了强大的支持。

通过理解 BGP 的工作原理、类型、应用和历史,可以更好地掌握互联网的路由机制和网络架构。