RendezVous Peer (3)

RendezVous Peer (4)
ソフトウェア特論 (P2P特論)
第11回 / 2005-07-06
告知の管理と検索のシナリオ
パイプ告
知の公開
告知のインデックスを
どこに格納するか? (1)

RendezVous Peer
では、告知のイン
デックス情報を管理
する


告知そのものを管
理するわけではない
adv1 のインデック
スを、R5で管理する
とは限らない
告知のインデックスを
どこに格納するか? (2)



RPV 中の R1 〜 R6 のどれか
でインデックス情報を管理する
R5では、SRDI の関数を用いて、
どこで adv1 のインデックス情報
を管理するか計算する
計算の結果、R2 に決まったとす
る

H(adv1) = R2
インデックス情報の格納 (1)


R5 は R2 にイン
デックス情報を管理
してもらう。
R2だけでなく、両隣
の R1 と R3 にも管
理してもらう。
インデックス情報の
格納 (2)
インデックス情報の格納 (3)

こうすることによっ
て、ネットワークの
構成が変化しても、
告知が発見されや
すくなる

R2 が脱退した場合
など
インデックス情報の格納 (4)


このようにして、すべての告知(のインデッ
クス情報) は、RPV中のどこかの
RendezVous Peer で管理される。
RPV 全体で、ひとつのハッシュ表を管理
する。
インデック
ス情報の
格納 (5)
告知の
探索
R2の脱
退による
影響 (1)
R2の脱退による影響 (2)


adv1 のインデックス
情報は、R2のほかに
もR1, R3 で管理
R2 がいなくなっても、
もとのR3 (現R2) に
よって adv1 を探し出
せる
RPVの
構成が
変化(1)
RPVの構成が変化(2)



H(adv1) = R2 のとき、
R2にインデックス情
報が見つからなかっ
たら、”walk” が起こる。
up 方向と down 方向
がある。
最大ホップ数が決
まっている(はず)。
JXTA Shell と RendezVous
Peer
ここでの目標

JXTA Shell で RendezVous Peer を使っ
てみる。
ひとつめのPeerで
現在の Peer Group を確認する
JXTA>whoami -g
<PeerGroup>NetPeerGroup</PeerGroup>
<Description>default Net Peer Group</Description>
<PeerGroupId>urn:jxta:jxta-NetGroup</PeerGroupId>
JXTA>


whoami -g コマンドで、所属している Peer Group の
情報を出力する。
JXTA では、デフォルトで NetPeerGroup という Peer
Group に参加している
rdvstatus コマンド (1)
JXTA>rdvstatus
 rdvstatus コマンドは、 Rendezvous Status:
______________
現在の PeerGroup
Current configuration : EDGE
の RendezVous
Peer View :
Peer に関する情報を
"JXTA.ORG 120:9701/9700" A P t
[32/20]
(DOWN)
表示するコマンド
Rendezvous Connections :
 この Peer は Edge
JXTA.ORG 120:9701/9700 C : 70794
/ -19206
Peer であることがわ
Rendezvous Disconnections :
かる
[None]
JXTA>
rdvstatus コマンド (2)


Edge Peer は、ひと
つの RendezVous
Peer に接続される
“JXTA.ORG” という
RendezVous Peer
に接続されている
JXTA>rdvstatus
Rendezvous Status:
______________
Current configuration : EDGE
Peer View :
"JXTA.ORG 120:9701/9700" A P t
[32/20]
(DOWN)
Rendezvous Connections :
JXTA.ORG 120:9701/9700 C : 70794
/ -19206
Rendezvous Disconnections :
[None]
JXTA>
Peer Group の作成と参加
JXTA>tomoharu1GroupAdv = newpgrp -n
tomoharu1Group
JXTA>join -d tomoharu1GroupAdv

tomoharu1GroupAdv を作成して、このPeer
Group に参加する
rdvstatus コマンドを再度実行


この Peer は Edge
Peer である。
どの RendezVous
Peer とも繋がってい
ない

いま作ったばかりの
Peer Group だから
JXTA>rdvstatus
Rendezvous Status:
__________________
Current configuration : EDGE
Peer View :
[None]
Rendezvous Connections :
[None]
Rendezvous Disconnections :
[None]
2つめのPeerで
PeerGroup の発見と参加
JXTA>groups -r
# groups - Discovery message sent.
JXTA>groups
group0: name = tomoharu1Group
JXTA>join -d group0

