« 2007年2月 | トップページ | 2007年4月 »

2007年3月の5件の投稿

2007.03.25

[P2P]ブラウザだけで分散ハッシュテーブル(DHT)を体感しよう!

□はじめに
P2Pで注目されている技術として分散ハッシュテーブル(DHT)が挙げられますが、仕組みが複雑なこともあって、理解するのはなかなか大変です。またOverlay WeaverのようなDHTシュミレーターをインストールするのも、ちょっと面倒。。という人も多いと思われます。

そこで、ブラウザだけでDHTを体感できる2つのサイトをご紹介したいと思います。

なお、DHTって何?と思った方は拙著のDHT入門を見て頂くことをお勧めします。

分散ハッシュテーブル入門~その1(初心者向け)
P2Pと分散ハッシュテーブル~その1(ネットワークについてある程度ご存知の方向け)

□FlashでDHT体験?

DHTの有名な方式の一つとしてChordが挙げられます。このChordにおけるルーティングの様子をFlashで動的に図示するサイトがあります。
http://ibaraki.iobb.net/misc/dht/DHT.html

使い方は以下の通りです。

1)Flashで円状に黒い円と青い円が表示されます。どちらの円もノードIDを示します。青い円はそのノードIDにノードが存在する場合を示します。逆に黒い円はそのノードIDにノードが存在していません。

2)次に青い円(この円を円Aとします。)を一つ選らんでクリックします。色が緑に変わることがわかります。つぎにもう一つ青い円(この円を円Bとします。)を選びます。すると、円Aから円Bにルーティングされている様子が図示されます。左上にはルーティングで経由するノードIDが数字で示されます。

3)右下の「Clear Node」を押すと、ノードの再配置が行われます。

このFlashでChordのルーティングイメージがざっくりとわかると思います。なおActionScriptのソース等も公開されています。このActionScriptを改良して更なる情報を表示させたり、ノードが参加、離脱する様を表示させるのも興味深いでしょう。
http://ibaraki.iobb.net/misc/dht.zip

□実際に分散環境で動いているDHTを体感する!

今度は実際に分散環境で動いているDHTをブラウザで体感してみましょう!
今回ご紹介するのはPlanetlabという世界中に広がる分散環境上でOverlay Weaverが動いている様子を表示するサイトです。DHTとしては先ほど同様Chordを使っています。
http://planetlab0.otemachi.wide.ad.jp:3998/

サイトを見ると、まず最初にノードの情報、その後にルーティング情報(Predecessor、Successor List,Finger Table)が見えます。なおルーティング情報にあるリンクを押すと、各ノードの情報を見る事ができます。

これだけだとルーティング情報を参照するだけになりますが、サイトの最後にget,put,removeというフォームがあることに注目してください。これがとても面白いのです。

putとは、あるkey(ノードIDとほぼ同一と考えてください)にvalue(ある値、任意)を格納することを意味します。removeはputの逆でkyeからvalueを削除します。getはあるkeyに対してどのようなvalueがあるか、一覧を出してもらえます。

まずはputをしてみて、それをgetしたときに、入力したvalueの値がきちんと現れるか見てください。興味のある方は様々なkeyでvalueをputをした場合、そのvalueを実際にはどのノードが持っているのか調べてみると良いでしょう。

□終わりに
今回はブラウザだけでDHTを体験できるサイトを紹介しました。DHTに本格的に興味をもあった方はOverlay Weaverを実際にPC内で動かしてみるのも良いでしょう。

| | コメント (1) | トラックバック (0)

2007.03.17

[音楽]ポップスオーケストラ shiffon with THE NEW BREED

私のバイオリンの先生が幹事を勤める、ポップスオーケストラのコンサートが4/8(日)に和光市民文化会館で開かれます。

ポップスオケということで、どなたでも気軽に本格的な演奏を楽しめます。また演奏会の特徴として幼稚園の方も参加可能という事で、小さい子供がいらっしゃる方にも向いているコンサートだと思います。 もちろん私もコンサートに行きます。

「ポップスオーケストラ」 chiffon with The NEW BREED

・日時:4/8(日)
-開場 12:30
-開演 13:30

・場所:和光市市民文化センタ サンアゼリア
 http://www.sunazalea.or.jp/map/index.html

・指揮 栗田 信夫

・ピアノ 友井 久美
・ピアニカ 織野 ナオ

・演奏 chiffon with The NEW BREED
*THE NEW  NREEDはNHKの紅白等テレビ番組でメインに演奏しているプロ楽団です。今回は音楽講師を中心とした弦楽アンサンブル「chiffon」とのコラボ演奏会となっています。

