BGP 与 Anycast:为什么有些节点全球都快

6k 词

摘要:你可能有过这样的体验——同样的目标网站,换一个代理节点速度天差地别。这背后的原因往往不是服务器配置的差异,而是网络路由的差异。BGP(边界网关协议)决定了互联网流量的传输路径,Anycast(任播)让同一个 IP 地址在全球多个位置同时服务。理解这两个概念,能帮助你理解为什么某些线路特别快,以及如何挑选更好的节点。

互联网是怎么传输数据的

在了解 BGP 之前,先简单回顾一下互联网的基本结构。

互联网不是一个统一的网络,而是由成千上万个独立网络互相连接组成的。每个独立网络被称为一个 AS(Autonomous System,自治系统),每个 AS 都有一个唯一的编号(ASN)。

举几个例子:

ASN 运营商 说明
AS4134 中国电信 163 中国电信的普通骨干网
AS4809 中国电信 CN2 中国电信的精品网络
AS4837 中国联通 联通骨干网
AS9808 中国移动 移动骨干网
AS13335 Cloudflare CDN 和网络安全服务
AS15169 Google Google 的网络
AS32934 Meta (Facebook) Meta 的网络

当你从北京家中访问一台位于洛杉矶的服务器时,你的数据包不是直飞过去的——它需要在多个 AS 之间”接力传递”。从你的家庭宽带(运营商的接入网)→ 运营商的骨干网 → 国际出口 → 海底光缆 → 美国的骨干网 → 目标服务器所在的网络。

这个”接力”过程中,数据包在每个 AS 之间的”传递方式”就是由 BGP 决定的。

BGP 是什么

BGP(Border Gateway Protocol,边界网关协议)是互联网的核心路由协议。它的作用简单来说就是:告诉每个网络,如何到达其他网络

BGP 的工作方式

每个 AS 通过 BGP 向邻居 AS 宣告(announce)自己管理的 IP 地址范围。这些宣告会在 AS 之间传播,最终形成一张全球性的路由表。

假设你在电信网络(AS4134)中,要访问 Google(AS15169)的服务器:

1
你的电脑 → AS4134 (中国电信) → AS ??? → AS ??? → AS15169 (Google)

中间经过哪些 AS,由 BGP 决定。BGP 会根据以下因素选择路径:

  1. AS 路径长度:经过的 AS 数量越少,路径通常越短
  2. 路由策略:运营商会配置各种策略偏好,比如优先使用成本更低的路径
  3. 商业关系:AS 之间存在不同的商业关系(对等互联、上游购买、下游客户),这些关系影响路由选择
  4. 网络拥塞:某些路径拥塞时,流量可能被引导到其他路径

AS 路径(AS Path)

AS Path 是 BGP 中最重要的属性之一。它记录了数据包到达目标需要经过的所有 AS。例如:

1
AS4134 → AS4837 → AS6939 → AS15169

这条路径表示:从中国电信出发,经过中国联通(可能在某个交换中心互联),然后到 Hurricane Electric(HE,美国的一个大型网络),最后到 Google。

AS Path 越短,通常延迟越低。但这不是绝对的——一条经过 3 个 AS 但物理距离很长的路径,可能比一条经过 5 个 AS 但物理距离短的路径更慢。

为什么 BGP 路由对代理很重要

BGP 路由直接决定了你使用代理时的实际网络体验:

延迟(Latency):好的路由意味着更少的中间跳转和更短的物理距离,延迟更低。

带宽(Throughput):不同路径的可用带宽不同。拥挤的路径会降低实际吞吐量。

稳定性(Stability):频繁变化的路由会导致连接不稳定,甚至出现丢包。

丢包率(Packet Loss):某些路径(特别是高峰期的国际出口)丢包率很高。

一个非常现实的例子:同样是从北京到洛杉矶的 VPS,使用中国电信 163 骨干网(AS4134)的路由可能延迟 200ms+ 且高峰期丢包严重;而使用中国电信 CN2 GIA(AS4809)的路由可能延迟只有 150ms 且几乎不丢包。两台 VPS 可能物理上在同一个数据中心,但网络体验天差地别。

