Ideas GSoC 2010

Aus wiki.freifunk.net
Wechseln zu: Navigation, Suche

Freifunk ideas (GSoc 2010)

IP/UDP encapsulation Kernel module

Creation of a Kernel module for IP/UDP encapsulation with the following features:

  • (1) virtual interfaces export to user-space so that packets routed through it will be intercepted by IP/UDP_send() function (as for other encapsulation modules, e.g.: IP/IP, IP/GRE). Encapsulation header fields are retrieved in 2 ways:
    • A) Fixed: each virtual iface has a fixed encapsulation header
    • B) Dynamic: the encapsulation header is retrieved from a forwarding table implemented as a hash table indexed by the following key: proto, IP.proto, IP.src, IP.dst, L4.sport, L4.dport.
  • (2) input hook based on hash table: since there is no protocol for IP/UDP encapsulation, input packets are filtered with a hash table look-up. Encapsulated packets are intercepted by IP/UDP_rcv(). Other packets keep traversing the network stack.
  • (3) integration with standard system calls for basic configuration (e.g.: virtual iface up/down, set MTU, set IP address, netmask, etc...)
  • (4) generic NETLINK socket for advanced configuration (hash table configuration, filtering rules)


Useful Skills: C, Kernel programming (in particular: networking subsystem, skbuff, netlink sockets)
Type of Work: C coding
Level from Beginner
1-5 Professional:
4 Semi-Professional

Web Radio Program Scheduler

The web radio is one of the services that the Ninux Community provides on its network and on the Internet. Our web radio experience comes from the support that the Ninux Community gives to the Italian web radio Fusoradio http://www.fusoradio.net that is now online since the year 2004.

The Programme Schedule is now based on a script hooked to a proprietary software called | SAM Broadcaster.

We want to rewrite the Programme Schedule engine with a open source language called | liquidsoap

The program scheduler will read/write on a database, shared with the website engine where WJ book the timeslots for their shows. This means that writing the programme scheduler will mean also cooperation with the people developing the web site, agree on data model, generally work together.

Usefull skills Linux
Type of work Coding, system integration
Level from Beginner 1-5 Professional: 3 Advanced

References:

CMS plugin to book Web radio transmission

In a free radio anybody can transmit over the Internet from home. WJ (web DJ) of a web radio should be able to book a time slot for their transmission in the programme schedule. The Web Radio site will be based on a open source CMS (Drupal, wordpress... any PHP opensource CMS to be decided with your mentor). The idea is to develop a plugin for the web site of the radio, where WJ can book their time slots for the programme schedule. More over extra-data about the transmissions will be inserted, so that the podcast archive can be indexed.

Usefull skills PHP, CMS developing
Type of work Coding, extending CMS frameworks
Level from Beginner 1-5 Professional: 2 Pre-Advanced

Web Radio WJ Client

WJs (Web DJs) stream from home their radio transmission. To do such thing they need a software that mixes various audio sources (Microphone, mp3s, skype calls) and sends the encoded stream to a Icecast server. Right now at Ninux we use a proprietary software, and we want to develop an Open Source alternative, cross platform.

Usefull skills Linux
Type of work Coding
Level from Beginner 1-5 Professional: 4 Semi-professional

References:


MySql to SQLite Wrapper

The idea is to create an application that simulates the behavior of MySQL and stores data using SQLite, a simple way to migrate MySQL applications to SQLite, without changing the code already written.

MySQL is an SQL database with the traditional client-server architecture, SQLite is a library that implements an SQL database, so any application uses a different SQLite db so it is completely independent of all others (the malfunctioning of one not affect the others). In this way the data for each application should not be exchanged between client and server but are exchanged between SQLite and the rest of the application. This unique architecture makes it easier to manage, but makes it impossible to access concurrently to data stored remotely via SQLite. The idea is also to implement a method to resolve this problem.

Usefull skills Linux, MySql, SQLite
Type of work Coding, Database
Level from Beginner 1-5 Professional: 3 Advanced

Reference:


Open Network Implementation Broadcast

  • implementation of freifunk and free network mesh add ons (data) for network manager
  • 802.11 information elements for open networks
  • integration in network manager tools
Useful Skills: C, Package Systems (ipkg), Python, Building packages, Integrating software
Type of Work: Porting, Packaging, Testing
Level from Beginner
1-5 Professional:
3 Advanced

Freifon

  • telephone solution for Freifunk mesh networks via different gateways
  • Possible Gateways would be VoIP (you put in an IP address) Sim-Card, Fixed Telephone line etc.
  • idea: merge and remix code of different applications
  • port telephone application from Openmoko or Android to X