・曲目
 リベルタンゴ/ラプソディー イン ブルー/オペラ座の怪人/
  いつか王子様が/リュートのための古風な舞曲とアリア, 等
(更に詳しい曲目等を知りたい方はお手数かけますtnishita@yahoo.co.jpまでメールをお願い致します)

・チケット価格
- 一般\3.500
- 小学生以下\2,500

・お取扱店  チケットぴあ

詳細内容は以下のリンクをご覧下さい。
http://www.elegantpeople.com/Chiffon_String_Ensemble/

電子チケットぴあでのお求めは以下のリンクからご覧下さい。
http://apx.pia.co.jp/pia/et/onsale/ons_perform_list_ex.jsp?ons_search_mode=ON&ONS_COL_SHEET_NO=162483&P_CODE=244384&ccp=eccjcfZXqr0P0n0

是非とも一度ご検討を♪

| | コメント (0) | トラックバック (0)

2007.03.15

[はてブ]blog記事のはてブのブックマーク数を簡単表示する方法!

□はじめに
最近Javascriptを勉強しているので、その中で考えた応用例を少しずつご紹介します。

記事の右側にある「はてなブックマーク」の欄を見てください。簡単にはてなブックマークに登録できるリンクと記事のブックマーク数が表示している画像があるのがわかります。

(注意!ブックマーク数が0だと画像を表示しません。またはてなシステムの内部キャッシュの関係上ブックマークしている実際の人数と表示される人数にずれがある場合があるとのことです。ですので、実際にはてブ数が表示されるのはBlogにブックマークされてしばらく経ってからのようです。)

実はどちらもJavascriptを使って表示させています。ですので大抵のBlogは今回ご紹介するJavascriptのソースをコピペすれば簡単に実現できます。もちろん、Blogの各種情報記入欄がJavascriptソースの入力に対応している事が必要です。今回はまず記事のブックマーク数を表示させる方法をご紹介します。

□はてブのブックマーク数を表示する方法

「はてな」にはてブのブックマーク数を表示する方法の記事があります。
ブックマーク数を画像で取得する API の公開について

本日はてなブックマークの各エントリーのブックマーク数を画像で取得するための API を公開しました。
http://b.hatena.ne.jp/entry/image/エントリーのURL
という URL を指定すると、そのエントリーのブックマーク数を画像で取得することが可能です。

ということは、エントリーのURLを取得する方法があれば、簡単にブックマーク数がわかることになります。
Javascriptではdocument.URLを使えば、現在表示しているBlogのURLがわかります。
以後がソースです。

興味がある方は是非blogに貼り付けて試してみましょう。

| | コメント (0) | トラックバック (0)

2007.03.10

[P2P]位置情報を数値1つで表す手法「Z-ordering」

□はじめに
DHTやSkipgraphなどの技術が注目されるとともに、位置情報をP2Pで扱いたいという要望がでてきている。だがDHTやSkipgraphは1次元の数値で各ノードが扱う情報範囲を扱うため、位置情報など多次元の情報を扱うのには、当初は向いてないと見られていた。しかしあるテクニックを使うとそれは一発で解消する。それがZ-orderingである。なお、このZ-orderingは位置情報を扱えるP2PミドルウェアPIAXでも採用されている。

□簡単な例
多次元を1次元で表すにはどうすればよいのだろうか?まずここで一例を挙げてみる。
例えば、2次元空間においてx={1、2、~99}、y={1,2、~99}とする。これを1次元で表してみよう。一つの方法は4桁の数値で上2桁をx、下2桁をyとして表示する方法である。

確かにこの方法は2次元情報を1次元の数値で表している。しかし、あるエリアの範囲内、あるいはエリアの近辺の情報だけ取得しようすると、その空間検索アルゴリズムが大変そうなのが直感的にわかるだろう。

□空間充填曲線
そこで考え出されたのが空間充填曲線だ。空間充填曲線とはある空間を曲線で埋め尽くしてしまうような曲線だ。そんなもの本当にあるの?と思ってしまうのだが実は色々と研究されている。その一つがヒルベルト曲線だ。実際のヒルベルト曲線の様子は以下のリンクを見て欲しい。
http://www1.linkclub.or.jp/~zhidao/zlab/computing/fractal.html#hilbert
2次元空間が1次元の曲線で埋まっている事がわかる。
ヒルベルト曲線を使うと空間検索も可能だ。とはいえ、ややアルゴリズム的に複雑なのでもっと単純な方法が求められていた。

□Z-ordering
そこで生まれたのが計算が楽でアルゴリズムも簡単なZ-orderingである。Z-orderingは文字の通り空間をZのように埋め尽くし、一次元の数値で表してしまう技法だ。論より証拠、リンクの資料内の図を見てもらいたい。
空間アクセス法(pdf)

