OpenVoIP: An Open Peer-to-Peer VoIP and IM System

Demo video  

Web interface
Geo map
DHT interface
Command interface

Connect to PlanetLab network
Setup an overlay



11/03/09. Version 0.21 of the P2PP source code is available. Incorporates TCP throughput measurement with other peers.
05/15/09. We have a DHT interface to our system. Use mouse scroll for zooming.
08/08/08. Version 0.2 of P2PP and OpenWengo-P2PP is now available.


Welcome to OpenVoIP, an open source peer-to-peer VoIP and IM system of ~1000 nodes running on ~300 PlanetLab machines. OpenVoIP runs Peer-to-Peer Protocol (P2PP) which can be used to implement well-known DHTs or unstructured protocols. Unlike OpenDHT, where it was only possible to put/get the data, we allow non-PlanetLab nodes to become part of our overlay. This means that you can download the P2PP executable for Windows XP, Linux, or OpenWengo-P2PP SIP phone and connect to our overlay. Your node will provide routing and storage services to the overlay.

The PlanetLab system uses our own implementation of Kademlia DHT. We have also implemented Chord and Bamboo. We support both recursive and iterative routing and four hash algorithms (SHA1, SHA256, MD4, MD5). Please see feature list for a quick overview of supported features.

OpenVoIP performs NAT traversal using STUN, TURN, and ICE. Due to restrictive nature of some NATs and firewalls, nodes may not be able to establish calls directly. Our system allows such nodes to establish calls by relaying their signaling and media traffic through mutually reachable nodes (relay peers). We use PJNATH (v0.8.0) library for NAT traversal. At startup a node determines whether it is behind a NAT. If it is behind a NAT, a node joins as a client (ordinary node). Otherwise, it joins as a peer (super-node) and provides routing and relay services to the overlay.

We have integrated P2PP with OpenWengo (v2.1.2), an open source SIP phone. This p2p phone connects to our PlanetLab overlay. You can download the executable, read the setup instructions, and make a test call to test_call.

[For high resolution video, click here.]

We provide a Google maps interface (Geo map) to our PlanetLab system and a simple Web interface. Using this system, one can publish a key/value pair, perform a lookup for user-id or key, see the routing table of a node, and check a node's CPU and bandwidth consumption, without having to download any software. Using this interface, one can compare the performance of recursive and iterative routing. People who love command-line can download this software and interact with our system. CoMoN system of PlanetLab provides a report on the CPU and bandwidth consumption of our system.

Please follow these instructions to connect to our PlanetLab overlay using a Linux/WindowsXP p2p executable or OpenWengo-P2PP phone. If you want to run your own overlay, please follow these instructions.

Source code for P2PP is available for Linux and Windows. Modified source code for OpenWengo is also available.

Help us test this overlay network!