跳到主要内容

5. Routing Protocol Design (路由协议设计)

5. Routing Protocol Design (路由协议设计)​

本节讨论为大规模数据中心选择合适路由协议的原因, 并提供使用 EBGP 与 Clos 拓扑的详细配置指南.

5.1 Choosing EBGP as the Routing Protocol (选择 EBGP 作为路由协议)​

在为大规模数据中心选择路由协议时, 几个候选协议都被考虑过, 包括 OSPF, IS-IS, EIGRP 和 BGP.本节解释了为什么选择 EBGP 作为最适合满足第 2.5 节中概述的需求的协议.

考虑的协议​

OSPF 和 IS-IS 是常用的链路状态内部网关协议 (IGP).它们的主要优势是:

  • 广泛的实现和运营经验
  • 快速收敛
  • 支持 ECMP

然而, 对于大规模数据中心, 这些协议存在一些挑战:

  • 全网状态同步: 所有路由器必须维护相同的链路状态数据库, 这可能导致大规模部署中的扩展性问题.
  • 洪泛行为: 链路状态更新被洪泛到整个区域, 这可能会在大型网络中造成大量开销.
  • 复杂的区域设计: 虽然可以使用区域来限制洪泛域, 但这会增加设计和运营的复杂性.
  • 有限的流量工程: IGP 不提供对前缀下一跳的细粒度控制.

EIGRP 是一种距离矢量协议, 主要由 Cisco 使用.虽然它具有一些有吸引力的特性 (例如, 快速收敛, Diffusing Update Algorithm), 但它的供应商特定性质违反了 REQ2 (多供应商支持).

BGP 特别是外部 BGP (EBGP) 最初是为互联网设计的, 用于在不同自治系统 (AS) 之间交换路由.虽然它传统上不用于数据中心, 但它具有几个使其非常适合大规模数据中心环境的特性.

为什么选择 EBGP​

选择 EBGP 作为大规模数据中心路由协议的理由基于它如何满足第 2.5 节中定义的需求:

REQ1 (水平可扩展性): EBGP 自然适合 Clos 拓扑, 其中每个连接使用不同的 AS 号.这种设计允许通过简单地添加更多相同类型的设备来轻松扩展.

REQ2 (多供应商支持): BGP 是一个开放标准 (RFC 4271), 几乎所有网络设备供应商都支持.数据中心部署所需的 BGP 功能子集相对较小, 这使得在不同供应商的设备之间实现互操作性变得容易.

REQ3 (简单实现): 虽然 BGP 是一个功能丰富的协议, 但数据中心部署可以使用非常简化的配置.关键的简化包括:

  • 无 BGP 策略复杂性: 在数据中心内部, 不需要复杂的策略, 这些策略在互联网路由中很常见.
  • 简单的前缀通告: 每个设备只通告其本地前缀.
  • 直接的对等关系: 仅在直接连接的邻居之间建立 EBGP 会话.

REQ4 (最小化故障域): EBGP 提供了出色的故障隔离:

  • 增量更新: BGP 仅发送增量更新, 而不是完整的路由表, 这减少了控制平面开销.
  • 点对点会话: EBGP 会话仅在直接连接的邻居之间, 因此链路故障仅影响该会话.
  • 无洪泛: 与链路状态协议不同, BGP 不会洪泛路由信息到整个网络.
  • AS 边界: 不同的 AS 号提供了自然的隔离边界.

REQ5 (流量工程): BGP 为流量工程提供了出色的工具:

  • 下一跳控制: BGP 允许明确控制前缀的下一跳, 这对于实现任播等技术至关重要.
  • AS 路径操作: 虽然在简化的数据中心设计中不常用, 但 AS 路径可以在需要时用于影响路由选择.
  • 社区: BGP 社区可用于标记和过滤路由.

额外的 EBGP 优势​

除了满足明确的需求外, EBGP 还提供了其他几个优势:

运营简单性: EBGP 配置可以高度模板化和自动化.对于给定的 Clos 层级, 每个设备的配置几乎相同, 只有 AS 号和 IP 地址不同.

调试简单性: BGP 具有出色的运营工具和可见性.标准命令如 show ip bgp 和 show ip bgp summary 提供了丰富的信息来排除问题.

稳定性: BGP 在互联网规模的部署中久经考验.虽然数据中心环境不同, 但 BGP 的稳定性和成熟度是有价值的.

灵活性: 如果需要, BGP 可以轻松扩展以支持其他功能, 例如使用 MP-BGP 的 IPv6 或 MPLS L3VPN.

EBGP 与 IBGP​

值得注意的是, 虽然本文档重点关注 EBGP, 但也可以使用内部 BGP (IBGP).然而, EBGP 由于以下原因而更受青睐:

  • 无需路由反射器: IBGP 需要全网格或路由反射器来分发路由.在 Clos 拓扑中, EBGP 的自然对等结构消除了这种需求.
  • 简化的配置: EBGP 不需要 IBGP 所需的 next-hop-self 或其他配置.
  • 自动环路预防: EBGP 使用 AS 路径来防止环路, 这在 Clos 拓扑中自然有效.

