『ハイパフォーマンスブラウザネットワーキング』メモその1

正直に言いまして、ネットワークのパフォーマンス云々の分野は全然好きではありません。「多少遅くたって、使えればそれで満足」と思ってしまうので、自分はとことん技術者向きの人間ではないのだと思います。

が、それでもやっぱりいつまでも避けているわけにはいかないので、そのあたりのお勉強をすることにします。

先日行ってきたMaker Faire 2014でちょっとお安く売っていたので、購入してきました。以下、すみません、完全に自分のためのメモ書きです。

1章 レイテンシ・帯域幅入門

  • アプリケーションにおいて、スピードは「機能」。この機能を実現するために、関連する多くの要素と根本的な制限を理解することが必要。
  • レイテンシ(latency)
    • 送信元がパケットを送信してから宛先が受信するまでの時間
  • 帯域幅(bandwidth)
    • 論理的、もしくは物理的通信路における最大スループット(最大実効速度)
  • クライアントとサーバの間における合計のレイテンシは、以下の4つの遅延の合計。
    • 伝播遅延(伝搬遅延) … メッセージが送信元から宛先まで移動するためにかかる時間。距離を信号の伝搬速度で割ったもの。通常、光の速さに一定の係数を掛けた範囲内に収まる。
    • 伝送遅延(シリアル化遅延) … パケットの全ビットをリンクに載せるまでにかかる時間。パケット長とリンクのデータ転送速度の関数。
    • 処理遅延 … パケットヘッダの距離、ビットレベルのエラー検知、パケットの宛先決定にかかる時間。
    • キューイング遅延 … パケットが処理できる状態になる前にキューで待機する時間。ルータの処理能力を上回る量のパケットが到着する場合、パケットは受信バッファのキューに入る。
  • 送信元と宛先の距離が遠ければ遠いほど、伝播に時間がかかる。到達までに経由するルータの数が多ければ多いほど、伝送遅延と処理遅延が大きくなる。そして、経路上のトラフィック量が多いほど、パケットがバッファ内で遅延する可能性が高くなる。
  • 光の真空中での速さは、毎秒29万km。光の速さと実際に素材を通り抜ける速さの比は、その素材の屈折率と呼ばれる。屈折率が大きいほど、光がその素材の中を遅く移動する。光ファイバを通過する光の速さは、屈折率が約1.5の場合と同等で、毎秒20万km程度。これでも、ニューヨークからシドニー(オーストラリア)の間では、往復で160msかかる(実際には直線距離で通信するわけではないので、200〜300msになる)。
  • 100-200msの遅延がシステムに発生した場合、人間は「遅れ」をしっかりと知覚する。遅れが300msを超えると「反応が鈍い」と報告され、1000msを超えると多くのユーザの意識が切り替わる。ユーザに最高の体験を与え、現在のタスクに維持しておくには、アプリケーションは少なくとも数百msの間にレスポンスを返さなければならない。
  • CDN(コンテンツデリバリネットワーク)サービスは、地球上の様々な場所に配信されたコンテンツを地理的にクライアントに近い場所から配信するため、パケットの伝播時間を大幅に削減できる。
  • 宛先に到達する前、ISP (Internet Service Provider)の基幹ネットワークの中でも一番近いノードに到達するまでに、18-44msのレイテンシが発生する。
  • HD動画のストリーミングには、解像度とコーデックに依存して2-10Mbpsが必要。
  • 光の速さは、最小のレイテンシを追い求める際に、絶対に乗り越えることができない壁。現在の伝播速度は光の速さの約70%であり、これを改善しても最大30%の改善幅しか見込めない。

とりあえずここまで。具体的な数字を知っとくというのはとても大事なことだなあというのを痛感してしまいました(今さら)。