International Community Map Project and Node Database

One of the things every community would like to see are maps of their network. There are many initiatives and map projects around, but how much more progress could we make, if we work together? This is why a group of free networks contributors started a group to work together on a common project. We started a mailing list to coordinate efforts and welcome everyone who would like to collaborate: https://lists.funkfeuer.at/mailman/listinfo/interop-dev
 
The current goal is to define a basis for a common map. We are looking at different map solutions and try to find out how we can merge the best of each into one. The best approach seems to be a modular system. In the following three great projects of different communities.
 
Nodeshot comes from the community in Italy and is widely being used there (map.ninux.org). The main developer is Federico Capoano. The goal of the Django application is to have “a nice snapshot of your wireless community network”. Nodeshot is a web tool for wireless community network. It allows members to add their node and to share and manage information about their configurations like devices, ip addresses, wireless parameters etc. In this way, newcomers can easily contact/connect with them. Internal scripts will update the topology and retrieve nodes information via snmp, or parsing routing information given by olsr, batman or whatever. It is super-fast, nice and easy to use. It rises from the ashes of WNMap (sourceforge.net/projects/wnmap/), powered by django, released under GPLv3 and tested inside the Ninux wireless community network (wiki.ninux.org). How to install: A basic guide on how to setup nodeshot for your community is available here: wiki.ninux.org/InstallNodeshot
 
Nodewatcher, another Django based application was started in Slowenia by Mitar. Its main goal is the development of an open source network planning, deployment, monitoring and maintanance platform. The project is divided into multiple components:
* node telemetry provider: A simple shell script that is accessible via HTTP interface and is used for node status data acquisition that is performed by the data collection system. Its role is similar to the one of SNMP, however it uses less resources (CPU-wise and, mostly, when it comes to memory and flash space). Our firmware has this preinstalled, others can follow these instructions to install it.
* data collection system : A daemon written in Python that periodically collects data regarding the OLSR topology, active HNAs, node telemetry and performs active reachability tests for visible nodes. Using rrdtool it can then generate graphs that are used by the web interface.
* web interface: A web-based application, written in Python and using the Django framework. It is used by the users to monitor the status of the network and individual nodes and by the node owners to manage their nodes.
* firmware image generator: A daemon that handles per-node configuration and firmware image generation via the OpenWrt buildroot using our custom firmware. It receives requests from the web interface. Live version We use nodewatcher in wlan slovenija network (this is why we are developing it), so you can see a live version of nodewatcher for real deployed network here
 
yaffmap is a project from Dennis Bartsch from Freifunk Berlin. He is working on an implementation of a node database he started with a friend. It is called yaffmap. It got its name because at the beginning of the project we had many mapservers in Berlin and so it started as yet another approach for a Freifunk map. The intention was to make a server that not just produces points and lines (nodes and their links) but to gather all information that might help to understand why a link is as bad as it is. This includes to gather wireless scan results, the effective rate chosen/calculated by the wireless driver to a specific neighbour and so on. Furthermore it had to be independent from the routing-protocol and its daemons (but needs it to gather useful info) and the IP version (or even no IP version for RPs like batman) and had to be able to upload and store data from multiple routing protocols on the same node. In order to sample so much information we went the route of scripting an agent for the map-server which runs on the nodes gathering the information and uploading it through a JSON interface to the server. For link-state-protocols like OLSR we even implemented the upload of the global topology to the server, which gave us some headache. From the beginning on I stressed the need for decentralized operation, so replication between the servers was implemented and any community which wants can have their own map data server. 
 

GSoC 2011: Nodeshot

Do wireless communities around the world really need another map server? Here in Ninux we believe that the answer is yes!

Enter Nodeshot an open source wireless community map server written in python and based on django, focused on ease of useand performance.

Why a new map server? Mainly because we had some precise needs that the current open source map servers can’t satisfy easily:

  • we needed an application which is easy to use and understand for everyone
  • we wanted to preserve a similar look to the old map server we used before (wnmap).
  • we wanted it to be simple and performant
Instead of modifying and hacking the existing alternatives we decided to make a new one, trying to keep the code clean and well commented (which was one of the hardest tasks).

The frontend is built in HTML5 and it does an intensive use of jQuery and the Google Map API.

The backend is based on the django admin and it permits to easily administer the app.

These are the main features of the nodeshot:

  • Map based on Google Map API v3
  • New node with confirmation via email
  • Possibility to insert devices, interfaces and hna4 for a better troubleshooting
  • Edit node, devices, interfaces, hna4
  • Contact node owners
  • Address lookup
  • Hide sidebar
  • Search nodes and IP addresses
  • Distance calculation between nodes
  • Save distance calculations for future reference
  • Public information about devices, interfaces and performance of links
  • Statistics  (number of nodes, links, links in km)
  • IPv6 support

During the development we used github to commit changes and several merges have occurred in some cases when different developers were working to fix some issues.

The project has revealed to be more complex than what was expected but at the same time has been really engaging and fun.

There is still work to do though, actually we are translating and optimizing the app. We’ll keep working on nodeshot so that we can arrive quickly to a stable and performant release, we hope we’ll attract new developers from all around the world that will help us to push forward this new open source project!

Meanwhile, you can check the demo and you can download the source code on github.

This article appeared first on the website of Ninux.org: 

http://blog.ninux.org/2011/09/06/gsoc-2011-nodeshot