Multicast for OLSR mesh networks: Obamp release by Saverio Proto

Saverio Proto (ZioPRoTo) has the released the olsr OBAMP plugin, that was a freifunk project for the Google Summer Of Code. The OBAMP plugin allows multicast traffic to be forwarded in a OLSR mesh network. OBAMP is an overlay protocol. It first makes a mesh network with overlay links (udp tunnels) between the OBAMP nodes, and then it creates a distribution spanning tree over these mesh links.

This version of the OBAMP protocol, implemented as an OLSR plugin, is a simplified one for Wireless Community Networks, where we assume the nodes to be in fixed positions on the roof of the houses. Protocol features regarding mobility have not been implemented (yet).

To explain how the plugin works consider the scenario in the following figure:

There are 7 routers, where only 5 have the OBAMP plugin working. Router 1 2 and 6 also have an attached HNA network with some hosts.

OBAMP nodes generate OLSR OBAMP_ALIVE messages, these OLSR messages are forwarded in the whole network (also by the nodes that do not understand OBAMP thanks to the OLSR design). Because of the flooding mechanism every OBAMP node has a complete list of all the other OBAMP nodes in the mesh network. Every OBAMP node listens on the UDP port 6226 for OBAMP signalling.

When a OBAMP nodes starts it has 5 timers to periodically start operations:

OBAMP_alive_timer: every obamp node sends alive messages to advertise its presence to the other obamp nodes in the network. In the alive message every nodes states its IP address, and if it has already a tree link or not (we will see later this information is important for the outer tree create procedure).
The OBAMP network must have a member called “Core”, that starts the TREE_CREATE procedure. The core is the node with the smallest IP address. When the list of known OBAMP nodes changes, the Core Election procedure is eventually called.

mesh_create_timer: every obamp node every OBAMP_MESH_CREATE_IVAL evaluates how far the other obamp nodes are and selects a subset of nodes to keep mesh links with. Note that to reduce signalling and to increase scalability, the overylay mesh links are setup only with a subset of the nearest OBAMP nodes. To select the overlay neighbor the OBAMP nodes first calculates the ETX distance of the nearest OBAMP nodes, and the creates overlay mesh links to every node that are far in the range (minETX,minETX+1)

tree_create_timer: the core of the network every OBAMP_TREE_CREATE_IVAL sends a message called TREE_CREATE on its mesh links. The creation of the spanning tree is very similar to the spanning tree protocol. When a TREE_CREATE message is received a OBAMP node enables a tree link with its parent and forwards the TREE_CREATE on the other mesh links. TREE_CREATE messages are generated only by the core and are numbered, so TREE_CREATE received over loops can be discarded.

outer_tree_create_timer: The mesh_create algorithm may create cluster of OBAMP nodes within the network that are disconnected between each other. This happens if there are groups OBAMP nodes that are far from each other. If this happens only the cluster where the Core is present will receive the TREE_CREATE and will receive traffic from the distribution tree. To overcome this problem if in a cluster there are not TREE_CREATE every OBAMP_TREE_CREATE_IVAL the node with the smallest IP in the cluster will make a long mesh link with the nearest node that has at least a tree link. All the necessary information to perform this procedure is diffused in the OBAMP_ALIVE messages.

purge_nodes_timer: checks expire time of various variables, and deletes nodes or tree links in a soft state fashion

The OBAMP nodes will capture the multicast udp traffic from the non-OLSR interfaces, and will forward this traffic encapsulated in the UDP tunnels of the distribution tree. The other OBAMP nodes will forward the traffic in the tree and will decapsulate it on their non-OLSR interfaces. To avoid duplicated packets the data is carried into OBAMP_DATA messages, that are identified by a sequence number, and the OBAMP source node where the traffic has been encapsulated.

In the figure black links represent real radio links, and red links represent overlay mesh links (udp tunnels). Router 1 2 3 and will create a OBAMP cluster, with two mesh links. Router 6 and 7 will create a mesh link between them. Because the mesh_create algorithm does not create a mesh link between the two clusters, the router 6 (supposing it has the smallest IP address in the mesh) will create an outer tree link with Router 3.

So please download the code and use it . If you find bugs please report them to Saverio and in the Sourceforge tracker here:

Thanks for this great result of the summer. Special thanks also to Nino from who was the mentor for this projet.



Freifunk Summer of Code ten students accepted

Thank you to all applicants for the Freifunk Summer of Code project and congratulations to the accepted students! All together there were 49 applications for Freifunk. We could accept 10 students. They are currently updating their project proposals. I will present them here soon. We invite the students and anyone else to our Wireless Community Weekend at the end of May. More info coming out soon. Good luck for your summer of code projects For everyone who did not get in or people who did not apply, we welcome every contributor and user of the freifunk software tools and are looking forward to your involvement outside the Summer of Code.

Freifunk Summer of Code - Questions for your application

Eight Questions to answer for your application for the Freifunk Summer of Code. We are interested in your answers to get an idea, how you would be able to contribute to Freifunk. Dont worry too much about a correct English. We are more interested in the content of what you have to say and how you could join up with us, than about perfect Englich.

1. Please tell us your name and your country or origin or local background.

2. Please list contributions to the Freifunk/OpenWrt and related projects or any other freely licensed Open Source project below.