综上所述, EBGP 为大规模数据中心提供了一个简单, 可扩展且运营友好的路由解决方案, 它有效地满足了本文档中定义的所有需求.

5.2 EBGP Configuration for Clos Topology (Clos 拓扑的 EBGP 配置)​

本节提供了在 Clos 拓扑中配置 EBGP 的详细指南.

5.2.1 EBGP Configuration Guidelines and Example ASN Scheme (EBGP 配置指南和示例 ASN 方案)​

在 Clos 拓扑中部署 EBGP 的关键设计决策是如何分配自治系统号 (ASN).有几种方法, 每种都有其权衡.

方案 1: 每个设备唯一的 ASN

在此方案中, 每个路由器都被分配一个唯一的 ASN.这是最灵活的方案, 并提供最大的控制和可见性.

优点:

  • 完全控制和可见性: 可以根据 AS 路径轻松识别和跟踪路由.
  • 简化的故障排除: 可以立即识别路由来自哪个设备.
  • 灵活的流量工程: 可以基于特定设备操作路由.

缺点:

  • AS 号消耗: 需要大量的 AS 号.

方案 2: 每层级唯一的 ASN

在此方案中, 同一层级 (例如, 所有 Tier 1 设备) 的所有设备共享相同的 ASN.

优点:

  • 减少 AS 号消耗: 只需要每层级一个 AS 号.
  • 简化的配置: 同一层级的所有设备具有相同的 AS 号.

缺点:

  • 需要 allowas-in: 由于同一层级的设备共享 AS 号, 因此需要 allowas-in 配置来接受具有自己 AS 号的路由.
  • 降低的可见性: 无法仅根据 AS 路径识别特定设备.

方案 3: 混合方案

可以使用混合方案, 其中一些层级使用唯一的 ASN (例如 Tier 1), 而其他层级共享 ASN (例如 Tier 2 和 Tier 3).

推荐方案

对于大多数部署, 方案 1 (每个设备唯一的 ASN) 是推荐的, 因为它提供了最大的灵活性和可见性.使用 4 字节 ASN [RFC6793], 有足够的私有 AS 号可用 (参见下一节).

示例 ASN 分配

对于 3 阶段 Clos 拓扑:

  • Tier 1 设备: AS 64601 - 64699
  • Tier 2 设备: AS 64701 - 64999
  • 服务器 / Tier 3 设备 (如果适用): AS 65000 - 65534

对于 5 阶段 Clos 拓扑:

  • Tier 1 设备: AS 64501 - 64599
  • Tier 2 设备 (上层): AS 64601 - 64699
  • Tier 2 设备 (下层) / Tier 3 设备: AS 64701 - 64999
  • 服务器 / Tier 4 设备: AS 65000 - 65534

基本 EBGP 配置示例

以下是 Tier 2 设备的典型 EBGP 配置示例:

router bgp 64701
router-id 10.0.1.1
maximum-paths 64

neighbor 10.1.1.1 remote-as 64601
neighbor 10.1.1.1 description Tier1-Device-1

neighbor 10.1.2.1 remote-as 64602
neighbor 10.1.2.1 description Tier1-Device-2

neighbor 10.2.1.1 remote-as 65001
neighbor 10.2.1.1 description Server-1

network 10.0.1.0 mask 255.255.255.0

关键配置点:

  • maximum-paths: 设置为支持所需的 ECMP 扇出.
  • 每个邻居都明确配置了远程 AS 号.
  • 使用 network 命令通告本地前缀.

5.2.2 Private Use ASNs (私有 ASN)​

BGP 支持私有使用的 ASN, 类似于私有 IP 地址空间 (RFC 1918).这些 ASN 不应在全球互联网上通告, 但非常适合数据中心内部使用.

2 字节私有 ASN: 64512 - 65534 (RFC 6996)

  • 总共 1023 个 ASN
  • 对于较小的部署已足够

4 字节私有 ASN: 4200000000 - 4294967294 (RFC 6996)

  • 大量可用的 ASN
  • 对于大规模部署是推荐的

对于大规模数据中心, 使用 4 字节私有 ASN 提供了充足的空间, 并允许有意义的 ASN 分配方案, 例如:

  • 将 ASN 空间划分为不同的数据中心或集群
  • 在 ASN 中编码拓扑信息 (例如, 机架号, 行号)

重要注意事项: 当数据中心需要与外部网络 (例如 WAN 或互联网) 对等时, 必须注意不要泄漏私有 ASN.这通常通过在边缘使用 AS 路径过滤或 remove-private-as 功能来处理 (参见第 5.2.4 节).

5.2.3 Prefix Advertisement (前缀通告)​

在数据中心 EBGP 设计中, 前缀通告应该简单明了.一般原则是:

