1 Introduction

Internet of Things (IoT) as a new paradigm uses the wireless/wired technologies to connect the variety of things or objects to the Internet [1,2,3,4]. The popularity of the IoT was created through the automated identification center at the Massachusetts Institute of Technology (MIT). Intelligent software agents, human beings, virtual data, and real-world objects are called ‘things’ in the network infrastructure. The networked autonomous actors share the basic information with others in real time [5,6,7]. It allows each network to connect objects to the global network and makes us realize that the Internet is expanding in the real world and covering all objects [8]. A node on the edge of a cyber-physical ecosystem is used to observe each IoT device. To achieve the goal, it makes its resources accessible by cooperating dynamically. The important aim is to perform one or more tasks assigned to the network [9].

The IoT becomes a specific ecosystem by sensors with small sizes and data center nodes. The IoT devices can monitor the environment with high dynamic performance and the data with a specific nature. A heterogeneous network considers the resource management as its important feature. The allocation and scheduling decisions are the key issues in resource management [10, 11]. The high efficiency of the network, as well as its maintenance, is ensured as a cost–benefit network. The resource allocation is an important issue because of the fairness in resource allocation that ensures the Quality of Service (QoS) standards. In this regard, different data streams are separated and different denial-of-service attacks are disputed to ensure a high standard of security, which is obtained by resource allocation. The available resources are considered as an exchangeable energy, processing power, and storage capabilities. This network has progressed in performance by allocating these IoT resources efficiently. The IoT has distributed and heterogeneous nature, therefore, its optimal resource allocation is not negligible [9, 12, 13]. However, there are many new challenges for resource allocation in the IoT, which needs new solutions. Resource discovery and monitoring play an important role in supporting the resource allocation.

Since resource allocation plays an important role in the IoT, this paper focuses on this problem from a broad perspective. The resource allocation in the IoT is the main challenge in which the users’ requirements are accommodated. There are many new challenges to resource allocation for IoT, in which the researchers should try more on resource allocation. The resource allocation in IoT is very important, but a systematic review of resource allocation techniques in the IoT is not done comprehensively. Therefore, the available resource allocation techniques in the IoT should be discussed systematically. The following issues are discussed in the rest of the paper:

  • An overview of the existing papers that discuss issues and challenges of resource allocation in the IoT.

  • A systematic study of the existing algorithms and other actions that are needed for allocating the resources in the IoT by emphasizing on their strengths and weaknesses.

  • Presenting a structure of different technical keys in the scope of resource allocation in the IoT and its platforms.

  • Highlighting the important areas for improving the resource allocation methods in the future.

After the introduction, the basic concepts and related terminologies about IoT such as architecture, elements, means, etc. are provided in Sect. 2. The related work, research method, and paper selection methodology are provided in Sects. 3 and 4, respectively. The selected resource allocation mechanisms are classified into eight main categories as described in Sect. 5. The reviewed mechanisms are compared together and are classified as shown in Sect. 6. The undeveloped issues and future developments are discussed in Sect. 7. The limitations and the conclusion of the article are discussed in Sect. 8. In addition, the existing abbreviations in the paper are shown in Table 1.

Table 1 Abbreviation table

2 Background and basic concepts in IoT

Some basic definitions and fundamental concepts consist of different architectures; platforms, elements and the key requirement that are relevant to the IoT introduced in this section.

2.1 Proposed IoT architectures

The IoT through the internet interconnects many heterogeneous objects, so, a flexible architecture is required. Although the number of proposed architectures is increasing, they are not yet connected to a reference model [14]. The basic 3-layer model includes the application layers consist of the business application, a network layer for connectivity and sensing layer consist of physical sensors and controllers [3, 15, 16]. The authors of [3] have illustrated some common architectures. The 5-layer model has been widely used in many kinds of literature. Object layer or perception layer consists of physical and smart devices such as sensors, actuators, etc. Radio Frequency Identification (RFID), Global System for Mobile communications (GSM), Third Generation (3G) of wireless mobile telecommunications technology, Wireless Fidelity (Wi-Fi), Universal Mobile Telecommunications System (UMTS), infrared and etc. are considered as different technologies that are used to transfer the produced data in the object layer to the upper layer. A service is paired with its requester in the service management layer based on addresses and names. The smart devices with high qualities are prepared in the requested services by customers in the application layer. The detection requirements of customers are done in several markets such as healthcare, building, and smart home. The business or management layer is a place to manage all IoT activities and four underlying layers. The comparison of the expected output with the output of each layer will help to improve the privacy of the services and the users. The proposed IoT architectures have been illustrated in [17] as shown in Fig. 1.

Fig. 1
figure 1

IoT Architectures [17, 18]

The IoT includes the physical sensors and actuators, which are referred to the perception layer. The produced data in this layer is passed to the middleware layer by a network layer. The secure channels for moving data use some technologies such as RFID, Wireless Sensor Network (WSN), Wi-Fi, Worldwide Interoperability for Microwave Access (WiMAX), and Long Term Evolution (LTE). Furthermore, the middleware layer tries to combine a service with its requester. The application layer provides the requested services for customers. The activities and services of IoT systems are managed to generate a business model and flowcharts, which are done on the business layer [17].

2.2 IoT platform

Sensors are one of IoT devices in the sensing layer for collecting data but the computing and energy resources have been limited through these sensors. The transformation process (changing data to valuable services or information) required by IoT applications are performed by some powerful devices [19]. The devices and users are connected by middleware infrastructure, which is called an IoT platform. Supporting data privacy and security, sharing heterogeneous devices, and supporting the Application Programming Interface (APIs) are the main features of the IoT platform.

The local and cloud-based platforms are two divisions of generally used platforms in the IoT [17]. In the local platform, the user and smart objects can connect locally to the server, but the users and smart objects in cloud platforms can connect to the cloud via the internet.

Two types of cloud models are cloud service and cloud deployment. Platform as a Service (PaaS), Infrastructure as a Service (IaaS) and Software as a Service (SaaS) are three platforms of cloud service model [20]. The cloud deployment models have been identified in [21] as follows:

  • A private cloud is provisioned for use by an organization and is managed by the organization itself;

  • A community cloud is provisioned for use by a particular community of consumers that have the same concerns;

  • Public cloud is provisioned for public use;

  • Hybrid cloud includes two or more different cloud infrastructures;

  • Virtual private cloud uses a Virtual Private Network (VPN) technologies for allowing the business owners to setup the required network settings [21]. Indeed, the capacity for processing in the VPN has a very large capacity for processing and it can store things for a long time [11].

2.3 IoT elements

The IoT ecosystem is developed by understanding the main components of the IoT and their related standards and technologies. Identification, sensing, communication, computing, services, and semantics elements are required to present the functionality of the IoT as shown in Fig. 2 [3].

Fig. 2
figure 2

IoT elements

  • Communication is the basic part of IoT devices. The protocols such as General Packet Radio Service (GPRS), 3G, fourth Generation (4G) and fifth Generation (5G) of wireless mobile telecommunications technology, Third Generation Partnership Project (3GPP), LTE, Wi-Fi, and the IEEE 802.15.4e standard are good examples for communication in the IoT.

  • Computation part is very essential in the IoT because of providing real-time data processing and storing. An important platform in the IoT is cloud computing.

  • Identification is very important for matching services with the objects demands; it refers to the addressing methods such as IPv4, IPv6, etc. for network communication.

  • Semantic in the IoT is able to extract knowledge from machines.

  • Services should be matched with their demands by ensuring the identification of objects.

