Compound Module KoordeModules

File: Overlay/Koorde/Koorde.ned

Implementation of the Koorde DHT overlay as described in "Koorde: A simple degree-optimal distributed hash table" by M. Frans Kaashoek and David R. Karger,. published in Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS '03).

koorde: Koorde successorList: ChordSuccessorList

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.

Contains the following modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

ChordSuccessorList

This modul contains the successor list of the Chord implementation.

Koorde (no description)

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

Unassigned submodule parameters:

Name Type Description
koorde.debugOutput bool

enable debug output?

koorde.stabilizeDelay numeric

number of seconds between two stabilize algo calls

koorde.hopCountMax numeric

maximal number of hops

koorde.keyLength numeric

overlay key length

koorde.joinOnApplicationRequest bool

only join the overlay on application request

koorde.useCommonAPIforward bool

enable CommonAPI forward() calls

koorde.collectPerHopDelay bool

delay statistics for single hops

koorde.routeMsgAcks bool

use RPCs for route messages

koorde.routingType string

default routing mode (iterative, semi-recursive,...)

koorde.recNumRedundantNodes numeric

numRedundantNodes for recursive routing

koorde.lookupRedundantNodes numeric

number of next hops in each step

koorde.lookupParallelPaths numeric

number of parallel paths

koorde.lookupParallelRpcs numeric

number of nodes to ask in parallel

koorde.lookupSecure bool

true, if all nodes should be identified with a ping

koorde.lookupMerge bool

true, if parallel Rpc results should be merged

koorde.lookupStrictParallelRpcs bool

limited the number of concurrent rpcs to parameter parallelRpcs

koorde.lookupUseAllParallelResponses bool

merge all parallel responses from earlier steps

koorde.lookupNewRpcOnEveryTimeout bool

send a new RPC immediately after an RPC timeouts

koorde.lookupNewRpcOnEveryResponse bool

send a new RPC after every response, even if there was no progress

koorde.lookupFinishOnFirstUnchanged bool

finish lookup, if the last pending RPC returned without progress

koorde.lookupFailedNodeRpcs bool

communicate failed nodes

koorde.stabilizeRetry numeric

retries before neighbor considered failed

koorde.joinRetry numeric

number of join retries

koorde.joinDelay numeric

time interval between two join tries

koorde.successorListSize numeric

maximal number of nodes in successor list

koorde.deBruijnListSize numeric

maximal number of nodes in de Bruijn list

koorde.shiftingBits numeric

number of bits concurrently shifted

koorde.deBruijnDelay numeric

number of seconds between two de Bruijn algo calls

koorde.fixfingersDelay numeric

relic from Chord

koorde.aggressiveJoinMode bool

use modified (faster) JOIN protocol

koorde.extendedFingerTable bool

use the extended finger table?

koorde.numFingerCandidates numeric
koorde.proximityRouting bool

use proximity routing

koorde.drawOverlayTopology bool

draw arrow to successor node?

koorde.useOtherLookup bool

deBruijnRetry : numeric, // number of de Bruijn retries resetDeBruijnNode: numeric,

koorde.useSucList bool

flag which is indicating that the optimization using the successorlist is enabled

koorde.localPort numeric

UDP port for Koorde messages

koorde.mergeOptimizationL1 bool

enable merge optimization OPL1

koorde.mergeOptimizationL2 bool

activate merge optimization OPL2

koorde.mergeOptimizationL3 bool

activate merge optimization OPL3

koorde.mergeOptimizationL4 bool

activate merge optimization OPL4

Source code:

module KoordeModules
    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

    submodules:
        koorde: Koorde;
            display: "p=60,60;i=block/circle";
        successorList: ChordSuccessorList;
            display: "p=136,60;i=block/table";
    connections nocheck:
        from_udp --> koorde.from_udp++;
        to_udp <-- koorde.to_udp++;
        from_app --> koorde.from_app;
        to_app <-- koorde.to_app;

endmodule