Progress Report

Progress Report
修士2年
金田 憲二
2015/10/1
全体ミーティング
1
Progress Report
この一ヶ月ぐらいでやったことについて


PhoenixのNaiveな実装
上田さんの修論・関連研究のサーベイ
2015/10/1
全体ミーティング
2
Outline of the Presentation
Overview of Phoenix


API
Execution Example
Implementation of Phoenix


Join/Leave Algorithm
Routing Algorithm
Summary


Related Work
Future Work
2015/10/1
全体ミーティング
3
Background
Peer-to-Peer Systemの普及

e.g.) Gnutella
特徴



多数のノードが計算に参加
ノードが頻繁に参加・脱退
個々のノードが自律的に動作
 decentralized
2015/10/1
全体ミーティング
4
Phoenix
広域並列計算システムのためのフレームワーク

P2Pシステムを簡便に記述するためのライブラリを提供
概要


通信ライブラリ
仮想的なノード番号集合が存在
 例) 0~216-1
 各ノードに分割して割り当てられている
 ノードの参加・脱退によって、分割は動的に変化

仮想ノード番号で宛先を指定してメッセージを送信
2015/10/1
全体ミーティング
5
Interface of Phoenix
phoenix_join()
 ノード番号集合を隣接ノードから譲り受ける
phoenix_leave()
 自ノード担当の仮想ノード番号集合を、他ノードに委譲
phoenix_send(ph_vp_t vp, void * buf, size_t len)
 仮想ノード番号vp宛にメッセージを送信
phoenix_recv(void * buf, size_t len)
 自分宛のメッセージを受信
 自分宛=今現在自分が担当している仮想ノード番号宛
2015/10/1
全体ミーティング
6
Example of Execution (1/2)
broadcastを行うprogram (Figure 1参照)

root nodeの場合
1. 0~15番にメッセージを送信する
2. 暫く待つ
3. メッセージの受信を繰り返す

root node以外の場合
1. Join (隣接ノードから仮想ノード番号集合を受け取る)
2. メッセージの受信を繰り返す

注)root node



2015/10/1
プログラム起動時に利用者が指定
起動時に全ての仮想ノード番号 (0~15)を担当
自ノードがrootかどうかの判定はphoenix_is_root()で行う
全体ミーティング
7
Example of Execution (2/2)
3ノードでの実行結果
rootとして起動
(ノード番号0~15を担当)
> ./run –r
send message to 0
…
send message to 15
Join
Join
> ./run
> ./run
recv message from 0
recv message from 1
…
…
recv message from 7
2015/10/1
recv message from 8
8~15番を委譲
send message from 11
recv message from 12
…
send message from 15
全体ミーティング
12~15番を委譲
8
Other Examples of Execution
Scalable distributed hash table


hashのkeyとノード番号が対応
例) 分散ファイル共有システム
scalable distributed queue?
2015/10/1
全体ミーティング
9
Outline of the Presentation
Overview of Phoenix


API
Execution Examples
Implementation of Phoenix


Join/Leave Algorithm
Routing Algorithm
Summary


Related Work
Future Work
2015/10/1
全体ミーティング
10
Join/Leave Algorithm
ノードの追加・脱退時のアルゴリズム


上田さんの修士論文を少し変更したもの
(Figure 2,3,4参照)
2015/10/1
全体ミーティング
11
Invariants of Join/Leave
Algorithm
アルゴリズム中で常に成り立つ性質


各ノードの仮想ノード番号集合はdisjoint
各ノードの仮想ノード番号集合の和は不変
 ただしjoin, leaveの最中は別
2015/10/1
全体ミーティング
12
Routing Algorithm
メッセージの配送

メッセージをノード番号で指定された宛先に転送する必
要がある
 どのノードがどの仮想ノード番号を担当しているのか?

TCP/IPだけでは任意のノードで通信可能とならない
 例) Firewall, Private IP
Application LevelでRoutingを行う必要がある
2015/10/1
全体ミーティング
13
Distance-Vector Routing (1/3)
Distance Vector Routing


最も基本的なルーティング
今現在の実装
基本的なアイディア

以下の式でshortest pathを計算
d(u,v) = minwはuの隣接ノード{d(u,w) + d(w,v)}
uからvへの最短距離
2015/10/1
隣接ノードwを中継したときのuからvへの
最短距離
全体ミーティング
14
Distance-Vector Routing (2/4)
メッセージの転送方法

ノードuからノードvへのメッセージの転送
 以下の式でminとなる隣接ノードwに転送
d(u,v) = minwはuの隣接ノード{d(u,w) + d(w,v)}
2015/10/1
全体ミーティング
15
Distance-Vector Routing (3/4)
Routing Table

個々のノードはネットワークの全体像を知らない
 自ノードに関する情報のみ把握している

右辺第2項の情報を隣接ノード間で交換
この情報はuは
知っている
この情報はuは知
らない
d(u,v) = minwはuの隣接ノード{d(u,w) + d(w,v)}
2015/10/1
全体ミーティング
16
Distance-Vector Routing (4/4)
欠点

動的なトポロジーの変化への適応が遅い
 ループの検出が遅い


ルーティングテーブルが大きい
隣接ノード全てにコネクションを張らなければい
けない
以上の問題の解決を目指す
2015/10/1
全体ミーティング
17
Landmark Routing (1/4)
利点

