# A Lightweight Slice-Based Quality of Service Manager for IoT
## 3 Softway4 IoT
### Architecture  
The architecture of SOFTWAY4 IoT is composed of the following modules, as shown in Figure 3: (i) Web-based Gateway Manager (WebGM), which is a web management interface that directly connects all modules; (ii) Fog Computing Manager (FCMan), which allows virtualised computational resource management for services and/or applications instantiated in a Virtual Machine (VM) and in isolated Docker [36] containers; (iii) Software-Defined Networking (SDN), which is the composed by the Slice Manager (SMan) and Network Security Manager (NSMan) using the OpenFlow/OvS as its Southbound Interface and Ryu [37] as the controller; and (iv) Software-Defined Wireless Interfacing (SDWI), responsible for handling the transmission and reception of the several considered wireless technologies such as LoRa, ZigBee, WiFi, and BLE.  
* WebGM: The web interface is directly connected to all modules. It provides the network administrator with the ability to perform careful management of the tool functionalities and components; it can be seen as a good choice to accommodate the third OpenFlow downside. The used programming languages for this component development were Flask [38] (backend), PostgreSQL [39] (database), Python [40], html5 [41], JavaScript [42] and AngularJS [43] (front-end).
* FCMan: It allows for the virtualised computational resource management, allowing both users and the infrastructure itself to run and isolate (if needed) several services or applications. These users and infrastructure services are all instantiated in a VM and in isolated Docker [36] containers. The software behind the FCMan module mainly relies on Python, Flask and the REST API.
* SDN: The module's main concerns are related to the network components' configuration, representing the Control Layer. It is split into two major components, where SMan is mainly responsible for the slice performance, isolating each IoT device by considering its general use case characteristics. On the other hand, the NSMan addresses the basic network security needs such as NAT, firewall and intrusion detection. It considers OpenFlow as its Southbound Interface, and its chosen controller solution is  
Figure 3: SOFTWAY4 IoT component architecture. SDWI, Software-Defined Wireless Interfacing.  
Ryu [37], mainly due to the OvS [44] (a proposed virtual switch) and OpenFlow compatibility issues. The module development programming language is Python, and it takes advantage of the REST API.
* SDWI: It resides on the bottom of the architecture and is responsible for handling the transmission and reception of the several considered wireless technologies' signals. It takes advantage of SDR, and similar to the previous module, it can be divided into the VIX (Virtual Air Interface of Technology X) components. The VIX responsibilities reside in performing the communication regarding a certain technology and assuring that its modulation and codification processes are correctly performed. Due to the modular development approach of the tool, each new VIX component can be inserted and implemented in the gateway without the need for performing any changes in the remaining modules. Regarding VIMan (Virtual Interface Manager), its main duty is to manage the physical layer of the gateway taking care of the actual signal transmission and reception in each VIX component's respective frequency. It can be seen as a hypervisor of the SDR physical interface, implementing a transmission module and a multiple frequency band reception module. Because VIMan has the ability of interface abstracting, the VIX components only have the need to interact with a virtual interface and never a physical one. This module was developed under the GNURadio [45] development kit, and its software relies on C++ and Python.