Internet Operating Systems Project

Worldwide Computing Laboratory


IOS Release 0.3


Download SALSA release 0.7.0 SALSA

Download the latest version of IOS: Compiled Jar: ios0.3.jar Source: ios0.3src.tar.gz

Add salsa/src and ios/src or the jar files to your CLASSPATH.


How to use IOS to dynamically reconfigure your applications

 IOS v0.3 supports currently two virtual network topologies for application load balancing and reconfiguration: a cluster-to-cluster topology and a peer-to-peer topology. The steps to run you applications on either topology are outlined below.

Running IOS with the Peer-to-Peer (P2P) configuration:


Start a naming server in one of the machines in your network


    java wwc.naming.WWCNamingServer


Start a peer server. Peer servers are used as a bootstrapping mechanism to allow peer IOS agents to discover other peers when they join the IOS network. You can start as many peer servers as you wish.


   java -Dport=<port number> -Didentifier=io/peerServer resources.PeerServer


Start an IOS agent in any machine that you want to participate in the IOS p2p network. The JVM argument Dconnection specifies the UAL of a peer server.


    java -Dconnection=rmsp://  theater.IOTheater 2000


Now your network is configured with IOS agents. You can launch any IOS ready application in one of the machines that is part of the IOS network.


Running IOS with the Cluster-to-Cluster (C2C) configuration:


The C2C configuration consists of a set of clusters that are connected in a peer-to-peer way. Every cluster has a cluster manager that is responsible for intra-cluster load balancing. Every peer runs a delay sensor to monitor the inter-network latencies between the peer clusters.  Inter-cluster load balancing is performed between the different clusters when necessary to improve the overall performance of the running applications.

First you need to start a WWC Naming Server in one of the machines in your network.

    java wwc.naming.WWCNamingServer

On each cluster in your network, start a manager. A manager can be started with a list of peer managers. You need to have the Universal Actor Locator (UAL) of every peer, which specifies the location of the peer manager (Example: rmsp:// 4040/ where is the IP of the peer and 4040 is the port it is listening to). Refer to the SALSA tutorial for more information about UAL. The JVM arguments Dport and Didentifier indicate the port number of the manager and the name of the manager respectively.

   java -Dport=<port number> -Didentifier=io/peerServer ntsC2C.peerserver.PeerServer  <peer1UAL> <peer2UAL>

Start a delay sensor on each manager. Delay sensors use the default port number 5001.

    java ntsC2C.pslb.DelaySensor

On each machine in your cluster, start an IOS agent (IOTheater). The JVM argument Dconnection specifies the UAL (the location) of the manager of this cluster. The last argument specifies the port number to be used with this agent.

    java  -Dconnection=rmsp:// ntsC2C.IOTheater <port number>

After you configure all your clusters with IOS agents and managers, your network is ready to start reconfiguring your applications. Launch your application in one of the machines that are part of the IOS network.


Make you application IOS ready:

The current version of IOS supports only SALSA applications. Future releases will support other programming languages.

To make your SALSA application IOS ready, all actors in your application need to extend AutonomousActor (see Node.salsa for an example).

To run your application on the P2P configuration, import the core.language package.

   import core.language.*;

To run your application on the C2C configuration, import the ntsC2C.core.language package.

   import ntsC2C.core.language.*;














Webmaster: Kaoutar El Maghraoui
Last updated: 06/24/06.