This permits to compute the checksum of routes and see if the controller has the same routes. This minimises the control overhead see paper "Energy-aware routing for software-defined multihop wireless sensor networks".
This DB is populated when the NC routing packets have been acknowledged.
Updated: We now populate the NC routing for each node when generating routes and we set the configure flag when they are acknowledged.
There are issues when plotting the currently deployed paths, as some of them stay on the table.
One solution could be to store currently deployed routes in a different DB collection. But, we may need to keep the known sensor routes as well (different collection).
To solve this, we use the latest entry of the "historical-routes" collection, which holds the latest routing paths. We then verify whether these routes have been already deployed or not by querying the "fwd_table".
When sending the serial data to the controller there is an issue with the byte order. Now it is working correctly with python running in MacBook Pro (14-inch, 2021). It may stop working if it runs in a different architecture.
This issue will implement a simple routing algorithm in the serial controller. This will require the implementation of all methods needed. In the end, the controller will successfully modify the forwarding paths of all sensor nodes.
The up-to-date routing paths for the network should be stored in a pandas dataframe. This may facilitate the access and processing of such information. This may be done in a separate file containing the class.
Once the paths are found running the routing algorithm, they need to be stored in the correct format in the dataframe. It then needs to be saved in MongoDB.
Suppose we received the following path "1-2-3-4". The following routes are built.
Once we send routing reconfig packets, we need to store the ACKs for that packet, as multiple packets can be sent and ACKs may arrive in a different order.
Currently, we are saving the routes found using the routing algorithm in the historical-routes db, and we assume that previous routes in db have been already deployed.
However, this might not be always the case. We potentially need to use a flag to identify which routes have been deployed. This flag inherits the status from the historical routes.
One solution is to check if the routes already exist in the node. See issue #16
The controller needs to set the hop limit to RA/SA packets. This is a controller BC, so it won't flood the entire network if only requires updating nodes close to the controller.
Currently, neighbours (NBs) are stored within the "Nodes" collection. This is historical data that contains link status with NBs. The routing protocol should have easy and fast access to the current alive links. It does not care for the past link status, at this stage. The historical data can be used for ML implementations in future.
All NC packets are placed in a queue. In this case, we address routing reconfiguration packets. For these packets, we send them in order-therefore they are stored in a FIFO queue.
The Queue should point to the node number instead of the whole data frame.
The controller, which runs natively using python, needs to send network configuration packets to all sensor nodes. Therefore, the network reconfiguration methods need to be implemented.