Software Distribution Platform

From
Revision as of 18:02, 17 November 2004 by Wiedemann (talk | contribs) (initial writing from discusison on 2004 11 17)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Conception for a software distribution platform for a distributed network of WRT54GS nodes.

The identified requirements are as follows:

  • nodes may be turned off or disconnected for any period of time from the remaining network
  • no centralized datastore (avoids single point of failure)
  • updates need to be reliable and cross-compatible beginning with version 1.0.0 (allow update of an node running 1.0.0 with a network of version 1.5.99 nodes around and also allow updates even with versions that have bad routing)
  • broken, untrustworthy and malicious nodes may not install software (or interfere with the updating process?)
  • trustworthy developer team and CA
  • all nodes should have the same software version running most of the time (ideally every second)


The ideas to meet those requirements:

  • sign each software update package with a CA key
  • CA public key is preinstalled with the base system on every node to check authenticity
  • discovery mechanism for newer versions on neighbours (push and/or pull (broadcast and/or query))
  • if newer version is available, fetch it (e.g. over existing TFTP)
  • infection distribution mechanism (new version can be injected on any connected node)
  • synchronize system clocks over NTP (using UDP port 123) with neighbours, guaranteeing similar system times
  • include software starting time (and end time for experimental software) in each update package
  • coordinated switch over to new version if system_time > start_time
  • coordinated switch-back to non-experimental version if system_time > end_time

Wiedemann 19:02, 17 Nov 2004 (CET)