QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか

QUIC プロトコルは芋るのが非垞に興味深いので、私たちはそれに぀いお曞くのが倧奜きです。 しかし、QUIC に関するこれたでの出版物が歎史 (お奜みであれば、地域の歎史) の性質ずハヌドりェアに関するものであったずしたら、今日は喜んで別の皮類の翻蚳を出版したす。2019 幎のプロトコルの実際の応甚に぀いおお話したす。 さらに、私たちはいわゆるガレヌゞを拠点ずする小芏暡なむンフラストラクチャヌに぀いお話しおいるのではなく、ほが䞖界䞭で事業を展開しおいる Uber に぀いお話しおいたす。 同瀟の゚ンゞニアがどのようにしお QUIC を本番環境で䜿甚する決定に至ったのか、テストをどのように実行したのか、そしお本番環境で QUIC を展開した埌に芋たものを以䞋に瀺したす。

写真はクリック可胜です。 読曞を楜しむ

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか

Uber は䞖界的な芏暡、぀たり 600 郜垂で展開しおおり、各郜垂でアプリケヌションは 4500 以䞊の携垯電話䌚瀟の無線むンタヌネットに完党に䟝存しおいたす。 ナヌザヌは、アプリが速いだけでなくリアルタむムであるこずを期埅しおいたす。これを実珟するには、Uber アプリには䜎遅延ず非垞に信頌性の高い接続が必芁です。 ああ、でもスタックは HTTP / 2 動的で損倱が発生しやすいワむダレス ネットワヌクではうたく機胜したせん。 この堎合、パフォヌマンスの䜎䞋はオペレヌティング システム カヌネルの TCP 実装に盎接関係しおいるこずがわかりたした。

この問題を解決するために、私たちは申請したした QUIC、トランスポヌト プロトコルのパフォヌマンスをより詳现に制埡できる最新のチャネル倚重化プロトコル。 珟圚、ワヌキンググルヌプは、 IETF QUICを次のように暙準化したす HTTP / 3.

広範なテストの結果、アプリケヌションに QUIC を実装するず、TCP ず比范しおテヌル レむテンシが䜎䞋するずいう結論に達したした。 運転手および助手垭アプリケヌションの HTTPS トラフィックが 10  30% の範囲で枛少するこずが芳察されたした。 QUIC により、ナヌザヌ パッケヌゞを゚ンドツヌ゚ンドで制埡できるようになりたした。

この蚘事では、QUIC をサポヌトするスタックを䜿甚しお Uber アプリケヌションの TCP を最適化した経隓を共有したす。

最新テクノロゞヌTCP

珟圚、TCP は、むンタヌネット䞊で HTTPS トラフィックを配信するために最もよく䜿甚されおいるトランスポヌト プロトコルです。 TCP は信頌性の高いバむト ストリヌムを提䟛するため、ネットワヌクの茻茳やリンク局の損倱に察凊できたす。 HTTPS トラフィックに TCP が広く䜿甚されおいるのは、前者の遍圚性 (ほがすべおの OS に TCP が含たれおいる)、ほずんどのむンフラストラクチャ (ロヌド バランサヌ、HTTPS プロキシ、CDN など) での可甚性、およびすぐに䜿甚できる機胜によるものです。ほがほずんどのプラットフォヌムずネットワヌク䞊で動䜜したす。

ほずんどのナヌザヌは倖出先で圓瀟のアプリを䜿甚しおおり、TCP テヌルの遅延はリアルタむムの HTTPS トラフィックの芁求には遠く及ばたせんでした。 簡単に蚀うず、䞖界䞭のナヌザヌがこれを経隓しおいたす。図 1 は䞻芁郜垂での遅延を瀺しおいたす。

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 1: テヌル レむテンシは、Uber の䞻芁郜垂によっお異なりたす。

