Machine-to-machine (M2M) technologies allow devices to communicate more directly with each other using wired and wireless communications systems. M2M technologies enable further realization of the Internet of Things (IoT), a system of uniquely identifiable objects and virtual representations of such objects that communicate with each other and over a network, such as the Internet. IoT may facilitate communication with even mundane everyday objects, such as products in a grocery store or appliances in a home, and thereby reduce costs and waste by improving knowledge of such objects. For example, stores may maintain very precise inventory data by being able to communicate with, or obtain data from, objects that may be in inventory or may have been sold.
The IoT includes a variety of physical entities or “things”, such as objects, devices, gateways, routers, servers, users, and applications. Each IoT entity may have various physical resources on different protocol layers that can be virtualized. A protocol (e.g., a media access control (MAC) protocol or routing protocol) can be one of several physical resources associated with protocols that a physical entity can dynamically support through virtualization. A physical IoT entity itself can also be a resource. A deployed IoT system or a physical IoT entity can support different applications at different times or at the same time based on its configuration and requirements. For example, a large-scale outdoor wireless heterogeneous sensor network deployed in a city can support an air quality monitoring application, a traffic monitoring application, a public safety management application, etc. In another example, a physical IoT gateway installed at a home can support several applications such as a remote healthcare application, a house monitoring application, and a smart appliance application. As a result, virtualization may be used to support sharing of such resources among multiple applications and/or users.
The access to resources by IoT entities is essential to successful operation of the IoT. Physical and software resources that may be needed by various IoT entities may be represented in a such a way that IoT entities can interact with such resources through interfaces to the resources without having to have knowledge of the resources' underlying physical and/or software implementations. In the IoT this may be referred to as resource “virtualization”, and the resources used may be provided as a service to requesting IoT entities through the use of, for example, logical interfaces. Examples of virtualized resources may include infrastructure as a service (IaaS) where cloud providers provide a cloud infrastructure as a physical or a virtual machines to users, platform as a service (PaaS) where cloud providers provide a cloud computing platform (e.g., an operating system, a programming language execution environment, a database, and a web server), software as a service (SaaS) where cloud providers run software in the cloud, receiving input for the software from users and providing the software's output to users, and other virtualization-enabled services, such as storage as a service, data as a service, etc.
Existing virtualization techniques, however, are not service-layer common functionalities and not specifically defined for IoT systems. Service-layer virtualization functionalities are underdeveloped in existing M2M/IoT architectures and service capabilities as defined in ETSI TC M2M, TS 102 690 (Architecture), the Europe IoT-A Project, the Europe iCore Project, and the Europe Butler Project. What is needed in the art are systems and methods that include new service-layer virtualization functionalities as a common service and that can support the integration of efficient and flexible IoT resource virtualization.