GSoC: nodewatcher v3

Hello all!

Thanks to this year's GSoC, a lot of work has been done on nodewatcher v3 platform. It now has a better, modular monitoring agent that can run on OpenWrt-supported devices, with a new JSON-based output format that can be easily reused by other projects as well. The platform has been ported to the latest stable version of Django (1.6) together with all migrations and dependencies. Development environment setup now uses Docker and fig in order to make it very easy to dive into the code without having to battle with various dependencies.

The API for access to node configuration and monitoring data (registry API) has been much improved, with better, more usable querying capabilities and performance. During development we have discovered a bug with cascade deletions and  polymorphic models in Django. Node configuration editor based on the registry API now supports references between form models that have not yet been saved -- this functionality enables configuration of bridge interfaces which are now also supported by the firmware generator. I have implemented type support in the datastream library for long-term monitoring data storage with a new type for storing graphs as datapoints. This enables nodewatcher v3 to use datastream to store how the network topology evolves over time.

All the code is available on GitHub in several repositories:

[GSoC-2014] Final report of the GSoC project: “BGP/Bird integration with OpenWRT and QMP”

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” [0] project's main goals were to improve Bird4/6 Daemon [1] 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 (BGP) and QMP (BMX6) [2].

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 [3], 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’s UPC point, working with more than 500 routes.

Example of original Bird configuration:

log "/tmp/bird4.log" all;
debug protocols all;
#Router ID
router id;
#Secondary tables
table aux;

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 ''

config table
    option name 'aux'

An example of the LuCI configuration web page can be seen here:

Bird BGP LuCI configuration example

Example of BMX6 Routes and how are they filtered:

# ip r show dev bmxOut_HW-Ermi  proto static  metric 1024 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

Future work:

  • Continue adding the rest of BGP options to improve the solution.
  • Add OSPF (first of all) and the rest of the protocols to the UCI and LuCI solution.
  • Send the bird4/6-uci/luci package to OpenWRT willing to became an official package.
  • Continue giving support to package users and maintaining it.

Both package repositories are actually in my personal Github account [4] and [5].

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 and QMP project and their communities for the support received.

Eloi Carbó Solé.







Einladung zum Freien Freifunktreffen in Halle am 19.07.2014 (Sommerfest)

Wie jedes Jahr, trifft sich auch dieses Jahr die hallesche Freifunk-Community im Sommer am Hufeisensee. Es ist ein regionales Treffen, welches offen für alle Freifunk-Communitys ist. Hiermit möchten wir euch einladen am 19.07.2014 vorbei zu schauen.

Diesmal sind wir zu Gast auf dem Vereinsgelände vom Tauchclub Orca in der Schkeuditzer Str. 70 | 06116 Halle, wo wir uns ab 15 Uhr treffen. Das Gelände bietet alles, was Freifunker für ein produktives Treffen benötigen: Freifunk, Internet, Strom und Grill sind genauso vorhanden, wie Tische und Stühle um eigene Rechentechnik aufzubauen. Die Freifunk Community aus Halle will dieses Treffen nutzen, um einen eigenen Förderverein zu gründen. Der Förderverein soll die Aufgabe übernehmen, das Projekt Freifunk in Halle organisatorisch zu unterstützen. Weitere Informationen gibt es im Fragen und Anregungen können auch bei uns im Forum diskutiert werden. Gäste werden gebeten, sich anzumelden, um besser planen zu können.


Neue Webseite, neue Firmware, neue Neuigkeiten aus Bielefeld

Unsere kleine Community in Bielefeld wächst zur Zeit ruhig aber stetig. Jetzt wurde unsere Webseite komplett erneuert und unsere Mailingliste ist auch endlich von googlegroups umgezogen, nachdem immer mehr Leute gemeldet haben das ihr Emails nicht ankommen würden - wer da böses denkt. ;-)