ひとつめのPeerで作った tomoharu1Group を発見し、
参加する
ここでも
rdvstatus コマンドを実行


この Peer は Edge
Peer である。
どの RendezVous
Peer とも繋がってい
ない

まだ、RendezVous
Peer が存在しないか
ら
JXTA>rdvstatus
Rendezvous Status:
__________________
Current configuration : EDGE
Peer View :
[None]
Rendezvous Connections :
[None]
Rendezvous Disconnections :
[None]
ひとつめのPeerを
RendezVous Peer にする
JXTA>rdv -rdv


rdvコマンドは、「RendezVous サービス」
を利用するためのコマンド
-rdv オプションで、この Peer を現在の
Peer Group での RendezVous Peer に
する。
ひとつめのPeerで
rdvstatus コマンドを実行 (1)

この Peer は
RendezVous
である。
JXTA>rdvstatus
Rendezvous Status:
__________________
Current configuration : RENDEZVOUS
Peer View :
[None]
Rendezvous Client Connections :
tomoharu-peer2 C : 1193902
ひとつめのPeerで
rdvstatus コマンドを実行 (2)

この
RendezVous
には、クライア
ントとして
tomoharupeer2 が接続
されている。
JXTA>rdvstatus
Rendezvous Status:
__________________
Current configuration : RENDEZVOUS
Peer View :
[None]
Rendezvous Client Connections :
tomoharu-peer2 C : 1193902
2つめのPeerで
rdvstatus コマンドを実行

この Peer の
RendezVous
Peer として、
tomoharupeer1 (ひとつ
めのPeer) が
表示されてい
る。
JXTA>rdvstatus
Rendezvous Status:
__________________
Current configuration : EDGE
Peer View :
"tomoharu-peer1" A P t [37/28]
(UP)
Rendezvous Connections :
tomoharu-peer1 C : 1162820 /
862820
Rendezvous Disconnections :
[None]
3つめのPeerで
PeerGroup の発見と参加
JXTA>groups -r
# groups - Discovery message sent.
JXTA>groups
group0: name = tomoharu1Group
JXTA>join -d group0

ひとつめのPeerで作った tomoharu1Group を発見し、
参加する
3つめのPeerで
rdv -rpv コマンドを実行してみる
JXTA>rdv -rpv
tomoharu-peer1


-rpv オプションは、この Peer から見た
RendezVous Peer View (RPV) を一覧表
示するコマンド
tomoharu-peer1 (ひとつめのPeer) が表
示された
ひとつめのPeerで
rdvstatus コマンドを実行

この
RendezVous
のクライアント
には
tomoharupeer2 と
tomoharupeer3 がある。
JXTA>rdvstatus
Rendezvous Status:
__________________
Current configuration : RENDEZVOUS
Peer View :
[None]
Rendezvous Client Connections :
tomoharu-peer3 C : 1155672
tomoharu-peer2 C : 875509
3つめのPeerを
RendezVous Peer にする

3つめの Peer
も
RendezVous
Peer になった
JXTA>rdv -rdv
JXTA>rdvstatus
Rendezvous Status:
__________________
Current configuration : RENDEZVOUS
Peer View :
"tomoharu-peer1" A P t [6/2] (UP)
Rendezvous Client Connections :
[None]
ひとつめのPeerで
rdvstatus コマンドを実行

クライアントが
ひとつだけに
なった
JXTA>rdvstatus
Rendezvous Status:
__________________
Current configuration : RENDEZVOUS
Peer View :
"tomoharu-peer3" A P t [81/17]
(DOWN)
Rendezvous Client Connections :
tomoharu-peer2 C : 712844
rdvstatus -v コマンド (1)

Peer ID を含めた詳細な情報が表示され
る。
rdvstatus -v コマンド (2)
JXTA>rdvstatus -v
Rendezvous Status:
__________________
Current configuration : RENDEZVOUS
Peer View :
urn:jxta:uuid59616261646162614A787461503250333F68C9CC8C8A4F1F85259D1
9FEC0ED3A03
"tomoharu-peer3" A P t [12404/5]
(DOWN)
Rendezvous Client Connections :
urn:jxta:uuid59616261646162614A787461503250338E7494D66D464E5A9126BE0
722DA820303
tomoharu-peer2 C : 768571
2つめのPeerで
rdv -rpv コマンドを実行してみる
JXTA>rdv -rpv
tomoharu-peer3
tomoharu-peer1

RendezVous Peer が2つになった