Self-Adaptive Virtualization for Avionics Systems
Virtualization techniques brings advantages for avionics systems. With them it is possible to comply with a wide range of requirements: different applications have different system requirements, making it infeasible using only one operating system to run all the necessary applications in the context of avionics systems. With the increasing complexity of avionics systems, with a high number of sensors, actuators and other devices, the maintenance, development and deployment of such systems in the avionics context became a challenge. Some research works are moving towards the direction of self-organizing (adaptive) avionics platforms, were all the devices in the airplane are automatically identified, mapped and configured. This way, the effort for development and deploying are drastically reduced.
Self-adaptive avionics is focused so far on hardware devices, and not virtual devices, such as virtual machines (VMs). In order to achieve a “Plug and Fly” approach for avionics platforms, virtual machines must also be taken in consideration, since they also cause a high complexity when it comes to development, deployment and integration. Aiming this gap, the present work proposes the development of a system that automatically install, modify, monitor and identify virtual machines and execute tasks on them according to the platform needs.
The proposed system is divided in the following parts: communication, management, monitoring and task allocation. In the communications part, each virtual machine should advertise itself through the local network, indicating its own existence and capabilities. A self-discovery algorithm would communicate with each VM and store all information in a central consciousness. This way is possible to know which VMs are available and what they can do. In the management part, a VM Manager is proposed, that can execute functions inside a hypervisor, or a VM. This VM Manager can create, delete, reboot, modify and start virtual machines according to an input (like a configuration file, or a request). In the monitoring part, each VM should be constantly monitored in order to identify ongoing problems, system crashes and memory overloads. In case of any major problem, an action should be taken: reboot the system, modify some parameters, reallocate tasks or delete the VM and reinstall it. In the task allocation part, it should be decided in which VMs the applications are going to run. Memory, CPU and storage should be taken into account for that decision.
In a first approach, what was done until the present moment was an automatic mapping of running virtual machines in a XEN Hypervisor with Dom0 and DomUs. Basically, the Dom0 has the VM Manager inside collecting information about all running VMs that are under control of the Dom0. Then, the VM Manager keeps advertising itself to the local network. The topology-discovery captures the messages and requests a self-description. Afterwards, the VM Manager responds with information about the Dom0 and its DomUs. Then, the information is stored in the consciousness. This way, all the available VMs are mapped into the consciousness.
In order to evaluate this first approach, the network traffic and system overload were analyzed. All the checksums were good, and even with increasing number of VMs and modifications, no error was induced in the checksums. Also, the system seems to be lightweight, since does not induce any memory/CPU overload in the main OS. These first results are promising, initially achieving part of what was proposed.