Auch ist eine neue Firmware verfügbar (0.3), die nicht nur stabiler läuft sondern auch viele neue Router unterstützt. An dieser Stelle einen Dank an das Gluon-Projekt für einige Pakete und Patches die wir übernehmen konnten (autoupdater / traffic control). Für einige Modelle mussten wir aber aber auf eine noch experimentelle OpenWrt Version zurückgreifen (Barrier Breaker). Aber es funkt! :D

Heute gab es auch einen Vortrag zum Thema Freifunk im Rahmen der Netzwoche in der Universität Bielefeld. Vielleicht wurde die eine oder andere Person dazu inspiriert einen Router aufzustellen oder aktiv mitzumachen. Die Folien sollen bald veröffentlich werden, so dass auch andere sie nutzen können.

Viele Grüße,

Freifunk Bielefeld

GSoC: Freifunk API Query Client - A short report from the Wireless Community Weekend 2014

Photo taken from

Photo taken from

From the 29th May to the 1st of June we were with Andi and Bernd from Weimarnetz at the wunderful c-base Raumstation. We visited the Wireless Community Weekend. It was my first experience of this kind of community event and I enjoyed it very much.

Beer and Bratwurst did harmonize quite well with technical talks about OpenWrt and the Freifunk Community. I was especially surprised how diverse and open the community is and how enthusiastic everyone involved was.

Andi and Monic talked about the progress on the Freifunk API and presented their work. At the end of their talk I had the chance to present my work on the query client for the API. Here are the slides.

Shortly after the talk Jürgen Neumann from Freifunk Berlin came to me and introduced me to DeepaMehta. My original plan was to use something like NodeJS for the backend the storage of the API data but DeepaMehta looked promising and offers unique features I didn't even thought off.

So after talking with Andi about it we decided to use DeepaMehta as the foundation and storage tool for the API data. A seperate blogpost for the GSoC midterm evaluation will outline my work in this direction.

Overall it was a very exciting weekend for me at #ffwcw 2014.

GSoC: nodewatcher v3 - data collector agent

Hello all!

A quick update on what is happening regarding my GSoC project with bringing nodewatcher v3 platform closer to reality. Version 2 of nodewatcher used its own simple key-value format and a bunch of shell scripts to provide monitoring data. In order to bring this into the modern era where JSON and ubus are available as compact libraries on OpenWrt by default, I have in the last few days created a new modular OpenWrt monitoring agent that can run on nodes and periodically obtain data from various sources (directly from procfs, from uci, from netifd via ubus, from nl80211 netlink API via OpenWrt's libiwinfo, etc.).

The daemon is implemented in C and different data sources are implemented as loadable shared object modules, enabling simple extensibility. Nodewatcher agent then provides all of the collected data in two ways: a) it can directly output data to a JSON file that can be served via HTTP; and b) it also provides an ubus object called nodewatcher.agent that exposes a get_data method, so other applications can obtain the same structured data as an ubus blobmsg. The nodewatcher monitoring agent could perhaps also be reused by the proposed Freifunk Monitoring and Administration Panel.

The nodewatcher-agent repository is hosted on GitHub with a README file providing a quick description of the used format, the ubus API and the currently implemented modules:

I have also packaged the agent for OpenWrt so it can be installed together with its various data source modules via opkg. The packages are available in the nodewatcher firmware package repository:

The agent and its packages should be considered alpha and the schema is still subject to change.

GSoC: Freifunk API Query Client


My GSoC Project for Freifunk is the development of a Query Client for the Freifunk API.

The Freifunk API is inspired by the so called "Space API" that is used by Hackerspaces all over the world.
It provides detailled information about every Freifunk Community and is intended to serve as a central place to aquire information and statistics about all Freifunk communities.

Freifunk communities can provide their data for the API using the generator.

The aim of my project is to provide a query browser for the API data to make the data for humans as well as machines more useful and accessible.

Possible usage examples are queries like:

- All contact mailinglists for all communities.
- Sum over all node numbers of all communites
- Show the name and webpage of all communities that use OLSR for routing.
- ...

