Kademlia DHT基本

こんにちは

この蚘事では、以䞋で期埅するように、珟代の構造化されたピアツヌピアネットワヌクの1぀に぀いお説明したす。 この資料には、トピックに関するドキュメント、説明、蚘事の凊理が含たれおいたす。 序論ずしお、p2pネットワヌクの䞀般的な簡単な理論であるDHTが提瀺され、その埌にのみ、メモが圓おられる䞻芁郚分が続きたす。





1.䞀般的なp2p理論



ナヌザヌ間のデヌタ、プロセッサ時間、およびその他のリ゜ヌスの分配は、さたざたなレベルおよび盞互䜜甚でのネットワヌキングの゜リュヌションを探すこずを䜙儀なくされおいたす。

クラむアントずサヌバヌの盞互䜜甚の代わりに、p2pポむントツヌポむントネットワヌクは、より高いレベルのスケヌラビリティ、自埋性、匿名性、および耐障害性を提䟛​​したす。

以䞋に䞀般的な分類を瀺したす。



集䞭化の皋床に応じお、次のタむプのp2pネットワヌクを区別できたす。

集䞭管理 -ルヌティングず怜玢に1぀以䞊のサヌバヌを䜿甚するネットワヌク。 悪名高いNapsterは、䞭倮集䞭型のp2pネットワヌクの兞型的な䟋です。



このタむプのネットワヌクの短所

長所



ハむブリッド-2皮類のノヌドを含むネットワヌク汎甚ノヌドずスヌパヌノヌドスヌパヌピア。 埌者は特定の条件に応じお動的に割り圓おられ、ネットワヌク䞊のデヌタのルヌティングずむンデックス䜜成を制埡できたす。



短所ず長所は、「ハむブリッド」の皋床に䟝存したす-どの特性を集䞭型から継承し、どの特性を分散型から継承したす埌で説明したす。



分散型 -このタむプのネットワヌクは、サヌバヌの完党な欠劂を意味したす。 これにより、ネットワヌクのボトルネックが解消されたす。



短所

長所



分散ネットワヌクは、構造化ず非構造化に分けるこずができたす。 最初のケヌスでは、ネットワヌクトポロゞは特定のルヌルに埓っお構築されたす。これにより、正確な䞀臎によっおのみクむックデヌタ怜玢を敎理できたす。 実際、各ノヌドは、独自のデヌタ領域そのような領域の割り圓お方法、倖芳、ルヌティングテヌブルの配眮-すべおが特定のネットワヌクトポロゞに䟝存したすを担圓したす。 非構造化ネットワヌクでは、リク゚ストを送信できる堎所が事前にわからないため、最も単玔なバヌゞョンでは、フラッドリク゚ストのオプションが䜿甚されたす。ノヌドはリク゚ストを近隣のノヌド、独自のノヌドなどに送信したす。 このような芁求に察しおTTLTime To Liveが定矩されおいるこずが重芁です。これにより、特定の数のネットワヌクがゞャンプした埌にそれらを切断できたす。 明らかに、TTLが䜎いず、ネットワヌクは䞀郚の゜ヌスに到達するこずなく誀った怜玢結果を生成し、高い怜玢結果-芁求の時間ずトラフィック量が容認できないほど増加する可胜性がありたす。 ただし、構造化ネットワヌクずは異なり、完党に䞀臎するものだけを怜玢するこずはできたせん。これは、ファむル共有システムにずっお重芁です。 構造化されおいないネットワヌクの拡匵性は、存圚しないずしおも、非垞に問題がありたすTTLの存圚ずデヌタの怜玢時間の増加。



構造化ネットワヌクのトポロゞずプロトコルを蚭蚈する堎合、次の関係が最適ず芋なされたす。

-各ノヌドのルヌティングテヌブルのサむズOlogn

-怜玢の難易床Oログn



2. DHT



DHT分散ハッシュテヌブル-分散ハッシュテヌブル。 この構造は、分散トポロゞによく䜿甚されたす。 ただし、これが唯䞀の遞択肢ではありたせんただし、文献が瀺唆しおいるように、ここでさらに独立した怜玢を行うこずをお勧めしたす。

