Compound Module OverlayPastry

File: Overlay/Pastry/OverlayPastry.ned

Pastry

Author: Felix Palmen

pastry: Pastry pastryRoutingTable: PastryRoutingTable pastryLeafSet: PastryLeafSet pastryNeighborhoodSet: PastryNeighborhoodSet

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.

Pastry

The main module of the Pastry implementation

PastryLeafSet

This module contains the leaf set of the Pastry implementation.

PastryNeighborhoodSet

This module contains the neighborhood set of the Pastry implementation.

PastryRoutingTable

This module contains the routing table of the Pastry implementation.

Parameters:

Name Type Description
keyLength numeric

length of Overlay Key

localPort numeric
debugOutput bool

enable debug output

lookupNumberNextHops numeric
lookupParallelPaths numeric
lookupParallelRpcs numeric
lookupSecure bool
lookupMerge bool
measureNetwInitPhase bool

gather statistics when bootstrapping

hopCountMax numeric

maximum number of overlay hops

drawOverlayTopology bool

draw arrow to successor node?

Gates:

Name Direction Description
from_udp input
to_udp output
from_app input
to_app output

Unassigned submodule parameters:

Name Type Description
pastry.useBaseLookup bool

use BaseLookup class

pastry.iterativeLookup bool

do iterative instead of recursive lookups

pastry.enableNewLeafs bool

enable Pastry API call newLeafs()

pastry.optimizeLookup bool

whether to search the closest node in findCloserNode() calls

pastry.optimisticForward bool

forward message immediately in recursive mode, otherwise ping first

pastry.avoidDuplicates bool

when node seems unreachable but msg already sent, do not retry

pastry.bitsPerDigit numeric

bits per Pastry digit

pastry.numberOfLeaves numeric

number of entries in leaf set

pastry.numberOfNeighbors numeric

number of entries in neighborhoot set

pastry.joinTimeout numeric

seconds to wait for STATE message from closest node

pastry.readyWait numeric

seconds to wait for missing state messages in JOIN phase

pastry.secondStageWait numeric

how long to wait before starting second stage of init phase

pastry.pingCacheExpireTime numeric

maximum number of seconds rtt for a node is cached

pastry.repairTimeout numeric

how long to wait for repair messages

pastry.ringCheckInterval numeric

check direct neighbors on the ring every x seconds (0 to disable)

Source code:

module OverlayPastry

    parameters:
	keyLength: numeric,		// length of Overlay Key
	localPort: numeric,
	debugOutput: bool,		// enable debug output

	lookupNumberNextHops : numeric,
	lookupParallelPaths : numeric,
	lookupParallelRpcs : numeric,
	lookupSecure : bool,
	lookupMerge : bool,

	measureNetwInitPhase: bool,	// gather statistics when bootstrapping
	hopCountMax: numeric,		// maximum number of overlay hops
	drawOverlayTopology: bool;	// draw arrow to successor node?

    gates:
        in: from_udp;
        out: to_udp;
	in: from_app;
	out: to_app;

    submodules:
        pastry: Pastry;
	    parameters:
		keyLength = keyLength,
		localPort = localPort,
		debugOutput = debugOutput,
		lookupNumberNextHops = lookupNumberNextHops,
		lookupParallelPaths = lookupParallelPaths,
		lookupParallelRpcs = lookupParallelRpcs,
		lookupSecure = lookupSecure,
		lookupMerge = lookupMerge,
		measureNetwInitPhase = measureNetwInitPhase,
		hopCountMax = hopCountMax,
		drawOverlayTopology = drawOverlayTopology;
            display: "p=60,52;i=block/circle";
	pastryRoutingTable: PastryRoutingTable;
	    display: "p=140,68;i=block/table";
	pastryLeafSet: PastryLeafSet;
	    display: "p=220,52;i=block/table";
	pastryNeighborhoodSet: PastryNeighborhoodSet;
	    display: "p=300,68;i=block/table";

    connections:
	from_udp --> pastry.from_udp++;
	to_udp <-- pastry.to_udp++;
	from_app --> pastry.from_app;
	to_app <-- pastry.to_app;

endmodule