File: Overlay/Kademlia/Kademlia.ned
C++ definition: click here
The main module of the Kademlia implementation
Author: Sebastian Mies
The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) types are missing from the diagram. Click here to see the full picture.
If a module type shows up more than once, that means it has been defined in more than one NED file.
KademliaModules | Implementation of the Kademlia DHT overlay as described in "Kademlia: A peer-to-peer information system based on the XOR metric" by P. Maymounkov and D. Mazieres, published in "In Proceedings of IPTPS02" |
Name | Type | Description |
---|---|---|
localPort | numeric | base overlay parameters |
debugOutput | bool | enable debug output |
keyLength | numeric | overlay key length in bits |
drawOverlayTopology | bool | draw arrow to successor node? |
hopCountMax | numeric | maximum number of overlay hops |
joinOnApplicationRequest | bool | only join the overlay on application request |
useCommonAPIforward | bool | enable CommonAPI forward() calls |
routeMsgAcks | bool | use RPCs for route messages |
recNumRedundantNodes | numeric | numRedundantNodes for recursive routing |
lookupRedundantNodes | numeric | lookup parameters |
lookupParallelPaths | numeric | number of parallel paths |
lookupParallelRpcs | numeric | number of nodes to ask in parallel |
lookupSecure | bool | true, if all nodes should be identified with a ping |
lookupMerge | bool | true, if parallel Rpc results should be merged |
lookupStrictParallelRpcs | bool | limited the number of concurrent rpcs to parameter parallelRpcs |
lookupUseAllParallelResponses | bool | merge all parallel responses from earlier steps |
lookupNewRpcOnEveryTimeout | bool | send a new RPC immediately after an RPC timeouts |
lookupNewRpcOnEveryResponse | bool | send a new RPC after every response, even if there was no progress |
lookupFinishOnFirstUnchanged | bool | finish lookup, if the last pending RPC returned without progress |
lookupFailedNodeRpcs | bool | communicate failed nodes lookups |
routingType | string | default routing mode (iterative, semi-recursive,...) |
collectPerHopDelay | bool | delay statistics for single hops |
minSiblingTableRefreshInterval | numeric | kademlia parameters |
minBucketRefreshInterval | numeric | bucket refresh delay |
maxStaleCount | numeric | number of timeouts before node removal |
k | numeric | number of paths (size of k-bucket) |
b | numeric | network diameter O(log_{2^(b)}) |
s | numeric | number of siblings |
pingNewSiblings | bool | ping new unknown siblings? |
activePing | bool | ping new neighbors? |
Name | Direction | Description |
---|---|---|
from_udp [ ] | input | gate from the UDP layer |
to_udp [ ] | output | gate to the UDP layer |
from_app | input | gate from the application |
to_app | output | gate to the application |
direct_in | input | gate for sendDirect |
simple Kademlia parameters: // base overlay parameters localPort : numeric, // UDP port for Kademlia messages debugOutput : bool, // enable debug output keyLength : numeric, // overlay key length in bits drawOverlayTopology : bool, // draw arrow to successor node? hopCountMax : numeric, // maximum number of overlay hops joinOnApplicationRequest : bool ,// only join the overlay on application // request useCommonAPIforward : bool, // enable CommonAPI forward() calls routeMsgAcks : bool, // use RPCs for route messages recNumRedundantNodes : numeric, // numRedundantNodes for recursive routing // lookup parameters lookupRedundantNodes : numeric, // number of next hops in each step lookupParallelPaths : numeric, // number of parallel paths lookupParallelRpcs : numeric, // number of nodes to ask in parallel lookupSecure : bool, // true, if all nodes should be // identified with a ping lookupMerge : bool, // true, if parallel Rpc results should // be merged lookupStrictParallelRpcs: bool, // limited the number of concurrent rpcs to parameter parallelRpcs lookupUseAllParallelResponses: bool, // merge all parallel responses from earlier steps lookupNewRpcOnEveryTimeout: bool, // send a new RPC immediately after an RPC timeouts lookupNewRpcOnEveryResponse: bool, // send a new RPC after every response, even if there was no progress lookupFinishOnFirstUnchanged: bool, // finish lookup, if the last pending RPC returned without progress lookupFailedNodeRpcs : bool, // communicate failed nodes lookups routingType : string, // default routing mode (iterative, semi-recursive,...) collectPerHopDelay : bool, // delay statistics for single hops // kademlia parameters minSiblingTableRefreshInterval : numeric, // siblingTable refresh delay minBucketRefreshInterval : numeric, // bucket refresh delay maxStaleCount : numeric, // number of timeouts before // node removal k : numeric, // number of paths (size of k-bucket) b : numeric, // network diameter O(log_{2^(b)}) s : numeric, // number of siblings pingNewSiblings : bool, // ping new unknown siblings? activePing : bool; // ping new neighbors? gates: in: from_udp[]; // gate from the UDP layer out: to_udp[]; // gate to the UDP layer in: from_app; // gate from the application out: to_app; // gate to the application in: direct_in; // gate for sendDirect endsimple