BGP 优化线路

在代理领域,”优质线路”通常指的是有 BGP 优化的网络路径。以下是最常见的几种。

CN2 GIA(全球互联网接入)

CN2 GIA 是中国电信的高端国际线路,属于 AS4809。它的特点是:

  • 双向 CN2:去程和回程都走 CN2 网络,不绕路
  • 低延迟:中美之间延迟通常在 130-160ms
  • 低丢包:即使在高峰期也能保持极低的丢包率
  • 价格昂贵:CN2 GIA 的 VPS 价格远高于普通线路

CN2 GIA 之所以好,核心原因是它的 BGP 路由经过精心优化——流量走的是电信的精品骨干网,避开了拥挤的 163 骨干网。

CUII(中国联通精品网)

AS9929 是中国联通的精品网络(CUII),类似于电信的 CN2 GIA。对联通用户来说,CUII 线路提供了更好的国际出口体验。

CMI(中国移动国际)

AS58453 是中国移动的国际出口。CMI 线路在近年来有较大改善,某些目的地的表现甚至优于 CN2。

如何判断 VPS 使用的线路

使用 traceroute(或 Windows 上的 tracert)可以查看数据包的路由路径:

1
traceroute -I your-server-ip

或者使用更好用的 mtr(结合了 ping 和 traceroute 的功能):

1
mtr your-server-ip

在 traceroute 的结果中,关注以下 IP 段可以判断走的是什么线路:

IP 段特征 线路
59.43.x.x CN2 (AS4809)
202.97.x.x 163 骨干网 (AS4134)
219.158.x.x 联通骨干 (AS4837)
218.105.x.x / 223.120.x.x 移动骨干 (AS9808/AS58453)

如果去程(从你到服务器)走的全是 59.43 开头的 IP,说明你走的是 CN2 线路。

Anycast 是什么

理解了 BGP 之后,Anycast 就很好理解了。

在正常的互联网通信中,一个 IP 地址对应一台服务器——这叫做 Unicast(单播)。无论你在世界哪个角落访问这个 IP,数据包都会被路由到同一台服务器。

Anycast(任播) 则完全不同:同一个 IP 地址在全球多个位置同时被宣告。当你访问一个 Anycast IP 时,BGP 会自动将你的流量路由到离你最近的那个位置。

用一个比喻来理解:

  • Unicast 像是只有一家总店的餐厅——无论你住在哪里,想吃就得去总店
  • Anycast 像是连锁餐厅——每个城市都有分店,你自然会去离你最近的那家

Anycast 的工作原理

Anycast 的实现依赖于 BGP。假设一个服务在全球 10 个位置部署了服务器,这 10 个位置的路由器都通过 BGP 向外宣告同一段 IP 地址。

1
2
3
4
美国西海岸数据中心 → BGP 宣告: 1.2.3.0/24
欧洲法兰克福数据中心 → BGP 宣告: 1.2.3.0/24
亚太新加坡数据中心 → BGP 宣告: 1.2.3.0/24
...

当北京的用户访问 1.2.3.1 时,BGP 路由系统会发现到 1.2.3.0/24 有多条路径,然后选择 AS 路径最短(通常也是物理距离最近)的那条——大概率是新加坡的数据中心。而当纽约的用户访问同一个 IP 时,流量会被路由到美国西海岸的数据中心。

所有这一切对用户来说是透明的——他们访问的是同一个 IP 地址,但实际响应来自不同的物理服务器。

Cloudflare:Anycast 的典型案例

Cloudflare 是 Anycast 技术的最大规模应用者之一。Cloudflare 在全球 300 多个城市部署了数据中心,所有数据中心都通过 BGP 宣告相同的 IP 地址。

