Resource Localization Using Peer-To-Peer Technology for Network Enabled Servers?

Eddy Caron1, Fr´ed´eric Desprez1, Franck Petit2, and C´edric Tedeschi1

1 [Eddy.Caron,Frederic.Desprez,Cedric.Tedeschi]@ens-lyon.fr LIP Laboratory / GRAAL Project UMR CNRS, ENS Lyon, INRIA, Univ. Claude Bernard Lyon 1 46 All´ee d’Italie, F-69364 Lyon Cedex 07 2 [email protected] LaRIA Laboratory University of Picardie - Jules Vernes 5 rue du Moulin Neuf, F-80000 Amiens

Abstract. DIET (Distributed Interactive Engineering Toolbox) is a set of hierarchical components to design Network Enabled Server systems. These systems are built upon servers managed through distributed scheduling agents for a better scalability. Clients ask to these scheduling components to find servers available using some performance metrics and information about the location of data already on the network. Our target architecture is the grid which is highly heterogeneous and dynamic. Clients, servers, and schedulers are thus better connected in a dynamic (or peer-to-peer) fashion. One critical issue to be solved is the localization of resources on the grid. In this paper, we present the use of an asynchronous version of the Propagate Information with Feedback algorithm to discover computation resources in Network Enabled Servers with distributed schedulers and arbitrary networks. Resource discovery uses peer-to-peer connections between components. Our implementation is based on JXTA from Sun Microsystems and DIET developed in the GRAAL team from INRIA. The algorithm and its implementation are discussed and performance results are given from experiments over the VTHD network which connects several in different research institutes through a high-speed network.

1 Introduction

The use of distributed resources available through high-speed networks has recently gained a wide interest. So called grids [2, 9] are now widely available for many applications around the world. The number of resources made available grows every day and the scalability of platforms becomes an important issue. Many research projects have produced to cope with heterogeneity and dynamicity of the target platforms like Globus, Condor, or XtremWeb while trying to hide the complexity of the platform as much as possible to the user. Among them, one simple, yet performant, approach consists in using servers available in different ad- ministrative domains through the classical client-server or RPC1 paradigm. Network Enabled Servers [7] implement this model also called GridRPC [13] (like DIET, NetSolve, or Ninf). Clients submit computation requests to a scheduler which goal is to find a server available on the grid. Scheduling has to be applied to balance the work among the servers and a list of available servers is sent back to the client which is in turn able to send the data and the request to solve a given problem. Due to the growth of the network bandwidth and the reduction of the latency, small computation requests can now be sent to servers available on the grid. One issue can now be the scalability of the middleware itself. The scheduling can be made scalable by distributing the scheduler itself.

? This work was supported in part by the ACI GRID (ASP), RNTL (GASP), and the RNRT (VTHD++) of the french department of research. 1 Remote Procedure Call We thus designed DIET [4], a set of hierarchical elements to build applications using the GridRPC paradigm. This middleware is able to find an appropriate server according to the information given in the client’s request (problem to be solved, size of the data involved), the performance of the target platform (servers load, memory available, communication performance), and the availability of data stored during previous computations. The scheduler is distributed using several hierarchies connected either statically or dynamically (in a peer-to-peer fashion). One important issue to be solved is the discovery of resources available at a given time for a request. In this paper, we use the Propagate Information with Feedback (so called PIF) algorithm to gather information about resource available for a given request. Following our results for static hierarchical networks presented in [6], we extend our platform and our resource discovery scheme for arbitrary (and dynamic) networks. We have designed an asynchronous PIF and implemented it in a dynamic version of our software using peer-to-peer connection between hierarchies. A longer version of this paper is given in a research report [5]. In a first section, we introduce a version of DIET allowing dynamic connections between the hierarchies. Then, in Section 3, we describe the algorithms used to find resources in DIET. These algorithms are based on the Propagate Information with Feedback Algorithm (PIF). Finally, before a conclusion and some hints for our future work, we give the validation of our implementations on a grid based on clusters connected through a Wide Area Network.

