routing
Routování zpráv v MeshCore
Direct routing
(poslání konkrétní protistraně napřímo)
Příklad situace: s někým jsem si vyměnil klíče a můžeme si tedy vzájemně napsat zprávu. Oba jsme se rozjeli na opačný konec sítě. Toto je popis, jakým způsobem se rozhoduje routování, když se rozhodneme si v takovém okamžiku napsat:
- odesilatel nemá direct cestu k protistraně, pošle zprávu jako flood (doslova záplava)
- každý repeater co ho slyší, k tomu přilípne svoje ID (první bajt pubkey) jako „šlo to tudy“, zopakuje a nacachuje si ji na chvilku, aby věděl, že tuhle už posílal, až ji uslyší od dalších repeaterů
- eventuálně to takhle probublá kusem sítě a dorazí to k adresátovi a ten vidí „aha, to je pro mě“
- síť neví, že už to bylo doručené, adresát to klidně ještě uslyší z více směrů, ale už mu to je jedno, už to dostal
- adresát odešle odesilateli zprávy ACK (doručenku) se sekvencí prvních bajtů public key každého repeateru, přes který to k němu šlo - opět jako flood (direct ack by měl asi problémy se spolehlivostí, pokud by nedostal ještě ack-ack, ale tohle není TCP
)
- odesilatel dostane ack a „cestu“ tvořenou sekvencí ID repeaterů - tu si uloží a odteď to tomuto adresátovi bude posílat directem přesně tudy, dokud na nějakou odeslanou zprávu již nedorazí ack - v takovém případě to zase zkusí floodem od bodu jedna a potenciálně si vytvoří jinou cestu
Další zpráva, tím samým směrem, tentokrát direct:
- odesilatel pošle zprávu adresátovi a do packetu vloží tu sekvenci IDéček jako předepsanou cestu.
- Každý repeater, co to uslyší, si porovná ID na začátku cesty se svým a jestli je stejné, z cesty to první ID odřízne a packet zopakuje, jinak ho zahodí - další repeatery postupují stejně.
Čili o routě má hlavní slovo odesílající zařízení, repeatery už to jen na základě jednoduchých podmínek pošlou dál nebo ne. O konkrétní routě tedy rozhoduje, kudy se zpráva do destinace dostane jako první.
Některé aspekty jsou v popisu technicky zjednodušené, slouží hlavně k popsání principu.
routing.txt · Poslední úprava: autor: alkel_u3