Useful Skills: C, Package Systems (ipkg), Building packages, Porting software
Type of Work: Porting, Packaging, Testing
Level from Beginner
1-5 Professional:
5 Professional

Passive + Active Measurement in Mesh Networks / Porting OpenIMP probes to OpenWrt

  • OpenIMP is the Open Internet Measurement Platform. A modular architecture for gathering active and passive measurements from distributed probes.
  • Making it available on the OpenWrt embedded Linux platform would bring a vast range of measurement functionality to all freifunk nodes and other embedded systems running OpenWrt.
  • The task would involve to bring the OpenIMP probe software to the openWRT platform. It should provide a maximum of measurement functionality while retaining its small size. It should be made available as a package.
  • ECTS credit points available.
Useful Skills: C, Package Systems (ipkg), Building packages, Porting software
Type of Work: Porting, Packaging, Testing
Level from Beginner
1-5 Professional:
5 Professional

Graphic Interface for IPv6 and TLS capable network-superserver

  • Currently LuCI runs either behind a CGI capable webserver which creates a lot of overhead or on top of its own experimental HTTPd implementation which only supports IPv4 and cannot handle TLS connections. Also LuCI for now can only be used to administer the local router on which it is installed on.
  • The goals of this project is to create a network-superserver which can be used to implement network-daemons in Lua, use the LuCI HTTP-Stack and make a IPv6 and TLS-capable webserver suitable for embedded routers out of it and implement a secure RPC-Server on top of it which can be used to manipulate UCI on the router and execute system commands to serve as a base for further projects to allow comfortable adminitration of multiple routers at once or a LuCI implementation as a desktop application.
Useful Skills: C, Lua, LuCI, IP, UNIX daemons, networking protocols
Type of Work: Planning, Development, Testing
Level from Beginner
1-5 Professional:
4 Semi-Professional

Distributed Small Storage System

To provide features like DNS, IP Autoconf, etc, we need a distributed storage system for small information pieces. The idea is to implement a storage system trough a DHT with replication (research if a useful lib exists).

  • design a structure which fits most purposes. This should include future features like crypto signed values for validation, etc
  • implement (re)distribution algorithms suitable for a mesh
  • lua bindings
  • implement a example usage. If there is enough time, implement something useful like distributed DNS.
Useful Skills: C, Lua, networking
Type of Work: Planning, Development, Testing
Level from Beginner
1-5 Professional:
4 Semi-Professional

Traffic information and regulation application for LuCI

  • LuCI is currently not able to show detailed information about traffic flowing between different hosts nor limit bandwidth of individual hosts or networks.
  • The goals of this project is to create a C or Lua application based on tc which saves traffic information such as source, destination and amount - similar to the Freifunk Accounting application - of individual hosts connected to a OpenWrt device and allows to regulate network traffic for single hosts or networks including bandwidth limitations and traffic priority controlling.
Useful Skills: C, Lua, networking, tc
Type of Work: Planning, Development, Testing
Level from Beginner
1-5 Professional:
3 Advanced

Service Discovery in Mesh Networks / Avahi DataSource for freimap

Freimap Screenshot - a community network in NE Berlin

  • New services in the freifunk network will be announced using the avahi protocol, thus making them available for any application supporting avahi for collaboration or discovery (iChat, obby, inkscape, ...).
  • It would be tremendously useful to display the available services and their sources in a map of your wireless community.
  • freimap should be able to localize the geographical source of such an announcement and display the type of service at its actual position on the map.
Useful Skills: Java, Avahi, IP Networking
Type of Work: Java/Implementation
Level from Beginner
1-5 Professional:
3 Advanced

multiple clients using one device to connect multiple infrastructure networks

Freimap Screenshot - a community network in NE Berlin

  • connecting multiple managed network ( on the same channel ) with one device
  • based on injection monitor mode
  • supporting same devices which support aircrack / airodump
  • maybe in userspace
Useful Skills: C, Wlan implementation, Wifi standards
Type of Work: C/Coding
Level from Beginner
1-5 Professional:
3 Advanced

Service Control Module for freimap

  • Currently, the freimap is a passive visualization and analysis tool for mesh networks. However, it may be useful as administator interface as well, if it were able to issue commands to selected nodes in the map.
  • The service control module would allow the user of freimap to send freifunk related commands to its own node, or other nodes in the network controlled by the user.
  • Such control messages could include:
    • issue a traceroute towards destination
    • start a local service
    • change routing parameters
  • In order to achieve this, a suitable, secure remote control mechanism will have to be selected. Furthermore, a control interface has to be integrated into the Freimap GUI.
