Så hittar trafiken fram¶
Reticulum fungerar annorlunda än ett vanligt IP-nät. Du behöver normalt inte dela ut IP-adresser, planera subnät eller lägga in routingtabeller för varje destination.
I stället arbetar Reticulum med destinationsadresser, announces och vägar som lärs in av nätet.
Ett enkelt exempel¶
Anta att Anna och Bertil använder Columba.
- Annas Columba skapar en destination för meddelanden.
- Annas app skickar en announce.
- Reticulum-instanser som hör annonsen lär sig varifrån den kom.
- Transportnoder kan föra annonsen vidare och komma ihåg nästa steg mot Anna.
- Bertils app får veta Annas destination och kan begära en väg om den saknas.
- Meddelandet skickas genom den väg som nätet känner till.
- Mellanliggande transportnoder för trafiken vidare utan att behöva (eller kan) läsa av innehållet.
flowchart TB
A[1. Annas app skickar<br/>en announce]
T1[2. Transportnod 1<br/>lär sig vägen]
T2[3. Transportnod 2 för<br/>annonsen vidare]
B[4. Bertils app får kännedom<br/>om destinationen]
M[5. Bertil skickar ett<br/>krypterat meddelande]
D[6. Transportnoderna för<br/>trafiken tillbaka]
L[7. Annas app tar emot<br/>meddelandet]
A --> T1 --> T2 --> B --> M --> D --> L
Det exakta antalet hopp kan vara noll, ett eller flera. Om Anna och Bertil hör varandra direkt behövs ingen transportnod mellan dem.
Destinationer i stället för vanliga IP-adresser¶
En destination tillhör en viss funktion i en app eller tjänst. Den är alltså inte samma sak som en fysisk enhet.
En dator kan samtidigt ha destinationer för exempelvis:
- en meddelandeapp
- en filöverföringstjänst
- en informationssida
- en sensor
Destinationsadressen visas som ett kortare kryptografiskt hashvärde. Den är inte bunden till en viss IP-adress, internetleverantör eller fysisk plats.
Det gör att samma destination kan flytta mellan olika länkar. Den kan exempelvis först nås över Wi-Fi och senare över LoRa, så länge nätet får en ny announce och lär sig den nya vägen.
Finns det DNS?¶
Reticulum har inte ett centralt DNS-system som översätter vanliga domännamn till nätverksadresser.
Appar kan visa kontaktens namn, profil eller tjänstens titel, men Reticulum identifierar själva destinationen kryptografiskt. Namnet i en adressbok är därför främst något appen visar för människor.
Det finns heller ingen central adressutdelare. En app kan själv skapa de destinationer den behöver.
Vad är en announce?¶
En announce är en signerad presentation av en destination. Den kan göra två viktiga saker:
- ge andra noder information som behövs för att känna igen destinationen
- hjälpa nätet att lära sig vilken väg som leder dit
En announce är inte samma sak som att hela användarens meddelandehistorik eller privata nycklar skickas ut.
Announces bör inte skickas onödigt ofta, särskilt inte över långsamma radiolänkar. Appar och Reticulum hanterar normalt detta åt dig.
Vad händer om vägen saknas?¶
Om en instans känner till destinationsadressen men inte har en aktuell väg kan den skicka en path request.
Transportnoder som känner till destinationen kan då hjälpa till att återställa vägen. När en användbar väg har hittats kan trafiken börja skickas.
Det betyder att första leveransen ibland tar längre tid än efterföljande leveranser.
Instance och Transport Node¶
Alla enheter som kör Reticulum är instanser. Bara vissa bör vara transportnoder.
Vanlig Reticulum-instans
Skapar destinationer och skickar eller tar emot den egna trafiken.
Det här passar telefoner, datorer, sensorer och de flesta andra klienter.
Transportnod
För trafik åt andra, förmedlar announces och håller reda på vägar.
Rollen passar stabila, välanslutna och ofta påslagna system.
Gör inte allt till transportnod
Fler transportnoder är inte automatiskt bättre. Transportnoder använder minne, processorkraft och bandbredd för nätets underhållstrafik.
På långsamma LoRa-länkar kan för många transportnoder göra nätet sämre. Välj hellre ett mindre antal stabila och strategiskt placerade noder.
Flera olika länkar kan ingå i samma nät¶
Reticulum kallar varje anslutningssätt för ett interface. En transportnod kan ha flera interface och binda ihop olika nätsegment.
Ett exempel:
flowchart TB
P[Telefon med Columba]
W[Lokalt Wi-Fi]
G[Transportnod<br/>hemma]
R[RNode och LoRa]
F[Fjärrplacerad<br/>transportnod]
S[Tjänst eller<br/>annan användare]
P --> W --> G --> R --> F --> S
Samma transportnod kan dessutom ha en TCP- eller I2P-länk. Reticulum avgör sedan vilka kända vägar som finns till destinationerna.
Är en publik TCP-nod en central server?¶
Den kan vara en viktig passage, men Reticulum kräver inte att alla använder just den noden. Du kan:
- ansluta lokalt utan internet
- använda en annan publik nod
- bygga en egen transportnod
- ansluta nät direkt över radio, Ethernet eller andra länkar
- kombinera flera vägar
En publik nod bör därför ses som infrastruktur i nätet, inte som ägare av användarnas identiteter eller konton.
Hur fungerar meddelanden när mottagaren är offline?¶
Reticulum transporterar nätverkstrafik, men lagrar inte automatiskt alla meddelanden tills mottagaren kommer tillbaka.
För fördröjd leverans använder meddelandeprotokollet LXMF propagation nodes. De kan hålla ett krypterat meddelande tillfälligt så att mottagaren hämtar det senare.
Det är en separat roll från en Reticulum-transportnod:
- transportnoden hjälper trafik att hitta och färdas längs vägar
- propagation node hjälper LXMF med lagring och senare leverans
Samma dator kan köra båda funktionerna, men de är fortfarande olika tjänster.
Vad händer på en långsam LoRa-länk?¶
Reticulum kan fungera med mycket låg bandbredd, men appens funktioner måste fortfarande anpassas efter länken.
Över en långsam LoRa-länk bör du räkna med:
- längre leveranstid
- små meddelanden i stället för stora filer
- att bilder och ljud kan ta lång tid
- att realtidstjänster kräver betydligt bättre kapacitet
- att onödiga announces och andra nätverksmeddelanden kostar värdefull sändningstid
Att en app har stöd för en funktion betyder alltså inte att funktionen är praktisk över varje sorts länk.
Nästa steg¶
- Kom igång med Reticulum
- Använd Reticulum över LoRa med RNode
- Reticulums kapitel Understanding Reticulum
- Reticulums kapitel Building Networks