亚马逊AWS官方博客

新增功能 – Amazon CloudFront 支持 HTTP/3

Amazon CloudFront 是一种内容分发网络(CDN)服务,这是一种由互连的服务器组成的网络,由于在地理位置上更接近用户,因此能够更快地到达他们的计算机。Amazon CloudFront 通过 410 多个遍布全球且支持自动网络映射和智能路由的入网点(POP)交付数据,从而降低延迟。

借助 Amazon CloudFront,内容、API 请求和响应或应用程序可以通过超文本传输协议(HTTP)版本 1.1 和传输层安全性协议(TLS)最新版本 2.0 版交付,以加密和保护用户客户端和 CloudFront 之间的通信。

今天,我们将为 Amazon CloudFront 添加对 HTTP 版本 3.0(HTTP/3)的支持。HTTP/3 使用 QUIC,这是一种基于用户数据报协议的流多路复用安全传输协议,它结合了现有传输控制协议(TCP)、TLS 和 HTTP/2 的功能并在此基础上进行了改进。现在,您可以在全球所有边缘站点的所有新的和现有的 CloudFront 分配中为最终用户连接启用 HTTP/3,使用此功能无需额外付费。

什么是 HTTP/3?
HTTP/3 使用 QUIC,克服了 TCP 的许多局限性,并将相应优势赋予 HTTP。在使用现有的 HTTP/2 over TCP 和 TLS 时,TCP 需要通过握手才能在客户端和服务器之间建立会话,TLS 也需要通过自己的握手来确保会话安全。每次握手都必须在客户端和服务器之间进行完整的往返,从网络角度来看,当客户端和服务器相距遥远时,这可能需要很长时间。但是,QUIC 只需要一次握手即可建立安全会话。

此外,TCP 还会由无数不同的中间设备 [例如防火墙和网络地址转(NAT)设备] 了解和操作。QUIC 使用 UDP 作为其基础,允许数据包在企业网络或公共网络中流动,并且完全加密,包括元数据,这使得中间系统无法检查或操作其详细信息。

HTTP/3 流被独立地多路复用,以消除请求和响应之间的队头阻塞。这可以实现,因为流多路复用发生在传输层,而不是应用程序层(例如 HTTP/2 over TCP)。这使 Web 应用程序能够更快地运行,尤其是在速度较慢的网络上和对延迟敏感的连接上。

HTTP/3 给 CloudFront 带来的优势
我们的客户总是希望为最终用户提供速度更快、响应更敏捷、安全性更高的网络体验。HTTP/3 为所有 CloudFront 客户提供了更快的连接速度、流多路复用、客户端连接迁移,以及减少握手过程中的往返次数以降低错误率等优势。

基于 UDP 的 QUIC 连接支持连接重用,连接 ID 独立于 IP 地址/端口元组,因此用户不会遭遇中断或受到影响。如果客户在网络连通性较低的国家/地区运营,会发现其应用程序的性能得到提高。

CloudFront 的 HTTP/3 支持在 s2n-quic 的基础上提供了增强的安全性,s2n-quic 是添加到我们的 AWS 加密开源库集中的 QUIC 协议的开源 Rust 实施,两者都非常注重效率和性能。

如果您在 CloudFront 分配中启用 HTTP/3,则用户可以向 CloudFront 边缘站点发出 HTTP/3 查看器请求。在边缘站点之外,我们在 AWS Cloud 中拥有高度可靠的网络,CloudFront 将继续使用 HTTP/1.1 获取来源。因此,您无需在服务器端进行任何更改即可通过 HTTP/3 访问您的内容。

对于某些类型的应用程序(例如需要 HTTP 客户端库来发出 HTTP 请求的应用程序),客户可能需要将其 HTTP 客户端库更新到支持 HTTP/3 的版本。但是,如果由于某种操作原因客户端无法建立 QUIC 连接,可以回退到另一个受支持的协议,例如 HTTP/1.1 或 HTTP/2。

如何启用 HTTP/3
要启用 HTTP/3 连接,您可以通过 CloudFront 控制台编辑分配配置。您可以在现有分配中的 Supported HTTP versions(支持的 HTTP 版本)中选择 HTTP/3,也可以在不对原始内容进行任何更改的情况下创建新分配。您可以使用 UpdateDistribution API 或使用 CloudFormation 模板

部署分配后,您可以连接支持 HTTP/3 的浏览器,例如最新版本的 Google Chrome、Mozilla Firefox、Microsoft Edge 以及 Apple Safari(手动打开后可连接)。要了解有关 Web 浏览器支持的更多信息,请参阅 Can I Use – HTTP/3 Support(我是否可以使用 – HTTP/3 支持)页面。

