Gnutella represents a new wave of peer-to-peer applications providing distributed discovery and sharing of resources across the Internet. Gnutella is distinguished by its support for anonymity and by its decentralized architecture. The current Gnutella architecture and protocol have numerous flaws with respect to efficiency, anonymity, and vulnerability to malicious actions. An alternative design is described that provides Gnutella-like functionality but removes or mitigates many of Gnutella's flaws. This design, referred to as Query/Advertise (Q/A) is based upon a scalable publish/subscribe middleware system called Sienab. A prototype implementation of Q/A is described. The relative benefits of this approach are discussed, and a number of open research problems are identified with respect to Q/A systems.
2001 ACM Symposium on Applied Computing (SAC 2001):
Special Track on Coordination Models, Languages and Applications
(to appear),
11-14 March 2001,
Las Vegas, NV.
Also available as
Technical Report CU-CS-909-00, Department of Computer
Science, University of Colorado, September 1, 2000.
Retrieve publication as
PDF.
There is increasing interest in having software systems execute and
interoperate over the Internet. Execution and interoperation at this
scale imply a degree of loose coupling and heterogeneity among the
components from which such systems will be built. One common
architectural style for distributed, loosely-coupled, heterogeneous
software systems is a structure based on event generation, observation
and notification. The technology to support this approach is
well-developed for local area networks, but it is ill-suited to
networks on the scale of the Internet. Hence, new technologies are
needed to support the construction of large-scale, event-based
software systems for the Internet. We have begun to design a new
facility for event observation and notification that better serves the
needs of Internet-scale applications. In this paper we present
results from our first step in this design process, in which we
defined a framework that captures many of the relevant design
dimensions. Our framework comprises seven models-an object model, an
event model, a naming model, an observation model, a time model, a
notification model, and a resource model. The paper discusses each of
these models in detail and illustrates them using an example involving
an update to a Web page. The paper also evaluates three existing
technologies with respect to the seven models.
6th European Software Engineering Conference
(held jointly with SIGSOFT '97, Foundations of Software Engineering),
Lecture Notes in Computer Science 1301, Springer, Berlin, 1997,
pages 344-360.
Retrieve publication as
PDF,
or gzip
compressed Postscript.
J. Doppke,
D. Heimbigner, and
A.L. Wolf
Metadata is spreading beyond its historical application area, database
management systems, to areas such as distributed object programming,
large-grained parallel scientific computation, and large-scale
continuously running systems. We therefore see significant benefits
in moving from the current ad hoc, application-specific mechanisms to
a unifying and generalizing metadata model.
Our goal is to develop packages and tools to support the development
and use of metadata. Our approach is to exploit the power of
language-processing technology to capture the range of metadata
complexities conveniently and uniformly. In essence, we are creating
a generic ``metamodel'' representation scheme that can be specialized to
particular metadata applications. We have built a prototype, called
CRIME, that demonstrates our ideas in the application area of
distributed object technology.
First IEEE Metadata Conference, Silver Spring, Maryland, April
1996.
Retrieve publication as
gzip
compressed Postscript.
M. Maybee,
D. Heimbigner, and
L.J. Osterweil
The Q system provides interoperability support
for multilingual, heterogeneous component-based
software systems. Initial development of Q began
in 1988, and was driven by the very pragmatic need for
a communication mechanism between a client program written in Ada and a
server written in C. The initial design was driven by language features
present in C, but not in Ada, or vice-versa. In time our
needs and aspirations grew and Q evolved to support other languages,
such as C++, Lisp, Prolog, Java, and Tcl.
As a result of pervasive usage by the Arcadia SDE
research project, usage levels and modes of the Q system
grew and so more emphasis was placed upon portability,
reliability, and performance. In that context we identified
specific ways in which programming language support
systems can directly impede effective interoperability. This
necessitated extensive changes to both our conceptual model
and our implementation of the Q system. We also
discovered the need to support modes of interoperability far
more complex than the usual client-server. The
continued evolution of Q has allowed the architecture of
Arcadia software to become highly distributed and component-based,
exploiting components written in a variety of languages.
In addition to becoming an Arcadia project mainstay, Q has
also been made available to over 100 other sites, and it
is currently in use in a variety of other projects.
This paper summarizes key points that have been learned
from this considerable base of experience.
Proceedings of the 18th International Conference on Software
Engineering, Berlin, Germany, March 1996.
Retrieve publication as
Postscript.
Q is a software bus system used as part of the ARPA sponsored
Arcadia project. Q provides both remote procedure call (RPC) and
message-passing semantics as a layer above Unix sockets. It uses the
Open Network Computing (ONC) industrial standard. Q supports several
important capabilities: Additionally Q provides a set of matched C and Ada interfaces
designed to support interprocess communication between these two
languages. Certain of these adaptations were necessitated by the lack
of key C language features in the Ada language. Additional features
were inspired by language features present in the Ada language which
are not commonly found in C language implementations. Q defines an
interprocess communication model common to both languages, and a type
space common to both languages.
Technical Report CU-ARCADIA-101-93, Department of Computer
Science, University of Colorado, August 1993.
Retrieve publication as
Postscript.
Arpc (pronounced ``arp-cee'') is an extension to
the publically available Open Network Computing (ONC) Remote Procedure
Call system version 4.0. Arpc provides a number of new capabilities
not available in the normal ONC RPC packages.
Technical Report CU-ARCADIA-100-93, Department of Computer
Science, University of Colorado, August 1993.
Retrieve publication as Postscript.
A Design Framework for Internet-Scale Event Observation and Notification
Language-Based Support for Metadata
Multilanguage Interoperability in Distributed Systems: Experience Report
Q: A Multi-lingual Interproces Communication System
ARPC: Augmented Remote Procedure Call System, Version 402.3f
©1998 Software Engineering Research Laboratory (SERL)
Last updated: 02-14-98