86个版本
0.21.0 | 2024年3月27日 |
---|---|
0.20.1 | 2024年2月28日 |
0.19.0 | 2023年4月9日 |
0.18.2 | 2022年11月24日 |
0.4.2 | 2019年7月17日 |
273在网络编程类别中
每月下载196次
395KB
9K SLoC
dtn7-rs
Rust实现了一种对干扰容忍网络(DTN)守护进程,用于第7版数据包协议 - RFC9171。
此外
- TCP汇聚层v4 - RFC9174
- 最小化TCP汇聚层
- 一个简单的HTTP汇聚层
- 一个基于HTTP的拉取汇聚层
- 一个最小的UDP汇聚层(目前没有扩展)
- IP邻域发现服务
- 方便的命令行工具与守护进程交互
- 一个简单的Web界面,用于显示
dtnd
的状态信息 - 为应用程序代理提供的WebSocket接口
- 外部进程的接口,提供路由策略和汇聚层
实际的BP7实现(编码/解码)作为单独的项目提供。
还提供了额外的dtn扩展和客户端库。
目前,已实现基于IPND的服务发现,但已适应CBOR和BPv7、TCP、MTCP & HTTP CLs、sprayandwait/flooding/epidemic/static/sink路由以及restful/websocket命令接口。支持两种寻址方案,即dtn和ipn。此外,还提供了一些CLI工具,以便轻松将dtn7集成到shell脚本中。
注意:此代码仍在开发中,因此可能会频繁更改。
安装
使用cargo从源代码安装
cargo install --bins --examples dtn7
如果遇到编译问题,请尝试将--locked
添加到命令中。这将使用与我们的仓库中使用的确切的依赖项版本。
常见平台的预编译二进制文件可以在 GitHub 上找到。
用法
以下列出了与 dtn7 一起提供的部分命令。同时,还有更详细的 入门指南 可用。
守护进程
主要的 数据包协议代理 dtnd
可以通过 CLI (dtnd --help
) 或提供 配置文件 来配置。如果两者都混合使用,则命令行选项将覆盖配置文件设置。守护进程不会在后台分叉,但可以通过使用 nohup
命令和 &
启动为后台服务。
针对具有 epidemic 路由、mtcp 聚合层和默认端点 'incoming' 的 node1 的示例用法
$ dtnd -n node1 -r epidemic -C mtcp -e incoming
相同,但使用 ipn 编址方案,默认端点为 23.42
$ dtnd -n 23 -r epidemic -C mtcp -e 42
配置也可以通过配置文件来实现。例如,请参阅 examples/dtn7.toml.example。
辅助工具
dtnquery
:查询来自dtnd
的信息,如 对等方、数据包、节点ID 等。dtnrecv
:一个简单的工具,用于检查特定端点上的新数据包,可用于脚本编写。dtnsend
:一个简单的工具,可以从提供的文件或管道发送数据包,可用于脚本编写。dtntrigger
:自动触发外部二进制文件以处理传入的数据包,对于高级脚本编写很有用。
示例应用
一个简单的 DTN 回声服务可以在 examples/dtnecho2.rs
下找到。
此服务会自动注册其端点并监听本地 /echo
端点上的任何传入数据包或服务号 7
上的 ipn 地址。每个数据包都会以相同的有效载荷和生存期发送回其源,不要求提供投递报告。
此服务可以与 examples/dtnping.rs
一起使用进行连接性测试。
示例用例
在 tests/
中有几个用于集成测试的 shell 脚本,也展示了如何使用不同的命令行实用程序。此外,在 tests/clab
下还有更复杂和动态的测试,这些测试在 Docker 和 coreemu 中执行。对于纯 docker compose 场景,您可以在 tests/docker
下查看。
更复杂的情况可以在 dtn7 展示厅 中找到。
承认这项工作
如果您在科学出版物中使用此软件,请引用以下论文
@INPROCEEDINGS{baumgaertner2019bdtn7,
author={L. {Baumgärtner} and J. {Höchst} and T. {Meuser}},
booktitle={2019 International Conference on Information and Communication Technologies for Disaster Management (ICT-DM)},
title={B-DTN7: Browser-based Disruption-tolerant Networking via Bundle Protocol 7},
year={2019},
volume={},
number={},
pages={1-8},
keywords={Protocols;Browsers;Software;Convergence;Servers;Synchronization;Wireless fidelity},
doi={10.1109/ICT-DM47966.2019.9032944},
ISSN={2469-8822},
month={Dec},
}
许可
根据您的选择,受以下任一许可证的许可:Apache 许可证 2.0 版 或 MIT 许可证。
除非您明确说明,否则您根据 Apache-2.0 许可证定义的任何有意提交以包含在 dtn7-rs
中的贡献,均应按上述方式双许可,不附加任何额外的条款或条件。
依赖关系
~18–36MB
~594K SLoC