BGP 概述

主题:

什么是 BGP?

BGP 用于在自治系统 (AS) 之间交流路由信息的大型路由协议。这些自治系统是定义明确、单独管理的网络域。BGP 支持允许 SonicWALL 安全设备替代网络自治系统使用的传统 BGP 路由器。BGP 的当前 SonicWALL 实施最适用于“单提供商/单宿主”环境,在这种环境下,网络使用一个 ISP 作为互联网提供商,且与该提供商采用单一连接。SonicWALL BGP 还可以支持“单提供商/单宿主”环境,其中,网络使用单个 ISP,但拥有连至提供商的少量单独路由。BGP 在 SonicOS GUI 的网络 > 路由页面上启用,然后再通过 SonicOS 命令行接口 (CLI) 进行完全配置。

下表显示 BGP 授权要求。

 

表 171. BGP 授权要求

平台

需要附加许可证

SOHO W

N/A

TZ300/TZ300 W

N/A

TZ400/TZ400 W

SonicOS 扩展许可证

TZ500/TZ500 W

SonicOS 扩展许可证

TZ600

SonicOS 扩展许可证

NSA 2600

SonicOS 扩展许可证

NSA 3600

SonicOS 扩展 01-SSC-7091

NSA 4600

无,已包含 BGP

NSA 5600

无,已包含 BGP

NSA 6600

无,已包含 BGP

SM 9200

无,已包含 BGP

SM 9400

无,已包含 BGP

SM 9600

无,已包含 BGP

注:可以在 www.mysonicwall.com 购买许可证。

后台信息

路由协议不仅是通过网络传输的数据包,还包含各路由器和路由器组用于发现、组织和交流网络拓扑结构的所有机制。路由协议使用取决于指定的各协议参与者的分布式算法,且在网络域内的路由器随着网络节点更改状态而动态变化时尤为有用。

路由协议通常与两个数据库交互:

路由信息库 (RIB) - 用于存储路由协议本身所需的全部路由信息。
转发信息库 (FIB) - 用于实际的数据包转发。

从 RIB 选择的最佳路由用于填充 FIB。RIB 和 FIB 都随着各路由协议接收路由更新或设备的连接变更而动态变化。

有两个基本路由协议类:

内部网关协议 (IGP) - 内部网关协议是用于在 AS 内部的网络内进行路由通信的路由协议。有两代 IGP。第一代由距离向量协议组成。第二代由链接状态协议组成。距离向量协议相对简单,但在扩展到大量路由器时会出现问题。链接状态协议更为复杂,也具有更好的扩展能力。现有的距离向量协议有内部网关路由协议 (IGRP)、增强内部网关路由协议 (EIGRP)、路由信息协议 (RIP) 和 RIPv2 (增强版 RIP)。IGRP 和 EIGRP 是专有的 Cisco 协议。目前使用的链接状态协议有开放最短路径优先 (OSPF) 和较少使用的中间系统到中间系统 (IS-IS) 协议。

SonicOS 支持 OSPFv2 和 RIPv1/v2 协议,这是两个最常用的路由内部网关协议,允许客户在其 IGP 网络中使用我们的产品,并避免配备单独的传统路由器产生附加成本。

外部网关协议 (EGP) - 标准的普适型外部网关协议是 BGP(更准确地说是 BGP4)。BGP 是用于在称为自治系统 (AS) 的定义明确网络域之间进行路由信息和策略通信的大型路由协议。自治系统是独立于其他自治系统的单独管理网络域。BGP 用于在自治系统之间传输路由和路由策略。ISP 通常使用 BGP 与其客户及其他 ISP 传输路由和路由策略。

每个自治系统都被分配了 16 位编号。和 IP 地址一样,AS 编号也可以是公用或私有的。公用 AS 编号是有限的资源,会基于很多因素的考虑提供。有多重托管至两个或多个 ISP 的大型网络的 ISP 客户通常具备公用 AS,较小型客户则具备由其 ISP 提供商管理的私有 AS。

随着我们的产品为支持企业级需求而不断发展,有些客户可能想要将我们的产品应用于 AS 以替代传统的 BGP 路由器。

自治系统

每个自治系统都被分配了 16 位编号。和 IP 地址一样,AS 编号也可以是公用或私有的。公用 AS 编号是有限的资源,会基于很多因素的考虑提供。有多重托管至两个或多个 ISP 的大型网络的 ISP 客户通常具备公用 AS,较小型客户则具备由其 ISP 提供商管理的私有 AS。