Useful Skills: Java, IP Networking, Security
Type of Work: Research, Java/Implementation
Level from Beginner
1-5 Professional:
3 Advanced

Database output for freimap

  • Any data collected live using the freimap software should possibly be exported in real-time to a database for permanent storage.
  • A flexible database export functionality would have to be implemented into the DataSource interface and several other modules adapted to use it.
  • The Database storage component should be able to run headless, using only a number of DataSources.
Useful Skills: Java, JDBC, SQL
Type of Work: Java/Implementation
Level from Beginner
1-5 Professional:
3 Advanced

Antenna placement information elements in freifunk map data

  • Some communities have started adding information about antenna placement (HF-Info), orientation and transmit power to their overview maps.
  • A common information distribution protocol should be agreed on and documented.
  • Antenna placement information should be made available to and displayed in freimap.
Useful Skills: Social Skills, Radio Transmission/Wifi/Antennas, Java
Type of Work: Negotiation, Documentation / Java Implementation
Level from Beginner
1-5 Professional:
3 Advanced

Fix OPKG bugs

  • opkg which is the package management system of choice for OpenWrt and therefore freifunk

as well, is at the moment broken.

  • most bugs are related to package and system upgrade operations
Useful Skills: package management, C, gdb
Type of Work: Bugfixing
Level from Beginner
1-5 Professional:
4 Semi-Professional

Search in Wireless Mesh Networks - Yacy

  • implementing p2p search with Yacy
Useful Skills: P2p Search Knowledge
Type of Work: See Yacy Website
Level from Beginner
1-5 Professional:
4 Semi-Professional

Peer-to-peer file sharing applications in Wireless Mesh Networks

  • implementing an internal network aware peer-to-peer file sharing application in wireless mesh networks based on emule or other clients
  • please talk to us about that, we have some great folks working on p2p client for wireless mesh networks
  • implementation of oracle for mesh networks: http://www.net.t-labs.tu-berlin.de/papers/AFS-CISPP2PSCIP-07.pdf

(How about using GNUnet instead of the common insecure networks which can easily be compromised? One point on their roadmap is to "add transport for direct use of WiFi (skip TCP/IP layer)")

Useful Skills: Emule Hacking
Type of Work: Designing, Implementation, Testing
Level from Beginner
1-5 Professional:
3 Advanced

VoIP phoning in Freifunk Mesh Networks

  • getting phone solutions inside the freifunk network running
Useful Skills: Web Design, Theming, VoIP, Lua
Type of Work: Designing, Theming, Coding, Testing
Level from Beginner
1-5 Professional:
3 Advanced

