Private:pCDN:Demo

From NMSL

Scenario

In the demo we would have several PlanetLab nodes as well as a couple more machines within NSL connected to the pCDN server that is running on nsl-win machine. We run a script that will start download several content files on the PlanetLab nodes. The downloaded content includes both audio (MP3) as well as video (AVI) files. The pCDN server monitor/manager application is shown through remote desktop on the screen. And each client at NSL has the Session Information window opened to show the progress of downloads and the sources from which the client downloads. We then use a Podcatcher software (e.g. iTunes on Windows or AmaroK on Linux) to access an RSS feed on the nsl-win machine and stream one of the MP3 files. Streaming video is performed through VLC Media Player. The modified URL (pointing to the localhost) found in the feed file for AVI content is copied to the Open dialog of the VLC player. This performs a progressive download by which the content is downloaded and played at the same time.


Assumptions

We are assuming the PlanetLab slice name is sfu_pCDN and that the text file containing the nodes to be used is usable_nodes_1.txt (in case the nodes within the slice have been changed, a corresponding change to this file may be necessary). It is also assumed that the nodes already have a suitable JRE version (>= 1.6.0_14) installed on them, and that the pCDN-client contains the client files on those nodes. Finally, necessary shell scripts have been copied to the home directory.


PlanetLab Nodes List

The nodes list file (usable_nodes_1.txt) can be found under /nsl/students/hamza/pCDN_Demo.


Scripts

The shell scripts that need to be present on the PlanetLab nodes for the demo are listed below. These can be found under /nsl/students/hamza/pCDN_Demo.

server_load.sh
server_load_wget.sh


Media Files

The script that will be invoked on the PlanetLab nodes will download the following contents in a random order.

http://localhost:54321/579166DC2A20CF6E728588D2368B5920.avi
http://localhost:54321/46642720C5E0E8C5D113FBA5BEA36FD5.avi
http://localhost:54321/10DEB03C4AA1187551D9319457F865FD.avi
http://localhost:54321/47557324E4E5BB9ADE2009D715CAF5B3.avi
http://localhost:54321/6F6195E381882414E769285C4B5A13B5.mp3
http://localhost:54321/14921F5CA4AC90111D80661A7F84A29A.mp3
http://localhost:54321/B255411DCC161C65F1B74C437180F669.mp3
http://localhost:54321/403FA66670B794F4DBF1540F9B4B5375.mp3
http://localhost:54321/93C2B997A035835F415FBF6621F9F399.mp3
http://localhost:54321/752DF84ACAE5D294C1F005F6A5836242.mp3

To simplify the download of any of these content using a Podcatcher (e.g. iTunes or AmaroK), we created an RSS feed containing them and made it accessible from nsl-win.


Steps

1. You need to have the private key that will authenticate you on PlanetLab nodes on the machine from which the nodes will be administered. You can use this private key by copying it to your ~/.ssh/ directory (corresponding public key has been imported to PlanetLab slice sfu_pCDN).

2. In the shell, we start the ssh-agent, and add the private key to its list of managed keys. (We assume the private key file is named id_rsa)

eval `ssh-agent`
ssh-add ~/.ssh/id_rsa

3. Now, we make sure that the media directory within the pCDN-client directory does not exist on the PlanetLab nodes by issuing the following command

parallel-ssh -h usable_nodes.txt -l sfu_pCDN -p 50 -t 60 -o /tmp/test1.out "sudo rm -R /home/sfu_pCDN/pCDN-client/media"

4. Run the client on the PlanetLab nodes and let them start downloading some content

parallel-ssh -h usable_nodes_1.txt -l sfu_pCDN -p 50 -t 180 -o /tmp/test1.out "sudo nohup ./server_load.sh start"

5. Start a Podcatcher on one of the clients running in NSL and add a subscription to the following feed. Then pick one of the MP3 file in the feed and start playing it. The file should start downloading while being played at the same time. You can monitor the download progress using the Session Information window of the pCDN client.

http://nsl-win.cs.surrey.sfu.ca/nsl.xml

6. Start VLC on another client and use one of the following URLs to progressively download video content.

http://localhost:54321/579166DC2A20CF6E728588D2368B5920.avi
http://localhost:54321/46642720C5E0E8C5D113FBA5BEA36FD5.avi