我们如何突破中国防火墙(第 3 部分)

您好!
所有美好的故事都会结束。 我们如何想出快速通过中国防火墙的解决方案的故事也不例外。 所以我赶紧跟大家分享最后一篇, 最后一部分 关于这个话题。

在上一部分中,我们讨论了我们提出的许多测试台以及它们给出的结果。 我们决定添加什么 CDN! 将粘度纳入我们的方案中。

我会告诉你我们是如何测试阿里云CDN、腾讯云CDN和Akamai的,以及最终的结果。 当然,让我们总结一下。

我们如何突破中国防火墙(第 3 部分)

阿里云CDN

我们托管在阿里云上,并使用其中的 IPSEC 和 CEN。 首先尝试他们的解决方案是合乎逻辑的。

阿里云有两种产品可能适合我们: и DCDN。 第一个选项是针对特定域(子域)的经典 CDN。 第二个选项代表 CDN的动态路由 (我称之为动态CDN),它可以在全站模式下启用(对于通配符域),它还会缓存静态内容并在自身上加速动态内容,即页面的动态也会通过提供商的加载快速网络。 这对我们来说很重要,因为我们的网站基本上是动态的,它使用很多子域名,并且为“星号”-*.semrushchina.cn 设置一次 CDN 更方便。

我们在中国项目的早期阶段就已经看到了这个产品,但当时它还没有发挥作用,开发人员承诺该产品很快就会提供给所有客户。 他做到了。

在 DCDN 中您可以:

  • 使用您的证书配置 SSL 终止,
  • 启用动态内容加速,
  • 灵活配置静态文件的缓存,
  • 清除缓存,
  • 转发网络套接字,
  • 启用压缩,甚至 HTML Beautifier。

一般来说,一切都与成人和大型 CDN 提供商相同。

指定 Origin(CDN 边缘服务器所在的位置)后,剩下的就是为星号创建一个 CNAME,引用 all.semrushchina.cn.w.kunluncan.com (这个CNAME是在阿里云控制台收到的),CDN就可以工作了。

从测试结果来看,这个CDN对我们帮助很大。 统计数据如下所示。


正常运行时间
中位数
75 百分位数
95 百分位数

Cloudflare
86.6
18s
30s
60s

IPsec的
99.79
18s
21s
30s


99.75
16s
21s
27s

CEN/IPsec + GLB
99.79
13s
16s
25s

阿里CDN+CEN/IPsec+GLB
99.75
10s
12.8s
17.3s

这些都是非常好的结果,特别是如果将它们与开始时的数字进行比较。 但我们知道,我们网站 www.semrush.com 美国版的浏览器测试从美国运行的平均时间为 8.3 秒(非常近似的值)。 还有改进的空间。 此外,还有一些值得测试的 CDN 提供商。

于是我们顺利的转向了中国市场的另一个巨头—— 腾讯.

腾讯云

腾讯的云刚刚发展起来——这一点从少量的产品就可以看出来。 在使用它时,我们不仅想测试他们的 CDN,还想测试他们的整个网络基础设施:

  • 他们有类似CEN的东西吗?
  • IPSEC 如何为他们工作? 速度快吗?正常运行时间是多少?
  • 他们有选播吗?

我们如何突破中国防火墙(第 3 部分)

我们分别来看一下这些问题。

模拟CEN

腾讯有一个产品 云连接网络 (CCN),允许您连接不同地区的VPC,包括中国境内和境外。 该产品现在处于内部测试阶段,您需要创建一个请求连接到它的票证。 我们从支持人员那里了解到,全球帐户(我们不是在谈论中国公民或法人实体)无法参与 Beta 测试计划,并且通常无法将中国境内的区域与境外的区域连接起来。 1-0阿里云获胜

安全协议

腾讯最南端的地区是 广州。 我们搭建了一条隧道,并将其连接到GCP中的香港地区(当时该地区已经可用)。 阿里云深圳至香港第二条隧道也同时打通。 事实证明,通过腾讯网络到香港的延迟通常比从深圳到香港到阿里(10ms - 什么?)要好。 但这并没有以任何方式加快旨在通过腾讯和这条隧道开展工作的网站的工作,这本身就是一个令人惊奇的事实,并再次证明了以下事实:延迟 - 对于中国来说,这并不是一个真正值得的指标在开发通过中​​国防火墙的解决方案时要注意。

任播互联网加速

另一种允许您通过任播 IP 工作的产品是 友邦保险。 但它也不适用于全球账户,所以我不会告诉你,但知道这样的产品存在可能会有用。

但 CDN 测试显示了一些非常有趣的结果。 腾讯的CDN不能全站启用,只能在特定域上启用。 我们创建了域并向它们发送流量:

我们如何突破中国防火墙(第 3 部分)

原来这个CDN有以下功能: 跨境流量优化。 当流量通过中国防火墙时,此功能应该会降低成本。 作为 起始地 指定了 Google GLB(GLB 任播)的 IP 地址。 因此,我们希望简化项目架构。

结果非常好——达到了阿里云CDN的水平,有些地方甚至更好。 这是令人惊讶的,因为如果测试成功,你可以放弃基础设施的很大一部分,隧道,CEN,虚拟机等。

