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
© Copyright 2024 ExpyDoc