{"id":13701999,"url":"https://github.com/dtn7/dtn7-rs","last_synced_at":"2025-05-05T04:30:43.108Z","repository":{"id":35020876,"uuid":"178023077","full_name":"dtn7/dtn7-rs","owner":"dtn7","description":"Rust implementation of a DTN based on RFC 9171","archived":false,"fork":false,"pushed_at":"2024-12-16T20:26:30.000Z","size":12371,"stargazers_count":82,"open_issues_count":1,"forks_count":20,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-12-16T21:35:16.786Z","etag":null,"topics":["bundle-protocol","delay-tolerant-network","dtn","dtn-bpbis","opportunistic-networking","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dtn7.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-27T15:28:33.000Z","updated_at":"2024-11-28T16:48:05.000Z","dependencies_parsed_at":"2024-02-03T16:44:43.884Z","dependency_job_id":"4edab0c1-2073-4d68-9062-c83e88641d65","html_url":"https://github.com/dtn7/dtn7-rs","commit_stats":{"total_commits":380,"total_committers":12,"mean_commits":"31.666666666666668","dds":"0.24736842105263157","last_synced_commit":"43fac1cc2ead3a8fa9e1825f8265a77dd9298daa"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtn7%2Fdtn7-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtn7%2Fdtn7-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtn7%2Fdtn7-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtn7%2Fdtn7-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dtn7","download_url":"https://codeload.github.com/dtn7/dtn7-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252439386,"owners_count":21747996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bundle-protocol","delay-tolerant-network","dtn","dtn-bpbis","opportunistic-networking","rust"],"created_at":"2024-08-02T21:00:29.275Z","updated_at":"2025-05-05T04:30:42.310Z","avatar_url":"https://github.com/dtn7.png","language":"Rust","funding_links":[],"categories":["Bundle Protocol Version 7 - RFC 9171"],"sub_categories":[],"readme":"# dtn7-rs\n\n[![Crates.io](https://img.shields.io/crates/v/dtn7.svg)](https://crates.io/crates/dtn7)\n[![Docs.rs](https://docs.rs/dtn7/badge.svg)](https://docs.rs/dtn7)\n[![Build status](https://api.travis-ci.org/dtn7/dtn7-rs.svg?branch=master)](https://travis-ci.org/dtn7/dtn7-rs)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE-APACHE)\n[![Chat](https://img.shields.io/matrix/dtn7:matrix.org)](https://matrix.to/#/#dtn7:matrix.org)\n[![Mastodon](https://img.shields.io/mastodon/follow/109375208547495905?domain=https%3A%2F%2Ffosstodon.org\u0026style=social)](https://img.shields.io/mastodon/follow/109375208547495905?domain=https%3A%2F%2Ffosstodon.org\u0026style=social)\n\nRust implementation of a disruption-tolerant networking (DTN) daemon for the [Bundle Protocol version 7 - RFC9171](https://datatracker.ietf.org/doc/rfc9171/).\n\nPlus:\n* [TCP Convergence Layer v4 - RFC9174](https://datatracker.ietf.org/doc/rfc9174/)\n* [Minimal TCP Convergence Layer](https://tools.ietf.org/html/draft-ietf-dtn-mtcpcl-01) \n* A simple [HTTP Convergence Layer](doc/http-cl.md)\n* A [HTTP pull-based Convergence Layer](doc/http-pull-cl.md)\n* A minimal [UDP Convergence Layer](https://www.ietf.org/archive/id/draft-sipos-dtn-udpcl-01.html) (currently, without the extensions)\n* An IP neighborhood discovery service\n* Convenient command line tools to interact with the daemon\n* A simple web interface for status information about `dtnd` \n* A [web-socket interface](doc/http-client-api.md) for application agents\n* Interfaces for external processes to provide [routing strategies](doc/erouting.md) and [convergence layers](doc/ecla.md)\n\nThe actual BP7 implementation (encoding/decoding) is available as a separate [project](https://github.com/dtn7/bp7-rs).\n\nAdditional dtn extensions and a client library are also [available](https://crates.io/crates/dtn7-plus).\n\nCurrently, a service discovery based on IPND but adapted to CBOR and BPv7, TCP, MTCP \u0026 HTTP CLs, sprayandwait/flooding/epidemic/static/sink-routing and restful/websocket command interfaces are implemented. \nBoth addressing schemes, *dtn* as well as *ipn* are supported. \nFurthermore, some CLI tools are provided to easily integrate *dtn7* into shell scripts.\n\n**Beware: This code is still under development and thus might change frequently.**\n\n\n## Installation\n\nInstallation from source using cargo:\n```\ncargo install --bins --examples dtn7\n```\n\nIn case of compilation issues, try adding `--locked` to the command. \nThis will use the exact versions of all dependencies as used in our repository.\n\nPrecompiled binaries for common platforms can be found on [GitHub](https://github.com/dtn7/dtn7-rs/releases).\n\n## Usage\n\nIn the following some of the commands shipped with dtn7 are listed.\nThere is also a more in-depth [getting started guide](doc/getting-started.md) available.\n\n### Daemon\n\nThe main *Bundle Protocol Agent* `dtnd` can be configured either through the CLI (`dtnd --help`) or by providing a [configuration file](examples/dtn7.toml.example).\nCommand line options override configuration file settings if both are mixed. \nThe daemon does not fork into background but can be easily started as a background service by invoking it with the `nohup` command and `\u0026`.\n\nExample usage for *node1* with *epidemic* routing, *mtcp* convergence layer and the default endpoint *'incoming'*:\n```\n$ dtnd -n node1 -r epidemic -C mtcp -e incoming\n```\n\nThe same but with ipn addressing scheme and a default endpoint at *23.42*:\n```\n$ dtnd -n 23 -r epidemic -C mtcp -e 42\n```\n\nConfiguration can also happen via a config file. \nFor an example take a look at [examples/dtn7.toml.example](examples/dtn7.toml.example).\n\n### Helpers\n\n- `dtnquery`: Querying information from `dtnd` such as *peers*, *bundles*, *nodeid*, etc.\n- `dtnrecv`: A simple tool to check for new bundles on a specific endpoint, can be used for scripting.\n- `dtnsend`: A simple tool to send a bundle from a provided file or pipe, can be used for scripting.\n- `dtntrigger`: Automatic triggering of external binaries for incoming bundles, useful for advanced scripting.\n\n### Example Applications\n\nA simple DTN echo service can be found under `examples/dtnecho2.rs`. \n\nThis service automatically registers its endpoint and listens for any incoming bundles on the local `/echo` endpoint or for *ipn* addresses on service number `7`. \nEach bundle is sent back to its source with the same payload and lifetime, no delivery report is requested. \n\nThis service can be used together with `examples/dtnping.rs` for connectivity tests.\n\n### Example Use-Cases\n\nUnder `tests/` are several shell scripts for integration tests that also showcase how to use the different command line utilities. \nFurthermore, under `tests/clab` are more complex and dynamic tests that get executed in *Docker* and [*coreemu*](https://github.com/coreemu/core).\nFor pure *docker compose* scenarios you can take a look under `tests/docker`.\n\nMore complex scenarios can be found in the [dtn7 showroom](https://github.com/dtn7/dtn7-showroom).\n\n### Acknowledging this work\n\nIf you use this software in a scientific publication, please cite the following paper:\n\n```BibTeX\n@INPROCEEDINGS{baumgaertner2019bdtn7,\n  author={L. {Baumgärtner} and J. {Höchst} and T. {Meuser}},\n  booktitle={2019 International Conference on Information and Communication Technologies for Disaster Management (ICT-DM)},\n  title={B-DTN7: Browser-based Disruption-tolerant Networking via Bundle Protocol 7},\n  year={2019},\n  volume={},\n  number={},\n  pages={1-8},\n  keywords={Protocols;Browsers;Software;Convergence;Servers;Synchronization;Wireless fidelity},\n  doi={10.1109/ICT-DM47966.2019.9032944},\n  ISSN={2469-8822},\n  month={Dec},\n}\n```\n\n### License\n\nLicensed under either of \u003ca href=\"LICENSE-APACHE\"\u003eApache License, Version 2.0\u003c/a\u003e or \u003ca href=\"LICENSE-MIT\"\u003eMIT license\u003c/a\u003e at your option.\n\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in `dtn7-rs` by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtn7%2Fdtn7-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdtn7%2Fdtn7-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtn7%2Fdtn7-rs/lists"}