sudomesh / LoRaLayer2

Layer 2 routing protocol for LoRa connected devices
86 stars 29 forks source link

DSR-style routing support #12

Closed paidforby closed 4 years ago

paidforby commented 4 years ago

This introduces a completely new packet structure and packet parsing logic that allows for full routing capabilities without having to transmit routing table packets at regular intervals. Changes were discussed in depth in the following issue, https://github.com/sudomesh/disaster-radio/issues/57#issuecomment-614777222. Most changes to the protocol have been documented on the protocol wiki page.

The basic idea is that the packet header now contains enough information for nodes to build routes during normal operation (i.e. sending messages user-to-user), such that airtime can be reserved for actual communication instead of being taken up with large control messages.

Routing table packets (control messages) are, currently, still enabled by default, but they can be disabled by setting the routing interval to zero with LL2.setInterval(0).

There are some considerations when choosing between the reactive (DSR/packet-driven) routing and the proactive (routing table driven) routing options.