角川インターネット講座4「コンピューターがネットと出会ったら モノとモノがつながりあう世界へ」というのを読んでいた。 編者はTRONで有名な坂村健氏。
この中の一章で、通信の識別子を場所ではなくコンテンツとする技術について紹介があった。 ICNやCCNといった名前であるそうだ。
もともとIPFSに興味があったりして、これも気になったので調べてみた。
ICN/CCNとは
それぞれを略さずにいうと
ICN: Information Centric Networking CCN: Content Centric Networking
となる。
どちらも目指すところは似ているが、概念というよりかは具体的な実装までスコープにいれた研究プロジェクトの名称となっている。
CCNはアメリカ主導のプロジェクトでの呼び方、ICNがヨーロッパ中心の研究プロジェクトであるそうだ。
ただ、コンテンツ志向のネットワーキングという概念のことを表すときもICNという言葉を使うことがあるそう。(CCNはより具体的なプロジェクト、一実装の呼び名として使われている)
この研究プロジェクトがうまれた理由を理解するには、今のIPベースのインターネットの問題点からはじめよう。
TCP/IPのインターネット
TCP/IPをベースとするインターネットは、情報を「場所」を指定することでアクセスするようになっている。
今ブラウザに表示されているURLは、簡単に言うと③④⑤⑥でサーバーの場所を指定して、⑦⑧で目的のファイルのそのサーバー内での保存場所を指し示すようなものになっている。
実際に今のWebサイトはほとんど動的にコンテンツが組み立てられるので、実際にはファイルの置き場所ではないわけなのだが、URLの歴史的な意味はそうなっている。
インターネットの通信は、手元のPCから家のルーターを通って自分が契約しているプロバイダの持っているすごいルーターまでは経路がほとんど決まっている。
しかし、アクセス先のコンテンツはきっと自分が契約しているプロバイダの管理するネットワークにはない。
そこで、そこから先「自律システム」(≒プロバイダごとのネットワーク)をまたいだ通信が起きるわけだが、ここから先はどんなルートでアクセスが起きるかはわからない。
(詳細はネットワークスペシャリスト試験の勉強でもしてみよう)
ただどんなルートを通るかはわからないが目的の場所にアクセスするという仕組みになっている。 インターネットがもともと軍事技術、核戦争によって通信経路が各所で分断されても生きている基地同士は通信できるような技術をもとめて生まれたことは有名だ。 それはこの自律システム間の通信経路が動的にかわることに生かされている。
昔のインターネットは、さまざまな人がさまざまな通信先につながることを前提としてつくられているといってもよい。
しかしYoutubeやAmazon、Netflixのような巨大コンテンツプロバイダーが登場する。 世の中のほとんどのネットワークトラフィックが一部のサービス事業者に集中するようになる。 そうするとNetflixのサーバーのための回線がとんでもなく太いものじゃないといけなくなる。
そこで今のインターネットでは、各サービス事業者がキャッシュサーバーやCDNといった仕組みを使って対処している。
ICN/CCN
一方で、ICN/CCNはコンテンツの取得を場所ではなくコンテンツ中心に据えてみるとどうだろうか?と考える。
そうすれば、コンテンツの保管場所とは無関係にコンテンツ自体が基礎的なプロトコルのレベルで分散して配置することができる。
コンテンツの識別子も場所ではなくコンテンツそのものになる。
各ネットワーク機器の役割が、「この場所管理してる?」→「Yesならその場所にパケットを転送、Noなら次のネットワーク機器にパケットを転送」から「このコンテンツもってる?」→「Yesならそのコンテンツを返信、Noなら次のネットワーク機器にリクエストを転送」と変化する。
またキャッシュやCDNみたいな仕組みがプロトコルそのものに組み込まれていて、各ネットワーク機器が最近人気のコンテンツについてはキャッシュするようになる。 このまえのAbemaで生中継していたワールドカップみたいな同時に極端にアクセスが多いような場合には特に有効なはずだ。
WinnyのP2PオーバーレイネットワークはIP上に仮想的にこういった仕組みを実現していた。それを各ハードウェアのレベルで最適化して実現しようというもの、というような理解をしてもそれほど間違ってはいないと思う。