GNUnet
GNU‘s decentralized anonymous and censorship-resistant P2P framework.
GNUnet logo  
[English | Afrikaans | Bulgarian | Catalan | Czech | Danish | Dutch | Esperanto | Finnish | French | Galician | German | Hungarian | Italian | Japanese | Polish | Portuguese | Romanian | Russian | Simplified chinese | Slovak | Spanish | Swedish | Traditional chinese | Ukrainian]

About GNUnet

GNUnet is a framework for secure peer-to-peer networking that does not use any centralized or otherwise trusted services. A first service implemented on top of the networking layer allows anonymous censorship-resistant file-sharing. GNUnet uses a simple, excess-based economic model to allocate resources. Peers in GNUnet monitor each others behavior with respect to resource usage; peers that contribute to the network are rewarded with better service.

GNUnet is part of the GNU project. Our official GNU website can be found at http://www.gnu.org/software/gnunet/. GNUnet can be downloaded from this site or the GNU mirrors.

gnunet-gtk is a graphical user interface for the GNUnet framework. It is a separate download; some screenshots are available.

Why GNUnet?

The first question that developers of any of the dozens of emerging P2P networks (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) should probably answer is why yet another network? GNUnet was started in late 2001 with a set of new technical ideas for secure peer-to-peer networking. Most of the key technical contributions behind GNUnet are described in detail in our research papers. The ideas include an improved content encoding (ECRS, the encoding for censorship resistant sharing) and a new protocol for anonymous routing (gap). Properties of the content encoding and the routing protocol allow GNUnet to reward contributing peers with better service using an excess-based economic model for resource allocation. Furthermore, GNUnet is extensible and makes it easy to build new peer-to-peer applications or add alternative network transports to the base system. When GNUnet was started, existing systems were investigated (at the time in particular Freenet and mnet) to find a starting point. However, the conclusion was that the envisioned system was too far from the existing codebases to benefit from building on top of any of those.

GNUnet continues to improve both in terms of technical ideas and implementation, often thanks to discussions with developers from related projects. Probably the most well-known such project is TOR, a peer-to-peer network that acts as a proxy which anonymizes low-latency TCP traffic. TOR is general in design and lacks features that would be specific to (anonymous) file-sharing, such as searching, swarming or caching.

In conclusion, we believe that GNUnet is (or at least will become) the best solution for (anonymous) file-sharing. The key technical ideas continue to distinguish GNUnet from other projects with similar goals. Some GNUnet developers also have the ambition to provide a good general infrastructure for developing new peer-to-peer protocols. In the meantime, users that are looking for faster, non-anonymous solutions or to anonymize their HTTP traffic should probably look elsewhere.

News

Older news can be found here.

2008-04-13: libmicrohttpd 0.3.0 released
The big news is that libmicrohttpd is now part of the GNU project. The release updates the documentation accordingly and adds an up-to-date texinfo manual. Some issues with handling of malformed HTTP requests were fixed. Furthermore, testcases to test malformed HTTP requests were added. Finally, MHD now generates an "internal server error" if the programmer incorrectly fails to incrementally handle upload data and we run out of (the per-connection limited) buffer space because of it. You can download GNU libmicrohttpd here
2008-03-22: libmicrohttpd 0.2.2 released
This release fixes a bug in handling clients closing a connection before their upload is complete. The bug affected applications using external select, potentially causing excessive CPU consumption through busy waiting.
2008-03-21: libextractor 0.5.20 released
This release adds support for AppleSingle and AppleDouble files. Furthermore, extraction of ISRC and track numbers was improved.
2008-03-02: GNUnet 0.8.0pre0 released
Download GNUnet 0.8.0pre0 here. gnunet-gtk is a separate download and can be found here.
GNUnet 0.8.0pre0 is a pre-release. We are making this release a pre-release because this version breaks backwards-compatibility on many levels. In particular, 0.8.0pre0 peers will not connect to the 0.7.3-network. Moreover, 0.8.0pre0 is unable to access content inserted into the local 0.7.3-style database. There is no code for data migration, so all data will have to be indexed again. Finally, various features planned for 0.8.0 are still missing. The main goal for this release is to bootstrap the 0.8.0-network. You should only update to GNUnet 0.8.0pre0 if you are willing to help bootstrap and don′t mind not finding too much content initially.

Updating should be easy, simply delete all your old GNUnet data and run gnunet-update. Read the UPDATING file for details (on what to delete).

Finally, here are the reasons for why (given all of the bad news) you might want to update. Noteworthy improvements since GNUnet 0.7.3:

  • Integrated IPv6 transports with existing IPv4 transports (making full use of dual-stacks where available)
  • Added IPv6 support to the HTTP transport
  • Added new "hostlist" application which is an integrated HTTP hostlist server using libmicrohttpd
  • Added new tool gnunet-auto-share for automatic sharing of files in a directory
  • Added asynchronous search and download methods to ECRS (saves one thread per search/download for most GNUnet-tools)
  • Added self-evaluation (amount of trust earned, spent, awarded)
  • Added directory name as metadata for files in directories
  • Added options for gnunet-insert to just compute the URI or just add keywords to already shared file
  • Added support for pausing of a search (to FSUI and gnunet-gtk)
  • Improved GAP search requests to gather more search results (using bloom filter to exclude known responses)
  • Improved file-sharing datastores to return more diverse search results (randomized starting point in iteration)
  • Improved scalability of datastores to handle many results for the same keyword (from O(n) to O(1) by adding extra index)
  • Improved performance of make check by using a weak PRNG (for testing only)
  • Improved bandwidth consumption for file-sharing (reduced overheads by 64 bytes per 32k block)
  • Improved performance of the dstores (used for DHTs)
  • Fixed bug in DHT routing table construction (increases number of DHT connections, resulting in faster routing)
  • Fixed deadlock in gnunet-gtk
  • Fixed issue with GNUnet clients and GNUnet daemon running on different architectures (Mantis #1312)
  • Fixed deadlock in MySQL sqstore module

Helping GNUnet

Help is always welcome.
Here are some ideas:

Roadmap

Here is the current development plan:

Contact

GNUnet is developed by the GNUnet developers. For questions about GNUnet send E-Mail to gnunet-developers@gnu.org.



Copyright (C) 2002, 2003, 2004, 2005, 2006 Christian Grothoff.
Verbatim copying and distribution of this entire article
is permitted in any medium, provided this notice is preserved.

Translation engine based on i18nHTML (C) 2003, 2004, 2005, 2006, 2007 Christian Grothoff.

go to i18nHTML administration page