この方法は高速に空間検索が可能なため、一般的に位置情報を扱うのに使われる技法のひとつである。

なお、位置情報を扱う技法としてTreeを用いたR-Treeがあることも述べておこう。これも先ほどの「空間アクセス法」資料に説明がされている。

□位置情報以外にZ-orderingは役に立つか?

Z-orderingは多次元を一次元にするのに役立つ手法である。では位置情報以外で多次元を一次元にするのに便利なことはないのだろうか?ここで私は2つの例を考えてみました。

・意味情報検索:
単語の意味を多次元空間(意味空間)にマッピングすることが研究されている。Z-orderingで単語の意味空間を一次元数値にマッピングする。すると単語の意味が一次元で表示可能となる。
応用例として、雑誌の記事について一番意見の多かった単語と、その単語を意味空間上で表示した数値、雑誌内容を用いてデータベースを作る。すると、その雑誌記事に近い意見を持った雑誌記事を容易に検索する事が可能となる。

・調査情報の整理:
アンケートとしてN項目質問して、かつ1項目あたりM件の選択肢があると、N次元ベクトルでアンケート内容を示すことができる。このN次元ベクトルをZ-orderingで1次元化する。データベースにはZ-orderingで1次元化したアンケートの回答情報とアンケートをした対象品目、アンケート回答者等も入れておく。すると、アンケート回答で近い意見をした人の回答者情報や対象品目を抽出する事が可能と考えられる。

多次元の情報をうまく低次元にすることで、データベースの検索効率を上げたり、P2Pの検索に適用することが可能となるだろう。

| | コメント (0) | トラックバック (0)

2007.03.06

[P2P]P2Pによるbotnetの可能性について

□botnetとは?
最近ウィルスと並んでbotnetが話題になっている。botnetとは簡単に言うと、ある攻撃者からの命令を受け付ける事が可能で、更にそれを実行することができる不正なプログラム(bot)によって形成されたネットワークである。
botnetについては以下のリンクを参考にして下さい。
http://ja.wikipedia.org/wiki/%E3%83%9C%E3%83%83%E3%83%88%E3%83%8D%E3%83%83%E3%83%88
http://www.atmarkit.co.jp/fsecurity/special/76bot/bot01.html

botnetを使うと攻撃者によってスパムメールを送出したり、あるいはDDoS攻撃を起こす事もできます。

□botnetの仕組み
botは攻撃者からの命令を受ける際にIRCサーバを利用すします。IRCサーバとはチャットの際に利用するサーバです。IRCサーバ経由で命令を受けたbotはその命令どおりに実行を行います。スパムメールやDDoS攻撃以外に情報漏えいを引き起こす事もあります。

□P2Pとbotnet
先ほど書いたようにbotnetは一般的にはクライアント=サーバモデルと考えられます。ここでbotnetがP2Pを利用すると攻撃者側にとって色々と都合がよいことがあります。以下に簡単にまとめてみます。

[メリット1]攻撃者用サーバが不要
[メリット2]攻撃者の匿名性が高まる
[メリット3]botを多数収容できるbotnetが構築できる
[メリット4]botnetを通信面で組織が遮断することが難しい

メリット1ですが、P2PですからIRCサーバが不要です。ですから、IRCサーバを設置あるいはクラックする必要がありません。ただし、botがP2P-botnetに新規に参加する場合には、既にP2P-botnetに参加しているbotのIPアドレスを知る必要があります。これを解決するにはbotのプログラム自体に初期接続用ノードIPアドレスを配布するなど、工夫が必要です。もちろん、この他ノードにbotを感染させる際にはIPアドレスリストの最新版を渡す等更なる工夫も可能です。

メリット2ですが、Winnyのようにbotに感染したノードをプロキシ的に扱う事で攻撃者の匿名性を非常に高める事が可能です。高度に発展したP2P-botnetでは攻撃者を特定する事は極めて難しいでしょう。

メリット3ですが、サーバレスということで、スケーラビリティに優れたbotnetを構築することができます。DHTやSkipgraphを使えば単にスケーラビリティに優れたbotnetでなく、botに割り当てられたNode_ID毎に命令を割り振るなど高度な攻撃も可能でしょう。

メリット4ですが、WinnyやShareを通信的に遮断することが難しい事と同じようにP2P-botnetを遮断することが難しいと考えられます。つまり、P2P-botnetを完全になくすには困難を伴います。

botの作者がP2Pに目をつけるのも時間の問題でしょう。

| | コメント (0) | トラックバック (0)

« 2007年2月 | トップページ | 2007年4月 »