Uma Aplicação de Redes Definidas Por Software Para a Gerência de Redes de Datacenters...

download Uma Aplicação de Redes Definidas Por Software Para a Gerência de Redes de Datacenters Virtualizados - 1458m

of 112

description

Virtualização de rede de dados

Transcript of Uma Aplicação de Redes Definidas Por Software Para a Gerência de Redes de Datacenters...

  • UMA APLICAO DE REDES DEFINIDAS POR

    SOFTWARE PARA A GERNCIA DE REDES DE

    DATACENTERS VIRTUALIZADOS

  • ROGRIO VINHAL NUNES

    UMA APLICAO DE REDES DEFINIDAS POR

    SOFTWARE PARA A GERNCIA DE REDES DE

    DATACENTERS VIRTUALIZADOS

    Dissertao apresentada ao Programa de

    Ps-Graduao em Cincia da Computao

    do Instituto de Cincias Exatas da Univer-

    sidade Federal de Minas Gerais como re-

    quisito parcial para a obteno do grau de

    Mestre em Cincia da Computao.

    Orientador: Dorgival Olavo Guedes Neto

    Belo Horizonte

    Julho de 2012

  • c 2012, Rogrio Vinhal Nunes.Todos os direitos reservados.

    Nunes, Rogrio Vinhal

    N972a Uma aplicao de Redes Denidas por Software para

    a gerncia de redes de datacenters virtualizados /

    Rogrio Vinhal Nunes. Belo Horizonte, 2012

    xvi, 96 f. : il. ; 29cm

    Dissertao (mestrado) Universidade Federal de

    Minas Gerais

    Orientador: Dorgival Olavo Guedes Neto

    1. Computao Teses. 2. Redes de Computadores

    Teses. 3. Computao em Nuvem Teses.

    I. Orientador. II. Ttulo.

    CDU 519.6*22(043)

  • Dedico este trabalho aos meus pais, que no s deram apoio incondicional em

    todos os dias da minha vida como investiram sempre na minha educao, o que tornou

    tudo isso possvel.

    v

  • Agradecimentos

    Agradeo primeiramente minha famlia, que no s concedeu todo o apoio como criou

    as condies para que tudo isso acontecesse.

    Aos amigos e demais partcipantes da minha vida que no s ajudaram com com-

    panheirismo nos curtos tempos livres durante os ltimos anos como tambm criaram

    uma estrutura slida para que fosse possvel suportar as adversidades encontradas du-

    rante todo o processo (que no foram poucas).

    Em seguida, mas no menos importante, ao Dorgival, no s pela orientao

    acadmica convencional como tambm no apoio emocional, que foi imprescindvel para

    manter o foco e gerar um trabalho de qualidade.

    Tambm agradeo a todos os colegas de laboratrio e do curso, que sempre aju-

    dam com experincias tanto iguais como diferentes, lembrando que todos caminhamos

    por percursos parecidos, mas de maneira diferente. Sem qualquer um de vocs esse

    trabalho no se tornaria tudo o que ele se tornou e no teria a mesma importncia.

    vi

  • Computer Science is no more about computers

    than astronomy is about telescopes.

    (Edsger W. Dijkstra)

    vii

  • Resumo

    Servios de computao em nuvem relacionados infraestrutura vm se tornando cada

    vez mais importantes. Nessa linha de negcio, a virtualizao garante uma forma de

    oferecer exibilidade, isolamento e funcionalidades extras. Isso abriu espao para o

    modelo de computao em nuvem para datacenters multi-inquilinos, onde o cliente

    (inquilino) no s poderia alugar uma mquina virtual como uma rede local inteira de

    mquinas virtuais dentro da infraestrutura do provedor.

    Apesar das solues de virtualizao oferecerem boas solues para o isolamento

    de recursos como CPU e memria, esse modelo de negcio requer solues para o isola-

    mento do trfego de rede de cada cliente que so oferecidas de formas limitadas, caras

    e pouco escalveis na atualidade, como o uso de VLANs. Paralelamente, a comunidade

    acadmica recentemente tem focado bastante no conceito de Redes Denidas por Soft-

    ware (SDNs) por conta do padro OpenFlow. Essa nova abordagem permite organizar

    a rede de uma forma bem mais exvel, com uma viso global centralizada da rede.

    Este projeto apresenta o DCPortals, que permite implementar uma viso de rede

    virtual para cada cliente de um servio de computao em nuvem multi-inquilino sem

    a utilizao de hardware especializado. Ele usa o sistema operacional para redes POX

    em conjunto com um gerenciador de computao em nuvem OpenStack que controla

    mquinas com monitores de mquinas virtuais Xen. Essas mquinas so conectadas

    por switches virtuais Open vSwitch que utilizam o protocolo OpenFlow. Dessa forma,

    cada cliente poder no s alugar suas mquinas virtuais como tambm interlig-las

    em uma rede virtual privativa isolada das demais independente de como as mquinas

    hospedeiras esto organizadas na infraestrutura fsica subjacente.

    Os testes realizados comprovaram o isolamento inclusive em casos de ataques

    e mostram que o overhead se limita ao primeiro pacote dos uxos de pacotes entre

    mquinas virtuais.

    Palavras-chave: Datacenter, Computao em Nuvem, Virtualizao, Redes Denidas

    por Software.

    viii

  • Abstract

    Cloud-Computing services related to infrastructure have been drawing much attention

    recently. On this business model, virtualization is an ecient way to oer exibility,

    isolation and several new functionalities. This technology has led to the multi-tenant

    datacenter model for Cloud-Computing, where the client (tenant) can rent not only a

    virtual machine, but a network of virtual machines in the provider infrastructure.

    Despite of the recent virtualization products already oering isolation solutions

    for resources such as CPU and memory, this new business model require network

    isolation solutions for each tenant that, as of today, are oered in limited, expensive

    and unscalable ways like the use of VLANs. Parallely, the academic community have

    recently focused on the development of Software-Dened Networks (SDNs) due to the

    denition of the OpenFlow standard. This new approach allows the network to be

    organized in a more exible way, with a global centralized vision of the network.

    This project presents DCPortals, which implements a virtual network view for

    each client of a multi-tenant Cloud-Computing service without the need to use speciali-

    zed hardware. It is implemented using the POX Network Operating System along with

    the OpenStack Cloud-Computing manager controlling machines with the Xen Virtual

    Machine Monitor. These machines are connected by Open vSwitch virtual switches

    that are capable of using the OpenFlow protocol. Therefore, each client can not only

    rent virtual machines, but also connect them in a private virtual network isolated from

    every other machine independently of how the machines are organized in the underlying

    physical infrastructure.

    The experiments conrmed the network isolation even in attack cases and showed

    that the observed overhead is limited to the rst packet of a ow between virtual

    machines.

    Keywords: Datacenter, Cloud-Computing, Virtualization, Software-Dened

    Networks.

    ix

  • Lista de Figuras

    2.1 Rede no Xen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    2.2 Diagrama de funcionamento da comunicao do OpenFlow . . . . . . . . . 16

    2.3 Campos disponveis para a identicao de uxos na primeira verso do

    OpenFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    2.4 Diferenas entre modelo comum e modelo com SDN . . . . . . . . . . . . . 20

    2.5 Separao entre planos de controle e dados em uma SDN . . . . . . . . . . 21

    2.6 Comparao de desempenho entre POX e NOX, com suas duas interfaces

    (C++ e Python). Figura publicada por Murphy McCauley no site http:

    //www.noxrepo.org/2012/03/introducing-pox/. . . . . . . . . . . . . . 22

    3.1 Arquitetura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    3.2 Processo de re-escrita do MAC . . . . . . . . . . . . . . . . . . . . . . . . 34

    3.3 Diferena entre envio de pacotes para o endereo de broadcast com e sem o

    DCPortals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    4.1 Distribuio das mquinas virtuais nas mquinas fsicas. As cores separam

    as redes virtuais das mquinas virtuais. . . . . . . . . . . . . . . . . . . . . 45

    4.2 Pacotes de ICMP Request e Reply entre vm2 e vm4 capturados dentro da

    mquina virtual vm2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    4.3 Pacotes de ICMP Request e Reply entre vm2 e vm4 capturados fora da

    mquina virtual vm2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    4.4 Esquema do experimento de latncia entre duas mquinas virtuais hospe-

    dadas na mesma mquina fsica. A mquina vm2 realiza um ping para a

    mquina vm3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    4.5 Esquema do experimento de latncia entre duas mquinas virtuais hospe-

    dadas em diferentes mquinas fsicas. A mquina vm2 realiza um ping para

    a mquina vm4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    x

  • 4.6 Esquema do experimento de ataque de negao de servio. A mquina vm5

    realiza um ood UDP para o endereo de broadcast da rede enquanto que

    as mquinas vm2 e vm3 realizam um uxo TCP. . . . . . . . . . . . . . . 53

    4.7 Arquitetura do sistema no modelo proativo . . . . . . . . . . . . . . . . . . 59

    xi

  • Lista de Tabelas

    4.1 Distribuio das mquinas virtuais e respectivas redes nas mquinas fsicas 44

    4.2 Endereo ethernet de cada uma das mquinas virtuais ou fsicas . . . . . . 48

    4.3 Latncias mdias registradas com intervalo de conana de 99% entre m-

    quinas virtuais hospedadas na mesma mquina fsica. Os ambientes so: A:

    com switches ethernet comuns, B: POX com switch L2 comum e C: DCPortals. 50

    4.4 Latncias mdias registradas com intervalo de conana de 99% entre m-

    quinas virtuais hospedadas em mquinas fsicas diferentes. Os ambientes

    so: A: com switches ethernet comuns, B: POX com switch L2 comum e C:

    DCPortals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    4.5 Diferenas entre latncias mdias registradas com intervalo de conana

    de 99% entre mquinas virtuais hospedadas na mesma mquina fsica. Os

    ambientes so: A: com switches ethernet comuns, B: POX com switch L2

    comum e C: DCPortals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4.6 Diferenas entre latncias mdias registradas com intervalo de conana de

    99% entre mquinas virtuais hospedadas em mquinas fsicas diferentes. Os

    ambientes so: A: Sem SDN, B: POX com switch L2 comum e C: DCPortals. 51

    4.7 Largura de banda dos uxos TCP registrados nos diferentes ambientes uti-

    lizando um intervalo de conana de 99%. Os ambientes so: A: ambiente

    sem isolamento e sem ataque, B: DCPortals sem ataque, C: ambiente sem

    isolamento e D: DCPortals. . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    4.8 Diferena das larguras de banda dos uxos TCP registrados nos diferentes

    ambientes utilizando um intervalo de conana de 99%. Os ambientes so:

    A: ambiente sem isolamento e sem ataque, B: DCPortals sem ataque, C:

    ambiente sem isolamento e D: DCPortals . . . . . . . . . . . . . . . . . . . 54

    4.9 Atrasos do ARP nos ambientes utilizando um intervalo de conana de 99%.

    Os ambientes so: A: ambiente sem SDN, B: switch L2 comum do POX e

    C: DCPortals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    xii

  • 4.10 Diferenas nos atrasos do ARP nos ambientes utilizando um intervalo de

    conana de 99%. Os ambientes so: A: ambiente sem SDN, B: switch L2

    comum do POX e C: DCPortals. . . . . . . . . . . . . . . . . . . . . . . . 56

    4.11 Atrasos da criao de entradas nas tabelas de uxos nos ambientes utili-

    zando um intervalo de conana de 99%. Os ambientes so: A: ambiente

    sem SDN, B: switch L2 comum do POX e C: DCPortals. . . . . . . . . . . 57

    4.12 Diferenas nos atrasos da criao de entradas nas tabelas de uxos nos

    ambientes utilizando um intervalo de conana de 99%. Os ambientes so:

    A: ambiente sem SDN, B: switch L2 comum do POX e C: DCPortals. . . . 57

    xiii

  • Sumrio

    Agradecimentos vi

    Resumo viii

    Abstract ix

    Lista de Figuras x

    Lista de Tabelas xii

    1 Introduo 1

    1.1 Computao em nuvem . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.2 Virtualizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.3 Redes denidas por software . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.4 Contribuio do trabalho e organizao do texto . . . . . . . . . . . . . 7

    2 Conceitos Relacionados 9

    2.1 Ambientes de computao em nuvem atuais . . . . . . . . . . . . . . . 9

    2.1.1 Xen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.1.2 Open vSwitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.1.3 OpenStack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.1.4 Integrao entre Open vSwitch e Xen . . . . . . . . . . . . . . . 13

    2.1.5 Integrao entre OpenStack e Xen . . . . . . . . . . . . . . . . . 14

    2.2 OpenFlow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2.2.1 A API OpenFlow . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    2.2.2 Controladores OpenFlow . . . . . . . . . . . . . . . . . . . . . . 17

    2.2.3 Controladores disponveis . . . . . . . . . . . . . . . . . . . . . 18

    2.2.4 Redes Denidas por Software . . . . . . . . . . . . . . . . . . . 19

    2.2.5 POX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    xiv

  • 2.3 Trabalhos relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3 Desenvolvimento 27

    3.1 Arquitetura do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    3.2 Integrao com o POX . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    3.3 Integrao com o OpenStack . . . . . . . . . . . . . . . . . . . . . . . . 31

    3.4 Abstrao de rede virtual . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    3.4.1 Como identicar mquinas de uma mesma rede . . . . . . . . . 32

    3.4.2 Como isolar as redes virtuais da rede fsica . . . . . . . . . . . . 33

    3.4.3 Como tratar broadcasts somente para as mquinas de uma rede 35

    3.4.4 Como interceptar pesquisas ARP . . . . . . . . . . . . . . . . . 36

    3.4.5 Como conectar cada rede virtual ao mundo externo . . . . . . . 37

    3.5 Pseudocdigo do DCPortals . . . . . . . . . . . . . . . . . . . . . . . . 37

    3.6 Exemplo do funcionamento integrado . . . . . . . . . . . . . . . . . . . 40

    3.7 Contribuies para outros projetos . . . . . . . . . . . . . . . . . . . . 42

    4 Avaliao 43

    4.1 Ambiente de testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    4.2 Comprovao de isolamento . . . . . . . . . . . . . . . . . . . . . . . . 45

    4.3 Vericao de latncia . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    4.4 Ataque de negao de servio . . . . . . . . . . . . . . . . . . . . . . . 52

    4.5 Custos do ambiente de Redes Denidas por Software . . . . . . . . . . 55

    4.5.1 Modelo proativo . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    5 Concluses e trabalhos futuros 61

    Referncias Bibliogrcas 63

    Apndice A Exemplo de switch ethernet comum no POX 69

    Apndice B Roteiro de instalao 72

    B.1 Monitor de mquinas virtuais Xen . . . . . . . . . . . . . . . . . . . . . 72

    B.1.1 Instalao no Ubuntu 10.04 server . . . . . . . . . . . . . . . . . 72

    B.1.2 Instalao no Ubuntu 11.10 server . . . . . . . . . . . . . . . . . 75

    B.1.3 Congurao da rede no Xen 4.1.1 . . . . . . . . . . . . . . . . 75

    B.2 OpenvSwitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    B.3 OpenStack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    B.3.1 Sincronizao NTP . . . . . . . . . . . . . . . . . . . . . . . . . 79

    B.3.2 Instalao nos Ns-Compute . . . . . . . . . . . . . . . . . . . . 82

    xv

  • B.3.3 Instalao no Controlador . . . . . . . . . . . . . . . . . . . . . 86

    B.3.4 Erros comuns de congurao . . . . . . . . . . . . . . . . . . . 92

    B.4 POX e DCPortals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    B.5 Resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    xvi

  • Captulo 1

    Introduo

    No contexto de Computao em Nuvem, o modelo de Infraestrutura como Servio

    (Infrastructure-as-a-Service, ou IaaS ) um modelo de negcio que tem despertado

    grande interesse. Nesse modelo, empresas podem alugar mquinas em um datacenter

    de grandes dimenses construdo para esse m e evitar os problemas de aquisio e

    instalao de hardware prprio. Questes de gerncia, energia, refrigerao, conectivi-

    dade, exibilidade de congurao e elasticidade (alterao do nmero de mquinas em

    funo de variaes da demanda) so facilmente resolvidas pelo provedor de IaaS, sim-

    plicando a operao do servio da empresa cliente. Por isso ser uma necessidade em

    crescimento no mercado, esse tipo de negcio tem se popularizado com uma velocidade

    muito grande.

    Essa alta demanda obrigou as empresas que oferecem o servio de IaaS a au-

    mentar a facilidade e a exibilidade no gerenciamento de recursos desse ambiente para

    tornar possvel atender ao mercado. Isso abriu as portas para o uso da virtualizao

    em datacenters que oferecem servios de computao em nuvem. A virtualizao de

    mquinas proporciona no s um aumento na facilidade de gerncia do aluguel das mes-

    mas como tambm elasticidade para que o usurio possa requisitar e pagar por uma

    mquina virtual exatamente do tamanho de suas necessidades. Alm disso, tambm

    aumenta a ecincia do uso de recursos do datacenter por explorar melhor os recursos

    ociosos dos servidores fsicos. Hoje existem j diversos servios de aluguel de mquinas

    virtuais de diversos tipos em diversos ambientes independente de qual mquina real

    hospeda a mquina virtual, como por exemplo o UOL Cloud (UOL, 2012) e o Amazon

    EC2 (Amazon, 2010a).

    No ambiente de computao em nuvem com virtualizao as empresas locadoras

    possuem um datacenter de mquinas hospedeiras que, por sua vez, podem cada uma

    conter dezenas de mquinas virtuais de diferentes clientes. O gerenciamento da locali-

    1

  • 1. Introduo 2

    zao, disseminao e organizao dessas mquinas isoladamente por si s representa

    um problema complexo do ponto de vista computacional (Nurmi et al., 2008; Wood

    et al., 2007). Alm disso, h o desao de garantir o isolamento entre as mquinas de

    um cliente para que ele no tenha os dados de suas mquinas virtuais manipulados por

    outros clientes que compartilham a mesma infraestrutura fsica.

    Essa demanda por isolamento surge por conta do aumento de clientes que no

    s necessitam alugar uma mquina para seus servios, mas diversas mquinas que

    precisam se comunicar entre si. Entretanto, essa comunicao tem que ser feita sobre

    a rede compartilhada do datacenter e o isolamento no garantido. H casos em

    que sistemas armazenados na nuvem tiveram seus dados ou servios comprometidos

    devido ao maliciosa de terceiros que tm acesso mesma infraestrutura fsica,

    como por exemplo o relato BitBucket Attack (2012). Entretanto, alugar diretamente

    uma rede local separada para cada cliente se torna caro e invivel devido estrutura do

    datacenter, o custo de separao fsica e o nmero de clientes que tm essa demanda.

    Esse problema teoricamente resolvido atravs do uso de VLANs

    1

    . O administrador de

    rede poderia congurar os switches da infraestrutura para determinar quais mquinas

    que ligadas a eles pertencem a qual sub-rede. Entretanto, essa soluo tem problemas

    de gerncia e escalabilidade que puderam ser constatados em contato com empresas

    que oferecem esse tipo de servio

    2

    . No s necessrio uma congurao dispendiosa

    dos switches, que precisam suportar o identicador destinado a VLANs, como tambm

    existe uma limitao prtica no tamanho da parte do cabealho, como denido pelo

    padro IEEE802.1Q (2005), que determina um campo de 12 bits para o identicador da

    VLAN, proporcionando no mximo 4.094 VLANs, retirado-se os endereos reservados,

    em um datacenter. Alm disso, pelo menos uma empresa brasileira da rea de IaaS

    reportou que os switches de sua rede s reconhecem cerca de mil VLANs, por limitaes

    do hardware. Esses problemas so de grande importncia, uma vez que impedem que o

    sistema seja completamente automatizado e transparente, assim como tambm limita

    o nmero de sub-redes para um nmero pequeno para atender a demanda das empresas

    que oferecem esse tipo de servio.

    Pensando em resolver esse tipo de problema com uma abordagem mais elegante

    e econmica, este projeto apresenta o DCPortals, uma ferramenta de gerenciamento e

    isolamento de redes em datacenters virtualizados. O sistema utiliza o princpio de Redes

    Denidas por Software (Software-Dened Networks, ou SDNs), uma nova tecnologia

    1VLANs so separaes lgicas de rede controladas pelos switches para permitir isolamento entresub-redes ao se configurar os switches da infraestrutura fsica. Com isso, apesar de dividirem a mesmainfraestrutura fsica, as mquinas so logicamente separadas pelos switches em redes diferentes.2Comunicao pessoal.

  • 1. Introduo 3

    que vem ganhando ateno na rea de Redes de Computadores. No paradigma de SDN,

    os elementos de comutao de rede oferecem uma interface de programao que permite

    ao administrador criar uma viso abstrata de todos os uxos na rede e determinar regras

    para o tratamento e encaminhamento de cada uxo como uma aplicao (software) que

    controla toda a rede.

    Nas prximas sees sero descritos mais detalhes sobre computao em nuvem,

    virtualizao e SDNs e a contribuio do trabalho.

    1.1 Computao em nuvem

    O termo computao em nuvem utilizado com bastante frequncia nos dias de hoje,

    porm, costumeiramente se referindo a coisas diferentes. O termo cloud, ou nuvem,

    se referindo a conceitos da rea de informtica comeou a ser usado na dcada de 60

    atravs de um artigo pioneiro (Parkhill, 1966) que previa que a computao seria usada

    como um servio.

    Desde ento o termo foi utilizado para diversos contextos, principalmente na

    dcada de 90. Entretanto, foi depois que o CEO do Google, Eric Schmit, comeou

    a utiliz-lo para um modelo de negcio de prover servios atravs da Internet que o

    termo se popularizou. Em seguida, o termo foi utilizado inmeras vezes para diversos

    signicados principalmente com o objetivo de marketing.

    Justamente por essa diversidade, trabalhos comearam a buscar um padro para

    o termo. Vaquero et al. (2009) discorrem sobre 20 diferentes signicados retirados de

    diversas fontes a m de selecionar um padro. Nos EUA, o NIST (National Institute of

    Standards and Technology) deniu Cloud Computing como um modelo para possibili-

    tar acesso remoto conveniente sob demanda a um conjunto compartilhado de recursos

    computacionais (redes, servidores, armazenamento, servios) que podem ser rapida-

    mente alocados e liberados com mnimo esforo ou interao com o provedor (Mell &

    Grance, 2011).

    Zhang et al. (2010) apresenta trs camadas de servio nas quais possvel realizar

    este servio sob demanda: a camada de aplicao, onde os servios so providos para o

    usurio nal atravs de programas que ele executa pela Internet, sem se preocupar com

    sua real localizao, como aplicativos Web do Google, FaceBook, Youtube; a camada

    de plataforma, que possibilita ao usurio expressar computao a ser realizada remo-

    tamente atravs de um framework que limita o servio prestado a uma interface de

    programao bem denida, como servios do Microsoft Azure (Microsoft, 2012), Goo-

    gle AppEngine (Google, 2010) e Amazon SimpleDB (Amazon, 2010b); e a camada de

  • 1. Introduo 4

    infraestrutura, que disponibiliza servidores completos, virtualizados ou reais, para que

    o usurio contratante os congure como desejar como, por exemplo, o servio Amazon

    EC2 (Amazon, 2010a).

    Neste trabalho abordamos o problema de congurao dos recursos fsicos dis-

    ponveis, portanto essa soluo mapeia mais claramente no contexto da camada de

    infraestrutura. Entretanto, os recursos providos podem tambm ser teis no contexto

    da camada de plataforma.

    1.2 Virtualizao

    No contexto de computao em nuvem, virtualizao identica o conjunto de tcnicas

    de hardware e software que permite utilizar uma nica mquina fsica para oferecer

    aos usurios a viso de que existem diversas mquinas (virtuais) disponveis, poten-

    cialmente com recursos diferentes. Dessa forma, CPU, memria e discos da mquina

    fsica podem ser divididos entre diversas mquinas virtuais, que executam de forma

    independente, isoladas umas das outras. Para gerenciar essa alocao de recursos

    criado um monitor de mquinas virtuais (Virtual Machine Monitor, ou VMM) que in-

    termedeia a comunicao entre o sistema operacional e os recursos hardware podendo

    assim distribuir os recursos fsicos entre diversas mquinas virtuais controladas por esse

    monitor (Barham et al., 2003).

    A utilizao da virtualizao de servios da camada de infraestrutura, em especial,

    vem crescendo bastante nos ltimos anos por apresentar diversas vantagens:

    Melhor utilizao de recursos. raro um sistema de computao utilizarcompletamente todos os seus recursos de hardware. Normalmente h uma osci-

    lao (Veloso et al., 2002; Shi et al., 2002; Wang et al., 2003; Chesire et al., 2001;

    Arlitt & Jin, 1999), portanto a utilizao simultnea de mais de uma mquina

    virtual em uma mquina real pode ajudar a diminuir o desperdcio de recursos,

    principalmente atravs do aluguel dos demais como forma de aumentar a receita.

    Isolamento. Os recursos de uma mquina virtual so isolados das demais, ga-rantindo assim a possibilidade de diversos usurios utilizarem uma gama de re-

    cursos sem a interferncia ou visibilidade de algum outro usurio malicioso que

    tem acesso ao servidor real atravs de outra mquina virtual, mesmo ambas as

    mquinas estando localizadas na mesma mquina fsica

    Facilidade de gerenciamento. Mquinas virtuais podem ser criadas, destru-das, ter seu estado copiado, ter sua capacidade estendida ou reduzida, alm de

  • 1. Introduo 5

    poderem ser migradas de hospedeiro (Clark et al., 2005). Essas operaes elimi-

    nam qualquer necessidade de interferncia fsica para reorganizao das mquinas

    em qualquer demanda de modicao estrutural, tudo pode ser feito diretamente

    da interface de gerenciamento do monitor de mquinas virtuais.

    O monitor de mquinas virtuais tem o papel de distribuir os recursos fsicos da

    mquina real entre as mquinas virtuais. Isso pode ser feito de diversas formas; o

    monitor Xen, por exemplo, cria a abstrao de um anel assncrono de operaes de

    entrada e sada utilizando um algoritmo de produtor/consumidor. So produzidos

    pedidos de acesso ao dispositivo pelo sistema operacional da mquina virtual que so

    consumidos pelo monitor do Xen. Para cada pedido de acesso o Xen produz uma

    resposta, que por sua vez consumida pelo sistema operacional da mquina virtual.

    Esse mecanismo permite que diversas mquinas virtuais faam requisies aos recursos

    compartilhados simultaneamente enquanto que somente o monitor acessa o dispositivo

    fsico de fato. Com isso, garantido que apesar das requisies serem assncronas e

    concorrentes, o acesso ao dispositivo sequencial e ordenado pelo monitor.

    Em relao conexo de rede dessas mquinas, o compartilhamento ocorre com a

    criao de um novo nvel de rede interno mquina. criado um switch virtual dentro

    da mquina hospedeira, ligado tanto na interface de rede de sada da mquina quanto

    em interfaces de rede virtuais criadas para cada mquina virtual. Dessa forma, como

    se existisse uma nova camada de rede dentro da mquina fsica que conecta todas as

    mquinas virtuais com a rede externa mquina fsica. Dependendo da congurao

    do monitor de mquinas virtuais, essa conexo pode emular um switch ethernet sim-

    ples, incluir regras de traduo de endereo de rede (Network Address Translation, ou

    NAT

    3

    ), ou implementar um roteador, criando uma sub-rede independente dentro do

    monitor de mquinas virtuais.

    Recursos que no possuem o problema de acesso concorrente, como espao em

    disco e memria, so mais fceis de gerenciar. simplesmente feito um particionamento

    desses recursos para cada mquina virtual que utiliza sua partio de forma isolada

    das demais. O isolamento do uso de CPU obtido por meio de um escalonador de

    mquinas virtuais. O isolamento de operaes de entrada e sada (disco e rede) tambm

    usa escalonadores para esses recursos, mas normalmente menos preciso que os demais,

    por depender de elementos externos.

    3Network Address Translation, ou traduo do endereo de rede, consiste no processo de tradu-zir diversos endereos de rede atravs de um roteador para que um nico endereo IP externo sejacompartilhado por diversas mquinas com endereos IP locais.

  • 1. Introduo 6

    1.3 Redes denidas por software

    O conceito de Redes Denidas por Software nasceu com a criao do protocolo Open-

    Flow (McKeown et al., 2008) para a programao de switches. Esse protocolo dene

    formas para que switches que o suportem sejam programados por um software contro-

    lador externo, recebendo comandos para cada tipo de uxo de pacotes observados e

    armazenando essas regras em suas tabelas internas.

    De uma forma geral, todos switches, utilizam uma tabela interna para encami-

    nhar os pacotes. O switch OpenFlow fornece uma interface de comunicao para a

    programao externa dessa tabela por um controlador que se comunique com ele uti-

    lizando um protocolo especialmente criado para isso. Dessa forma, o switch fornece

    informaes, faz consultas e recebe comandos do controlador para manipular sua tabela

    de encaminhamento. O controlador, por sua vez, utiliza as informaes recebidas de

    todos os switches para criar uma viso global da rede. Essa viso pode ser usada para

    denir um tratamento a ser instalado na tabela do switch para que todos os pacotes

    do mesmo uxo que casem com essa entrada recebam o mesmo tratamento, sem a ne-

    cessidade de outra consulta. Esse protocolo pode tanto ser implementado em switches

    fsicos quanto em switches virtuais utilizados por um monitor de mquinas virtuais.

    De forma abstrata, possvel dizer que uma rede denida por software (SDN )

    caracterizada pela existncia de um sistema de controle (software) que pode controlar

    o mecanismo de encaminhamento dos elementos de comutao da rede (switches) por

    uma interface de programao bem denida. De forma mais especca, os elementos

    de comutao exportam uma interface de programao que permite ao software inspe-

    cionar, denir e alterar entradas da tabela de roteamento do comutador, como ocorre,

    por exemplo, com comutadores OpenFlow. O software envolvido, apesar de potenci-

    almente poder ser uma aplicao monoltica especialmente desenvolvida, na prtica

    tende a ser organizado com base em um controlador de aplicao geral, em torno do

    qual se constroem aplicaes especcas para o m de cada rede. possvel, ainda,

    utilizar-se um divisor de vises para permitir que as aplicaes sejam divididas entre

    diferentes controladores.

    O conceito de SDNs recente, mas isso no impede que tenha conseguido a

    ateno da academia e do mercado. Diversos trabalhos (Seetharaman, 2012; Vaughan-

    Nichols, 2011) j consideram a utilizao de SDNs como uma forma bastante interes-

    sante e inovadora para tratar as redes e podem revolucionar a forma como datacenters

    funcionam hoje em dia. H, sem dvida, bastante espao para crescimento nessa rea

    de pesquisa. A inuncia dessa tendncia ilustrada pela conveno Open Networking

    Summit (ONSummit, 2012), que foi realizada em abril de 2012 em Santa Clara, Cali-

  • 1. Introduo 7

    frnia, cujo tpico principal foi discutir a inuncia de SDNs no estado atual das redes

    de computadores e apresentar ideias para o futuro.

    A viso da rede como permitida pelas SDNs foi o primeiro passo para a cri-

    ao do conceito que est sendo usado recentemente de Sistemas Operacionais para

    Redes. A criao de uma interface de programao que oferece uma forma de se con-

    trolar o encaminhamento dos pacotes em cada switch permitiu a criao da ideia de

    Network Hypervisor (Casado et al., 2010) assim como diversas aplicaes, como a cri-

    ao de um switch virtual distribudo, aliviamento na utilizao de roteadores e redes

    multi-inquilinos (ou multi-tenant network, uma rede de computao em nuvem com

    diversos clientes). Esse Network Hypervisor responsvel pela programao dos swit-

    ches atravs do protocolo OpenFlow e das informaes globais da rede, criando assim

    uma separao entre as redes fsicas e lgicas e denindo o conceito de SDNs ou redes

    denidas por software.

    1.4 Contribuio do trabalho e organizao do

    texto

    Este trabalho aborda o problema de isolamento de redes de clientes em um datacenter

    de computao em nuvem virtualizado com uma infraestrutura fsica compartilhada

    entre os clientes atravs de uma abstrao de redes lgicas privativas. Para isso, ele

    prope o sistema DCPortals, que utiliza diversas ferramentas de cdigo aberto e as

    integra com o conceito de Redes Denidas por Software, criando uma soluo de ge-

    renciamento de datacenters virtualizados com a funcionalidade de isolamento de redes

    para sistemas multi-inquilinos de computao em nuvem.

    Alm da contribuio de um sistema inovador para resolver um problema comum

    em provedoras desse servio na atualidade, o projeto contribui com as ferramentas

    utilizadas encontrando decincias e apresentando solues decorrentes da integrao

    realizada. Foram listados diversos bugs e sugeridas correes que foram na maior parte

    aceitas pelos desenvolvedores e sero implementadas em verses futuras.

    Durante a denio do trabalho foi mantido contato com a empresa UOL, de-

    tentora do produto UOL Cloud (UOL, 2012). Esse contato ajudou a determinar a

    relevncia do trabalho assim como algumas alteraes para que ele tornasse mais rele-

    vante na viso atual do mercado atravs dos problemas que uma soluo mercadolgica

    j existente possui. A concluso desse contato foi que o trabalho no s relevante

    como est nos planos para o futuro da UOL uma continuao e adaptao para seu

    produto corrente.

  • 1. Introduo 8

    O restante do texto est organizado da seguinte forma:

    Captulo 2 - Conceitos relacionados: este trabalho se baseia nos conceitosde Redes Denidas por Software em ambientes virtualizados. Para descrever a

    soluo nesse contexto, o captulo 2 descreve em mais detalhes a estrutura atual

    dos datacenters virtualizados existentes e o protocolo OpenFlow e ento constri

    uma denio mais completa do que se entende por Redes Denidas por Software

    e seu elemento principal, o controlador ou Network Hypervisor. Naquele captulo

    so discutidos tambm os principais trabalhos relacionados.

    Captulo 3 - Desenvolvimento: uma vez denidos os conceitos, possvel des-crever o papel de cada ferramenta tal como a deciso por trs da escolha da mesma

    para o uso no projeto. O captulo 3 descreve as ferramentas utilizadas, como elas

    se encaixam, os problemas que foram resolvidos durante a implementao, de-

    cises de implementao e arquitetura do sistema. Ao seu nal apresentado

    um pseudocdigo com o funcionamento simplicado do mdulo implementado e

    um exemplo do que acontece passo a passo na comunicao entre duas mquinas

    virtuais de uma mesma rede lgica privativa.

    Captulo 4 - Avaliao: com o sistema implementado e devidamente funcional, necessrio realizar experimentos para comprovar o funcionamento e quanticar

    a inuncia das decises tomadas. O captulo 4 primeiramente descreve um teste

    de funcionalidade exemplicando o comportamento com e sem o DCPortals em

    um ambiente de testes previamente denido. Em seguida, o captulo mostra o

    impacto do DCPortals sobre a banda e a latncia observados ao longo do tempo.

    Tambm apresentada uma situao em que um sistema sem isolamento compro-

    mete o servio de um cliente por um ataque de negao de servio enquanto que

    o DCPortals consegue manter uma qualidade de servio prxima da ideal. Por

    m, sero discutidos os custos em latncia inicial que a utilizao de um sistema

    de Redes Denidas por Software acarretam.

    Captulo 5 - Concluses e trabalhos futuros: nalizando este texto, ocaptulo 5 rev os pontos principais do trabalho, suas contribuies e resulta-

    dos. Tambm apresenta uma anlise criteriosa do futuro do DCPortals, sempre

    levando em considerao como melhorar os pontos fracos assim como estender

    suas funcionalidades.

  • Captulo 2

    Conceitos Relacionados

    Para simplicar a descrio da soluo proposta e implementada, importante entender

    primeiro como operam os datacenters virtualizados atuais, com suas limitaes, e como

    a tecnologia OpenFlow permite a criao de Redes Denidas por Sofware e seu impacto

    sobre a rea de Redes de Computadores. Uma vez apresentados esses conceitos, este

    captulo conclui com a discusso de trabalhos relacionados.

    2.1 Ambientes de computao em nuvem atuais

    Sistemas de computao em nuvem em datacenters virtualizados convencionais utilizam

    uma estrutura dependente de um gerenciador de nuvem e um monitor de mquinas

    virtuais. Com essa estrutura, possvel gerenciar um nmero grande de mquinas

    virtuais distribudas em diversas mquinas fsicas e oferecer o servio para o cliente

    nal.

    Existem diversas ferramentas que entregam essas funcionalidades. Para este pro-

    jeto foram escolhidas duas bastante utilizadas na comunidade, o OpenStack e o Xen.

    Adicionalmente a esse ambiente convencional, foi escolhido um switch virtual com

    suporte ao protocolo OpenFlow, o Open vSwitch, para permitir posteriormente a sua

    programao e a implementao do sistema no conceito de redes denidas por software.

    A seguir so descritos os funcionamentos dessas ferramentas, razes para suas

    escolhas e a maneira como elas se relacionam para montar o ambiente propcio im-

    plementao do DCPortals.

    9

  • 2. Conceitos Relacionados 10

    2.1.1 Xen

    Como monitor de mquinas virtuais foi escolhido o Xen (Barham et al., 2003), por

    ser um monitor de mquinas virtuais bastante slido com desempenho satisfatrio.

    Xen permite a diviso de recursos fsicos entre mquinas Linux, BSD e Windows. Ele

    suporta tanto o conceito de para-virtualizao quanto o de virtualizao completa. A

    para-virtualizao consiste na incluso de informao no sistema virtualizado de que ele

    virtualizado, enquanto que a virtualizao completa completamente independente,

    porm, precisa de suporte de hardware.

    Na poca em que foi apresentado, em 2003, o Xen pretendia suportar a presena

    de at 100 mquinas virtuais em um mesmo servidor moderno, portanto, ele possui

    um mecanismo de controle de recursos muito eciente. At hoje ele bastante usado

    sendo tambm suportado por uma das distribuies Linux mais populares, o Ubuntu.

    O suporte ocial do OpenStack ao Xen tambm garante que o sistema no se tornar

    obsoleto com a modicao das ferramentas.

    Uma alternativa que recentemente est se popularizando o KVM, que um

    monitor de mquinas virtuais baseado em uma camada de virtualizao presente no

    Kernel do Linux. Ele apresenta uma srie de extenses para virtualizao completa

    atravs do hardware e para-virtualizao atravs de drivers modicados para o sistema

    virtualizado. Apesar do Xen ter sido escolhido como o monitor de mquinas virtuais

    para o ambiente do projeto, todo o sistema foi montado de forma que uma futura tran-

    sio para o KVM no acarrete grandes alteraes, uma vez que todas as ferramentas

    escolhidas possuem suporte a ambos.

    2.1.2 Open vSwitch

    A implementao de referncia do modelo OpenFlow um comutador em software,

    executando no espao de usurio em uma mquina Linux. Esse modelo tem sido uti-

    lizado como base em diversos experimentos, mas carece de um melhor desempenho.

    Desenvolvido para suprir essa lacuna, o Open vSwitch (Pfa et al., 2009) um switch

    virtual que segue a arquitetura OpenFlow, implementado em software, com o plano de

    dados dentro do kernel do sistema operacional Linux, enquanto o plano de controle

    acessado a partir do espao do usurio. Em particular, essa implementao foi desen-

    volvida especicamente para controlar o trfego de rede da camada da virtualizao

    em ambientes virtualizados.

    Alm de oferecer as funcionalidades da arquitetura OpenFlow, discutida na se-

    o 2.2, o Open vSwitch, na sua congurao padro, opera como um switch ethernet

    normal e nessa condio que atualmente utilizado. Para simplicar sua integrao

  • 2. Conceitos Relacionados 11

    com o kernel do Linux, ele emula as interfaces de rede daquele sistema e utiliza partes

    do cdigo fonte de seu prprio mdulo bridge, que implementa o switch de rede padro

    do Linux. Como resultado dessas decises de projeto, o Open vSwitch pode ser utili-

    zado como um substituto imediato para os switches virtuais adotados pelos monitores

    de mquinas virtuais baseados em Linux mais utilizados atualmente, como Xen, Xen-

    Server e KVM, e vem sendo adotado como o switch padro em diversas distribuies,

    mesmo quando as funcionalidades da arquitetura OpenFlow no so utilizadas. Ele

    tambm est sendo includo no repositrio padro de softwares de uma das maiores

    distribuies de Linux do mundo, o Ubuntu. Portanto, tem uma chance muito boa de

    continuar sendo utilizado pela comunidade.

    2.1.3 OpenStack

    Uma vez montada uma infraestrutura de um datacenter virtualizado para servios de

    computao em nuvem necessrio realizar uma sequncia de operaes como distribuir

    recursos, controlar acesso, congurar as mquinas virtuais, reunir informaes sobre o

    sistema, dentre vrias outras atividades. Esse tipo de gerncia complexa e demanda

    muito tempo quando feita de forma manual, muitas vezes se tornando impraticvel

    devido ao tamanho dos datacenters atuais e a necessidade por agilidade no processo.

    O OpenStack (OpenStack, 2012) uma ferramenta de gerenciamento de ambien-

    tes virtualizados para computao em nuvem que visa a da simplicao das operaes

    de administrao e organizao da nuvem alm de reunir informaes sobre as mesmas

    em um banco de dados. Operaes como a criao, destruio, migrao, padronizao

    e limitao de mquinas virtuais so algumas das funcionalidades que ele pretende for-

    necer de forma simples, escalvel e elstica tanto para nuvens privadas quanto pblicas,

    grandes ou pequenas. Ele composto de trs componentes: Compute, Object Storage

    e Image Service.

    O Compute um controlador da infraestrutura da nuvem, usado para iniciaras mquinas virtuais, ou instncias como so chamadas no produto, para um

    usurio ou um grupo. Tambm usado para congurar a rede de cada instncia

    ou projeto que contenha mltiplas instncias.

    O Object Storage um sistema que armazena objetos em um sistema massiva-mente escalvel de alta capacidade com redundncia e tolerncia a falhas. Ele tem

    uma variedade de aplicaes, como arquivar e fazer backup de dados, servir gr-

    cos ou vdeos, armazenar dados estticos secundrios ou tercirios, desenvolver

    novas aplicaes com integrao de armazenamento de dados e criar a elastici-

  • 2. Conceitos Relacionados 12

    dade e exibilidade de um armazenamento baseado em nuvem para aplicaes

    Web.

    O Image Service um sistema de pesquisa e recuperao para imagens de m-quinas virtuais. Ele pode ser congurado de trs formas: usar o Object Storage

    para armazenar imagens; usar a infraestrutura da Amazon S3 diretamente para

    armazenar imagens; ou usar o armazenamento do Amazon S3 com o Object Store

    como um intermedirio para o acesso.

    O controle de acesso nuvem feito por uma interface de programao (API )

    que prov recursos tanto para administrao quando para acesso. Os usurios acessam

    diretamente a API sem precisar se preocupar em como a operao ser realizada na

    infraestrutura fsica. Enquanto isso, o sistema se encarrega de usar o Image Service para

    publicar as imagens das mquinas virtuais, usando ou no o Object Store, para que o

    Compute possa distribuir, gerenciar e modicar as mquinas virtuais na infraestrutura

    fsica da melhor forma possvel. Tanto esses componentes quanto os subcomponentes

    que os compem se comunicam atravs de um servidor de las de mensagens dedicado

    com registro de consumidor e produtor. Toda a comunicao feita entre os mdulos

    passa por esse servidor de las, de forma que qualquer processo pode produzir, consumir

    ou observar as mensagens cadastradas em alguma la de mensagens existente. Isso

    permite que a comunicao entre os processos seja independente de implementao e

    que mdulos externos possam interagir com o sistema apenas utilizando a organizao

    das las. Alm disso, todas as informaes da nuvem so armazenadas em um banco de

    dados MySQL, para uso de todos os mdulos, que permite acessar essas informaes a

    qualquer momento diretamente pelo servidor de banco de dados. Esse banco de dados

    ca localizado no controlador da nuvem, porm, todos os ns que utilizam o Compute

    o acessam diretamente.

    A abstrao provida pela API se d por comandos simples e papis de usurios.

    Um usurio com o papel de administrador tem privilgios como criar um projeto de

    computao em nuvem utilizando os recursos disponveis, atrelar uma faixa de rede

    para esse projeto, determinar credenciais, publicar imagens de sistema e manipular a

    criao, destruio e migrao de mquinas virtuais. A criao de uma mquina virtual

    em uma congurao preestabelecida se d por um comando onde determinada a

    imagem base, o tipo de mquina virtual, que determina quantos recursos ela reservar,

    e uma chave RSA para permitir acesso seguro mquina. Enquanto isso, um usurio

    comum tem papel limitado como acessar uma mquina virtual atravs de uma chave

    RSA, dentre outros papis que podem ser modicados ou denidos pelo administrador.

  • 2. Conceitos Relacionados 13

    Existem outras ferramentas com o mesmo objetivo, as principais sendo o Eu-

    calyptus (Nurmi et al., 2008) e o OpenNebula (OpenNebula, 2012). O Eucalyptus foi

    o primeiro sistema aberto de gerncia de nuvem a se popularizar. Ele foi apresentado

    em 2008 com o intuito de apresentar uma soluo para administradores de sistemas

    e pesquisadores para gerenciamento simplicado de uma nuvem. Foi utilizada uma

    interface de usurio denida pelo Amazon EC2 para facilitar a transio de usurios

    desse ambiente. Por ser o precursor das ferramentas abertas de gerncia de nuvens,

    o Eucalyptus popularizou e teve bastante utilizao durante os ltimos anos, porm,

    recentemente ele tem perdido muito espao para o OpenStack.

    O OpenNebula outra ferramenta semelhante. Ele consiste em um sistema bas-

    tante semelhante ao OpenStack, porm divergente em algumas losoas. Enquanto

    o OpenStack se baseia em criar um ambiente modular com um mnimo de ferramen-

    tas dependentes do ambiente possvel, o OpenNebula tenta entregar uma soluo mais

    completa para um sistema mais especco. Ele j tem uma participao mais slida na

    comunidade, uma vez que comeou de um projeto de pesquisa em 2005, bem antes do

    aumento do interesse na rea de computao em nuvem.

    Comparado a essas duas solues, o OpenStack a ferramenta do gnero que est

    tendo maior ateno da comunidade no momento, sendo inclusive oferecido ocialmente

    por distribuies famosas como o Ubuntu e utilizado por organizaes importantes.

    Ele oferece servios que alm de simplicar o gerenciamento das mquinas virtuais

    centralizam em um s lugar diversas informaes que possibilitam tanto a separao

    das redes virtuais como o levantamento de informaes sobre separaes entre elas. Ele

    foi escolhido por ser a ferramenta do gnero mais utilizada pela comunidade e possuir

    todas as informaes necessrias para o desenvolvimento da aplicao.

    2.1.4 Integrao entre Open vSwitch e Xen

    Monitores de mquinas virtuais como o Xen (Barham et al., 2003) apresentam um es-

    quema de virtualizao da rede que cria um switch virtual para conectar os dispositivos

    de rede de cada mquina virtual ao dispositivo de rede da mquina hospedeira, criando

    uma ligao entre elas e a rede real. No caso do Xen, esse switch virtual criado com

    a ajuda de um mdulo do kernel do Linux que permite a criao desse dispositivo.

    Esse processo ilustrado na gura 2.1. criado um switch virtual chamado xenbr0

    com diversas portas virtuais. Cada porta virtual ligada em outro dispositivo virtual

    atravs das interfaces virtuais vif e a placa fsica eth0 se torna o Gateway, enquanto

    que uma interface virtual tambm chamada de xenbr0 criada para que o trfego das

    aplicaes da mquina hospedeira tambm passem pelo switch virtual.

  • 2. Conceitos Relacionados 14

    Figura 2.1. Rede no Xen

    A criao do switch virtual e a conexo das mquinas virtuais a ele so realizadas

    pelo Xen utilizando funes do prprio sistema do Linux para utilizar o mdulo bridge

    do kernel. Como citado anteriormente, o Open vSwitch possui uma funcionalidade de

    substituir esse mdulo do Linux para que o sistema utilize o Open vSwitch ao invs do

    mdulo bridge. Isso ocorre de forma transparente, sem que os prprios comandos do

    Linux precisem de modicaes para funcionar. Portanto, ao utilizar essa funcionali-

    dade, o Xen passa a utilizar de forma transparente o Open vSwitch para criar o seu

    switch virtual e conectar suas mquinas virtuais.

    2.1.5 Integrao entre OpenStack e Xen

    O OpenStack suporta o monitor de mquinas virtuais Xen atravs de duas formas pos-

    sveis: utilizando a biblioteca de generalizao de gerenciamento de mquinas virtuais

    Libvirt

    1

    (Bolte et al., 2010) e atravs de uma biblioteca de acesso interface do pro-

    duto XenServer

    2

    (Citrix, 2012). Foi escolhida a primeira, devido ao maior suporte

    biblioteca Libvirt e sua independncia de sistemas, uma vez que o XenServer se trata

    de uma soluo j integrada que dicultaria a integrao com os demais servios.

    1O Libvirt uma biblioteca para gerenciamento de virtualizao que promete entregar uma in-terface comum para gerenciar mquinas virtuais independentemente do monitor de mquinas virtuaisutilizado.2O Xenserver um produto da empresa Citrix que oferece um sistema automatizado para insta-

    lao e gerncia de um ambiente de datacenter com mquinas virtuais.

  • 2. Conceitos Relacionados 15

    Para a biblioteca Libvirt integrar o Xen ao OpenStack, necessrio que o Xen

    esteja congurado para utilizar uma interface HTTP de acesso ao monitor. Dessa

    forma possvel integrar os dois servios. Da parte do OpenStack, tambm necessrio

    realizar uma srie de conguraes especcas para o monitor Xen. Essas conguraes

    esto descritas no apndice B na explicao do roteiro de congurao.

    Tambm interessante separar a interface de rede pela qual o OpenStack co-

    munica entre seus componentes da interfaces de rede que o Xen utiliza para fazer a

    comunicao entre as suas mquinas virtuais. Esse procedimento de separar uma in-

    terface de rede para o controle e outra para o servio de mquinas virtuais bastante

    utilizado em datacenters virtualizados em geral, pois ambos os trfegos podem ser al-

    tos, e a separao do trfego de controle aumenta a conabilidade do sistema. Neste

    projeto essa abordagem foi utilizada por reetir uma situao comum no ambiente alvo

    e evitar problemas do uso dos dois trfegos em uma s interface.

    2.2 OpenFlow

    A tecnologia OpenFlow surgiu como uma maneira de permitir que o comportamento

    dos elementos de comutao de rede (switches e roteadores) sejam facilmente progra-

    mados para obter comportamentos diferentes dos usualmente disponveis. Seu princpio

    de operao se baseia na separao dos planos de controle e dados da rede, criando

    uma interface de programao para o primeiro. Nesse contexto, o plano de controle

    consiste na lgica responsvel pelo estabelecimento das regras a serem aplicadas no

    encaminhamento de pacotes, enquanto o plano de dados representa o hardware respon-

    svel pelo tratamento em tempo real de cada pacote recebido pelo switch, com base nas

    regras previamente denidas pelo plano de controle. A interao entre os dois planos se

    d atravs de uma tabela de regras de encaminhamento/roteamento, que preenchida

    pelo plano de controle e consultada pelo plano de dados para cada pacote recebido.

    OpenFlow dene uma interface de programao e um conjunto de aes que podem ser

    denidas na tabela de encaminhamento, permitindo que aplicaes externas controlem

    o encaminhamento de pacotes, sem afetar seu desempenho de forma signicativa (j

    que o plano de dados continua sendo implementado em hardware). Essa tecnologia

    pode ser aplicada tanto na contruo de switches reais, com hardware especializado

    para suport-la, quanto em ambientes virtualizados, com implementaes em software.

    A tabela de regras de uxos manipulada por um controlador externo (um PC

    executando um software de controle) atravs do protocolo denido. A gura 2.2 re-

    presenta o funcionamento da comunicao do OpenFlow. O switch utiliza sua tabela

  • 2. Conceitos Relacionados 16

    de uxos em hardware e se comunica por software com um PC controlador atravs de

    uma conexo criptografada SSL.

    Figura 2.2. Diagrama de funcionamento da comunicao do OpenFlow

    2.2.1 A API OpenFlow

    O protocolo OpenFlow dene uma interface de programao (API ) comum para aces-

    sar a funcionalidade da tabela de encaminhamento dos switches, independente das

    implementaes de cada fabricante. Cada entrada da tabela de encaminhamento de-

    ne um padro que pode incluir at 10 campos dos cabealhos usualmente encontrados

    em uma rede local (como Ethernet, IP e TCP). Pacotes recebidos so comparados com

    esse padres e, caso haja um casamento completo, as aes associadas quela entrada

    so executados. A gura 2.3 mostra os campos considerados na verso atual.

    Figura 2.3. Campos disponveis para a identicao de uxos na primeira verso

    do OpenFlow

  • 2. Conceitos Relacionados 17

    Uma vez que um pacote case com uma das entradas da tabela, diversas aes

    podem ser denidas para serem aplicadas ao pacote. Essas aes se classicam em

    uma das seguintes categorias:

    1. Encaminhar os pacotes deste uxo a uma certa porta (ou portas) do switch. Isso

    permite que pacotes sejam roteados pela rede.

    2. Re-escrever o contedo de campos especcos dos cabealhos encontrados.

    3. Encapsular e encaminhar os pacotes de um uxo para o controlador. O pacote

    entregue atravs de um canal seguro entre o switch e o controlador, que pode

    ento process-lo e tomar decises sobre o uxo.

    4. Descartar os pacotes deste uxo.

    Uma entrada pode denir mais de uma ao, como re-escrever alguns cabealhos e

    ento encaminhar o pacote resultante por uma certa porta de sada.

    Com essas aes, um programa (controlador) pode se conectar ao switch e deter-

    minar que pacotes que se casem com um certo padro lhe sejam enviados. Ao receber

    cada pacote, o controlador pode decidir como o uxo por ele denido deve ser proces-

    sado e enviar mensagens para o switch para estabelecer uma nova entrada na tabela

    de encaminhamento especca para aquele uxo. Essa nova entrada conteria as aes

    a serem executadas, como descartar o uxo, ou encaminh-lo para uma certa porta de

    sada. A especicao completa do protocolo OpenFlow est disponvel no site ocial

    do OpenFlow (OpenFlow, 2012).

    2.2.2 Controladores OpenFlow

    Para simplicar o trabalho de desenvolvedores interessados em utilizar OpenFlow, di-

    versos controladores j foram desenvolvidos. Esses controladores cuidam dos detalhes

    de implementao do protocolo propriamente dito, exportando uma interface de pro-

    gramao de mais alto nvel que pode ser usada para representar os comportamentos

    especcos planejados pelo desenvolvedor.

    O controlador OpenFlow, como descrito anteriormente, um servidor externo

    executando um software que se conecta aos switches OpenFlow atravs de uma conexo

    criptografada SSL. Esse controlador tem o objetivo de receber pacotes encapsulados de

    cada uxo dos switches, realizar uma computao previamente determinada e responder

    o switch com uma mensagem seguindo o protocolo OpenFlow determinando a ao

    relativa a todos os pacotes subsequentes quele uxo.

  • 2. Conceitos Relacionados 18

    Esse controlador, por ser uma mquina externa completa, pode realizar qualquer

    tipo de computao necessria a essa lgica de tratamento de uxos, no estando

    limitado aos recursos de um switch. Dessa forma, o controlador OpenFlow tem o poder

    de manipular toda a rede mantendo uma viso centralizada de todos os switches, todas

    as mquinas ligadas e todos os uxos que passam por eles.

    Toda essa funcionalidade permitiu a criao dos chamados Network Hypervisors.

    Esses programas consistem em um software que roda em um controlador OpenFlow

    provendo uma interface para manipulao dos uxos com o intuito de permitir a criao

    de mdulos que programem os switches OpenFlow para separar a viso da rede para

    as mquinas da rede fsica subjacente existente. Assim como um monitor de mquinas

    virtuais (Hypervisor) manipula mquinas virtuais sobre uma mquina real, um Network

    Hypervisor manipula redes virtuais sobre uma infraestrutura de rede real.

    2.2.3 Controladores disponveis

    Diversos controladores j foram desenvolvidos e muitos esto disponveis como soft-

    ware livre e aberto. A diversidade de controladores ilustra as diferentes abstraes

    disponveis para se expressar o tratamento de uxos de rede. Esta seo menciona

    alguns dos principais controladores existentes durante o perodo de desenvolvimento

    desta dissertao.

    O NOX (Gude et al., 2008) considerado o controlador original OpenFlow. Apre-

    sentado pelos criadores do OpenFlow como um Network Hypervisor bastante extensvel

    e capaz de proporcionar um ambiente para a programao de aplicaes modulares que

    reagem a diversos eventos levantados originalmente pela rede ou pelos prprios mdu-

    los. Ele pretende oferecer uma interface de programao para o acesso rede e a

    capacidade de manipular pacotes OpenFlow para os switches. Ele tem como principal

    funo hoje o desenvolvimento de controladores ecientes em C++. Opera sobre o

    conceito de uxos de dados checando o primeiro pacote de cada uxo e procurando

    na tabela de uxos a poltica a ser aplicada. Atualmente a maioria dos projetos de

    pesquisa na rea so baseados no NOX, que um sistema operacional simples para

    redes e que prov primitivas para o gerenciamento de eventos bem como funes para

    a comunicao com switches.

    O NOX obteve uma grande aceitao entre os pesquisadores da rea de SDN.

    A existncia de duas interfaces, C++ e Python, permite que o mesmo ambiente seja

    utilizado em situaes que exigem alto desempenho e em casos onde a capacidade

    de expresso de Python agilizam o desenvolvimento e simplicam o cdigo resultante.

    Posteriormente, foi tambm apresentado pela UC Berkeley o POX, que foi desenvolvido

  • 2. Conceitos Relacionados 19

    com base no modelo do NOX, mas com a premissa de ser completamente escrito em

    Python, resultando em uma interface mais elegante e simples dentro daquela linguagem.

    Os desenvolvedores do POX acreditam que este seja adequado para substituir o NOX

    nos casos em que Python utilizado, enquanto o NOX ainda permanece adequado para

    implementaes que tenham demandas mais elevadas em termos de desempenho.

    O NOX e o POX so os Network Hypervisors mais importantes para o projeto

    por serem mais slidos e apresentarem um conjunto de funcionalidades que comportam

    as funcionalidades descritas. Entretanto, existem outros Network Hypervisors que so

    criados para uma nalidade especca, ou apenas apresentando uma forma de abstrao

    diferente para resolver um problema especco que merecem ser mencionados.

    O Beacon (Beacon, 2012) outro controlador baseado em Java que suporta tanto

    a operao baseada em eventos quanto em threads. O projeto vem sendo desenvolvido

    j h um ano e meio, sendo considerado estvel. Seu registro de operao inclui a

    gerncia de uma rede com 100 switches virtuais e 20 switches fsicos em um datacenter

    experimental. O sistema tem uma estrutura modular que permite que o controlador

    seja atualizado em tempo de execuo sem interromper outras atividades de encami-

    nhamento de pacotes. O pacote opcionalmente incorpora o servidor web Jetty e um

    arcabouo extensvel para o desenvolvimento de interfaces de usurio personalizadas.

    Frenetic (Foster et al., 2011) um sistema baseado em linguagem funcional de-

    senvolvido para programar redes OpenFlow. Frenetic permite que o operador da rede,

    ao invs de manualmente congurar cada equipamento de rede, programe a rede como

    um todo. Ele implementado sobre o NOX, em Python, e foi projetado para resolver

    problemas de programao com o OpenFlow/NOX. Ele faz isso introduzindo abstraes

    funcionais para permitir programas modulares e a composio desses programas.

    Existem ainda diversos outros Network Hypervisors, cada um com suas parti-

    cularidades, como uma preocupao maior com desempenho, tolerncia a falhas ou

    facilidade de escrita de aplicaes (Trema, 2012; Cai et al., 2010; Hinrichs et al., 2009;

    Koponen et al., 2010; Kohler et al., 2000; Mundada et al., 2009; Floodlight, 2012;

    SNAC, 2012; Ganguly, 2011). Essa variedade existe porque muitas vezes o ambiente

    alvo tem demandas diferentes, como a necessidade de redundncia em sistemas que

    dependem muito da qualidade de servio ou o desempenho em sistemas que exigem

    uma resposta mais rpida.

    2.2.4 Redes Denidas por Software

    Um dos impactos da denio da tecnologia OpenFlow e de Network Hypervisors

    a denio do conceito de Redes Denidas por Software, ou SDNs (Software Dened

  • 2. Conceitos Relacionados 20

    Networks). Com base nos recursos providos pela tecnologia OpenFlow, SDNs pregam

    a construo de uma viso global da rede, sobre a qual diferentes aplicaes podem ser

    criadas. A gura 2.4 demonstra a comparao de uma rede comum e uma SDN. Em

    uma rede tradicional, cada elemento de comutao (switch ou roteador) uma unidade

    de processamento independente, com uma arquitetura de software que determina seu

    comportamento. Um roteador tem seu sistema operacional e executa aplicaes que

    denem o protocolo de roteamento a ser utilizado, por exemplo. Em uma SDN, os

    elementos de comutao so ligados a um controlador de rede (Network Hypervisor),

    que podem ento construir uma viso completa da rede. Sobre essa viso completa,

    aplicaes podem ser desenvolvidas de forma mais simples e as aes por elas exigidas

    so transformadas pelo controlador em comandos que programam cada elemento de

    comutao. A gura 2.5 ilustra com mais detalhes essa organizao.

    Figura 2.4. Diferenas entre modelo comum e modelo com SDN

    A SDN, como possvel ver na gura 2.5, separa todas essas preocupaes do

    plano de controle, como o roteamento, para uma aplicao separada que opera sobre

    a abstrao da viso global da rede. Essa abstrao implementada como um sistema

    operacional da rede que proporciona recursos, como a viso lgica da rede, para mdulos

    responsveis por realizar essas operaes, deixando para os ns de dados apenas a

    responsabilidade de encaminhar os pacotes seguindo uma tabela de uxos.

    Essa abstrao, como discutido anteriormente, alcanada atravs do uso de swit-

    ches OpenFlow e um controlador que programa os mesmos atravs de regras OpenFlow

    e viso global da rede. Essa viso global pode ser implementada tambm considerando-

  • 2. Conceitos Relacionados 21

    Figura 2.5. Separao entre planos de controle e dados em uma SDN

    se uma viso de rede com duas camadas, onde os comutadores da borda sejam com-

    pletamente programveis (OpenFlow), enquanto os comutadores internos obedecem

    a regras de encaminhamento mais simples (p.ex., MPLS). Essa organizao se torna

    particularmente interessante se considerarmos que, em um datacenter virtualizado,

    a borda da rede completamente formada por switches virtuais em sofware (Open

    vSwitch, por exemplo, que implementa OpenFlow). Esses switches podem ser usa-

    dos para implementar diversos comportamentos complexos, desde que se mantenha em

    mente que dentro do ncleo da rede o processamento precisa continuar obedecendo ao

    comportamento usual da rede Ethernet. Apesar dessa limitao restringir o tipo de

    soluo possvel, ela oferece uma soluo de compromisso importante que no exige a

    substituio do hardware existente em uma grande instalao.

    2.2.5 POX

    Para gerenciar os switches OpenFlow neste projeto, foi escolhido como Network Hy-

    pervisor o POX da UC Berkeley. O POX vem sendo desenvolvido como um sucessor

    natural do NOX para iniciativas de pesquisa e ensino. O objetivo dos desenvolvedores

    que ele venha a substituir o NOX nos casos onde desempenho no seja um requisito

    crtico essencialmente, nos casos onde a interface Python utilizada. Nesse aspecto,

    POX traz uma interface mais moderna e uma implementao mais elegante, alm de

    oferecer melhor desempenho que o NOX com Python como pode ser visto na gura 2.6.

    NOX e outros controladores de primeira gerao so construdos ao redor do

  • 2. Conceitos Relacionados 22

    Figura 2.6. Comparao de desempenho entre POX e NOX, com suas duas

    interfaces (C++ e Python). Figura publicada por Murphy McCauley no site

    http://www.noxrepo.org/2012/03/introducing-pox/.

    conceito de mensagens OpenFlow como primitivas bsicas. Assim sendo, as aplicaes

    se organizam ao redor de ciclos de recebimento/tratamento/gerao de mensagens. O

    POX est sendo organizado ao redor da noo de viso global da rede: aplicaes no

    precisaro necessariamente de receber e enviar mensagens diretamente, mas podero

    consultar a viso corrente da rede e atuar diretamente sobre ela para obter seus ob-

    jetivos (os recursos para esse m ainda esto em desenvolvimento). Outros elementos

    que fazem parte do contexto de projeto do POX incluem a previso de recursos para

    a distribuio dessa viso global e para a depurao de aplicaes desenvolvidas sobre

    essa viso.

    POX funciona com o conceito de orientao a eventos para gerenciar a rede

    formada por switches OpenFlow. Os componentes, que so as aplicaes desenvolvidas

    sobre o POX, podem reagir a eventos denidos pelo ncleo do POX ou levantar e reagir

    a eventos criados pelos prprios componentes. So exemplos de eventos denidos pelo

    POX a entrada ou sada do switch na rede atravs de conexo ao Network Hypervisor,

    a identicao de um novo uxo por um switch pertencente rede ou modicaes de

    portas ou remoo de um uxo de um switch devido a inatividade. O POX tambm

    oferece uma biblioteca para a criao de mensagens OpenFlow para programar os

    switches da rede de acordo com as instrues geradas pela computao do controlador

    com viso global da rede.

  • 2. Conceitos Relacionados 23

    Por exemplo, quando um switch OpenFlow se conecta rede gerado um evento

    de ConnectionUp, como denido pelo POX. O componente do POX pode se cadastrar

    para reagir a esse evento e adicionar informaes sobre esse switch sua viso global

    da rede. Em seguida, o primeiro pacote que for identicado pelo switch conectado gera

    um evento de PacketIn e o componente pode reagir a ele utilizando as informaes

    do pacote identicado para tomar uma deciso com base na viso global da rede para

    gerar uma mensagem OpenFlow que dene uma ao que ser instalada na tabela de

    uxos daquele switch. Essa entrada garante que todos os pacotes do mesmo uxo que

    o seguirem tenham o mesmo tratamento programado pelo controlador para o primeiro

    pacote.

    Para este projeto foi escolhido o POX por ser uma ferramenta de Network Hy-

    pervisor livre com facilidade de criao de mdulos e por possuir no futuro um suporte

    maior dos desenvolvedores. O apndice A demonstra uma implementao de um switch

    ethernet simples usando o POX para ilustrar a facilidade de programao e demonstrar

    algumas bibliotecas do POX. Este projeto tambm gerou um tutorial dando mais de-

    talhes sobre o POX em uma publicao para um minicurso para o Simpsio Brasileiro

    de Redes de Computadores (SBRC, 2012).

    2.3 Trabalhos relacionados

    Recentemente vrios trabalhos tm sido publicados com a inteno de entender melhor

    e oferecer solues para o ambiente de datacenters principalmente no que diz respeito a

    solues que geram um retorno econmico em virtude do uso de hardware mais barato.

    Greenberg et al. (2009) reuniram um estudo bastante interessante sobre os custos

    de um datacenter de computao em nuvem. Alguns fatores muito importantes em

    relao a esse tipo de ambiente so descritos, como a tendncia de possuir um nmero

    extremamente elevado de mquinas para um pessoal comparativamente menor (hoje

    so comuns datacenters com mais de 100.000 servidores com fraes de pessoas de

    1:1000 mquinas.). Tambm so apresentadas concluses bastante interessantes sobre

    a rede de datacenters como a diferena de preo notvel entre switches L2 e L3, fazendo

    com que a engenharia de organizao da rede seja uma tarefa bastante importante, e o

    uso pesado de VLANs para realizar isolamento e disseminao de pacotes especcos.

    Atravs dessa anlise possvel perceber que os custos de manuteno do uso

    de VLANs bastante considervel em virtude da frao de pessoas/mquinas e a

    frequncia com que sua manuteno ocasionada. Isso em um datacenter convencional

    j representa um peso importante devido organizao intrnseca infraestrutura

  • 2. Conceitos Relacionados 24

    fsica. Em datacenters que oferecem o servio de computao em nuvem esse peso

    muito maior devido frequncia com que essa manuteno deveria ocorrer medida

    que clientes modicam suas redes e demandam pelo isolamento na comunicao de suas

    mquinas virtuais. Sem contar na necessidade de migrao de uma mquina virtual

    devido a possveis pontos especcos da infraestrutura que cam sobrecarregados com

    muitas mquinas demandando processamento, o que um problema grave e tratado por

    algoritmos como o Sandpiper (Wood et al., 2007). Todas essas evidncias apontam para

    um custo muito grande e pouco escalvel para a utilizao de VLANs no isolamento

    de datacenters de servios de computao em nuvem.

    J Fares et al. (2008) apresentam um algoritmo de roteamento e uma organizao

    de rede a m de diminuir os custos de infraestrutura em switches de um datacenter. Ele

    consegue reduzir o custo da arquitetura de switches atravs da utilizao de aparelhos

    baratos ao invs de aparelhos caros especializados, mantm a conabilidade com a

    organizao de redundncia programada da hierarquia e garante o desempenho atravs

    do uso de algoritmos de roteamento modicados visando essa organizao.

    Alizadeh et al. (2010) trabalham numa soluo de nvel mais baixo, apresentando

    uma modicao no algoritmo do TCP com o intuito de evitar o esgotamento dos

    buers dos switches atravs da marcao dos pacotes e a auto-deteco proativa dos

    lados da transferncia para reduzir o trfego sem o enchimento da la. O switch

    quando comea a detectar uma ocupao do seu buer perto do esgotamento marca

    os pacotes TCP que passam por ele com uma tag. O receptor da transferncia detecta

    a frequncia que esses pacotes marcados esto chegando e gera uma mensagem para o

    emissor para ele diminuir a velocidade de transmisso explicitamente. Com o melhor

    uso dos buers dos switches a rede do datacenter aumenta a conabilidade, latncia e

    utilizao de recursos alm de diminuir perda de pacotes, atraso e fenmenos como o

    TCP Incast (Chen et al., 2009; Vasudevan et al., 2009), que um problema causado por

    um alto nmero de requisies externas a um ponto comum de uma s vez, gerando

    muita coliso, atraso e retransmisses devido ao algoritmo de congestionamento do

    TCP. Isso benecia datacenters de forma geral, mas principalmente os que possuem

    menos hardware especializado com capacidades maiores.

    Portanto, abrir mo de hardware especializado e caro para utilizar solues mais

    elegantes utilizando aparelhos de baixo custo uma situao bastante comum que

    apresenta ganhos signicativos. Muitas empresas, principalmente quando esto aban-

    donando o posto de pequenas, precisam aumentar a oferta de seus servios mas nem

    sempre dispem do investimento necessrio para fazer isso da forma convencional ou

    ainda precisam apresentar uma estratgia mais eciente para competir com empresas

    maiores. Isso trabalha na mesma linha da soluo proposta pelo DCPortals.

  • 2. Conceitos Relacionados 25

    Na questo de separao de redes, Cabuk et al. (2008) apresentam um estudo

    comparativo para a virtualizao das redes. Eles apresentaram pela primeira vez o

    conceito de virtualizar as redes e apresentaram trs tcnicas para fazer isso. Uma

    delas o MAC Rewriting, uma tcnica que visa separar os endereos de ethernet das

    mquinas virtuais da infraestrutura real atravs da re-escrita do campo de endereo

    ethernet dos pacotes quando eles deixam ou chegam s mquinas fsicas que mantm

    mquinas virtuais. Uma tabela que mapeia o endereo ethernet para o endereo IP das

    mquinas virtuais mantida em todas as mquinas fsicas para que um mdulo possa

    fazer essa escrita quando for necessrio. Assim que essa traduo feita, tambm

    adicionada uma lgica no monitor de mquinas virtuais para controlar o acesso entre

    redes virtuais no conectadas. Outra tcnica discutida o EtherIP, que consiste em um

    protocolo que encapsula o endereo ethernet das mquinas virtuais em um cabealho

    sobre os pacotes IP e gerando uma camada de rede ethernet por cima da camada

    de rede IP. Assim como a tcnica anterior, existe a necessidade que o monitor de

    mquinas virtuais tenha uma inteligncia programada sobre a separao de redes para

    que o isolamento ocorra no momento do encapsulamento de desencapsulamento dos

    pacotes. A ltima tcnica apresentada o uso automatizado de tags VLAN, que, como

    j foi discutido, esbarra em diversas limitaes de escalabilidade e gerncia. Todas

    as tcnicas discutidas utilizam tambm a programao de endereos multicast para

    mapear pacotes de broadcast e multicast dentro da rede virtual determinada.

    Essas tcnicas no s representam a importncia de uma separao lgica de redes

    em uma infraestrutura compartilhada como tambm apresentam tcnicas interessantes

    que podem ser utilizadas em sistemas mais complexos. Cabuk et al. (2007) apresentam

    um trabalho bastante semelhante em objetivo com este projeto. Comeando por denir

    o conceito de domnios virtuais conveis (Trusted Virtual Domains, ou TVDs), que so

    separaes lgicas isoladas da rede independentes da infraestrutura, assim como neste

    projeto denimos como redes virtuais ou redes lgicas privativas. Para implementar

    esse isolamento criado um mdulo interno mquina virtual para interceptar os

    pacotes direto na interface de rede e outro mdulo na mquina fsica para realizar

    o processamento relativo separao das redes. Duas tcnicas de virtualizao de

    redes apresentadas no trabalho anterior so utilizadas e comparadas, as tags VLAN e

    o EtherIP. Esse trabalho apresenta um sistema com um objetivo semelhante ao deste

    projeto, o que interessante do ponto de vista de importncia do servio e a necessidade

    de resolver esse problema. Entretanto, tanto as tcnicas quanto o sistema apresentado

    se baseiam em modicaes bastante intrusivas no monitor de mquinas virtuais e em

    limitaes bastante relevantes j discutidas como o nmero de tags VLAN e endereos

    de multicast IP.

  • 2. Conceitos Relacionados 26

    O DCPortals introduz o conceito de Redes Denidas por Software para resolver

    esse problema de isolamento de redes lgicas privativas. Com isso possvel apresentar

    uma soluo mais elegante, atravs do uso do conceito de Network Hypervisor como

    um ponto centralizado de viso global que programa os switches para obedeceram suas

    polticas. Dessa forma, toda a lgica do isolamento de competncia do controlador

    e no depende de nenhuma interferncia nas mquinas virtuais nem nos monitores de

    mquinas virtuais. Tambm importante mencionar a importncia que o uso de redes

    denidas por software representa para um sistema desses. Essa abordagem fornece uma

    nova gama de possibilidades para desenvolvimento de mecanismos mais elaborados,

    como os descritos posteriormente para eliminar as limitaes que os sistemas anteriores

    possuam com o uso de tags VLAN e endereos de multicast IP. Tambm existe a

    possibilidade de criao de outros mecanismos futuros que podem tirar proveito das

    vantagens das SDNs, como algoritmos de roteamento que usem a condio de uso do

    datacenter em considerao ou garantam um melhor uso dos recursos computacionais

    do mesmo como um todo.

  • Captulo 3

    Desenvolvimento

    A criao dos Network Hypervisors foi uma evoluo muito interessante que forneceu

    um ferramental para lidar com vrios problemas de datacenters virtualizados. Embora

    j existam alguns switches OpenFlow comerciais disponveis no mercado, eles ainda

    so poucos e caros. Os datacenters virtualizados atuais possuem uma infraestrutura

    j existente com um nmero grande de switches ethernet convencionais, portanto, o

    investimento para trocar todos eles para migrar para um ambiente completamente

    compatvel com a tecnologia OpenFlow muitas vezes no vivel.

    Porm, os monitores atuais de mquinas virtuais no ambiente Linux costumam

    utilizar um mdulo do kernel para criar um switch virtual interno s mquinas hos-

    pedeiras para conectar as interfaces de rede das mquinas virtuais. Se apenas esses

    switches virtuais forem compatveis com a tecnologia OpenFlow, possvel desenvolver

    uma aplicao que tenha conhecimento de que somente os switches nais sero com-

    patveis enquanto que existiro switches convencionais ligando a infraestrutura real de

    rede entre eles.

    Implementar SDNs em datacenters virtualizados usando os switches virtuais de

    borda e mantendo o uso dos switches ethernet comuns possibilita uma gama de novas

    funcionalidades, alm de melhorar o uso dos recursos da infraestrutura sem a neces-

    sidade de investimento em troca de aparelhos. Para isso, necessrio a utilizao de

    um switch virtual compatvel com o protocolo OpenFlow que gerenciaria as mquinas

    virtuais e uma aplicao do controlador que gerenciaria esses switches virtuais de forma

    que o fato de os switches reais da infraestrutura serem switches ethernet comuns no

    inuencie no seu funcionamento. Alm disso, interessante manter informaes cen-

    tralizadas sobre a localizao, disparo e funcionamento das mquinas virtuais para que

    seja possvel a criao de um sistema de redes virtuais multi-inquilinos, que o foco de

    datacenters de computao em nuvem. Portanto, uma limitao desse ambiente que

    27

  • 3. Desenvolvimento 28

    todas as mquinas comercializadas estaro por trs de um switch virtual de borda, no

    possibilitando uma arquitetura heterognea com outras mquinas reais ou mquinas

    reais fora de switches virtuais programados pelo sistema.

    Mais que aproveitar a infraestrutura existente, o uso de SDNs pode implementar

    algoritmos que melhorem o aproveitamento de recursos computacionais dessa infraes-

    trutura. Por exemplo, possvel aproveitar a viso global centralizada da SDN para

    implementar uma tcnica de re-escrita de endereos MAC (MAC Rewriting) para es-

    conder os endereos ethernet das mquinas virtuais da rede fsica, diminuindo bastante

    a carga sobre os switches ethernet convencionais da infraestrutura subjacente.

    Alm disso, como citado por Greenberg et al. (2009) e discutido no captulo 1,

    a rede de datacenters depende muito do uso pesado de VLANs para isolamento de

    disseminao de mensagens. O controlador OpenFlow pode diminuir ou at eliminar a

    necessidade do uso de VLANs utilizando SDNs.

    Essa abordagem apresenta diversas vantagens, algumas delas esto descritas a

    seguir:

    Menor uso da memria dos switches convencionais: possvel re-escreveros endereos ethernet das mquinas virtuais para separar logicamente as redes

    virtuais da rede subjacente, evitando o acmulo de rotas e endereos ethernet

    de mquinas virtuais no importantes para os switches reais. Com isso, pode

    ser evitado um problema que o armazenamento em switches de endereos das

    mquinas virtuais, o que tem se tornado um problema maior devido ao nmero

    elevado de mquinas virtuais em um datacenter por conta da alta capacidade das

    mquinas fsicas recentes e o alto nmero de servidores em datacenters.

    Possibilidade da criao de redes virtuais privadas multi-inquilinos: Alimitao do tamanho das tags VLAN discutida anteriormente j um problema

    para datacenters maiores. Com uma SDN alguma outra forma de isolamento

    poderia ser desenvolvida para que no exista nenhum limitante para o isolamento

    de redes especcas alm da prpria ecincia dos equipamentos.

    Melhor uso da infraestrutura subjacente: Com um sistema operacionalprprio para desenvolver aplicaes para mapear a viso lgica da rede para a

    infraestrutura fsica, disponibilizado um framework para a implementao de

    vrios algoritmos com viso global da rede para melhorar a comunicao tendo

    em vista tanto a organizao fsica quanto quaisquer outras polticas que possam

    ser interessantes para o datacenter.

  • 3. Desenvolvimento 29

    Possibilidade de criao de mdulos que integrem operaes do data-center com a organizao da rede: Com a exibilidade de manter uma viso

    virtual da rede para as mquinas nais, vrios servios podem ser integrados com

    essa abstrao da rede a m de melhorar o uso de recursos, como uma migrao

    fsica de mquinas virtuais de acordo com a proximidade entre elas das redes

    virtuais, a m de otimizar a comunicao entre mquinas de uma mesma rede

    virtual.

    Este trabalho prope o DCPortals, uma aplicao que executa sobre um Network

    Hypervisor utilizando informaes de um gerenciador de computao em nuvem e pro-

    gramando uma srie de switches virtuais compatveis com OpenFlow internos a m-

    quinas hospedeiras para poder entregar um servio de isolamento de redes virtuais

    multi-inquilinos em um datacenter sem a necessidade de trocar equipamentos fsicos

    da infraestrutura. Ele consiste na integrao e manipulao de ferramentas de cdigo

    livre para entregar um servio de gerenciamento de mquinas virtuais capaz de criar

    redes virtuais multi-inquilinos com isolamento da rede fsica e das demais redes virtuais

    melhorando tambm a utilizao dos recursos de rede subjacentes.

    Neste captulo apresentada a arquitetura proposta, as ferramentas utilizadas e

    os detalhes de implementao.

    3.1 Arquitetura do Sistema

    O DCPortals foi implementado como um mdulo que executa sobre o controlador

    POX. Ele acessa diretamente o banco de dados do OpenStack para poder retirar as

    informaes sobre localizao e isolamento das redes e das mquinas virtuais. Uma vez

    consultadas essas informaes, ele cria mensagens OpenFlow para instruir aos Open

    vSwitches como lidar com cada uxo de pacotes identicado das mquinas virtuais. O

    OpenStack controla o monitor de mquinas virtuais Xen em cada mquina hospedeira e

    o Xen, por sua vez, utiliza um switch virtual Open vSwitch para conectar suas mquinas

    virtuais rede real. A gura 3.1 ilustra a relao entre o mdulo e as ferramentas.

    O administrador do sistema utiliza a interface de programao do OpenStack para

    disparar uma mquina virtual e identica a rede a qual ela vai pertencer. O OpenStack

    dene qual mquina fsica dentre as disponveis que ser escolhida para hospedar a

    mquina virtual e envia os recursos necessrios para que o Xen inicie a mquina virtual

    e a conecte ao Open vSwitch congurado naquela mquina fsica. Assim que a nova

    mquina virtual envia o primeiro pacote para a rede, o Open vSwitch identica um

    novo uxo e, com o protocolo OpenFlow, o POX recupera as informaes desse pacote.

  • 3. Desenvolvimento 30

    Figura 3.1. Arquitetura do sistema

    Com isso, o DCPortals trata esse pacote utilizando informaes do banco de dados

    do OpenStack e utiliza o POX para enviar uma mensagem OpenFlow que programa

    o Open vSwitch para seguir o mesmo tratamento para todos os pacotes seguintes do

    mesmo uxo.

    A seguir sero descritos detalhes do modelo implementado tal como os problemas

    que o mdulo trata para poder entregar as funcionalidades esperadas.

    3.2 Integrao com o POX

    O DCPortals uma aplicao que executa sobre o POX. Ele utiliza as bibliotecas de-

    nidas pelo POX para gerar e enviar mensagens OpenFlow para programar os Open

    vSwitches presentes na rede de acordo com os uxos que forem identicados das m-

    quinas virtuais conectadas neles.

    Na implementao foi denido que o DCPortals reagiria a dois eventos denidos

    pelo POX, o ConnectionUp, que levantado sempre que um novo switch se conecta

    rede e o PacketIn, que levantado sempre que um novo pacote que no casa com

    nenhum uxo instalado identicado por um switch. O primeiro evento tratado com

    a criao de uma estrutura de dados que identica o novo switch na rede. Essa estru-

    tura ser responsvel por armazenar as informaes daquele switch, como os endereos

    ethernet das mquinas que esto conectadas a ele. J o segundo evento tratado com a

    aplicao da lgica de isolamento atravs da instalao de uxos nos switches. Detalhes

    de como essas operaes so realizadas sero discutidos posteriormente.

    O DCPortals levantado no carregamento do POX atravs de seus parmetros

  • 3. Desenvolvimento 31

    de execuo, da mesma forma que so levantadas quaisquer aplicaes que executem

    sobre ele.

    3.3 Integrao com o OpenStack

    A aplicao criada realiza acessos ao banco de dados MySQL criado pelo OpenStack

    com informaes sobre as mquinas virtuais para realizar as decises para implementar

    o isolamento. Durante o tratamento dos novos uxos identicados so feitas algumas

    pesquisas SQL para reunir informaes sobre as mquinas virtuais:

    Chave RSA de uma mquina virtual: dado um endereo MAC de umamquina, pesquisa no banco de dados se esse MAC corresponde a uma mquina

    virtual e qual a chave RSA com a qual ela foi registrada no momento de seu

    disparo no OpenStack. Essa chave ser utilizada no processo de isolamento, como