Uma abordagem peer-to-peer para streaming de vídeo em nuvens privadas - PDF
Download "Uma abordagem peer-to-peer para streaming de vídeo em nuvens privadas"
Manuella Gesser Pinho
1 Uma abordagem peer-to-peer para streaming de vídeo em nuvens privadas Removed for double blind review 1 Abstract. With the growing the multimedia content audience on the web, it s important to provide means to store and to reproduce these resources such as audio and video with no need to acquire new storage units or increase the cost of budget in the software solutions related to streaming on the web. In this context, this paper purposes an approach for multimedia content streaming built on top to the peer-to-peer network overlay. We present an approach where the chunk of files, distributed among the network peers, are remounted using techniques that aim to keep continuity on the content played, delivering it on the desktop and web interfaces to improve the user experience. 1. Introdução Com o crescimento do poder computacional e a proliferação do acesso à banda larga pelas empresas, o conceito de streaming tornou-se largamente difundido. Desta forma, um usuário que recebe uma stream de vídeo, pode iniciar sua execução imediatamente à medida em que os dados são recebidos. Uma solução básica para streaming de vídeo na Internet é o modelo de serviço cliente-servidor, onde o cliente estabelece uma conexão com um servidor para iniciar o recebimento de streams de vídeo de forma direta. Porém, este modelo concentra-se em poucos servidores, sendo estaticamente localizados em alguns pontos da rede, e mesmo com o uso de técnicas de proxy caching que auxiliam na resolução de questões relativas à alta qualidade e baixo delay, estão suscetíveis a problemas relacionados a estabilidade devido ao aumento nas demandas de consumo e a escalabilidade que se apresenta como um dos maiores desafios para soluções de streaming de vídeo, pois um vídeo com boa qualidade requer uma largura de banda superior. Uma variação do modelo cliente-servidor é o Content Delivery Network (CDN) [8] baseado em streaming de vídeo. No modelo CDN, o servidor envia o vídeo para outros servidores estrategicamente distribuídos na rede, e desta forma, o cliente passa a receber o conteúdo de um servidor com a localização mais próxima. Neste modelo, o crescimento é proporcional à quantidade de usuários, elevando o custo financeiro. O Youtube [13], utiliza o modelo CDN para stream de vídeo, com uma audiência superior a 4 bilhões de vídeos diariamente. Outro fator a ser considerado nestas abordagens se refere ao alto custo no provisionamento de largura de banda. Segundo a accustream research 1, no ano de 2009, o número de streams de vídeo disponíbilizados aumentaram para 49.1 bilhões não considerando vídeos gerados por usuários comuns. 1
2 Um sistema puramente peer-to-peer (p2p) é um sistema distribuído sem qualquer controle centralizado [9]. Neste sistemas todos os nós são nomeados como servant (SERver+ client), este termo representa a capacidade dos nós agirem como clientes e servidores ao mesmo tempo. Nos últimos anos, este antigo conceito recebe novamente atenção dentro nas comunidades da Internet. As vantagens relativas à utilização de redes p2p comparadas com o modelo cliente-servidor tradicional estão na escalabilidade e tolerância a falhas [4]. Dentro deste contexto, este artigo apresenta uma abordagem para streaming de vídeo dentro de um projeto para storage de dados em nuvem privadas utilizando redes p2p, que de acordo com o The NIST definition 2, uma private cloud consiste em uma rede provisionada para uso exclusivo uma única organização. A motivação para a elaboração desta abordagem, surgiu dentro do projeto *removed for double blind review*, que consiste em uma solução p2p para nuvens de dados privadas, permitindo o storage de arquivos de forma distribuída. Neste contexto, os arquivos são separados em chunks (pedaços com tamanho prédefinido) e gravados em outros nós conectados na rede. Este projeto provê o acesso às funcionalidades em ambientes web, desktop e mobile, oferecendo, além do acesso às operações tradicionais de backup e restore de arquivos, o compartilhamento de arquivos com outros usuários, a sincronização de diretórios, e a disponibilização de arquivos de áudio e vídeo utilizando os conceitos de streaming e continuidade. No restante deste artigo as seções serão apresentadas da seguinte forma: Seção 2, Apresenta uma breve introdução a plataforma JXTA; Seção 3, Trabalhos relacionados ao contexto de streaming de vídeo utilizando redes peer-to-peer; Seção 4, Solução proposta; e por fim, na Seção 5, as Considerações finais. 2. JXTA O JXTA [12] é uma especificação para a plataforma p2p desenvolvida pela Sun Microsystems sob a direção de Bill Joy e Mark Clary. Uma das principais funcionalidades da plataforma é fornecer um padrão, permitindo que desenvolvedores comerciais e de código-aberto criem serviços interoperáveis e aplicações. O JXTA foi modelado utilizando um pequeno número de protocolos para o tratamento de serviços. Estes protocolos podem ser implementados utilizando qualquer linguagem, permitindo dispositivos heterogêneos se comunicarem um com o outro em uma rede p2p. Conforme [1], o JXTA possui seis protocolos descritos abaixo: Resolver Protocol (PRP) Envio e recebimento de consultas a outros nós. Peer Discovery Protocol (PDP) Publicação e descoberta de advertisement. Peer Information Protocol (PIP) Obter a informação de status do nó. Pipe Binding Protocol (PBP) Criação de canais de comunicação entre os nós. Peer Endpoint Protocol (PEP) Encontrar rotas entre dois nós. Rendezvous Protocol (RVP) Propagação de mensagens na rede. Este modelo de implementação na forma de um network overlay, age como uma hashtable virtual contendo os índices de todos os objetos publicados através do uso de 1
3 advertisements. Deste modo, o JXTA implementa o uso de DHT abstraindo o desenvolvedor de preocupações relativas à performance na comunicação entre nós, permitindo um maior foco no negócio da solução. Figura 1. Arquitetura do JXTA A Figura 1 apresenta uma visão da arquitetura JXTA dividida em três camadas: Application Layer (implementada sobre a camada de serviços, fornecendo os recursos para a construção de aplicativos como instant messaging), Services Layer (implementa serviços como: busca de recursos em nós, compartilhamento de documentos e autenticação) e Core Layer (inclui os seis principais protolos descritos anteriormente). A arquitetura JXTA segundo [2], possui três tipos de nós categorizados da seguinte forma: Minimal-Edge Peers - Implementam somente as funcionalidades básicas do JXTA; Full- Edge Peers - Implementam as funcionalidades básicas e os serviços padrões oferecidos pelo JXTA; e por fim, Super-Peers - Implementam e provisionam recursos para suportar a implantação e operação de uma rede JXTA. O JXTA foi utilizado na elaboração do projeto *removed for double blind review*, devido a sua maturidade, modelo de distribuição open-source, documentação e fontes disponíveis. 3. Trabalhos relacionados Buscando superar o desafio na entrega de conteúdo multimídia utilizando redes p2p, foram propostas nos últimos anos diversas solucões escaláveis [10] [7], sendo utilizada com muito sucesso para o compartilhamento de arquivos. No entanto, não foram encontradas em domínio público aplicacões de streaming de vídeo que implementem os algoritmos propostos na literatura. Entre os aplicativos mais populares baseados na arquitetura p2p, encontramos o SopCast 3, o PPStream 4 e o PPTV 5, aplicativos proprietários que implementam protocolos próprios. Entre as alternativas livres, destaca-se o cliente Tribler, que utiliza um protocolo baseado no BitTorrent [3]. A abordagem apresentada neste trabalho não encontrou até o momento, propostas relativas ao uso do JXTA para storage de conteúdo em nuvens de dados privadas, do qual, mediante a solicitação de recuperação dos dados, fosse possivel a execução de conteúdo multimidia baseado em streaming
4 4. Solução proposta A solução u.streaming, prevê a entrega de streaming nos dipositivos previstos pelo projeto *removed for double blind review*, remontando os arquivos, onde estes buscam seus chunks em outros peers, através do uso de algoritmos que permitam tanto a busca de pedaços de forma sequencial, importante para a manutenção de continuidade, quanto a busca de chunks raros na rede [14], visando garantir a completude do arquivo requisitado. Dentre os desafios encontrados na elaboração desta solução, destacam-se os seguintes itens: Recuperação dos chunks na ordem sequencial e raros; Gerenciamento do buffer; Disponibilização de players para execução em ambientes desktop e web. Criação do serviço de streaming; Neste contexto, a solução deverá prever a entrega e a execução de conteúdo em dois modos: através de um player desenvolvido em conjunto com a interface desktop para as operações de backup e restore; e, por meio da interface web disponibilizando as mesmas funcionalidades propostas na versão standalone Recuperação de arquivos Para a correta execução do streaming, foram desenvolvidos um conjunto de componentes visando a recuperação dos arquivos com foco na continuidade do conteúdo solicitado, destacados abaixo: FileTracker - Possui a função de registrar quais os peers que possuem um arquivo ou parte do arquivo requisitado; RestoreService - Serviço de recuperação de informação sobre os chunks que compõem o arquivo. ChunkService - Serviço alocado nos peers para a recuperação e entrega de chunks requisitados; RestoreAgent - Classe responsável pela execução do restore do arquivo, delegando a recuperação das informações sobre o arquivo ao RestoreService e a recuperação dos chunks ao RestoreChunkAgent; RestoreChunkAgent - Executa a recuperação baseando-se em blocos de recuperação, definidos pelo RestoreAgent; BufferAgent - Monitora os blocos recuperados, verificando sua completude e sua ordem, tornando possível definir o tempo de início do serviço de streaming e da execução do player. A Figura 2 apresenta os componentes descritos, com o acréscimo de um componente nomeado como Super-Peer, descrito na seção JXTA. Este elemento possui um papel fundamental no endereçamento dos peers conectados à rede p2p, permitindo o roteamento e o cache dos endereços já resolvidos, melhorando a performance e a descoberta dos peers. No fluxo de recuperação dos arquivos, o componente RestoreAgent se encarrega de calcular a quantidade total de chunks por arquivo e separá-los em blocos com tamanhos pre-determinados, cada bloco organiza os chunks em ordem sequencial visando uma
5 Figura 2. Visão geral de componentes Figura 3. Sistemática para recuperação de arquivos menor espera na inicialização da reprodução do conteúdo, além de definir a quantidade necessária de instâncias de agentes para a requisição dos chunks. A Figura 3 exemplifica a sistemática para a recuperação dos chunks de forma em que, o RestoreAgent define uma quantidade de RestoreChunkAgents para a recuperação de chunks alocadas em cada bloco. À medida em que os blocos estão completos, os RestoreChunkAgents requisitam outros blocos à pilha de controle, esse processo é executado contínuamente até o esvaziamento total da pilha. Na verificação dos chunks raros, há uma condição de verificação nos Restore- ChunkAgents onde estes podem ser definidos como agentes para busca sequencial ou raros, desta forma, o RestoreAgent analisa a quantidade de replicações que cada chunk possui do arquivo para definir a quantidade de agentes que atuará em cada papel (busca sequencial ou chunks raros). Para este fim, o projeto *removed for double blind review* executa um algoritmo para a replicação de chunks periódicamente visando aumentar a disponibilidade do arquivo na rede Gerenciamento do buffer Para o controle de execução do streaming foi desenvolvido um componente denominado BufferAgent, o qual tem o papel de verificar os blocos completos e sua ordem para o início da execução do player. Para isto são verificadas, as seguintes informações: Tamanho do Arquivo;
6 Quantidade de Chunks; Tempo total de execução do arquivo; Taxa de transferência; Quantidade de blocos completos e sua sequência. Desta forma, de acordo com as informações descritas acima e calculadas levando em consideração outros fatores como: latência e roundtrip message entre os peers, é utilizado o padrão Observer [5] para indicar o início do player Player A implementação do player tem como principais requisitos a execução tanto em modo desktop, quanto em modo web. Desta forma, para a validação inicial da proposta, foi desenvolvido um player em modo desktop considerando o VLCj (Java Framework for the vlc Media Player) 6 como tecnologia para a execução e controle do conteúdo de vídeo. Figura 4. u.streaming player A Figura 4 apresenta a execução da proposta u.streaming considerando para efeito de validação o seguinte cenário: 1 Super-peer, 1 Server/Service peer e 6 Client peer Desta forma, os peers(a) entregam os chunks contidos em seus discos requisitados pelo peer C. Conforme as requisições são retornadas, a barra de progresso exibe as seguintes informações: os chunks retornados (C.1) de acordo com a sua posição no arquivo e os blocos completos (C.2). Para o propósito inicial de validação desta abordagem, foram definidos blocos com um tamanho de 10 chunks, desta forma, o BufferAgent considera como um dos fatores para a continuidade, um mínimo de 2 blocos completos para o início da execução do player(b). Foi utilizado o video Big Buck BUNNY 7, com duração de 9 minutos e 56 segundos, codificado em formato H264, com tamanho de aproximadamente 250MB e dividido em chunks de 256KB. Para a elaboração do player web, incialmente se encontra em desenvolvimento um conjunto de serviços baseados em REST [11], de forma a facilitar a troca de mensagens entre o servidor de aplicação e streaming, e os peers conectados à rede
7 5. Considerações finais Considerando um aumento ainda maior de acesso a conteúdo de vídeos na internet nos próximos anos, este artigo apresentou uma abordagem para streaming de conteúdo, utilizando o modelo de redes peer-to-peer proposto na execução do projeto *removed for double blind review*, que consiste em uma solução para storage e recuperação de dados em nuvens privadas. Neste cenário, foram apresentadas a infra-estrutura que compôe a solução, bem como um experimento para a validação inicial desta abordagem. Para continuidade desta proposta, estão sendo analisadas e prospectadas a utilização de servidores de aplicação open source para web streaming, construção e melhoria de um algoritmo para otimizar o buffering de execução, bem como, codificadores que possibilitem uma melhor performance na entrega e recuperação de conteúdos de vídeos entre os peers. Referências [1] BROOKSHIER, D., GOVONI, D., KRISHNAN, N., AND SOTO, J. C. JXTA: Java P2P Programming. Sams, Indianapolis, IN, USA, [2] BUFORD, J. P2P networking and applications. Elsevier/Morgan Kaufmann, Amsterdam Boston, [3] COHEN, B. The bittorrent protocol specification. BitTorrentorg, BEP 3 (2008), 1 6. [4] DAS, S., AGRAWAL, D., AND ABBADI, A. E. Elastras: An elastic transactional data store in the cloud, [5] GAMMA, E., HELM, R., JOHNSON, R., AND VLISSIDES, J. Design patterns: elements of reusable object-oriented software, vol Addison-Wesley, [6] LIU, Y., GUO, Y., AND LIANG, C. A survey on peer-to-peer video streaming systems. PeertoPeer Networking and Applications 1, 1 (2008), [7] MOL, J. J. D., POUWELSE, J. A., MEULPOLDER, M., EPEMA, D. H. J., AND SIPS, H. J. Give-to-get: Free-riding-resilient video-on-demand in p2p systems. Proceedings of SPIE (2008), [8] PATHAN, M., BUYYA, R., AND VAKALI, A. Content delivery networks: State of the art, insights, and imperatives. Management (2008), [9] SCHOLLMEIER, R. [16] a definition of peer-to-peer networking for the classification of peer-to-peer architectures and applications. In Proceedings of the First International Conference on Peer-to-Peer Computing (Washington, DC, USA, 2001), P2P 01, IEEE Computer Society, pp [10] VLAVIANOS, A., ILIOFOTOU, M., AND FALOUTSOS, M. Bitos: Enhancing bittorrent for supporting streaming applications. Proceedings IEEE INFOCOM TH IEEE International Conference on Computer Communications (2006), 1 6. [11] WEBBER, J. REST in practice. O Reilly, Farnham Sebastopol, CA, [12] WILSON, B. JXTA. New Riders, Indianapolis, Ind, [13] YOUTUBE. Youtube statistics, 2012.
8 [14] ZHOU, Y., CHIU, D. M., AND LUI, J. C. S. A simple model for analyzing p2p streaming protocols IEEE International Conference on Network Protocols (2007),
Uma proposta arquitetural para serviços escaláveis de dados em nuvens
Uma proposta arquitetural para serviços escaláveis de dados em nuvens Anderson Fonseca e Silva 1, Marco André Santos Machado 2, Paulo Fernando A. Soares 2, Francisco M. Soares-Neto 2, Vinicius Cardoso
AcessointerativoparaaplicaçõesP2Pdestreamingdevídeo
º Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos 99 AcessointerativoparaaplicaçõesPPdestreamingdevídeo LuizJ.H.Filho,CarloK.daS.Rodrigues,RosaM.M.Leão ProgramadeEngenhariaeSistemasdeComputação