Resource Consideration in Internet of Things: A Perspective View

The ubiquitous computing and its applications at different levels of abstraction are possible mainly by virtualization. Most of its applications are becoming pervasive with each passing day and with the growing trend of embedding computational and networking capabilities in everyday objects of use by a common man. Virtualization provides many opportunities for research in IoT since most of the IoT applications are resource constrained. Therefore, there is a need for an approach that shall manage the resources of the IoT ecosystem. Virtualization is one such approach that can play an important role in maximizing resource utilization and managing the resources of IoT applications. This paper presents a survey of Virtualization and the Internet of Things. The paper also discusses the role of virtualization in IoT resource management.


INTRODUCTION
Virtualization is the replication of a device or its resources in virtual form. Multiple processes from different applications run at the same time, thereby increasing the efficiency and decreasing the maintenance overhead.IBM developed the concept of virtualization, but as the cost of hardware decreased with time, the concept of virtualization became less prominent [1,2].
With the advent of the Internet, the concept of virtualization came into existence again. Nowadays, data centers use virtualization techniques to abstract physical hardware and create multiple logical resources, available to users ondemand. Thus, virtualization users can instantly access computing resources and it leads to improved resource utilization and better application performance [3,4].
Applications of virtualization are manifold when we consider the computing as a service at different levels of abstraction. Nowadays, virtualization has become diversified in its applications especially in the field of Internet of Things. Virtualization is a powerful technique which can be used in a wide variety of IoT applications. These may include server consolidation, access to a variety of hardware and software resources at the device level and enhancements in the quality of service, etc.
With the advent of the Internet of Things, the number of devices connected to the Internet increases. In most of the IoT applications, these devices are resource limited regarding computation and communication which include storage, processing power, energy, and bandwidth. To manage these limited resources in IoT devices, a resource management approach is required. Virtualization is one such approach that leads to better resource optimization and efficient resource management. In addition to this, the surplus amount of data generated by the IoT devices imposes further constraints on IoT resources, and this becomes a major challenge in such application environments. Virtualization acts as a key enabling technology for various resource constrained IoT applications.
This paper presents an overview of virtualization and its type. It further discusses the Internet of Things along with its applications and architectures. This paper also gives the overview of various resources in IoT along with their limitations. It then discusses the role of virtualization in IoT resource management and the challenges encountered in IoT virtualization.
The paper is organized as Section 2 discusses virtualization, Section 3 focuses on the Internet of Things, Section 4 presents virtualization for IoT resource management, Section 5 discusses the challenges, and Section 6gives conclusions.