当你使用 Cloudflare 的 DNS 服务(1.1.1.1)时,你的请求会被自动路由到离你最近的 Cloudflare 数据中心。在中国大陆,这通常是香港、日本或新加坡的节点。

这就是为什么 Cloudflare 的 DNS 在全球范围内都能提供很低的延迟——不是因为某一台服务器特别快,而是因为在你附近总有一台服务器在响应。

Anycast 的优势

  1. 低延迟:用户总是连接到最近的服务器
  2. 高可用:某个数据中心故障时,流量自动切换到下一个最近的位置
  3. DDoS 防护:攻击流量会被分散到全球各个位置,不会集中打击单一服务器
  4. 简单部署:客户端不需要做任何特殊配置,IP 地址始终不变

Anycast 的局限

  1. TCP 长连接不友好:如果 BGP 路由发生变化,可能导致已建立的 TCP 连接断开(因为流量被路由到了不同的服务器)
  2. 无法精确控制:你不能选择连接到哪个位置,完全由 BGP 路由决定
  3. 部署成本高:需要在全球多个位置部署服务器,且需要自己的 AS 和 IP 段

代理服务如何利用 BGP 和 Anycast

理解了 BGP 和 Anycast 之后,让我们看看代理服务是如何利用这些概念的。

BGP 优化:选择更好的上游

高质量的 VPS 提供商会通过 BGP 优化来提供更好的网络路径。具体做法包括:

多线接入(Multi-homed):VPS 连接多个上游网络提供商,通过 BGP 选择最优路径。例如,一台位于洛杉矶的 VPS 可能同时接入了 Cogent、NTT 和 PCCW 三家上游,对于来自中国的流量,BGP 会选择经过 PCCW(太平洋方向优化)的路径。

BGP 社区(BGP Communities):运营商通过 BGP 社区属性来标记和控制路由策略。高端 VPS 提供商可能提供 BGP 社区控制功能,允许用户自定义路由策略。

直接互联(Peering):在互联网交换点(IXP)直接互联,减少中间跳转。这是为什么某些 VPS 在特定地区表现特别好的原因——它们与当地的运营商有直接互联关系。

中转/IPLC 的 BGP 原理

中转节点(relay)的核心思路是利用 BGP 路由优化来改善整体路径。一般的工作方式是:

  1. 在中国境内部署一台服务器(入口节点),连接到优质骨干网
  2. 入口节点通过优化的线路(如 CN2 GIA、IPLC 专线等)连接到海外服务器(出口节点)
  3. 用户连接入口节点,流量通过优化路径到达出口节点,再访问目标网站

这实际上是在 BGP 无法优化的路径上,通过额外的网络跳转来”绕开”拥塞。

CDN 与 Anycast 的结合

一些高端机场服务使用类似 CDN 的架构——在全球多个位置部署入口节点,使用 Anycast 或智能 DNS 将用户引导到最近的入口。这种架构能提供更一致的用户体验,但成本也相应更高。

如何利用这些知识选择更好的节点

查看路由路径

使用 traceroute 或 mtr 查看从你到代理服务器的路由路径。关注以下几点:

  1. 经过的 AS 数量:越少通常越好
  2. 是否走优质线路:查看是否经过 CN2(59.43.x.x)等优质骨干网
  3. 是否有明显绕路:比如从北京到东京,如果路由先绕到美国再回来,那就是绕路了
  4. 高延迟跳:如果某一跳的延迟突然增加了 100ms 以上,说明那里是瓶颈

选择合适的机房位置

对于中国大陆用户,以下机房位置通常有较好的网络表现:

  • 香港:物理距离近,延迟低,是最受欢迎的节点位置
  • 日本东京:延迟适中,与中国运营商的互联质量通常不错
  • 新加坡:对南方用户较友好
  • 美国西海岸(洛杉矶/圣何塞):CN2 GIA 线路表现优秀
  • 韩国首尔:延迟低,但带宽通常较小

关注线路标识

