High-Level Edge Computing Infrastructure for the IoT
The Internet of Things (IoT) is a network that interconnects physical devices. Most of these devices are designed to interact with the physical world and fall under the categories of sensors (i.e., devices that collect data from the physical world) and actuators (i.e., devices that perform actions to alter the state of the physical world). IoT devices are also widely heterogeneous: while some devices are on the low end of the spectrum (e.g., a sensor built using a simple microcontroller), high-end devices can run full multithreaded operating systems (e.g., Raspberry Pi or BeagleBone platforms can run Linux or Android). The IoT landscape has experienced phenomenal growth - a recent study from Ericsson forecasts that there will be over 29 billion IoT devices by 2022.
IoT devices generate large amounts of data that needs to be processed to support decision making. In a traditional cloud-centric model, processing takes place in cloud data centers, based on the data collected by sensors. However, this cloud-centric approach has significant limitations for delay-sensitive and critical applications, such as high and unpredictable latencies, as well as the dependance on a high-bandwidth connection to a centralized remote infrastructure. Edge computing, an emergent paradigm, provides a model in which portions of the data processing is moved towards the devices themselves, and directly on them.
1. Multi-Dimensional Edge Adaptation
High-level IoT/edge applications are characterized various dimensions, such as (1) their computational requirements in terms of resources (e.g., processing power, memory), (2) their input and output data requirements (i.e., which data sources they need to access to perform their computations, and what data they are generating), and (3) their requirements in terms of network communications and connectivity (e.g., latency, bandwidth, jitter in relation to the network itself, and towards other components). For applications to execute in a reliable and performant manner, a system adaptation policy which considers these different dimensions together is of utmost importance.
Come up with a multi-dimensional load balancing policy that can autonomously schedule the execution of high-level applications on edge and cloud devices.
The following research questions will be addressed:
* Where to deploy the different components of the high-level IoT/edge applications executing within the system?
* Where to deploy the data read and written by the edge applications?
* How to optimize the communication overlay to ensure that network constraints are met?
* How should rebalancing be done when conditions change?
2. High-Level Edge Computing Services
Nowadays, a plethora of cloud services are offered, which provide convenience and flexibility, across different models: Infrastructure as a Service (IaaS, which provides virtual machines and containers), Platform as a Service (PaaS, which provides developer-oriented services) and Software as a Service (SaaS, which provides user-oriented services).
Given the computational power of recent edge devices, and the limitations of cloud-only models, some of these services cloud be offered in a hybrid model in the “cloud-edge”, and would benefit from the processing capabilities of recent IoT devices, in combination with the cloud.
Develop a set of high-level services (IaaS, PaaS, SaaS) that can be overlaid onto IoT and cloud devices, and benefit from the capabilities of each different device.
Example of services include:
* Infrastructure as a Service: micro-virtualization (deploying virtual machines and containers onto cloud and edge/IoT devices), isolating different applications running within the same context
* Plaform as a Service: distributed file systems, no-SQL and SQL databases, communication overlays
* Software as a Service: stream processing, Web-of-Things
3. MQTT Edge Communication Infrastructures
MQTT / publish-subscribe is an efficient, yet flexible communication paradigm that allows for exchanging data in a decoupled manner between different applications, using message queue abstractions. MQTT enjoys widespread popularity in many contexts, and in particular in an IoT setting. MQTT brokers (which handle communication flows) are typically provided as a service in a centralized location (i.e., in the cloud). In an IoT context, this might not always be the best option; rather, a more distributed model might be better.
Develop distributed MQTT (publish/subscribes) models that are overlaid onto the IoT/edge devices themselves as to benefit from the processing and networking capabilities of these devices, and compare against traditional cloud-centric approaches.
* Handling the latency, jitter and bandwidth constraints of the devices and applications
* Exploring other flavors of publish/subscribe and their relevance the IoT landscape (e.g., content-based, graph-based)
4. Interoperability of IoT/Edge Applications through the Web-of-Things
The Web of Things (WoT) aims at bridging the gap between the IoT and the Web by exposing the devices and applications, as well as the plethora of data, events and actions that they provide through open APIs and standards. To that end, open APIs such as the Mozilla Web Thing API can be used to standardize access to the data, events and actions exposed by the various components of high-level distributed IoT/edge applications.
Leverage the Mozilla Web Thing API (or other similar open APIs) to model high-level abstractions in IoT/edge applications.
Potential sub-projects include:
* Developing a model for exposing data/actions/events produced by high-level IoT/edge applications through different hierarchical layers, given that different applications might be interested in different levels of granularity / aggregation.
* Coming up with domain-specific languages for expressing the high-level data flows, actions and events of high-level IoT/edge applications.
* Developing relevant use cases and applications.
5. WebAssembly Code Migration for the IoT
To make our migration approach more generic, it would be interesting to explore how migration can be supported for other languages. A potential approach would be to leverage WebAssembly (WASM), which provides a binary (compiled) language that can execute on different platforms. Given that several compilers can output WASM for different input languages, implementing migration of WASM code could open the door to supporting the migration of language-agnostic high-level IoT/edge applications.
Develop techniques and algorithms for enabling the migration of generic WASM IoT applications between different WASM virtual machines on arbitrary devices, with preservation of the state.
* Undergraduate or Master’s degree in Computer Science, Computer Engineering, Software Engineering or related discipline, and very good academic grades.
* Excellent programming skills. Experience with developing systems software (e.g., operating systems kernels, compilers, client-server applications, web applications, middleware) is an asset.
* A good command over the English language (both spoken and written) is an asset.
* Research experience in the form of internships, research projects and/or papers in international venues is an asset.
* Ability to work independently and be self-driven.
Desired program of studies
Masters with project, Masters with thesis, Doctorate
Information and communications technologies
Competitive funding is available for these projects
Starting : 2019-01-30
Site web: www.juliengs.ca