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).
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.
ChordSuccessorList | This modul contains the successor list of the Chord implementation. |
Koorde | (no description) |
Name | Type | Description |
---|---|---|
debugOutput | bool | enable debug output |
measureNetwInitPhase | bool | gather statistics when bootstrapping |
useCommonAPIforward | bool | enable CommonAPI forward() calls |
iterativeLookup | bool | do iterative instead of recursive lookups |
collectPerHopDelay | bool | delay statistics for single hops |
useNextHopRpc | bool | use RPCs for route messages |
joinOnApplicationRequest | bool | only join the overlay on application request |
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 |
lookupFailedNodeRpcs | bool | communicate failed nodes |
keyLength | numeric | overlay key length in bits |
hopCountMax | numeric | maximum number of overlay hops |
drawOverlayTopology | bool | draw arrow to successor node? |
localPort | numeric | UDP port for Koorde messages |
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 |
Name | Type | Description |
---|---|---|
koorde.stabilizeDelay | numeric | number of seconds between two stabilize algo calls |
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.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 |
module KoordeModules parameters: debugOutput : bool, // enable debug output measureNetwInitPhase : bool, // gather statistics when bootstrapping useCommonAPIforward : bool, // enable CommonAPI forward() calls iterativeLookup : bool, // do iterative instead of recursive lookups collectPerHopDelay : bool, // delay statistics for single hops useNextHopRpc : bool, // use RPCs for route messages joinOnApplicationRequest : bool, // only join the overlay on application request 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 lookupFailedNodeRpcs : bool, // communicate failed nodes keyLength : numeric, // overlay key length in bits hopCountMax : numeric, // maximum number of overlay hops drawOverlayTopology : bool, // draw arrow to successor node? localPort : numeric; // UDP port for Koorde messages 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; parameters: debugOutput = debugOutput, // enable debug output measureNetwInitPhase = measureNetwInitPhase, // gather statistics when bootstrapping useCommonAPIforward = useCommonAPIforward, // enable CommonAPI forward() calls iterativeLookup = iterativeLookup, // do iterative instead of recursive lookups collectPerHopDelay = collectPerHopDelay, // delay statistics for single hops useNextHopRpc = useNextHopRpc, // use RPCs for route messages keyLength = keyLength, // overlay key length in bits joinOnApplicationRequest = joinOnApplicationRequest, // only join the overlay on application request lookupRedundantNodes = lookupRedundantNodes, // number of next hops in each step lookupParallelPaths = lookupParallelPaths, // number of parallel paths lookupParallelRpcs = lookupParallelRpcs, // number of nodes to ask in parallel lookupSecure = lookupSecure, // true, if all nodes should be identified with a ping lookupMerge = lookupMerge, // true, if parallel Rpc results should be merged lookupFailedNodeRpcs = lookupFailedNodeRpcs, // communicate failed nodes hopCountMax = hopCountMax, // maximum number of overlay hops localPort = localPort, // UDP port for Koorde messages drawOverlayTopology = drawOverlayTopology; // draw arrow to successor node? display: "p=60,60;i=block/circle"; successorList: ChordSuccessorList; display: "p=240,60;i=block/table"; deBruijnList: ChordSuccessorList; display: "p=300,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