RELATED WORK
It is expected that billions of objects will be connected through sensors and embedded devices for pervasive intelligence in the coming era of Internet of Things (IoTs). However, the performance of such ubiquitous interconnection highly depends on the supply of network resources in terms of both energy and spectrum. Librating IoT devices from the resource deficiency, we consider a green IoT network in which the IoT devices transmit data to a fusion node over multi-hop relaying. To achieve sustainable operation, IoT devices obtain energy from both ambient energy sources and power grid, while opportunistically access the licensed spectrum for data transmission. We formulate a stochastic problem to optimize the Network utility minus the cost on on-grid energy purchasing. (Deyu Zhang, Ying Qiao, Liang She, Ruyin Shen, Ju Ren; 2019) In this paper, we study sustainable resource allocation for cloud radio access networks (CRANs) powered by hybrid energy supplies (HES). Specifically, the central unit (CU) in the CRANs distributes data to a set of radio units (RUs) powered by both on-grid energy and energy harvested from green sources, and allocates channels to the selected RUs for downlink transmissions. We formulate an optimization problem to maximize the net gain of the system which is the difference between the user utility gain and on-grid energy costs, taking into consideration the stochastic nature of energy harvesting process, time-varying on-grid energy price, and dynamic wireless channel conditions. A resource allocation framework is developed to decompose the formulated problem into three sub problems, i.e., the hybrid energy management, data requesting, and channel and power allocation. Based on the solutions of the sub problems, we propose a net gain-optimal resource allocation (GRA) algorithm to maximize the net gain while stabilizing the data buffers and ensuring the sustainability of batteries. Performance analysis demonstrates that the GRA algorithm can achieve close-to optimal net gain with bounded data buffer and battery capacity. Extensive simulations validate the analysis and demonstrate that GRA algorithm outperforms other algorithms in terms of the net gain and delay performance. Non-Orthogonal Multiple Access (NOMA) exhibits superiority in spectrum efficiency and device connections in comparison with the traditional orthogonal multiple access technologies. However, the non-orthogonality of NOMA also introduces intra-cell interference that has become the bottleneck limiting the performance to be further improved.
To coordinate the intra cell interference, we investigate the dynamic user scheduling and power allocation problem in this paper. Specifically, we formulate this problem as a stochastic optimization problem with the objective to minimize the total power consumption of the whole network under the constraint of all users' long term rate requirements. To tackle this challenging problem, we first transform it into a series of static optimization problems based on the stochastic optimization theory. (Daosen Zhai, Ruonan Zhang, Lin Cai, Bin Li and Yi Jiang; 2018) Established approaches to data aggregation in wireless sensor networks (WSNs) do not cover the variety of new use cases developing with the advent of the Internet of Things (IoT). In particular, the current push toward fog computing, in which control, computation, and storage are moved to nodes close to the network edge, induces a need to collect data at multiple sinks, rather than the single sink typically considered in WSN aggregation algorithms. Moreover, for machine-to-machine communication scenarios, actuators subscribing to sensor measurements may also be present, in which case data should be not only aggregated and processed in-network but also disseminated to actuator nodes. In this paper, we present mixed-integer programming formulations and algorithms for the problem of energy-optimal routing and multiple-sink aggregation, as well as joint aggregation and dissemination, of sensor measurement data in IoT edge networks. (Emma Fitzgerald, Michał Pióro and Artur Tomaszewski; 2018) With the development of wireless communications and the intellectualization of machines, the Internet of things (IoT) has been of interest to both industry and academia. Multihop routing and relaying are key technologies that will underpin IoT mesh networks in the future. This paper investigates optimal routing based on the trusted connectivity probability (T-CP) for multi-hop, underlay, device-to-device (D2D) communications with decode-and-forward (DF) relaying. Both random and fixed locations for base stations (BSs) are considered, where the former case assumes that the locations of the BSs are modeled as a Poisson point process (PPP). First, we derive two expressions for the connectivity probability (CP): a tight lower bound and an exact closed-form. Analysis is carried out for the cases where the channel state information (CSI) between BSs and the D2D transmitter is known (CSI-aware) and unknown (no-CSI). Interference from active cellular users (CUEs) is characterized by modeling CUE locations as a PPP. (Gaojie Chen, Jinchuan Tang and Justin P. Coon; 2018)

VIRTUALIZATION
Virtualization is the replication of a device or its resources such that multiple processes from different applications run at the same time to increase the efficiency and decrease the maintenance overhead. It attempts to reduce the complexity by abstracting underlying hardware and software. This allows efficient interaction with the various hardware and software resources along with improved resource utilization. Figure 1 depicts the IT infrastructure before virtualization, and Figure 2 depicts the IT infrastructure after virtualization. There are different types of virtualization in different computing environments. Some of which includes virtualization at the desktop level, network level, application level and storage level. The virtualization may differ in approach and implementation depending on the application requirements. Accordingly, virtualization can be categorized as follows: System Virtualization Infrastructure Virtualization Software Virtualization

System Virtualization
System Virtualization adds a layer on top of the bare hardware to provide an interface to some virtual machines (VMs) that is functionally equivalent to the actual hardware [5]. There are three techniques of system virtualization: full virtualization, para-virtualization, and hardware-assisted virtualization techniques [6].In full system virtualization, a virtual replica of the system's hardware is created so that operating system and software may run on the virtual form of device as they would run on the actual hardware. Some of the advantages of full system virtualization include good isolation, better portability, and enhanced security for virtual machines. But the disadvantage of full system virtualization is the very poor performance of virtual machines. Para virtualization, also known as operating system assisted virtualization, decreases the above problem of full system virtualization by modifying the procedure of operating system by using a virtual machine instead of CPU to perform the protected tasks. Hardware-assisted virtualization also known as accelerated virtualization is platform virtualization where the modified guest operating system is unnecessary to enable virtualization because virtual machine manager manages privilege instructions at a root mode without affecting the guest operating system while in CPUs like x86 do not have virtualization extensions which are not included in hardware Assisted virtualization. Figure 3 gives the summary of types of system virtualization.

