Difference between revisions of "Wireless Battle Mesh"
(→Addresses) |
(→Call for Participants) |
||
(108 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
+ | [[Image:DSC00007.JPG|400px]] | ||
+ | hackers preparing | ||
+ | |||
+ | [[Image:DSC00008.JPG|400px]] and flashing linksyses | ||
+ | |||
+ | [[Image:Olsr_viz.tgz]] battlemesh topology (partial) | ||
+ | |||
== Call for Participants == | == Call for Participants == | ||
Line 14: | Line 21: | ||
* OLSR : IP-based mesh routing platform (http://olsr.org and OpenWrt package available) | * OLSR : IP-based mesh routing platform (http://olsr.org and OpenWrt package available) | ||
* BATMAN : Layer2-based mesh protocol (http://open-mesh.org) and available as a kernel module for Linux and packaged in OpenWrt | * BATMAN : Layer2-based mesh protocol (http://open-mesh.org) and available as a kernel module for Linux and packaged in OpenWrt | ||
− | * BABEL : Layer-3 mesh protocol developed by University Paris | + | * BABEL : Layer-3 mesh protocol developed by University Paris 7, available for Linux and packaged in OpenWrt (http://www.pps.jussieu.fr/~jch/software/babel/) |
Concerning the hardware node, we are looking for hardware sponsors that could enjoy this “real-case” contest by providing 50-100 nodes to the event. This sponsor will be actually displayed on the organization website as well as during the event. The feedbacks for the hardware manufacturers can be not only from the users but also from the network community running real-case test (academic- or community-wide). | Concerning the hardware node, we are looking for hardware sponsors that could enjoy this “real-case” contest by providing 50-100 nodes to the event. This sponsor will be actually displayed on the organization website as well as during the event. The feedbacks for the hardware manufacturers can be not only from the users but also from the network community running real-case test (academic- or community-wide). | ||
Line 116: | Line 123: | ||
* wprobe | * wprobe | ||
* snmpd | * snmpd | ||
+ | |||
+ | A local repository containing all the packages has been deployed on [http://ska.lab.tmplab.org ska] | ||
== Wireless configuration == | == Wireless configuration == | ||
Line 154: | Line 163: | ||
</pre> | </pre> | ||
− | For an OLSR node | + | For an OLSR node on an Atheros board: |
<pre> | <pre> | ||
Line 162: | Line 171: | ||
config wifi-iface | config wifi-iface | ||
− | option device | + | option device wifi0 |
option network wifi | option network wifi | ||
option mode sta | option mode sta | ||
Line 216: | Line 225: | ||
</pre> | </pre> | ||
− | === | + | == Setup == |
+ | |||
+ | Nodes have been flashed with custom firmware images: | ||
+ | - root password is set to 'wbm2009' (but not on all routers *g) | ||
+ | - pubkey ssh authentication is enabled, keys are available here: http://ska.lan.tmplab.org/ssh/ | ||
+ | - to do passwordless login from one node to the next, you may use [[Image:Battle_ssh.tgz]] (contains above key in dropbear format) | ||
+ | - LAN configuration was not changed and default to 192.168.1.1/24 | ||
+ | - Default wireless configuration is: | ||
+ | - ssid: wbm2009 | ||
+ | - mode: adhoc | ||
+ | - encryption: none | ||
+ | |||
+ | When using ssh with same key and different hosts, it might be convenient to add the following in /etc/ssh/ssh_config: | ||
+ | <pre> | ||
+ | StrictHostKeyChecking no | ||
+ | UserKnownHostsFile /dev/null | ||
+ | </pre> | ||
+ | |||
+ | === Wireless IP adresses === | ||
you can set the addres this way: | you can set the addres this way: | ||
Line 223: | Line 250: | ||
</pre> | </pre> | ||
+ | you can set th hostname that way: | ||
+ | <pre> | ||
+ | root@OpenWrt:~# sysctl -w kernel.hostname=olsr2.wrt | ||
+ | root@olsr2:~# uci set system.@system[0].hostname=olsr2.wrt; uci commit | ||
+ | </pre> | ||
+ | 00:18:84:21:6B:8C | ||
(LAN MAC, WiFi MAC, WiFi IP) | (LAN MAC, WiFi MAC, WiFi IP) | ||
+ | |||
+ | ==== Channel: 1, ESSID: wbm2009-olsr, BSSID: CA:CA:FE:CA:CA:20, IP: 192.168.20.0/24 ==== | ||
+ | |||
+ | * 00:0F:66:24:E9:D0, 00:0F:66:24:E9:D2, 192.168.20.1, WRT54G v1.1 , iperf(tcp:5001) | ||
+ | * 00:1A:70:FD:4B:03, 00:1A:70:FD:4B:05, 192.168.20.2, WRT54GL v1.1 | ||
+ | * 00:16:B6:01:5F:DF, 00:16:B6:01:5F:E1, 192.168.20.3, WRT54GL v1.1 | ||
+ | * 00:16:B6:01:5F:E5, 00:16:B6:01:5F:E7, 192.168.20.4, WRT54GS v4 | ||
+ | * 00:16:B6:01:66:87, 00:16:B6:01:66:89, 192.168.20.5, WRT54GS v4 , iperf(tcp:5001) | ||
+ | * 00:14:BF:E2:B5:3F, 00:14:BF:E2:B5:41, 192.168.20.6, WRT54GS v4 , iperf(tcp:5001) | ||
+ | * 00:12:17:DF:A7:28, 00:12:17:DF:A7:2A, 192.168.20.7, WRT54GS v1.1, iperf(tcp:5001) | ||
+ | * 00:14:BF:A5:B9:4C, 00:14:BF:A5:B9:4E, 192.168.20.8, WRT54GS v4 , iperf(tcp:5001) | ||
+ | * 00:16:B6:01:5F:DC, 00:16:B6:01:5F:DE, 192.168.20.9, WRT54GS v4 | ||
+ | * 00:16:B6:01:57:CF, 00:16:B6:01:57:D1, 192.168.20.10, WRT54GS v4 | ||
+ | * 00:16:B6:01:5F:E8, 00:16:B6:01:5F:EA, 192.168.20.11, WRT54GS v4, iperf(tcp:5001) | ||
+ | * 00:14:BF:D2:65:9E, 00:14:BF:D2:65:A0, 192.168.20.12, WRT54GL | ||
+ | * 00:14:BF:D2:65:86, 00:14:BF:D2:65:88, 192.168.20.13, WRT54GL, iperf(tcp:5001) | ||
+ | * 00:11:D8:58:9E:92, , 192.168.20.14, ASUSWLHDD | ||
+ | * 00:11:D8:43:6B:5D, , 192.168.20.15, ASUSWLHDD | ||
+ | * 00:11:D8:58:9C:84, , 192.168.20.16, ASUSWLHDD | ||
+ | * 00:16:B6:D9:25:B7, 00:16:B6:D9:25:B9, 192.168.20.17, WRT54GL | ||
+ | * 00:11:D8:58:9D:94, , 192.168.20.18, ASUSWLHDD | ||
+ | * 00:11:D8:58:A0:A0, , 192.168.20.19, ASUSWLHDD | ||
+ | * 00:11:D8:58:9D:7B, , 192.168.20.20, ASUSWLHDD | ||
+ | * 00:16:B6:40:DE:3E, 00:16:B6:40:DE:40, 192.168.20.21, WRT54GL | ||
+ | * 00:13:D4:D2:09:24, , 192.168.20.22, ASUSWLHDD | ||
+ | * 00:18:84:00:70:13, , 192.168.20.23, FONERA | ||
+ | * 00:18:84:22:A2:DC, , 192.168.20.24, FONERA | ||
+ | * 00:18:84:27:19:5C, , 192.168.20.25, FONERA | ||
+ | * 00:18:84:21:6B:8C, , 192.168.20.26, FONERA, iperf(tcp:5001) | ||
+ | * 00:18:84:1C:EB:28, , 192.168.20.27, FONERA, iperf(tcp:5001) | ||
+ | * XX:XX:XX:XX:XX:XX, , 192.168.20.166, LAPTOP | ||
+ | |||
+ | ==== Channel: 6, ESSID: wbm2009-babel, BSSID: CA:CA:FE:CA:CA:30, IP: 192.168.30.0/24 ==== | ||
+ | |||
+ | * 00:18:84:27:7E:E0, 00:18:84:27:7E:E1, 192.168.30.2, Fonera (dzeta) | ||
+ | * 00:18:84:28:90:78, 00:18:84:28:90:79, 192.168.30.3, Fonera (eta) | ||
+ | * 00:16:B6:40:F2:CC, 00:16:B6:40:F2:CE, 192.168.30.4, WRT54GL | ||
+ | * 00:16:B6:40:F2:C0, 00:16:B6:40:F2:C2, 192.168.30.5, WRT54GL | ||
+ | * 00:18:39:BC:39:54, 00:18:39:BC:39:56, 192.168.30.6, WRT54GL | ||
+ | * 00:16:B6:41:02:8C, 00:16:B6:41:02:8E, 192.168.30.7, WRT54GL | ||
+ | * 00:16:B6:40:F2:D5, 00:16:B6:40:F2:D7, 192.168.30.8, WRT54GL | ||
+ | * 00:16:B6:40:F2:DB, 00:16:B6:40:F2:DD, 192.168.30.9, WRT54GL | ||
+ | * 00:0F:66:C7:C0:AD, 00:0F:66:C7:C0:AF, 192.168.30.10, WRT54GS | ||
+ | * 00:14:bf:d2:65:86, , 192.168.30.11, WRT54GL | ||
+ | * 00:14:bf:d2:65:9e, , 192.168.30.12, WRT54GL | ||
+ | * 00:11:D8:43:6A:27, , 192.168.30.14, ASUSWLHDD | ||
+ | * 00:11:2F:9D:1B:E4, , 192.168.30.15, ASUSWLHDD | ||
+ | * 00:11:D8:58:9D:9A, , 192.168.30.16, ASUSWLHDD | ||
+ | * 00:14:bf:d2:6c:04, , 192.168.30.17, WRT54GL | ||
+ | * 00:11:D8:58:9D:10, , 192.168.30.18, ASUSWLHDD | ||
+ | * 00:11:D8:43:6A:C9, , 192.168.30.19, ASUSWLHDD | ||
+ | * 00:11:D8:13:D4:D2, , 192.168.30.20, ASUSWLHDD | ||
+ | * 00:11:D8:58:9F:1D, , 192.168.30.22, ASUSWLHDD | ||
+ | * 00:18:84:25:69:50, , 192.168.30.23, Fonera | ||
+ | * 00:18:84:25:df:50, , 192.168.30.24, Fonera | ||
+ | * 00:18:84:28:90:78, , 192.168.30.26, Fonera | ||
+ | * 00:18:84:25:1A:60, , 192.168.30.27, Fonera | ||
+ | * XX:XX:XX:XX:XX:XX, , 192.168.20.166, LAPTOP | ||
+ | |||
+ | CONFLICTING (find it and change ip) : | ||
+ | * 00:1F:C6:62:28:0F, 00:1F:C6:62:28:0F, 192.168.30.25, Asus WL-500Gpv2 | ||
+ | |||
+ | ==== Channel: 11, ESSID: wbm2009-batman, BSSID: CA:CA:FE:CA:CA:40, IP: 192.168.40.0/24 ==== | ||
+ | |||
+ | * 192.168.40.1, 00:0F:66:24:EE:2F, WRT54G | ||
+ | * 192.168.40.2, 00:14:BF:BF:E6:5C, WRT54G v3.1, iperf(tcp:5001) | ||
+ | * 192.168.40.3, 00:12:17:26:EB:84, WRT54G v2 | ||
+ | * 192.168.40.5, 00:13:10:30:21:9G, WRT54GS 1.1, iperf(tcp:5001) | ||
+ | * 192.168.40.6, 00:16:B6:40:F9:F2, WRT54GLgl 1.1 | ||
+ | * 192.168.40.7, 00:14:BF:D2:65:A1, WRT54GL, iperf(tcp:5001) | ||
+ | * 192.168.40.8, 00:16:B6:40:F2:C6, WRT54GL | ||
+ | * 192.168.40.9, 00:0F:66:C7:B9:6F, WRT54GS | ||
+ | * 192.168.40.10, 00:16:B6:40:F2:C3, WRT54GL | ||
+ | * 192.168.40.11, 00:16:B6:40:F2:D8, WRT54GL | ||
+ | * 192.168.40.13, 00:16:B6:40:F2:D2, WRT54GL | ||
+ | * 192.168.40.14, 00:15:f2:32:f0:84, ASUS WLHDD | ||
+ | * 192.168.40.15, 00:11:D8:58:9F:6E, ASUS WLHDD | ||
+ | * 192.168.40.16, 00:13:D4:D2:09:01, ASUS WLHDD | ||
+ | * 192.168.40.18, 00:11:D8:58:A0:9F, ASUS WLHDD | ||
+ | * 192.168.40.19, 00:11:D8:58:9E:b9, ASUS WLHDD | ||
+ | * 192.168.40.20, 00:11:D8:58:9e:75, ASUS WLHDD | ||
+ | * 192.168.40.21, 00:11:2F:9D:15:86, ASUS WL500GD | ||
+ | * 192.168.40.23, 00:18:84:1C:F7:4C, Fonera | ||
+ | * 192.168.40.24, 00:18:84:25:28:E4, Fonera | ||
+ | * 192.168.40.25, 00:18:84:13:A5:50, Fonera | ||
+ | * 192.168.40.26, 00:18:84:12:F7:2C, Fonera | ||
+ | * 192.168.40.27, 00:18:84:11:A1:E4, Fonera, iperf(tcp:5001) | ||
+ | * 192.168.40.xx, 00:10:72:88:7F:BE, WRT54GS | ||
+ | * XX:XX:XX:XX:XX:XX, , 192.168.20.166, LAPTOP | ||
+ | |||
+ | ==== Channel: 1, ESSID: wbm2009, IP: 192.168.44.x/24 ==== | ||
* 00:0F:66:C7:C0:AD, 00:0F:66:C7:C0:AF, 192.168.44.101, WRT54GS | * 00:0F:66:C7:C0:AD, 00:0F:66:C7:C0:AF, 192.168.44.101, WRT54GS | ||
Line 230: | Line 354: | ||
* 00:16:B6:D9:25:B7, 00:16:B6:D9:25:B9, 192.168.44.104, WRT54GL | * 00:16:B6:D9:25:B7, 00:16:B6:D9:25:B9, 192.168.44.104, WRT54GL | ||
* 00:16:B6:40:F2:D5, 00:16:B6:40:F2:D7, 192.168.44.105, WRT54GL | * 00:16:B6:40:F2:D5, 00:16:B6:40:F2:D7, 192.168.44.105, WRT54GL | ||
− | |||
* 00:16:B6:40:F2:C0, 00:16:B6:40:F2:C2, 192.168.44.107, WRT54GL | * 00:16:B6:40:F2:C0, 00:16:B6:40:F2:C2, 192.168.44.107, WRT54GL | ||
* 00:16:B6:40:F9:F2, 00:16:B6:40:F9:F4, 192.168.44.108, WRT54GL | * 00:16:B6:40:F9:F2, 00:16:B6:40:F9:F4, 192.168.44.108, WRT54GL | ||
Line 256: | Line 379: | ||
* 00:13:10:07:EE:FC, 00:13:10:07:EE:FE, 192.168.44.130, WRT54GS v1.1 | * 00:13:10:07:EE:FC, 00:13:10:07:EE:FE, 192.168.44.130, WRT54GS v1.1 | ||
* 00:12:17:DF:A7:28, 00:12:17:DF:A7:2A, 192.168.44.131, WRT54GS v1.1 | * 00:12:17:DF:A7:28, 00:12:17:DF:A7:2A, 192.168.44.131, WRT54GS v1.1 | ||
− | |||
* 00:0F:66:24:EE:2F, 00:0F:66:24:EE:31, 192.168.44.133, WRT54G v1.1 | * 00:0F:66:24:EE:2F, 00:0F:66:24:EE:31, 192.168.44.133, WRT54G v1.1 | ||
− | |||
* 00:12:17:26:EB:84, 00:12:17:26:EB:86, 192.168.44.135, WRT54G v2 | * 00:12:17:26:EB:84, 00:12:17:26:EB:86, 192.168.44.135, WRT54G v2 | ||
+ | * 00:18:84:25:69:50, 00:18:84:25:69:51, 192.168.44.136, Fonera | ||
+ | * 00:18:84:10:2F:7C, 00:18:84:10:2F:7D, 192.168.44.137, Fonera | ||
+ | * 00:18:84:1C:EB:28, 00:18:84:1C:EB:29, 192.168.44.138, Fonera | ||
+ | * 00:18:84:13:A5:50, 00:18:84:13:A5:51, 192.168.44.139, Fonera | ||
+ | * 00:18:84:12:F7:2C, 00:18:84:12:F7:2D, 192.168.44.140, Fonera | ||
+ | * 00:18:84:21:6B:8C, 00:18:84:21:6B:8D, 192.168.44.141, Fonera | ||
+ | * 00:18:84:27:19:5C, 00:18:84:27:19:5D, 192.168.44.142, Fonera | ||
+ | * 00:18:84:1C:F7:4C, 00:18:84:1C:F7:4D, 192.168.44.143, Fonera | ||
+ | * 00:18:84:25:28:E4, 00:18:84:25:28:E5, 192.168.44.144, Fonera | ||
+ | * 00:18:84:28:90:78, 00:18:84:28:90:79, 192.168.44.145, Fonera | ||
+ | * 00:18:84:25:DF:50, 00:18:84:25:DF:51, 192.168.44.146, Fonera | ||
+ | * 00:18:84:27:7E:E0, 00:18:84:27:7E:E1, 192.168.44.147, Fonera | ||
+ | * 00:11:2F:9D:15:86, 00:11:2F:9D:15:86, 192.168.44.148, WL500GD | ||
+ | * 00:11:2F:9D:15:98, 00:11:2F:9D:15:98, 192.168.44.149, WL500GD | ||
+ | * 00:11:2F:9D:15:43, 00:11:2F:9D:15:43, 192.168.44.150, WL500GD | ||
+ | * XX:XX:XX:XX:XX:XX, , 192.168.20.166, LAPTOP | ||
+ | |||
+ | == Layer 2 measurement == | ||
+ | |||
+ | As with '''any''' Wifi Network - layer 2 is the most important. If layer 2 does not work properly, there is little sense in working with any layer 3 routing protocol: it would not work anyway. | ||
+ | So here is a script which can interpret the iwconfig command on broadcom based systems (linksys WRT54G* etc): | ||
+ | |||
+ | How to use the script: | ||
+ | while $TRUE; do | ||
+ | for h in $hosts; do | ||
+ | ssh $h iwconfig wl0 >> $outfile | ||
+ | done | ||
+ | sleep 1 | ||
+ | done | ||
+ | |||
+ | |||
+ | |||
+ | === script for broadcom iwconfig === | ||
+ | <pre> | ||
+ | #!/usr/bin/perl | ||
+ | # Copyright 2009 (C) by L. Aaron Kaplan <aaron@lo-res.org> all rights reserved | ||
+ | # | ||
+ | |||
+ | use strict; | ||
+ | use Time::HiRes; | ||
+ | |||
+ | # format iwconfig | ||
+ | #wl0 IEEE 802.11-DS ESSID:"wbm2009-olsr" | ||
+ | # Mode:Ad-Hoc Frequency:2.412 GHz Cell: CA:CA:FE:CA:CA:20 | ||
+ | # Bit Rate=54 Mb/s Tx-Power:32 dBm | ||
+ | # Retry min limit:7 RTS thr:off Fragment thr:off | ||
+ | # Power Management:off | ||
+ | # Link Quality=5/5 Signal level=-49 dBm Noise level=-94 dBm | ||
+ | # Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 | ||
+ | # Tx excessive retries:2 Invalid misc:0 Missed beacon:0 | ||
+ | |||
+ | my $essid; | ||
+ | my $mode; | ||
+ | my $cell; | ||
+ | my $freq; | ||
+ | my $bitrate; | ||
+ | my $txpower; | ||
+ | my $radio_lq; | ||
+ | my $signal; | ||
+ | my $noise; | ||
+ | my $ts; | ||
+ | |||
+ | my $debug = 0; | ||
+ | $ts = Time::HiRes::time; | ||
+ | print "ts = $ts, localtims(ts)=" . localtime($ts) . "\n" if $debug; | ||
+ | |||
+ | while (<>) { | ||
+ | my $line = $_; | ||
+ | chomp($line); | ||
+ | |||
+ | # if ($line =~ /^$/) { last; } # done | ||
+ | |||
+ | if ($line =~ /ESSID:\"([^\"]+)/) { | ||
+ | $essid = $1; | ||
+ | } | ||
+ | |||
+ | |||
+ | if ($line =~ /Mode:\s*([^ ]+)/) { | ||
+ | $mode = $1; | ||
+ | } | ||
+ | if ($line =~ /Frequency:\s*([^ ]+)\s*GHz/) { | ||
+ | $freq = $1; | ||
+ | } | ||
+ | if ($line =~ /Cell:\s*([^ ]+)/) { | ||
+ | $cell = $1; | ||
+ | } | ||
+ | if ($line =~ /Bit Rate=\s*([^ ]+)\s*Mb\/s/) { | ||
+ | $bitrate = $1; | ||
+ | } | ||
+ | if ($line =~ /Tx-Power:\s*([^ ]+)\s*dBm/) { | ||
+ | $txpower = $1; | ||
+ | } | ||
+ | if ($line =~ /Link Quality=\s*([^ ]+)/) { | ||
+ | $radio_lq = $1; | ||
+ | } | ||
+ | if ($line =~ /Signal level=\s*([^ ]+)/) { | ||
+ | $signal = $1; | ||
+ | } | ||
+ | if ($line =~ /Noise level=\s*([^ ]+)/) { | ||
+ | $noise = $1; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | print <<EOT; | ||
+ | timestamp;ESSID;mode;cell;freq;bitrate;txpower;radio_lq;signal;noise | ||
+ | $ts;$essid;$mode;$cell;$freq;$bitrate;$txpower;$radio_lq;$signal;$noise | ||
+ | EOT | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | === Data Gathering === | ||
+ | |||
+ | Here's the script that was used on 3 Fonera 2202 to collect tcpdump raw capture files on USB sticks: | ||
+ | <pre> | ||
+ | #!/bin/sh /etc/rc.common | ||
+ | # Copyright (C) 2009 OpenWrt.org | ||
+ | |||
+ | START=99 | ||
+ | STOP=99 | ||
+ | |||
+ | DATA_DIR=/mnt/usbdrive | ||
+ | DUMP_FILE=$(mktemp $DATA_DIR/tcpdump-XXXXXXXX) | ||
+ | PID_FILE=/var/run/tcpdump.pid | ||
+ | IF=$(uci get network.wifi.ifname) | ||
+ | |||
+ | start() { | ||
+ | local i=1 | ||
+ | while [ ! -d $DATA_DIR ]; do | ||
+ | sleep 1 | ||
+ | [ $i -ge 9 ] && exit 0 | ||
+ | i=$(($i + 1)) | ||
+ | done | ||
+ | tcpdump -i $IF -w $DUMP_FILE -s 0 >/dev/null 2>&1 & | ||
+ | echo $! >$PID_FILE | ||
+ | } | ||
+ | |||
+ | stop() { | ||
+ | [ -f $PID_FILE ] && { | ||
+ | kill -TERM $(cat $PID_FILE) | ||
+ | rm -f $PID_FILE | ||
+ | } | ||
+ | } | ||
+ | </pre> |
Latest revision as of 19:04, 13 April 2009
hackers preparing
File:Olsr viz.tgz battlemesh topology (partial)
Contents
- 1 Call for Participants
- 2 Agenda
- 3 Evaluation
- 4 Hardware platforms
- 5 Software platform
- 6 Wireless configuration
- 7 Network topology
- 8 Setup
- 8.1 Wireless IP adresses
- 8.1.1 Channel: 1, ESSID: wbm2009-olsr, BSSID: CA:CA:FE:CA:CA:20, IP: 192.168.20.0/24
- 8.1.2 Channel: 6, ESSID: wbm2009-babel, BSSID: CA:CA:FE:CA:CA:30, IP: 192.168.30.0/24
- 8.1.3 Channel: 11, ESSID: wbm2009-batman, BSSID: CA:CA:FE:CA:CA:40, IP: 192.168.40.0/24
- 8.1.4 Channel: 1, ESSID: wbm2009, IP: 192.168.44.x/24
- 8.1 Wireless IP adresses
- 9 Layer 2 measurement
Call for Participants
We are pleased to announce that the /tmp/lab will be organizing a Spring Wireless OpenWrt Mesh Contest called “Wireless Battle Mesh” during 2 days (April 11-12th) with the goal of building 3 wireless mesh networks based on embedded hardware running OpenWrt and different concurrent mesh routing protocols.
The targeted architecture will be 3 networks of 25nodes + 1 wireless management network (10-20 nodes) to achieve realistic size of nodes number, data traffic, configuration problems. The architecture will be set-up indoor and outdoor around the building of the /tmp/lab.
OpenWrt will be the selected for the BoardSupportPackage running on the different hardware nodes and a core network configuration will be built on Linux servers with user-friendly features such as :
- VLANs
- Captive portal
- Authentication
- Admin portal
Concerning the mesh-protocols, selected targeted protocols are :
- OLSR : IP-based mesh routing platform (http://olsr.org and OpenWrt package available)
- BATMAN : Layer2-based mesh protocol (http://open-mesh.org) and available as a kernel module for Linux and packaged in OpenWrt
- BABEL : Layer-3 mesh protocol developed by University Paris 7, available for Linux and packaged in OpenWrt (http://www.pps.jussieu.fr/~jch/software/babel/)
Concerning the hardware node, we are looking for hardware sponsors that could enjoy this “real-case” contest by providing 50-100 nodes to the event. This sponsor will be actually displayed on the organization website as well as during the event. The feedbacks for the hardware manufacturers can be not only from the users but also from the network community running real-case test (academic- or community-wide).
The TMPLAB core team.
Agenda
- Friday, April 10th, 8 pm : welcoming of the first people coming and flashing of the node and configuration of the nodes
- Sat, April 11th :
- Morning : setting up the nodes on-site and validation of the different subnets
- Afternoon : first series of tests and measurements with fixed nodes
- Sun 12th :
- Morning : second series of tests and measurement with fixed and mobile nodes (laptops)
- Afternoon : Optimization of the protocols and Conclusion
Evaluation
Criterion
We will evaluate the routing protocols using the following criterion :
- time to setup a node
- CPU activity
- network activity
- convergence time
- scalability
- mobile devices handling
Platform
The evaluation platform consits of a SNMP agent which collects graphs from the different nodes using Cacti.
Hardware platforms
We managed to get sponsoring for such hardware :
- Linksys WRT54G/GS
- Asus WL500G Deluxe/Premium
- Fon Fonera
For each protocol 25 nodes will be setup, with the following quantities :
- FON : 25 nodes
- HSB : 32 nodes
- Wireless-fr : 6 nodes
- Tmplab : 15 nodes
- BATMAN : 10 nodes
- Thus0 : 5 nodes
Total : 93 nodes. In case of problems, spare nodes are highly wanted.
Identification
For each and every single node in the network, please prepare stickers containing the following informations :
- routing protocol in use
- MAC address of the Wi-Fi interface
- IP address in the management network
- Owner
- hostname (e.g: node 1-babel)
Node parts
Each and every single node consists of the following physical parts:
- A wireless router (Linksys, Fon, Asus ...)
- Antennas screwed on the router (no external unless specified)
- Power supply unit
- (Battery)
Software platform
The different software versions in use during the Wireless Battle Mesh are :
- babel-0.94 (and not 0.93 as previously announced), there's also a page about Babel
- olsrd-0.5.6-r4
- batman-adv-r1220
OpenWrt should be Kamikaze 8.09. Broadcom-based hardware should be using the brcm-2.4 image while Atheros-based hardware should be using the atheros target. If you need help flashing your devices do not hesitate to poke Florian and Nico about this.
Software configuration
Every node should be configured with the following settings :
- hostname: node<N>-<routing protocol> (where N can be found using the plan/map and the routing protocol is babel, olsr or batman)
- user: root
- password: wbm2009
We would like to be able to monitor the activity of every node, therefore an aditional SNMP configuration should be done with the following settings :
- version: 2
- community: wbm2009
- permissions: ro
- allow graph disk/flash activity (e.g: disk /)
Package list and repositories
A mirror of the OpenWrt kamikaze 8.09 package repository will be available during the WBM2009. Additionnal packages that we recommend to install are :
- ntpclient (or busybox's rdate)
- wprobe
- snmpd
A local repository containing all the packages has been deployed on ska
Wireless configuration
Each node will be working in Ad-hoc mode using the following settings.
For babel
- SSID: babel
- Channel: 1
- Encryption: none
For Batman
- SSID: batman
- Channel: 5
- Encryption: none
For OLSR
- SSID: olsr
- Channel: 11
- Encryption: none
The resulting /etc/config/wireless is then for Broadcom devices and for a Babel node:
config wifi-device wl0 option type broadcom option channel 1 config wifi-iface option device wl0 option network wifi option mode adhoc option ssid babel option encryption none
For an OLSR node on an Atheros board:
config wifi-device wifi0 option type atheros option channel 11 config wifi-iface option device wifi0 option network wifi option mode sta option ssid olsr option encryption none
Note: we unbridge the LAN interface with the Wi-Fi interface in order to be able to define specific networks on the LAN interface.
Network topology
There will be different subnets corresponding to different purposes.
Protocol wide subnet
This subnet is required for the nodes running a given protocol to work, meaning that the wireless interface in ad-hoc mode must be configured with an address falling within the range defined below:
- Babel: 192.168.40.0/24
- Batman: 192.168.30.0/24
- OLSR: 192.168.20.0/24
An /etc/config/network file for a Babel node looks like this:
#### VLAN configuration config switch eth0 option vlan0 "1 2 3 4 5*" option vlan1 "0 5" #### Loopback configuration config interface loopback option ifname "lo" option proto static option ipaddr 127.0.0.1 option netmask 255.0.0.0 #### LAN configuration config interface lan option type bridge option ifname "eth0.0" option proto static option ipaddr 192.168.2.1 option netmask 255.255.255.0 #### Wi-Fi configuration config interface wifi option ifname "wl0" option proto static option ipaddr 192.168.40.1 option netmask 255.255.255.0
Setup
Nodes have been flashed with custom firmware images:
- root password is set to 'wbm2009' (but not on all routers *g) - pubkey ssh authentication is enabled, keys are available here: http://ska.lan.tmplab.org/ssh/ - to do passwordless login from one node to the next, you may use File:Battle ssh.tgz (contains above key in dropbear format) - LAN configuration was not changed and default to 192.168.1.1/24 - Default wireless configuration is: - ssid: wbm2009 - mode: adhoc - encryption: none
When using ssh with same key and different hosts, it might be convenient to add the following in /etc/ssh/ssh_config:
StrictHostKeyChecking no UserKnownHostsFile /dev/null
Wireless IP adresses
you can set the addres this way:
root@OpenWrt:~# uci set network.wifi.ipaddr="192.168.44.x"; uci commit
you can set th hostname that way:
root@OpenWrt:~# sysctl -w kernel.hostname=olsr2.wrt root@olsr2:~# uci set system.@system[0].hostname=olsr2.wrt; uci commit
00:18:84:21:6B:8C (LAN MAC, WiFi MAC, WiFi IP)
Channel: 1, ESSID: wbm2009-olsr, BSSID: CA:CA:FE:CA:CA:20, IP: 192.168.20.0/24
* 00:0F:66:24:E9:D0, 00:0F:66:24:E9:D2, 192.168.20.1, WRT54G v1.1 , iperf(tcp:5001) * 00:1A:70:FD:4B:03, 00:1A:70:FD:4B:05, 192.168.20.2, WRT54GL v1.1 * 00:16:B6:01:5F:DF, 00:16:B6:01:5F:E1, 192.168.20.3, WRT54GL v1.1 * 00:16:B6:01:5F:E5, 00:16:B6:01:5F:E7, 192.168.20.4, WRT54GS v4 * 00:16:B6:01:66:87, 00:16:B6:01:66:89, 192.168.20.5, WRT54GS v4 , iperf(tcp:5001) * 00:14:BF:E2:B5:3F, 00:14:BF:E2:B5:41, 192.168.20.6, WRT54GS v4 , iperf(tcp:5001) * 00:12:17:DF:A7:28, 00:12:17:DF:A7:2A, 192.168.20.7, WRT54GS v1.1, iperf(tcp:5001) * 00:14:BF:A5:B9:4C, 00:14:BF:A5:B9:4E, 192.168.20.8, WRT54GS v4 , iperf(tcp:5001) * 00:16:B6:01:5F:DC, 00:16:B6:01:5F:DE, 192.168.20.9, WRT54GS v4 * 00:16:B6:01:57:CF, 00:16:B6:01:57:D1, 192.168.20.10, WRT54GS v4 * 00:16:B6:01:5F:E8, 00:16:B6:01:5F:EA, 192.168.20.11, WRT54GS v4, iperf(tcp:5001) * 00:14:BF:D2:65:9E, 00:14:BF:D2:65:A0, 192.168.20.12, WRT54GL * 00:14:BF:D2:65:86, 00:14:BF:D2:65:88, 192.168.20.13, WRT54GL, iperf(tcp:5001) * 00:11:D8:58:9E:92, , 192.168.20.14, ASUSWLHDD * 00:11:D8:43:6B:5D, , 192.168.20.15, ASUSWLHDD * 00:11:D8:58:9C:84, , 192.168.20.16, ASUSWLHDD * 00:16:B6:D9:25:B7, 00:16:B6:D9:25:B9, 192.168.20.17, WRT54GL * 00:11:D8:58:9D:94, , 192.168.20.18, ASUSWLHDD * 00:11:D8:58:A0:A0, , 192.168.20.19, ASUSWLHDD * 00:11:D8:58:9D:7B, , 192.168.20.20, ASUSWLHDD * 00:16:B6:40:DE:3E, 00:16:B6:40:DE:40, 192.168.20.21, WRT54GL * 00:13:D4:D2:09:24, , 192.168.20.22, ASUSWLHDD * 00:18:84:00:70:13, , 192.168.20.23, FONERA * 00:18:84:22:A2:DC, , 192.168.20.24, FONERA * 00:18:84:27:19:5C, , 192.168.20.25, FONERA * 00:18:84:21:6B:8C, , 192.168.20.26, FONERA, iperf(tcp:5001) * 00:18:84:1C:EB:28, , 192.168.20.27, FONERA, iperf(tcp:5001) * XX:XX:XX:XX:XX:XX, , 192.168.20.166, LAPTOP
Channel: 6, ESSID: wbm2009-babel, BSSID: CA:CA:FE:CA:CA:30, IP: 192.168.30.0/24
* 00:18:84:27:7E:E0, 00:18:84:27:7E:E1, 192.168.30.2, Fonera (dzeta) * 00:18:84:28:90:78, 00:18:84:28:90:79, 192.168.30.3, Fonera (eta) * 00:16:B6:40:F2:CC, 00:16:B6:40:F2:CE, 192.168.30.4, WRT54GL * 00:16:B6:40:F2:C0, 00:16:B6:40:F2:C2, 192.168.30.5, WRT54GL * 00:18:39:BC:39:54, 00:18:39:BC:39:56, 192.168.30.6, WRT54GL * 00:16:B6:41:02:8C, 00:16:B6:41:02:8E, 192.168.30.7, WRT54GL * 00:16:B6:40:F2:D5, 00:16:B6:40:F2:D7, 192.168.30.8, WRT54GL * 00:16:B6:40:F2:DB, 00:16:B6:40:F2:DD, 192.168.30.9, WRT54GL * 00:0F:66:C7:C0:AD, 00:0F:66:C7:C0:AF, 192.168.30.10, WRT54GS * 00:14:bf:d2:65:86, , 192.168.30.11, WRT54GL * 00:14:bf:d2:65:9e, , 192.168.30.12, WRT54GL * 00:11:D8:43:6A:27, , 192.168.30.14, ASUSWLHDD * 00:11:2F:9D:1B:E4, , 192.168.30.15, ASUSWLHDD * 00:11:D8:58:9D:9A, , 192.168.30.16, ASUSWLHDD * 00:14:bf:d2:6c:04, , 192.168.30.17, WRT54GL * 00:11:D8:58:9D:10, , 192.168.30.18, ASUSWLHDD * 00:11:D8:43:6A:C9, , 192.168.30.19, ASUSWLHDD * 00:11:D8:13:D4:D2, , 192.168.30.20, ASUSWLHDD * 00:11:D8:58:9F:1D, , 192.168.30.22, ASUSWLHDD * 00:18:84:25:69:50, , 192.168.30.23, Fonera * 00:18:84:25:df:50, , 192.168.30.24, Fonera * 00:18:84:28:90:78, , 192.168.30.26, Fonera * 00:18:84:25:1A:60, , 192.168.30.27, Fonera * XX:XX:XX:XX:XX:XX, , 192.168.20.166, LAPTOP
CONFLICTING (find it and change ip) :
* 00:1F:C6:62:28:0F, 00:1F:C6:62:28:0F, 192.168.30.25, Asus WL-500Gpv2
Channel: 11, ESSID: wbm2009-batman, BSSID: CA:CA:FE:CA:CA:40, IP: 192.168.40.0/24
* 192.168.40.1, 00:0F:66:24:EE:2F, WRT54G * 192.168.40.2, 00:14:BF:BF:E6:5C, WRT54G v3.1, iperf(tcp:5001) * 192.168.40.3, 00:12:17:26:EB:84, WRT54G v2 * 192.168.40.5, 00:13:10:30:21:9G, WRT54GS 1.1, iperf(tcp:5001) * 192.168.40.6, 00:16:B6:40:F9:F2, WRT54GLgl 1.1 * 192.168.40.7, 00:14:BF:D2:65:A1, WRT54GL, iperf(tcp:5001) * 192.168.40.8, 00:16:B6:40:F2:C6, WRT54GL * 192.168.40.9, 00:0F:66:C7:B9:6F, WRT54GS * 192.168.40.10, 00:16:B6:40:F2:C3, WRT54GL * 192.168.40.11, 00:16:B6:40:F2:D8, WRT54GL * 192.168.40.13, 00:16:B6:40:F2:D2, WRT54GL * 192.168.40.14, 00:15:f2:32:f0:84, ASUS WLHDD * 192.168.40.15, 00:11:D8:58:9F:6E, ASUS WLHDD * 192.168.40.16, 00:13:D4:D2:09:01, ASUS WLHDD * 192.168.40.18, 00:11:D8:58:A0:9F, ASUS WLHDD * 192.168.40.19, 00:11:D8:58:9E:b9, ASUS WLHDD * 192.168.40.20, 00:11:D8:58:9e:75, ASUS WLHDD * 192.168.40.21, 00:11:2F:9D:15:86, ASUS WL500GD * 192.168.40.23, 00:18:84:1C:F7:4C, Fonera * 192.168.40.24, 00:18:84:25:28:E4, Fonera * 192.168.40.25, 00:18:84:13:A5:50, Fonera * 192.168.40.26, 00:18:84:12:F7:2C, Fonera * 192.168.40.27, 00:18:84:11:A1:E4, Fonera, iperf(tcp:5001) * 192.168.40.xx, 00:10:72:88:7F:BE, WRT54GS * XX:XX:XX:XX:XX:XX, , 192.168.20.166, LAPTOP
Channel: 1, ESSID: wbm2009, IP: 192.168.44.x/24
* 00:0F:66:C7:C0:AD, 00:0F:66:C7:C0:AF, 192.168.44.101, WRT54GS * 00:16:B6:40:F2:C6, 00:16:B6:40:F2:C8, 192.168.44.102, WRT54GL * 00:14:BF:D2:65:A1, 00:14:BF:D2:65:A3, 192.168.44.103, WRT54GL * 00:16:B6:D9:25:B7, 00:16:B6:D9:25:B9, 192.168.44.104, WRT54GL * 00:16:B6:40:F2:D5, 00:16:B6:40:F2:D7, 192.168.44.105, WRT54GL * 00:16:B6:40:F2:C0, 00:16:B6:40:F2:C2, 192.168.44.107, WRT54GL * 00:16:B6:40:F9:F2, 00:16:B6:40:F9:F4, 192.168.44.108, WRT54GL * 00:16:B6:40:F2:CF, 00:16:B6:40:F2:D1, 192.168.44.109, WRT54GL * 00:14:BF:D2:6C:04, 00:14:BF:D2:6C:06, 192.168.44.110, WRT54GL * 00:16:B6:40:F2:D2, 00:16:B6:40:F2:D4, 192.168.44.111, WRT54GL * 00:16:B6:40:F2:D8, 00:16:B6:40:F2:DA, 192.168.44.112, WRT54GL * 00:16:B6:40:F2:CC, 00:16:B6:40:F2:CE, 192.168.44.113, WRT54GL * 00:16:B6:40:F2:C3, 00:16:B6:40:F2:C5, 192.168.44.114, WRT54GL * 00:14:BF:D2:65:86, 00:14:BF:D2:65:88, 192.168.44.115, WRT54GL * 00:14:BF:D2:65:9E, 00:14:BF:D2:65:A0, 192.168.44.116, WRT54GL * 00:18:39:BC:39:54, 00:18:39:BC:39:56, 192.168.44.117, WRT54GL * 00:16:B6:41:02:8C, 00:16:B6:41:02:8E, 192.168.44.118, WRT54GL * 00:16:B6:40:DE:3E, 00:16:B6:40:DE:40, 192.168.44.119, WRT54GL * 00:1A:70:FD:4B:03, 00:1A:70:FD:4B:05, 192.168.44.120, WRT54GL * 00:14:BF:E2:B5:3F, 00:14:BF:E2:B5:41, 192.168.44.121, WRT54GS v4 * 00:16:B6:01:66:87, 00:16:B6:01:66:89, 192.168.44.122, WRT54GS v4 * 00:16:B6:01:5F:E5, 00:16:B6:01:5F:E7, 192.168.44.123, WRT54GS v4 * 00:16:B6:01:5F:DF, 00:16:B6:01:5F:E1, 192.168.44.124, WRT54GS v4 * 00:16:B6:01:5F:E8, 00:16:B6:01:5F:EA, 192.168.44.125, WRT54GS v4 * 00:16:B6:01:57:CF, 00:16:B6:01:57:D1, 192.168.44.126, WRT54GS v4 * 00:16:B6:01:5F:DC, 00:16:B6:01:5F:DE, 192.168.44.127, WRT54GS v4 * 00:14:BF:A5:B9:4C, 00:14:BF:A5:B9:4E, 192.168.44.128, WRT54GS v4 * 00:0F:66:C7:B9:6F, 00:0F:66:C7:B9:71, 192.168.44.129, WRT54GS * 00:13:10:07:EE:FC, 00:13:10:07:EE:FE, 192.168.44.130, WRT54GS v1.1 * 00:12:17:DF:A7:28, 00:12:17:DF:A7:2A, 192.168.44.131, WRT54GS v1.1 * 00:0F:66:24:EE:2F, 00:0F:66:24:EE:31, 192.168.44.133, WRT54G v1.1 * 00:12:17:26:EB:84, 00:12:17:26:EB:86, 192.168.44.135, WRT54G v2 * 00:18:84:25:69:50, 00:18:84:25:69:51, 192.168.44.136, Fonera * 00:18:84:10:2F:7C, 00:18:84:10:2F:7D, 192.168.44.137, Fonera * 00:18:84:1C:EB:28, 00:18:84:1C:EB:29, 192.168.44.138, Fonera * 00:18:84:13:A5:50, 00:18:84:13:A5:51, 192.168.44.139, Fonera * 00:18:84:12:F7:2C, 00:18:84:12:F7:2D, 192.168.44.140, Fonera * 00:18:84:21:6B:8C, 00:18:84:21:6B:8D, 192.168.44.141, Fonera * 00:18:84:27:19:5C, 00:18:84:27:19:5D, 192.168.44.142, Fonera * 00:18:84:1C:F7:4C, 00:18:84:1C:F7:4D, 192.168.44.143, Fonera * 00:18:84:25:28:E4, 00:18:84:25:28:E5, 192.168.44.144, Fonera * 00:18:84:28:90:78, 00:18:84:28:90:79, 192.168.44.145, Fonera * 00:18:84:25:DF:50, 00:18:84:25:DF:51, 192.168.44.146, Fonera * 00:18:84:27:7E:E0, 00:18:84:27:7E:E1, 192.168.44.147, Fonera * 00:11:2F:9D:15:86, 00:11:2F:9D:15:86, 192.168.44.148, WL500GD * 00:11:2F:9D:15:98, 00:11:2F:9D:15:98, 192.168.44.149, WL500GD * 00:11:2F:9D:15:43, 00:11:2F:9D:15:43, 192.168.44.150, WL500GD * XX:XX:XX:XX:XX:XX, , 192.168.20.166, LAPTOP
Layer 2 measurement
As with any Wifi Network - layer 2 is the most important. If layer 2 does not work properly, there is little sense in working with any layer 3 routing protocol: it would not work anyway. So here is a script which can interpret the iwconfig command on broadcom based systems (linksys WRT54G* etc):
How to use the script:
while $TRUE; do for h in $hosts; do ssh $h iwconfig wl0 >> $outfile done sleep 1 done
script for broadcom iwconfig
#!/usr/bin/perl # Copyright 2009 (C) by L. Aaron Kaplan <aaron@lo-res.org> all rights reserved # use strict; use Time::HiRes; # format iwconfig #wl0 IEEE 802.11-DS ESSID:"wbm2009-olsr" # Mode:Ad-Hoc Frequency:2.412 GHz Cell: CA:CA:FE:CA:CA:20 # Bit Rate=54 Mb/s Tx-Power:32 dBm # Retry min limit:7 RTS thr:off Fragment thr:off # Power Management:off # Link Quality=5/5 Signal level=-49 dBm Noise level=-94 dBm # Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 # Tx excessive retries:2 Invalid misc:0 Missed beacon:0 my $essid; my $mode; my $cell; my $freq; my $bitrate; my $txpower; my $radio_lq; my $signal; my $noise; my $ts; my $debug = 0; $ts = Time::HiRes::time; print "ts = $ts, localtims(ts)=" . localtime($ts) . "\n" if $debug; while (<>) { my $line = $_; chomp($line); # if ($line =~ /^$/) { last; } # done if ($line =~ /ESSID:\"([^\"]+)/) { $essid = $1; } if ($line =~ /Mode:\s*([^ ]+)/) { $mode = $1; } if ($line =~ /Frequency:\s*([^ ]+)\s*GHz/) { $freq = $1; } if ($line =~ /Cell:\s*([^ ]+)/) { $cell = $1; } if ($line =~ /Bit Rate=\s*([^ ]+)\s*Mb\/s/) { $bitrate = $1; } if ($line =~ /Tx-Power:\s*([^ ]+)\s*dBm/) { $txpower = $1; } if ($line =~ /Link Quality=\s*([^ ]+)/) { $radio_lq = $1; } if ($line =~ /Signal level=\s*([^ ]+)/) { $signal = $1; } if ($line =~ /Noise level=\s*([^ ]+)/) { $noise = $1; } } print <<EOT; timestamp;ESSID;mode;cell;freq;bitrate;txpower;radio_lq;signal;noise $ts;$essid;$mode;$cell;$freq;$bitrate;$txpower;$radio_lq;$signal;$noise EOT
Data Gathering
Here's the script that was used on 3 Fonera 2202 to collect tcpdump raw capture files on USB sticks:
#!/bin/sh /etc/rc.common # Copyright (C) 2009 OpenWrt.org START=99 STOP=99 DATA_DIR=/mnt/usbdrive DUMP_FILE=$(mktemp $DATA_DIR/tcpdump-XXXXXXXX) PID_FILE=/var/run/tcpdump.pid IF=$(uci get network.wifi.ifname) start() { local i=1 while [ ! -d $DATA_DIR ]; do sleep 1 [ $i -ge 9 ] && exit 0 i=$(($i + 1)) done tcpdump -i $IF -w $DUMP_FILE -s 0 >/dev/null 2>&1 & echo $! >$PID_FILE } stop() { [ -f $PID_FILE ] && { kill -TERM $(cat $PID_FILE) rm -f $PID_FILE } }