Sensing in the IoT refers to data collection and sending them locally or remotely to a database or to the cloud. The actuators, wearable sensors, and smart sensors are three classifications of sensors [17].

2.4 Fog computing in IoT

A new paradigm that is recently promoted by Cisco is fog computing known as edge computing that connects edge layer to cloud resources and extends the cloud services to the edge of the network [18, 22, 23]. Fog computing can satisfy low latency, improves QoS, support mobility for IoT applications and provide locational awareness. The location-awareness feature of fog can address mobility and security for IoT applications [18]. In addition, spreading the cloud services to the network’s edge nodes, can reduce data processing time and network traffic overhead and lead to a reduction in energy consumption [23, 24]. The closeness of fog computing to the end nodes is more than the cloud data-centers. The fog computing is offering the services by delivering better delay performance [3, 18, 25].

One new paradigm in the edge layer is wireless Fog-Caching that attracts more attention because of its intrinsic feature of reducing both content acquisition latency. Its aim is to avoid the resource-wasteful content duplication by locally caching the most popular data at the proximate serving Fog nodes [25, 26].

The IoT designers consider fog computing as an optimal choice because of the key features of fog computing such as location, scalability, and distribution, the density of devices, mobility support, standardization, and real-time capabilities. Delivering IoT services to end nodes is the important role of fog computing as is shown in Fig. 3 [27], but the resource estimation in fog is a challenge, therefore, a smart management is needed to direct the interaction of IoT smart objects, fog gateways, cloud nodes, and other elements [28].

Fig. 3
figure 3

The role of the cloud and fog resources in the delivery of the IoT services [27]

2.5 Key requirements of IoT

The IoT paradigm has its own concepts and characteristics. Some of the important concepts are introduced in this section. At first glance, the IoT is a type of large-scale distributed system in which the components are highly heterogeneous compared to hardware, software and dynamic performance of their context [19]. The entity in the IoT is an object, a place, or person that defines communication between an application and a user. In addition, context is the situation of an entity, which is characterized using a type of information. Any object that can be allocated in a system is called a resource. The physical or virtual resources are presented by IoT infrastructure to be used by consumers. The specific tasks required by the application are completed through the IoT resources. The allocation of the required (virtual or physical) resources is used to accommodate the system that is the main goal of resource allocation. The tiers in the IoT system are classified into things, edge, and cloud as illustrated in Fig. 3. The allocating resources in the IoT consist of four steps, the first step selects the tier that should be used in the system. The second step is a task-mapping process in which the given task will be assigned to the selected node. The third step is the scheduling of computational tasks. Finally, the communication among the entities for the performance of tasks should be programmed on available communication channels. The providers and the clients require tasks to be programmed and scheduled in an efficient and cost-effective way (end users and applications) [19, 29].

The system stability and resources usage should be at the same level to optimize the resources allocation in the IoT [30]. One of the challenges in resource allocation is QoS limitations. The IoT system must guaranty the QoS and maximize the provider’s profit. Another resource allocation challenge is to provide a Service Level Agreement (SLA) established with a user. The SLA is a contract that identifies the QoS between a provider and a user [31]. The context awareness and heterogeneity are some important factors and preparing the dynamic application must be considered in the IoT system. Another major requirement of the IoT is opportunistic interactions. Having real-time processing capability and application priority to guarantee its requirements are vital parameters for IoT [19].

3 Related work

The resource allocation has been studied in some surveys and review papers related to cloud computing, healthcare, sensor networks, and other areas. There is only one survey paper that refers directly to the resource allocation problem in the IoT. In this section, we study some reviews and survey papers that work in the field of resource allocation to highlight the need for reviewing the resource allocation mechanisms in the IoT.

One of the most important surveys is carried out in [19]. In this literature review, the IoT resource allocation challenges are discussed from the architectural point of view. They have grouped works according to the number of tiers involved in resource allocation. The research that is discussed in this survey is classified in three categories: First, the works that focus on the cloud, then, the papers that distribute the workload between the IoT devices and the cloud, at last, the proposals that main factors are the IoT devices in the resource allocation. The architectures and infrastructures that support all the activities involved in such a process of resource management have more attention in the literature review. However, the papers that have worked on algorithmic optimization procedures for allocating resources in the IoT do not get much attention. Some works that address the resource allocation and scheduling issues in the IoT have not considered in this survey.

One of the survey papers that have reviewed different aspects of IoT technologies is [32]. In this paper, the existing published works in the IoT have been reviewed. The authors investigate the relationship between IoT and fog/edge computing and resource allocation issues in fog based IoT. The challenges of resources allocation in fog/edge computing-based IoT is divided as follows:

The first challenge is an allocation of resources between consisting nodes in fog computing. All nodes in the fog can be connected with each other; it means that they can send some requested services with low priority level to their neighbours, which have spare the resources to be processed. In the fog computing, fog node neither care about which resource-node helps it to provide the computing services nor about data from which that it processes, only achieving to the minimum cost (minimum delay, etc.). Based on the presented formulas in this paper, the fog node with the least cost can be realized in this infrastructure.

The second challenge that is addressed in [32] is resource allocation between fog/edge node and end-devices. Because of the limitation of the fog/edge node in computing and storing resources, providing the requested services by end-users is hard. To address this issue, a satisfaction function for each end-user is considered to evaluate the allocated resources for providing the requested service. Unfortunately, there is not an implementation in [32]. In addition, different aspects of IoT, including architecture, enabling technologies, security, and privacy are surveyed, but the authors did not pay attention to allocation resources in the IoT.

Briefly, some weaknesses of these articles have been listed as follows:

  1. 1.

    The articles do not contain the newly proposed mechanisms.

  2. 2.

    The method of article selection is not clear.

  3. 3.

    Some selected articles do not highlight the motivating factors of IoT as same as QoS, SLA, and workload and so on for reviewing their proposed methods.

  4. 4.

    The resource allocation methods do not implicate in some papers, and few researchers have not shown the survey results of different methods for solving the resource allocation problem.

  5. 5.

    Many of these articles do not pay attention to optimize the procedures and algorithms for resource allocation.

A systematic review is prepared due to the mentioned reasons. All of these limitations are addressed in this review.

4 Research methodology

In this section, a complete and systematic study of resource allocation mechanism is performed using SLR that is focused on related researches to the IoT. The studies in the field of medicine create the SLR. Moreover, engineering and social science are the appropriate areas for using this methodological method [33, 34]. A systematic review uses a rigorous, replicable, scientific and transparent process compared to the traditional narrative review [35, 36]. The SLR provides a complete and exhaustive summary of related articles in the research domain and describes the findings of the collection of research studies [33, 37]. According to [38], the Research Questions (RQs) are included in the research methodology for a systematic review which are answered in the study. Different methods are used to search some research works such as the chosen digital libraries and search strings. The systematic reviews address these researches [39].

In the rest of this section, we have formalized the RQs about resource allocation in the IoT. The questions are identified and we describe the articles selection process and their classification. A complete search of the literature for relevant existing papers have been carried out to conduct a systematic review. In addition, the search process is continued by using a search engine for searching in online scientific databases.

4.1 Question formalization

Investigating and gathering all of the effective and trustworthy articles that have studied the resource allocation problem in the IoT is the main goal of a systematic review. The following RQs are used to address the key challenges of resource allocation:

RQ1 Why resource allocation is important in the IoT? How is resource allocation beneficial for the IoT?

Answer: The benefits and importance of resource allocation are discussed in Sect. 1.

RQ2 How is the strategy of searching and selecting articles?

Answer: The article selection strategy will be identified in Sect. 4.2.

RQ3 What are the classification of research methods and their examples?

Answer The answers to these questions are in Sect. 5.

RQ4 What are the existing algorithms, policies, and strategies for realizing the resource allocation in the IoT?

Answer Many techniques are considered in Sect. 5 to perform the resource allocation in the IoT with a full comparison, and categorization of available techniques.

RQ5 Which parameters must be considered during the resource allocation in the IoT? How can we achieve optimum resource allocation via available algorithms, strategies, and parameters?

Answer These questions will be answered in Sect. 6.

RQ7 Which issues for allocating resources in the IoT remain unaddressed?

Answer The open issues in Sect. 7 discuss the research gaps in this field.

4.2 Article selection process

The following four steps are included in the article selection strategy [37, 40]

Step 1 Automatic search based on the keyword by an electronic search using online scientific databases.

For defining the keywords and associating them, we have utilized the Boolean ‘OR’ and ‘AND’, then the automated search has done based on keywords. We have limited our search to terms that only appear in the title of the article using “Allintitle” phrase in google scholar. The following definition is for search statement by adding alternative spellings and synonyms of the main keywords:

(“IoT” AND “resource” AND “allocation”) OR (“internet of things” AND “resource” AND “allocation”)

Google scholar is used as a search engine to find the relevant articles. For a search query, different journals, conference papers, and books are searched and finally, 143 articles are selected.

Step 2 The article selection based on the title, abstract, conclusion, and quality of the publisher.

This review includes the articles and high-quality publications which are shown by selecting some certain practical screening criteria [37]. The researches in journal articles have limited the search field because they have provided the validated empirical results. All types of article, which are written in English, are considered. The revolution editorial note commentary, working papers, and book review articles are excluded during this stage; then 111 articles remain as shown in Fig. 4. The highest percentage of articles related to journals is 62%, 31% of research are surveyed, and eight books are found that consist of 7% of these articles.

Fig. 4
figure 4

a Percentage of articles after step 2 in each publication b the number of articles after step 2 in each publication

Step 3 Articles analysis

The main goal of this step is to focus on high-quality publications. The articles are considered in the SLR that have had at least one of the following criteria:

  • The articles directly present the resource allocation method in the IoT.

  • The articles related to resource management in the IoT have investigated the resource allocation, too.

The studies considering at least one of the following criteria are excluded:

  • Working papers, revolution editorial note commentary, books, and review articles.

  • Papers that are not focused on the resource allocation in the IoT.

  • Papers that present other concepts of resource in the IoT ecosystem such as resource mapping, resource estimation, etc.

After applying these filters, we have selected the publications that have relevant features and the irrelevant articles, books, surveys, and SLRs are removed as well. Finally, based on inclusion criteria, 69 articles are selected, which are shown in Fig. 5. In addition, it illustrates the number of published journal articles based on the publication years. Fig 5 shows all publications that are published after 2009. Because of the novelty of this topic, we include all articles that are related to the research domain in 2009. The article selection flowchart is shown in Fig. 6.

Fig. 5
figure 5

a The number of selected articles base on publication b the number of selected articles base on the year of publication after stage 3

Fig. 6
figure 6

Article selection flowchart

Step 4 Final assessment

In this step, all parts of the selected articles in stage 3 are studied and the appropriate papers are selected for review. At first, the proposed method in the selected article must have been explained obviously and clearly. Secondly, the research aims and important features such as QoS and SLA parameters have been determined. Thirdly, it must contain a clear research methodology and define the objective function clearly in heuristic cases. Fourthly, it must provide the comparison with the latest methods. Finally, it provides and explains the dataset clearly. By applying these criteria, 39 articles are selected. Nineteen articles are selected from IEEE. 51.2% of the articles are related to IEEE, which is the highest. After that, 7.6% of the articles are related to Elsevier and 7.6% of the articles are related to Hindawi publication. 5.1% of them are related to Springer, 5.1% of them are related to Research Gate, and 5.1% are related to ariXiv, too. There are some articles in other publications. Fig 7 illustrates the published journal articles based on percent. The details of selected articles such as authors, journals, and publication years are defined in Table 2. The researchers can do the future works mindfully through the selection of these criteria [37].

Fig. 7
figure 7

a The percentage of selected articles base on publication b the number of selected articles base on publication year

Table 2 Details of selected articles in step 3 and 4

5 Review of the selected papers

This section refers to 39 selected articles in which the main features of existing resource allocation methods for IoT and their findings are discussed. The techniques are categorized into eight main groups, including cost-aware, efficiency-aware, load-balancing-aware, QoS-aware, power-aware, context-aware, SLA-based, and utilization-aware resource allocation mechanism. The overall cost, which is the prices of resource, revenue, and profit, are more important in cost-aware resource allocation. The response and execution time should be reduced and the speed or bandwidth and priority should be increased to improve the performance in efficiency-aware resource allocation. The main emphasis of load balancing-aware method is on the workload to distribute the resources between several users in different data centers. The reduction of energy consumption in different layers of IoT is performed by power-aware resource allocation. The QoS-aware resource allocation is an emphasis on the service improvement for the users in term of throughput. The best services are moved by SLA-based resource allocation to fulfil the requirement of the users. The usage of IoT resources is increased by focusing on utilization-aware resource allocation.

Many parameters are used to compare the discussed methods, including availability, bandwidth, cost, context-aware, execution time, energy, performance, priority, QoS, reliability, response time, SLA time, throughput, utilization, and workload. These parameters are described below:

Availability It is operability, usability, or commutability of resources. The resource’s reliability, accessibility, serviceability, maintainability are joined together to create availability [100].

Bandwidth/Speed It shows the amount of data that can be sent on a connection in a specific period. In other words, it is the maximum rate of data transmission in the network.

Cost It is the amount of pay for using the resources in the IoT ecosystem or the expense for the users for resource utilization and revenue or profit for providers for providing resources for their users in the IoT ecosystem.

Execution Time It is required time that tasks or services are allocating or running as the demand of the objects or users in the IoT tiers [39].

Performance It is an amount of task that is accomplished on the demand of the things in different layers of the IoT ecosystem [101].

Power/Energy It is the power or energy required for the execution of tasks and preparing the requested resources in the IoT tiers.

Priority A service or task that has right or more important to be proceeded or executed before others because of its urgent requirement to the device or its layer in the IoT system.

Reliability It is the task ability to execute the required function in a specified period by reducing the failure rate and providing the assurance of completion [101, 102].

Response time: It is the time for responding to the service request when a task or service comes out from the waiting queue and starts the execution [102].

SLA It is an agreement or contract that specifies the obligations of cloud provider against its users and providers to avoid the SLA violence and deliver the best services to fulfill their user’s requirements [39].

Throughput It is the whole amount of tasks that are performed in the given time successfully [39].

Time It is a schedule or plan when tasks or resources should be allocated or be executed. It is a measurable period during which an action, process or condition exists or continues in the IoT environment.

Utilization It is the total amount of resources actually used and it tries to utilize the resources in the best way to maximize the revenue and profit and satisfy the users [39].

Workload It is the capability of processing or handling a work or process in a special time in the IoT ecosystem [21].

The categories are illustrated in Table 3 and the details of the classifications are presented in Fig. 8. The main goal and objective of this categorization are to provide a base of the resource allocation in the IoT for future investigation.

