2012-04-21 10 views

答えて

9

主な理由は、以前に連絡をとったことのない多くのノードを迅速に照会し、ルックアップ中に再び表示されないことがあるということです。

Kademliaルックアップは反復的です。つまり、リクエストは転送されません。フォワーディングDHTは、長期にわたるTCP接続により適しています。

I.e.トラフィックの大きな塊は、潜在的に数百万に及ぶネットワークのノード間の要求と応答の短命の交換からなる。数千のTCP接続を迅速に確立するためのオーバーヘッドは非常に大きなものになります。

5

なぜUDPですか?なぜなら、シンプルで、効果的で、低コストのプロトコルです。パッケージの配送を保証するものではなく、一定の接続を確立する必要はありません。これらの機能はすべて、複数の受信者への高速データ配信に適しています。それだけでP2Pアプリケーションに必要なすべてです。

Kademliaのの設計仕様書からСitation:

Kademliaののデザイナーを考慮に代わりUDPまたは複数のIPアドレスを持つKademliaのノードの可能性のIPv6アドレスやTCP/IPの使用をとっているように見えません。

3

私はこの製品を使用していないことを認めなければなりませんが、これを調べると私はこれに答えることができます。

最終的に一貫性のあるシステムのようです。それはまた、高性能システムと思われる。これを考えると、udpはうまくいくでしょう。 tcpのようなハンドシェイクはありませんので速いです。また、是正措置もあり、プロトコルの可能性のある破損が処理されます。

2

私たちのバージョンのKademlia(OpenKad)は、TCPまたはUDPのいずれかを使用できます。

Kademliaは高度なルーティングプロトコルであり、両方のトランスポートレベルプロトコルで同じように動作します。 Kademliaデプロイメントでのルックアップ時間は、パケットやタイムアウトの失敗による障害のため、あまり良くありません。だから、パフォーマンスは最善の答えではありません。

0

これは多くの議論をもたらす可能性が高いとわかっていますが、UDPは特に信頼性が高くないように設計されておらず、信頼性の高い機能が不足しています。 UDPやTCPのルック・アンド・フィール(look and feel)は非常によく似ていますが、実際には比較できません。 TCPはほとんどのトランスポート関連の問題を処理するように設計されています。ここでは、UDPはポートヘッダーとチェックサムを基礎IPパケットに付加するだけです。

もちろん、両方のプロトコルを構築して拡張することができます。 UDPを拡張するのは通常ではなく、という正しい解決策です。なぜなら、TCPは一般的にネットワーク上で必要なすべてを処理するからですが、TCPの接続モデルがあまりにも制限されている場合がほとんどです。 TCPは基本的に2つのエンドポイント間で排他的な1対1のパイプをエミュレートするように設計されているため、p2p接続ではこれが当てはまります.p2p接続では一般的に全般的に多くの性質があります。

長いストーリーを短くするには、UDPに「信頼性」を追加するか、オールトゥオールのTCP実装を作成することで、この時点で「ホイールを再構築」することになります。

あなたの疑問に答えるために(私がなぜKademliaのUDPであるのか)、なぜUDPに(TCPを使用しない)理由が実際に説明されているとは思わないので、私の推測によれば、著者は、UDP上に構築することは、TCPを、それが特に設計されていない方向に伸ばそうとするよりも、柔軟性を増すという意見であった。言い換えれば、実用的にどのような形の機能も欠いているlibに追加することで、別のものの既存の機能を回避したり伸ばしたりすることができます。

関連する問題