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.
Reactive requires that users be actively using the network for it nodes to build routes and respond to changes in the network structure.
Proactive is autonomous and will converge much more quickly, but may result in a node missing packets since it may be transmitting a control message.
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.