Table 3 Resource allocation mechanisms in different categories
Fig. 8
figure 8

Categorization of resource allocation in IoT

5.1 QoS-aware resource allocation

One of the most important parameters in the IoT ecosystems is to fulfill different QoS requirements and attain rapid resource allocation and deployment [103]. It indicates the distribution of resources in different IoT ecosystem layers which highlights the availability, recovery time, throughput, context-awareness, and SLA for IoT. It is needed for handling the conflicts of resource demands, high performance, reliability, and fault-tolerance. The QoS is necessary in order to avoid increasing the failure rates, poor resource utilization violence, and non-availability of the resource at the time of allocating resources [104].

The authors of [93] have proposed an operating procedure and a frame structure to solve the hidden node problem. They use biologically inspired (bio-inspired) algorithms in their paper. The reliability of the data transmission is increased and each node is able to share the two-hop neighbouring node’s firing-phase information with its neighbours. In addition, they can resolve two types of collision: data-channel allocation and control channel allocation collisions. As the comparison results show, the Multihop procedure has better performance compared to other existing procedures. If the density of the node is high and the number of nodes ‘neighbours is increased, the greater amount of control overhead is required.

The service providers have a tendency to use Machine-to-Machine (M2M) communications. In the [52], a resource sharing problem has been addressed for M2M traffic in 3GPP LTE standalone cell. The fixed transmission zones have an important role in this scheme. The Markovian model evaluates the delay in data transfer and the possibility of blocking. The calculation of model performance measures is done by proposing an analytical solution under the assumption of the simplified physical model and numerical results in the paper.

A new protocol for resource allocation is proposed in [76]. The nodes in this scenario are communicating in gossip or broadcast types for exchanging and updating values. The simulation results have been validated through the real experiments. The node’s dynamics have shown that the error rates and convergence when five packets sent by each node are less than 20% and for sending 20 packets are less than 5%. The performance of the proposed protocol based on a single task and a different frequency is analyzed. In this paper, is evaluated a varying number of nodes involved in task groups, the variance in the total frequency and overlapping among task groups. For maintaining a homogeneous allocation is required a coordination inter-task when there is an overlapping between different task groups.

The work in [47] has concentrated on reducing the Device-to-Device (D2D) interference when the cellular resources reuse in the downlink. There is an intrusion between D2D and cellular networks that are managed by presenting an efficient resource allocation method. First, the interference control method should be adopted to restrict the mutual interference. The rate of D2D communication and cellular communication are improved by assigning the resources to D2D users. As a result, the interference is controlled and the D2D communication interference is decreased which means that the throughput is improved by controlling the interference.

A consensus algorithm has been proposed in [62] and the proposed protocol is robust against errors in the node, so it is adaptive in dynamic scenarios where the network topology changes in runtime. In the proposed IoT scenario, the existing nodes in the same IoT task group need to adjust their task buffer and frequency occupancy. The authors have demonstrated that the network converges to a solution using the proposed protocol where the resources are allocated among nodes homogeneously. They have evaluated their experiments in simulation mode and in real scenarios and the algorithm converges with a percentage error of about 5%.

The comparison of QoS-aware resource allocation techniques is presented in Table 4, which is mentioned in the operating environment, algorithms, and strategies, improvement, and achievement, weakness or limitation. Table 5 presents more parameters and resources used for QoS-aware resource allocation in the IoT.

Table 4 QoS- aware resource allocation
Table 5 The matrix of resources, environment, and parameters for QoS-aware resource allocation in IoT

5.2 Context-aware resource allocation

A context-aware computing will be successful in the IoT paradigm due to its important role in dealing with very large data [105]. Edge computing supports the distributed and decentralized computing to reduce the dependency on the core of the network by increasing the number of devices. The possibility of providing edge computing to the end user has been uncovered by envisioning of fog computing in order to provide better QoS. Therefore, in [63], the context-aware has been defined for decentralized hybrid Peer-to-Peer (P2P) IoT network. In this regard, the exact QoS requirement is achieved. The simulation results have shown a higher utility. There is not any practical implementation in this paper.

The authors of [58] have analyzed a model for D2D resource allocation. They have modeled the resource allocation as a cooperative game between the base stations of two cells where a pair of D2D users is located. Each station bandwidth has been determined by developing an algorithm and the total utility of both stations are increased and maximized. The context-aware D2D resource allocation is used to select different methods for different system situations. The effectiveness of the proposed algorithm and protocol in cellular networks is shown through the numerical and analytical results.

The problem of cell association in IoT system has been studied in this paper [98] that some devices are deployed in a specific area that information is sent via uplink communication links to a set of Small Base Stations (SBSs). By considering the spatial correlation between the IoT devices, the goal is to prevent reporting of the same information to a given SBS that is formulated as a distributed two-level matching algorithm. The evaluation results have shown that, if the correlation level between the 250 IoT devices were increased, the number of devices that send the same information to the same SBSs would increase. The comparison results have shown that the proposed algorithm performs better than the classical cell-association mechanism.

The problem of resource allocation for D2D communications has been addressed by game theory in cellular networks in [65] between the BSs of two cells where a pair of D2D users is located for maximizing the total utility of BSs. The authors in their previous work [58] were introduced the location-awareness that expanded it. The resource allocation is modeled for a cooperative game. The context-aware D2D resource allocation is used to choose different methods for a system with different situations. However, this paper has a cloud-centric vision of the IoT paradigm.

The comparison of context-aware resource allocation techniques is shown in Table 6. The context-aware resource allocation has used more resources and parameters as shown in Table 7.

Table 6 Context-aware resource allocation
Table 7 The matrix of resources, environment, and parameters for context-based resource allocation in IoT

5.3 SLA-based resource allocation

The heterogeneous and dynamic nature of IoT makes the SLA as a key aspect between consumers and providers. Continuous Monitoring of QoS attributes should be done continuously to perform the SLAs. In addition, some factors such as trust (on the provider) should be considered for customers that may outsource its critical data [106].

Singh and Viniotis [13] have studied the conformance of commercially offered, volume-based, IoT SLAs as a resource allocation problem. They have proposed a resource allocation mechanism (that uses scheduling, buffering and rate limiting) to meet the SLA. Their evaluation shows that their solution is a lot of adaptation over an extended runtime without the need to specify information about input patterns and even work in additional traffic conditions. The length of the additional enforcement period is reduced by increasing the service capacity and decreasing the measurement time.

Choi and Lim [31] have carried out a research article about optimization resource allocation in the IoT. Two levels of SLA, class-based SLA, and job-based SLA are defined in this paper. In general, the SLA is defined in terms of various performance metrics, such as consistency, deadline along with the execution time of each job, service latency, and throughput. This study presents an algorithm for the determination of a new winner with consideration for the deadline of jobs to reduce the penalty cost for SLA and maximizing the profit. The provider’s profit and success rate of job completion are compared with a conventional mechanism by conducting the simulation with real workload data and comparing the performance of the conventional mechanism. This mechanism has about 26.8% more profit than CA-provision. Finally, it shows better performance.

The collaboration between cloud computing and fog is very important for modelling the IoT resource allocation and service delegation. The authors of [95] have proposed an algorithm for allocating resources to meet the QoS and SLA. They have modelled a new algorithm in which three conditions such as completion time, services size, and Virtual Machines (VMs) capacity are the important factors of decision rules of the linearized decision tree in order to manage and delegate the user request. The distribution of big data in the cloud and fog environment is optimized by the new strategy. The services delegation, management, resource allocation, and big data distribution can be improved by the proposed method and has better performance compared to some existing methods.

