mirror of
https://github.com/vacp2p/rfc.vac.dev.git
synced 2026-01-09 14:17:58 -05:00
chore: MD content updates (#7)
* chore: MD content updates * fix: comparison symbol parsing by groups * chore: MD content updates
This commit is contained in:
@@ -2,16 +2,17 @@
|
||||
title: 2/MVDS
|
||||
name: Minimum Viable Data Synchronization
|
||||
status: stable
|
||||
editor: Sanaz Taheri \<sanaz@status.im\>
|
||||
editor: Sanaz Taheri <sanaz@status.im>
|
||||
contributors:
|
||||
- Dean Eigenmann \<dean@status.im\>
|
||||
- Oskar Thorén \<oskarth@titanproxy.com\>
|
||||
- Dean Eigenmann <dean@status.im>
|
||||
- Oskar Thorén <oskarth@titanproxy.com>
|
||||
---
|
||||
- Status: stable
|
||||
- Editor: Sanaz Taheri \<sanaz@status.im\>
|
||||
- Contributors::
|
||||
- Dean Eigenmann \<dean@status.im\>
|
||||
- Oskar Thorén \<oskarth@titanproxy.com\>
|
||||
- Editor: Sanaz Taheri <sanaz@status.im>
|
||||
- Contributors:
|
||||
- Dean Eigenmann <dean@status.im>
|
||||
- Oskar Thorén <oskarth@titanproxy.com>
|
||||
|
||||
|
||||
In this specification, we describe a minimum viable protocol for data synchronization inspired by the Bramble Synchronization Protocol[^1]. This protocol is designed to ensure reliable messaging between peers across an unreliable peer-to-peer (P2P) network where they may be unreachable or unresponsive.
|
||||
|
||||
@@ -89,7 +90,7 @@ A maximum of one payload SHOULD be sent to peers per epoch, this payload contain
|
||||
|
||||
Nodes MAY have two modes with which they can send records: `BATCH` and `INTERACTIVE` mode. The following rules dictate how nodes construct payloads every epoch for any given peer for both modes.
|
||||
|
||||
\> ***NOTE:** A node may send messages both in interactive and in batch mode.*
|
||||
> ***NOTE:** A node may send messages both in interactive and in batch mode.*
|
||||
|
||||
#### Interactive Mode
|
||||
|
||||
@@ -100,11 +101,11 @@ Nodes MAY have two modes with which they can send records: `BATCH` and `INTERACT
|
||||
- When a node receives an `ACK`, the `MESSAGE` is removed from the state for the given peer.
|
||||
- All records that require retransmission are added to the payload, given `Send Epoch` has been reached.
|
||||
|
||||
\<p align="center"\>
|
||||
\<img src="../assets/mvds/interactive.png" /\>
|
||||
\<br /\>
|
||||
<p align="center">
|
||||
<img src="../assets/mvds/interactive.png" />
|
||||
<br />
|
||||
Figure 1: Delivery without retransmissions in interactive mode.
|
||||
\</p\>
|
||||
</p>
|
||||
|
||||
#### Batch Mode
|
||||
|
||||
@@ -117,14 +118,14 @@ Nodes MAY have two modes with which they can send records: `BATCH` and `INTERACT
|
||||
<!-- diagram -->
|
||||
|
||||
|
||||
\<p align="center"\>
|
||||
\<img src="../assets/mvds/batch.png" /\>
|
||||
\<br /\>
|
||||
<p align="center">
|
||||
<img src="../assets/mvds/batch.png" />
|
||||
<br />
|
||||
Figure 2: Delivery without retransmissions in batch mode.
|
||||
\</p\>
|
||||
</p>
|
||||
|
||||
|
||||
\> ***NOTE:** Batch mode is higher bandwidth whereas interactive mode is higher latency.*
|
||||
> ***NOTE:** Batch mode is higher bandwidth whereas interactive mode is higher latency.*
|
||||
|
||||
|
||||
<!-- Interactions with state, flow chart with retransmissions? -->
|
||||
@@ -136,11 +137,11 @@ The record of the type `Type` SHOULD be retransmitted every time `Send Epoch` is
|
||||
|
||||
`Send Epoch` and `Send Count` MUST be increased every time a record is retransmitted. Although no function is defined on how to increase `Send Epoch`, it SHOULD be exponentially increased until reaching an upper bound where it then goes back to a lower epoch in order to prevent a record's `Send Epoch`'s from becoming too large.
|
||||
|
||||
\> ***NOTE:** We do not retransmission `ACK`s as we do not know when they have arrived, therefore we simply resend them every time we receive a `MESSAGE`.*
|
||||
> ***NOTE:** We do not retransmission `ACK`s as we do not know when they have arrived, therefore we simply resend them every time we receive a `MESSAGE`.*
|
||||
|
||||
## Formal Specification
|
||||
|
||||
MVDS has been formally specified using TLA+: \<https://github.com/vacp2p/formalities/tree/master/MVDS\>.
|
||||
MVDS has been formally specified using TLA+: <https://github.com/vacp2p/formalities/tree/master/MVDS>.
|
||||
|
||||
## Acknowledgments
|
||||
- Preston van Loon
|
||||
@@ -155,4 +156,4 @@ Copyright and related rights waived via [CC0](https://creativecommons.org/public
|
||||
## Footnotes
|
||||
|
||||
[^1]: akwizgran et al. [BSP](https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP). Briar.
|
||||
[^2]: \<https://github.com/vacp2p/mvds\>
|
||||
[^2]: <https://github.com/vacp2p/mvds>
|
||||
|
||||
Reference in New Issue
Block a user