むンドずブラゞルのネットワヌクの遅延は米囜や英囜よりも高かったものの、テヌル遅延は平均遅延よりも倧幅に高かった。 そしおこれは米囜や英囜にも圓おはたりたす。

TCP over the air パフォヌマンス

TCP は次のために䜜成されたした。 有線 ぀たり、予枬可胜性の高いリンクに重点を眮いたネットワヌクです。 しかし、 無線 ネットワヌクにはそれぞれ独自の特城ず困難がありたす。 たず、ワむダレス ネットワヌクは干枉や信号の枛衰による損倱を受けやすくなりたす。 たずえば、Wi-Fi ネットワヌクはマむクロ波、Bluetooth、その他の電波の圱響を受けやすくなっおいたす。 携垯電話ネットワヌクでは信号損倱が発生したす (倱われた道) 物䜓や建物、たた他の堎所からの信号の反射/吞収が原因です。 干枉 隣から 携垯電話の塔。 これにより、より重芁 (4  10 倍) でより倚様な情報が埗られたす。 埀埩時間 (RTT) 有線接続ず比范しおパケットロスが少なくなりたす。

垯域幅の倉動や損倱に察凊するために、セルラヌ ネットワヌクは通垞、トラフィック バヌスト甚に倧きなバッファを䜿甚したす。 これにより過剰なキュヌが発生し、遅延が長くなる可胜性がありたす。 非垞に倚くの堎合、TCP はタむムアりトの延長によりこのキュヌを無駄なものずしお扱うため、TCP は䞭継を行っおバッファを埋める傟向がありたす。 この問題は次のように知られおいたす バッファブロヌト (過剰なネットワヌク バッファリング、バッファの肥倧化、これは非垞に 深刻な問題 珟代のむンタヌネット。

最埌に、携垯電話ネットワヌクのパフォヌマンスは通信事業者、地域、時間によっお異なりたす。 図 2 では、2 キロメヌトルの範囲内のセルにわたる HTTPS トラフィックの遅延の䞭倮倀を収集したした。 むンドのデリヌにある 3 ぀の倧手携垯電話事業者から収集されたデヌタ。 ご芧のずおり、パフォヌマンスはセルごずに異なりたす。 たた、あるオペレヌタヌの生産性は、もう XNUMX 人のオペレヌタヌの生産性ずは異なりたす。 これは、時間ず堎所、ナヌザヌのモビリティを考慮したネットワヌク ゚ントリ パタヌン、タワヌの密床やネットワヌク タむプ (LTE、XNUMXG など) の比率を考慮したネットワヌク むンフラストラクチャなどの芁因によっお圱響されたす。

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 2. 䟋ずしお半埄 2 km を䜿甚した遅延。 デリヌ、むンド。

たた、携垯電話ネットワヌクのパフォヌマンスは時間の経過ずずもに倉化したす。 図 3 は、曜日ごずの埅ち時間の䞭倮倀を瀺しおいたす。 たた、XNUMX 日および XNUMX 時間以内の、より小芏暡な違いも芳察したした。

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 3. テヌル遅延は、同じオペレヌタヌでも日によっお倧きく異なる堎合がありたす。

䞊蚘のすべおにより、ワむダレス ネットワヌクでの TCP パフォヌマンスが䜎䞋したす。 ただし、TCP の代替手段を探す前に、次の点に぀いお正確に理解する必芁がありたした。

  • アプリケヌションのテヌル レむテンシヌの䞻な原因は TCP ですか?
  • 最新のネットワヌクには、倧幅か぀倚様なラりンドトリップ遅延 (RTT) がありたすか?
  • RTT ず損倱が TCP パフォヌマンスに䞎える圱響は䜕ですか?

TCP パフォヌマンス分析

TCP パフォヌマンスをどのように分析したかを理解するために、TCP が送信者から受信者にデヌタをどのように転送するかを簡単に芋おみたしょう。 たず、送信者は TCP 接続を確立し、XNUMX 方向の通信を実行したす。 ハンドシェヌク: 送信偎は SYN パケットを送信し、受信偎からの SYN-ACK パケットを埅っおから、ACK パケットを送信したす。 TCP 接続の確立には、远加の XNUMX 番目ず XNUMX 番目のパスが費やされたす。 受信者は各パケットの受信確認 (ACK) を行い、信頌性の高い配信を保蚌したす。

パケットたたは ACK が倱われた堎合、送信者はタむムアりト (RTO、 再送信タむムアりト。 RTO は、送信者ず受信者の間で予想される RTT 遅延など、さたざたな芁因に基づいお動的に蚈算されたす。

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 4. TCP/TLS を介したパケット亀換には再送信メカニズムが含たれおいたす。

アプリケヌションで TCP がどのように実行されたかを刀断するために、次を䜿甚しお TCP パケットを監芖したした。 tcpdump むンドの゚ッゞサヌバヌからの戊闘トラフィックに぀いおXNUMX週間。 次に、次を䜿甚しお TCP 接続を分析したした。 tcptrace。 さらに、実際のトラフィックを可胜な限り暡倣しお、゚ミュレヌトされたトラフィックをテスト サヌバヌに送信する Android アプリケヌションを䜜成したした。 このアプリケヌションをむンストヌルしたスマヌトフォンが数人の埓業員に配垃され、数日間にわたっおログが収集されたした。

䞡方の実隓の結果は互いに䞀臎しおいたした。 RTT レむテンシが高かったこずがわかりたした。 テヌル倀は䞭倮倀のほが 6 倍でした。 遅延の算術平均は 1 秒を超えたす。 倚くの接続に損倱が発生し、TCP が党パケットの 3,5% を再送信したした。 空枯や駅などの混雑した゚リアでは、7% の損倱が発生したした。 これらの結果は、携垯電話ネットワヌクで䜿甚されおいるずいう埓来の通念に疑問を投げかけたす。 高床な再送信回路 茞送レベルでの損倱を倧幅に削枛したす。 以䞋は、「シミュレヌタヌ」アプリケヌションからのテスト結果です。

ネットワヌクメトリクス
倀

RTT、ミリ秒 [50%、75%、95%、99%]
[350、425、725、2300]

RTT 発散、秒
平均玄 1,2 秒

䞍安定な接続でのパケット損倱
平均 ~3.5% (過負荷領域では 7%)

これらの接続のほが半数で少なくずも 1 ぀のパケット損倱があり、そのほずんどが SYN および SYN-ACK パケットでした。 ほずんどの TCP 実装では、SYN パケットに察しお XNUMX 秒の RTO 倀が䜿甚されたすが、これは埌続の損倱に察しお指数関数的に増加したす。 TCP では接続の確立に時間がかかるため、アプリケヌションの読み蟌み時間が長くなる可胜性がありたす。

デヌタ パケットの堎合、RTO 倀が高いず、ワむダレス ネットワヌクに䞀時的な損倱が存圚する堎合、ネットワヌクの有効利甚が倧幅に枛少したす。 平均再送信時間は玄 1 秒で、テヌル遅延はほが 30 秒であるこずがわかりたした。 TCP レベルでのこのような長い遅延により、HTTPS タむムアりトず再芁求が発生し、ネットワヌクの遅延ず非効率がさらに増加し​​たした。

枬定された RTT の 75 パヌセンタむルは玄 425 ミリ秒でしたが、TCP の 75 パヌセンタむルはほが 3 秒でした。 これは、損倱により、TCP がデヌタを正垞に送信するために 7  10 回のパスが必芁になったこずを瀺唆しおいたす。 これは、非効率的な RTO 蚈算、TCP が損倱に迅速に察応できないこずの結果である可胜性がありたす。 最新のパッケヌゞ 無線損倱ずネットワヌク茻茳による損倱を区別しない茻茳制埡アルゎリズムの非効率性。 以䞋は TCP 損倱テストの結果です。

TCP パケット損倱統蚈
倀

少なくずも 1 ぀のパケット損倱が発生した接続の割合
芖聎者の%が

接続セットアップ䞭に損倱が発生した接続の割合
芖聎者の%が

デヌタ亀換䞭に損倱が発生した接続の割合
芖聎者の%が

再送信遅延の分垃、秒 [50%、75%、95%、99%] [1、2.8、15、28]

XNUMXパケットたたはTCPセグメントの再送回数の分垃
【1,3,6,7]

QUICの応甚

もずもず Google によっお開発された QUIC は、UDP 䞊で実行されるマルチスレッドの最新のトランスポヌト プロトコルです。 珟圚QUICは 暙準化プロセス (QUIC にはいわば XNUMX ぀のバヌゞョンがあるずすでに曞きたしたが、興味深いのは リンクをたどるこずができたす – 玄翻蚳者。 図 5 に瀺すように、QUIC は HTTP/3 の䞋に眮かれたす (実際、QUIC の䞊にある HTTP/2 は HTTP/3 であり、珟圚集䞭的に暙準化が進められおいたす)。 UDP を䜿甚しおパケットを圢成するこずで、HTTPS 局ず TCP 局を郚分的に眮き換えたす。 TLS は QUIC に完党に組み蟌たれおいるため、QUIC は安党なデヌタ転送のみをサポヌトしたす。

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 5: QUIC は、以前 HTTP/3 で実行されおいた TLS に代わっお、HTTP/2 で実行されたす。

TCP 増幅に QUIC を䜿甚するこずを確信した理由は次のずおりです。

  • 0-RTT 接続の確立。 QUIC を䜿甚するず、以前の接続からの承認を再利甚できるため、セキュリティ ハンドシェむクの数が削枛されたす。 将来は TLS1.3 は 0-RTT をサポヌトしたすが、匕き続き XNUMX りェむ TCP ハンドシェむクが必芁です。
  • HoL ブロッキングを克服したす。 HTTP/2 はパフォヌマンスを向䞊させるためにクラむアントごずに XNUMX ぀の TCP 接続を䜿甚したすが、これにより HoL (ヘッドオブラむン) ブロッキングが発生する可胜性がありたす。 QUIC は倚重化を簡玠化し、リク゚ストをアプリケヌションに独立しお配信したす。
  • 茻茳制埡。 QUIC はアプリケヌション局に存圚し、ネットワヌク パラメヌタ (損倱数たたは RTT) に基づいお送信を制埡するメむンのトランスポヌト アルゎリズムを簡単に曎新できたす。 ほずんどの TCP 実装では、次のアルゎリズムが䜿甚されたす。 キュヌビックこれは、遅延の圱響を受けやすいトラフィックには最適ではありたせん。 最近開発された次のようなアルゎリズム BBR、ネットワヌクをより正確にモデル化し、遅延を最適化したす。 QUIC を䜿甚するず、BBR を䜿甚し、䜿甚に応じおこのアルゎリズムを曎新できたす。 改善.
  • 損倱の補充。 QUIC は XNUMX ぀の TLP を呌び出したす (テヌルロスプロヌブ) RTO がトリガヌされる前 - 損倱が非垞に顕著な堎合でも。 これは TCP 実装ずは異なりたす。 TLP は䞻に最埌のパケット (たたは、存圚する堎合は新しいパケット) を再送信しお、高速補充をトリガヌしたす。 テヌル遅延の凊理は、Uber のネットワヌク運甚方法、぀たり、短時間、散発的、遅延の圱響を受けやすいデヌタ転送の堎合に特に圹立ちたす。
  • 最適化されたACK。 各パケットには固有のシヌケンス番号があるので問題ありたせん 区別 パケットが再送信されるずき。 ACK パケットには、パケットを凊理しおクラむアント偎で ACK を生成する時間も含たれおいたす。 これらの機胜により、QUIC は RTT をより正確に蚈算できたす。 QUIC の ACK は最倧 256 バンドをサポヌトしたす ナックこれにより、送信偎のパケット シャッフルに察する耐性が向䞊し、プロセスで䜿甚するバむト数が枛りたす。 遞択的ACK (袋TCP の ) では、すべおの堎合にこの問題が解決されるわけではありたせん。
  • 接続の移行。 QUIC 接続は 64 ビット ID によっお識別されるため、クラむアントが IP アドレスを倉曎した堎合でも、叀い接続 ID は䞭断するこずなく新しい IP アドレスで匕き続き䜿甚できたす。 これは、ナヌザヌが Wi-Fi 接続ずセルラヌ接続を切り替えるモバむル アプリケヌションでは非垞に䞀般的な方法です。

QUICの代替手段

QUIC を遞択する前に、問題を解決するための代替アプロヌチを怜蚎したした。

私たちが最初に詊みたのは、TPC PoP (Points of Presence) を展開しお、ナヌザヌの近くで TCP 接続を終了するこずでした。 基本的に、PoP はセルラヌ ネットワヌクに近いモバむル デバむスずの TCP 接続を終了し、トラフィックをプロキシしお元のむンフラストラクチャに戻したす。 TCP をより近くで終了するこずで、RTT を削枛できる可胜性があり、動的なワむダレス環境に察する TCP の応答性が向䞊したす。 ただし、私たちの実隓では、RTT ず損倱のほずんどはセルラヌ ネットワヌクから発生しおおり、PoP の䜿甚では倧幅なパフォヌマンスの向䞊が埗られないこずがわかりたした。

TCP パラメヌタの調敎に぀いおも怜蚎したした。 TCP は OS バヌゞョンごずに実装が異なるため、異皮゚ッゞ サヌバヌに TCP スタックをセットアップするのは困難でした。 これを実装しおさたざたなネットワヌク構成をテストするのは困難でした。 暩限がないため、モバむル デバむスで TCP を盎接構成できたせんでした。 さらに重芁なのは、0-RTT 接続や改善された RTT 予枬などの機胜はプロトコルのアヌキテクチャにずっお重芁であるため、TCP だけを調敎するだけでは倧きな利点を達成するこずは䞍可胜です。

最埌に、ビデオ ストリヌミングのトラブルシュヌティングを行ういく぀かの UDP ベヌスのプロトコルを評䟡したした。これらのプロトコルが今回のケヌスで圹立぀かどうかを確認したかったのです。 残念ながら、倚くのセキュリティ蚭定が倧幅に欠劂しおおり、メタデヌタず制埡情報のために远加の TCP 接続も必芁でした。

私たちの調査によるず、セキュリティずパフォヌマンスの䞡方を考慮しながら、むンタヌネット トラフィックの問題を解決できる唯䞀のプロトコルは QUIC である可胜性がありたす。

QUICのプラットフォヌムぞの統合

QUIC をうたく埋め蟌み、接続状態が悪い環境でアプリケヌションのパフォヌマンスを向䞊させるために、叀いスタック (TLS/TCP 䞊の HTTP/2) を QUIC プロトコルに眮き換えたした。 ネットワヌクラむブラリを利甚したした クロネット の クロムプロゞェクト、これには、元の Google バヌゞョンのプロトコル - gQUIC が含たれおいたす。 この実装も、最新の IETF 仕様に準拠するために継続的に改善されおいたす。

たず、QUIC のサポヌトを远加するために Cronet を Android アプリに統合したした。 統合は、移行コストを可胜な限り削枛する方法で実行されたした。 ラむブラリを䜿甚しおいた叀いネットワヌク スタックを完党に眮き換えるのではなく、 OKHTTP、OkHttp API フレヌムワヌクの䞋に Cronet を統合したした。 この方法で統合を行うこずで、ネットワヌク呌び出し ( 組み蟌む) API レベルで。

Android デバむスのアプロヌチず同様に、iOS 䞊の Uber アプリに Cronet を実装し、ネットワヌクからの HTTP トラフィックを傍受したした。 API䜿い方 NSURLプロトコル。 iOS Foundation によっお提䟛されるこの抜象化は、プロトコル固有の URL デヌタを凊理し、倚額の移行コストをかけずに Cronet を iOS アプリケヌションに統合できるようにしたす。

Google Cloud Balancer で QUIC を完了する

バック゚ンド偎では、QUIC 完了は Google Cloud 負荷分散むンフラストラクチャによっお提䟛されたす。 alt-svc QUIC をサポヌトするための応答内のヘッダヌ。 䞀般に、バランサヌは各 HTTP リク゚ストに alt-svc ヘッダヌを远加したす。これにより、ドメむンの QUIC サポヌトがすでに怜蚌されたす。 Cronet クラむアントは、このヘッダヌを持぀ HTTP 応答を受信するず、そのドメむンぞの埌続の HTTP 芁求に QUIC を䜿甚したす。 バランサヌが QUIC を完了するず、むンフラストラクチャはこのアクションを HTTP2/TCP 経由でデヌタ センタヌに明瀺的に送信したす。

パフォヌマンス: 結果

より良いプロトコルを探す䞻な理由は、出力パフォヌマンスです。 たずはスタンドを䜜りたした ネットワヌク゚ミュレヌションさたざたなネットワヌク プロファむルの䞋で QUIC がどのように動䜜するかを調べたす。 実際のネットワヌク䞊で QUIC のパフォヌマンスをテストするために、乗客甚アプリの HTTP 呌び出しによく䌌た゚ミュレヌトされたネットワヌク トラフィックを䜿甚しお、ニュヌデリヌを運転しながら実隓を実行したした。

実隓1

実隓甚の蚭備

  • OkHttp スタックず Cronet スタックを䜿甚しお Android デバむスをテストし、それぞれ TCP および QUIC 経由の HTTPS トラフィックが蚱可されおいるこずを確認したす。
  • Java ベヌスの゚ミュレヌション サヌバヌは、応答で同じタむプの HTTPS ヘッダヌを送信し、クラむアント デバむスをロヌドしおクラむアントからのリク゚ストを受信したす。
  • TCP および QUIC 接続を終了するためにむンドの近くに物理的に配眮されたクラりド プロキシ。 TCP 終端にはリバヌス プロキシを䜿甚したしたが、 nginxの、QUIC 甚のオヌプン゜ヌス リバヌス プロキシを芋぀けるのは困難でした。 私たちは、Chromium の基本的な QUIC スタックを䜿甚しお、QUIC 甚のリバヌス プロキシを自分たちで構築したした。 公開 それをオヌプン゜ヌスずしお Chrome に組み蟌みたす。

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したかQUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 6. TCP ず QUIC のロヌド テスト スむヌトは、OkHttp ず Cronet を備えた Android デバむス、接続を終了するクラりド プロキシ、および゚ミュレヌション サヌバヌで構成されおいたした。

実隓2

Google が QUIC を利甚できるようにしたずき Googleクラりド負荷分散同じむンベントリを䜿甚したしたが、倉曎が XNUMX ぀ありたした。NGINX の代わりに Google ロヌド バランサを䜿甚しお、デバむスからの TCP および QUIC 接続を終了し、HTTPS トラフィックを゚ミュレヌション サヌバヌにルヌティングしたした。 バランサヌは䞖界䞭に分散されおいたすが、(䜍眮情報のおかげで) デバむスに最も近い PoP サヌバヌを䜿甚したす。

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 7. XNUMX 番目の実隓では、Google Cloud を䜿甚した堎合ずクラりド プロキシを䜿甚した堎合で、TCP ず QUIC の完了レむテンシを比范したいず考えたした。

その結果、いく぀かの事実が私たちを埅っおいたした。

  • PoP 経由の終端により、TCP パフォヌマンスが向䞊したした。 バランサヌはナヌザヌの近くで TCP 接続を終了し、高床に最適化されおいるため、RTT が䜎䞋し、TCP パフォヌマンスが向䞊したす。 たた、QUIC はそれほど圱響を受けたせんでしたが、テヌル レむテンシヌの短瞮 (10  30%) ずいう点では TCP よりも優れたパフォヌマンスを瀺したした。
  • 尟が圱響を受ける ネットワヌクホップ. 圓瀟の QUIC プロキシは、Google のロヌド バランサよりもデバむスから離れおいたしたが (レむテンシが玄 50 ミリ秒高かった)、同様のパフォヌマンスを実珟したした。15 パヌセンタむルでの TCP の 20% 削枛に察しお、TCP では 99% のレむテンシ削枛でした。 これは、ラスト マむルの移行がネットワヌクのボトルネックであるこずを瀺唆しおいたす。

QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したかQUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 8: XNUMX ぀の実隓の結果は、QUIC が TCP よりも倧幅に優れおいるこずを瀺しおいたす。

戊闘亀通

実隓からむンスピレヌションを埗お、Android および iOS アプリケヌションに QUIC サポヌトを実装したした。 Uber が事業を展開しおいる郜垂で QUIC の圱響を刀断するために A/B テストを実斜したした。 䞀般に、䞡方の地域、通信事業者、ネットワヌクの皮類にわたっおテヌル遅延が倧幅に枛少しおいるこずがわかりたした。

以䞋のグラフは、マクロ領域およびさたざたなネットワヌク タむプ (LTE、95G、99G) ごずのテヌル (3 および 2 パヌセンタむル) の改善率を瀺しおいたす。
QUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したかQUIC プロトコルの動䜜: Uber がパフォヌマンスを最適化するために QUIC プロトコルをどのように実装したか
図 9. 実戊テストでは、QUIC は遅延の点で TCP を䞊回りたした。

転送のみ

おそらくこれはほんの始たりにすぎたせん。QUIC の運甚環境ぞのリリヌスにより、安定したネットワヌクず䞍安定なネットワヌクの䞡方でアプリケヌションのパフォヌマンスを向䞊させる玠晎らしい機䌚が提䟛されたした。

適甚範囲の拡倧

実際のトラフィックでのプロトコルのパフォヌマンスを分析したずころ、セッションの玄 80% が QUIC の䜿甚に成功しおいるこずがわかりたした。 すべお 䞀方、セッションの 15% は QUIC ず TCP の組み合わせを䜿甚しおいたした。 この組み合わせは、Cronet ラむブラリが実際の UDP 障害ず劣悪なネットワヌク状態を区別できないため、TCP にタむムアりトするこずが原因であるず考えられたす。 珟圚、今埌の QUIC の実装に向けお、この問題の解決策を怜蚎䞭です。

QUICの最適化

モバむル アプリからのトラフィックは遅延の圱響を受けたすが、垯域幅の圱響は受けたせん。 たた、圓瀟のアプリケヌションは䞻に携垯電話ネットワヌクで䜿甚されたす。 実隓によるず、プロキシを䜿甚しおナヌザヌの近くで TCP ず QUIC を終了しおも、テヌル レむテンシヌは䟝然ずしお高いこずがわかりたす。 私たちは、茻茳管理を改善し、QUIC 損倱回埩アルゎリズムの効率を向䞊させる方法を積極的に暡玢しおいたす。

これらおよびその他のいく぀かの改善により、ネットワヌクや地域に関係なくナヌザヌ ゚クスペリ゚ンスを向䞊させ、䞖界䞭で䟿利でシヌムレスなパケット転送をよりアクセスしやすくする予定です。

出所 habr.com

コメントを远加したす