space-dtn#
DTN daemon with policy DSL for software-defined satellite networking.
Overview#
space-dtn is a Delay-Tolerant Networking daemon with an embedded policy language for software-defined satellite networking. It provides:
- Multi-tenant isolation via X.509 certificate-based resource delegation
- Contact Graph Routing for time-varying satellite topologies
- DTN-native control using admin bundles (no gRPC complexity)
- Policy DSL for declarative routing and custody decisions
Architecture#
+------------------------------------------+
| space-dtn-policy (compiled) |
+------------------------------------------+
| space-dtn daemon |
| +--------+ +--------+ +-----------+ |
| | Bundle | | CGR | | Admin | |
| | Store | | Engine | | Bundles | |
| +--------+ +--------+ +-----------+ |
+------------------------------------------+
| Convergence Layer Adapters |
| +-------+ +-----+ +-------+ |
| | TCPCL | | LTP | | UDP | |
| +-------+ +-----+ +-------+ |
+------------------------------------------+
Installation#
opam install space-dtn
Usage#
Running the Daemon#
# Start space-dtn with a config file
space-dtn run --config /etc/space-dtn/config.yaml
# Start with verbose logging
space-dtn run -vvv --config config.yaml
Control CLI#
# Show daemon status
space-dtn status
# Deploy a policy
space-dtn policy deploy policy.bp
# Update contact plan
space-dtn contacts update contacts.json
# List stored bundles
space-dtn bundles list
Policy DSL#
space-dtn includes an embedded policy language for declarative routing:
(* Multi-tenant policy example *)
let policy =
match_tenant "operator:imaging" (
if_priority Expedited then
forward ~custody:true via:ISL
else
store ~until:ground_contact
) @@
match_tenant "operator:comms" (
forward_immediate
) @@
default (drop "unknown tenant")
Multi-Tenant Resource Delegation#
Uses ocaml-delegation for X.509 certificate-based hierarchical resource
allocation:
Root CA (Mission Operator)
├── Operator Cert (100 bundles/sec, 1GB storage)
│ ├── Tenant A Cert (imaging: 50 bundles/sec, 500MB)
│ └── Tenant B Cert (comms: 30 bundles/sec, 200MB)
DTN-Native Control#
Control messages use Bundle Protocol administrative records rather than gRPC:
- Single protocol for control and data
- Store-and-forward tolerant
- BPSec for authentication
- CBOR-encoded, compact
Related Work#
- ION - NASA's DTN implementation in C
- HDTN - NASA's High-rate DTN in C++
- µD3TN - Lightweight DTN implementation
- Albatross - Unikernel orchestrator (inspiration for delegation model)
space-dtn differs by:
- Pure OCaml with minimal dependencies
- Embedded policy DSL for software-defined networking
- X.509-based multi-tenant resource delegation
- DTN-native control plane (no gRPC)
Licence#
ISC License. See LICENSE.md.