Figure 3 Types of System Virtualization
System virtualization is of two types -server virtualization and desktop virtualization. In server virtualization, one physical machine is divided into multiple virtual servers with the help hypervisor, a software virtualization layer. Hypervisors are classified into two types: Type 1and Type 2. The Type-1 hypervisor runs directly on the hardware while as the Type-2 hypervisor runs on the top of an operating system [7,8]. Development of server virtualization technology started from a single server to multiple servers having common instruction set and manual management to multiple servers with the diverse instruction set and automated management. A single server system consists of a dedicated server with a hypervisor supporting one or more dedicated services. Multiple server systems comprises multiple servers with the common instruction set and a hypervisor that allows services from one physical server to another server manually. Here, the server-service relationship is dedicated. Multiple servers with the diverse instruction set and automated management contain virtual resources extended across some underlying server hardware with diverse instruction sets, and flow of services is done automatically.
The server virtualization was conceptually developed for data centers to dynamically control and share available resources on-demand. Services running on a server are interacting with available server hardware resources such as CPU, memory, network interfacing card, etc. These available resources can become invisible to the service and can also be shared if the virtualization layer is placed on the top of hardware. The virtualization can help to create different virtual machines and share the available resources between these virtual machines. Each virtual machine can have its resources depending on the service defined for it [9,10,11]. Some of the server virtualization software solutions include those by VMware, Citrix, and Microsoft.
As the range of users increases in an IT organization, it becomes a challenge for IT to deliver the right kind of desktop view in the right way for each user type. Desktop virtualization provides a solution by separating the physical location of a client device from its logical interface [12,13]. The desktop virtualization is a server-centric computing model. In this model, each end user can get the desktop experience remotely while the desktop virtual machines can be hosted and managed centrally in the data center [14].
There are many benefits of desktop virtualization which include high availability, a lower total cost of ownership (TCO), increased security, reduced energy costs and centralized management. Limitations of desktop virtualization include difficult GUI, increased downtime, security risks, etc.
Desktop virtualization can be done on user data and settings (user state virtualization), application and tools (application virtualization) and the operating system itself. The user state virtualization (USV) separates the data of user and settings from the physical device and replicates it centrally. It allows independence of the user profile from the client. Since the data is stored on a central machine, the user can log in anytime and can get immediate personalized experience. In case a device gets lost, the user can recover his data immediately, e.g., VDI Suite allows access to windows environment by connecting to host desktop running in the data center. In Application Virtualization, applications are isolated from other applications. It allows applications written for OS version to happily execute in another environment; this environment can be a new OS version or an entirely different OS, e.g., App-V from Microsoft provides application virtualization. Operating system virtualization allows access to the whole desktop environment, e.g., Microsoft Enterprise Virtualization provides OS virtualization and mitigates application incompatibility.
Desktop virtualization is of two types: server-side desktop virtualization (hosted desktop virtualization) and client-side desktop virtualization. With server-side virtualization, a user will keep the OS, applications, and data within the data center, where a user can execute those primarily using server resources. The advantage is low cost, low maintenance, and easy to manage client devices. The disadvantage of serverside virtualization is it requires additional server infrastructure. Server-side desktop virtualization is of two types -server-based computing and virtual desktop infrastructure. With server-based computing, applications are implemented, controlled, supported on the server instead of the client. While as in desktop infrastructure, all the profile settings, installed applications and patches are manageable in a central location. In client-side virtualization, user access applications that are streamed on-demand from central servers to client devices and these applications are isolated from the rest of the client system by a virtualization layer that is between the application and the local operating system. Client-side virtualization offers better central management with proper local execution than server-side virtualization.
Advantages of client-side virtualization include no need of big server infrastructure, better user experience due to local execution of applications, lower costs because images are managed centrally on the server, security to the data and virtualized images, and full PC performance while reducing the need for additional server investments.

