Index of /staff/jon/hipparch/rlc-rmdp-proxylet

rlc-rmdp-ALAN-proxylet-infrastructure-code	17/01/00	ucacixu@cs.ucl.ac.uk


This is a java implementation of the Receiver-driven Layered Congestion control (RLC) protocol and FEC based Reliable Multicast data Distribution Protocol (RMDP) for IP multicast. Although the proxylets have been succesfully deployed and tested using the ALAN proxylet infrastructure, they have by no means been tested rigorously. They code has been commented as necessary, and may contain some bugs. Some work may still need to be done, (e.g. Integrate the RLC/RMDP proxylets with the webcache proxylet by including specific "key" files to the mime content table of webcache proxylet), and the efficiency and performance may still be improved. The work shown here has mainly been for 'proof-of-concept' type development. More functionality can and may need to be included for future releases. However, it is my hope that the work that has been documented and presented is of use for further development.

The distribution currently consists of the following contents:

rlc-rmdp-proxylet/
	>README				/* this file */
	>rlcrmdptx.jar			/* RMDP/RLC Sender-side proxylet */
	>rlcrmdprx.jar			/* RMDP/RLC Receiver-side proxylet */
 	>rlctx.jar			/* RLC Sender-side proxylet */
	>rlcrx.jar			/* RLC Receiver-side proxylet */
	>docs/				/* javadoc material */
	>	>TestApplet.CloseableFrame.html  
	>	>TestApplet.html
	>	>package-list
	>	>packages.html
	>	>rlcrmdprx
	>	>rlcrmdptx
	>	>rlcrx
	>	>rlctx
	>	>allclasses-frame.html           
	>	>deprecated-list.html            
	>	>help-doc.html                 
	>	>index-all.html                
	>	>index.html                      
	>	>serialized-form.html
	>	>overview-tree.html              
	>	>stylesheet.css
	>	
	>source_code/
	>		>Rlcrmdptx.java	/* RMDP/RLC Sender-side code */	
	>		>Rlcrmdprx.java /* RMDP/RLC Receiver-side code */
	>		>Rlctx.java	/* RLC Sender-side code */
	>		>Rlcrx.java	/* RLC Receiver-side code */
	>		>TestApplet.java /* The simple multicast application */
	


DEPLOYING THE PROXYLETS:

	*) To deploy the proxylets using ALAN, simply copy the jar file of the proxylet to a local web server. (e.g.  % cp Rlcrmdptx.jar ~/public_html/) Do the same for all relevant proxylets, so that they can be referenced via URL and publically accessible.


COMPILING THE SOURCE PROGRAMS:

	*) To compile the individual proxylet code modules, you must first download the java implementation of the RLC/RMDP code (from "http://www.cs.ucl.ac.uk/external/L.Vicisano/rlc/") and place everything in the 

			"rlc-rmdp-java/src/ucl/" 

directory into the top-level directory of the DPS software. (i.e. where all the alan.jar, proxylet, sydn etc stuff is)

-------------------------------------------------------------------------------

	*) To compile the proxylet program, you must set the "alan.jar" in the CLASSPATH, similar to that shown below:

			% CLASSPATH=alan.jar; javac -d . Rlcrmdptx.java

	*) When the program has been compiled succesfully, all the relevant class files have to be bundled into a single file, Java archive (Jar). This m,ust include all relevant directories (e.g .../ucl/RLC and .../ucl/RMDP)

			% jar cvf rlcrmdptx.jar rlcrmdptx ucl

-------------------------------------------------------------------------------


