この項目では、アルゴリズムについて説明しています。その他の用法については「コード」をご覧ください。
Chordは、分散ハッシュテーブルを実現するアルゴリズムの一つ。P2Pネットワークにおいて、サーバを用いることなく高速にコンテンツの検索、ルーティングを行う手法。 Chordでは、コンテンツのハッシュ値を求める関数にSHA-1を採用するのが一般的である。ネットワークに参加するノードは、SHA-1のハッシュ値の値域 0 ≤ N o d e I D ≤ 2 160 − 1 {\displaystyle 0\leq NodeID\leq 2^{160}-1} を満たす一意な N o d e I D {\displaystyle NodeID} が割り当てられる。 ここで、 n e x t ( x ) {\displaystyle next(x)} という関数を定義する。この関数は、ハッシュ値 x {\displaystyle x} が与えられたとき、値を増加させる方向で次に存在しているノードの N o d e I D {\displaystyle NodeID} を返す。なお、 2 160 − 1 {\displaystyle 2^{160}-1} と 0 {\displaystyle 0} は接続されていると考える。 ネットワークで情報を共有する際には、共有したい情報のハッシュ値を x {\displaystyle x} として N o d e I D = n e x t ( x ) {\displaystyle NodeID=next(x)} を満たす N o d e I D {\displaystyle NodeID} を持つノードが、実際に情報を保持しているノードの位置を示すIPアドレス等の情報を保持する。 また、ネットワークに参加するノードは、自身の N o d e I D {\displaystyle NodeID} を M y N o d e I D {\displaystyle MyNodeID} とした場合、 n e x t ( Z ) {\displaystyle next(Z)} ,ただし Z = M y N o d e I D + 2 i m o d 2 160 ( 0 ≤ i < 160 ) {\displaystyle Z=MyNodeID+2^{i}mod2^{160}(0\leq i<160)} の N o d e I D {\displaystyle NodeID} をもつノードのIPアドレスをルーティングテーブルとして保持する。 共有されている情報を検索する際には、検索したい情報のハッシュ値を y {\displaystyle y} としたとき、 N o d e I D {\displaystyle NodeID} として n e x t ( y ) {\displaystyle next(y)} が割り当てられているノードを各ノードのルーティングテーブルを利用して検索することになる。
アルゴリズム
参考文献
Ion Stoica; Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan (2001). “Chord: A scalable peer-to-peer lookup service for internet applications”. ACM SIGCOMM Computer Communication Review (New York, NY, USA: ACM Press) 31 (4): 149 - 160. doi:10.1145/964723.383071
外部リンク
⇒Chord project Chord を使ってP2Pネットワークを構築するプロジェクト
.mw-parser-output .asbox{position:relative;overflow:hidden}.mw-parser-output .asbox table{background:transparent}.mw-parser-output .asbox p{margin:0}.mw-parser-output .asbox p+p{margin-top:0.25em}.mw-parser-output .asbox{font-size:90%}.mw-parser-output .asbox-note{font-size:90%}.mw-parser-output .asbox .navbar{position:absolute;top:-0.90em;right:1em;display:none}
この項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正
などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。