Elias de Oliveira Granja Junior Heurísticas para
Transcrição
Elias de Oliveira Granja Junior Heurísticas para
Universidade Estadual de Campinas Instituto de Computação INSTITUTO DE COMPUTAÇÃO Elias de Oliveira Granja Junior Heurísticas para minimização de custos em um P2P-Cloud CDN. CAMPINAS 2016 Elias de Oliveira Granja Junior Heurísticas para minimização de custos em um P2P-Cloud CDN. Dissertação apresentada ao Instituto de Computação da Universidade Estadual de Campinas como parte dos requisitos para a obtenção do título de Mestre em Ciência da Computação. Orientador: Prof. Dr. Luiz Fernando Bittencourt Este exemplar corresponde à versão final da Dissertação defendida por Elias de Oliveira Granja Junior e orientada pelo Prof. Dr. Luiz Fernando Bittencourt. CAMPINAS 2016 Agência(s) de fomento e nº(s) de processo(s): Não se aplica. Ficha catalográfica Universidade Estadual de Campinas Biblioteca do Instituto de Matemática, Estatística e Computação Científica Maria Fabiana Bezerra Muller - CRB 8/6162 G766h Granja Junior, Elias de Oliveira, 1992GraHeurísticas para minimização de custos em um P2P-Cloud CDN / Elias de Oliveira Granja Junior. – Campinas, SP : [s.n.], 2016. GraOrientador: Luiz Fernando Bittencourt. GraDissertação (mestrado) – Universidade Estadual de Campinas, Instituto de Computação. Gra1. Arquitetura peer-to-peer (Redes de Computadores). 2. Computação em nuvem. I. Bittencourt, Luiz Fernando,1981-. II. Universidade Estadual de Campinas. Instituto de Computação. III. Título. Informações para Biblioteca Digital Título em outro idioma: Heuristics for a P2P-Cloud video on demand system Palavras-chave em inglês: Peer-to-peer architecture (Computer networks) Cloud computing Área de concentração: Ciência da Computação Titulação: Mestre em Ciência da Computação Banca examinadora: Luiz Fernando Bittencourt [Orientador] Fábio Luciano Verdi Edmundo Roberto Mauro Madeira Data de defesa: 18-07-2016 Programa de Pós-Graduação: Ciência da Computação Powered by TCPDF (www.tcpdf.org) Universidade Estadual de Campinas Instituto de Computação INSTITUTO DE COMPUTAÇÃO Elias de Oliveira Granja Junior Heurísticas para minimização de custos em um P2P-Cloud CDN. Banca Examinadora: • Prof. Dr. Luiz Fernando Bittencourt UNICAMP • Prof. Dr. Edmundo R. M. Madeira UNICAMP • Prof. Dr. Fábio L. Verdi UFSCar A ata da defesa com as respectivas assinaturas dos membros da banca encontra-se no processo de vida acadêmica do aluno. Campinas, 18 de julho de 2016 Valeu a pena? Tudo vale a pena Se a alma não é pequena. Quem quer passar além do Bojador Tem que passar além da dor. Deus ao mar o perigo e o abismo deu, Mas nele é que espelhou o céu. (Fernando Pessoa) Agradecimentos Um trabalho de dois anos é cheio de altos e baixos. As vezes é aquele código que não compila ou mostra resultados não esperados, as vezes a alegria de ver a proposta ganhando forma e sendo implementada. Mas no fim é a resiliência que conta e o resultado apenas uma reação de uma longa e incessante caminhada. Caminhada que definitivamente não pode ser feita sozinha: “Quando a neve cai e os ventos brancos sopram, o lobo solitário morre, mas a matilha sobrevive.” - George R.R. Martin. Por conta disto, gostaria de agradecer aos meus pais, Elias e Graça, pelo apoio e incentivo durante todo o mestrado, inclusive na época que decidi sair do trabalho para me dedicar totalmente as aulas no primeiro semestre. Ao meu irmão, Felipe, pelos momentos de descontração. Aos amigos: Douglas, pelos conselhos dados, piadas ruins e pelas nossas conversas durante nossas idas ao Extra. Carreiro pelo companheirismo, pelas cervejas ostentadas em bares caros ou tomadas na calçada em frente ao Pão de Açúcar. Fernando por ser aquele amigo sempre disponível e pronto para ajudar. Nana pela amizade inesperada, mas sincera (mesmo ela não gostando do Jon Snow). Ao professor Doutor Luiz que sempre estava pronto para ajudar e aconselhar, com toda a paciência do mundo. Guiando não só o desenrolar da dissertação, mas ajudando em todos os aspectos da vida acadêmica. Aos doutores Ioan Petri e Omer F. Rana pela orientação no artigo realizado durante nossa visita à Universidade de Caerdydd. À Beatriz por fazer dupla de estudo durante o primeiro semestre das aulas e pela constante preocupação com os estudos, que sempre me inspirou. Por fim aos meus escritores favoritos: Douglas Adams, George R.R. Martin e Tolkien cujos livros renovavam minha energia a cada final de dia. Ab imo pectore. Resumo A utilização de sistemas de vídeo sob demanda tem crescido nos últimos anos, aumentando o interesse em formas de distribuição de arquivos multimídia com um baixo custo e uma alta qualidade de experiência para o usuário. Entre as formas de distribuição utilizadas atualmente estão o Content Distribution Network, a nuvem de computação pública e protocolos Peer-to-Peer, estes com naturezas distintas, onde a nuvem utiliza a arquitetura cliente-servidor, é estável, porém se usada de maneira leviana pode acarretar em altos custos. Por outro lado protocolos Peer-to-Peer permitem aos usuários atuarem ao mesmo tempo como receptor e como distribuidor de conteúdo, diluindo o custo da infraestrutura entre os próprios usuários, porém sem a garantia de qualquer qualidade de experiência. Unindo as duas arquiteturas é possível criar um sistema mais barato. Otimizando a utilização da nuvem e usando protocolos Peer-to-Peer entre os usuários para auxiliar a distribuição de conteúdo é possível minimizar o custo final. Porém é necessário balancear o custo com a qualidade acordada por acordos de nível de serviço entre usuário e fornecedor de conteúdo. Este trabalho propõe três categorias de heurísticas: proativa, reativa e híbrida, para alocar recursos na nuvem visando o mínimo custo possível e uma boa qualidade de experiência para o usuário. As heurísticas reativas reagem a interrupções na visualização do vídeo, enquanto que as proativas tentam agir antes da interrupção, alocando máquinas quando há entrada de usuários. A heurística híbrida é uma mescla entre as duas categorias. As heurísticas foram simuladas utilizando o arcabouço Peersim com diferentes cenários. Os resultados mostraram que as heurísticas são mais eficientes que dois métodos ingênuos, o primeiro alugando servidores para cada usuário e o segundo mantendo um número estático de servidores. Neste trabalho também são discutidas maneiras de se implementar um sistema real utilizando as heurísticas propostas. Abstract As video on demand systems grows in popularity, new approaches to deal with the media distribuition in the internet have being studied. Companies providing this service are insterested in increasing the quality of experience of the user, while keeping a low cost of infrastructure. Between the approaches to distribute content, we can hightlight Content Distribuition Network, Cloud Computing systems, and Peer-to-Peer protocols. Cloud Computing systems and P2P protocols work in a different manner, but can be mixed togheter to provide a high quality and low cost service. While Cloud Computing works with a client-server architeture and is more realible, stable and at same time more expensive if used in a naive way, P2P protocols allow users to both distribiute and consume content, making it to build a video on demand system. The merge between both approaches must optimize the Cloud Computing bandwith, using the “free” user upload bandwith of P2P at the same time that keeps a good quality of service. In this paper we provide three categories of heuristics - proactive, reactive, and hybdrid - to allocate resources in the cloud with the aim to balance the cost and quality of experience. The reactive approach rents more VMs when the number of video stall events increase, while the proactive reacts to the quantity of users in the system. The hybrid merges both behaviors. The heuristics were simulated with the Peersim framework. The results showed the heuristics are more effiecient than two naive approches: the first one renting one server per user and the second keeping a static number of servers. Moreover, in the end of this work it is discussed the results togheter with ways to implement it in a real system. Lista de Figuras 2.1 2.2 2.3 4.1 Exemplo de overlay de uma rede P2P: as conexões entre os nós não necessariamente refletem a conexão na rede física. . . . . . . . . . . . . . . . . . 17 Arquitetura do MetaCDN.org [12] . . . . . . . . . . . . . . . . . . . . . . . 18 Arquitetura de um sistema P2P-Cloud CDN: o usuário u (círculo rosa) faz requisições para o grupo de usuários U (círculo verde) e para o CDN (retângulo azul). As duas fontes compartilham o arquivo b (arquivo de vídeo) simultaneamente com u. . . . . . . . . . . . . . . . . . . . . . . . . 19 4.4 Usuário u recebe pedaços de Chunk em round-robin dos Servidores a, b e dos Superpeers l, m. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fluxo do Tracker ao receber uma requisição do usuário. . . . . . . . . . . Representação visual do cálculo das interrupções. Onde playback_window representa um intervalo de tempo, e QoE_KBP S ⇤ playback_window todos os chunks que deveriam ter sido visualizados pelo usuário até aquele instante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fluxo do sistema de monitoramento. . . . . . . . . . . . . . . . . . . . . 5.1 Fluxo da arquitetura do sistema. . . . . . . . . . . . . . . . . . . . . . . . 33 6.1 6.2 6.3 6.4 6.5 Resultados das simulações. . . . . . . . . . . . . . . . . . . . . . . . . . . Simulação com 2 mil usuários. . . . . . . . . . . . . . . . . . . . . . . . . Simulação com número maior de banda de saída dos usuários. . . . . . . Simulação com a estratégia Híbrida com 2000 usuários. . . . . . . . . . . Simulação com cenário similar ao de [34], utilizando a heurística Híbrida com arquivos de diferente tamanhos. . . . . . . . . . . . . . . . . . . . . 7.1 Exemplo da escolha do segmento de vídeo a ser enviado pelo usuário (a) ao usuário (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Exemplo de rede overlay utilizando tree-push P2P. . . . . . . . . . . . . . . 53 4.2 4.3 7.2 . 26 . 28 . 29 . 29 . . . . 41 42 44 46 . 47 Sumário 1 Introdução 2 Conceitos básicos 2.1 Computação em nuvem 2.2 Protocolos P2P . . . . 2.3 Cloud-CDN . . . . . . 2.4 P2P-Cloud CDN . . . 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 16 17 18 3 Trabalhos Relacionados 20 4 O sistema 4.1 Atores do sistema . . . . . . . . . . . . . . . . . . 4.1.1 Provedor do sistema de vídeo sob demanda 4.1.2 Servidores da Nuvem . . . . . . . . . . . . 4.1.3 Usuários . . . . . . . . . . . . . . . . . . . 4.1.4 Superpeers e organização dos usuários . . 4.2 Divisão do sistema . . . . . . . . . . . . . . . . . 4.3 Protocolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 25 25 26 26 27 28 5 Modelo 5.1 Redução do custo . . . . . . 5.2 Heurísticas . . . . . . . . . . 5.2.1 Heurísticas Proativas 5.2.2 Heurísticas Reativas 5.2.3 Métodos ingênuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 32 34 34 36 37 6 Simulações 6.1 Cenários . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Cenário básico . . . . . . . . . . . . . . . . . . 6.1.2 Melhores heurísticas . . . . . . . . . . . . . . 6.2 Heurística Híbrida . . . . . . . . . . . . . . . . . . . 6.2.1 Simulação com 2000 usuários . . . . . . . . . 6.2.2 Simulação com vídeos de 12800 Kbps de SLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 39 39 40 43 45 45 7 Discussão 7.1 Heurísticas e estratégias auxiliares 7.1.1 Estratégias auxiliares . . . 7.1.2 Resultados das simulações 7.1.3 Superpeers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 48 48 49 49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Possíveis implementações . . . . . . . 7.2.1 Provedor IaaS . . . . . . . . . 7.2.2 Alocação de máquinas . . . . 7.2.3 Requisitando o arquivo . . . . 7.2.4 Saída e entrada de usuários no . . . . . . . . . . . . . . . . . . . . sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 50 51 51 54 8 Conclusões 55 Referências Bibliográficas 58 Capítulo 1 Introdução Content Delivery Networks (CDNs) são sistemas de servidores geograficamente distribuídos que visam distribuir conteúdo para usuários atendendo a um SLA (nível de serviço acordado entre o provedor e o cliente, do inglês Service Level Agreement). Esse tipo de serviço é utilizado, por exemplo, em sistemas de vídeo sob-demanda (video-on-demand, VoD) como o Netflix [10]. O interesse sobre sistemas VoD e a utilização de CDN aumentaram recentemente devido ao aumento do número de provedores de VoD (com grandes empresas entrando no mercado como HBO, Amazon e até provedores piratas como o PopCorn-Time), assim como a demanda por estes serviços. De fato mais da metade do tráfego de internet mundial é relacionado com a transferência de arquivos multimídia. De acordo com [13], P2P respondeu por 20 a 26% em 2008 e sistemas VoD, como o youtube, entre 30% e 40%, totalizando cerca de 66% do tráfego, enquanto que em 2012 somente o Netflix foi responsável por 29.7% do tráfego nos EUA [10], o número de usuários desses sistemas também é extremamente relevante. O Youtube por exemplo, tem ao menos 20 milhões de visualizações por dia [21]. Com o aumento do número de sistemas de VoD e também do número de usuários (somente o netflix contava com cerca de 40.3 milhões de usuários em 2013 [19]) , surge a necessidade de otimizar custos, a fim de manter um preço competitivo. Apesar de prático, o acesso a provedores de CDN muitas vezes não é financeiramente viável para pequenas ou médias empresas, além de frequentemente existir uma obrigação de contratar o serviço por períodos pré-estabelecidos [14]. Em paralelo ao crescimento dos sitemas VoD, também houve um acréscimo no número de provedores de Nuvem e das empresas os utilizando. Provedores de nuvem são empresas que oferecem softwares, plataforma de desenvolvimento ou infraestrutura como serviço. Ao invés de uma empresa de entrega de comida, por exemplo, comprar servidores para instalar os programas necessários para ofertar o serviço pela internet, ela pode alugar a quantidade necessária de servidores de provedores como Amazon AWS, Microsoft Azure ou Oracle Cloud para atender a demanda daquele momento. Com o crescimento desses provedores de infraestrutura na nuvem, surgiram estudos e serviços que visam utilizar estes provedores como um CDN. Um exemplo desse tipo de serviço é o MetaCDN.org, que mesclando o uso de provedores como o Amazon S3 e Nirvanix SDN [14], é capaz de funcionar como um CDN, porém sem a necessidade de 12 CAPÍTULO 1. INTRODUÇÃO 13 ter sua própria infraestrutura de servidores espalhados geograficamente. Como o custo dessa infraestrutura é compartilhado entre todos os clientes dos provedores de nuvem, é possível atingir preços menores. Esses sistemas são chamados de Cloud-CDN, pois utilizam a infraestrutura de provedores de nuvem ao invés de contratarem um serviço de CDN clássico [14]. Importante notar que tanto o CDN tradicional quanto o Cloud-CDN incluem também a arquitetura de cliente-servidor, onde o crescimento da quantidade de usuários acarreta também em crescimento da banda de saída utilizada nestes servidores. No caso da nuvem, onde um valor é cobrado pelo uso, isto pode acarretar em aumento do preço da solução [37]. Por sua vez, em sistemas P2P a distribuição de conteúdo normalmente é de responsabilidade dos próprios clientes, que dividem entre si o papel de cliente e servidor ao compartilhar um conteúdo. Explorar essa característica de sistemas P2P pode diminuir significativamente o preço da banda de saída de servidores nas nuvens [37], pois ao invés de o tráfego fluir da nuvem para os clientes múltiplas vezes, uma vez que este dado seja transferido da nuvem para algum(ns) cliente(s), a distribuição pode acontecer também entre os próprios clientes, evitando a cobrança por tráfego de saída do provedor de nuvem público. Essa combinação pode reduzir de forma significativa a banda de saída de um sistema VoD, por exemplo [21]. Esta combinação, quando feita de modo otimizado, pode cortar custos de empresas como o Netflix drasticamente, dada a sua dependência 1 atual de provedores de nuvem, ou mesmo possibilitar um aumento na competição por empresas menores. O próprio governo brasileiro2 , por meio da SAV (Secretaria do Audiovisual), órgão vinculado ao Ministério da Cultura, anunciou recentemente planos para um sistema VoD estatal utilizando redes P2P e CDN para distribuição do conteúdo, tornando o tema ainda mais relevante e mostrando sua aplicabilidade em sistemas reais. A proposta aqui apresentada visa minimizar o custo de aplicações VoD utilizando a arquitetura P2P-Cloud CDN. Nesta arquitetura, somente a empresa provedora do vídeo sob demanda pode disponibilizar arquivos na rede. Para minimizar o custo do aluguel de servidores da nuvem são propostas três categorias de heurísticas que visam determinar a melhor quantidade de máquinas alugadas do provedor de nuvem computacional, levando em conta o número de usuários no sistema e de interrupções sofridas pelos usuários. As heurísticas propostas focam na qualidade de experiência do usuário e não no uso dos recursos de rede. Como contribuições desta dissertação, elencamos a arquitetura P2P-Cloud CDN proposta, as heurísticas para alocação de máquinas na nuvem e um conjunto de protocolos necessários para o funcionamento do sistema proposto. Além disso, uma breve discussão de possíveis implementações eficientes deste sistema é apresentada. Este trabalho se divide da seguinte forma. No Capítulo 2, são definidos os conceitos básicos importantes para a dissertação. Seguido pelo Capítulo de trabalhos relacionados (3), onde é realizada uma revisão da literatura e são apontados projetos relacionados com 1 https://media.netflix.com/en/company-blog/completing-the-netflix-cloud-migration http://fernandorodrigues.blogosfera.uol.com.br/2016/03/11/governo-dilma-gasta-r-10-milhoes-paracriar-netflix-brasileiro-estatal/ 2 CAPÍTULO 1. INTRODUÇÃO 14 o tema e suas principais diferenças. O Capítulo 4 trata diretamente do sistema proposto, descrevendo os atores do sistema, separação de camadas, fluxo e protocolos. Seguindo com a apresentação, o Capítulo 5 trata do modelo das heurísticas. O Capítulo 6 define as simulações realizadas, enquanto que o Capítulo 7 apresenta uma discussão dos resultados obtidos. E, finalmente, o Capítulo 8 conclui o trabalho, resumindo os resultados obtidos, comparando-o com o intuito inicial e propondo trabalhos futuros. Capítulo 2 Conceitos básicos Neste capítulo são definidos os conceitos básicos utilizados ao longo do texto: computação em nuvem, protocolos P2P, Cloud CDN e P2P-Cloud CDN. 2.1 Computação em nuvem A computação na nuvem permite que empresas e pessoas físicas aluguem máquinas e serviços sem precisar lidar com o custo de comprar e gerenciar servidores e infraestrutura computacional. Normalmente, os provedores de computação na nuvem cobram somente pelo uso e permitem o aluguel de diversas máquinas, dando a impressão de infinidade de recursos computacionais. Um exemplo de provedor de nuvem é a Amazon [2], que provê tanto serviços, como recursos computacionais. A computação na nuvem é normalmente dividida em IaaS (infraestrutura como serviço, do inglês Infrastructure as a Service), PaaS (plataforma como serviço, do inglês Plataform as a Service) e SaaS (software como serviço, Software as a Service). Empresas que provêem IaaS alugam seus servidores virtualizados para clientes. Já PaaS é fornecido por empresas como Microsoft (Windows Azure [3]), Google (Google App Engine [1]) e Heroku [6]. Essas empresas fornecem uma plataforma de desenvolvimento, facilitando o desenvolvimento de aplicações e eliminando a necessidade de configuração de diversos softwares, como banco de dados, servidores, gerentes de cache, entre outros. Os serviços fornecidos por um provedor de SaaS por sua vez, são softwares fornecidos sem a necessidade de se configurar, pagando-se normalmente por uso ou por um custo fixo. Exemplos de SaaS vão desde e-mails, como o GMail, até sistemas de vídeo, como o Netflix. O aluguel por unidade de tempo de utilização em IaaS permite que as empresas utilizem somente o necessário para atender a demanda de um dado momento, aumentando ou diminuindo o número de máquinas conforme os horários do dia ou período do ano. Por exemplo, o provedor de infraestrutura nas nuvens Heroku disponibiliza diversos softwares para serem utilizados em sua plataforma, entre eles o Adept Scale, que visa aumentar de forma automática o poder computacional alugado no Heroku com base na demanda que o sistema está recebendo[6]. Dessa forma não é necessário que o próprio usuário monitore a demanda para balancear a infraestrutura alugada. Um exemplo de uso de provedores de nuvem é o Netflix, serviço de VoD que mantém 15 CAPÍTULO 2. CONCEITOS BÁSICOS 16 uma base de filmes e seriados que podem ser requisitados por seus clientes. Para reproduzir os vídeos são utilizadas instâncias de máquinas na nuvem da amazon [7], juntamente com o Amazon Auto Scale (AAS). O AAS é um serviço disponibilizado na nuvem da Amazon que controla o aluguel de máquinas a partir do número de requisições no momento. Os clientes do Netflix assistem o vídeo por stream 1 na Internet, não podendo armazenar os vídeos para assistirem desconectados. Cada provedor de IaaS provê a alocação de máquinas em diferentes regiões por preços diferentes. Por exemplo, na Amazon EC2 uma máquina na área central dos EUA é mais barata que uma máquina no sudeste do Brasil. Os principais provedores de nuvem incluem a Amazon e a Microsoft. Atualmente a Amazon é a empresa com maior fatia do mercado 2 , seguida pela Microsoft. Ambas as empresas oferecem máquinas virtuais de configurações variadas. As instâncias variam de acordo com o poder computacional e a região escolhida. Ambas as empresas oferecem a possibilidade de utilizar imagens de sistemas operacionais criadas pelos usuários. Ambas as empresas não cobram pelo tráfego de entrada das instâncias, porém cobram pela quantidade de gigabytes que saem das instâncias para fora da rede local. A principal diferença entre as duas competidoras é que a Microsoft cobra diferentes valores dependendo do local da saída de dados (separando em basicamente três zonas, o Brasil sendo a zona mais cara). Neste trabalho é utilizado um IaaS como fonte das máquinas utilizadas no sistema VoD. São considerados tanto o custo das máquinas, sendo cobrado por unidade de tempo em que a máquina permanece ligada, como o custo de saída de dados da nuvem. 2.2 Protocolos P2P Redes Peer-to-Peer são redes onde o paradigma de cliente-servidor é compartilhado pelos nós da rede. Cada nó é responsável tanto por responder requisições de outros clientes na rede, como agir como um cliente. Estas redes são amplamente utilizadas para compartilhar conteúdo, sejam filmes, seriados ou outros arquivos. Também é possível compartilhar recursos computacionais, como no caso da freenet [4, 17], onde os usuários da rede compartilham espaço em disco para armazenar dados de forma anônima. Os nós participantes são responsáveis pela configuração da rede overlay. A rede overlay é uma rede montada virtualmente pelos nós para interligar todos os usuários (Figura 2.1). A rede overlay deve conseguir manter os nós conectados, mesmo se algum dos nós vier a sair, e deve ser eficiente para evitar gargalos por conta da rede física. Esta rede não precisa ser parecida com a rede física e nós podem ser vizinhos na rede overlay mas não na física e vice-versa. Diversos sistemas de VoD utilizando protocolos P2P surgiram nos últimos anos, entre eles o popcorn-time [8]. O popcorn utiliza uma modificação do protocolo bittorrent [5, 9] para prover o vídeo requisitado pelo usuário. O protocolo bittorrent divide o arquivo 1 Stream de arquivos em geral, pode ser definido como o ato de receber ou enviar dados pela internet por um fluxo contínuo, sem a necessidade de esperar a transferência do arquivo inteiro antes de usá-lo. 2 http://uk.businessinsider.com/why-amazon-is-so-hard-to-topple-in-the-cloud-and-where-everybodyelse-falls-2015-10 CAPÍTULO 2. CONCEITOS BÁSICOS 17 Figura 2.1: Exemplo de overlay de uma rede P2P: as conexões entre os nós não necessariamente refletem a conexão na rede física. em diversas partes e requisita estes pedaços aos usuários que já têm o arquivo em seu computador. Normalmente, o bittorent faz requisição dos pedaços (chunks) mais raros primeiro, para evitar que os poucos nós que já obtiveram aquele chunck se desconectem da rede e façam com que seja impossível o término da transferência do arquivo. Essa abordagem, apesar de boa para arquivos, é ruim para streams de vídeo [30, 24]. Uma das modificações que o popcorn-time implementa envolve a requisição dos chunks. Ao invés de requisitar os raros primeiro, ele procura requisitar os chunks sequencialmente [5]. Outras pequenas modificações no protocolo podem ser implementadas, como por exemplo em [32], onde os nós da rede também reportam sua capacidade de upload para o tracker a fim de medir a quantidade deste recurso computacional disponível na rede. Como as máquinas dos usuários são utilizadas como cliente e servidor, o serviço é composto por máquinas e redes heterogêneas não sendo possível afirmar se os nós da rede permanecerão por um longo tempo ligados ou serão desligados em poucos segundos. Além disso, não se pode contar que ao sair do sistema os usuários irão enviar uma mensagem avisando aos outros participantes para removê-lo de suas listas de IPs. O sistema P2P é utilizado neste trabalho como uma forma auxiliar de se distribuir o conteúdo dos vídeos. Desta forma, sua única responsabilidade é diminuir a banda de saída dos servidores da nuvem, mas não necessariamente substituí-los. 2.3 Cloud-CDN Com o advento da computação nas nuvens, a construção de um CDN sem o alto custo de operar um data center geograficamente distribuído é possível. Estes CDNs, em oposição ao CDN tradicional, são definidos em [14] como Cloud-CDN, onde os usuários podem CAPÍTULO 2. CONCEITOS BÁSICOS 18 Figura 2.2: Arquitetura do MetaCDN.org [12] construir seu CDN global simplesmente se tornando consumidores de diversos provedores de armazenamento na nuvem. A arquitetura do sistema MetaCDN.org (Figura 2.2), descrito em [14] demonstra a capacidade do Cloud-CDN de se adaptar a diversos provedores, deixando transparente o uso em conjunto destes. Além disso, o Cloud-CDN pode escolher qual o provedor mais barato, capaz de cumprir o SLA de uma certa região. Porém esta escolha não é trivial, pois há a necessidade de se considerar tanto o preço para transferir o dado para o usuário, como o preço da duplicação dos dados entre os provedores (custo de se transferir o arquivo entre os servidores e custo de armazenamento) [14]. Como consumidor de provedores de armazenamento na nuvem, o Cloud-CDN pode tirar vantagem dos preços oferecidos por diferentes provedores, a fim de reduzir sua própria despesa. Com o poder de escalar de acordo com a demanda provida pela computação nas nuvens, Cloud-CDNs podem ajustar o preço a ser cobrado de seus clientes de acordo com a demanda requisitada por eles [14]. Por outro lado, são necessárias estratégias para o gerenciamento de máquinas na nuvem conforme a demanda. Alugar máquinas somente nos períodos de alta demanda pode levar o sistema a deixar de responder alguns usuários, pois iniciar uma máquina na nuvem pode levar de segundos a minutos, dado a necessidade de requisitar a máquina e instalar os softwares para o funcionamento da máquina no sistema. Além disso, há a possibilidade do provedor não ter máquinas disponíveis em uma certa região. Para a redução do tempo de instalação dos programas necessários, é possível utilizar imagens de sistema operacionais customizadas para o Cloud-CDN. 2.4 P2P-Cloud CDN A união da rede P2P e de provedores Cloud para a criação de um CDN é chamada de P2P-Cloud CDN [21]. Esses sistemas utilizam-se da alta escalabilidade, redundância e CAPÍTULO 2. CONCEITOS BÁSICOS 19 Figura 2.3: Arquitetura de um sistema P2P-Cloud CDN: o usuário u (círculo rosa) faz requisições para o grupo de usuários U (círculo verde) e para o CDN (retângulo azul). As duas fontes compartilham o arquivo b (arquivo de vídeo) simultaneamente com u. distribuição geográfica da nuvem computacional para prover um CDN de menor custo, se comparado com o custo de um CDN tradicional. Além disso, possibilita que os usuários compartilhem entre si os arquivos de vídeo, o que minimiza o custo da banda de saída dos servidores da nuvem. Dessa forma, a nuvem (por sua característica estável) pode orquestrar o envio dos arquivos da rede P2P para os usuários e prover o próprio arquivo caso a demanda do arquivo não seja suprida pela rede P2P. Por outro lado, a rede P2P pode focar em prover os arquivos aos usuários, por sua característica natural de compartilhamento de recursos. Com a combinação de um CDN e uma rede P2P, um usuário u que deseje um vídeo b requisitará ao CDN o arquivo. O CDN por sua vez, iniciará a transferência dos dados, e também enviará uma lista contendo o endereço de outros usuários U assistindo ao mesmo vídeo. O usuário, pode então requisitar trechos do arquivo b para todos os usuários de U (Figura 2.3). Quanto mais pedaços ele requisitar do conjunto U , menor será o custo dos servidores CDN para enviar aquele arquivo, porém pela característica instável da rede P2P, o vídeo b pode ser transferido mais lentamente. Nesta dissertação apresentamos uma arquitetura P2P-Cloud CDN e propomos heurísticas que visam minimizar o custo final do sistema, sem denegrir a qualidade de experiência do usuário. Capítulo 3 Trabalhos Relacionados No problema de alocação de recursos em P2P-Cloud CDN, o custo está correlacionado com a qualidade de serviço, pois além de não deixar os clientes em inanição, é necessário prover uma vazão que dê ao usuário uma boa experiência. Geralmente há um compromisso entre custo e QoS. Para cumprir com o QoS, os autores de [14] criaram algumas heurísticas focadas em replicar os arquivos entre os diversos provedores de armazenamento nas nuvens, a fim de manter o SLA baseado na distância do usuário ao servidor da nuvem. Estas heurísticas levam em consideração o orçamento do usuário e as regiões onde o cliente pretende que o arquivo seja acessado. Para otimizar o custo neste caso, além do custo das máquinas alugadas, é necessário adicionar o custo do upload e download de cada instância. Para isto, [14] utiliza nas heurísticas o custo de se replicar os dados entre os provedores, além da distância do usuário ao provedor. Os autores de [14] não citam o funcionamento ou o desempenho dessas heurísticas, porém focam em seu artigo nas abstrações criadas pelo serviço MetaCDN.org, que visa ser um ponto central de comunicação para desenvolvedores que queiram usar diversos provedores de armazenamento na nuvem sem a necessidade de aprender e utilizar diferentes SDKs. Já o Netflix, contrata três diferentes CDNs (Akamai, LimeLight e Level-3) e utiliza o protocolo DASH (Dynamic Streaming over HTTP) [10]. O DASH é um protocolo, onde cada vídeo é salvo com diferentes qualidades e é dividido em pequenos “chunks” (segmentos de vídeo de alguns segundos). O cliente requisita um chuck por vez. A cada download o cliente decide qual a qualidade do chunk da próxima requisição. O Netflix ainda possui um software para prever picos de uso chamado Scryer [7]. A ideia do sistema é prever quando haverá um aumento de audiência, para que o Netflix possa alugar novos servidores na nuvem da Amazon a fim de suprir estes usuários sem degradar seu serviço. Exceto em dias especiais como feriados ou em grandes eventos, os acessos ao Netflix seguem um padrão. O Scryer então se baseia no padrão do passado para tentar prever os acessos do futuro, aumentando ou diminuindo a quantidade de servidores. O Scryer é utilizado em conjunto com o Amazon Auto Scale (AAS) [7]. O AAS tem como foco aumentar a quantidade de servidores na nuvem da Amazon quando o sistema começa a receber uma quantidade de requisições parametrizável. O AAS funciona perfeitamente, mas as máquinas do Netflix demoram de 10 a 45 minutos para iniciar 20 CAPÍTULO 3. TRABALHOS RELACIONADOS 21 [7]. Aumentar a quantidade de máquinas somente quando o sistema começa a receber muitas requisições pode fazer com que alguns usuários não tenham o QoS esperado, principalmente em picos repentinos. Por isso o Scryer é tão importante: ao tentar prever a demanda, é possível iniciar as máquinas em um tempo hábil, evitando degradação do serviço. Em experimentos feitos pelos autores de [10], foi constatado que o Netflix escolhe um CDN para o usuário e só o substitui caso não seja possível cumprir nem com o QoS para baixa resolução. Esta escolha permanece a mesma durante semanas, até mesmo se o usuário acessar sua conta de lugares afastados, parecendo não levar em conta a posição geográfica do usuário, pois dois usuários vizinhos podem estar se alimentando de dois CDNs diferentes. Por isso, em [10] os autores propuseram um sistema, onde o reprodutor de vídeo estima qual CDN está melhor logo no começo do vídeo e faz com que o usuário fique alocado a ele. No artigo [11] é utilizado um “Layered streaming”. Layered streaming, como por exemplo o Scalable Video Coding (SVC), separa o vídeo em diferentes camadas. Se o usuário requisitar todas as camadas, ele terá um vídeo na melhor qualidade disponível, porém se requisitar somente a primeira, terá a mais baixa do sistema. Partindo do pressuposto que a banda de entrada/saída dos usuários tem um grande impacto na qualidade de sistemas de stream utilizando P2P, o artigo descreve um sistema de leilão para adquirir estas camadas do vídeo, visando otimizar o uso da banda de entrada/saída dos usuários, maximizando a escolha dos chunks. Os autores de [11] também supõem a utilização de uma categoria especial de peers, chamada de upstream peers, que são responsáveis por servir os downstream peers. Os downstream peers “competem” pela banda de saída do upstream, oferencendo uma certa quantia de “dinheiro virtual ” para eles. Cada peer tem um orçamento para definir a máxima oferta. Para satisfazer uma qualidade mínima, todos os nós tem direito ao layer básico, ofertando mais dinheiro para conseguir um vídeo em maior definição. Com este modelo de leilão, foi observada uma maior capacidade de utilização da banda de saída dos nós da rede P2P. Apesar do presente trabalho não utilizar o esquema de leilões, considera alguns critérios para a utilização da banda de saída dos nós. Apenas nós selecionados efetivamente colaboram com o stream como se fossem um servidor da nuvem, enquanto que os demais colaboram com os últimos pedaços, porém em caso de perda de pacotes deste último, o stream não é afetado. Em [21], é definido que a prioridade de um sistema de VoD com assistência de peers é economizar a banda de saída dos servidores. Por isso o servidor deve ser usado somente para suprir a demanda que os peers não são capazes de responder. Utilizando a política de water-leveling, o sistema conseguiu uma eficiência próxima do limitante inferior de banda para o problema utilizando servidores próprios. O water-leveling visa equalizar a quantidade de conteúdo pré-alocado para todos os nós da rede. Por exemplo, se um nó tem uma quantidade menor de arquivo que os demais – pois acabou de entrar no sistema –, os servidores irão se focar neste nó. Quando o nó alcançar a mesma quantidade de bytes no arquivo que os demais, os servidores voltam a servir normalmente todos os peers, tentando sempre manter o equilíbrio. Com dados de nove meses de uso do website MSN Vídeos, os autores simularam a utilização do website utilizando uma rede P2P para CAPÍTULO 3. TRABALHOS RELACIONADOS 22 auxiliar o envio de dados, utilizando a política water-leveling. Enquanto que o pico do sistema sem P2P chegou a utilizar 1.5 Gbps de banda do servidor, o sistema com P2P utilizou cerca de 0.6 para os arquivos. Os autores de [21] também levantam a necessidade do P2P levar em consideração a posição geográfica dos usuários para ser amigável com provedores de internet (ISP, Internet Service Provider). O tráfego que cruza diferentes ISPs gera um custo para ambos os lados, enquanto que o tráfego dentro da própria rede do ISP não. Este tipo de sistema diminui a utilização de infraestrutura dos ISPs para a distribuição de conteúdo, mas por outro lado torna o compartilhamento dos usuários mais difícil, já que uma região com poucos usuários não se beneficiará da rede P2P como uma região mais populosa. Porém, mesmo este cenário se beneficia da rede P2P, diminuindo a utilização dos servidores. Ao invés de todos os nós trocarem os arquivos, é possível eleger super nós (por alguma característica dos clientes, como idade do nó no sistema, banda de saída e entrada, entre outros). Esses super nós seriam responsáveis por repassar dados para os nós comuns. Além disso, é possível distribuir o controle do sistema P2P entre os super nós, fazendo com que eles sejam responsáveis por pequenos sub-grupos [29]. Em [29], os autores tentam identificar o tráfego gerado por superpeers em uma rede P2P privada como o KaAza. Dado que em muitos sistemas, o usuário não é notificado que seus recursos computacionais estão sendo utilizados de uma maneira mais agressiva para alimentar a rede. O trabalho foca em heurísticas para verificar o uso de CPU e de rede para classificar peers como ordinários ou super peers. Sistemas VoD implementados usando somente a rede P2P dividem o arquivo de vídeo em segmentos, que são distribuídos entre os nós da rede. Neste ambiente um dos requerimentos mais importantes é ser eficiente em descobrir quais usuários tem certos segmentos de vídeo [33]. Em[33], é proposto um sistema dinâmico e distribuído para a busca de meta-dados sobre o vídeo (juntamente com os segmentos) em um Cloud-P2P VoD. Para isso divide o sistema em duas partes: a nuvem, responsável pela busca de meta-dados do vídeo e a rede P2P responsável pela busca e envio de segmentos de vídeo. O estudo se difere principalmente por utilizar nós da rede P2P que já obtiveram todo o arquivo como trackers, enquanto que nesta dissertação o tracker é um nó estático da nuvem. Outro ponto de divergência está na utilização da nuvem: o presente trabalho utiliza a nuvem para coordenar os nós da rede P2P além da responsabilidade de colaborar com o stream, enquanto que [33] mantém somente os meta-dados necessários armazenados na nuvem. A arquitetura de [33] se mostrou eficiente para a busca de pedaços aleatórios do arquivo na rede P2P. Por outro lado, pode causar um aumento no tempo de resposta nos servidores de stream, caso o número de trackers não seja bem manejado. Em [26, 27], os autores estudaram a sinergia entre CDN e redes P2P para entregar vídeos em um sistema similar ao Youtube. Os autores demosntraram que 60% de todas as requisições poderiam ser resolvidas somente pela rede P2P. Em [26], os autores estudaram o papel de peers estáveis na disponibilidade do conteúdo. Usuários reproduzindo listas de vídeos eram marcados como estáveis e os usuários utilizando o sistema de recomendação como instáveis. Usando estas duas categorias, as requisições respondidas pelo CDN podiam ser reduzidas em até 60%. Em [27], utilizando uma rede P2P menos eficiente, onde os peers eram responsáveis pelo mecanismo de pesquisa, 20% das requisições podiam ser CAPÍTULO 3. TRABALHOS RELACIONADOS 23 respondidas somente pelos peers. A LiveSky [35] utiliza de uma arquitetura similar a desta dissertação para transmitir eventos ao vivo [35]. O sistema em produção utiliza uma rede CDN auxiliada por uma rede P2P. Apesar de não usar um provedor de nuvem para adquirir novas máquinas, a LiveSky endereça pontos chaves da arquitetura P2P-Cloud CDN, como: • Prover uma boa qualidade de serviço para o usuário, garantido o início da transmissão o mais rápido possível, poucas interrupções, etc. • Problemas bem conhecidos de sistemas P2P, como a baixa qualidade da transmissão, taxa de banda de saída e entrada heterogênea, diferente taxas de contribuição entre os usuários. O CDN em [35] é separado em três componentes: (i) O Centro de Controle, (ii) o balanceador de carga por DNS e (iii) o servidor de cache. O terceiro item é responsável pela distribuíção do conteúdo aos usuários. Os usuários se dividem em usuários legados (sem o componente de P2P) e usuários com o LiveSky habilitado, que se beneficiam da rede P2P. Os usuários da rede P2P são organizados em forma de árvore. É considerado que todos os usuários no mesmo nível da árvore recebem um determinado pedaço ao mesmo tempo. O CDN alimenta a raiz da árvore e os usuários são responsáveis por repassar o conteúdo aos demais níveis. Para a avaliação do sistema os autores de [35] utilizaram o 17 Congresso do Partido Comunista Chinês. No ponto de pico da transmissão, havia 145.000 clientes. A contribuição para o envio dos dados foi de 35 Gbps partindo dos nós do CDN e 17 Gbps dos nós da rede P2P. Em [34] são simulados cenários de Cloud-P2P CDN utilizando o framework OMNeT++. A arquitetura apresentada é parecida com a deste trabalho, porém não é levado em conta o custo de se transferir dados da nuvem, somente o número de máquinas alocadas na nuvem. Também não considera o uso de nós da rede P2P em diferentes papéis, como superpeers. Além disso, a definição de qualidade de serviço é diferente. Enquanto neste trabalho consideramos o número de interrupções durante a visualização do vídeo, em [34] é considerado a latência do playback, o delay ponto a ponto (quanto tempo demora para um dado ser transferido), o número de distorção (número de chunks que um usuário não pode visualizar no tempo correto) e tempo para início do vídeo. Pelo foco da dissertação estar no nível de aplicação e não de rede, não são considerados fatores como latência nas heurísticas. Os trabalhos aqui citados, se aproximam do presente trabalho, porém apresentam diferenças tanto no tema de estudo, como na arquitetura empregrada. O artigo [11] se diferencia por não utilizar a nuvem ou outro servidor próprio para auxiliar o envio de vídeos. O sistema estudado em [10] da empresa Netflix, não utiliza a nuvem como CDN, somente provedores tradicionais de CDN. Enquanto que em [14] é desenvolvido um sistema de Cloud-CDN, porém sem a utilização da rede P2P para minimizar o custo dos servidores, assim como [7]. A camada de coordenação de servidores nas nuvens visa replicar os dados entre diferentes provedores, de acordo com o SLA e custos máximos definidos para a solução. Em [14] são descritas algumas heurísticas para este problema. Porém o problema difere do nosso por não precisar levar em consideração a taxa de upload CAPÍTULO 3. TRABALHOS RELACIONADOS Caractéristicas P2P CDN ou Nuvem? Conteúdo ao vivo? 24 Tabela 3.1: Comparação entre as arquiteturas Proposta Sim Nuvem Não Netflix Não CDN/Nuvem Não LiveSky Sim CDN Sim MetaCDN.org Simulação com o MSN videos [21] Popcorn-time Não Sim Sim Nuvem CDN Nenhum Não Não Não da rede P2P. Assim, o custo de nossa proposta tende naturalmente a ser menor, já que é possível provar trivialmente que a banda de saída de nossos servidores diminui sempre que a banda de compartilhamento da rede P2P aumenta. Já em [21] é utilizada uma rede P2P para auxiliar o servidor no stream de vídeos, mas não é levado em conta o QoS necessário para o usuário. O trabalho em [31] utiliza a nuvem apenas como auxiliar da rede P2P, ao invés de utilizar a rede P2P apenas para reduzir o custo da nuvem. Os autores de [26, 27] se focam no estudo dos nós estáveis da rede, enquanto esta dissertação estuda o efeito da alocação de servidores no stream de vídeo. E [33] utiliza provedores de nuvem somente para auxiliar na busca por meta-dados na rede (como transcrição do vídeo, título e palavras-chaves). Os principais trabalhos relacionados podem ser vistos na tabela 3.1. Capítulo 4 O sistema Neste capítulo a arquitetura do sistema proposto é introduzida, com uma breve definição dos atores do sistema, juntamente com a divisão dos componentes e os protocolos utilizados. 4.1 Atores do sistema Os atores do sistema são separados em três grandes grupos com suas próprias divisões. Servidores da nuvem, que são alugados de provedores, usuários requisitando os vídeos e superpeers, usuários que colaboram de forma mais efetiva no compartilhamento de dados. 4.1.1 Provedor do sistema de vídeo sob demanda No sistema proposto na dissertação, o único ator capaz de disponibilizar vídeos é a empresa provedora do VoD. Agindo como o Netflix, onde a empresa faz acordos comerciais com estúdios e emissoras de TV para disponibilizar o vídeo em seu próprio sistema. Usuários não são capazes de enviar seus próprios arquivos para a rede. 4.1.2 Servidores da Nuvem As máquinas alocadas na nuvem (S) são dividas em duas categorias. Os trackers (um por região) e os servidores responsáveis pela transmissão do vídeo. A máquina alocada para o tracker é alugada por todo o período que o sistema está online, enquanto que as máquinas responsáveis pela transmissão do vídeo são alocadas de acordo com as estratégias adotadas. É possível utilizar um serviço como o Simple Storage System (S3) da Amazon para armazenar todos os vídeos disponíveis no CDN. Como a transferência dentro da própria rede da Amazon é gratuita, a transferência para as máquinas virtuais seriam gratuitas, sendo cobrado somente o custo do armazenamento e do envio dos vídeos ao S3. A máquina virtual ao iniciar, poderia requisitar ao S3 o conteúdo. Caso um usuário requisite um pedaço do arquivo que a máquina ainda não tem em disco, a máquina provocaria uma exceção (page-fault) e redireciona a requisição diretamente para o S3. 25 CAPÍTULO 4. O SISTEMA 26 Figura 4.1: Usuário u recebe pedaços de Chunk em round-robin dos Servidores a, b e dos Superpeers l, m. Porém neste trabalho não se considera a cópia do arquivo entre a fonte (por exemplo o S3) e as máquinas alugadas, sendo considerado que a máquina ao iniciar já estará com o vídeo em seu sistema de armazenamento interno. Além disso para simplificar o problema, é utilizado somente um tipo de instância (processador, quantidade de memória e armazenamento interno). O custo neste trabalho considera tanto o preço do aluguel das máquinas como a transferência de dados para o usuário, sendo os preços baseados na Amazon EC2. 4.1.3 Usuários Os usuários (U ) do sistema colaboram com a transmissão de dados assim que obtiverem os primeiros chunks do vídeo. Ao fazerem a requisição ao tracker requisitando um filme, eles obtêm como resposta os endereços de IP dos servidores e usuários capazes de compartilhar o vídeo. O próprio usuário requisita para toda a lista de IPs os pedaços necessários, utilizando round-robin(Figura 4.1, onde o usuário u começa requisitando ao servidor a passando para b e aos superpeers l, m, em cada turno, respectivamente). Enquanto que servidores entregam os chunks em ordem cronológica, os demais usuários que estão fornecendo os chunks entregam de trás para frente. Dessa forma o progresso sequencial do vídeo não é afetado caso os usuários deixem o sistema repentinamente ou sejam sobrecarregados com requisições. 4.1.4 Superpeers e organização dos usuários Os superpeers (P ) neste sistema são usuários que colaboram com o sistema da mesma forma que servidores (compartilhando os pedaços em ordem cronológica). Superpeers são divididos em dois grupos. Os seeders, usuários que tem o arquivo de vídeo completo em seu sistema de armazenamento e os superpeers escolhidos por mecanismos de gerência do sistema para colaborar com o sistema. Este sistema de gerência ordena os usuários em ordem decrescente de tempo de entrada no sistema e escolhe os primeiros da lista. Os superpeers são escolhidos dentre os usuários que já baixaram mais de 30 chunks pelas heurísticas sempre que necessário. Como usuários que estão há mais tempo no sistema também são aqueles que estão perto do final do vídeo, uma outra estratégia poderia dar preferência aos usuários que estão no tempo médio do vídeo dentre todos os usuários daquele vídeo, assim eles teriam CAPÍTULO 4. O SISTEMA 27 em seu dispositivo de armazenamento uma quantidade maior de segmentos de vídeo que a média dos usuários e ainda permaneceriam no sistema por um período maior que usuários que já estão no fim do vídeo. Um superpeer não pode ser “rebaixado” ao papel de peer uma vez escolhido. Porém o usuário ainda pode se desconectar da rede, fazendo com que o número de superpeers possam variar em sistemas reais. Nas simulações é considerado que os superpeers são nós estáveis e permaneceram no sistema até o final. A lista de superpeers, assim como de todos os usuários participantes da rede P2P, é mantida em servidores da nuvem (chamados de Trackers). Esses servidores são responsáveis por notificar os outros usuários da presença de um novo superpeer, mantendo assim os superpeers apenas como uma fonte para o arquivo sem delegar a responsabilidade por manter meta-dados do sistema. Quando um usuário finaliza o recebimento do vídeo, ele avisa o Tracker, que passa a considerá-lo como superpeer. Utilizando os superpeers apenas como canais de distribuição de conteúdo, ao invés de terminais inteligentes, eliminamos a necessidade de criar estratégias para eliminar a latência inicial da busca por meta-dados na rede P2P. Por exemplo, em [33] é descrito um sistema onde os próprios nós da rede P2P agem como tracker e são os responsáveis por encontrar meta-dados sobre os arquivos multimídia armazenado nos nós, pois não é possível saber ante-mão quais os vídeos disponíveis na rede. Desta forma há a necessidade de organizar os peers em árvores AVL e tabelas hash distribuídas (Distributed Hash Tables, DHT) ou utilizar outros tipos de algoritmos para recuperar esses meta-dados. Desta forma, a arquitetura de [33] não mantém um único ponto de falha, enquanto que a arquitetura aqui proposta mantém uma dependência das instâncias de máquinas no provedor de nuvem. Também em [18] é dito que uma desvantagem da utilização do P2P em comparação a arquiteturas cliente-servidor utilizando unicast decorre da maior latência para o início da exibição de um vídeo, dado a necessidade de se trocar mensagens para descobrir quais outros usuários possuem o conteúdo desejado. Como neste trabalho essa informação é armazenada centralmente no Tracker, não é necessária a troca de informações iniciais, removendo está latência inicial. 4.2 Divisão do sistema A primeira requisição do usuário é feita para o tracker regional. O tracker é responsável por manter uma lista de todos os usuários conectados no sistema e dos servidores disponíveis. É neste servidor que o banco de dados é alocado e é o ponto central de comunicação. Qualquer outro componente que precise armazenar ou coletar dados terá que conversar com o tracker. O tracker responde a requisições de usuários pelos filmes com duas listas de IPs, uma com os servidores da nuvem e superpeers e a outra com usuários que estão ativos e assistindo ao mesmo filme (Figura 4.2). A transmissão inicial do arquivo multimídia é realizada por máquinas alocadas na nuvem. Estas máquinas são responsáveis somente pelo envio do arquivo e respondem as requisições por chunks dos usuários, sem conter nenhum tipo de lógica interna. As estratégias apresentadas nesta dissertação, precisam de algumas informações para CAPÍTULO 4. O SISTEMA 28 Figura 4.2: Fluxo do Tracker ao receber uma requisição do usuário. decidir a ação a ser feita. Estas informações e coordenação das estratégias é realizada pelo componente de monitoramento, que inclui um banco de dados onde há salvo o número de usuários no sistema, número de servidores, número de interrupções no vídeo causado pela falha em conseguir os dados necessários para aquele momento de exibição e número de supeerpeers. As interrupções (Di) são calculadas pelos próprios usuários. As interrupções são computadas numa escala de x minutos e ocorrem quando chunks_recebidos ⇥ tamanho_chunk é menor que QoE_KBP S ⇥ playback_window, onde chunks_recebidos é o número de chunks recebidos cujo o prazo de playback está na janela deslizante atual e QoE_KBP S é a quantidade em kilobytes de dados que precisa ser entregue por segundo para evitar uma interrupção. playback_window é a diferença de tempo entre o momento atual e o inicio da transmissão. Na Figura 4.3 é possível ver a representação visual desse cálculo, onde o usuário (a) não sofre interrupção em seu vídeo, dado que a quantidade de chunks recebidos (chunks_recebidos) é maior que QoE_KBP S ⇤ playback_window considerando somente os chunks anteriores a playback_window, enquanto que o usuário (b) sofre uma interrupção. O número de interrupções de cada usuário é enviada para o tracker, que agrega todos os valores. O fluxo do componente pode ser visto na imagem 4.4. 4.3 Protocolos Para simplificar as simulações realizadas com as heurísticas propostas, foram criados dois protocolos para a transmissão do vídeo. Os servidores e superpeers utilizam-se de um protocolo onde o cliente não precisa enviar todo o estado da transmissão, bastando enviar uma mensagem com o identificador do chunk necessário, como na estrutura JSON: “{identificador: 10}”. Como resposta, o usuário recebe em binário o chunk requisitado. Já no caso da comunicação entre os peers, é necessário que o requisitante envie o CAPÍTULO 4. O SISTEMA 29 Figura 4.3: Representação visual do cálculo das interrupções. Onde playback_window representa um intervalo de tempo, e QoE_KBP S ⇤ playback_window todos os chunks que deveriam ter sido visualizados pelo usuário até aquele instante. Figura 4.4: Fluxo do sistema de monitoramento. CAPÍTULO 4. O SISTEMA 30 estado atual do seu “mapa de chunks” (um vetor binário onde cada posição representa se o usuário recebeu ou não o respectivo chunk), para que o peer consiga enviar o primeiro pedaço em ordem inversamente cronológica. A resposta do peer para a requisição é o chunk em formato binário. Do lado do usuário, são utilizados dois componentes: o orquestrador e o monitor. O Orquestrador é responsável por requisitar os pedaços do arquivo de vídeo para os servidores e outros usuários da rede P2P (utilizando o protocolo descrito acima). Já o Monitor é responsável por monitorar as interrupções e enviar ao Tracker o estado atual do usuário. O Tracker contém seis métodos, todos relacionados com o estado do sistema: • requisitar_f ilme: Este é o ponto inicial do sistema. O aplicativo do usuário ao acessar o sistema do provedor de vídeo chama este método passando seu próprio IP e o identificador único do filme. Retorna uma lista de IPs de usuários assistindo o mesmo filme, servidores e superpeers. • adicionar_servidor: Sempre que um servidor é ligado, este método é chamado para o adicionar à lista de servidores disponíveis. Este método recebe uma lista de identificadores únicos dos filmes disponíveis no servidor, juntamente com o IP do servidor. • remover_servidor: Método chamado quando um servidor é desligado, recebendo como parâmetro o IP do servidor a ser desligado. • listar_servidores: Retorna o IP de todos os servidores ligados. • listar_superpeers: Retorna o IP de todos os superpeers. • estatisticas: Este método é chamado pelo componente de monitor para salvar no banco de dados do sistema o estado da execução do vídeo de um usuário. Recebe como parâmetros o endereço IP do usuário, quantidade de interrupções e quantidade de segmentos de vídeo disponíveis no sistema de armazenamento do usuário. • obter_estatisticas: Recebe o IP do usuário como parâmetro e retorna a quantidade de interrupções e quantidade de segmentos de vídeo disponíveis no sistema de armazenamento do usuário e se o usuário é ou não um superpeer. A chamada também pode ser feita sem o IP do usuário, passando o identificador de um filme. Neste caso, o método retorna o número absoluto de interrupções de todos os usuários de um dado filme. • usuarios_assistindo: Recebe como parâmetro o identificador de um filme e retorna o IP de todos os usuários o assistindo. Em um fluxo normal de funcionamento do sistema, o usuário requisita o vídeo utilizando o método requisitar_f ilme do Tracker. Com a lista de IPs o usuário requisita os segmentos do filme para os servidores, superpeers e usuários. A cada monitoramento, o Monitor instalado no computador do usuário chama estatisticas para enviar seu estado atual. CAPÍTULO 4. O SISTEMA 31 A heurística chama obtere statistica com o identificador do filme para obter o número total de interrupções e listar_servidores e listars uperpeers para o número de servidores e superpeers, respectivamente. Com essa informação, a heurística toma a decisão de alugar ou liberar servidores (chamando adicionar_servidores ou remover_servidores, respectivamente). Para a criação de novos superpeers, o sistema chama usuarios_assistindo e seleciona do resultado aqueles usuários que devem se tornar superpeers. Capítulo 5 Modelo Nas seções seguintes o problema da gerência de VMs em Cloud-P2P CDN é formalizado e também são apresentadas as três categorias de heurísticas propostas. 5.1 Redução do custo A utilização de um P2P-Cloud CDN no lugar de um Cloud CDN puro para a distribuição de vídeo sob demanda é motivada principalmente pela redução de custo do primeiro. Esta redução de custo pode ser alcançada utilizando como principal meio de envio de dados a rede P2P. Entretanto, dada a natureza heterogênea dos nós na rede P2P, existem grandes chances da frequência de pacotes ser afetada drasticamente. Torna-se, então, necessário alocar a quantidade certa de banda da rede P2P e da nuvem para otimizar o custo, sem grande impacto na qualidade de serviço fornecida pelo sistema. Este problema de minimizar o custo pode ser reduzido ao problema definido como “the optimal bandwidth allocation problem”, OBAP, descrito em [25]. Considere um sistema com I arquivos, onde cada arquivo i pode ser requisitado por um usuário u. Quando um usuário u requisita o arquivo, o servidor envia o arquivo a uma taxa de upload si , e todos os usuários que também têm aquele arquivo em seu dispositivo de armazenamento enviam m P a uma taxa di . OBAP define que é necessário maximizar D , sendo D = di , onde m é S o número de usuários baixando o mesmo conteúdo e S = m P i=1 i=1 si , onde S é a alocação de servidores na nuvem para suprir a demanda dos usuários. O custo de uma solução implementada utilizando nuvem computacional pode variar de acordo com o provedor de serviço utilizado. Como o foco do CDN são aplicações de alta entrada e saída de dados, este trabalho leva em consideração o preço das máquinas necessárias para a utilização do CDN e controle dos nós na rede P2P, além do custo de download e upload dos arquivos a fim de sincronizar diferentes nós e distribuir o arquivo ao usuário final. Para este fim, a equação 5.1 define o custo Ps de uma máquina alugada na nuvem, onde Cqty é a quantidade de dados enviados pela nuvem, Cprice o preço do envio de dados pelo provedor, Rprice é o preço de se alugar uma máquina por uma hora e Tp é a quantidade de horas que a máquina foi alugada. 32 CAPÍTULO 5. MODELO 33 Figura 5.1: Fluxo da arquitetura do sistema. Ps = Cqty ⇤ Cprice + Rprice ⇤ Tp (5.1) O custo total do sistema (P r) é dado pela equação 5.2. size(S) Pr = X Ps (5.2) s=1 As heurísticas aqui apresentadas não levam em conta o preço momentâneo – custo das máquinas alugadas somada a quantidade de dados enviados aos usuários – do sistema como parâmetro de entrada, mas somente a qualidade de serviço (número de interrupções percebidas pelo usuário ao ver o vídeo). Sendo P r uma variável utilizada somente para a avaliação da eficiência das heurísticas. A coordenação dos servidores nas nuvens (replicar dados, direcionar o usuário para o melhor provedor levando em consideração SLA e custo) é um problema NP-difícil [14] e por isso não se espera ter alocação ótima de servidores nas nuvens. Por fim, o fluxo do sistema proposto pode ser visto na Figura 5.1. Quando um usuário (u) requisita um arquivo, o sistema repassa essa informação para a heurística, juntamente com uma lista de todas as máquinas virtuais disponíveis e lista de usuários que requisitaram o mesmo arquivo (U ). A heurística por sua vez calcula se deve alocar novos recursos na nuvem, levando em conta os dados passados e as interrupções na execução do vídeo observadas até o momento, e retorna com uma lista de servidores (S) e usuários que podem compartilhar o arquivo (U ). A arquitetura apresentada aqui e os métodos reativo e proativo resultaram em uma publicação [22]. CAPÍTULO 5. MODELO 5.2 34 Heurísticas As heurísticas aqui apresentadas têm 4 métodos principais. CriarServidores, CriarSuperpeers, DesligarSevidores e AtualizarDados. Todos eles recebem como parâmetros o número atual de interrupções do vídeo sendo considerado, quantidades correntes de servidores, clientes e superpeers e comparam com os valores da última observação. AtualizarDados é o último método a ser chamado e atualiza os dados antigos com os novos. CriarServidores e CriarSuperpeers podem ser chamados em paralelo, porém caso seja decidido criar novos servidores, DesligarSevidores não é chamado. As heurísticas são utilizadas de acordo com o algoritmo 1, onde um dos quatro principais métodos são chamados na linha 7, enquanto que na linha 6 é feita uma contabilização do número de interrupções observadas até o momento, juntamente com a quantidade de usuários ativos no sistema. Algorithm 1 Algoritmo de provisionamento de servidores na nuvem 1: para todo Mi vídeos faça 2: enquanto usuários assistindo Mi > 0 faça 3: para todo TMi torrent do filme Mi faça 4: Inicia contador t e espera até t = x 5: Contabiliza número de usuários e interrupções 6: Chama heurística passando o estado atual do sistema 7: Modifica a quantidade de máquinas virtuais e superpeers de acordo com a saída da heurística 8: Heurística salva o estado atual do sistema. (AtualizarDados) 9: fim para todo 10: fim enquanto 11: fim para todo As heurísticas são dividias em três grupos: as proativas, que visam alocar máquinas quando o número de usuários é alterado; as reativas, que reagem a interrupções na exibição do vídeo; e os métodos ingênuos, criados para compreender melhor o resultado das heurísticas nas simulações. As duas categorias de heurísticas (proativas e reativas) alteram lentamente a alocação de servidores e o número de superpeers, seguindo a ideia de heurísticas como water-leveling [21], que evita mudanças drásticas a fim de evitar alterações bruscas que resulte em super ou subprovisionamento. As duas categorias fazem isso aumentando no máximo em 50% os recursos disponíveis, como detalhado nas subseções a seguir. 5.2.1 Heurísticas Proativas As heurísticas proativas agem sem que uma interrupção necessariamente tenha ocorrido. Para isso, tentam antecipar a ocorrência de interrupções reagindo à entrada e saída de usuários. Esta estratégia só aluga servidores quando o número de usuários torna-se maior que o número de servidores por uma porcentagem de y%. Quando isso ocorre, novos servidores são alugados de acordo com a equação 5.3. CAPÍTULO 5. MODELO 35 S = So + N S ⇥ k (5.3) Onde S representa o novo número de servidores, So é o número de servidores atual, N S é o número de novos usuários assistindo o vídeo desde o último relatório de monitoramento e k é um parâmetro da heurística. Nesta implementação, N S é um valor incrementado pelo Monitor toda vez que um usuário entra no sistema. A variável y mantem a proporcionalidade de servidores por usuários controlada, evitando um aumento constante e desproporcional na quantidade de servidores. Pode-se dizer que essas heurísticas mantém y% do número de usuários em servidores. Nas heurísticas proativas, quando o número de usuários aumenta, o número de superpeers é redefinido pela equação 5.4, onde Po é o número atual de superpeers e b é um parâmetro variado nos subtipos das heurísticas proativas, discutidos no fim desta seção. P = Po + S ⇥ b (5.4) A expressão S ⇥ b representa a quantidade de superpeers a serem criados em relação ao número de servidores. Por exemplo, dado b = 0.1, se no momento de ingresso de novos usuários no sistema, há 100 servidores ativos (S = 100), serão alocados 10 novos superpeers. Dessa forma o sistema tenta manter uma certa proporcionalidade entre superpeers e servidores. Para desligar servidores, as estratégias proativas tomam decisões sob duas circunstâncias: i) o número de usuários caiu ou ii) o número de usuários está estável. Na primeira situação, a decisão de desligar servidores é tomada baseada na equação 5.5. S = So (LS ⇥ h + P ⇥ r) (5.5) onde h e r são parâmetros da heurística e podem variar de 0 a 1, LS é o número de peers que deixaram o sistema desde o último monitoramento e P é o número atual de superpeers. Assim LS ⇤ h representa a porcentagem de usuários que deixaram o sistema: se h = 0.5 e LS = 100, 50 servidores seriam desligados por essa expressão. Por outro lado, P ⇤ r aumenta a quantidade de servidores desligados a cada aumento de superpeers no sistema. Dessa forma as heurísticas tentam balancear o número de servidores baseado na taxa de saída dos usuários e no aumento da rede P2P, já que os dois fatores potencialmente aliviam a carga de requisições recebidas pelos servidores. No caso de um congelamento na quantidade de usuários, a decisão de desligar os servidores é feita pela equação 5.6. S = So P ⇤z (5.6) onde z é um parâmetro da heurística (variando entre 0 e 1) e P é o número atual de superpeers, fazendo com que em caso de estabilização da entrada de usuários, o número de servidores seja desligado somente considerando uma porcentagem do número de superpeers. Foram criadas quatro variações da heurística proativa, através de valores nos parâmetros k, b, z. A nomenclatura dessas estratégias segue a variável y (i.e, quando o número CAPÍTULO 5. MODELO 36 de usuários supera os servidores alugados por y%): • Proativa 10: y = 10%,k = 0.1, h = 0.03, r = 0.01, z = 0.01 e b = 0.03. • Proativa 20: y = 20%, k = 0.2, h = 0.03, r = 0.01, z = 0.01 e b = 0.01. • Proativa 30: y = 30%, k = 0.3, h = 0.03, r = 0.01, z = 0.1 e b = 0.01. • Proativa 50: y = 50%, k = 0.5, h = 0.03, r = 0.01, z = 0.1 e b = 0.01. As heurísticas Proativa 10, 20 e 30 mantêm uma proporcionalidade nos parâmetros y, k, enquanto que a Proativa 50 é uma cópia da Proativa 30, alterando somente k. h e r são mantidos como valores baixos para evitar que em um momento a heurística decida alugar mais servidores e no momento seguinte desalocar um número maior de servidores, podendo jamais sair desse ciclo. A Proativa 10 é a única a alterar o valor de b, e por conta disso acaba se apoiando de uma maneira maior nos superpeers. Com o parâmetro z maior que as demais, a Proativa 30 e 50 acabam desligando mais servidores quando usuários param de entrar no sistema e já existe uma quantidade maior de superpeers. 5.2.2 Heurísticas Reativas As heurísticas reativas reagem a interrupções sofridas pelos usuários, atuando na criação/liberação de recursos conforme o informe dos usuários. Essas heurísticas aumentam o número de servidores considerando duas variáveis: o número de interrupções e o número de peers. Se o número de interrupções aumenta, a heurística reativa aumenta o número de superpeers utilizando a equação 5.7 Pnew = Po + S ⇥ b (5.7) onde Po representa o número de superpeers obtido pelo monitoramento do sistema na última janela temporal e b é um parâmetro da heurística. Da mesma forma que as heurísticas proativas, as heurísticas reativas tentam aumentar o número de superpeers proporcionalmente ao número de servidores (expressão S ⇤ b). Na alocação de servidores, a heurística utiliza o número de usuários que entraram no sistema e uma certa porcentagem dos servidores já alocados (So ⇥ r) Se o número de interrupções se mantém o mesmo, os servidores são desligados e a nova quantidade de servidores (Snew ) é determinada utilizando a Equação 5.8. Snew = So (So ⇥ h + U ⇥ r) (5.8) onde U é o número atual de peers (usuários assistindo o filme), enquanto h e r são parâmetros da heurística. Toda vez que o número de interrupções não é alterado, as equações 5.8 e 5.7 são utilizadas para aumentar o número de superpeers e desligar servidores. Definimos um limiar V para o aumento do número de interrupções. Caso o número de interrupções supere V , o novo número de servidores será definido de acordo com a equação 5.9. CAPÍTULO 5. MODELO 37 Snew = So + So ⇤ c (5.9) onde c é um parâmetro da heurística, que varia de 0 a 1, e So é o número atual de servidores O número atual de superpeers (P ) é mantindo intacto. Definimos um segundo limiar y, que estabelece uma porcentagem máxima em que a quantidade de peers pode superar a quantidade de servidores. Caso ambos os limiares y e V sejam violados no sistema, o número de servidores é modificado utilizando a equação 5.10. Snew = So U ⇥ U + So ⇥ r (5.10) onde U é a diferença entre o número atual de usuários e o número de usuários coletados na última janela temporal e r é um parâmetro do sistema. Nesse caso, a heurística utiliza tanto o número de usuários que entraram no sistema quanto uma certa porcentagem dos servidores já alocados (So ⇥ r). Foram testados diferentes parâmetros associados com a heurística reativa. As heurísticas reativas são nomeadas de acordo com a variável b. Estas heurísticas reorganizam os servidores e superpeers de acordo com: • Reativa 0.05: As variáveis de controle são configuradas para b = 0.05, c = 0.01, h = 0.01, r = 0.02. Adicionalmente, quando o número de servidores aumenta, V é dobrado, para reduzir a chances de alugar novos servidores em caso de novas interrupções na próxima janela. O número de superpeers é limitado a 5% do número de peers, mas seeders são ilimitados. • Reativa 0.01: As variáveis tem o valor b = 0.01, c = 0.01, h = 0.01, r = 0.01. V tem valor 10. Superpeers são limitados a 5% dos peers. • Reativa 0.02: As variáveis tem o valor: b = 0.02, c = 0.01, h = 0.01, r = 0.01. Assim como a Reativa 0.01, está heurística mantem o valor constante de V em 10, porém o número de superpeers é aumentado para 50% de todos os peers. 5.2.3 Métodos ingênuos Para comparar as heurísticas aqui analisadas, foram implementadas duas estratégias ingênuas. A primeira mantém um número constante de servidores (10 servidores) durante todo o experimento. A segunda aluga um servidor para cada novo usuário no sistema. Os dois métodos tornam um usuário um superpeer somente quando ele termina de receber todo o arquivo. Capítulo 6 Simulações Os cenários utilizados na simulação utilizam somente um tracker e um provedor de nuvem. O custo de se alugar um servidor e transferir conteúdo foram baseados no provedor Amazon. Sistemas P2P apresentam duas importantes características (i) escalabilidade e (ii) dinamismo. Para as simulações foi escolhida a utilização do Peersim – um ambiente escalável de simulação que permite a definição de diferentes cenários. No Peersim, é possível implementar o protocolo de comunicação entre os nós da rede, utilizando uma API prédefinida e até mesmo podendo ser alocada em uma implementação real. Além disso, ele provê uma série de módulos pré-desenvolvidos que podem ser combinados de diferentes maneiras, provendo flexibilidade na configuração e utilização de diversos cenários. A rede P2P é modelada como uma coleção de nós, onde cada nó é associado a uma série de protocolos. A simulação é regulada por inicializadores e controladores que permitem que eventos possam ser introduzidos na simulação ou ativados em diferentes pontos temporais pré-definidos. Foi utilizada como base das simulações a ferramenta arenbm 1 (que utiliza o Peersim [28]). Este trabalho assume nas simulações que as máquinas são ligadas e preparadas para responder as requisições no momento em que são alugadas. Durante a simulação, j usuários entram no sistema, enquanto que g usuários o deixam a cada x unidades de tempo, seguindo a distribuição de Pareto(f (x; 1.5, 1000000000)). Usuários param de entrar no sistema após um certo número de usuários acessarem o sistema. Os superpeers que irão responder a requisições de um certo usuário são escolhidos aleatoriamente. A banda de entrada dos usuários é fixa em 8Mbps. Este número foi escolhido por ser a velocidade mais comum nos EUA de acordo com experimentos práticos 2 . Outros parâmetros do sistema são: (i) a banda de saída necessária para cumprir a qualidade de experiência do usuário (i.e. qualidade do filme); (ii) tamanho dos pedaços transferidos; (iii) tamanho total do arquivo do filme transferido. As simulações começam com 10 servidores, sendo alugados de acordo com as heurísticas apresentadas na sessão anterior. Foi analisado como as interrupções afetam os usuários durante as simulações. Primeiramente foi testado como as heurísticas se comportavam com diferentes valores para seus parâmetros ( k, b, c, h, r, z para as proativas e k, 1 2 github.com/guthemberg/arenbm http://www.speedtest.net/awards/us 38 CAPÍTULO 6. SIMULAÇÕES 39 b, c, h, r para as reativas). As que obtiveram melhores resultados foram analisadas mais profundamente com diferentes cenários. Todas as simulações utilizam os valores Rprice = 0.052 e Cprice = 0.090, baseados na Amazon AWS. Baseado no resultado das simulações, foi criada uma heurística híbrida, utilizando-se dos melhores comportamentos das duas categorias. 6.1 Cenários Foram realizados 5 simulações com diferentes parâmetros para as heurísticas. Estes cenários são separados em três categorias: I cenário básico com todas as heurísticas propostas; II duas simulações com as melhores heurísticas da categoria I, o primeiro utilizando 2000 usuários ativos no sistema e o segundo aumentando a taxa de saída dos usuários para 8Mbps (por consequência fazendo com que os superpeers se comportem da mesma forma que os servidores), mas reduzindo o número de usuários para 1000 novamente; III cenários com a heurística híbrida que foi criada baseada no melhor comportamento da heurísticas proativa e reativa. A primeira simulação utilizando 2000 usuários e a segunda com um cenário parecido ao utilizado em [34], a fim de comprar os resultados obtidos. Os resultados estão descritos nas subseções a seguir. 6.1.1 Cenário básico Nesta simulação, o arquivo de filme foi dividido em 1400 pedaços de 512 KB cada. O vídeo é um filme em alta-definição (1280X720) com uma taxa de 2400 kbps. Cada usuário tem 250 Kbps de banda de saída e 8 Mbps de banda de entrada. Cada ponto nos gráficos são “snapshots” de diferentes métricas em pontos temporais diferentes na simulação. Assim, os gráficos demonstram as evoluções tanto da métrica, quanto do tempo durante as simulações. Os gráficos apresentam os resultados para diferentes algoritmos de alocação e as estratégias ingênuas. Os rótulos Proativa 10, Proativa 20, Proativa 30, Proativa 50 representam as heurísticas proativas com o parâmetro y igual a 10, 20, 30 e 50, respectivamente. De forma similar, os rótulos Reativa 0.01, Reativa 0.02, and Reativa 0.03 representam as heurísticas reativas com o parâmetro b igual a 0.01, 0.02 e 0.03, respectivamente. A Figura 6.1a mostra que o número de usuários cresce em contraste com o número de servidores durante a simulação. A heurística reativa tende a aumentar o número de servidores constantemente, se comparada à proativa, exceto pela Reativa 0.01 cujos parâmetros forçam o aluguel de servidores no final da simulação. A Proativa 50 é a heurística com o menor número de servidores alugados no final da simulação. Apesar das heurísticas reativas alugarem mais servidores durante a simulação, em geral, elas não foram capazes de reduzir o número de interrupções, como mostrado em 6.1b. CAPÍTULO 6. SIMULAÇÕES 40 O custo total destas heurísticas foram maiores que as proativas, dado ao grande número de máquinas virtuais utilizadas, mas ao mesmo tempo, obtiveram números parecidos de interrupções. Comparando somente as heurísticas reativas, Reativa 0.05 teve o melhor comportamento, sendo capaz de reduzir o número de interrupções, enquanto mantém um custo aceitável. 6.1.2 Melhores heurísticas Em geral, as simulações iniciais sugeriram que as estratégias proativas propostas (alugar novas máquinas antes que ocorram interrupções) geram menores custos. Para se aprofundar na análise do comportamento das heurísticas, foram escolhidas as que obtiveram melhores resultados (Proativa 50, 20 e 10 e Reativa 0.05) para serem simuladas em um ambiente com requisitos de 5000 kbps de QoE. Como os usuários compartilham dados entre eles mesmos, no primeiro teste aumentamos o número de usuários para 2000 para ver como o custo se comportaria com o aumento de usuários. A Figura 6.2 apresenta os resultados para este novo cenário. A Reativa 0.05 teve o maior custo (Figura 6.2b), porém resultou em um número menor de interrupções. Por outro lado, a Proativa 10 manteve baixo o custo e o número de interrupções, resultando em um comportamento melhor que a Reativa 0.05. A Proativa 50 também manteve custos baixos, mas um número maior de interrupções. Importante notar que o custo não dobrou se comparado ao experimento anterior, o que seria de se esperar em um sistema Cloud-CDN caso não houvesse o auxílio de uma rede P2P. Um resultado interessante é que o número de servidores com 1000 usuários e 2000 usuários, mesmo com uma necessidade maior de banda de saída, é similar. Pelos resultados, o aumento de número de superpeers, parece implicar em um número menor de interrupções. Importante notar também, que a Reativa 0.05 tem um número maior de servidores durante quase toda a simulação (Figura 6.2a), o que ajuda a evitar interrupções. De fato, a heurística Proativa 50, alugando mais servidores a cada lote, teve um pico de 111 servidores ligados por volta de 3.5 horas após o início da simulação, reduzindo após isso para 89 servidores e finalizando a simulação com 93. Por outro lado que a Proativa 10 (que aluga menos servidores a cada lote), obteve 154 servidores ligados em 3.3 horas após o início, reduzindo a 130 no último momento da simulação em 5.4 horas. Já a Reativa obteve no máximo 364 servidores alugados simultaneamente (por volta de 1.3 horas), reduzindo para 346 no momento final da simulação (após 3.8 horas do início da simulação). Resultados para esse cenário são mostrados na Figura 6.3. Um terceiro cenário foi simulado, para entender melhor o comportamento das heurísticas frente a um aumento da banda de saída dos usuários. Esse cenário utilizou 1000 usuários e banda de saída de 8 MBps. Dessa forma, tanto o usuário como a nuvem mantém a mesma taxa. Com esta mudança, o custo das estratégias proativas foram reduzidas se comparadas com a Figura 6.1. Como os usuários ajudam de maneira mais efetiva (praticamente como se fossem um servidor da nuvem), o sistema pode responder de maneira gratuita às requisições de maneira mais rápida, reduzindo o custo associado com a transferência de dados da nuvem. Considerando que os usuários também terminam a transferência antes CAPÍTULO 6. SIMULAÇÕES (a) Usuários versus servidores. (b) Interrupções versus custo. Figura 6.1: Resultados das simulações. 41 CAPÍTULO 6. SIMULAÇÕES (a) Usuários versus servidores. (b) Interrupções versus custo. Figura 6.2: Simulação com 2 mil usuários. 42 CAPÍTULO 6. SIMULAÇÕES 43 conforme observado na Figura 6.3, é possível reduzir o custo associado com o aluguel de servidores. 6.2 Heurística Híbrida Na maioria dos cenários a estratégia proativa se comportou melhor que a reativa. Por outro lado, a heurística Reativa 0.05 manteve um número baixo de interrupções durante parte das simulações. Assim, juntando os pontos fortes das duas estratégias, simulamos alguns cenários com uma heurística Híbrida. Esta terceira categoria de estratégia aluga máquinas nos provedores de nuvem toda vez que um usuário acessa o sistema, seguindo os parâmetros da heurística Proativa 50 e aumenta o número de superpeers seguindo uma mescla entre a Proativa 50 e a Reativa 0.05. Esta mescla se dá utilizando o Algoritmo 2, aumentando o número de superpeers tanto na entrada de novos usuários quanto no aumento do número de interrupções. Algorithm 2 Algoritmo utilizado na heurística híbrida para aumentar o número de superpeers 1: V = 10 2: se o número de interrupções atuais somado a V é maior que o número de interrupções anterior e o número de superpeers é menor que 5% do número de usuários no sistema então 3: V =V ⇤2 4: Aumenta o número de superpeers com 20% do número de servidores atuais 5: senão 6: se Número de usuários aumentou então 7: Aumenta o número de superpeers com 10% do número de servidores atuais 8: fim se 9: fim se Já para liberar instâncias previamente alugadas, a heurística híbrida utiliza o algoritmo 3. Esse algoritmo também é uma mistura entre as heurísticas Proativa 50 e a Reativa 0.05, dando preferência ao comportamento da heurística proativa. Algorithm 3 Algoritmo utilizado na heurística híbrida para diminuir o número de servidores 1: se o número de usuários aumentou e 10% do número de usuários é menor que o número de servidores então 2: Diminui o número de servidores utilizando a fórmula 5.5 (com os valores da Proativa 50) 3: senão 4: se o número de interrupções atuais somado a V é maior que o número de interrupções anterior então 5: Diminui o número de servidores utilizando a fórmula 5.8 6: fim se 7: fim se CAPÍTULO 6. SIMULAÇÕES (a) Usuários versus servidores. (b) Interrupções versus custo. Figura 6.3: Simulação com número maior de banda de saída dos usuários. 44 CAPÍTULO 6. SIMULAÇÕES 45 O número de superpeers é baseado primeiramente na heurística reativa e somente se não houver interrupções é utilizada a equação da heurística proativa (levando em consideração o número de usuários entrando no sistema). Já para diminuir o número de servidores a heurística híbrida faz o contrário: primeiramente verifica se o número de usuários aumentou e como segunda regra utiliza as interrupções. A ordem das regras se dá pelo fato de que caso haja um número grande de interrupções acontecendo, aumentar o número de fontes disponíveis pode ajudar a estabilizar o sistema. Por outro lado, desligar servidores quando novos usuários começam a acessar o sistema pode causar uma queda na qualidade de experiência dos usuários. 6.2.1 Simulação com 2000 usuários A avaliação da heurística híbrida foi feita utilizando o mesmo cenário da seção 6.1.2. O cenário emula cerca 2000 usuários ativos no sistema, com 5000 kbps de QoE com usuários compartilhando o arquivo (com 1400 pedaços de 512KB) com uma banda de saída de 250 Kbps (mesmos parâmetros do cenário básico inicial). A Figura 6.4 apresenta os resultados da heurística híbrida neste cenário. Não só esta heurística consegue ser um pouco mais barata que a Proativa 50, mas mantém um número menor de interrupções ao final da simulação (Figura 6.4a). Outra importante métrica é o tempo necessário para o fim da simulação (onde todos os usuários têm todo o arquivo em seus sistemas de armazenamento). A heurística Híbrida leva mais tempo que a Reativa 0.05, mas menos tempo que a Proativa 50 (Figura 6.4b). A diferença de tempo entre as heurísticas Híbrida e Proativa 50 é de 54.6 minutos, enquanto que o custo é somente de 3.66 unidades monetárias. Portanto, apesar de parecer que a Híbrida é só um pouco melhor que a Proativa 50 (considerando a quantidade de interrupções/custo), na realidade os resultados diferem também no custo e na duração da simulação. Por um valor mais baixo, é possível entregar todo o arquivo aos usuários uma hora mais rápido. A estratégia ingênua de utilizar um servidor por usuário também teve uma diferença pequena na quantidade de horas gasta para entregar todo o arquivo que a heurística Híbrida, porém teve um custo final de 255.52 contra 36.32 da Híbrida. 6.2.2 Simulação com vídeos de 12800 Kbps de SLA Utilizando um cenário parecido ao simulado em [34], com 12800 Kbps necessários para suprir um segundo de vídeo, com cada chunk com 512KB e banda de saída para os usuários de 1Mbps e de entrada 8Mbps com 5 mil usuários no sistema, a heurística híbrida mostrou resultados semelhantes. Enquanto que [34] consegue manter um SLA de cerca de 98% de chunks sendo entregues no prazo correto, a heurística híbrida alcança número similar (98.4%), mantendo 10 servidores no final da simulação, enquanto que [34] utiliza no máximo 4 servidores durante toda a simulação, finalizando ela com apenas 2. De fato, estressando mais o cenário e diminuindo pela metade o tamanho do arquivo (fazendo com que mais nós possam colaborar como superpeer), o número de servidores reduz para 5 ao final. Com um arquivo três vezes maior que o arquivo simulado em [34], o número de servidores ao final da simulação é 14 (Figura 6.5). CAPÍTULO 6. SIMULAÇÕES (a) Interrupções versus Custo (b) Horas para terminar a simulação. Figura 6.4: Simulação com a estratégia Híbrida com 2000 usuários. 46 CAPÍTULO 6. SIMULAÇÕES 47 (a) Interrupções versus Custo Figura 6.5: Simulação com cenário similar ao de [34], utilizando a heurística Híbrida com arquivos de diferente tamanhos. Capítulo 7 Discussão Nesta seção são discutidas as possibilidades para se implementar um sistema VoD real utilizando as heurísticas propostas. A discussão leva em consideração diversas estratégias disponíveis na literatura, dada a extensão de pequenos fatores que podem contribuir ou denegrir a qualidade do sistema, como políticas de requisições de pedaços do filme, alocação de máquinas propriamente dita, provedor de nuvem e serviços disponíveis e gerenciamento dos usuários. Considerando a diversividade de cada ponto, a discussão visa justificar as escolhas feitas e ao mesmo tempo mostrar outras opções e discutir os fatores positivos e negativos de cada uma. 7.1 Heurísticas e estratégias auxiliares Nesta subseção são discutidos os resultados das heurísticas juntamente com estratégias auxiliares disponíveis na literatura que poderiam melhorar o resultado final. 7.1.1 Estratégias auxiliares A estratégia híbrida combina aspectos da proativa e reativa. Alugar máquinas de forma proativa quando o usuário entra no sistema se demonstrou mais eficiente que aguardar interrupções acontecerem para reduzir o número de interrupções e manter um baixo custo de aluguéis de máquinas virtuais que alugar sempre que há uma interrupção o que torna o sistema instável. Este comportamento de alugar máquinas antes de uma perda de qualidade (e aumento de interrupções) é similar ao aplicado pelo Netflix [7]. Tentar prever o aumento de usuários e alugar servidores antes que os usuários acessem o serviço poderia resultar em um menor número de interrupções, porém num maior custo final. Além de alugar máquinas previamente a uma perda de qualidade (ou ainda do aumento de usuários), é possível também “alimentar” a rede P2P com os arquivos em momentos de inatividade. Em [16] é estudado um sistema de IPTV sobre uma rede P2P e é utilizada a estratégia de “prefetching” (alimentar a rede P2P com os arquivos de vídeo antes mesmo que eles requisitem, para que quando um usuário requisite o vídeo, a rede P2P seja capaz de o prover por completo desde o momento da requisição), chamada Zebra. De maneira geral o algoritmo escolhe os vídeos mais populares e o divide em segmentos na rede P2P 48 CAPÍTULO 7. DISCUSSÃO 49 uniformemente. O artigo mostrou resultados positivos quando ao uso dessa estratégia. De forma intuitiva, quanto antes os nós obtiverem todo o arquivo, mais rápido são capazes de o prover para seus vizinhos. Essa estratégia poderia ser utilizada em conjunto com as heurísticas, onde os nós que recebessem os segmentos poderiam agir como superpeers mais rapidamente. 7.1.2 Resultados das simulações A heurística reativa tende a alugar mais servidores, mesmo as interrupções sendo causadas pela falta de banda de entrada dos usuários e não de saída dos servidores. Isto fica claro ao ver os resultados da estratégia que aluga um servidor por usuário. Mesmo esta obteve resultados similares às heurísticas. No artigo [34] é observado que o aumento na taxa de upload do sistema como um todo resulta em uma melhor qualidade de serviço, onde o cenário somente com entrada de usuários obtém melhores taxas de playback do que o cenário onde usuários deixam o sistema constantemente. Isto é reforçado no cenário aqui apresentado onde à banda de saída dos usuários é similar à da nuvem. Na possibilidade de uma maior estabilidade por parte dos usuários, alocar menos máquinas e distribuir uma maior quantidade de responsabilidade na transmissão de dados na rede P2P pode trazer bons resultados. As heurísticas proativas e reativas terminam a transmissão do arquivo para todos os usuários em aproximadamente 5 horas, enquanto que a estratégia de manter um número fixo de servidores leva cerca de 30 horas. Pode-se comparar o resultado dessa estratégia com o prefetching. Dado que as heurísticas são capazes de alimentar a rede P2P rapidamente, os usuários são capazes de compartilhar o artigo com seus pares mais cedo, aumentando o número de fonte para todos os segmentos do vídeo e aliviando a carga de requisições para os servidores da nuvem. 7.1.3 Superpeers Ao aumentar o número de superpeers, o sistema também se torna de certa forma mais instável. Tanto por depender de velocidades menores para servir os dados, como pela instabilidade dos nós da rede P2P. Não há garantias que os superpeers permaneçam no sistema até o final da transmissão. Uma possível solução é oferecer incentivos financeiros, como em [36, 15], para que os usuários ao serem escolhidos para serem superpeers permaneçam no sistema. O incentivo oferecido em [36] é focado principalmente em combater o compartilhamento ilegal dos vídeos. O modelo se baseia no fato de que a demanda por um conteúdo é transiente e todo conteúdo eventualmente estará disponível de forma gratuita em redes de compartilhamento ilegal. O incentivo tenta compartilhar o lucro do sistema com os “early adopters” (os primeiros usuários a testar o sistema), dividindo o lucro em porcentagens de acordo com o compartilhamento (seeder) dos usuários. Desta forma, os superpeers não seriam mais considerados “uma fonte gratuita de compartilhamento”, como foi feito em nossas simulações, mas poderiam agir de forma mais confiável. CAPÍTULO 7. DISCUSSÃO 7.2 50 Possíveis implementações Apesar das simulações serem próximas de um ambiente real, pequenos detalhes são omitidos. É necessário, ao implementar as heurísticas aqui descritas, ajustar detalhes na arquitetura, principalmente em relação ao funcionamento da alocação de máquinas. Nas subsessões a seguir são discutidos possíveis métodos de implementação. Na implementação discutida não são considerados vídeos ao vivo, somente a empresa pode disponibilizar vídeos no sistema e não são consideradas estratégias para criptografar ou manter o vídeo seguro. 7.2.1 Provedor IaaS Entre os diversos provedores disponíveis, as discussões sobre a implementação do sistema focará no provedor de nuvem Amazon AWS. A AWS disponibiliza diversos serviços na nuvem, inclusive infraestrutura. Este serviço é nomeado EC2 1 . Uma das características deste sistema é a possibilidade de criar imagens do sistema operacional do usuário (AMI, Amazon Machine Image) e utilizá-la por padrão quando o usuário requisita uma nova máquina. No caso de um sistema de VoD, nesta imagem podem ser inseridos tanto os programas necessários para o sistema funcionar, como os vídeos disponíveis. Outra opção seria alocar uma máquina e instalar todos os programas necessários, o que poderia elevar o tempo necessário para ter a máquina disponível para o sistema. Indiferente da opção escolhida, não existem SLA do tempo necessário para a instância ser disponível 2 . Um ponto não abordado nas simulações, por ter um custo constante, é o local de armazenamento da mídia que será reproduzida pelos usuários. O provedor AWS oferece um serviço chamado de S3 3 , onde é possível armazenar arquivos. Este serviço é cobrado tanto pelo tamanho dos arquivos armazenados, como pela quantidade de requisições de dados. Os servidores poderiam iniciar sem nenhum dado em seu disco de armazenamento e fazer requisições para o S3 toda vez que o usuário pedisse um arquivo que não está no disco (como uma espécie de page-fault). Desta forma seria possível reduzir o custo do envio de dados do S3, caso alguns filmes não sejam requisitados para um grupo de máquinas. Poderia ser utilizada também uma máquina do EC2 para armazenar estes filmes, fazendo a mesma função do S3, com a diferença que transferência de dados dentro da própria rede do EC2 (máquina para máquina) é gratuita. Porém, o armazenamento de dados seria limitado ao tamanho de disco da instância, o que poderia ser resolvido com um grupo de máquinas dedicadas a isto, gerando um custo maior dado a diferença de preço entre o serviço S3 e o aluguel de máquinas. Por fim, pode-se criar uma AMI com todos os vídeos disponíveis, eliminando a necessidade de utilizar uma fonte central para alimentar as máquinas. Para isto é necessário utilizar o serviço EBS (Elastic Block Store 4 ), que indiretamente utiliza o S3 como dispositivo de armazenamento a ser utilizado pela máquina virtual. As desvantagens desta 1 https://aws.amazon.com/ec2/pricing/ https://aws.amazon.com/ec2/sla/ 3 https://aws.amazon.com/s3/pricing/ 4 http://aws.amazon.com/ebs/pricing/ 2 CAPÍTULO 7. DISCUSSÃO 51 opção incluem o custo para o armazenamento da AMI e o custo do espaço utilizado por cada máquina (dado que todas as máquinas terão todos os vídeos, incluindo aqueles pouco requisitados). A estratégia de manter uma AMI é mais eficiente em relação a manter as máquinas virtuais sincronizadas com a mesma versão e facilita a manutenção, por isso seria a estratégia utilizada. 7.2.2 Alocação de máquinas É possível utilizar as heurísticas propostas neste trabalho para a tomada de decisão quanto ao número de instâncias a serem alugadas do EC2. A heurística funcionaria da mesma forma que nas simulações com peersim. A diferença é que o número de servidores a serem alocados/desalocados seria repassado para o SDK da Amazon. Como a heurística utiliza a diferença entre os usuários entre dois momentos de monitoramento, tanto o monitoramento como a decisão da heurística deverão ser executados de 15 em 15 minutos. Esse número influencia diretamente o custo e qualidade do serviço ofertado e precisa ser otimizado de acordo com o sistema (média de entrada de usuários por minuto) e levar em consideração a média de tempo para alocar uma máquina da AWS. Ao iniciar novas máquinas também é necessário decidir se será preciso avisar aos usuários sobre a existência desses servidores: para que eles possam fazer requisições a novas máquinas, ou se estas máquinas ficarão esperando novos usuários entrarem no sistema para efetivamente começarem a colaborar com o sistema. Nesta implementação, sempre que novas máquinas fossem alocadas, o Tracker avisaria aos usuários para requisitarem novamente os IPs das máquinas que estão disponíveis. Outro ponto a ser levado em consideração é que a cobrança pelo aluguel das máquinas na Amazon é feita por hora. Caso uma máquina seja alocada e desligada após somente 15 minutos, será cobrado uma hora inteira. Uma maneira de evitar a cobrança da máquina por momentos que ela não foi utilizada é: desligar máquinas que estão há mais tempo no sistema (i.e. maquinas ligadas há 50 minutos ao invés de 2 minutos). Outra estratégia é marcar a máquina como "desligada", mas só efetivar o desligamento no minuto 59, e caso essa máquina venha a ser necessária, seu desligamento pode ser cancelado. 7.2.3 Requisitando o arquivo Os usuários recebem uma lista com todos os servidores disponíveis e com todos os usuários. Em seguida, requisitam para cada um deles o chunk necessário usando uma política de Round-Robin para balancear as requisições. Este funcionamento é parecido com o protocolo BitTorrent, onde os peers são os responsáveis por requisitar o chunk de seus pares (também conhecido como mesh-pull [20]). Como os outros peers podem não ter todo o arquivo em seu disco, o usuário envia junto com a requisição um vetor de mesmo tamanho dos chunks do arquivo, notificando se já o tem em seu disco ou não. Como esta informação muda constantemente, é necessário que a cada requisição o usuário reenvie este vetor. Isto é necessário pois os peers enviam os dados em ordem cronologicamente inversa. CAPÍTULO 7. DISCUSSÃO 52 Figura 7.1: Exemplo da escolha do segmento de vídeo a ser enviado pelo usuário (a) ao usuário (b). Por exemplo, dado um usuário (b) que requisita um segmento de vídeo para (a) – Figura 7.1 –, (b) necessita saber todos os chunks já recebidos por (a) para enviar o primeiro segmento que difere. Em outras palavras, dado dois conjuntos Sa = {1, 2, 4, 5, 7, 8, 9, 10} e Sb = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, representando os chunks recebidos por (a) e (b), respectivamente, o segmento a ser enviado é definido pelo maior número de Sa Sb (nesse caso 6). Para requisitar chunks aos servidores e superpeers, o cliente envia somente o identificador do chunk necessário. Uma alternativa a esse sistema seria o usuário se conectar com os servidores e peers, e estes enviarem os chunks conforme acharem melhor. Este esquema é conhecido como tree-push P2P [20, 23] (Figura 7.2). Nesses sistemas, os peers são estruturados como uma árvore, onde cada nó pai é responsável por enviar os chunks aos seus nós filhos automaticamente [23]. O ponto fraco desta organização é o tempo para se refazer a árvore quando nós deixam o sistema [23]. Em sistemas com usuários estáveis, é possível utilizar esta estrutura para otimizar o envio de segmentos de vídeo, porém em sistemas como o simulado neste trabalho onde os usuários debandam constantemente, o tempo para refazer a árvore acaba prejudicando o desempenho do sistema. Há estudos sobre arquiteturas híbridas de push-pull, unificando as vantagens dos dois sistemas, mas mesmo estas contém problemas, como por exemplo colisão de chunks (um nó receber múltiplas vezes o mesmo chunk) [23]. Outro ponto a ser discutido para a implementação é a escolha do chunk a ser enviado na rede P2P. Em nossas simulações utilizamos a ordem cronológica inversa para o envio de chunks na rede P2P. Outras opções seriam “aleatória”, “cronológica” e por raridade na rede [30]. A escolha por raridade é comum no protocolo bitTorrent, pois aumenta a diversidade de chunks na rede. Por isso seguir a ordem cronológica pode reduzir a diversidade temporal e espacial dos pedaços do arquivo [30]. CAPÍTULO 7. DISCUSSÃO 53 Figura 7.2: Exemplo de rede overlay utilizando tree-push P2P. Em [30] são estudadas as diversas escolhas quanto a requisição de chunks no sistema e a com maior desempenho (progresso do stream) no modelo apresentado é a “In-order” (ordem cronológica). Porém, o fator “in-order” faz com que usuários antigos do sistema recebam mais requisições que os novos, por possuírem uma maior quantidade de chunks a serem requisitados. Como resultado, esses usuários mais novos podem consumir toda a banda de saída dos usuários antigos em sistemas puramente P2P, atrapalhando o progresso dos usuários de idade média que dependem diretamente desses usuários. Analisando o sistema “in-order”, o artigo [30] verificou que o progresso do stream está relacionado com a idade do usuário. Usuários mais novos tem mais opções de peers para requisitarem o conteúdo, enquanto que estas opções diminuem conforme o usuário permanece no sistema. Em [30] o progresso do stream é definido como o produto do progresso de download (a taxa que os chunks são obtidos com sucesso da rede P2P) e do progresso sequencial (a “utilidade” dos pedaços adquiridos para o stream) [30]. O progresso do download é principalmente influenciado pela população de usuários, e taxas de banda de saída e entrada do sistema, política de requisição de chunks e quantidade de chunks na mídia. Enquanto que o progresso sequencial é influenciado principalmente pelos dois últimos itens. Desta forma fica claro que mesmo utilizando a política de escolher os chunks baseado na raridade para evitar a diminuição dos problemas relacionados a idade do usuário, o progresso sequencial pode ser afetado, por exemplo se em sucessivas requisições o usuário requisitar somente pedaços não necessários para os próximos segundos de reprodução. Com a escolha das políticas de requisição de segmentos de vídeos utilizadas nas simulações, podemos afirmar que a rede P2P no sistema ajuda somente no progresso do download e não no progresso sequencial (por causa da política de ordem cronológica inversa). Desta forma, ela ajudaria na diminuição do custo de forma direta, mas no progresso sequencial somente quando o usuário necessitasse daquele chunk, que dependendo do tamanho do vídeo e da quantidade de tempo de exibição pode acontecer somente horas depois. CAPÍTULO 7. DISCUSSÃO 7.2.4 54 Saída e entrada de usuários no sistema Usuários de redes P2P podem deixar o sistema mesmo antes de terminarem a reprodução do conteúdo, fazendo com que o número de superpeers possa ser reduzido em momentos inoportunos e sem aviso. Isso gera dois problemas: (i) manter a qualidade do sistema, mesmo com uma alta debanda de superpeers e (ii) descobrir quando um superpeer deixou o sistema. Para lidar com a saída dos usuários sem notificação podem ser utilizados protocolos que enviem mensagens a cada período de tempo para todos os usuários, perguntando se eles estão ativos. Em caso de não haver respostas, o servidor pode excluir o IP daquele usuário de seu banco de dados. O servidor pode então avisar todos os usuários para não requisitarem mais dados daquele IP. Dada a alta quantidade de usuários, isso pode gerar alguma sobrecarga no servidor. Uma segunda opção seria os próprios usuários ao não receberem um número sequencial de respostas de um IP, o excluírem de sua lista e requisitarem o servidor de fazer o mesmo. Dada a natureza assíncrona do sistema, pode ser necessário utilizar algum protocolo de consenso. Nas simulações, o Tracker funciona como um oráculo, sendo capaz de saber se um usuário deixou o sistema e renovar a lista de todos os usuários automaticamente não contabilizando o tempo gasto com esta sincronização. Poderia ser utilizado por exemplo o protocolo heartbeat. Neste protocolo, o usuário envia periodicamente um sinal ao Tracker para notificar que ainda está ativo no sistema, caso o Tracker não receba a mensagem, ele colocaria o usuário na lista de inativos. Quanto a manter a qualidade do sistema mesmo com a saída dos superpeers, é possível prever, dado o histórico dos usuários, quando haverá um número maior de superpeers no sistema e quando eles se desconectarão como no sistema do Netflix. Nesse caso seria necessário somente balancear o número de servidores de acordo com o resultado da predição. Outra opção (utilizada nas simulações) é balancear a quantidade de servidores toda vez que os superpeers debandam o sistema (como as heurísticas fazem quando usuários comuns deixam o sistema). Capítulo 8 Conclusões Utilizar a computação na nuvem em aplicações de transmissão de vídeo se tornou um tópico de interesse recentemente. Este tipo de serviço envolve a alocação de recursos dedicados a operações em tempo (semi-)real, requerendo novos tipos de estratégias para alocar recursos. Por outro lado, protocolos P2P (centralizados em recursos pertencentes ao usuário) têm sido utilizados frequentemente nesta área para a redução de custos. Foi descrito neste trabalho como redes P2P e a nuvem pública podem ser combinadas, dinamicamente, para reduzir custos, enquanto mantêm o requerimento de QoS. A união de protocolos P2P com modelos de cliente e servidor tem sido utilizada em ambientes reais por diversas empresas, como o próprio governo brasileiro que anunciou recentemente a criação de um sistema VoD estatal utilizando redes P2P e CDN. Essa mescla entre P2P e Cloud para sistemas de vídeo sob demanda levanta dois tipos de problema: a otimização da utilização dos recursos da nuvem e o controle de qualidade do sistema. Dois tipos de estratégia têm sido utilizadas para a criação deste tipo de sistema, (i) onde a rede P2P atua como principal forma de transmissão e servidores na nuvem são utilizados somente em casos extremos e (ii) onde a nuvem é o ator principal na transmissão, utilizando os nós da rede P2P como auxiliares afim de reduzir o número de servidores necessário. O sistema aqui proposto utiliza a segunda categoria de sistema, utilizando inclusive da nuvem para coordenar a rede P2P, mantendo os endereços IPs dos usuários em um ponto centralizado, chamado de Tracker. Esta centralização facilita o controle da rede, mas cria um único ponto de falha no sistema. Também é utilizada uma categoria especial de usuários, nomeados “superpeers”. Estes usuários atuam como servidores, enviando os dados em ordem “cronológica” para outros usuários, enquanto os demais nós da rede P2P compartilham o arquivo de trás para frente. Entre as diversas políticas de requisição de chunks existentes para os servidores, foi utilizada a ordem cronológica (“in-order”) como política nas simulações. Esta política facilita o progresso sequencial da reprodução, porém pode sobrecarregar os usuários antigos, enquanto atrapalha usuários que estão em um tempo médio no sistema. No caso das simulações, este efeito não ocorre, dado que esta requisição é feita somente a servidores da nuvem ou superpeers, que são capazes de suprir todos as categorias de usuários. A política de requisição para os demais usuários do sistema é a ordem cronológica inversa, 55 CAPÍTULO 8. CONCLUSÕES 56 fazendo com que todos os usuários sejam capazes de colaborar com a transmissão sem afetar diretamente a qualidade do sistema, dado que o progresso sequencial do sistema não é afetado. O serviço proposto depende das heurísticas para balancear o número de máquinas necessárias para suprir os nós da rede P2P tentando escolher o número ideal de superpeers para maximizar a vazão de dados, enquanto miniminiza o custo. Neste trabalho foram propostas três categorias diferentes de heurísticas: (i) Proativa: que envolve a alocação de máquinas da nuvem e aumento do número de superpeers quando usuários entram no sistema; (ii) Reativa: onde alocação ocorre somente quando interrupções na transmissão acontecem; (iii) Híbrida: que combina ambas as estratégias. A estratégia (i) é de certa forma parecida com a estratégia utilizada pelo Netflix, pois visa reagir a possíveis problemas na qualidade de serviço antes delas acontecerem. Por outro lado o Netflix se baseia no comportamento prévio dos usuários para prever a demanda de cada horário, a estratégia proativa utiliza a diferença no número de usuários para mudar a quantidade de máquinas alocadas. Por outro lado (ii) tenta somente balancear o sistema baseado nos problemas enfrentados no monitoramento anterior, não reduzindo o custo como (i). A terceira categoria de estratégia é uma mescla entre as duas anteriores, utilizando a estratégia proativa como principal forma de alocação de servidores e a reativa para aumentar a quantidade de superpeers. Para comparar as heurísticas foram implementadas algumas estratégias “inocentes”, como utilizar um servidor por usuário ou um número fixo de servidores. A primeira estratégia mostrou-se barata, mas ineficiente para manter uma boa qualidade de experiência e a segunda deveras mais cara e incapaz de manter uma qualidade tão boa quanto a melhor estratégia proposta, como pode ser visto nos resultados obtidos em simulações. Em nossos testes, a heurística híbrida foi capaz de combinar os melhores aspectos das heurísticas reativas e proativas, resultando em um sistema de menor custo que consegue manter uma baixa quantidade de interrupções se comparada com as demais. A estratégia de alugar servidores quando usuários entram no sistema é mais efetiva que reagir a interrupções, mas transformar usuários em superpeers somente quando o sistema está estável é uma estratégia melhor para evitar interrupções. As três categorias de heurísticas se mostraram mais eficientes que as estratégias ingênuas como alocar uma máquina para cada usuário ou manter a quantidade de máquinas estático. De forma intuitiva é possível enxergar que manter o número de máquinas estático e em um baixo número terá um custo menor, porém aumenta drasticamente o tempo necessário para suprir todos os usuários da rede se comparada com as demais estratégias. Alocar uma máquina para cada usuário resulta em um custo alto de recursos do provedor de nuvem e não resulta em menor número de interrupções se comparado à heurística Reativa 0.05, por exemplo. Esta diferença se dá principalmente pelo número de superpeers das heurísticas, que acabam barateando o sistema (diminuindo a vazão de dados da nuvem) e por criarem mais fontes de dados para o sistema. Nos experimentos aqui citados, aumentar a banda de saída/entrada dos usuários fez com que o custo do sistema barateasse, dado que usuários podem contribuir mais efetivamente com a transmissão de dados, reduzindo custos da transferência da nuvem. Nos cenários onde a nuvem e os usuários tinham a mesma taxa de transferência, o custo foi CAPÍTULO 8. CONCLUSÕES 57 cortado drasticamente. Por outro lado, dada a natureza heterogênea de redes P2P, não é possível assumir este tipo de requisito para sistemas reais. Foram discutidas as possibilidades para a implementação de um sistema real, revisando a literatura. Para isto, foi utilizado o modelo de provedor em nuvem da Amazon AWS, alocando máquinas com imagens pré-definidas pelo usuário e calculando o custo utilizando tanto o aluguel da máquina como a transferência de dados para fora da nuvem. Quanto às variantes do protocolo, foram discutidas algumas alternativas disponíveis na literatura, como por exemplo o mesh-push ou versões mistas de push e pull. Essas variantes apesar de terem um bom desempenho, consomem uma quantidade de tempo maior toda vez que usuários deixam o sistema, por ser necessário reconstruir a rede overlay em formato de árvore. Por fim, é possível afirmar que a utilização de redes P2P pode de fato vir a reduzir o custo da transmissão de vídeos sob demanda, sem um alto nível de degradação na qualidade do serviço ofertado. Se preparar para um aumento de demanda (como o Netflix faz) é mais eficiente que reagir a instabilidades e aumentar o número de superpeers somente quando o sistema atinge uma certa estabilidade resultou em melhores resultados nas simulações apresentadas. Como trabalho futuro, as heurísticas podem ser implementadas com arcabouços utilizados por sistemas reais, a fim de verificar o tempo gasto para a sincronização dos peers e testar a qualidade de experiência do usuário. Além disso, em um sistema real, seria possível medir o tempo médio que uma máquina leva para ser alocada no sistema e diferentes latências de rede dependendo da região onde a máquina é alocada. As heurísticas também podem ser alteradas para simulações com diferentes provedores, para além de escolherem a quantidade necessária de instâncias, também levarem em consideração o preço dos provedores e região. Ainda, um estudo aprofundado sobre heterogeneidade da largura de banda de saída dos usuários pode trazer a necessidade de novas heurísticas. Também pode-se adicionar técnicas de aprendizado de máquina nas heurísticas para utilizar o histórico do uso do sistema para prever a quantidade correta de servidores necessários. Referências Bibliográficas [1] App Engine run your applications on a fully-managed platform-as-a-service (paas) using built-in services. https://cloud.google.com/appengine/. Acessado: 201501-17. [2] AWS what is cloud computing. what-is-cloud-computing. Acessado: 2015-01-10. [3] Azure microsof’s cloud computing platform. en-us/. Acessado: 2015-01-17. http://aws.amazon.com/ http://azure.microsoft.com/ [4] Freenet. https://freenetproject.org/. Acessado: 2015-01-10. [5] Github popcorntime-app. https://github.com/era/popcorn-app/tree/master/ node_modules/peerflix. Acessado: 2015-01-10. [6] Heroku adpet scale. https://addons.heroku.com/adept-scale?utm_campaign= category&utm_medium=dashboard&utm_source=addons. Acessado: 2015-01-10. [7] Netflix scryer: Netflix’s predictive auto scaling engine. http://techblog. netflix.com/2013/11/scryer-netflixs-predictive-auto-scaling.html. Acessado: 2015-01-09. [8] Popcorn Time. https://popcorn-time.se/. Acessado: 2015-01-10. [9] RT USA popcorn time, a new streaming bittorrent site, takes on netflix. http://rt. com/usa/popcorn-time-streaming-bittorrent-netflix-234/. Acessado: 201501-19. [10] V.K. Adhikari, Yang Guo, Fang Hao, M. Varvello, V. Hilt, M. Steiner, and Zhi-Li Zhang. Unreeling netflix: Understanding and improving multi-cdn movie delivery. In INFOCOM, 2012 Proceedings IEEE, pages 1620–1628, March 2012. [11] Abbas Bradai and Toufik Ahmed. Differenciated bandwidth allocation in P2P layered streaming. CoRR, abs/1401.6132, 2014. [12] James Broberg, Rajkumar Buyya, and Zahir Tari. Creating a ‘cloud storage’ mashup for high performance, low cost content delivery. In George Feuerlicht and Winfried Lamersdorf, editors, Service-Oriented Computing – ICSOC 2008 Workshops, volume 5472 of Lecture Notes in Computer Science, pages 178–183. Springer Berlin Heidelberg, 2009. 58 REFERÊNCIAS BIBLIOGRÁFICAS 59 [13] John F. Buford, Ken Kerpez, Yuanqiu Luo, Dave Marples, and Stan Moyer. NetworkAware Peer-to-Peer (P2P) and Internet Video. International Journal of Digital Multimedia Broadcasting, 2010:1–2, 2010. [14] Fangfei Chen, K. Guo, J. Lin, and T. La Porta. Intra-cloud lightning: Building cdns in the cloud. In INFOCOM, 2012 Proceedings IEEE, pages 433–441, March 2012. [15] Yih-farn Chen, Yennun Huang, Rittwik Jana, Hongbo Jiang, and Michael Rabinovich. When is P2P Technology Bene fi cial for IPTV Services ? [16] Yih-Farn Chen, Yennun Huang, Rittwik Jana, Hongbo Jiang, Michael Rabinovich, Jeremy Rahe, Bin Wei, and Zhen Xiao. Towards capacity and profit optimization of video-on-demand services in a peer-assisted IPTV platform. Multimedia Systems, 15(1):19–32, jun 2008. [17] Ian Clarke, Oskar Sandberg, Brandon Wiley, and TheodoreW. Hong. Freenet: A distributed anonymous information storage and retrieval system. In Hannes Federrath, editor, Designing Privacy Enhancing Technologies, volume 2009 of Lecture Notes in Computer Science, pages 46–66. Springer Berlin Heidelberg, 2001. [18] Diego Sanchez Gallo. Arquitetura de IPTV com Suporte à Apresentação Deslocada no Tempo Baseada em Distribuição Peer-to-Peer Arquitetura de IPTV com Suporte à Apresentação Deslocada no Tempo Baseada em Distribuição Peer-to-Peer. 2009. [19] Seton Hall and Camille Marie Johnson. Cutting the Cord : Leveling the Playing Field for Virtual Cable Companies. 2014. [20] X. Hei, C. Liang, J. Liang, Y. Liu, and K. W. Ross. A measurement study of a large-scale p2p iptv system. IEEE Transactions on Multimedia, 9(8):1672–1687, Dec 2007. [21] Cheng Huang, Jin Li, and Keith W. Ross. Can internet video-on-demand be profitable? SIGCOMM Comput. Commun. Rev., 37(4):133–144, August 2007. [22] Elias De O Granja Jr, Luiz F Bittencourt, Ioan Petri, Omer F Rana, and César A V Melo. Managing QoS Constraints in a P2P-Cloud Video on Demand System. In Proceedings of IEEE 2016 CLOUD, pages 4–7. [23] C. Y. Keong, P. K. Hoong, and C. Y. Ting. Efficient hybrid push-pull based p2p media streaming system. In Parallel and Distributed Systems (ICPADS), 2011 IEEE 17th International Conference on, pages 735–740, Dec 2011. [24] Ken Kerpez, Yuanqiu Luo, and Frank J. Effenberger. Bandwidth reduction via localized peer-to-peer (p2p) video. International Journal of Digital Multimedia Broadcasting, 2010, 2010. [25] Zhenhua Li, Tieying Zhang, Yan Huang, Zhi-Li Zhang, and Yafei Dai. Maximizing the bandwidth multiplier effect for hybrid cloud-p2p content distribution. pages 20:1–20:9, 2012. REFERÊNCIAS BIBLIOGRÁFICAS 60 [26] Cesar A. V. Melo, Jhonathan Araujo Oliveira, and Nelson L. S. da Fonseca. Promotion of content availability by playlist viewers in CDN-P2P systems. In Proceedings of IEEE ICC 2013, pages 2298–2302, 2013. [27] Cesar A. V. Melo, Jhonathan Araujo Oliveira, and Gustavo B. Figueiredo. Towards peer-assisted video on demand system: Building helpful overlays. In Proceedings of IEEE LATINCOM 2015, 2015. [28] Alberto Montresor and Márk Jelasity. PeerSim: A scalable P2P simulator. In Proc. of the 9th Int. Conference on Peer-to-Peer (P2P’09), pages 99–100, Seattle, WA, September 2009. [29] Dj Oneil, Hun Jeong, Kang Jinoh, and Kim Donghyong Kwon. Transport layer identification of p2p super nodes. [30] K. N. Parvez, C. Williamson, Anirban Mahanti, and Niklas Carlsson. Analysis of bittorrent-like protocols for on-demand stored media streaming. In In Proc.of the 2008 ACM SIGMETRICS Int. Conf, pages 301–312, 2008. [31] Amir H. Payberah, Hanna Kavalionak, Vimalkumar Kumaresan, Alberto Montresor, and Seif Haridi. CLive: Cloud-assisted P2P live streaming. 2012 IEEE 12th International Conference on Peer-to-Peer Computing, P2P 2012, (i):79–90, 2012. [32] Michael Piatek, Colin Dixon, Arvind Krishnamurthy, and Thomas Anderson. Liveswarms: Adapting bittorrent for end host multicast. [33] Vladimir Rocha, Fabio Kon, and Raphael Cobe. A hybrid cloud-P2P architecture for multimedia information retrieval on VoD services. Computing, 98(1):73–92, 2016. [34] Mehdi Seydali Seyfabad. Virtual Machine Allocation in P2P-Cloud Live Video Straming. 2015. [35] Hao Yin, Xuening Liu, Tongyu Zhan, Vyas Sekar, Feng Qiu, Chuang Lin, Hui Zhang, and Bo Li. Design and Deployment of a Hybrid CDN-P2P System for Live Video Streaming : Experiences with LiveSky. pages 25–34. [36] If You, Beat Em, and Join Em. Incentives for P2P-Assisted Content Distribution: If You Can’t Beat ’Em, Join ’Em. pages 1–20. [37] Jian Zhao, Chuan Wu, and Xiaojun Lin. Locality-aware streaming in hybrid p2pcloud cdn systems. Peer-to-Peer Networking and Applications, pages 1–16, 2013.