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.
This commit is contained in:
		
							parent
							
								
									a4a9a1dd53
								
							
						
					
					
						commit
						02f9c32da7
					
				@ -71,6 +71,61 @@ you want more information, you can read the :ref:`Building Networks<networks-mai
 | 
				
			|||||||
and :ref:`Interfaces<interfaces-main>` chapters of this manual.
 | 
					and :ref:`Interfaces<interfaces-main>` chapters of this manual.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bridging Over the Internet
 | 
				
			||||||
 | 
					=============================================
 | 
				
			||||||
 | 
					Reticulum currently offers two interfaces for connecting nodes over the internet: 
 | 
				
			||||||
 | 
					`TCP <https://markqvist.github.io/Reticulum/manual/interfaces.html#tcp-server-interface>`_ and `I2P <https://markqvist.github.io/Reticulum/manual/interfaces.html#i2p-interface>`_. 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) <https://geti2p.net/en/>`_. 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 <https://i2pd.website/>`_ 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
 | 
					Develop a Program with Reticulum
 | 
				
			||||||
===========================================
 | 
					===========================================
 | 
				
			||||||
If you want to develop programs that use Reticulum, the easiest way to get
 | 
					If you want to develop programs that use Reticulum, the easiest way to get
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user