The conformance of the volume- based IoT SLA has been studied as a resource allocation problem in [81]. The SLA is performed by proposing a buffering, scheduling and rate limiting mechanism. Additional controls are provided by SLA for the providers to enforce it. As the results show, the length of the additional enforcement period is reduced by increasing the server capacity and the number of sub-periods and decreasing the total measurement time to conform to the SLA.

The comparison of SLA-based resource allocation techniques and more resources and parameters used for SLA-based resource allocation are presented in Tables 8 and 9, respectively.

Table 8 SLA-based resource allocation
Table 9 The matrix of resources, environment, and parameters for SLA-based resource allocation in IoT

5.4 Efficiency-aware resource allocation

The speed or bandwidth, priority and response time for allocation of resources in the IoT and execution time are improved via the efficiency-aware resource allocation.

A specific fog computing network with a set of Data Service Operators (DSOs) has been proposed in [96]. A set of fog nodes are controlled by one DSO to provide the data service for Data Service Subscribers (DSSs). Allocating the limited resources of Fog Nodes (FNs) to all the DSSs is one of the main challenges that aims to achieve an optimal performance. The resource allocation problem for the DSSs and DSOs’ pricing problem are analyzed by formulating a Stackelberg game in this paper. When the DSOs can know the expected amount of resource purchased by the DSSs, a many-to-many matching game is used to study the pairing problem between FNs and DSOs. Finally, the FNDSS problem is solved by using another layer of many-to-many matching between each of the serving DSSs and paired FNs in the same DSO. Based on the simulation results, the performance of the IoT based on network systems is improved.

A new dynamic resource allocation algorithms for IoT have been proposed in [61]. A real-time Software Defined Networking (SDN) controller platform is implemented for IoT. This paper shows an increase of 30–50% performance gains by serving the request number, revenue, and traffic prioritization.

An adaptive resource allocation algorithm has been proposed in [44] for improving the transmission accuracy and efficiency of sensing and actuating signals in the IoT. This method ensures the system stability that dynamically assigns the network bandwidth and priority among components according to their signals’ frequency domain characteristics. This algorithm can allocate the network resources according to the component’s individual need and improve the overall performance of the IoT system. A three Unmanned Ground Vehicle (UGV) path tracking IoT test-bed has been developed. The proposed algorithm compared to the conventional static algorithm can reduce the accumulated and maximum errors of UGV path tracking by over 60% with the same network bandwidth limitations.

Kim and Ko [67] have proposed a method for service resource allocation that data transmissions are reduced between the users’ mobile devices. A fitness function is used to perform a genetic algorithm ineffective way of decreasing the needed time for producing an optimal solution. The success rate to find near-optimal solutions is 97% and the proposed method requires less time compared to the brute approach.

Thomas and Irvine [70] have used the LTE for discovering the number of sensor nodes and the transmitted bytes per Resource Block (RB) by LTE. The simulation is performed with realistic parameters. The RBs and bandwidth that are used for simulation have been specified and the result shows that 29 sensor nodes can transmit one Kb data with less than 1 percentage packet lost in each second. It is equal to 21 bytes of data per RB compared to 181 bytes per RB for the continuous transmission. As the result shows, decreasing the number of bytes per RBs and achieving a good energy efficiency for LTE.

One of the challenges is how available resources can be allocated for clients in an effective and simple way in fog environment. The authors of [72] have focused on allocating computer resources in Fog by proposing an independent platform based on learning from the previous event. The “Smart Shadow” is proposed to support the mobile hosts’ devices. This work prepares a computational resource infrastructure and has a good performance in hosted applications on mobile devices. This infrastructure allows the mobile devices in a ubiquitous way to use the external computational resources.

The dynamic resources allocation is a significant challenge due to the uncertainty introduced by the network, QoS, and energy efficiency requirements. The authors of [88] have described a new algorithm for highly dense 4G networks bandwidth allocation in the uplink transmission for the Human-to-Human (H2H)/M2 M co-existence called Interval Type-2 Fuzzy Logic Adaptive (IT2FA). The proposed solution is based on type-2 fuzzy logic controller expert system to anticipate and manage the uncertainties. Different metrics such as bandwidth utilization, delay, and throughput are used to evaluate the proposed method performance.

The comparison of efficiency-aware resource allocation techniques and more parameters and resources used for efficiency-aware resource allocation are presented in Tables 10 and 11, respectively.

Table 10 Efficiency-aware resource allocation in IoT
Table 11 The matrix of resources, environment and parameters for Efficiency-aware resource allocation in IoT

5.5 Cost-aware resource allocation

The aim of the resource allocation system is to ensure the application requirements in which the suitable and the lowest operational cost is provided by infrastructure [11]. The cost-aware resource allocation has been obligated for the services in all layers of the IoT ecosystem in an economical way.

The work in [9] has presented an accurate mathematical formula by assigning services to interfaces in one or more rounds with heterogeneous resources. The optimal solutions are presented for reasonable instance sizes. Two algorithms are developed by proving the Nondeterministic Polynomial time (NP) completeness of the problem in which the optimal solution for big instance sizes is estimated. The first algorithm has considered the average cost of interface resources that allocates the most demanding service requirements. The demanding resource is allocated in the second algorithm by choosing randomly among equally demanding shares. The efficacy of the number of rounds on the total cost is shown by multi-round Service to-Interface Assignment (SIA)’s results based on the policy. The difference in the cost between the policies of two boundaries (minimum rounds vs minimum cost) becomes more highlight by increasing the number of services.

A method in two phases based on the virtual machine pre-warm-up and resources pooling is used to optimize the proposed multi-agent architecture and the resource usage in [30]. The main aspect that highlights in this paper is related to the positive effect on the system performance and infrastructure audit. The Audit Agent on the entire infrastructure has performed the audit operations because they offer valuable information about system loading, the resources utilization, unauthorized access attempts, end users geographical distribution, and the amount of newly removed/added devices. The system should be aware of the position of resources to suggest the edge-computing services for the clients that are useful when a failure occurs in a local system. In this regard, a flexible alternative is offered by knowing an accurate location of resources and clients to manage and deploy the edge services when there is no local resource. In spite of the operation of the audit and its role for the resources usage optimization, one of the challenges of this paper is the security of audit.

The work in [56] has been established to analyze the lower and upper layers of network resource allocation and resource pricing problems by Stackelberg game model. This model verifies the existence of a Nash equilibrium point of the non-cooperative game between the upper layers. An iterative distributed algorithm has been proposed in the article that presents the iteration strategy of resources and prices. It makes the Stackelberg game in the entire network environment reach a Nash equilibrium. The effect of this algorithm in a variety of network resource management is proved by simulation.

Gateways and devices in the IoT are sometimes equipped with several heterogeneous network interfaces, which should be utilized by many services. In the work [68], a Mixed Integer Linear Program (MILP) is proposed for allocating the requested services demands to device’s heterogeneous interfaces. This paper provides the noticeable results by splitting of services to different interfaces. The authors have carried out several simulations to evaluate the cost and the number of splits for instances of 3 to 10 services by using suitable configuration of capacities, interfaces’ costs, and services’ demands. An important mention of the total cost is that a slow increase in the optimal cost appears when fewer splits will happen while the services increase simultaneously. On the other hand, when the utilization cost of interfaces is higher than the activation cost, the more splits of services occur. More splits happen by increasing the services.

