全部產品
Search
文件中心

Server Load Balancer:如何使用QUIC協議提升音視頻業務訪問速度

更新時間:Aug 20, 2024

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.comALB執行個體將會通過配置的QUIC監聽將用戶端的請求轉寄至預設後端伺服器組RS1。

  • 當QUIC監聽不可用時,系統會自動切換到關聯的HTTPS監聽,此時在Chrome瀏覽器中輸入認證綁定的網域名稱example.comALB執行個體將會通過配置的HTTPS監聽將用戶端的請求轉寄至預設後端伺服器組RS1。

前提條件

  • 已建立ALB執行個體。具體操作,請參見建立應用型負載平衡

  • 已建立伺服器組RS1。具體操作,請參見建立和管理伺服器組

  • 已在伺服器組RS1中添加ECS01執行個體,並在ECS01執行個體中部署了Nginx的視頻服務。

  • 您已經在ALB執行個體上部署了SSL伺服器憑證,該認證已綁定了網域名稱example.com

步驟一:建立QUIC監聽

  1. 登入應用型負載平衡ALB控制台
  2. 在頂部功能表列,選擇ALB執行個體所屬的地區。

  3. 執行個體頁面,找到目標執行個體,單擊目標執行個體ID。在監聽頁簽,單擊建立監聽

  4. 配置監聽設定精靈,完成以下配置,然後單擊下一步

    監聽配置

    說明

    選擇監聽協議

    選擇監聽的協議類型。

    本樣本選擇QUIC

    監聽連接埠

    輸入用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠。

    連接埠範圍為1~65535。

    說明

    同一個ALB執行個體內,相同協議的監聽連接埠不能重複,且HTTP和HTTPS監聽連接埠互不重複。

    監聽名稱

    輸入監聽名稱。

    標籤

    設定標籤鍵標籤值

    設定標籤後,您可以在監聽頁簽使用標籤篩選監聽。

    進階配置

    單擊修改展開進階配置。

    串連空閑逾時時間

    指定空閑逾時時間,預設取值範圍為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頭欄位擷取Server Load Balancer執行個體的ID。

    • 通過X-Forwarded-Proto頭欄位擷取Server Load Balancer執行個體的監聽協議。

    • 通過X-Forwarded-Port頭欄位擷取Server Load Balancer執行個體的監聽連接埠。

    • 通過X-Forwarded-Client-srcport頭欄位擷取訪問Server Load Balancer執行個體用戶端的連接埠。

  5. 配置SSL認證設定精靈,選擇伺服器憑證,然後單擊下一步

  6. 選擇伺服器組設定精靈,選擇伺服器類型,然後選擇伺服器組並查看後端伺服器資訊,單擊下一步

  7. 組態稽核設定精靈,確認配置資訊,單擊提交

步驟二:建立HTTPS監聽

建立HTTPS監聽時,請開啟QUIC升級,並關聯已建立的QUIC監聽。

  1. 執行個體頁面,找到在步驟一中建立了QUIC監聽的執行個體,單擊該執行個體ID。

  2. 執行個體詳情頁簽,單擊監聽頁簽,單擊建立監聽

  3. 配置監聽設定精靈,完成以下配置,然後單擊下一步

    監聽配置

    說明

    選擇監聽協議

    選擇監聽的協議類型。

    本樣本選擇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/xmltext/plaintext/cssapplication/javascriptapplication/x-javascriptapplication/rss+xmlapplication/atom+xmlapplication/xmlapplication/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

  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分鐘。

      • 添加時如遇添加衝突,請換一個解析網域名稱。更多資訊請參見解析記錄衝突規則

步驟四:結果驗證

本文以Windows用戶端為例說明。在瀏覽器中輸入example.com可訪問到ALB執行個體,本文在伺服器組RS1對應的後端伺服器ECS01上使用Nginx搭建了視頻服務。

  • 當同時配置了HTTPS監聽和QUIC監聽時,在瀏覽器中輸入認證綁定的網域名稱example.com,並按F12可以查看當前網頁的協議HTTP/3,耗時93毫秒

    如下圖所示:quic

  • 當QUIC監聽不可用時,在瀏覽器中輸入認證綁定的網域名稱example.com,並按F12可以查看當前網頁的協議HTTP/2,耗時148毫秒

    如下圖所示:https

經測試,ALB使用HTTP/3協議大幅提升了用戶端訪問後端伺服器視頻的速度。