Simple Module Kademlia

File: Overlay/Kademlia/Kademlia.ned

C++ definition: click here

The main module of the Kademlia implementation

Author: Sebastian Mies

Usage diagram:

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.

Parameters:

Name Type Description
localPort numeric

base overlay parameters

debugOutput bool

enable debug output

keyLength numeric

overlay key length in bits

measureNetwInitPhase bool

gather statistics when bootstrapping

drawOverlayTopology bool

draw arrow to successor node?

hopCountMax numeric

maximum number of overlay hops

lookupNumberNextHops 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

useBaseLookup bool

use the base lookup class

iterativeLookup bool

do iterative instead of recursive lookups

stabilizeDelay numeric

kademlia parameters

k numeric

number of paths (size of k-bucket)

b numeric

network diameter O(log_{2^(b)})

s numeric

number of siblings

Gates:

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

Source code:

simple Kademlia
  parameters:
    // base overlay parameters
    localPort : numeric,            // UDP port for Chord messages
    debugOutput : bool,             // enable debug output
    keyLength : numeric,            // overlay key length in bits
    measureNetwInitPhase: bool,     // gather statistics when bootstrapping
    drawOverlayTopology : bool,     // draw arrow to successor node?
    hopCountMax : numeric,          // maximum number of overlay hops

    // lookup parameters
    lookupNumberNextHops : 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
    useBaseLookup : bool,           // use the base lookup class
    iterativeLookup : bool,         // do iterative instead of recursive lookups

    // kademlia parameters
    stabilizeDelay : numeric,       // stabilization delay 
    k : numeric,                    // number of paths (size of k-bucket)
    b : numeric,                    // network diameter O(log_{2^(b)})
    s : numeric;                    // number of siblings

  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
endsimple