Open Router Project and get Freifunk to work on it

  • currently there are numerous routers and chipsets available for Freifunk (listed on the Hardware Page of OpenWrt: http://wiki.openwrt.org/TableOfHardware - currently upgrading look in cache[1]
  • nevertheless the Freifunk community is very dependent on policies of hardware manufacturers. The popular Linksys router for example was adapted during its product history and after adaptions many submodels did not work with Linux anymore or could not be easily upgraded to Freifunk Linux.
  • The Freifunk community aims to become more independent of hardware manufacturers and supports mixed hardware and software teams to develop solutions (e.g. http://www.villagetelco.org). This could also be interesting for enterprises as the sheer number of Freifunkers itself is already an attractive market.
  • We are looking for a student to start development of an open and cost efficient router and adapt it to work with Freifunk/OpenWrt
  • See also: OpenHardware
Useful Skills: Design, Driver Development, Linux Development, Hardware Design
Type of Work: Designing, Implementation, Testing
Level from Beginner
1-5 Professional:
4 Semi-Professional

PubSub Event-System / Mesh-Portal

Both Subprojects are planned to be worked on by more than one student.

For both subprojects are ECTS Credit points available.

Backend

This projects goal is to implement the backend for the client described above and might evolve to be basis of an infrastructure to provide quite some event-based services for mesh-networks. The backend is to communicate with the client via a set of APIs that is to be agreed upon to exchange the following data

  • Geodata
  • pubSub (XEP-0060) distributed Data of a locationbased social-network style service
  • Mesh-Measurement

The backend should realize this via XMPP-0060(PubSub) ideally using the described mDNS-ServiceAdvertisement-Features described above and in distributed manner.

Useful Skills: C, LUA, XMPP, Event-Based-Systems, Asynchronous-RPC, Linux, Embedded-Distros
Type of Work: Architecture & Implementation
Level from Beginner
1-5 Professional:
4 Semi-Professional

Frontend

The goal of this project is to create a client for a backend (that is subject of the Backend-Project listed below) that visualizes provided data in a mapbased or portalstyle Ajax Mashup. The backend will provide

  • geodata (which could be visualized using google maps)
  • data for a locationbased/centric social network/service inspired service
  • different OLSR/Mesh provided measurement data

The communication with the backend is to be done via

  • BOSH (XEP-0124, XEP-0206)
  • XMPP
  • JSON
  • REST or a similar transport that play well with ajax applications

The client should make intense use of common ajax technology to reduce memory and cpu footprint on the embedded devices (think WRT/ASUS WL-500) it is to be deployed on and provide a nice user experience as a portal to the mesh.

The Google Web Toolkit is a proven solution to create sophisticated ajax applications without the need to extensivly deal with the lowlevel quirks of javascript and browsers and is suggested for the implementation.

Useful Skills: Linux, Embedded-Distributions, Java, Javascript, JSNI, Lua, GUI-Programming, RPC, Asynchronous RPC/Callbacks, XMPP, Web Programming (XHTML, JavaScript), Shell Scripting
Type of Work: Implementation
Level from Beginner
1-5 Professional:
3 Advanced

Mesh caching system in areas with low internet bandwidth

  • mobile companies in countries like Afghanistan or regions in Africa often already offer Internet connection through GPRS.
  • bandwidth of GPRS is limited.
  • servers of mobile ISPs often have limited resources and caching capability.

-> result: the net experience of users is slow

  • one possible solution could be a mesh caching system
  • the idea is, that a user logged into a mesh network who is also using a GPRS service via his/her phone would have a service that is looking up other user devices close to him (in the mesh network) for cached data, e.g. images of popular websites.
  • therefore he/she would need to download less data from the GPRS. Bandwidth would be used more efficiently. User experience in regards to speed would improve.
Useful Skills: Linux, Embedded-Distributions, Shell Scripting,
Type of Work: Implementation, Customization, Compiling
Level from Beginner
1-5 Professional:
4 Semi-Professional

Low power consum interface

Using freifunk on wireless sensor networks is something that can be possible, but we need to take care about consum. Its necessary that freifunk implements :

  • Power consum UI : a web/luci interface that allow to control and see the medium/maximum power consum.
  • A OLSR low power implementation : a variant on the actual OLSRd in order to use the wireless network as less as possible

References:

Useful Skills: Linux, Embedded-Distributions, Lua, Interface-Design, Web Programming, Shell Scripting,
Type of Work: Implementation, Customization, Compiling
Level from Beginner
1-5 Professional:
4 Semi-Professional

Adhoc powersave mode

The biggest part of power consumption of an wireless router are its wireless modules ( that means > 90% (especially when mostly idle), based on currently most efficient && buyable embedded/mobile boards & wifi modules)

While several low power wireless chipsets can consume around or less than 20mW while connected and sending/receiving e.g. voip data as a client of an AP (using 802.11 powersave mode an therofore sleeping most of the time). But the lowest values with adhoc mode are usually > 300mW, due to missing support for powersave features in adhoc mode (that are useable/helpful under "freifunk-conditions" (constant broadcast control traffic of the routing daemon))

The powersavings of having drivers with useable adhoc-powersave modes that work on some (or at least one) of typical embedded chipsets (ath6k, rt3080, maybe rt3070 or libertas) and aswell on (some/most) classic mesh-hardware to enable mixed setups (e.g. solar based freifunk/mesh nodes and normal ones) might enable much smaller/cheaper solutions for solar based mesh routers, giving mesh networks the possibities to expand to places where the are now quite unthinkable/unpayable

References (examples):

Further informations:


Useful Skills: Linux, Linux Kernel Development, Linux Wlan Driver Development, Wifi Standards
Type of Work: Research, Implementation
Level from Beginner
1-5 Professional:
5 Professional

Implementation of OpenWrt VoIP support for Airties WA-281

  • Design and Implementation of a general purpose kernel VoIP API
  • Adding kernel VoIP support for the PEF2468 SLIC chips found on the Airties WA-281
  • Initial implementation of an userspace daemon for typical VoIP use cases
Useful Skills: VoIP, Kernel, OpenWrt, uci
Type of Work: C/Coding
Level from Beginner
1-5 Professional:
4 Semi-Professional

More Ideas

See Also