Babel Wireless Routing Protocol Workshop

From Hackerspace Brussels
Revision as of 22:24, 8 October 2011 by Zoobab (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Babel Wireless Routing Protocol Workshop
Fri 07 Oct 2011 19:00
till Sun 09 Oct 2011 20:00
Babel.png
What:
Babel Wireless Routing Protocol Workshop
Tagline:
Babel Wireless Routing Protocol Workshop
Where:
HSB Brussels,Belgium
Cost:
0
Who:
zoobab and others
URL:
http://www.pps.jussieu.fr/~jch/software/babel/


Goal[edit]

Test the diversity (multiple radios) version of Babel, a wireless routing protocol.

Attendees[edit]

If you plan to attend this event, please register on the doodle.

Software[edit]

You can checkout the source code on Github:

 git clone https://github.com/jech/babeld.git

(Note that you MUST NOT checkout the babelz branch — the most recent version of babelz is now included in the git trunk and in the released version 1.2.0.)

Openwrt package version 1.2.0 includes babelz in trunk.

Zoobab compiled babeld from trunk for the fonera:

 http://zoobab.dyndns.org/fonera/
 http://zoobab.dyndns.org/fonera/bin/atheros/packages/babeld_1.2.0-1_atheros.ipk

Hardware[edit]

  • Pairs of foneras, powered or not on batteries

Static routing[edit]

Static routing will be taken as a reference route. Get the script fro owrtconfig to setup the route in one script.

WBMv31416 config[edit]

#MAC,             PARAM1,   PARAM2,       PARAM3,      PARAM4, PARAM5,PARAM6         ,PARAM7                                                                                                                                                                                                ,PARAM8        ,PARAM9
#MAC,             hostname, wired-ip,     wireless-ip, x,   channel, cell            ,return-routes ,forward-routes ,PARAM9
00:18:84:29:ca:5c , 10,  192.168.110.10, 192.168.01.10, x  ,  01  , 02:02:02:02:02:01
00:18:84:24:07:78 , 20,  192.168.110.20, 192.168.13.20, x  ,  13  , 02:02:02:02:02:13
00:18:84:26:74:40 , 30,  192.168.130.30, 192.168.01.30, x  ,  01  , 02:02:02:02:02:01
00:18:84:29:be:44 , 40,  192.168.130.40, 192.168.13.40, x  ,  13  , 02:02:02:02:02:13
00:18:84:2a:e3:98 , 50,  192.168.150.50, 192.168.01.50, x  ,  01  , 02:02:02:02:02:01
00:18:84:29:b0:0c , 60,  192.168.150.60, 192.168.13.60, x  ,  13  , 02:02:02:02:02:13
00:18:84:24:a1:d0 , 70,  192.168.170.70, 192.168.01.70, x  ,  01  , 02:02:02:02:02:01
00:18:84:29:af:50 , 80,  192.168.170.80, 192.168.13.80, x  ,  13  , 02:02:02:02:02:13

#00:18:84:29:cb:88 , zoo02,  192.168.4.2, 192.168.3.2, x  ,  1  , 02:02:02:02:02:02

static route python script[edit]

import networkx as nx
import matplotlib.pyplot as plt
import re

G=nx.Graph()

nodes = dict();
nodes["A"] = ("192.168.30.1","192.168.10.1")
nodes["B"] = ("192.168.30.2","192.168.15.2")
nodes["C"] = ("192.168.35.3","192.168.15.3")
nodes["D"] = ("192.168.35.4","192.168.20.4")
nodes["E"] = ("192.168.40.5","192.168.20.5")

def add_edge(a,b):
  subnetA0 = re.findall(r'.*\..*\.(.*)\..*', nodes[a][0])
  subnetB0 = re.findall(r'.*\..*\.(.*)\..*', nodes[b][0])
  subnetA1 = re.findall(r'.*\..*\.(.*)\..*', nodes[a][1])
  subnetB1 = re.findall(r'.*\..*\.(.*)\..*', nodes[b][1])
  if (subnetA0 == subnetB0):
     G.add_edge(nodes[a][0],nodes[b][0])
  if (subnetA1 == subnetB1):
     G.add_edge(nodes[a][1],nodes[b][1])

add_edge("A","B")
add_edge("B","C")
add_edge("C","D")
add_edge("D","E")


for all in nodes.keys():
  G.add_edge(nodes[all][0], nodes[all][1])

path=nx.single_source_dijkstra_path(G,nodes["A"][0])

# nx.draw(G);
# plt.show();

for node in nodes.keys():
   print 
   print node
   for ip in nodes[node]:
    path=nx.single_source_dijkstra_path(G,ip)
    for i in path.keys():
      #print " route from", ip, " to ", i, " through ", path[i][0]  
      if ip != i:
        print " && route add -host", i, " gw ", path[i][1],  
 

Tests[edit]

  • generate some packet loss
  • UDP and TCP tests

Links[edit]