Exploring Delay Tolerant Networks
An experimental fork of µD3TN focused on the creation of a frugal delay tolerant network.
Note: This is a fork of original µD3TN released on https://gitlab.com/d3tn/ud3tn. This fork is implementing custom routing algorithms and experimental features that doesn't need to be merged to the main codebase.
Make sure you have necessary tools for C building, python3, pip and python libraries cbor
installed globally
On debian :
apt get install build-essential python3 python3-pip python3-cbor
Clone this repository (with optional --depth 1
parameter for smaller repository size)
git clone https://github.com/EpicKiwi/archipel-core.git --depth 1 --recurse-submodules
Build
make posix
Install (as root)
make install-posix
Archipel core is now installed on your machine.
This section describes node configuration for a system-wide process. In this scenario, you'll have an archipel-core process running in background on startup.
Prefer this scenario if you want to build a headless node. But use the next section procedure if you plan to let user control their own node.
Configure your node by copying default-conf.env
to /etc/archipel-core/conf.env
(as root)
mkdir -p /etc/archipel-core
cp default-conf.env /etc/archipel-core/conf.env
Edit /etc/archipel-core/conf.env
and change NODE_ID
for your own name on the network (as root)
Start system-wide service (as root)
systemctl start archipel-core
Enable this service to start archipel core on boot
systemctl enable archipel-core
Archipel core is now configured and will start at boot time.
IPC socket is present on /run/archipel-core/archipel-core.socket
This section describes node configuration for each user with their own process and node. In this scenario, a node is startd on user-session opening and will shut down on session close.
This scenario is helpful to allow user control their very own node node on the network. It also run process as the current user and allow Archipel Core to use user resources such as removabled drives (archipel-file-carrier).
Configure your node by copying default-conf.env
to ~/.config/archipel-core/conf.env
mkdir -p ~/.config/archipel-core
cp default-conf.env ~/.config/archipel-core/conf.env
Edit ~/.config/archipel-core/conf.env
and change NODE_ID
for your own name on the network
Start user service
systemctl start --user archipel-core
Enable this service to start it on user session opening
systemctl enable --user archipel-core
IPC socket is present on /run/user/[user uid]/archipel-core/archipel-core.socket
Configure neighbour discovery by installing archipel-ipbeacon
Use USB drives to transmit bundle with archipel-file-carrier
Add a new remote if you don't have any
git remote add ud3tn "https://gitlab.com/d3tn/ud3tn.git"
Go on the ud3tn
and pull master
branch from µD3TN repository
git checkout ud3tn
git pull ud3tn master
Don't forget to pull the result on this repository
git push origin ud3tn
Here are some others experiments and projects around DTN and Archipel Core
- archipel-ipbeacon Neighbour discovery
- archipel-file-carrier Use USB drives to transmit bundles
- ud3tn-aap Rust implementation of ud3tn's aap protocol