The API is defined using JSON-Schema. The current (0.3.0) version of the definition is here.

The query client will provide queries for the API data according to the specification.

It will be a JavaScript based web-application that loads the API files and returns results according to queries.

Besides that we plan to provide a server that provides results as JSON that can be used by routers or other machines or websites.

E.g. the current node count could be integrated in the website for the community via a simple Ajax-Request to the API.

A working prototype is planned to ready next week.

About Me: My name is Martin Tippmann. I'm a student at the Bauhaus Universität Weimar and I'm pursuing a degree in Computer Science for Media there.



Rathaus Berlin-Neukölln funkt frei!

Ab sofort haben Besucherinnen und Besucher sowie Anwohnerinnen und Anwohner die Möglichkeit, rund um das Rathaus Neukölln über das Berliner Freifunk-Netz freien, zeitlich uneingeschränkten und kostenlosen Zugang zum Internet zu erhalten.

Die im Rathausturm installierten Router sind über Richtantennen an das bestehende Berliner Freifunk-Netzwerk angebunden und stellen so nicht nur eine Verbindung ins Internet her, sondern ermöglichen den Nutzerinnenn und Nutzern auch Freifunk interne Dienste anzubieten und nutzen. [1]

Nach einem einstimmigen, postiven Echo aus dem Ausschuss für Verwaltung und Gleichstellung, stimmte am 24.04.2013 die Bezirksverordnetenversammlung Neukölln für die Installation von Freifunk-Routern auf dem Rathaus-Gebäude [2]. Der Antrag im Ausschuss für Verwaltung und Gleichstellung ging auf eine Initiative der Piratenpartei zurück.

Der Bezirk stellt den Ort, sowie den Strom für die Freifunk-Hardware zur Verfügung. Die Kosten für Baumaßnahmen und Router konnten aus Mitteln einer Förderung der Medienanstalt Berlin Brandenburg (mabb) gedeckt werden [3]. Die Installation und Wartung der Netzwerktechnik erfolgt ehrenamtlich durch Mitglieder der Berliner Freifunk-Community.

Eine der insgesamt 14 installierten Antennen funkt zum ca. 3.8 km entfernten Rathaus in Kreuzberg, auf dem bereits im Oktober 2013 Router installiert worden waren. Beide Standorte sind Teil des sogenannten BerlinBackBone (BBB), einem WLAN basierten stadtweiten Mesh-Netzwerk über den Dächern Berlins, das Dank der finanziellen Unterstützung durch die mabb derzeit von der Freifunk-Community intensiv modernisiert und ausgebaut wird. Neben den beiden Rathäusern befinden sich darunter auch bereits mehrere Kirchen und Hochschulgebäude.

Über diese Relaisstationen sind die lokalen Kieznetze (Meshwolken) der Freifunkenden untereinander und mit dem Internet verbunden. So ist es möglich, innerhalb der Stadt auch über größere Entfernungen drahtlos untereinander zu kommunizieren, ohne auf Netze der kommerziellen Provider angewiesen zu sein.

Die Zugänge zum Internet werden innerhalb des Netzes dabei sowohl von Privatpersonen geteilt [4] als auch über den Förderverein Netzwerke e.V. und andere Partner bereitgestellt. Besonders der IN-Berlin e.V. und neuerdings auch de Berlin Commercial Internet eXchange (BCIX) e.V. stehen hier tatkräftig mit Know-How und Bandbreite zur Seite.

Aufgrund der vielen positiven Erfahrungen, wie aktuell auch in den Rathäusern Kreuzberg und Neukölln, freut sich die Berliner Freifunk Community darauf, weitere Installationen auf und in anderen öffentlichen und privaten Gebäuden durchzuführen. Freifunk Berlin sucht dazu neben weiteren Standorten auch noch Unterstützerinnen und Unterstützer, die bei der Verwirklichung eines stadtweiten freien Netzes helfen wollen! Weitere Informationen finden sich auf der Website





Syndicate content