From 02f9c32da735a9134286013343e10609a9999591 Mon Sep 17 00:00:00 2001 From: 4c3e <97980799+4c3e@users.noreply.github.com> Date: Fri, 1 Apr 2022 23:15:24 -0400 Subject: [PATCH] First draft of internet bridge section Open to any and all criticism here, writing documentation isn't my strong suit. But here is a decent start at explaining the differences between the transports. Also I believe there should be a way to "compile" this markdown to html, not exactly sure how to accomplish that, will try to look into this further in the weekend. --- .../_sources/gettingstartedfast.rst.txt | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/manual/_sources/gettingstartedfast.rst.txt b/docs/manual/_sources/gettingstartedfast.rst.txt index 7c8d79a..d2e32d4 100644 --- a/docs/manual/_sources/gettingstartedfast.rst.txt +++ b/docs/manual/_sources/gettingstartedfast.rst.txt @@ -71,6 +71,61 @@ you want more information, you can read the :ref:`Building Networks` chapters of this manual. +Bridging Over the Internet +============================================= +Reticulum currently offers two interfaces for connecting nodes over the internet: +`TCP `_ and `I2P `_. Each interface offers a different set of features, and Reticulum +users should carefully choose the interface which best suites their needs. + +The ``TCPServerInterface`` allows users to host a node accessible over TCP/IP. This +method is generally faster, lower latency, and more energy efficient than using ``I2PInterface``, however it leaks considerable +metadata about the server host. + +Direct TCP client connections are able to see your node's IP address and may be able +to use this information to determine your location or identity. Adversaries +inspecting your network's internet packets may be able to record packet metadata +like time of transmission and packet size. By default TCP does not encrypt traffic, +so unencrypted Reticulum packets will be transmitted in clear text. Hosting a +node via TCP server also requires a static IP address. + +The ``I2PInterface`` routes messages through the `Invisible Internet Protocol +(I2P) `_. To properly use this interface, users must also run an I2P daemon in +parallel to ``rnsd``. For always-on nodes it is recommended to use `i2pd `_ because it +generally runs more efficiently. + +By default, I2P will fully encrypt all traffic sent over the network, and +obfuscate both the sender's and receiver's IP addresses. Running an I2P node +will also relay other I2P user's encrypted packets, which will use extra +bandwidth and compute power, but also makes timing attacks and other forms of +deep-packet-inspection much more difficult. Similar to RNS, I2P uses cryptographic +public keys as destination addresses, which allows users to host nodes on non-static IPs. + +In general it is recommended to use an I2P node if you are hosting your node +publicly. + +There is a experimental public testnet you can join by adding the following +interfaces to your ``.reticulum/config`` file: + +.. code:: + + # For connecting over TCP/IP: + + [[RNS Testnet Frankfurt]] + type = TCPClientInterface + interface_enabled = yes + outgoing = True + target_host = frankfurt.rns.unsigned.io + target_port = 4965 + + + # For connecting over I2P: + + [[RNS Testnet I2P Node A]] + type = I2PInterface + interface_enabled = yes + peers = ykzlw5ujbaqc2xkec4cpvgyxj257wcrmmgkuxqmqcur7cq3w3lha.b32.i2p + + Develop a Program with Reticulum =========================================== If you want to develop programs that use Reticulum, the easiest way to get