海外からのWebアクセスを高速化する新しいサービスが登場した。米Netli社の「NetLightning」である。日本ではインターネットイシニアティブ(IIJ)が2003年8月7日にサービスを開始した。
海外のマシンから国内のWebサイトにアクセスすると,国内からアクセスするときよりもページの表示に時間がかかる。アクセス元のパソコンとWebサイトが地理的に離れているため,パケットのやり取りに時間がかかるためである。NetLightningは,IPをベースにした独自のプロトコルを使うことにより,これを高速化する。国際的な企業で各国のユーザーにストレスなく情報を届けたい,社内Webポータル・システムに対して各国の社員が高速にアクセスできるようにしたい――。そうした場合に有効なサービスである。
光の速度は超えられない
海外からのWebアクセスで,パケットのやり取りに時間がかかる理由は二つある。一つは,地理的な距離に応じた伝送遅延が発生するため。光の速さでパケットを送信しても,地球を半周するにはそれなりの時間がかかる。
もう一つは,パケットを中継するルーターの数が増えるため。パケットはルーターを経由するたびに中継のための遅延が発生する。また途中の経路が混んでいると遅延はさらに大きくなる。
CDNは世界中にキャッシュを配置
こうした海外からのWebアクセスを高速化するサービスには,これまで「CDN(Contents Delivery Network)サービス」があった。CDNサービスでは,世界中に専用のサーバーを配置し,それぞれキャッシュ・サーバーとして動作させる(図1[拡大表示])。Webサイトに対してブラウザからアクセスがあると,最寄りのキャッシュ・サーバーにアクセスを振り向ける。このためコンテンツに高速にアクセスできる。最大手の米Akamai社の場合,世界に1万5000台の専用サーバーを設置している。
CDNサービスはキャッシュ・サーバーを使った仕組みなので,通常は静的なコンテンツしか扱えない。動的なコンテンツはアクセスのたびに元のWebサーバーで生成する必要があるからだ。動的コンテンツに対応するには別の仕組みが必要になる。
Akamaiの場合,動的なコンテンツに対応したサービスをいくつか用意している。どれも専用サーバーのキャッシュ機能をうまく利用したものである。2003年初めに欧米でサービスを始めた「EdgeComputing」では,Webアプリケーションそのものをキャッシュ・サーバーに配布する。Webページを動的に生成するWebアプリケーションをキャッシュ・サーバー上で動かすのだ。
CDNサービスではDNSの仕組みを使って,ブラウザからのアクセスをキャッシュ・サーバーに振り向ける。具体的にはCDNサービスを使うWebサイトのDNS設定を変える。Webサイトの別名(CNAME)として,CDN事業者のドメイン名(akamai.netなど)配下のサイト名を登録しておく。WebブラウザからWebサイトにアクセスすると,CDN事業者のDNSが問い合わせ元に一番近くて混雑していないキャッシュ・サーバーのIPアドレスを返す。こうしてブラウザは,最寄りのキャッシュ・サーバーにアクセスする。
独自プロトコルで高速化
今回のNetLightningは,これまでのCDNサービスとは異なるアプローチを採る。動的なコンテンツを対象とし,ブラウザと元のWebサイト間の通信そのものを高速化する。
NetLightningでは,ブラウザとWebサイト間の通信を2種類の専用サーバーが中継する。VDC(Virtual Data Center)とAAP(Application Access Point)である(図1[拡大表示])。VDCは世界各地に配置され(現在は13台),CDNサービスと同じようにブラウザは最寄りのVDCを経由してWebサイトにアクセスする。AAPは,Webサイトの近くに配置する。日本ではIIJが東京で運用する。遠距離区間の通信はVDCとAAPの間だけとなり,これをNetLightningは高速化する。
そもそもTCP通信では,1回の通信のためにパケットを何度も行き来させる(図2[拡大表示])。セッションを開始・終了したり,ひと固まりのデータを送信するたびに,相手がきちんとパケットを受信したかどうかを確認する応答パケット(ACK)を求める。応答パケットが届くまでは次の処理に移らない。こうしたやり取りのたびに遅延が発生する。
さらにTCP通信では実際のデータを送信する部分で,ネットワークのふくそうを回避するための「スロースタート」という仕組みを持つ。TCP通信では受信側が許可した範囲で,相手からの確認応答を待たずに連続してパケットを送信できる。しかし送信側は,最初は1個のパケットしか送信しない。途中のネットワークが混雑している可能性があるからである。連続して送信するパケット数は,相手から確認応答を受けるたびに徐々に増やしていく。この仕組みのため,さらに遅延が大きくなる。
NetLightningではこの遅れを回避するために独自プロトコルを使う。詳細は不明だが,確認応答は最低限とし,大量のパケットを最初から連続して送信しているようだ。また,データ圧縮やキャッシュの機能も使っている模様である。