我们没高兴多久,问题就暴露了:互联网提供商中国移动在 Catchpoint 中的测试失败了。 我们从任何位置都通过腾讯的 CDN 收到超时信息。 与技术支持的通信没有产生任何结果。 我们尝试解决这个问题大约一天,但没有任何效果。

当时我在中国,但无法在该提供商的网络上找到公共Wi-Fi来亲自验证问题。 除此之外,一切看起来又快又好。
但由于中国移动是三大运营商之一,我们被迫将流量回流到阿里CDN。
但总的来说,这是一个相当有趣的解决方案,值得对这个问题进行更长时间的测试和故障排除。

Akamai的

我们测试的最后一个 CDN 提供商是 Akamai的。 这是一家在中国拥有网络的大型提供商。 当然,我们无法摆脱它。

我们如何突破中国防火墙(第 3 部分)

从一开始,我们就与 Akamai 达成了试用期协议,以便我们可以切换域并看看它在他们的网络上如何工作。 我将以“我喜欢什么”和“我不喜欢什么”的形式描述所有测试的结果,并且我还将给出测试结果。

我喜欢什么:

  • Akamai 的人员对所有问题都非常有帮助,并在测试的所有阶段都陪伴着我们。 我们一直在努力改进我们这边的一些东西。 他们提供了很好的技术建议。
  • Akamai 比我们通过阿里云 CDN 的解决方案慢约 10-15%。 令人印象深刻的是,在 Akamai 的 Origin 中,我们指定了 GLB 的 IP 地址,这意味着流量不会经过我们的解决方案(我们可能会放弃部分基础设施)。 但测试结果仍然表明该解决方案比我们当前的版本更糟糕(下面的比较结果)。
  • 在中国测试了 Origin GLB 和 Origin。 两个选项大致相同。
  • 确定路线 (自动路由优化)。 您可以在 Origin 上托管测试对象,Akamai 边缘服务器将尝试获取它(常规 GET)。 对于这些请求,会测量速度和其他指标,Akamai 网络将根据这些指标优化路由,以便我们网站的流量更快,而且很明显,启用此功能确实对网站的速度产生了很大影响。
  • 在 Web 界面中对配置进行版本控制很酷。 您可以对版本进行比较,查看差异。 查看以前的版本。
  • 您可以先仅在 Akamai Staging 网络上推出新版本 - 与生产环境相同的网络,只有这样才不会影响真实用户。 对于此测试,您需要欺骗本地计算机上的 DNS 记录。
  • 通过其网络下载大型静态文件和任何其他文件的速度非常快。 从“冷”缓存中检索文件的速度比从阿里 CDN“冷”缓存中检索同一文件的速度快很多倍。 从“热”缓存来看,速度已经相同,有加有减。

阿里CDN测试:

root@shenzhen1:~# curl -o /dev/null -w@curl_time https://en.semrushchina.cn/my_reports/build/scripts/simpleInit.js?v=1551879212
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5757k    0 5757k    0     0   513k      0 --:--:--  0:00:11 --:--:--  526k
time_namelookup:  0.004286
time_connect:  0.030107
time_appconnect:  0.117525
time_pretransfer:  0.117606
time_redirect:  0.000000
time_starttransfer:  0.840348
----------
time_total:  11.208119
----------
size_download:  5895467 Bytes
speed_download:  525999.000B/s

阿卡迈测试:

root@shenzhen1:~# curl -o /dev/null -w@curl_time https://www.semrushchina.cn/my_reports/build/scripts/simpleInit.js?v=1551879212
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5757k    0 5757k    0     0  1824k      0 --:--:--  0:00:03 --:--:-- 1825k
time_namelookup:  0.509005
time_connect:  0.528261
time_appconnect:  0.577235
time_pretransfer:  0.577324
time_redirect:  0.000000
time_starttransfer:  1.327013
----------
time_total:  3.154850
----------
size_download:  5895467 Bytes
speed_download:  1868699.000B/s

我们注意到上例中的情况取决于多种因素。 在撰写本文时,我再次进行了测试。 两个平台的结果大致相同。 这告诉我们,中国的互联网,即使对于大型运营商和云提供商来说,有时也会表现出不同的表现。

对于上一点,我要为 Akamai 补充一个很大的优点:如果阿里表现出类似的高性能和非常低性能的闪光(这适用于阿里 CDN、阿里 CEN 和阿里 IPSEC),那么 Akamai 每一次,无论我怎么测试他们的网络,一切都运行稳定。
Akamai 在中国确实拥有广泛的覆盖范围,并通过许多提供商进行合作。

什么不喜欢:

  • 我不喜欢网络界面及其工作方式——太差了。 但基本上你会习惯它(可能)。
  • 测试结果比我们的网站还差。
  • 测试期间的错误比我们网站上的错误多(正常运行时间如下)。
  • 我们在中国没有自己的 DNS 服务器。 因此,由于 DNS 解析超时,测试中存在很多错误。
  • 他们不提供 IP 范围 -> 无法注册正确的 IP 范围 设置真实IP地址 在我们的服务器上。

