Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

GoNeedle is a system for punching reliable transport over UDP through NATs and Firewalls

tree: 2469b9aab4

updated readme

latest commit 2469b9aab4
Petar Maymounkov authored September 17, 2010
Octocat-spinner-32 cmd first punching experiment success August 31, 2010
Octocat-spinner-32 needle bug fix August 31, 2010
Octocat-spinner-32 .gitignore bug fix August 31, 2010
Octocat-spinner-32 AUTHORS first commit August 16, 2010
Octocat-spinner-32 LICENSE first commit August 16, 2010
Octocat-spinner-32 Makefile adding command line tools August 17, 2010
Octocat-spinner-32 updated readme September 17, 2010
Octocat-spinner-32 deps.bash first commit August 16, 2010

What is GoNeedle

GoNeedle is a system for establishing a reliable transport between peers over UDP, while punching through NATs and firewalls.

GoNeedle is intended to be simple and efficient. Thus, unlike libraries like libjingle, GoNeedle uses only one method for punching NATs. This is the most general method used in paractice: Two peers (using the help of a server for coordination) send UDP packets at each other until the firewall is punched. After successfull punching GoNeedle will (not implemented yet) establish reliable transport over UDP while using the DCCP protocol for congestion control and a simple erasure-check scheme for reliability (i.e. for detecting lost packets).

GoNeedle is currently in development/exeprimental stage. Do not install it if are looking for something that works out of the box!


We have implemented the server and the punching procedure and we have made various tests confirming that it works well. The next stage is to implement the reliable transport over UDP layer. This is contingent on the completion of a separate project GoDCCP that implements the pure DCCP protocol.

We are looking for contributors!


GoNeedle is written by Petar Maymounkov.

Something went wrong with that request. Please try again.