通过浏览器中的 Web 开发人员工具,您可以看到从 CloudFront 加载页面时发出的 HTTP/3 请求。下图是一个 Mozilla Firefox 示例。

您也可以向 Curl 添加 HTTP/3 支持,然后通过以下命令行进行测试:

$ curl --http3 -i https://d1e0fmnut9xxxxx.cloudfront.net/speed.html
HTTP/3 200
content-type: text/html
content-length: 9286
date: Fri, 05 Aug 2022 15:49:52 GMT
last-modified: Thu, 28 Jul 2022 00:50:38 GMT
etag: "d928997023f6479537940324aeddabb3"
x-amz-version-id: mdUmFuUfVaSHPseoVPRoOKGuUkzWeUhK
accept-ranges: bytes
server: AmazonS3
vary: Origin
x-cache: Miss from cloudfront
via: 1.1 6e4f43c5af08f740d02d21f990dfbe80.cloudfront.net (CloudFront)
x-amz-cf-pop: ICN54-C2
alt-svc: h3=":443"; ma=86400
x-amz-cf-id: 6fy8rrUrtqDMrgoc7iJ73kzzXzHz7LQDg73R0lez7_nEXa3h9uAlCQ==

客户案例
包括 Snap、Zillow、AC3/Movember、Audible、Skyscanner 在内的多家 AWS 客户已经在其 CloudFront 分配中启用 HTTP/3。以下是他们的一些看法:

Snap Inc 是一家社交媒体公司,该公司推出了 Snapchat 应用程序,该应用程序提供了一种快速而有趣的方式,可以与世界各地不同社区的好友建立联系。在 AWS 上,Snap 现在支持超过 3.06 亿 Snapchat 用户每天发送超过 54 亿个 Snap,与之前的架构相比,延迟降低了 20%。

Snapchat 软件工程经理 Mahmoud Ragab 说:

“Snapchat 帮助全球数百万人与朋友分享精彩时刻。Snapchat 竭力成为最快的沟通方式。这就是我们一直与 Amazon Cloudfront 合作的原因,因为我们能够利用 Cloudfront 上的 QUIC 实现快速、高性能、低延迟的内容交付。

它在发送和接收内容方面具有显著的优势,尤其是在存在有损信号和间歇性连接的网络中。QUIC 提供的改进 [例如零往返时间(0-RTT)连接设置和改进的拥塞控制] 使接收到第一个字节所需的时间(TTFB)平均减少了 10%,同时降低了总体错误率。较低的网络延迟和较少的错误使 Snapchat 更适合世界各地的用户。

通过对 QUIC 的早期访问,我们能够进行实验并快速迭代和改进服务器端实施,以及优化客户端和服务器之间的集成。随着 QUIC 的广泛应用,两家公司将继续携手合作。”

Zillow 是一家房地产科技公司,通过透明和几乎无缝的端到端服务,为客户提供销售、购买、租赁和融资方面的按需体验。自 2015 年以来,Zillow 通过使用 Amazon S3 和 Amazon CloudFront 提高了其成像系统的可用性

Zillow 首席云架构师 Craig Link 说:

“对于 Amazon CloudFront 推出对 HTTP/3 的支持,我们期待万分。在 CloudFront 上启用 HTTP/3 是无缝过渡,我们的综合测试和临时使用都可继续顺利进行。”

AC3 是一家位于澳大利亚的 AWS Managed Services 合作伙伴,一直为我们的客户 Movember Foundation 提供支持,该基金会是男性健康领域领先的慈善机构之一。在 21 个国家/地区经营一家处理捐款、数据、活动和本地化网站的国际慈善机构可能会带来一些技术挑战。Movember 诞生于云,利用 AWS 技术采用了新的工作模型,确保造就了一个灵活的 IT 平台,并加快了创新速度。

AC3 超大规模云负责人 Greg Cockburn 说:

“AC3 很高兴能与他们的长期合作伙伴 Movember 合作,在其服务于 Web 和 API 前端的 CloudFront 分配上启用 HTTP3,并对初步结果中展示的性能改进感到倍受鼓舞。”

现已推出
Amazon CloudFront 对 HTTP/3 的支持现已在全球所有 400 多个 CloudFront 边缘站点提供,使用此功能无需额外付费。要了解更多信息,请参阅 Amazon CloudFront 开发人员指南。 请将反馈发送至 AWS re:Post for Amazon CloudFront 或通过平时的 AWS Support 联系人发送反馈。

Channy