|
Kademlia is a distributed hash table for decentralized peer-to-peer computer networks designed by Petar Maymounkov and David Mazières in 2002.〔 *(Kademlia: A Peer-to-peer information system based on the XOR Metric )〕〔http://www.scs.stanford.edu/~dm/home/papers/〕 It specifies the structure of the network and the exchange of information through node lookups. Kademlia nodes communicate among themselves using UDP. A virtual or overlay network is formed by the participant nodes. Each node is identified by a number or ''node ID''. The ''node ID'' serves not only as identification, but the Kademlia algorithm uses the ''node ID'' to locate values (usually file hashes or keywords). In fact, the ''node ID'' provides a direct map to file hashes and that node stores information on where to obtain the file or resource. When searching for some value, the algorithm needs to know the associated key and explores the network in several steps. Each step will find nodes that are closer to the key until the contacted node returns the value or no more closer nodes are found. This is very efficient: Like many other DHTs, Kademlia contacts only nodes during the search out of a total of nodes in the system. Further advantages are found particularly in the decentralized structure, which increases the resistance against a denial of service attack. Even if a whole set of nodes is flooded, this will have limited effect on network availability, since the network will recover itself by knitting the network around these "holes". == System details == The first generation peer-to-peer file sharing networks, such as Napster, relied on a central database to co-ordinate look ups on the network. Second generation peer-to-peer networks, such as Gnutella, used flooding to locate files, searching every node on the network. Third generation peer-to-peer networks use Distributed hash tables to look up files in the network. ''Distributed hash tables'' store resource locations throughout the network. A major criterion for these protocols is locating the desired nodes quickly. Kademlia uses a "distance" calculation between two nodes. This distance is computed as the ''exclusive or (XOR)'' of the two node IDs, taking the result as an integer number. Keys and Node IDs have the same format and length, so distance can be calculated among them in exactly the same way. The node ID is typically a large random number that is chosen with the goal of being unique for a particular node (see UUID). It can and does happen that geographically widely separated nodes—from Germany and Australia, for instance—can be "neighbors" if they have chosen similar random node IDs. ''Exclusive or'' was chosen because it acts as a distance function between all the node IDs. Specifically: * the distance between a node and itself is zero * it is symmetric: the "distances" calculated from A to B and from B to A are the same * it follows the triangle inequality: given A, B and C are vertices (points) of a triangle, then the distance from A to B is shorter than (or equal to) the sum of the distance from A to C and the distance from C to B. These three conditions are enough to ensure that ''exclusive or'' captures all of the essential, important features of a "real" distance function, while being cheap and simple to calculate.〔 Each Kademlia search iteration comes one bit closer to the target. A basic Kademlia network with 2n nodes will only take ''n'' steps (in the worst case) to find that node. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Kademlia」の詳細全文を読む スポンサード リンク
|