<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Flexible Caching in Peer-to-Peer Information Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Pınar Yolum</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Munindar P. Singh</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science North Carolina State University Raleigh</institution>
          ,
          <addr-line>NC 27695-7535</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>We view the Internet as supporting a peer-to-peer information system whose components provide services to one another. We model service providers and consumers as autonomous agents. Agents may provide services or give referrals to one another to help find trustworthy services. Once found, some services may be cached. We describe a flexible caching technique that allows peers to operate autonomously (based on their local policies), accommodates heterogeneity of peers, and enables peers to adapt by choosing policies and neighbors as best suits them. In this approach, cache entries are coupled with metadata, thereby allowing the use of heuristics and flexible queries for more informed searches. The entries that are of interest to more agents are replicated at more peers, providing on-demand performance improvement and fault tolerance.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>locating and caching services in an open architecture. Referrals have been used in
specific applications (see Section 5). However, we propose that referrals form the key
organizing principle for large-scale information systems. Thinking about referrals from
this perspective enables a new approach to caching in P2P networks.</p>
      <p>Because of the openness of large-scale information systems, instead of looking for
correct or relevant results, we look for authoritative sources who can provide correct
and relevant results. There is an increased emphasis on locating trustworthy (which we
take to include authoritative) resources, who are willing and able to provide the services
needed. The authoritative sources could be the originators of the desired information or
merely caches of it. We cannot expect to find trustworthy resources through traditional
mechanisms for three obvious reasons. One, interesting resources may be invisible to
traditional search techniques, thereby yielding low recall. Two, because important
information and service needs are personalized, traditional indexing techniques simply
lack the understanding and the context to produce the right results, thereby yielding
low precision. Three, we cannot rely on regulatory restrictions for ensuring that the
services offered are of a suitable quality or that the peers found over the network are
trustworthy.</p>
      <p>Organization. Section 2 introduces key elements of our model for agent-based P2P
information systems. Section 3 discusses the design criteria that should be satisfied
by flexible caching techniques. Section 4 describes Marmara, a caching technique that
fulfills the criteria of Section 3. Section 5 discusses the relevant literature with respect
to our work and motivates directions for further work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Peer-to-Peer Information Systems</title>
      <p>We now introduce our basic model. The main parties that interact or principals could
be people or businesses. They offer varying levels of trustworthiness and are
potentially interested in knowing if other principals are trustworthy. Our notion of services
is broad; they can involve serving static pages, processing queries, or even carrying out
transactions (although caching makes most sense for retrieving rather than modifying
information).</p>
      <p>The principals can track each other’s trustworthiness and can give and receive
referrals to services. Referrals are common in distributed systems, e.g., in the domain name
system (DNS), but are usually given and followed in a rigid manner. By contrast, the
referrals here are flexible—reminiscent of referrals in human dealings. Importantly, by
giving and taking referrals, principals can help one another find trustworthy parties with
whom to interact.</p>
      <p>The principals are autonomous. That is, we do not require that a principal respond to
another principal by providing a service or a referral. When they do respond, there are
no guarantees about the quality of the service or the suitability of a referral. However,
constraints on autonomy, e.g., due to dependencies and obligations for reciprocity, are
easily incorporated. Likewise, we do not assume that any principal should necessarily
be trusted by others: a principal unilaterally decides how to rate another principal.</p>
      <p>
        Principals must be represented computationally. Because of the above properties of