The comparison of cost-aware resource allocation techniques is shown in Table 12. Further resources and parameters used for cost-aware resource allocation are presented in Table 13.

Table 12 Cost-aware resource allocation
Table 13 The matrix of resources, environment, and parameters for Cost-aware resource allocation in IoT

5.6 Power-aware resource allocation

The energy consumption and heat generation in data centers play an important role to deal with the problems in the power-aware resource allocation mechanisms [107]. The main reasons for energy consumption and the creation of futile heat are increasing the number of servers, fast growth of data center, loss, or wastage of idle power, huge load and highly demands [108]. Lower generation heat and reduced energy and cost savings are very necessary for IoT ecosystem.

The allocation of available resources to a large number of IoT users without increasing the overall throughput and energy reduction of the IoT system are the main goals of this paper [69]. Networks with many wireless technologies are used to provide the seamless services, which has been proposed by 3GPP and Unlicensed Mobile Access (UMA). A resource allocation algorithm is used on the IoT sensor system to find the shortest path and reduce the bandwidth cost, which has unbalanced the energy conditions. It calculates the amount of energy in equilibrium and in this case, the main power will be allocated to IoT devices.

The problem of distributed resource allocation for IoT system is studied in [66]. A group of heterogeneous nodes compromising both Human-Type Devices (HTDs) and Machine-Type Devices (MTDs) are discussed in this study. The optimal time allocation in terms of energy, latency, and the rate is found by considering the requirements of the IoT devices to meet their QoS requirements. In this regard, a realistic game-theoretic approach has been proposed. A steady performance is preserved through CH Equilibrium (CHE). In particular, for a network containing up to 4000 devices, the proposed CHE solution keeps the percentage of devices with satisfied QoS limitations above 96%, while the overall system performance is not significantly reduced. The comparison of the proposed CHE solution decreases the total energy to 78% by MTDs and doubles the total rate of HTDs. Without the practical implementation and only by simulation, the result is presented.

The authors of [84] have proposed a resource allocation strategy for Bit-Interleaved Coded Universal Filtered Multicarrier (BIC-UFMC) communications by using a scenario that is characterized by short packets. Code rate, power allocation, bit loading, and a number of multicarrier symbols are considered as the best Transmission Parameters (TPs), which are selected through a resource allocation strategy. The Good Put (GP) metric is maximized to define the number of bits per unit of time that are received correctly over a frequency-selective fading channel. The results are doubled: firstly, the best choice of the TPs is compared to the case of uniform power allocation and bit loading and a previous GP-based resource allocation solution to increase the GP performance of the BIC-UFMC system. Secondly, the resource allocation and BIC-UFMC are combined together, the frequency offset is considered to make this combination more robust than the uniform and classical cases. The short packets characterize the resource allocation strategy.

In [97], the problem of coalition formation among M2 M communication type devices and the resource management problem have been addressed. Each M2M device is characterized by its energy availability, as well as by differentiated interests to communicate with other devices based on the IoT application that they jointly serve. Some factors such as energy availability, interest, and physical ties are considered in the coalition formation process and the coalition-head selection. A holistic utility function is associated with each M2M device, in which a good way represents its degree of satisfaction with respect to QoS prerequisites fulfillment. The performance of the proposed method is evaluated by simulation and modeling. In addition, the authors have described the better performance in comparison to another state of the art method. Their purposed method is not implemented in the real world.

A new architecture has been proposed in [99] to address some challenges such as big data processing, huge power consumption and mass connections in IoT. The radio resource and computational resource management are investigated in this paper for increasing the system performance. The authors have focused on admission control, computational resource allocation, and power control. A dynamic stochastic network optimization is studied to maximize the system utility to improve the performance of the architecture. The evaluation results have shown that throughput is improved and end-to-end delay is reduced. In addition, an average throughput and delay trade-off are achieved.

The authors of [23] have aimed to improve the energy consumption by combining IoT and edge computing technologies. Reducing the energy consumption and delay per unit time of the sensor nodes by means of energy management are referenced in this work. The authors have described a small scale of the fog of everything and have focused on the performance tests using simulation and comparisons of their model in order to check it for supporting the resource-limited wireless or mobile IoT devices. The proposed model is tested under various mobility scenarios and the results have shown that the delay and energy consumption have been improved.

The authors of [25] have presented a new fog based architecture for supporting the smart city network architecture. The goal of this paper is improving power consuming and decrease the latency between objects with different capabilities. A multitier structure is proposed that the applications running on things jointly compute, route, and communicate with each other in the smart city environment. They have categorized the device communications in fog layer to three types to meet the QoS standards and managing the applications. The authors have validated and simulated their model in terms of the average of the CPU and network costs per processing time by comparing with D2D in similar work in terms of various communication costs and it is more power efficient than the D2D platform. The service providing in this proposed model is efficient and uses low energy. The simulation results have shown that the energy consumption is minimized for computing, intra-fog communication, and wired or wireless transmission between things in fog layer. The proposed model can be extended to cover 5G management for the stream applications in smart city and for making the robust frameworks. A real-time data processing solution together with using Mobile edge computing techniques are necessary.

The comparison of power-aware resource allocation techniques is shown in Table 14. Further resources and parameters used for power-aware resource allocation are presented in Table 15.

Table 14 Power-aware resource allocation
Table 15 Resource, environment, and parameters for power-aware resource allocation in IoT

5.7 Utilization-aware resource allocation

The utilization-aware resource allocation is focused on increasing the usage of IoT resources, professionally. The profit and revenue in IoT are affected by optimal resource utilization. For this mean, the utilization-aware resource allocation techniques are very important to reduce the energy consumption and resources usage and fair distribution of resources [39].

Multiple, heterogeneous network interfaces are used to equip the devices and gateways. A large amount of services in the IoT utilizes these devices. Kumar and Harikrishna [12] have modelled the assigning services’ resource demands to a device’s interfaces. The presented hard problem uses the MILP model to have the optimal solutions. They have provided the insightful results to discuss the solutions by splitting the services between different interfaces. The numerical results have demonstrated the part of the actuation cost in the administrations’ parts and dispersion among the interfaces.

The allocation of spectrum resources is adaptively led to ensure the service requirements and realize the IoT services. The work [79] proposes a novella new solution for solving the resource allocation problem. A new bandwidth allocation algorithm is designed using the concept of Shapley value. Different system traffic and load conditions are important in maintaining a great IoT system performance in the proposed method compared to other existing methods. The performance balance in the proposed method is guaranteed by improving the overall system resource utilization compared to the existing methods. The dynamic reconfigurable network elements play an important role in using SDN as a talented technology to streamline network management. A solution is proposed to control the capabilities and strengthen the management of the IoT network by combining the SDN and IoT. The advantage of resource utilization and SDN technology in the IoT network can be further enhanced.

The resource allocation problem in the SDN-based IoT network has been proposed in [90]. The Semi-Markov Decision Process (SMDP) process is used to formulate the problem. Maximizing the expected average reward of the network is the main aim of this process. The problem of SMDP is solved by proposing a relative value iteration algorithm. It determines Machine Type Communications (MTC) which Gateways (MTCGs) or eNB should be selected for MTC packet transmission and the number of assigned resources for each wireless link. The system rewards are improved through the proposed algorithm compared to other comparative resource allocation schemes.

The work in [86] has proposed a hierarchy architecture. A gateway is used to connect the devices to the eNB in order to improve the network utilization. In addition, a multiclass resource allocation algorithm has been proposed for LTE based IoT communication. The proposed algorithm has better performance on both latency and data rate for different QoS applications both in the unsaturated and saturated environment.