Infrastructure Virtualization
Infrastructure virtualization refers to the virtualization of infrastructure resources such as network and storage. Accordingly, there are two types of Infrastructure virtualization viz., network virtualization and storage virtualization as shown in Figure 4.
Network virtualization combines the network resources such as hosts, switches, adapters, routers, bridges virtual machines, etc. into a single platform that appear as a single pool of resources. Hence, network virtualization increases resource utilization by sharing network resources. Benefits of network virtualization are improved efficiency, scalability, reduced operational costs and complexity, easy maintenance and provisioning tasks [15,16]. Network virtualization is of two types-device level virtualization and network level virtualization. Device level virtualization reduces the number of physical devices in a network; while network-level virtualization creates multiple logical networks from a physical network.
Storage Virtualization abstracts logical storage from physical storage. As per Storage Networking Industry Association (SNIA), storage virtualization is defined as follows: "The act of hiding, abstracting or isolating the internal functions of a storage (sub)system or service from applications, host computers or general network resources to enable application and network independent management of storage or data."

Figure 4 Types of Infrastructure Virtualization
Benefits of storage virtualization include easy migration of data between storage locations, better utilization of storage, improved SAN management, and decreased complexity in overall storage networking, faster and easier backup, archiving and recovery, etc. Some of the demerits include lack of standards, lack of interoperability, the overhead of mapping between local and physical locations, etc. [17,18]. Storage Virtualization can be done at the block level and file level. Block Virtualization refers to the separation of logical storage from physical storage to give greater flexibility to use the storage irrespective of the physical storage. The File Virtualization eliminates the dependencies between the data accessed and the physical location of the file to optimize storage utilization.

Figure 5 Types of Software Virtualization
Software virtualization creates virtual software installations. Benefits of software virtualization include easy client deployments, easy updating of software and easy software migration, security, centralized management of virtualized software, etc. The disadvantage of software virtualization is the extra overhead of packaging software; virtual software's may require more resources regarding storage and CPU, etc. Software virtualization is of two types -high-level language virtualization and application virtualization as shown in Figure 5.
The high-level virtualization solves the migration problem of executable programs between different architectures, while as application virtualization improves the manageability and compatibility of applications.
From the above discussions, it is evident that virtualization can be applied to a wide range of devices and resources starting from servers to desktops to tiny devices and storage, network resources, and applications; the main goal is the management of resources.

INTERNET OF THINGS
Internet of Things is the interconnection of billions of physical objects that are connected to the Internet [19]. The "objects" deployed in IoT systems include RFID tags, sensors, actuators, etc. These objects (devices) sense and aggregate the data to provide services to the end user. Since Internet of Things aims to embed higher level of Intelligence to the objects which otherwise are dumb, therefore it is evident from that IoT is transforming a physical world into a virtual world where anything can communicate intelligently. Figure  6 depicts an environment of the Internet of Things.

Figure 6 IoT Environment
According to the Gartner Report, the number of interconnected things in IoT is likely to reach 20 billion by 2020. Figure 7 shows the number of devices estimated and expected in the Internet of Things [20].

IoT Applications
Internet of Things provides a number of applications that covers several domains such as healthcare, automotive, security, smart environment, road monitoring, etc. as discussed in Table 1.

Smart Agriculture
IoT sensors can be deployed across multiple areas to facilitate remote monitoring of soil parameters and perform other agriculture-related tasks. Smart HealthCare Wearable IoT sensors can also be used to monitor patients remotely.

Smart Education
Internet of Things can also help in optimal learning in the education sector.

Environment Monitoring
IoT devices can be used in the remote monitoring of environmental parameters such as temperature, humidity, etc.

Smart Energy
Internet of Things also finds its applicability in energy management.

Water Quality and Dam Water Monitoring
Real-time monitoring of water quality with IoT sensors can also be done.

Disaster Mitigation
Multiple sensors can be deployed to reduce the influence of disasters on our ecosystem. Road Monitoring

Roads can be monitored by various built-in IoT sensors in the vehicles. Traffic Monitoring
IoT can also find its applicability in monitoring traffic in smart cities. Table 1 IoT based Applications

IoT Architectures
A lot of research has been done on the IoT architectures to find one reference architecture for all applications, but IoT encompasses an extremely wide range of technologies, therefore, a universal architecture cannot be used as a blueprint for all possible IoT implementations. Generally, IoT architectures can be classified on the basis of layers present in a particular architecture. Table 2 presents an overview of layered architectures used in various IoT implementations.

