モバイル淘宝網は、短いビデオや画像にコンテンツ配信ネットワーク (CDN) を使用しています。 Mobile Taobaoは、Alibaba Cloud CDNテクノロジーを活用して、より良いユーザーエクスペリエンスを提供します。 これらの技術の1つは、Internet Engineering Task Force Quick UDP Internet Connections (IETF QUIC) に基づく加速である。 このトピックでは、Alibaba Cloud CDNを例として、IETF QUICベースのアクセラレーションとTaobao MobileのXQUICライブラリを使用した場合のアプリケーションシナリオと効果を紹介します。
背景情報
インターネットの急速な発展に伴い、ネットワーク環境も変化しています。 HTTPプロトコルはHTTP/1からHTTP/3に進化しました。 HTTP/3は、TCPの代わりにトランスポート層としてQUICを使用します。これにより、ストリーム多重化、ゼロラウンドトリップタイム (0〜RTT) ハンドシェイク、接続移行、ユーザー状態の輻輳アルゴリズムなどの利点が提供されます。 Alibaba Cloud CDNはQUICプロトコルの進化に密接に準拠しており、Google QUIC (gQUIC) からIETF QUICまで最新のものを実装しています。これはAlibaba Cloud CDNポイントオブプレゼンス (POP) にデプロイされ、短いビデオや画像などのシナリオで大きなメリットを実現しています。
QUICは、UDPの上に構築された新しい多重化された安全なトランスポートです。 それはより低い接続および転送の待ち時間を提供し、悪いネットワーク条件の下で優秀な性能があります。 深刻なパケット損失やネットワーク遅延の問題に直面した場合でも、QUICはサービスの可用性を確保できます。 このトピックでは、QUICの技術的な機能、アプリケーションシナリオ、利点、およびビジネスでQUICを実装するためのベストプラクティスについて説明します。 Alibaba Cloudは、お客様に最高のエクスペリエンスを提供するために、QUICの開発と実装を常に推進しています。
Introduction to QUIC
ビデオのWebサイトやアプリにアクセスすると、ページの読み込みが遅く、ビデオの吃音、ネットワークエラーなど、さまざまなパフォーマンスの問題が発生することがよくあります。 これらの問題の重要な要因は、ネットワークプロトコルです。
HTTPの進化
webプロトコルとして、HTTPはいくつかの主要なアップグレードを経ています。
HTTP/1.0〜HTTP/1.1: 永続的な接続とパイプラインリクエストをサポートし、TCPの3ウェイハンドシェイクを簡素化することで接続確立のオーバーヘッドを削減します。
HTTP to HTTPS: Transport Layer Security (TLS) ハンドシェイクを追加してエンドツーエンドの暗号化を実装します。 追加されたセキュリティ機能は、接続を確立するために必要な時間の増加をもたらした。
HTTP/1.1〜HTTP/2: リクエストデータストリームの多重化とヘッダー圧縮をサポートします。これにより、単一の接続の同時実行性が向上します。
HTTP/1.0からHTTP/2への進化において、TCPのままであるトランスポート層を除いて、多くの変更が導入されました。 TCPは、3ウェイハンドシェイクを必要とする信頼性の高いデータ転送プロトコルであり、ヘッドオブライン (HOL) ブロッキングを起こしやすい。 この問題を解決するために、UDPに基づく信頼性の高いデータ転送プロトコルであるQUICがリリースされました。 これにより、HTTPへの次のアップグレードへの道が開かれました。
HTTP/2からHTTP/3: HTTP/3はQUICプロトコルに基づいており、QUICの特性を持っています。 HTTP/3は、HOLブロッキング問題を解決し、TLS 1.3 0-RTT、多重化、および接続移行などの機能を提供します。 QUICは2021年5月にRFC 9000で標準化されました。
QUIC機能
低接続レイテンシ: QUICはUDPに基づいており、TCP接続は必要ありません。 理想的には、QUICは0-RTTモードでデータを転送できます。 HTTPSはTCPに基づいており、TLS 1.3の初期データ機能を使用しても1-RTTモードでデータを転送します。 ただし、TLS 1.2の完全なハンドシェイクでは、HTTPSは3-RTTモードでデータを転送します。
HOLブロッキングなし: HTTP/2は多重化を実装しますが、TCPは依然としてトランスポート層で使用されます。 パケット損失が発生すると、多重化中のすべての要求フローが影響を受ける。 ただし、QUICはUDPに基づいており、HOLブロッキングを設計によって排除します。 さらに、HTTP/3はHPACKエンコーディングの代わりにQPACKエンコーディングを使用するため、HTTPリクエストヘッダーのHOLブロッキングもある程度削減されます。
ユーザ状態の輻輳制御: QUICの送信制御は、もはやカーネルによって実行される輻輳制御アルゴリズムに依存しないが、アプリケーション層で実施される。 これは、異なる輻輳制御アルゴリズムおよびパラメータを異なるシナリオに対して構成することができ、サービスのQUIC接続が異なる輻輳制御アルゴリズムを使用できることを意味する。
接続の移行: たとえば、Wi-Fiから4Gにユーザーのネットワークが変更されると、ユーザーのIPアドレスが変更され、TCPベースのHTTP接続が失われます。 QUICは接続識別子 (CID) を使用して、接続がネットワークの変更に耐え、信頼できるデータ移動を保証できるようにします。
QUICとTCPの比較
QUICは、TCPに固有のトランスポート層プロトコルの問題を解決するように設計されています。 2つのプロトコルには次の違いがあります。
0 − RTTおよび1 − RTT鍵を除いて、QUICは、各暗号化層に対して別個のパケット番号空間を使用する。 分離されたパケット番号空間は、パケットの肯定応答 (ACK) が1つの暗号化層を使用して送信されることを保証し、べき等性を保証する。
QUICのパケット番号は、パケット番号空間に従って厳密に増加し、送信順序を直接符号化する。 パケット番号が大きいほど、パケットが後で送信されることを示し、パケット番号が小さいほど、パケットが早く送信されることを示す。 ACKフレームを有するパケットが失われたことが検出された場合、QUICは、必要なフレームを新しいパケットに含め、パケットが受信されたときにそのパケットを確認するために新しいパケット番号を追加する。 したがって、より正確なRTTを測定して、誤った再送を検出することができる。
QUIC ACKフレームは、TCPの選択的肯定応答 (SACK) と同様の情報を含む。 しかしながら、QUICは、データパケットの確認が違反されることを可能にせず、これは、送信機および受信機の両方のための実装を大幅に単純化し、送信機のメモリ圧力を低減する。
TCPは3つのSACK範囲をサポートし、QUICはより多くのACK範囲をサポートします。 パケット損失率が高いネットワーク環境では、QUICはパケット回復を加速し、誤った再送信を減らします。
TCPでは、ホスト遅延を考慮せずに、パケットの送信時と受信時のタイムスタンプを用いてRTTを計算する。 QUICは、遅延ACKメカニズムを使用して、より正確なRTT測定値を取得します。
QUICは、TCPによって使用される再送信タイムアウト (RTO) およびテールロスプローブ (TLP) の代わりに、プローブタイムアウト (PTO) メカニズムを使用する。
TCPは、パケットに対して最小輻輳ウィンドウを使用する。 単一のパケットが失われた場合、送信者は、パケットを回復するためにPTOが超過されるまで待たなければならない。 受信機が確認を遅延させると、単一の肯定応答パケットを送信すると、追加の遅延が生じる。 したがって、QUICの推奨最小輻輳ウィンドウは2パケットです。 これはネットワーク負荷を増加させるが、より安全であると考えられる。 連続的な輻輳の場合、送信機は、送信レートを指数関数的に減少させる。
シナリオの使用
動的リクエスト (API操作とシグナリング送信): 動的インタラクションで消費される時間を短縮します。
短いビデオ: インスタントローディングを改善し、吃音を減らします。
画像ファイル: ダウンロード時間を短縮します。
ライブストリーミング: 再生の吃音を減らし、ストリーム取り込みの安定性を向上させます。
利点
迅速な接続確立: 0-RTTハンドシェイクは、TCPおよびTLSハンドシェイクに必要な時間を短縮し、即時ローディングを改善する。
多重化: HTTP/2と比較して、QUICはTCPのHOLブロッキングを排除する真のシングルチャネル並列伝送を使用します。
輻輳アルゴリズム: 柔軟な輻輳アルゴリズムは、カーネルまたはOSによって制限されず、アプリケーション層で直接変更することができる。
永続的な接続: 頻繁なネットワーク変更は接続を終了せず、ユーザーには知覚できません
Alibaba Cloud CDNにおけるQUICの進化
Taobao MobileとAlibaba Cloudは、主にTaobao Mobileでの画像や短いビデオ配信などのシナリオで、2018でgQUICに関する協力を開始しました。 2019年の初めに、彼らはプロトコルを標準化するためのコンセンサスを持っていました。 商用製品の観点からは、プライベートプロトコルソリューションをユーザーが認識することはより困難です。 一方、標準化されたプロトコルの設計とセキュリティはより包括的に考慮されています。
仕様が発表されたとき、業界ではモバイルデバイス用のIETF QUICの成熟した、または適切な実装はありませんでした。 したがって、Taobao Mobileは独自のXQUICプロジェクトを開始しました。 1年半の開発と最適化の後、XQUICは2020年6月に発売されました。 2021年初頭、Taobao MobileはAlibaba Cloud CDNのIETF QUICと統合され、短いビデオシナリオでIETF QUICテクノロジーを徐々に適用しました。 2021年9月、Alibaba Cloud CDNは、IETF QUICプロトコルスタックの大規模なアプリケーションを短いビデオシナリオで実装しました。 その後、Alibaba Cloud CDNは、同じ年にDouble 11ショッピングフェスティバルを処理するという実際のストレスにさらされました。 XQUICとAlibaba Cloud CDNは、パフォーマンスと安定性の点で素晴らしい結果をもたらしました。 その後まもなく、Alibaba Cloud CDNは2022年1月7日にXQUICをオープンソースし、Alibaba Cloud CDN向けの新しいIETF QUIC製品のリリースをサポートしました。
Alibaba Cloud CDNは主に、Taobao Mobileの短いビデオシナリオにQUICを使用しています。 ベストプラクティスのソリューションは、デバイス上のXQUICプロトコルスタックとAlibaba Cloud CDNのQUICの組み合わせを使用することです。 Taobao Mobileの短いビデオシナリオでのネットワークエクスペリエンスの改善には、短いビデオをダウンロードするための20% の短い時間と、吃音の少ない10% が含まれます。 満足のいく改善により、Alibaba Cloud CDNチームは、イメージなどのより多くのシナリオでアクセラレーション技術をさらに適用します。 チームは、クラウド製品のお客様により良いエクスペリエンスを提供するためのベストプラクティスも提供します。
デバイスでXQUICライブラリを使用するベストプラクティス
XQUICライブラリは、軽量で高性能な標準化されたクロスプラットフォームプロトコルライブラリです。
AndroidおよびiOSデバイスに準拠したXQUICライブラリは400 KB未満であるため、新規ユーザーのインストールが容易になり、モバイルアプリのパッケージサイズが最小限に抑えられます。 したがって、XQUICは、高いパフォーマンスを必要とするがパッケージサイズに敏感なモバイルアプリに適しています。
高性能の面では、XQUICはTaobao Mobileのショッピングガイドや短いビデオに広く実装されています。 たとえば、Taobao Mobileで製品を検索したり、Taobao Timeでビデオを閲覧したりする場合、XQUICはこれらのシナリオでより高速なネットワークデータ伝送サービスを提供します。
標準化に関して、XQUICは、トランスポート層、暗号化層、およびアプリケーション層のプロトコルスタックを含む、標準IETF QUICプロトコルの完全なセットを実装します。
クロスプラットフォーム機能に関しては、当社のネットワークライブラリはLinux、Android、iOS、およびmacOSをサポートし、将来的にはWindowsもサポートする予定です。 クライアントは、SDKを介してライブラリに簡単にアクセスして使用できます。
XQUICは、IETF QUICに含まれる3層プロトコルスタックを提供する。 XQUICはクライアント上でSDKとして実行されます。 サーバーでは、モジュールをTengineまたはNGINXフレームワークに接続することで使用できます。 さらに、コンテンツ配信ネットワークがモバイルデバイスで使用されるシナリオでは、XQUICは、プロトコルの相互運用性、0 − RTT比の改善、および平文モードと暗号文モードの互換性の点で最適化されます。 たとえば、平文モードと暗号文モードの互換性の観点から、Alibaba Cloud CDNは標準TLS 1.3で推奨されている暗号スイートをサポートするだけでなく、平文モードも提供します。 また、ハンドシェイクフェーズにおいてALPN (application layer protocol negotiation) パラメータを用いることにより、適応的なネゴシエーションを実現することができ、標準的な暗号文モードとの互換性が保証される。 RTT比の改善に関して、Alibaba Cloud CDNはサーバー設定とトークンのキャッシュポリシーを最適化します。 0 − RTT比は、モバイルデバイス上で68% 以上に達し得る。
Alibaba Cloud CDNのXQUICライブラリとQUICを組み合わせることで、ユーザーのエクスペリエンスを向上させることができます。 QUICの設定方法の詳細については、「QUICプロトコルの設定」をご参照ください。