Panoramatický výhled na krajinu z vrcholu kopce

Nastavení cesty

Jak funguje automatické nastavení cesty při posílání zpráv mezi dvěma účastníky.

Rychlé shrnutí

tldr; Zpráva floodem od jednoho účastníka ke druhému nastaví cestu mezi dvěma účastníky v obou směrech, pomocí tří odeslaných paketů.

Technické poznámky

Poznámka

V MeshCore protokolu existuje základní princip vyhledání a nastavení cesty, ten je dán implementací v protokolu. Meshy nebo MeshCoreOpen tento princip dále rozšiřují o logiku Smart routingu, kdy si pamatují několik posledních zpráv, případně si k nim ukládají statistiku úspěšnosti.

Poznámka

Při Flood provozu repeatery před přeposláním paketu obvykle čekají náhodně zvolenou dobu. Tím se snižuje pravděpodobnost, že více repeaterů začne vysílat současně a dojde ke kolizi. Zároveň to znamená, že při odeslání zpráv pomocí flood mohou putovat zprávy často jinou cestou.

Poznámka

Při odesílání Floodem, mohou pakety z A do B dorazit do B několikrát. MeshCore protokol implementuje de-duplikaci na úrovni paketu.

Detailní Popis Nastavení Cesty

Alfa si píše s Betou a ani jeden uzel zatím nemá uloženou cestu k druhému:

  1. Zpráva Alfa → Beta: zpráva putuje z Alfy přes repeatery pomocí Flood. Repeatery postupně do paketu se zprávou zaznamenávají své prefixy jako informaci o cestě. Beta přijme zprávu, která kromě vlastního textu zprávy obsahuje také cestu, po které dorazila, tedy A → B.

    Aktuální stav: Beta má zprávu, ale Alfa zatím nemá ACK a nikdo nemá nastavenou cestu.

  2. Beta → Alfa: ACK + path. Beta automaticky odesílá potvrzení o doručení zprávy (ACK) spolu s informací o cestě, po které zpráva přišla z A do B, toto je odesláno pomocí Flood. Při tomto přenosu se současně k tomuto ACKu postupně doplňují prefixy o cestě z B do A. Alfa tak obdrží ACK, cestu A → B i informaci o návratové cestě B → A.

    Aktuální stav: Alfa má potvrzení o doručení zprávy (ACK) a na Alfě se nastaví cesta k Betě.

  3. Alfa → Beta: PATH_RETURN. Alfa automaticky odesílá nalezenou návratovou cestu B → A zpět Betě pomocí předešle nalezené cesty A do B.

    Aktuální stav: Beta obdržela cestu k Alfě a nastavuje si ji.

Výsledek: Na základě této první zprávy mají nyní Alfa i Beta uloženou cestu k druhé straně a mohou pro další komunikaci použít odeslání pomocí cesty místo Flood.

Každá další Flood zpráva přenastaví cestu podle cesty nově nalezení díky Flood zprávě.