2 DIETJ : A Peer-to-Peer Extension of DIET

The DIET architecture has been first designed following a hierarchical approach. Thus it provides a good scalability and can take into account the physical network constraints. In this section, we are describing the DIET static hierarchical architecture.

2.1 Basic hierarchical Architecture of DIET DIET is based on severals elements. First a Client is an application that uses DIET to solve problems in a RPC mode. Different kinds of clients should be able to connect to DIET from a web page, a PSE such as Matlab or Scilab, or from a program written in C or Fortran. The scheduler is scattered across a hierarchy of Agents. This hierarchy is made of one Master Agent (MA), several Agents (A), and Local Agents (LA). A Server Daemons (SeD) encapsulates a computational server. A SeD declares the problems it

can solve to its parent LA. Figure 1 shows a hierarchy built upon several DIET elements.

¡ ¢ £ ¤ ¥

¡ ¢ £ ¤ ¥

¡ ¢ £ ¤ ¥

     

     

¡ ¢ £ ¤ ¥

¡ ¢ £ ¤ ¥

     

¦ §

     

   

¨ ©  

 

§

   

¨ ©

   

 

 

§

 

§

   

¨ ©

   

¨ ©

 

   

    . / 0 ) 

! , -

 

     

¨ © ¨ © ¨ ©

   

       

  %& '  ( ) *    )  ( +

! " #  $ $

¨ ©

 

 

) *    )   * 

- #



¨ ©



¨ ©

   

       

§

   

   

¨ ©

 











¨ ©

   

 





¨ ©

Fig. 1. DIET hierarchical organization. Fig. 2. DIETJ architecture.

In this version of DIET connections between elements are static. They are configured at the initialization of the platform or during the registration of new elements. Deployment algorithms [3] are used to start

2 elements (and map them on the target architecture) depending of the capacity of the target platform and the history of previous requests. Such a hierarchy has several limits. The first limit concerns the static configuration. Due to the static connections between agents, deploying the hierarchy (using configuration files or command-line) at a large scale becomes quickly fastidious. Moreover, such static configurations do not cope with the dynamicity of nodes of the grid. As a consequence, most of those hierarchies are rarely deployed among more than one administrative domain (One MA and its hierarchy per institute or city). Moreover, the clients are given an entry point statically. One need for the client is to dynamically choose the better MA considering proximity and latency, thus coping with the dynamicity of the grid. The second limit concerns the Master Agent bottleneck. One have a unique entry point (Master Agent) for clients that involves a probability of bottleneck (or even failure) on the MA growing with the number of clients. The third limit concerns the service availability. Real life use cases show that services are quite often deployed among only one hierarchy for many reasons (data locality, security). One key purpose of computa- tional grids is to make services available for clients anywhere in the wide area. So there is a need for making services available for a client, that does not know the entry point of the hierarchy providing the requested service, and thus for gathering services of many hierarchies over the wide area.

2.2 DIETJ : Design and Implementation

The aim of DIETJ is to dynamically connect together distributed DIET hierarchies in the wide-area to gather services on demand to improve a large scalability. This new architecture addresses the limits described before and have the following properties:

Connecting hierarchies dynamically for scalability To increase the scalability of DIET over the grid, we now dynamically build a multi-hierarchy by connecting the entry points of the hierarchies (Master Agents), and thus research institutes, cities together. Note that the multi-hierarchy is build on-demand by a Master Agent only if it fails to retrieve a service requested by a client, inside its own hierarchy. Moreover, a client can now dynamically discover one or several Master Agents when looking for a service, and thus connect the server with the best latency and locality. Sharing the load on the Master Agents So, the entry point for each client is now dynamically chosen, thus better sharing the load through Master Agents. Master Agents are connected in an unstructured peer-to-peer fashion (without any mechanism of maintenance, routing, or group membership). Gathering services at large scale Services are now gathered on-demand thus providing to clients an entry point to resources of hierarchies put in common in a transparent way.

