Software

Here is a list of software created at the WINET laboratory. Most are open source and free for download.

DeepWiFi

DeepWiFi is a control framework that implements reinforcement learning algorithms, such as Q-Learning; Multi-Armed Bandit and Deep Q Learning. It is implemented in ways that allow its use in production systems where there are significant delays in the sensing and actuation of the environment.

DeepWiFi is programmed using well established math and machine learning libraries such as Numpy, Pandas, Tensorflow and Keras. The code is available at GitHub. The framework has four basic components: the controller, the agent, the model (which is used to implement the value function), and the environment.

The controller loads the experiment, creating the agent, the environment, and activating the required devices via commands sent with SSH. The agent implements an interface that executes the learning loop, reads the state of the devices, determines the action according to the implemented policy, sends to the environment which action to take, receiving the reward and the new state, and based on this updates a value function. The environment is based on a messaging system called command_ap, also developed for this thesis and available at GitHub. This messaging system handles sending synchronous or asynchronous requests to devices, requesting status information, taking actions, and evaluating the reward.

ManIoT

ManIoT is a platform for controlling IoT devices from several manufacturers. It has many interesting features, such as drivers for OEM devices as well as your own devices. It also has a context-aware access control system. The code can be found in Gitlab. Articles describing the platform and describing the access control system are also available.

ULOOF

ULOOF is an Android API that can be used in Apps to offload computation to the cloud. This software is maintained in partnership with LIP6 (France), CNAM (Feance) and University of Bologna (Italy). It can be downloaded in the project’s website.


Bwping-udp network measurement tool

Performance evaluation is an important process on the development of new protocols and networks. The existing tools are not suited to evaluate wireless networks, since they neglect features as packet losses and jitter caused by retransmissions at the MAC layer, which are commonplace in wireless networks. bwping-udp is a performance evaluation tool for wireless networks that measures throughput, jitter and loss rate. Its aim is to be used in research as well as to characterize the quality of the network in an environment. More details can be found in our github repository.


SDR Modules in GNU Radio

We have developed a series of modules in GNU Radio. The FS-MAC repository provides a system that changes MAC protocols based on a fuzzy decision system. It implements TDMA and CSMA over IEEE 802.15.4. The repository is in GitHub.


Ethanol – an SDN southbound interface for IEEE 802.11

Ethanol is a southbound SDN interface for IEEE 802.11 access points. It can control physical and MAC layer parameters such as the channel, transmission power, SSID. It can also be used to receive reports such as the SINR,a scan of the nearby WiFi networks, among many other commands. The code is available in GitHub.


Fast Packet Processing with eBPF and XDP: Concepts, Code, Challenges and Applications

This tutorial aims to present eBPF to an inexpert audience, covering the main theoretical and fundamental aspects of eBPF and XDP, as well as introducing the reader to simple examples to give insight into the general operation and use of both technologies. The code is available in GitHub.