机场和 VPS 提供商通常会标注线路类型:

  • CN2 GIA:最优质的电信国际线路,三网优化
  • CN2 GT:CN2 的普通版,去程走 CN2 但回程可能走 163
  • BGP 优化:多线接入,自动选择最优路径
  • IPLC/IEPL:国际专线,不经过公共互联网,最稳定但最贵
  • 普通线路:走运营商默认的 BGP 路由,高峰期可能拥塞

理解”三网优化”

“三网优化”指的是对中国电信、联通、移动三大运营商都进行了路由优化。普通的 VPS 可能只对某一家运营商的路由较好,而三网优化的节点通过 BGP 多线接入,保证三家运营商的用户都有不错的体验。

用 traceroute 读懂路由

traceroute 是诊断网络路径最重要的工具。以下是一个简化的阅读指南。

基本用法

1
2
3
4
5
6
7
8
# Linux / macOS
traceroute -I your-server-ip

# Windows
tracert your-server-ip

# 更好的选择:mtr(需要安装)
mtr your-server-ip

解读输出

1
2
3
4
5
6
7
1  192.168.1.1     1.2ms   ← 你的路由器
2 100.64.0.1 5.3ms ← 运营商接入网
3 202.97.33.1 10.2ms ← 163 骨干网(电信)
4 202.97.90.1 35.6ms ← 163 骨干网国际出口
5 218.30.54.1 160.2ms ← 跨太平洋海底光缆
6 69.174.14.1 155.8ms ← 美国骨干网
7 104.16.88.1 158.3ms ← 目标服务器

关注点:

  • 第 3-4 跳:如果 IP 是 59.43.x.x 说明走的 CN2,202.97.x.x 说明走的 163 普通骨干
  • 延迟突增的位置:第 4→5 跳延迟从 35ms 跳到 160ms,这是跨洋传输造成的,属于正常
  • 星号(*):表示该跳未响应 ICMP,不一定是问题——很多路由器配置为不回应 traceroute
  • 延迟波动:如果某一跳的延迟在多次测试中波动很大,说明该节点可能拥塞

常见问题(FAQ)

Q1:BGP 优化对普通用户有多大影响?

影响很大。同一台服务器,走 CN2 GIA 和走 163 普通线路的体验可能完全不同。好的 BGP 路由能将延迟降低 30-50%,高峰期丢包率降低 90% 以上。对于代理用户来说,选择 BGP 优化的线路是提升体验最有效的方式之一。

Q2:为什么我 traceroute 时某些跳显示星号?

很多路由器配置为不回应 ICMP traceroute 请求(出于安全考虑),这不代表网络有问题。关注起点和终点的延迟即可。

Q3:Anycast 会导致代理连接不稳定吗?

理论上存在这种可能——如果 BGP 路由在连接过程中发生变化,TCP 连接可能被路由到不同的服务器导致断开。但在实际使用中,BGP 路由变化不会非常频繁,这种情况比较少见。

Q4:CN2 GIA 和 IPLC 哪个更好?

IPLC(国际私有租用线路)是专线,不走公共互联网,理论上最稳定。CN2 GIA 走的仍然是公共网络,但路径经过优化。在大多数情况下 CN2 GIA 已经够用,IPLC 价格贵很多但边际收益有限,适合对延迟和稳定性要求极高的场景。

Q5:如何知道我当前走的是什么线路?

使用 mtr 或 traceroute 查看路由路径,根据中间节点的 IP 地址判断走的是哪个运营商的哪条线路。也可以使用 ipip.net 等在线 traceroute 工具。

Q6:BGP 路由会随时间变化吗?

会。BGP 路由受到网络状况、运营商策略等多种因素影响,可能在不同时段走不同的路径。这也是为什么同一个节点在白天和晚上高峰期的速度可能差别很大。

外部链接


理解 BGP 和 Anycast 不需要成为网络工程师,但掌握这些基础知识能帮助你做出更好的节点选择,并理解为什么某些线路的价格差异如此之大。