CDNの必要性(メリット):高速化


CDNのメリットである高速化について、技術面を解説します。

TCPの特性

Web通信には、TCPというプロトコルが使用されていますが、以下の特徴(弱点)があります:

  • サーバとクライアント間の距離(RTT)により、配信速度が制限されてしまう

具体的には、TCP通信において、送信元は以下のような振る舞い(スライディングウィンドウ)をします:

  1. TCPウィンドウという単位(例:64KB)まで、複数のパケット(コンテンツの一部分)を送信し続ける
  2. 受信確認を受け取ると、TCPウィンドウからその分を減らす
  3. 減った分だけ、新たにパケットを送信する

ここで、受信確認パケットの伝送には時間が必要(光の速度+ルータ等による遅延)であり、遠くなればなるほど非効率になります。これが、TCPの速度制限と呼ばれる部分になります。

具体的な速度制限の目安(Windows XP)は、以下となります:

距離 通信延滞(RTT) 最高速度
東京・沖縄間 0.04秒 12.5Mbps
日米間 0.10秒 5.0Mbps
日欧間 0.20秒 2.5Mbps

TCPの進化

一方、TCPも進化を続けており、最近のOSでは、この速度制限をできるだけ避けるTCPが使用されています。具体的には、TCPウィンドウサイズを自動調整(拡大)するようになり、受信確認の遅延をできるだけカバーできるようになっています。

そのため、以下のような条件においては、前記表よりも高速に配信されるようになっています。

  • コンテンツサイズがある程度大きい
  • 通信品質が安定している

しかし、ショートセッション(小さなファイルの取得等)においては、旧来のTCP特性を引きずっています。また、長距離・広帯域のような特殊な用途においては、TCPのフレームワークを捨て独自のプロトコルが使用されています。

QUIC

一般的なWeb通信においてもTCPの限界が見え始めており、GoogleはQUICというTCPを置き換えるプロトコルを発表し、Chrome等において、(現在、実際に)使用しています。詳細については、別の記事で紹介したいと思います。