For quite some time the term "translation table" keeps showing up in emails, release announcements and patches but why making such a fuzz about it ? The initial translation table release (batman-adv 2011.3.0) appeared a number of months ago and still, code refinements as well as new translation table features find their way into each release. It is about time to shed some light on what makes the translation table a vital component of a batman-adv mesh network.
The translation table¶
In most batman-adv mesh networks you have the mesh nodes building the backbone of your network and a number of ordinary (non-mesh) clients using the mesh network to exchange data amongst each other or to connect to external networks (e.g. the internet). Since the non-mesh clients do not participate in the mesh itself a mechanism is needed to share the information about the client's location within the network. That is the primary task of the translation table: At every given moment it knows which non-mesh client is connected to the mesh network via which batman-adv node. Without this information non-mesh clients would not be able to receive any traffic because no other node would know where to send the packets to.
One of the new concepts introduced with the translation table is the versioning of local changes. All non-mesh clients connecting or disconnecting from a mesh node within an OGM interval belong to the same translation table version. Once the translation table changes the new version is published in the network allowing neighbor nodes to request a translation table diff instead of the whole table, thereby drastically reducing the overhead. It also is possible to ask his direct neighbor for the current translation table of any other mesh node in the network as the tables can be identified using the version number. Large mesh networks do not need to retrieve the translation table from the far end of the mesh but can simply query their neighbors.
More features¶
Due to the extensible nature of the translation table a number of features could be built on top of it. Notable examples are the AP Isolation and fast roaming support. With mobile devices getting more and more popular roaming is an often requested feature. To avoid connection loss while moving from one mesh node to the next it is imperative to sync all involved nodes about the non-mesh client's new location as fast as possible.
In order to illustrate the difficulty and how the translation table code handles this situation it is best to look at an example. Here we have a non-mesh client exchanging data with node1 while being connected to node9.
As soon as the non-mesh client roams from node9 to node10 the stream is disconnected until node1 learns the new location of our client. Depending on various parameters this synchronization can take a long time. This is how the old mechanism (pre translation table) recovered while running a 5sec OGM interval with 25% packet loss between each node (the blue bar marks the roaming event):
The old mechanism needed roughly 65 seconds to recover the stream from the client's roaming. Testing the translation table under the same circumstances looks much better:
Further reading¶
All this merely is the tip of the iceberg. The translation table is the key player when it comes to integrating non-mesh clients as efficiently as possible. A number of documents are available for the curious reader:
Happy routing,
The B.A.T.M.A.N. team
The B.A.T.M.A.N. team is delighted to announce its newest release, 2012.1.0, bringing mainly bug fixes and code cleanups. Also part of the release is a newly developed routing algorithm framework which allows switching between different routing algorithms. As the kernel module always depends on the Linux kernel it was compiled against, it does not make sense to provide binaries on our website. As usual, you will find the signed tarballs in our download section:
https://downloads.open-mesh.org/batman/releases/batman-adv-2012.1.0/
as well as prepackaged binaries in your distribution.
Thanks¶
Thanks to all people sending in patches:
and to all those that supported us with good advice or rigorous testing:
batman-adv¶
Most changes coming with this release happened under the hood to either improve stability or pave the way for new features, most notably the routing algorithm abstraction. Over the last months several ideas centering around the question how to improve the current routing algorithm have surfaced. To better experiment with these ideas while keeping a working system for our users the routing algorithm abstraction was added. It allows to easily develop and test new routing concepts while taking advantage of the existing batman-adv features and infrastructure. The API will be further refined with the next releases to enable alternative algorithms to be included as well.
The translation table code received further attention which led to the discovery of endless loops in the tt-request mechanism (under certain circumstances). This was addressed along with a TT_CLIENT_NEW flag race condition when a new client was added to the internal hash. All batman-adv internal timeouts have been converted to milliseconds for consistency purposes. Even the batman-adv makefile was modernized to provide an install target and a selection system for conveniently compiling features into the module.
batctl¶
Each batman-adv (layer 2) ICMP packet used to ping or traceroute a node comes with a sequence number to detect failures. Prior to this release batctl ping/traceroute did not compare the outgoing sequence number with the incoming sequence number to verify whether they indeed match. In WiFi environments exhibiting high packet loss and excessive packet retransmissions this missing check led to false results.
Furthermore, the return code of batctl ping was improved to properly indicate a failure.
Happy routing,
The B.A.T.M.A.N. team
You may already have seen the nice B.A.T.M.A.N. T-Shirts on some of the geeks out there. Now you can finally buy them online - thanks to the nice persons from freewear.org!
https://www.freewear.org/?org=B.A.T.M.A.N.
And this is how it looks like - from the Wireless Battle of the Mesh 2012 in Athens
the student application period for the Google Summer of Code 2012 has opened.
A chance for any student to get their hands dirty on their favorite OpenSource
project and getting its development process and code base to know better
during these 2 months - while getting payed for it!
As last year, B.A.T.M.A.N. tasks will be done as part of the freifunk project,
which again will serve as an umbrella organization for various projects dealing
with wireless mesh networks.
If you are interested in mesh networking and B.A.T.M.A.N. and if you also love
OpenSource software and would like to become a more firm part of it, then please
apply on fore freifunk:
https://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/timeline
and get in touch with us via mailinglist and/or IRC. So far the following ideas
have been collected which you may apply for:
https://wiki.freifunk.net/Ideas#B.A.T.M.A.N.
But feel free to tell us your own suggestions and ideas, too.
***** ****
*** Student application deadline is the 6th of April!! ***
**** *****
Happy routing,
The B.A.T.M.A.N. team
We all love our blinking routers when they happily exchange our data. One of the things we have definitely not thought of while designing batman-adv: These LEDs can even have a higher meaning! Sean McIntyre and Jonathan Kiritharan created this nice Conway’s Game of Life implementation on 8 routers based on OpenWrt and batman-adv. Enjoy this fine art project!
More details, source code and a video can be found on the project page: http://www.boxysean.com/portfolio/mesh4lyfe/
(BTW, also Hack A Day featured this project: https://hackaday.com/2012/02/04/using-routers-as-displays/ )
Thanks for this wonderful hack!
Today the B.A.T.M.A.N. team releases its latest edition, 2012.0.0, containing a series of stabilization changes and bug fixes. This release does not introduce any new features and uniquely focuses on stability. As the kernel module always depends on the Linux kernel it was compiled against, it does not make sense to provide binaries on our website. As usual, you will find the signed tarballs in our download section:
https://downloads.open-mesh.org/batman/releases/batman-adv-2012.0.0/
as well as prepackaged binaries in your distribution.
Thanks¶
Thanks to all people sending in patches:
and to all those that supported us with good advice or rigorous testing:
batman-adv¶
The gateway handling code was refactored as it became nearly impossible to understand the various gateway handling cases that were added over time. Also refactored was the TT handling code and a common subtype for locally and globally announced mac addresses was introduced. All told, the TT code was thoroughly reviewed leading to numerous fixes: When adding a tt entry to the hash failed its memory is properly freed. Globally roaming clients are now clearly marked as such. The length of a TT packet is compared with the length the packet claims to have, thereby avoiding memory corruptions. The expensive packet linearize function is called only when absolutely necessary.
We also were in the lucky position of getting a security audit from Paul Kot who did find a possible memory corruption in the batman socket reading code (CVE-2011-4604). However, since there is no way to exploit it, according to the reporter, we judged the risk to be low. Obviously, the fix for this corruption is part of the release. Also fixed was a kernel freeze when the bat0 interface could not be created.
batctl¶
The log level parameter parser was fixed, so that it now correctly exits after receiving an invalid option as well as correctly handles the 'all' log level option.
Happy routing,
The B.A.T.M.A.N. team
The WirelessBattleMeshv5 announcement came in and we would like to invite you to join us in Athens / Greece! Once more, wireless communities / enthusiasts / developers are expected to attend the annual gathering. As usual we (the people behind the B.A.T.M.A.N. project) are going to use the opportunity to enjoy a full week with wireless hackers to discuss & develop on the latest hot new stuff. Details about the event's registration / locations / costs can be found in the announcement text below.
==========================================================
Announcing the Wireless Battle Mesh v5
(26th of March - 1st of April 2012, Athens, Greece)
==========================================================
The next 'Wireless Battle of the Mesh' will take place from
Mon 26th till Sun 1st of Arpil in the center of Athens
(close to the acropolis), Greece. The event aims to
bring together people from across the Globe to test the
performance of different routing protocols for ad-hoc
networks, like Babel, B.A.T.M.A.N., BMX, and OLSR.
If you are a mesh networking enthusiast, community
networking activist, or have an interest in mesh networks
you have to check this out!
Informations about the event are gathered at:
http://battlemesh.org/BattleMeshV5
Location
========
The (optional) WBMv5 Warmup event takes place in Sarantaporo
(rural area in range of the Olympus mountain). The main
event happens at the National Technical University of
Athens (NTUA) in the very center of Athens.
Registration
============
Registrations will be available at different hackerspaces
(Fusolab, HSBXL, /tmp/lab, metalab, CCC, ...) and on the
official website for the event at:
- http://battlemesh.org/BattleMeshV5_Warmup
- http://battlemesh.org/BattleMeshV5
Fees
====
The warmup requires a small fee to cover the transportation
costs to Sarantaporo. The main event is free of charge. We
offer the possibility to reserve a low-cost bed close to the
NTUA for you.
Spread the word
===============
Feel free to spread the word by forwarding this mail to all
lists / people that might be interested in it. Also blogging
about the event is more than welcome!
Contact
=======
* Web:
- http://battlemesh.org/BattleMeshV5_Warmup
- http://battlemesh.org/BattleMeshV5
* Email: http://ml.ninux.org/mailman/listinfo/battlemesh
* IRC: irc.freenode.net #wbmv5
The B.A.T.M.A.N. team is proud to announce its final milestone in 2011, 2011.4.0, concentrating on the stabilization & bug fixing of the recent protocol changes and adding some smaller features . As the kernel module always depends on the Linux kernel it was compiled against, it does not make sense to provide binaries on our website. As usual, you will find the signed tarballs in our download section:
https://downloads.open-mesh.org/batman/releases/batman-adv-2011.4.0/
as well as prepackaged binaries in your distribution.
Thanks¶
Thanks to all people sending in patches:
and to all those that supported us with good advice or rigorous testing:
batman-adv¶
Above all, the 2011.4.0 milestone centers around polishing the protocol changes introduced with the previous release. Non-mesh clients connected via a wireless interface are marked as such. This information is then propagated in the mesh on top of the new non-mesh client infrastructure and can be used to prevent mesh wide wireless client to wireless client communication (on standard WiFi AccessPoints this feature is known as 'AP isolation'). The non-mesh client status flags (new/delete/purge/roaming/wireless) are exported to user space as part of the translation table output to allow following a client's status closely.
The coming releases will be escorted by a stepwise inclusion of an improved version of our routing algorithm. It will be possible to switch between the current protocol and the new protocol at runtime in order to make testing as easy as possible. This first stage prepared the existing routing algorithm code for the upcoming feature for switching routing protocols. No changes to the routing code behavior have been included.
A couple of translation table bugs have been squashed: memory leaks in the translation table, wrong initialization of ethernet addresses of translation table entries and a kernel crash on module unload. Numerous spelling mistakes in the source code comments were corrected.
batctl¶
batctl received an option to turn on/off the aforementioned mesh wide AP isolation. When called with '-v' batctl will not only print its own version but also the batman-adv kernel module version (requires the module to be loaded). The log level section was rewritten, so that it now expects human readable log level definitions instead of digits and bitmasks. Also fixed was the mangled tcpdump output of the CRC value in translation table exchange packets.
Happy routing,
The B.A.T.M.A.N. team
Today, the B.A.T.M.A.N. team releases an update for the 2011.3.0 release which corrects small but crucial bugs introduced within the last release. This is a pure bug fix release without any new features or protocol modifications. Everyone is strongly encouraged to upgrade to this version. As the kernel module always depends on the Linux kernel it was compiled against, it does not make sense to provide binaries on our website. As usual, you will find the signed tarballs in our download section:
https://downloads.open-mesh.org/batman/releases/batman-adv-2011.3.1/
as well as prepackaged binaries in your distribution.
Thanks¶
Thanks to all people sending in patches:
Special thanks go to:
- TY Wu for isolating / debugging the packet latency bug
- Junkeun Song for his help and ideas to find the translation table bugs
- Laurent Bouraoui for his help in debugging the translation table bugs and testing the related patches
- Marek Lindner for debugging support and suggestions
batman-adv¶
The high latency (4-5 times higher than usual) that could be observed when the gateway mode was activated because batman-adv broadcasted all packets instead of sending them via unicast, was fixed. The reported issues with non-mesh clients communicating with other clients have been addressed too: The translation tables were corrupted caused by uninitialized memory and invalid table sizes sent through client announcement mechanism.
batctl¶
batctl remains unchanged.
Happy routing,
The B.A.T.M.A.N. team
In the early days of the bat, when it just learned flying, a nice "ASCII art" logo was designed to give the project a face. Since then much has changed and we felt it was time to make the logo reflect this new era. With the website relaunch we kept the pages "logo free" until we got something new. Fortunately, Simon Wunderlich took over this task, proposed several logo variations and asked for feedback. Franz Boehm converted the favored logo to SVG as soon as a decision was made.
Here it is:
The new logo already found its way onto the website and can also be downloaded from the wiki. Several people already asked for fan articles such as t-shirts, cups, mouse pads, etc. We are going to publish updates on those articles when they become available.
Happy routing,
The B.A.T.M.A.N. team