[OpenAFS] rxtcp, rxutcp

Adam Megacz megacz@cs.berkeley.edu
Thu, 30 Mar 2006 00:57:30 -0800

Wow, NATs have been giving me a spectacular headache lately.  Turning
on TCP support on the KDC resolved all the issues with kinit, but
long-term I'm starting to realize that I just can't rely on UDP as the
only connectivity method... support out there is just too lousy.
There's a real need for a "fallback" connectivity method that works
behind even the lamest NATs (without regard for performance).

I checked out the rxtcp branch, and I'd like to give it a try, but I
couldn't exactly find any documentation.  Any pointers on how to try
it out?  I realize it's not ready for prime time yet.  If I just
compile it up and install it does it listen for both rxudp and rxtcp
connections?  How does the client decide which to use when initiating
a connection?

Lastly, has anybody considered running the raw "rxudp" protocol with
TCP headers wrapped around it ("Unreliable TCP" or "rxutcp")?  Nearly
ever NAT I've seen is stateless aside from connection mappings; as
long as you send the proper SYN/ACK/SYN+ACK handshake to set up a
mapping the NAT doesn't care what the packets you send after that look
like (as long as they have TCP headers).  Specifically, you can throw
TCP's ack/retransmission algorithm right out the window -- just ignore
it completely.  I think a bunch of the P2P filesharing programs do this.

Seems like this would be a really easy hack to get through NATs until
we have an officially supported rxtcp.  Anybody see any immediate
barriers to this working?

  - a

PGP/GPG: 5C9F F366 C9CF 2145 E770  B1B8 EFB1 462D A146 C380