Open2

分散ハッシュテーブルに関するリンク集

j5ik2oj5ik2o

分散ハッシュテーブル(DHT)

https://ja.wikipedia.org/wiki/分散ハッシュテーブル

https://en.wikipedia.org/wiki/Distributed_hash_table

https://yulii.github.io/kademlia-20090616.html

Kademlia

https://en.wikipedia.org/wiki/Kademlia
https://en.wikipedia.org/wiki/Kad_network

https://hazm.at/mox/distributed-system/algorithm/distributed-hash-table/kademlia/kademlia-a-peer-to-peer-information-system-based-on-the-xor-metric/index.html

https://xlattice.sourceforge.net/components/protocol/kademlia/specs.html

首藤先生の解説資料

http://www.shudo.net/article/20040727-Kademlia/shudo-Kademlia.pdf

cooldaemonさんの解説資料

https://www.slideshare.net/cooldaemon/kademlia-presentation

https://tokyo-metro-u.repo.nii.ac.jp/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=7906&item_no=1&attribute_id=18&file_no=1&page_id=30&block_id=164

  • Kademliaの解説と実装 - block-chain.jp

https://block-chain.jp/kademlia/implementation-1/
https://block-chain.jp/kademlia/implementation-2/
https://block-chain.jp/kademlia/implementation-3/

記事中のコード
https://github.com/shinyoshiaki/kademlia-with-webrtc
リファクタリングされた実装がこちら
https://github.com/shinyoshiaki/kad-rtc

  • 木構造型分散ハッシュテーブルを用いた P2P システム Kademlia の実装と評価

https://www.tetras.uitec.jeed.go.jp/files/kankoubutu/j-045-03.pdf

Chord

https://en.wikipedia.org/wiki/Chord_(peer-to-peer)

https://amzn.to/39Jq64F

第5章 ネットワーク層 5.2.11 ピア・ツー・ピア・ネットワークのノード検索 でChordについて解説がある。

Kademlia vs Chord

KademliaはChordよりスケーラビリティがあるらしい。

  • ユビキタスネットワークと分散ハッシュテーブルの構築と評価

https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=44677&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8

DHTの実装

Go版

Kademlia

https://github.com/nictuku/dht
https://github.com/chuckha/dht
https://github.com/mh-cbon/dht
https://github.com/flightonary/kademlia

Chord

https://github.com/arriqaaq/chord
https://github.com/Champii/go-dht

https://medium.com/techlog/chord-building-a-dht-distributed-hash-table-in-golang-67c3ce17417b

Rust版

Kademlia

https://github.com/dtantsur/rust-dht
https://github.com/leejunseok/kademlia-rs
https://github.com/ryankurte/rust-kad
https://gitlab.com/jeffrey-xiao/kademlia-dht-rs

Chord

https://github.com/Benestar/rust-chord

Java版

Kademlia

https://github.com/JoshuaKissoon/Kademlia

Chord

https://github.com/anhallbe/ChordDHT

Scala版

Kademlia

https://github.com/xxtommoxx/kademlia-dht

Chord

https://github.com/allenfromu/Open-Chord-Scala

Erlang

https://ytakano.hatenadiary.org/entry/20080507/1210136628

j5ik2oj5ik2o

分散ハッシュの論文

Model: GPT-4

Junichi KATO (かとじゅん)
分散ハッシュの論文は何を読むといいですか

分散ハッシュに関する論文は数多く存在し、研究者や技術者が様々な技術やアルゴリズムについて議論しています。以下にいくつかの代表的な論文を紹介します。これらの論文は、分散ハッシュに関する基本的な知識を得るための良い出発点となるでしょう。

