BGP 消息类型及其格式:
BGP(边界网关协议)消息有四种主要类型:OPEN、UPDATE、NOTIFICATION 和 KEEPALIVE。每种消息类型都有其特定的功能和格式

  1. OPEN 消息

功能:用于建立 BGP 邻居关系。

格式:
Marker(16 字节):标记字段,用于同步和安全性。
Length(2 字节):消息长度,包括头部和数据部分。
Type(1 字节):消息类型,值为 1(OPEN)。
Version(1 字节):BGP 版本号。
My Autonomous System(2 字节):发送者的自治系统编号。
Hold Time(2 字节):保持时间,表示 BGP 会话的超时时间。
BGP Identifier(4 字节):BGP 标识符,通常是发送者的 IP 地址。
Optional Parameters Length(1 字节):可选参数长度。
Optional Parameters(可变):可选参数。

示例: 用户 A 和用户 B 想要建立 BGP 邻居关系。A 发送一个 OPEN 消息给 B,包含其自治系统编号和 BGP 标识符。B 接收到消息后,验证信息并建立连接。

  1. UPDATE 消息

功能:用于交换路由信息。

格式:
Marker(16 字节):标记字段。
Length(2 字节):消息长度。
Type(1 字节):消息类型,值为 2(UPDATE)。
Withdrawn Routes Length(2 字节):撤销路由部分的长度。
Withdrawn Routes(可变):被撤销的路由。
Total Path Attribute Length(2 字节):路径属性部分的长度。
Path Attributes(可变):路径属性。
Network Layer Reachability Information (NLRI)(可变):可达路由信息。

示例: 用户 B 有新的路由信息要通知给用户 C。B 发送一个 UPDATE 消息给 C,包含新的路由信息和路径属性。C 接收到消息后,更新其路由表。

  1. NOTIFICATION 消息

功能:用于通知错误或关闭 BGP 会话。

格式:
Marker(16 字节):标记字段。
Length(2 字节):消息长度。
Type(1 字节):消息类型,值为 3(NOTIFICATION)。
Error Code(1 字节):错误代码。
Error Subcode(1 字节):错误子代码。
Data(可变):错误相关数据。

示例: 用户 C 发现用户 D 发送的 BGP 消息有错误。C 发送一个 NOTIFICATION 消息给 D,包含错误代码和错误描述,通知 D 关闭会话并修正错误。

  1. KEEPALIVE 消息

功能:用于维持 BGP 邻居关系。

格式:
Marker(16 字节):标记字段。
Length(2 字节):消息长度。
Type(1 字节):消息类型,值为 4(KEEPALIVE)。

示例: 用户 D 和用户 A 已经建立了 BGP 邻居关系,为了保持连接,D 定期发送 KEEPALIVE 消息给 A。A 接收到消息后,知道连接是活跃的,并继续保持会话。


为什么要建立 BGP 邻居关系?

在 BGP(边界网关协议)中,建立邻居关系(也称为对等关系或 Peering)是非常关键的步骤,以下是一些主要原因:

  1. 路由信息交换
    BGP 的主要功能之一是交换路由信息。通过建立邻居关系,不同自治系统(AS,Autonomous System)的路由器可以共享路由信息,确保数据包能够找到最优路径到达目标地址。
  2. 网络连通性
    邻居关系使得不同网络之间能够互相通信。对于互联网服务提供商(ISP)和大型企业网络来说,建立 BGP 邻居关系是确保其网络连通性的关键步骤。
  3. 路由冗余和高可用性
    通过与多个邻居建立 BGP 对等关系,可以实现路由冗余和高可用性。如果一个路由器或路径出现故障,BGP 可以自动选择其他可用的路径,确保网络的稳定性和可靠性。
  4. 路由策略控制
    BGP 邻居关系允许网络管理员应用各种路由策略,控制进出自治系统的流量。例如,可以通过设置路由优先级、路径选择策略等,优化网络性能和流量管理。

举例说明
假设有两个互联网服务提供商 ISP-A 和 ISP-B,它们分别管理不同的自治系统(AS)。为了确保其客户可以互相通信,ISP-A 和 ISP-B 需要建立 BGP 邻居关系。具体步骤如下:

  • 建立邻居关系:
    ISP-A 和 ISP-B 的网络管理员配置路由器,使其能够相互通信,并交换 BGP OPEN 消息建立邻居关系。
  • 交换路由信息:
    一旦邻居关系建立,ISP-A 和 ISP-B 的路由器开始交换 BGP UPDATE 消息,分享各自的路由信息。
  • 路径选择和优化:
    基于交换的路由信息,ISP-A 和 ISP-B 的路由器选择最优路径传输数据包。如果某个路径出现问题,BGP 会自动调整,选择其他可用路径。
  • 路由策略应用:
    ISP-A 和 ISP-B 可以应用各种路由策略,例如,优先选择带宽较高的路径,或者根据流量类型选择不同的路径。

自治系统(Autonomous System,AS)是指在单一技术管理下的一组 IP 网络和路由器,通常由一个或多个网络运营商或大型组织管理。每个自治系统在网络中具有唯一的 AS 编号(ASN),用于标识和管理其内部和外部的路由信息。

举例说明
假设有三个自治系统:AS100、AS200 和 AS300。它们分别由不同的互联网服务提供商(ISP-A、ISP-B 和 ISP-C)管理。以下是它们之间的关系和作用:

  • AS 编号:
    ISP-A 管理的网络被分配了 AS100,ISP-B 管理的网络被分配了 AS200,ISP-C 管理的网络被分配了 AS300。
  • 路由信息交换:
    AS100 和 AS200 通过 BGP 协议交换路由信息,确保其网络中的数据包可以互相传递。
    同样,AS200 和 AS300 也通过 BGP 交换路由信息。
  • 网络连通性:
    通过建立 BGP 邻居关系,AS100 的用户可以访问 AS200 和 AS300 的网络资源,反之亦然。
  • 路由策略控制:
    ISP-A 可以设置路由策略,优先选择从 AS200 传输的流量,而不是从 AS300。这些策略可以基于带宽、延迟、成本等因素进行优化。

BGP(边界网关协议)的流量并不是非常大。尽管 BGP 是全球互联网的核心路由协议,负责在不同自治系统(AS)之间交换路由信息,但其流量主要是路由更新信息和保持邻居关系的心跳消息,实际的数据包传输并不通过 BGP 进行。

具体原因如下:

  1. 路由信息交换频率低
    BGP 的路由信息交换并不是实时的,而是根据网络拓扑的变化进行更新。只有在路由发生变化时,BGP 才会发送 UPDATE 消息。这意味着在稳定的网络环境中,BGP 消息的频率相对较低。
  2. 心跳消息(KEEPALIVE)
    为了维持 BGP 邻居关系,BGP 会定期发送 KEEPALIVE 消息。这些消息非常小,仅用于确认邻居关系是否正常,不会产生大量流量。
  3. 路由表大小
    虽然 BGP 路由表可能非常大(包含数十万条路由),但这些路由表的传输和更新是增量式的,即只有变化的部分会被交换,而不是整个路由表。这样有效地减少了流量。
  4. 数据流量不通过 BGP
    BGP 仅用于路由信息的交换,实际的数据包传输通过 IP 网络进行,不会经过 BGP 协议本身。因此,BGP 的流量主要是控制流量,而不是数据流量。

putao
5 声望0 粉丝

推动世界向前发展,改善民生。