## 2 Literature Review
### Recent Work: IoT Systems Using SDN  
In the previous subsections, we discussed the heterogeneity issues in IoT and how SDN-based architectures are being applied to IoT networks. In this section, we review recent work performed by the research community to address heterogeneity in IoT systems using SDN-based approaches. We also examine how these approaches handle quality of service (QoS) in SDN-IoT networks. IoT devices constantly exchange traffic from the network to the server. Improper traffic distribution can lead to resource shortages and server overloads [3]. To solve this, [PERSON] et al. [3] proposed a solution that distributes traffic among servers based on their capacity to maintain the QoS of various IoT services. They implemented an SDN-based framework using a predictive and proactive heuristic approach based on time-series analysis. In the controller, they used fuzzy logic rules based on the ratio between the server memory and CPU capacity. They divided the complex problem into two sub-problems to handle time complexity. The controller architecture has a modular structure that clearly distinguishes between data logic and management. The controller has a global view of all resources, traffic, and the IoT network. An appropriate path and server are selected for each type of traffic using the OpenFlow protocol. The first server is selected, and then the QoS path for that server is chosen. The CPU and memory are essential factors in selecting a server. This is performed through Flow Agent in the controller, which takes CPU usage and memory capacity sampling for statistics and stores it in the database for analysis. Time-series analysis is used for the predictive approach for the controller; they used the normalized least mean square (NLMS) algorithm. The fuzzy logic control load window is provided to every server with the help of the NLMS output. The authors observed that the traditional Kaa load distribution among servers becomes overloaded when traffic increases and the throughput becomes zero. However, their proposed method improved throughput and reduced response time. They tested different traffic classes and compared their results with the integer linear programming (ILP) model in terms of execution time and objective function. The results show that the SDN-based framework's execution time is less than that of the ILP model, and other parameters are very close to it [3]. [PERSON] et al. [43] proposed another SDN-based framework to resolve heterogeneity issues in IoT. This solution focuses on the dynamic environment with an open distributed infrastructure. The central controller can self-observe and adapt. This layered controller is a middleware between IoT devices and the user application level. Observing the user request ontology helps the controller adapt to new conditions [43]. They used the open-source SDN controller Floodlight based on Java. As the IoT network is dynamic, every state information, such as joining nodes, leaving nodes, and network topology, is stored in the database as state info. The user request is translated into the lower level, and according to the service, the path and IoT devices are selected. The lower layer is responsible for selecting the path. [PERSON] et al. [44] proposed an SDN-based architecture for IoT networks that supports dynamic QoS, unlike previous solutions that focused on static QoS. The architecture has four subsystems, including a non-IP network, a control layer, and a management layer. The IoT devices are differentiated based on their communication capabilities, and the control layer manages the data plane, while the management layer detects node status, assigns QoS profiles, calculates QoS paths, allows reconfiguration, and specifies dynamic QoS rules. The system provides a friendly GUI for users to optimize QoS based on their needs. The author compared the work with other SDN-based QoS solutions and claimed that their work provides dynamic QoS in IoT systems and an easy-to-use interface. [PERSON] et al.