服务器 / Tier 3 前缀: 连接到服务器的每个 Tier 2 设备 (或 Tier 3 设备, 在 5 阶段 Clos 中) 应该通告与这些服务器关联的前缀.这些前缀通常是:

  • 服务器 IP 地址的 /32 主机路由 (用于最大灵活性)
  • 小的 /24 或更大的子网 (如果服务器以小组进行管理)

基础设施前缀: 用于设备管理 (例如, 环回地址) 的前缀也应该通告.通常, 每个设备通告其自己的环回作为 /32.

不通告传输前缀: 设备之间的点对点链路使用的 IP 地址通常不需要通告, 因为它们仅用于直接连接的邻居之间的传输.

示例配置

Tier 2 设备通告服务器前缀和自己的环回:

router bgp 64701
network 10.100.1.1 mask 255.255.255.255 ! Loopback
network 10.200.0.0 mask 255.255.255.0 ! Server subnet

动态前缀通告: 在某些情况下, 可能希望动态通告前缀, 例如用于任播服务.这可以通过以下方式实现:

  • 使用 redistribute connected 通告连接的接口
  • 使用路由映射来过滤和控制通告的内容
  • 与应用程序集成以动态注入路由

5.2.4 External Connectivity (外部连接)​

数据中心通常需要连接到外部网络, 例如:

  • WAN 连接到其他数据中心
  • 互联网连接
  • 企业网络连接

本节讨论如何处理数据中心 EBGP 设计与外部网络之间的边界.

边缘设备: 通常, 一组专用的边缘路由器处理外部连接.这些设备:

  • 在内部使用 EBGP 与数据中心 Clos 拓扑对等
  • 在外部使用 EBGP (或其他协议) 与外部网络对等

AS 路径处理: 当路由通过边缘传播时, 必须注意 AS 路径:

出站 (数据中心到外部网络):

  • 移除私有 AS: 使用 remove-private-as 功能从通告到外部对等体的路由中剥离私有 ASN.
  • AS 路径前置: 如果需要, 可以使用 AS 路径前置来影响入站流量模式.
  • 通告聚合: 通常, 边缘路由器将聚合数据中心前缀并仅通告聚合到外部 (参见第 5.2.5 节).

入站 (外部网络到数据中心):

  • 默认路由: 边缘路由器通常将默认路由 (0.0.0.0/0) 注入数据中心, 以便内部设备可以访问外部目的地.
  • 特定前缀: 如果需要更细粒度的路由, 边缘路由器可以通告特定的外部前缀.

示例边缘配置

边缘路由器的配置可能如下所示:

router bgp 64500
! Internal peering
neighbor 10.1.1.1 remote-as 64601
neighbor 10.1.1.1 route-map SET-DEFAULT-ROUTE out

! External peering
neighbor 198.51.100.1 remote-as 65000
neighbor 198.51.100.1 route-map REMOVE-PRIVATE out
neighbor 198.51.100.1 route-map AGGREGATE-ONLY out

route-map SET-DEFAULT-ROUTE permit 10
match ip address DEFAULT-ROUTE

route-map REMOVE-PRIVATE permit 10
set as-path exclude 64512-65534
set as-path exclude 4200000000-4294967294

route-map AGGREGATE-ONLY permit 10
match ip address AGGREGATE-PREFIXES

防火墙和安全: 边缘通常也是实施安全策略的地方, 包括:

  • 防火墙规则
  • DDoS 防护
  • 入站和出站流量过滤

5.2.5 Route Summarization at the Edge (边缘路由汇总)​

在数据中心边缘汇总路由是一种最佳实践, 原因如下:

减少通告的前缀数: 向外部网络通告数千或数万个单独的主机路由是不切实际的.汇总将这些减少为少量的聚合前缀.

稳定性: 汇总减少了通告给外部对等体的路由变化次数.数据中心内的单个服务器上线/下线不会影响外部路由.

隐私和安全: 汇总隐藏了数据中心内部拓扑和地址分配的详细信息.

实现汇总

边缘路由器可以通过以下方式实现汇总:

静态聚合: 使用 aggregate-address 命令手动配置聚合:

router bgp 64500
aggregate-address 10.200.0.0 255.255.0.0 summary-only

summary-only 关键字确保只通告聚合, 而不通告更具体的前缀.

基于存在的聚合: 聚合仅在存在至少一个更具体的前缀时才通告:

router bgp 64500
aggregate-address 10.200.0.0 255.255.0.0 summary-only as-set

as-set 选项在聚合的 AS 路径中包含所有组成前缀的 AS 号, 这有助于环路预防.

重要警告: 虽然边缘汇总是推荐的, 但数据中心内部的汇总应该谨慎使用或完全避免.这是因为 Clos 拓扑的属性, Tier 1 设备到每个服务器只有一条路径.内部汇总可能导致黑洞和次优路由 (参见第 8.2 节了解更多详细信息).