Portable Testbed

The WiSHFUL project offers access to several wireless testbeds, such as TWIST (TUB), w-iLab.t (iMinds), IRIS (TCD), Orbit (Rutgers University) and a FIBRE Island at UFRJ. All of these testbeds are installed in either office environments or other dedicated testbed environments. Because some research requires doing measurement campaigns or actual testing in heterogeneous environments, the WiSHFUL project also offers a portable testbed to the community.

Portable Testbed Setup

Hardware

The Portable testbeds currently consists of the following hardware :

  • 1 X Server case ( containing 1 server + a 24-port PoE-switch )
  • 8 X Intel NUC wireless nodes ( spread over 2 cases )
  • 8 X Battery pack to power a wireless node (optional)
  • 2 X Portable UPS to provide backup power for server (optional)
  • 32 X 802.15.4 sensor nodes (iMinds-RMoni RM090)
  • 2 X Wi-Spy USB dongle for simple WiFi spectrum scanning on 2.4 or 5GHz
  • 1 X USRP B200mini for advanced spectrum scannig ( 70MHz to 6GHz , max 56MHz bandwidth)

Extending the Portable Testbed with other hardware (USB/Ethernet) is very easy.

System & Network architecture

The network is built as follows:

  • The entire subnet is defined as: 172.16.16.0/20
  • Default gateway: 172.16.31.250
  • DHCP & DNS server (BOSS): 172.16.31.4
  • The NUC wireless nodes are starting at 172.16.16.1 (nuc1) until 172.16.16.8 (nuc8)

