Kademlia DHTを理解する
Hidehiro Nagaoka
DHTとは
入門記事1-7
http://toremoro.tea-nifty.com/tomos_hotline/2005/01/dht.html
http://toremoro.tea-nifty.com/tomos_hotline/2005/01/dht_1.html
http://toremoro.tea-nifty.com/tomos_hotline/2005/01/p2pdht.html
http://toremoro.tea-nifty.com/tomos_hotline/2005/02/p2pdht.html
http://toremoro.tea-nifty.com/tomos_hotline/2005/02/p2pdht_1.html
http://toremoro.tea-nifty.com/tomos_hotline/2005/02/dht.html
http://toremoro.tea-nifty.com/tomos_hotline/2005/02/p2pdht_2.html
スライド
DHT入門
重要なポイント
DHT(Distributed Hash Table、分散ハッシュテーブル)と呼ぶ理由は、データとハッシュ値を対応させた表「ハッシュテーブル」が、複数のノードに「分散」して保存されるから(参考)。
アルゴリズムごとの違いは、キーを写像する論理空間、各ノードが保持する経路表の管理方法、ノードが本来割り当てられているハッシュ値だけでなくその付近のデータを管理する管理方法などがある。この中でも、キーを写像する論理空間の違いによって分類されることが多い。
キーとはコンテンツのメタ情報(多くの場合はファイル名)にハッシュ関数を適用して得たハッシュ値のこと。
SHA-1 Hash関数とは
160bit、16進数で40文字、10進数で48文字(極(ごく)という単位らしい)
https://itchyny.hatenablog.com/entry/2016/12/04/120000
https://ja.wikipedia.org/wiki/命数法
あらゆるハッシュ値が等しい確率で出現する(一様性)
SHA-1の一様性に関する説明見つけられず。この記事で一様性を前提にして色々な期待値を計算しているが、大体あってるので一様として扱っていい?
https://ja.wikipedia.org/wiki/ハッシュ関数#一様性
Kademlia DHTとは
Kadmlia概要
Kademlia 首藤一幸
https://www.kth.se/social/upload/516479a5f276545d6a965080/3-kademlia.pdf
Kademlia 詳細と実装
木構造型分散ハッシュテーブルを用いた P2P システム Kademlia の実装と評価
kBucketとは
https://nazenani-torrent.firefirestyle.net/dht/kBucket.html
Kademlia DHTが使われているところ
https://en.wikipedia.org/wiki/Kademlia#Implementations
Ethereum: nodeを探すプロトコル
BitTorrent: trackerless torrentsに使っている
IPFS
疑問
ノード空間に対してノード数が足りないのはどう割り振るのか
-> コンテンツを保存するとき、キーそのもののノードに保存するわけではなく、近くのk個のノードに保存するのでok
コンテンツを格納するとき、key(ハッシュ値), value(ファイルのメタ情報)をノードに格納するのはわかったが、ファイルの実体はどこに保存するのか
-> ハッシュ値がメタ情報を元に作られるだけで、valueはファイルの実体。コンテンツの所有者は一定時間(例えば24時間)ごとに再発行をする。コンテンツの発行を受けた側のノード(依頼されて保存しているノード)も一定時間(1時間)ごとに再発行する。
参加するときノードキーのどう決めるのか
-> Chordと同様(Chordがどう決めているのかは要リサーチ)
メモ
RTT: round trip times
今後
実装されたコードを読む
他のDHTのアルゴリズムを理解して、差分からより理解を深める
ふ