-
Notifications
You must be signed in to change notification settings - Fork 7
Home
This wiki presents documentation and related information for RLRP – Reinforcement Learning Routing Protocol. RLRP is a multi-hop routing protocol implementation for wireless and wired ad hoc networks with either static or dynamic topologies, which could be used in various communication scenarios in multi-hop networks, such as sensor networks, mesh networks, static outdoor networks, mobile ad hoc networks (MANET), vehicular ad hoc networks (VANET), etc.
The main idea of RLRP is to apply a Reinforcement Learning mechanism from Machine Learning theory to a problem of decision-making for further packet forwarding actions. The RLRP is based on dynamic calculation of some "estimation" value for the given packet destination address. Those values are being dynamically modified by means of so-called "reward mechanism", which represents some feedback values for the chosen "actions" - a packet forward events to the selected next-hop node. This routing protocol works on Linux-based machines with TCP/IP stack, and provides the routing functionality for any data packets with either IPv4 or IPv6 addressing.
The protocol relies on Linux TCP/IP stack, since all the communication between the protocol’s instances is built upon Linux socket interfaces, in particular, on the raw sockets. However, it is independent from the upper layers (L4 and upper applications), as well as from the lower layers – L2 and L1. This makes the protocol independent from upcoming application traffic, as well as from an underlying link connectivity, which can be based, for example, on: 802.11 ad-hoc MAC, 802.15.4, PLC, RF interface, and so on, as long as one has necessary support from the Linux networking stack. In addition, since the protocol is written purely on Python 2.7.x
, there must be a relevant python-interpreter available as well.
Strictly speaking, the RLRP is a protocol of layer 3 (L3), so its main functionality is in the packet routing, which includes algorithms for finding a path to a given destination node, maintaining the paths in actual state, as well as performing a packet forwarding towards a destination in the most optimal way possible. Moreover, the protocol has its own header for both user data packets (broadcast and unicast) and self-generated service messages, which is being inserted between the L2 and L3 (typically, IPv4 or IPv6) headers of the original packet, coming from the upper application layer.
This documentation consists of two main parts – the protocol’s detailed description of its working principle, presented in RLRP logic page, and description of the programming implementation of the protocol itself – a program structure, main modules, and logical schemes behind them, presented in RLRP programming implementation page.
Doxygen code documentation is available here: