広域センサネットワークとオーバレイネットワークに関するワークショップ
言いだしっぺ: 首藤, 松浦, 吉田 (50音順)

発端と意図
• SIProp 勉強会 (主宰 今村さん) Skype チャット

– Y: RDFのP2P検索の話や、時間重要度コンテンツのP2P検索の話、indexの配置の話とテーマは面白いです。
– S: RDF の P2P 検索、産総研で、OW公開前に OW 使ってやってくれた研究員がいたなあ

インテリジェン

– S: 考えてみれば、RPCみたいな機能とか、けっこうトなオーバレイを組むための機能だった。

– S: オーバレイ上での処理って、なんか足回りを作りたいんですがDHT(put/get)時 RPC とかそれこそ使ってデータ再利用とかMapReduce みたいな処理とか シーズ側からの夢はいろいろあります。
– Y: こっちは、データフュージョン層の部品提供とか、話してました。でも、その前にやることがいっぱい。 大量に存在するセンサー情報の間引きとか、特徴素解析とか、履歴からの推定とか、です。コンテキストアウェアな話が多いです。

ほんとの需要と接触– S: 何にせよ、しないと始まらないですねー– S: 純粋研究職だったら、Live E! の人にミーティングをお願い、かなあ 別に、今でもやりゃいいんだけど。松浦さんとこに遊びに行きゃいいだけだ。
– Y: よびだしゃいい。＜あやや– Y: でも、首藤さん一人でなく一緒にやりましょうよ– S: Live E! のオーバレイへの展開をまじめに考える会

発端と意図• メール– To: 松浦さん, 吉田さん
From: 首藤
Subject: Live E! のオーバレイへの展開 (仮) ワークショップ
松浦さん、吉田さん、首藤です。

掲題のような勉強会をやりたいなあ、と考えてます。
僕の動機は、こんなところ↓です。
吉田さんも似た感じだと思います。

• あわよくば OW ベースの仕掛けをほんとに運用する。
• (Live E! から) オーバレイへの要件を深く知る。
オーバレイを発展させるべき方向、新世代ネットワークの要件を考える材料を手に入れる。

じゃんじゃん議論できるように、人数は多すぎず、時間的には 1日のワークショップかな、と想像してます。

