dtn7-rs

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

Rust implementation of a Daemon for DTN7 Bundle Protocol draft https://tools.ietf.org/html/draft-ietf-dtn-bpbis-23

Plus: * Minimal TCP Convergence Layer Protocol https://tools.ietf.org/html/draft-ietf-dtn-mtcpcl-01 * A simple HTTP Convergence Layer

A similar golang implementation can be found here: https://github.com/dtn7/dtn7-go

The actual BP7 implementation can be found here: https://github.com/dtn7/bp7-rs

Currently a very basic service discovery, MTCP & HTTP CLs, flooding/epidemic/sink-routing and a rest command interface are implemented. Beware, the API is not always idiomatic rust and lacks documentation and tests at the moment. I consider this code to be very unpolished and far from finished. Correct forwarding, administrative records and various other pieces are also not much tested yet. Furthermore, the rest interface is totally undocumented and unfinished :)

Installation

cargo install dtn7

Usage

Daemon

``` $ dtnd -h dtn7-rs 0.6.0 Lars Baumgaertner baumgaertner@cs.tu-darmstadt.de A simple Bundle Protocol 7 Daemon for Delay Tolerant Networking

USAGE: dtnd [FLAGS] [OPTIONS]

FLAGS: -d, --debug Set log level to debug -h, --help Prints help information -V, --version Prints version information

OPTIONS: -C, --cla Sets a custom config file -e, --endpoint ... Registers an application agent for a node local endpoint (e.g. 'incoming' listens on 'dtn://node1/incoming') -i, --interval Sets service discovery interval (0 = deactive) -j, --janitor Sets janitor interval (0 = deactive) -n, --nodeid Sets local node name (e.g. 'dtn://node1') -p, --peer-timeout Sets timeout to remove peer -r, --routing Set routing algorithm: epidemic, flooding, sink -s, --static-peer ... Adds a static peer (e.g. mtcp://192.168.2.1:2342/node2) -w, --web-port Sets web interface port (default = 3000) ```

Helpers

``` $ dtnquery -h dtnquery 0.6.0 Lars Baumgaertner baumgaertner@cs.tu-darmstadt.de A simple Bundle Protocol 7 Query Utility for Delay Tolerant Networking

USAGE: dtnquery [OPTIONS] [SUBCOMMAND]

FLAGS: -h, --help Prints help information -V, --version Prints version information

OPTIONS: -p, --port Local web port (default = 3000)

SUBCOMMANDS: bundles list bundles in node eids list registered endpoint IDs help Prints this message or the help of the given subcommand(s) info General dtnd info nodeid Local node id peers list known peers store list bundles status in store

$ dtnrecv -h dtnrecv 0.4.0 Lars Baumgaertner baumgaertner@cs.tu-darmstadt.de A simple Bundle Protocol 7 Receive Utility for Delay Tolerant Networking

USAGE: dtnrecv [FLAGS] [OPTIONS] --endpoint

FLAGS: -h, --help Prints help information -V, --version Prints version information -v, --verbose verbose output

OPTIONS: -e, --endpoint Specify local endpoint, e.g. '/incoming') -o, --output Write bundle payload to file instead of stdout -p, --port Local web port (default = 3000)

$ dtnsend -h dtnsend 0.6.0 Lars Baumgaertner baumgaertner@cs.tu-darmstadt.de A simple Bundle Protocol 7 Send Utility for Delay Tolerant Networking

USAGE: dtnsend [FLAGS] [OPTIONS] --receiver [infile]

FLAGS: -D, --dry-run Don't actually send packet, just dump the encoded one. -h, --help Prints help information -V, --version Prints version information -v, --verbose verbose output

OPTIONS: -p, --port Local web port (default = 3000) -r, --receiver Receiver EID (e.g. 'dtn://node2/incoming') -s, --sender Sets sender name (e.g. 'dtn://node1')

ARGS: File to send, if omitted data is read from stdin till EOF ```

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.


Unless 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.