Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/88717

TítuloVirtIO infrastructure for a static partition hypervisor: VirtIO-Net
Autor(es)Costa, João Rodrigo Lima
Orientador(es)Pinto, Sandro
Data9-Jan-2023
Resumo(s)O uso de sistemas embebidos tem crescido exponencialmente em indústrias como a automóvel ou aeronáutica. Isto tem levado a um aumento na complexidade dos sistemas, onde é necessário consolidar várias camadas de software com diferentes níveis de criticidade numa única plataforma de hardware. Para aumentar a segurança destes sistemas, a indústria tem-se focado na tecnologia de virtualização, uma vez que a mesma permite a integração e o isolamento dos vários subsistemas. Recorrendo a um hipervisor é possível partilhar os recursos de hardware entre múltiplas máquinas virtuais (VMs). No entanto, os hipervisores tradicionais não foram desenhados para garantir os requisitos de tempo-real e de segurança. Por este motivo, hipervisores de particionamento estático, como o Jailhouse, que alocam os recursos de hardware estaticamente para as VMs em tempo de design, têm ganho cada vez mais protagonismo. Porém, o Jailhouse depende do Linux para iniciar e gerir as VMs, criando alguns problemas de tempo-real e segurança. Assim sendo, o nosso grupo de investigação focou-se em desenvolver o hipervisor Bao. O Bao implementa uma camada minimalista de software e não tem qualquer dependência de bibliotecas externas. A implementação atual do Bao dá acesso pass-through aos periféricos, não sendo possível a partilha de dispositivos. O trabalho desenvolvido nesta dissertação consiste no desenvolvimento de uma infraestrutura que permite a partilha de dispositivos utilizando VirtIO. Esta infraestrutura deve ser genérica e deve ser com patível com as front-ends já existentes. A infraestrutura do VirtIO é implementada numa máquina virtual dedicada (service guest), cuja função é gerir as múltiplas virtqueues que permitem transmitir e receber dados de outras VMs que utilizam VirtIO. Ao contrário das soluções existentes, nesta dissertação, as back ends do VirtIO são implementadas não no hipervisor, mas numa VM, resultando numa TCB reduzida para o sistema. A segunda parte da dissertação foca-se em implementar duas drivers back-end, i.e., uma para o VirtIO-console e outra para o VirtIO-net. A primeira driver é uma driver simples e é utilizada essencial mente para garantir a validação adequada da interface implementada. A segunda é mais complexa, mas é essencial para qualquer hipervisor moderno.
The use of embedded systems has grown exponentially in industries such as the automotive or aero nautics. This led to an increase in the complexity of systems where it is necessary to consolidate several layers of software with different levels of criticality onto a single hardware platform. To enhance the security of these systems, industry has been shifting towards virtualization, as the technology enables the safe integration and isolation of the various sub-systems. By leveraging a hypervisor it is possible to share hardware resources between multiple Virtual Machines (Virtual Machine (VM)s). However, traditional hypervisors were not designed to meet real-time and security requirements. For this reason, static partitioning hypervisors, such as Jailhouse, that statically allocate hardware resources to VMs at design time, have gained increasing attraction. However, Jailhouse depends on Linux to boot and manage VMs, which creates some issues for real-time, safety, and security. Under this light, our research group has designed and implemented Bao. Bao is a very thin layer of self-contained software, not having any external dependency. Bao’s current implementation gives pass-through access to peripherals and device sharing is not possible. The work developed in this dissertation is the implementation of an infrastructure that allows device sharing using Virtual Input Output (VirtIO). This infrastructure is generic and must be compatible with the existing front-ends. VirtIO’s infrastructure is implemented in a dedicated virtual machine (service guest), whose aim is to manage the multiple virtqueues that allow transmitting and receiving data from the other VMs that use VirtIO. Unlike existing solutions, in our case, the VirtIO’s back-ends are not implemented in the hypervisor but in a VM, resulting in a reduced Trusted Computing Base (TCB) for the overall system. The second part of the dissertation focuses on implementing two back-end drivers, i.e., one for VirtIO console and another for VirtIO-net. The first driver is a simple driver, so it is used essentially to guarantee the proper validation of the implemented interface. The second one is more complex but is essential to any modern hypervisor.
TipoDissertação de mestrado
DescriçãoDissertação de mestrado em Engenharia Eletrónica Industrial e Computadores
URIhttps://hdl.handle.net/1822/88717
AcessoAcesso aberto
Aparece nas coleções:BUM - Dissertações de Mestrado
CAlg - Dissertações de mestrado/MSc dissertations

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Joao Rodrigo Lima Costa.pdfDissertação de mestrado2,35 MBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID