https://github.com/fruit-testbed/p2p-update
Peer to Peer Secure Update project
https://github.com/fruit-testbed/p2p-update
bittorrent iot nat peer-to-peer stun system-update
Last synced: 9 months ago
JSON representation
Peer to Peer Secure Update project
- Host: GitHub
- URL: https://github.com/fruit-testbed/p2p-update
- Owner: fruit-testbed
- License: cc-by-sa-4.0
- Created: 2017-06-14T09:21:16.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-06-14T12:24:35.000Z (almost 8 years ago)
- Last Synced: 2025-04-13T17:49:26.955Z (about 1 year ago)
- Topics: bittorrent, iot, nat, peer-to-peer, stun, system-update
- Language: Go
- Homepage: https://fruit-testbed.org
- Size: 8.07 MB
- Stars: 4
- Watchers: 3
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Peer-to-Peer Secure Update
This project aims to provide a framework to securely distribute system update
using peer-to-peer procotol that works in heterogeneous network environment,
in the presence of NATs and firewalls, where there is no necessarily direct
access from a management node to the devices being updated.
The framework combines several key techniques:
1. STUN-based UDP hole punching to discover and open NAT bindings
2. A gossip protocol to deliver short messages to distribute update notifications
3. BitTorrent to securely distribute the software update
This project is part of Federated RaspberryPi micro-Infrastructure Testbed - [FRuIT](https://fruit-testbed.org).
## To build
Requirements:
- Go version >=1.9
- dep (https://github.com/golang/dep)
```
cd p2p-update
dep ensure
./build
```
This generates an executable binary file: `p2pupdate`.
## To run
The application can run on any Linux operating system.
### Server mode
The server mode runs a lightweight STUN service to bootstrap a new peer and advertise
its session to existing peers. Both the update notification and file are distributed
using peer-to-peer protocols.
To run in server mode, invoke:
```
./p2pupdate server
```
## Agent mode
The agent mode performs peer-to-peer communications with other agents to send/receive
update notifications, use it to download/serve the update files, and deploy the updates
on local node.
To run in agent mode, invoke:
```
./p2pupdate agent
```
There are two options
- `--config-file`, is used to pass a custom config file.
- `--default-config`, prints default configuration to standard output.
## License
Apache Version 2.0.