10年以上前、Googleの研究者らによって、「More Bandwidth Doesn't Matter (much)」『帯域幅を増やすことはあまり重要ではない (多くの場合)』)という一見異端的なタイトルの論文が発表されました。私たちは、1TBのデータをサンフランシスコからロンドンに飛行機で飛ばす方が、100Mbps接続でアップロードするよりも速いことを示す独自のブログを公開しました。残念ながら、状況は当時からあまり変わっていません。自宅のインターネットプランの契約内容を決める際、インターネットのパフォーマンスの評価に接続の帯域幅を考慮することが多いでしょう。帯域幅が多いほど速度が速くなる、つまりマーケティングが捗ります。この記事では、実際のデータを使用して、帯域幅とネタバレ注意(インターネット接続の速度にレイテンシが影響する)の両方を示しています。最終的に、Cloudflareが、なぜそれほどまでにあらゆる場所のレイテンシを削減することに重点を置いているのか、その理由をご理解いただけると思います。
続くブログの概要は以下の通りです:
ネットワークのパフォーマンスの評価方法には様々なものがある。
パフォーマンスの「良し悪し」はアプリケーションに依存する。あるアプリケーションでは良い数値でも、別のアプリケーションではそのメリットがゼロになる場合もある。
「速度」の数値は誤解を招く可能性がある。その理由は、少なくとも、単一の指標ですべてのアプリケーションのパフォーマンスを正確に表現することはできないためである。
これらの考え方を十分に理解するために、帯域幅とレイテンシについて定義しておく必要があります。帯域幅とは、一度に送信できるデータ量のことです。これは、データを交換する2つのサーバーの通信リンク間の最大スループット(容量)のことです。「ボトルネック」とは、利用できる帯域幅の大きさによって接続が制約されるネットワーク内の場所のことです。通常、これは「ラストワンマイル」と呼ばれる、自宅をつなぐ回線、あるいは自宅に設置されたモデムまたはルーターのいずれかにあります。
インターネットを情報の高速道路に例えると、帯域幅は道路の車線の数と例えることができます。車線の幅が広ければ広いほど、多くのトラフィックが自由に高速道路に乗り入れることができます。帯域幅は、OSのアップデートや大作ゲームのアップデートなど、大きなファイルをダウンロードするのに便利です。私たちは動画をストリーミングするときにも帯域幅を使用していますが、その量はおそらく皆さんが思っているよりも少ないでしょう。Netflixの推奨帯域幅は、4K/Ultra HDでのストリーミング時に15 Mbpsです。これは、1Gbps接続の場合、60本以上のNetflixの番組を4Kで同時にストリーミングすることができることになります!
一方、レイテンシとは、インターネット上でデータが移動するのにかかる時間のことです。こちらも高速道路に例えると、レイテンシは高速道路を走行する車の移動速度にあたります。交通の流れが速ければ、目的地まで早く到着することができます。レイテンシを測定する際は、クライアント(ノートパソコンなど)とサーバーの間をデータのパケットがどのくらいの時間で移動したかをミリ秒数で測定します。実際には、すべてのデバイスにはそれぞれ独立したクロックがあり、一方向だけのレイテンシを測定することは困難であるため、クライアントとサーバー間の往復にかかった時間(RTT)をレイテンシとして測定する必要があります。壁に向かってテニスの練習をする場合、往復のレイテンシはボールが空中にある時間になります。インターネットの光ファイバー「バックボーン」では、データは光ファイバーケーブルの内側のガラスに当たって跳ね返るため、毎秒約20万キロメートルで移動しています。これは速いです!
ゲームでは、ゲーム中のプレイヤーの位置の変化など、小さなデータを素早く他のコンピュータに届ける必要があるため、低レイテンシの接続が重要になります。また、私たちはライブビデオ会議が途切れ途切れになり不快を感じた際には、ますます高レイテンシを意識するようになります。
光がガラスを通過する速度をこれ以上速くすることはできませんが、コンテンツをユーザーの近くに移動してデータが移動する距離を短くすることでレイテンシを改善することができます。これは285都市以上にグローバルに展開する当社であるからこそできることであり、私たちはお客様がインターネットの高速道路に乗ってCloudflareに向かう際の、次の出口付近に存在したいと考えています。
帯域幅、容量、最大スループットという用語はそれぞれ少しずつ異なりますが、その意味は十分に近く、互いに互換性があります。紛らわしいことに最近はインターネットのプランについて話す際に「速度」は帯域幅を意味するようになってきていますが、「速度」は客様のデバイスと接続先のサーバー間のレイテンシを示すものではありません。これについては後で詳しく説明します。今のところ、私たちはインターネットをゲームやストリーミング動画の視聴だけといった使い方ではなく、通常のWebページにもたくさんアクセスしています。
2010年にGoogleが発表した論文の中では、Webページの読み込みをシミュレーションを、接続のスループットとレイテンシを変化させながら行っています。その結果、約5Mbpsを超えるとページの読み込みの向上はみられないとされています。帯域幅を1Mbpsから2Mbpsに増やした場合、ページのロード時間は40%近く改善されますが、5Mbpsから6Mbpsに増やしても、改善は5%未満に留まります。
しかし、レイテンシ(RTT:Round Trip Time)を変化させた場合、ページの読み込み時間が直線的かつ比例的に改善されるという興味深い現象が起こりました。遅延が20ミリ秒短縮されるごとに、ページの読み込み時間が約10%改善されました。
これは実際にどのようなものなのか、実証データで見てみましょう。以下は、MITの2人の研究者による最近の優れた論文に掲載されたグラフです。研究者らはFCCのMeasuring Broadband Americaプログラムのデータを使用して、2010年のシミュレーションと同様の結果を示すグラフを作成しました。その結果が下の図にまとめられています。帯域幅の増加による収穫逓増のポイントが約20Mbpsと高くなったものの、全体的な傾向はまったく同じであることがわかります。
私たちは、自社のCloudflareのデータを使用して、レイテンシに焦点を当てた分析を繰り返しました。次のグラフにまとめた結果は、見慣れたパターンを示しています。私たちは、200ミリ秒のレイテンシを節約するごとに、ページの読み込み時間を1秒以上短縮することができるのです。その関係は、レイテンシが950ミリ秒のときに適用されます。また、レイテンシが50ミリ秒のときにも適用されます。
ページの読み込みに必要な一連のトランザクションの中で、レイテンシが問題となる理由はいくつかあります。Webサイトに接続すると、ブラウザはまず安全な接続を確立し、そのWebサイトを認証してデータが暗号化されるようにします。これを行うプロトコルはTCPとTLS、または QUIC (デフォルトで暗号化されています)です。安全な接続を確立するために必要なメッセージ交換の回数はそれぞれ異なりますが、確立フェーズの「最も重要なのはレイテンシである」という一面はすべてのプロトコルに共通しています。
さらに、暗号化の確立・Webサイトの権限の確認を終えた後、Webページを読み込む際、ブラウザに数十の異なるドメインにまたがる数百にも及ぶさまざまなファイルを読み込むよう求めることがあります。これらのファイルの中には、並行してロードできるものもありますが、順次ロードする必要があるものもあります。これらのさまざまなファイルはすべてブラウザでコンパイルされるため、サーバとの往復の速度によって、ページを組み立てる速度が決まります。多くの場合そのファイルは非常に小さいですが、膨大な数に及びます。
下のグラフは、cnn.comを読み込んだときにブラウザが行う処理の始めの部分を示したものです。最初にハンドシェイクによる接続フェーズがあり、次に301リダイレクトでwww.cnn.comに移動します。このとき、ブラウザがステップ2のメインHTMLページを読み込む前に、まったく新しいハンドシェイクによる接続が必要になります。ブラウザがページを表示するために必要なすべてのJavaScriptファイルについて知ることができるのは、読み込み開始から1秒以上経過した後です。ファイル3~19は、ほとんどが同じ接続で要求されますが、HTMLファイルが完全に配信された後でないと配信されません。ファイル8、9、10は、別々の接続(すべてのハンドシェイクにコストがかかります)で要求されます。ファイル20~27は、すべて以前のファイルでブロックされ、同様に新しい接続が必要です。ブラウザがサーバーから前のファイルを取り戻して実行するまでは、これらのファイルを開始することはできません。このページの読み込みには650のアセットがあり、ブロックはページの読み込みの全過程で発生しています。レイテンシが改善されると、すべてのファイルの読み込みが速くなり、その結果、他のファイルのブロックも早期に解除され、全体が改善されます。
プロトコルは利用可能な帯域幅をすべて使用しますが、ほとんどの場合、帯域幅がすべて消費される前に転送は完了します。そのため帯域幅を増やしてもページの読み込みは速くなりませんが、レイテンシを改善すれば速度は改善します。Early Hintsなどの開発により、ブラウザに依存関係を早期に通知し、サーバーへの事前接続や、厳密に順序付ける必要のないリソースの事前取得を可能にすることでこの問題を解決していますが、現在のインターネット上の多くのWebサイトで、依然としてレイテンシの問題が存在します。
最近、インターネットの研究者は、インターネットの体感品質(QoE)を向上させるために、私たちが得たスループットとレイテンシの関係性について理解することに目を向けています。ブロードバンドインターネット技術諮問グループ(BITAG)の論文では、次のように要約されています:
しかし、現在では、スループットの向上だけでなく、一貫して低いレイテンシが重要であると認識しています。残念ながら、これまで私たちが理解してきたレイテンシの特徴には欠陥があり、レイテンシの測定や指標は、エンドユーザーのQoEと一致していませんでした。
さらに複雑なことに、アイドル状態にあるインターネットへの接続のレイテンシと、ネットワークリソースを共有する多くの接続がある状態で測定されるレイテンシには違いがあり、これを私たちは「作業レイテンシ」または「応答性」と呼んでいます。応答性は、ユーザーがインターネット接続の速度として体験するものであるため、この特殊な待ち時間を理解した上で測定することが重要です。
インターネット接続では、データがバッファ内で遅延すると(アイドルレイテンシが良好でも)応答性が悪くなることがあります。オペレーティングシステムのアップデートなどの大きなファイルをダウンロードする場合、ファイル送信側となるサーバーは、インターネット接続の許容量以上の高いスループットでファイルを送信する可能性があります。それ自体に問題はありません。ファイルの余分なビットは、ファネルの通過順序が回ってくるまでバッファに保管されます。高速道路に車線を増やすことでより多くの車両が走行できるようになり、特にスピードにこだわらないのであれば、良い戦略であると言えます。
例えば、クリスタベルさんがビデオ会議中にニュースのストリームを見ているとします。クリスタベルさんが動画の視聴を開始すると、彼女のブラウザは大量のコンテンツを取得し、またそのコンテンツはコンテンツホストからブラウザまでの途中で様々なバッファに保存されます。そのバッファには、クリスタベルさんが現在参加しているビデオ会議に関するデータパケットも含まれています。ビデオ会議の一部として生成されたデータが動画ファイルと同じバッファにある場合、動画ファイルによってバッファが一杯になり、ビデオ会議のパケットにも遅延が生じます。バッファが大きいほど、ビデオ会議のパケットを待つ時間が長くなります。
ユーザーが自分の接続の長所と短所を理解できるように、最近、当社独自の 「速度」テストにAggregated Internet Measurement (AIM) スコアを追加しました。これらのスコアは、技術的な指標を取り除き、ユーザーが自分の接続が得意とするところと苦手とするところを、平易な言葉で理解できるようにするものです。また、速度テストからより多くのデータを収集し、ページロードタイム(PLT)の追跡や、作業レイテンシの低減との相関関係を確認するのに役立てたいと考えています。速度テストの数値は、近日中に確認できるようになる予定です!
インターネット接続の使い方は人それぞれですが、少しでも速く接続したいという思いは共通しています。ワード文書、音楽、Webサイト、コミュニケーションなど、ますます多くのサービスがクラウドに移行するにつれ、それらのサービスにアクセスするスピードが重要になります。帯域幅も重要ですが、接続のレイテンシ、つまり本当のインターネットの「速度」がより重要です。
Cloudflareでは、よりパフォーマンスの高いインターネットの構築を支援するため、日々活動しています。お手伝いいただけますか?エンジニア職への応募はこちらから。