BGP 拓扑结构的类型

BGP 是很灵活、复杂的路由协议。因此,BGP 路由器可融入多种拓扑结构设置中,例如互联网核心路由器、中间 ISP 路由器、ISP 客户前端设备 (CPE) 或小型私有 BGP 网络中的路由器。不同拓扑结构所需的 BGP 路由数相差悬殊,核心路由器需要大于 300,000 个 BGP 路由,而使用单一 ISP 和为 AS 之外的所有目标使用默认路由则不需要 BGP 路由。ISP 客户通常被要求从其边缘路由器 (CPE) 至 ISP 运行 BGP,而不论他们从 ISP 接收的路由数。这允许 ISP 客户控制使用哪些网络向外界发布。人们通常担心客户发布一个自己并不拥有的网络或网络组,会有黑洞互联网流量通过这些网络。实际上,ISP 提供商小心地过滤来自客户的无效发布(BGP 的优势之一),所以以上担心并无必要。

有三种规模的 BGP 网络:

单提供商/单宿主 - 网络从单一 ISP(单一提供商)接收单一路由(单宿主)。ISP 客户从其 ISP 接收的路由数取决于其 AS 的性质。仅使用一个 ISP 作为互联网提供商且该提供商只有单一连接(单提供商/单宿主)的 ISP 客户无需接收任何路由,目标在 AS 以外的所有流量将被转到其 ISP。这些客户仍可以将其网络内的部分或全部内容发布给 ISP。
单提供商/多宿主 - 网络从单一 ISP(单一提供商)接收多个路由(多宿主)。使用单个 ISP,但与其 ISP 有多个连接的 ISP 客户只能在各 ISP 网关接收默认路由 (0.0.0.0/0)。如果某 ISP 连接断开,从断开的 CPE 路由器向内部路由器发送的默认路由将被撤回,互联网流量则流向连至 ISP 的 CPE 路由器。客户的内部网络也将在各 CPE 路由器网关发布至 ISP,并在与客户的特定连接断开时允许 ISP 使用替代路径。
多提供商/多宿主 - 使用多个 ISP,且各 ISP 有一个或多个单独网关路由器的 ISP 客户。在这种情况下,客户的 AS 必须是公用 AS,也可能是中转 AS 或非中转 AS。中转 AS 接收和转发来自 ISP 的流量,该流量去往可通过其他 ISP 连接的网络(流量的目的地不在客户的 AS 内)。非中转 AS 应该只接收去往 AS 的流量,所有其他流量均被丢弃。中转 AS 中的 BGP 路由器通常接收各 ISP 的完整 BGP 路由表的一大部分(在大多数情况下是全部)。

为什么使用 BGP?

单提供商/单宿主 – 不常用于 BGP,但仍可用于将网络发布到 ISP。单宿主网络不符合用于 RIR 中公用 AS 的条件。
单提供商/多宿主 – 按照 RFC2270 使用单一私有 AS(64512 至 65535)的推荐,经常被选用,可以发挥 BGP 的优势,同时保存公用 ASN。
多提供商/多宿主 – 高度冗余,通常用于各 ISP 的专用路由器。需要公用 ASN。大内存占用

BGP 的工作方式

BGP 使用 TCP 端口 179 进行通信。BGP 被视为一种路径向量协议,包含目的地的端对端路径描述。BGP 邻居可以是内部 (iBGP) 或外部 (eBGP) 的:

iBGP – 邻居位于相同 AS 内。
eBGP – 邻居位于不同 AS 中。

路径在标签为各种路径属性的更新消息中发布。AS_PATH 和 NEXT_HOP 是描述 BGP 更新消息中路由路径的两个最重要属性。

AS_PATH:表示路由通信往来的 AS。在下例中,AS_PATH 来自 AS 7675,去往 AS 12345。对于内部 BGP,AS_PATH 为源和目标指定相同的 AS。
NEXT_HOP:表示路径前往的下一路由器的 IP 地址。穿过 AS 边界发布的路径继承了边界路由器的 NEXT_HOP 地址。BGP 依赖内部路由协议连通 NEXT_HOP 地址。
BGP 有限状态机

