[tahoe-lafs-trac-stream] [tahoe-lafs] #1086: servers should attempt to open connections to clients

tahoe-lafs trac at tahoe-lafs.org
Mon Oct 10 04:35:15 PDT 2011


#1086: servers should attempt to open connections to clients
------------------------------+------------------------
     Reporter:  zooko         |      Owner:
         Type:  enhancement   |     Status:  new
     Priority:  major         |  Milestone:  eventually
    Component:  code-network  |    Version:  1.7β
   Resolution:                |   Keywords:  introducer
Launchpad Bug:                |
------------------------------+------------------------

Comment (by gdt):

 I concur with the notion that the implementation should be "all the way"
 in either the unix style (which I would call client/server) or the p2p
 style.  (I am amused at being the canonical example of minimal.)

 This is also an argument for having v6 support working.  It's boggling
 that Twisted is so far (10+ years) behind the curve.

 On the notion of not arguing about better, two points:
  * we are talking about the protocol spec, not just the implementation
 behavior.  tahoe-lafs suffers from not having a clear separation between
 these.
  * obviously different people have different preferences and different
 situations, so (less obviously) both styles should be supported
  * given support for both styles, a good question is whether it  should be
 per-grid or per-system

 As I've been using tahoe-lafs with a private grid, each node (process) is
 a client or a server.  If the machine I want to use as a client happens to
 host a server node, then I run a client node (also).  With the current
 implementation, client nodes have the aliases file and thus must be per-
 user, and server nodes are about the grid.  (I am talking about the CLI,
 mounting, and WAPI, and reject the WUI as unsafe.)   And to make servers
 that have private addresses reachable and usable to all clients, I would
 have to configure NAT translation.  Given that, the client/server approach
 is sensible.

 People using the pubgrid may want maximal connectivity, but  if on a
 laptop/etc. they are going to find that servers come and go depending on
 whether their address is private or routable (and unfirewalled) at the
 moment.  (But this is not *currently* helpful as tahoe  does not work well
 with server churn (ticket:1209).)

 So, it could be that the introducer should have a "connect-to-clients"
 flag, and if set then 1) clients publish contact information and 2)
 servers try to connect to clients (and use connections in either
 direction).  I'd want this off, but it would be interesting to see what it
 should be on the pubgrid.  Perhaps the client should have a connect-to-
 clients config with yes/introducer/no, where "introducer" means to respect
 the config value from the introducer.  In a future with a distributed
 introducer function, this is just a piece of data that needs to be
 available from the function.  And it could be that the flag is passed in
 the setup of each connection, so reverse channels are not used to those
 who say connect-to-clients=off.

 It could also be that it's easier to make the flag be purely local,
 causing a client to publish contact information, causing a node that
 offers storage to connect to nodes that do not, trying to use the reverse
 channel, and allowing the reverse channel to be used.

 I think it's an important property that if on a node of mine I set
 connect-to-clients=off, then my client node will not publish anything (I
 realize the introducer still knows about it) and my server node won't try
 to make connections to clients.  (I do find repeated connection attempts
 to RFC1918 addresses annoying, and this helps but does not fix the issue.)

-- 
Ticket URL: <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1086#comment:9>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage


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