Prévia do material em texto
Redes de Computadores II – UFRJ Prof: Luis Henrique Aluno: Felipe Figueira Horta – DRE: 106040758 03/11/2010 Intel Virtualization Technology Introdução O que é virtualização? A virtualização permite que em uma única máquina possam ser executadas dois ou mais ambientes separados e isolados. Antes usada apenas em servidores ou mainframes, onde estes deviam ser compartilhados por vários usuários em ambientes de aplicação completamente heterogêneos, hoje em dia esta tecnologia pode ser usada normalmente em computadores pessoais graças à crescente onda de interesse em técnicas de virtualização. Sendo assim, na última década, o interesse nesta tecnologia não só tem caminhado para uma aperfeiçoamento do suporte ao hardware na virtualização do processador, ou na simplificação do monitor da máquina virtual, mas tem evoluido sim com suas principais preocupações na segurança, confiabilidade, disponibilidade, adaptabilidade e custo. Objetivo Este trabalho visa estudar os modelos e métodos de virtualização aplicados para os micro-‐processadores da família Intel, focando nos desafios de implementação desta tecnologia na arquitetura 32 bits (IA-‐32), e as soluções propostas pelo próprio fabricante. Ao final deste, esperamos chegar à uma conclusão a respeito do desempenho, confiança e adaptabilidade desta tecnologia cada vez mais presente na área de TI. Modelos de Virtualização Podemos citar muitas efeitos positivos oferecida pelo uso da virtualização de sistemas, como a melhora em sua utilização, no seu gerenciamento e confiabilidade. Sendo assim, diversos usuários com diferentes requisitos, podem fazer uso do mesmo servidor virtualizado, minimizando o tempo de inatividade quanto a atualizações do sistema, fazendo uso de máquinas virtuais para emular tais operações. O que acaba, neste caso, isolando as falhas de softwares que operam nas máquinas clientes. Isolamento do Sistema A virtualização pode oferecer de diversas formas, toda a seguranca e confiabilidade ao isolar multiplas pilhas de aplicativos em suas máquinas virtuais. A segurança pode ser oferecida pois em qualquer caso de ataque ao sistema emulado, os danos podem ser confinados dentro da maquina virtual, enquanto podemos obter a garantia que nenhuma outra maquina virtual será afetada. FIGURA 1 Múltiplos Sistemas em apenas uma máquina Com a virtualização é possível a coexistencia de diversos sistemas heterogêneos em apenas uma máquina físisca. O que faz com que acabe o dispedício de recursos, como no caso de servidores web ou de arquivos, onde em uma única máquina rodava apenas uma aplicação acarretando um sub-‐uso de recursos e um disperdício de capital. FIGURA 2 Migração de Sistemas Fazendo o encapsulamento dos clientes em máquinas virtuais separadas, com o uso da virtualização se faz capaz a migração entre plataformas diferentes de forma transparente para o usuário cliente. E além de facilitar a manutenção das plataformas de hardware, este procedimento ainda podem ser disparados automáticamente em casos de alguma detecção de falha na plaforma atual do cliente. Esta capacidade pode revolucionar o nível da qualidade de serviço oferecida por exemplo em máquinas dedicadas para servidores web, onde o cliente nem notaria a falha do sitema, enquanto ele seria migrado para outra plataforma diferente da que se encontra, para que esta entre em manutenção. FIGURA 3 Intel Virtualization Technology Com o aumento do uso da virtualização para novas ferramentas e aplicações que encontraram vantagens no uso desta tecnologia, tanto em servidores quanto em máquinas clientes, foi iniciado um grande investimento por conta dos fabricantes de processadores para gerir esta integração. Infelizmente, neste processo, em especial na família de processadores da Intel, foram descobertos diversos desafios por conta das arquiteturas IA-‐32 e Itanium. Sendo assim foram criadas várias técnicas de software para contornar todos estes desafios. A tecnologia A tecnologia, chamada também de Intel VT-‐x, se propõe a diminuir a complexidade dos VMM (Monitores de Máquina Virtual), aumentar o desempenho de sistemas virtualizados baseados em software e permitir que sistema operacionais não modificados sejam executados, em máquinas virtuais, com desempenho igual ou superior ao alcançado pela paravirtulização, na qual os sistemas operacionais são modificados ou sofrem translações binárias para serem executados sobre um VMM. Métodos de Virtualização Os microprocessadores da Intel oferecem uma proteção baseada no conceito de 2 bits de níveis de privilégios, fazendo uso do 0 para o nível mais alto e 3 para o mais baixo. O nivel de privilegio determina qual instrução privilegiada, que controla as funcionalidades básicas da CPU, pode operar sem obter falhas. Analisando a FIGURA 4, podemos observar que a virtualização assistida por hardware, caso da Intel VT-‐x que extende a IA-‐32, muda a forma de acesso ao sistema operacional. Sistemas operacionais para a plataforma IA-‐32 são projetados para terem acesso direto aos recursos do sistema para executarem. Na virtualização por software, o VMM emula o hardware requerido pelo SO visitante. Na virtualização por hardware, o SO tem acesso direto aos recursos, sem emulação ou qualquer modificação no SO visitante. Enquanto que aa arquitetura IA-‐32, o núcleo do sistema operacional espera ter acesso direto à CPU executando no nível 0. Por outro lado, vemos que com a virtualização porsoftware isso não é possível, pois o VMM já está sendo executado no nível 0, sendo assim, o sistema operacional visitante deve ser executado no nível 1 ou 3. Contudo, algumas instruções só funcionam no nível 0, logo uma possível solução é recompilar o sistema operacional visitante, com o intuito de evitar essas instruções. Esta técnica é chamada de paravirtualização, que muitas vezes não é prática, pois o código do sistema operacional pode nem sempre estar acessível. Sabendo disso, para evitar este problema, o VMM captura as instruções que podem vir a falhar na execução e emula a sua execução, o que resulta numa perda significativa de desempenho. Arquitetura e funcionamento A VT-‐x adiciona ao IA-‐32 duas novas formas de operação da CPU: VMX (Virtual Machine Extensible) root e VMX non-‐root-‐operation. Enquanto o VMM é executado no VMX root-‐operation, seus sistemas visitantes são executados no VMX non-‐root-‐operation. Ambos os suportes de operação possuem suporte para os quatro níveis de privilégio (0 a 3), permitindo que um sistema visitante seja executado com o privilegio que desejar, e fornecendo ao VMM a flexibildade de usar todos os níveis de operação. No modo de operação VMX root, o funcionamento é similar à arquitetura 32 bits sem o VT-‐x. Onde as aplicações que são executados no modo VMX non-‐root são desprivilegiados em alguns aspectos, independente do nível de privilégio. Assim, o VT-‐x define duas novas transições, onde a primeira é a transição do modo VMX root para o modo VMX non-‐root, ou seja, do VMM para o sistema visitante, que é chamada de “VM entry”, e a transição do modo VMX non-‐root para o VMX root, ou seja, do sistema visitante para o VMM, chamada de “VM exit”. A Intel VT-‐x introduz um conjunto de novas instruções no processador, chamado de Virtual Machine Extensions (Extensões de Máquina Virtual), VMX. Esse conjunto é formado por 10 instruções específicas de virtualização: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUCH, VMRESUME, VMXOFF e VMXON. Na figura abaixo, temos ilustrado o processo de chamada de instruções para executar uma máquina virtual. FIGURA 5 Para entrar no modo de virtualização, a instrução VMXON deve ser chamada pelo software e, só então, chamar o VMM. Após entrar no modo de virtualização, o VMM pode entrar em cada máquina virtual usando a instrução VMLAUNCH e sair delas usando a instrução VMRESUME. Para parar todas as máquinas virtuais e sair do modo de virtualização, o VMM deve executar a instrução VMXOFF. Desafios e Soluções Ambas tecnologias VT-‐x e VT-‐I permitem que aplicações de sistemas visitantes sejam executados com os privilégios os quais foram designados, porém em extensões separaradas da VMM, chamadas de VMX. Sendo assim, estas aplicações não são vetadas em relação aos seus níveis de acesso, fazendo com que os desafios de virtualização sejam identificados antes, sendo assim tratados por camadas inferiores ou pelo próprio VMM. Compressão do espaço de memória A VMM reserva para si uma parte do espaço de endereçamento virtual do visitante. Poderia rodar inteiramente no espaço do visitante, mas poderia utilizar uma quantidade relevante de espaço de endereçamento virtual do visitante. Como alternativa a isso, a VMM roda em seu próprio espaço, ainda usando obrigatóriamente um pouco do espaço do usuário para estruturas de controle que gerenciam transições entre a VMM e o software do visitante. Nesta situação, a VMM precisa proteger a parte do espaço de endereçamento virtual utilizada do visitante, de forma que ele não descubra que executa um ambiente virtual, comprometendo assim o isolamento da máquina virtual. Ring Aliasing e Ring Compression Problemas de Ring aliasing surgem quando um programa é executado a um nível de privilégio diferente do nível para que este foi escrito. Por exemplo ao executar a instrução PUSH com o registrador CS, é possível determinar que um SO visitante não estaria rodando com privilégio nivel 0. Acesso ao estado privilegiado sem gerar falta Proteção baseada em privilégios costuma prevenir programas, sem o privilegio adequado, de acessar certos componentes de estado privilegiado da CPU, resultando em falha para essas tentativas de acesso e permitindo que a VMM (Virtual Machine Monitor) emule a instrução desejada. No entanto, as arquiteturas IA-‐32 e Itanium possuem instruções que acessam estados privilegiados e não falham, mesmo em caso de privilégios insuficientes. Para o IA-‐32, por exemplo, um visitante pode executar as instruções LGDT, LIDT, LLDT e LTR com nível 0 de privilégio. Isso pode ser evitado se a VMM manter valores inexperados para os registradores mencionados. Perguntas 1. Em qual SO o VMM roda? Ele precisa de um SO? 2. Quais SOs são permitidos como convidados pelo VMM? 3. Como funcionam os níveis de proteção no IA-‐32? Bibliografia Intel 1. "Intel® Virtualization Technology: Hardware Support for Efficient Processor Virtualization" http://www.intel.com/technology/itj/2006/v10i3/1-‐hardware/3-‐software.htm Artigos 1. Intel Virtualization Technology www.gta.ufrj.br/ensino/CPE758/artigos-‐basicos/IntelVT-‐Computer.pdf 2. Rich Uhlig, Gil Neiger, Dion Rodgers, Amy L. Santoni, Fernando C.M. Martins, Andrew V. Anderson, Steven M. Bennett, Alain Kägi, Felix H. Leung, Larry Smith. Intel Corporation. Wikipedia 1. x86 virtualization http://en.wikipedia.org/wiki/X86_virtualization 2. Virtualmachine http://en.wikipedia.org/wiki/Virtual_machine