-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NAT traversal: TCP hole punching via simultaneous open #1021
Comments
This tends to have quite low success rates because it's trivial from the nat's perspective to identify that the two sides are sending different flows. It's also rare to have nat's where the outbound TCP port will be stable so you can predict the 5 tuple for even attempting the simultaneous open. (citation needed of course, but that's my impression) |
You can find some good info for this in the TCP testing section of https://pdos.csail.mit.edu/papers/p2pnat.pdf. |
Right. Most TCP nat mapping will be on the 5 tuple. Initially, many nat devices would use predictable mappings (e.g. the external port would increase by 1 with each subsequent connection). That has stopped happening. Only nat devices that use a stable mapping based on only the internal host:port (the 3 tuple) will be usable, but still, better than not doing it 👍 |
@willscott Based on that paper, we're hoping to get ~60% success rates for TCP hole punching (much lower than ~85 for QUIC), exactly because of this problem. But yes, it really does help getting this in as we still rely on TCP over QUIC for a lot of use cases. |
This is now being done as part of #1039. |
Reference: https://pdos.csail.mit.edu/papers/p2pnat.pdf
The text was updated successfully, but these errors were encountered: