Babel Wireless Routing Protocol Workshop
From Hackerspace Brussels
|
Contents
Goal
Test the diversity (multiple radios) version of Babel, a wireless routing protocol.
Attendees
If you plan to attend this event, please register on the doodle.
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
Hardware
- Pairs of foneras, powered or not on batteries
Static routing
Static routing will be taken as a reference route. Get the script fro owrtconfig to setup the route in one script.
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
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],
Tests
- generate some packet loss
- UDP and TCP tests