1 Universidade do Estado do Rio de Janeiro Centro de Ciência e Tecnologia Faculdade de Engenharia Alexandre Ribeiro Freitas Daniele Melo Nunes Análise de Desempenho de Redes Usando Máquinas Virtuais Rio de Janeiro 2013 1 Alexandre Ribeiro Freitas Daniele Melo Nunes Análise de Desempenho de Redes Usando Máquinas Virtuais Projeto de graduação apresentado, como apresentado como exigência para conclusão do curso de Engenharia de Telecomunicações da Universidade do Estado do Rio de Janeiro. Orientador: Prof. D. Sc. Michel Pompeu Tcheou Coorientador: Prof. M. Sc. Felipe da Rocha Henriques Rio de Janeiro 2013 1 CATALOGAÇÃO NA FONTE UERJ / REDE SIRIUS / BIBLIOTECA CTC/B F866 Freitas, Alexandre Ribeiro. Análise de Desempenho de Redes Usando Máquinas Virtuais/ Alexandre Ribeiro Freitas, Daniele Melo Nunes. – 2013. 105f. Orientador: Michel Pompeu Tcheou. Coorientador: Felipe da Rocha Henriques. Projeto Final (Graduação) - Universidade do Estado do Rio de Janeiro, Faculdade de Engenharia. Bibliografia p.82-84. 1. Engenharia eletrônica. 2. Telecomunicações. 3. Redes de computadores. 4. Virtualização. I. Nunes, Daniele Melo. II. Tcheou, Michel Pompeu. III. Universidade do Estado do Rio de Janeiro. IV. Título. CDU 621.38+39 Autorizo, apenas para fins acadêmicos e científicos, a reprodução total ou parcial desta tese, desde que citada a fonte. Assinatura Data Alexandre Ribeiro Freitas e Daniele Melo Nunes Análise de Desempenho de Redes Usando Máquinas Virtuais Projeto de graduação apresentado, como apresentado como exigência para conclusão do curso de Engenharia de Telecomunicações da Universidade do Estado do Rio de Janeiro. Aprovado em: Banca Examinadora: ______________________________________________________________ Prof. Michel Pompeu Tcheou, D. Sc., UFRJ (Orientador) Faculdade de Engenharia - UERJ ______________________________________________________________ Prof. Felipe da Rocha Henriques, M. Sc., UERJ (Coorientador) Centro Federal de Educação Tecnológica Celso Suckow da Fonseca – CEFET/ UnED Petrópolis ______________________________________________________________ Prof. Lisandro Lovisolo, D. Sc., UFRJ Faculdade de Engenharia - UERJ ______________________________________________________________ Prof. Marcelo Gonçalves Rubinstein, D. Sc., UFRJ Faculdade de Engenharia - UERJ Rio de Janeiro 2013 AGRADECIMENTOS Agradeço a Deus pelo Seu grande amor por mim, por todas as oportunidades, pela capacitação e força para superar os desafios. Aos meus amigos que com paciência e compreensão compreenderam os dias de ausência. Aos meus familiares que com compreensão e incentivo me ajudaram a passar por todas as dificuldades. A minha mãe, Maryuse, pelo amor incondicional, pela força e compreensão nos momentos de desespero. A minha namorada, Lílian Arcanjo, pois sem o seu apoio, compreensão, carinho e incentivo, nada disso teria sido possível. Agradeço também ao nosso orientador Michel Tcheou pela ajuda sem medidas e também por todos os momentos de compreensão, incentivo e paciência. Ao nosso coorientador Felipe da Rocha pela paciência e compreensão. E por fim ao professor Lisandro Lovisolo por ceder o laboratório PROSAICO para a realização dos testes. Alexandre Ribeiro Freitas AGRADECIMENTOS Em primeiro lugar, agradeço a Deus por ter me dado à oportunidade de estar aqui e por ter me dado ao longo desses anos força, persistência, flexibilidade e inteligência emocional para chegar até está etapa. Em segundo, agradeço a minha família por ter me proporcionado educação e me dado incentivo, base emocional e financeira e a todos os colegas que tiveram a consideração, a generosidade de compartilhar o conhecimento, sem ajuda deles esse sonho não seria possível. Agradeço ao meu companheiro, Elton Braz, pelo incentivo, conselhos e pela compreensão e a minha dupla de projeto, Alexandre Ribeiro Freitas, que através desses anos lutou ao meu lado. Acreditamos num sonho e fomos atrás do nosso objetivo, objetivo este que se realiza na concretização desse trabalho de final de curso. Não podemos deixar de agradecer ao nosso orientador Michel Tcheou que foi um líder, e exerceu sua liderança participativa nos guiando com muita humildade e sabedoria aos caminhos certos para a realização desse sonho. Daniele Melo Nunes RESUMO A Internet, da forma como se encontra hoje, já se expandiu em todos os seus âmbitos, e deverá buscar uma nova estratégia para atender as aplicações e necessidades de seus clientes. É neste contexto que se realizam estudos de arquiteturas alternativas para a Internet do futuro e a virtualização de redes mostrase uma importante ferramenta para a nova arquitetura da Internet. O objetivo deste trabalho está em criar máquinas virtuais através da ferramenta de virtualização denominada Xen Cloud Platform e interconectá-las, bem como, verificar e analisar as vantagens e desvantagens deste modelo em comparação com máquinas sem a presença de virtualização. Ao longo deste trabalho será visto desde a instalação até a configuração das máquinas virtuais e por fim irá se avaliar com a ferramenta iperf o desempenho da rede com máquinas virtuais. Palavras-chave: Virtualização. Redes de computadores. Xen Cloud Platform. ABSTRACT The Internet in the way we know today has already expanded in several scopes and must found new strategies to fulfill the applications and needs of the customers. In this context, studies of alternatives architectures for future Internet are being carried out and network virtualization is becoming an important tool to develop new Internet architectures. The purpose of this work is to create ant interconnect computer networks using virtual machines through the Xen Cloud Platform virtualization tool as well as to identify advantages and disadvantages of this approach with respect to networks without the use of virtualization. Throughout this work it will be demonstrated how to install and set up virtual machines. In the end, we will evaluate the performance of the network with virtual machines by using the Iperf tool. Keywords: Virtualization. Network. Xen Cloud Platform. LISTA DE IUSTRAÇÕES Figura 1- Meios físicos presentes na Internet............................................................ 16 Figura 2 - As sete camadas do modelo OSI [19]. ...................................................... 18 Figura 3 - Comparação entre as camadas do Modelo OSI e do Modelo TCP/IP[20]. ........................................................................................................................... 20 Figura 4 - Formato do datagrama IPv4 [3]. ............................................................... 25 Figura 5 - Cabeçalho do segmento UDP. .................................................................. 28 Figura 6 - Cabeçalho do segmento TCP [3]. ............................................................. 30 Figura 7 - Arquitetura cliente-servidor. ...................................................................... 32 Figura 8 - Arquitetura P2P. ........................................................................................ 33 Figura 9 - Arquitetura híbrida cliente servidor/P2P .................................................... 33 Figura 10 - Estrutura básica de um sistema virtualizado. .......................................... 41 Figura 11 - Sistema virtualizado [27]. ........................................................................ 43 Figura 12 - Estrutura da Virtualização total [10]. ....................................................... 44 Figura 13 - Esquema da paravirtualização [10]. ........................................................ 46 Figura 14 - Relação entre o hypervisor, Dom0 e DomU [2]. ...................................... 49 Figura 15 - Estrutura de funcionamento do XCP [14]. ............................................... 50 Figura 16 - Arquitetura Xen[22]. ................................................................................ 51 Figura 17 - Interfaces do Xen [29]. ............................................................................ 54 Figura 18 - Modos de rede virtual [12]. ...................................................................... 58 Figura 19 – Tabela de comparação entre o modo bridge e o modo de roteamento [12]. .................................................................................................................... 59 Figura 20 - Interface“vif1.0”. .................................................................................... 61 Figura 21 - Interface eth0. ......................................................................................... 61 Figura 22 - Interfaces backend vif e frontend vif do domínio hóspede [12]. .............. 62 Figura 23 - Driver virtual funcionando no modo bridge [12]. ...................................... 63 Figura 24 - Resultado do comando traceroute. ......................................................... 63 Figura 25 - Comando brctl show na máquina virtual. ................................................ 64 Figura 26 - Topologia do Xen em seu modo de roteamento [12]. ............................. 64 Figura 27 - O comando ping não recebe resposta. ................................................... 65 Figura 28 - Domínio hóspede comunicando-se com a Internet. ................................ 66 Figura 29 - Esquema do funcionamento em modo NAT [14]..................................... 67 Figura 30 - Interface gráfica do XenCenter. .............................................................. 69 Figura 31 - Ambiente de teste CRSR – C2S1. .......................................................... 71 Figura 32- Ambiente de teste CRSR – C1S2. ........................................................... 71 Figura 33 - Ambiente de teste CRSV – C2S1. .......................................................... 72 Figura 34 - Ambiente de teste CVSR – C1S2. .......................................................... 72 Figura 35 - Ambiente de teste CVSR – C2S1. .......................................................... 73 Figura 36 - Ambiente de teste CRSV – C1S2. .......................................................... 73 Figura 37 - Ambiente de teste CVSV – C2S1............................................................ 74 Figura 38 - Ambiente de teste CVSV – C1S2............................................................ 74 Figura 39 - Gráfico de Vazão usando o Iperf/TCP considerando o PC1 como servidor. ............................................................................................................. 75 Figura 40 - Gráfico de Vazão usando o Iperf/TCP considerando o PC1 como cliente. ........................................................................................................................... 76 Figura 41 - Gráfico do Jitter usando o Iperf/UDP, considerando o PC1 como servidor. ........................................................................................................................... 77 Figura 42 - Gráfico do Jitter usando o Iperf/UDP, considerando o PC2 como servidor. ........................................................................................................................... 78 INTRODUÇÃO ............................................................................................... 10 1. CONCEITOS DE REDES DE COMPUTADORES ......................................... 15 1.1 Modelo OSI .................................................................................................... 17 1.2 Modelo TCP/IP .............................................................................................. 19 1.2.1 Camada Física ................................................................................................ 21 1.2.2 Camada de Enlace ......................................................................................... 21 1.2.3 Camada de Rede ............................................................................................ 23 1.2.4 Camada de Transporte ................................................................................... 26 1.2.5 Camada de Aplicação ..................................................................................... 32 1.3 Métricas de Desempenho ............................................................................ 37 2. VIRTUALIZAÇÃO .......................................................................................... 38 2.1 Conceitos de Virtualização .......................................................................... 40 2.2 Tipos de Virtualização .................................................................................. 44 3. FERRAMENTAS DE VIRTUALIZAÇÃO ........................................................ 47 3.1 Xen Cloud Platform ...................................................................................... 47 3.1.1 Arquitetura do XCP. ........................................................................................ 51 3.1.2 Configuração de Redes no XCP ..................................................................... 56 3.2 Virt-manager ................................................................................................. 68 3.3 XenCenter...................................................................................................... 69 4. RESULTADOS EXPERIMENTAIS ................................................................. 70 4.1 Ambientes de testes. .................................................................................... 71 4.2 Resultados .................................................................................................... 74 5. CONCLUSÃO ................................................................................................. 79 5.1 Discussão sobre o Xen ................................................................................ 79 5.2 Análise dos resultados ................................................................................ 80 5.3 Trabalhos Futuros ........................................................................................ 81 REFERÊNCIAS .............................................................................................. 82 APÊNDICE A.................................................................................................. 85 APÊNDICE B: INSTALAÇÃO DO XEN CLOUD PLATFORM. ...................... 86 APÊNDICE C: INSTALAÇÃO DA MÁQUINA VIRTUAL NO CITRIX XENCENTER. ................................................................................................. 98 10 Introdução A ARPANET1(Advanced research Project network), desenvolvida na época da guerra fria, foi a primeira rede de comutação por pacotes e tinha como objetivo, ser uma rede altamente distribuída e tolerante a falhas [1]. Com o crescimento da ARPANET, surgiram problemas aparentes de interconexão de diferentes redes. Nesse contexto surgiu o conceito de gateways2, e a proposta do TCP3 (Transmission Control Protocol) que visava tratar e recuperar erros de transmissão e falhas de sequenciamentos de pacotes. O programa também visava o endereçamento de nós e encaminhamento de pacotes. Posteriormente o TCP foi dividido em dois protocolos, o TCP, e o IP4(Internet Protocol). Assim nascia o modelo em camadas TCP/IP tornando-se o modelo de referência da arquitetura da Internet [1]. O modelo da Internet como vemos hoje, foi desenvolvido a partir de alguns principios [1-4], como: modelo em camadas: cada camada possue funções específicas e presta serviços a camada superior. Isso reduz a complexidade do sistema e permite que diferentes tecnologias compartilhem dados entre sí; comutação de pacotes e melhor esforço: a técnica de datagrama5 utilizada na comutação por pacotes visa a busca por um caminho alternativo enquanto ocorrer uma falha na infraestrutura existente. A idéia de melhor esforço é que os pacotes sejam entregues da forma como for possível; 1 Desenvolvida pela agência Americana ARPA (Agência de Pesquisas em Projetos Avançados) em 1969. O objetivo ara interligar as bases militares e os departamentos de pesquisa do governo americano. 2 Elemento de rede utilizado para interconexão de diferentes redes. 3 Protocolo da camada de transporte do modelo TCP/IP. 4 Protocolo da camada de rede do modelo TCP/IP. 5 Unidade de transferência básica de dados, associada a uma rede de comutação de pacotes em que não há garantia de entrega. 11 princípio fim-a-fim: implica uma rede com núcleo simples e inteligência nas pontas; entrega imediata: visa a entrega imediata na ausência de falhas e sobrecargas da rede; endereçamento global: consiste em um endereçamento hierárquico que permite a tomada de decisões no encaminhamento de pacotes. O endereço IP além de identificar os nós, provê uma forma conveniente de localização global; O fato da estrutura da Internet ser simples possibilitou o grande avanço da mesma como vemos hoje, de modo que pessoas de diferentes países e culturas a utilizam de diversas formas. Contudo, essa simplicidade acaba por “engessar” a Internet colocando restrições no desenvolvimento de aplicações, assim ela tem evoluído através de pequenas melhorias. Essas melhorias estão modificando o projeto inicial da Internet, gerando alguns problemas estruturais [1-4], como: endereçamento: com o aumento de dispositivos móveis e a grande demanda da população mundial, o endereço de 32 bits (IPv4 6) tornou-se insuficiente. Para reduzir a escassez de endereços, foram introduzidos alguns protocolos, entre eles, o DHCP7 (Dynamic Host Configuration Protocol), e o NAT8 (Network Address Translation). Esses protocolos têm aumentado a sobrevida da Internet, porém essas alternativas restringem o desenvolvimento de aplicações e vão contra os princípios da Internet. Como alternativa para este problema foi proposto o IPv6 (Internet Protocol versão 6). Entretanto, a implementação do IPv6 tem sido um desafio, isto porque existem problemas de compatibilidade entre ele e o IPv4 [1]; segurança: a cada dia surgem novas formas de ameaça na Internet, como disseminação de vírus e ataques de negação de serviço. Existe uma 6 É a quarta versão do Protocolo IP. Utiliza 32 bits para o endereçamento. 7 Protocolo de serviço TCP/IP que oferece configuração dinâmica de terminais, com concessão de endereços IP. 8 Técnica em que o dispositivo de uma rede interna, recebem um IP válido para acessar a Internet. 12 guerra entre a defesa de sistemas e hackers que se aproveitam da fragilidade de um sistema que cresceu sobe demanda e não se armou para as ameaças. As formas de ataque estão cada vez mais sofisticadas e se adaptam aos sistemas de defesa. Quando a Internet foi projetada, a ideia inicial era que os problemas de segurança deveriam ser tratados pelas estações finais. No entanto, devido aos ataques distribuídos de negação de serviço (Distributed Denial-of-Service-attacks-DDoS), surgiu a necessidade de alguns mecanismos de segurança serem providos pelo núcleo da rede. Outro problema é a segurança em roteadores. No caso do protocolo BGP9 (Border Gateway Protocol), por exemplo, existe uma chave que é trocada a cada par de roteadores vizinhos. Essa medida dita quais roteadores podem trocar informações, porém não impede que informações sejam inseridas de forma maliciosa por outros roteadores; mobilidade: no meio sem fio a perda de pacotes devido a mobilidade pode ser mal interpretada, porque o TCP assume que a perda de pacote ocorre devido ao congestionamento da rede e saturação dos buffers10 nos roteadores. O custo do congestionamento é decorrente dos segmentos reenviados pelo transmissor. Se a retransmissão ocorre de forma prematura, o receptor receberá cópias do segmento gerando tráfego sem necessidade. Outro problema pode ocorrer no handover11. Quando um dispositivo muda de ponto de acesso, ocorre uma requisição de endereço IP. Nesse contexto, percebe-se que o conceito da Internet perdeu sua 9 Protocolo de roteamento dinâmico utilizado para a comunicação entre ASs (Autonomous System). Cada provedor de Internet (Internet Service Provider) gerencia um AS, conectando o cliente a outros provedores de serviço. O gerenciamento de todos os As é feito de forma independente dos outros, dando a vantagem de escolhas do protocolo de roteamento a ser utilizado, escolha nas políticas de gerenciamento e os tipos de serviços prestados [1-4]. 10 Região da memória temporária utilizada para o armazenamento de dados. 11 Procedimento empregado em redes sem fio para tratar a transição de uma unidade móvel de uma célula para outra. 13 originalidade, pois inicialmente, os dispositivos mantêm as suas conexões constantes sem que haja perda de dados. Pode-se concluir que a Internet, da forma como se encontra hoje, já se expandiu em todos os seus âmbitos, e deverá buscar uma nova estratégia para atender de forma escalável as aplicações e necessidades de seus consumidores. É neste contexto que se realizam estudos de arquiteturas alternativas para a Internet do futuro, atendendo a alguns desafios [1-3,5], como: suporte à novas tecnologias de rede; alto nível de segurança; garantia na qualidade de serviço; eficiência energética; separação entre planos de controle e gerenciamento de dados; isolamento; mobilidade; escalabilidade. Um dos requisitos fundamentais contidos nesta proposta está na questão da flexibilidade. Esse requisito tem dividido a opinião dos pesquisadores, em duas abordagens [1,2,5-8]: 2. Abordagem Purista: defende a melhoria a longo prazo, idealizando uma arquitetura de rede completamente nova e produzida sem ter como arquitetura base a Internet. Nesse contexto, a virtualização de redes seria somente um conjunto de ferramentas que seriam utilizadas para atender aos desafios da Internet do Futuro; 2. Abordagem Pluralista: defende melhorias em curto prazo. Essa nova arquitetura suportaria uma pilha de protocolos, desencadeando uma migração suave. Técnicas de redes sobrepostas e de virtualização tornam-se cruciais graças à necessidade de se permitir a coexistência em paralelo de múltiplas arquiteturas de protocolos. Nesse contexto arquiteturas para virtualização, 14 como o XCP12(Xen Cloud Platform), permitem que cada máquina virtual possa operar como um roteador virtual, com propriedade e pilhas de protocolos distintas[1,2,5-17]. Assim, a virtualização de redes, mostra-se como uma importante ferramenta de testes para a nova arquitetura da Internet. Este trabalho tem como objetivo criar máquinas virtuais através da ferramenta de virtualização denominada Xen Cloud Platform e interconectá-las, bem como, verificar e analisar as vantagens e desvantagens deste modelo em comparação com máquinas sem a presença de virtualização. Para avaliação de desempenho da rede, serão realizados testes como, vazão da rede, perda percentual de pacotes, taxa de entrega de pacotes e Jitter13. No Capítulo 2, são apresentados os conceitos de rede de computadores. No Capítulo 3, são apresentados conceitos de virtualização. No Capitulo 4, é feita uma exposição sobre as ferramentas utilizadas neste projeto: Xen Cloud Platform, virt-manager, XenCenter e Iperf. No Capítulo 5, são apresentados os ambientes de testes além de comentários sobre os resultados encontrados. No Capítulo 6, apresenta-se a conclusão do projeto e possíveis propostas para projetos futuros. 12 Plataforma aberta de virtualização. 13 Variação de atraso entre pacotes. 15 1. Conceitos de redes de computadores As redes de dados são redes digitais que são utilizadas para enviar dados entre dispositivos. Para que a transmissão destes dados seja feita de maneira satisfatória, é necessário que estas redes estejam interligadas. As redes, os dados e as informações podem variar de tamanho e também em quantidade, entretanto todas as redes possuem alguns elementos básicos em comum, como: A. regras para definir como as mensagens são enviadas, direcionadas ou recebidas e também interpretadas; B. mensagens ou unidades de informação que trafegam de um dispositivo para outro; C. interligação entre os dispositivos para que haja o transporte de mensagens; D. dispositivos que trocam mensagens entre si. Os dispositivos acima mencionados podem ser utilizados tanto para transmitir e receber dados, como também para redirecioná-los dentro da rede. Esses dispositivos podem ser switches14, roteadores15, computadores, entre outros. Comumente, os dispositivos finais de uma rede são mencionados como hosts, podendo ser tanto de origem como de destino de uma mensagem. Para que uma rede funcione, os dispositivos precisam estar conectados entre si. As conexões podem ser com fio ou sem fio. Em conexões cabeadas, pode-se utilizar o cobre ou fibra óptica. Nas conexões sem fio o meio físico é a atmosfera terrestre, ou seja, a transmissão dos dados é feita através de ondas eletromagnéticas. Em um percurso pela Internet a mensagem pode trafegar por 14 Switches são dispositivos que filtram e encaminham pacotes entre segmentos (sub-redes) de redes locais. 15 Equipamento que realiza a comunicação entre diferentes redes de computadores, ou seja, ele permite a comunicação entre computadores distantes entre si. 16 meio de uma variedade de meios físicos. A Figura 1 mostra alguns exemplos de meio físico. Figura 1- Meios físicos presentes na Internet. Enviam-se e recebem-se mensagens por meio de serviços como e-mail, envio de mensagens instantâneas, World Wide Web (www) e telefonia IP. Para que estes serviços possam ser fornecidos pelos dispositivos, eles devem ser governados pelos chamados protocolos, que nada mais são que um conjunto de regras. Atualmente o padrão da indústria é um conjunto de protocolos chamado TCP/IP (Transmission Control Protocol/ Internet Protocol), sendo a principal pilha de protocolos da Internet. A pilha TCP/IP especifica os mecanismos de formatação dos protocolos, roteamento e consequentemente de endereçamento dos hosts que permitem que as mensagens sejam enviadas ao receptor correto. Os protocolos são regras para a comunicação entre dispositivos para que uma mensagem seja enviada ao seu destino. Entretanto, para que uma determinada requisição seja completada, é necessária a interação de diversos protocolos. Essa interação entre os protocolos é melhor entendida através do modelo em camadas. A divisão através de um modelo em camadas auxilia na criação do protocolo, impede que alterações de tecnologia de uma camada afetem outras camadas e 17 fornece um idioma único para descrever as funções e as capacidades da rede. Um modelo em camadas descreve a operação dos protocolos dentro de cada camada, bem como a interação entre uma camada superior e inferior. Existem dois tipos básicos de modelos de rede: modelos de protocolo e modelos de referência. Um modelo de referência fornece uma referência comum para uma consistente manutenção dentro de todos os tipos de protocolos de rede e serviços. Um modelo de referência não tem a intenção de ser uma especificação de implementação ou de fornecer em nível suficiente de detalhe para definir de maneira precisa os serviços da arquitetura de rede. O principal propósito de um modelo de referência é o de auxiliar em um entendimento mais claro das funções e processos envolvidos. O modelo de referência OSI (Open Systems Interconnection) é o modelo de referência de rede mais amplamente conhecido. Ele é usado para a elaboração de rede de dados, especificações de operação e resolução de problemas. Um modelo de protocolo é definido com base no modelo de referência onde em cada camada é descrito um conjunto de protocolos específicos. O conjunto hierárquico de protocolos representa tipicamente toda a funcionalidade necessária para fazer a interface do homem com a rede de dados. O modelo TCP/IP é um exemplo de modelo de protocolo Embora os modelos TCP/IP e OSI sejam os modelos básicos usados ao se discutir funcionalidades de rede, os projetistas de protocolos de rede, serviços ou dispositivos, podem criar seus próprios modelos para representar seus produtos. Essencialmente, os projetistas precisam se comunicar com a indústria relacionando seu produto ou serviço com o modelo OSI ou com o modelo TCP/IP, ou com ambos. 1.1 Modelo OSI O modelo OSI (Open Systems Interconnection) foi aprovado pela Organização Internacional de Normatização (ISO - International Organization for Standardization) no início da década de 80, para ser um modelo de referência com 18 o intuito de permitir a comunicação entre máquinas, mesmo que de diferentes fabricantes [3,4]. O modelo OSI oferece uma lista de funções e serviços que podem ocorrer em cada camada. As camadas do modelo OSI estão representadas na Figura 2. Figura 2 - As sete camadas do modelo OSI [19]. Camada 1 – Camada Física: Responsável pela transmissão binária entre terminais fisicamente interligados. Nesta camada, são definidas as interfaces físicas e elétricas dos dispositivos de rede; Camada 2 – Cama de Enlace: Provê uma forma eficiente de transmissão binária para a camada de Rede. Reúne um conjunto de bits em um quadro. Além disso, na camada de enlace, pode haver confirmação da entrega dos quadros. Há 19 também controle de fluxo, de modo a impedir que o transmissor sobrecarregue o receptor, tratamento de erros, e o controle de acesso ao meio compartilhado; Camada 3 – Camada de Rede: Os pacotes são organizados de modo que eles possam trafegar através da conexão de rede a partir do host de origem até o host de destino, ou seja, determina-se como os pacotes serão roteados. A camada de rede também trata diferentes tipos de endereçamento entre uma rede e outra; Camada 4 – Camada de Transporte: Sua função é garantir que as mensagens sejam entregues sem erros, sem perdas, em sequência e sem duplicação. Ela retira das camadas adjacentes a responsabilidade de transferência de dados. Nesta camada, os fragmentos são entregues não apenas nos endereços corretos, mas também em suas respectivas portas. Camada 5 – Camada de Sessão: Provê o estabelecimento da sessão entre os processos em execução em estações diferentes, ou seja, usuários de diferentes máquinas podem estabelecer sessões entre eles. Também realiza-se controle de diálogo (quem deve transmitir, e quando isso deve ocorrer), e a sincronização, permitindo que transmissões partam de onde pararam; Camada 6 – Camada de Apresentação: Faz uma tradução dos dados a serem apresentados na camada de aplicação. Define a sintaxe e a semântica para a apresentação dos dados. Possibilita a comunicação entre computadores com diferentes formas de apresentação de dados; Camada 7 – Camada de Aplicação: Contém uma série de aplicações necessárias aos usuários. Os protocolos do modelo OSI não são amplamente utilizados devido à grande velocidade na qual a Internet baseada em TCP/IP foi aceita. Não aprofundaremos os estudos dos protocolos do modelo OSI, para mais detalhes ver [3,4], além do fato de que o projeto tem por base os conceitos do modelo TCP/IP. Na próxima seção será abordado com mais detalhes o modelo TCP/IP. 1.2 Modelo TCP/IP O modelo TCP/IP é proveniente da ARPANET e dos protocolos utilizados na época (TCP e IP), que deram nome ao modelo [3,4]. Não há uma norma específica 20 para se utilizar os protocolos, há somente recomendações. As funcionalidades dos protocolos são definidas em um fórum público e por um conjunto de documentos de conteúdo público, são os RFC (Requests for Comments) [3,4]. A forma como a entrega de dados é feita por uma rede é definida por estes protocolos, que devem estar presentes tanto nos hosts de origem como no host de destino [3,4]. A pilha de protocolos do modelo TCP/IP está dividida em cinco camadas, como na Figura 3. Cada camada e seus respectivos protocolos serão abordados com mais detalhes nas próximas sessões. Figura 3 - Comparação entre as camadas do Modelo OSI e do Modelo TCP/IP[20]. Durante o processo comunicação de um host com o outro, a informação passa por todas as camadas do modelo TCP/IP, sendo encapsulada no host de origem, para então ser transmitida pelo meio, e desencapsulada pela sua camada par no host receptor. Por cada nível de camada em que os dados passam são agregadas informações adicionais de roteamento, de endereçamento e para a detecção e correção de erros. As Unidades de Dados de Protocolos (PDU – Protocol Data Unit) recebem nomes diferentes quando são tratadas em uma determinada camada: camada Física: bits; camada de Enlace (Acesso a Rede): quadros; camada de Rede: pacotes; 21 camada de Transporte: segmento; camada de Aplicação: dados. Nas próximas seções, serão descritos os principais grupos de protocolos que compõem cada uma das camadas do modelo TCP/IP, assim como os serviços oferecidos por cada uma das camadas. 1.2.1 Camada Física A camada física define as interfaces mecânicas, elétricas e de sincronização da rede. Vários meios físicos podem ser utilizados para a transmissão, e cada um deles possuem características distintas quanto a sua capacidade de transmissão, custo, largura de banda, facilidade de instalação e de manutenção. Os meios de transmissão são divididos em meios guiados, como fios de cobre e fibras ópticas, e em meios não guiados como ondas de rádio e raios laser [3,4]. A Internet, nossa base de estudos e de transmissão de testes, possui todos os tipos de meios de transmissão envolvidos, sendo quase que impossível, determinar por quais meios físicos os dados estão trafegando, em um dado instante de tempo. Desta forma, para maiores informações sobre as características dos meios de transmissão ver [3,4]. 1.2.2 Camada de Enlace Uma das funções da camada de enlace está em fornecer um meio para que haja a troca de dados sobre um enlace local comum. O protocolo de camada de enlace define o formato dos quadros trocados entre os nós16 nas extremidades do enlace, assim como as ações realizadas por estes nós ao enviar e receber os quadros. Entre outros serviços oferecidos pela camada de enlace, está o controle de acesso ao meio compartilhado e detecção de erros. Os protocolos da camada de enlace especificam o encapsulamento de um pacote em um quadro e as técnicas de sincronização. A técnica usada para levar o quadro a intervalos determinados para o meio é chamada de método de controle de 16 Nomenclatura para dispositivos de rede conectados a um meio comum. 22 acesso ao meio. Para os dados serem transferidos através de vários meios diferentes, a atuação de métodos de controle de acesso ao meio pode ser exigido durante o processo de comunicação. Os métodos de controle de acesso ao meio descritos pelos protolocos da camada de enlace definem os processos pelos quais os dispositivos de rede podem acessar o meio e transmitir quadros. O dispositivo final usa um adaptador para fazer a conexão com a rede [3,4]; As LANs são redes de computadores concentradas em uma área geográfica pequena, como um edifício, escola ou laboratório da uma universidade. Nessa rede todos os computadores e demais dispositivos são diretamente conectados, assim utilizam o mesmo protocolo de enlace. Para que haja acesso à Internet, é necessário que um roteador local esteja conectado a rede. O protocolo de redes locais mais difundido atualmente é o Ethernet. Existem inúmeras tecnologias de rede local Ethernet e que operam em diferentes velocidades, podendo rodar sobre cabo coaxial, par trançado de cobre ou até mesmo fibra óptica. Os nós têm endereços de camada de enlace, que pode ser denominado um endereço de LAN, um endereço físico ou endereço MAC (Media Access control – controle de acesso ao meio). O endereço MAC possui um conjunto de 6 bytes e cada byte do endereço é expresso como um par de endereços hexadecimais, como por exemplo, "00:19:B9:FB:E2:58". Uma diferença em relação ao endereçamento IP é que o endereço MAC não se altera por mais que o dispositivo mude de lugar, ou mesmo de rede. Quando um nó da rede tem por objetivo enviar um quadro para outro nó, o remetente insere no quadro o endereço MAC de destino enviando o quadro para o endereço LAN. Cada um dos adaptadores dentro da mesma LAN receberá o quadro e verificarão se o endereço MAC de destino que está no quadro combina com o seu próprio endereço MAC. Se houver combinação de endereços, o adaptador extrairá o datagrama dentro do quadro e o repassará para a camada superior da pilha de protocolos. Se não houver combinação dos endereços haverá o descarte do quadro sem passar o datagrama de camada de rede para a camada superior da pilha de protocolos. Quando o adaptador remetente tem por objetivo enviar o quadro para todos os adaptadores da rede ele insere um endereço de 23 broadcast MAC especial no campo de endereço do destinatário do quadro. Em geral o endereço broadcast é uma cadeia de 48 bits consecutivos em notação hexadecimal, ou seja, FF-FF-FF-FF-FF-FF [1]. As pontes são dispositivos que ligam duas ou mais redes que utilizam protocolos diferentes (por exemplo, Ethernet e Token Ring17) ou dois segmentos de uma mesma rede. Idealmente as bridges devem ser totalmente transparentes, ou seja, deve haver a possibilidade de comunicação entre máquinas de qualquer segmento independente dos tipos de LANs que estejam sendo utilizadas. Em sua forma mais simples, uma bridge transparente opera em modo promíscuo, aceitando assim cada quadro transmitido em todas as LANs a que ela está conectada. Com a chegada dos dados, a bridge deve decidir se deve encaminhá-lo ou não para outra LAN. Para tomar esta decisão, a bridge procura o endereço de destino em uma grande tabela (hash), que pode listar todo destino possível e informar qual LAN ele pertence. Ao se conectar uma bridge pela primeira vez, todas as tabelas hash estão vazias, assim nenhuma bridge sabe onde estão os destinatários. Para resolver isso elas utilizam um algoritmo que faz com que cada quadro de entrada para um destino desconhecido seja enviado a todas as LANs. Com o passar do tempo as bridges aprendem onde estão os destinatários. Após o momento em que se descobre o destinatário, os quadros destinados a ele são colocados somente na LAN apropriada e não mais enviados por toda a rede. 1.2.3 Camada de Rede A camada de rede tem o papel de transportar pacotes entre hosts. A camada de rede pega o segmento da camada de transporte do host remetente, encapsula cada segmento em um datagrama e envia o datagrama ao seu roteador vizinho. As funções de roteamento são empregadas pela camada de rede. Na camada de rede, um pacote ao chegar à interface de entrada de um roteador, este deve conduzi-lo até a interface de saída correta, de acordo com o endereço IP de 17 Protocolo que opera na camada física (ligação de dados) e de enlace. dependendo de sua aplicação. 24 destino. Além disso, a rota ou o caminho entre o remetente e o destino são determinados pela camada de rede. A camada de rede pode disponibilizar alguns serviços específicos como: entrega garantida: serviço que garante a entrega de pacotes, sejam eles entregues tardiamente ou não; entrega garantida com atraso limitado: o pacote será entregue com um atraso máximo estabelecido; entrega de pacotes na ordem; largura de banda mínima garantida: se a transmissão for feita a uma taxa abaixo da estabelecida, a camada de rede garante que nenhum pacote será perdido e chegará dentro de um atraso também estabelecido; jitter máximo garantido Outros serviços importantes providos pela camada de rede são as redes de circuitos virtuais (CVs) e as redes de datagramas. Nos circuitos virtuais há a determinação do caminho entre remetente e destinatário, ou seja, toda a série de enlaces pelo qual os pacotes passarão até atingir seu objetivo. Após o estabelecimento do CV os pacotes poderão trafegar pela rede. Nas redes de datagrama sempre que um sistema final envia um pacote, este é marcado com o endereço de destino e enviado para a rede desejada. Isso acontece sem que um CV seja estabelecido. A Internet é um exemplo de uma rede de datagramas. O IP é o protocolo da camada de rede. Atualmente há duas versões do protocolo IP em uso , o IP versão 4, e o IP versão 6. Neste trabalho, considera-se somente o IPv4 pois foi a versão utilizada neste , para maiores informações sobre o IPv6, consulte [3,4]. Na Figura 4 é mostrado o formato do datagrama IPv4. 25 Figura 4 - Formato do datagrama IPv4 [3]. Os campos do datagrama são os seguintes: versão (4bits): versão do protocolo IP que foi usada para criar o datagrama; comprimento do cabeçalho (4bits): necessário para determinar onde os dados começam, pois o datagrama IPv4 pode conter diferentes números de opções; tipo de serviço: identificam diferentes tipos de datagramas IP, como especificação de atraso, ou confiabilidade; comprimento do datagrama: comprimento do datagrama medido em bytes, incluindo cabeçalho e dados; identificador, flags e deslocamento de fragmentação: estes três campos controlam a fragmentação e a união dos datagramas; tempo de vida: Este campo garante que o datagrama não fique circulandopara sempre na rede. Este campo é decrementado de uma unidade cada vez que o datagramaé processado por um roteador; protocolo da camada superior: especifica qual protocolo da camada de transporte utilizado para criar a mensagem que está sendo transportada na área de dados do datagrama; 26 soma de verificação de cabeçalho: auxilia um roteador na detecção de erros de bits de um datagrama IP recebido; endereço IP da fonte e do destino: especifica o endereço IP de 32 bits da fonte e do destino; opções: permite a ampliação do cabeçalho IP; dados: é onde realmente os dados estão, contém segmentos da camada de transporte (TCP ou UDP) ou mensagens ICMP. Na Internet, cada uma das interfaces dos hosts e roteadores tem um endereço IP que irá codificar seu número de rede e seu número de host. O endereço IP tem 32 bits que são usados nos campos de endereço de fonte e endereço de destino dos pacotes IP. Os endereços são escritos em notação decimal separada por pontos, no qual cada byte do endereço é escrito em sua forma decimal e separado dos outros bytes do endereço por um ponto. Por exemplo, para o endereço 152.92.155.1 teremos em binário, o seguinte número: 10011000.1011100.10011011.0000001. Os endereços IPs não podem ser escolhidos de forma aleatória. Uma parte do endereço IP é atribuída às interfaces de hosts e roteadores. Um endereço a essa sub-rede é designado pelo endereço IP. Temos como exemplo 152.92.155.4/25, a notação /25 é conhecida como máscara de rede, indica que os 25 números mais a esquerda do conjunto de 32 bits irão definir o endereço de subrede. A sub-rede é uma rede logicamente isolada das demais, e não fisicamente. 1.2.4 Camada de Transporte Para a realização da comunicação, a camada transporte trata os dados da camada de aplicação de modo que eles sejam corretamente reconhecidos e possam ser endereçados na camada de rede. A responsabilidade da camada de transporte é prover a comunicação fim-a-fim geral dos dados de aplicação. Para realizar este processo, a camada de transporte segmenta os dados, permitindo que eles trafeguem pela rede sem que haja congestionamento. No host de destino a camada de transporte deve garantir que os dados segmentados sejam 27 reagrupados em ordem correta. A multiplexação também permite que diversas aplicações sejam executadas ao mesmo tempo no computador. Para associar os fluxos que são gerados pela camada de aplicação estes precisam ser identificados pela camada de transporte. Insere-se então a identificação de número de porta. Existe apenas um número de porta para cada processo18 que pretende acessar a rede. Para a correta identificação, é inserido no cabeçalho da camada de transporte o número de porta, indicando qual aplicação aquele segmento de dado está associado. Há uma porta de origem e destino em cada um dos cabeçalhos de cada segmento ou datagrama. Diversas aplicações comuns têm uma designação de porta padrão, entretanto quando um cliente faz uma solicitação, a sua porta de origem é gerada aleatoriamente. O único requisito é que ela não entre em conflito com as outras portas em uso. A camada de transporte irá rastrear esta porta para que quando uma resposta for retornada ela poderá ser encaminhada para a aplicação correta. A combinação do endereço IP e do número de porta identifica exclusivamente um processo único que é executado em um dispositivo específico. Um par {IP,porta} é único, identificando a conversação entre dois hosts e consistem em endereços IP de origem e destino. Como exemplo, uma solicitação enviada a um servidor web (porta 80), sendo executado em um host de endereço 152.155.92.1, seria destinado ao soquete( par {IP,porta}) 152.155.92.1: 80. Existem múltiplos protocolos da camada de transporte, justamente pelo fato de que diferentes aplicações têm diferentes necessidades, quanto a tolerância a erros, a atrasos, necessidade de que os dados cheguem na ordem correta ou não. Assim alguns protocolos fornecem funções mais básicas, enquanto que outros garantem características adicionais em detrimento do desempenho, podendo sobrecarregar a rede. Os protocolos mais comuns da camada de transporte são o TCP e o UDP, que se diferenciam pelas funções distintas que implementam. A seguir faremos menção a ambos assim como ao endereçamento de porta associado a eles. 18 Programa de computador em execução. 28 A. UDP O IP não pode ser usado para a transmissão na sua forma bruta, pois a camada de transporte não saberia o que fazer com o pacote. O UDP adiciona os campos de porta de origem e de destino para esse fim. Assim a camada de transporte poderá entregar os dados de forma correta sabendo quais são as suas aplicações correspondentes. O UDP adiciona os campos de número de porta da origem e do destino nas mensagens do processo de aplicação para fazer a multiplexação e a demultiplexação, adiciona mais dois outros campos, o UDP length e o UDP cheksum e passa o segmento resultante para a camada de rede. A camada de rede por sua vez encapsula o segmento dentro de um datagrama IP e em seguida tenta entregar o segmento ao host de destino utilizando a técnica de melhor esforço. O UDP não realiza controle de fluxo e não há apresentação entre as entidades remetentes e destinatárias da camada de transporte antes de enviar o segmento, por isso, diz-se que o UDP é não orientado a conexão. Na Figura 5 é mostrado o cabeçalho do segmento UDP. Figura 5 - Cabeçalho do segmento UDP. Como mencionado acima, a estrutura do UDP é composta por quatro campos, cada um deles consistindo em 2 bytes. Os números de porta vão permitir que o host de origem saiba como repassar os dados da aplicação ao processo correto que está funcionando no host de destino. A soma de verificação é utilizada pelo receptor para que ele saiba se ocorreu algum erro na transmissão do segmento. O campo comprimento especifica o comprimento do segmento UDP, incluindo o cabeçalho em bits. Devido a sua grande simplicidade, o UDP adiciona 29 uma pequena sobrecarga de cabeçalho no pacote, se comparado com o TCP. Assim algumas aplicações dão preferência ao uso do UDP em relação ao TCP. O UDP é comumente utilizado para aplicações em multimídia, como VoIP (Voz sobre IP), recepção de áudio e vídeo armazenados, e telefone por Internet, pois essas aplicações não se adaptam bem ao controle de congestionamento presente no TCP. Outra aplicação está na atualização de tabelas de roteamento, como no protocolo RIP19 (Routing Information Protocol). As atualizações do RIP ocorrem de forma periódica. As atualizações perdidas são substituídas por atualizações mais recentes, tornando inútil a recuperação das atualizações perdidas, fazendo com que o UDP seja mais adequado para esta função. Ele também é utilizado para levar dados de gerenciamento de rede como o SNMP 20 (Simple Network Management Protocol), pois geralmente essas aplicações devem ser capazes de funcionar quando a rede está em estado de congestionamento. Para finalizar, com o objetivo de evitar atrasos no estabelecimento de conexões TCP, o DNS21 (Domain Name System) também roda sobre UDP. B. TCP Alguns serviços requerem uma entrega confiável de dados, e o UDP não pode proporcionar isso. O TCP veio com o propósito de preencher esta necessidade e se tornou o principal elemento da Internet. Uma das diferentes características entre o protocolo UDP e o TCP, é que o TCP é orientado a conexão. Isso significa que antes dele começar a transmissão de datagramas pela rede, os dois processos precisam enviar alguns segmentos preliminares para o outro com o objetivo de estabelecer parâmetros da transferência dos dados em questão. O TCP roda somente em sistemas finais, ou seja, os elementos da rede como Roteadores e Switches não mantém estados de conexão, então eles apenas enxergam os datagramas e não as conexões. Cada máquina compatível com o TCP tem uma entidade de transporte TCP que gerencia fluxos e interfaces TCP para a camada IP. O serviço full-duplex do 19 Protocolo de Roteamento. 20 Protocolo da camada de aplicação, que realiza o gerenciamento de redes IP. 21 Sistema de gerenciamento de nomes que associa os nomes aos endereços IP. 30 TCP permite que haja transmissão de dados simultaneamente em ambos os lados da conversa, entretanto esta conexão é sempre ponto a ponto, isto é, entre um único remetente e um único destinatário. O TCP não permite multicast, quando um remetente transfere dados para vários destinatários em uma única operação. O cabeçalho TCP tem 20 bytes (12 bytes a mais que do que o cabeçalho do UDP). Ele possui números das portas de destino e de origem, que serão utilizados para a demultiplexação e multiplexação dos dados para as camadas superiores. Na Figura 6 é apresentada a estrutura do cabeçalho do segmento TCP. Figura 6 - Cabeçalho do segmento TCP [3]. O cabeçalho TCP apresenta os seguintes campos: número da Porta de Origem e de Destino: contém os números de portas TCP que identificam os programas de aplicação dos extremos de uma conexão; número de sequência (32 bits): posição de cada segmento de dado na palavra original, usado para a implementação de um serviço confiável; número de reconhecimento (32 bits): especifica o próximo byte aguardado. Também utilizado para o serviço de entrega confiável; tamanho do Cabeçalho (TCP header length): informa quantas palavras de 32-bits existem no cabeçalho TCP. Devido ao campo de opções do TCP o cabeçalho deste pode ter comprimento variável; 31 opções (Opcional e de comprimento variável): utilizado como fator de aumento de escala da janela para a utilização em redes de alta velocidade; janela de Recepção (16 bits): controle de fluxo. Indica o número de bytes que um destinatário está disposto a aceitar; reservado: Campo reservado para o futuro; ponteiro Urgente: é utilizado para indicar um deslocamento de bit no número de sequência no qual os dados urgentes deverão estar URG (1 bit): Se o ponteiro urgente estiver sendo usado, o valor 1 é atribuído. Indica o deslocamento de bit no número de sequencia no qual os dados urgentes deverão estar; ACK (1bit): Indica se o campo Número de reconhecimento é válido; PSH (1bit): Se ele estiver marcado, o destinatário deverá encaminhar os dados para a camada superior imediatamente; RST (1bit): Reinicia uma conexão devido a falha no host ou outra razão; SYN (1bit): Utilizado para estabelecer conexões; FIN (1bit): Usado para encerrar uma conexão; checksum: confere o cabeçalho TCP; dados: São os dados a serem transmitidos. Para que o TCP estabeleça uma conexão, o servidor aguarda de forma passiva por uma conexão de entrada. O cliente por sua vez envia um segmento TCP com o bit SYN ativado e um bit ACK. Este segmento especifica o tamanho máximo do TCP que o está disposto a aceitar, o endereço IP, a porta que se deseja conectar e opcionalmente senhas e outros dados do usuário. Quando este segmento proveniente do cliente chegar ao servidor, a entidade TCP do servidor verifica se realmente á um processo esperando uma conexão, caso contrário, a conexão é rejeitada. Para que a conexão seja aceita é necessário que haja algum processo na escuta da porta em questão. Se a conexão for aceita, um segmento de confirmação será retornado. O segmento SYN, enviado como resposta, consome apenas 1 byte de espaço. Para o encerramento das conexões basta que uma das partes envie um segmento com o bit FIN ativado, informando a outra parte que não há mais bits a 32 serem transmitidos. Quando há a confirmação do FIN esse sentido é desativado para o envio de novos dados, entretanto os dados podem continuar a fluir no outro sentido. A conexão só será encerrada, quando os dois sentidos das conexões estiverem desativados. 1.2.5 Camada de Aplicação A camada de aplicação tem por objetivo fornecer a interface entre as aplicações que utilizamos para a comunicação com o outro, e a rede pela qual nossas mensagens são transmitidas. As aplicações são a razão de ser e existir da rede de computadores. Para que haja comunicação entre a rede, as aplicações devem rodar nos dois sistemas finais. A forma como a aplicação é organizada nos vários sistemas finais é determinada pela arquitetura de aplicação, podendo ser: arquitetura cliente-servidor: neste tipo de arquitetura, há sempre um hospedeiro que está sempre em funcionamento (servidor) e que tem por objetivo atender a requisição de vários outros hospedeiros (clientes). Neste tipo de arquitetura, os clientes não se comunicam entre si. O serviço também possui um endereço fixo, denominado IP. A Figura 7 mostra este tipo de arquitetura; Figura 7 - Arquitetura cliente-servidor. 33 arquitetura P2P: nesta arquitetura, partes arbitrárias de hospedeiros (peers), que podem mudar seu endereço IP ao se reconectarem a rede, comunicam-se entre si. Este tipo de arquitetura é altamente escalável. Uma grande parte do tráfego da Internet utiliza este tipo de arquitetura de aplicação. A Figura 8 mostra este tipo de arquitetura; Figura 8 - Arquitetura P2P. Arquitetura híbrida cliente servidor/P2P: um exemplo de arquitetura híbrida é a mensagem instantânea. A conversa entre dois usuários é instantânea, entretanto quando o usuário utiliza a aplicação de mensagem instantânea ele se cadastra em um servidor central. A Figura 9 mostra esse tipo de arquitetura; Figura 9 - Arquitetura híbrida cliente servidor/P2P 34 Para realizar a comunicação, a camada de transporte utiliza o número de porta para identificar a aplicação nos hosts de origem e de destinos. Programas de servidor geralmente utilizam um número de porta pré-definido. A seguir será falado sobre os protocolos de aplicação e seus respectivos números de porta UDP e TCP que são normalmente associados à aplicação em questão. Os protocolos da camada de aplicação definem como os processos (programas que rodam dentro de um sistema final) de uma aplicação, funcionando em sistemas finais diferentes, se comunicam entre si. A seguir abordaremos a respeito de alguns protocolos da camada de aplicação. A. DNS (Domain Name System) O DNS tem por essência um sistema hierárquico de resolução de nomes e utiliza um conjunto distribuído de servidores para associar os nomes aos endereços numerados (endereço IP). Ao se comunicar, os protocolos DNS utilizam um único formato, chamado de mensagem, sendo utilizadas para todos os tipos de consultas de cliente e respostas de servidor, mensagens de erro e transferência de informações de registro de recursos entre servidores. Os protocolos TCP e UDP associam a porta 53 para a aplicação DNS. Geralmente, o cliente utiliza mais de um endereço de servidor DNS para resolver os nomes, pois pode acontecer de que o servidor DNS solicitado não conheça o endereço procurado, desta forma, ele passa a solicitação para outros servidores. No caso de solicitações futuras, o primeiro servidor mantém o valor armazenado em seu cache de nome. B. HTTP (Hypertext Transfer Protocol) O HTTP é o protocolo de camada de aplicação da Web. Ele é implementado em um programa cliente e outro servidor. O HTTP define a estrutura das mensagens que são enviadas por este programa. 35 A página Web é constituída por objetos, que nada mais são do que arquivos, como o HTML, JPEG22(Joint Photographic Experts Group) e etc., que podem ser acessados por um único URL23(Uniform Resource Locator). Um browser irá apresentar a página requisitada ao usuário e fornecer algumas características de navegação e de configuração. Ele nada mais é do que um agente de usuário Web. Desta forma, o HTTP vai definir como os clientes Web solicitam aos servidores as páginas Web. C. FTP ( File Transfer Protocol) O FTP é um serviço que permite o compartilhamento de arquivos entre um host local e um host remoto por meio de uma autenticação. Para que haja sucesso na transferência de arquivos, o FTP precisa de duas conexões. Uma para a transferência dos arquivos e outra somente para comandos e respostas. Durante o inicio da sessão FTP, o lado do cliente inicia uma conexão TCP de controle na porta 21 com o lado do servidor (host remoto). Ele envia por esta conexão de controle a identificação e a senha do usuário e o comando para alterar o diretório remoto. Ao receber um comando para a transferência de arquivo, o lado do servidor, abre uma conexão TCP de dados para o lado do cliente transferindo assim os arquivos. D. DHCP (Dynamic Host Configuration Protocol) O DHCP atribui um endereço IP, máscara de sub-rede, gateway entre outros parâmetros para novos dispositivos de uma rede. O servidor DHCP é contatado, e escolhe o endereço de uma lista pré-configurada de endereços, chamada de pool e o aluga ao host por um período determinado. Quando o host não está mais presente na rede, seu endereço IP torna-se vago para ser atribuído a outros hosts caso seja necessário. O DHCP garante também que cada endereço IP seja exclusivo. 22 Método de compressão de imagem. 23 É o endereço de um arquivo, impressora disponível em uma rede. 36 O processo de atribuição de endereço IP acontece de seguinte forma [3,4]: 1. ao se conectar a rede um dispositivo configurado para obter endereço DHCP, este transmite um pacote DCHP DISCOVER para identificar o servidor DHCP disponível; 2. o servidor responde oferecendo um endereço IP, máscara de sub-rede, etc (DHCP OFFER); 3. O servidor retornará uma mensagem DHCP ACK, e caso o cliente confirme, então a atribuição de endereço foi finalizada; 4. se houver invalidez no endereço, o servidor responderá com um DHCP NAK (Negative Acknowledgement - confirmação negativa); 5. se isso acontecer o processo de seleção deverá recomeçar com uma nova mensagem DHCP DISCOVER sendo transmitida; 6. a cada período de tempo da conexão, um pedido de renovação deve ser enviado por meio da mensagem DHCP REQUEST; E. Telnet O Telnet provê de forma prática o acesso a terminais remotos da mesma forma que é feito com terminais diretamente acoplados. O acesso é feito por linha de comando. Para se conectar ao servidor, o Telnet cria um dispositivo virtual que virá a fornecer os mesmos recursos de uma sessão de terminal com acesso à interface de linha de comando do servidor [3,4]. A partir do momento em que a conexão é estabelecida o usuário poderá executar qualquer que seja a função autorizada no servidor. É como se ele estivesse utilizando uma sessão de linha de comando no próprio servidor, podendo até mesmo desligar o sistema. Apesar de o protocolo suportar autentificação, seus dados não são criptografados, ou seja, qualquer um pode interceptar e interpretá-los facilmente. Comumente, utiliza-se o Protocolo SSH (Secure Shell) para um acesso mais seguro ao servidor [3,4]. O SSH além de fornecer uma autenticação mais forte que o Telnet, também suporta o transporte de dados de sessão utilizando criptografia. 37 1.3 Métricas de Desempenho Em redes de computadores, são utilizadas algumas métricas de modo a verificar a qualidade e estabilidade da rede. Para realizar a análise de desempenho dos ambientes de teste deste projeto consideraremos as seguintes métricas: vazão da rede (throughput): Capacidade total de um canal em processar e transmitir dados durante um determinado período de tempo; 𝑉𝑎𝑧ã𝑜 = 𝑁ú𝑚𝑒𝑟𝑜 𝑚é𝑑𝑖𝑜 𝑑𝑒 𝑏𝑖𝑡𝑠 𝑞𝑢𝑒 𝑒𝑛𝑡𝑟𝑎 𝑜𝑢 𝑠𝑎𝑖 𝑑𝑎 𝑟𝑒𝑑𝑒 𝑈𝑛𝑖𝑑𝑎𝑑𝑒 𝑑𝑒 𝑇𝑒𝑚𝑝𝑜 [𝑏𝑖𝑡𝑠 𝑠] (1) taxa de entrega de pacotes: Razão entre a quantidade total de pacotes recebidos e pacotes transmitidos; 𝑇𝑎𝑥𝑎 𝑑𝑒 𝑒𝑛𝑡𝑟𝑒𝑔𝑎 𝑑𝑒 𝑝𝑎𝑐𝑜𝑡𝑒𝑠 = Jitter(𝒅𝒗𝒊𝒌 ) é calculado 𝑃𝑎𝑐𝑜𝑡𝑒𝑠 𝑟𝑒𝑐𝑒𝑏𝑖𝑑𝑜𝑠 𝑃𝑎𝑐𝑜𝑡𝑒𝑠 𝑡𝑟𝑎𝑛𝑠𝑚𝑖𝑡𝑖𝑑𝑜𝑠 pela diferença 𝑥100[%] entre os (2) atrasos de pacotes consecutivos[18], 𝑑𝑣 𝑖𝑘 = 𝑇𝐵𝑘 − 𝑇𝐴𝑘 − (𝑇𝐵𝑖 − 𝑇𝐴𝑖 ) (3) onde: 𝑇𝐴𝑖 𝑒 𝑇𝐴𝑘 - instante de saída dos pacotes i e k marcado pelo relógio do host A. 𝑇𝐵𝑖 𝑒 𝑇𝐵𝑘 - instante de chegada mesmos pacotes marcados pelo host B. A partir destas métricas pretende-se avaliar o impacto da presença de máquinas virtuais na rede. Com a vazão será verificado se a taxa de transferência se mantém inalterada verificando se o processamento imposto pela camada de virtualização. A perda de pacotes será avaliada de modo a verificar se a camada de virtualização insere alguma instabilidade na rede e para finalizar, o Jitter será avaliado com o objetivo de verificar se seus valores continuarão dentro do valor apropriado para transferência de vídeos, imagem e dados. 38 2. Virtualização A virtualização tem sido destaque no mundo da tecnologia da informação. A origem das máquinas virtuais remonta a década de 70 com a linguagem UCSD Pascal, da Universidade da Califórnia em San Diego. Naquela época, era comum que cada computador (mainframe24), tivesse seu próprio sistema operacional, e isso se tornou uma das principais razões para o aparecimento das máquinas virtuais, isto porque se tornava caro executar os sistemas operacionais em diversos mainframes, devido à necessidade de se legalizar os sistemas operacionais. Pesquisas mostram que há uma diminuição de custos em até 60% no ambiente de TI, devido à redução na aquisição de novas máquinas, facilidade de gerenciamento, licenças de software, consumo de energia, aumento da taxa de utilização dos servidores, e maior eficiência operacional. [1,2,21] De uma maneira mais formal, uma máquina virtual é definida como sendo uma duplicata eficiente e isolada de uma máquina real. Segundo [24], uma duplicata é uma cópia idêntica de uma máquina original, ou seja, a máquina virtual deve ter o mesmo funcionamento de uma máquina real. O termo isolamento, indica o fato de a máquina virtual funcionar como se fosse um computador independente, assim o usuário que utilizar uma máquina virtual não encontrará diferenças em relação a uma máquina real, com a vantagem de que não há propagação de falhas entre máquinas virtuais e o sistema hospedeiro [21]. No ambiente de uma máquina virtual, não se inclui somente a aplicação, mas todo o sistema operacional referente à máquina que o executa. As máquinas virtuais (VM – Virtual Machine), em sua primeira idealização, foram criadas pela IBM há 60 anos como uma forma de compartilhar sistemas de mainframes grandes e caros. A linha de mainframes 370 da IBM e seus sucessores oferecia uma máquina virtual portada para várias de suas plataformas, sobre a qual as aplicações eram executadas. Dessa forma era possível executar, ou migrar, uma aplicação de uma plataforma para outra desde que houvesse uma versão de máquina virtual para a plataforma cliente. 24 Computador de grande porte, dedicado normalmente ao processamento de um grande volume de informações. 39 Embora a virtualização tenha surgido como uma inovação, esse conceito foi deixado de lado por muitos anos, entretanto, com o aumento do poder computacional dos atuais processadores, a disseminação de sistemas distribuídos e a onipresença das redes de computadores causaram, o ressurgimento da virtualização. A preocupação com a otimização do uso de energia, o custo operacional e o melhor aproveitamento do hardware dos servidores, foram os principais motivos para a migração de servidores físicos para sistemas operacionais virtualizados. Hoje com o avanço da tecnologia é possível, que por meio da virtualização, que uma única máquina de maior porte faça o trabalho de até mil servidores menores. A virtualização tem sido utilizada como uma ferramenta para desktop ou storage25. Através de virtualização de storage é possível criar uma estrutura interconectada, em que equipamentos passam a ter inteligência, e capacidade de alocar, de forma centralizada, os dados de acordo com a intensidade da utilização e demanda. No caso da virtualização de desktops, a vantagem está na simplificação do gerenciamento, redução de custos, maior segurança e possibilidade de acesso remoto. As máquinas virtuais em desktops podem ser usadas para definir ambientes experimentais sem comprometer o sistema operacional original da máquina, ou ainda, para compor plataformas distribuídas como clusters26 e grades computacionais. De acordo com [22] a virtualização pode solucionar alguns problemas, como: Estrutura de servidores com baixa utilização: as empresas possuem um grande parque de servidores com baixa utilização dos recursos. Em média, um ambiente composto por servidores distribuídos tem taxa de aproveitamento entre 10% e 20%. Dessa forma a consolidação de servidores por meio da virtualização permite maximizar os recursos do hardware e otimizar a utilização das máquinas em taxas que ficam acima dos 80%; Custos com licenças de software: os custos com licenças de software têm grande peso nos orçamentos de TI. Para cada servidor distribuído, existe a 25 Rede de armazenamento. 26 Ou aglomerado de computadores, é formado por um conjunto de computadores. 40 necessidade de adquirir e renovar uma série de licenças de software. Atualmente, a maioria dos licenciamentos de software é por núcleo. A consolidação em menor quantidade de máquinas reduz o número de núcleos, diminuindo, com isso, os custos com as licenças; Altas despesas com energia: quanto mais servidores uma empresa possui, maiores as despesas com energia e resfriamento. A redução no número total de servidores resultará em redução no número de dispositivos para resfriamento e consequente diminuição no consumo de energia; Ambientes pouco flexíveis: quando uma empresa identifica a necessidade de ampliar seu ambiente de TI, encara a necessidade de abrir uma ordem de compras para adquirir novas máquinas. Desde a solicitação até o recebimento do novo servidor, o processo para implementação desse novo sistema pode passar de um mês. A virtualização reduz drasticamente o tempo de introdução de novas cargas de trabalho, com implementação de máquinas virtuais em apenas poucos minutos, contra as várias semanas necessárias para a instalação de máquinas físicas; Sistemas distribuídos e falta de padronização: um parque heterogêneo de servidores é de difícil gerenciamento, requer espaço para hospedagem de um número cada vez maior de máquinas e dificulta a integração entre os aplicativos de negócios. A consolidação de servidores elimina a necessidade por servidores adicionais, licenciamentos em excesso, custos e complexidade com manutenção; Devido a gama de aplicações em que a virtualização pode ser empregada, houve um grande investimento nessa tecnologia por parte de fabricantes de processadores e no desenvolvimento de produtos de software. Os processadores mais recentes da Intel e da AMD contam com soluções de hardware especialmente projetadas para suportar a virtualização [1-3]. 2.1 Conceitos de Virtualização A técnica de virtualização permite a execução concorrente de múltiplos sistemas operacionais nas máquinas virtuais em um mesmo hardware físico. Essa função é exercida pelo monitor de máquina virtual (hypervisor), que fica responsável por multiplexar o acesso ao hardware e prover fatias lógicas de recursos para os sistemas virtualizados. De tal forma, cada máquina virtual pode ter seu próprio 41 sistema operacional, aplicativos e serviços de rede (Internet). Pode-se também, interligar virtualmente cada uma dessas máquinas virtuais através de switches e roteadores virtuais [5-17]. A estrutura de um sistema virtualizado é mostrada na Figura 10. Figura 10 - Estrutura básica de um sistema virtualizado. A estrutura de um ambiente virtual consiste em três partes básicas: o sistema real, nativo ou hospedeiro, que contém ferramentas de hardware e de software do sistema; o sistema virtual, ou sistema hóspede que é o responsável por executar um sistema virtualizado dentro de um sistema real; camada de virtualização, hypervisor, ou monitor de máquina virtual, que simula as interfaces virtuais a partir de uma única interface real; O monitor de Máquina virtual ou hypervisor é a parte do software que gerencia os recursos da máquina real e virtual. Ele é o responsável por criar as máquinas e administrar o seu funcionamento, alocando para cada máquina um sistema operacional que funciona de forma independente. O MMV também pode 42 fornecer proteção ao sistema servidor, de forma que a máquina não realize qualquer operação indevida no hardware. As principais funções do hypervisor são: criar um ambiente de máquinas virtuais; alterar o privilégio de modo de execução; reservar recursos da CPUs para as máquinas virtuais; gerenciar o recurso de memória e disco destinado para as máquinas virtuais; gerenciar o controle a outros dispositivos como CD-ROM, drive, e dispositivos de rede. O hypervisor deve prover um ambiente de execução de programas idênticos ao ambiente de máquina real, e controlar os recursos sobre o sistema real. Com o objetivo de maximizar o desempenho, o monitor de máquina virtual pode, permitir que o sistema hóspede execute as instruções diretamente sobre o hardware da máquina física em modo usuário [25]. O monitor de máquina virtual pode ser implementado de duas formas: diretamente sobre o hardware da máquina real ou sobre o sistema operacional da máquina hospedeira [6]. No primeiro caso, chamamos de monitor nativo, ou de tipo 1, o MMV é implementado entre o hardware e os sistemas hóspedes. Neste caso, todos os recursos são gerenciados pelo MMV, cada máquina virtual se comporta como uma máquina física completa que pode executar o seu próprio sistema operacional [25]. Esta abordagem é empregada por um dos principais sistemas de virtualização, o XEN27[28]. O segundo caso, chamado de monitor convidado ou de tipo 2, o MMV é um processo sendo executado no sistema operacional hospedeiro [25]. Neste caso os recursos de hardware são divididos entre as máquinas virtuais e entre outros serviços que estão sendo executados no hospedeiro. Os monitores de máquina virtual são constituídos de três princípios fundamentais: 27 Software de virtualização. Xen permite a execução de vários sistemas operacionais, simultaneamente, sobre um mesmo hardware. 43 princípio da eficiência: É extremamente importante que um grande números de instruções do processador virtual sejam executadas pelo processador real, sem que haja a intervenção do monitor. As instruções que não puderem ser tratadas pelo processador real, precisam ser tratadas pelo monitor; princípio da equivalência: O monitor deve prover um comportamento de execução semelhante ao da máquina real, para o qual oferece suporte de virtualização, salvo haja necessidade de se fazer alterações de recursos das máquinas; princípio da integridade: Todas as requisições de recurso de hardware devem ser alocadas explicitamente pelo monitor (memória, processamento e etc); Na Figura 11 mostra-se o esquema de um sistema virtualizado, onde tem-se dispositivos de hardware acessando o sistema operacional, que realiza a interface entre a máquina virtual e a camada de hardware, realizando o gerenciamento de recursos. Figura 11 - Sistema virtualizado [27]. 44 2.2 Tipos de Virtualização A implementação de máquinas virtuais pode ser obtida através de duas técnicas: virtualização total ou completa e a paravirtualização. Essas duas técnicas diferem-se por modificar ou não os sistemas operacionais hospedeiros. A virtualização total permite o uso do sistema operacional e aplicações, como se estivessem executando diretamente sobre o hardware original. A grande vantagem dessa abordagem é que o sistema operacional hóspede não precisa ser modificado para executar sobre o hypervisor. Desta forma o sistema operacional hóspede cria uma réplica do hardware real. Esse tipo de virtualização necessita de um hardware com características específicas, já que qualquer execução privilegiada de acesso a I/O devem ser analisadas de acordo com critérios definidos pelo hypervisor. A virtualização completa só ocorre dentro de uma mesma arquitetura, por exemplo, uma arquitetura de 32 bits só poderá virtualizar a arquitetura 32 bits. Na Figura 12 pode-se ver a estrutura da virtualização total. Percebe-se que os aplicativos (Ap) das duas máquinas virtuais são executados sobre um sistema operacional não modificado. Figura 12 - Estrutura da Virtualização total [10]. 45 A virtualização completa também possui desvantagens. O software de virtualização pode prejudicar o desempenho do sistema, de modo que as aplicações funcionem mais lentamente em sistemas virtualizados do que se fossem executadas em sistemas não virtualizados. Parte dos recursos de processamento de dados do servidor físico deve ser reservada para o hypervisor. Embora o hypervisor resolva todos os problemas em relação às máquinas virtualizadas, isso traz uma queda de desempenho devido ao processamento que o hypervisor tem que fazer, como por exemplo, traduzir instruções. A emulação de hardware (virtualização total) se utiliza de softwares para realizar a interface com o sistema operacional hóspede (a fim de comunicar-se com hardware simulado inexistente), causando problemas de compatibilidade de drivers. O hypervisor contém drivers de dispositivo e em alguns casos pode haver falta de compatibilidade entre os novos drivers instalados, impedindo que o software de virtualização seja executado na máquina. Estes problemas ocorrem em parte porque as arquiteturas dos computadores não foram projetadas tendo a virtualização em mente. A paravirtualização tenta minimizar os problemas mencionados acima alterando o sistema operacional virtual, implementando uma arquitetura que seja voltada para facilitar a virtualização. Ela modifica os sistemas operacionais hóspedes para que eles reconheçam o monitor de máquina virtual. Nessa abordagem, o sistema hóspede é modificado para chamar o monitor de máquina virtual sempre que for executada uma instrução. Além disso, na paravirtualização os dispositivos de hardware são acessados por drivers do próprio monitor de máquina virtual. Por outro lado a paravirtualização é menos flexível, pois precisa de modificações no sistema operacional hóspede, para que este possa trabalhar perfeitamente. Na Figura 13 pode-se ver a estrutura da paravirtualização. Neste caso, percebe-se que os aplicativos (Ap) das duas máquinas virtuais são executados sobre um sistema operacional modificado. 46 Figura 13 - Esquema da paravirtualização [10]. O uso da técnica de virtualização provê alguns benefícios como, por exemplo, a possibilidade de se poder trabalhar em um ambiente onde haja uma grande variedade de plataformas de software sem ter aumento no número de plataformas de hardware. Os servidores hóspedes podem migrar de uma máquina física e assim balancear a carga de processamento dinamicamente, além da possibilidade de múltiplas funções poderem ser executadas em uma mesma máquina física. Os sistemas convidados podem migrar de uma máquina física para a outra enquanto estão rodando, o que possibilita o aumento do seu nível de segurança. A virtualização de servidores permite um modelo de gerenciamento visando a economia e redução de custos de empresas, isola um programa ou uma estação de trabalho dentro da rede, utilizando assim um servidor físico para criar diversos servidores. Geralmente, instala-se um aplicativo de virtualização no sistema operacional e dentro dele há instalado diversos outros sistemas operacionais, economizando espaço e gasto com computadores [4,27]. 47 3. Ferramentas de virtualização Neste trabalho, utilizou-se o XCP (Xen Cloud Platform) como ferramenta de virtualização para criar a rede de testes. Também utilizamos o Open XenCenter para criar as máquinas virtuais Linux e poder gerenciá-las remotamente. Para realizar os testes, utilizamos a ferramenta de análise de desempenho de rede Iperf. 3.1 Xen Cloud Platform O XCP é um software de virtualização open-source e de computação na nuvem [1-10]. O XCP contém um monitor de máquina virtual (hypervisor) Xen e foi desenvolvido dentro do âmbito de um projeto de pesquisa da Universidade de Cambridge, que resultou na criação da empresa XenSource inc. que posteriormente em 2007 foi adquirida pela Citrix System. O Xen é um hypervisor que fornece um isolamento para as máquinas virtuais. Xen é a síntese de vários produtos e projetos sendo uma plataforma aberta gerida pelo Xen.org. O hypervisor em si é similar em todos esses projetos porém a forma de gerenciamento pode se tornar diferente, o que pode muitas vezes pode causar confusão se não for clara qual a pilha de ferramentas que está sendo usada. É importante deixar claro que o XCP é uma plataforma aberta do Xen e foi projetado especificamente para o ambiente empresarial e para nuvem, enquanto que o Citrix XenServer é um produto comercial baseado no XCP e exibe a mesma pilha de ferramentas e APIs de gerenciamento. Fazendo uma analogia pode-se pensar que da mesma forma que o Red Hat Enterprise Linux é derivado do Fedora, o XenServer é baseado no XCP. O XenServer tem sua versão gratuita, porém aplicativos adicionais só serão habilitados obtendo-se licença. Diferente das outras ferramentas de virtualização o Xen apresenta um recurso que permite criar um hypervisor que não possui drive de dispositivos, e ainda assim consegue controlar os recursos das máquinas virtuais. O Xen consiste em uma máquina virtual que executa um kernel28 Linux modificado e que possui acesso a dispositivos de entrada e saída e a outras máquinas virtuais. 28Núcleo do sistema operacional 48 O Domínio U ou DomU é a denominação dada para as máquinas virtuais que rodam outros sistemas operacionais, estas possuem um drive virtual para acesso de recursos de hardware. O Domínio 0 ou Dom0 é responsável por criar as máquinas virtuais referentes ao Domínio U, inicializá-las e desligá-las, ou seja, é a parte do sistema responsável pelo gerenciamento do Domínio U, além de ter acesso aos dispositivos da máquina física, também é o responsável pelas requisições de acesso a rede. Assim o Domínio 0 é a camada responsável pelo tratamento das requisições feitas pelo Domínio U e é o primeiro a inicializar as configurações de boot depois do Xen. O XCP apresenta estes mesmos conceitos de domínios, este contém o Domínio 0 Linux kernel. Os domínios são máquinas virtuais do Xen e são de dois tipos: privilegiado (Domínio 0) ou não privilegiado (Domínio U). A função do hypervisor é controlar os recursos de memória, de comunicação e de processamentos das máquinas virtuais, não possuindo drivers de dispositivos. O hypervisor inicia o Domínio 0 pois este não é capaz de suportar nenhum tipo de interação com os sistemas hóspedes. Dessa forma, as outras máquinas virtuais só podem ser iniciadas após a execução do Domínio 0. Assim como no Xen, o Domínio 0 é responsável por criar, iniciar e terminar as máquinas virtuais de Domínio U. As máquinas virtuais não possuem privilégio de execução dentro do sistema, porém pode-se perceber que no Xen o software OpenStack29 também roda no Domínio U. Isso traz um nível de segurança entre o software de sistema virtualizado. Há projetos que preveem a divisão do Domínio 0 em múltiplos domínios privilegiados, isto traria maior separação de componentes críticos aumentando os níveis de separação [2]. Atualmente temos em sua arquitetura 3 níveis de separação: Domínio 0, OpenStack Domínio U e as máquinas virtuais (sem privilégio). A Figura 14 mostra o interação entre o hypervisor, o Domínio 0 e as demais máquinas virtuais (Domínio U). 29 Software de código aberto capaz de gerenciar os componentes de múltiplas infraestruturas virtualizadas, assim como o sistema operacional gerencia os componentes de nossos computadores. 49 Figura 14 - Relação entre o hypervisor, Dom0 e DomU [2]. Inicialmente o Xen implementava somente a técnica de paravirtualização, ou seja, era necessário modificar os sistemas operacionais hóspedes (Domínio U) para torná-los conscientes do hypervisor. Após a sua terceira versão, o Xen passou a oferecer suporte à virtualização completa, permitindo o uso de sistemas operacionais não modificados, mas isso só é possível se o processador oferecer suporte de hardware à virtualização (Intel VT ou AMD-V). Com isso, o Domínio U passou a ter duas nomenclaturas, o Domínio U-PV (paravirtualized) para ambientes paravirtualizados e o Domínio U-HVM (hardware virtualized) para ambientes virtualizados. Isto se refere a interação entre o Xen, Dom0 e o Kernel dos sistemas convidados. Os U-PVs convidados são conscientes do fato que precisam cooperar com o Xen e o Domínio 0 trazendo melhor desempenho ao sistema, já os U-HVMs convidados não estão cientes do seu ambiente e fingem que estão executando diretamente no hardware, ou seja, não entendem que são máquinas virtualizadas. O Domínio U-PV, por não ter acesso direto ao hardware necessita de drivers especiais 50 para acesso a rede e ao disco. Já os domínios U-HVM por não serem modificados, iniciam tentando executar a BIOS30[1,2,24]. O XCP combina as capacidades de isolamento do Xen hypervisor com maior segurança e tecnologias de virtualização de rede para oferecer um conjunto de serviços de infraestrutura de nuvens virtuais. A Figura 15 mostra a estrutura de funcionamento do XCP. Seus módulos serão explicados com mais detalhes na Seção 4.1.1, quando será analisada com mais profundidade a arquitetura do XCP. Figura 15 - Estrutura de funcionamento do XCP [14]. Neste trabalho escolheu-se utilizar o XCP como ferramenta de virtualização pelos seguintes motivos [1-9]: velocidade de processamento; escalabilidade31; características de classes de serviços, como migração de processos sem que estes sejam interrompidos; 30 O BIOS é um programa de computador pré-gravado em memória permanente executado por um computador quando ligado. Ele é responsável pelo suporte básico de acesso ao hardware, bem como por iniciar a carga do sistema operacional. 31 Capacidade da rede de suportar crescimento de sua estrutura sem que sua qualidade seja afetada. 51 possibilidade de se criar roteadores virtuais utilizando a técnica de virtualização de máquina; possibilidade de se poder migrar um processo de um roteador virtual para o outro sem que esse processo tenha que ser interrompido; Estudos mostram que os atuais computadores pessoais providos de processadores com múltiplos núcleos permitem a construção de roteadores eficientes e de baixo custo [5-14]. Assim enquanto o roteador virtual permite um plano de controle e um plano de dados, o XCP permite que esses dois planos sejam virtualizados. Cada roteador virtual implementa os seus próprios planos de controle e de dados, assim o XCP torna a rede mais programável em relação a outras tecnologias que virtualizam apenas o plano de controle e compartilham o plano de dados. Essa é a principal vantagem para o uso do XCP na virtualização de roteadores e, por isso, é utilizado em diversas plataformas de testes e projetos de novas arquiteturas da Internet do Futuro [10]. 3.1.1 Arquitetura do XCP. Na Figura 16 é mostrada a arquitetura do Xen Cloud Platform. Figura 16 - Arquitetura Xen[22]. 52 Dentro da arquitetura mostrada temos o hypervisor Xen, o Domínio 0 e o OpenStack Domínio U. O Domínio 0, executa o XAPI e algumas partes do OpenStack (alguns plugins eregrasdeisolação).OXAPIou“XenAPI”éumapilha de ferramentas usada pelo XenServer [15]. O XAPI é o cérebro do XenServer e além de gerenciar os recursos, suas outras funções são: processamento das configurações, inicialização dos caminhos de rede, criação da base de dados, gerenciamento dos repositórios de armazenamento, gerenciamento das máquinas virtuais e da rede. Para conversar com o XAPI é necessário utilizar a pilha de ferramentas do próprio XAPI. O XenServer necessita de uma requisição via XAPI. A cópia da base de dados do XAPI é sincronizada entre os hosts em um pool32, assim todos os hosts têm uma copia da base de dados do XAPI tendo conhecimento do que se passa no sistema. Em um pool de hosts existe um host que é responsável por enviar a todos os outros uma base de dados para a sincronização, este host é denominado Master. Se por algum motivo o host Master falhar, um novo host é eleito Master e passa a compartilhar informações com todos os outros. Quando são coletados os relatórios de status do XenServer a base de dados é armazenado em um relatório de status. Por exemplo, o XenCenter, software que será utilizado neste trabalho para gerenciar remotamente as máquinas virtuais, realiza uma requisição ao XAPI quando cada host necessita trocar informações com a máquina Master, em um pool. O OpenStack Domínio U é responsável por fazer a interface com o cliente. Ele executa o código nova-compute em uma máquina paravirtualizada que é executada no host que se encontra em gerenciamento[13]. O processo novacompute é um daemon que cria e termina as instâncias virtuais da máquina, executando uma série de comandos a fim de ligar a máquina virtual e atualizar seu status em uma base de dados. Este processo é complexo e não faz parte do escopo do nosso projeto. Cada host executa uma instância local de uma nova-compute. O OpenStack DomU também oferece execução da nova-network, que gerencia os endereços IPs via DHCP. A nova-compute é executada somente nos sistemas 32 Parque de máquinas. 53 hóspedes e inserem ao sistema um nível de segurança e isolamento entre softwares de sistemas privilegiados e o software do OpenStack[4-9]. Anova-network trabalha de forma similar ao nova-compute. Esta executa tarefas de rede tal qual a criação de rede, criação de bridges, mudança de regras de Iptables33, ou seja, toda e qualquer tarefa relativa à rede. O XenServer ( parte integrante do XCP) tem uma interface física de rede eth0. Desta forma, o Domínio0 possui a bridge xenbr0. O Domínio U é uma máquina que geralmente tem quatro interfaces, com pode-se ver na Figura 17. Essas interfaces são nomeadas a escolha do administrador da rede. eth0 conectado ao XAPI (Carrega o tráfego relativo aos XAPI); eth1 xenbr2 tráfego de rede relativo ao Tenant; eth2 xenbr0 tráfego de gerenciamento dos protocolos (MySQL, RabbitMQ, Glance, etc); eth3 xenbr1 tráfego público (protocolo IP, API dos dispositivos finais); 33 Ferramenta que permite a criação de regras de firewall e NATs 54 Figura 17 - Interfaces do Xen [29]. A interface do DomU que conecta a rede pública é utilizada pela nova- network que envia tráfego via IP à rede correta. Pode-se também criar uma VLAN em uma interface do XenServer e então associá-la a uma determinada bridge. Existe suporte a três modos de gerenciamento de rede, o Flat Network Manager, Flat DHCP Network Manager e o VLAN Network Manager. No Flat Network manager, o administrador de rede especifica a interface de rede. Os endereços IPs são escolhidos a partir de uma sub-rede e então associados às máquinas virtuais. Cada instância recebe um valor fixo de endereço IP que estão contidos em um grupo de endereços. O administrado deverá criar uma bridge nos sistemas que rodam o serviço nova-network. Todas as instâncias do sistema são 55 associadas à mesma bridge e esta configurada manualmente pelo administrador de rede [22-26]. No Flat DHCP Mode, o OpenStack inicia o serviço de DHCP que entrega endereço IP de determinada sub-rede às instâncias de máquina virtual e fica a cargo do administrador de rede a configuração manual das bridges. O endereço de subrede do grupo de máquinas virtuais é especificado pelo administrador de rede. Da mesma forma como no modo Flat Network manager todas as instâncias são associadas a uma única bridge com o adicional de que nesse caso temos um servidor DHCP sendo executado e configurando todas as instâncias. O computador faz uma configuração adicional na tentativa de fazer uma ponte entre o dispositivo Ethernet (Flat interface, eth0 por default). Para cada instância será alocado um IP fixo e configurado um servidor dnsmasq com MAC/IP para máquina virtual ou seja dnsmasq não faz parte do processo de escolha de endereço IP este apenas entrega IPs de acordo com o mapeamento feito pelo nova-network. Instâncias recebem IP fixo por meio do módulo dhcpdiscover. Esses IPs não são atribuídos a nenhuma interface de rede do host, somente às interfaces das máquinas virtuais hóspedes. Quando a máquina virtual inicializa, esta envia pacotes para o servidor DHCP que responde com o endereço IP. Na realidade, o endereço IP é atribuído pela novanetwork que o disponibiliza ao servidor DHCP, este somente diz a máquina virtual qual será o seu IP[25-33]. Em cada configuração com o Flat networking, os hosts com nova-network são responsáveis por encaminhar tráfego da rede privada configurada com range fixo opcional no nova.conf. O modo flat DHCP habilita o teste de ping nas máquinas virtuais utilizando IP fixo através do nova-network, porém não é possível realizar este teste de uma VM para outra. Este é o comportamento esperado. O modo VlAN Network Mode cria uma VLAN e uma bridge para cada máquina virtual. Para múltiplas máquinas a rede em modo VLAN requer um switch que suporte tagueamento34 de VLAN(IEE 802.1Q). Há intervalos de IPs privados que somente são acessados dentro da VLAN, de modo que para que os usuários tenham acesso a instâncias em seus projetos, uma VPN necessita ser criada (usualmente chamada de cloudpipe) [15]. Hosts geram um certificado e uma chave 34 Colocar marcação de VLAN nos pacotes. 56 para usuários terem acesso a VPNs automaticamente. Nesse modo, cada máquina virtual tem a sua própria VLAN, bridge de rede e sub-rede[4-9]. As sub-rede são especificadas pelo administrador de rede e atribuídas dinamicamente às máquinas virtuais quando requerido. O servidor DHCP é iniciado para cada VLAN e entrega através destas o endereço IP às máquinas virtuais. Todas as instâncias pertencem a um projeto que são associadas a mesma VLAN. O OpenStack cria as bridges de rede e VLANs quando requerido. 3.1.2 Configuração de Redes no XCP O Xen permite grande flexibilidade na configuração de rede. É possível permitir comunicação entre Xen hóspedes de uma mesma máquina bem como a comunicação entre Xen hóspedes e a rede global. Os sistemas hóspedes podem ter funcionalidades de roteador e de NAT. Uma rede virtual local pode ser criada para habilitar hóspedes e a comunicação privada entre eles sem o uso de uma rede física. Uma regra básica do Xen é o compartilhamento entre a rede física e os múltiplos hóspedes. Logicamente cada Domínio U deverá ter uma interface de rede virtual (NIC – Network Interface Controller). O Xen multiplexa a saída de pacotes de cada rede virtual dentro da rede física. Similarmente, o Xen demultiplexa a entrada de pacotes da rede virtual para cada NIC correspondente ao seu Domínio U. Isso pode ser feito em três modos, bridge, router ou Natwork Address Translation (NAT). Por outro lado, uma interface de rede virtual não requer uma interface de rede física para funcionar. Poderá ser criada uma rede virtual em segmentos entre domínios hóspedes que não necessitam se comunicar com um dispositivo físico. Ou seja, sistemas hóspedes podem ter múltiplas interfaces de rede compostas por interfaces físicas e lógicas que garantem o acesso ao segmento de rede virtual. Outro aspecto importante das redes virtuais é decidir a topologia de rede. O administrador está livre para construir a topologia virtual dentro do sistema Xen. O administrador deverá decidir qual endereço IP deverá atribuir a cada interface da rede virtual. Cada segmento de rede deverá ter a máscara de rede e um identificador de rede para guiar o endereço IP e permitir o roteamento. As interfaces que são roteadas na camada 2 para fora da rede obtém o endereço IP de um 57 servidor DHCP externo. As interfaces de rede virtuais também podem ser atribuídas manualmente. As configurações de rede virtuais e topologias tem um grande impacto sobre o desempenho e segurança do sistema. Como mencionado acima, o Xen provê três modos de rede virtual para os hóspedes, bridged, routed e NAT. No modo de bridge a interface de rede virtual “vif1.0” é visível à camada Ethernet externa, já no modo router, o “vif1.0” não é visível a camada Ethernet, porém os endereços IP o são.NomodoNAT,o“vif1.0”e o endereço IP não são visíveis. A bridge retransmite o tráfego entre múltiplas interfaces de rede baseada no endereço, independente dos protocolos das camadas superiores. O roteador encaminha os pacotes às camadas superiores baseadas no endereço IP através da Internet e o gateway NAT traduz entre um único ponto de roteamento o endereço IP externo a vários endereços IPs locais que não são roteáveis. O gateway NAT remapeia os soquetes dos sistemas convidados para a porta do Domínio 0. A Figura 18 mostra estes três modos de operação. 58 Figura 18 - Modos de rede virtual [12]. No modo de roteamento, o driver domain35 conecta duas redes de diferentes segmentos: a rede interna dos sistemas hóspedes e a rede externa, conectando-o a Internet. Quando o driver domain age como gateway NAT, ele continua a agir como um roteador. Além disso, ele mapeia a porta do endereço IP dos sistemas 35 Domínio U com acesso físico ao dispositivo de hardware. 59 convidados, ou seja, funciona como Proxy. Os IPs dos domínios hóspedes estão por trás do driver domain e são invisíveis a rede externa. A tabela da Figura 19 compara o modo bridging com o modo routing. Figura 19 – Tabela de comparação entre o modo bridge e o modo de roteamento [12]. A. Modo Bridging No modo bridging, a ferramenta “brctl” é utilizada para criar um software de interface bridge no drive de cada domínio. A interface de rede física é então associada a uma determinada bridge. As interfaces internas dos sistemas convidados são associadas a interface do software bridge no momento de sua criação. Quando a interface bridge recebe os dados da interface física, ela os retransmite por diferentes domínios utilizando seu endereço MAC, dando a ideia que o domínio recebe dados da Ethernet. Neste modo, os sistemas hóspedes são transparentes para a Ethernet. Quando o driver é configurado para ser roteador, usando as regras de IPtables Linux, todos os pacotes recebidos pela interface pela rede física, são processados pelo driver da camada de rede IP. O driver domain busca a tabela de entrada do endereço IP e encaminha os pacotes para os convidados de acordo com o endereço IP de destino. O modo bridging multiplexa e demultiplexa os pacotes pelo endereço MAC, enquanto que no modo router esse processo é feito pelo endereço IP. Enquanto que ao firewall Linux provê o filtro de pacotes “iptables”, o pacote “Linux bridge utils” também provê o filtro Ethernet “ebtables”, habilitando a funcionalidade de filtros dentro da bridge. Com o modo bridge habilitado, pode-se também controlar e assegurarotráfegoderededentrodaconfiguraçãodo“IPpacketfirewall”. 60 No Xen, o modo padrão de configuração é o bridge. As interfaces virtuais do Domínio U são flexíveis para serem associadas às bridges no momento da configuração. Desse modo é fácil garantir a isolação e a segurança entre os domínios. É possível também dedicar uma interface física a um único domínio, dando acesso direto aos dispositivos físicos. Neste caso, o driver domain não está envolvido nos processos do domínio hóspede36. Normalmente os sistemas hóspedes compartilham as mesmas NICs. Entretanto, caso um deles tenha um maior tráfego de rede, é importante assegurar que eles tenham suas próprias NICs de modo a garantir seus serviços. Assim, o sistema hóspede se comporta de maneira semelhante a uma máquina física e tem total controle sobre a rede. Quando os pacotes são enviados aos sistemas hóspedes a bridge ou o roteador o driver domain recebe os pacotes e os direciona à ”backend vif deste domínio. Então a interface backend vif direciona os pacotes para a interface (frontend vif) do sistema hóspede. Quando o sistema hóspede envia dados para a Internet os dados são enviados a uma interface frontend “vif”que são armazenadas em um buffer, e então encaminhadas a uma interface backend “vif” e então são encaminhadas através de uma bridge ou roteador para o driver domain. Enfim, a bridge entrega os dados a Internet. A Figura 20 mostraapresençada“vif1.0”como interface do XCP. 36 Domínio que executa sobre uma máquina virtual. DomU ou máquina virtual. 61 Figura 20 - Interface“vif1.0”. O veth0 e o vif0.0 formam um par de interfaces do Domínio 0, veth0 é renomeado para ser o eth0, como mostrado Figura 21. Figura 21 - Interface eth0. O xenbr0 é a interface bridge configurada no driver domain. A Vif1.0 é a interface de rede externa onde são executados os domínios hóspedes. Pode-se ver que o eth0, vif0.0,vif1.0 e xenbr0 compartilham o mesmo endereço MAC FE.FF.FF.FF.FF.FF, que é o endereço de broadcast. Isso indica que a interface física, o loopback do Domínio 0, a interface externa dos domínios hóspedes utilizam a mesma bridge (xenbr0) para propagar pacotes de broadcast. Quando a interface 62 física recebe pacotes, os envia diretamente através da bridge xenbr0, então o software bridge determina a qual interface externa será encaminhada os dados. Então, eth0 não necessita de um IP, somente de um endereço MAC. A Figura 22 mostra as interfaces backend vif e frontend vif do domínio hóspede. Figura 22 - Interfaces backend vif e frontend vif do domínio hóspede [12]. As interfaces virtuais correspondentes aos domínios hóspedes, eth0, são configuradas dentro do domínio hóspede. Do ponto de vista dos drivers domain, o eth0 do domínio hóspede é o vif1.0. A Figura 23 mostra um drive virtual funcionando no modo bridge. 63 Figura 23 - Driver virtual funcionando no modo bridge [12]. Com o comando traceroute pode-se mapear a rota de um pacote de uma máquina para outra. Pode-se perceber que há somente um salto entre a máquina virtual e máquina externa que estão na mesma sub-rede. Neste projeto, criaram-se duas máquinas virtuais funcionando em modo bridge. A Figura 24 mostra que o traceroute executado de uma das máquinas virtuais para uma máquina real mostra que o Domínio 0, cujo IP é 152.92.155.45 não é indicado em seu mapeamento. Figura 24 - Resultado do comando traceroute. Percebeu-se que através do wireshark (analisador de protocolo de rede) que a interface xenbr0 trabalha como um switch, isto porque o software bridge não faz uma requisição ARP, entregando os dados diretamente ao domínio específico. Percebe-se também a partir do comando brctl show que todos os domínios estão dentro de uma mesma bridge. O Xen possui um script padrão que cria uma bridge 64 chamadade“xenbr0”sobreainterfaceeth0damáquinafísica. A Figura 25 mostra especificações da máquina virtual que foi criada neste projeto. Figura 25 - Comando brctl show na máquina virtual. B. Modo de Roteamento Como mencionado, o roteador é o dispositivo de rede que está acima da camada de enlace. Ele processa pacotes e os entrega através do endereço IP de destino. O modo de roteamento do Xen funciona da mesma forma que um roteador físico. Domínios hóspedes são roteados da Ethernet através do driver domain. Na Figura 26, pode-se ver a topologia do Xen em seu modo de roteamento. O driver domain atua como roteador direcionando os pacotes para os domínios hóspedes. Figura 26 - Topologia do Xen em seu modo de roteamento [12]. 65 Para habilitar o modo router é necessário descomentar a configuração network-script network-route, adicionalmente deve-se inserir o seguinte script em etc/xen/scripts/networks-route: Echo 1 > /proc/sys/net/ipv4/ip_forward Echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp A primeira linha deste comando é a linha padrão do script, que indica que o driver domain passa a atuar como um roteador. A segunda linha indica o script do default gateway, pois quando o proxy ARP é configurado o roteador atua como um proxy ARP, respondendo a requisição ARP do domínio hóspede quando o endereço de destino se encontra em outra rede. É importante observar que sem a adição da segunda linha, caso o domínio hóspede envie pacote ICMP para a rede externa este não recebe nenhuma resposta. O domínio hóspede questiona a sua interface externa, mas como resposta recebe o endereço MAC da própria interface virtual externa. A Figura 27 mostra o disparo da máquina virtual para uma máquina real de IP 152.92.155.21. Figura 27 - O comando ping não recebe resposta. Após a realização deste procedimento, percebe-se que o domínio hóspede recebe resposta da máquina de destino, como mostra a Figura 28, o domínio hóspede pode agora se comunicar pela internet. 66 Figura 28 - Domínio hóspede comunicando-se com a Internet. Depois de inicializar o domínio hóspede deve-se configurá-los como mostra o exemplo abaixo: Vif=[„ip=128.153.144.96‟] NETMASK=“255.255.255.0” GATEWAY=“128.153.144.204” Assim todos os pacotes que chegarem a interface física do driver domain serão encaminhados de acordo com a tabela de roteamento. Por outro lado, todos os pacotes que saírem dos domínio hóspedes serão encaminhados ao gateway. Para confirmar a configuração, utiliza-se o comando ifconfig -a. Para maiores informações sobre o modo de roteamento, veja [12]. C. Modo NAT O gateway NAT funciona de forma semelhante ao modo de roteamento, com a diferença de que há um mapeamento de porta para cada par de IP/porta (soquete). No modo NAT os domínios hóspedes se encontram por trás do driver domain. Por trás da rede virtual os domínios hóspedes se encontram em sua própria rede privada, cada qual com seu endereço IP privado. Contudo, na Internet não há ciência da existência dos domínios hóspedes, não sendo possível comunicar-se com 67 eles por meio de seus endereços IPs. Os dados de determinada sub-rede passam pelo drive domain com diferentes números de porta. O gateway NAT traduz os pacotes que chegam em uma porta para o interior do domínio hóspede e sua apropriada aplicação. Por exemplo, a máquina 10.0.0.11, inicia uma conexão TCP pela porta 6789, o gateway NAT pode mudar o endereço de pacote de saída para que pareçam vindos do IP 128.153.145.111 e porta 9876. O gateway NAT irá perceber que o tráfego de entrada pela porta 9876 deverá ser encaminhado para o soquete 10.0.0.11/6789. Isso é possível para que múltiplos hosts compartilhem o mesmo endereço IP a fim de acessar a Internet. A Figura 29 mostra o esquema do funcionamento em modo NAT. Figura 29 - Esquema do funcionamento em modo NAT [14]. Para habilitar o modo NAT, deve-se descomentar a configuração (networkscript network-nat) e (vif-script vif-nat) no script etc/xen/scripts/networks-route. Como o funcionamento em modo NAT não faz parte do escopo deste projeto, para obter maiores informações veja [12]. 68 3.2 Virt-manager Para realizar a instalação do Xen Cloud Platform, utilizou-se o gerenciador de máquinas virtuais. O virt-manager é um software37 flexível e livre. Para que haja a conexão do Xen Cloud Platform com a Internet é necessário criar um script para associar a interface eth0 a bridge “virbr0”.Estescriptdeveserexecutadonoterminal do Linux antes de se iniciar o Virt-manager. Para visualizar o script veja o apêndice A. O procedimento de instalação do XCP pode ser visto no apêndice B. Abaixo seguem as configurações dos computadores que foram utilizados para a instalação do XCP, bem como a instalação de suas respectivas máquinas virtuais. será chamado de PC1 o computador com as seguintes configurações: Hardware: Intel Core 2 quad-core @ 2.83GHz, 8GB RAM; será chamado de PC2 o computador com as seguintes configurações: Intel Core i7-3770 CPU @ 3.4GHz x8, 8GB de memória RAM; ambos possuem o sistema operacional: Ubuntu 12.04x64; ambos possuem suporte para virtualização completa; a taxa Ethernet é de 100Mbs, full Duplex para ambos. Estas máquinas se encontram dentro do Laboratório de PROcessamento de Sinais, Aplicações Inteligentes e Comunicações (PROSAICO). O procedimento para a instalação da máquina virtual pode ser visto do Apêndice C. 37 Ferramenta de virtualização utilizada para instalar o XCP sobre a máquina real[12]. 69 3.3 XenCenter Para a criação das máquinas virtuais e gerenciamento das mesmas utilizouse o aplicativo XenCenter. Ele é um console gráfico que permite a administração de modo centralizado de todos os servidores da nuvem. Com ele pode-se iniciar, reiniciar e monitorar as máquinas virtuais, bem como instalá-las sobre o Xen Cloud Platform [10]. Após conectar o XenCenter ao XCP, é exibido algo como na Figura 30. Figura 30 - Interface gráfica do XenCenter. No momento de se conectar ao XCP ele pede o IP da máquina além de sua senha. Quando a conexão é estabelecida é possível criar as máquinas virtuais, bem como verificar o console do XCP. Neste projeto criou-se duas máquinas virtuais, com sistema operacional Linux Ubuntu 10.04. Cada uma delas está em um computador diferente. 70 4. Resultados Experimentais Com a rede em perfeito funcionamento, e as máquinas virtuais criadas, utilizou-se a ferramenta Iperf para realizar os testes de desempenho da rede. O Iperf é um software livre do tipo cliente/servidor. Com ele pode-se testar e medir a vazão da rede além de avaliar outros parâmetros como Jitter e perda de pacotes[28]. Para utilizar o Iperf basta iniciá-lo em modo servidor em uma máquina, utilizando o comando: >Iperf –s Enquanto que na outra máquina deve-se iniciá-lo em modo cliente, com o comando: >Iperf –c <IP_do_Servidor> Dessa forma, o cliente passará a enviar tráfego TCP para o servidor por 10 segundos, e em seguida mostrará a quantidade de dados transferidos (MBytes) e a taxa atingida (Mbits/s). O Iperf realiza testes TCP, que é o seu padrão, e testes UDP, executando os seguintes comandos no servidor e no cliente, respectivamente >Iperf –s –u (no servidor) >iperf –c <IP_do_Cliente> -u Para mais detalhes sobre os comandos do Iperf, ver [28]. Para a avaliação do desempenho da rede deste projeto foram transmitidos fluxos UDP, variando-se a banda utilizada, utilizando os valores de: 250Kbits/s, 500Kbits/s 750Kbits/s, 1Mbits/s, 1,25Mbits/s e 1,5Mbits/s. Para cada uma desses valores de banda foi tirada a média do resultado de dez testes. Realizaram-se também testes com fluxo TCP. Cada fluxo também foi enviado dez vezes, e considerou-se um intervalo de confiança de 95% para a média. O intervalo de confiança será representado pela barra vertical nos gráficos. O intervalo de confiança [80] da média de n amostras pode ser definido da seguinte forma: 𝐼𝐶 = 𝑋 + −𝑡 𝑆 𝑛 , (4) Onde, 𝑋 é a média das amostras; é um valor obtido através de uma tabela de quantis da distribuição t, chamado Valor Crítico; S é o desvio das amostras; e n é a quantidade de amostras, que neste caso é dez. 71 4.1 Ambientes de testes. Para realizar os testes de desempenho de rede, criaram-se os seguintes ambientes: A. Ambiente CRSR – C2S1: a máquina real no PC1 funciona como servidor e a máquina real no PC2 funciona como cliente, como ilustrado na Figura 31. Figura 31 - Ambiente de teste CRSR – C2S1. B. Ambiente CRSR – C1S2: a máquina real no PC1 funciona como cliente e a máquina real no PC2 funciona como servidor, como ilustrado na Figura 32. Figura 32- Ambiente de teste CRSR – C1S2. 72 C. Ambiente CRSV – C2S1: a máquina virtual no PC1 funciona como servidor e a máquina real no PC2 funciona como cliente, como ilustrado na Figura 33. Figura 33 - Ambiente de teste CRSV – C2S1. D. Ambiente CVSR – C1S2: a máquina virtual no PC1 funciona como cliente e a máquina virtual no PC2 funciona como servidor, como apresentado na Figura 34. Figura 34 - Ambiente de teste CVSR – C1S2. 73 E. Ambiente CVSR – C2S1: a máquina real no PC1 funciona como servidor e a máquina virtual no PC2 funciona como cliente, como ilustrado na Figura 35. Figura 35 - Ambiente de teste CVSR – C2S1. F. Ambiente CRSV – C1S2: a máquina real no PC1 funcionando como cliente e a máquina virtual no PC2 funciona como servidor, como visto na Figura 36. Figura 36 - Ambiente de teste CRSV – C1S2. G. Ambiente CVSV – C2S1: a máquina virtual no PC1 funciona como servidor e a máquina virtual no PC2 funciona como cliente, como apresentado na Figura 37. 74 Figura 37 - Ambiente de teste CVSV – C2S1. H. Ambiente CVSV – C1S2: a máquina virtual no PC1 funcionando como cliente e a máquina virtual no PC2 funciona como servidor, como ilustrado na Figura 38. Figura 38 - Ambiente de teste CVSV – C1S2. Para todos os testes formam feitas análises com TCP e UDP. 4.2 Resultados Inicialmente, avaliou-se a vazão para cada um dos ambientes de teste 75 utilizando-se o Iperf realizando a transmissão via fluxo TCP. Analisando os gráficos das Figuras 39 e 40, percebe-se que a taxa de transferência dos ambientes CRSR – C2S1, CRSR – C1S2 e dos ambientes CVSR – C2S1, CRSV – C1S2, CRSV – C2S1, CVSR – C1S2 são semelhantes, ou seja, neste caso a ferramenta de virtualização é transparente para a rede. Percebe-se que quando o PC2 funciona como servidor os resultados são equivalentes, indicando que neste caso o desempenho não depende do fato da máquina funcionar como servidor ou como cliente. Figura 39 - Gráfico de Vazão usando o Iperf/TCP considerando o PC1 como servidor. 76 Figura 40 - Gráfico de Vazão usando o Iperf/TCP considerando o PC1 como cliente. Quando se comparam os ambientes CRSV – C2S1 e CVSV – C2S1, no gráfico da Figura 39, e os ambientes CRSR – C1S2 e CVSV – C1S2, no gráfico da Figura 40, percebe-se uma leve queda na taxa de transferência. Isso acontece possivelmente pela inserção das duas máquinas virtuais, e suas respectivas camadas de virtualização que exigem mais do poder de processamento dos computadores. Utilizaram-se também fluxos UDP através do Iperf para analisar a rede. Neste caso, os fluxos UDP podem representar a transferência de conteúdo multimídia, como vídeo, por exemplo. Nestes testes avaliou-se a variação do atraso entre pacotes (Jitter), métrica importante para a transmissão de vídeo na rede [30]. De acordo com os gráficos da Figura 41 e 42, não há um aumento do jitter de forma considerável. Este leve aumento pode ser explicado pela inserção da camada de virtualização. Como foi visto no capítulo 3 devido a sua arquitetura esta camada insere um maior tempo no processamento dos pacotes. Ainda assim o maior valor de jitter medido, foi em torno de 0,5ms, o que, de acordo com [31] não compromete o desempenho da rede. 77 Figura 41 - Gráfico do Jitter usando o Iperf/UDP, considerando o PC1 como servidor. 78 Figura 42 - Gráfico do Jitter usando o Iperf/UDP, considerando o PC2 como servidor. É importante ressaltar que em todos os testes realizados, não foi identificada a perda de pacotes, indicando que mesmo com a camada de virtualização, a rede continua estável. É importante comentar que a vazão da rede em todos os testes considerando fluxos UDP atingiu o seu valor máximo. Dessa forma, entende-se que se podem aproveitar os benefícios de se utilizar a máquina virtual, sem que seja necessário comprometer o desempenho da rede. Em todos os testes realizados a rede com a presença de máquinas virtuais se manteve com o desempenho praticamente inalterado. 79 5. Conclusão Neste trabalho procurou-se avaliar o impacto de máquinas virtuais presentes em uma rede local, dentro do Laboratório de PROcessamento de Sinais, Aplicações Inteligentes e Comunicações (PROSAICO). Com isso criaram-se as máquinas virtuais, utilizando a ferramenta de virtualização Xen Cloud Platform. Com os ambientes de testes montados realizaram-se os testes de fluxo UDP e de fluxo TCP utilizando a ferramenta iperf. Assim pode-se avaliar a qualidade de serviço da rede na presença de máquinas virtuais além de aprofundar os conhecimentos na arquitetura Xen, e contribuir para o estudo sobre virtualização e máquinas virtuais. 5.1 Discussão sobre o Xen Um grande benefício do hypervisor do Xen é sua neutralidade com relação aos vários sistemas operacionais, permitindo a coexistência de vários sistemas operacionais como Linux, Solaris, DBS, entre outros. O aspecto crítico para a escolha do hypervisor é garantir que a solução seja segura especialmente quando a solução é implantada no ambiente empresarial. O Xen prove uma serie de ferramentas de segurança, como por exemplo, cada Domínio U é isolado do outro além de não haver nenhuma forma de acesso a memória ou acesso via rede. Somente o Domínio 0 tem o privilégio de se comunicar com o hardware via hypervisor. Com relação ao desempenho, o hypervisor do Xen permite que o sistema operacional hóspede coopere com o hypervisor a fim de melhorar o desempenho para operações de I/O, CPU, e memória de virtualização. O domínio hóspede tem ciência que está sendo executado em uma plataforma virtualizada e está apto a dar assistência ao hypervisor em uma série de tarefas. As diretivas de segurança preveem restrições ao hardware de forma que não haja interações entre hosts. Ter o hypervisor separado do sistema operacional aumenta incrivelmente o desempenho. Qualquer operação feita deverá obedecer a uma série de tarefas que são padronizadas, e a maior partes dessas tarefas não são relatadas ao processo dos domínios hospedes o que impacta em maior desempenho. O hypervisor do Xen está apto a processar a virtualização para 80 hospedes sem maior operação no sistema de modo a estar sintonizado ao processamento dos mesmos, à demanda dos usuários e as requisições do host. O padrão dentro do Xen é customizar o ambiente de forma assegurando que a infraestrutura do Xen seja capaz de atingir a expectativa dos usuários. A plataforma Xen é a mais usada em ambientes de Cloud computing. Líderes como Amazon, Cloud.com, GoGrid, e Rackspace se beneficiam de suas vantagens. A plataforma Xen oferece um pacote completo de serviços para provedores de serviço que queiram operar com uma infraestrutura virtualizada. O Xen também está presente em soluções dos fornecedores Avaya, Cisco, Citrix, Fujitsu, Lenovo, Novell, Oracle, Samsung, VALinux, e outros. A virtualização já deixou de ser uma tendência para ser uma realidade no mundo corporativo já que além da economia de recurso trata-se também de uma tecnologia verde. Com virtualização pode-se executar vários serviços, programas, ou até mesmo sistemas operacionais possibilitando simular hardwares diferentes em um único equipamento, como roteadores, switches, servidores e celulares. 5.2 Análise dos resultados Considerando os resultados dos testes, podem-se perceber algumas vantagens no uso da virtualização utilizando o Xen Cloud Platform. Pode-se gerenciar as máquinas virtuais remotamente, criar várias máquinas virtuais em um servidor, otimizando os recursos da máquina. Além disso, podem ser percebidos benefícios de economia de recursos, segurança, entre outros. Também podemos avaliar, com a ferramenta iperf, a qualidade de serviço da rede bem como suas características de desempenho. Os resultados encontrados em todos os ambientes de teste mostra que se pode ter um ambiente de rede com desempenho semelhante a uma rede sem virtualização. Sua taxa de transferência manteve-se constante e sem perda de pacotes. Ao se avaliar o Jitter com os testes de fluxo UDP, percebeu-se um leve aumento no Jitter, entretanto, como já foi discutido, este aumento não afeta o desempenho da rede nem mesmo em aplicações de fluxo de vídeo. Isto mostra que mesmo com a camada de virtualização presente, a rede é capaz de suportar as demandas de transmissão de imagem e vídeo. 81 Neste trabalho, encontram-se os tutoriais de instalação do XCP e das máquinas virtuais, bem como conteúdos necessários para um bom conhecimento da virtualização e da ferramenta Xen a fim de contribuir para o enriquecimento da literatura e disseminação do conhecimento nesta área. Das contribuições deste trabalho, pode-se perceber que com o Xen Cloud Platform, o cliente poderá implementar a infraestrutura do fornecedor a sua escolha e oferecer serviços de virtualização em código aberto para cliente, nuvens e servidores. Pode-se perceber ao longo deste trabalho que a proposta é criar uma plataforma de inovação, facilitando uma infraestrutura que oferece mais flexibilidade e maior qualidade de serviço e, ao mesmo tempo, redução de custo e eficiência na utilização de recursos. 5.3 Trabalhos Futuros Como proposta para trabalhos futuros tem-se a criação de uma VPN (Virtual Private Network). Com a VPN pode-se enviar pacotes a hosts da rede pública como se estes fizessem parte da nossa rede privada. Seria interessante testar o desempenho da rede utilizando-se VLANs, podendo segmentar a rede em mais domínios de broadcast, e avaliar o impacto das máquinas virtuais neste contexto. Pretende-se comparar o desempenho do XCP com outras ferramentas de virtualização, como VirtualBox, VmWare, e OpenFlow [1,2,3]. Com estas comparações espera-se avaliar o XCP em diferentes contextos e compará-lo com outras ferramentas de virtualização. Além disso, também pretende-se testar o desempenho da rede utilizando o Xen em modo de roteamento ou em modo NAT. 82 Referências [1] Moreira, M. D. D, Fernandes, N. C., Costa, L. H. M. K., Duarte, O. C. M. B., Internet do Futuro, Um Novo Horizonte, 27º. SBRC, Minicurso cap.1, pp1-59, 2009. [2] Fernando N. N. Farias, José M. Dias Júnior, João J. Salvatti, Sérgio Silva, Antônio J. G. Abelém, Marcos R. Salvador and Michael A. Stanton. Pesquisa Experimental para a Internet do Futuro: Uma Proposta Utilizando Virtualização e o Framework Openflow. Capítulo 1. XXIX Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos. [3] Keith W. Ross e James F. Kurose. Redes de Computadores e a Internet: Uma Abordagem Top-down. 3ᵃ ed. São Paulo: Pearson Addison Wesley, 2006. [4] Andrew S. Tanenbaum. Computer Networks. 3ᵃ ed. Prentice Hall PTR: New Jersey, 1996. [5] Farias, F. N. N., Júnior, J. M. D., Salvatti, J. J., Silva, S., Abelém, A. J. G., Salvador,M. R., Stanton, M. A., “Pesquisa Experimentalpara a Internet do Futuro: Uma Proposta Utilizando Virtualização e o Framework Openflow”, 29° SBRC, Minicurso cap.1, pp19-34, 2011. [6] Hugo E. T. Carvalho., Controle de Acordos de Nível de Serviço em Redes Virtuais Baseado em Lógica Nebulosa [trabalho de conclusão de curso]. Rio da Janeiro. Universidade Federal do Rio de Janeiro. COPPE-UFRJ. Departamento de Eletrônica e de Computação; 2011. [7] Paul, S., Pan, J., Jain, R., Architectures for the future networks and the next generation Internet: A survey. Computer Communications. 2011 Jan 15. Sect: 242. [8] Braden, R., Clark, D., Shenker, S., Wroclawski, J., Developing a NextGeneration Internet Architecture. White paper, DARPA; 2000; [9] Igor M. Moraes, Pedro S. Pisa, Hugo E. T. Carvalho, Rafael S. Alves, Lyno Henrique G. Ferraz, Tiago N. Ferreira, Rodrigo S. Couto, Daniel José da Silva Neto, Victor P. da Costa, Renan A. Lage, Luciano V. dos Santos, Natalia C. Fernandes, Miguel Elias M. Campista, Luís Henrique M. K. Costa, Otto Carlos M. B. Duarte., VNEXT: Uma Ferramenta de Controle e Gerenciamento para Redes Virtuais Baseadas em Xen [artigo]. Rio de Janeiro. Universidade Federal do Rio de Janeiro; 2011. 83 [10] Alexandre Carissini. Virtualização: da teoria a soluções. Capítulo 4. Universidade Federal do Rio Grande do Sul. Instituto de Informárica. 26º Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos; 2008. [11] Apostol T. Vassilev. “Security Benefits from OS Virtualization: Real or Virtual ? [paper]; 2007. [12] Jeanna N. Matthews, Eli M, Dow. Todd Deshane, Wenjin Hu, Jeremy B. P. F. Wilbur, Brendan Johnson. Running Xen: A Hands-On Guide to the Art of Virtualization. Prentice Hall: Boston, 2008. [13] Xen.org. Citrix Systems, Inc; [acesso em 1 de Dezembro de 2012]. Disponível em: http://www.xen.org. [14] Xen.org. Citrix Systems, Inc; [acesso em 1 de Dezembro de 2012]. Disponível em: http://www.xen.org/download/xcp/index.html. [15] pdub.net. Patrick F. Wilbur; [acesso em 1 de Dezembro de 2012] Disponível em: http://pdub.net/2011/12/03/howto-install-xcp-in-kvm/. [16] Ubuntu Documentation. Free license; [acesso em 1 de Dezembro de 2012]. Disponível em: https://help.ubuntu.com/community/KVM/Installation. [17] Dedoimedo.com. Dedoimedo.com; [acesso em 10 de Janeiro de 2013] Disponível em: http://www.dedoimedo.com/computers/xen-cloud.html. [18] Rodrigo dos Santos B. G. Barbosa, Djamel F. H. Sadok. Calculando métricas unidirecionais na Internet [Trabalho de conclusão de curso]. Universidade Federal de Pernambuco. Centro de Informática; 2005. [19] UFForense – Forense computacional; [acesso dia 10 de Janeiro de 2013]. Disponível em: http://ufforense.wordpress.com/2011/08/05/introducao-as- redes-de-computadores-modelo-osi. [20] Arquitetura e Protocolos TCP/IP. [acesso dia 15 de Janeiro de 2013]. Disponível em: http://www.diegomacedo.com.br/arquitetura-e-protocolos-tcp-ip/. [21] Popek, Gerald J. e GOLDBERG, Robert P. Formal Requirements for Virtualizable Third Generation Architeture [paper]. Communications of the ACM. Volume 17, Número 7, Jul de 1974. [22] IBM. United States: IBM.inc; [acesso dia 15 de Janeiro de 2013]. Diponível em: www.ibm.com. [23] Wlodarz, J. J. Virtualization: A Double-edged sword [paper]. 2007. 84 [24] Laureano, M. A. P., Detecção de Instrução em Máquinas Virtuais. Pontifícia Universidade Católica do Paraná. 5º Simpósio de Segurança em Informática - SSI. São José dos Campos, 2003. P. 1 – 7. [25] Laureano, M. A. P., Uma abordagem para a Proteção de Detectores de Intrusão Baseada em Máquinas Virtuais[ dissertação de Mestrado]. Curitiba. Pontifícia Universidade Católica do Paraná, 2004. [26]Virtualização: a TI virtual. IBM.inc; [acesso em 15 de Janeiro de 2013]; Disponível em: http://www.ibm.com/midmarket/br/pt/articles_businessunit_4Q03.html [27] Redes e Servidores. [acesso em 15 de Janeiro de 2013]. Disponível em: http://redes-e-servidores.blogspot.com.br/2011/11/virtualizacao-total-explicada.html. [28] Iperf.fr. Iperf Licence. [acesso dia 12 de Janeiro de 2013]. Disponível em: http://iperf.fr/. [29] XenServer/Networking Flags.[acesso em 15 de Janeiro de 2013]. Disponível em: https://wiki.openstack.org/wiki/XenServer/NetworkingFlags. [30] Diogo M. F. Mattos, Lyno Henrique G. Ferraz, Luís Henrique M. K. Costa, and Otto Carlos M. B. Duarte, Virtual Network Performance Evaluation for Future Internet Architectures. Universidade Federal do Rio de Janeiro - GTA/COPPE/UFRJ. [31] Dalbert M. Mascarenhas, Felipe da Rocha Henriques, Glauco F. Amorim e Luis C. dos Santos C. Retondaro. Avaliação da Transferência de Fluxos Multimídia em uma rede em Malha Sem Fio. XXX Simpósio brasileiro de Telecomunicações. SBrT‟12. 85 Apêndice A #!/bin/bash ifconfig eth0 down ifconfig lo down ifconfig virbr0 down ifconfig wlan0 down brctl addif virbr0 eth0 ifconfig wlan0 up ifconfig lo up ifconfig virbr0 up ifconfig eth0 up sudo /etc/init.d/networking restart 86 Apêndice B: Instalação do Xen Cloud Platform. Para instalar o Xen Cloud Platform deve-se realizar os seguintes procedimentos: A - Instalando os Pacotes necessários Os seguintes pacotes precisam ser instalados no Ubuntu: -kvm -virt-manager Abra o terminal do Linux (Ctrl+Alt+T) e execute o comando: sudo apt-get install qemu-kvm libvirt-bin bridge-utils Adicione os seguintes pacotes adicionais: sudo apt-get install virt-manager vinagre Para saber se máquina suporta virtualização, execute os seguintes comandos: egrep -c '(vmx|svm)' /proc/cpuinfo Se aparecer 0, o CPU não suporta virtualização de hardware. Se aparecer 1, ou outro valor, pode-se habilitar a virtualização pelo BIOS. Alternativamente pode-se executar o seguinte comando: kvm-ok, se aparecer: INFO: /dev/kvm exists KVM acceleration can be used Pode-se utilizar o kvm, mas se aparecer: INFO: Your CPU does not support KVM extensions KVM acceleration can NOT be used Pode-se comprometido. até rodar máquinas virtuais, porém o desempenho será B - Fazendo o download do Xen Cloud Platform (XCP). Após executar esses comandos, o próximo passo é baixar a imagem iso do XCP. Utilizou-se neste projeto o XCP 1.6, e pode ser baixado no seguinte endereço: http://xen.org/download/xcp/index_1.6.0.html 87 Após baixar a imagem, a copie para outro diretório sem ser o home. Para resolver isso criou-se o diretório da seguinte forma (com o nome de vmimages): sudo mkdir /vmimages Copie a imagem para este diretório usando o comando cp: sudo “local_conde_está_a_imagem”/”nome _a_imagem_que _se_quer_copiar “cp /vmimages C- Instalando o XCP no Kvm. Agora a máquina virtual será criada, e assim será instalado o XCP dentro desta máquina virtual. No terminal execute o comando: sudo virt-manager 1. No canto superior esquerdo há um ícone de janela de gerenciamento de virtualização, clique em create a new virtual machine. 2. Clique em: usar imagem iso. Busque a imagem no diretório onde salvamos ela e clique em avançar. 88 3. Escolha o quantidade de memória (RAM) da sua máquina virtual e o número de máquinas virtuais. Obedecendo ao critério de que cada máquina virtual deverá ter no mínimo 2MB de memória. 4. Habilite o armazenamento para a máquina virtual. Escolha o tamanho do disco rígido da máquina virtual. E selecione alocar o disco inteiro agora. Clique em avançar. 5. Escolha as configurações de rede, selecione Rede virtual „default‟: NAT, e escolha o tipo de arquitetura se é 86(32bits) ou 64. Clique em Concluir para iniciar a instalação. 89 Completando a instalação do XCP: A instalaçao do XCP está programada para começar logo após a criação da máquina virtual. Assim continue com os seguintes passos: 6. Reinice a máquina virtual para que o XCP comece a instalação, primeiramente, selecione a configuração do teclado, selecione a configuração desejada e clique em OK 90 7. Ele irá perguntar : load a device driver or simply proceed with the installation. Selecione OK e continue com o processo de instalação 8. Aceite os termos do software clicando em Accept Eula. 91 9. Selecione conforme a imagem acima e clique OK 10. Escolha usar o Local Media e clique OK 92 11. Quando ele perguntar: Whould you reach the Supplemental Packs prompt, escolha não, se não sabe do que se trata. 12. Ele vai perguntar se quer que verifique a fonte de instalação, clique em OK 93 14. Ele vai pedir para definir um password e um login. 15. Habilite o DHCP 94 16. Ele vai pedir para você selecionar a área em que você está. 17.Continue com a instalação. Se decidir usar o NTP para a automática configuração de tempo, três servidores são conhecidos, pode-se usar o 95 0.pool.ntp.org, 1.pool.ntp.org e2.pool.ntp.org. 18. Clique em Install XCP. 96 19. Se tudo der certo, pode-se ver a mensagem de instalation complete. Clique em OK. Depois disso, reinicie a máquina virtual. 20. Se tudo der certo você verá a tela abaixo, que indica que o XCP está 97 inicializando dentro da sua máquina virtual. 21. Para finalizar, a tela principal do XCP aparecerá como na imagem a seguir. 98 Apêndice C: Instalação da máquina Virtual no Citrix XenCenter. 1. Criando o local onde será armazenada a imagem iso Primeiro, verifique a existência da pasta “/var/opt/xen/iso_import”. Se esta pasta não existir, crie ela usando mkdir –p /var/opt/xen/iso_import. 2. Criando o repositório ISO. Execute o seguinte comando: xe sr-create name-label=MyISORepository type=iso device- config:legacy_mode=true device-config:location=/var/opt/xen/iso content-type=iso 3. Baixando a Imagem Entre neste link, e baixe a imagem do ubuntu( utilize a versão alternative): https://launchpad.net/ubuntu/+cdmirrors escolha um dos servidores. http://mirror.globo.com/ubuntu/releases/12.04/ e escolha a imagem iso. Copie o link dela e cole no repositório que foi criado, junto com o comando wget wget http://mirror.globo.com/ubuntu/releases/12.04/ubuntu-12.04.2-alternative- amd64.iso 4. Com a imagem no repositório, criar a máquina virtual Clique em Create a new virtual machine Processo de Instalação do Ubuntu. A. Selecione English. 99 B. Selecione South America. 100 B. Coloque o hostname, o nome do usuário e também a senha. 101 102 C. Escolha particionar o disco inteiro. 103 104 D. Selecione o Software que se quer instalar. 105 Após isso o Ubuntu encontra-se instalado no XCP.