用于定义 BGP 的 RFC 1771 描述了 BGP 与以下状态机相关的工作。下图后面的表格提供了有关各种状态的附加信息。

图 70. BGP 有限状态机

 

表 172. BGP 有限状态说明

状态

说明

闲置

在建立新 BGP 会话或重置现有会话后,等待“启动”事件。在发生错误时,恢复到“闲置”状态。在“启动”事件后,BGP 启动,重置连接重试计时器,启动 TCP 传输连接和监听连接

连接

TCP 层连接后,变换为“已发送开启消息”状态,然后发送“开启”消息。如果没有 TCP,变换为“活动”。如果连接重试计时器过期,重置计时器,并启动传输连接。否则,变换为“闲置”状态。

活动

尝试与对等项建立 TCP 连接。如连接成功,变换为“已发送开启消息”状态,然后发送“开启”消息。如果连接尝试过期,重启计时器,然后恢复到“连接”状态。还会活动监听其他对等项的连接。在发生其他事件时,返回到“闲置”状态。

活动状态不稳表示有 TCP 传输问题,例如 TCP 重新传输或未连接对等项。

已发送开启消息

等待来自对等项的“开启”消息。验证接收情况。如验证失败,发送“通知”并进入“闲置”状态。如验证成功,发送“保持活动”并重置保持活动计时器。协商保持时间,较小值取胜。如较小值为零,保持计时器和保持活动计时器不会重启。

已确认开启消息

等待“保持活动”或“通知”。如果收到“保持活动”消息,则变换为“已建立”状态。如果收到“更新”或“保持活动”消息,重启保持计时器(除非协商保持时间为零)。如果收到“通知”,则变换为“闲置”状态。

发送定期“保持活动”消息。如果 TCP 层断开,则变换为“闲置”状态。如果发生错误,则发送含错误代码的“通知”,并变换为“闲置”状态。

已建立

会话开启,与对等项交换更新信息。如果收到“通知”,则变换为“闲置”状态。检查更新信息有无错误。发生错误时,会发送“通知”,并变换为“闲置”状态。保持时间过期时,断开 TCP。

BGP 消息

BGP 通信包含以下几个消息:

开启 – 在建立 TCP 会话后,BGP 对等项之间的第一条消息。包含建立对等会话的必需信息,例如 ASN、保持时间以及多产品扩展和路由刷新等功能。
更新 – 这些消息包含路径信息,例如路由宣布或撤回。
保持连接 – 有关保持 TCP 层活动和发布活动连接的定期消息。
通知 – 有关终止 BGP 会话的请求。包含错误代码“cease”的非致命性问题通知。子代码提供更多详细信息:
 

表 173. 通知子代码

子代码

说明

1 – 已达到的最大前缀数

已超过配置的“邻居最大前缀”值

2 – 管理关闭

会话出于管理目的被关闭

3 – 对等项未配置

对等配置已被移除

4 – 管理重置

会话出于管理目的被重置

5 – 连接被拒绝

BGP 会话的拒绝(有时是临时的)

6 – 其他配置变更

会话出于某种原因被管理重置

路由刷新 – 用于对等项重新发送其路由的请求。
BGP 功能

BGP 更新消息可以包含以下属性:

 

表 174. BGP 更新消息属性

代码

1

ORIGIN

2

AS_PATH

3

NEXT_HOP

4

MULTI_EXIT_DISC

5

LOCAL_PREF

6

ATOMIC_AGGREGATE

7

AGGREGATOR

8

COMMUNITY

9

ORIGINATOR_ID

10

CLUSTER_LIST

11

DPA

12

ADVERTISER(历史记录)

13

RCID_PATH / CLUSTER_ID(历史记录)

14

MP_REACH_NLRI

15

MP_UNREACH_NLRI

16

EXTENDED COMMUNITIES

17

AS4_PATH

18

AS4_AGGREGATOR

19

SAFI 特定属性 (SSA)(已弃用)

20

连接器属性(已弃用)

21

AS_PATHLIMIT(已弃用)

22

PMSI_TUNNEL

23

隧道封装属性

24

流量工程

25

IPv6 地址特定扩展团体

26

AIGP(临时 - 2011 年 2 月 23 日过期)

27-254

未分配

255

保留用于开发

如需 BGP 属性的更多信息,请访问以下网址:
http://www.iana.org/assignments/bgp-parameters/bgp-parameters.xml