[Babel-users] Babel for use in a dense disconnected mesh network
Jason Palmer
Jason.Palmer at trutest.co.nz
Fri Jun 21 00:26:04 UTC 2013
I am looking at the possibility of using babel over an 802.11N wireless network for one of our systems.
The system consists of a number of portable devices, one acting as a webserver/database server, one or more hand-held smart phones or tablets, and 10-100 measurement devices - all in the same building. The measurement devices would be placed 1-2 metres apart, either in one or two rows or in a loop. The server node would be located at an arbitrary position in the same room as the measurement devices. The users interact with an application running on the central node either through the browser or an application on the hand-held device. This network is not necessarily connected to any other network, or the www.
At this point I am not sure whether an infrastructure mode or a mesh network would be better suited, so I have been experimenting with babel. The main issue with infrastructure mode would be that range could be an issue with only one access point. Using a mesh network would address the range issue, at the expense of throughput and latency for nodes that could not talk directly to the server node. Mesh access points would need to be added so that the hand-held devices could communicate with the server node across the mesh.
Setup: Raspberry Pi, Arch Linux, babel 1.4.0, TP-Link TL-WN721N USB Wi-Fi adapter.
I have created systemd services to bring up wlan0 in ad-hoc mode with an appropriate static IPv4 address, and another starts babeld after the wlan0 interface is up. (Though it is nice to now see that 1.4.2 provides a system service and conf template).
I have had some success with a limited number of devices (9-12) in close proximity, but recent experiments with more devices (24-30) have caused an instability and now I have managed to break the mesh more frequently than I have in the past. I have a feeling that I have not configured babel or the wlan adapter appropriately for this number of devices, or that I may be running into the 802.11 ad-hoc limitations. The routing table appeared to be stable when bench testing, with most of the devices having a 1:1 mapping in the routing table.
There is nothing of particular interest in the normal babeld.log. There are lines in dmesg of the type "wlan0: failed to move IBSS STA <mac address> to state 3 (-105) - keeping it anyway". Other issues appear to be coming up in the /var/log/babeld.log as
"Warning: bucket full, dropping packet to wlan0"
"Warning: bucket full, dropping unicast packet to
"Interface wlan0 has no link-local address"
"setsocketopt(IPV6_LEAVE_GROUP): Cannot assign requested address"
"send(unicast): Cannot assign requested address"
"send: Cannot assign requested address"
These particular Wi-Fi adapters support a maximum of 7 connected devices when they are used in a soft-access point mode. I imagine the same holds for use in ad-hoc mode, though the device appears to be able to connect sequentially to a number much larger than this (ping tests, custom python scripts, shell scripts using scp or ssh).
Are there any obvious settings that are required for babel to work in dense mesh networks? Would increasing the hello interval reduce the load on the network (though babel already appears to have a relatively low overhead).
Regards,
JASON PALMER
More information about the Babel-users
mailing list