Tahoe-LAFS Storage Drone

Idea: Creating a dedicated, minimal, small fast tahoe storage node in C to be run on embedded (OpenWRT) systems.

Goal: Adding lots of cheap tahoe-lafs storage nodes to our grid by making any of our Freifunk routers with USB port one such node.

How to learn about the Tahoe-LAFS storage protocol


Random notes

Convergence key vs. Random Key:

Documentation of Tahoe-LAFS storage (drone) protocol

The storage drone should be able to communicate with the main tahoe-lafs software without needing any modifications to the latter.

The following document is going to collect the various formats and protocols needed for a dedicated storage node.

Introducer Communication

  • Connect to Introducer
  • Announce ourselves to introducer

Client Communication

  • Immutable:
    • allocate - remote_allocate_buckets()
    • write -
    • close
    • read
    • get - remote_get_buckets()
  • Mutable:
    • writev
    • readv - remote_slot_readv()
  • Both:
    • add-lease - remote_add_lease()
    • renew - remote_renew_lease()
    • cancel
  • Dunno:
    • remote_get_version()
    • remote_advise_corrupt_share()
    • remote_slot_testv_and_readv_and_writev()

Local Storage Format

Ideally, the local disk storage format of this storage drone would be the same as of the main tahoe-lafs software to be able to run either software over the same storage directory.

Configuration Format