Používá se jednoduchý záplavový algoritmus, který zohledňuje hodnotu TTL nastavenou ve zprávě. Ta tedy zaplaví okolí, ale nezahltí celou síť.
Presne na tohle sem se chtel taky zeptat, ale nevydrzel sem to a nasel si odpoved. Pouzivaj managed flooding. Kazda zprava ma hoplimit a tedy limit jak daleko se dostane + nody pry koukaj jestli nekdo jinej retransmituje a kdyz jo, tak to vynechaj. Tedy by se asi melo eliminovat putovani stejnym smerem - zpravy ktery uz zarizeni videlo nepreposila, ale porad se to posila na vsechny strany. Prej chytry routovai by vyzadovalo vykon v zarizenich a nejaky zpravy na udrzovani routovacich informaci. https://meshtastic.org/blog/why-meshtastic-uses-managed-flood-routing/
16. 10. 2024, 08:13 editováno autorem komentáře
to routovani ve velkych sitich bude narocna zalezitost. uvazoval jsem o siti z mobilnich telefonu jen pomoci bluetooth a wifi bez gsm sluzeb. ale proroutovat zpravu mezi hromadou telefonu v adresatovi by bylo narocne. taky me napadlo, ze by slo mozna pouzit pravidlo 6 stupnu odlouceni, ale to by kazdy telefon musel mit seznam ostatnich zarizeni a kazdy stroj s unikatnim id.
To musi byt strasne neefektivni prece.
V podstate to je broadcast a nody si hlidaj at se nezacykli na te same zprave.
A siri se to jako vlna / wavefront, jak kdyz zapalite listi v lese? (jen tedy s omezenim TTL).
Takze kapacita cele site je stejna, jako kapacita jednoho nodu? Cekal jsem neco lepsiho teda, kdyz uz nekdo buduje mesh.
Tohle je dobry leda tak na velikou zahradu / halu. Ne na celorepublikovy site napr.
Kdybych to resil ja, tak na ty nejnizsi vrstve bych nechal idenfitikaci verze protokolu (napr. jak mate v IP pak verzi 4 ci 6), a node bude pracovat se svoji verzi, ci verzemi ktere zna, a navic by mohl mit schopnost detekovat (pocitat) pocet paketu ktere nezna - a pak to v telemetrii sdelovat.
Pak by nekdo, kdo se o tyhle nody stara a dohlizi na ne, mohl vedet ze chytrejsi sousedi upgradovali.. a mohl zvazit prechod svych zarizeni na tu novou verzi.
Zda podporovat dve verze ( N a N+1 ), nebo podporovat dve stylem ( #1 a N ), aby slo delat OTA upgrade fw pres tu #1, uz necham na nekom jinem :-)
Ten filtr poslechem sousedů mi přijde divný. To přece musí narazit na problém vzdálenějších nodů:
Pokud máme skupinu A - B - C - D, kde se překrývá dosah sousedů tak, že B slyší A, C slyší A i B, ale D neslyší A ani B, tak zpráva od A k D nedorazí:
- A vyšle zprávu.
- B ji uslyší a přepošle (ale D ji neslyší)
- C ji uslyší, ale uslyší i opakování of B, tak je ticho
- D neslyší nic
Bylo by zajímavé to zkusit na tom jejich simulátoru https://github.com/meshtastic/Meshtasticator/blob/master/INTERACTIVE_SIM.md
a vysle zpravu a b ji slysi, b ji posle c.
c ji mohlo slyset treba poprve od a tak uz ji ignoruje od b.
c ji mohlo slyset poprve od b tak uz ji ignoruje od a.
d ji treba muze slyset od c a c ji do d posle, protoze ji neposle jen do a nebo b, ale d ji z a ani b nemohlo slyset, tak d ji muze slyset jen od c.
takze nevidim problem.
"B" zprávu nepošle "C", "B" zprávu prostě zopakuje.
"C" ji znovu nikam nepošle, protože už ji slyšelo od "A" i "B".
Tam není nic jako "C" ji do "D" pošle, ale do "A" nebo "B" ne. Tam se to buď odvysílá, nebo neodvysílá. Je to rádiový broadcast. Takže pokud to "C" nepošle, tak "D" nic neuslyší.
Takže ta optimalizace na omezený retransmit je buď hodně agresivní a "D" zprávu nedostane, nebo to neustálé opakování tu frekvenci zaruší na celkem dost dlouho a "A" svoji zprávu uslyší minimálně dvakrát znovu.
Jen abychom si rozuměli. Tam není žádný cíl nebo next hop. Meshtastic nemá ustálenou a sestavenou topologii. Používá "chytrý" flood broadcast.
Ale o tom se tu přece celou dobu bavíme. "C" ji nepošle. Protože optimalizace broadcastu.
"C" tu zprávu už slyšelo od autora "A" a slyšelo její opakování od "B".
Takže pokud Michal Hrušecký píše, že
Kazda zprava ma hoplimit a tedy limit jak daleko se dostane + nody pry koukaj jestli nekdo jinej retransmituje a kdyz jo, tak to vynechaj.
Tak "C" tu zprávu neodvysílá a "D" ji nedostane.
Tady https://meshtastic.org/docs/overview/mesh-algo/#example je napsáno to samé:
Since node 1 heard the rebroadcast by 2, it will not rebroadcast again.
Jediná optimalizace tohoto problému, kterou jsem našel je, že příjemci s nižším SNR opakují první (kratší timeout). Což funguje jen pokud je to stejný hardware se stejnou anténou.
Ne, neodešle. Jasně jsem Vám to citoval z webu Meshtasticu a je to vidět i v tom časovém diagramu tam.
Node 1 to v jejich příkladu nikdy neodvysílá.
https://meshtastic.org/assets/images/SNR_based_flooding-c574565610e85879688f3c96e4494e92.webp