QUIC(Quick UDP Internet Connections)协议能帮助您大幅提升客户端访问速度,尤其是在弱网络、Wi-Fi和移动网络频繁切换等场景下,无需重连即可实现多路复用,提升资源的访问效率,同时保障数据传输的安全性。
QUIC协议介绍
QUIC协议又被称为快速UDP互联网连接协议,提供与SSL相同的安全性,同时具备多路复用等多种优势,具有极佳的弱网性能,在丢包和网络延迟严重的情况下仍可提供可用的服务。QUIC协议在应用程序层面可以实现不同的拥塞控制算法,不需要操作系统和内核支持,相比于传统的TCP协议,拥有了更好的改造灵活性,适合用于在TCP协议优化遇到瓶颈的业务。
随着短视频、直播等新兴业务的飞速发展,流媒体传输对于带宽和延迟提供了双重要求,QUIC协议可以有效解决网络、视频卡顿的问题,提升音视频资源的访问效率,同时保障数据传输的安全性。
支持的QUIC协议类型
ALB支持gQUIC和iQUIC。HTTP/3协议是以iQUIC协议为基础构建的应用层协议,它主要依赖iQUIC来实现多路复用、拥塞控制、损失检测和重新传输等功能。HTTP/3协议可以更快地启动客户端连接,消除了多路复用流中的队头阻塞。
应用型负载均衡ALB支持的gQUIC协议版本有Q46、Q43、Q39,支持的HTTP/3协议版本为h3。
如何协商HTTP/3
开启QUIC升级后,ALB将向客户端通告HTTP/3和gQUIC协议,优先通告HTTP/3,让支持HTTP/3的客户端优先尝试与ALB建立连接。
客户端在无法建立HTTP/3连接时始终回退为使用HTTPS或HTTP/2。
支持HTTP/3的客户端使用HTTP/3有关的缓存Cookie。
启用或停用“ QUIC升级”不会影响ALB连接到客户端的能力。
在 Alt-Svc HTTP 响应标头中通告支持,alt-svc 标头值:
Alt-Svc : h3=":$quic_port"; ma=3600,quic=":$quic_port"; v="46,43,39"; ma=3600
当“开启QUIC升级” 时,某些情况会导致您的客户端回退为使用HTTPS或HTTP/2而不是协商 HTTP/3。其中包括:
客户端支持的HTTP/3版本与ALB支持的HTTP/3版本不兼容。
ALB检测到UDP流量阻塞或速率受限以致HTTP/3无法工作。
客户端完全不支持HTTP/3,因此不尝试协商HTTP/3连接。
客户端要求
如果您使用Chrome浏览器,支持直接对ALB发起QUIC协议请求。
使用Chrome浏览器访问QUIC,需要使用指定的Chrome浏览器版本:
ALB支持的gQUIC协议最高版本是Q46,对应的Chrome浏览器版本为Chrome 74-81。
ALB支持的HTTP/3协议最高版本是h3,对应的Chrome浏览器版本为Chrome 87及以上。
如果您使用其他客户端例如自研APP,则客户端必须集成支持QUIC协议的网络库,例如:lsquic-client、cronet网络库、ngtcp2和quiche等。
场景示例
使用Chrome浏览器访问ALB实例时,ALB会根据配置的监听所绑定的证书域名example.com
访问后端服务器。主要有以下两种应用场景:
当同时配置了HTTPS监听和QUIC监听时,系统会优先使用QUIC监听,此时在Chrome浏览器中输入证书绑定的域名
example.com
,ALB实例将会通过配置的QUIC监听将客户端的请求转发至默认后端服务器组RS1。当QUIC监听不可用时,系统会自动切换到关联的HTTPS监听,此时在Chrome浏览器中输入证书绑定的域名
example.com
,ALB实例将会通过配置的HTTPS监听将客户端的请求转发至默认后端服务器组RS1。
前提条件
步骤一:创建QUIC监听
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择ALB实例所属的地域。
在实例页面,找到目标实例,单击目标实例ID。在监听页签,单击创建监听。
在配置监听配置向导,完成以下配置,然后单击下一步。
监听配置
说明
选择监听协议
选择监听的协议类型。
本示例选择QUIC。
监听端口
输入用来接收请求并向后端服务器进行请求转发的监听端口。
端口范围为1~65535。
说明同一个ALB实例内,相同协议的监听端口不能重复,且HTTP和HTTPS监听端口互不重复。
监听名称
输入监听名称。
标签
设置标签键和标签值。
设置标签后,您可以在监听页签使用标签筛选监听。
高级配置
单击修改展开高级配置。
连接空闲超时时间
指定空闲超时时间,默认取值范围为1~60秒,如需提升配额,请
前往配额中心申请。
在超时时间内一直没有访问请求,负载均衡会暂时中断当前连接,直到下次请求来临时重新建立新的连接。
连接请求超时时间
指定请求超时时间,默认取值范围为1~180秒,如需提升配额,请前往配额中心申请。
在超时时间内后端服务器一直没有响应,负载均衡将放弃等待,给客户端返回HTTP 504错误码。
数据压缩
开启该配置会对特定文件类型进行压缩,关闭该配置则不会对任何文件类型进行压缩。
目前,Brotli支持压缩所有类型,Gzip支持压缩的类型包括:
text/xml
、text/plain
、text/css
、application/javascript
、application/x-javascript
、application/rss+xml
、application/atom+xml
、application/xml
和application/json
。附加HTTP头字段
选择您要添加的自定义HTTP头字段:
通过
SLB-ID
头字段获取负载均衡实例的ID。通过
X-Forwarded-Proto
头字段获取负载均衡实例的监听协议。通过
X-Forwarded-Port
头字段获取负载均衡实例的监听端口。
在配置SSL证书配置向导,选择服务器证书,然后单击下一步。
在选择服务器组配置向导,选择服务器类型,然后选择服务器组并查看后端服务器信息,单击下一步。
在配置审核配置向导,确认配置信息,单击提交。
步骤二:创建HTTPS监听
创建HTTPS监听时,请开启QUIC升级,并关联已创建的QUIC监听。
在实例页面,找到在步骤一中创建了QUIC监听的实例,单击该实例ID。
在实例详情页签,单击监听页签,单击创建监听。
在配置监听配置向导,完成以下配置,然后单击下一步。
监听配置
说明
选择监听协议
选择监听的协议类型。
本示例选择HTTPS。
监听端口
输入用来接收请求并向后端服务器进行请求转发的监听端口,本示例输入443。通常HTTP协议使用80端口,HTTPS协议使用443端口。
端口范围为1~65535。
说明在同一个负载均衡实例内,监听端口不可重复。
监听名称
输入监听名称。长度为2~256个字符,支持中文和大小写英文字母,可包含数字、半角句号(.)、下划线(_)、短划线(-)、半角逗号(,)、半角分号(;)、正斜线(/)和at(@)。
高级配置
单击修改展开高级配置。
启用HTTP 2.0
选择是否开启HTTP 2.0。
连接空闲超时时间
指定连接空闲超时时间,取值范围为1~60秒。
在超时时间内一直没有访问请求,负载均衡会暂时中断当前连接,直到下一次请求来临时重新建立新的连接。
说明该功能对使用HTTP 2.0的请求暂不生效。
连接请求超时时间
指定请求超时时间,取值范围为1~180秒。
在超时时间内后端服务器一直没有响应,负载均衡将放弃等待,给客户端返回HTTP 504错误码。
数据压缩
开启该配置对特定文件类型进行压缩,关闭该配置则不会对任何文件类型进行压缩。
目前,Brotli支持压缩所有类型,Gzip支持压缩的类型包括:
text/xml
、text/plain
、text/css
、application/javascript
、application/x-javascript
、application/rss+xml
、application/atom+xml
、application/xml
和application/json
。附加HTTP头字段
选择您要添加的自定义HTTP头字段:
添加
X-Forwarded-For
头字段获取客户端真实IP。添加
SLB-ID
头字段获取负载均衡实例的ID。添加
X-Forwarded-Proto
头字段获取实例的监听协议。添加
X-Forwarded-Clientcert-subjectdn
头字段获取访问负载均衡实例客户端证书的所有者信息。添加
X-Forwarded-Clientcert-issuerdn
头字段获取访问负载均衡实例客户端证书的所发行者信息。添加
X-Forwarded-Clientcert-fingerprint
头字段获取访问负载均衡实例客户端证书的指纹取值。添加
X-Forwarded-Clientcert-clientverify
头字段获取访问负载均衡实例客户端证书的校验结果。添加
X-Forwarded-Port
头字段获取负载均衡实例的监听端口。添加
X-Forwarded-Client-srcport
头字段获取访问负载均衡实例客户端的端口。
开启QUIC升级
选择是否开启QUIC升级,如果开启QUIC升级,请在关联的QUIC监听下拉列表中选择一个已创建的QUIC监听。
如果您未创建QUIC监听,单击创建监听,创建一个QUIC监听。具体操作,请参见添加QUIC监听。
ALB支持iQUIC和gQUIC。关于如何协商HTTP/3,请参见如何协商HTTP/3。
在配置SSL证书配置向导,选择服务器证书,然后单击下一步。
说明如果您要设置TLS安全策略,单击高级配置后的修改。
在选择服务器组配置向导,选择服务器类型,然后选择服务器组,查看后端服务器信息,然后单击下一步。
在配置审核页面,确认配置信息,单击提交。
步骤三:配置域名解析
将example.com
通过CNAME域名解析的方式解析到ALB实例的公网服务域名上。
登录应用型负载均衡控制台。
在顶部菜单栏选择地域。
选择要进行域名解析的ALB实例,复制其对应的DNS名称。
完成以下步骤来添加CNAME解析记录。
登录域名解析控制台。
在域名解析页面单击添加域名。
在添加域名对话框中输入您的主机域名,然后单击确认。
重要您的主机域名需已完成TXT记录验证。
在目标域名的操作列单击解析设置。
在解析设置页面单击添加记录。
在添加记录面板配置以下信息完成CNAME解析配置,然后单击确认。
配置
说明
记录类型
在下拉列表中选择CNAME。
主机记录
您的域名的前缀。
解析请求来源
选择默认。
记录值
输入域名对应的CNAME地址,即您复制的ALB实例的DNS名称。
TTL
全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。
说明新增CNAME记录实时生效,修改CNAME记录取决于本地DNS缓存的解析记录的TTL到期时间,默认为10分钟。
添加时如遇添加冲突,请换一个解析域名。更多信息请参见解析记录冲突规则。
步骤四:结果验证
本文以Windows客户端为例说明。在浏览器中输入example.com
可访问到ALB实例,本文在服务器组RS1对应的后端服务器ECS01上使用Nginx搭建了视频服务。
当同时配置了HTTPS监听和QUIC监听时,在浏览器中输入证书绑定的域名
example.com
,并按F12
可以查看当前网页的协议为HTTP/3,耗时93毫秒。如下图所示:
当QUIC监听不可用时,在浏览器中输入证书绑定的域名
example.com
,并按F12
可以查看当前网页的协议为HTTP/2,耗时148毫秒。如下图所示:
经测试,ALB使用HTTP/3协议大幅提升了客户端访问后端服务器视频的速度。