P6P: Peer-to-peer IPv6 virtual network

logo

Info

Author:Jan Pobrislo <ccx at webprojekty dot cz>
Version:0.0.1-r1
Date:2009-03-04
License:GNU GPL version 3
Website:https://launchpad.net/p6p
Download:http://launchpad.net/p6p/trunk/0.0.1/+download/p6p-0.0.1-r1.tar.bz2
Wiki:http://wpr.cz/ccx/trac/wiki/

Patches, bugs and suggestions welcome.

gpl

About

P6P is decentralized public virtual network designed for traversing NAT. It's useful mainly for peer-to-peer applications that doesn't implement NAT-traversal themselves. It uses unrouted segment of IPv6 (Unique-local), so it doesn't collide with other networks. It does not implement any additional security.

P6P is virtual public network. That means that it's supposed to provide publicly accessible addresses for computers that would be otherwise unreachable. It works transparently for any application that supports IPv6.

Unlike IPv6 tunnel broker services you don't have to register to use it, it's completely anonymous. Also no data is transmitted via supernode, direct connection is always attempted using UDP hole punching. Supernodes are used solely to negotiate connection.

Implementation

Currently there is state-of-art implementation for Unix/Linux using Python. There is planned portable (unix, mac, windows) implementation in C++ when the protocol stabilizes and features are decided on.

Current server (supernode) implementation requires:
  • python 2.5 or higher
  • twisted
and client:
  • python 2.5 or higher
  • twisted
  • eunuchs
  • iproute2

Usage

  1. Install requirements
  2. Download source archive and unpack
  3. Change to created directory
  4. Find supernode or run it yourself on publicly accessible server. One might be running on webprojekty.cz:9005 for testing purposes. Note that when creating your own supernode you should generate your own unique-local prefix as specified in RFC 4193. Shell script for this purpose is supplied in archive.
  5. Run python p6p_client.py -v <supernode> [<port>] as root. Full list of command options may be obtained by running: python p6p_client.py -h
  6. You should obtain IPv6 address. You now may connect to other users of the supernode. To connect to other users you either need to know their assigned IP or use protocol that detects IPv6 addresses itself. One of such services is bittorrent tracker on http://thepiratebay.org which now supports IPv6. Also make sure your client supports IPv6. Some applications probably won't detect the new IPv6 address automatically, so you'll need to specify it by hand.

Changelog

0.0.1-r1

Added script for generating RFC 4193 address prefixes

0.0.1

First public release