ノード: DHT ネットワーク上のクライアント。
ピア: 特定のリソースをダウンロードしようとするクライアント。
DHT ネットワークが接続されたグラフであると仮定しますが、他のすべてのノードにアクセスできるノードはありません (DHT ネットワークがオーバーレイするインターネットが完全に接続されているという一般的な信念に反する消費)。
DHT ネットワークにオーバーレイするピア ネットワークは、接続されたグラフのままですか? なんで?
ノード: DHT ネットワーク上のクライアント。
ピア: 特定のリソースをダウンロードしようとするクライアント。
DHT ネットワークが接続されたグラフであると仮定しますが、他のすべてのノードにアクセスできるノードはありません (DHT ネットワークがオーバーレイするインターネットが完全に接続されているという一般的な信念に反する消費)。
DHT ネットワークにオーバーレイするピア ネットワークは、接続されたグラフのままですか? なんで?
Kademlia は、球状の牛が真空状態にあると仮定する抽象的なアルゴリズムです。このホワイトペーパーで説明されている唯一の障害モードは、チャーンと一時的なグラフ パーティションです。非対称到達可能性は考慮されません。
現実の世界で実装された Kademlia は、保証を行いません。すべてがベストエフォートの確率に基づいて行われます。
現実世界での主な関心事は、相互接続されたクラスター A が相互接続されたクラスター B と通信できないノードではありません。NAT とファイアウォールは、そのようなクラスターをかなりの規模で導入しません。それらは、NAT トラバーサル手段がない場合、誰もが一貫して到達できない一連の第 2 級市民を作成し、したがって、誰もが他の人と話すことができるノードである第 1 級市民にのみ接続できます。もちろん、いくつかの特殊なケースが存在しますが、それらはほとんど無関係です。
とにかく、kademlia についてではなく、実際には kademlia のオーバーレイではなく、kademlia から連絡先情報を単にブートストラップする別のネットワークである bittorrent について質問しているため、事態はさらに複雑になります。Bittorrent は、TCP と µTP という 2 つの異なるトランスポート メカニズムで実装でき、クライアントは、TCP、µTP、および Kademlia-via-UDP に対してさまざまなレベルの nat トラバーサル機能をサポートする場合があります。
Kademlia ノードは通常、到達可能ないくつかのノードに bittorrent の連絡先情報を保存します。また、冗長性も備えているため、保存されている連絡先情報が他の誰かに見られる可能性が高くなります。
その連絡先情報に基づいて、bittorrent クライアントは互いに接続を試みることができます。到達可能な bittorrent クライアントがいくつかある限り、それらは直接接続を確立することができ、さらに、到達できないノード間でいくつかの nat トラバーサル手段を試みることができる場合があります。繰り返しになりますが、保証がないため、小さな群れは状況によっては失敗する可能性がありますが、群れが十分に大きくなると、グラフが接続されるようになる確率が圧倒的に高くなります。
ささやかな追加の懸念は、IPv4 対 IPv6 です。一般に、IPv6 はより優れた接続性を提供しますが、すべてのクライアントが ipv6 拡張機能を等しく適切に実装しているわけではないため、原則として同じノード間に優れた接続性を提供するいくつかの v6 エッジが形成されない可能性があります。
ipv4 と ipv6 の DHT は、理論的には独立した DHT ネットワークであることに注意してください。複数の独立したネットワークをどのように調整するかは、基本的にkademliaの範囲外です。