The comparison of utilization-aware resource allocation techniques is shown in Table 16. Further resources and parameters used for utilization-aware resource allocation are presented in Table 17.

Table 16 Utilization-aware resource allocation
Table 17 Resource, environment, and parameters for utilization-aware resource allocation in IoT

5.8 Load-balancing aware resource allocation

Load balancing is the main goal of resource allocation in which the resources should be assigned in a way to have balanced utilization across all resources of a particular type. [11]. The workload has more attention in load balancing-aware resource allocation, which distributes the resources to the several users in different layers of IoT. According to the optimal resource allocation, it is very convenient to access the resources on different layers and the condition of the high/low load is important in their operation [39].

A key challenge in this distributed system is how to allocate the bandwidth resources among the geo-distributed datacenters of this cloud efficiently. In order to address this challenge, the authors of [82] have optimized the transfer bandwidth resources among different geo-distributed data centers. For this mean, they have analyzed the interaction between the traffic of physical networks and the data flow of clouds datacenter, and then a game theory model and a dynamic resource allocation algorithm have been proposed. Compared to existing strategies, the evaluation results have shown that it can balance the workloads of physical networks, reduce the response delay of cloud applications, and possess an excellent adaptability. It can optimize the performance of physical networks and clouds datacenter, so it is suitable to allocate the resources for a dynamic internet environment. Unfortunately, this paper only focuses on the cloud layer.

The optimal allocation of resources to application tasks, the same as computing speed, available energy, storage capacity is more important than their relative distribution and does not load some objects [109]. Pilloni and Atzori [48] have focused on optimal assignment to the physical devices that perform the same task needed by the running applications. Some technologies have been developed for Virtual Object (VO). In this regard, more focus should be on these technologies. The current functionalities of VOs are developed to perform a distributed task allocation among objects. A distributed algorithm is proposed in which the VOs are transferred to reach a consensus resources allocation. The workload is distributed between the objects to cooperate with the same task and ensure that the Quality of Information (QoI) requirements are fulfilled. The performance of the system is compared to a static frequency allocation that have shown that network lifetime is improved to 27%.

The work in [54] has proposed a framework that makes use of VOs to manage the objects of an IoT system. Using VOs, the resources, functionalities, and capabilities available on the objects are virtualized and are exposed to other objects to cooperate for executing the deployed applications. The workload is distributed among the objects by developing a distributed algorithm for resources allocation. The network lifetime is improved to 62% according to the comparison of the system performance and static frequency allocation.

The IoT edge node should be the starting point of the captured data to avoid big data challenges such as high latency of cloud-based IoT. However, the data onboard cannot process completely due to the limitation of energy resources and available processing capabilities. The bandwidth allocation and computation offloading in edge nodes of IoT are studied in [83]. A new method is proposed for using the limited resources completely. The utilization of gateway’s bandwidth has increased up to 40% according to the experimental results for a health-monitoring case study. The battery lifetime of IoT edge devices has 1.5-hour improvement. Unfortunately, the result is limited to a health-monitoring case study.

The comparison of load balancing-aware resource allocation techniques is shown in Table 18. Further resources and parameters used for load balancing-aware resource allocation are presented in Table 19.

Table 18 Load balancing-aware resource allocation
Table 19 Resource, environment, and parameters for load balancing-aware resource allocation in IoT

6 Results and comparison

A workload will be incurred to the IoT system by the processing of an application. In this case, the workload can be translated as the number of needed resources to provide the specific required tasks by the application. The workload includes the use of network bandwidth and sensing devices, the memory and processing load consumed by the application. [11].

Most popular techniques for allocating the resources in the IoT were described in the previous section. Eight main categories were described and the related papers were studied in Sect. 5. In this section, the main features of the approaches are studied and the important factors that have been improved in all of the mechanisms are shown briefly in Table 20.

Table 20 Improved parameters in described papers

Increasing the performance of the resource allocation of IoT is one of the most important goals in the described papers. In addition, increasing the QoS and its utilization are investigated in some studies. Reducing the amount of energy consumption, power and time are highlighted in these papers. The resource allocation is very important for the IoT ecosystem. An optimized resource allocation can be achieved by the assurance of availability, reliability, reducing the failure rate and SLA violence in the IoT ecosystem. The selected articles in Table 2 have checked the resource allocation parameters. The obtained results are explained in Sect. 5 and Fig. 9. It shows that the performance, utilization, cost, and QoS are the most beneficial parameters that are described by researchers in the field of resource allocation in the IoT.

Fig. 9
figure 9

a The percentages of resource allocation parameters b analysis of resource allocation Parameters in IoT

Although some articles emphasize the SLA, workload, context-awareness, energy, latency, and bit rate, there is a strong necessity for concentrating on these parameters. Meanwhile, in the IoT ecosystem, the SLA, energy, and power are the most important parameters for resource allocation but a little number of scholars are applied to these parameters in their studies. In fact, in the IoT ecosystem, each layer is tried to reduce the expenditure (energy, storage etc.) for enhancing the revenues with maximum usage of resources competently. In addition, users always look for higher performances of the services with the least cost and time. Therefore, cost, energy, and power for sensor networks are the most essential parameters in the IoT resource allocation. However, there should be more focus on the throughput in the future research in the IoT ecosystem for cloud-centric IoT, data center, fair allocation, and enhancing the resource utilization in different layers of IoT.

The analysis of resource allocation techniques based on publication date is presented in Fig. 10. It shows that the majority of selected papers are published between 2015 to 2018 and only six out of 39 selected papers are published before 2015; it is emphasized that the references of this systematic review are new.

Fig. 10
figure 10

Analysis of resource allocation papers based on year

7 Open issues and future directions

The IoT ecosystem has the potential to provide different services to increase the productivity of this novel paradigm. Despite its potential benefits, there are still many challenges in the IoT paradigm and its large different concepts.

One major challenge in this context is to allocate the resources involved in an IoT ecosystem. The state of the art mechanisms in the area of resource allocation for IoT is discussed in this systematic review. Most studies that are reported in the current literature, either fully or partially consist of one or more solutions, optimization, or algorithm that are related to resource allocation in the IoT. We have classified them into eight groups, which are summarized in Sect. 5. There are still several research opportunities to be explored in the field of resource allocation in order to tackle all the challenges posed by the IoT ecosystems in this context.

Scholars in many types of research have mainly considered the simulator-based tools for evaluation of their proposed mechanism, so investigating the effects of the performance of the system in a large-scale environment and real IoT ecosystem would be interesting and necessary for the future studies. In addition, in some papers, only theoretical frameworks are presented, practical implementations or the simulation of the proposed mechanism are useful for proving the reality of their frameworks and it can open different views from their mechanism to the other researchers. We believe that there is a gap between the design time and the effective allocation at the time of execution and this gap must be reduced.

Optimization in resource allocation is the main challenge that needs many efforts for implementing in the IoT ecosystem. Many resource allocation activities focus on the algorithmic optimization procedures. However, finding out the optimal solution on time, in such a large and complex system, is non-trivial. Many works have applied the heuristic and metaheuristic approaches because of its simplicity and low response time even when providing the near-optimal solutions. Some solutions are linear programming [9]. The authors have recommended that the application of recent meta-heuristic optimization techniques have been proven more effective than the previous ones. Further, a meta-heuristics algorithm such as genetic algorithm can be improved in term of quality of solutions or convergence speed by combining it with another population-based, nature-based, biology-based, or some local search based heuristic and meta-heuristic algorithms. One of the advantages of combining two population-based meta-heuristic algorithms is that the shortcomings of one algorithm can be overcome by the strengths of another algorithm.

