Changes between Version 2 and Version 3 of AccountingDesign


Ignore:
Timestamp:
2008-06-30T20:44:23Z (16 years ago)
Author:
warner
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AccountingDesign

    v2 v3  
    3434 7. auditing: who owns this share, how did they get permission to upload it
    3535 8. reconcilliation / garbage collection : which shares does Bob own?
     36 9. measure traffic: how many bytes did Bob upload or download (as opposed to
     37    how much is he currently storing)
     38
    3639
    3740== Immediate Goals ==
     
    5053 * next after that
    5154   * more generalized delegation
     55
     56== Design Overview ==
     57
     58As touched upon in source:docs/proposed/accounts-pubkey.txt (and
     59source:docs/proposed/accounts-introducer.txt), each share on a storage server
     60is kept alive (in a garbage-collection sense) by one or more "leases", and
     61each lease is assigned to a given "account"/"user"/"owner". The server has an
     62imaginary "lease table" (imaginary in the snese that it is not actually
     63implemented as a giant table: instead the data is broken up into more
     64efficient/robust pieces). This two-dimensional lease table has Storage Index
     65along one axis, and Account on the other, and each cell of the table
     66represents a potential lease.
     67
     68Each account-owner gets control over their column of the table: they can add
     69leases to existing shares, upload new shares (which immediately acquire new
     70leases), cancel their lease on a share (possibly causing the share to be
     71garbage-collected), or get a list of all of their leases (for
     72reconcilliation).
     73
     74Some clients may be "super-powered", meaning that they may have the authority
     75to affect more than one row of the table. It may be necessary to give a
     76Repairer this sort of authority to let it keep files alive when the original
     77uploading client is not participating in the maintenance process. POLA
     78dictates that we try to avoid needing this sort of authority inflation, so
     79superpower delegation is just a fallback plan.
     80
     81The admin of each storage server decides their own policy by configuring
     82their server with various certificates and public keys: fundamentally,
     83storage authority originates with the server, and is delegated outwards to
     84the clients. Clients are configured with certificates and private keys that
     85allow them to use some portion of the server's authority.
     86
     87Each time a client uploads a file (or otherwise makes use of storage
     88authority), they must demonstrate their authority to each server, through a
     89negotiation protocol. The {{{client.upload()}}} API will be modified to
     90accept a new argument, tenatively named "cred=", that represents this
     91authority. The webapi will also acquire such an argument, allowing the HTTP
     92client to pass its authority to the webapi server so the server can perform
     93the upload.
     94
     95= Design Pieces =
     96
     97* Add cred= to upload API
     98  * client.upload() needs a cred= argument
     99  * the webapi PUT/POST commands need a cred= argument
     100  * the javascript-based webfront program (used by allmydata.com) needs cred
     101  * the human-oriented "wui" needs a way (cookies? sessions?) to express
     102    storage authority
     103
     104* Define how to configure clients with their storage authority
     105
     106* define how to create these credentials
     107  * certificate-signing tools
     108  * "tahoe sign" subcommand
     109
     110* define how to configure servers with their certificates
     111* changes to Introduction
     112  * advertise accepted pubkeys in the storage-v2 announcements?
     113* changes to peer selection
     114* furlification process, persistence/optimization
     115* label format: how should leases be labeled
     116* usage-table management: databases, size totals, what to store in each lease
     117* Usage/Aggregator service
     118  * web interface
     119  * petname database / display
     120