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協議大幅提升了客戶端訪問后端服務器視頻的速度。