From b432a7c7de79351b1b4ccbc42793c559dbb687ad Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Wed, 8 Dec 2021 20:42:48 +0100 Subject: [PATCH] Updated documentation --- docs/manual/_sources/interfaces.rst.txt | 66 ++++++++++++++++++++++-- docs/manual/_sources/whatis.rst.txt | 2 +- docs/manual/examples.html | 2 +- docs/manual/index.html | 1 + docs/manual/interfaces.html | 58 +++++++++++++++++++-- docs/manual/objects.inv | Bin 1805 -> 1811 bytes docs/manual/searchindex.js | 2 +- docs/manual/whatis.html | 2 +- docs/source/interfaces.rst | 66 ++++++++++++++++++++++-- 9 files changed, 186 insertions(+), 13 deletions(-) diff --git a/docs/manual/_sources/interfaces.rst.txt b/docs/manual/_sources/interfaces.rst.txt index 5375fc8..c93211d 100644 --- a/docs/manual/_sources/interfaces.rst.txt +++ b/docs/manual/_sources/interfaces.rst.txt @@ -18,6 +18,62 @@ For a high-level overview of how networks can be formed over different interface types, have a look at the :ref:`Building Networks` chapter of this manual. +.. _interfaces-auto: + +Auto Interface +============== + +The Auto Interface enables communication with other discoverable Reticulum +nodes over UDP. It does not need any functional IP infrastructure like +routers or DHCP servers, but will require at least some sort of switching +medium between peers (a wired switch, a WiFi access point or similar), and +that link-local IPv6 is enabled in your operating system, which should be +enabled by default in almost all OSes. + +.. code:: + + # This example demonstrates a TCP server interface. + # It will listen for incoming connections on the + # specified IP address and port number. + + [[Default Interface]] + type = AutoInterface + interface_enabled = True + outgoing = True + + # You can create multiple isolated Reticulum + # networks on the same physical LAN by + # specifying different Group IDs. + + group_id = reticulum + +If you are connected to the Internet with IPv6, and your provider will route +IPv6 multicast, you can potentially configure the Auto Interface to globally +autodiscover other Reticulum nodes within your selected Group ID. You can specify +the discovery scope by setting it to one of ``link``, ``admin``, ``site``, +``organisation`` or ``global``. + +.. code:: + + [[Default Interface]] + type = AutoInterface + interface_enabled = True + outgoing = True + + # Configure global discovery + + group_id = custom_network_name + discovery_scope = global + + # Other configuration options + + discovery_port = 48555 + data_port = 49555 + +*Please Note!* If you use the Auto Interface, you will need the Python module +``netifaces`` installed on your system. You can install it with ``pip3 install netifaces``. + + .. _interfaces-udp: UDP Interface @@ -28,6 +84,12 @@ private and the internet. It can also allow broadcast communication over IP networks, so it can provide an easy way to enable connectivity with all other peers on a local area network. +*Please Note!* Using broadcast UDP traffic has performance implications, +especially on WiFi. If your goal is simply to enable easy communication +with all peers in your local ethernet broadcast domain, the +:ref:`Auto Interface` performs better, and is just as +easy to use. + The below example is enabled by default on new Reticulum installations, as it provides an easy way to get started and to test Reticulum on a pre-existing LAN. @@ -48,9 +110,7 @@ pre-existing LAN. # The above configuration will allow communication # within the local broadcast domains of all local - # IP interfaces. This is enabled by default as an - # easy way to get started, but you might want to - # consider altering it to something more specific. + # IP interfaces. # Instead of specifying listen_ip, listen_port, # forward_ip and forward_port, you can also bind diff --git a/docs/manual/_sources/whatis.rst.txt b/docs/manual/_sources/whatis.rst.txt index 6d34592..109f057 100644 --- a/docs/manual/_sources/whatis.rst.txt +++ b/docs/manual/_sources/whatis.rst.txt @@ -2,7 +2,7 @@ What is Reticulum? ****************** -Reticulum is a cryptography-based networking stack for wide-area networks built on readily available hardware, and can operate even with very high latency and extremely low bandwidth. +Reticulum is a cryptography-based networking stack for wide-area networks built on readily available hardware, that can operate even with very high latency and extremely low bandwidth. Reticulum allows you to build very wide-area networks with off-the-shelf tools, and offers end-to-end encryption, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable packet acknowledgements and more. diff --git a/docs/manual/examples.html b/docs/manual/examples.html index 713fdf6..895b62a 100644 --- a/docs/manual/examples.html +++ b/docs/manual/examples.html @@ -174,7 +174,7 @@ notifications about announces from relevant destinations.

APP_NAME = "example_utilities" # We initialise two lists of strings to use as app_data -fruits = ["Peach", "Quince", "Date palm", "Tangerine", "Pomelo", "Carambola", "Grape"] +fruits = ["Peach", "Quince", "Date", "Tangerine", "Pomelo", "Carambola", "Grape"] noble_gases = ["Helium", "Neon", "Argon", "Krypton", "Xenon", "Radon", "Oganesson"] # This initialisation is executed when the program is started diff --git a/docs/manual/index.html b/docs/manual/index.html index bf1e177..19af0c1 100644 --- a/docs/manual/index.html +++ b/docs/manual/index.html @@ -87,6 +87,7 @@ to participate in the development of Reticulum itself.

  • Supported Interfaces
      +
    • Auto Interface
    • UDP Interface
    • TCP Server Interface
    • TCP Client Interface
    • diff --git a/docs/manual/interfaces.html b/docs/manual/interfaces.html index 6c96752..a12aa44 100644 --- a/docs/manual/interfaces.html +++ b/docs/manual/interfaces.html @@ -53,12 +53,65 @@ and gives example configurations for the respective interface types.

      For a high-level overview of how networks can be formed over different interface types, have a look at the Building Networks chapter of this manual.

      +
      +

      Auto Interface

      +

      The Auto Interface enables communication with other discoverable Reticulum +nodes over UDP. It does not need any functional IP infrastructure like +routers or DHCP servers, but will require at least some sort of switching +medium between peers (a wired switch, a WiFi access point or similar), and +that link-local IPv6 is enabled in your operating system, which should be +enabled by default in almost all OSes.

      +
      # This example demonstrates a TCP server interface.
      +# It will listen for incoming connections on the
      +# specified IP address and port number.
      +
      +[[Default Interface]]
      +  type = AutoInterface
      +  interface_enabled = True
      +  outgoing = True
      +
      +  # You can create multiple isolated Reticulum
      +  # networks on the same physical LAN by
      +  # specifying different Group IDs.
      +
      +  group_id = reticulum
      +
      +
      +

      If you are connected to the Internet with IPv6, and your provider will route +IPv6 multicast, you can potentially configure the Auto Interface to globally +autodiscover other Reticulum nodes within your selected Group ID. You can specify +the discovery scope by setting it to one of link, admin, site, +organisation or global.

      +
      [[Default Interface]]
      +  type = AutoInterface
      +  interface_enabled = True
      +  outgoing = True
      +
      +  # Configure global discovery
      +
      +  group_id = custom_network_name
      +  discovery_scope = global
      +
      +  # Other configuration options
      +
      +  discovery_port = 48555
      +  data_port = 49555
      +
      +
      +

      Please Note! If you use the Auto Interface, you will need the Python module +netifaces installed on your system. You can install it with pip3 install netifaces.

      +

      UDP Interface

      A UDP interface can be useful for communicating over IP networks, both private and the internet. It can also allow broadcast communication over IP networks, so it can provide an easy way to enable connectivity with all other peers on a local area network.

      +

      Please Note! Using broadcast UDP traffic has performance implications, +especially on WiFi. If your goal is simply to enable easy communication +with all peers in your local ethernet broadcast domain, the +Auto Interface performs better, and is just as +easy to use.

      The below example is enabled by default on new Reticulum installations, as it provides an easy way to get started and to test Reticulum on a pre-existing LAN.

      @@ -76,9 +129,7 @@ pre-existing LAN.

      # The above configuration will allow communication # within the local broadcast domains of all local - # IP interfaces. This is enabled by default as an - # easy way to get started, but you might want to - # consider altering it to something more specific. + # IP interfaces. # Instead of specifying listen_ip, listen_port, # forward_ip and forward_port, you can also bind @@ -384,6 +435,7 @@ beaconing functionality described above.

      Table of Contents

      • Supported Interfaces
          +
        • Auto Interface
        • UDP Interface
        • TCP Server Interface
        • TCP Client Interface
        • diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv index 4dc47fbe95edeb24cad55c209363d1455aec7390..098fb57ce42e18d4a0dbf60baf60c2a74044cabd 100644 GIT binary patch delta 1642 zcmV-w29^1Z4wDX$ynp+=98tsJP|0es9zSBK2t$f+78Qq22}M#yzefV^u)r+A<4ooB zmtUjN-Kwn~CPzKAgAEuV#&`*O?UG}a@zgH>R1`5{X^don6D8xF;CakY9&D6Qj6|H` z9V)4cwQY(N3U(0~DICA!gA7GeoQOlA!ZCsOL@F#|f&VMvPJf)igitI(o#5^@0qjaj zubS~aR&gQ7cROLBc!p$l4RcJ9Dsf1PnIbB9c*;?FOZY$Qtx1^0TeDVsP{Q70xQ4cr z$PA}(f+*dhXKusHNHJ4EW@!Kp*W1v70|aFIqHh?*JevtsmWESfKmew8XWR9HLn9-7qq~7`Cowq zl|;veuK2Oy;aQ^u^gBqGw&3^h9Z>=g{W)u;ld>&@i;b+&$nv>a_M;8gz)I6#R%Sz4;RF*?Q_j&Hb;GAxMmXoN z5JEbLiZ#G40AMIl%JW7fYj;D)<)wiW?8|II1p3B>! z%h$Z`sq#4QYv_$3WU^Dr3`1y0fj>O z5{IC??%ODmV<=8H!9gLM+ATZ*+vD*)N8iUAfvSL#agQL6GdBC@uLBK<8x6(x+B4PtUl0HjQ#+3L9ctYN}D5c zDWu7A7Om=w6=b^Y3z*qA8+u{)J|8TyMSs7-?QHw;cGKt>*m`{lH8RW8_3091brt1` z&IQV)(jERlP~`B){n?@g+Pl)d3#)S2R&bOiNUHPPeJyh!PBMO;nS#Q}^+$>7;ow2e zV^0mG!`(skEIPACu*Bql4fpf83s&h|%X7j=j_7$}ZbS~M51nTrn_DvaP3KD0%zwz* zK~`wWlO7m7@DxW=d&%hsmR@(fHn_)(uoQo^nfj_3YNme$rGg@|w@1KTogFr~{$0a< zHrJ!Ixe-0-bUBV_>BeBkEqsC14=&y{3hnS5u@a`%m1x=K>#N3OT^4#Bz<4uvr-6=8 zsXBSuanP$mYaHI9KmPdhBK^-8M1L={^?KOjok)4f<22oW%YFLN90;Zp;eyF(p+&EJ zg@yx>Sdi|j7zo9v1|3vVB$xQj!!mlH1lI9M59#9paX>FU>`|u0C5yMmWrNLmIGPtQgP1Hl484tm`UkY?$+0g{JtbK)eFXEzjVyNOK+jNAot)#I2Ynv9)FX2?xiLcPhT+~?+T-@vlAhS^`gS@U zGVJ!fXb$@pVnpWf(xF*Wh|rGn7Dr{;24lA0;aQKpt|2{kLams(ix@E z(J_?QvvPir=Kn1$D(JMS41e>J9Vc7kccoBScf%g^s*C@VA-Z-PQJ;uDYh8!69W22< z1~Vt_xV+;-oiaH{e7u&`Ux=a?d~oSgp&jS`S{-!rOY58~{Wq;%pFe0hcjAtV>6dq0 zGda(D{K()Xwstae#RTv-{2sw=hyQi=KP}c@*<%Sp>i_@% delta 1636 zcmV-q2Albl4vh|wynj3|hr{7;sARQRj~}sAgds&Zi;Baigd!=U-y?x{SYVdmai((m z%dgSsZq>FPCPzKAgAE8F#&`+#S|!ISB@(iq7CCrZXU!Sk4*JXk297>PK= zJ5*8?YuOYj6s#gJQaFCc2N{Z{I1z_Jg<}HmiBwp`0{>USn}0ZifKV(#mEi3)4(v)w zuZs8{tGE#4yA4<LOFZ;SDh!6Sjq>It|5mslqvXQhVE9*(Nx)75p6u><}6-Z`I?SzIhes)-rXs!(vQ&cL9SuUlvq6!hq-E|E4Qo4|Z+y$;kr^22R19mw zu7u2ZNz=H5Od)vzO+K;r?x2}MSBw}WoKP`lXiKqI)^BRaBT&wEyqs*FpJt0k=vL>R z5q~?v149l+>}c4PXneV=zkY^%1Ud@A{Q+7jl?76~kg?)n5W^oT2J$)z8d8|;4*7lN zJ@P*(PIW2ui4`iyC~bVPmMZ;3(H3_6Xu!Vlxu_!DmEb&9U+5}Ee}KDSuY0x1Hb>-= zOOxd+TGbCL$aLEmFmrA;?1er1e6YwC{eKF#(e~r*q0ter_4*QO%q&yar%RBvt0-4= zE>JF&?(heKB8Nxr&lWAvzLjn*td+yIf}=D+Ql01SYcmJpB;)6qDOfmj{ZXQt98Baq z_SCR+xVxyHMQ8R3mYDpn;eI}M!780=^PDh}BYK{g8zTqRm(H`0%`F-IrgNogW`AU@ zAS*QGNe_%3c#5N`edO#1wqAF2e&=(v886NB9D(A6&d^6x!iAVkLyum1x=K>!(I!T^4#Dz<4wFrh$&o z#~**TXWUWHyW*cQ7`@Ea>!V0h7~3NvRY`PSH42Sjz}y> zH?Id=F;;^LDk+jn{N`a9Jx~HW@uY_I(EvZ78y?mu)8dlE+vBpq<~$w9{o*jHUzlW? z^R%Sc?gD0#vXy=HGh=>V5}N9ixA`j_GqC6_RF~8q+;HcDpUVUE3#{#~JAWgZ{Qq8EH{=~JN{<^EnBRP#&goGblTsa~f(C^>h=9Tn5@?zqU2^3b`5 zBoK$X_kF6co}$WpVz$C4$@Byv30k*_j-23%C!FekcF`S|*K$}UT3y#rN7Pj-d4Nk+ z?&WP=^wtJhV^tPCS<{#MP2bvfG)^?;Cp7B5=Gdl}vRgOhv0lnnLPd}|-@pkwC4&wn isca_ad5s?#EMn^

          What is Reticulum?

          -

          Reticulum is a cryptography-based networking stack for wide-area networks built on readily available hardware, and can operate even with very high latency and extremely low bandwidth.

          +

          Reticulum is a cryptography-based networking stack for wide-area networks built on readily available hardware, that can operate even with very high latency and extremely low bandwidth.

          Reticulum allows you to build very wide-area networks with off-the-shelf tools, and offers end-to-end encryption, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable packet acknowledgements and more.

          Reticulum is a complete networking stack, and does not need IP or higher layers, although it is easy to utilise IP (with TCP or UDP) as the underlying carrier for Reticulum. It is therefore trivial to tunnel Reticulum over the Internet or private IP networks. Reticulum is built directly on cryptographic principles, allowing resilience and stable functionality in open and trustless networks.

          No kernel modules or drivers are required. Reticulum runs completely in userland, and can run on practically any system that runs Python 3. Reticulum runs well even on small single-board computers like the Pi Zero.

          diff --git a/docs/source/interfaces.rst b/docs/source/interfaces.rst index 5375fc8..c93211d 100644 --- a/docs/source/interfaces.rst +++ b/docs/source/interfaces.rst @@ -18,6 +18,62 @@ For a high-level overview of how networks can be formed over different interface types, have a look at the :ref:`Building Networks` chapter of this manual. +.. _interfaces-auto: + +Auto Interface +============== + +The Auto Interface enables communication with other discoverable Reticulum +nodes over UDP. It does not need any functional IP infrastructure like +routers or DHCP servers, but will require at least some sort of switching +medium between peers (a wired switch, a WiFi access point or similar), and +that link-local IPv6 is enabled in your operating system, which should be +enabled by default in almost all OSes. + +.. code:: + + # This example demonstrates a TCP server interface. + # It will listen for incoming connections on the + # specified IP address and port number. + + [[Default Interface]] + type = AutoInterface + interface_enabled = True + outgoing = True + + # You can create multiple isolated Reticulum + # networks on the same physical LAN by + # specifying different Group IDs. + + group_id = reticulum + +If you are connected to the Internet with IPv6, and your provider will route +IPv6 multicast, you can potentially configure the Auto Interface to globally +autodiscover other Reticulum nodes within your selected Group ID. You can specify +the discovery scope by setting it to one of ``link``, ``admin``, ``site``, +``organisation`` or ``global``. + +.. code:: + + [[Default Interface]] + type = AutoInterface + interface_enabled = True + outgoing = True + + # Configure global discovery + + group_id = custom_network_name + discovery_scope = global + + # Other configuration options + + discovery_port = 48555 + data_port = 49555 + +*Please Note!* If you use the Auto Interface, you will need the Python module +``netifaces`` installed on your system. You can install it with ``pip3 install netifaces``. + + .. _interfaces-udp: UDP Interface @@ -28,6 +84,12 @@ private and the internet. It can also allow broadcast communication over IP networks, so it can provide an easy way to enable connectivity with all other peers on a local area network. +*Please Note!* Using broadcast UDP traffic has performance implications, +especially on WiFi. If your goal is simply to enable easy communication +with all peers in your local ethernet broadcast domain, the +:ref:`Auto Interface` performs better, and is just as +easy to use. + The below example is enabled by default on new Reticulum installations, as it provides an easy way to get started and to test Reticulum on a pre-existing LAN. @@ -48,9 +110,7 @@ pre-existing LAN. # The above configuration will allow communication # within the local broadcast domains of all local - # IP interfaces. This is enabled by default as an - # easy way to get started, but you might want to - # consider altering it to something more specific. + # IP interfaces. # Instead of specifying listen_ip, listen_port, # forward_ip and forward_port, you can also bind