Wireless Battle Mesh (Paris, 11-12 April)

Announcement

We are pleased to announce that our friends at /tmp/lab (hackerspace paris) 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.

Aim

The targeted architecture will be 3 networks of 25nodes + 1 wireless managment networks (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

Mesh protocols

Concerning the mesh-protocols, selected targeted protocols are :

  • OLSR: IP-based mesh routing platform (OpenWRT package available)
  • BATMAN: Layer2-based mesh protocol and available as a kernel module for Linux and packaged in OpenWRT
  • BABEL: Layer-3 mesh protocol developed by University Paris 6, available for Linux and soon to be packaged for OpenWRT

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).

Who wants to join?

HSB is organising a car pooling. Register yourself on Doodle if you want to go to Paris with us.
For the moment 2 cars are driving (ghent-bxl-paris and back).

What hardware do we have?

  • 20 + 2 ASUS WL-HDD (only 3 powersupply and no HD)
  • 10 foneras (zoobab)
  • some batteries pack

Preparing the nodes

  • IP: 192.168.20.0/24 -> 25 nodes. Starting from: 192.168.20.5. The rest of the nodes in 192.168.30.0/24
  • Protocol: OLSR
  • we have two scripts: one to flash (from openwrt.org) and created one to remotely set the passwd, ip and hostname.
  • Need to create script so we can configure all the nodes via ssh.

If you are coming

  • Bring ethernet cables and power splitters
  • A sleeping bag if planning to sleep over
  • Deo. No really.

Pictures

Debriefing

Dual channel

Zoobab tried to explain to other participants why hopping on the same radio was not very powerful in terms of bandwidth. Hopping over the same radio means:

  • dividing the bandwidth by two at each hop and
  • choosing the worst radio link of your two neighboors

The company MeshDynamics has showed for many years now that the approach of hopping over the same radio is a disaster.

Zoobab created a mesh with 4 nodes with 2 foneras each connected with an ethernet cable in between. He tested the batman in user-space (batmand-static) as well as Babel, and none of them were choosing the fastest route through the cables. The developer of Babel then wrote a patch (diversity-hack.patch) in order to add a cost when hopping on the same radio interface:

diff -rN -u old-babel_0/message.c new-babel_0/message.c
--- old-babel_0/message.c    2009-04-12 18:01:04.599262483 +0200
+++ new-babel_0/message.c    2009-04-12 18:01:04.603262266 +0200
@@ -715,15 +715,25 @@
     int add_metric, v4, real_plen, omit = 0;
     const unsigned char *real_prefix;
     unsigned short flags = 0;
+    struct route *route;
 
     if(!net_up(net))
         return;
 
     add_metric = output_filter(id, prefix, plen, net->ifindex);
+
     if(add_metric >= INFINITY)
         return;
 
     metric = MIN(metric + add_metric, INFINITY);
+
+    if(metric < INFINITY) {
+        route = find_installed_route(prefix, plen);
+        if(route && net != route->neigh->network) {
+            metric = MAX(1, metric - 128);
+        }
+    }
+
     /* Worst case */
     ensure_space(net, 20 + 12 + 28);

This gave birth to a new package babel_0.94-1zoo_mips.ipk for the fonera for Kamikaze 8.09 (I won't explain you how to recompile packages with a patch, but it is pretty easy).

Otherwise Julius, the main developer behind Babel, just posted a summary on the Babel-users mailing-list:

Together with one of the Belgian guys, we implemented a variant of Babel
that takes link diversity into account (using a gross simplification of the
MIC metric). In the particular configuration that we implemented (six
Foneras running on three different channels and pairwise connected by wired
Ethernet), the results are dramatic — the algorithm is able to choose the
maximum diversity route, which leads to a 5-fold improvement in transfer
rate (Benjamin, do you have the exact figures?). The code we used for
testing is somewhat hackish, I need to think about it some more before
I can include such an algorithm within the Babel trunk.

Iperf

The iperf package of openwrt does not start in server mode at all, so there is a need of an init script at boot time:

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=50

BIN=/usr/bin/iperf

start() {
        $BIN -s -D
}

stop() {
        killall iperf
}

You can copy this script in your /etc/init.d/ directory with scp. And then activate it with the following command:

root@OpenWrt# /etc/init.d/iperf enable

It will then automatically start at boot.

Packages and files

Put all the files used here.