You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 5, 2024. It is now read-only.
- TCP Convergence Layer Protocol Version 4 (`tcpcl`) ([draft-ietf-dtn-tcpclv4-23][dtn-tcpcl-23]), including:
30
+
- WebSocket-based variant
29
31
- Bundle Broadcasting Connector, a generic Broadcasting Interface
30
-
-[rf95modem] based CLA for LoRa PHY by [rf95modem-go]
32
+
-[rf95modem] based CLA for LoRa PHY by [rf95modem-go]
33
+
34
+
At this point, `mtcp` is probably your best bet for reliable data transfer.
31
35
32
36
### Routing
33
-
One of the following routing protocols might be used.
37
+
We have implemented the following routing algorithms:
34
38
35
-
- Delay-Tolerant Link State Routing (DTLSR)
36
39
- Epidemic Routing
37
-
- Probabilistic Routing Protocol using History of Encounters and Transitivity (PRoPHET)
38
-
- Sensor Network specific routing algorithm for Data Mules, [documentation][sensor-network-mule-documentation]
39
40
- Spray and Wait, vanilla and binary
41
+
- Delay-Tolerant Link State Routing (DTLSR)
42
+
- Probabilistic Routing Protocol using History of Encounters and Transitivity (PRoPHET)
43
+
- Sensor Network-specific routing algorithm for Data Mules, [documentation][sensor-network-mule-documentation]
40
44
41
45
42
46
## Software
@@ -51,7 +55,7 @@ One of the following routing protocols might be used.
51
55
52
56
#### From Source
53
57
54
-
Install the [Go programming language][golang], version 1.13 or later.
58
+
Install the [Go programming language][golang], version 1.16 or later.
55
59
56
60
```bash
57
61
git clone https://github.com/dtn7/dtn7-go.git
@@ -64,30 +68,29 @@ go build ./cmd/dtnd
64
68
65
69
### dtnd
66
70
`dtnd` is a delay-tolerant networking daemon.
67
-
It represents a node inside the network and is able to transmit, receive and forward bundles to other nodes.
68
-
A node's neighbors may be specified in the configuration or detected within the local network through a peer discovery.
71
+
It acts as a node in the network and can transmit, receive and forward bundles to other nodes.
72
+
A node's neighbours may be specified in the configuration or detected within the local network through a peer discovery.
69
73
Bundles might be sent and received through a REST-like web interface.
70
-
The features and their configuration is described inside the provided example [`configuration.toml`][dtnd-configuration].
74
+
The features and configuration are described inside the provided example [`configuration.toml`][dtnd-configuration].
71
75
72
76
#### REST API / WebSocket API
73
-
Different interfaces are provided to allow communication from external programs with `dtnd`.
77
+
We provide different interfaces to allow communication from external programs with `dtnd`.
74
78
More precisely: a REST API and a WebSocket API.
75
79
76
-
The simpler REST API allows a client to register itself with an address, receive bundles and create / dispatch new ones.
77
-
This is made by POSTing JSON objects to `dtnd`'s RESTful HTTP server.
78
-
The endpoints and structure of the JSON objects are described in the [documentation][godoc] for the `github.com/dtn7/dtn7-go/agent.RestAgent` type.
80
+
The simpler REST API allows a client to register itself with an address, receive bundles and create/dispatch new ones simply by POSTing JSON objects to `dtnd`'s RESTful HTTP server.
81
+
The endpoints and structure of the JSON objects are described in the [documentation][PkgGoDev] for the `github.com/dtn7/dtn7-go/agent.RestAgent` type.
79
82
80
-
However, a bidirectional communication is possible via the WebSocket API.
83
+
If you need bidirectional communication, you can use the WebSocket API.
81
84
This API sends CBOR-encoded messages.
82
-
The details can be found in the `ws_agent`-files of the `agent` package.
85
+
For details, see the `ws_agent`-files of the `agent` package.
83
86
But one can also simply use it with the `github.com/dtn7/dtn7-go/agent.WebSocketAgentConnector`, which implements a client.
84
87
85
88
### dtn-tool
86
-
A ready-to-use program that utilizes the WebSocket API mentioned above is `dtn-tool`, a _swiss army knife_ for bundles.
89
+
`dtn-tool` is a _swiss army knife_ for bundles and uses the WebSockets API.
87
90
88
91
It allows the simple creation of new bundles, written to a file or the stdout.
89
-
Furthermore, one can print out bundles as a human / script readable JSON object.
90
-
To exchange bundles, `dtn-tool`might_watch_ a directory and send all new bundle files to the corresponding `dtnd` instance.
92
+
Furthermore, one can print out bundles as a human/machine-readable JSON object.
93
+
To exchange bundles, `dtn-tool`may_watch_ a directory and send all new bundle files to the corresponding `dtnd` instance.
91
94
In the same way, incoming bundles from `dtnd` are stored in this directory.
92
95
93
96
```
@@ -114,28 +117,28 @@ Usage of ./dtn-tool create|exchange|ping|show:
114
117
115
118
116
119
## Go Library
117
-
Multiple parts of this software are usable as a Go library.
118
-
Those libraries are available within the `pkg`directory.
120
+
Most components of this software are usable as a Go library.
121
+
Those libraries are available within the `pkg`-directory.
119
122
120
-
For example, the `bpv7`package contains code for bundle modification, serialization and deserialization and would most likely the most interesting part.
121
-
If you are interested in working with this code, check out the [documentation][godoc].
123
+
For example, the `bpv7`-package contains code for bundle modification, serialization and deserialization and would most likely be the most interesting part.
124
+
If you are interested in working with this code, check out the [documentation][PkgGoDev].
122
125
123
126
124
127
## Contributing
125
-
Contributions will receive warmhearted welcome.
128
+
We warmly welcome any contribution.
126
129
127
-
[Gofmt][gofmt] must be used for formatting the source.
128
-
Further inspection of the code via [golangci-lint][golangci-lint] is highly recommended.
130
+
Please format your code using [Gofmt][gofmt].
131
+
Further inspection of the code via [golangci-lint][golangci-lint] is highly recommended, our CI-pipeline includes a `golangci-lint`-action.
129
132
130
-
As a development environment you may, of course, use whatever you personally like best.
131
-
However, we have had good experience with [GoLand][goland], especially because of the size of the project.
133
+
As a development environment, you may, of course, use whatever you personally like best.
134
+
However, we have had a good experience with [GoLand][goland], especially because of the size of the project.
132
135
133
136
Assuming you have a supported version of the [Go programming language][golang] installed, just clone the repository and install the dependencies as documented in the _Installation, From Source_ section above.
134
137
135
-
Please document your changes both in good commit messages and within the [CHANGELOG.md][CHANGELOG.md] file.
138
+
Please document your changes in your commit messages and the [CHANGELOG.md][CHANGELOG.md] file.
136
139
137
-
Also, an attempt is made to be [REUSE][reuse] compliant.
138
-
For automatic copyright header generation, the `contrib/reuse/reuse-headers.py`script exists.
140
+
Also, we attempt to be [REUSE][reuse] compliant.
141
+
You can use the `contrib/reuse/reuse-headers.py`-script for automatic copyright header generation.
139
142
140
143
### OS-specific
141
144
#### macOS
@@ -145,7 +148,7 @@ Installing the [Go programming language][golang] via [brew][brew], should solve
145
148
## License
146
149
147
150
This project's code is licensed under the [GNU General Public License version 3 (_GPL-3.0-or-later_)][license-gpl3].
148
-
To simplify the copyright stuff, the [REUSE][reuse]tool is used.
151
+
We use the [REUSE][reuse]-tool to simplify the copyright stuff.
149
152
150
153
151
154
[CHANGELOG.md]: CHANGELOG.md
@@ -157,7 +160,7 @@ To simplify the copyright stuff, the [REUSE][reuse] tool is used.
0 commit comments