指标(约 3626 次运行;除正常运行时间之外的所有指标,以毫秒为单位;一个时间段的统计数据):

CDN 提供商
中位数
75%
95%
响应
网页响应
正常运行时间
DNS
分享链接
稍等
加载
SSL

阿里CDN
9195
10749
17489
1,715
10,745
99.531
57
17
927
479
200

Akamai的
9783
11887
19888
2,352
11,550
98.980
424
91
1408
381
50

按百分位数分布(以毫秒为单位):

百分
Akamai的
阿里CDN

10
7,092
6,942

20
7,775
7,583

30
8,446
8,092

40
9,146
8,596

50
9,783
9,195

60
10,497
9,770

70
11,371
10,383

80
12,670
11,255

90
15,882
13,165

100
91,592
91,596

结论是:Akamai 选项是可行的,但无法提供与我们自己的解决方案结合 Ali CDN 相同的稳定性和速度。

小笔记

有些时刻没有包含在故事中,但我也想写下来。

北京+东京、香港

正如我上面所说,我们测试了通往香港 (HK) 的 IPSEC 隧道。 但我们也测试了 CEN 到 HK 的情况。 它的成本要低一些,我想知道在相距 100 公里左右的城市之间它如何运作。 有趣的是,这些城市之间的延迟比我们原始版本(到台湾)高 100 毫秒。 台湾的速度、稳定性也更好。 因此,我们将 HK 作为备用 IPSEC 区域。

另外,我们尝试安装如下安装:

  • 终止北京客户,
  • IPSEC 和 CEN 飞往东京,
  • 阿里CDN中标明北京服务器为源站。

该方案不太稳定,尽管就速度而言它通常不逊色于我们的解决方案。 关于隧道,即使是 CEN,我也看到间歇性下降,本来应该是稳定的。 因此,我们回到了旧的方案并拆除了这个舞台。

以下是不同通道不同区域之间的延迟统计。 也许有人会对它感兴趣。

IPsec的
阿里 cn-北京 <—> GCP asia-northeast1 — 193ms
阿里 cn-深圳 <—> GCP asia-east2 — 91ms
阿里 cn-深圳 <—> GCP us-east4 — 200ms


阿里 cn-beijing <—> 阿里 ap-northeast-1 — 54ms (!)
阿里 cn-深圳 <—> 阿里 cn-香港 — 6ms (!)
阿里 cn-深圳 <—> 阿里 us-east1 — 216ms

有关中国互联网的一般信息

作为本文第一部分开头描述的互联网问题的补充。

  • 中国的互联网里面速度相当快。
    • 这一结论是根据在不同地点进行的公共 Wi-Fi 网络测试得出的,这些网络被大量用户使用。
    • 中国境内服务器的下载和上传速度分别约为20 Mbit/s和5-10 Mbit/s。
    • 到中国境外的服务器速度简直微乎其微,不到 1 Mbit/s。
  • 中国的互联网不太稳定。
    • 有时网站可以快速打开,有时则缓慢(在不同日期的同一时间),前提是配置不更改。 我们通过 semrushchina.cn 的例子观察到了这一点。 这可以归功于阿里 CDN,它也根据一天中的时间、星星的位置等以这种方式工作。
  • 移动互联网几乎无处不在4G或4G+。 在地铁、电梯里都能捕捉到它——简而言之,无处不在。
  • 中国用户只信任 .cn 区域中的域名的说法是一个神话。 我们直接从用户那里了解到这一点。
    • 你可以看看如何 http://baidu.cn 重定向至 www.baidu.com(中国大陆也如此)。
  • 很多资源确实被封锁了。 原始:google.com、Facebook、Twitter。 但许多 Google 资源都可以工作(当然,并非在所有 Wi-Fi 上都可以使用,而且 VPN 也不能使用(在路由器端也是如此,这是肯定的)。
  • 被封锁公司的许多“技术”领域也在发挥作用。 这意味着你不应该总是鲁莽地删除所有谷歌和其他看似被封锁的资源。 您需要查找一些禁止域的列表。
  • 他们只有三个主要的互联网运营商:中国联通、中国电信、中国移动。 还有更小的,但市场份额微不足道

奖励:最终解决方案图

我们如何突破中国防火墙(第 3 部分)

自项目启动以来已经过去一年了。 我们首先想到的是,我们的网站在中国通常无法正常工作,仅仅 GET curl 就花了 5.5 秒。

然后,在第一个解决方案(Cloudflare)中使用这些指标:


正常运行时间
中位数
75 百分位数
95 百分位数

Cloudflare
86.6
18s
30s
60s

我们最终得到了以下结果(上个月的统计):


正常运行时间
中位数
75 百分位数
95 百分位数

阿里CDN+CEN/IPsec+GLB
99.86
8.8s
9.5s
13.7s

正如您所看到的,我们尚未能够实现 100% 的正常运行时间,但我们会想出一些办法,然后我们将在新文章中告诉您结果:)

向那些读完所有三个部分的人表示敬意。 我希望你发现这一切和我做这件事时一样有趣。

PS 以前的部分

Часть1
Часть2

来源: habr.com

添加评论