[tahoe-lafs-trac-stream] [Tahoe-LAFS] #169: tcp hole-punching!

Tahoe-LAFS trac at tahoe-lafs.org
Thu Apr 1 12:46:53 UTC 2021


#169: tcp hole-punching!
------------------------------+----------------------------------------
     Reporter:  zooko         |      Owner:  ghazel
         Type:  enhancement   |     Status:  new
     Priority:  major         |  Milestone:  undecided
    Component:  code-network  |    Version:  0.6.0
   Resolution:                |   Keywords:  firewall availability gsoc
Launchpad Bug:                |
------------------------------+----------------------------------------

Comment (by exarkun):

 To choose a milestone, let's work backwards from an end-user-facing goal.
 What is that in this case?  Real servers rarely have to deal with NAT.
 They just get public IP addresses.  Perhaps the goal is related to
 operation by "home" users?  That is, to allow me to run a listening Tahoe
 node (so, not just a storage client - a storage server and/or an
 introducer) on my consumer-grade network connection where I have no
 publicly routeable address to make my servers listen on.

 Oops, wait.  Is that really relevant?  Can I TCP hole-punch through
 carrier-grade NAT (CGN)?  Wikipedia vaguely nods towards "yes" (no
 citations).  All of my hole-punching experience is with consumer-grade
 routers so I can't say first-hand.  You have to be able to hole-punch
 through CGN to meaningfully improve the home user experience now, I think.

 Well ... maybe there are mild ease-of-use improvements from just defeating
 consumer-grade router NAT.  Tahoe could deal with UPnP instead of making
 me click buttons on my router.

 Suppose we can do some or all of those things.  The end result is that
 Tahoe storage nodes and introducers can run on my low-end network
 connection.  This helps out ... friendnet operation, perhaps?  A group of
 "friends" are more likely to have a NAT'd server among them (it's not
 until you have two that you actually need help here.  still.).

 If you wanted a remote control for your client node then the same
 requirement would apply, I suppose.  You want the remote control to be
 able to connect back to your client node regardless of intervening network
 topology.  There's a lot of other work required before we know if/how we
 can have such remote controls though.

 I think "Grid Management" is essentially orthogonal.  It's actually about
 efforts related to ticket:2916 which is a very specific kind of grid
 management.

 If we had some kind of "friendnet" milestone it might make sense there.
 If we had some kind of "remote control" milestone it might make sense
 there.
 It might even make sense if we sliced the problem differently and had a
 "maximum network compatibility" milestone that included all of the hole
 punching, UPnP, STUN, etc tickets.

 None of those milestones exist yet, though, and I wouldn't suggest
 creating them just to have a place to put this ticket.  I think we need to
 plan a roadmap first and then we'll see what milestones are on it and we
 can sort tickets into them.  There will be *lots* of tickets that don't
 fall into a milestone in the near-term future based on such a roadmap and
 that's fine (or at least, that's life).

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/169#comment:18>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list