Ideas GSoC 2009

Aus wiki.freifunk.net
Zur Navigation springenZur Suche springen

Multimedia Streaming in Mesh Networks / Porting Obamp to C

  • Some days ago, the idea of beeing able to use Obamp on our broad basis of embedded broadcom (et al) hardware came up. For this Obamp needs to be ported to these devices, therefore C, because there is no room for a JVM on these devices.
  • Obamp on-board allows APs of a MESH to build multicast trees for multimedia streaming among MESH groups. In order to obtain the multicast service the customer simply need to connect its multimedia application to the Obamp Proxy of its AP. In doing so none additional software is needed on the customer PC and all the multicasting burden is on the hand of APs.

References:

Useful Skills: Obamp, C
Type of Work: Coding, Testing
Level from Beginner
1-5 Professional:
4 Semi-Professional

Improving LXNM, adding open networks and mesh support

  • improving LXNM to work more stable
  • implementation of freifunk and free network mesh add ons (data) for LXNM
  • 802.11 information elements for open networks in LXNm
  • integration in LXNM 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

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

IPv6 and TLS capable network-superserver in Lua and C with HTTP and RPC Slave

  • 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 adminsitration 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 bandwith 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 bandwith 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

Traffic Flow Visualization / IPFIX DataSource for freimap

A screenshot of traffic flow vizualization in freimap

  • Currently, NetFlow data is supported for traffic flow visualization in freimap, though only when read from a database
  • The Extension would involve writing a collector for IPFIX packets, using the existing libraries libipfix (in C) and jipfix (a wrapper for Java). The collector might serve to collect more information using the very flexible IPFIX protocol, for future modules.
  • Flow information includes source, destination, volume and used protocols of a large number of traffic flows. This information should be visualized using either direct connections (as currently with NetFlow information) or along the actual routes defined by the routing topology and metrics.
  • Implementing this module would allow to monitor traffic streams in the mesh network with much greater flexibility. IPFIX allows to send custom information elements along with the predefined measurement data.
Useful Skills: Java, JNI, IPFIX, NetFlow, C, IP Networking
Type of Work: Java/Implementation
Level from Beginner
1-5 Professional:
3 Advanced

Mesh Node Status Monitoring / SNMP DataSource for freimap

A screenshot of node statistics in freimap

  • Almost any information available locally at a node of the network can be provided using the SNMP protocol. A large number of information elements is already available from common implementations.
  • An SNMP interface to freimap would allow to monitor virtually any system value of a node in near real-time and react accordingly.
  • The task would include to evaluate these available elements for inclusion in the visualization environment of freimap and implement the actual visualization. Other interesting properties of the olsr or BATMAN daemons might be exported using SNMP for inclusion.
Useful Skills: Java, SNMP, Databases, IP Networking
Type of Work: Java/Implementation
Level from Beginner
1-5 Professional:
4 Semi-Professional

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

Topology visualization / B.A.T.M.A.N and olsrd routing decision recovery for freimap

Freimap Screenshot - an olsr topology

  • In order to better display traffic flows in freimap, they should be drawn along the actual route the packets take. This information can be computed theoretically using knowledge of the routing algorithm, the topology and the routing metrics at a specific point in time. This might be compared to actual bandwith metrics of a given link to validate the model.
Useful Skills: Java, Mathematics, Vizualization
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

Search in Wireless Mesh Networks - Nutch/Lucene

  • setting up a search engine based on Nutch/Lucene
Useful Skills: Nutch/Lucene Programming, Java,
Type of Work: See Nutch/Lucene Website
Level from Beginner
1-5 Professional:
3 Advanced

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

Porting Freifunk to netbooks

  • currently you can only use OLSR and freifunk on an EeePC after you have installed the OLSR protocol over the console
  • to configure the protocol and type in your IP address again you have to go into the console
  • this is rather complicated for the usual PC user
  • the EeePC is very easy to use - it would be great if we had an easy way to use freifunk (free wireless) and get the EeePCs into the freifunk mesh networks
  • a way would be to create a GUI for the tasks above
Useful Skills: GUI Designing, Shell Scripting, Web Programming (XHTML, JavaScript)
Type of Work: Designing, Implementation, Packaging, Testing
Level from Beginner
1-5 Professional:
3 Advanced

Developing an Open Router 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

Freifunk Webinterface for OpenWrt Kamikaze

I removed this from the main page, because FFLuci is almost feature complete by now. It would be possible to discuss whats still missing and define tasks for implementing this missing freifunk features for LuCI. --Soma 14:18, 29. Mär. 2011 (UTC)

To build a webinterface for OpenWrt Kamikaze that provides easy access to Freifunk related programs and settings is one of the main Keystones for porting the idea of Freifunk Firmware to the Kamikaze branch of OpenWrt.

The code base for building a webinterface in Kamikaze has changed again recently, comming from haserl there was awx for a while and now it is a lua Framework. Also the unified configuration layer (uci) of OpenWrt Kamikaze has improved a lot recently and the new webif should make use of its features.

