This project implements an Extended Kalman Filter (EKF) extension for the RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks) protocol within the OMNeT++ simulation environment.
The goal is to improve packet delivery reliability in high-mobility Wireless Sensor Networks (WSN), such as drone swarms or autonomous robotic shuttles, by proactively predicting node movement and pruning unstable links before they break.
This workspace contains three main modules:
inet/: The standard INET Framework (v4.2.8).omnetpp-rpl/: The core implementation module.- Modified: Contains the custom
EkfRplmodule,EKF.cc(Kalman logic), and the modifiedEkfRplRouter.ned.
- Modified: Contains the custom
wsn_baseline/: The simulation project.- Contains
omnetpp.iniconfigurations,WsnNetwork.ned, and analysis files (.anf) for comparing Baseline RPL vs. EKF-RPL.
- Contains
Unlike traditional implementations that use complex 2D matrix libraries, this project uses two lightweight, independent 1D Linear Kalman Filters (one for X-axis, one for Y-axis) to track node trajectory. This reduces computational overhead suitable for constrained IoT devices.
The standard RPL protocol is reactive (waiting for a link to fail). This project makes it proactive:
- Intercepts
DIOcontrol packets. - Predicts the sender's position 3 seconds into the future.
- Drops the packet if the node is predicted to move out of the 200m radio range (Safety threshold: 150m).
- Prevents the routing table from selecting a parent that is about to disconnect.
Includes tuned Trickle Timer parameters in omnetpp.ini to handle speeds of 5–15 m/s:
dioIntervalMinreduced to 0.1.dioRedundancyConstantincreased to 10.
-
Prerequisites:
- OMNeT++ 5.7
- INET Framework 4.2.8
-
Clone the Repo:
git clone [https://github.com/Alpsource/ekf-rpl-omnetpp.git](https://github.com/Alpsource/ekf-rpl-omnetpp.git) cd ekf-rpl-project -
Install INET Framework:
- Download INET 4.2.8 (ensure it is compatible with your OMNeT++ version).
- Extract or clone it into the root of this workspace so the folder is named
inet. - Your structure should look like this:
ekf-rpl-project/ ├── inet/ <-- You place this here ├── omnetpp-rpl/ <-- Included in repo └── wsn_baseline/ <-- Included in repo - Build INET:
cd inet make makefiles make cd ..
-
Build RPL Module: Navigate to
omnetpp-rpl/and run:make makefiles make
-
Run Simulation: Navigate to
wsn_baseline/and execute the simulation:./wsn_baseline -m -u Cmdenv -c EKF_RPL
Simulation results (50 nodes, 500x500m area, Gauss-Markov mobility 5-15 m/s):
| Metric | Baseline RPL | EKF-RPL (Proposed) |
|---|---|---|
| PDR | 33.96% | 36.32% |
| Packets Received | 849 | 908 |
| Avg Delay | 554 µs | 576 µs |
While the PDR increase is modest (~2.4%), it proves that predictive logic effectively filters unstable parents in highly dynamic environments.
- Original RPL Implementation: ComNetsHH/omnetpp-rpl
- INET Framework: inet-framework/inet
This project follows the licensing of the underlying INET and OMNeT++ frameworks (LGPL/GPL).