QUIC(Quick UDP Internet Connections)协议能帮助您大幅提升客户端访问速度,尤其是在弱网络、Wi-Fi和移动网络频繁切换等场景下,无需重连即可实现多路复用,提升资源的访问效率,同时保障数据传输的安全性。

背景信息

QUIC协议又被称为快速UDP互联网连接协议,提供与SSL相同的安全性,同时具备多路复用、0-RTT握手等多种优势,具有极佳的弱网性能,在丢包和网络延迟严重的情况下仍可提供可用的服务。QUIC协议在应用程序层面可以实现不同的拥塞控制算法,不需要操作系统和内核支持,相比于传统的TCP协议,拥有了更好的改造灵活性,适合用于在TCP协议优化遇到瓶颈的业务。

随着短视频、直播等新兴业务的飞速发展,流媒体传输对于带宽和延迟提供了双重要求,QUIC协议可以有效解决网络、视频卡顿的问题,提升音视频资源的访问效率,同时保障数据传输的安全性。目前,阿里云应用型负载均衡ALB支持的QUIC协议版本有:Q46、Q44、Q43、Q39、Q36和Q35。

场景示例

使用Chrome浏览器访问ALB实例时,ALB会根据配置的监听所绑定的证书域名example.com访问后端服务器。主要有以下两种应用场景:
  • 当同时配置了HTTPS监听和QUIC监听时,系统会优先使用QUIC监听,此时在Chrome浏览器中输入证书绑定的域名example.comALB实例将会通过配置的QUIC监听将客户端的请求转发至默认后端服务器组RS1。
  • 当QUIC监听不可用时,系统会自动切换到关联的HTTPS监听,此时在Chrome浏览器中输入证书绑定的域名example.comALB实例将会通过配置的HTTPS监听将客户端的请求转发至默认后端服务器组RS1。

客户端要求

  • 如果您使用Chrome浏览器,支持直接对ALB发起QUIC协议请求。
  • 如果您使用其他客户端,则客户端必须集成支持QUIC协议的网络库,例如:lsquic-client或cronet网络库。
  • 使用Chrome浏览器访问QUIC,需要使用指定的Chrome浏览器版本:
    • ALB支持的QUIC协议最高版本是Q46,对应的Chrome浏览器版本为Chrome 74-81。
    • 对于更高版本的Chrome浏览器,已经默认使用Q50及以上版本,如果需要访问ALB,则需要降级Chrome版本。

前提条件

  • 已创建ALB实例。具体操作,请参见创建应用型负载均衡
  • 已创建服务器组RS1。具体操作,请参见创建和管理服务器组
  • 已在服务器组RS1中添加ECS01实例,并在ECS01实例中部署了Nginx的视频服务。
  • 您已经在ALB实例上部署了SSL服务器证书,该证书已绑定了域名example.com

步骤一:创建QUIC监听

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏,选择ALB实例所属的地域。
  3. 实例页面,找到目标实例,单击目标实例ID。在监听页签,单击创建监听
  4. 配置监听配置向导,完成以下配置,然后单击下一步
    监听配置 说明
    选择负载均衡协议 选择监听的协议类型。

    本示例选择QUIC

    监听端口 输入用来接收请求并向后端服务器进行请求转发的监听端口。

    端口范围为1~65535。

    说明 在同一个负载均衡实例内,监听端口不可重复。
    监听名称

    输入监听名称。长度为2~256个字符,支持中文和大小写英文字母,可包含数字、半角句号(.)、下划线(_)、短划线(-)、半角逗号(,)、半角分号(;)、正斜线(/)和at(@)。

    高级配置 单击修改展开高级配置。
    连接空闲超时时间 指定空闲超时时间,取值范围为1~60秒。

    在超时时间内一直没有访问请求,负载均衡会暂时中断当前连接,直到下次请求来临时重新建立新的连接。

    连接请求超时时间 指定请求超时时间,取值范围为1~180秒。

    在超时时间内后端服务器一直没有响应,负载均衡将放弃等待,给客户端返回HTTP 504错误码。

    数据压缩 开启该配置对特定文件类型进行压缩,关闭该配置则不会对任何文件类型进行压缩。

    目前,Brotli支持压缩所有类型,Gzip支持压缩的类型包括:text/xmltext/plaintext/cssapplication/javascriptapplication/x-javascriptapplication/rss+xmlapplication/atom+xmlapplication/xmlapplication/json

    附加HTTP头字段 选择您要添加的自定义HTTP头字段:
    • 通过SLB-ID头字段获取负载均衡实例的ID。
    • 通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议。
    • 通过X-Forwarded-Port头字段获取负载均衡实例的监听端口。
  5. 配置SSL证书配置向导,选择服务器证书,然后单击下一步
  6. 选择服务器组配置向导,选择服务器类型,然后选择服务器组。查看后端服务器信息,然后单击下一步
  7. 配置审核配置向导,确认配置信息,单击提交

