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 4dc47fb..098fb57 100644 Binary files a/docs/manual/objects.inv and b/docs/manual/objects.inv differ diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index 98f984f..eb072c0 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["examples","gettingstartedfast","index","interfaces","networks","reference","understanding","using","whatis"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["examples.rst","gettingstartedfast.rst","index.rst","interfaces.rst","networks.rst","reference.rst","understanding.rst","using.rst","whatis.rst"],objects:{"RNS.Destination":{announce:[5,1,1,""],app_and_aspects_from_name:[5,1,1,""],clear_default_app_data:[5,1,1,""],create_keys:[5,1,1,""],decrypt:[5,1,1,""],deregister_request_handler:[5,1,1,""],encrypt:[5,1,1,""],full_name:[5,1,1,""],get_private_key:[5,1,1,""],hash:[5,1,1,""],hash_from_name_and_identity:[5,1,1,""],load_private_key:[5,1,1,""],register_request_handler:[5,1,1,""],set_default_app_data:[5,1,1,""],set_link_established_callback:[5,1,1,""],set_packet_callback:[5,1,1,""],set_proof_requested_callback:[5,1,1,""],set_proof_strategy:[5,1,1,""],sign:[5,1,1,""]},"RNS.Identity":{CURVE:[5,2,1,""],KEYSIZE:[5,2,1,""],TRUNCATED_HASHLENGTH:[5,2,1,""],decrypt:[5,1,1,""],encrypt:[5,1,1,""],from_bytes:[5,1,1,""],from_file:[5,1,1,""],full_hash:[5,1,1,""],get_private_key:[5,1,1,""],get_public_key:[5,1,1,""],get_random_hash:[5,1,1,""],load_private_key:[5,1,1,""],load_public_key:[5,1,1,""],recall:[5,1,1,""],recall_app_data:[5,1,1,""],sign:[5,1,1,""],to_file:[5,1,1,""],truncated_hash:[5,1,1,""],validate:[5,1,1,""]},"RNS.Link":{CURVE:[5,2,1,""],ESTABLISHMENT_TIMEOUT_PER_HOP:[5,2,1,""],KEEPALIVE:[5,2,1,""],get_remote_identity:[5,1,1,""],identify:[5,1,1,""],inactive_for:[5,1,1,""],no_inbound_for:[5,1,1,""],no_outbound_for:[5,1,1,""],request:[5,1,1,""],set_packet_callback:[5,1,1,""],set_remote_identified_callback:[5,1,1,""],set_resource_callback:[5,1,1,""],set_resource_concluded_callback:[5,1,1,""],set_resource_started_callback:[5,1,1,""],set_resource_strategy:[5,1,1,""],teardown:[5,1,1,""]},"RNS.Packet":{ENCRYPTED_MDU:[5,2,1,""],PLAIN_MDU:[5,2,1,""],resend:[5,1,1,""],send:[5,1,1,""]},"RNS.PacketReceipt":{get_rtt:[5,1,1,""],get_status:[5,1,1,""],set_delivery_callback:[5,1,1,""],set_timeout:[5,1,1,""],set_timeout_callback:[5,1,1,""]},"RNS.RequestReceipt":{get_progress:[5,1,1,""],get_request_id:[5,1,1,""],get_response:[5,1,1,""],get_response_time:[5,1,1,""],get_status:[5,1,1,""]},"RNS.Resource":{advertise:[5,1,1,""],cancel:[5,1,1,""],get_progress:[5,1,1,""]},"RNS.Reticulum":{MTU:[5,2,1,""],should_use_implicit_proof:[5,1,1,""],transport_enabled:[5,1,1,""]},"RNS.Transport":{PATHFINDER_M:[5,2,1,""],deregister_announce_handler:[5,1,1,""],has_path:[5,1,1,""],hops_to:[5,1,1,""],next_hop:[5,1,1,""],next_hop_interface:[5,1,1,""],register_announce_handler:[5,1,1,""],request_path:[5,1,1,""]},RNS:{Destination:[5,0,1,""],Identity:[5,0,1,""],Link:[5,0,1,""],Packet:[5,0,1,""],PacketReceipt:[5,0,1,""],RequestReceipt:[5,0,1,""],Resource:[5,0,1,""],Reticulum:[5,0,1,""],Transport:[5,0,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","attribute","Python attribute"]},objtypes:{"0":"py:class","1":"py:method","2":"py:attribute"},terms:{"0":[0,3,5,6,7,8],"00":6,"000":[],"00000000":6,"00000100":6,"00000111":6,"01":[6,7],"01010000":6,"02":7,"05":0,"07":7,"1":[0,3,5,6,7],"10":[0,3,6,7],"100":[0,6],"1000":[0,6],"1024":0,"11":6,"115200":[3,7],"12":3,"1200":6,"125":3,"125000":3,"127":3,"128":[5,6,8],"13":7,"14":6,"141":[],"15":[3,6],"150":[3,7],"150m":3,"151":6,"16":[3,7],"18":6,"180":6,"182":[],"2":[0,3,6,7],"20":[0,3,6,7],"200":[3,7],"2000000":[],"205":[],"211":[],"237":[6,8],"24":3,"240":[],"25":[0,2,8],"255":3,"256":[5,6],"270":6,"2f":0,"3":[0,6,7,8],"323":[],"33":6,"34":6,"360":5,"3600":0,"37":7,"37428":7,"38":7,"383":5,"3e12fc71692f8ec47bc5":1,"4":[6,7],"409":[],"4242":[3,7],"430":6,"45":0,"469":7,"477":[5,6],"4965":7,"5":[0,3,5,6],"500":[5,6,8],"512":5,"55":3,"56b115c30cd386cad69c":7,"60":0,"600":3,"62":[6,8],"7":[3,6],"72":3,"77":6,"7ca6f4e4dc26ae329e61":[],"8":[0,3,7],"80":[5,6],"8001":3,"80e29bf7cccaf31431b3":6,"83":6,"86":[],"867":3,"867200000":3,"868":6,"88":3,"9":7,"900":6,"9382f334de63217a4278":7,"95":6,"abstract":6,"break":[5,6,8],"byte":[0,5,6,7,8],"case":[1,3,4,6,7],"class":[0,2,8],"default":[0,1,3,4,5,6,7],"do":[0,1,3,5,6,7,8],"float":[0,5],"function":[0,1,2,3,4,5,8],"import":[0,1,4,6],"int":0,"long":[0,3,6],"new":[0,3,4,5,6],"public":[0,2,5],"return":[0,5],"short":6,"static":5,"throw":[],"true":[0,3,5,7],"try":[0,2],"while":[0,4,5,6,8],A:[0,1,3,4,5,6,8],And:0,As:[4,5,6,8],At:[4,6],Be:[5,7],But:6,By:[0,3,5,6],For:[1,3,4,5,6,8],IN:[0,5],If:[0,1,3,4,5,6,7,8],In:[0,1,3,4,5,6,7,8],It:[0,1,3,5,6,8],No:[6,8],On:[0,7],One:5,Or:[3,6],That:6,The:[0,1,2,3,4,5,8],Then:1,There:[4,6,8],These:[3,6,7],To:[0,1,3,4,6,7,8],Will:5,With:[2,3,4,6,7],_:6,__:6,______:6,_______:6,________:6,________________:6,__init__:0,__main__:0,__name__:0,_exit:0,ab:0,abil:1,abl:[0,4,5,6,7],about:[0,1,4,5,6],abov:[1,3,6],absolut:[],accept:[5,6],accept_al:[0,5],accept_app:5,accept_non:5,access:[5,6,7],accord:6,accordingli:0,acheiv:6,achiev:[5,6],acknowledg:8,across:4,act:[5,6],action:0,activ:[0,1,5,6],actor:6,actual:[0,1,3,6],ad:[0,4,5,8],adapt:4,add:[0,1,3,4],add_argu:0,addit:[6,8],addr1:6,addr2:6,address:[0,3,4,5,6,8],adher:5,administr:7,adress:[0,4,5,8],advantag:5,advertis:[0,5],advis:6,ae:[6,8],after:[0,4,6,7],again:[1,6],against:6,agent:6,agnost:[4,6],agnostic:6,aim:[2,6],air:8,airtim:3,aliv:[5,6],all:[0,2,3,4,5,6,7,8],alloc:7,allow:[0,1,3,4,5,6,7,8],allow_al:[0,5],allow_list:5,allow_non:5,allowed_list:5,almost:6,along:[4,6],alreadi:[0,4,6],also:[0,1,3,4,5,6,7,8],alter:[3,6],altern:[0,3,7],although:8,alwai:[5,6,7],amateur:[3,8],amet:[],amount:[3,4,5,6,8],an:[0,1,3,4,5,6,7,8],android:2,ani:[0,1,3,4,5,6,7,8],announc:[2,5],announce_handl:0,announced_ident:[0,5],announceloop:0,announcesampl:0,anonym:[4,5,6,8],anoth:[1,5,6,7],answer:[6,7],anyon:[0,4,5,6],anyth:[3,6],anywher:0,apart:6,api:[1,2,6,8],apk:1,app:[0,1,5,6],app_and_aspects_from_nam:5,app_data:[0,5],app_nam:[0,5],app_timeout:0,append:[0,6],appli:6,applic:[0,5,6,7],approach:7,approv:6,approxim:6,ar:[0,1,3,4,5,6,7,8],arbitrari:[5,6],arbritrari:8,area:[3,4,8],arg:0,argon:0,argpars:0,argument:[0,5,7],argumentpars:0,around:6,arriv:[0,6],ask:[0,5],aspect:[0,5,6],aspect_filt:[0,5],assign:[6,7],associ:[1,5,6],assum:[3,6],asymmetr:8,attached_interfac:[],attempt:5,attribut:5,audit:8,authent:[5,6,8],author:6,auto:[5,6],auto_compress:5,autoconfigur:8,autom:6,automat:[0,3,4,5,6,7,8],autonom:[4,6],autoomat:0,avail:[0,1,3,4,6,7,8],availadbl:[],averag:6,avoid:[6,7],awai:[0,4,6,7],awar:6,ax25kissinterfac:3,ax:[2,8],b:[0,4],back:[0,6,8],background:1,backhaul:4,band:6,bandwidth:[3,4,6,8],bare:0,barrier:6,base:[2,3,4,5,6,7,8],basi:[5,6,8],basic:[0,1,2],baud:[3,6],beacon:3,becaus:[4,6],becki:0,becom:[0,4],been:[0,3,4,5,6,8],befor:[0,5,6],begin:[0,5],begun:5,behind:6,being:[3,5,6],belief:6,below:[1,3],benefici:7,best:[1,6,8],beta:8,between:[0,4,5,6],bgp:6,bi:6,bidirect:6,billion:4,bin:7,binari:[0,2],bind:3,bit:[5,6,8],blob:[0,6],board:8,boot:7,both:[3,4,5,6,8],bp:6,bridg:2,briefli:6,broadcast:[1,2,3,5,6],broadcast_destin:0,broadcastloop:0,brought:7,buffer:3,bug:8,build:[0,1,2,3,6,8],built:[1,6,8],bundl:0,c:[0,4,6],cabl:4,cad:6,calcul:[5,6],call:[0,4,5,6,8],callabl:5,callback:[0,5],callsign:3,can:[0,1,2,3,4,5,6,7],cancel:5,candid:4,cannot:0,capac:6,carambola:0,care:[5,8],carri:[5,6],carrier:[4,8],caution:3,caveat:2,cb:6,cbc:8,cd:1,cdma:3,censor:6,censorship:6,central:[4,6],certain:[0,3,4,6],challeng:6,chang:[0,1,5,6,7,8],channel:[0,3,4,6,8],channelarg:0,chapter:[1,3,4,6,8],charact:0,characterist:6,cheap:6,check:[0,1,5],checksum:[5,8],choos:[0,3],chose:6,chosen:4,chunk:0,ciphertext:5,ciphertext_token:5,cl:0,clear:[0,5,6],clear_default_app_data:5,clear_screen:0,client:[0,1,2,5],client_connect:0,client_disconnect:0,client_ident:0,client_loop:0,client_packet_receiv:0,client_request:0,clone:1,close:[0,5],closed_callback:5,closer:6,cluster:6,code:[1,2,3,6],codingr:3,com:[0,1],combin:[4,6],come:[1,6],command:[0,1,7],comment:3,common:[3,6],commun:[0,1,3,4,5,6,7,8],compat:[5,6],compil:1,complet:[0,1,4,5,6,8],complex:6,compon:6,compos:6,compress:[0,5,6],comput:[1,6,8],concaten:5,concept:[2,6],conclud:[0,5],concurr:[6,7],condit:6,config:[0,1,4,7],configarg:0,configdir:5,configpath:0,configur:[0,1,2,3,4,5,6,8],confirm:[6,8],conjunct:3,connect:[0,1,3,4,5,6,7,8],consequ:[],consid:[3,6,8],consist:6,constant:[5,6],construct:6,contact:6,contain:[0,4,5,6],content:[4,7],context:6,control:[0,3,4,5,6],conveni:0,convent:0,converg:2,coordin:[4,5,6,8],core:[4,6,8],correct:[0,6],correctli:0,correspond:6,cost:[6,8],could:[0,4,5,6,8],count:6,counter:0,cours:3,cover:8,coverag:4,cpu:0,creat:[0,2,3,5,6,7],create_kei:5,create_receipt:[0,5],creation:6,creator:6,critic:6,cryptograph:[4,8],cryptographi:[1,6,8],ctrl:0,cull:5,current:[0,2,3,5,6],current_download:0,current_filenam:0,curv:[4,5,6,8],curve25519:[4,5,6,8],custom:[5,6],d:[4,6],daemon:[5,7],dai:[4,6],data:[0,3,4,5,6,8],databit:[3,7],date:[0,1],db:0,dbm:[0,3],debian:[6,7],debug:[],decai:6,decid:[4,5,6],decod:0,decrypt:[5,6],dedic:6,def:0,default_timeout:[],defin:[0,3,6],definit:6,degrad:4,delai:6,deliv:[0,5],deliveri:[0,5,8],demand:5,demonstr:[0,3],depend:[1,4,7],deploi:6,deregist:5,deregister_announce_handl:5,deregister_request_handl:5,deriv:[6,8],describ:[3,5,6],descript:[0,7],design:[4,6,8],desir:[0,6],destin:[0,1,2,4,7],destination_1:0,destination_2:0,destination_clos:0,destination_hash:[0,5,7],destination_hexhash:0,detail:[0,1,2,5,7,8],detect:0,determin:[5,6],dev:[3,7],develop:[2,6,8],devic:[1,2,3,4,5,6,7],dh:5,did:0,differ:[0,1,3,4,5,6,7,8],diffi:[4,6,8],digit:[6,8],dir:0,direct:[0,4,5,6],directli:[3,5,6,7,8],directori:[0,7],disabl:3,disable_encrypt:[],disappear:[],discard:6,disconnect:0,discoveri:[6,7],discrimin:4,discuss:6,disk:[0,5],displai:[0,6],distanc:6,distinct:[3,6],distribut:[0,1,4,5,6,7],divmod:0,document:6,doe:[0,1,2,4,5,6],doesn:3,dolor:[],domain:[1,3],don:[0,1,4],done:[0,1,4,6],dori:4,dot:[6,7],down:0,downgrad:[],download:0,download_began:0,download_conclud:0,download_finish:0,download_start:0,download_tim:0,driver:[7,8],droid:1,drop:6,due:4,duplex:[6,8],dynam:7,e:[0,4],each:[0,4,6],earlier:6,eas:6,easi:[3,6,7,8],easier:[1,4,7],easiest:[1,6],easili:[6,8],eca6f4e4dc26ae329e61:7,ecdh:[6,8],echo:[1,2,7],echo_destin:0,echo_request:0,ed25519:[6,8],edit:1,effici:[0,3,6,8],ei:0,either:[3,4,6],elaps:3,elif:0,ellipt:[4,5,6,8],els:[0,4,6],emploi:6,emptor:2,emul:1,enabl:[3,4,5,7],enable_transport:6,encapsul:[3,8],encod:0,encrypt:[0,1,4,5,6,8],encrypted_mdu:5,encryptionless:[],end:[0,4,5,6,8],endless:3,endpoint:[0,4,5,6],engin:[],enough:1,ensur:6,enter:0,entir:[4,6],entiti:6,entri:[0,6],enumer:0,environ:[1,6],environment:6,environmentlogg:6,ephemer:[4,5,6,8],equal:[4,6],equip:[4,6],equival:3,equl:[],error:0,essenti:[1,6],establish:[0,5,8],established_callback:5,establishment_timeout_per_hop:5,etc:7,eth0:3,ethernet:[1,4,6,8],even:[4,6,7,8],everi:[0,3,4,5,6],everyon:[4,6],everyth:[0,4,6],evolv:4,exact:6,exactli:[5,6],exampl:[1,2,3,5,6,7,8],example_util:[0,7],exampleannouncehandl:0,exce:0,except:[0,6],exchang:[4,5,6,8],execstart:7,execut:[0,1,5,7],exhaust:6,exist:[0,1,3,6,8],exit:[0,1,5,7],exit_handl:0,expand:6,expect:[0,5,6,7],experi:[1,6],experiment:8,explain:5,explan:6,explicit:5,explicitli:[],explor:[0,6,8],expos:[3,5],extend:[0,1,6],extern:[3,5,8],extra:[1,3,4],extrem:8,f:1,fa7ddfab5213f916dea:6,face:1,fact:[6,8],factor:3,fail:[0,5],failed_callback:[0,5],fals:[0,3,5],far:[4,6],fast:2,fastest:3,featur:[6,8],feed:5,feedback:0,fernet:8,few:[1,4,6,7,8],field:6,file:[0,1,4,5,6,7,8],file_resourc:0,file_s:0,filelist:0,filelist_data:0,filelist_receiv:0,filelist_timeout_job:0,filenam:0,filetransf:[1,2,5],filter:[0,4,6],find:[4,6],firmwar:6,first:[0,1,5,6],fit:0,five:0,fix:[2,6],flag:[5,6],flow:[3,4],flow_control:3,flush:0,folder:1,follow:[0,1,3,6,7,8],forcibl:5,foreground:1,foremost:8,form:[3,4,5,6],format:[0,2,8],forth:0,forward:[3,5,6,8],forward_ip:3,forward_port:3,found:[0,1,4,6,7],four:4,frame:3,frankfurt:7,free:8,frequenc:[3,6],friendli:8,from:[0,1,3,4,5,6,7,8],from_byt:5,from_fil:5,fromhex:0,fruit:0,ftdi_ft230x_basic_uart_43891ckm:7,full:[0,3,5,6,7,8],full_hash:5,full_nam:[5,7],fulli:[6,8],funcion:5,fundament:6,further:[1,2],futur:[4,6],g:0,ga:0,gatekeep:6,gatewai:4,gen:[],gener:[0,4,5,6,8],generalis:8,geograph:4,get:[0,2,3,5,8],get_packet_rssi:0,get_packet_snr:0,get_private_kei:5,get_progress:[0,5],get_public_kei:5,get_random_hash:[0,5],get_remote_ident:[0,5],get_request_id:5,get_respons:5,get_response_tim:5,get_rtt:[0,5],get_statu:5,gi:0,gigabyt:8,gipsum:[],git:1,github:[0,1],give:[3,6],given:[4,6],global:[0,4,8],go:[0,1,6],goal:2,good:[4,6],got:0,got_respons:0,govern:6,grape:0,great:6,greater:6,greatli:3,group:[5,6],grow:4,growth:2,guarante:6,guid:[1,5,6],h:[1,6,7],ha:[0,3,4,5,6,8],had:6,half:[6,8],hand:[0,1],handheld:6,handl:[0,4,5,6,7,8],handler:[0,5],happen:[0,5],hardlin:4,hardwar:[3,4,5,6,8],has_path:[0,5],hasattr:0,hash:[0,1,5,6,7],hash_from_name_and_ident:5,hashmap:0,have:[0,1,3,4,5,6,7],hazard:5,header:6,header_1:6,header_2:6,header_typ:[],hear:6,heard:[5,6],helium:0,hellman:[4,6,8],help:[0,4,6,7,8],her:4,here:[0,1,3,6,7],hexadecim:[0,6,7],high:[3,6,8],higher:[6,8],highli:6,hill:4,hint:0,hit:0,hmac:8,hoc:8,hold:[5,6],home:4,homebrew:3,hop:[4,5,6,7,8],hops_to:5,host:[0,6,7,8],hostnam:3,hour:0,how:[0,3,4,6,8],howev:[4,6],http:[0,1],human:[0,5],i:0,id:[3,5,6,7],id_callsign:3,id_interv:3,idea:6,ident:[0,2,8],identif:[2,3,8],identifi:[0,3,5,6],identify:6,identifyexampl:0,ie:[],if00:7,ifconfig:7,ignor:[5,6],illustr:4,immedi:[1,7],impact:6,implement:[0,4,5,6,8],implicit:[5,6],improv:[2,3],inactive_for:5,inbound:5,includ:[0,2,3,5,6],incom:[0,3,5],incompat:[5,6],increas:3,incur:3,indefinit:6,independ:5,independt:8,index:[0,1,2],indirectli:6,individu:6,inevit:6,infer:6,info:[5,6],inform:[0,1,2,4,5,6],infrastructur:[4,6],ingo:5,initi:[0,4,5,6,8],initialis:[0,5,7],input:0,insert:6,inspect:4,instal:[1,3,4,7],instanc:[0,5,7],instanti:5,instead:[0,3,6,7],integr:[4,6],intend:[4,6],intention:6,inter:5,interact:[0,1,5,6],interconnect:2,interest:6,interfac:[0,1,2,4,5,6,7],interface_en:[3,7],intermitt:3,intern:[3,5,6],internet:[1,2,3,6,8],interv:[3,5],intiat:0,introduc:6,introduct:2,intuit:8,invalid:[0,5],investig:4,involv:4,io:[1,7],ip:[3,6,8],ipsum:[],is_connected_to_shared_inst:0,is_request:[],is_respons:[],isdir:0,isfil:0,island:4,ism:6,its:[5,6],itself:[2,6],iv:8,job:0,join:[0,6],just:[0,4,6,8],k:0,kb:7,kbp:6,keep:[0,4,5,6,7,8],keepal:[5,6],kei:[0,2,4,5,8],kept:[3,4,5,6],kernel:[7,8],keyboardinterrupt:0,keyerror:5,keypair:6,keysiz:5,keystor:4,khz:3,ki:0,kill:5,kilomet:6,kind:[3,4,6],kiss:[2,7],kiss_fram:3,kissinterfac:[3,7],know:[0,4,5,6],knowledg:[4,6],known:[0,5,6],krypton:0,lack:6,laid:6,lan:3,larg:[0,4,6],larger:6,laser:3,last:[0,3,5],last_unit:0,latenc:[6,8],later:[0,1],latest:[0,1],latest_client_link:0,launch:1,lavg:6,layer:[3,4,6,8],lead:6,learn:[0,1,6],least:[6,8],leav:[4,6],ledger:6,left:[5,6],len:0,length:[0,5],less:[3,6,8],let:[0,4,6,7],level:[3,6],libffi:1,librari:1,licens:6,light:[],like:[1,3,5,6,7,8],limit:6,line:[0,1,4,6,8],link:[2,3,4,8],link_clos:0,link_establish:0,linkexampl:0,linux:[1,6],list:[0,5,6,8],list_deliv:0,list_fil:0,list_packet:0,list_receipt:0,list_timeout:0,listdir:0,listen:[0,3,6],listen_ip:3,listen_port:3,littl:6,lki:6,lkr:6,ll:[0,1,8],ln:[1,7],load:[0,5,7],load_private_kei:5,load_public_kei:5,local:[0,1,3,4,5,6,7,8],locat:[1,4,6,7],log:0,log_error:0,log_info:0,loglevel:[0,5],longer:[0,4,6],longest:3,look:[0,1,3,6,7],loop:0,lora:[1,2,6,8],lorawan:6,lorem:[],lot:6,low:[3,4,6,8],lxmf:1,m:[0,6,7],mac:6,machin:6,made:[5,6],mai:[3,6],main:0,mainli:4,maintain:6,make:[1,6,7],malici:6,manag:[1,5],mani:[0,1,3,4,6,7,8],manipul:6,manual:[0,1,3,4,5,7],mark:6,markqvist:[0,1],master:[0,5],match:[0,3],maximum:[5,6],mcu:6,mdu:0,mean:[6,7],measur:6,mechan:[2,3],medium:[4,6,8],member:4,memori:6,mention:6,menu:0,menu_mod:0,mesh:[4,8],messag:[0,1,5,6,7],messeng:6,metavar:0,method:[0,5,6],methodolog:[6,7],mhz:[3,6],mi:0,microcontrol:6,microwav:6,might:[3,4,6,7],millisecond:[0,7],mind:[4,8],minim:[2,6],minimalsampl:0,minimum:[0,4,6],minut:[0,1,6],mix:[3,4,7],mode:[0,1,6,8],modem:[3,4,5,6,8],modul:[0,1,3,6,7,8],moment:[6,8],monitor:6,moon:0,mor:[],more:[1,3,4,5,6,8],most:[1,3,4,6,7,8],motiv:2,move:1,mqtt:4,mtu:[5,6,8],much:6,multi:[6,7,8],multilater:6,multipl:[0,4,6,7],multipoint:6,must:[0,1,4,5,6],mw:3,my:6,mycal:3,n:0,name:[0,2,4,5],namespac:0,nano:1,narg:0,natur:3,necesarri:4,necessari:[1,5,6],necessarili:6,need:[0,1,2,3,4,6,7,8],neglig:6,neither:6,neon:0,netifac:[1,3],network:[0,3,5,6,7,8],never:[3,5],newer:6,newest:6,newli:[4,6],next:[1,4,5,6],next_hop:5,next_hop_interfac:5,nicknam:6,no1cll:3,no_inbound_for:5,no_outbound_for:5,nobl:0,noble_ga:0,noble_gas:0,node:[2,4,7,8],nomad:1,nomadnet:1,non:[5,6],none:[0,3,5,6,7],normal:0,notat:[6,7],note:[0,3,6,7],noth:8,notic:6,notif:[0,5],now:[0,1,4,6,7],nt:0,num:0,number:[0,1,3,4,5,6,7],object:5,obtain:6,occur:8,off:[6,8],offer:[1,2,3,5,6],often:[4,6,7],oganesson:0,old:6,onc:[0,4,5,6,8],one:[0,1,3,4,5,6,7,8],oneself:6,onli:[0,1,3,4,5,6,7,8],onlin:6,open:[0,3,5,6,7,8],openmodem:[3,8],openssl:1,oper:[4,5,6,8],opt:6,optic:8,optim:4,option:[0,1,3,4,5,7],order:7,orem:[],organis:4,orient:6,origin:[0,4,6],original_hash:[],os:[0,6,7,8],ospf:6,other:[1,3,4,5,6,7],otherwis:[5,6],our:[0,6],out:[0,3,4,5,6,8],outbound:5,outgo:[0,3,5,6,7],outli:4,outlier:4,outlin:[1,6],output:7,outward:6,over:[0,1,2,3,5,6,7,8],overal:6,overcom:6,overhead:[3,6],overrid:0,overview:[2,3,6],own:[0,1,4,5,6],owner:[],p:[0,6],pack:0,packag:1,packb:0,packet:[0,1,2,3,4,7,8],packet_callback:0,packet_deliv:0,packet_hash:0,packet_receipt:[0,5],packet_timed_out:0,packet_typ:[],packetreceipt:[0,5],pad:8,page:[2,6],pair:[3,6],palm:0,paramet:[3,4,5],pariti:[3,7],pars:0,parse_arg:0,parser:0,part:[0,4,6],particip:[2,6],pass:[0,3,4,5,6],past:[],path:[0,1,5,6,7],path_respons:5,pathfind:[],pathfinder_m:5,pattern:6,payload:[5,6],peach:0,peer:[0,1,3,5,6],peer_pub_byt:[],peer_sig_pub_byt:[],peopl:6,per:[5,6,8],percent:0,perfect:[],perform:[0,3,4,6],period:[3,6],perman:7,persecut:6,persist:[3,7],person:6,pet:0,philosophi:6,physic:[6,7],pi:[0,4,6,7,8],piec:6,ping:[1,7],pip3:[1,3,7],pip:[1,7],pkcs7:8,pkg:1,place:[4,6,7],plain:[0,3,5,6],plain_mdu:5,plaintext:[0,5],plan:4,platform:6,pleas:[0,3,7,8],plenti:6,plu:6,plug:7,pmr:6,point:[1,4,6],pomelo:0,poorli:4,port0:7,port:[2,3,4,6,8],posit:7,possess:6,possibl:[1,3,4,5,6,8],potenti:[0,6,7],power:3,practic:[6,8],pre:[1,3,5,6],preambl:[3,7],predict:6,prefer:6,prepar:[0,4],prerequisit:5,presenc:5,preserv:5,press:0,pretend:6,pretti:6,prettyhexrep:0,previou:0,previous:[4,5,6],primari:6,principl:[6,8],print:0,print_filelist:0,print_help:0,print_menu:0,prioriti:6,prioritis:[2,4],privaci:8,privat:[3,5,6,8],privileg:7,probabl:[0,4,6,7,8],probe:7,procedur:6,process:[1,5,6],product:[],program:[0,2,3,5,6],program_setup:0,programm:6,programmat:6,progress:[0,5,8],progress_callback:5,project:1,prompt:0,proof:[0,5,6,7],proof_packet:0,proof_requested_callback:5,proof_strategi:5,propag:6,properti:5,protocol:[1,2,8],prove:[0,6],prove_al:[0,5],prove_app:5,prove_non:5,proven:[5,6],provid:[0,1,2,3,4,5,6,8],prv_byte:5,pub_byt:5,public_inform:0,purchas:[4,6,8],purg:5,purpos:[3,5,6],purposefulli:6,put:0,py:[0,1,7],pyseri:1,python3:[1,7],python:[1,3,6,7,8],q:[0,7],queri:[0,1],queue:6,quiet:7,quinc:0,quit:0,r:[0,6],radio:[1,3,4,5,6,7,8],radiu:6,radon:0,rais:[0,5],ram:3,rand:6,randint:0,random:[0,5,6],random_text_gener:0,randomli:[0,6],rang:[0,1,3,4,6,8],raspberri:[4,6,7,8],rate:[0,3],rb:0,re:[0,3,5,6],reach:[2,4],reachabl:[0,4,5,6],read:[0,1,6],readabl:[0,5,6],readi:[0,1,4,5],readili:8,real:[4,8],realli:[3,5],reason:[3,6],reassembl:6,recal:[0,5],recall_app_data:5,recap:6,receipt:[0,2,6],receiv:[0,5,6,7],received_announc:[0,5],reception_rssi:0,reception_snr:0,reception_stat:0,recip:1,recipi:6,recommend:[0,6],reconstruct:6,record:6,recoveri:3,recreat:6,refer:[0,1,2],regard:6,regist:[0,5],register_announce_handl:[0,5],register_request_handl:[0,5],rel:[6,8],relat:1,releas:[1,6],relev:[0,5],reli:6,reliabl:[3,4,6,8],rem:0,remain:6,rememb:6,remot:[0,5],remote_ident:[0,5],remote_identifi:0,remote_identity_hash:[],remote_p:0,remotesensor:6,repeat:1,replac:[1,6,7],repli:[0,7],replic:6,reply_data:0,reply_text:0,repositori:1,repres:6,represent:[0,6],request:[2,6,7],request_destin:0,request_fail:0,request_id:[0,5],request_packet:0,request_path:[0,5],request_receipt:[0,5],request_receiv:0,requested_at:[0,5],requestexampl:0,requestreceipt:5,requir:[0,1,4,6,7,8],research:8,resend:5,reserv:6,resili:8,resourc:[0,2],resource_callback:5,resource_sending_conclud:0,resource_strategi:5,respect:3,respond:[0,5],respons:[2,5],response_callback:[0,5],response_gener:[0,5],response_tim:[],rest:[4,8],restart:7,restartsec:7,result:[0,6],reticulum:[0,3,4],retransmiss:6,retransmit:6,retri:6,reveal:[5,6,8],review:8,right:4,rn:[0,1,5,7],rnode:[2,6,8],rnodeinterfac:3,rnpath:[1,2],rnprobe:[1,2],rnsconfig:1,rnsd:[1,2],rnstatu:[1,2],robot:6,rotat:6,round:[0,5,7],rout:[4,5,6,8],rprogress:0,rsa:[],rssi:0,rtt:[0,5,6],rttstring:0,rule:6,run:[0,1,4,5,6,7,8],runtim:6,rust:1,rw:6,rx:[3,7],s:[0,1,3,4,6,7,8],said:6,same:[1,3,5,6,7],satisfi:6,save:[5,6],save_error:0,saved_filenam:0,scenario:[1,2,6],screen:0,search:2,second:[0,3,5,6,8],secreci:[5,6,8],section:[3,4,6],secur:[6,8],see:[0,4,5,6,8],seen:6,segment:[3,4],segment_index:[],select:[0,3],self:[0,4,8],send:[0,3,5,6,7],sender:[0,4,6],sendig:0,sensibl:1,sensor:6,sent:[0,5,6,7],sentiment:6,separ:[4,6,7],sequenc:[0,5,6,8],serial:[2,6,8],serialinterfac:3,serv:[0,4,6],serve_path:0,server:[0,1,2],server_callback:0,server_destin:0,server_fil:0,server_ident:0,server_link:0,server_loop:0,server_packet_receiv:0,servic:[1,2,4],session:6,set:[0,3,4,5,6,7,8],set_default_app_data:5,set_delivery_callback:[0,5],set_link_closed_callback:0,set_link_established_callback:[0,5],set_packet_callback:[0,5],set_proof_requested_callback:5,set_proof_strategi:[0,5],set_remote_identified_callback:[0,5],set_resource_callback:5,set_resource_concluded_callback:[0,5],set_resource_started_callback:[0,5],set_resource_strategi:[0,5],set_timeout:[0,5],set_timeout_callback:[0,5],setdaemon:0,setup:[0,2,3],sever:[1,4,5,7],sha256:8,sha:[5,6],shall:6,share:[1,4,5,6,7],she:4,shelf:[6,8],shop:0,shortest:6,shorthand:7,should:[0,3,4,5,6,8],should_allow_unencrypt:[],should_quit:0,should_use_implicit_proof:5,show:7,shown:0,side:8,sight:4,sign:[5,6],signatur:[5,6,8],significantli:[],similar:[3,4,7,8],simpl:[0,6,7,8],simplest:6,simpli:[0,1,4,6,7],simplic:6,sinc:[0,1,3,4,5,6],singl:[0,3,5,6,8],singular:6,sit:[],site:2,situat:[4,6],size:[0,5,6],size_str:0,sleep:0,slice:0,slottim:[3,7],slow:[0,3,6],small:[0,3,4,6,8],snr:0,so:[0,1,3,4,5,6,7,8],softwar:[1,3,6,8],some:[0,1,4,6],someth:[3,6],somethign:0,soon:5,sort:6,soundmodem:3,sourc:[0,1,4,6,8],space:[0,4,8],span:6,special:[6,7],specif:[0,2,3,5,8],specifi:[0,1,3,4,5,7],spectrum:[3,6],speed:[3,7],split:0,sponsor:8,spread:3,spreadingfactor:3,squelch:3,ssid:3,stabl:[6,8],stack:[0,1,4,6,7,8],stage:6,stai:[0,7],standard:[1,6],start:[0,2,3,5,6,7],startlimitintervalsec:7,startup:0,state:0,station:[3,6],stationari:4,statist:0,statu:[0,1,2,5,6,7],stdout:0,step:1,still:[0,4,6],stock:0,stop:8,stopbit:[3,7],store:[0,6],store_tru:0,str:0,strategi:5,stream:6,strength:8,strictli:6,string:[0,5],strong:6,structur:6,subject:[],subnet:4,subsequ:6,succe:1,successful:5,successfulli:0,sucessfulli:6,sudo:7,suffic:6,suffici:[6,7],suffix:0,suit:[1,6],suitabl:[0,3,4,6],suppli:[4,5,6],support:[0,2,4,6,8],sure:[1,7],sy:0,symlink:[1,7],symmetr:[5,6],system:[0,1,2,3,5,8],systemctl:7,systemd:7,t:[0,1,3,4,6],tabl:[4,6],tail:3,take:[0,1,6,8],taken:[0,6],tangerin:0,target:[0,7],target_host:3,target_port:3,tcp:[1,2,4,6,8],tcpclientinterfac:3,tcpinterfac:7,tcpserverinterfac:3,tdata:0,teardown:[0,5],teardown_reason:0,teffect:0,tell:0,temperatur:6,ten:6,term:[4,6],termin:[1,5],terminolog:[4,6],termux:1,test:[3,6],testnet:7,text:[0,4,6],tfile:0,than:[0,4,6],thei:[0,4,5,6],them:[0,3,6],thereaft:6,therefor:[6,8],thi:[0,1,2,3,4,5,6,7],those:4,though:6,thourough:8,thread:0,three:[4,6],throough:3,throttl:4,through:[3,4,5,6,8],throughout:6,throughput:[6,8],thu:[4,5,6],ti:[0,6],time:[0,1,3,4,5,6,7],timeout:[0,5],timeout_callback:[],timeoutarg:0,timestr:0,tnc:[3,5,7,8],to_fil:5,todai:6,todo:[],togeth:6,token:[5,6],too:[0,4,6],tool:8,top:[4,6],topic:6,topographi:4,topolog:[3,6],total:[6,8],total_s:0,touch:8,toward:[0,6],tradit:4,traffic:[0,3,4,5,6],tramsit:[],transceiv:[3,6,8],transfer:[0,5,6,8],transfer_s:0,transmiss:[3,6],transmit:[0,3,6],transpar:[3,6],transport:[0,2,4,7,8],transport_en:5,transport_id:[],transport_typ:[],travers:6,treat:6,tri:0,trip:[0,5,7],trivial:8,truli:6,truncat:[5,6],truncated_hash:5,truncated_hashlength:5,trust:6,trustless:[6,8],ttime:0,ttransfer:0,ttyusb0:[3,7],ttyusb1:3,ttyusb2:3,tunnel:[6,8],tupl:5,turnaround:3,tutori:1,two:[0,3,4,6],tx:[3,7],txpower:3,txtail:[3,7],type:[0,2,3,4,5,7],typeerror:5,ubuntu:7,udp:[2,4,6,7,8],udpinterfac:[3,7],umsgpack:0,uncencrypt:0,under:7,underli:[4,8],understand:[1,2],unencrypt:[0,5,6],unequivoc:6,unforg:8,unidentifi:0,unifi:4,uninterest:0,uniqu:[6,8],unit:[0,7],unknown:[0,5,6],unless:[1,5,6],unlicens:6,unpack:0,unpackb:0,unplug:7,unreli:3,unsign:7,unsupport:5,until:[0,5,6],unwant:6,up:[0,1,4,6,7,8],updat:[0,1,5],upgrad:1,upon:[0,6],upset:0,urandom:8,us:[0,2,3,4,5,6],usabl:6,usag:7,usb:[4,6,7,8],useabl:6,user:[0,1,4,6,7],user_input:0,userland:8,usernameher:7,usr:7,utf:0,util:[0,2,6],utilis:[4,6,7,8],v:7,valid:[0,3,5,6,7],valu:[5,6],valueerror:[0,5],vari:7,variabl:0,varieti:[3,6,8],variou:[0,6],ve:1,vendor:0,verbos:7,veri:[4,5,6,7,8],verif:[5,6],verifi:[0,5,6],versa:[4,8],version:7,vhf:[4,6],via:[1,3,6,7],vice:[4,8],view:[1,6,7],virtual:4,visibl:0,wa:[0,4,5,6,8],wai:[0,1,3,4,6],wait:[0,6],want:[0,1,3,4,6,7,8],wantedbi:7,warrant:8,wast:3,wb:0,we:[0,3,6],well:[4,5,6,8],went:0,were:4,what:[0,1,2,5,6],whatev:[5,6],wheel:1,when:[0,1,3,4,5,6,7],whenev:5,where:[2,4,5,6,7],whereupon:6,whether:[0,3,5,6],which:[0,1,4,5,6,7],who:6,wide:[6,8],wifi:[4,6,8],wildcard:0,willing:4,window:6,wire:[3,6,8],wireless:4,wish:6,within:[0,1,3,4,5,6],without:[4,6,8],won:0,work:[1,6,7,8],world:[4,8],worri:4,would:[3,4,6],write:[0,1,5],written:6,wrong:0,x25519:[5,6,8],x:6,xenon:0,y:0,ye:6,year:6,yet:[0,6],yi:0,you:[0,1,2,3,4,5,6,7,8],your:[0,1,2,3,4,6,8],yourself:[6,8],z:0,zero:[5,8],zeromq:4,zi:0},titles:["Code Examples","Getting Started Fast","Reticulum Network Stack Manual","Supported Interfaces","Building Networks","API Reference","Understanding Reticulum","Using Reticulum on Your System","What is Reticulum?"],titleterms:{"1":[],"2":[],"25":3,"class":5,"function":6,"public":6,"try":1,The:[6,7],With:1,android:1,announc:[0,6],api:5,ax:3,base:1,basic:6,binari:6,bridg:4,broadcast:0,build:4,can:8,caveat:8,client:3,code:0,concept:4,configur:7,converg:4,creat:1,current:8,deliveri:[],destin:[5,6],detail:6,develop:1,devic:8,doe:8,echo:0,emptor:8,establish:6,exampl:[0,4],fast:1,filetransf:0,fix:7,format:6,further:6,get:[1,6],gipsum:[],goal:6,growth:4,ident:[5,6],identif:0,improv:7,includ:[1,7],indic:2,interconnect:4,interfac:[3,8],internet:4,introduct:6,kei:6,kiss:3,link:[0,5,6],lora:[3,4],manual:2,mechan:6,minim:0,motiv:6,name:[6,7],network:[1,2,4],node:6,offer:8,orem:[],over:4,overview:4,packet:[5,6],particip:1,pathfind:[],port:7,predict:[],prioritis:6,program:[1,7],protocol:6,proven:[],reach:6,receipt:5,refer:[5,6],request:[0,5],resourc:[5,6],respons:0,reticulum:[1,2,5,6,7,8],rnode:3,rnpath:7,rnprobe:7,rnsd:7,rnstatu:7,run:[],scenario:4,serial:[3,7],server:3,servic:7,setup:6,site:4,specif:6,stack:2,start:1,statu:8,step:[],support:3,system:[6,7],tabl:2,tcp:3,transport:[5,6],type:[6,8],udp:3,understand:6,us:[1,7,8],util:[1,7],what:8,where:8,your:7}}) \ No newline at end of file +Search.setIndex({docnames:["examples","gettingstartedfast","index","interfaces","networks","reference","understanding","using","whatis"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["examples.rst","gettingstartedfast.rst","index.rst","interfaces.rst","networks.rst","reference.rst","understanding.rst","using.rst","whatis.rst"],objects:{"RNS.Destination":{announce:[5,1,1,""],app_and_aspects_from_name:[5,1,1,""],clear_default_app_data:[5,1,1,""],create_keys:[5,1,1,""],decrypt:[5,1,1,""],deregister_request_handler:[5,1,1,""],encrypt:[5,1,1,""],full_name:[5,1,1,""],get_private_key:[5,1,1,""],hash:[5,1,1,""],hash_from_name_and_identity:[5,1,1,""],load_private_key:[5,1,1,""],register_request_handler:[5,1,1,""],set_default_app_data:[5,1,1,""],set_link_established_callback:[5,1,1,""],set_packet_callback:[5,1,1,""],set_proof_requested_callback:[5,1,1,""],set_proof_strategy:[5,1,1,""],sign:[5,1,1,""]},"RNS.Identity":{CURVE:[5,2,1,""],KEYSIZE:[5,2,1,""],TRUNCATED_HASHLENGTH:[5,2,1,""],decrypt:[5,1,1,""],encrypt:[5,1,1,""],from_bytes:[5,1,1,""],from_file:[5,1,1,""],full_hash:[5,1,1,""],get_private_key:[5,1,1,""],get_public_key:[5,1,1,""],get_random_hash:[5,1,1,""],load_private_key:[5,1,1,""],load_public_key:[5,1,1,""],recall:[5,1,1,""],recall_app_data:[5,1,1,""],sign:[5,1,1,""],to_file:[5,1,1,""],truncated_hash:[5,1,1,""],validate:[5,1,1,""]},"RNS.Link":{CURVE:[5,2,1,""],ESTABLISHMENT_TIMEOUT_PER_HOP:[5,2,1,""],KEEPALIVE:[5,2,1,""],get_remote_identity:[5,1,1,""],identify:[5,1,1,""],inactive_for:[5,1,1,""],no_inbound_for:[5,1,1,""],no_outbound_for:[5,1,1,""],request:[5,1,1,""],set_packet_callback:[5,1,1,""],set_remote_identified_callback:[5,1,1,""],set_resource_callback:[5,1,1,""],set_resource_concluded_callback:[5,1,1,""],set_resource_started_callback:[5,1,1,""],set_resource_strategy:[5,1,1,""],teardown:[5,1,1,""]},"RNS.Packet":{ENCRYPTED_MDU:[5,2,1,""],PLAIN_MDU:[5,2,1,""],resend:[5,1,1,""],send:[5,1,1,""]},"RNS.PacketReceipt":{get_rtt:[5,1,1,""],get_status:[5,1,1,""],set_delivery_callback:[5,1,1,""],set_timeout:[5,1,1,""],set_timeout_callback:[5,1,1,""]},"RNS.RequestReceipt":{get_progress:[5,1,1,""],get_request_id:[5,1,1,""],get_response:[5,1,1,""],get_response_time:[5,1,1,""],get_status:[5,1,1,""]},"RNS.Resource":{advertise:[5,1,1,""],cancel:[5,1,1,""],get_progress:[5,1,1,""]},"RNS.Reticulum":{MTU:[5,2,1,""],should_use_implicit_proof:[5,1,1,""],transport_enabled:[5,1,1,""]},"RNS.Transport":{PATHFINDER_M:[5,2,1,""],deregister_announce_handler:[5,1,1,""],has_path:[5,1,1,""],hops_to:[5,1,1,""],next_hop:[5,1,1,""],next_hop_interface:[5,1,1,""],register_announce_handler:[5,1,1,""],request_path:[5,1,1,""]},RNS:{Destination:[5,0,1,""],Identity:[5,0,1,""],Link:[5,0,1,""],Packet:[5,0,1,""],PacketReceipt:[5,0,1,""],RequestReceipt:[5,0,1,""],Resource:[5,0,1,""],Reticulum:[5,0,1,""],Transport:[5,0,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","attribute","Python attribute"]},objtypes:{"0":"py:class","1":"py:method","2":"py:attribute"},terms:{"0":[0,3,5,6,7,8],"00":6,"000":[],"00000000":6,"00000100":6,"00000111":6,"01":[6,7],"01010000":6,"02":7,"05":0,"07":7,"1":[0,3,5,6,7],"10":[0,3,6,7],"100":[0,6],"1000":[0,6],"1024":0,"11":6,"115200":[3,7],"12":3,"1200":6,"125":3,"125000":3,"127":3,"128":[5,6,8],"13":7,"14":6,"141":[],"15":[3,6],"150":[3,7],"150m":3,"151":6,"16":[3,7],"18":6,"180":6,"182":[],"2":[0,3,6,7],"20":[0,3,6,7],"200":[3,7],"2000000":[],"205":[],"211":[],"237":[6,8],"24":3,"240":[],"25":[0,2,8],"255":3,"256":[5,6],"270":6,"2f":0,"3":[0,6,7,8],"323":[],"33":6,"34":6,"360":5,"3600":0,"37":7,"37428":7,"38":7,"383":5,"3e12fc71692f8ec47bc5":1,"4":[6,7],"409":[],"4242":[3,7],"430":6,"45":0,"469":7,"477":[5,6],"48555":3,"49555":3,"4965":7,"5":[0,3,5,6],"500":[5,6,8],"512":5,"55":3,"56b115c30cd386cad69c":7,"60":0,"600":3,"62":[6,8],"7":[3,6],"72":3,"77":6,"7ca6f4e4dc26ae329e61":[],"8":[0,3,7],"80":[5,6],"8001":3,"80e29bf7cccaf31431b3":6,"83":6,"86":[],"867":3,"867200000":3,"868":6,"88":3,"9":7,"900":6,"9382f334de63217a4278":7,"95":6,"abstract":6,"break":[5,6,8],"byte":[0,5,6,7,8],"case":[1,3,4,6,7],"class":[0,2,8],"default":[0,1,3,4,5,6,7],"do":[0,1,3,5,6,7,8],"float":[0,5],"function":[0,1,2,3,4,5,8],"import":[0,1,4,6],"int":0,"long":[0,3,6],"new":[0,3,4,5,6],"public":[0,2,5],"return":[0,5],"short":6,"static":5,"switch":3,"throw":[],"true":[0,3,5,7],"try":[0,2],"while":[0,4,5,6,8],A:[0,1,3,4,5,6,8],And:0,As:[4,5,6,8],At:[4,6],Be:[5,7],But:6,By:[0,3,5,6],For:[1,3,4,5,6,8],IN:[0,5],If:[0,1,3,4,5,6,7,8],In:[0,1,3,4,5,6,7,8],It:[0,1,3,5,6,8],No:[6,8],On:[0,7],One:5,Or:[3,6],That:6,The:[0,1,2,3,4,5,8],Then:1,There:[4,6,8],These:[3,6,7],To:[0,1,3,4,6,7,8],Will:5,With:[2,3,4,6,7],_:6,__:6,______:6,_______:6,________:6,________________:6,__init__:0,__main__:0,__name__:0,_exit:0,ab:0,abil:1,abl:[0,4,5,6,7],about:[0,1,4,5,6],abov:[1,3,6],absolut:[],accept:[5,6],accept_al:[0,5],accept_app:5,accept_non:5,access:[3,5,6,7],accord:6,accordingli:0,acheiv:6,achiev:[5,6],acknowledg:8,across:4,act:[5,6],action:0,activ:[0,1,5,6],actor:6,actual:[0,1,3,6],ad:[0,4,5,8],adapt:4,add:[0,1,3,4],add_argu:0,addit:[6,8],addr1:6,addr2:6,address:[0,3,4,5,6,8],adher:5,admin:3,administr:7,adress:[0,4,5,8],advantag:5,advertis:[0,5],advis:6,ae:[6,8],after:[0,4,6,7],again:[1,6],against:6,agent:6,agnost:[4,6],agnostic:6,aim:[2,6],air:8,airtim:3,aliv:[5,6],all:[0,2,3,4,5,6,7,8],alloc:7,allow:[0,1,3,4,5,6,7,8],allow_al:[0,5],allow_list:5,allow_non:5,allowed_list:5,almost:[3,6],along:[4,6],alreadi:[0,4,6],also:[0,1,3,4,5,6,7,8],alter:6,altern:[0,3,7],although:8,alwai:[5,6,7],amateur:[3,8],amet:[],amount:[3,4,5,6,8],an:[0,1,3,4,5,6,7,8],android:2,ani:[0,1,3,4,5,6,7,8],announc:[2,5],announce_handl:0,announced_ident:[0,5],announceloop:0,announcesampl:0,anonym:[4,5,6,8],anoth:[1,5,6,7],answer:[6,7],anyon:[0,4,5,6],anyth:[3,6],anywher:0,apart:6,api:[1,2,6,8],apk:1,app:[0,1,5,6],app_and_aspects_from_nam:5,app_data:[0,5],app_nam:[0,5],app_timeout:0,append:[0,6],appli:6,applic:[0,5,6,7],approach:7,approv:6,approxim:6,ar:[0,1,3,4,5,6,7,8],arbitrari:[5,6],arbritrari:8,area:[3,4,8],arg:0,argon:0,argpars:0,argument:[0,5,7],argumentpars:0,around:6,arriv:[0,6],ask:[0,5],aspect:[0,5,6],aspect_filt:[0,5],assign:[6,7],associ:[1,5,6],assum:[3,6],asymmetr:8,attached_interfac:[],attempt:5,attribut:5,audit:8,authent:[5,6,8],author:6,auto:[2,5,6],auto_compress:5,autoconfigur:8,autodiscov:3,autointerfac:3,autom:6,automat:[0,3,4,5,6,7,8],autonom:[4,6],autoomat:0,avail:[0,1,3,4,6,7,8],availadbl:[],averag:6,avoid:[6,7],awai:[0,4,6,7],awar:6,ax25kissinterfac:3,ax:[2,8],b:[0,4],back:[0,6,8],background:1,backhaul:4,band:6,bandwidth:[3,4,6,8],bare:0,barrier:6,base:[2,3,4,5,6,7,8],basi:[5,6,8],basic:[0,1,2],baud:[3,6],beacon:3,becaus:[4,6],becki:0,becom:[0,4],been:[0,3,4,5,6,8],befor:[0,5,6],begin:[0,5],begun:5,behind:6,being:[3,5,6],belief:6,below:[1,3],benefici:7,best:[1,6,8],beta:8,better:3,between:[0,3,4,5,6],bgp:6,bi:6,bidirect:6,billion:4,bin:7,binari:[0,2],bind:3,bit:[5,6,8],blob:[0,6],board:8,boot:7,both:[3,4,5,6,8],bp:6,bridg:2,briefli:6,broadcast:[1,2,3,5,6],broadcast_destin:0,broadcastloop:0,brought:7,buffer:3,bug:8,build:[0,1,2,3,6,8],built:[1,6,8],bundl:0,c:[0,4,6],cabl:4,cad:6,calcul:[5,6],call:[0,4,5,6,8],callabl:5,callback:[0,5],callsign:3,can:[0,1,2,3,4,5,6,7],cancel:5,candid:4,cannot:0,capac:6,carambola:0,care:[5,8],carri:[5,6],carrier:[4,8],caution:3,caveat:2,cb:6,cbc:8,cd:1,cdma:3,censor:6,censorship:6,central:[4,6],certain:[0,3,4,6],challeng:6,chang:[0,1,5,6,7,8],channel:[0,3,4,6,8],channelarg:0,chapter:[1,3,4,6,8],charact:0,characterist:6,cheap:6,check:[0,1,5],checksum:[5,8],choos:[0,3],chose:6,chosen:4,chunk:0,ciphertext:5,ciphertext_token:5,cl:0,clear:[0,5,6],clear_default_app_data:5,clear_screen:0,client:[0,1,2,5],client_connect:0,client_disconnect:0,client_ident:0,client_loop:0,client_packet_receiv:0,client_request:0,clone:1,close:[0,5],closed_callback:5,closer:6,cluster:6,code:[1,2,3,6],codingr:3,com:[0,1],combin:[4,6],come:[1,6],command:[0,1,7],comment:3,common:[3,6],commun:[0,1,3,4,5,6,7,8],compat:[5,6],compil:1,complet:[0,1,4,5,6,8],complex:6,compon:6,compos:6,compress:[0,5,6],comput:[1,6,8],concaten:5,concept:[2,6],conclud:[0,5],concurr:[6,7],condit:6,config:[0,1,4,7],configarg:0,configdir:5,configpath:0,configur:[0,1,2,3,4,5,6,8],confirm:[6,8],conjunct:3,connect:[0,1,3,4,5,6,7,8],consequ:[],consid:[6,8],consist:6,constant:[5,6],construct:6,contact:6,contain:[0,4,5,6],content:[4,7],context:6,control:[0,3,4,5,6],conveni:0,convent:0,converg:2,coordin:[4,5,6,8],core:[4,6,8],correct:[0,6],correctli:0,correspond:6,cost:[6,8],could:[0,4,5,6,8],count:6,counter:0,cours:3,cover:8,coverag:4,cpu:0,creat:[0,2,3,5,6,7],create_kei:5,create_receipt:[0,5],creation:6,creator:6,critic:6,cryptograph:[4,8],cryptographi:[1,6,8],ctrl:0,cull:5,current:[0,2,3,5,6],current_download:0,current_filenam:0,curv:[4,5,6,8],curve25519:[4,5,6,8],custom:[5,6],custom_network_nam:3,d:[4,6],daemon:[5,7],dai:[4,6],data:[0,3,4,5,6,8],data_port:3,databit:[3,7],date:[0,1],db:0,dbm:[0,3],debian:[6,7],debug:[],decai:6,decid:[4,5,6],decod:0,decrypt:[5,6],dedic:6,def:0,default_timeout:[],defin:[0,3,6],definit:6,degrad:4,delai:6,deliv:[0,5],deliveri:[0,5,8],demand:5,demonstr:[0,3],depend:[1,4,7],deploi:6,deregist:5,deregister_announce_handl:5,deregister_request_handl:5,deriv:[6,8],describ:[3,5,6],descript:[0,7],design:[4,6,8],desir:[0,6],destin:[0,1,2,4,7],destination_1:0,destination_2:0,destination_clos:0,destination_hash:[0,5,7],destination_hexhash:0,detail:[0,1,2,5,7,8],detect:0,determin:[5,6],dev:[3,7],develop:[2,6,8],devic:[1,2,3,4,5,6,7],dh:5,dhcp:3,did:0,differ:[0,1,3,4,5,6,7,8],diffi:[4,6,8],digit:[6,8],dir:0,direct:[0,4,5,6],directli:[3,5,6,7,8],directori:[0,7],disabl:3,disable_encrypt:[],disappear:[],discard:6,disconnect:0,discover:3,discoveri:[3,6,7],discovery_port:3,discovery_scop:3,discrimin:4,discuss:6,disk:[0,5],displai:[0,6],distanc:6,distinct:[3,6],distribut:[0,1,4,5,6,7],divmod:0,document:6,doe:[0,1,2,3,4,5,6],doesn:3,dolor:[],domain:[1,3],don:[0,1,4],done:[0,1,4,6],dori:4,dot:[6,7],down:0,downgrad:[],download:0,download_began:0,download_conclud:0,download_finish:0,download_start:0,download_tim:0,driver:[7,8],droid:1,drop:6,due:4,duplex:[6,8],dynam:7,e:[0,4],each:[0,4,6],earlier:6,eas:6,easi:[3,6,7,8],easier:[1,4,7],easiest:[1,6],easili:[6,8],eca6f4e4dc26ae329e61:7,ecdh:[6,8],echo:[1,2,7],echo_destin:0,echo_request:0,ed25519:[6,8],edit:1,effici:[0,3,6,8],ei:0,either:[3,4,6],elaps:3,elif:0,ellipt:[4,5,6,8],els:[0,4,6],emploi:6,emptor:2,emul:1,enabl:[3,4,5,7],enable_transport:6,encapsul:[3,8],encod:0,encrypt:[0,1,4,5,6,8],encrypted_mdu:5,encryptionless:[],end:[0,4,5,6,8],endless:3,endpoint:[0,4,5,6],engin:[],enough:1,ensur:6,enter:0,entir:[4,6],entiti:6,entri:[0,6],enumer:0,environ:[1,6],environment:6,environmentlogg:6,ephemer:[4,5,6,8],equal:[4,6],equip:[4,6],equival:3,equl:[],error:0,especi:3,essenti:[1,6],establish:[0,5,8],established_callback:5,establishment_timeout_per_hop:5,etc:7,eth0:3,ethernet:[1,3,4,6,8],even:[4,6,7,8],everi:[0,3,4,5,6],everyon:[4,6],everyth:[0,4,6],evolv:4,exact:6,exactli:[5,6],exampl:[1,2,3,5,6,7,8],example_util:[0,7],exampleannouncehandl:0,exce:0,except:[0,6],exchang:[4,5,6,8],execstart:7,execut:[0,1,5,7],exhaust:6,exist:[0,1,3,6,8],exit:[0,1,5,7],exit_handl:0,expand:6,expect:[0,5,6,7],experi:[1,6],experiment:8,explain:5,explan:6,explicit:5,explicitli:[],explor:[0,6,8],expos:[3,5],extend:[0,1,6],extern:[3,5,8],extra:[1,3,4],extrem:8,f:1,fa7ddfab5213f916dea:6,face:1,fact:[6,8],factor:3,fail:[0,5],failed_callback:[0,5],fals:[0,3,5],far:[4,6],fast:2,fastest:3,featur:[6,8],feed:5,feedback:0,fernet:8,few:[1,4,6,7,8],field:6,file:[0,1,4,5,6,7,8],file_resourc:0,file_s:0,filelist:0,filelist_data:0,filelist_receiv:0,filelist_timeout_job:0,filenam:0,filetransf:[1,2,5],filter:[0,4,6],find:[4,6],firmwar:6,first:[0,1,5,6],fit:0,five:0,fix:[2,6],flag:[5,6],flow:[3,4],flow_control:3,flush:0,folder:1,follow:[0,1,3,6,7,8],forcibl:5,foreground:1,foremost:8,form:[3,4,5,6],format:[0,2,8],forth:0,forward:[3,5,6,8],forward_ip:3,forward_port:3,found:[0,1,4,6,7],four:4,frame:3,frankfurt:7,free:8,frequenc:[3,6],friendli:8,from:[0,1,3,4,5,6,7,8],from_byt:5,from_fil:5,fromhex:0,fruit:0,ftdi_ft230x_basic_uart_43891ckm:7,full:[0,3,5,6,7,8],full_hash:5,full_nam:[5,7],fulli:[6,8],funcion:5,fundament:6,further:[1,2],futur:[4,6],g:0,ga:0,gatekeep:6,gatewai:4,gen:[],gener:[0,4,5,6,8],generalis:8,geograph:4,get:[0,2,3,5,8],get_packet_rssi:0,get_packet_snr:0,get_private_kei:5,get_progress:[0,5],get_public_kei:5,get_random_hash:[0,5],get_remote_ident:[0,5],get_request_id:5,get_respons:5,get_response_tim:5,get_rtt:[0,5],get_statu:5,gi:0,gigabyt:8,gipsum:[],git:1,github:[0,1],give:[3,6],given:[4,6],global:[0,3,4,8],go:[0,1,6],goal:[2,3],good:[4,6],got:0,got_respons:0,govern:6,grape:0,great:6,greater:6,greatli:3,group:[3,5,6],group_id:3,grow:4,growth:2,guarante:6,guid:[1,5,6],h:[1,6,7],ha:[0,3,4,5,6,8],had:6,half:[6,8],hand:[0,1],handheld:6,handl:[0,4,5,6,7,8],handler:[0,5],happen:[0,5],hardlin:4,hardwar:[3,4,5,6,8],has_path:[0,5],hasattr:0,hash:[0,1,5,6,7],hash_from_name_and_ident:5,hashmap:0,have:[0,1,3,4,5,6,7],hazard:5,header:6,header_1:6,header_2:6,header_typ:[],hear:6,heard:[5,6],helium:0,hellman:[4,6,8],help:[0,4,6,7,8],her:4,here:[0,1,3,6,7],hexadecim:[0,6,7],high:[3,6,8],higher:[6,8],highli:6,hill:4,hint:0,hit:0,hmac:8,hoc:8,hold:[5,6],home:4,homebrew:3,hop:[4,5,6,7,8],hops_to:5,host:[0,6,7,8],hostnam:3,hour:0,how:[0,3,4,6,8],howev:[4,6],http:[0,1],human:[0,5],i:0,id:[3,5,6,7],id_callsign:3,id_interv:3,idea:6,ident:[0,2,8],identif:[2,3,8],identifi:[0,3,5,6],identify:6,identifyexampl:0,ie:[],if00:7,ifconfig:7,ignor:[5,6],illustr:4,immedi:[1,7],impact:6,implement:[0,4,5,6,8],implic:3,implicit:[5,6],improv:[2,3],inactive_for:5,inbound:5,includ:[0,2,3,5,6],incom:[0,3,5],incompat:[5,6],increas:3,incur:3,indefinit:6,independ:5,independt:8,index:[0,1,2],indirectli:6,individu:6,inevit:6,infer:6,info:[5,6],inform:[0,1,2,4,5,6],infrastructur:[3,4,6],ingo:5,initi:[0,4,5,6,8],initialis:[0,5,7],input:0,insert:6,inspect:4,instal:[1,3,4,7],instanc:[0,5,7],instanti:5,instead:[0,3,6,7],integr:[4,6],intend:[4,6],intention:6,inter:5,interact:[0,1,5,6],interconnect:2,interest:6,interfac:[0,1,2,4,5,6,7],interface_en:[3,7],intermitt:3,intern:[3,5,6],internet:[1,2,3,6,8],interv:[3,5],intiat:0,introduc:6,introduct:2,intuit:8,invalid:[0,5],investig:4,involv:4,io:[1,7],ip:[3,6,8],ipsum:[],ipv6:3,is_connected_to_shared_inst:0,is_request:[],is_respons:[],isdir:0,isfil:0,island:4,ism:6,isol:3,its:[5,6],itself:[2,6],iv:8,job:0,join:[0,6],just:[0,3,4,6,8],k:0,kb:7,kbp:6,keep:[0,4,5,6,7,8],keepal:[5,6],kei:[0,2,4,5,8],kept:[3,4,5,6],kernel:[7,8],keyboardinterrupt:0,keyerror:5,keypair:6,keysiz:5,keystor:4,khz:3,ki:0,kill:5,kilomet:6,kind:[3,4,6],kiss:[2,7],kiss_fram:3,kissinterfac:[3,7],know:[0,4,5,6],knowledg:[4,6],known:[0,5,6],krypton:0,lack:6,laid:6,lan:3,larg:[0,4,6],larger:6,laser:3,last:[0,3,5],last_unit:0,latenc:[6,8],later:[0,1],latest:[0,1],latest_client_link:0,launch:1,lavg:6,layer:[3,4,6,8],lead:6,learn:[0,1,6],least:[3,6,8],leav:[4,6],ledger:6,left:[5,6],len:0,length:[0,5],less:[3,6,8],let:[0,4,6,7],level:[3,6],libffi:1,librari:1,licens:6,light:[],like:[1,3,5,6,7,8],limit:6,line:[0,1,4,6,8],link:[2,3,4,8],link_clos:0,link_establish:0,linkexampl:0,linux:[1,6],list:[0,5,6,8],list_deliv:0,list_fil:0,list_packet:0,list_receipt:0,list_timeout:0,listdir:0,listen:[0,3,6],listen_ip:3,listen_port:3,littl:6,lki:6,lkr:6,ll:[0,1,8],ln:[1,7],load:[0,5,7],load_private_kei:5,load_public_kei:5,local:[0,1,3,4,5,6,7,8],locat:[1,4,6,7],log:0,log_error:0,log_info:0,loglevel:[0,5],longer:[0,4,6],longest:3,look:[0,1,3,6,7],loop:0,lora:[1,2,6,8],lorawan:6,lorem:[],lot:6,low:[3,4,6,8],lxmf:1,m:[0,6,7],mac:6,machin:6,made:[5,6],mai:[3,6],main:0,mainli:4,maintain:6,make:[1,6,7],malici:6,manag:[1,5],mani:[0,1,3,4,6,7,8],manipul:6,manual:[0,1,3,4,5,7],mark:6,markqvist:[0,1],master:[0,5],match:[0,3],maximum:[5,6],mcu:6,mdu:0,mean:[6,7],measur:6,mechan:[2,3],medium:[3,4,6,8],member:4,memori:6,mention:6,menu:0,menu_mod:0,mesh:[4,8],messag:[0,1,5,6,7],messeng:6,metavar:0,method:[0,5,6],methodolog:[6,7],mhz:[3,6],mi:0,microcontrol:6,microwav:6,might:[3,4,6,7],millisecond:[0,7],mind:[4,8],minim:[2,6],minimalsampl:0,minimum:[0,4,6],minut:[0,1,6],mix:[3,4,7],mode:[0,1,6,8],modem:[3,4,5,6,8],modul:[0,1,3,6,7,8],moment:[6,8],monitor:6,moon:0,mor:[],more:[1,3,4,5,6,8],most:[1,3,4,6,7,8],motiv:2,move:1,mqtt:4,mtu:[5,6,8],much:6,multi:[6,7,8],multicast:3,multilater:6,multipl:[0,3,4,6,7],multipoint:6,must:[0,1,4,5,6],mw:3,my:6,mycal:3,n:0,name:[0,2,4,5],namespac:0,nano:1,narg:0,natur:3,necesarri:4,necessari:[1,5,6],necessarili:6,need:[0,1,2,3,4,6,7,8],neglig:6,neither:6,neon:0,netifac:[1,3],network:[0,3,5,6,7,8],never:[3,5],newer:6,newest:6,newli:[4,6],next:[1,4,5,6],next_hop:5,next_hop_interfac:5,nicknam:6,no1cll:3,no_inbound_for:5,no_outbound_for:5,nobl:0,noble_ga:0,noble_gas:0,node:[2,3,4,7,8],nomad:1,nomadnet:1,non:[5,6],none:[0,3,5,6,7],normal:0,notat:[6,7],note:[0,3,6,7],noth:8,notic:6,notif:[0,5],now:[0,1,4,6,7],nt:0,num:0,number:[0,1,3,4,5,6,7],object:5,obtain:6,occur:8,off:[6,8],offer:[1,2,3,5,6],often:[4,6,7],oganesson:0,old:6,onc:[0,4,5,6,8],one:[0,1,3,4,5,6,7,8],oneself:6,onli:[0,1,3,4,5,6,7,8],onlin:6,open:[0,3,5,6,7,8],openmodem:[3,8],openssl:1,oper:[3,4,5,6,8],opt:6,optic:8,optim:4,option:[0,1,3,4,5,7],order:7,orem:[],organis:[3,4],orient:6,origin:[0,4,6],original_hash:[],os:[0,3,6,7,8],ospf:6,other:[1,3,4,5,6,7],otherwis:[5,6],our:[0,6],out:[0,3,4,5,6,8],outbound:5,outgo:[0,3,5,6,7],outli:4,outlier:4,outlin:[1,6],output:7,outward:6,over:[0,1,2,3,5,6,7,8],overal:6,overcom:6,overhead:[3,6],overrid:0,overview:[2,3,6],own:[0,1,4,5,6],owner:[],p:[0,6],pack:0,packag:1,packb:0,packet:[0,1,2,3,4,7,8],packet_callback:0,packet_deliv:0,packet_hash:0,packet_receipt:[0,5],packet_timed_out:0,packet_typ:[],packetreceipt:[0,5],pad:8,page:[2,6],pair:[3,6],palm:[],paramet:[3,4,5],pariti:[3,7],pars:0,parse_arg:0,parser:0,part:[0,4,6],particip:[2,6],pass:[0,3,4,5,6],past:[],path:[0,1,5,6,7],path_respons:5,pathfind:[],pathfinder_m:5,pattern:6,payload:[5,6],peach:0,peer:[0,1,3,5,6],peer_pub_byt:[],peer_sig_pub_byt:[],peopl:6,per:[5,6,8],percent:0,perfect:[],perform:[0,3,4,6],period:[3,6],perman:7,persecut:6,persist:[3,7],person:6,pet:0,philosophi:6,physic:[3,6,7],pi:[0,4,6,7,8],piec:6,ping:[1,7],pip3:[1,3,7],pip:[1,7],pkcs7:8,pkg:1,place:[4,6,7],plain:[0,3,5,6],plain_mdu:5,plaintext:[0,5],plan:4,platform:6,pleas:[0,3,7,8],plenti:6,plu:6,plug:7,pmr:6,point:[1,3,4,6],pomelo:0,poorli:4,port0:7,port:[2,3,4,6,8],posit:7,possess:6,possibl:[1,3,4,5,6,8],potenti:[0,3,6,7],power:3,practic:[6,8],pre:[1,3,5,6],preambl:[3,7],predict:6,prefer:6,prepar:[0,4],prerequisit:5,presenc:5,preserv:5,press:0,pretend:6,pretti:6,prettyhexrep:0,previou:0,previous:[4,5,6],primari:6,principl:[6,8],print:0,print_filelist:0,print_help:0,print_menu:0,prioriti:6,prioritis:[2,4],privaci:8,privat:[3,5,6,8],privileg:7,probabl:[0,4,6,7,8],probe:7,procedur:6,process:[1,5,6],product:[],program:[0,2,3,5,6],program_setup:0,programm:6,programmat:6,progress:[0,5,8],progress_callback:5,project:1,prompt:0,proof:[0,5,6,7],proof_packet:0,proof_requested_callback:5,proof_strategi:5,propag:6,properti:5,protocol:[1,2,8],prove:[0,6],prove_al:[0,5],prove_app:5,prove_non:5,proven:[5,6],provid:[0,1,2,3,4,5,6,8],prv_byte:5,pub_byt:5,public_inform:0,purchas:[4,6,8],purg:5,purpos:[3,5,6],purposefulli:6,put:0,py:[0,1,7],pyseri:1,python3:[1,7],python:[1,3,6,7,8],q:[0,7],queri:[0,1],queue:6,quiet:7,quinc:0,quit:0,r:[0,6],radio:[1,3,4,5,6,7,8],radiu:6,radon:0,rais:[0,5],ram:3,rand:6,randint:0,random:[0,5,6],random_text_gener:0,randomli:[0,6],rang:[0,1,3,4,6,8],raspberri:[4,6,7,8],rate:[0,3],rb:0,re:[0,3,5,6],reach:[2,4],reachabl:[0,4,5,6],read:[0,1,6],readabl:[0,5,6],readi:[0,1,4,5],readili:8,real:[4,8],realli:[3,5],reason:[3,6],reassembl:6,recal:[0,5],recall_app_data:5,recap:6,receipt:[0,2,6],receiv:[0,5,6,7],received_announc:[0,5],reception_rssi:0,reception_snr:0,reception_stat:0,recip:1,recipi:6,recommend:[0,6],reconstruct:6,record:6,recoveri:3,recreat:6,refer:[0,1,2],regard:6,regist:[0,5],register_announce_handl:[0,5],register_request_handl:[0,5],rel:[6,8],relat:1,releas:[1,6],relev:[0,5],reli:6,reliabl:[3,4,6,8],rem:0,remain:6,rememb:6,remot:[0,5],remote_ident:[0,5],remote_identifi:0,remote_identity_hash:[],remote_p:0,remotesensor:6,repeat:1,replac:[1,6,7],repli:[0,7],replic:6,reply_data:0,reply_text:0,repositori:1,repres:6,represent:[0,6],request:[2,6,7],request_destin:0,request_fail:0,request_id:[0,5],request_packet:0,request_path:[0,5],request_receipt:[0,5],request_receiv:0,requested_at:[0,5],requestexampl:0,requestreceipt:5,requir:[0,1,3,4,6,7,8],research:8,resend:5,reserv:6,resili:8,resourc:[0,2],resource_callback:5,resource_sending_conclud:0,resource_strategi:5,respect:3,respond:[0,5],respons:[2,5],response_callback:[0,5],response_gener:[0,5],response_tim:[],rest:[4,8],restart:7,restartsec:7,result:[0,6],reticulum:[0,3,4],retransmiss:6,retransmit:6,retri:6,reveal:[5,6,8],review:8,right:4,rn:[0,1,5,7],rnode:[2,6,8],rnodeinterfac:3,rnpath:[1,2],rnprobe:[1,2],rnsconfig:1,rnsd:[1,2],rnstatu:[1,2],robot:6,rotat:6,round:[0,5,7],rout:[3,4,5,6,8],router:3,rprogress:0,rsa:[],rssi:0,rtt:[0,5,6],rttstring:0,rule:6,run:[0,1,4,5,6,7,8],runtim:6,rust:1,rw:6,rx:[3,7],s:[0,1,3,4,6,7,8],said:6,same:[1,3,5,6,7],satisfi:6,save:[5,6],save_error:0,saved_filenam:0,scenario:[1,2,6],scope:3,screen:0,search:2,second:[0,3,5,6,8],secreci:[5,6,8],section:[3,4,6],secur:[6,8],see:[0,4,5,6,8],seen:6,segment:[3,4],segment_index:[],select:[0,3],self:[0,4,8],send:[0,3,5,6,7],sender:[0,4,6],sendig:0,sensibl:1,sensor:6,sent:[0,5,6,7],sentiment:6,separ:[4,6,7],sequenc:[0,5,6,8],serial:[2,6,8],serialinterfac:3,serv:[0,4,6],serve_path:0,server:[0,1,2],server_callback:0,server_destin:0,server_fil:0,server_ident:0,server_link:0,server_loop:0,server_packet_receiv:0,servic:[1,2,4],session:6,set:[0,3,4,5,6,7,8],set_default_app_data:5,set_delivery_callback:[0,5],set_link_closed_callback:0,set_link_established_callback:[0,5],set_packet_callback:[0,5],set_proof_requested_callback:5,set_proof_strategi:[0,5],set_remote_identified_callback:[0,5],set_resource_callback:5,set_resource_concluded_callback:[0,5],set_resource_started_callback:[0,5],set_resource_strategi:[0,5],set_timeout:[0,5],set_timeout_callback:[0,5],setdaemon:0,setup:[0,2,3],sever:[1,4,5,7],sha256:8,sha:[5,6],shall:6,share:[1,4,5,6,7],she:4,shelf:[6,8],shop:0,shortest:6,shorthand:7,should:[0,3,4,5,6,8],should_allow_unencrypt:[],should_quit:0,should_use_implicit_proof:5,show:7,shown:0,side:8,sight:4,sign:[5,6],signatur:[5,6,8],significantli:[],similar:[3,4,7,8],simpl:[0,6,7,8],simplest:6,simpli:[0,1,3,4,6,7],simplic:6,sinc:[0,1,3,4,5,6],singl:[0,3,5,6,8],singular:6,sit:[],site:[2,3],situat:[4,6],size:[0,5,6],size_str:0,sleep:0,slice:0,slottim:[3,7],slow:[0,3,6],small:[0,3,4,6,8],snr:0,so:[0,1,3,4,5,6,7,8],softwar:[1,3,6,8],some:[0,1,3,4,6],someth:6,somethign:0,soon:5,sort:[3,6],soundmodem:3,sourc:[0,1,4,6,8],space:[0,4,8],span:6,special:[6,7],specif:[0,2,3,5,8],specifi:[0,1,3,4,5,7],spectrum:[3,6],speed:[3,7],split:0,sponsor:8,spread:3,spreadingfactor:3,squelch:3,ssid:3,stabl:[6,8],stack:[0,1,4,6,7,8],stage:6,stai:[0,7],standard:[1,6],start:[0,2,3,5,6,7],startlimitintervalsec:7,startup:0,state:0,station:[3,6],stationari:4,statist:0,statu:[0,1,2,5,6,7],stdout:0,step:1,still:[0,4,6],stock:0,stop:8,stopbit:[3,7],store:[0,6],store_tru:0,str:0,strategi:5,stream:6,strength:8,strictli:6,string:[0,5],strong:6,structur:6,subject:[],subnet:4,subsequ:6,succe:1,successful:5,successfulli:0,sucessfulli:6,sudo:7,suffic:6,suffici:[6,7],suffix:0,suit:[1,6],suitabl:[0,3,4,6],suppli:[4,5,6],support:[0,2,4,6,8],sure:[1,7],sy:0,symlink:[1,7],symmetr:[5,6],system:[0,1,2,3,5,8],systemctl:7,systemd:7,t:[0,1,3,4,6],tabl:[4,6],tail:3,take:[0,1,6,8],taken:[0,6],tangerin:0,target:[0,7],target_host:3,target_port:3,tcp:[1,2,4,6,8],tcpclientinterfac:3,tcpinterfac:7,tcpserverinterfac:3,tdata:0,teardown:[0,5],teardown_reason:0,teffect:0,tell:0,temperatur:6,ten:6,term:[4,6],termin:[1,5],terminolog:[4,6],termux:1,test:[3,6],testnet:7,text:[0,4,6],tfile:0,than:[0,4,6],thei:[0,4,5,6],them:[0,3,6],thereaft:6,therefor:[6,8],thi:[0,1,2,3,4,5,6,7],those:4,though:6,thourough:8,thread:0,three:[4,6],throough:3,throttl:4,through:[3,4,5,6,8],throughout:6,throughput:[6,8],thu:[4,5,6],ti:[0,6],time:[0,1,3,4,5,6,7],timeout:[0,5],timeout_callback:[],timeoutarg:0,timestr:0,tnc:[3,5,7,8],to_fil:5,todai:6,todo:[],togeth:6,token:[5,6],too:[0,4,6],tool:8,top:[4,6],topic:6,topographi:4,topolog:[3,6],total:[6,8],total_s:0,touch:8,toward:[0,6],tradit:4,traffic:[0,3,4,5,6],tramsit:[],transceiv:[3,6,8],transfer:[0,5,6,8],transfer_s:0,transmiss:[3,6],transmit:[0,3,6],transpar:[3,6],transport:[0,2,4,7,8],transport_en:5,transport_id:[],transport_typ:[],travers:6,treat:6,tri:0,trip:[0,5,7],trivial:8,truli:6,truncat:[5,6],truncated_hash:5,truncated_hashlength:5,trust:6,trustless:[6,8],ttime:0,ttransfer:0,ttyusb0:[3,7],ttyusb1:3,ttyusb2:3,tunnel:[6,8],tupl:5,turnaround:3,tutori:1,two:[0,3,4,6],tx:[3,7],txpower:3,txtail:[3,7],type:[0,2,3,4,5,7],typeerror:5,ubuntu:7,udp:[2,4,6,7,8],udpinterfac:[3,7],umsgpack:0,uncencrypt:0,under:7,underli:[4,8],understand:[1,2],unencrypt:[0,5,6],unequivoc:6,unforg:8,unidentifi:0,unifi:4,uninterest:0,uniqu:[6,8],unit:[0,7],unknown:[0,5,6],unless:[1,5,6],unlicens:6,unpack:0,unpackb:0,unplug:7,unreli:3,unsign:7,unsupport:5,until:[0,5,6],unwant:6,up:[0,1,4,6,7,8],updat:[0,1,5],upgrad:1,upon:[0,6],upset:0,urandom:8,us:[0,2,3,4,5,6],usabl:6,usag:7,usb:[4,6,7,8],useabl:6,user:[0,1,4,6,7],user_input:0,userland:8,usernameher:7,usr:7,utf:0,util:[0,2,6],utilis:[4,6,7,8],v:7,valid:[0,3,5,6,7],valu:[5,6],valueerror:[0,5],vari:7,variabl:0,varieti:[3,6,8],variou:[0,6],ve:1,vendor:0,verbos:7,veri:[4,5,6,7,8],verif:[5,6],verifi:[0,5,6],versa:[4,8],version:7,vhf:[4,6],via:[1,3,6,7],vice:[4,8],view:[1,6,7],virtual:4,visibl:0,wa:[0,4,5,6,8],wai:[0,1,3,4,6],wait:[0,6],want:[0,1,3,4,6,7,8],wantedbi:7,warrant:8,wast:3,wb:0,we:[0,3,6],well:[4,5,6,8],went:0,were:4,what:[0,1,2,5,6],whatev:[5,6],wheel:1,when:[0,1,3,4,5,6,7],whenev:5,where:[2,4,5,6,7],whereupon:6,whether:[0,3,5,6],which:[0,1,3,4,5,6,7],who:6,wide:[6,8],wifi:[3,4,6,8],wildcard:0,willing:4,window:6,wire:[3,6,8],wireless:4,wish:6,within:[0,1,3,4,5,6],without:[4,6,8],won:0,work:[1,6,7,8],world:[4,8],worri:4,would:[3,4,6],write:[0,1,5],written:6,wrong:0,x25519:[5,6,8],x:6,xenon:0,y:0,ye:6,year:6,yet:[0,6],yi:0,you:[0,1,2,3,4,5,6,7,8],your:[0,1,2,3,4,6,8],yourself:[6,8],z:0,zero:[5,8],zeromq:4,zi:0},titles:["Code Examples","Getting Started Fast","Reticulum Network Stack Manual","Supported Interfaces","Building Networks","API Reference","Understanding Reticulum","Using Reticulum on Your System","What is Reticulum?"],titleterms:{"1":[],"2":[],"25":3,"class":5,"function":6,"public":6,"try":1,The:[6,7],With:1,android:1,announc:[0,6],api:5,auto:3,ax:3,base:1,basic:6,binari:6,bridg:4,broadcast:0,build:4,can:8,caveat:8,client:3,code:0,concept:4,configur:7,converg:4,creat:1,current:8,deliveri:[],destin:[5,6],detail:6,develop:1,devic:8,doe:8,echo:0,emptor:8,establish:6,exampl:[0,4],fast:1,filetransf:0,fix:7,format:6,further:6,get:[1,6],gipsum:[],goal:6,growth:4,ident:[5,6],identif:0,improv:7,includ:[1,7],indic:2,interconnect:4,interfac:[3,8],internet:4,introduct:6,kei:6,kiss:3,link:[0,5,6],lora:[3,4],manual:2,mechan:6,minim:0,motiv:6,name:[6,7],network:[1,2,4],node:6,offer:8,orem:[],over:4,overview:4,packet:[5,6],particip:1,pathfind:[],port:7,predict:[],prioritis:6,program:[1,7],protocol:6,proven:[],reach:6,receipt:5,refer:[5,6],request:[0,5],resourc:[5,6],respons:0,reticulum:[1,2,5,6,7,8],rnode:3,rnpath:7,rnprobe:7,rnsd:7,rnstatu:7,run:[],scenario:4,serial:[3,7],server:3,servic:7,setup:6,site:4,specif:6,stack:2,start:1,statu:8,step:[],support:3,system:[6,7],tabl:2,tcp:3,transport:[5,6],type:[6,8],udp:3,understand:6,us:[1,7,8],util:[1,7],what:8,where:8,your:7}}) \ No newline at end of file diff --git a/docs/manual/whatis.html b/docs/manual/whatis.html index 0a31bb4..2fdbd3d 100644 --- a/docs/manual/whatis.html +++ b/docs/manual/whatis.html @@ -43,7 +43,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.

          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