Changes between Initial Version and Version 1 of Ticket #467


Ignore:
Timestamp:
2009-04-06T07:18:30Z (15 years ago)
Author:
warner
Comment:

repurposes this ticket to talk about configuring the server list in tahoe.cfg, potentially instead of using the Introducer

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #467

    • Property Summary changed from change peer-selection to prepare for rights-amplification step, alternative backends to change peer-selection to allow introducerless explicit serverlist, alternative backends
  • Ticket #467 – Description

    initial v1  
    1 Another prep-task for the upcoming Accounting work is to change the client's
    2 peer-selection code. The goals are:
     1(note: this is no longer closely related to Accounting, since my new
     2plan for Accounting is to send signed requests over a Foolscap channel,
     3instead of using rights-amplification to get from an initial Foolscap
     4object to a per-account object).
    35
    4  * the set of storage servers that are considered for peer-selection should
    5    come from a config file, with one server per line, of various types
    6  * one entry type means "ask the introducer", perhaps with some parameters
    7    like "only accept servers that are blessed by the following key"
    8  * if this file doesn't exist, it defaults to asking the introducer
    9  * one entry type (or introducer tag) is used to point at a storage server's
    10    "login FURL" instead of a fully-powered reference. (we need a better
    11    name for this object). This is the object to which the client will pass
    12    credentials and/or signed certificate chains.
     6I'd like to have a section in the client's tahoe.cfg which lets it
     7specify the servers available for storage. In contrast to #573 (which is
     8about runtime/per-upload specification of which servers to use, out of
     9the set provided by the introducer), this ticket is about boot-time
     10configuration of the available set, potentially replacing the
     11Introducer-provided list.
    1312
    14 When the peer-selection process needs server references, the client should
    15 ask the login FURLs for server references, performing credential negotiation
    16 if necessary. The client should cache the results for later use, so ideally
    17 the negotiation only needs to take place once.
     13My thought is that the tahoe.cfg should have a section that specifies a
     14list of servers to use. Then another tahoe.cfg setting should have a
     15flag which says "use the Introducer to populate this list", and the
     16default configuration would use the Introducer. This latter section
     17would also have a place to configure the #466-style "blesser" (a pubkey
     18which tells the client to only accept server announcements which have
     19been signed by the matching privkey).
    1820
     21This would also make it possible to configure alternative server types.
     22The first such server type I'd like to add is an S3-based server.
     23Regular servers would be defined with a FURL; S3 servers would be
     24defined with a service URL and a set of authorization secrets.
     25
     26The syntax I'm thinking of would look like this:
     27
     28{{{
     29[client-server-selection]
     30server.X.type = tahoe-foolscap
     31server.X.nickname = alice
     32server.X.furl = pb://...
     33server.Y.type = tahoe-foolscap
     34server.Y.nickname = bob
     35server.Y.furl = pb://
     36server.Z.type = s3
     37server.Z.nickname = aws
     38server.Z.url = http://...
     39server.Z.creds = ...
     40server.Z.num_shares = 3
     41use_introducer = False
     42permute_serverids = False
     43}}}
     44
     45The {{{server.*}}} lines would basically define a list of dictionaries
     46(the "X" and "Y" strings would be discarded after tahoe.cfg is parsed).
     47
     48The "use_introducer=False" line means that the client shouldn't bother
     49talking to the Introducer. If it were True, the client would connect to
     50the introducer and add whatever servers it knew about to the list.
     51
     52The "permute_serverids=False" line means that the client shouldn't
     53permute the serverlist on each upload. Instead, it should assign 1 (or
     54num_shares=) shares to each server in the order they appear in this
     55list. The total-shares "N" value ought to equal the number of servers
     56(or rather the sum of the num_shares= values).
     57
     58Having permute_serverids=False in the tahoe.cfg, rather than provided on
     59a per-upload basis (as in #573) might prove more usable. It might be
     60more appropriate for a fairly stable grid though: one in which new
     61servers are not being added very frequently.