5.1. Choosing EBGP as the Routing Protocol (选择 EBGP 作为路由协议)
5.1. Choosing EBGP as the Routing Protocol (选择 EBGP 作为路由协议)
REQ2 倾向于选择单一路由协议以降低复杂性和相互依赖性。虽然在这种情况下通常依赖 IGP, 有时在边界 WAN 的设备上添加 EBGP 或在整个网络中使用内部 BGP (Internal BGP, IBGP), 但本文档建议使用纯 EBGP 设计。
尽管 EBGP 是互联网中几乎所有域间路由使用的协议, 并且得到供应商和服务提供商社区的广泛支持, 但由于以下一些原因 (其中一些相互关联), 它通常不会作为数据中心内的主要路由协议部署:
-
BGP 被认为是 "仅用于 WAN 的协议", 通常不考虑用于企业或数据中心应用程序。
-
与 IGP 相比, BGP 被认为具有 "慢得多" 的路由收敛速度。
-
大规模 BGP 部署通常使用 IGP 进行 BGP 下一跳解析, 因为 IBGP 拓扑中的所有节点并非直接连接。
-
BGP 被认为需要大量配置开销, 并且不支持邻居自动发现。
本文档讨论了其中一些看法, 特别是适用于所提议设计的看法, 并强调了使用该协议的一些优势, 例如:
-
BGP 在其协议设计的某些部分具有较低的复杂性——与大多数链路状态 IGP (如 OSPF) 相比, 内部数据结构和状态机更简单。例如, BGP 不是实现邻接形成、邻接维护和/或流量控制, 而是简单地依赖 TCP 作为底层传输。这满足了 REQ2 和 REQ3。
-
与链路状态 IGP 相比, BGP 信息泛洪开销更少。由于每个 BGP 路由器仅计算和传播所选的最佳路径, 一旦 BGP 发言者找到替代路径 (当高度对称的拓扑 (如 Clos) 与纯 EBGP 设计相结合时存在), 网络故障就会被屏蔽。相比之下, 链路状态 IGP 的事件传播范围是整个区域, 无论故障类型如何。通过这种方式, BGP 更好地满足 REQ3 和 REQ4。还值得一提的是, 所有广泛部署的链路状态 IGP 都具有路由信息的定期刷新功能, 而 BGP 不会使路由状态过期, 尽管这很少影响现代路由器控制平面。
-
BGP 支持第三方 (递归解析) 下一跳。这允许操纵多路径为非 ECMP 或基于应用程序定义的路径的转发, 通过与可以将路由信息注入系统的应用程序 "控制器" 建立对等会话, 满足 REQ5。OSPF 使用 "转发地址" 等概念提供类似功能, 但在实现上更困难, 并且对信息传播范围的控制要少得多。
-
使用定义良好的自治系统号 (Autonomous System Number, ASN) 分配方案和标准 AS_PATH 循环检测, 可以控制 "BGP 路径搜索" (参见 [JAKMA2008]), 并且将忽略复杂的不需要的路径。有关工作 ASN 分配方案的示例, 请参见第 5.2 节。在链路状态 IGP 中, 实现相同目标需要多 (实例/拓扑/进程) 支持, 通常在所有数据中心设备中不可用, 并且配置和故障排除非常复杂。使用大多数数据中心设计使用的传统单泛洪域, 在某些故障条件下可能会选择不需要的冗长路径, 例如, 遍历多个第二层设备。
-
使用最少路由策略实现的 EBGP 配置更容易排除网络可达性问题。在大多数实现中, 查看 BGP Loc-RIB 的内容并将其与路由器的路由信息库 (Routing Information Base, RIB) 进行比较非常简单。此外, 在大多数实现中, 操作员可以查看每个 BGP 邻居的 Adj-RIB-In 和 Adj-RIB-Out 结构, 因此可以轻松地在 BGP 会话的两侧关联传入和传出的网络层可达性信息 (Network Layer Reachability Information, NLRI) 信息。因此, BGP 满足 REQ3。