Here I present you a report of the finals state of my GSoC project. For further information feel free to contact me using the channels described in the github and documentation.
“BGP/Bird integration with OpenWRT and QMP”  project's main goals were to improve Bird4/6 Daemon  adding a better integration with OpenWRT bringing UCI configuration to it, to add an user-friendly interface to make it easier using the LuCI web-framework, to be able to port it to QMP mesh networks and, finally, to automate the route exchange and metric translation between Guifi.net (BGP) and QMP (BMX6) .
Current solution consists on two OpenWRT packets: bird4/6-uci and bird4/6-luci. While bird4/6-uci allows the user to modify Bird’s configuration and apply it using the init.d script, the bird4/6-luci package brings a web interface to make this UCI configuration even easier.
Regarding bird4/6-uci package, UCI configuration scheme was agreed with Bird main developers owing, not just to make a solution, but also to consensus its development and characteristics with their main developers. The package includes a DOCUMENTATION file with all the available options, its description and examples.
Regarding bird4/6-luci package, it brings all the necessary files to add LuCI web-based configuration interface and has bird4/6-uci as a dependency.
Finally, the solution used to automate the translation and exchange of routes between BGP and BMX6, uses Bird filters instead of an external developed tool:
First of all, as BGP routes are automatically exported and imported only using UCI configuration, the efforts were put into the reverse part. Second, initial experiments were done in the WiBed platform , owing to be able to repeat and test the solution without the possibility of “breaking anything”. Once the solution was stable enough, packages were installed in a QMP mesh with 5 nodes (2x WDR4300, 1x WDR3900, 1x WRTNode and 1x WR703N) and also connected with a Mikrotik RouterBoard 750G to check the routes exported. Moreover, some tests were made connecting the RouterBoard to Guifi.net’s UPC point, working with more than 500 routes.
Example of original Bird configuration:
log "/tmp/bird4.log" all;
debug protocols all;
router id 10.1.26.50;
Example of the same configuration using UCI:
config global 'global'
option log_file '/tmp/bird4.log'
option log 'all'
option debug 'all'
option router_id '10.1.26.50'
option name 'aux'
An example of the LuCI configuration web page can be seen here:
Example of BMX6 Routes and how are they filtered:
# ip r show
10.0.0.0/8 dev bmxOut_HW-Ermi proto static metric 1024
10.1.32.0/27 dev bmxOut_HW-Ermi proto static metric 1024
The pattern used in IPv4 filters is the device name "bmx*" and also the metric "1024" owing not to repeat or export internal routes.
In IPv6 the procedure used is to filter the 60 kernel table, as it contains all BMX6 iroutes:
# ip -6 r s table 60
fd66:66:66:8:de9f:dbff:fe35:17b6 via fe80::de9f:dbff:fe34:17b6 dev wlan0.12 proto static metric 1024
fd66:66:66:a:de9f:dbff:fe34:17b6 via fe80::de9f:dbff:fe34:17b6 dev wlan0.12 proto static metric 1024
Both package repositories are actually in my personal Github account  and .
Finally, I want to thank Freifunk for the opportunity given to me with this GSoC project, to my mentors Roger Baig and Axel Neumann, to Pau Escrich for his support during the project and to Guifi.net and QMP project and their communities for the support received.
Eloi Carbó Solé.
This year, the Google Summer of Code and FreiFunk have given to Guifi.net and QMP communities the opportunity to develope a project in this event. This project is: BGP/Bird integration with OpenWRT and QMP.
A brief description of the project
Most of the community networks run dynamic routing protocols (OLSR, BMX6, BATMAN-ADV, etc.) with non-dynamic ones (BGP, OSPF, etc.). Guifi.net (BGP) and QMP (BMX6) are a scenario where this collision of metrics and routes happens.
Furthermore, these communities are using Quagga for the BGP routing, which is a complex and oversized tool for the type of nodes that will work with it. For these kind of nodes, Bird is a really lightweight BGP daemon that is still not well supported to be used easily by the community (it does not have an easy and graphical configuration system yet).
This project will contribute with:
1st Block: Adapting Bird to fit into QMP firmware. (1 month)
2n Block: Automate the translations of routes and metrics between a non-dynamic routing protocol and a dynamic one. (~2 months)
3rd Block: Project basic feedback and documentation (1 week)
About the author
I am Eloi Carbó, a Computer Science student specialized in Information Technology in the UPC of Barcelona. Currently I am working on my Final Degree dissertation: UPC CN-A testbed mesh network deployment, monitoring and validation. Using the Wibed Platform developed by the CONFINE Project [Link: https://wiki.confine-project.eu/wibed:start].
About the project collaborators
The project tutors are Roger Baig (fundació Guifi.net) and Axel Neumann (Freifunk and BMX6 support) and the special collaboration of Pau Escrich (fundació Guifi.net and QMP project).
Hakais has put up some info about student projects that were accepted as Freifunk Google Summer of Code projects and which are taken care by Guifi.net. Two students involved in Guifi.net have been accepted for the Gsoc 2012.
Google Summer of Code is a global program that offers students stipends to write code for open source projects. We have worked with the open source community to identify and fund exciting projects for the upcoming summer. One of these projects is named Guifi.net integration for QMP system, which has been applied by Joel Espunya and mentored by Pau Escrich. The main objective of it is to provide an easy way to use the QMP Mesh firmware inside the Guifi.net community network. (http://guifi.net/en/node/47699)
More info on the projects:
The main purpose of QMP (Quick Mesh Project) is to provide an open and free software solution for the quick deployment of a WiFi network based on Mesh/MANET technology. It is focused to be useful mainly in the wireless community network. It is based on OpenWRT Linux and it is completely OpenSource.
The QMP project was drafted by Guifi.net (http://guifi.net/en) active members during year 2010. It was started on the beginnings of 2011 thanks to the funding of a local fundation named puntCat (http://www.fundacio.cat/en_index.html). This funding was ended on december 2011. However the project development still alive by a volunteers team.
Strictly speaking, a Mesh network is one where all nodes (participants) are routers, meaning that all the nodes accept and forward packets from other nodes according to the routing rules. Thanks to this property the physical topology of the network is only restricted by the need of all nodes to be connected through at least one link.
A community network is a network made and maintained by the same participants. Unlike the model used by the global telecommunication companies (which are business-focused), each user is owner of his stretch following the philosophy make-it-yourself. Using some agreements and organizations (e.g web site) they are able to connect with neighbours, neighbours of the neighbours and so on.
The objective of the project is to provide a software solution to easy integrate the Guifi.net characteristics into the QMP system.
Currently QMP is a working system, that can be used to easy deploy a Mesh Network but there are several missing features. One of them is the integration with the Guifi.net community. It can also be used as a template for the integration of other Network Communities like Freifunk, Funkfeuer, AWMN, etc.
The Freifunk Wireless Community Weekend 2008 is over. I had a fantastic time meeting so many people pushing the idea of free networks to new hights. The interest in free wireless was overwhelming and we probably had more than double the number of the 51 visitors who put their names on the participants list. Many developers were taking part. We saw presentations about OpenWRT, B.A.T.M.A.N., the HorstTool, mikroFM, OpenHardware and the Luci-Interface for Freifunk networks. Receiving questions about "free networks and the implications of the law" regularly, we were extremely pleased that Reto Mantz recently published a doctoral thesis about this subject and held a presentation at the WCW (slides now available).
Besides German communities we were very happy to meet many friends from other countries like www.guifi.net from Catalunia, Spain, Sergey Yugov from Russia, Jesper Svarre with 28 people from Denmark and our friends from the Rome community ninux.org.
Together with the help of Italian and German Freifunkers Saverio and me made tons of interviews. Be sure it will not take two years this time to see them online ;-) Get a little taste of the WCW2008 with the first of a series of videos already published by our Italian friends.
Per ora vi lascio con questo breve video, che mostra qualche immagine della domenicale del Wireless Community Weekend. Molto presto verranno pubblicate le interviste. (http://blog.ninux.org/2008/05/05/lultima-sera-al-wcw2008/)
Direct Link: http://www.youtube.com/watch?v=gGZcH49j4hw