[ Project overview | People | Publications | Code | Documentation | Related work | Contact information ]
Project overview |
Innovative and widely distributed applications are enabled by
infrastructure layers that allow distributed resources and services to
be pooled and managed as though they were locally available. Advances
in communication technologies and the proliferation of computing
devices have made this possible; two such types of infrastructures are
pervasive computing environments and computational grids. An important
component of both is a directory service that provides information
about different objects in the environment (such as resources and
people) to applications and their users. Well-known examples are the
Metacomputing Directory Service (MDS) for Globus-based environments,
and the Intentional Naming System (INS) for applications developed in
the Oxygen pervasive computing project. Directory services in both
types of environments must support sophisticated object descriptions
and query patterns, operate in highly dynamic environments, and scale
to an increasingly large number of objects and users.
Current directory services have been designed for fairly static
environments where updates are rare (DNS, LDAP, and X.500). Recent
work has addressed the issues of expressiveness of their object
descriptions and query languages (through attribute-value hierarchies,
for example) and considered their scalability (through domain-based
partitioning or hierarchical organization (SDS, Globe, INS). Still,
all these directory services use a traditional 'inactive' interface,
where clients interested in the values of certain objects' attributes
must explicitly request such information from the server. When object
attributes are frequently updated, those clients who need up-to-date
information have no alternative but to query servers at rates that (at
least) match the rates at which changes occur.
We argue that an "exclusively" inactive interface to a directory
service can hinder service scalability and indirectly restrict (the
behavior of) potential applications. We propose to "extend" the
interfaces of directory services with a customizable 'proactive' mode
by which clients can express their interest in, and be notified of,
changes to the environment. Proactivity has the potential to increase
scalability and improve overall performance by reducing the amount of
work done by clients (and correspondingly by servers) in order to
become aware of changes in their environments.
To experiment with the idea of proactivity in directory services, we
have designed and implemented PDS, the Proactive Directory
Service: an efficient and scalable information repository with an
interface that includes a proactive push-based access mode. In
contrast to previous work, we have taken the use of proactivity in PDS
a step forward by narrowing the target of proactivity to the
granularity most pervasive and grid computing applications are
interested on: objects and their attributes. Each object managed by
our Proactive Directory Service can have associated a channel for
change notification to which interested clients can subscribe. Events
of interest are reported to subscribed clients in the form of event
messages multicasted over those notification channels. Examples of
types of events include the addition or removal of services or devices
or more specific occurrences such as significant changes in the
availability of a resource.
The primary advantage to clients of pull-based interfaces is control.
Pull-based interfaces allow clients to manage when/if messages are
sent and to anticipate replies (since the fact that a reply is
impending and the type of information the reply carries are both
known). Proactivity allows clients to trade control for performance,
as message traffic is only generated when updates occur. To compensate
for this tradeoff, we allow PDS clients to customize notification
channels by providing a specification of what events it will be
interested in. These specifications, expressed as functions in a
portable subset of C, are dynamically compiled and use by the server
to determine whether or not to notify a client.
Intuitively, proactivity provides scalability and high performance by
reducing the amount of work done by clients (and correspondingly by
servers) in order to become aware of updates. It reduces the load on
the server by significantly reducing the number of client requests for
updates. Client load is reduced because the server (or the object's
owner) is responsible for notifying the client when changes occur to
the object. The number of messages in the system is reduced by
eliminating client polling for updates, resulting in an optimal
message-per-update. These intuitive statements are validated by our
initial results where we have found that a high level of consistency
between servers and clients can be obtain at lower CPUs loads than are
possible with traditional interfaces.
People |
Code distribution |
PDS requires the following libraries:
Documentation on the PDS client API is here.
Publications |
Partial experimental support for PDS has been provided by the Georgia Tech Netlab.
Related work |
Research projects and papers on topics related to PDS.
Contact information |
If you have additional questions about this research, please feel free to contact us.
email: pmw AT cc.gatech.edu
Last modified: Thu May 5 14:50:39 EDT 2005