步骤二:创建HTTPS监听

创建HTTPS监听时,请开启QUIC升级,并关联已创建的QUIC监听。

  1. 实例页面,找到在步骤一中创建了QUIC监听的实例,单击该实例ID。
  2. 监听页签,单击创建监听
  3. 配置监听配置向导,完成以下配置,然后单击下一步
    监听配置 说明
    选择负载均衡协议 选择监听的协议类型。

    本示例选择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/xmltext/plaintext/cssapplication/javascriptapplication/x-javascriptapplication/rss+xmlapplication/atom+xmlapplication/xmlapplication/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监听

  4. 配置SSL证书配置向导,选择服务器证书,然后单击下一步
    说明 如果您要设置TLS安全策略,单击高级配置后的修改
  5. 选择服务器组配置向导,选择服务器类型,然后选择服务器组,查看后端服务器信息,然后单击下一步
  6. 配置审核页面,确认配置信息,单击提交

步骤三:配置域名解析

example.com通过CNAME域名解析的方式解析到ALB实例的公网服务域名上。

  1. 登录应用型负载均衡控制台
  2. 在顶部菜单栏选择地域。
  3. 选择要进行域名解析的ALB实例,复制其对应的DNS名称。
  4. 完成以下步骤来添加CNAME解析记录。
    1. 登录域名解析控制台
    2. 域名解析页面单击添加域名
    3. 添加域名对话框中输入您的主机域名,然后单击确定
      注意 您的主机域名需已完成TXT记录验证。
    4. 在目标域名的操作列单击解析设置
    5. 解析设置页面单击添加记录
    6. 添加记录面板配置以下信息完成CNAME解析配置,然后单击确认
      配置 说明
      记录类型 在下拉列表中选择CNAME
      主机记录 您的域名的前缀。
      解析线路 选择默认。
      记录值 输入域名对应的CNAME地址,即您复制的ALB实例的DNS名称。
      TTL 全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。
      说明
      • 新增CNAME记录实时生效,修改CNAME记录取决于本地DNS缓存的解析记录的TTL到期时间,一般默认为10分钟。
      • 添加时如遇添加冲突,请换一个解析域名。

步骤四:结果验证

在Chrome浏览器中输入example.com可访问到ALB实例,本文在服务器组RS1对应的后端服务器ECS01上使用Nginx搭建了视频服务。
  • 当同时配置了HTTPS监听和QUIC监听时,在Chrome浏览器中输入证书绑定的域名example.com,并按F12可以查看当前网页的Protocolhttp/2+quic/46Time52ms
    说明 http/2+quic/46表示使用了QUIC协议,即Q46。
    如下图所示:quic
  • 当QUIC监听不可用时,在Chrome浏览器中输入证书绑定的域名example.com,并按F12可以查看当前网页的Protocolh2Time65ms
    说明 h2表示使用了HTTPS协议。
    如下图所示:https
经测试,QUIC协议大幅提升了客户端访问后端服务器视频的速度。