The main module of the Pastry implementation
Author: Felix Palmen
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.
Name | Type | Description |
---|---|---|
BasePastry | simple module | (no description) |
Name | Type | Description |
---|---|---|
PastryModules | compound module |
Implementation of the Pastry KBR overlay as described in "Pastry: Scalable, Decentralized Object Location, and Routing for Large-Scale Peer-to-Peer Systems" by Antony Rowstron and Peter Druschel, published in Lecture Notes in Computer Science, volume 2218. |
Name | Type | Default value | Description |
---|---|---|---|
rpcUdpTimeout | double |
default timeout value for direct RPCs |
|
rpcKeyTimeout | double |
default timeout value for routed RPCs |
|
optimizeTimeouts | bool |
calculate timeouts from measured RTTs and network coordinates |
|
rpcExponentialBackoff | bool |
if true, doubles the timeout for every retransmission |
|
localPort | int |
UDP port for overlay messages |
|
overlayId | int |
identifies the overlay this node belongs to (used for multiple overlays) |
|
debugOutput | bool |
enable debug output |
|
keyLength | int |
overlay key length in bits |
|
nodeId | string |
optional nodeId as string in hexadecimal notation |
|
useCommonAPIforward | bool |
enable CommonAPI forward() calls |
|
drawOverlayTopology | bool |
draw arrow to successor node? |
|
hopCountMax | int |
maximum number of overlay hops |
|
recNumRedundantNodes | int |
numRedundantNodes for recursive routing |
|
joinOnApplicationRequest | bool |
only join the overlay on application request |
|
collectPerHopDelay | bool |
delay statistics for single hops |
|
routeMsgAcks | bool |
use RPCs for route messages |
|
lookupRedundantNodes | int |
number of next hops in each step |
|
lookupParallelPaths | int |
number of parallel paths |
|
lookupParallelRpcs | int |
number of nodes to ask in parallel |
|
lookupVerifySiblings | bool |
true, if siblings need to be authenticated with a ping |
|
lookupMajoritySiblings | bool |
true, if sibling candidates are selected by a majority decision if using parallel paths |
|
lookupMerge | bool |
true, if parallel Rpc results should be merged |
|
lookupFailedNodeRpcs | bool |
communicate failed nodes |
|
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 |
|
lookupVisitOnlyOnce | bool |
if true, the same node is never asked twice during a single lookup |
|
lookupAcceptLateSiblings | bool |
if true, a FindNodeResponse with sibling flag set is always accepted, even if it is from a previous lookup step |
|
routingType | string |
default routing mode (iterative, semi-recursive,...) |
|
rejoinOnFailure | bool |
rejoin after loosing connection to the overlay? |
|
sendRpcResponseToLastHop | bool |
needed by KBR protocols for NAT support |
|
recordRoute | bool |
record visited hops on route |
|
dropFindNodeAttack | bool |
if node is malicious, it tries a findNode attack |
|
isSiblingAttack | bool |
if node is malicious, it tries a isSibling attack |
|
invalidNodesAttack | bool |
if node is malicious, it tries a invalidNode attack |
|
dropRouteMessageAttack | bool |
if node is malicious, it drops all received BaseRouteMessages |
|
measureAuthBlock | bool |
if true, measure the overhead of signatures in rpc messages |
|
restoreContext | bool |
if true, a node rejoins with its old nodeId and malicious state |
|
enableNewLeafs | bool |
enable Pastry API call newLeafs() |
|
optimizeLookup | bool |
whether to search the closest node in findCloserNode() calls |
|
bitsPerDigit | int |
bits per Pastry digit |
|
numberOfLeaves | int |
number of entries in leaf set |
|
numberOfNeighbors | int |
number of entries in neighborhoot set |
|
joinTimeout | double |
seconds to wait for STATE message from closest node |
|
repairTimeout | double |
how long to wait for repair messages |
|
useRegularNextHop | bool | ||
alwaysSendUpdate | bool |
tables delayed (should be very small) |
|
readyWait | double |
seconds to wait for missing state messages in JOIN phase |
|
proximityNeighborSelection | bool |
enable PNS ? |
|
partialJoinPath | bool |
allow join even with missing state message along the routing path |
|
useSecondStage | bool | ||
secondStageWait | double |
how long to wait before starting second stage of init phase |
|
pingBeforeSecondStage | bool | ||
useDiscovery | bool |
join at nearest node, otherwise use bootstrapnode |
|
minimalJoinState | bool |
use smaller join state msgs (as described in the 2nd Pastry paper) |
|
sendStateAtLeafsetRepair | bool |
use state messages for leafset repair, otherwise use leafset messages |
|
discoveryTimeoutAmount | double |
how long to wait for leafset pings in discovery stage |
|
useRoutingTableMaintenance | bool | ||
routingTableMaintenanceInterval | double |
interval for periodic routing table maintenance |
|
overrideOldPastry | bool |
pastry configuration according to the original paper |
|
overrideNewPastry | bool |
optimized pastry configuration |
Name | Value | Description |
---|---|---|
class | Pastry | |
display | i=block/circle |
Name | Direction | Size | Description |
---|---|---|---|
udpIn | input |
gate from the UDP layer |
|
udpOut | output |
gate to the UDP layer |
|
tcpIn | input |
gate from the TCP layer |
|
tcpOut | output |
gate to the TCP layer |
|
appIn | input |
gate from the application |
|
appOut | output |
gate to the application |
|
direct_in | input |
gate for sendDirect |
// // The main module of the Pastry implementation // // @author Felix Palmen // simple Pastry extends BasePastry { parameters: @class(Pastry); bool partialJoinPath; // allow join even with missing state // message along the routing path bool useSecondStage; double secondStageWait @unit(s); // how long to wait before starting // second stage of init phase bool pingBeforeSecondStage; // join at nearest node, otherwise use bootstrapnode bool useDiscovery; // use smaller join state msgs (as described in the 2nd Pastry paper) bool minimalJoinState; // use state messages for leafset repair, otherwise use leafset messages bool sendStateAtLeafsetRepair; // how long to wait for leafset pings in discovery stage double discoveryTimeoutAmount @unit(s); bool useRoutingTableMaintenance; // interval for periodic routing table maintenance double routingTableMaintenanceInterval @unit(s); // pastry configuration according to the original paper bool overrideOldPastry; bool overrideNewPastry; // optimized pastry configuration @display("i=block/circle"); }