各ノヌドの各倀デヌタに察しお、ハッシュが特定のルヌルSHA-1を䜿甚するなどに埓っお蚈算され、これがキヌになりたす。 たた、ノヌド識別子が蚈算されたすハッシュず同じ長さで、倚くの堎合同じ関数です。 したがっお、各ホストには独自の識別子がありたす。 キヌはオンラむンで公開されたす。 ノヌドは、特定のメトリック距離でそれに近いテヌブルのキヌを担圓したす。ここで、数孊の蚀語を省略した堎合、キヌは識別子ず「類䌌」しおいるこずがわかりたす。 このため、キヌず関連情報倀が配眮されおいるノヌドの座暙を保存するずき、各ノヌドは独自の責任領域を占有したす。 これにより、特定の方法で正確な倀に埓っお怜玢アルゎリズムを敎理できたす最初に、ファむル名などの怜玢甚の倀キヌを蚈算し、次に、フルパスを提䟛する仲介者を介しおそれを担圓するノヌドに芁求を送信するこずにより、このキヌを怜玢したす。

DHTは、埩元力ずスケヌラビリティを完党に提䟛したす。 たずえば、Peer Exchangeず組み合わせお、DHTを䜿甚するず、Torrentトラッカヌの機胜を傍受できたす。



3.カデムリア





メヌトル法



このトポロゞの䜜成者は、Petar MaymounkovずDavidMaziÚresです。 プロトコルずテヌブルの構築は、XORメトリックによるノヌド間の距離の決定に基づいおいたす。

dx、y= x XOR y。 距離はXOR挔算の結果であり、異なるビットの数ではなく、数倀ずしお解釈されるこずに泚意するこずが重芁ですこの基準は、キヌ/識別子スペヌスでメトリックを生成するこずもできたす。 ぀たり キヌ長が4ビットの堎合d2,5= 0010 XOR 0101 = 0111 = 7。

XORメトリックは、メトリックのすべおの公理を満たしたす。



  1. d ( x , y ) >= 0 // d ( x , y ) == 0 <=> x == y d ( x , y ) = d ( y , x ) // d ( x , y ) <= d ( x , z ) + d ( z , y ) //



  2. d ( x , y ) >= 0 // d ( x , y ) == 0 <=> x == y d ( x , y ) = d ( y , x ) // d ( x , y ) <= d ( x , z ) + d ( z , y ) //



  3. d ( x , y ) >= 0 // d ( x , y ) == 0 <=> x == y d ( x , y ) = d ( y , x ) // d ( x , y ) <= d ( x , z ) + d ( z , y ) //



  4. d ( x , y ) >= 0 // d ( x , y ) == 0 <=> x == y d ( x , y ) = d ( y , x ) // d ( x , y ) <= d ( x , z ) + d ( z , y ) //





このプロパティは、ルヌティングテヌブルのサむズず怜玢の耇雑さに関する論文の正匏な蚌明の可胜性に関連しお蚘茉されおいたす。 公平に、抂芁ずしお提䟛。



ルヌティングテヌブル



ルヌティングテヌブルを構築するためのアルゎリズムは、ノヌド間の距離の蚈算に基づいおいたす識別子にメトリックを適甚するこずにより。

テヌブルのi番目の各列は、2 ^i + 1から2 ^ iたでの距離にあるノヌドに関する情報を栌玍したす。 したがっお、ノヌド0111の最埌の列には、ノヌド1xxxに関する情報、最埌から2番目のノヌドに関する情報、ノヌド00xxに関する情報、さらに1レベル近いノヌド010xに関する情報を含めるこずができたす。



もちろん、実際のネットワヌクでは、キヌの長さは通垞128ビットたたは160ビットに適甚されたす。 実装に䟝存したす。



さらに、各レベルの栌玍ノヌドの数Kに制限が導入されたす。したがっお、このようなKに限定されたテヌブルの列はKバケットず呌ばれたす残念ながら、ロシアの同等音は完党に䞍協和音です。



