当流量进入 Cloudflare 的网络时,它需要到达您基础设施中的正确目的地——特定的数据中心、办公室或云环境。流量引导(Traffic steering)控制 Cloudflare 如何做出这些路由决策。
Cloudflare 虚拟网络 是一个虚拟 network overlay,对您的账户(account)私有,横跨全球所有 Cloudflare 数据中心。该 overlay 网络提供:
- 针对 拒绝服务 (DoS) 和 Cloudflare Network Firewall 过滤的互联网流量的 Magic Transit 交付,从流量进入的入口数据中心到您的公共地址边缘/边界网络。
- 在 IPsec/GRE 隧道、互连、Cloudflare Load Balancer 以及 Zero Trust 连接(例如 Cloudflare One Client、Remote Browser Isolation、Access 和 Gateway)之间的 Cloudflare WAN 数据包传输。
Cloudflare 虚拟网络 支持使用 GRE 和 IPsec 或 带 Dataplane v2 的 CNI 通过任播(anycast)隧道路由 Cloudflare WAN 流量。您可以通过静态路由配置或通过 BGP 对等(BGP peering)(Beta)学到的路由,将条目添加到 Cloudflare 虚拟网络路由表 中。 流量也可以根据跟踪的流状态自动路由。
在 Cloudflare 虚拟网络路由表 中允许使用以下 IPv4 地址范围:
- RFC 1918 地址空间,具体为
10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。
当同时使用 Cloudflare WAN 和 Cloudflare Tunnel 时,在为 Cloudflare WAN 选择静态路由时,请考虑 Cloudflare Tunnel 静态路由中使用的 IP 范围。有关更多信息,请参阅 Cloudflare Tunnel。
对于 RFC 1918 之外的前缀,请联系您的 Cloudflare 客户服务经理。
如果流量不匹配您在虚拟网络中配置的任何路由,Cloudflare 将根据目的地地址类型应用默认行为:
- 公共(可在互联网路由的)地址:流量出口到互联网。
- 私有地址(RFC 1918 ↗ 或 CGNAT/RFC 6598 ↗):流量被丢弃(空路由),因为私有地址在公共互联网上是不可路由的,且在没有匹配路由的情况下 Cloudflare 无法交付它们。
Cloudflare WAN 根据路由条目优先级引导沿隧道路由的流量。
- 数值越小,优先级越高。
- 当前缀条目的优先级数值相同时,Cloudflare 使用 等价多路径 (ECMP) 数据包转发来路由流量。您可以为静态路由应用可选的权重值,以 修改 ECMP 隧道分布。
Cloudflare 路由采用最长前缀匹配(longest-prefix match)。无论隧道优先级如何,更具体的静态路由(例如
/30)总是优先于较不具体的静态路由(例如/29)—— 除非您删除更具体的路由。- 当 BGP 和静态路由具有相同的前缀和优先级时,Cloudflare 通过使静态路由优于 BGP 路由来强制执行优先级。这确保了手动配置的静态路由优先,除非您明确降低它们的优先级。
静态路由的优先级值直接在 Cloudflare 仪表板(dashboard)或通过 API 配置,作为路由对象的一部分。例如:
| 前缀 | 下一跳 | 优先级 |
|---|---|---|
10.10.10.100/24 |
TUNNEL_1_IAD |
200 |
10.10.10.100/24 |
TUNNEL_2_IAD |
200 |
10.10.10.100/24 |
TUNNEL_3_ATL |
100 |
10.10.10.100/24 |
TUNNEL_4_ATL |
100 |
在此示例中,优先级为 100 的隧道优于优先级为 200 的隧道,因为数值越小优先级越高。
或者,您可以分配权重以在多个隧道之间更有效地分配流量。权重值决定了流量比例,权重越高接收的流量越多。最大权重值为 256。
在以下示例中,TUNNEL_2_IAD 可能会接收到两倍于 TUNNEL_1_IAD 的流量。
| 前缀 | 下一跳 | 优先级 | 权重 |
|---|---|---|---|
10.10.10.100/24 |
TUNNEL_1_IAD |
100 |
64 |
10.10.10.100/24 |
TUNNEL_2_IAD |
100 |
128 |
10.10.10.100/24 |
TUNNEL_3_ATL |
100 |
192 |
10.10.10.100/24 |
TUNNEL_4_ATL |
100 |
255 |
除了优先级之外,将静态路由的范围限定在特定的地理区域也会影响流量的引导方式。有关更多详细信息,请参阅 将路由范围限定在特定区域。
当 BGP 宣告路由时,Cloudflare 会自动将其添加到 Cloudflare 虚拟网络路由表,默认优先级为 100,适用于 所有区域。但是,如果存在具有相同前缀和优先级的静态路由,则静态路由始终优先于 BGP 路由。根据您想要优先考虑的路由,为静态路由设置不同的优先级(大于或小于 100)。数值越小,优先级越高。
此外,当存在多个具有相同前缀长度和优先级的 BGP 路由时,ECMP 使用 等价多路径 (ECMP) 路由 在它们之间分配流量。
Cloudflare 支持通过 BGP 团体属性(BGP communities)和 AS 预挂(AS prepending)进行流量工程。您可以使用这些流量路由技术来设置路由优先级并在多个互连之间执行流量工程。
默认的 BGP 路由优先级为 100。可以使用团体属性(communities)调整此基本优先级。例如,当路由被标记为团体属性 13335:60010 时,其优先级被设置为 10。这使其优先级高于默认值 100,因为数值越小优先级越优先。
支持用于设置基本路由优先级的团体属性值包括:
13335:60010:将基本路由优先级设置为1013335:60050:将基本路由优先级设置为50UNSET:将基本路由优先级设置为10013335:60150:将基本路由优先级设置为15013335:60200:将基本路由优先级设置为20013335:60901:将基本路由优先级设置为50100013335:60902:将基本路由优先级设置为1001000
在同一前缀更新消息中设置多个基本优先级团体属性属于配置错误。在这种情况下,Cloudflare 会优先选择最高优先级(最小整数值)。
在接收到的 AS 路径中,每多出现一次您的 ASN,Cloudflare 就会在路由的基本优先级上加 10。通过增加优先级数值,该路由将变得不那么优先。
例如,如果您的 ASN 是 65000,那么发送给 Cloudflare 的 BGP UPDATE 将为:
# 基本优先级无变化。
AS_PATH: 65000 65200
# 为 1 次 65000 预挂在基本优先级上加 10
AS_PATH: 65000 65000 65200
# 为 2 次 65000 预挂在基本优先级上加 20
AS_PATH: 65000 65000 65000 65200当结合团体属性使用 AS 预挂时,Cloudflare 会调整路由优先级。例如,如果路由被标记为 13335:60150,则基本优先级设置为 150。如果您预挂了两次 ASN,Cloudflare 将为每次预挂加 10,从而将路由优先级提高到 180。
自动返回路由(Automatic Return Routing,简称 ARR)允许 Cloudflare 跟踪来自 Cloudflare WAN(前称 Magic WAN)连接位置的网络流,确保返回流量路由回接收到该流量的连接,而不需要静态或动态路由。此功能需要新的 Unified Routing 模式(Beta)。
Cloudflare WAN 无需依赖静态或动态路由来进行返回路径选择,而是学习流并记住特定流是从哪个连接到达的。对于任何匹配的返回流量,Cloudflare WAN 会使用此学习到的状态来选择下一跳。这简化了配置,减少了您必须管理的路由数量,并有助于保持有状态流量的对称性。
ARR 提供以下优势:
- 消除对返回路由的需求:对于支持的流量类型,例如新的 TCP 连接(TCP SYN)、UDP 和 ICMP 回显流量,Cloudflare WAN 不再需要路由表条目即可将流量返回到源隧道或互连。
- 保持流的对称路由:对给定流(例如 TCP 会话)的响应将通过承载初始请求的相同 Cloudflare WAN 连接返回——这对于有状态防火墙和中间盒非常重要。
- 支持重叠的 IP 空间:因为返回路径与学到的连接状态绑定,而不是路由表中的目标前缀,所以自动返回路由可以支持不同站点使用重叠私有地址空间的场景。
- 按连接运行:您可以通过在每个连接上启用该功能,来决定哪些 IPsec / GRE 隧道或网络互连应使用此行为。
当符合自动返回路由(ARR)条件的流量到达启用了 ARR 的连接时,Cloudflare WAN 会创建一个流条目,记录:
- 源 IP 地址和目标 IP 地址
- 相关的端口或标识符,具体取决于协议
- 流量到达的连接(隧道或互连)
对于匹配此流且需要下一跳的任何数据包,Cloudflare WAN 将:
- 检查是否存在匹配的自动返回路由流。
- 如果存在匹配,则将数据包路由回学习到该流的相同连接,而不是咨询 Cloudflare 虚拟网络路由表。
从您的网络到互联网的初始请求仍使用您配置的静态或 BGP 路由。在学习到流之后,ARR 仅影响支持流量的返回路径。
自动返回路由适用于以下情况:
- 在启用了该功能的隧道或网络互连上接收到流量。
- 接收到的流量是以下之一:
- 新的 TCP 连接(TCP SYN)
- UDP
- ICMP 回显(ping)请求
- 流量的目的地是:
- 通过 Cloudflare 进行的互联网出口
- Cloudflare One Client
- 通过 Cloudflare Tunnel 连接到 Cloudflare 的私有网络
- 通过 Cloudflare Mesh 连接到 Cloudflare 的私有网络
在最初的发布版本中,ARR 不会更改 Cloudflare WAN 连接之间的流量路由(例如,从一个 IPsec/GRE 隧道或互连接口到另一个接口的流量)。该流量继续遵循您配置的 Cloudflare WAN 路由。
Unified Routing 模式是较新的 Cloudflare One 数据平面,它对所有支持的连接类型使用单一的路由架构。Unified Routing 模式在单个系统中跨 Cloudflare One Client、Cloudflare Tunnel、IPsec、GRE 和 Cloudflare Network Interconnect (CNI) 路由流量,使您可以更轻松地设置 Cloudflare One 连接。
在 Cloudflare WAN 仪表板(dashboard)中,路由模式显示在您管理路由的位置:
- Routing mode: Unified — 您的账户(account)处于统一数据平面上,并支持新的路由功能。
- Routing mode: Legacy — 您的账户(account)使用旧版(Legacy)数据平面,不支持所有统一路由功能。
Unified Routing 是驱动 Magic Transit 和 Cloudflare One 网络连接的专用虚拟网络覆盖的未来。
对于 Cloudflare One 客户,有几个原因值得考虑迁移到 Unified Routing,因为它是多项新功能的前提条件:
- 自动返回路由
- BGP over IPsec/GRE
- 使用具有可自定义 IPv4 范围的私有 IP 空间的 Cloudflare 源 IP(Source IPs)
- 可自定义的 Cloudflare One Client IPv4 范围
- IPv6 支持
- 提高了 Cloudflare One Client 与 IPsec/GRE/CNI 之间的性能
- 在同一账户中支持 Cloudflare Mesh 和 IPsec/GRE/CNI 连接。
以下限制适用于使用 Unified Routing 模式的账户。随着 Cloudflare 添加对其他功能的支持,此列表将会变短。
| 当前 Beta 限制 | 细节 |
|---|---|
| 性能 | 每个上路连接(onramp)通常在 150 Mbps 左右 |
| 基本数据包捕获 | 捕获排除自动返回路由(Automatic Return Routing)或 BGP-over-tunnels 流量 |
| 完整数据包捕获 | 尚未支持 |
| Cloudflare 高级网络防火墙功能:IP 列表、ASN 列表、威胁情报列表、IDS、速率限制、SIP、托管规则集 | 尚未支持 |
| Gateway 过滤规则 | 在入站和出站连接都是 IPsec/GRE/CNI 的流量上不受支持 |
| Load Balancer | 支持公共到私有的使用场景到达 IPsec/GRE/CNI 目的地。私有到私有的使用场景尚未支持 Cloudflare 源 IP |
| IPv6 支持 | IPsec 和 GRE 支持 IPv6。IPv6 的基本网络防火墙支持仅限于源/目的 IP 过滤 |
Unified Routing 目前处于封闭 Beta 测试阶段。要注册:
- 现有的 Cloudflare WAN 或 Magic Transit 客户:Cloudflare 建议您在非生产账户中评估该新功能及您的使用场景。联系您的账户团队以启用 Unified Routing。
- 新客户:Contact 您的账户团队,在针对您的使用场景的概念验证中启用 Unified Routing。
当您的账户同时使用 Zero Trust 路由(Cloudflare Tunnel、Cloudflare Mesh)和 WAN 路由(IPsec、GRE、CNI)时,路由选择行为取决于您的 路由模式。
| 路由类型 | 连接方式 |
|---|---|
| Zero Trust 路由 | Cloudflare Tunnel, Cloudflare Mesh |
| WAN 路由 | IPsec、GRE 和 CNI |
Unified Routing 对所有连接类型使用单一的路由架构。路由选择在所有流量类型和连接方式上一致地应用最长前缀匹配(longest-prefix-match)。
| Zero Trust 路由 | WAN 路由 | 流量目的地 | 选定路由 |
|---|---|---|---|
10.0.0.0/24 |
10.0.0.64/28 |
10.0.0.70 |
WAN (更具体) |
10.0.0.0/28 |
10.0.0.0/24 |
10.0.0.10 |
Zero Trust (更具体) |
10.0.0.0/24 |
10.0.0.0/24 |
10.0.0.10 |
Zero Trust (相同前缀长度) |
当路由具有相同的前缀长度时,Zero Trust 路由优先于 WAN 路由。
对于跨站点 IP 空间重叠的场景,启用 自动返回路由 以确保返回流量到达正确的源。
对于使用旧版路由的账户,路由选择取决于流量源。
对于仅使用 Zero Trust 的账户,Cloudflare One Client 流量仅使用 Zero Trust IP 路由表进行路由,遵循最长前缀匹配逻辑。
如果您的账户启用了 Cloudflare WAN,来自 Cloudflare One Client 的流量将遵循与 带有 Gateway 的站点到站点流量 相同的路由选择行为。如果您希望 Cloudflare One Client 继续表现得像未启用 WAN 一样,请联系您的账户团队。
对于不需要 Gateway 过滤的 WAN 连接之间的流量(IPsec 到 IPsec、GRE 到 GRE 以及 CNI 到 CNI),最长前缀匹配在 WAN 路由表中适用。此流量不与 Zero Trust 路由交互。
当将 Gateway 网络策略 应用于站点到站点 WAN 流量时,路由选择遵循以下规则:
| 场景 | 行为 |
|---|---|
| Zero Trust 路由比 WAN 路由更具体 | 正常工作 — 入站和出站流量均遵循最长前缀匹配 |
| WAN 路由比 Zero Trust 路由更具体 | 无法保证 — 无论前缀长度如何,Zero Trust 路由都可以优先 |
| 前缀长度相同 | Zero Trust 路由胜出(按设计) |
旧版路由(Legacy Routing)使用两个路由组件:
- Zero Trust 路由(处理 Cloudflare One Client、Cloudflare Tunnel 和 Cloudflare Mesh)
- WAN 路由(处理 IPsec、GRE 和 CNI)
跨系统流量遵循与 带有 Gateway 的站点到站点流量 相同的规则。更具体的 Zero Trust 路由可以正常工作;但无法保证会选择更具体的 WAN 路由。
建议: 如果需要重叠,请迁移到 Unified Routing 或联系您的账户团队。
要确定您账户的路由模式:
- 前往 Routes(路由)。
- 检查页面顶部的横幅:
- Your account is using Unified Routing mode. — 您的账户使用的是 Unified Routing。
- Unified routing is available. — 您的账户使用的是旧版路由(Legacy Routing)。
要迁移到 Unified Routing,请联系您的账户团队。
如果您有通往某一网络段的多条连接路径,并且想根据流量到达 Cloudflare 网络的位置来应用不同的路由优先级,您可以将路由范围限定在特定的 Cloudflare 数据中心区域。如果您运行自己的任播(anycast)网络,并且希望最终用户流量到达最靠近该用户的网络位置,这将非常有用。
当您将路由范围限定在某个 Cloudflare 数据中心区域时,它仅在该区域的 Cloudflare 虚拟网络路由表 中显示,另外还有所有不带任何区域范围的全局路由。路由优先级和 ECMP 逻辑在区域范围路由和全局路由中均适用。
使用具有区域范围的路由时,请确保所有前缀的路由都覆盖所有区域。否则,流量可能会到达没有被任何路由覆盖的 Cloudflare 区域,在这种情况下 Cloudflare 会丢弃该流量。
下表举例说明了如何对路由使用地理范围限定:
| 前缀 | 下一跳 | 优先级 | 区域代码 |
|---|---|---|---|
10.10.10.100/24 |
TUNNEL_1_IAD |
100 |
AFR |
10.10.10.100/24 |
TUNNEL_2_IAD |
100 |
EEUR |
10.10.10.100/24 |
TUNNEL_3_ATL |
100 |
ENAM |
10.10.10.100/24 |
TUNNEL_4_ATL |
100 |
ME |
10.10.10.100/24 |
TUNNEL_5_ATL |
100 |
WNAM |
10.10.10.100/24 |
TUNNEL_4_ATL |
100 |
ENAM |
当有多个通往相同前缀且优先级相同的路由,并且这些路由被分配给不同的地理区域(如 WNAM 和 ENAM)时,进入特定区域(例如 WNAM)内网络的流量将通过与该相同区域关联的路由出站。
Cloudflare 有九个地理区域:
| 区域代码 | 区域 |
|---|---|
AFR |
非洲 |
APAC |
亚太地区 |
EEUR |
东欧 |
ENAM |
北美东部 |
ME |
中东 |
OC |
大洋洲 |
SAM |
南美洲 |
WEUR |
西欧 |
WNAM |
北美西部 |
在添加或编辑静态路由时,在 Region code(区域代码) 部分中配置您流量的范围。有关更多信息,请参阅 创建静态路由 和 编辑静态路由。
等价多路径路由使用从 数据包 ↗ 数据计算得到的哈希来决定选择哪条路由。哈希始终使用源 IP 地址和目的 IP 地址。对于 TCP 和 UDP 数据包,哈希还包含源端口和目的端口。ECMP 算法将每个数据包的哈希值除以等价下一跳的数量。模数(余数)决定了数据包选择的路由。
使用 ECMP 会带来许多后果:
- 路由到等价路径是概率性的。
- 具有相同源和目的地的相同会话中的数据包具有相同的哈希值。这些数据包也使用相同的下一跳。
- 路由中等价下一跳数量的更改可能会导致流量使用不同的隧道。例如,由健康检查事件触发的动态优先级重新调整可能会导致流量使用不同的隧道。
因此,ECMP 在具有相同前缀和优先级的隧道之间提供了负载均衡。
此图表说明了 ECMP 如何在具有相同前缀和优先级的两条路径上同等地分配流量。
flowchart LR
accTitle: 隧道图
accDescr: 此示例包含三个隧道路由,流量同等地分配在两个路径上。
subgraph Cloudflare
direction LR
B[Cloudflare <br> 数据中心]
C[Cloudflare <br> 数据中心]
D[Cloudflare <br> 数据中心]
end
Z("针对某些优先级隧道的负载均衡 <br> 使用 ECMP(基于源 IP、目的 IP、<br> 源端口、目的端口进行哈希)") --- Cloudflare
A((用户)) --> Cloudflare --- E[任播 IP]
E[任播 IP] --> F[/"GRE 隧道 1 / <br> 优先级 1 / <br> 约 50% 流"/] --> I{{客户 <br> 数据中心/ <br> 网络 1}}
E[任播 IP] --> G[/"GRE 隧道 2 / <br> 优先级 1 / <br> 约 50% 流"/] --> J{{客户 <br> 数据中心/ <br> 网络 2}}
E[任播 IP] --> H[/GRE 隧道 3 / <br> 优先级 2 / <br> 0% 流/] --o K{{客户 <br> 数据中心/ <br> 网络 3}}
客户路由器故障
当 Cloudflare WAN 健康检查确定隧道 2 不健康时,Cloudflare WAN 会动态地降低该路由的优先级,使隧道 1 成为唯一的最高优先级路由。因此,Cloudflare WAN 将流量从隧道 2 引导开,所有流量都流向隧道 1。
flowchart LR
accTitle: 隧道图
accDescr: 此示例中隧道 2 不健康,且所有流量均优先路由到隧道 1。
subgraph Cloudflare
direction LR
B[Cloudflare <br> 数据中心]
C[Cloudflare <br> 数据中心]
D[Cloudflare <br> 数据中心]
end
Z(隧道健康状态 <br> 由运行自所有 Cloudflare <br> 数据中心的健康检查确定) --- Cloudflare
A((用户)) --> Cloudflare --- E[任播 IP]
E[任播 IP] --> F[/"隧道 1 / <br> 优先级 1 / <br> 约 100% 流"/]:::green --> I{{客户 <br> 数据中心/ <br> 网络 1}}
E[任播 IP] --> G[/隧道 2 / <br> 优先级 3 / <br> 不健康 / 0% 流/]:::red --x J{{客户 <br> 数据中心/ <br> 网络 2}}
E[任播 IP] --> H[/隧道 3 / <br> 优先级 2 / <br> 0% 流/] --o K{{客户 <br> 数据中心/ <br> 网络 3}}
classDef red fill:#EE4B2B,color: black
classDef green fill:#00FF00,color: black
中间互联网服务提供商(ISP)故障
当 Cloudflare WAN 确定隧道 1 也不健康时,该路由也会被降低优先级,使隧道 3 成为最高优先级路由。在这种情况下,所有流量都流向隧道 3。
flowchart LR
accTitle: 隧道图
accDescr: 此示例中隧道 1 和 2 均不健康,且所有流量均优先路由到隧道 3。
subgraph Cloudflare
direction LR
B[Cloudflare <br> 数据中心]
C[Cloudflare <br> 数据中心]
D[Cloudflare <br> 数据中心]
end
Z(当高优先级隧道 <br> 不健康时,将使用 <br> 较低优先级的隧道) --- Cloudflare
A((用户)) --> Cloudflare --- E[任播 IP]
E[任播 IP] -- 中间网络问题 --> F[/隧道 1 / <br> 优先级 3 / <br> 不健康 / 0% 流/]:::red --x I{{客户 <br> 数据中心/ <br> 网络 1}}
E[任播 IP] -- 中间网络问题 --> G[/隧道 2 / <br> 优先级 3 / <br> 不健康 / 0% 流/]:::red --x J{{客户 <br> 数据中心/ <br> 网络 2}}
E[任播 IP] --> H[/隧道 3 / <br> 优先级 2 / <br> 100% 流/]:::green --> K{{客户 <br> 数据中心/ <br> 网络 3}}
classDef red fill:#EE4B2B,color: black
classDef green fill:#00FF00,color: black
当 Cloudflare WAN 确定隧道 1 和 2 再次恢复健康时,它会重新调整这些路由的优先级,流量流动恢复正常。
因为 ECMP 是概率性的,所以该算法在每条隧道中路由大约相同数量的流。然而,在决定将下一个数据包路由到哪里时,它并不考虑已经通过隧道发送的流量大小。
例如,考虑一个具有许多极低带宽的 TCP 连接和一个极高带宽的 TCP 连接的场景。高带宽连接的数据包具有相同的哈希值,因此使用相同的隧道。结果,该隧道比其他隧道消耗更多的带宽。
将 BGP 对等(BGP peering)与您的 Cloudflare One 或 Magic Transit 虚拟网络路由表配合使用可以让您:
- 自动执行添加或删除网络及子网的过程。
- 利用故障检测和会话恢复功能。
通过此功能,您可以:
- 在通过 CNI、GRE 或 IPsec 隧道连接时,在您的设备与 Cloudflare WAN 服务之间建立 eBGP 会话。
- 通过 MD5 身份验证确保会话安全,防止配置错误。
- 在您的设备与您的 Cloudflare 虚拟网络路由表 之间动态交换路由。
下表概述了跨不同连接方法的 BGP 当前可用性和推荐使用场景。
| 功能 | 发布阶段 | 推荐使用 | 前提条件 |
|---|---|---|---|
| BGP over CNI | Closed Beta | 不适用于新客户 — 请联系您的账户团队 | Cloudflare Network Interconnect (CNI) v2 |
| BGP over Anycast IPsec/GRE | Open Beta | 非生产工作负载 | Unified Routing (Beta) - 联系您的账户团队注册 |
Cloudflare 虚拟网络 在首次处理数据包的 Cloudflare 数据中心(入口节点)处做出单次、逐包路由决策。这确保了即使数据包横跨 Cloudflare 骨干网中的多个节点,其路径也会在进入点确定,以获得最大效率。
您在 IPsec、GRE 或 CNI 之上的 BGP 会话是在最靠近您的 BGP 对等设备的 Cloudflare 数据中心建立的。此处学到的路由必须传播到 Cloudflare 的全球边缘,以控制整个网络的流量路由方式。
- 收敛时间:全局路由收敛通常在 20 秒内完成。
- 可见性:您可以通过 Cloudflare 仪表板或 API 监视学到的路由及其传播状态。
Cloudflare 虚拟网络 使用集中式控制平面进行路由传播,功能类似于 BGP 路由反射器(Route Reflector)。此架构将物理 BGP 会话与全局路由分发解耦:
- 会话终止:BGP 对等会话在最靠近路由器的 Cloudflare 边缘位置终止。
- SDN 转换:入站 BGP 更新被转换为软件定义网络(SDN)状态并传输到集中式中继功能。
- 全球传播:该中继将这些指令传播到全球每个 Cloudflare 数据中心,更新每个站点的本地转发信息库(FIB)。
Cloudflare 的数据平面专为高可用性设计。如果边缘位置与集中式中继失去通信,系统将进入边缘韧性模式(Edge Resiliency Mode),模拟非中断转发(NSF)行为:
- 转发连续性:边缘位置继续使用已知的最后一个良好转发表(FIB)路由流量。数据平面流量保持不受中断。
- 陈旧路径保留:因为在此模式下 FIB 被冻结,所以即使您的路由器底层 BGP 会话发生抖动或重置,转发决策仍保持活动状态。
- 持续健康监测:尽管 BGP 更新已冻结,但隧道健康检查仍保持活跃。这些检查发送自所有 Cloudflare 数据中心,使得任何入口节点处的边缘能够检测到与路由器的物理连接是否已发生故障。如果健康检查失败,边缘的入口节点将降低该特定路径的优先级,从而在即使路由状态冻结的情况下,也能防止流量被发送到黑洞中。
- 更新冻结:在此状态下,全局控制平面将被冻结。从您的路由器接收到的新 BGP 更新将保留在本地的边缘,并且在恢复与集中式中继的连接之前不会向全球传播。
一旦 Cloudflare 边缘与集中式中继之间的连接恢复,系统会自动退出边缘韧性模式并执行有状态的重新同步:
- RIB 到中继同步:边缘将所有当前保留的 BGP 更新(当前 RIB 状态)推送到中继。
- 全球更新:中继核对这些更新并传播任何更改到 Cloudflare 全球网络的其余部分。
- FIB 解冻:边缘处的本地转发表被解冻,并使用最新验证的路由指令进行更新。
Cloudflare WAN BGP 对等是与 Cloudflare 虚拟网络路由表 进行的(而不是与 Cloudflare 互联网全球网络建立对等)。按照本指南配置的 BGP 对等体将接收 Cloudflare 虚拟网络路由表 中所有前缀的宣告,以及在上路连接(on-ramp) 已宣告前缀列表 中配置的任何其他前缀。
相反,如果您寻求在 Cloudflare 数据中心之一与 Cloudflare ASN 13335 进行公共对等,请参阅 PNI 和对等设置。目前无法在同一个物理互连端口上共享 Cloudflare 虚拟网络 BGP 对等和 PNI。
Cloudflare 将从您的设备接收的路由重新分发到 Cloudflare 虚拟网络路由表,Cloudflare WAN 和 Magic Transit 都在使用它。
Cloudflare 虚拟网络路由表 中的所有路由都会宣告给 BGP 对等体。每个 BGP 对等体都会收到每个前缀路由以及完整的 AS_PATH,其中预挂了选定的 Cloudflare 侧 ASN ↗。这是为了让对等体能够准确地执行 环路防御 (loop prevention) ↗。
BGP 对等会话可以宣告可达的前缀到对等体,并撤销先前宣告的前缀。此传播大约需要几分钟。
Cloudflare 使用以下定时器,这些定时器是不可配置的:
| 设置 | 描述 |
|---|---|
| Hold timer(保持定时器) | CNI 为 240 秒,GRE 和 IPsec 隧道为 90 秒 (为了建立会话,Cloudflare 会比较其保持定时器和对等体的保持定时器,并使用两者中较小的一个来建立 BGP 会话。) |
| Keepalive 定时器 | 保持定时器的三分之一。 |
| Graceful restart(平滑重启) | 120 秒(目前仅在 CNI 上支持) |
- Hold timer(保持定时器):指定 BGP 对等体在宣布 BGP 会话中断之前等待接收 keepalive、更新或通知消息的最大时间。Cloudflare 使用此默认保持定时器与在 Open 消息中从对等体收到的保持定时器两者中的较小值。
- Keepalive 定时器:BGP 系统交换 keepalive 消息以确定对等路由器是否可达。如果在保持定时器时间内未收到 keepalive 消息,则假定会话已断开,表示该对等体在 BGP 协议级别上不再可达。
- Graceful restart timer(平滑重启定时器):跟踪路由器在对等体发起平滑重启后,等待对等体重新建立 BGP 会话的时间。如果对等体在此时间内未重新连接,路由器将宣告会话中断并删除陈旧路由。
支持 BGP 多路径(BGP multipath)。如果 BGP 在两个不同的互连上学到相同的前缀,Cloudflare 会根据常规 ECMP 行为在每个互连之间分配发送到该前缀的流量。
支持被动(辅助/感知)模式下的 BGP 平滑重启。Cloudflare 为重启的邻居维护转发状态。
BGP 支持目前存在以下限制:
- Cloudflare 账户(account)的 ASN 和您的设备 ASN 必须不同。仅支持 eBGP。
- Cloudflare 始终注入优先级为
100的路由。 - 不支持双向转发检测(BFD)。
- 如果您对 IPsec/CNI 使用 BGP(Beta),您必须将 Cloudflare 侧的 ASN 设置为
13335。尚不支持私有 ASN。
您需要与 BGP 一起启用 旧版健康检查。这对于确定您的设备是否可以访问特定的 Cloudflare 数据中心至关重要。隧道健康检查 会修改动态学到的 BGP 路由的路由优先级。
默认情况下,Cloudflare 根据网络层特征(IP、端口等)均衡和引导流量。如果您使用的是 Cloudflare WAN Connector,您还可以根据知名应用程序引导流量。应用感知策略可以对流量流动提供更简单的管理和更高的粒度。 有关更多信息,请参阅 应用程序和应用类型。