Ratnasamy, S., Francis, P., Handley, M., Karp, R., & Schenker, S. (2001). A Scalable Content-Addressable Network. In Proceedings of the 2001 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications (SIGCOMM '01).

Stoica, I., Morris, R., Karger, D., Kaashoek, M. F., & Balakrishnan, H. (2001). Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications. In Proceedings of the 2001 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications (SIGCOMM '01).

Rowstron, A., & Druschel, P. (2001). Pastry: Scalable, Decentralized Object Location, and Routing for Large-Scale Peer-to-Peer Systems. In Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms Heidelberg (Middleware '01).

Zhao, B. Y., Kubiatowicz, J. D., & Joseph, A. D. (2001). Tapestry: An Infrastructure for Fault-tolerant Wide-area Location and Routing. Technical Report UCB/CSD-01-1141, U.C. Berkeley.

これらの論文は、主要な分散ハッシュテーブル (DHT) のアルゴリズムである Content-Addressable Network (CAN)、Chord、Pastry、および Tapestry に関する基本的な知識を提供しています。これらの論文を読むことで、分散ハッシュの設計原理や動作方法について理解を深めることができます。また、これらの論文を引用している後続の研究を調べることで、最新の技術動向や発展について学ぶこともできます。

Junichi KATO (かとじゅん)
あなたはわかりやすい設計ができる開発者です。Kademliaをわかりやすく解説してください

Kademliaは、分散型ピアツーピア(P2P)システムのための分散ハッシュテーブル(DHT)アルゴリズムで、効率的なルーティングとノード検索が可能です。Kademliaの主な特徴は、XOR距離を用いたシンプルな構造と低レイテンシでのルーティングです。ここでは、Kademliaの基本的な概念と機能をわかりやすく解説します。

ノードID: Kademliaネットワークの各ノードには、一意のノードIDが割り当てられます。このIDは通常、ハッシュ関数を用いて生成され、一定の長さのビット列となります。

XOR距離: Kademliaでは、2つのノード間の距離をXOR演算によって計算します。ノードID間のXOR演算結果のビット列を距離とみなします。この方法は、数学的に一貫性があり、直感的に理解しやすいです。

ルーティングテーブル: Kademliaノードは、他のノードへの情報をルーティングテーブルに保存します。ルーティングテーブルは、複数のビットレベルに分割されたkバケットという構造を持ちます。kバケットは、ノードIDの各ビットに対応し、距離が近いノードほどバケット内のエントリ数が多くなります。これにより、効率的なノード検索とルーティングが可能になります。

ルックアップ: Kademliaでは、目的のノードIDまたはデータキーを検索する際、ルックアップと呼ばれる手続きを行います。ルックアップでは、近いノードを逐次的に問い合わせることで、目的のノードIDやデータキーを持つノードに辿り着きます。このプロセスは、効率的かつ高速にノード間の通信が可能になります。

データストレージ: Kademliaでは、データはキー-バリュー形式で格納されます。データのキーは、ハッシュ関数を用いて生成されるため、衝突の可能性が低くなります。データは、キーに最も近いノードに格納され、ネットワーク内で冗長性を持たせることができます。

Kademliaは、そのシ分散ハッシュの論文

Model: GPT-4

Junichi KATO (かとじゅん)
分散ハッシュの論文は何を読むといいですか

分散ハッシュに関する論文は数多く存在し、研究者や技術者が様々な技術やアルゴリズムについて議論しています。以下にいくつかの代表的な論文を紹介します。これらの論文は、分散ハッシュに関する基本的な知識を得るための良い出発点となるでしょう。

Ratnasamy, S., Francis, P., Handley, M., Karp, R., & Schenker, S. (2001). A Scalable Content-Addressable Network. In Proceedings of the 2001 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications (SIGCOMM '01).

Stoica, I., Morris, R., Karger, D., Kaashoek, M. F., & Balakrishnan, H. (2001). Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications. In Proceedings of the 2001 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications (SIGCOMM '01).

Rowstron, A., & Druschel, P. (2001). Pastry: Scalable, Decentralized Object Location, and Routing for Large-Scale Peer-to-Peer Systems. In Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms Heidelberg (Middleware '01).

Zhao, B. Y., Kubiatowicz, J. D., & Joseph, A. D. (2001). Tapestry: An Infrastructure for Fault-tolerant Wide-area Location and Routing. Technical Report UCB/CSD-01-1141, U.C. Berkeley.

これらの論文は、主要な分散ハッシュテーブル (DHT) のアルゴリズムである Content-Addressable Network (CAN)、Chord、Pastry、および Tapestry に関する基本的な知識を提供しています。これらの論文を読むことで、分散ハッシュの設計原理や動作方法について理解を深めることができます。また、これらの論文を引用している後続の研究を調べることで、最新の技術動向や発展について学ぶこともできます。

Kademlia

Kademliaは、分散型ピアツーピア(P2P)システムのための分散ハッシュテーブル(DHT)アルゴリズムで、効率的なルーティングとノード検索が可能です。Kademliaの主な特徴は、XOR距離を用いたシンプルな構造と低レイテンシでのルーティングです。ここでは、Kademliaの基本的な概念と機能をわかりやすく解説します。

ノードID: Kademliaネットワークの各ノードには、一意のノードIDが割り当てられます。このIDは通常、ハッシュ関数を用いて生成され、一定の長さのビット列となります。

XOR距離: Kademliaでは、2つのノード間の距離をXOR演算によって計算します。ノードID間のXOR演算結果のビット列を距離とみなします。この方法は、数学的に一貫性があり、直感的に理解しやすいです。

ルーティングテーブル: Kademliaノードは、他のノードへの情報をルーティングテーブルに保存します。ルーティングテーブルは、複数のビットレベルに分割されたkバケットという構造を持ちます。kバケットは、ノードIDの各ビットに対応し、距離が近いノードほどバケット内のエントリ数が多くなります。これにより、効率的なノード検索とルーティングが可能になります。

ルックアップ: Kademliaでは、目的のノードIDまたはデータキーを検索する際、ルックアップと呼ばれる手続きを行います。ルックアップでは、近いノードを逐次的に問い合わせることで、目的のノードIDやデータキーを持つノードに辿り着きます。このプロセスは、効率的かつ高速にノード間の通信が可能になります。

データストレージ: Kademliaでは、データはキー-バリュー形式で格納されます。データのキーは、ハッシュ関数を用いて生成されるため、衝突の可能性が低くなります。データは、キーに最も近いノードに格納され、ネットワーク内で冗長性を持たせることができます。

Kademliaは、そのシンプルさと効率性から、多くの分散型ピアツーピア(P2P)アプリケーションで採用されています。以下に、Kademliaの主な利点をいくつか挙げます。

ルーティング効率: Kademliaでは、各ノードが近いノードの情報をより多く持っているため、効率的なルーティングが可能です。これにより、ネットワーク内で情報を迅速に伝播させることができます。

スケーラビリティ: Kademliaは、大規模なネットワークでも高いパフォーマンスを維持することができます。これは、ルーティングテーブルのサイズが対数的に増加するため、ネットワークの成長に対して効率的に対応できるからです。

ロバスト性: Kademliaでは、データは複数のノードに冗長に保存されるため、ノードの障害や離脱があってもデータの可用性が維持されます。また、ネットワーク内で自動的にデータが再配置されることで、データの耐久性が向上します。

自己組織化: Kademliaネットワークは、ノードの参加や離脱が頻繁に発生しても、自動的に再構成されるため、ネットワークの安定性が保たれます。

総じて、Kademliaは分散ハッシュテーブル(DHT)アルゴリズムとしてシンプルで効率的な設計が特徴であり、多くのP2Pアプリケーションで利用されています。このため、Kademliaの理解は、P2P技術や分散システムの学習において重要なスキルとなります。