The DIETJ architecture, shown in Figure 2, is divided into two parts. The JXTA part including the MAJ , the SeDJ and the ClientJ . All these elements are peers on the JXTA virtual network and communicate together through it. The interface part: Java (JXTA native language) and C++ (DIET native language) must cooperate. The technology used is JNI, that allows a Java program to call functions written in C++. A quick description of main JXTA features is available in our research report [5]. Now, we introduce the different elements built on top of JXTA and their behavior. Based on results presented in [10], we believe JXTA pipes offer the right trade-off between transparency and performance for our architecture. Our implementation is based on JXTA 2.3 which minimizes the latency of the JXTA pipes, according to [10].

The ClientJ . The ClientJ is a JXTA peer. When looking for a given service, it discovers one or several MAJ by their JXTA advertisement, chooses and binds one of them and sends it a request (encapsulated in a JXTA message) for this service. It waits for the MAJ ’s response. Once the response is received, it extracts the reference of the SeD(s)J found by this MAJ . It binds one available SeDJ and sends to it the problem (encapsulated in a JXTA Message) to be solved by the SeDDIET . Finally, the ClientJ extracts the result of the computation from the response.

3 The SeDJ . The SeDJ is a JXTA peer that allows the ClientsJ to send computation requests including data needed for the computation to the SeDDIET , allowing in addition to pass through firewalls if any between the Client and the SeD. The SeDJ loads the SeDDIET , and waits for ClientJ requests. When a JXTA message is received, the SeDJ extracts the problem and the data and calls the SeDDIET to solve the problem. The result returned by the SeDDIET is encapsulated in a JXTA message and sent back to the ClientJ . The Multi-MA and the MAsJ One Multi-MA is composed of all MAsJ running at a given time over the network and reachable from a first MAJ . The MAJ is able to dynamically connect these other MAsJ . Each MAJ is known on the JXTA network by an advertisement with a name common to all of them (“DIET MA”) that is published at the beginning of its life. This advertisement is published with a short lifetime to avoid ClientsJ (or other MAsJ ) to try to bind an already stopped MAJ , and thus easily take into account the dynamicity of the platform. The MAJ loads the MADIET , periodically re-publishes its advertisement, waiting for requests. When receiving a clientJ ’s request, it submits the problem description to its MADIET . If the submission to the DIET hierarchy retrieves no SeD with this service, the MAJ builds a multi-hierarchy by discovering others MAJ and propagate the request to them. When the MAJ has received responses from all other MAsJ , the responses are encapsulated in a JXTA message and sent back to the ClientJ .

Dynamic connections between the client and the Master Agents, between the client and the SeD, and between the Master Agents themselves allow to perform transparently the resource localization in a dynamic multi-hierarchy, using JXTA pipes advertisements. The communication between the agents inside one hier- archy are still static as we believe that small hierarchies are installed within each administrative domain. At the local level, performances are not so fluctuent and new elements are not so frequently added.

3 Distributed Resource Localization Algorithm

In [6], we have designed the hierarchical and distributed scheduler used in one DIET hierarchy. This scheduler is implemented using the Propagation of Information with Feedback scheme (the PIF scheme, for short) for (spanning) tree networks. The concept of PIF (also called wave propagation) was independently introduced by Chang [8] and Segall [12]. The PIF scheme can be informally described as follows: any process can be an initiator of a PIF wave, and several waves may run simultaneously. We assume that each wave is initiated by a process, called the root r. Informally, each wave is made of two consecutive phases (broadcast and feedback phases). Starting from an initial configuration where no message has yet been broadcast, any process, thereafter referred as the root r, initiates the broadcast phase. The neighbors of r participate in this phase by forwarding the broadcast message, if possible. It is not possible for a process p to broadcast the message if all its neighbors have received the message from some other neighbor. So, step by step, a spanning tree rooted at r is dynamically built during the broadcast phase. Let us call this dynamic tree the B-treer. The processes which are not able to broadcast the message further are the leaves of B-treer. Once the broadcast phase reaches the leaf processes of B-treer, they notify to their parent in B-treer of the termination of the broadcast phase by initiating the feedback phase. Then, the feedback phase eventually reaches the root r. This completes the current PIF Cycle. The complete formal algorithm is described in Algorithm 4.1. We now describe how the PIF scheme is used to locate a DIET server in the network that will be able to solve a request according to some scheduling scheme.