IoT Architecture Layers
Three-layer Architecture Perception Layer interacts with IoT nodes to collect, process and transmit the processed data into the upper layer, Network Layer determines the routes to transmit the data to IoT applications, Application Layer receives the data transmitted from the network layer and uses the data to provide required functions.

Four-layer Architecture
Perception layer, Network layer, Service layer, Application layer, The extra layer being service layer aims at the discovery, composition, and management of services.

Five-layer Architecture
Perception layer, Network layer, Processing layer, Application layer, Business layer, The role of perception, network and application layers is the same, but the additional layers add more functionality such as the processing layer stores, analyzes, and processes huge amounts of data. The business layer manages the applications, business, and privacy of users.

Six-Layer Architecture
Coding Layer, Perception Layer, Network Layer, Middleware/ Processing Layer, Application Layer, Business Layer, The five layers perform the same functions as in five layered architecture; the role of the coding layer is to provide identification to the IoT objects. Table 2 Layered Architectures of IoT

Resources in Internet of Things
With the advancements in embedded technology, the processing power of IoT devices is increasing day by day. For any IoT device to process the collected data without relying on any powerful infrastructure, it needs storage space for data processing algorithms [21], which is limited in case of IoT devices. Further, the processing capability and networking is dependent upon the availability of energy, which is also limited in IoT devices. In addition to this, the IoT devices have limited bandwidth; therefore inefficient management of bandwidth imposes more constraint on energy, storage, and processing requirements in IoT environments [22]. Thus, it is evident that IoT devices are constrained in terms of resources.
According to RFC7228, constrained nodes are classified into Class 0, Class 1 and Class 2 (See Table 3).

Virtual IoT
Nowadays, the Internet of Things is growing at an enormous rate, and its accessibility to the common man is increasing. As such it enables more and more data to be collected for processing and analysis. To support various intelligent applications, IoT utilize sits physical resources such as storage, processing, energy, and communication. Since these resources are limited, it poses many challenges in application environments which in turn demands management of these scare resources in Internet of Things. Virtualization is considered as one of the possible means that can take care of resources in IoT environments. The idea is to integrate the real world with the virtual one to increase the access to new possibilities in Internet of Things that could forecast past, present and future. Research in this area is in progress.

VIRTUALIZATION FOR IoT RESOURCE MANAGEMENT
Internet of Things is a novel paradigm that has gained momentum in the past few years. It is actually a worldwide network of interconnected things that are characterized by high degree autonomous activities such as data sensing, storage, and communication. The devices in Internet of Things can be classified into resourceful and resource constrained devices depending on the resources available in a particular device. The limited resources with heterogeneous characteristics of IoT devices becomes a major challenge, as such, there is a need of need of special attention towards on how to manage the resources. IoT presents the biggest challenge to network designers on how to manage the number of devices and their connections, the surplus amount of data generated by IoT devices, and resource consumption such as memory, processing, bandwidth, and power consumption [24]. Virtualization plays a dominant role to manage resources in such environments and is considered to be one of the approaches to addresses such limitations especially resource limitations in IoT. Thus, virtualization provides a better solution for networks to deliver the resources necessary for IoT to eliminate the need for network infrastructures.
There has been recent work on virtualization in Internet of Things to optimize its resources and improve its network design. Work has been done to standardize and virtualize IoT devices and its resources through Open Flow technology [25]. Lightweight virtualization has been carried out to take the limited resources in IoT, the most common being the container-based virtualization which includes Docker and LXC containers. Container-based virtualization is commonly adopted on IoT devices and benefits include fast creation and initiation of virtualized instances, high density of applications, reduced costs, improved software quality, decreased design time, and reduced overhead as compared to hypervisor-based approach (See Figure 9).

