tandem icon indicating copy to clipboard operation
tandem copied to clipboard

NAT traversal using hole punching

Open geoffxy opened this issue 7 years ago • 4 comments

  • [x] Build experimental hole punching proof-of-concept server + client just to see if we can exchange packets via UDP
  • [x] Switch the agent's transport over to UDP
  • [x] Build the tandem server to facilitate setting up sessions and for rendezvous
  • [x] Modify the agent to communicate with the tandem server
  • [x] Stretch goal: Allow set up of a session with multiple participants
  • [ ] Add interagent keep alive messages
  • [ ] Add a rendezvous <-> agent heartbeat message

geoffxy avatar Jan 26 '18 21:01 geoffxy

@geoffxy Do we have to use UDP? I read through the abstract + intro of the paper you linked in Slack. It seems that although the % of networks that allow hole punching through TCP is lower, it is still possible. TCP guarantees reliability so we won't have to worry too much about network issues afterwards.

rageandqq avatar Jan 27 '18 05:01 rageandqq

We'd need to test out TCP hole punching to see how reliable it is. It seems like UDP hole punching is what works most frequently, which would be more useful to us in establishing the connections. Though if we can get TCP hole punching working reliably it would probably be less work on the agent's side in terms of not having to switch the transport and not having to think too much about message size.

From this, it looks like UDP's reliability isn't that bad though. http://openmymind.net/How-Unreliable-Is-UDP/ The CRDT should be resilient to reordering. The only problem will be inconsistencies due to lost messages.

geoffxy avatar Jan 28 '18 02:01 geoffxy

@typeintandem/lightly I think we can close this and move the keep-alive messages to a non-launch blocking issue.

rageandqq avatar Mar 11 '18 04:03 rageandqq

Moving everything in here over to Milestone 5 for housekeeping, closing down Milestone 3.

rageandqq avatar Mar 15 '18 03:03 rageandqq