principals, they are ideally represented via agents. Agents are persistent computations
that can perceive, reason, act, and communicate [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Agents can represent different
principals and mediate in their interactions. That is, principals are seen in the computational
environment only through their agents. The agents can be thought of carrying out the
book-keeping necessary for a principal to track its ratings of other principals. Moreover,
the agents can interact with one another to help their principals find trustworthy
principals. The above describes a particular kind of P2P system in which the peers are agents.
The peers are thought of as agents here because they perceive, reason, act and
communicate. Further, the peers are proactive, carry out interesting interaction protocols, and
are capable of entering into relationships such as trust.
      </p>
      <p>In abstract terms, the principals and agents act in accordance with the following
protocol. When a principal desires a service, or when its agent anticipates the need for
a service, the agent begins to look for a trustworthy provider for the specified service.
The agent queries some other agents from among its neighbors, which are a small
subset of the agent’s acquaintances. A queried agent may offer its principal to perform
the specified service or, based on its referral policy, may give referrals to agents of
other principals. The querying agent may accept a service offer, if any, and may pursue
referrals, if any.</p>
      <p>
        Each agent maintains models of its acquaintances, which describe their expertise
(i.e., the quality of the services they provide) and sociability (i.e., the quality of the
referrals they provide). Both of these elements are adapted based on service ratings
from the agent’s principal. Using these models, an agent applies its neighbor selection
policy to decide which of its acquaintances to keep as neighbors. Key factors include
the quality of the service received from a given provider, and the resulting value that can
be placed on a series of referrals that led to that provider. In other words, the referring
agents are rated as well. The interests and expertise of the agents are represented as
term vectors from the vector space model (VSM) [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], each term corresponding to a
different domain.
      </p>
      <p>In some settings, services can easily be cached. For example, consider a knowledge
management setting where the idea for “consuming” knowledge services might be to
acquire expertise in the given domain. When an agent asks a question, it gets an answer
that can be duplicated. For example, if agent learns about car history trivia from ,
can then answer the same question by just giving the answer gave. Thus, in addition
to generating answers to queries on demand, the answers can also be cached at other
peers. Caching aids the search since a peer who is looking for an item can find it in a
nearby cache rather than having the provider generate the item afresh.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Design Criteria for Flexible Caching</title>
      <p>For information systems to work effectively, the caching techniques should satisfy the
following criteria.</p>
      <p>– Peer Autonomy. Autonomy of a peer is important in two respects. First, a peer
should be allowed to choose who it will interact with, and how it will carry out its
interactions. Second, it should be allowed to cache items that are useful to itself
rather than caching items to serve others.
– Peer Heterogeneity. A peer can offer services and follow policies distinct from all
others. The difference in policies may result in two peers providing the same service
with varying qualities. Put another way, node heterogeneity constitutes a natural
way to model varying trustworthiness of peers. By accommodating heterogeneity,
an information system also accommodates the fact that the trustworthiness of the
peers can be different.
– Neighbor Choice. Some of the peers in the system can be more useful than others,
because of the type and quality of the services they provide. A peer should be able to
modify its choice of neighbors so that the useful peers are contacted before others.
– Item Metadata. It is common to identify a data item by a unique identifier. In
addition to the identifier, useful information about the item such as the timestamp of
the item or the keywords related to it should be made explicit as metadata. This
captured metadata can be utilized to form expressive search queries.
– Search Criteria. The simplest way to find a data item is through a unique identifier.</p>
      <p>In many real settings, the users do not have access to these identifiers, but rather
information about the item that is sought. Thus, the caching techniques should
allow more expressive searches to be formulated. This has two consequences. First,
the items should be searched through metadata, like a list of keywords. Second,
trade-offs between different subsets of the metadata should easily be captured.
– Heuristics. Ideally, data items should be located by contacting as few peers as
possible. In order to achieve this, heuristics should be used to exploit the metadata of
the items or the identities of the peers.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Marmara: Flexible Caching Technique</title>
      <p>Marmara is our flexible caching technique. In Marmara, a cache consists of a set of
entries that contain the data item as well as some accessing information about the data
item. Unlike traditional P2P approaches, which model the data item through a unique
global identifier only, we represent it with metadata. Each data item has fields for its
name, author, last modification date, version, and a list of domains that it belongs to. If
an agent knows the name of the item it is looking for, then it can search for the item
with the name field. Mostly, a user would have a list of keywords in mind but not know
the exact name of the data item. Our approach allows queries to be formulated with
keywords that are matched against the list of domains listed in the metadata. In other
words, keywords make up a query vector and the data item is the answer for the query.</p>
      <p>The access data of an entry contains at least the timestamp of the last access to that
data item. Depending on an application, further information about number of accesses
to the item, or peers that access this information can be kept. The date for the last access
is used to decide which item to remove from the cache when we run into a space limit.</p>
      <p>Each agent can decide on the size of its cache. That is, an entry can stay in the cache
as long as it is not manually deleted or automatically replaced by another entry based on
the replacement algorithm in use. An entry can specify an expiration date for an item.
This expiration date is not meant to be a rigid limit on the life of the item, but a signal
to update the data item. A peer is free to use an expired item or find an updated version.</p>
      <sec id="sec-4-1">
        <title>4.1 Insert</title>
        <p>The peers are free to insert items into their caches at their own interest. In other words,
there are no rules governing what items each peer can have. The insertion into a cache
results from two different operations. First, the user may manually insert an item into
the cache, thereby making it also accessible to other peers. Initially, we would expect all
items to be inserted this way. Second, a peer may get the item from some other peer’s
cache, and decide to keep it, say, because it might be useful in the future.</p>
        <p>
          Many peer-to-peer systems—Chord [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], content-addressable networks [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], Pastry
[
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]—divide the set of data items among the peers, such that each peer in the network
becomes responsible of some of the data items, independent of the cache owner’s
interests. Thus, a peer may end up with items that it has no use for, and worse, the items
it really needs may be residing on some other peer’s cache. Our approach, on the other
hand, does not require any agent to cache any items that they are not using. Each agent
caches items that are of interest to its principal.
4.2
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Delete</title>
        <p>
          An agent can delete any of the entries in its cache for different reasons such as lack of
space, lack of interest in the item, and so on. Just as each peer can delete its cached
copy, the owner can also delete the original item. Even if the owner of an entry deletes
the original copy, the peers that have a cached copy of the item are not forced to remove
that entry from their caches. Thus, an entry may reside on two caches at one timepoint
and later be deleted from one but still remain on the second one. This contrasts with
Plaxton et al.’s [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] system, where a delete operation is circulated in the system, with
the aim that each peer that receives the message will delete its own copy.
        </p>
        <p>In addition to the manual delete, entries in the cache can also be automatically
deleted to restore space in the cache. If there is no space left in the cache, when a
new entry comes in, then one of the existing entries is replaced with the new entry. We
employ the least recently used (LRU) replacement policy. However, we only consider
uses by the principal. That is, the cache replaces the entry that has not been accessed
for the longest time period by the agent that owns the cache. This ensures that only the
entries that the principal is using are kept in the cache.
4.3</p>
      </sec>
      <sec id="sec-4-3">
        <title>Query</title>
        <p>An agent can formulate queries in different ways, describing and specifying constraints
on the information sought. Different applications can utilize a combination of these
queries based on the requirements of the application.</p>
        <p>– Keyword. The agent supplies a list of keywords that are used to form a query vector.</p>
        <p>This gives flexibility to the search, in that the source peer does not need to know the
exact name or the unique identifier of the data item it is looking for. The requested
item is returned without any concern of the cost for the search or the version of the
returned item.
(1)
– Cost-constrained. In addition to supplying a list of keywords, the agent also
specifies how much it is willing to spend to find this item (assuming that there is an
associated cost for searching the data item). This allows an agent to trade quality
for cost. An agent that is looking for a data item, but is willing to spend only a little
on it, can get an old version of the data item.
– Version-constrained. With the cost-constrained query, an agent cannot specify which
versions of the item are acceptable. Here, though, it can specify the acceptable
timestamp of the item. This is especially useful when there is no constraint on the
cost—the agent is willing to spend anything, but wants to get at least a certain
version of the item.
– Cost-version-constrained. This is a combination of the previous two queries. In
addition to the keywords, both the acceptable cost and the version are specified.
The same example, with a timestamp of 1 hour, for example, means that the agent
is looking for the version of the data item that is at most one hour old and it is only
willing to spend a certain amount. Obviously, a successful search should satisfy the
cost constraint and the returned data item should satisfy the version constraint.
– Exact. If the user knows the unique identifier of the item it is looking for, then it
does not need to supply any keywords. The query vector can then be modeled as
the interest vector of the agent. Note that this vector will only be used in searching
for peers in the graph, not for matching the answers. Thus, only answers that have
the unique identifier are returned.</p>
      </sec>
      <sec id="sec-4-4">
        <title>Search</title>
        <p>
          An agent will start the search by sending a query to its neighbors. When the neighbor
gets the query, it searches its own cache. If it does not have the item, it can either refer
some of its neighbors or, if it is also interested in having the data item, it can start a
new search for the data item itself, cache a copy, and return it to the original requesting
agent as well. If the agent decides to refer, it uses its referring policy to choose among
its neighbors. The referral policies take into account the expertise of the agents. One
way to choose the neighbors is through the capability metric, which measures how
sufficient the expertise vector is for a given query vector [
          <xref ref-type="bibr" rid="ref19 ref21">19, 21</xref>
          ]. Essentially, it resembles
cosine similarity but it also takes into account the magnitude of the expertise vector.
This means that expertise vectors with greater magnitude turn out to be more
capable for the query vector. In Formula 1, ( ) refers to a query vector,
( ) refers to an expertise vector and is the number of dimensions these
vectors have.
        </p>
        <p>"!$#
Y Z&gt;[ \&gt;]AZ&gt;[ ^7]AZ&gt;[ _‘Fa\G[ Zbcd
#"$
˛
K)L+MONQP SR1P2L+T5U7V7W X)W M:V
˝
˜ ;
—
¸ ˚ae¤˚ Øae¤˚ ºŒ Ł £‰˚Æ Sı1ªT&amp;Æ 5ł£ØŁØŒ
; &lt;&gt;= ?&gt;@A&lt;&gt;= B7@A&lt;&gt;= CDFE?G=
T ø oe˚ß£¤oe˚ß P¤oe˚ß Sß oe
&lt;HIJ
% &amp; ˇ ’)(+*!,.- 0/1-2(+3547678 9)8 *:6
!
item, it can generate a version-constrained query to say that it is willing to pay (wait)
whatever it takes to get an at most 30 minute old version of the item.
4.5</p>
      </sec>
      <sec id="sec-4-5">
        <title>Update Models</title>
        <p>Owners of data items can update them. Ideally, it is desirable to ensure that all caches
that contain the particular entry are updated when one is updated. Heuristics based on
circulating updates in the network turn out to be too costly, especially in distributed
systems involving a large number of agents and a large number of items. For this reason,
instead of maintaining strictly coherent caches, we let entries be timestamped by their
modification date. This allows different versions of the same items to exist in different
caches in the system. Obviously, when a cache gets more than one version of the same
entry, it can get rid of the previous version and only save the most recent one. In
addition, we propose several update models that will be useful depending on the importance
of how recent the data item is.</p>
        <p>Subscribe Under this model, when a peer requests a data item from a provider, it can
subscribe for further updates from this provider. When the requester subscribes for the
item, the provider is responsible for notifying the requester for any updates on that item.
The requester can obtain the new version of the item whenever it receives an update
notification. Alternatively, the requester can obtain the updated version of the item only
when there is a request for the item (from its principal or from another peer).</p>
        <p>This update model ensures that the requester will always have the up-to-date version
of a data item with respect to a provider. In other words, if the provider is the actual
updater of the item, then the requester will always have the most recent version of the
item. On the other hand, if the provider is not the actual updater of the item, it might not
be getting the updated version of the item periodically. Thus, there may still be updates
that the provider is missing, all of which will also be missed by the requester.</p>
        <p>This leads to the identification of authoritative peers in the system. The peer that
updates a data item is, by definition, an authority for the item. The peers that mirror the
updates promptly can also serve as authorities for other peers. From a requester’s point
of view, there is no difference between the actual authority for a data item and these
mirroring peers. Therefore, locating any one of these authoritative peers is enough to
guarantee the retrieval of the most up-to-date data item.</p>
        <p>Invalidate The subscription model is useful when a peer needs to have an up-to-date
version at all times. On the other hand, a peer may need a data item, but not care for
updates. In this model, the requester is sent a notification of only the first update and
not any later updates. The requester would know that its copy was stale. It may look
for an updated version when it needs the item, or (knowingly) use the invalidated copy.
When an agent gets an answer to its query, it can request to get updates with one of the
methods described. The service provider does not have to fulfill this request since not
all service providers are required to support these update models.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Discussion</title>
      <p>
        Referral networks are a natural way for people to go about seeking information [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        One reason to believe that referral systems would be useful is that referrals capture
the manner in which people normally help each other find trustworthy authorities. The
importance of referrals to interpersonal relationships has long been known [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] as has
their usefulness in marketing, essentially as a method for service location [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        MINDS, based on the documents used by each user, was the earliest agent-based
referral system [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Kautz et al. model social networks statically as graphs and study
some properties of these graphs, e.g., how the accuracy of a referral to a specified
individual relates to the distance of the referrer from that individual [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. A more extensive
literature survey about referral networks is available in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ].
      </p>
      <p>
        Our referral-based approach takes an adaptive, agent-based stance on peer-to-peer
computing. Below, we compare some related approaches based on the design criteria
of Section 3. Piazza is a P2P system where each peer is a member of a sphere of
cooperation and is assigned a role of data origin, storage provider, query evaluator, or query
initiator [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Data items are placed to ensure that each peer finds the data it needs at a
peer that is accessible with minimum cost. In our approach, each peer can autonomously
decide on the data to store. Then, each peer becomes neighbors with other that are likely
to carry the data items that it is interested in. Thus, each peer gets closer to the nodes
where the items it is interested in resides.
      </p>
      <p>In Piazza, when a peer receives a materialized view of a query, it pushes the view to
its neighbors who then pushes it to their neighbors, and so on. Thus many peers —both
interested and disinterested— receive the view but it also causes traffic. In our approach,
we only push information to the peers that have shown interest in it by subscribing.</p>
      <p>Similar to our approach, Piazza assumes that each data has an origin that is responsible
for updates. The data in caches expire after a fixed period of time. This is useful when
the expected expiration dates can be estimated. Our approach accommodates expiration
dates like this, as well as explicit invalidation and subscription models. Piazza does not
seem to keep metadata for data items and the type of queries allowed by the system are
not discussed.</p>
      <p>
        OceanStore is a global storage application that uses a peer-to-peer network [
        <xref ref-type="bibr" rid="ref11 ref15">11,
15</xref>
        ]. The network is highly controlled for the sake of performance optimizations. The
number of times an item will be replicated, and the peers that will host these replicas are
all controlled. This implies that nodes do not have autonomy since they cannot decide
on which items to keep. OceanStore peers are not heterogeneous; they all operate in the
same manner. The peers are allowed to change neighbors when a peer enters or leaves
the system. OceanStore uses cluster recognition as a search heuristic. After each data
access, a graph is constructed based on the semantic distance between the data items.
      </p>
      <p>When answering a query, the nodes locate and prefetch similar items with the idea that
these items will probably be accessed as well. OceanStore can only be queried with the
name or the globally unique identifier of the item.
e file in the system is divided into blocks, which are automatically replicated on the</p>
      <p>
        Cooperative File System (CFS) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] is a file storage system that is built on top of
Chord. Similar to OceanStore, replication of items are controlled by the system. Each
servers that follow the original server of the block. The nodes are not autonomous; the
items that will be hosted by each node is controlled by the system. Each node is assumed
to operate in the same manner, and there is no account for untrustworthy peers. Items
do not have metadata associated with them. The search uses the Chord routing as an
underlying layer. Hence, searches are actually a distributed hash table lookup, and no
further heuristics are used in CFS. The items can only be searched by item keys.
      </p>
      <p>
        PeerOLAP design an adaptive P2P system for caching online analytical processing
queries [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Each peer decides on which items to cache autonomously based on its
policies. Some of the policies consider the caching peer only while other policies take into
account what the neighbors may be interested in and caches those items as well. Peers
choose their neighbors based on how well they have answered previous questions. This
is similar to our notion of neighbor selection policies and our model can easily
accommodate a policy based on previous answers. For searching, a Gnutella-like protocol is
used, where each peer sends queries to some of its neighbors who then either answer
or forward them to their neighbors, for a given number of hops. There is an associated
cost to search each node. The search tries to minimize the total cost of accessing an
item. However, queries that specify a trade-off between versions and the cost of the
item cannot be formulated.
      </p>
      <p>
        Recently, several peer-to-peer network architectures have been proposed [
        <xref ref-type="bibr" rid="ref1 ref14 ref16 ref20">20, 14, 16,
1</xref>
        ]. These systems model the network as a distributed hash table where a deterministic
protocol maps keys to peers. Thus, given the key of an item, there is one unique peer
that is responsible for holding the key. Each peer in these systems has a table that aids
the search when the item being sought does not reside at this peer. This is similar to our
neighbors concept. Next, we discuss two storage systems that use one of these networks
as an underlying substrate.
e to CFS by design. Instead of replication blocks, files are replicated on servers. Again,
      </p>
      <p>
        Past [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] is a storage system that uses Pastry [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] for routing queries. Past is similar
the peers do not decide on which items to store or what policies to follow. Again, there
is no metadata of the items and the only way to search for a file is through its unique
file identifier. The only search heuristic used exploits physical proximity of nodes. If a
node can possibly forward a query to other nodes, it chooses the one that is physically
closer.
      </p>
      <sec id="sec-5-1">
        <title>Peer</title>
        <p>Autonomy</p>
      </sec>
      <sec id="sec-5-2">
        <title>Peer Hetero- Neighbor</title>
        <p>geneity Choice</p>
      </sec>
      <sec id="sec-5-3">
        <title>Search</title>
        <p>Heuristics</p>
      </sec>
      <sec id="sec-5-4">
        <title>Expressive Search</title>
      </sec>
      <sec id="sec-5-5">
        <title>Item Metadata Table 1. P2P approaches evaluated for flexible caching</title>
        <p>Directions. The Marmara prototype is being implemented. In future work, we will
evaluate the performance of Marmara, especially with respect to various policies and
load distributions. We will also model richer properties underlying the connectivity
among the peers, e.g., communication cost and available bandwidth. These properties
affect how efficiently and effectively peers can be located. The overall idea is to
understand the trade-offs between performance on the one hand and higher-level descriptions
and local controls on the other.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Karl</given-names>
            <surname>Aberer. P-Grid</surname>
          </string-name>
          :
          <article-title>A self-organizing access structure for P2P information systems</article-title>
          .
          <source>In Proceedings of Cooperative Information Systems (CoopIS)</source>
          , pages
          <fpage>179</fpage>
          -
          <lpage>194</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Ronald</given-names>
            <surname>Bonnell</surname>
          </string-name>
          , Michael Huhns, Larry Stephens, and
          <string-name>
            <given-names>Uttam</given-names>
            <surname>Mukhopadhyay</surname>
          </string-name>
          . MINDS:
          <article-title>Multiple intelligent node document servers</article-title>
          .
          <source>In Proceedings of the 1st IEEE International Conference on Office Automation</source>
          , pages
          <fpage>125</fpage>
          -
          <lpage>136</lpage>
          ,
          <year>1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Jacqueline J. Brown</surname>
          </string-name>
          and
          <string-name>
            <surname>Peter H. Reingen</surname>
          </string-name>
          .
          <article-title>Social ties and word-of-mouth referral behavior</article-title>
          .
          <source>Journal of Consumer Research</source>
          ,
          <volume>14</volume>
          :
          <fpage>350</fpage>
          -
          <lpage>362</lpage>
          ,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Frank</given-names>
            <surname>Dabrek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. Frans</given-names>
            <surname>Kaashoek</surname>
          </string-name>
          , David Karger,
          <string-name>
            <given-names>Robert</given-names>
            <surname>Morris</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Ion</given-names>
            <surname>Stoica</surname>
          </string-name>
          .
          <article-title>Wide-area cooperative storage with CFS</article-title>
          .
          <source>In Proceedings of the ACM Symposium on Operating System Principles (SOSP)</source>
          , pages
          <fpage>202</fpage>
          -
          <lpage>215</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Noah</surname>
            <given-names>E.</given-names>
          </string-name>
          <string-name>
            <surname>Friedkin</surname>
          </string-name>
          .
          <article-title>Information flow through strong and weak ties in intraorganizational social network</article-title>
          .
          <source>Social Networks</source>
          ,
          <volume>3</volume>
          :
          <fpage>273</fpage>
          -
          <lpage>285</lpage>
          ,
          <year>1982</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Steven</given-names>
            <surname>Gribble</surname>
          </string-name>
          , Alon Halevy, Zachary Ives, Maya Rodrig, and
          <string-name>
            <given-names>Dan</given-names>
            <surname>Suciu</surname>
          </string-name>
          .
          <article-title>What can databases do for peer-to-peer?</article-title>
          <source>In Proceedings of the Workshop on the Web and Databases (WebDB)</source>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Michael</surname>
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Huhns</surname>
            and
            <given-names>Munindar P.</given-names>
          </string-name>
          <string-name>
            <surname>Singh</surname>
          </string-name>
          .
          <article-title>Agents and multiagent systems: Themes, approaches, and challenges</article-title>
          .
          <source>In [8], chapter 1</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>23</lpage>
          .
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Michael</surname>
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Huhns</surname>
          </string-name>
          and Munindar P. Singh, editors. Readings in Agents. Morgan Kaufmann, San Francisco,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Panos</given-names>
            <surname>Kalnis</surname>
          </string-name>
          , Wee Siong Ng, Beng Chin Ooi, Dimitris Papadias, and
          <article-title>Kian Lee Tan</article-title>
          .
          <article-title>An adaptive peer-to-peer network for distributed caching of OLAP results</article-title>
          .
          <source>In Proceedings of the ACM SIGMOD Conference on Management of Data</source>
          ,
          <year>2002</year>
          . To appear.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Henry</surname>
            <given-names>Kautz</given-names>
          </string-name>
          , Bart Selman, and Mehul Shah.
          <article-title>ReferralWeb: Combining social networks and collaborative filtering</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>40</volume>
          (
          <issue>3</issue>
          ):
          <fpage>63</fpage>
          -
          <lpage>65</lpage>
          ,
          <year>March 1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. John Kubiatowicz, David Bindel, Yan Chen, Steven Czerwinski, Patrick Eaton,
          <string-name>
            <given-names>Dennis</given-names>
            <surname>Geels</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Ramakrishna</given-names>
            <surname>Gummadi</surname>
          </string-name>
          , Sean Rhea, Hakim Weatherspoon, Westley Weimer, Chris Wells, and
          <string-name>
            <given-names>Ben</given-names>
            <surname>Zhao</surname>
          </string-name>
          .
          <article-title>OceanStore: An architecture for global-scale persistent storage</article-title>
          .
          <source>In Proceedings of the Ninth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS)</source>
          , pages
          <fpage>190</fpage>
          -
          <lpage>201</lpage>
          ,
          <year>November 2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Bonnie</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Nardi</surname>
            , Steve Whittaker, and
            <given-names>Heinrich</given-names>
          </string-name>
          <string-name>
            <surname>Schwarz</surname>
          </string-name>
          .
          <article-title>It's not what you know, it's who you know: work in the information age</article-title>
          .
          <source>First Monday</source>
          ,
          <volume>5</volume>
          (
          <issue>5</issue>
          ), May
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>C. Greg Plaxton</surname>
          </string-name>
          , Rajmohan Rajaraman, and
          <string-name>
            <surname>Adrea</surname>
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Richa</surname>
          </string-name>
          .
          <article-title>Accessing nearby copies of replicated objects in a distributed environment</article-title>
          .
          <source>In Proceedings of the Ninth Annual Symposium on Parallel Algorithms and Architectures (SPAA)</source>
          , pages
          <fpage>311</fpage>
          -
          <lpage>320</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Sylvia</surname>
            <given-names>Ratnasamy</given-names>
          </string-name>
          , Paul Francis, Mark Handley, Richard Karp, and
          <string-name>
            <given-names>Scott</given-names>
            <surname>Shenker</surname>
          </string-name>
          .
          <article-title>A scalable content-addressable network</article-title>
          .
          <source>In Proceedings of the ACM SIGCOMM Conference on Applications</source>
          , Technologies, Architectures, and
          <article-title>Protocols for Computer Communication</article-title>
          , pages
          <fpage>161</fpage>
          -
          <lpage>172</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Sean</surname>
            <given-names>Rhea</given-names>
          </string-name>
          , Chris Wells, Patrick Eaton,
          <string-name>
            <given-names>Dennis</given-names>
            <surname>Geels</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Ben</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Hakim</given-names>
            <surname>Weatherspoon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and John</given-names>
            <surname>Kubiatowicz</surname>
          </string-name>
          .
          <article-title>Maintenance-free global data storage</article-title>
          .
          <source>IEEE Internet Computing</source>
          , pages
          <fpage>40</fpage>
          -
          <lpage>49</lpage>
          , September-October
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>Antony</given-names>
            <surname>Rowstron</surname>
          </string-name>
          and
          <string-name>
            <given-names>Peter</given-names>
            <surname>Druschel</surname>
          </string-name>
          .
          <article-title>Pastry: Scalable, decentralized object location and routing for large-scale peer-to-peer systems</article-title>
          .
          <source>In Proceedings of the 18th IFIP/ACM International Conference on Distributed Systems Platforms (Middleware)</source>
          , pages
          <fpage>329</fpage>
          -
          <lpage>350</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>Antony</given-names>
            <surname>Rowstron</surname>
          </string-name>
          and
          <string-name>
            <given-names>Peter</given-names>
            <surname>Druschel</surname>
          </string-name>
          .
          <article-title>Storage management and caching in PAST, a largescale, persistent peer-to-peer storage utility</article-title>
          .
          <source>In Proceedings of the ACM Symposium on Operating System Principles (SOSP)</source>
          , pages
          <fpage>188</fpage>
          -
          <lpage>201</lpage>
          , Banff, Canada,
          <year>October 2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>Gerard</given-names>
            <surname>Salton</surname>
          </string-name>
          and
          <string-name>
            <given-names>Michael J.</given-names>
            <surname>McGill</surname>
          </string-name>
          .
          <article-title>An Introduction to Modern Information Retrieval</article-title>
          .
          <string-name>
            <surname>McGraw-Hill</surname>
          </string-name>
          , New York,
          <year>1983</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Munindar</surname>
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Singh</surname>
            ,
            <given-names>Bin</given-names>
          </string-name>
          <string-name>
            <surname>Yu</surname>
            , and
            <given-names>Mahadevan</given-names>
          </string-name>
          <string-name>
            <surname>Venkatraman</surname>
          </string-name>
          .
          <article-title>Community-based service location</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>44</volume>
          (
          <issue>4</issue>
          ):
          <fpage>49</fpage>
          -
          <lpage>54</lpage>
          ,
          <year>April 2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Ion</surname>
            <given-names>Stoica</given-names>
          </string-name>
          , Robert Morris, David Karger,
          <string-name>
            <given-names>M. Frans</given-names>
            <surname>Kaashoek</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Hari</given-names>
            <surname>Balakrishnan</surname>
          </string-name>
          .
          <article-title>Chord: A scalable peer-to-peer lookup service for Internet applications</article-title>
          .
          <source>In Proceedings of the ACM SIGCOMM Conference on Applications</source>
          , Technologies, Architectures, and
          <article-title>Protocols for Computer Communication</article-title>
          , pages
          <fpage>149</fpage>
          -
          <lpage>160</lpage>
          . ACM,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>Pınar</given-names>
            <surname>Yolum</surname>
          </string-name>
          and
          <string-name>
            <given-names>Munindar P.</given-names>
            <surname>Singh</surname>
          </string-name>
          .
          <article-title>Locating trustworthy services</article-title>
          .
          <source>In Proceedings of the First International Workshop on Agents and Peer-to-Peer Computing (AP2PC)</source>
          ,
          <year>2002</year>
          . To appear.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <given-names>Bin</given-names>
            <surname>Yu</surname>
          </string-name>
          .
          <article-title>Emergence and Evolution of Agent-based Referral Networks</article-title>
          .
          <source>PhD thesis</source>
          , Department of Computer Science, North Carolina State University,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>