[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-developers] Universal NAT Traversal Assistants Needed

From: John Michael Lafayette
Subject: [GNUnet-developers] Universal NAT Traversal Assistants Needed
Date: Fri, 4 Sep 2015 09:29:09 -0700

Dear GNU-net developers,

Sorry to be bugging you. I am currently working on a new NAT traversal technique and I could use YOUR help.

It's based off a combination of UDP hole punching, symmetric NAT traversal via UDP flooding, and TCP hole punching in order to handle the corner cases when the clients are behind large scale NAT (like AT&T 3G/4G) and when the client is behind a network that blocks all UDP traffic. It is designed to work without root privileges and it should be re-usable in a variety of applications that require NAT traversal.

I apologize because this project isn't only for gnunet.

For this job, I need someone who can implement TCP hole punching and someone who can abstract TCP socket and UDP socket into a higher order Reliable socket that can forward some of its functionality to either TCP or UDP depending on what concrete subclass of socket the NAT traversal was able to obtain.

So basically the control flow goes like this:

Find out if the NATs are symmetric or not.

if not symmetric, use regular UDP hole punching

if symmetric, use UDP flooding (I believe I can do this implementation without you)

if UDP is blocked (UDP hole punching fails even after a retry), try TCP hole punching

if no form of NAT punching works that does not require root privileges, give up

if one form of NAT punching works, give the client a reliable socket that can either be some sort of UDP implementation of TCP (uTP, psudo-TCP, UDP over TCP, UDT, etc.) or an actual TCP socket. The client doesn't have to actually know if they are using UDP to TCP. All the client does is request a reliable socket and use it to send data.

This is my design.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]