Babel Wireless Routing Protocol Workshop

From Hackerspace Brussels
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/


Contents

[edit] Goal

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

[edit] Attendees

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

[edit] Software

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

[edit] Hardware

  • Pairs of foneras, powered or not on batteries

[edit] Static routing

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

[edit] WBMv31416 config

#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

[edit] static route python script

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],  
 

[edit] Tests

  • generate some packet loss
  • UDP and TCP tests

[edit] Links