CDNのメリットである高速化について、技術面を解説します。
TCPの特性
Web通信には、TCPというプロトコルが使用されていますが、以下の特徴(弱点)があります:
- サーバとクライアント間の距離(RTT)により、配信速度が制限されてしまう
具体的には、TCP通信において、送信元は以下のような振る舞い(スライディングウィンドウ)をします:
- TCPウィンドウという単位(例:64KB)まで、複数のパケット(コンテンツの一部分)を送信し続ける
- 受信確認を受け取ると、TCPウィンドウからその分を減らす
- 減った分だけ、新たにパケットを送信する
ここで、受信確認パケットの伝送には時間が必要(光の速度+ルータ等による遅延)であり、遠くなればなるほど非効率になります。これが、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等において、(現在、実際に)使用しています。詳細については、別の記事で紹介したいと思います。