BGP

边界网关协议(BGP)

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

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

1- BGP的工作原理

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

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

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

2- BGP的消息类型

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

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

3- BGP的类型

BGP主要分为两种类型:

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

4- BGP的路由选择过程

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

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

5- BGP的应用

BGP广泛应用于互联网服务提供商(ISP)之间的路由连接,尤其是在多宿主连接的情况下。大多数ISP必须使用BGP来与其他ISP建立路由连接。此外,BGP还被用于大型私有IP网络中,例如当需要将若干个大型的OSPF(开放最短路径优先)网络进行合并时,BGP提供了更好的可扩展性和冗余。

6- BGP的历史

BGP最初是为了取代外部网关协议(EGP)而创建的,其目的是运行一个完全分散的路由系统,从ARPANET模型的核心路由系统过渡到包括NSFNET骨干网及其相关区域网络的分散系统。自1994年以来,第四版的BGP(BGP-4)在互联网上使用,所有以前的版本现在都已过时且不可用。BGP-4的主要增强功能是通过支持无类别域间路由和路由聚合来减少路由表的大小。

7- BGP的扩展

BGP支持多种扩展应用,包括对VPN的扩展、对IPv6的扩展等。不同的扩展应在各自的地址族视图下配置。例如,BGP-IPv4单播地址族用于维护公网BGP邻居并传递公网IPv4路由信息,而BGP-IPv6单播地址族则用于维护公网IPv6 BGP邻居并传递公网IPv6路由信息。

8- BGP的配置示例

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

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会话的源地址。

8.2- 建立eBGP邻居:

router bgp 100
neighbor 203.0.113.1 remote-as 200

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

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。

9- 图表示例

9.1- BGP对等体关系

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

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

9.2- BGP路由选择过程

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

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

10- 结论

BGP作为互联网的核心协议之一,其重要性不言而喻。它不仅在ISP之间的路由连接中发挥关键作用,还在大型私有网络和多种扩展应用中提供了强大的支持。通过理解BGP的工作原理、类型、应用和历史,可以更好地掌握互联网的路由机制和网络架构。