Furthermore, based on different studies in this review, it can be observed that the scholars do not consider some important parameters in their studies and enhancement is required to improve the performance of the existing technique. For example, some studies have considered the priority, workload, and energy consuming while some totally ignore these issues. An independent study is required that addresses all issues involved in resource allocation for IoT.

One major challenge in the IoT ecosystem is to manage efficiently the resources involved in this ecosystem. The resource modelling, discovery, estimation, allocation and monitoring are the main activities in the resource management system in IoT [11]. The resource allocation is the core of the resource management system, but the collaboration of the above activities is necessary to enable the proper and continuous operation of the resource management system in the IoT ecosystem. The resource model is a vital part of any resource management system since it defines the entities, properties, and relationships that build up the system, thus it drives the whole operation of the resource manager [19]. Then, it is interesting for researchers in the future. Before allocating the necessary resources, the resources must be discovered in the IoT ecosystem. The resource discovery in such a heterogeneous system is a challenge by aggravating the current lack of standardization of protocols and formats in the field.

Another activity that is necessary for the Resource Management System (RMS) of IoT systems is the resource monitoring. The execution environment is extremely dynamic, including variations related to the user, the network, the physical environment, and the devices. The monitoring of these environmental variations is essential to provide a high-quality service. Moreover, the monitoring of current resource usage is also necessary for keeping an optimum or near to optimize the resource allocation. Finally, estimating the number of resources is useful to the better assurance of the successful completion of the application. All activities from resource modeling, discovery, estimation, and monitoring are interested contexts as future works for researchers and scholars. With the expected ultra large scale of the IoT along with its dynamic and opportunist characteristics, it is necessary that RMS is endowed with self-management features [11].

We believe that the resource allocation in IoT would be upgraded to the self-allocation properties in the future. Monitoring the execution environment, learning from past and current behavior, self-adapting, self-healing, self-allocating, and self-optimizing are performed by systems with minimal external intervention and with self-management and self-allocation features that are the most promising solution to the challenges of resource allocation in the IoT and intelligent management of resources available across all layers. According to the context with minimal external intervention are the most promising solution to tackle all the resource allocations in IoT challenges and intelligently management the available resources in all layers.

One concept of IoT is the application of IoT to the manufacturing industry that is called the Industrial Internet of Things (IIoT) or Industry 4.0. The IIoT can greatly improve the connectivity, efficiency, scalability, and cost savings for industrial organizations [110,111,112,113].

The IIoT is a larger concept than IoT and the businesses that have embraced adopted the IIoT have had significant improvements inefficiency, profitability, and safety. It is estimated that in the future, successful companies will be able to increase their revenue through IoT by creating new business models and improving productivity. However, some challenges are surrounding the implementation of IIoT, data sharing, interoperability, reliability and resilience and security; unfortunately, few types of research address these important challenges [114,115,116].

Big data is the term for a collection of data sets is so complex and large that it becomes difficult to process using on-hand database management tools or traditional data processing applications [117]. The analysis, capture, curation, storage, search, sharing, transfer, and visualization are the big data challenges in IoT and IIoT and all of these challenges are related to the allocating resources and tasks in IoT that need to be addressed carefully [118].

The blockchain is one of the biggest innovative technologies that supports the cryptocurrency (a medium of exchange created and stored electronically in the blockchain, using encryption techniques to control the creation of monetary units and to verify the transfer of funds [119]) is used to provide privacy and security in peer-to-peer networks [120]. It runs Bitcoin (digital cash) with the potential to influence every industry from manufacturing to financial and educational institutions [121, 122]. In theory, the blockchain has several advantages; it can help to improve privacy and security, majorly via decentralization because the user identities remain private. The Blockchain uses all resources of devices in the process then robustness and scalability are offered in IoT [120].

However, using the blockchain in IoT have some challenges, for example, limitation in resources is a challenge for supporting the cryptocurrency mining because of high computational cost. Low latency and low traffic in IoT applications are eligible but mining of blocks is time-consuming and make high overhead traffic. In addition, the scalability issues that may lead to centralization and encryption in IoT is a big challenge because several devices are power-limited and resource-limited [123].

Network Function Virtualization (NFV) and SDN are novel paradigms and important trends in the networking industry. The idea behind the SDN in the network is separating the control plane from the data plane and creating a manageable and programmable network. The idea of NFV is to virtualize network services and deployments to use commodity servers for running the software versions of network services are called Virtual Network Functions (VNF) that previously were hardware-based. Some examples of VNFs include the encryption, firewalling, load balancing, and routing [124]. These two architectures are very important for changing the static network design into an open and intelligent network [125]. One challenge for IoT is designing an efficient SDN based architecture with NFV implementation. The deployment of network services, improving the programmability, security, and standardization are some identified challenges for future research in the SDN and NFV architectures [125, 126].

Many researchers have tried to progress 5G network architectural and standardization in academic and industrial contexts [127]. The 5G standard can enlarge the scope of coverage of IoT, but there are some challenges in 5G-IoT, for example, the security and trust communication concerns, scalability, D2D communication, deployment of IoT applications and supporting SDN in 5G-IoT are still technical challenges in this area [127, 128].

8 Conclusion

This paper presents a systematic and analytic review of resource allocation in IoT. By investigating the online databases, 143 articles are found. Finally, by using different filters, 39 articles are selected that their methods are directly related to the resource allocation in the IoT. The highest percentage of articles is 51.2%, which is related to IEEE, and 20 articles from IEEE are selected. After that, 7.6% of the articles are related to Elsevier and 7.6% of the articles are related to Hindawi publication. 5.1% of them are related to Springer, 5.1% of them are related to Research Gate, and 5.1% of them are related to ariXiv. There are some articles in other publications. The analysis of resource allocation techniques based on publication date have shown that the majority of selected papers are published between 2015 to 2018 and only six out of 39 selected papers are published before 2015 and they highlight the novelty of their subjects. The resource allocation techniques for IoT are categorized into eight main groups, including cost-aware, efficiency-aware, load balancing aware, power-aware, QoS-aware, context-aware, SLA-based and utilization-aware resource allocation mechanism. For each of these classes, we have reviewed and discussed the advantages and disadvantages of their mechanisms.

We have compared the collected literature by using some parameters such as availability, performance, bandwidth, cost, energy, QoS, SLA, throughput, etc. and then have highlighted some interesting lines for future works. It can be observed in many studies that the researchers do not consider some important parameters in their works and enhancement is required to improve the performance of the existing techniques. An independent study is required to address all issues involved in resource allocation for IoT.

We believe that the resource allocation in IoT would be upgraded to the self-allocation properties in the future. Then with the self-managing and self-allocation features, the systems are able to monitor the execution environment, learning from past and current behavior, self-adapting, self-healing, self-allocating, and self-optimizing according to the context with minimal external intervention. They are the most promising solutions to tackle all the resource allocations in IoT challenges and intelligently manage the available resources in all layers. The collected results of this systematic review can be a good reference for scholars in the resource allocation for IoT. Particularly, the key requirements for IoT, answers to the research questions, summarized resource allocation’s concepts, current issues, research terminologies, approaches and mechanisms in allocating resources for IoT ecosystem and the recommendation for future works are very important.