LoginSignup
8
8

More than 5 years have passed since last update.

1.0 CCN Tutorial Demo を試してみた

Last updated at Posted at 2016-05-08

はじめに

必要に駆られて今頃Qiita に登録、せっかくなので初投稿してみる。

CCN とは

CCN はContent-Centric Networking のこと。実装方式や立ち位置によって少し呼称が変わる。
ICN(Information-Centric Networking) とか、NDN(Named Data Networking) とか、
CON(Content Oriented Network) とかとか。

ネットワーク層をロケータベースからID ベースにしようという提案。
現在、ネットワーク層IP をベースとして全ての機器が繋がっている。
つまり、ホストベースで通信している。
が、しかし、昨今のユーザはそういう特定のホストに繋がることは求めてなくて
「コンテンツ」に繋がることを求めているんじゃないの?
アプリケーション層(主にWeb 通信)ではDNS 然り、LB 然り、
コンテンツを意識した動きをしてるよね?
だったら、ネットワーク層もコンテンツ中心の通信をしようよ!
・・・と言う感じの試みかと。

つまり、「IPアドレスベースの通信からコンテンツIDベースの通信に変えよう」
ということです。

コンテンツIDってなんぞ、ですが
これは実装方式によって色々あります。
「コンテンツ」に対してつけるID です。(そのまま)

ネットワークを成すプロトコルもコンテンツベースにしてしまった方が
色々と都合が良くない?という感じですね。
色々の部分はそれこそ色々と研究されてます。
セキュリティの観点からの試みもあります。

「え IP どうするの?」に対しては
IP は下層レイヤのプロトコルになるのだと思います。

この提唱は以下の論文が
世の中で注目を浴びた物の中では最初かなーと思います。

Jacobson, V. Networking named content. 
In Proceedings of the 5th International Conference on Emerging Networking Experiments and Technologies (New York, NY, USA, 2009), CoNEXT ’09, ACM, pp. 1–12.

TCP の輻輳回避アルゴリズムで有名な殿堂入りのVan Jacobson さんですね。
ですので、今回の1.0 CCN Tutorial Demo もPARC が公開しているモノです。

この技術、気づけばぼちぼち商用化(国内でも)もかなり進んでいるようなので
今回投稿してみました。

試験環境

以下の環境を使用しました。

  • VMware Fusion Pro 7.1.3
CPU 1 vCPU
Memory 1 GB
Disk 20 GB
OS Ubuntu 16.04 Server
Package standard system utilities, openssh server

環境構築

CCN Tutorial Demo を行うための環境を構築します。

Package Install

追加で必要なパッケージをインストールします。

$ sudo apt-get update
$ sudo apt-get install gcc make libevent-dev libssl-dev

Software Download

ここからソフトウェアをダウンロードしてきます。
自分の環境に合ったCCN Developer KitTutorial Demo sample application が必要です。

  • CCN Developer Kit
$ wget http://www.ccnx.org/releases/ccnx-1.0-r20150302-x86_64.tgz
  • Tutorial Demo sample application
$ wget http://www.ccnx.org/releases/ccnx-1.0-tutorial-r20150302-all.tgz

Software Install

1.CCN Developer Kit

  • 解凍
$ tar xvfz ccnx-1.0-r20150302-x86_64.tgz
  • 移動
$ sudo mv usr/local/ccn/ /usr/local/

2.Tutorial Demo sample application

  • 解凍
$ tar xvfz ccnx-1.0-tutorial-r20150302-all.tgz
  • インストール
$ cd ccnx-1.0-tutorial-r20150302/
$ ./configure --with-longbow=/usr/local/ccn  \
               --with-libparc=/usr/local/ccn \
               --with-libccnx=/usr/local/ccn \
               --prefix=$HOME/ccn
$ LD_RUN_PATH=/usr/local/ccn/lib make
$ make install

やってみる

デモの内容はサーバプログラムとクライアントプログラムの間で
CCN を経由してコンテンツ(任意のファイル)のやり取りを行う、というものです。

Metis の起動

Metis はCCNx forwarder です。

Metis起動
$ cd ~/
$ /usr/local/ccn/bin/metis_daemon &
Metis起動プロンプト
y-kawamata@ccn000:~$ Copyright 2015 Palo Alto Research Center (PARC), a Xerox company.
All Rights Reserved. Use is subject to license terms.
            __  __        _    _
           |  \/  |  ___ | |_ (_) ___
           | |\/| | / _ \| __|| |/ __|
           | |  | ||  __/| |_ | |\__ \
           |_|  |_| \___| \__||_||___/

metis running port 9695 configuration-port 2001

y-kawamata@ccn000:~$ 

コンテンツの準備

適当なコンテンツをでっち上げます。
このファイル名がコンテンツIDになります。

