= Mobility emulation using Spatial Switching = Emulating mobility via spatial switching relies on a large number of static radio interfaces, whose antennas are arranged in a grid topology. This system emulates mobility by switching a moving node to different radio and antenna positions as time progresses. Thus, the emulated path of a moving node comprises a number of discrete steps that approximate the actual path a moving node would take. To emulate larger distances between the nodes, an experimenter can utilize the [http://www.orbit-lab.org/wiki/Documentation/ArbInterference ORBIT noise generation system] to raise the noise floor in the environment, which emulates a greater distance between transmitter and receiver. For more details, please refer to the corresponding [http://www.winlab.rutgers.edu/~kishore/papers/ewind-2005.pdf publication]. == For Experimenters == === The Setup === * Download and untar the attached file in your home directory. {{{ $ tar -xvzf vmss.tar.gz }}} A list of files should look similar to below. {{{ $ cd ~/vmss $ ls -ltr -rw------- 1 sanjit user 9105 May 18 2005 RandomWalk1.pl -rw-r--r-- 1 sanjit user 0 May 18 2005 conflicts.txt -rwxr-xr-x 1 sanjit user 818 May 18 2005 CreateMobilitySetup -rw-r--r-- 1 sanjit user 908 Dec 3 2005 ProcessVMtxtFiles.pl -rwxr-xr-x 1 sanjit user 295 Dec 3 2005 loadclick.sh -rw-r--r-- 1 sanjit user 16 Jun 7 2006 listofvms.txt -rw-r--r-- 1 sanjit user 20 Jun 7 2006 VM2.txt -rwxr-xr-x 1 sanjit user 174 Jun 7 2006 start.sh -rwxr-xr-x 1 sanjit user 506 Jun 7 2006 loadFiles.sh -rw-r--r-- 1 sanjit user 141 Jun 7 2006 VM1.txt -rwxr-xr-x 1 sanjit user 93 Jun 9 2006 setup.sh drwxr-xr-x 2 sanjit user 4096 Feb 6 23:38 database drwxr-xr-x 2 sanjit user 4096 Feb 6 23:56 EthernetAddresses -rw-r--r-- 1 sanjit user 0 Feb 7 18:39 dump }}} === Configuring an experiment === * Specify the nodes that should be used as VMs in the file '''listofvms.txt'''. For the purpose of illustration let us assume that we want to emulate two mobile nodes on the grid. Each mobile node has to be associated with a VM, an association that will stay throughout the experiment. Select nodes [3,6] and [5,6] on the grid. The corresponding entries in the file '''listofvms.txt''' are shown below. {{{ $ cat listofvms.txt node3-6 node5-6 }}} Any node on the grid may be selected as a VM node. In our system, for each emulated mobile node, there is always ONLY one corresponding VM node. * For each VM create a file VM.txt where can take a value from 1 to number of VMs. The first entry in '''listofvms.txt''' has no=1, the next has a value of 2 and so on. In our example we have two VMs, we create '''VM1.txt''' and '''VM2.txt'''. Each '''VM.txt''' file contains two columns. The first column contains time and the second column the grid node that should be mapped to the mobile node at the time. The mapping stays unless the next entry in the '''VM.txt''' changes the mapping. Sample '''VM1.txt''' and '''VM2.txt''' are shown. {{{ $ cat VM1.txt 0 node4-1 5 node4-3 10 node4-5 15 node4-1 20 node4-3 25 node4-5 30 node4-1 35 node4-3 40 node4-5 45 node4-1 50 node4-3 55 node4-5 60 node4-1 $ cat VM2.txt 0 node4-7 0 node4-7 }}} In the example mobile node corresponding to VM1 is mapped to nodes [4,1], [4,3], [4,5] at intervals of 5 seconds. The mapping is repeated and the total experiment time is 60 sec after which the mobile node is fixed to node [4,1] on the grid. The mobile node corresponding to VM2 is mapped to node [4,7] on the grid. This mapping does not change. ''The repeated entry is a adhoc fix. Whenever a VM.txt contains just one entry, the entry must be repeated twice.'' The experimenter needs to ''ensure that at no time more than one mobile node'' be mapped to a grid node. Only atheros grid nodes are supported. * Run the script CreateMobilitySetup once you have populated the files listofvms.txt and VM.txt(s). {{{ $ CreateMobilitySetup }}} Click files/scripts are generated in the EthernetAddresses directory. A click file/script is generated for each VM. Also a click file is generated for each grid node which is mapped to a mobile node at a certain time during the experiment. Files corresponding to VMs are of the name mob_server_src_generated_VM.click. Those corresponding to mapped nodes on the grid are of the name mob_node_src_generated_Node__.click where [x,y] is the grid co-ordinate of the node mapped. The list of files generated for our experiment are listed below. {{{ $ cd EthernetAddresses $ ls *.click mob_server_src_generated_VM1.click mob_server_src_generated_VM2.click mob_node_src_generated_Node_4_1.click mob_node_src_generated_Node_4_5.click mob_node_src_generated_Node_4_3.click mob_node_src_generated_Node_4_7.click }}} === Running an experiment === * Image all grid nodes (VM nodes and the nodes mapped to mobile nodes) with the image click-2.4.26-20051204.ndz. * Upload the click files onto the grid nodes they correspond. The file '''loadFiles.sh''' contains sample commands for the example experiment. * For '''each''' node install the click script. On nodes specified in the VM.txt(s) it is important that the ath0 interface is up. {{{ $ ssh root@nodex-y $ click-install mob*.click }}} * The installation of the click script marks the beginning of experiment on each node.