<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://oldwiki.funkfeuer.at/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://oldwiki.funkfeuer.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hannes</id>
		<title>FunkFeuer Wiki - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://oldwiki.funkfeuer.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hannes"/>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Spezial:Beitr%C3%A4ge/Hannes"/>
		<updated>2026-10-18T01:55:55Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.22.5</generator>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2008-02-14T11:26:46Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: remove pointer to CVS repo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conformed to the implementation of OLSR from www.olsr.org ('''before''' the OLSR-NG project). OLSR-NG reduced the complexity to the green level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the level of calculating the dijkstra (shortes path) algorithm so far).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://marvin.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.5 was released! Thx everybody a lot! -  See changes int the [http://sourceforge.net/project/shownotes.php?release_id=574533&amp;amp;group_id=117612 Changelog]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Sub projects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[miscellaneous improvements]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
==[[Data Structures and Algorithms]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides http://marvin.funkfeuer.at/~aaron/olsr-ng.pdf and get in contact with us directly.&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* Mercurial repo instructions&lt;br /&gt;
  http://www.olsr.org/?q=mercurial/&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP/stalled due to work in other areas&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc/free thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid ''malloc()'' and ''free()''. Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch/Hannes Gredler/???&lt;br /&gt;
| supersede all of the ''*_chgestruct()'' functions: All of them are called in exactly one place. So one can inline them there and use the ''pkg_get_*()'' functions to check and use the data. This also avoids more malloc/free thrashing and reduces the amount of code.&lt;br /&gt;
| WIP&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, reworked ip address copying and comparison to get it type-safe,&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
* [http://www.orbit-lab.org/wiki/FAQ ORBIT simulator]&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2008-02-08T09:54:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* Current Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conformed to the implementation of OLSR from www.olsr.org ('''before''' the OLSR-NG project). OLSR-NG reduced the complexity to the green level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the level of calculating the dijkstra (shortes path) algorithm so far).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://marvin.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.5 was released! Thx everybody a lot! -  See changes int the [http://sourceforge.net/project/shownotes.php?release_id=574533&amp;amp;group_id=117612 Changelog]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Sub projects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[miscellaneous improvements]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
==[[Data Structures and Algorithms]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides http://marvin.funkfeuer.at/~aaron/olsr-ng.pdf and get in contact with us directly.&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* Mercurial repo instructions&lt;br /&gt;
  http://www.olsr.org/?q=mercurial/&lt;br /&gt;
&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP/stalled due to work in other areas&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc/free thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid ''malloc()'' and ''free()''. Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch/Hannes Gredler/???&lt;br /&gt;
| supersede all of the ''*_chgestruct()'' functions: All of them are called in exactly one place. So one can inline them there and use the ''pkg_get_*()'' functions to check and use the data. This also avoids more malloc/free thrashing and reduces the amount of code.&lt;br /&gt;
| WIP&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, reworked ip address copying and comparison to get it type-safe,&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
* [http://www.orbit-lab.org/wiki/FAQ ORBIT simulator]&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2008-01-20T18:44:45Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: Add link to Mercurial howto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conformed to the implementation of OLSR from www.olsr.org ('''before''' the OLSR-NG project). OLSR-NG reduced the complexity to the green level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the level of calculating the dijkstra (shortes path) algorithm so far).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://marvin.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Sub projects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[miscellaneous improvements]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
==[[Data Structures and Algorithms]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides http://marvin.funkfeuer.at/~aaron/olsr-ng.pdf and get in contact with us directly.&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* Mercurial repo instructions&lt;br /&gt;
  http://www.olsr.org/?q=mercurial/&lt;br /&gt;
&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP/stalled due to work in other areas&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc/free thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid ''malloc()'' and ''free()''. Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch/Hannes Gredler/???&lt;br /&gt;
| supersede all of the ''*_chgestruct()'' functions: All of them are called in exactly one place. So one can inline them there and use the ''pkg_get_*()'' functions to check and use the data. This also avoids more malloc/free thrashing and reduces the amount of code.&lt;br /&gt;
| WIP&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, reworked ip address copying and comparison to get it type-safe,&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
* [http://www.orbit-lab.org/wiki/FAQ ORBIT simulator]&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T13:29:57Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: remove double email lists&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Sub projects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[miscellaneous improvements]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
==[[Data Structures and Algorithms]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf and get in contact with us directly.&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/Miscellaneous_improvements</id>
		<title>Miscellaneous improvements</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Miscellaneous_improvements"/>
				<updated>2007-11-24T13:26:58Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T13:26:27Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: move out olsr issues&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Sub projects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[miscellaneous improvements]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
==[[Data Structures and Algorithms]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly.&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T13:20:17Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Sub projects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
==[[Data Structures and Algorithms]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms</id>
		<title>Data Structures and Algorithms</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms"/>
				<updated>2007-11-24T13:18:08Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Heaps =&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for Dijkstra path exploration (relax function)&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)).&lt;br /&gt;
Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. all results are in us based on a Intel celeron running at 1300 Mhz.&lt;br /&gt;
&lt;br /&gt;
== Fibonacci heap ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
                                                                                     &lt;br /&gt;
== AVL heap ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms</id>
		<title>Data Structures and Algorithms</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms"/>
				<updated>2007-11-24T13:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Heaps =&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)).&lt;br /&gt;
Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. all results are in us based on a Intel celeron running at 1300 Mhz.&lt;br /&gt;
&lt;br /&gt;
== Fibonacci heap ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
                                                                                     &lt;br /&gt;
== AVL heap ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms</id>
		<title>Data Structures and Algorithms</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms"/>
				<updated>2007-11-24T13:14:28Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* Heaps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Heaps =&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)).&lt;br /&gt;
Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. all results are in us based on a Intel celeron running at 1300 Mhz.&lt;br /&gt;
&lt;br /&gt;
== Fibonacci heap ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
&amp;lt;/pre&amp;gt;                                                                                                                                         &lt;br /&gt;
== AVL heap ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AVL heap ==&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms</id>
		<title>Data Structures and Algorithms</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms"/>
				<updated>2007-11-24T13:13:20Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* Fibonacci heap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Heaps =&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
== Fibonacci heap ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
&amp;lt;/pre&amp;gt;                                                                                                                                         &lt;br /&gt;
== AVL heap ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AVL heap ==&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms</id>
		<title>Data Structures and Algorithms</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Data_Structures_and_Algorithms"/>
				<updated>2007-11-24T13:12:15Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: first cut for data Structures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Heaps =&lt;br /&gt;
&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
== Fibonacci heap ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
== AVL heap ==&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T13:10:29Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Sub projects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
==[[Data Structures and Algorithms]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T13:09:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: move data structures and algorithms out&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Subprojects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
==[[Data Sturctures and Algorithms]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/UML_test_server</id>
		<title>UML test server</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/UML_test_server"/>
				<updated>2007-11-24T13:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: give UML server pages a new home&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [http://www.user-mode-linux.org UML] test server =&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== current open todos UML server ==&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
== User HOWTO ==&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== Open questions/bug reports? ==&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T13:03:15Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: move the UML server section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Subprojects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
==[[UML test server]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T13:01:18Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Subprojects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
==[[LSDB refactoring]]==&lt;br /&gt;
==[[RIB refactoring]]==&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T12:59:25Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: move SPF refactoring into a dedicated page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Subprojects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/SPF_refactoring</id>
		<title>SPF refactoring</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/SPF_refactoring"/>
				<updated>2007-11-24T12:58:13Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: initial cut for SPF refactoring&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= SPF implementation =&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
= speed by efficient sorting =&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
= Results =&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T12:33:46Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* SPF refactoring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Subprojects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
== speed by efficient sorting ==&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T12:32:46Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: flesh out SPF refactoring page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= Subprojects =&lt;br /&gt;
&lt;br /&gt;
==[[SPF refactoring]]==&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T12:27:59Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: rework goals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
Our mission is simple. Build the most scalable and usable routing daemon routing wireless and fixed line segments.&lt;br /&gt;
The routing daemon shall scale up to&lt;br /&gt;
&lt;br /&gt;
# 10000 (10K) nodes and&lt;br /&gt;
# 20000 (20K) routes&lt;br /&gt;
running on low-cost hardware (200 Mhz RISC CPUs / 32MB of memory).&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For achieving that we first want to&lt;br /&gt;
&lt;br /&gt;
# fix the existing olsrd and add new data structures and algorithms.&lt;br /&gt;
# Once olsrd is running fast we focus on protocol issues like&lt;br /&gt;
## measuring better links metrics, like including the bandwidth (ETT)&lt;br /&gt;
## link-state db synchronization issues (rather then brute force retransmission).&lt;br /&gt;
All protocol extensions shall be documented as an internet-draft and submitted to the IETF MANET working group http://www.ietf.org/html.charters/manet-charter.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we want to improve the management tools of olsrd like the&lt;br /&gt;
&lt;br /&gt;
# http_info plugin or&lt;br /&gt;
# txt_info plugins or&lt;br /&gt;
# building a new XMLinfo plugin&lt;br /&gt;
&lt;br /&gt;
such that that large clouds consisting of thousands of nodes&lt;br /&gt;
can be troubleshooted in an effective way.&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org, mailto:hannes@gredler.at or mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-11-24T12:04:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* Who is working on what? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=  NEWS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We have released our first set of improvements to the olsrd SPF calculation module.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SPF implementation ==&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
== speed by efficient sorting ==&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;br /&gt;
&lt;br /&gt;
== Outlook ==&lt;br /&gt;
10-20% (depending on network size) in the route-handling module is admittedly not exciting. During refactoring the SPF implementation the olsrd-ng development team, has spotted further bottlenecks in the existing implementation. We are tackling this one by one, and would need active participation of the wireless communities to test our improvements and verify if we have added any undesired regressions. so stay tuned and report bugs to the [mailto:olsr-dev@lists.olsr.org olsrd-dev] mailing list.&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
please check out the [http://tema.lo-res.org/~aaron/spf-refactoring.diff.gz patch]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5.4 was released! Thx everybody a lot! Big credits go out to Hannes and Bernd.&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| Aaron&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan, Hannes&lt;br /&gt;
| draft. write a draft about LQ extensions&lt;br /&gt;
| OPEN&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| LinkQuality / metrics (e.g. ETX/ETT) improvements&lt;br /&gt;
| OPEN/WIP (no code yet committed)&lt;br /&gt;
| evaluate best current practice; &lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| FishEye improvements&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice;&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| effect of OLSR parameters on the mesh&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| evaluate best current practice; spot and (maybe) eliminate dangers/instabilities&lt;br /&gt;
|-&lt;br /&gt;
| Sebastian Sauer&lt;br /&gt;
| selfish nodes / malicious nodes&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
| risk assessments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
* [http://ieeexplore.ieee.org/iel5/7693/4381387/04381410.pdf?isnumber=4381387&amp;amp;prod=JNL&amp;amp;arnumber=4381410&amp;amp;arSt=4014&amp;amp;ared=4024&amp;amp;arAuthor=Hamdaoui%2C+B.%3B+Ramanathan%2C+P. A Cross-Layer Admission Control Framework] for Wireless Ad-Hoc Networks using Multiple Antennas, Bechir Hamdaoui and Parameswaran Ramanathan&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-09-18T17:47:33Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: fibonacci heap bashing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=  NEWS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We have released our first set of improvements to the olsrd SPF calculation module.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SPF implementation ==&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
== speed by efficient sorting ==&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;br /&gt;
&lt;br /&gt;
== Outlook ==&lt;br /&gt;
10-20% (depending on network size) in the route-handling module is admittedly not exciting. During refactoring the SPF implementation the olsrd-ng development team, has spotted further bottlenecks in the existing implementation. We are tackling this one by one, and would need active participation of the wireless communities to test our improvements and verify if we have added any undesired regressions. so stay tuned and report bugs to the [mailto:olsr-dev@lists.olsr.org olsrd-dev] mailing list.&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
please check out the [http://tema.lo-res.org/~aaron/spf-refactoring.diff.gz patch]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
| theory tells that fibonacci heaps are best, practise tells that an AVL tree as a minheap implementation fits the complexity of frequent re-keyings better&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-09-18T17:45:39Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: inplace SPF is done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=  NEWS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We have released our first set of improvements to the olsrd SPF calculation module.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SPF implementation ==&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
== speed by efficient sorting ==&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;br /&gt;
&lt;br /&gt;
== Outlook ==&lt;br /&gt;
10-20% (depending on network size) in the route-handling module is admittedly not exciting. During refactoring the SPF implementation the olsrd-ng development team, has spotted further bottlenecks in the existing implementation. We are tackling this one by one, and would need active participation of the wireless communities to test our improvements and verify if we have added any undesired regressions. so stay tuned and report bugs to the [mailto:olsr-dev@lists.olsr.org olsrd-dev] mailing list.&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
please check out the [http://tema.lo-res.org/~aaron/spf-refactoring.diff.gz patch]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Comments&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
| OPEN&lt;br /&gt;
| freifunk FW is done by Sven-Ola Tücke, .rpm and .deb by various people on olsr-dev@lists.olsr.org, Windows: ???&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the logging/tracing/error reporting&lt;br /&gt;
| WIP&lt;br /&gt;
|&lt;br /&gt;
|-|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| rework the LQ-TC and LQ-HELLO input parsing, avoiding malloc thrashing&lt;br /&gt;
| DONE&lt;br /&gt;
| The output side can also be avoid malloc() and free(). Alas, the code is more complicated there.&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
| Well, the thing doesn't boot ATM. God knows why ....&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| Variuos '''Cleanup''' Mini- Projects&lt;br /&gt;
| DONE/WIP&lt;br /&gt;
| reworked floating point ops in src/mantissa.[ch] to minimize run-time impact, fixed dependencies, &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/tracing/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the bmf plugin uses it right now, the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** The incoming and outgoing packets are deserialized and serialized via pointers to packed ''struct''s. This is somewhat dangerous as other compilers or the same compielr for other architectures may or may not behave the same. And - '''worse''' - it misleads people to copy the same data various times around or play with pointers so no one can easily see ehat'e going on. I (Bernd) started with a more direct approach in src/lq_packet.c where we have one &amp;quot;unsigned char *&amp;quot; which walks sequentially through the incoming packet and gets the value with small inline functions into where one needs it later on - mostly some simple ''struct'' which is a normal C struct and used by the core code.&lt;br /&gt;
** '''net_outbuffer_push()'' memcpy()es the packet from the caller supplied buffer into another buffer. Well, that's one more copy operation for every outgoinf packet.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere.&lt;br /&gt;
'''However, practice shows that'''...&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)). Hannes tested the fibheap package from gcc and found out that in our networks (~ 200 nodes) the AVL tree heap implementation still beats the fibonacci heap by 60%. &lt;br /&gt;
&lt;br /&gt;
fibonacci heap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- SPF-stats for 203 nodes, 335 routes (total/init/run/route/kern/cleanup):,, 237, &lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 337 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 339 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 240,&lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 236, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 341 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 345 routes (total/init/run/route/kern/cleanup):,, 239, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 238, &lt;br /&gt;
                                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVL heap:&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 143,&lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 144, &lt;br /&gt;
--- SPF-stats for 203 nodes, 346 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 203 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 145, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 142, &lt;br /&gt;
--- SPF-stats for 202 nodes, 347 routes (total/init/run/route/kern/cleanup):,, 146, &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-08-23T12:49:50Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: Update working packages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=  NEWS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We have released our first set of improvements to the olsrd SPF calculation module.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SPF implementation ==&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
== speed by efficient sorting ==&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;br /&gt;
&lt;br /&gt;
== Outlook ==&lt;br /&gt;
10-20% (depending on network size) in the route-handling module is admittedly not exciting. During refactoring the SPF implementation the olsrd-ng development team, has spotted further bottlenecks in the existing implementation. We are tackling this one by one, and would need active participation of the wireless communities to test our improvements and verify if we have added any undesired regressions. so stay tuned and report bugs to the [mailto:olsr-dev@lists.olsr.org olsrd-dev] mailing list.&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
please check out the [http://tema.lo-res.org/~aaron/spf-refactoring.diff.gz patch]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|200px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
|  OPEN&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvements&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation, best path selection)&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
|Bernd Petrovitsch&lt;br /&gt;
| rework the logging system&lt;br /&gt;
| WIP&lt;br /&gt;
|-|-&lt;br /&gt;
|Bernd Petrovitsch&lt;br /&gt;
| rework the TC-LQ input parsing, avoiding malloc thrashing&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around.&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling.&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long and there too many ''olsr_'' perfixed types and functions right now.)&lt;br /&gt;
** fixup error reporting/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors). ''Work in progress''&lt;br /&gt;
** dependencies do not work - '''done'''&lt;br /&gt;
** merge quagga-svn and svan-ola quagga-patch and test it.&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Theory section =&lt;br /&gt;
&lt;br /&gt;
== data structures ==&lt;br /&gt;
* [[Wikipedia:Heap (data_structure)|Heap]] ... We need good heaps/priority queues for A*-Search / Dijkstra&lt;br /&gt;
* &amp;lt;font color=red&amp;gt;especially the [[Wikipedia:Fibonacci_heap|Fibonacci Heap]] has a to my knowledge the very best asymptotic complexity of O(1) almost everywhere&amp;lt;/font&amp;gt;.&lt;br /&gt;
Currently as of 0.51pre we use a AVL tree which has complexity O(log(n)).&lt;br /&gt;
&lt;br /&gt;
The following complexities&amp;lt;ref&amp;gt;&lt;br /&gt;
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest (1990): Introduction to algorithms.&lt;br /&gt;
MIT Press / McGraw-Hill.&lt;br /&gt;
&amp;lt;/ref&amp;gt; are worst-case for binary and binomial heaps and [[Wikipedia:Amortized analysis|amortized complexity]] for Fibonacci heap. O(f) gives asymptotic upper bound and Θ(f) is asymptotically tight bound (see [[Wikipedia:Big O notation]]). Function names assume a min-heap.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;toccolours&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#e9e9e9&amp;quot; |&lt;br /&gt;
! Operation &lt;br /&gt;
! [[Wikipedia:Binary heap|Binary]]&lt;br /&gt;
! [[Wikipedia:Binomial heap|Binomial]] &lt;br /&gt;
! [[Wikipedia:Fibonacci heap|Fibonacci]]&lt;br /&gt;
|-&lt;br /&gt;
| createHeap&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| findMin &lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|| O(lg ''n'') or Θ(1)&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| deleteMin &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|-&lt;br /&gt;
| insert &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| decreaseKey &lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|-&lt;br /&gt;
| merge&lt;br /&gt;
|| Θ(''n'')&lt;br /&gt;
|| O(lg ''n'')&lt;br /&gt;
|| Θ(1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== other interesting data structures not directly related ==&lt;br /&gt;
* [[Wikipedia:Data_Structures]] general overview. Good entry point for trees: [[Wikipedia:Binary_tree]]&lt;br /&gt;
* [http://www.nist.gov/dads/ NIST Directory of Data Structures] has a very extensive overview&lt;br /&gt;
* [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=Optimal+Worst-Case+Operations+for+Implicit+Cache-Oblivious+Search+Trees&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 succinct datastructures (trees)]&lt;br /&gt;
* [http://blogs.msdn.com/devdev/archive/2005/12/05/500171.aspx succinct datastructures overview]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Trie Tries]&lt;br /&gt;
* [http://www-users.cs.umn.edu/~saad/PS/iter1.pdf sparse matrices]&lt;br /&gt;
* look at [http://users.footprints.net/~kaz/kazlib.html kazlib] from IS-IS ??&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Wikibooks:Data Structures/Min and Max Heaps|Heaps at wikibooks]]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-06-29T23:06:10Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* Who is working on what? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=  NEWS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We have released our first set of improvements to the olsrd SPF calculation module.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SPF implementation ==&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
== speed by efficient sorting ==&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;br /&gt;
&lt;br /&gt;
== Outlook ==&lt;br /&gt;
10-20% (depending on network size) in the route-handling module is admittedly not exciting. During refactoring the SPF implementation the olsrd-ng development team, has spotted further bottlenecks in the existing implementation. We are tackling this one by one, and would need active participation of the wireless communities to test our improvements and verify if we have added any undesired regressions. so stay tuned and report bugs to the [mailto:olsr-dev@lists.olsr.org olsrd-dev] mailing list.&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
please check out the [http://tema.lo-res.org/~aaron/spf-refactoring.diff.gz patch]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
|  OPEN&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| not yet started&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| OPEN/investigating&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;/tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;/tt&amp;gt;free()&amp;lt;tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long)&lt;br /&gt;
** fixup error reporting/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors)&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-06-29T23:00:55Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* Who is working on what? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=  NEWS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We have released our first set of improvements to the olsrd SPF calculation module.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SPF implementation ==&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
== speed by efficient sorting ==&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;br /&gt;
&lt;br /&gt;
== Outlook ==&lt;br /&gt;
10-20% (depending on network size) in the route-handling module is admittedly not exciting. During refactoring the SPF implementation the olsrd-ng development team, has spotted further bottlenecks in the existing implementation. We are tackling this one by one, and would need active participation of the wireless communities to test our improvements and verify if we have added any undesired regressions. so stay tuned and report bugs to the [mailto:olsr-dev@lists.olsr.org olsrd-dev] mailing list.&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
please check out the [http://tema.lo-res.org/~aaron/spf-refactoring.diff.gz patch]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* DONE(aka) update texas's BIOS - FIXED &lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovitsch&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
|  OPEN&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| not yet started&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| spurious neighbor loss on nodes with high neighbor count&lt;br /&gt;
| investigating&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
* more cleanups&lt;br /&gt;
** olsrd is doing '''lots of''' &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;s and &amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt;s - use &amp;lt;/tt&amp;gt;ltrace&amp;lt;/tt&amp;gt; to see this.&lt;br /&gt;
*** review &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; if it theys are superflous and can be implemented with buffers on the stack or just moving pointers around&lt;br /&gt;
*** are there very frequently &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;ed and &amp;lt;/tt&amp;gt;free()&amp;lt;tt&amp;gt;d ''struct''? Perhaps a free list can help to avoid lots of &amp;lt;tt&amp;gt;malloc()&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;free()&amp;lt;/tt&amp;gt; handling&lt;br /&gt;
** we have several coding styles in there&lt;br /&gt;
** add wrappers to hide type casts for Windows (and perhaps others). Reserve some prefix (e.g. ''x'' is used for this often as in &amp;lt;tt&amp;gt;xmalloc()&amp;lt;/tt&amp;gt;, ''olsr_'' is IMHO quite long)&lt;br /&gt;
** fixup error reporting/logging&lt;br /&gt;
** add synchronization and make the daemon multi-threading (e.g. the httpinfo plugin could benefit from such a thing)&lt;br /&gt;
** make the parameter parsing of the plugins more consistent (some are case-sensitive, some are not, most do not check syntax errors)&lt;br /&gt;
** ....&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-06-23T16:22:50Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: add description and rationale about the recent SPF improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=  NEWS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;We have released our first set of improvements to the olsrd SPF calculation module.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SPF implementation ==&lt;br /&gt;
When executing the [http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm SPF calculation]&lt;br /&gt;
upon every iteration the least cost path needs to be extracted and put on the result list.&lt;br /&gt;
For that purpose olsrd-current does keep a linear list which has O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] to traverse.&lt;br /&gt;
Every node needs to be visited, which&lt;br /&gt;
has again O(N) [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity]. This results in a total behavior of O(N^2) which can eat a lot&lt;br /&gt;
of CPU where N is large (for example when there are hundreds of olsrd nodes in a network).&lt;br /&gt;
&lt;br /&gt;
== speed by efficient sorting ==&lt;br /&gt;
modern SPF implementations use data structures which are efficient at sorting the preliminary path costs like&lt;br /&gt;
[http://en.wikipedia.org/wiki/Min_heap min_heaps] or [http://en.wikipedia.org/wiki/AVL_tree AVL_trees]. Since olsrd already&lt;br /&gt;
had a nice and efficient AVL tree implementation, the two SPF related data structures (the candidate and path tree) are implemented using&lt;br /&gt;
AVL trees with the path etx metric as the key. Determining the minimal path cost in an AVL tree comes at a cost of O(log(N)) which results&lt;br /&gt;
in a total [http://en.wikipedia.org/wiki/Asymptotic_complexity asymptotic_complexity] of O(N * log(N)), which scales much nicer now in large networks.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
In the [http://www.funkfeuer.at funkfeuer.at] network topology of 190 nodes the raw SPF execution was reduced by 45%. Note that the raw SPF execution represents only about 20% of the CPU cost in a running olsrd. At funkfeuer.at we have observed an overall decrease in the CPU load of about 12% on the embedded routers.&lt;br /&gt;
&lt;br /&gt;
== Outlook ==&lt;br /&gt;
10-20% (depending on network size) in the route-handling module is admittedly not exciting. During refactoring the SPF implementation the olsrd-ng development team, has spotted further bottlenecks in the existing implementation. We are tackling this one by one, and would need active participation of the wireless communities to test our improvements and verify if we have added any undesired regressions. so stay tuned and report bugs to the [mailto:olsr-dev@lists.olsr.org olsrd-dev] mailing list.&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
please check out the [http://tema.lo-res.org/~aaron/spf-refactoring.diff.gz patch]&lt;br /&gt;
&lt;br /&gt;
= sponsor =&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
= main links =&lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
= Goals =&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
== [http://www.user-mode-linux.org UML] test server ==&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== current open todos UML server ===&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* update texas's BIOS&lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
=== User HOWTO ===&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
=== Open questions/bug reports? ===&lt;br /&gt;
&lt;br /&gt;
= Who wants to contribute? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovich&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Who is working on what? =&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
|  OPEN&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| not yet started&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| WIP&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mm&amp;gt;[[olsr-ng.mm|flash]]&amp;lt;/mm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
= Next Steps =&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
&lt;br /&gt;
= Bounties =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
= Source code =&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
== Papers, Theory ==&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
== misc ==&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-06-21T17:55:41Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: update hannes working packages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sponsor ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
== main links == &lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
=== [http://www.user-mode-linux.org UML] test server ===&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== current open todos UML server ====&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* update texas's BIOS&lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
==== User HOWTO ====&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==== Open questions/bug reports? ====&lt;br /&gt;
&lt;br /&gt;
== Who wants to contribute? ==&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovich&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Who is working on what? ==&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
|  OPEN&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| not yet started&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| WIP&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| The basic ideas seem like 90% finished. Will be presented at the TU lecture &amp;quot;Verteilte Systeme&amp;quot; (&amp;quot;Distributed Systems&amp;quot;), 20.4.2007&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Bild:Olsr-ng.png|mind map for all the TODO/work items]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Papers, Theory ===&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
=== misc ===&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-06-21T17:54:33Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: fixup email&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;google&amp;gt;OLSR&amp;lt;/google&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== sponsor ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
== main links == &lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev . All commit messages can be seen on the olsr-cvs list&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://open-mesh.net/batman B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable '''in practice'''.&lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
=== [http://www.user-mode-linux.org UML] test server ===&lt;br /&gt;
&lt;br /&gt;
current load and statistics: http://texas.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology-1-small.png|center|600px|topo map 1500 UML instances running in parallel. Note the packetloss!]]&lt;br /&gt;
(check out the [[TopologyPics archive]] also)&lt;br /&gt;
&lt;br /&gt;
topo map 1500 UML instances running in parallel. Note the packetloss! &lt;br /&gt;
&lt;br /&gt;
We have already been running 2000 instances and there was still  plenty of RAM left. So 1000 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. &lt;br /&gt;
UML actually has other shortcomings: high CPU overhead, lots of context swiches. Trying to increase the performance at the moment...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== current open todos UML server ====&lt;br /&gt;
Next important (*) things to do:&lt;br /&gt;
* update texas's BIOS&lt;br /&gt;
* add the packet loss tc rules (zethix already prepared it)&lt;br /&gt;
* create random netowkrs (easy)&lt;br /&gt;
* create network topologies based on a power law distribution ( a bit harder, but realistic for the internet)&lt;br /&gt;
* DONE(zethix) create scripts to find out which olsrd instances crashed&lt;br /&gt;
* create scripts to find out if a UML instance is not responsive anymore&lt;br /&gt;
* find better measurement tools . Look into sar&lt;br /&gt;
* DONE(aka) recompile host kernel and get rid of the &amp;quot;BUG: soft lockup detected on CPU#0!&amp;quot; messages&lt;br /&gt;
* DONE(aka) recompile host kernel and enable the preemtion patch&lt;br /&gt;
* DONE(zethix,aka) make hostfs so that developers can easily upload a new olsrd version to all uml instances. They should see the difference easily. Look into hostfs&lt;br /&gt;
* DONE(ake) increase performance of the UML simulator itself (decrease HZ, look into SKAS3 patch again, 32 bit recompile, talk with jeff etc)&lt;br /&gt;
* find more meaningful topology visualization tools (http://www.caida.org)&lt;br /&gt;
* add b.a.t.m.a.n to the root filesystem. (?)&lt;br /&gt;
* compare the scheduling / scalability of the test with [http://openvz.org/ OpenVZ] and [http://www.olsr.org/docs/README-Olsr-Switch.html olsr_switch]&lt;br /&gt;
&lt;br /&gt;
==== User HOWTO ====&lt;br /&gt;
&lt;br /&gt;
  NOTE! You are root on the system. Effectively we need lots of sudo privs. So... use it wisely.&lt;br /&gt;
&lt;br /&gt;
# log in&lt;br /&gt;
# make clean&lt;br /&gt;
# edit common.sh and adapt the parameters to your needs&lt;br /&gt;
  #!/bin/sh&lt;br /&gt;
  #&lt;br /&gt;
  # VARS&lt;br /&gt;
  #&lt;br /&gt;
  MAX_INSTANCES=1500&lt;br /&gt;
  ROOT_FS=root_fs&lt;br /&gt;
  NICELVL=&amp;quot;-n 5&amp;quot;&lt;br /&gt;
  u=$USER&lt;br /&gt;
  #SINGLE=1&lt;br /&gt;
We supply you with a good working root filesystem (root_fs) so no need to change that. The SINGLE  parameter just says that you want to start a single instance and be logged in (needed for debugging purposes)&lt;br /&gt;
# the UML instance can read files and programs from &lt;br /&gt;
  $HOME/public_uml/share&lt;br /&gt;
This is where you can put your programs or your version of olsrd (and its libs) or the B.A.T.M.A.N. binaries.&lt;br /&gt;
&lt;br /&gt;
  N.B. This directory is shared between all UML instances that you will &lt;br /&gt;
  start in your simulation, so, they all have read-only access to it. &lt;br /&gt;
  It will appear inside each UML as /mnt/share/. There is also another, &lt;br /&gt;
  per-instance, read-write directory that you can use to save data for &lt;br /&gt;
  later analysis (e.g. redirect olsrd stdout to a file and print some &lt;br /&gt;
  debugging info there). This second directory will be under &lt;br /&gt;
  $HOME/public_uml/exp/&amp;lt;UML IP&amp;gt; (where UML IP is the ip address of each &lt;br /&gt;
  UML instance). It will also appear as /mnt/exp inside UML's environment.&lt;br /&gt;
&lt;br /&gt;
# put your special rcS file into $HOME/public_uml/share/etc/init.d/ . This rcS file will be called from the UML instances /etc/init.d/rcS startup script. Starting olsrd etc must be done from this user supplied rcS. In case there is no user supplied rcS, then the standard olsrd with the standard settings of the root_fs (/etc/olsrd.conf) us started.&lt;br /&gt;
&lt;br /&gt;
# make&lt;br /&gt;
&lt;br /&gt;
This will start the simulation.&lt;br /&gt;
&lt;br /&gt;
  N.B. When the simulation is started, an olsrd instance is started on &lt;br /&gt;
  the host as well. You can use it if you need to interact with the &lt;br /&gt;
  olsrd network - for instance, topology maps are generated through this&lt;br /&gt;
  instance (see below). &lt;br /&gt;
&lt;br /&gt;
# Issuing commands inside UML manually - the 'make' command creates a screen session for every UML process it creates, and redirects its input and output there. You can use screen to attach to a particular session. Use&lt;br /&gt;
  screen -ls              (as root)&lt;br /&gt;
to list all available sessions, and&lt;br /&gt;
  screen -S blabla.10.0.x.y -d -RR&lt;br /&gt;
to attach to a session. This will give you shell access to the system.&lt;br /&gt;
&lt;br /&gt;
  N.B. All modifications to the root filesystem will be preserved only &lt;br /&gt;
  for the duration of the simulation! Once it is stopped, changes will &lt;br /&gt;
  be lost!&lt;br /&gt;
&lt;br /&gt;
# observe the success on http://texas.funkfeuer.at or create a new topo map via ( cd /var/www/topo; ./doit.sh ). If you see a [http://en.wikipedia.org/wiki/Complete_graph complete graph], then your version has little packetloss!&lt;br /&gt;
&lt;br /&gt;
# stop it via &lt;br /&gt;
  make clean &lt;br /&gt;
or &lt;br /&gt;
  make stop&lt;br /&gt;
&lt;br /&gt;
Please make sure (by looking at http://texas.funkfeuer.at) if you are the only person running a simulation at the moment!&lt;br /&gt;
&lt;br /&gt;
'''Some things to note'''&lt;br /&gt;
&lt;br /&gt;
* the topology visualisation scripts run with nice level +5&lt;br /&gt;
the UML instances with nicelevel +10 (see run.sh)&lt;br /&gt;
-&amp;gt; Never ever go higher than nicelevel 0 because then you will disturb the system monitoring (munin) tools and we will not be able to see what the seimulation is doing.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==== Open questions/bug reports? ====&lt;br /&gt;
&lt;br /&gt;
== Who wants to contribute? ==&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Who is willing to work on something&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Contact info&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| mailto:aaron@lo-res.org&lt;br /&gt;
|-&lt;br /&gt;
| Roman Steiner&lt;br /&gt;
| mailto:roman.steiner@gmx.at&lt;br /&gt;
|-&lt;br /&gt;
| Bernd Petrovich&lt;br /&gt;
| mailto:bernd@firmix.at&lt;br /&gt;
|-&lt;br /&gt;
| Andrej Rursev (zethix)&lt;br /&gt;
| mailto:zethix@gmail.com&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| mailto:hannes@gredler.at&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Who is working on what? ==&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| release 0.5 make packages for  freifunk FW, DD-WRT, etc, windows (XP, Vista), ... and test them&lt;br /&gt;
|  OPEN&lt;br /&gt;
|-&lt;br /&gt;
| ???&lt;br /&gt;
| analyze IP autoconfig mechanisms and find the best one&lt;br /&gt;
| OPEN&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| not yet started&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| The basic ideas seem like 90% finished. Will be presented at the TU lecture &amp;quot;Verteilte Systeme&amp;quot; (&amp;quot;Distributed Systems&amp;quot;), 20.4.2007&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 2000 UML instances. But the uml_switch software still drops packets between virtual interfaces. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Bild:Olsr-ng.png|mind map for all the TODO/work items]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate. DONE. Let's see if new participants want to join.&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Papers, Theory ===&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
=== misc ===&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-04-17T18:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* Who is working on what? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== sponsor ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
== main links == &lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://www.open-mesh.org B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable &amp;lt;i&amp;gt;in practice&amp;lt;/i&amp;gt;. &lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
=== UML test server ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology.png|center|600px|topo map of first UML instances running in parallel. All instances are connected via one single uml_switch (virtual HW switch)]]&lt;br /&gt;
&lt;br /&gt;
topo map of first UML instances running in parallel. All instances are connected via one single uml_switch (virtual HW switch)&lt;br /&gt;
&lt;br /&gt;
We have already been running 400 instances and there was still  plenty of RAM left. So 500 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. More reserach on this is still needed however...&lt;br /&gt;
&lt;br /&gt;
More info on the [http://www.user-mode-linux.org UML] server coming soon...&lt;br /&gt;
&lt;br /&gt;
== Who is working on what? ==&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|- &lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| not yet started&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| The basic ideas seem like 90% finished. Will be presented at the TU lecture &amp;quot;Verteilte Systeme&amp;quot; (&amp;quot;Distributed Systems&amp;quot;), 20.4.2007&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 500+ UML instances. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Bild:Olsr-ng.png|mind map for all the TODO/work items]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Papers, Theory ===&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
=== misc ===&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/Datei:Olsr-ng.mm</id>
		<title>Datei:Olsr-ng.mm</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Datei:Olsr-ng.mm"/>
				<updated>2007-04-17T18:27:55Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: Mind Map der TODO Items&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mind Map der TODO Items&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-04-17T18:26:20Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: /* Who is working on what? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== sponsor ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
== main links == &lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://www.open-mesh.org B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable &amp;lt;i&amp;gt;in practice&amp;lt;/i&amp;gt;. &lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
=== UML test server ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology.png|center|600px|topo map of first UML instances running in parallel. All instances are connected via one single uml_switch (virtual HW switch)]]&lt;br /&gt;
&lt;br /&gt;
topo map of first UML instances running in parallel. All instances are connected via one single uml_switch (virtual HW switch)&lt;br /&gt;
&lt;br /&gt;
We have already been running 400 instances and there was still  plenty of RAM left. So 500 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. More reserach on this is still needed however...&lt;br /&gt;
&lt;br /&gt;
More info on the [http://www.user-mode-linux.org UML] server coming soon...&lt;br /&gt;
&lt;br /&gt;
== Who is working on what? ==&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|- &lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| not yet started&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| The basic ideas seem like 90% finished. Will be presented at the TU lecture &amp;quot;Verteilte Systeme&amp;quot; (&amp;quot;Distributed Systems&amp;quot;), 20.4.2007&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 500+ UML instances. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Bild:Olsr-ng.png|mind map (using freemind) for all the work items]]&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Papers, Theory ===&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
=== misc ===&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/Datei:Olsr-ng.png</id>
		<title>Datei:Olsr-ng.png</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/Datei:Olsr-ng.png"/>
				<updated>2007-04-17T18:23:34Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: Mind map aller Ideen / Todos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mind map aller Ideen / Todos&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-04-17T18:21:29Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: add mind map&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== sponsor ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
== main links == &lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://www.open-mesh.org B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable &amp;lt;i&amp;gt;in practice&amp;lt;/i&amp;gt;. &lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
=== UML test server ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology.png|center|600px|topo map of first UML instances running in parallel. All instances are connected via one single uml_switch (virtual HW switch)]]&lt;br /&gt;
&lt;br /&gt;
topo map of first UML instances running in parallel. All instances are connected via one single uml_switch (virtual HW switch)&lt;br /&gt;
&lt;br /&gt;
We have already been running 400 instances and there was still  plenty of RAM left. So 500 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. More reserach on this is still needed however...&lt;br /&gt;
&lt;br /&gt;
More info on the [http://www.user-mode-linux.org UML] server coming soon...&lt;br /&gt;
&lt;br /&gt;
== Who is working on what? ==&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|- &lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| not yet started&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| The basic ideas seem like 90% finished. Will be presented at the TU lecture &amp;quot;Verteilte Systeme&amp;quot; (&amp;quot;Distributed Systems&amp;quot;), 20.4.2007&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 500+ UML instances. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Bild:olsr-ng.png|mind map (using freemind) for all the work items]]&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Papers, Theory ===&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
=== misc ===&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	<entry>
		<id>https://oldwiki.funkfeuer.at/wiki/OLSR-NG</id>
		<title>OLSR-NG</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.funkfeuer.at/wiki/OLSR-NG"/>
				<updated>2007-04-16T12:47:42Z</updated>
		
		<summary type="html">&lt;p&gt;Hannes: Hannes working items&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== sponsor ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:netideelogo.png|800px|supported by IPA]] made possible by a grant from [http://www.netidee.at IPA].  Thanks we really appreciate your help and your courage to support us!&lt;br /&gt;
&lt;br /&gt;
== main links == &lt;br /&gt;
&lt;br /&gt;
Main OLSR-NG project blog: http://olsr.funkfeuer.at&lt;br /&gt;
&lt;br /&gt;
Slides from the OLSR-NG kickoff presentation: http://outpost.funkfeuer.at/~aaron/olsr-ng.pdf&lt;br /&gt;
&lt;br /&gt;
We communicate on the olsr-dev mailinglist: https://www.olsr.org/mailman/listinfo/olsr-dev&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
&lt;br /&gt;
# Clean up the code of OLSR (http://www.olsr.org), &lt;br /&gt;
# improve the algorithms of OLSR and make it more scalable.&lt;br /&gt;
# Furthermore, produce a new RFC for a (potential) new mesh routing protocol which is based on the experiences of OLSR coding (at the moment the most promising candidate for this RFC is [http://www.open-mesh.org B.A.T.M.A.N])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OLSR-NG is a open source project. Meaning everybody is invited to join in and help. &lt;br /&gt;
We do have some bounties for the best solutions. If you want to participate, drop us an email: mailto:aaron@lo-res.org and mailto:bernd@firmix.at&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of the main goals is to make OLSR more scalable &amp;lt;i&amp;gt;in practice&amp;lt;/i&amp;gt;. &lt;br /&gt;
[[Bild:O-Dijkstra.gif|350px|right|Complexity for n=1000 nodes of different data structures in the Dijkstra shortest path (SPF) algorithm. ]]&lt;br /&gt;
&lt;br /&gt;
In the this picture you can see the different complexity graphs for the SPF under the assumption that every node has 10 edges . As you can see, the red line has O(n^2) complexity. This conforms to the current implementation of OLSR from www.olsr.org. OLSR-NG plans to reduce the complexity to the green or even the yellow level. This will allow the mesh network clouds to become larger by a factor ~ 1000 (on the routing layer / layer 3).&lt;br /&gt;
&lt;br /&gt;
== Current Status ==&lt;br /&gt;
&lt;br /&gt;
* olsrd 0.5 was released! Thx everybody a lot!&lt;br /&gt;
* UML test server is being worked on. This will allow the B.A.T.M.A.N team to test their protocol and us to test our scalability ideas with 1000nd of olsr instances.&lt;br /&gt;
* Ongoing code cleanups&lt;br /&gt;
* AVL tree optimizations&lt;br /&gt;
&lt;br /&gt;
=== UML test server ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Texas.funkfeuer.at.png|right|300px|our UML server]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Topology.png|center|500px|topo map of first UML instances running in parallel. All instances are connected via one single uml_switch (virtual HW switch)]]&lt;br /&gt;
&lt;br /&gt;
topo map of first UML instances running in parallel. All instances are connected via one single uml_switch (virtual HW switch)&lt;br /&gt;
&lt;br /&gt;
We have already been running 400 instances and there was still  plenty of RAM left. So 500 is a very safe bet. However according to the UML docu we can probably safely assume that we can scale up miuch higher because UML will only take the RAM that each instance actually needs. More reserach on this is still needed however...&lt;br /&gt;
&lt;br /&gt;
More info on the [http://www.user-mode-linux.org UML] server coming soon...&lt;br /&gt;
&lt;br /&gt;
== Who is working on what? ==&lt;br /&gt;
{| width=&amp;quot;80%&amp;quot; class=&amp;quot;events&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!align=&amp;quot;left&amp;quot;  | Who&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | What&lt;br /&gt;
!align=&amp;quot;left&amp;quot; | Status&lt;br /&gt;
|-  class=&amp;quot;oeffentlich&amp;quot;&lt;br /&gt;
| Bernd Petrovitsch, Thomas Lopatic, Hannes Gredler&lt;br /&gt;
| release 0.5&lt;br /&gt;
| DONE&lt;br /&gt;
|- &lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| tcpdump parses olsr packets, &lt;br /&gt;
| DONE&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| SPF improvments&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| reduce malloc thrashing during SPF computation&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Hannes Gredler&lt;br /&gt;
| improve post-SPF handling (route table conciliation)&lt;br /&gt;
| not yet started&lt;br /&gt;
|- &lt;br /&gt;
| Aaron Kaplan,Bernd Petrovitsch&lt;br /&gt;
| olsr-ng test server&lt;br /&gt;
| WIP&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Kaplan&lt;br /&gt;
| theory, complexity analysis. Goal: find the best complexity on the algorithmic side.&lt;br /&gt;
| The basic ideas seem like 90% finished. Will be presented at the TU lecture &amp;quot;Verteilte Systeme&amp;quot; (&amp;quot;Distributed Systems&amp;quot;), 20.4.2007&lt;br /&gt;
|-&lt;br /&gt;
| Zethix, Aaron Kaplan&lt;br /&gt;
| UML cluster setup&lt;br /&gt;
| WIP, currently we can start around 500+ UML instances. http://www.openvz.org seems also like a promising solution&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
contact mailto:aaron@lo-res.org  or Bernd if you are interested in participating!&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* TU Wien lecture [http://tuwis.tuwien.ac.at/lva/tuwien/384090 &amp;quot;Verteilte systeme&amp;quot;], 20.4.2007 will present our ideas about optimizing complexity. Aaron also wants to adress more students from the TU to participate&lt;br /&gt;
* finalize the UML test server&lt;br /&gt;
* try out the optimization ideas and document the speedup&lt;br /&gt;
&lt;br /&gt;
== Bounties ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
please take a look at the slides and get in contact with us directly at the moment!&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
* CVS repos:  &lt;br /&gt;
  (as user &amp;quot;ipo23&amp;quot; ) &lt;br /&gt;
     export CVS_RSH=ssh&lt;br /&gt;
     cvs -z3 -d:ext:ipo23@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
  as anonymous user) &lt;br /&gt;
      cvs -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd login &lt;br /&gt;
      cvs -z3 -d:pserver:anonymous@olsrd.cvs.sourceforge.net:/cvsroot/olsrd co -P olsrd-current&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
=== Papers, Theory ===&lt;br /&gt;
* [http://ietfreport.isoc.org/idref/rfc3626/ RFC-3626]: the &amp;quot;OLSR RFC&amp;quot;&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=152&amp;amp;Itemid=1 Workshop at Hipercom Oct 2006]&lt;br /&gt;
* [http://www.lix.polytechnique.fr/hipercom/index.php?option=com_content&amp;amp;task=view&amp;amp;id=60&amp;amp;Itemid=50 OLSR-v2 Draft 01 at hipercom]&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-olsrv2-02.txt&lt;br /&gt;
** http://www.ietf.org/internet-drafts/draft-ietf-manet-packetbb-02.txt&lt;br /&gt;
** http://olsrv2.online.fr/blog/ OLSRv2 Development Blog&lt;br /&gt;
* http://www.adhocsys.org/&lt;br /&gt;
   AdHocSys is a two-year European project to provide reliable broadband services in rural and mountain regions. This objective&lt;br /&gt;
   will be achieved by means of the creation of a wireless ad hoc broadband network, with special enhancements to reliability&lt;br /&gt;
   and availability. The network consists of one or several gateways connecting to the global Internet and several intermediate&lt;br /&gt;
   nodes which provide multihop connections between the gateways and end users.&lt;br /&gt;
* [http://folk.uio.no/kenneho/index.php?page=studies&amp;amp;subpage=wospf WOSPF-OR] Uni Oslo Wireless OSPF with Overlapping Relays&lt;br /&gt;
* [http://hipserver.mct.phantomworks.org/ietf/ospf/ W-OSPF] INRA/Boing Wireless OSPF&lt;br /&gt;
&lt;br /&gt;
=== misc ===&lt;br /&gt;
* Homepage: http://www.olsr.org/&lt;br /&gt;
* NATO C3 Agency (NC3A) Radio Protocols Lab https://elayne.nc3a.nato.int/&lt;br /&gt;
* commercial INRIA HIPERCOM spin-off http://www.luceor.com/&lt;br /&gt;
* commercial MIT Roofnet spin-off http://www.meraki.net/&lt;/div&gt;</summary>
		<author><name>Hannes</name></author>	</entry>

	</feed>