From owner-freebsd-net@FreeBSD.ORG Tue May 15 10:18:14 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EA8B81065670 for ; Tue, 15 May 2012 10:18:14 +0000 (UTC) (envelope-from smithi@nimnet.asn.au) Received: from sola.nimnet.asn.au (paqi.nimnet.asn.au [115.70.110.159]) by mx1.freebsd.org (Postfix) with ESMTP id 15ECA8FC15 for ; Tue, 15 May 2012 10:18:13 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by sola.nimnet.asn.au (8.14.2/8.14.2) with ESMTP id q4FAHtqw031528; Tue, 15 May 2012 20:17:55 +1000 (EST) (envelope-from smithi@nimnet.asn.au) Date: Tue, 15 May 2012 20:17:55 +1000 (EST) From: Ian Smith To: Ivo Vachkov In-Reply-To: Message-ID: <20120515173803.X98171@sola.nimnet.asn.au> References: <5fd642c1-7bf3-4a25-a35f-54cddea68f13@email.android.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: Monthadar Al Jaberi , freebsd-net@freebsd.org, Ivan Voras Subject: Re: B.a.t.m.a.n. X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 May 2012 10:18:15 -0000 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 wrote: > > > On Sun, May 13, 2012 at 2:49 PM, Ivan Voras wrote: > > > On 13 May 2012 06:46, Ivo Vachkov 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