sdtn (SpaceArth DTN) is a Rust-based implementation of Delay Tolerant Networking (DTN), designed for resilient communication between space and earth — and beyond.
This project aims to offer modular, efficient, and extensible components for BPv7-based DTN systems, suitable for both space and terrestrial disruption-tolerant networks.
"From space to earth. For the disconnected."
- Usage Guide - Library usage and API documentation
- 使用方法 - ライブラリの使用方法とAPIドキュメント(日本語)
For questions, suggestions, or contributions, please contact:
- Email: hsatlefp@gmail.com
- 🌍 BPv7-compliant Bundle Protocol
- 🛰️ Store-and-forward mechanism
- 🔌 Modular CLA (Convergence Layer Adapter) design
- 📦 Bundle persistence and metadata management
- 🛠️ Extensible for LoRa, BLE, disaster scenarios, and more
A command-line tool for creating and managing Bundle Protocol bundles is available:
# Install the project
cargo install sdtn
# Create a bundle
sdtn insert --message "Hello, DTN!"
# List all bundles
sdtn list
# Show bundle details (using partial ID)
sdtn show --id <partial_id>
# Start daemon listener (receiver)
sdtn daemon listener --addr 127.0.0.1:3000
# Start daemon dialer (sender)
sdtn daemon dialer --addr 127.0.0.1:3000
Configuration is managed in config/default.toml
and can be overridden with environment variables:
# Specify config file
export DTN_CONFIG="config/development.toml"
# Override individual settings
export DTN_BUNDLE_VERSION=8
export DTN_ENDPOINTS_DESTINATION="dtn://new-dest"
You can verify basic DTN communication with the following steps:
# Run in terminal 1
sdtn daemon listener --addr 127.0.0.1:3000
# Run in terminal 2
sdtn insert --message "Hello, DTN!"
sdtn daemon dialer --addr 127.0.0.1:3000
This procedure allows you to verify that the created bundle is transmitted via TCP and received by the listener.
Current development phase and future plans:
-
✅ Bundle Structure & CBOR Support
- Bundle structure definition
- CBOR serialization/deserialization
- Basic CLI operations
-
✅ Bundle Storage/Load
- File-based persistence
- BundleStore implementation
- Partial ID lookup support
- Automatic test cleanup
- Bundle dispatch functionality
-
✅ TCP CLA Communication
- TCP CLA (Listener / Dialer) bundle transmission and reception
- ACK response (text format)
-
🚧 CLA Abstraction and Transmission Integration
- Common interface definition via
trait Cla
- Transmission and reception verification via CLA abstraction
- Integration with BundleStore
- Common interface definition via
-
🔜 Routing Function Implementation (Highest Priority)
- CLA selection based on destination
- Static routing table (destination → next hop)
- Structure consideration for future dynamic routing compatibility
-
⏸ CLA Diversification (Low Priority)
- BLE CLA: Both Central and Peripheral written in Rust (※Operation verification planned after Raspberry Pi purchase)
- LoRa CLA phased implementation (USB AT → SPI → embedded / RTOS)
- Dynamic CLA selection integration conforming to
trait Cla
-
🚧 Software Bus and Task Management
- Inter-process communication
- Message queue
- Async processing and task scheduling
-
⬛ Management CLI / WebUI (Optional)
- Advanced management features
- Visualization tools
-
⬛ RFC Compliance (Optional)
- RFC 9171 compliance tests
- Interoperability tests
MIT OR Apache-2.0
Some parts of this project (README, code comments, and sample logic) are co-authored or generated using AI tools. All code is manually reviewed and tested before use.