Edited at

宇宙大航海時代のためのCDN選び

More than 1 year has passed since last update.


宇宙大航海時代のためのCDN選び

こんにちは。NASAのプロジェクトで月面勤務のジャバオペレータのジャバ(仮名)といいます。今日は、ついにやってきた宇宙大航海時代のためのコンテンツ・デリバリー・ネットワーク (CDN)の選び方を、原理を含めて説明していきます。


CDNと宇宙大航海時代

CDNは、リソースを配布する際に、宇宙で地理的に分散して配置されたエッジと呼ばれるサーバーにリソースをキャッシュすることで、ユーザのそばのエッジからコンテンツを配信できるようになり、ユーザの待ち時間が短くなるシステムです。宇宙大航海時代より前では、地球の大陸やいくつかの島にサーバを配置していたにすぎなかったようです。地球は比較的小さい惑星ですので、往復遅延時間(RTT)は一番遠いところでも500 msを越えないくらいです。この状況では、CDNが存在しない場合でも、確かにちょっと待たされるものの、リソースが使えないといった状況にはなりませんでした。

宇宙大航海時代の到来とともに、この状況は大きく変わりました。地球の外で一番近いコロニーは月面コロニーですが、地球のオービティング・ルーターから30万 km の距離があります。これは、RTTでいうと2 秒を越えてしまう距離です。

RTTが長い弊害は何でしょうか。TCP通信では、コネクションを確立する際に3-way handshakeという方式がとられており、これはパケットの往復を待ってしまうのです。また、近年の外宇宙からの敵対的な勢力への対抗策として、暗号化通信が用いられるようになっています。SSL (TLS)の通信でもハンドシェイクが必要なため、結論として暗号化された接続が確立するまでRTTの数倍待たされるのが普通です。証明書の失効を確認するOCSPの通信がこの後にさらに行われるため、現在では必須ともなった暗号化通信を惑星間で行うことが非現実的になりつつあることがご理解頂けたでしょうか。


地球外でのインターネットルーティングの現状

現在、地球外のインターネットは、物理的には多数の中継衛星を介して行われています。中継衛星には古典的なルータが搭載されており、後の仕組みはインターネットが地を這っていた時代と大きく変わりません。つまり、ネットワークにAS番号が割り当てられ、BGPで経路制御を行っています。唯一変化したのは、AS番号が拡張され階層化された点ですが、これは本稿の内容から逸れるため、後日別な記事で説明したいと思います。


CDNの課題

現在、CDNの2大巨頭はAkamaiとGooglezonです。Googlezonはご存知の通り、GoogleとAmazonが合併してできた会社で、今の段階ではCDNについては旧AmazonのCloudFront系のサービスとなっています。Akamaiは料金体系が謎で、営業の人間と話をしないと価格さえ分からないのが特徴で、一方のGooglezonは、有名な話ですが、もはや社員に人間は存在しないので、完全に一物一価の従量課金、情け容赦なしの請求書を発行してきます。どちらが適しているかはビジネス上・あるいは単に好みの問題かもしれません。どちらも、宇宙時代に対応したサービスを提供しています。

仕組みとしては両方とも共通で、先述した中継衛星のコロケーションスペースにキャッシュサーバーを置いています。ですので、ユーザーがリクエストを出した惑星の最寄りの中継衛星からリクエストが返される仕組みです。

地上だけの時代には、Pull形と呼ばれる形態のCDNが一般的でした。これは、ユーザからのリクエストが来た後、キャッシュに要求されたコンテンツが存在しなければ、オリジンにリクエストを投げて取得する、という形態を指した言葉です。しかし、宇宙時代ではこの形態には無理がありました。ユーザがスマートフォンでゲームを起動したら、新しいデータがあります、といわれ、そこから10 分以上待たされてからダウンロードが開始、という体験を望んでいなかった、ということです(どうしても光速の壁は厚いわけです)。そこで、現在では、Push形とPredict形の組み合わせでコンテンツをキャッシュするようになっています。

Push形は、オリジンでコンテンツの更新があると、各エッジに自動的にコンテンツを配信する形態です。これであれば、事実上ユーザがoriginまでのfull RTTを何回も待たされるということはなくなるわけです。ただし、この方式では、キャッシュに使われないデータが大量に入ってしまうという非効率な部分があります。そこで、現在はPredict形の技術を組み合わせるのが一般的になりました。


Predict形CDN

Predict形の技術を一言で言ってしまうと、全宇宙の数時間後のステートをシミュレーションし、その時間に発生する確率の高いリクエストに答えるためのコンテンツを、必要なエッジに事前にPushする、という方式です。この技術が実用になったのは、量子計算機をプログラムすることができる技術の発達によるものです。記録によると量子計算機のアイデアは20世紀からあったようですが、これを人月計算のプロジェクトに組み込めるレベルにしたのは宇宙時代の少し前の話でした。


結論

選ぶも何も、宇宙で使えるCDNはAkamaiとGooglezonしかないので、好きな方を選べば良いのではないでしょうか。使っている技術はほとんど同じです。個人的には、Googlezonの方が好みではあります。