4 Traversing the Multi-Hierarchy

The multi-hierarchy is built dynamically, on-demand, and connects several MAsJ shaping an unstructured peer-to-peer network.

4 Algorithm 4.1 Asynchronous PIF for arbitrary networks. Constants: IdSet: set of IDs; Neigh: set of outgoing links or neighbors Ids;

Variables: Ack[IdSet] of subset of Neigh; Father[IdSet] of Neigh ∪⊥, initially ⊥ ; q, q0 ∈ Neigh; ListServer: list of server names;

Macro Sync Ack[Id] := Neigh \ {q}; if Ack[Id]= ∅ then if MyId = Id then SEND ListServer TO the Application Layer; else SEND (Id,ListServer) TO Father[Id]; endif endif

Upon RECEIPT of req FROM the Application Layer Father[MyId] := >; ListServer := ∅; Ack[MyId] := Neigh; 0 0 ∀q ∈ Ack[MyId]: SEND (MyId,req) TO q ;

Upon RECEIPT of (Id,req) FROM q if Father[Id]= ⊥ then ListServer := MakeList(Id,req); Father[Id]= q; Ack[Id] := Neigh \ {q}; if Ack[Id]= ∅ then SEND (Id,ListServer) TO Father[Id]; else ∀q0 ∈ Ack[Id]: SEND (Id,req) TO q0; endif else Sync; endif

Upon RECEIPT of (Id,LS) FROM q ListServer := ListServer ∪ LS; Sync;

4.1 Approaches

It is important to note that the multi-hierarchy mechanism is divided in two parts. First, the peers discovery (to discover the MAJ reachable by their advertisement) and second, the service discovery (to probe the multi-hierarchy built with the MAJ discovered, looking for the requested service inside the DIET hierarchies.) Several approach has been studied.

5 Merging peer discovery and service discovery JXTA 2.x provides a mechanism based on DHT [14] to achieve the discovery of advertisements (e.g., adv. “DIET MA”). A brief description of this algorithm is given in [5]. One approach consists in merge the DIET request submission inside the peer discovery mechanism offered by JXTA. The discovery query could contain not only the name of the peer service (“DIET MA”) but also the name of the service requested (e.g., “MatrixSUM”), and, at the time of sending the response, the MAsJ discovered could submit the problem to its DIET tree and send the result of the submission to the MAJ initiating the multi-hierarchy. However, such an approach supposes to insert a part of DIET code inside the JXTA DHT discovery code which is of course not very easy to maintain when the JXTA versions change. So we choose to first discover the MAJ and then propagating the request inside the multi-hierarchy built.

Discovering the MAs, then localizing the service Again, we choose not to use the DHT mechanism to avoid its maintenance overhead, its lack of exhaustiveness (when failing retrieving the advertisement by the hash function, it uses a less-efficient “walking” method) and cope with the unstructured fashion of the multi-hierarchy designed. Thus, we first use the JXTA discovery mecanism based on flooding among the peers and second, an algorithm optimizing the traversal of the MAJ graph to propagate the request through the multi-hierarchy: the asynchronous PIF.

4.2 Implementations

As said before, we already use the PIF for trees to collect the enabled servers in one DIET hierarchy, as described in [6]. Now, the propagation of the request in the DIETJ multi-hierarchy (i.e., between the tops of the hierarchies) has been implemented with two algorithms.

