IronForce is a new generation hardware- and software-decentralized network
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
5.3 KiB

5 years ago
# IronForest
__IronForest__ _(IF)_ is a decentralized P2P network.
IronForest hardware network has two types of devices: digital (IronForest Digital Device, IFDD) and analog (IronForest Digital Device, IFAD)
3 years ago
_The following description is meant to be read in Typora_
5 years ago
3 years ago
## IronForest tunnels
Devices communicate through tunnels. tunnel is a list of IF nodes' IDs: $ T(a_1, a_n)=[a_1, a_2, \,..., \, a_n] $, where $a_i$ is an id. _Short tunnel_ ($s(T)$) is one of the $min\_tunnels$ shortest paths (by time) between two nodes. Each IF node $X$ has its own list of short tunnels $X.TT$ ($\forall \, T \in X.TT\,\, X\in T$). It is obvious, that if $T(a_1, a_n)_p=A$ and $T(a_1, a_n)_q=B$ , then $T(A, B)=T(a_1,a_n)_{p:q}$. Therefore, if node $X$ has ID of node $Y$ somewhere in its list of tunnels, it knows a tunnel to $Y$.
5 years ago
```mermaid
graph TD;
A --- E --- F --- B;
A---G---B;
E---Z---F;
```
3 years ago
_Here [A, G, B], [A, E, F, B], [A, E, Z, F, B] are tunnels from A to B, but the last one will not probably be short tunnel, because it will highly likely take more time for a packet to reach the $B$ node by this path._
5 years ago
3 years ago
Node $N$ is _known_ to node $B$ if node $B$ has node $N$ in its list of tunnels: $kn(N, B)=\exists T \in N.TT\,:\,B\in T$.
5 years ago
3 years ago
On low-level, a also tunnel has its frequency $T.F$: IFADs retranslate signals on all frequencies from $F_2 \cup \{F_1\}$ and IFDDs set one of their transmitters to the $T.F$ frequency.
5 years ago
3 years ago
#### Building a tunnel
5 years ago
3 years ago
How does node $A$ build a tunnel to an unknown node $B$?
5 years ago
3 years ago
$A$ sends a multicast message to the network. This message consists of type (tunnel request), destination $m.d=B$ and path (list) $m.P$ ($P_0=[A]$) and tunnel (empty for now). When another node $N$ receives message of this type, it appends its id to the path ($m.P+=[N]$) and resends this message either nobody if $N$ is a part of too much tunnels (this number is equal to the number of $F2$ radio modules on the IFDD board) either to all available nodes if node $B$ is not a known node to $N$ (if $!kn(N, B) = \nexists T \in N.TT: B\in T$) and message has no tunnel parameter either only to some nodes. Let's see the second variant more detailed.
5 years ago
3 years ago
So, node $N$ receives a message $m$. If message has not empty tunnel parameter $m.T$, then $N$ remembers tunnel T, sends message to the next node in the tunnel ($m.T_{k+1}, k: m.T_k = N$). If node $B$($m.d$) is known to $N$ ($kn(N, B)$), then:
5 years ago
3 years ago
1. $N$ checks if number of tunnels to $B$ is enough: $TT_2=\{T \in N.TT: B \in T\},\,\,|TT_2|>= tunnel\_num$, if not, then message is resent through all paths
2. $N$ sends message $m$ to $tunnel\_num$ of $TT_2$ ($TT_{2\,[1:tunnel\_num]}$)
5 years ago
3 years ago
$M=[m_1, \,...,\,m_{tunnel\_num}]$ is a list of first $tunnel\_num$ messages that reached B
5 years ago
3 years ago
When message $m_i \in M$ with updated path reaches $B$, $B$ remembers reversed of $m_i.P$ as the tunnel from $B$ to $A$: $T(A, B)=m.P$. $B$ decides frequency $T.F$ of tunnel (for hardware network). It sends a message with this frequency. to $A$ as multicast message using this tunnel. $A$ receives this tunnel and remembers it. Now $kn(A, B) \and kn(B, A)$.
5 years ago
## IronForest Hardware Network
There are two types of IFHN devices: analog devices (IFAD) and digital (IFDD). The analog devices are very cheap, because they are just a electronic circuits with analog components. They just re-translate all the signals instantly, without any delay. Digital devices are more complicated. They decode messages and then resend them with filtering and processing. Digital devices provide spam protection and logic.
3 years ago
IronForest hardware0 network has two frequencies: one (_F1_) for multicast and a frequency range (F2) for tunnels.
5 years ago
## IronForest analog device (IFAD) description
IFADs work as retranslators. Analog devices receive the signal, amplify it and send it further. They do not react on signals weaker then some threshold. But the output strength of the signal is lower then it was when it was send by the previous device. Therefore, a packet will not go far only through IFADs. This also solves the problem of signals circulating through analog network being amplified every time.
## IronForest digital device (IFDD) description
IFDD can be connected to another device or to another network, and it will use available network for overlay.
IFDD have radio transmitters: one for $F_1$ frequency and several transmitters for $F_2$ messages. Transmitters of the second type can be set to any frequency of the $F_2$ range using varicond/varicap.
Digital device receives signal, amplifies it and demodulates. Then signal is processed by a micro-controller (MC):
1. MC checks validity
2. Spam protection (PoW, for example) is done
3. If this is an $F2$ signal, check if it needs resending by this IFDD, resend by radio and overlays if needed
4. If this is an $F1$ signal, process it and resend by radio and overlays
3 years ago
IFDD's MC has a list of known tunnels. If it is clear that the destination of a packet is a known node (known as a part of a tunnel), IFDD will not send packet to all available nodes, it will send it just like through a usual tunnel to this known node.
5 years ago
## Some schemes
![image-20200119194630807](/home/ennucore/.config/Typora/typora-user-images/image-20200119194630807.png)
http://www.diagram.com.ua/list/am-mod.shtml
![Высоколинейный амплитудный модулятор](http://www.diagram.com.ua/li/am-mod1.gif)
http://rtf.sfedu.ru/!rpru/files/upos04.pdf