Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 May 2012 20:17:55 +1000 (EST)
From:      Ian Smith <smithi@nimnet.asn.au>
To:        Ivo Vachkov <ivo.vachkov@gmail.com>
Cc:        Monthadar Al Jaberi <monthadar@gmail.com>, freebsd-net@freebsd.org, Ivan Voras <ivoras@gmail.com>
Subject:   Re: B.a.t.m.a.n.
Message-ID:  <20120515173803.X98171@sola.nimnet.asn.au>
In-Reply-To: <CADrMwxdJ0BHkCTZBwAJKFoJMwFHrr0Q6u422G0Fd5CPZEF8q1g@mail.gmail.com>
References:  <5fd642c1-7bf3-4a25-a35f-54cddea68f13@email.android.com> <CADrMwxcZ-G_0nVzqKX_1%2BLZqqHvdONCxq-SA8X8qg8tO6tNBrA@mail.gmail.com> <CAF-QHFVFB3CEhUsrqdnzOcEoe5Pu8ieEVogLDxngxdYyj=KDpg@mail.gmail.com> <CA%2BsBSoL3kEeAKGsK=kGcQY7UAy6dc=7iZFq=MahmdrFR8n2%2BZQ@mail.gmail.com> <CADrMwxdJ0BHkCTZBwAJKFoJMwFHrr0Q6u422G0Fd5CPZEF8q1g@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 14 May 2012 16:02:40 +0300, Ivo Vachkov wrote:
 > Hello all,
 > 
 > On Mon, May 14, 2012 at 1:52 PM, Monthadar Al Jaberi <monthadar@gmail.com>wrote:
 > 
 > > On Sun, May 13, 2012 at 2:49 PM, Ivan Voras <ivoras@gmail.com> wrote:
 > > > On 13 May 2012 06:46, Ivo Vachkov <ivo.vachkov@gmail.com> wrote:
 > > >> Please define "working"? Porting? Kernel-level implementation?
 > > BSD-licensed
 > > >> one?
 > > >
 > > > I'm just throwing the idea out, in case it catches the eye of someone
 > > > who's looking for an interesting project. In the ideal world, I'd say
 > > > BSD-licensed reimplementation, but I certainly won't get picky.
 > > >
 > > > It does have some documentation (e.g.
 > > > http://tools.ietf.org/html/draft-wunderlich-openmesh-manet-routing-00
 > > > , http://www.open-mesh.org/wiki/batman-adv/Doc-overview).

On seeing Ivan's message, I thought I'd go back and have another look at 
this after my foray in '06-'07 looking at initially OLSR then batmand, 
for a rural mesh that never eventuated due to ADSL availability :)

At that time, I'd have been happy to pay good money for that IETF draft, 
which wasn't then available; scouring web docs then linked from olsr.org 
and mailing lists looking through scant and early development docs left 
me not much the wiser, and hunting for code wasn't just down the rabbit 
hole, it was a large warren of dark twisty tunnels, many dead-end.

In any case, that draft refers to the now unmaintained or at least not 
further developed batmand daemon which used layer 3 routing like olsrd, 
whereas 'batman advanced' as included in linux since 2.26.something 
routes at layer 2; I don't think there's much if any interoperability 
between them, so the first thing anyone wanting to 'do' batman on 
freebsd has to decide is which version to tackle (and why :) bearing in 
mind that 'BATMAN V' is in development, perhaps also non-interoperable.

http://www.open-mesh.org/wiki/open-mesh/BranchesExplained

That the Serval Project is using linux and batman-adv for their BatPhone 
(though also looking into using OLSR, they and olsr.org say) may push 
development, particularly if carrier-free mobile mesh networks prove as 
useful as many expect, though maybe that's just residual nationalism :)

http://developer.servalproject.org/site/docs/2011/Serval_Introduction.html

In any case, batman seems to be finding a place in both hacked routers 
and on linux-based phones like Androids, maybe Symbians, maybe iOS.

Here's where the batman-adv code was first committed to linux, so an all 
+ diff, some of which may help to serve as crude docs of what may be 
needed at kernel net level, which looks at the very least to need a new
class for linsysfs(5) or an equivalent sysctl tree, but I've no idea 
what else might be needed at either kernel level, or for a daemon:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=c6c8fea29769d998d94fcec9b9f14d4b52b349d3

 > Since it's not standardized, isn't it more logical to proceed with either
 > user-space implementation or kernel implementation of something that has
 > RFC assigned to the name (just asking, no troll/flame here)? Other than
 > that I have some experience with BMX, Babel and OLSR. Also, i'm personally
 > not convinced that kernel level implementation is the most appropriate
 > choice for routing protocol (still i may be wrong).

Among the wiki-mazes at open-mesg.org are a few older docs describing 
the early development of and from olsrd at Freifunk Berlin, where OLSR
RFC3626-compliance basically didn't work at any scale.  A good read is:

http://www.open-mesh.org/wiki/open-mesh/The-olsr-story

My impression is that with OLSR, the RFC more or less preceded working 
code, and that the 'standard' became in many ways more an impediment to 
a working mesh (at any useful scale), whereas with both batmand and 
batman-adv, fast, furious and fairly anarchic hacking to get something 
working on a scale of hundreds of nodes was the driving force, leaving 
documentation, let alone another RFC candidate, to trail far behind .. 
besides it's still a fast-moving target, as many of the wiki pages 
attest, once you figure out what precedes or antecedes what - not easy 
when very few of the pages are dated, even as to original year.

 > > >> Are there any reasons to choose B.A.T.M.A.N. instead of bmx or babel?
 > > ... or
 > > >> OLSR? ... or HSLS?
 > > >
 > > > I've seen BATMAN work at a local Linux club meeting, and I was pretty
 > > > much impressed by how easy it is to setup. I don't know about the
 > > > other protocols you listed, but BATMAN is in the stock Linux kernel,
 > > > making it a practical choice. I might be wrong but it seems to me that
 > > > it, contrasted to 802.11s, requires no special support from the wifi
 > > > driver side, making it easier to implement. Other than that, no, I
 > >
 > 
 > As mentioned already 802.11s is link-layer technology (that from our
 > experiments and research seems to be limited to some 30 devices), in
 > contrast those are network layer (L3) protocols that operate on top of IP.

batmand is/was layer 3 but batman-adv (as in the linux kernel module, 
with its userland configuration program, batctl) routes at layer 2.

http://downloads.open-mesh.org/batman/manpages/batmand.8.html
http://downloads.open-mesh.org/batman/manpages/batctl.8.html

and that's it for manual pages .. unless there's a (4) in linuxland?

http://wwwtlc.iet.unipi.it/research/ggt-iswpc10.pdf compares 802.11s and 
batman-adv as two layer 2 protocols, though it's a teensy little mesh .. 
and there's later work on batman-adv addressing the PURGE_TIMEOUT issue, 
so it's pretty much early days as far as long-term settled standards.

 >  I think it a better version of the Optimized Link State Routing
 > > Protocol (OLSR) which is an IP routing algoritm, 802.11s is link level
 > > routing, which needs a wifi driver that permits changing the mac
 > > address.
 > >
 > > But there is no standard for it I think.
 > 
 > 
 > OLSR: http://www.ietf.org/rfc/rfc3626.txt

If you read enough of the batman-adv wiki, up, down and sideways, repeat 
and rinse a time or two the fog starts to clear, but it's heavy going. 
Working from both the title and by-date indexes helps, as I only found 
out after many hours - this explore cost me most of the last two days :)

may it help, Ian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120515173803.X98171>