Propagation as an Asynchronous Star Graph Traversal The propagation has been first implemented intuitively as a simple asynchronous star graph traversal. One MAJ (let us call it the root) that finds no SeD providing a requested service in its own tree builds a multi-hierarchy. It forwards the request in an asynchronous way to all the MAJ , using a simple JXTA multicast pipe instruction. Each neighbor of the root, when receiving the request, collects the servers able to solve the problem in its own tree, and sends back the response to the root that collects and merged them to create the final response message to be sent to the client. The propagation systematically builds a star graph with MA initiating the multi-hierarchy (and the propagation) as root of the star. Let us call this algorithm “STARasync”.

Propagation as an Expanded Version of the Asynchronous PIF Scheme The propagation has then been implemented using the asynchronous PIF scheme described in Algorithm 4.1, in order to have an unstructured, efficient and adaptative muti-hierarchy traversal. Figure 3 describes a scenario of propagation in a DIET multi-hierarchy, applying the two following phases: The Broadcast phase: The MA that received the request from the client, initiates the wave and is the root r. It propagates the request to all other MAs it has first discover: its neighbors. It waits for a number of responses equal to the number of its neighbors. The MA receiving a propagated request checks if it has already processed it. If it is the case, it does not process it. Otherwise, the MA that sent the request to it becomes its parent. It collects the servers to solve the problem described in the request in its subtree and propagates the request in its turn to the neighbors of r. The tree built is the optimal tree at the time of propagating rooted at r, because it is composed by the links that reach the MAs first. The Feedback phase: r waits for all the responses before to answer the client. The neighbors of r send the enabled servers found in their tree back to their parent and, when receiving a response from a child, send the response to their own parent, too. Let us call this algorithm “PIFasync”. Note that the PIFasync builds an on-demand optimal tree for a given root (the MAJ initiating the wave) for each request, thus distributing the load among the MAJ graph

6 as the number of requests increases and avoiding bottlenecks already in the network. It was shown in [12, 11] that in asynchronous environments, the PIF scheme is the fastest possible to reach every network nodes because during the broadcast phase, messages follow the fastest links, i.e. with the weakest load. In other words, the dynamic tree built during the propagation is time optimal. In [11], the authors provide a topology discovery based on the PIF scheme. Moreover, it provides more fault tolerance, assuming that basic JXTA pipes are unreliable, because of the several retransmissions achieved by this algorithm and thus the several attempts to reach each MA. In the PIFasync case, the graph just need to be connected to reach all MAs, whereas the STARasync requires all logical links between the root and the others MAJ to work fine. Note that Algorithm STARasync also provides a PIF scheme. However, it is not a dynamic scheme is the sense that messages always follow the same links, drawing a star graph, no matter the communication load. In Figure 3, (1.) The MA that received the request from the client found no SeD providing the requested service in its own hierarchy. After having discovered others MA, it initiates the wave. (2.) Some MAs have received the propagated request. They forward it on their turn, and initiate the asynchronous Feedback phase. (3.) All MAs have received the request. A spanning tree is built. The feedback phase goes on and ends. The connections during this phase occurs depending on the traffic load encountered during the broadcast phase, allowing an optimal propagation of feedback messages.

2. 1. Client Client

MAJJMA MAJ MAJ

MAJ MAJ MAJ MAJ

MAJ MAJ MAJ MAJ

3. Client

Sender Recipient MAJJMA Request sent Request received first from this MAJ MAJ sender, that becames its parent. (link is now part of the tree)

MAJ MAJ

Fig. 3. Propagation scenario in a DIET multi-hierarchy.

5 Experimenting DIETJ : Performance Results

In this section, we discuss experimental results of the implementation of DIETJ with the algorithms previ- ously described.

5.1 Experimental Platform

Our experimental platform is based on several clusters connected through the VTHD network. This Wide Area Network has a 2.5 Gb/s bandwidth. A first cluster used is composed of 64 nodes with Intel quadri- processors Xeon 2.4 GHz and a second cluster is composed of 15 nodes with Intel bi-processors Xeon 2.8

