Research-grade ION-DTN simulation framework with real BPv7, WLAN mobility, and per-node ML module attachment
Project description
⚛️ EmION — Research-Grade ION-DTN Simulation
Built with 💻 by Team DOMinators
EmION is an authentic, research-grade Delay-Tolerant Networking (DTN) simulation framework. Unlike other simulators, EmION uses the real NASA-JPL ION-DTN C-engine and Contact Graph Routing (CGR) for 100% protocol authenticity — with a state-of-the-art visual dashboard and per-node ML module attachment.
✨ Key Features
| Feature | Description |
|---|---|
| Real ION-DTN | Uses the actual NASA-JPL ION C-engine — not a simulator |
| BPv7 + CGR | Full Bundle Protocol v7 with Contact Graph Routing |
| WLAN Mobility | Spatial distance-based wireless link management |
| XML Scenario Import | Load CORE GUI .xml scenarios directly |
| Scenario Briefing | Plain-English mission summary from any loaded scenario |
| Per-Node ML Modules | Attach anomaly detectors, BPSec signers to specific nodes |
| Auto-Feed Pipeline | Nodes automatically stream telemetry to attached modules |
| Visual Dashboard | Real-time canvas with node LEDs, bundle animation, HUD overlays |
| CFDP Support | Authentic file delivery over DTN |
🌍 Platform Support
| Platform | Support | Notes |
|---|---|---|
| Linux (Ubuntu/Debian) | ✅ Native | Recommended. Use install.sh |
| Windows (WSL2) | ✅ Supported | Ubuntu 22.04 on WSL2 |
| Docker | ✅ Containerized | Zero local setup |
| Windows (Native) | ❌ | Use WSL2 or Docker |
🚀 Installation
From PyPI
pip install "emion[dashboard]"
From Source
git clone https://github.com/info-gallary/emion.git
cd emion
pip install -e ".[dashboard]"
For Testing
pip install -e ".[dashboard,test]"
Full Environment (Linux/WSL)
chmod +x install.sh && ./install.sh
🛰️ Usage
Launch the Dashboard
emion dashboard
Open http://localhost:8420 in your browser.
CLI
emion info # ION system status
emion dashboard # Start the visual dashboard
Run Tests
pytest -q
For a reviewer-friendly quick pass:
pytest -q tests/test_scenario_import.py tests/test_dashboard_scenarios.py
Run Automated Experiments
python3 scripts/run_experiments.py \
--config examples/experiments/scalability_matrix.json \
--output-dir artifacts/experiments_matrix
This writes per-scenario CSVs plus aggregate SVG plots under artifacts/experiments_matrix/.
📖 Documentation
- Quickstart
- Architecture Overview
- Dashboard API Reference
- Custom XML Scenario Format
- Troubleshooting
- Reproducibility Guide
🧪 XML Scenario Import
Upload any CORE .xml scenario directly in the dashboard:
- Open Scenario Engine in the sidebar
- Drag-and-drop your
.xmlfile (or click Browse Files) - A Scenario Briefing appears in the telemetry panel with a plain-English summary
- Click ▶ Start to begin the simulation
See examples/ion_mars/ for a sample scenario.
For a reproducibility-oriented validation workflow, see docs/reproducibility.md.
Experiment configs are available in examples/experiments/, including:
scalability_matrix.jsonrobustness_matrix.jsonml_matrix.jsonmars_actual_schedule.json
📚 Citation
Citation metadata is available in CITATION.cff.
🔌 Per-Node ML Modules
Attach ML inference modules (anomaly detectors, security analyzers) to specific nodes. The node automatically feeds all telemetry and bundle data to the attached module.
Quick Start
- Start your module (a FastAPI server with
/healthand/analyzeendpoints) - In the dashboard sidebar → ML MODULES
- Select a node → pick module type → enter the API URL → Attach
- Watch the canvas LED indicators (🟢/🟡/🔴) change in real-time
Module API Contract
Your module must expose:
GET /health→{"status": "ok"}POST /analyze→ receives{"payload": ..., "metadata": {...}}, returns{"is_anomaly": bool, "score": float}
See examples/anomaly_detector/ for a reference implementation.
🐳 Docker
docker build -t emion .
docker run -p 8420:8420 emion
For a containerized experiment run:
docker compose run --rm --profile experiments runner
📦 Project Structure
emion/
├── emion/ # Core Python package (BPv7, CGR, Dashboard)
│ ├── core/ # ION engine, scenarios, WLAN mobility
│ ├── dashboard/ # FastAPI server + static UI
│ ├── plugins/ # Module base classes (APIPlugin)
│ └── pyion/ # C-extension bindings for ION
├── examples/ # User-facing research examples
│ ├── ion_mars/ # CORE XML scenario (5 WLAN nodes)
│ ├── anomaly_detector/ # Sample ML inference module
│ └── core_services/ # CORE integration scripts
├── scripts/ # Maintenance & developer utilities
├── docs/ # Coding guide & usage notebook
├── tests/ # Test suite
├── Dockerfile # Self-contained build
├── pyproject.toml # Package config (v1.0)
├── LICENSE # MIT
└── CONTRIBUTING.md # How to contribute
🤝 Contributing
See CONTRIBUTING.md for guidelines.
📜 License
MIT License — see LICENSE.
Authentic. Professional. Space-Ready. ⚛️
Built by Team DOMinators using the real NASA-JPL ION-DTN engine.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file emion-1.0.0.tar.gz.
File metadata
- Download URL: emion-1.0.0.tar.gz
- Upload date:
- Size: 106.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26cdd28dd7f9913efecb522ac09273dc71649b505c47516694d63686aa26e973
|
|
| MD5 |
b8321c09ea5694b6ee795bd014eeef8a
|
|
| BLAKE2b-256 |
25c72de473d4501bf6bcff9ba03d030f0c2528e71335d94d326362b4cd776bd5
|
File details
Details for the file emion-1.0.0-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: emion-1.0.0-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbf21b9852a98c9777299aaab299dd65a7d3e92a86f5d29c3aa17cce591fc6cd
|
|
| MD5 |
ca9f0398e09208d4ee01e76db54537f6
|
|
| BLAKE2b-256 |
1a16d8b8600cc91d1802e596597783c5491c252e9c24d216c0d0a738154a4914
|