Twine: Scalable Intentional Resource Discovery for Pervasive Computing Environments

Twine is a resource discovery system that builds on INS, using Chord as a distributed hash lookup. It uses the same naming syntax as INS. It offers both discovery and early binding functionality to client applications. Twine implements a new form of intentional name resolution that achieves scalability via a hash-based partitioning of resource descriptions among the Intentional Name Resolvers.

Twine does not require pre-configured hierarchies or special naming syntax. It works with arbitrary attribute sets and achieves balanced resource distribution among participating resolvers.  It also handles queries based on orthogonal and hierarchical attributes, with no content or location constraints.

Twine uses a set of resolvers Twine nodes that organize themselves into an overlay network to route resource descriptions to each other for storage, and to collaboratively resolve client queries. Each resolver dynamically specializes in learning about a subset of other Twine nodes, as well as a subset of available resources.

The high-level motivation for Twine's design comes from peer-to-peer document distribution architectures like Freenet. These systems offer interesting scaling possibilities by avoiding central bottlenecks, and by having nodes specialize in subsets of the entire document space. Twine treats resource descriptions the way a system like Freenet might treat an entire document, although the details of how distribution is done are very different. Twine also focuses on resource information distribution for an efficient resolution of queries with incomplete resource descriptions. The Twine architecture is layered, building on top of Chord (or a similar lookup service). Chord's simplicity makes it an attractive substrate.

Source Code

A prototype implementation of INS/Twine is currently available: ins-2-0.tgz. It is the second version of INS containing both the original and the Twine version of resolvers. The tar file contains all the source code, some documentation, several sample applications and a few helpful scripts.

INS/Twine is implemented in Java. It requires JavaTM 2 Platform, Standard Edition, v 1.4.0.

Twine relies on Chord as the underlying location and routing service. See the PDOS group Web site for more details about Chord. A pre-compiled C++ client for Chord is included and here are instructions on how to run Twine without installing SFS/Chord.. They work on Redhat 7.1 and Mandrake 8.x. If you have another platform, you may have to install SFS and Chord on your machine as per instructions on the PDOS page and you must re-compile the C++ client.



NMS HomeProjectsPeoplePapersSoftware


M. I. T. Computer Science and Artificial Intelligence Laboratory · 32 Vassar Street · Cambridge, MA 02139 · USA