7 GHz. One MA (composed of the MAJ and the MADIET ) runs per node and one clientJ sends one or multiple requests to MAs. Based on our previous experiments inside one hierarchy [6], we now experiment connections of the MAs graph without the whole hierarchy underlying. However, it is important to keep in mind that one can have hundreds of servers under one MA and its scheduler hierarchy.

5.2 Experiments with Homogeneous Network Performance We experimented the multi-hierarchy using both implementations described in the previous section. We started our experiments with a low and homogeneous traffic load, by varying the number of MAs in order to estimate the overhead involved, using the PIFasync compared to the STARasync, as we know the PIFasync generate more messages by re-forwarding requests. Figures 4 and 5 show the time to initiate the propagation and to receive all the responses, using the STARasync and the PIFasync, on several VTHD clusters. On homogeneous networks, using the PIFasync, the initial propagation from the root node will reach other nodes first, because of the homogeneous performance of the links. Thus, most of the trees obtained with the PIFasync are stars. In addition, those experiments show that using the PIFasync involves quite few overhead.

STAR [Average value] STAR [Average value] 1.4 PIF [Average value] 1.4 PIF [Average value]

1.2 1.2

1 1

0.8 0.8 Time (s) 0.6 0.6

0.4 0.4 Time to propagate and receive all responses (s) 0.2 0.2

0 0 0 5 10 15 20 25 30 0 2 4 6 8 10 12 14 Master Agents Number Master Agents Number

Fig. 4. Evaluating the cost of using the PIFasync com- Fig. 5. Evaluating the cost of using the PIFasync com- pared to the STARasync on one cluster. pared to the STARasync on two clusters (located in dif- ferent cities) connected through the VTHD network.

5.3 Requests Flooding Then we experimented both algorithms by varying the requests frequency still on a homogeneous network. Fifteen Master Agents are deployed and run for these experiments. Figures 6 and 7 show the impact of processing multiple requests at the same time inside the graph of MAs, with the same root for every request. Much better results are obtained by propagating requests with the PIFasync. Using the STARasync, physical routes used by the logical JXTA pipes created to send responses are mostly the same for every requests, because the logical star traversal is systematic, and this strongly increases the load on these links. Using the PIFasync, logical path (and thus physical routes underneath) used during the feedback phase depends on the load of the links during the broadcast phase. The initial propagation of r does not reach all the neighbors of r first, because some links are overloaded by other requests. Thus, each propagation builds a spanning tree during the broadcast phase minimizing the load of the links used during the feedback phase. The traffic is globally more distributed and bottlenecks are avoided. However, in these experiments, still few trees are built by the PIFasync.

8 100 100 STAR [Average value] STAR [Average value] PIF [Average value] PIF[Average value]

80 80

60 60

40 40

20 20 Time taken to propagate and get all responses (s) Time taken to propagate and get all responses (s)

0 0 0 5 10 15 20 25 30 35 40 0 20 40 60 80 100 Requests Frequency (Hz) Requests Frequency (Hz)

Fig. 6. Sending 10 requests at various frequencies. Fig. 7. Sending 20 requests at various frequencies.

5.4 Experiments on Overloaded Links

Finally, we looked at the gain that can be obtained by using the PIFasync to find the optimal spanning tree on networks with heterogeneous loads on the links. We simulated a loaded traffic with loops of scp commands, especially around the MA initiating the propagation. Twelve other Master Agents were run. Figure 8 shows the performance of each algorithm, varying the number of links saturated by traffic load around the MA initiating the propagation. The STARasync will always use the saturated links, during both the broadcast and feedback phases, increasing again the load on the links. Using the PIFasync algorithm allows to avoid most of the traffic around the root by building optimal trees for each request. The feedback phase uses the least overloaded route that has been discovered at broadcast time, for each request. Now, a lot of trees are built and the latency given by the PIFasync remains much more stable when the number of overloaded links increases.

STAR [Average value] 1.4 PIF [Average value]

1.2

1

0.8

0.6

0.4 Time to propagate and receive all responses (s) 0.2