サーバ用フォルダ作成&コンテンツ作成
$ mkdir Server
$ cd Server/

$ vi hoge_hoge_video 
hoge_hoge_video
y-kawamata@ccn000:~/Server$ cat hoge_hoge_video
 _________________
< Now I am a cock >
 -----------------
    \
     \  /\/\
       \   /
       |  0 >>
       |___|
 __((_<|   |
(          |
(__________)
   |      |
   |      |
   /\     /\
y-kawamata@ccn000:~/Server$
MD5
y-kawamata@ccn000:~/Server$ ls -la
total 12
drwxrwxr-x 2 y-kawamata y-kawamata 4096 May  8 23:31 .
drwxr-xr-x 6 y-kawamata y-kawamata 4096 May  8 23:31 ..
-rw-rw-r-- 1 y-kawamata y-kawamata  194 May  8 23:31 hoge_hoge_video
y-kawamata@ccn000:~/Server$

y-kawamata@ccn000:~/Server$ md5sum hoge_hoge_video
ea3d16e3cd7e0e1f3e274ed5e0f320f2  hoge_hoge_video
y-kawamata@ccn000:~/Server$

サーバの起動

コンテンツを作成した場所のパスを引数にして起動します。

サーバ起動
$ $HOME/ccn/bin/tutorial_Server `pwd`

この時点でサーバのkeystore が生成されます。

tutorialServer_keystore
y-kawamata@ccn000:~/Server$ ls -la
total 16
drwxrwxr-x 2 y-kawamata y-kawamata 4096 May  8 23:34 .
drwxr-xr-x 7 y-kawamata y-kawamata 4096 May  8 23:37 ..
-rw-rw-r-- 1 y-kawamata y-kawamata  194 May  8 23:31 hoge_hoge_video
-rw------- 1 y-kawamata y-kawamata 1662 May  8 23:34 tutorialServer_keystore
y-kawamata@ccn000:~/Server$

クライアントでサーバからコンテンツを取ってくる

別窓を開きます。
同じホスト内でCCN を形成しています。

クライアント用フォルダ作成
$ mkdir Client
$ cd Client/

フォルダの中身が空であることを確認します。

Clientフォルダの中身
y-kawamata@ccn000:~/Client$ ls -la
total 8
drwxrwxr-x 2 y-kawamata y-kawamata 4096 May  8 23:37 .
drwxr-xr-x 7 y-kawamata y-kawamata 4096 May  8 23:37 ..
y-kawamata@ccn000:~/Client$

hoge_hoge_video (=コンテンツID) の取得をCCN 内に要求します。
つまり、この方式ではコンテンツID が既知であることが前提です。

コンテンツ要求
$ $HOME/ccn/bin/tutorial_Client fetch hoge_hoge_video
File 'hoge_hoge_video' has been fully transferred in 1 chunks.

確認

クライアントのフォルダ内にサーバのフォルダ内で作ったコンテンツが
取得されている事を確認します。

クライアントフォルダの中身
y-kawamata@ccn000:~/Client$ ls -la
total 16
drwxrwxr-x 2 y-kawamata y-kawamata 4096 May  8 23:38 .
drwxr-xr-x 7 y-kawamata y-kawamata 4096 May  8 23:37 ..
-rw-rw-r-- 1 y-kawamata y-kawamata  194 May  8 23:38 hoge_hoge_video
-rw------- 1 y-kawamata y-kawamata 1662 May  8 23:38 tutorialClient_keystore
y-kawamata@ccn000:~/Client$
取得したコンテンツ
y-kawamata@ccn000:~/Client$ cat hoge_hoge_video
 _________________
< Now I am a cock >
 -----------------
    \
     \  /\/\
       \   /
       |  0 >>
       |___|
 __((_<|   |
(          |
(__________)
   |      |
   |      |
   /\     /\
y-kawamata@ccn000:~/Client$
MD5の確認
y-kawamata@ccn000:~/Client$ md5sum hoge_hoge_video
ea3d16e3cd7e0e1f3e274ed5e0f320f2  hoge_hoge_video
y-kawamata@ccn000:~/Client$

> y-kawamata@ccn000:~/Server$ md5sum hoge_hoge_video
> ea3d16e3cd7e0e1f3e274ed5e0f320f2  hoge_hoge_video
> y-kawamata@ccn000:~/Server$

さいごに

ざっくりとした説明、ざっくりとした動作確認でした。
これだけだとCDN か何かみたいですね。
ファイル共有とかファイル転送のアプリの様な・・・・。
次回は気が向いたらCCNx とか PyCCN の環境構築の記事でも書いてみようかなと思います。
PyCCN 使ってCCN らしいことをしました!って記事も書いてみたいですね。
何かアイデア無いかな。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8