This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
onelab_experiment [2015/03/05 13:45] arsany |
onelab_experiment [2015/03/07 16:02] (current) arsany |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Introduction ====== | ====== Introduction ====== | ||
- | This document describes the procedure on how to make experiments on OneLab. The experiment we do here is on 6 PlanetLab nodes. We tried this experiment twice using UDP and TCP. | + | This document describes the procedures on how to make experiments on OneLab. The experiment we do here is on 6 PlanetLab nodes. We tried this experiment twice using UDP and TCP. The purpose of this experiment is to observe how the experimentation in the OneLab environment works to go some insight about it. |
- | ====== Before Doing an Experiment ====== | + | ====== Reserving OneLab Nodes ====== |
You should do these steps before implementing your experiment on OneLab.\\ | You should do these steps before implementing your experiment on OneLab.\\ | ||
- | 1- Make request to create a slice and wait for taking permission from your site PI to do that.\\ | + | 1- Make request to create a slice and wait for taking a permission from your site PI to do that.\\ |
- | 2- Requested any number of nodes that you want for your experiment. While choosing nodes, you have to choose nodes from available ones and make sure that they are not down. To know this, change the settings from the icon labeled by “…” to make the boot state available.\\ | + | 2- Request any number of nodes that you want for your experiment. While choosing, you have to select nodes from the available ones and make sure that they are **not** down. To know this, change the settings from the icon labeled by __“…”__ to make the boot state available.\\ |
- | 3- If you tried to access the reserved nodes and error message "permission denied (public key)" appears:\\ | + | 3- If you tried to access the reserved nodes and an error message "permission denied (public key)" appears:\\ |
- | a) Make sure that you downloaded the public key\\ | + | a) Make sure that you downloaded the public key.\\ |
- | b) You will be allowed "only once" to generate new key pair or even upload one after generating them from the terminal.\\ | + | b) You will be allowed "only once" to generate new key pair or even upload one after generating it from the terminal.\\ |
c) Make sure that your ssh command follow this form: ssh sliceName@nodeName\\ | c) Make sure that your ssh command follow this form: ssh sliceName@nodeName\\ | ||
- | Note: sliceName should have the following format: onelab8au_helloworld while slice name on the site has the following format: onelab.au.helloworld\\ | + | Note: sliceName should have the following format (for example): onelab8au_helloworld while slice name on the site has the following format: onelab.au.helloworld\\ |
- | 4- After gaining access on two nodes (at least), to make sure of their connection, use ping IP remote host (you can get the real IP of host using that command: wget –q0-http://ipecho.net/plain; echo)\\ | + | 4- After gaining access on two nodes (at least), to make sure of their connection, use ping IP remote host (you can get the real IP of any host using that command: ''wget –q0-http://ipecho.net/plain; echo'')\\ |
- | 5- To ensure that the real hosts are connected to each other (not such their gateways), use python to implement server on one node and telnet it from the other node.\\ | + | 5- To ensure that the real hosts are connected to each other (not such their gateways), use python to implement a server on one node and telnet it from the other node.\\ |
6- After making sure that your nodes are up and connected to each other, it is the time for your first experiment :) | 6- After making sure that your nodes are up and connected to each other, it is the time for your first experiment :) | ||
- | ====== Topology ====== | + | ====== Simple Experiment ====== |
+ | ===== Topology ===== | ||
6 nodes are used with 2 transmitter, 2 receivers and 2 relay nodes.\\ | 6 nodes are used with 2 transmitter, 2 receivers and 2 relay nodes.\\ | ||
- | Goal: the two traffic flows in the experiment passes by 2 bottleneck nodes and 1 bottleneck link\\ | + | Goal: the two traffic flows in the experiment passes by the 2 bottleneck nodes and 1 bottleneck link\\ |
- | Note that: the topology will be drawn here is logical one which means that this drawing doesn't reflect the position of nodes physically. However, all nodes are chosen to be in the same country to maintain the lowest possible delay. | + | Note that: the topology that will be drawn here is a logical one which means that this drawing doesn't reflect the position of nodes physically. However, all nodes are chosen to be in the same country to maintain the lowest possible delay. |
- | + | ||
- | ===== Logical topology ===== | + | |
{{ :drawing1.png?nolink&400 |}} | {{ :drawing1.png?nolink&400 |}} | ||
Line 30: | Line 29: | ||
n2 sends traffic to n6 (through n3 and n4)\\ | n2 sends traffic to n6 (through n3 and n4)\\ | ||
- | ====== Nodes ====== | + | ===== Nodes ===== |
n1 and n2 are very simple clients (no more than one telnet command line).\\ | n1 and n2 are very simple clients (no more than one telnet command line).\\ | ||
n3 is a simple server which sends any received message as it is to n4.\\ | n3 is a simple server which sends any received message as it is to n4.\\ | ||
- | n4 does processing on the received message and send this message to n5 or n6 according to the message itself.\\ | + | n4 does processing on the received message and sends this message to n5 or n6 according to the message itself.\\ |
- | n5 and n6 are simple servers which receive message and simply prints it.\\ | + | n5 and n6 are simple servers which receive the message and just print it.\\ |
- | The whole experiment is written on python since it's supported by default machines of PlanetLab Europe (which run linux)\\ | + | The whole experiment is written in python since it's supported by default machines of PlanetLab Europe (which run linux). From the reserved nodes: **planetlab-2.ing.unimo.it** and **planetlab2.polito.it** \\ |
It is important to note that no routing is done in this experiment but the paths (including destinations) and the forwarding rules are determined inside the code\\ | It is important to note that no routing is done in this experiment but the paths (including destinations) and the forwarding rules are determined inside the code\\ | ||
- | To make this part easy, client sends their names in the message so, if message="n1", this should go to n5 and if message="n2", this should go to n6\\ | + | To make this part easy, client sends their names in the message so, if the message starts with "n1", this should go to n5 and if the message starts with "n2", this should go to n6\\ |
- | Last note: The whole experiment works on a fixed port-Number, let it be 5005 | + | Last note: The whole experiment works on a fixed port-Number (let it be 5005). |
- | ====== Running the experiment ====== | + | ===== Running the experiment ===== |
- | - clients (n1 and n2) command: telnet IP(of n3) 5005 | + | - clients (n1 and n2) command: telnet IP(of n3) 5005. |
- | - n3 runs n3server.py | + | - n3 runs simple server which just receives messages and forward it to n4. |
- | - n4 runs n4server.py | + | - n4 runs simple server which receives messages from n3 and forward it to n5 or n6 depending on the information in the message itself. |
- | - receivers (n5 and n6) run receivers.py | + | - receivers (n5 and n6) run simple receiver which prints the received messages. |
====== References ====== | ====== References ====== | ||
https://portal.onelab.eu/slice/yourslicename#experiment | https://portal.onelab.eu/slice/yourslicename#experiment |