From 604cb25a0274b8cbe59d19d0a72d570002ea87b9 Mon Sep 17 00:00:00 2001 From: decanus Date: Sat, 7 Sep 2019 20:30:08 -0400 Subject: [PATCH 1/8] created doc --- message-relaying.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 message-relaying.md diff --git a/message-relaying.md b/message-relaying.md new file mode 100644 index 0000000..3347d49 --- /dev/null +++ b/message-relaying.md @@ -0,0 +1 @@ +# Message Relaying From c3b01a12f759186b7647682607c313d56a53888a Mon Sep 17 00:00:00 2001 From: decanus Date: Sat, 7 Sep 2019 20:39:39 -0400 Subject: [PATCH 2/8] added abstract --- message-relaying.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/message-relaying.md b/message-relaying.md index 3347d49..de8269c 100644 --- a/message-relaying.md +++ b/message-relaying.md @@ -1 +1,19 @@ # Message Relaying + +> Version: 0.1.0 (Draft) +> +> Authors: Dean Eigenmann + +## Table of Contents + +1. [Abstract](#abstract) + +## Abstract + +In this specification, we describe how nodes relay messages. This includes nodes sending initial messages as well as nodes relaying messages they have received from other nodes. + +## Definitions + +| Term | Definition | +| ----- | ---------- | +| Node | @todo | \ No newline at end of file From 312fd3f52b743b1d5e51e7327e9b58ca64e2db4c Mon Sep 17 00:00:00 2001 From: decanus Date: Tue, 10 Sep 2019 19:20:09 -0400 Subject: [PATCH 3/8] temp --- message-relaying.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/message-relaying.md b/message-relaying.md index de8269c..30b8884 100644 --- a/message-relaying.md +++ b/message-relaying.md @@ -7,6 +7,8 @@ ## Table of Contents 1. [Abstract](#abstract) +2. [Definitions](#definitions) +3. [Flow](#flow) ## Abstract @@ -16,4 +18,10 @@ In this specification, we describe how nodes relay messages. This includes nodes | Term | Definition | | ----- | ---------- | -| Node | @todo | \ No newline at end of file +| Node | @todo | + +## Flow + +There are three modes with which a packet can be sent to peers, they both depend on the message along with the nodes state. + +If a message \ No newline at end of file From 38e6325937bacf076b775ccbf6e4dd400a040c89 Mon Sep 17 00:00:00 2001 From: decanus Date: Wed, 11 Sep 2019 18:35:59 -0400 Subject: [PATCH 4/8] done --- message-relaying.md | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/message-relaying.md b/message-relaying.md index 30b8884..3e09068 100644 --- a/message-relaying.md +++ b/message-relaying.md @@ -8,7 +8,7 @@ 1. [Abstract](#abstract) 2. [Definitions](#definitions) -3. [Flow](#flow) +3. [Relaying](#relaying) ## Abstract @@ -16,12 +16,28 @@ In this specification, we describe how nodes relay messages. This includes nodes ## Definitions -| Term | Definition | -| ----- | ---------- | -| Node | @todo | +| Term | Definition | +| ----------- | --------------------------------------- | +| Origin | The initial sender of any message. | +| Last sender | The last node a message hopped through. | -## Flow + +## Relaying There are three modes with which a packet can be sent to peers, they both depend on the message along with the nodes state. -If a message \ No newline at end of file +A message MUST either contain a `recipient` address or a target `protocol`. + + + +If a message contains a `recipient`, a node MUST initially try and send it to the recipient's address. If a node does not have a direct connection it MAY send it to any number of its peers. + +If a message contains a `protocol`, a node MUST initially try and send it to any peer that supports it. If non of the nodes peers support this protocol, we MAY send it to any number of its peers. + +When sending a message to any peer, a node MUST ensure they are neither the `origin` nor `last sender`. A node SHOULD abstain from flooding a message given it has a more effective manner to route it towards its target. + +## Footnotes +1. - A pull request in the swift implementation that implements this sending logic. + + + From 1f391f322f4e08f786e6af236518e94ac2ce51ad Mon Sep 17 00:00:00 2001 From: decanus Date: Wed, 11 Sep 2019 18:36:14 -0400 Subject: [PATCH 5/8] section --- message-relaying.md | 1 + 1 file changed, 1 insertion(+) diff --git a/message-relaying.md b/message-relaying.md index 3e09068..062aed4 100644 --- a/message-relaying.md +++ b/message-relaying.md @@ -9,6 +9,7 @@ 1. [Abstract](#abstract) 2. [Definitions](#definitions) 3. [Relaying](#relaying) +4. [Footnotes](#footnotes) ## Abstract From 5ef4b8263aebe921d277945708966ac779381e45 Mon Sep 17 00:00:00 2001 From: decanus Date: Wed, 11 Sep 2019 18:38:55 -0400 Subject: [PATCH 6/8] doc --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index ff8de38..b8f2246 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,9 @@ > Ultralight Beam describes a protocol for sending offline messages that will later be broadcasted through relay nodes. This repository contains the specs for [Ultralight Beam](https://ultralightbeam.io), a transport agnostic MANET (Mobile Ad-Hoc Network) for sending arbitrary data. + +## Core + +These specs document core functionality of the Ultralight Beam protocol. + +- [Message Relaying](./message-relaying.md) - The process for sending and relaying messages within Ultralight Beam. From c3d59fbd59126cb1de752f0b2d586576bd16d6ec Mon Sep 17 00:00:00 2001 From: decanus Date: Wed, 11 Sep 2019 18:39:35 -0400 Subject: [PATCH 7/8] rfc --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b8f2246..1b2cd27 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,5 @@ This repository contains the specs for [Ultralight Beam](https://ultralightbeam. These specs document core functionality of the Ultralight Beam protocol. - [Message Relaying](./message-relaying.md) - The process for sending and relaying messages within Ultralight Beam. + +All specs follow [RFC-2119](https://tools.ietf.org/html/rfc2119). \ No newline at end of file From a6796f3644b01d6dc025cb885f5a7fe46a329d1e Mon Sep 17 00:00:00 2001 From: decanus Date: Wed, 11 Sep 2019 18:40:13 -0400 Subject: [PATCH 8/8] versioning --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 1b2cd27..e831f72 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ This repository contains the specs for [Ultralight Beam](https://ultralightbeam.io), a transport agnostic MANET (Mobile Ad-Hoc Network) for sending arbitrary data. +## Status + +Ultralight Beam is under active development, each specification has its own `status` which is reflected through the version number at the top of every document. We use [semver](https://semver.org/) to version these specifications. + ## Core These specs document core functionality of the Ultralight Beam protocol.