Figure 9 Container-Based Virtualization and Hypervisor-Based Virtualization Architectures
IoT is a complex paradigm consisting of interconnected heterogeneous devices ranging from servers to desktop to tiny devices which includes wireless sensor motes, fog devices, mobile devices, etc. Like IoT devices, WSN nodes, mobile devices, and edge/fog devices are resource constrained in task-intensive applications that demand deployment of a huge number of devices and generate a large volume of data. And resource management is an essential step that needs to be explored in such devices as well. Considerable work has been done on resource management in Mobile Computing, Wireless Sensor Networks, and Fog devices. Resource management is an essential step that needs to be explored in such devices as well.
Mobile devices are an integral part of many IoT applications that deal with the transmission of data, without having to be connected to a fixed physical link. Since mobile devices are resource limited in applications and generate an enormous amount of data, an offloading mechanism is required that will send the computations to the remote server or cloud to balance the resource-constrained nature of such devices with application requirements (see Figure 10). Many virtualization approaches play an important role in offloading tasks to manage the resources of mobile devices, and these include Cuckoo, Cloudlet, Think Air, etc.
WSN devices are an integral part of IoT applications capable of sensing, computing and communicating data to monitor the environment (see Figure 11). There has been a recent trend towards virtualization in fog platforms to manage the limited resources in Internet of Things. Fog computing extends cloud services to the network edge. Figure 12 shows the architecture of Fog Computing. Computational offloading is one technique that takes care of constrained resources in IoT at the node level and network level by pushing the computation towards the Fog devices. Benefits include high data accuracy, improved Quality of Service, reduced latency, etc., but there are various issues like security, privacy, trust, and service migration in Fog platforms. Virtualization can play a dominant role in Fog computing to resolve some of these issues.

Figure 12 Fog Computing Architecture
Since, various operations such as storing and processing of data between the cloud and end devices are performed by the fog, therefore, it automatically helps in resource management of IoT. Many approaches can be used to perform offloading in Fog computing and virtualization is one of them. By incorporating virtualization at the network edge, there is an option to push computation to the network edge. Using virtualization, Fog platforms get multiple functions into a single device that enables various virtualized devices to coexist on multiple machines and this, in turn, helps in resource management in Internet of Things.

CHALLENGES
Internet of Things consists of resource-constrained IoT devices such as storage, computational power, communication, etc. To make optimal use of the resources, virtualization can play a key role. However, the distributed and ad hoc nature of the IoT systems poses many challenges to virtualization as discussed below: Identification of IoT devices in a Network: In virtualization of IoT devices, proper identification, naming, and addressing of these virtualized devices is a major challenge, since the number of devices in an IoT environment is huge. Heterogeneity: IoT environment is a very complicated heterogeneous network platform, and management of such a high level of heterogeneity at both architectural and a protocol level is also a major challenge. Performance issues: Virtualization in IoT devices causes saturation of the network that affects performance, bandwidth, and latency. Managing huge number of IoT devices in a network: As the number of devices increases in a network, the number of virtual devices increases in multiples of an actual number, as a result, unified information infrastructure is required to manage such number. Manage Complex Data: A huge number of connected virtual devices in the IoT environment produce data in a variety of form. Managing this IoT data is a major challenge in virtualization. Standardization: Standardization in virtualization is another challenge; standards need to be evolved with the emergence of virtualization while designing other technologies at a horizontal pace. Security: The larger number of virtual devices in the IoT application increases the attack surface, with the result the need for security becomes a major concern.

CONCLUSIONS
The increased role of the IoT devices in our daily life leads to data explosion and demands improved processing, connectivity, and analysis of the data generated. The huge number of IoT devices and the surplus amount of data generated by these devices becomes the major concerns in such environments. Virtualization in different forms can be applied to such IoT environments to deal with a large amount of data generated by these devices. The voluminous data in IoT applications has forced the offloading of computations from IoT devices to the Fog devices or cloud platforms. The offloading of the computational load from the IoT devices to edge devices or fog is possible by virtualization.
Virtualization in different forms can also be applied to IoT devices to deal with the huge amount of data generated by them. Network virtualization also plays a key role in dealing with such inherent complexity in Internet of Things. Virtualization increases the efficiency of complex IoT systems to optimize their limited resources. It reduces the number of physical IoT devices by making virtual images of devices, which intern reduces the cost and improves hardware utilization, hence leads to better management of limited resource in IoT environments. IoT environments have adopted virtualization to meet various challenges such as a large amount of data, a huge number of devices, device heterogeneity, performance issues, and resource management. The volume of heterogeneous data is growing rapidly and handling such data requires the management of multiple data stores in computation-intensive IoT applications. Virtualization provides an added level of efficiency to make low-cost IoT application services in our day-to-day life, a reality.