A lot of work in this area has allready been done but there still plenty to do. For example the existing webif packages for mesh, olsrd, b.a.t.m.a.n. & co. (part of the x-wrt project) are pretty much outdated and need heavy rewriting.

Another interesting project wich aims at the same is FFLuCI - Freifunk Lua Configuration Interface. FFLuCI has a nice MVC approach that seems very promising.

I suggest to use an AJAX/LUA Mixture. That would have some advantages

  • Low load for View Creation on the router, router just has to prepare data, and takes requests to make changes, state and view are handled mostly in the client browser. (Security is a point here, but there should be ways to handle that, just like in any other web application.)
  • Since the UI is AJAX powered, it would have the appeal of a desktop application, and could thus be more easy to handle for users. A goal would be to provide some "just works" experience to the users
  • We could enable that UI to integrate future use cases as a splashpage to mesh content.
  • It might save storage room on the router.
Useful Skills: Lua, Web Programming (XHTML, JavaScript), Shell Scripting
Type of Work: Porting, Implementation, Packaging, Testing
Level from Beginner
1-5 Professional:
3 Advanced

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

P2P in wireless mesh networks: ATR routing protocol porting

This idea deals with the porting of a routing protocol based on a cross-layer approach between routing and Distributed Hash Tables (DHTs), namely the ATR. The ns-2 implementation of ATR is currently available and could be used as design guides.

Useful Skills: Linux, C++,
Type of Work: Research, Protocol Implementation
Level from Beginner
1-5 Professional:
3 Advanced

Bonus Experience: P2P, mobile ad hoc networks (MANETs), ns-2

Interests: P2P, DHT, MANETs, routing.

Recommended reading:

- Imrich Chlamtac, Marco Conti, Jennifer J. -N. Liu, Mobile ad hoc networking: imperatives and challenges, Ad Hoc Networks, Volume 1, Issue 1, July 2003, Pages 13-64, ISSN 1570-8705, DOI: 10.1016/S1570-8705(03)00013-1.

- Thomas Zahn and Jochen Schiller. MADPastry: A DHT Substrate for Practicably Sized MANETs. In Proc. of 5th Workshop on Applications and Services in Wireless Networks (ASWN2005), Paris, France, June 2005.

- Stoica, I., Morris, R., Karger, D., Kaashoek, M. F., and Balakrishnan, H. 2001. Chord: A scalable peer-to-peer lookup service for internet applications. In Proceedings of the 2001 Conference on Applications, Technologies, Architectures, and Protocols For Computer Communications (San Diego, California, United States). SIGCOMM '01. ACM, New York

- Caleffi, M.; Paura, L.; , "P2P over MANET: Indirect tree-based routing," Pervasive Computing and Communications, 2009. PerCom 2009. IEEE International Conference on , vol., no., pp.1-5, 9-13 March 2009.

- M. Caleffi, "Mobile Ad Hoc Networks: the DHT Paradigm, Ph.D. Thesis", University of Naples Federico II, December 2008.

Next topic is still in debate

B.A.T.M.A.N.-Advanced routing daemon

B.A.T.M.A.N.-Advanced is a mesh routing daemon kernel module operating between the data link and network layer. Its algorithm had been developed with a focus on unpredictable, mobile ad-hoc mesh networks. The following feature and performance improvement ideas shall further increase its usefulness in Freifunk networks.

  • Introducing link-layer fragmentation and header compression to offer alternative packet overhead solutions.
  • Forward error correction to avoid retransmissions in the mesh network.
  • Split the currently used OGM packets into two separate types to reduce the amount of packets flooded in the neighborhood.
  • Implement a fast changing environment detection algorithm to let mobile nodes adapt to their new surroundings faster.
  • Avoid broadcasting multicast traffic to nodes not belonging to a certain multicast group.
  • A batman-adv node shall select originator interval rates according to the dense and dynamics in its closer environment.
  • Add useful options for administrating a mesh network to batctl.
  • Adapting Mesh3D to handle the new visualization format features from current batman-adv.
  • Allow multiple bridge uplinks to wired networks

More details: https://www.open-mesh.org/wiki/gsoc2010-ideas

Also stop by at the dev irc channel #batman on freenode.net.

Useful Skills: C programming, routing/network knowledge, Linux kernel coding (+style), knowledge about B.A.T.M.A.N. V routing algorithm, debugging with virtual machines, OpenWRT, monitoring packet flow
Type of Work: Designing, Implementation
Level from Beginner
1-5 Professional:
4 Semi-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

aTPC

what about implementing automatic Transmit Power Control as described eg. in the ETSI EN 301 893? aTPC is required to be allowed to use 5,4 to 5,7 GHz in the USA/Canada and 5,7 to 5,8 GHz in Europe. Also it is required to be allowed to send with higher output power in the 5,1 to 5,3 and the 5,4 to 5,7 GHz area in Europe.

This shouldn't be too difficult to implement into the WiFi driver of OpenWRT and a lot of documentation is available. Should have the right size for a GSoC project in the future. Maybe level 4 and requires good knowledge about wireless communication / Coding /C programming,...