#bundle #protocols #dtn #layer #networking #version #延迟容忍网络

bin+lib dtn7

Rust延迟容忍网络守护进程和CLI工具,实现第7版数据包协议(RFC9171)

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网络编程类别中

Download history 2/week @ 2024-04-22 65/week @ 2024-05-20 106/week @ 2024-05-27 15/week @ 2024-06-03 25/week @ 2024-06-10 14/week @ 2024-06-17 16/week @ 2024-06-24 46/week @ 2024-07-01 43/week @ 2024-07-08 34/week @ 2024-07-15 34/week @ 2024-07-29 126/week @ 2024-08-05

每月下载196

MIT/Apache

395KB
9K SLoC

dtn7-rs

Crates.io Docs.rs Build status License: MIT License: Apache 2.0 Chat Mastodon

Rust实现了一种对干扰容忍网络(DTN)守护进程,用于第7版数据包协议 - RFC9171

此外

实际的BP7实现(编码/解码)作为单独的项目提供

还提供了额外的dtn扩展和客户端库

目前,已实现基于IPND的服务发现,但已适应CBOR和BPv7、TCP、MTCP & HTTP CLs、sprayandwait/flooding/epidemic/static/sink路由以及restful/websocket命令接口。支持两种寻址方案,即dtnipn。此外,还提供了一些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 下还有更复杂和动态的测试,这些测试在 Dockercoreemu 中执行。对于纯 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