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.
_______________________________________________
GNUnet-developers mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnunet-developers

Reply via email to