ルーティングテーブルの縮小
基本的なアイディア


仮想ノード番号を2b進数で表記
共有するprefixの桁数が増加する方にメッセー
ジを転送
2015/10/1
全体ミーティング
18
Landmark Routing (2/4)
メッセージの転送方式


共有するprefixの桁数が大きくなるほうに転送
hop数はO(log2b N)
 ただしNはノードの数

例)ノード2011から2200へのメッセージの送信
2123
2202
2200
2012
2201
2015/10/1
2203
全体ミーティング
19
Landmark Routing (3/4)
Routing Table

log2b N ×2b
 ただしNはノード数

例)2012のルーティングテーブル
自分とまったく
prefixを共有しない
ノード宛
 ただしb=2として4進数
0***=a
1***=b
21**=d
200*=g
2010=j
2015/10/1
3***=c
22**=e
23**=f
202*=h
203*=i
2011=k
2013=l
全体ミーティング
自分とprefixを1桁
共有するノード宛
自分とprefixを2桁
共有するノード宛
20
Landmark Routing (4/4)
問題


任意のノード間で通信可能であることを仮定
irregularなgraphの場合、必ずしもprefixをより
共有する方へと通信できるとは限らない
2015/10/1
全体ミーティング
21
Landmark + Distance Vector
Routing (1/2)
上田さんの修士論文

landmarkで通信できないところにdistance vector
routing を行う
上田さんのアルゴリズムの細かい所理解できず
とりあえず単純なversionを自分で書き下してみた
2015/10/1
全体ミーティング
22
Landmark + Distance Vector
Routing (2/2)
ルーティングテーブルの縮小


下の式でdistance-vector algorithmを行う
(Figure6,7,8,9参照)
コネクションの削減


定期的にルーティングに使用していないコネクションの
削除
(Figure 10参照)
d(u,Δu(i,j)) = minwはuの隣接ノード{d(u,w) + d(w,Δu(i,j))}
Δu(i,j) : ノードuのi行j列目に対応するノード番号集合
2015/10/1
全体ミーティング
23
Outline of the Presentation
Overview of Phoenix


API
Execution Examples
Implementation of Phoenix


Join/Leave Algorithm
Routing Algorithm
Summary


Related Work
Future Work
2015/10/1
全体ミーティング
24
Related Work
P2Pシステムを簡単に記述するための枠組み

具体的にはdistributed hash tableを提供
 全ノード間で共有されるhash tableが存在
 hash tableはscalableかつfault-tolerant

例) Pastry, CAN, …
2015/10/1
全体ミーティング
25
Pastry
Pastry


計算に参加するノードがHash Tableを共有
基本的なアイディア
 個々のノードにrandomにノード番号を割り当て
 hashのkeyがノード番号で表される
 hashへのアクセスにはlandmark routing
2015/10/1
全体ミーティング
26
CAN (1/4)
CAN (Content Addressable Network)

計算に参加するノードがHash Tableを共有
2015/10/1
全体ミーティング
27
CAN (2/4)
基本的なアイディア

zone
 仮想的なd次元上のtorusが存在
 各ノードに分割して割り当てられている


ノードの参加・脱退によって割り当ては動的に変化
ハッシュテーブルへの操作
 hashのkeyとzone上の座標が対応
 hashへのアクセスにはrouting
2015/10/1
全体ミーティング
28
CAN (3/4)
ノードの追加
15
15
A
8
0
ただしd=2
0
8
15
0
0
A
B
0
2015/10/1
0
A
8
8
15
0
0
A
B
0
8
15
15
B
8
15
C
8
15
C
8
B
8
 ノードの脱退
15
15
0
A
8
A
8
15
全体ミーティング
0
0
8
15
29
CAN (4/4)
メッセージの配送


個々のノードは自分の隣接ノードを把握
目的座標に近づくように隣接ノード間を転送される
 例) Bから (13,13)へのメッセージの転送
(13,13)
15
D
C
A
8
B
0
2015/10/1
0
全体ミーティング
8
15
30
Future Work (1/2)
とりあえず実装の続きをやる


Routingの効率化
インターフェースの整理
 Application Objectの委譲
 etc.
2015/10/1
全体ミーティング
31
Future Work (2/2)
reliableな通信


メッセージの再送
メッセージのreordering
fault tolerance

なんらかの原因によってノード番号集合が欠け
てしまったことの検出・対処
2015/10/1
全体ミーティング
32
Summary
Progress Report


PhoenixのNaiveな実装
上田さんの修論・関連研究のサーベイ
2015/10/1
全体ミーティング
33
References (1/2)
P2P System

CAN
 "A Scalable Content-Addressable Network"
 Sylvia Ratnasamy, et al.
 U.C. Berkeley and AT&T
 SIGCOMM 2001

Pastry
 "Pastry : Scalable, distributed object location and routing
for large-scale peer-to-peer systems"
 A.Rowstron et al.

Microsoft Research
 Middleware 2001
2015/10/1
全体ミーティング
34
References (2/2)
Routing

Landmark Routing
 "Accessing Nearby Copies of Objects in Distributed
Environment"
 C. Greg Plaxton et al.
 SPAA 1997

Distance Vector Routing
 "Introduction to Distributed Algorithm"
 Gerard Tel
 Cambridge Press, 1994
2015/10/1
全体ミーティング
35