AN EXAMPLE DEMONSTRATION:

	1.) Place the "rlcrmdptx.jar" and the "rlcrmdprx.jar" files onto a local WWW server.

	2.) Select the machines on which the DPS software will be run and start them as described in the ALAN programming manual ("http://dmir.socs.uts.edu.au/projects/alan/prog.html")

		e.g. To start a DPS server on the machine "hocus.cs.ucl.ac.uk", it must first and foremost have the DPS software.....then make all the dot files executable......(e.g. using "chmod" command) then.....

			% .server
			% .mon

	3.) Run two DPS machines locally. (e.g Run another server on another machine, such as "cronus.cs.ucl.ac.uk")

	4.) The "mon" program allows a user to monitor a DPS running on a particular host. We do this by providing the mon program with the correct arguments for the DPS machine. So, in the "DPS Location" text box, one can insert the hostname of a particular machine. Once this has been done, the "DPS Location" button should be pressed. If a sucesful connection to a DPS is made then the box at the top left of the interface will turn green, otherwise it will remain red.

	5.) A right button press on the extreme left button of the mon interface will start a "control" interface (see ALAN manual). The "control" interface is an example program showing how to load and run proxylets on DPS machines.

	*) The "DPS Location" text field contains the location of the DPS which the proxylet will be run on. 

		e.g. "hocus.cs.ucl.ac.uk:1998" and "cronus.cs.ucl.ac.uk:1998"


	*) The "Load" text field contains the URL of the jar file which contains the proxylet. 

		e.g. "http://www.cs.ucl.ac.uk/user/rlcrmdptx.jar"


	The "Run" text field contains initial arguments which should be passed through to the proxylet.

		** Try loading the sender-side proxylet onto one DPS machine, and the receiver-side proxylets onto several DPS machines. 

		e.g. "rlcrmdptx.Rlcrmdptx -d 225.5.6.7/5678 -f http://www.cs.ucl.ac.uk/user/testfile"

		e.g. "rlcrmdprx.Rlcrmdprx -d 225.5.6.7/5678 -h hocus.cs.ucl.ac.uk 8888"  

	The "Modify" text field contains any new parameters which a proxylet may accept while it it running to change its behaviour. (e.g. in the audio transcoder proxylet this mechanism is used to request that the proxylet changes the audio encoding.) 

	The "Stop" button requests that the proxylet exits. 

	The "Connect" text field shows an RMI identifier for a particular proxylet. It can be used to connect to other running proxylets. 
 
	6.) Once you have specified all the necessary arguments, you may "load" the proxylet onto the DPS machine. As stated earlier, try loading a sender-side proxylet onto one machine, and several other receiver-side proxylets onto other DPS machines.

	7.) Assuming the arguments have been passed through succesfully, the sender-side proxylet awaits the first request from a receiver client before sending data to the multicast group address. The receiver-side proxylets await for a TCP connection from the browser, in order to stream the packets back to the application, in this the application is the "TestApplet.java" program.

	8.) When the receiver is ready, they may make a TCP connection a specified host by using the "TestApplet" program. It can be used as an applet and as an application (shown below).....

		% java TestApplet hocus.cs.ucl.ac.uk  


This is a very simple application, and a very simple demonstration of the workings of the proxylets. More advanced experimentation may be performed by experimenting with the arguments, (e.g. number of layers, period length, TTL value, number of recivers etc etc etc )


TODO:
----- 

	- Receiver currently outputs the present subscription level on the standard output of where it is running....in this case the DPS machine, we may want to display this information on the users machine.

	- A number of the arguments for the demonstration have been hardcoded, it might be useful to extend this functionality. Also, further extend the functionality of the RLC/RMDP java original code interfaces to the RLC/RMDP proxylets.....

-------------------------------------------------------------------------------
...............................................................................
-------------------------------------------------------------------------------

Please send any comments, feedback or questions to these email addresses: 

			ucacixu@cs.ucl.ac.uk
			iumarumo@netscape.net

______________________________________________________________________________
...............................................................................
-------------------------------------------------------------------------------




      Name            Last modified     Size  Description              

[UP ] Parent directory [DIR] docs/ 17-Jan-00 16:50 - [   ] README 06-Feb-00 00:15 8K [   ] README~ 05-Feb-00 23:48 7K [   ] rlcrmdprx.jar 05-Feb-00 21:59 202K [   ] rlcrmdptx.jar 05-Feb-00 21:59 201K [   ] rlcrx.jar 05-Feb-00 21:55 203K [   ] rlctx.jar 05-Feb-00 23:52 203K [DIR] source_code/ 17-Jan-00 16:50 -
8 files