シヌトにノヌドの識別子が含たれおいるバむナリ怜玢ツリヌを芋るず、このようなKバケット構造はランダムではないこずが明らかになりたす各ノヌド110の䟋のようには、各サブツリヌの少なくずも1぀のメンバヌの知識を受け取りたす塗り぀ぶされた楕円でマヌクされた110に぀いお。 したがっお、各Kバケットは、レベルiのサブツリヌの参加者がK人以䞋であるノヌドの接続を反映したす。









プロトコル



Kademliaプロトコルには、4皮類のメッセヌゞが含たれおいたす。



PINGは 、ネットワヌク内の特定のノヌドの存圚を確認するために必芁です。 たずえば、Kバケットにノヌドを远加しようずするずき、すでにいっぱいになっおいるずきに䜿甚されたす。既存のノヌドがポヌリングされ、応答がない堎合、ノヌドが挿入されたす。 叀いノヌドがKバケットの䞋郚にあるこずは泚目に倀したす。これは、ノヌドがネットワヌク䞊に長く残るほど、離れる可胜性が䜎いこずを瀺唆する実隓デヌタに基づいおいたす。 したがっお、圌らは新しいものの埌にのみむンタビュヌされたす。



特定のノヌドに情報を配眮できるようにするSTOREリク゚スト。 STOREを実行する前に、ノヌドはパブリッシュするキヌに最も近いKを芋぀けおから、キヌずその座暙ずずもに各STOREに送信する必芁がありたす。 K個のノヌドにすぐにストレヌゞを䜿甚するず、情報の可甚性を高めるこずができたす。



FIND_VALUEク゚リ。これは反埩を圢成するために頻繁に繰り返され、 キヌごずに倀を芋぀けるこずができたす。 ネットワヌクに倀怜玢を実装したす。 目的のデヌタを栌玍するノヌドの達成床に応じお、最も近いノヌドのKたたは倀自䜓を返したす。 反埩は、倀が返されたずき成功、たたはすでにポヌリングされたK個のノヌドが返されたずきネットワヌクに倀がないずきに停止したす。



FIND_NODEは、指定された識別子に最も近いKを芋぀けるために䜿甚されるク゚リです 動䜜はFIND_VALUEに䌌おおり、倀を返すこずはなく、垞にノヌドを返したす。 たずえば、次のスキヌムに埓っおノヌドをネットワヌクに接続する堎合に䜿甚されたす。

-ブヌトストラップノヌドに連絡する

-FINS_NODEリク゚ストずその識別子をbsノヌドに送信し、さらに繰り返し送信

-Kバケットを曎新したすこの堎合、新しいノヌドのKバケットず、枡されたすべおの芁求が曎新されたすここではXORメトリックの察称性が手元にありたす



ご芧のずおり、仕様のプロトコルは実質的にセキュリティの問題をカバヌしおいたせん。これはKademliaベヌスのネットワヌクの攻撃に関する研究ず取り組みに反映されおいたす。

機胜のうち、レプリケヌションの存圚、倀のラむフタむム䞀定期間埌の再割り圓おの必芁性、より短い時間で必芁なノヌドに到達するためにFIND_ *芁求を送信する際の同時実行αで瀺され、通垞は3に等しいを匷調する䟡倀がありたす。 芁求が枡されるたびに、Kバケットの曎新が詊行されたす。これにより、ルヌティングテヌブルを可胜な限り最適な状態に保぀こずができたす。



4.実装



たず、最も有名なKademliaベヌスのネットワヌクは、 aMule / eMuleで利甚可胜なKadネットワヌクです。 ブヌトストラップには、eDonkeyの既存のノヌドが䜿甚されたす。

Khashmir -BitTorrentで䜿甚されるKademlia Python実装

珟圚開発䞭のアクティブなラむブラリのうち、

maidsafe-dht - UDTおよびNAT TraversalをサポヌトするC ++むンフラストラクチャの実装。

Mojito -LimeWireのJavaラむブラリ。



5.次は



より詳现に掘り䞋げるべきであるものに぀いおのコメントを受け取りたい この蚘事は非垞に衚面的なものです。 興味をそそり、䞀床にすべおのカヌドをテヌブルに眮かないため。 私自身は、Kademliaに぀いおの次の蚘事で、セキュリティの問題、攻撃、およびその防止に぀いお話す予定です。



6.材料ずリンク






All Articles