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
頭欄位擷取Server Load Balancer執行個體的ID。通過
X-Forwarded-Proto
頭欄位擷取Server Load Balancer執行個體的監聽協議。通過
X-Forwarded-Port
頭欄位擷取Server Load Balancer執行個體的監聽連接埠。通過X-Forwarded-Client-srcport頭欄位擷取訪問Server Load Balancer執行個體用戶端的連接埠。
在配置SSL認證設定精靈,選擇伺服器憑證,然後單擊下一步。
在選擇伺服器組設定精靈,選擇伺服器類型,然後選擇伺服器組並查看後端伺服器資訊,單擊下一步。
在組態稽核設定精靈,確認配置資訊,單擊提交。
步驟二:建立HTTPS監聽
建立HTTPS監聽時,請開啟QUIC升級,並關聯已建立的QUIC監聽。
在執行個體頁面,找到在步驟一中建立了QUIC監聽的執行個體,單擊該執行個體ID。
在執行個體詳情頁簽,單擊監聽頁簽,單擊建立監聽。
在配置監聽設定精靈,完成以下配置,然後單擊下一步。
監聽配置
說明
選擇監聽協議
選擇監聽的協議類型。
本樣本選擇HTTPS。
監聽連接埠
輸入用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠,本樣本輸入443。通常HTTP協議使用80連接埠,HTTPS協議使用443連接埠。
連接埠範圍為1~65535。
說明在同一個Server Load Balancer執行個體內,監聽連接埠不可重複。
監聽名稱
輸入監聽名稱。長度為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
頭欄位擷取Server Load Balancer執行個體的ID。添加
X-Forwarded-Proto
頭欄位擷取執行個體的監聽協議。添加
X-Forwarded-Clientcert-subjectdn
頭欄位擷取訪問Server Load Balancer執行個體用戶端認證的所有者資訊。添加
X-Forwarded-Clientcert-issuerdn
頭欄位擷取訪問Server Load Balancer執行個體用戶端認證的所發行者資訊。添加
X-Forwarded-Clientcert-fingerprint
頭欄位擷取訪問Server Load Balancer執行個體用戶端認證的指紋取值。添加
X-Forwarded-Clientcert-clientverify
頭欄位擷取訪問Server Load Balancer執行個體用戶端認證的校正結果。添加
X-Forwarded-Port
頭欄位擷取Server Load Balancer執行個體的監聽連接埠。添加
X-Forwarded-Client-srcport
頭欄位擷取訪問Server Load Balancer執行個體用戶端的連接埠。
開啟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協議大幅提升了用戶端訪問後端伺服器視頻的速度。