Software Distribution Platform
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)