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。
前提條件
已建立ALB執行個體。具體操作,請參見建立和管理ALB執行個體。
已建立伺服器組RS1。具體操作,請參見建立和管理伺服器組。
已在伺服器組RS1中添加ECS01執行個體,並在ECS01執行個體中部署了Nginx的視頻服務。
您已經在ALB執行個體上部署了SSL伺服器憑證,該認證已綁定了網域名稱
example.com。
步驟一:建立QUIC監聽
在頂部功能表列,選擇ALB執行個體所屬的地區。
在執行個體頁面,找到目標執行個體,單擊目標執行個體ID。在監聽頁簽,單擊建立監聽。
在配置監聽設定精靈,完成以下配置,然後單擊下一步。
此處僅列出和本文強相關的配置項,其餘參數可保持預設值或根據實際情況修改。更多資訊,請參見添加QUIC監聽。
監聽配置
說明
選擇監聽協議
選擇監聽的協議類型。
本樣本選擇QUIC。
監聽連接埠
輸入用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠。
連接埠範圍為1~65535。
說明同一個ALB執行個體內,相同協議的監聽連接埠不能重複,且HTTP和HTTPS監聽連接埠互不重複。
在配置SSL認證設定精靈,選擇伺服器憑證,然後單擊下一步。
在選擇伺服器組設定精靈,選擇伺服器類型,然後選擇伺服器組並查看後端伺服器資訊,單擊下一步。
在組態稽核設定精靈,確認配置資訊,單擊提交。
步驟二:建立HTTPS監聽
建立HTTPS監聽時,請開啟QUIC升級,並關聯已建立的QUIC監聽。
在執行個體頁面,找到在步驟一中建立了QUIC監聽的執行個體,單擊該執行個體ID。
在執行個體詳情頁簽,單擊監聽頁簽,單擊建立監聽。
在配置監聽設定精靈,完成以下配置,然後單擊下一步。
此處僅列出和本文強相關的配置項,其餘參數可保持預設值或根據實際情況修改。更多資訊,請參見添加HTTPS監聽。
監聽配置
說明
選擇監聽協議
選擇監聽的協議類型。
本樣本選擇HTTPS。
監聽連接埠
輸入用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠,通常HTTP協議使用80連接埠,HTTPS協議使用443連接埠。
連接埠範圍為1~65535。
本樣本輸入443。
說明在同一個Server Load Balancer執行個體內,監聽連接埠不可重複。
高級配置
單擊修改展開進階配置。
開啟QUIC升級
選擇是否開啟QUIC升級。
本樣本開啟QUIC升級,並在關聯的QUIC監聽下拉式清單中選擇已建立的QUIC監聽。
在配置SSL認證設定精靈,選擇伺服器憑證,然後單擊下一步。
說明如果您要設定TLS安全性原則,單擊進階配置後的修改。
在選擇伺服器組設定精靈,選擇伺服器類型,然後選擇伺服器組,查看後端伺服器資訊,然後單擊下一步。
在組態稽核頁面,確認配置資訊,單擊提交。
步驟三:佈建網域名解析
將example.com通過CNAME網域名稱解析的方式解析到ALB執行個體的公網服務網域名稱上。
登入應用型負載平衡控制台。
在頂部功能表列選擇地區。
選擇要進行網域名稱解析的ALB執行個體,複製其對應的DNS名稱。
執行以下步驟添加CNAME解析記錄。
說明對於非阿里雲註冊網域名稱,需先將網域名稱添加到雲解析控制台,才可以進行網域名稱解析設定。具體操作,請參見網域名稱管理。如果您是阿里雲註冊的網域名稱,請直接執行以下步驟。
登入網域名稱解析控制台。
在權威網域名稱解析頁面,找到目標網域名稱,在操作列單擊解析設定。
在解析設定頁面,單擊添加記錄。
在添加記錄面板,配置以下資訊完成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協議大幅提升了用戶端訪問後端伺服器視頻的速度。