<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div><font class="Apple-style-span" color="#000000"><br></font>Date: Tue, 30 Dec 2008 17:27:17 +0100<br>From: Jo-Philipp Wich <<a href="mailto:freifunk@wwsnet.net">freifunk@wwsnet.net</a>><br>Subject: [Olsr-dev] OLSRd IPv6 Mesh @ 25c3<br>To: <a href="mailto:olsr-dev@lists.olsr.org">olsr-dev@lists.olsr.org</a><br>Message-ID: <<a href="mailto:495A4BE5.9020702@wwsnet.net">495A4BE5.9020702@wwsnet.net</a>><br>Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br><br>-----BEGIN PGP SIGNED MESSAGE-----<br>Hash: SHA1<br><br>Hi list,<br><br>I just wanted to share our success story with olsrd in a pure IPv6 mesh at 25c3.<br><br>This year's Freifunk experiment at the Chaos Communication Congress was about building a<br>pure IPv6 based OLSR mesh and using SIIT translation technique [1] to transport IPv4<br>traffic via the IPv6 mesh without using tunnels or similar encapsulation techniques.<br><br>We had a small mesh of 15-20 nodes up and running at the congress [2]. Some nodes operated<br>in 802.11g / channel 1, some in 802.11a / channel 100, 2.4GHz and 5GHz clouds where<br>interconnected using Alix-Boards with two radio interfaces.<br><br>The interface IPv6 addresses were composed of a common 64bit prefix<br>(fdca:ffee:babe:dada::/64) and the upper 64bit of the wifi interface's link local address<br>(fe80::/64). A sample configuration can be found at [3]<br><br>When the experiment started we used the most recent OLSRd release, v0.5.6-r3 running on<br>top of OpenWrt Kamikaze which worked surprisingly well :) [4]<br><br>On several nodes we observed a "slow-start" problem with OLSRd v0.5.6-r3, when a node (or<br>it's OLSRd instance) was restarted, it took several minutes to re-aquire neighbour routes.<br>The node successfully received hellos from it's neighbours but the neighbour connections<br>were stuck with LQ >> 0 and NLQ = 0 for a long time and then suddenly changed the ETX from<br>INFINITE to near 1.0. Aaron suggested to try again with a more recent version (the hg tip<br>from 2008/12/29).<br><br>So we compiled a more recent version, applied a patch from this list [5] and installed it<br>on one of the Mesh nodes and gave it a try only to discover that our previously used<br>configuration file wasn't accepted anymore. A quick run with debug level 1 revealed that<br>the options "LinkQualityWinSize", "LinkQualityLevel" and "UseHysteresis" weren't supported<br>anymore, so we just removed them from our configuration.<br><br>After the deprecated config options were removed, another proplem arised, olsrd reported<br>that it can't find the IPv6 address of the interface. After looking at the code changes we<br>figured out that new options for "Ip6AddrType" were introduced since 0.5.6-r3. We<br>previously used "global" as Ip6AddrType but in the meanwhile a check was added that<br>rejected "global" IPv6 addresses that begin with "fc" or "fd". After probing around a bit,<br>we figured that a type of "unique-local" was the right one to choose in our case.<br><br>Now something really weird happened, OLSRd managed it to determine the interface IPv6<br>address and reported it correctly with -d 5 but then corrupted the address when converting<br>it from the string to an address struct (e.g.: fdca:ffee:babe:dada:202:6fff:fe4a:31f4/64<br>suddenly became 202:6fff:fe4a:31f4::/64). Henning helped me to debug that problem and we<br>came up with a patch that just changed some debug printf()'s but seemed to address this<br>issue. [6]<br><br>After some more tries and recompilations, the OLSRd tip worked nicely together with the<br>0.5.6-r3 versions and IPv6 addresses on the mesh interfaces.<br><br>Finally we wanted to install OLSRd on our x86 BGP router machine (running Debian) but<br>couldn't get it to work with IPv6. The OLSRd successfully received and transmitted routes<br>with the mesh network but every attempt to insert kernel routes was answered with an<br>Invalid Argument error from the kernel. After tinkering around a bit and trying different<br>OLSRd versions with different modifications the machine died because of a disk failure :(</div></blockquote><br><div>Perhaps the IPv6 feature was not enable in the kernel on your Debian.</div><div><br></div><div>First, the Linux kernel must be built with IPv6 support, this kernel option:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>CONFIG_IPV6=y</div><div>must be set when building the kernel.</div><div><br></div><div>Second, the system must be configured to enable IPv6.</div><div>In the past, I was running OLSRd (version 0.5.4) IPv6 on system V (Fedora Core) filesystem,</div><div>I had to set these in the "/etc/sysconfig/network" system configuration:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>NETWORKING_IPv6=yes<br></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>IPV6FORWARDING=yes<br></div><div><br></div><div>I have never tried to setup IPv6 on Debian system.</div><br><blockquote type="cite"><div><br><br>So we took an old laptop running x86 OpenWrt and installed the OLSRd there. To our<br>surprise routes were successfully added and everything was well in contrast to Debian.<br>This leaves us a bit clueless why it works on OpenWrt but not on Debian, this is a thing<br>we still have to investigate.<br><br><br>All in all it was a nice experience and we were really surprised that we even manged it to<br>setup a pure IPv6 mesh with OLSRd :D<br><br>I personally really appreciate the work you put into OLSRd and hope that this little real<br>live experience report keeps you motivated to fix and enhance IPv6 support for OLSR ;)<br><br>We now plan to build a permanent IPv6 test mesh network so that the OLSR developers have a<br>real live testbed for IPv6-related issues.<br><br><br>Greetings from the 25c3,<br>JoW + Freifunk Crew<br><br><br>References:<br>[1] <a href="http://blogs.k-ita.de/~alx/?tag=siit">http://blogs.k-ita.de/~alx/?tag=siit</a><br>[2] <a href="http://quamquam.org/~jow/6mesh.png">http://quamquam.org/~jow/6mesh.png</a><br>[3] <a href="https://events.ccc.de/congress/2008/wiki/Wireless:ipv6-config">https://events.ccc.de/congress/2008/wiki/Wireless:ipv6-config</a><br>[4] <a href="http://quamquam.org/~jow/6mesh-screenshots/">http://quamquam.org/~jow/6mesh-screenshots/</a><br>[5] + [6]<br><a href="https://luci.subsignal.org/trac/browser/luci/trunk/contrib/package/olsrd-luci/patches/010-olsrd-ip6addr.patch">https://luci.subsignal.org/trac/browser/luci/trunk/contrib/package/olsrd-luci/patches/010-olsrd-ip6addr.patch</a><br>https://luci.subsignal.org/trac/browser/luci/trunk/contrib/package/olsrd-luci/patches/011-olsrd-ip6addr-2.patch<br>-----BEGIN PGP SIGNATURE-----<br>Version: GnuPG v1.4.6 (GNU/Linux)<br>Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org<br><br>iD8DBQFJWkvldputYINPTPMRAlvLAJ95z/pS+7hloafbQu+eARftZg9u0ACbBOXw<br>o/7L1Xrgw16y1xQUgnlYFHI=<br>=OBxF<br>-----END PGP SIGNATURE-----<br><br><br><br></div></blockquote></div></body></html>