ソフトウェア

Facebookは次世代プロトコル「QUIC」をどのように導入しサービスを高速化したのか?


インターネット上の通信は「TCP/IP」と呼ばれるプロトコル群によって長年支えられてきましたが、その中核をなすプロトコルであるTCPを新しい通信規格「QUIC」へ置き換える流れが強まっています。TCPにはない暗号化機能や効率性を備えたQUICをサービスに導入する中で得られたノウハウについて、Facebookが自社のブログで語っています。

How Facebook is bringing QUIC to billions - Facebook Engineering
https://engineering.fb.com/networking-traffic/how-facebook-is-bringing-quic-to-billions/

そもそも「QUIC」とは、トランスポート層のプロトコルであり最も有名な通信規格のひとつであるTCPを置き換える次世代のプロトコルを指します。QUICはもともとGoogleによって開発されましたが、2015年からはインターネットの標準化団体・IETFによる開発・標準化も進められています。UDPを用いることで従来のネットワーク機器にも対応した柔軟性と、TCPにはない暗号化機能といった高機能性を両立しているQUICは、未来のインターネットを支える通信規格として注目されています。

Facebookでは自社サービスにQUICを導入するにあたり、独自に「mvfst」というソフトウェアをQUIC実装として開発し、まずは内部ネットワークに適用して実験を行うことでノウハウを積んだとのこと。内部ネットワークでの試験を経てQUICがインターネット上の通信に適用された最初の場所は、限定的かつ安全にQUICをロールアウトすることができ、十分に成熟したインフラであるFacebookアプリでの「GraphQLによる動的なAPIリクエスト」でした。


FacebookアプリにQUICを導入したことにより、リクエストエラーや遅延の減少といったいくつかの改善が見られましたが、同時に問題も生じたとのこと。QUICはGraphQLによる動的なリクエストにのみ用いられていたにもかかわらず、画像や動画といった静的なコンテンツのダウンロードエラーやストリームの停止が増加したそうです。

問題の原因はネットワークの帯域測定がTCPに最適化されてたため。Facebookアプリが行うリクエストは、他のリクエストの速度や信頼性に基づいて形式や品質が変動するようになっていましたが、高品質な通信を行えるQUICに対して従来のTCPに最適化されたネットワーク帯域測定を行っていたため、ネットワークの品質を過剰に見積もってしまいエラーが発生していました。


FacebookはQUICを限定的に用いることでこうしたノウハウを積んだ後、Facebookアプリ全体に導入しました。その際に懸念材料となった「mvfstのCPU効率」と「トラフィックの混雑具合を測定するBBRの動作」を検証するため、独自にパフォーマンス測定ツールを開発したとのこと。測定ツールを参考にして問題点を洗い出し、パフォーマンスの改善に努めたとFacebookは語っています。例えばアプリケーションがカーネルにひとかたまりのデータを送り、カーネルがデータサイズを最適化して送信してくれるUDP segmentation offloadを利用したのも、そうした活動のひとつです。

Facebookアプリの全通信にQUICを導入した後のリクエスト速度をパーセンタイルごとにまとめたグラフが以下。パーセンタイルが大きくなるにつれてTCPとQUICの通信速度の差が開いており、効率の良いQUICによって通信速度が底上げされていることがうかがえます。QUICの恩恵を大きく受けたのは動画に関する数値だそうで、バッファイベントが発生する間隔を表すMTBRは22%小さくなり、動画に関するリクエストエラーは8%減少。さらに、動画ストリームが停止してしまう確率は20%減少したとのこと。


記事作成時点では、Facebookのネットワーク上の全トラフィックのうち、75%以上がQUICとHTTP/3によって行われているとのこと。将来的にはハンドシェイクの短縮や暗号化を行える0-RTTの有効化を行い、FacebookアプリだけでなくInstagramアプリにもQUICを適用していく予定だと述べられています。IETFによるQUICの標準化は2021年を予定しており、今後はさらにQUICの普及が進んでいくと予想されます。

この記事のタイトルとURLをコピーする

・関連記事
ウェブを支えるHTTP通信はどのように進化しているのか - GIGAZINE

ウェブサイトの高速化を目指す「HTTP/3」の現時点でのパフォーマンスは? - GIGAZINE

パケットの流れが光って見えるLANケーブルでICMPの流れが見られるムービー - GIGAZINE

自由自在にMACアドレスを変更できるフリーソフト「AnalogX AnonyMAC」 - GIGAZINE

おなじみ「ping」コマンドの生みの親が20年以上前に開発秘話を記したブログ - GIGAZINE

自分の通信が安全にインターネットを通過しているか確認できるウェブサイト「Is BGP safe yet?」をCloudflareが公開 - GIGAZINE

インターネットの心臓部を支える「BGP」をより柔軟に使うにはどうすればいいか? - GIGAZINE

in ソフトウェア,   ネットサービス, Posted by log1n_yi

You can read the machine translated English article here.