This project implements a custom version of the AODV Protocol. It's much simpler and not complete.
This programm should run on a machine connected via Serial Port to a LORA Module. It implements an Ad-Hoc Multi-Hop-Routing Protocol with a graphical Interface. Furthermore this programm is able to discover other Nodes, send and receive messages.
All AODV steps are implemented besides:
- Expanding Ring Search by RREQs (6.4)
- Gratuitous RREPs and Intermediate RREPs (6.6.2) & (6.6.3)
- Hello-Messages (6.9)
- Maintaining Local Connectivity (6.10)
- Local Repairs (6.12)
- Actions after Reboot (6.13)
- Interfaces (6.14)
- Subnetworks
Restrictions:
- Max Tries: 3
- Timeout RREQ: 30s
- Timeout ACK: 4s - 6s
- Timeout Payload: TimeoutACK.max * RouteHopCount
- Route Lifetime = Route Deletion Time = 3 min = 180 s
- Blacklist duration = 3 min = 180 s
- Adressen 1-20 (z.B. 144 -> 14)
All Packets are encoded as Bytes
(5,11,13,1,Hello)
[05 0B 0D 01 48 65 6C 6C 6f]
RREQ (broadcast):
- Type: 1
- U-flag
- Hop Count
- ID / Broadcast ID / RREQ ID
- Origin Address
- Origin Sequence Number
- Destination Address
- Destination Sequence Number
RREP: (Are always acknowledged, AT+DEST=PreviousHopAddr)
- Type: 2
- Hop Count
- Origin Address
- Destination Address
- Destination Sequence Number
- Lifetime in s (Lifetime left)
RERR (sent if no SEND-HOP-ACK received):
- Type: 3
- Destination Count
- unreachable Destination Address
- unreachable Destination Sequence Number
- additional Addresses
- additional Sequence Number
RREP-ACK (AT+DEST=PreviousHopAddr):
- Type: 4
SEND-TEXT-REQUEST (STR, AT+DEST=NextHopAddr)
- Type: 5
- Origin Address
- Destination Address
- Message Sequence Number
- Payload (max. 30 Byte)
SEND-HOP-ACK (AT+DEST=PreviousHopAddr)
- Type 6
- Message Sequence Number
SEND-TEXT-REQUEST-ACK (STR-ACK, AT+DEST=NextHopAddr)
- Type: 7
- Origin Address
- Destination Address
- Message Sequence Number
- Clone Repository
- Run:
mvn clean package
- Run:
java -jar --module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.fxml LoraProtocollInterface-1.0-SNAPSHOT-jar-with-dependencies.jar
- Unzip
- Run:
java -jar --module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.fxml LoraProtocollInterface-1.0-SNAPSHOT-jar-with-dependencies.jar