0 0 2 4 6 8 10 12 Saturated links Numer

Fig. 8. Experimenting the PIFasync and the STARasync on a network with overloaded links.

9 6 Conclusion and Future Work

In this paper, we have presented an implementation of an asynchronous PIF algorithm used for resource discovery in peer-to-peer grids. A dynamic version of the DIET middleware that connects small hierarchies together using JXTA has been developed, which is able to dynamically adapt its connections as the network performance evolves and as the number of requests increases. The use of JXTA and the asynchronous PIF algorithm allows an efficient on-demand discovery of available servers. Our experimental results show that the PIFasync algorithm has the same cost as the basic STARasync algorithm when the network performance are homogeneous. Moreover, when the network traffic increases on some links of the target platform, our PIFasync algorithm outperforms the STARasync one by choosing the less loaded links to build an optimal tree in the connection graph. Our future work will consist in validating the algorithm at a larger scale using larger clusters connected through Wide Area Networks (within the Grid5000 project [1]) and to implement more fault tolerance features into DIET (as well as automatic deployment of static DIET hierarchies). On the development side, we plan to use the last version of JXTA-C to allow to directly integrate our algorithm in the C++ version of DIET. We will also study what could be the gain (and overhead) of using structured peer-to-peer routing and/or maintenance mechanisms to connect the hierarchies.

References

1. Grid 5000 project. http://www.grid5000.org. 2. F. Berman, G.C. Fox, and A.J.H. Hey, editors. : Making the Global Infrastructure a Reality. Wiley, 2003. 3. E. Caron, P.K. Chouhan, and A. Legrand. Automatic Deployment for Hierarchical Network Enabled Server. In The 13th Heterogeneous Computing Workshop (HCW 2004), Santa Fe. New Mexico, USA, April 2004. 4. E. Caron, F. Desprez, F. Lombard, J.-M. Nicod, M. Quinson, and F. Suter. A Scalable Approach to Network Enabled Servers. In Proc. of EuroPar 2002, Paderborn, Germany, 2002. 5. E. Caron, F. Desprez, F. Petit, and C. Tedeschi. Resource Localization Using Peer-To-Peer Technology for Net- work Enabled Servers. Research report 2004-55, Laboratoire de l’Informatique du Parall´elisme (LIP), December 2004. 6. E. Caron, F. Desprez, F. Petit, and V. Villain. A Hierarchical Resource Reservation Algorithm for Network Enabled Servers. In IPDPS’03. The 17th International Parallel and Distributed Processing Symposium, Nice - France, April 2003. 7. H. Casanova, S. Matsuoka, and J. Dongarra. Network-Enabled Server Systems: Deploying Scientific Simulations on the Grid. In High Performance Computing Symposium (HPC’01), Seattle, Washington (USA), April 2001. 8. E.J.H. Chang. Echo Algorithms: Depth Parallel Operations on General Graphs. IEEE Trans. on Software Engineering, SE-8:391–401, 1982. 9. I. Foster and C. Kesselman, editors. The Grid 2: Blueprint for a New Computing Infrastructure. Morgan Kaufmann, 2004. 10. M. Jan and D.A. Noblet. Performance Evaluation of JXTA Communication Layers. Technical Report RR-5530, INRIA, IRISA, Rennes, France, october 2004. 11. Danny Raz and Yuval Shavitt. New Models and Algorithms for Programmable Networks. Computer Networks, 38(3):311–326, 2002. 12. A. Segall. Distributed Network Protocols. IEEE Trans. on Information Theory, IT-29:23–35, 1983. 13. K. Seymour, H. Nakada, S. Matsuoka, J. Dongarra, C. Lee, and H. Casanova. An Overview of GridRPC: A Remote Procedure Call API for Grid Computing. In 3rd International Workshop on Grid Computing, November 2002. 14. B. Traversat, M. Abdelaziz, and E. Pouyoul. A Loosely-Consistent DHT Rendezvous Walker. Technical report, Sun Microsystems, Inc, March 2003.

10