Pastry

Intermediate Report

Romer Gil       Andrew Ladd       Tsuen Wan Ngan
{rgil, aladd, twngan}@cs.rice.edu

Architecture

Architecture

PastryNode A single entity in the Pastry network.
PastryAPI
The API exported by the Pastry node.
NodeId A unique identifier for a Pastry node.
NodeIdFactory Used to generate node ids.
NodeHandle
An interface to any Pastry node. This provides a consistent interface to the local node, or a remote node.
Address Associated with a local message receiver. Every message has a destination address.
Message A datagram bound for internal delivery.
MessageReceiver
Any entity which is capable of receiving messages. The Pastry node and node handles are examples of this. Node handles are not local message receivers.
MessageDispatch
Receives messages that arrive at a Pastry node and redirects them to the message receiver bound to an address.
MessageQueue Receives messages and forwards them to the dispatch.
Client
Any object which identified itself to a Pastry node for the purposes of being able to interface with the node. Clients are message receivers and often local.
ClientInterface
An interface to a Pastry node which is given to a client by the node. Depending on the client, parts of the interface might be disabled.
Manager A special client which is unique to a node and is given more interface priviliges than usual.
RoutingManager
Receives all messages which are being sent to an external Pastry node. If it decides that the message is meant for itself, it strips the message of its wrapper and sends it back to the Pastry node. Otherwise, the message is sent to the routing manager of the appropriate node.
RoutingMessageReceiver An interface to a routing manager to receive maintenance routing messages.
RoutingMessageSender
An interface to a network interface layer. Any object implemented this interface can deal with the communication, e.g., method invokation, RMI, socket over serialization, or socket passing a real protocol.
RoutingTable The Pastry routing table described in the paper.
RouteTableManager Takes care of manipulations of the routing table.
LeafSet The leaf set described in the paper.
LeafSetManager Takes care of manipulations of the leaf set.
NeighborSet The neighborhood set described in the paper.
NeighborSetManager Takes care of manipulations of the neighborhood set.
SecurityManager Takes care of security issues by deciding whether to process a received message by looking at its credentials.
In particular, replacable components should implement the following interfaces:

PastryAPI

This is an interface for the Pastry object to export to clients.  It provides all functions that a client needs to interact with the Pastry object.  Any new Pastry class should implement this interface.

Routing Manager

This is an interface for the core routing object, which controls how every message is being routed.  Any new routing mechanisms should implement this interface.

Routing Message Sender

This is an interface for a routing manager to send routing-specific messages to other routers.  How the messages are being sent is encapsulated under this interface.  Under this interface, the connections can be made by direct method invokation, RMI, or socket connection.

Security Manager

The security manager is placed in between the message queue and the message dispatch.  Its main function is to decide whether or not a message from the message queue and get passed to the message dispatch.  It decides by looking at the source of the message and the credentials the message comes with.  Any new security controller should implement this interface.

The latest javadoc version of the documentation can always be found here.