• 足まわり (オーバレイ) と応用 (センサネットワーク) がお互いをより深く知って、ますますの発展を (ryThanks !
• 奈良先端の皆様– ローカルアレンジメント– 会場提供, 送迎, 宿泊・お弁当の手配, …

• 松浦さん– 運営のためのウェブシステムや ML の用意– スケジュール調整, プログラム編成, …

• 皆様– 御発表の急なお願い– 遠方からの御足労• NICT, 皆様の所属組織– 後援, 旅費などの支援ネタがある限り、！
うょ
しまり
やん
どん
どん
どん
ど、
くべる
作をネタ！
うょ
しまし事
仕いいPlanetLab の実際
首藤 一幸

テストベッドの必然性• なぜ オーバレイ?

– スケーラビリティ– 頑健性– 管理主体の分散• ファイル共有ソフト, グループウェア, …

– アンダーレイの効率的な利用• オーバレイルーティング, ALM, …

• それなりの規模で実験しないと！
– できれば実ネットワーク上で。

• 要 大規模な実験を行う手段– シミュレータ, エミュレータ– 大規模テストベッド

本題へテストベッド• 大きなクラスタ– 北陸先端 StarBED• PC 680 台– 2002年設置の 512台は 1 GHz Pentium III, RAM 512 MB• Internet につながっている。持ち込み PC もつなげる。
• NICT北陸RCの活動– 無線エミュレータ QOMET, ネットワーク環境(?)エミュレータ Rune, Internet全ASシミュレーション, …

• 関係者経由でお願いすると、使わせてもらえる。

– 東工大 TSUBAME• スパコン。

– 2.4 GHz Opteron (dual core) 8プロセッサ × 639 台 + …

• 産業利用を募集してる。文科省予算 → 企業側の支払いはなし。P2Pアプリの実験もお誘い頂いた。

– Emulab• ネットワーク実験とその管理を行うためのソフトウェア。Internet や無線ネットワークのエミュレーションが可能。

• 広域ネットワーク– JGN2plus とか• 全国規模の高速ネットワーク。アクセスポイントまでの線は参加組織側が準備。
• 今年度、PlanetLab のノードを配置しようとしている。

• 広域に分散したマシン群– PlanetLabPlanetLab• 地球規模テストベッド• 800台以上が登録されている。

– 実際に使えるのは 400台強? ← 2007年 1月の首藤実績。

• 研究プロジェクトごとに Linux の仮想マシンが払い出される。
– 仮想マシン: sliver, その集合: slice– VM と言っても、Linux-VServer による chroot 的な仕掛けなので、軽量。

• 貢献すれば使える。

– 大学・非営利の研究所なら、PC 2台を供出すれば、使える。
– Industrial が使うためには $25,000 / 年〜。その場合 slice は 2つまで。

OpenDHT• 誰でもアクセスできる DHT サービス。

– XML-RPC, Sun (ONC) RPC で put, get できる。

• Bamboo DHT を使って運用されている。
– Pastry ベースのアルゴリズム。

可視化ツールCoral CDN• PlanetLab 上に deploy された CDN。
• 使い方: URL の末尾に .nyud.net を付ける。

2004年 8月 30日の記事

Overlay Weaver• 誰でもアクセスできる DHT サービス。

– として PlanetLab 上で運用。OpenDHT のマネっこ。
– XML-RPC で put, get できる。ライブラリ、ツールも提供。

• 最大 35カ国 418台で稼動。

Overlay Weaver : 学んだこと• 実環境での動作から学ぶことは多い。
– Chord の欠陥 (?) に気づいた。
• predecessor の更新がない。

• PlanetLab はアプリにかなり厳しい環境。
それだけに、育つ。育たざるを得ない。
– 非常に負荷が高い。

• load average 数十は当たり前。

遅延がとても大きい。数秒も普通。
– 到達性が低い。しかも、非対称。
– 信頼性が低い。
–

そのせいもあり、• UDP データグラムの分割 → 破損が起きた??? → アプリの改善– Bamboo / OpenDHT の開発者 Sean Rhea は、このあたりを扱った論文を何本か出してる。
• Churn, 非対称な到達性, DHTへのput/getの時間短縮, …

なぜ PlanetLab ?
• 「Internet 上に分散」している「大規模」なテストベッドであり、各「実験プロジェクトがよく分離」されている。
– Internet 上に分散

• 実ネットワークをまたいだ実験が可能。

– 「それ本当に動くの？」というツッコミにある程度応えられる。
– とはいえ、大学・北米に偏っている、という批判もある。

– 大規模• 実機の台数としては望みうる最大規模。

– 分離• プロジェクト (slice) ごとに仮想マシンの占有。
• 他の利用者にあまり気兼ねなく使える。

– とはいえ、AUP はあるし、リソースを食い過ぎると迷惑。
– 「PlanetLab のノードから DoS 攻撃が！」利用までの手順• 所属組織が PlanetLab に参加• ユーザとしての利用準備• slice の作成・管理• slice へのノードの追加・削除• 実験

所属組織が PlanetLab に参加• paperwork– Princeton U. とやりとり。
– 学科⻑級 (?) のサインが要る。

• 機材を用意– PC 2台以上と PCU• PC: 性能に条件あり。
2006年末: DELL Dimension C521, 14万円
• PCU: Power Control Unit, 遠隔電源制御装置
APC AP7900, 約 5万 5千円• 機材を設定– ノード情報が書き込まれた USB メモリ
or CD-R を準備する。
– PC を起動する。
– ベースとなる Linux がネット越しにガーッと流し込まれる。
– 以降のマシン管理は Princeton U. 側の仕事。

ユーザとしての利用準備• PlanetLab の AUP を読んで、理解する。
– AUP: Acceptable Use Policy• ウェブサイトにて、アカウントを作成• PI が承認。
– PI: Principal Investigator (研究推進者)
PlanetLab の利用者は 3種類:
PI, tech contact, user

• ノードへのログインに使う SSH の鍵を
準備– SSH の鍵ペアを公開鍵を生成し、ウェブから登録する。

slice の作成・維持• slice の作成– ウェブから申請• slice の名前 waseda_○○– PI が承認• Academic の場合、slice は 10 まで。

• slice の維持– 2ヶ月 (未満) ごとに renewalslice へのノードの追加・削除• 追加して 15分かそこら待つと、仮想マシンが起動され、SSH ログインできるようになる。
• 手で数百台を追加するの！？
– 可能。でも、エラく大変。

これまで何十時間費やしたことか。

– 頻繁に、落ちたり復活したりする。
→ 要 メンテナンス• ノード, slice, ユーザ等の管理作業はすべて、ウェブ、RPC (XML-RPC / SOAP) の双方で行える。
– XML-RPC / SOAP の API:
PlanetLab Central API (PLCAPI)– Python 等のライブラリがある。

slice へのノードの追加・削除• スマートな方法– CoMon から稼動ノードの一覧を得る。
• % wget -O nodes.txt“http://comon.cs.princeton.edu/status/tabulator.cgi?table=table_nodeviewshort&format=nameonly&select='
resptime>0’”• ファイル nodes.txt として、ノード一覧が得られる。

– PLCAPI を叩いて、一気に slice に追加する。

• 手元のマシンに PLCAPI (RPC するライブラリ) をインストールしておく。
• % plcsh -h https://www.planet-lab.org/PLCAPI/ -u shudo@ほげほげ
Password: <パスワードを入力>
shudo@ほげほげ connected using password authentication
Type “system.listMethods()” or “help(method)” for more
information.
[shudo@ほげ]>>> node_list = [line.strip() for line inopen(“nodes.txt”)][shudo@ほげ]>>> AddSliceToNodes(“waseda_ow”, node_list)[shudo@ほげ]>>> exit

実験
• あとは ただ、Linux マシンとして使うだけ。
– SSH ログインして使う。

– Fedora 8 ベース。Linux 2.6.22.19。
– yum や rpm コマンドでRPM パッケージを追加・削除できる。

• 数百台を使うのは、それなりに大変。

– ソフトのインストール, 起動 / 停止, 監視, 制御

ツール• ソフトウェア管理– Stork, CoDeploy, …
設定ファイルを書いてほげほげ。
使ったことありません！

• 複数ノードの一括操作– parallel SSH• pssh, pscp, …

–– 対象ホスト名 / IPアドレス一覧をファイルとして与える。
GXP (Grid and Cluster Shell, by 東大 田浦さん) なんかいいんじゃないでしょうか。
– … 僕も昔、汎用のツール (シェルスクリプト集) を書きました。

• PlanetLab 専用、というツールはあまりない。
• 結局、皆、自分でスクリプトを書いてなんとかしている。
– 敷居はなかなか高い。
そりゃ、何十台、何百台を使おうというんですから。

ツール: SSH の準備• ノードへの操作はすべて SSH で行うので…
– ログインごとにパスワードを打たずに済むように• % eval `ssh-agent`% ssh-add ~/.ssh/id_... (秘密鍵のファイル)
Enter passphrase for /home/…:– ログインごとにホストキーを確認されないように• 一度手でログインして「yes」を打っておく。
or ssh –o StrictHostKeyChecking=noOW の場合: ソフトウェア管理• ソフトウェアをインストールするスクリプト ow-setup.sh#!/bin/sh
USER=waseda_ow
スライス名
HOST_FILE=$*
ホスト名一覧の入ったファイル: ホストファイル
OPT=“-O StrictHostKeyChecking=no –l $USER –h $HOST_FILE –t 1200”# copy .bashrc
pscp $OPT .bashrc /home/$USER/# install JDK
pscp $OPT jdk-*.rpm /home/$USER/
pssh $OPT “sudo rpm –Uvh jdk-*.rpm && rm jdk-* && sudo ln –sf/usr/java/jdk1.5.0_15 /usr/local/java”# install Overlay Weaver
pscp $OPT overlayweaver.tar.bz2 /home/$USER
pssh $OPT “rm –rf overlayweaver && tar xjf overlayweaver.tar.bz2”• 出力を元に失敗したノードの一覧を作成し、再度スクリプトを実行。
––

実行時の出力例:% ow-setup.sh nodes.txt
Success on planetlab3.williams.edu:22
Error on onelab03.inria.fr:22
Error on pl-1.hip.fi:22…
grep とか Emacs のキーボードマクロとかを駆使する。

• 全ノードで成功するまで繰り返す。か、どこかであきらめるかする。

OW の場合: ソフトウェア管理• slice にノードを追加した場合はインストール状況を確認するスクリプト
test-installation.sh– #!/bin/sh…
for i in `cat $*`dossh $OPT ${USER}@${i} ls –d /usr/java 2>&1 |fgrep /usr/java > log-${i} &done• ファイルサイズを見ると、インストールされているか否かが判る。
% ls –l log-*-rw-r—r– 1 shudo users 10 2008-07-02 03:43 log-ホスト名• ls の結果を編集することで、インストールし直しのためのホストファイルを得られる。

OW の場合: ソフトウェアの起動・停止• OW を起動するスクリプト ow-invoke.sh– #!/bin/sh
USER=waseda_ow
HOST_FILE=$*
OPT=“-O …
pssh $OPT ‘owdhtshell –a Chord –x –n –p10101 –acl acl.txt –no-upnp > /dev/null
2>&1 &’• 停止するスクリプト ow-kill.sh– #!/bin/sh…
pssh $OPT “killall java”

OW の場合: 監視• プロセスの存在を確認するスクリプト test-process.sh– #!/bin/sh…
for i in `cat $*`dossh $OPT ${USER}@${i} ps auxww | fgrep java >log-{i} 2>&1 &done• ファイルサイズを見ると、プロセスが存在するか否かが判る。
% ls –l log-*-rw-r—r– 1 shudo users 225 2008-07-02 03:43 log-ホスト名• ls の結果を編集することで、起動し直しのためのホストファイルを得られる。

ソフトウェア・プロセス管理: まとめ• シェルスクリプト, SSH, parallel SSH を駆使して– ソフトウェア管理
ow-setup.sh
test-installation.sh– プロセス管理
ow-invoke.show-kill.sh
test-process.sh• スクリプトには、毎度、適切なホスト一覧 (ファイル) を与える。

ソフトウェアや実験に固有の処理• OW の場合、起動後に、オーバレイの構築が必要。

– 全ノードを join させる必要がある。

• 手で制御？ 台数が多いので、現実的ではない。
% telnet planetlab-01.naist.jp 10101…
Ready.
init pub1-s.ane.cmc.osaka-u.ac.jp
contact: 13X.X.XX.XXX:3997

OWのシェルに接続• OW 自体の機能で、各ノードを制御。

– ホストファイルを読んで、各ノードに TCP 接続。
接続先は OW のシェル。
– 与えられたシナリオに従って、ホスト群を制御。
• % owemu –c host_file scenario_file– 実は、分散環境エミュレータの機能拡張。

• (仮想) ノードを起動する代わりに、動作しているノードに TCP 接続する。

まとめ• PlanetLab は生 Linux。

– 使うのはそれなりに大変。生ゆえ、自由度が高い。

• 実 Internet での実験からは、学ぶことが多い。
– アプリが強くなる。というか、ならざるを得ない。

• 実は、実験プロジェクト間の分離がよくなされていることが活用を促進してるのではないか。
– slice の中で何をやろうと、他への影響は小さい。
– 管理ソフトが大事な役割を果たしている。
– cf. そこらの、生の PC クラスタ, StarBED, …

JGN2plus の姿

サイバー関⻄プロジェクト 研究会 (7/2-3) での小林和真 (kazu-k) さんの御講演よく見る NWGN の絵

注目！

研究グループ？

Otemachi (shimojo and esaki)
Sensor network
Live E!
PIAXJGN2plus の姿 下條先生版???

JGN2plus の姿 kazu-k さん版

議論 ？
• センサネットワークの実験を助ける– エミュレータ, シミュレータ– テストベッドの あり方。

• どんな設備 / ソフトがあるといいのか。
Emulab ? StarBED 上でやられてるようなやつ?

• JGN2plus や StarBED 等への提言。
• DNS 的 階層型 分散 DB とオーバレイの比較