Routing process

A description of the routing process involved

Prerequisites: Readers should be familiar with the structure of the packets.

A packet includes a sender, a recipient and a target
The sender is set by the module creating the packet. The sender remains unchanged by any intermediary hop.
The recipient is set to the next hop on the route. The recipient field is always updates by any intermediary hop. Specifically, it is set to the next hop
The target is set by the sender. The target remains unchanged by any intermediary hops. The target is the ultimate destination for the packet.

On any incoming packets the routing table is updated.
Thereafter the following decision table is used to determine what to do with the packet:

RecipientTargetAction
MeMeprocess the packet
MeBroadcastbridge packet
MeAnyone1forward
MeServerforward
BroadcastMeprocess the packet
BroadcastBroadcastprocess the packet
BroadcastAnyone1discard
BroadcastServerdiscard
ServerMediscard
ServerServerdiscard
ServerBroadcastdiscard
ServerAnyone1discard
Anyone1Mediscard
Anyone1Anyone1discard
Anyone1Broadcastdiscard
Anyone1Serverdiscard
1Anyone means any destination, which is neither "me", "broadcast" or "server".
Note: Contrary to, for example, switched ethernet, the 868Mhz radio will pick up any packet being sent, thus it is important to filter out packets not intended for the listener

Processing a packet

The packet is processed locally. The packet is ACK'ed as success if it is executed properly or if it has turned into a no-op locally. It is ACK'ed as failure if a code path fails for any reason.

Forwarding a packet

If a route is known towards the target, a packet with flags FORWARD and SUCCESS is generated and send to the sender via the best known route to the sender (which may be different from the one the packet has arrived on).
Note: the FORWARD and SUCESS packet signals only that a route was known and an attempt is started to deliver the packet. it does not indicate successfull forward delivery.
if no route is known towards the target, same process as above, except the SUCCESS flag is omitted.

Bridge a packet

The packet is sent as a broadcast on all media except the one where it came in on.
For example: If the packet came in via wireless (WLAN, 802.11) it will be forwarded via the 868Mhz radio, but not on the wireless. No ACK will be generated.

Discarding a packet

The packet is silently dropped.

Host types

We know several different hosttypes
1. a switch (e.g. a ) plug/socket
2. a java application/library (swing/android)
3. a cloud application