The following virtual machines are available:

  • BOSS: takes care of DHCP/DNS/HTTP/SFA interface/image reloading (172.16.31.4 or https://portable.ilabt.iminds.be )
  • OPS: file server to store NFS shares (172.16.31.3 or ops.portable.ilabt.iminds.be)
  • AMQP: PubSub server to enable OMF experimentation (172.16.31.10 or amqp.portable.ilabt.iminds.be)
  • OML: OML database server to store experiment measurement data. (172.16.31.11 or oml.portable.ilabt.iminds.be)
  • Spectro: Visualization tool for OML measurement data and Wi-Spy spectrum sensing information (172.16.31.12 or http://spectro.portable.ilabt.iminds.be )
  • Gateway: Gateway + VPN server in case an internet up-link is available. (172.16.31.250)

OML server

An OML server with PostgreSQL backend is available at oml.portable.ilabt.iminds.be :

Tutorials and howto’s

Deploy the portable testbed

!!Make sure you already have an account on the portable testbed before leaving to your testing location!!

The following steps should guide you through the process of setting up the portable testbed. Please respect the order of these steps:

  • Start by unpacking the server case. Remove BOTH front and back covers to ensure good ventilation.
  • Carefully pull out the network cables, without removing them from the switch. Never remove cables from the switch, even not when disassembling. There is enough space in the server case to insert the cables above the server (careful please!)
  • If an internet up link is available, plug it into port 24 of the switch. Any other port will not work as up link.
  • Ensure the power plugs of the server and the switch are in position and then plug in the main power supply of the server case.
  • Push the power button of the server (the led under the light bulb icon should start to blink).
  • The server will take several minutes to boot. In the meanwhile, you can start unpacking the NUC nodes.

Setup of the NUC nodes:

  • Be careful when removing the NUC nodes from the case.
  • The antennas might have loosened during transport. Make sure they are tightly screwed on (but don’t twist them too hard, since the SMA connector might break).
  • The NUC nodes are numbered the same as the switch ports. NUC1 has to be connected to the UTP cable connected to port 1 of the switch. If the numbering is not correct, the testbed will not function correctly!
  • Make sure that several minutes have passed since you booted up the server before powering up the NUC nodes.
  • Put the UTP cable into the PoE splitter. The other cables between NUC and PoE splitter should not be touched.
  • Insert USB extensions if needed.

Connect your own laptop:

  • Take any of the free ports on the switch to connect your laptop. This excludes ports 1-8,17,19,21-24. Any port between 9 and 16 should give you access.

  • If the server is properly booted, you should have received an IP address in the range of 172.16.30.X/20.

  • Your DNS server should now be 172.16.31.4 (very important!). The domain should be portable.ilabt.iminds.be

  • Your default gateway should now be 172.16.31.250

  • Check if you are properly connected by running ‘ping boss’ from your own laptop.

  • See the following tutorials to start jFed and run an experiment.

  • If there is no internet uplink available, you might want to delete your default gateway on your wired network (if you want to be able to access the internet over some other wireless connection):

    • sudo route delete 0.0.0.0 mask 0.0.0.0 172.16.31.250
    • (this command will work on linux or on windows in an emulator like cygwin or mobaXterm)
    • after you deleted this default gateway, it might be needed to reconnect to your wireless network in order to receive the correct default gateway.

Make a reservation

  • Add an entry to your own Google Calendar in the following format:
    • PROJECT - USER - LOCATION
  • and invite the following account:

Your reservation will automaticaly show up in the portable testbed calendar. The reservation is based on gentlemen’s agreement, so please respect other people’s reservations.

Getting an account

The account you need to use the Portable testbed depends on the location where you will use it:

  • If an Internet uplink is available, then a regular FED4FIRE/GENI account can be used.
  • If the portable testbed will be used offline, then you will have to request an offline account.

To use the portable testbed with a FED4FIRE account (only when the portable testbed has an internet uplink!) :

To request an offline account :

  • Request an OpenVPN account by e-mail (pieter.becue AT intec.ugent.be)
  • Request an account at https://www.portable.ilabt.iminds.be/reqaccount.php3 and download your certificate as PEM (from the Profile page).
  • Install jFed. Use the PEM file to authenticate yourself.
  • This version of jFed still needs an active internet connection (probably over wireless) when it starts. This will soon be fixed.
  • Be sure to disable all proxies in jFed when using the offline account.

First experiment

1. Create & Activate your experiment using jFed

Follow these steps to activate your nodes using jFed:

  • Fire up jFed, and login with the user certificate that you downloaded from the authority, and the associated password.
  • If this is the first time you are using jFed to activate nodes in the iMinds portable testbed, you have to disable the proxy first. Click on Preferences, select the Proxy tab and click Run Proxy Test. Select the Never option for both Proxy for jFed and Proxy for SSH connections.
  • Click on New
  • Drag in 3 wireless nodes
  • Select the Portable Testbed instead of the w-iLab.t testbed
  • Right click, Configure Node to change the properties (name/testbed/disk image/specific node)
  • Name the two fixed nodes: ap and client.
  • Click Run to start your slice (Green arrow on the top left) and fill in a unique name for your slice.
_images/jfedrun.png

When all nodes turn green, your experiment is succesfully activated.

_images/jfedok.png

2. Configuration of Access Point

SSH to your AP node (double click it in jFed). Become root:

$ sudo su

Create a config file for the hostapd program:

$ nano /root/hostapd.conf

Add the following content to the config file:

interface=wlan0
driver=nl80211
country_code=BE
ssid=demoX
hw_mode=Z
channel=Y

Replace X with a random number. Replace Y with your channel(1-11 for g, 36/40/44 for a) and Z with the WiFi mode (a or g). Start hostapd. The above config will setup an AP on wlan0 using 802.11a or g, channel Y, with SSID demoX:

$ hostapd /root/hostapd.conf

Open a second ssh terminal and give an IP address to the wlan0 interface so we can test the connection to the clients (in the next steps). Be sure to replace X with your number:

$ sudo su; ifconfig wlan0 192.168.X.1/24

Running the ifconfig command should show a wlan0 and mon.wlan0 interface:

_images/ifconfigap.png

3. Configuration of client

Become root:

$ sudo su

Put the wireless interface into managed mode and specify the SSID so it knows to which AP it should connect

$ iwconfig wlan0 mode managed
$ iwconfig wlan0 essid demoX

Specify an IP address and bring up the interface:

$ ifconfig wlan0 192.168.X.10/24 up

Running iwconfig should show that wlan0 is connected to an access point with your ESSID:

_images/iwconfigrobot.png

Check if you can ping the AP:

$ ping 192.168.X.1

4. Start the iPerf throughput measurements

Start an iPerf server instance (UDP in this case) on the AP:

$ iperf -s -u -i 1

Configure the iPerf client:

$ iperf -u -c 192.168.X.1 -b 30M -i 1 -t 6000 &

On the server, you should see some output like below:

_images/iperfserver.png

By tweaking the transmit power (values of 0 to 17dBm) of the access point, you should be able to see a difference in throughput of the iPerf stream (open up a new SSH session to your AP to play with the TX power):

$ iwconfig wlan0 txpower <0-17>

For this tutorial, leave the txpower set to default (17 or 20dBm) for the first experiment runs. If the effect of moving the mobile node is too limited, you can try lowering the txpower. Note that each antenna at the w-iLab.t is equipped with a 10dB attenuator (so 20dB attenuation per link).

Troubleshooting

Some nodes appear to be unavailable

Login to the web interface and see if some nodes are in reloading. If they remain in reloading for more than 10 minutes, then try to manually reboot the NUC node. If the nodes are in hwdown, then contact the testbed admin.

If no nodes are in reloading, but some NUCs are not booting while activating your experiment: attach a keyboard and just press ‘ENTER’ (Sometimes the NUC nodes will hang in GRUB).

jFed connectivity issues

  • If no internet uplink is available on the portable testbed, make sure you have an active wireless connection on your laptop.
  • Check if you can succesfully execute ‘ping boss’
  • Start jFed with the pem file you downloaded from the web interface (My Emulab - Generate SSL Cert or Download SSL cert).
  • If your jFed PROXY is enabled, click ‘Advanced Login’ , click ‘Reset to Default Settings’ and provide your certificate and password again before clicking ‘Login’. Once jFed is booted, go to ‘Preferences’ , ‘Proxy’ and click ‘Run Proxy Test’ and select ‘Never’ on both options.

SSH into your nodes from terminal

If you are not using jFed to login to your nodes, then you have to specify your private key as your identity to your SSH client:

  • ssh -i <pem> user@<hostname>

WiSHFUL coexistence demo (blacklisting)

  1. setup portable testbed (server / switch / nucs / rm090)

  2. create and swap-in experiment with jFed

  3. open ssh to each nuc and close it again

  4. open ssh to each nuc

  5. cd /groups/portable-ilabt-iminds-be/wishful/repos/contiki/ ; git pull

  6. cd ../taisc/ ; svn update

    [optional] pico .subversion/servers [optional] http-proxy-host = proxy2.intec.ugent.be [optional] http-proxy-port = 8080

  7. check symbolic links: ll compiler/

    => lrwxrwxrwx 1 mkulin por-wishful 20 May 10 12:48 taisc.h -> taisc_P_rm090_D_la.h

  8. copy chain to contiki folder

    cp examples/Wishful-chain.c ../contiki/platform/rm090/chain.c

  1. check symbolic links

    ll ../contiki/platform/rm090/ => lrwxrwxrwx 1 mkulin por-wishful 69 Jun 16 17:47 taisc.h -> /groups/portable-ilabt-iminds-be/wishful/repos/taisc/compiler/taisc.h => lrwxrwxrwx 1 mkulin por-wishful 72 Jun 16 17:49 taisc.o -> /groups/portable-ilabt-iminds-be/wishful/repos/taisc/vm/rm090/taisc_la.o

  2. create sensor binary

    cd ../contiki/examples/rime/ ./createBinaryTestbed [optional] sudo pip install crc16

  3. copy binary to default dir

    cp example-unicast.rm090 ../../../../scripts/binaries/Wishful-application.rm090

  4. flash nodes

  5. flash sensor nodes with correct short address on all nucs

    cd /groups/portable-ilabt-iminds-be/wishful/scripts ./flash_nodes X (X = short_address of first node (/dev/ttyUSB0), takes +1 for every other sensor attached to that nuc) example: nuc1: ./flash_nodes 1 nuc2: ./flash_nodes 5 nuc3: ./flash_nodes 9 ...

  6. goto wishful directory and export python path

    cd /groups/portable-ilabt-iminds-be/wishful/repos/wishful_upis export PYTHONPATH=$(pwd)

  7. run control program

    example: python examples/showcase2/start_blacklisting_local.py -n 32 -c examples/showcase2/blacklisting_global.ini -f portable -m OML