3. Please tell us about your proposed project and the relevance to Freifunk. You can also provide a link where you offer more details here.

4.  What is your expertise and ability to conduct the project you propose? How do you plan to achieve the goals of the proposed project?

5. How would you describe your knowledge of development of Linux OS and OpenWrt related programming languages such as Lua?

6. How do you think you will participate in the Freifunk/OpenWrt development after the Google Summer of Code?

7. What would you like us to do to ensure that you stick with the project after the program concludes?

8. How do you plan to keep in touch with the Freifunk/OpenWrt community and your mentor during the summer of code?



* Ideas


Freifunk Participation in the Google Summer of Code 2009

I applied for the Google Summer of Code for Freifunk again this year and we got in :-) Please check the info page on the summer of code page for Freifunk here: . Applications need to be submitted via the Google Summer of Code website.

Discuss your ideas for development on the IRC channels of Freifunk and OpenWrt here: #freifunk #openwrt 

We have set up a wiki page for ideas. Please add your idea here:

Some frequently asked questions from the Summer of Code FAQ

How does a student apply?
Students can submit their applications via the Google Summer of Code 2009 site from March 23 - April 3, 2009. ... make sure to check out each organization's "Ideas" list to get to know a particular open source organization better.  
What should a student application look like?
Your application should include the following: your project proposal, why you'd like to execute on this particular project, and the reason you're the best individual to do so. Your proposal should also include details of your academic, industry, and/or open source development experience, and other details as you see fit. An explanation of your development methodology is a good idea, as well. If the organization you want to work with has a specific application template they would like you to use, it will be made available to you to fill in when submitting your proposal via the GSoC web app.   
Can a student submit more than one application?
Yes, each student may submit up to twenty applications. However, only one application will be accepted. We've heard from our mentoring organizations that quality is better than quantity.   
Can students already working on an open source project continue to work on it as part of Google Summer of Code?
Yes, as long as they meet all other requirements for program eligibility. Students should be sure to note their previous relationship with the project in their applications. New work will need to be done for the project as part of participation in GSoC.   
Should students begin working on their applications before Google begins accepting program applications?       
That's up to you. Keep in mind, though, that our mentoring organizations will be publishing a list of proposed project ideas, so you may find that you'll want to revamp your application later, or create an entirely new one to address one of those ideas.   
Can a student work on more than one project?
No, each participant is only eligible for one stipend.   
Can a group apply for and work on a single proposal?
No, only an individual may work on a given project. Of course, students should feel free to collaborate with others to accomplish their project goals. 



* Ideas

Freifunk Application for Google Summer of Code - We did not make it .. this time

What happened to the application of the freifunk community (Blog entry) for the Google Summer of code? Well, as you can guess by now, unfortunately we did not get it.. even though we were close. I had asked Leslie Hawthorn and she wrote us back the following lines:

"I know OpenWRT and like them. We simply couldn't accept everyone. You folks made our short list if that helps. I can give you more feedback if you send me the URL for your ideas list. Is there a way Google can help you beyond Summer of Code? Leslie Hawthorn"

We had some nice ideas. Our intention was to serve as an umbrella for all the freifunk projects here, but maybe we can join the program next year. We still have the ideas pages, which is probably also intresting for developers who want to join freifunk projects in the future.

Some of the project ideas were/are:

  • Multimedia Streaming in Mesh Networks / Porting Obamp to C++
  • Passive + Active Measurement in Mesh Networks / Porting OpenIMP probes to OpenWRT
  • Traffic Flow Visualization / IPFIX DataSource for freimap
  • Mesh Node Status Monitoring / SNMP DataSource for freimap
  • Service Discovery in Mesh Networks / Avahi DataSource for freimap
  • Service Control Module for freimap
  • Topology visualization / B.A.T.M.A.N and olsrd routing decision recovery for freimap
  • Database output for freimap
  • Antenna placement information elements in freifunk map data
  • Search in Wireless Mesh Networks - Yacy
  • Search in Wireless Mesh Networks - Nutch/Lucene
  • Peer-to-peer file sharing applications in Wireless Mesh Networks
  • Developing a Freifunk Theme for CMS
  • VoIP phoning in Freifunk Mesh Networks
  • Porting Freifunk to EeePC
  • Freifunk Webinterface for OpenWrt Kamikaze


Freifunk-Projekte für Google Summer of Code gesucht

Bis zum 12. März können sich Open Source-Projekte beim Google Summer of Code bewerben.

Für jeden studentischen Entwickler stiftet Google ein "Stipendium" in Höhe von 5000 US-Dollar. 4500 Dollar der Summe gehen direkt an den Studenten, die restlichen 500 Dollar erhält das betreuende Open-Source-Projekt. Eine FAQ enthält einen genauen Zeitplan und beantwortet Fragen zu Details des Förderprogramms. (04.03.2008 11:37,

Wer Lust hat sich für ein freifunkrelevantes Projekt bei Google zu bewerben, kann sich gerne bei mir melden. Ich helfe euch gerne bei der Bewerbung. Beispiele für erfolgreiche Bewerbungen und ein "HOWTO: Write a Summer of Code application" gibt es u.a. bei der Drupal-Community zu sehen. Potentielle Freifunk-Projekte, die mir einfallen sind Maps, Mashups und Protokolle.

Syndicate content