Вы находитесь на странице: 1из 45

Peer-to-Peer: Computao Colaborativa na Internet

Joo Rocha, Marco Domingues, Arthur Callado, Eduardo Souto, Guthemberg Silvestre, Carlos Kamienski, Djamel Sadok.

Abstract Peer-to-peer (P2P) computing has been promoting a substantial change in the usage patterns of the Internet in the last years. Its most important advantage, compared to client/server computing, is making the direct collaboration among users possible, with no need for intervenient third-party administered servers. P2P networks allow users to share computing resources through the Internet, even for those hosts hidden behind firewalls and NATs. Actually, this apparently new term is the reintroduction of a model used at the very beginning of the Internet, which brings certain benefits but also various problems. This document surveys the main issues related to P2P technology, using the experience that has been gained by the P2P Work Group of the Brazilian Research Network (RNP). Resumo A computao peer-to-peer (P2P) tem promovido uma grande modificao nos padres de uso da Internet nos ltimos anos. Sua grande vantagem, em relao computao cliente/servidor, possibilitar a colaborao direta entre os usurios, sem depender de servidores administrados por terceiros. Redes P2P permitem que recursos computacionais sejam compartilhados pelos usurios da Internet, mesmo que as mquinas estejam escondidas atrs de firewalls e NATs. Na verdade, esse termo aparentemente inovador consiste na re-introduo de um modelo usado no incio da Internet, que possui benefcios, mas tambm uma srie de problemas. Este documento faz um levantamento das principais questes relacionadas tecnologia P2P, utilizando como base as experincias vivenciadas pelo GT-P2P da RNP.

1.1. Introduo
A World Wide Web (Web) sempre teve como proposta principal promover a liberdade, que deve se traduzir no acesso irrestrito a todos os recursos da rede, de qualquer lugar e a qualquer hora. Apesar disso, a Web ainda est presa ao modelo cliente-servidor no qual servidores centralizados executam tarefas para clientes distribudos, como PCs, laptops e telefones celulares. Ou seja, a maior parte das mquinas participam da Web apenas como coadjuvantes acessando recursos providos pela minoria. A tecnologia peer-to-peer (P2P) surge para mudar o paradigma existente, medida que no depende de uma organizao central ou hierrquica, alm de dispor aos seus integrantes as mesmas capacidades e responsabilidades [38]. Atravs dessa tecnologia qualquer dispositivo pode acessar diretamente os recursos de outro, sem nenhum controle centralizado. A inexistncia de um servidor central significa que possvel cooperar para a formao de uma rede P2P sem qualquer investimento adicional em hardware de alto desempenho para coorden-la. Outra vantagem a possibilidade de agregar e utilizar a capacidade de processamento e armazenamento que fica subutilizada em mquinas ociosas. Alm disso, a natureza descentralizada e distribuda dos sistemas P2P torna-os inerentemente robustos a certos tipos de falhas muito comuns em sistemas centralizados. Finalmente, o modelo P2P apresenta o benefcio da escalabilidade, para tratar de crescimentos incontrolveis no nmero de usurios e equipamentos conectados, capacidade de rede, aplicaes e capacidade de processamento. A tecnologia P2P estimula as pessoas no momento que elas percebem que podem participar e fazer a diferena. Isso explica o sucesso de algumas aplicaes como o ICQ, KaZaA e o Napster. Um efeito contrrio, no entanto, pode ser percebido em provedores de servio e gravadoras que se sentem extremamente prejudicados quando perdem o controle. Nesse contexto, o ambiente acadmico se mostra ideal para realizar experimentos e se beneficiar dessa tecnologia, pois pode u tilizar novas ferramentas que auxiliam a troca de informaes sem despender recursos adicionais. O objetivo principal deste documento fornecer subsdios para a compreenso das arquiteturas de redes peer-to-peer (P2P), elucidar aspectos de aplicaes j utilizadas, bem como analisar as ferramentas mais importantes de suporte construo de aplicaes colaborativas. Um aspecto importante a utilizao da experincia prtica dos membros da equipe do Grupo de Trabalho e Computao Colaborativa da RNP (GT-P2P) [19], cujo objetivo avaliar os benefcios da implantao de suporte a sistemas P2P na RNP e nas instituies conectadas, bem como o impacto da utilizao de tais sistemas no desempenho da rede. As instituies conectadas RNP podero utilizar esse suporte para, por exemplo, disponibilizar aplicaes educacionais e de pesquisa. 1.1.1. A Evoluo dos Modelos de Rede na Internet Desde o princpio da Internet, nos anos 60 e 70, poca denominada ARPANET, os computadores em rede utilizam um modelo de comunicao baseado na idia de prestao de

servio entre as mquinas, onde uma mquina presta um servio e as outras mquinas podem ter acesso ao mesmo. Embora essa definio se assemelhe com o modelo cliente/servidor predominante hoje na Internet, no incio no havia restries para a prestao de servios entre mquinas. Todas exerciam ao mesmo tempo a funo de cliente e servidor. Em outras palavras, adotavam o modelo P2P. Alis, ainda hoje a rede formada somente pelos roteadores no interior da Internet segue o modelo P2P. Todos transmitem e recebem informaes, existindo uma igualdade de funes e caractersticas. Aos poucos, a Internet foi perdendo essa caracterstica, por motivos como especializao de funes, necessidade de robustez e alta disponibilidade, problemas de segurana e limitao de recursos computacionais ou capacidade dos enlaces de comunicao. Neste momento, o modelo predominante aquele onde alguns poucos servidores superdimensionados prestam servios a uma infinidade de clientes nas bordas da rede. Isso ocorre, mesmo que a grande maioria dos clientes tenha uma grande capacidade de processamento e armazenamento. Ainda, no fim dos anos 70 e nos anos 80, muita pesquisa foi feita sobre o uso de sistemas distribudos para aplicaes especficas. As idias de autonomia, transparncia, execuo concorrente, tolerncia a falhas e heterogeneidade de plataformas foram organizadas no modelo distribudo e postas em prtica, uso que foi consolidado na dcada seguinte. No fim dos anos 90 apareceu o Napster (seo 1.2.2), aplicao de compartilhamento de arquivos que popularizou o uso de redes P2P, trazendo de volta o modelo original da Internet. No modelo P2P, as mquinas tm mais autonomia, e toda mquina faz o papel de cliente e o papel de servidor. 1.1.2. Definies H inmeras definies sobre redes peer-to-peer na literatura e tentaremos condensar as mais aceitas. Redes peer-to-peer so redes virtuais que funcionam na Internet com o objetivo de compartilhar recursos entre os participantes, sendo que por princpio no h diferenciao entre os participantes. O grupo de pesquisa sobre redes P2P da IRTF [22] as define como o compartilhamento de recursos e servios computacionais diretamente entre sistemas. Em geral, aceito pela comunidade que sistemas P2P devem suportar os seguintes requisitos [37]: Ns podem estar localizados nas bordas da rede; Ns com conectividade varivel ou temporria e endereos tambm variveis; A capacidade de lidar com diferentes taxas de transmisso entre ns; Ns com autonomia parcial ou total em relao a um servidor centralizado; Assegurar que os ns possuem capacidades iguais de fornecer e consumir recursos de seus peers; A rede deve ser escalvel;

A capacidade dos ns se comunicarem diretamente uns com os outros.

Tendo todas estas caractersticas, uma rede pode ser dita peer-to-peer, mesmo que algumas das funes de controle da rede estejam localizadas em um servidor central (ponto de falha). 1.1.3. Redes P2P versus Redes Overlay Uma rede overlay uma rede virtual criada sobre uma rede existente, por exemplo: a Internet, com infra-estrutura IP. A rede overlay cria uma arquitetura com nvel mais alto de abstrao, de modo a poder solucionar vrios problemas que, em geral, so difceis de serem tratados ao nvel dos roteadores da rede subjacente [1]. A prpria Internet pratica o paradigma overlay quando usa o protocolo IP como soluo de interworking sobre tecnologias de redes diversas como ATM, Frame Relay, PSTN, LANs, etc. Numa perspectiva de alto nvel, uma rede P2P pode ser considerada uma rede overlay, uma vez que funciona como uma rede virtual, formada pela interconexo dos ns (peers), executando sobre a infra-estrutura de uma rede fsica (Figura 1).

Figura 1: Rede overlay.

A caracterstica bsica de uma rede P2P que existe um grupo de ns com interesses comuns que esto conectados atravs do mesmo sistema de comunicao. Outras caractersticas dessa rede so: Os ns so conectados de forma aleatria, no h restrio sobre o nmero de ns que participam da rede. A conexo de um n rede se estabelece atravs de outro n que j pertena rede. Os ns podem se unir e sair da rede a qualquer momento sem prvio conhecimento dos demais membros.

1.1.4. Modelos de Arquitetura P2P Existem diferentes categorizaes dos modelos de arquitetura P2P indicados na literatura, das quais trs so apresentadas nesta seo. Na primeira categorizao [37] so considerados dois modelos de rede P2P:

Descentralizado uma rede onde no h um ponto central e cada n tem o mesmo nvel. Neste modelo todos os ns so autnomos e todos os ns so responsveis por troca de recursos e por controle (gerenciamento) de recursos. Os ns podem se comunicar de maneira direta ou atravs de vizinhos comuns (melhor escala de informaes de controle, pior escala de trfego de rede); Semicentralizado uma rede onde h diferena de relevncia entre os ns, havendo um n central para informaes de controle (e, possivelmente, para trfego de dados) ou um conjunto de superns que assume tais funes (onde a queda de um supern afeta apenas os ns inferiores ligados a ele). Os ns inferiores podem ter maior ou menor nvel de autonomia, mas so equivalentes entre si.

Na segunda categorizao [49], tambm muito utilizada, existem trs tipos de arquitetura de rede P2P: Busca centralizada rede com um ponto central (possivelmente espelhado para outros pontos, dando a impresso de serem vrios) de busca e ns que consultam o ponto central para trocar informaes diretamente entre os peers; Busca por inundao rede com ns totalmente independentes, onde normalmente a busca limitada vizinhana mais prxima do n que fez a busca (assim, a busca escalvel, mas no completa); Busca por tabela hash distribuda (DHT) rede onde os ns tm autonomia e usam uma tabela hash para separar o espao de busca entre eles.

Uma terceira classificao [29], que est sendo utilizada principalmente no mundo acadmico nos ltimos anos, divide as arquiteturas P2P em: Centralizada - rede que mantm um ndice central com informaes atualizadas (similar busca centralizada da classificao anterior). Sistemas de compartilhamento de arquivos como Napster (seo 1.2.2.1) e de troca de mensagens (seo 1.2.1) utilizam esta arquitetura. Descentralizada e Estruturada: rede que no possui um servidor centralizado de diretrio de informaes, mas que tem uma estruturao significativa entre os ns.A topologia da rede controlada e os documentos/arquivos so posicionados em locais que posteriormente tornam f a sua localizao. Esse tipo de arquitetura em geral cil utiliza busca baseada em DHT. Essa arquitetura utilizada pelos sistemas Chord, Pastry, Tapestry e CAN (seo 1.4.1). Descentralizada e n Estruturada: rede que no possui servidor centralizado, nem o controle preciso sobre a topologia e localizao/busca de documentos. Compreende os dois tipos (descentralizado e semicentralizado) da primeira classificao e a busca por inundao da segunda. Exemplos da utilizao desta arquitetura so as redes Gnutella e KaZaA (seo 1.2.2.2).

1.2. Aplicaes
Esta seo descreve em maiores detalhes as principais classes de aplicaes P2P: mensagem instantnea, compartilhamento de arquivo, computao distribuda e trabalhos colaborativos. Enquanto essa seo apresenta as categorias de sistemas P2P, a subseo 1.4.3 mostra o funcionamento das principais redes que comportam tais aplicaes. 1.2.1. Troca de Mensagens A possibilidade de poder observar as pessoas entrando na rede e enviar uma mensagem em tempo real, tem tornado as aplicaes de mensagem instantnea (IM Instant Messaging) uma das mais populares da Internet. Diferentemente do correio eletrnico, em que uma mensagem armazenada em uma caixa postal e posteriormente entregue ao usurio que verificou a caixa postal no seu servidor, os sistemas IM fornecem entrega imediata ao usurio. Se o usurio no est disponvel, a mensagem pode ser armazenada at que o mesmo se torne on-line, ou ela pode ser simplesmente descartada. Para evitar esta incerteza na entrega, os sistemas IM fornecem uma lista de contatos com um mecanismo capaz de identificar um usurio e determinar o seu estado, por exemplo, ativo, inativo ou ocupado. Devido popularidade das mensagens instantneas, no surpresa que exista uma variedade de aplicaes IM. Algumas dessas solues so apresentadas a seguir: 1.2.1.1. AIM O AIM (AOL Instant Messenger - http://www.aim.com) um dos mais populares programas de mensagem instantnea. Alm das caractersticas comuns a todas aplicaes IM, o AIM possui um recurso que notifica o usurio das ltimas notcias, cotaes de bolsas, esporte e outras informaes. Um outro recurso interessante a integrao do AIM com o correio eletrnico. Esta integrao permite que o usurio tenha acesso atravs do seu navegador a qualquer uma de suas contas da AOL. 1.2.1.2. MSN Messenger O MSN Messenger da Microsoft (http://messenger.msn.com) possui a funcionalidade de sincronizao de vdeo e voz para oferecer comunicao em tempo real. Alm disso, os usurios podem tirar vantagem da funcionalidade de uma cmera WEB integrada, que permite mostrar imagens ao vivo para a lista de amigos. As caractersticas de voz tambm esto disponveis, possibilitando aos usurios conversar entre si usando o microfone em seu computador. 1.2.1.3. Yahoo! Messenger Uma caracterstica interessante do Yahoo! Messenger (http://messenger.yahoo.com) a sua boa integrao com os servios e contedos do Yahoo!. Alm disso, o usurio pode receber e enviar mensagens atravs do seu telefone celular, ser alertado instantaneamente quando h novas mensagens em seu Yahoo! Mail ou quando est na hora de um de seus compromissos na Yahoo! Agenda. Um exemplo da interface do usurio do Yahoo! Messenger apresentado na Figura 2.

Figura 2: Cliente IM Yahoo! Messenger

Outras aplicaes IM so:


ICQ (http://web.icq.com) JabberIM (http://www.jabber.com) Messaging Architects (http://www.gwtools.com) Omnipod (http://www.omnipod.com) Sametime (http://www.lotus.com/products/lotussametime.nsf/wdocs/homepage) Trillian Messenger (http://www.trilian.cc) Vayusphere (http://www.vayusphere.com)

1.2.2. Compartilhamento de Arquivos A troca e o armazenamento de contedo uma das reas onde a tecnologia P2P tem alcanado maior sucesso. Vrias Aplicaes tm sido usadas por usurios da Internet para burlar as limitaes de largura de banda dos servidores, que em geral, impedem a transferncia de arquivos grandes. Os sistemas de armazenamento distribudo baseados na tecnologia P2P utilizam as vantagens da infra-estrutura existente para oferecer as seguintes caractersticas: reas de armazenamento sistemas como Freenet ( http://freenet.sourceforge.net) fornecem ao usurio uma rea potencialmente ilimitada para o armazenamento de arquivos; Alta disponibilidade do contedo armazenado para garantir alta disponibilidade dos arquivos armazenados, alguns sistemas adotam uma poltica de replicao mltipla do contedo, ou seja, um arquivo pode ser armazenado em mais de um n na rede, ex: Chord [46]; Anonimato alguns sistemas P2P como Publius [52] garantem matematicamente que o documento publicado ser mantido no anonimato de seus autores e publicitrios;

Gerenciamento a maioria dos sistemas P2P fornece mecanismos eficientes de localizao e recuperao dos contedos armazenados na rede.

As principais questes tcnicas em sistemas de compartilhamento de arquivo so o consumo de largura de banda da rede, a segurana e sua capacidade de pesquisa [33]. 1.2.2.1. Napster O Napster (http://www.napster.com) basicamente uma mquina de busca dedicada a encontrar arquivos MP3. Um servidor central utilizado para armazenar uma lista com as msicas disponibilizadas pelos usurios e onde elas esto localizadas. O programa cliente Napster, instalado no computador dos usurios, faz uma consulta ao servidor Napster para obter informaes sobre o arquivo desejado. O servidor Napster responde se existe o arquivo desejado e onde ele est localizado. Caso exista, uma conexo direta estabelecida com o computador onde o arquivo est armazenado para que seja efetuado o download. Essa arquitetura ilustrada pela Figura 3. Existe uma variedade de aplicaes P2P semelhantes ao Napster no que se refere a funcionalidade e algumas das mais populares so: Dmusic (http://www.dmusic.com), Audiogalaxy (http://www.audiogalaxy.com) MyNapster (http://www.mynapster.com) e Wippit (www.wippit.com).

Figura 3: Arquitetura do Napster

1.2.2.2. Gnutella O Gnutella (http://www.gnutella.com) considerado a primeira soluo puramente P2P. Diferentemente do Napster, no existe um servidor central que armazena informaes sobre os arquivos que esto disponveis na rede. Em vez disso, todas as mquinas da rede informam sobre os seus arquivos disponveis usando um mecanismo de inundao e utilizam uma abordagem de busca distribuda para recuper-los. A seo 1.4.3 apresenta informaes mais detalhadas sobre o Gnutella. Existem muitas aplicaes cliente disponveis para acessar a rede Gnutella, algumas das mais populares so: BearShare (http://www.bearshare.com), Gnucleus (http://www.gnucleus.com) LimeWire (http://www.limewire.com), WinMX (http://winmx.com) e XoloX (http://www.holox.com).

1.2.2.3. Freenet O Freenet um software livre que permite que seus usurios publiquem e obtenham informaes na Internet. Para alcanar esta liberdade, a rede completamente descentralizada e os usurios so mantidos no anonimato. As comunicaes dos usurios so sempre cifradas, o que torna extremamente difcil determinar quem est solicitando a informao e qual o seu contedo. Os usurios contribuem com a rede fornecendo largura de banda e espao para armazenamento dos dados. Ao contrrio das outras solues, o Freenet no deixa o usurio controlar o que armazenado no espao de dados. Ao invs disso, os arquivos so mantidos ou excludos de acordo com a freqncia de acessos, os arquivos acessados com menor freqncia so descartados. Isso ajuda a manter o contedo do espao de dados sempre atualizado. A seo 1.4.3 apresenta informaes mais detalhadas sobre o Freenet. 1.2.2.4. KaZaA O KaZaA (http://www.kazaa.com) o sistema de compartilhamento de arquivos mais utilizado na Internet. Ele utiliza o conceito de superns para melhorar o desempenho da rede. Um supern uma mquina que participa da rede (n) e que possui um alto poder computacional e rpidas conexes com a Internet. Os superns mantm uma lista contendo os arquivos disponibilizados por outros usurios e o local onde eles esto armazenados. Quando uma busca executada, a aplicao KaZaA procura primeiro no supern mais prximo do usurio que iniciou a consulta, retorna um conjunto de respostas para o usurio e encaminha a consulta para outros superns. Uma vez localizado o usurio que possui o arquivo, uma conexo estabelecida diretamente entre os peers para que seja efetuado o download. 1.2.2.5. Outras Aplicaes Outras aplicaes P2P de compartilhamento de arquivos so:
AudioGnome (www.audiognome.com) Badblue (www.badblue.com) eDonkey (www.edonkey.com) eMule (www.emule -project.net) Filetopia (www.filetopia.org) Frost (jtcfrost.sourceforge.net) Grokster (www.grokster.com) Imesh (www.imesh.com) Jungle Monkey (www.junglemonkey.net) Napigator (www.napigator.com) Project Elf (www.projectelf.com) Shareaza (www.shareaza.com) Snarfzilla (snarfzilla.sourceforge.net) Spinfrenzy (www.spinfrenzy.com). Splooge (www.splooge.com)

1.2.3. Computao Distribuda A idia de usar os recursos computacionais ociosos no nova. O projeto Beowulf [4] da NASA mostrou que o alto desempenho computacional pode ser obtido usando um conjunto de mquinas. Outros esforos como o MOSIX [2] e Condor [27] tambm tm feito uso da computao distribuda delegando as tarefas computacionais entre as mquinas ociosas.

Grade computacional (grid computing) um outro conceito que foi primeiramente explorado em 1995 pelo projeto I-WAY [14], em que foram utilizadas redes de alta velocidade para conectar recursos computacionais de diferentes localidades nos Estados Unidos. No final da dcada de 90, percebeu-se que a Internet com sua flexibilidade e crescente largura de banda fornece uma infra-estrutura que preenche bem os requisitos de computao distribuda. Um dos primeiros eventos visveis de computao distribuda ocorreu em janeiro de 1999, quando o projeto distributed.net [http://www.distributed.net], contando com a ajuda de vrias dezenas de milhares de computadores na internet, quebrou o algoritmo RSA em menos de 24 horas. Recentes projetos tm estimulado o interesse de muitos usurios dentro da comunidade Internet. O projeto SETI@home (http://setiathome.ssl.berkeley.edu), por exemplo, possui um poder computacional de aproximadamente 25 TFlops/s (trilhes de operaes de ponto flutuante por segundo), coletado de mais de trs milhes de computadores conectados Internet. Esse projeto visa utilizar essa grande capacidade de processamento para analisar os sinais obtidos a partir do rdio-telescpio do observatrio de Arecibo a procura de algum sinal inteligente. A Figura 4 mostra a tela de proteo SETI@home que ativada quando o seu computador est inativo.

Figura 4: A aplicao SETI@home

De modo geral, o SETI@home trabalha da seguinte forma: o problema computacional a resolver dividido em partes pequenas e independentes. O processamento de cada uma feito em um computador individual na rede e os resultados so coletados por um servidor central. Este servidor central responsvel por distribuir as tarefas entre os computadores na Internet. Em cada computador registrado instalado um software cliente que executa alguma computao requisitada pelo servidor. O processamento realizado toda vez que o computador entra em perodo de inatividade, freqentemente caracterizado pela ativao da proteo de tela. Aps o trmino da computao, o resultado retornado para o servidor, e uma nova tarefa alocada para o cliente.

1.2.4. Trabalho Colaborativo Os programas de trabalho colaborativo ou groupware so projetados para melhorar a produtividade de indivduos com metas e interesses comuns. A expresso groupware definida como um software que suporta colaborao, a comunicao e coordenao de vrios usurios em uma rede. Isto inclui a integrao de caractersticas como e-mail, calendrio, espaos de trabalho, listas de discusso, sistemas de gerenciamento de documentos, vdeo conferncia, entre outras. Os sistemas groupware tradicionais como o Lotus N otes foram projetados para suportar o trabalho colaborativo em redes locais. A combinao das solues groupware com a tecnologia P2P trouxe novas oportunidades. As atuais aplicaes possibilitam a criao e extenso de grupos de trabalho espontaneamente, sem levar em considerao a localizao. Algumas aplicaes bem conhecidas so Microsoft NetMeeting (http://www.microsoft.com/windows/netmeeting/) e Groove (http://www.groove.net). Uma ilustrao da interface do Groove apresentada na Figura 5.

Figura 5: Colaborao P2P usando a rede Groove

O Groove usa espaos de trabalho que so criados e compartilhados entre os participantes. Ele usa um mecanismo cliente-servidor para encontrar os peers e iniciar os servios. Aps isso, toda a comunicao acontece diretamente entre os peers participantes. Outras solues colaborativas que esto se popularizando so: Ikimbo (http://www.ikimbo.com) - fornece mecanismos de mensagens instantneas, conferncia, deteco de presena, identificao, caixa de mensagem e transferncia de arquivos.

Consilient (http://www.consilient.com) - fornece um arcabouo desenvolvimento e gerenciamento do fluxo de processos de uma empresa.

para

1.2.5. Outras Aplicaes Conforme observamos nas subsees acima, as implementaes P2P oferecem um melhor suporte s aplicaes onde a centralizao no possvel, a escalabilidade desejvel, o relacionamento entre os usurios transiente e os recursos so altamente distribudos. Assim, sua i fra-estrutura descentralizada abre a possibilidade para o desenvolvimento de outras n aplicaes como as descritas abaixo: Blogs algumas aplicaes P2P permitem com que o usurio possa escrever diretamente em pginas WEB denominadas de blog. Os usurios podem criar seus blogs de acordo com um tema. Por exemplo, um blog privativo para uma equipe de trabalho discutir projetos e apresentar solues. Um sistema blogger encontrado em (www.blogger.com.br). Jogos A infra-estrutura P2P comumente usada como base para as inmeras comunidades de jogos on-line. Interconexo de dispositivos de rede a unio de tecnologias como Bluetooth, Jini e JXTA com o paradigma de comunicao ponto-a-ponto possibilita a formao de grupos de peers com diferentes dispositivos de rede, sejam eles fixos, mveis ou mesmo embutidos.

1.3. Questes de Projeto


Essa seo apresenta as principais questes que devem ser consideras no projeto de sistemas P2P. 1.3.1. Endereamento Aplicaes inerentemente P2P necessitam de conexes diretas entre os peers. Entretanto um problema preponderante a ser tratado no projeto desses sistemas so as barreiras de proteo dispostas nas redes, que impedem a comunicao direta entre os peers. Os tipos de proteo mais utilizados so os firewalls, servidores proxy e NAT Network Address Translator [3]. Firewalls so utilizados para filtragem de protocolos e portas especficas, geralmente permitem o fluxo de mensagens do protocolo h Atualmente, alm de ttp. proteger grandes empresas, os firewalls tambm esto disponveis para usurios de computadores pessoais; Servidores Proxy o servio proxy configurado em um equipamento entre a Internet pblica e a rede local e prov servios de filtragem de sites indesejveis, caching e monitoramento do trfego; NAT so empregados para permitir que usurios utilizem poucos endereos IP vlidos para uma grande rede de computadores. O NAT configurado entre a Internet pblica e rede local, sua principal funo reescrever um endereo IP vlido

e o nmero das portas nos cabealhos IP que ele manipula de tal maneira que os pacotes paream ter sido enviados pelo equipamento que implementa o NAT. Tambm constri uma tabela relativa a cada solicitao das mquinas da rede interna para realizar o encaminhamento de mensagens que saem e que entram na rede. Freqentemente, por razes de segurana, os NATs permitem apenas trfego a partir de um IP externo para mquinas da rede interna, se j tiver sido gerado trfego a partir de uma mquina na rede interna para o endereo IP externo especfico. Uma soluo para transpor essas barreiras pode ser implementada utilizando o protocolo HTTP: HTTP tunneling. Esse protocolo permite que um web browser inicie um pedido em um servidor WEB atravs da porta de comunicao 80. Isso efetivamente no se traduz em ameaa, uma vez que aplicaes externas no podem iniciar aes danosas nas mquinas da rede interna, pois em nenhum momento o servidor WEB inicia uma conexo com o web browser [33]. Por isso, engenheiros de segurana normalmente permitem que essa porta no seja barrada pelos firewalls. Essa soluo tambm aplicada para redes que utilizam servidores proxy e NAT. Um problema com a estratgia HTTP tunneling que a comunicao no mantm estado. As respostas podem ser associadas aos pedidos, mas o contexto entre cada ciclo pedido/resposta anterior perdido. Outro problema com HTTP tunneling est relacionado com a necessidade de iniciar uma mensagem ou passar dados para um cliente protegido por firewall. Como foi dito, o mundo exterior no pode iniciar uma comunicao para fornecer uma mensagem, a nica alternativa esperar para que o cliente entre em contato com o servidor e retire a mensagem. Isso pode aumentar o nmero de mensagens e conseqentemente a latncia. Portanto, clientes em redes cobertas por firewalls tm a desvantagem de no poderem atuar com peers servidores. A utilizao de peers para retransmisso agindo como servidores http, com razovel capacidade de enlace e posicionados em lugares estratgicos na rede, pode isolar o fluxo de mensagens provenientes dos peers protegidos, melhorando o desempenho do HTTP tunneling [37]. 1.3.2. Conectividade A natureza das conexes dos peers de uma rede tem grande relevncia no projeto de sistemas P2P. A questo tem dois lados: As conexes da maioria dos peers tm baixa capacidade de enlace, e ao mesmo tempo existe uma variedade muito grande de tipos de conexes dial-up, banda larga (cable modem, isdn, etc.), redes acadmicas e corporativas. Outra importante caracterstica dos enlaces a assimetria no provisionamento das bandas para upload e download. Essas particularidades requerem que aplicaes considerem a heterogeneidade das conexes dos peers um requisito muito importante no projeto de aplicaes P2P. Os sistemas P2P normalmente crescem em quantidade de recursos disponveis medida que o nmero de usurios da rede tambm cresce. Assim, a escalabilidade de uma rede P2P pelo menos linear. Porm, algumas redes so projetadas levando em considerao as baixas capacidades dos enlaces de grande parte dos usurios, o que conduz a um comportamento tipicamente cliente/servidor em detrimento do trfego P2P. Assim, h

indcios de que as redes P2P apresentam caractersticas small world com comportamentos de distribuies de Lei de Potncia (Power Law) [24]. Em geral, existe uma preferncia por peers bem estabelecidos, isto , com alta capacidade de processamento e armazenamento, e conectados a enlaces dedicados de alta capacidade. 1.3.2.1. Small World A primeira referncia sobre o tema small world foi relatada antes mesmo do advento da Internet. Stanley Milgram buscava determinar se a maioria dos indivduos em sociedade estava ligada por alguma rede de conhecimentos. Assim, foram recrutados voluntrios para tentarem encaminhar uma carta para uma determinada pessoa alvo, atravs de pessoas que eles conheciam baseadas apenas no primeiro nome. A concluso da pesquisa mostrou que grande parte de pares de indivduos esto unidas por um nmero mdio de seis passos, o chamado princpio dos seis graus de separao [24]. Grande parte das tcnicas relacionadas com sistemas P2P considera este fenmeno. Em redes como a Gnutella, selecionando os peers vizinhos que retornam o maior nmero de resultados, assumido uma alta similaridade entre os vizinhos, de modo que uma pesquisa em assuntos de interesse comum pode ser atendida com maior eficincia. Isso se assemelha sociedade moderna onde pessoas tm maior interesse em associar-se a grupos com interesses comuns. Como j foi dito anteriormente, a topologia da rede P2P tem caractersticas de uma distribuio Power Law, e buscas em redes com essa natureza so mais eficazes. Essa estrutura tambm reporta a vida em sociedade, onde as pessoas direcionam suas necessidades para pessoas com conexes sociais bem estabelecidas [54]. Nesse sentido, a capacidade de comunicao das redes um dos principais recursos para compartilhamento em redes P2P. Freqentemente, para os usurios finais, a preocupao com capacidade de enlace acontece apenas na conexo com o gateway de acesso ao ISP (Internet Service Provider). Contudo, a eficincia da infra-estrutura da rede uma questo com grande importncia para aplicaes P2P, que normalmente movimentam um volume de dados muito grande. No Groove (seo 1.4.2.1), somente as modificaes nos arquivos so enviadas, ou seja, a complexidade envolvida no registro das partes e arquivos modificados desde o ltimo acesso no visvel ao usurio. O mtodo para enviar essas modificaes leva em considerao as caractersticas da rede e dependendo do tamanho das mensagens e da capacidade dos enlaces disponveis, as modificaes podem ser enviadas diretamente. 1.3.3. Escalabilidade Um dos benefcios imediatos da descentralizao das redes P2P a melhor escalabilidade dos sistemas. A escalabilidade limitada por fatores relacionados quantidade de operaes centralizadas, como coordenao e sincronizao, os estados que precisam ser mantidos, o paralelismo inerente das aplicaes, o modelo de programao utilizado na construo do sistema. Em geral, sistemas P2P tendem a ter maior escalabilidade que sistemas que utilizam o modelo cliente-servidor. Em um sistema cliente-servidor, os servidores so os nicos responsveis por toda a carga do sistema. O que ocorre muitas vezes que em horrios de

pico os servidores ficam sobrecarregados e o sistema como um todo tende a oferecer um servio com baixa qualidade. Em um sistema P2P, quando o nmero de clientes na rede aumenta, cresce tambm o nmero de servidores, uma vez que todos podem atuar como clientes e servidores, aumentando na mesma proporo a quantidade de recursos compartilhados. Dessa forma, o sistema aumenta de tamanho sem perder escalabilidade [6]. O Napster trata o problema da escalabilidade permitindo que os peers realizem download de arquivos de msicas diretamente dos peers que possuem o arquivo solicitado. Desse modo, o Napster, chegou a suportar at 6 milhes de usurios no seu auge. Em comparao com o Napster, o sistema SETI@home, uma aplicao que utiliza o tempo ocioso das mquinas na rede para realizao de um grid computacional para analisar dados coletados a partir de telescpios com o objetivo de encontrar formas de vida extraterrestre, tem como foco principal o paralelismo da computao distribuda, e j atingiu 3,5 milhes de usurios. Obviamente o apelo do objeto tratado pelas aplicaes um fator a ser considerado na anlise do volume de usurios. A escalabilidade tambm depende do raio de comunicao (grau de conectividade) para computao entre os peers de um sistema P2P. Aplicaes para quebra de cdigo e para buscas de grandes nmeros primos tm melhor desempenho quando o raio de comunicao mais prximo de zero. Ainda citando o exemplo do SETI@home, o grande gargalo para escalabilidade est na transferncia de dados. Os sistemas P2P mais antigos como Gnutella e Freenet so ad-hoc em essncia. Nesses sistemas, um peer simplesmente envia suas consultas para outros peers e estes repassam adiante para outros peers. Esse comportamento faz com que o tempo de resposta da consulta tenha caractersticas no-determinsticas. Algoritmos mais recentes, dentre eles, CAN, Chord, Oceanstore e Pastry (ver item 1.4.1) implementam mapeamento consistente entre a chave do objeto e o peer hospedeiro, conseqentemente um objeto pode ser recuperado to logo os peers hospedeiros possam ser alcanados. Peers nesses sistemas compem uma rede overlay. Cada peer mantm somente informaes acerca de um pequeno nmero de outros ns no sistema. Essa caracterstica limita a quantidade de estados do sistema que precisam ser mantidos, melhorando dessa forma a escalabilidade e proporcionando tambm balanceamento de carga. Por exemplo, Oceanstore foi projetado para permitir bilhes de usurios, milhes de peers servidores e mais de 1010 arquivos disponveis na rede. Portanto, gerar uma topologia estruturada e escalvel importante para sistemas P2P para poder prover latncias menores e melhor desempenho na comunicao entre os peers. 1.3.4. Roteamento Localizar informao numa rede voltil, de grande escala e altamente distribuda no tarefa simples. Nessa seo sero descritos os principais mecanismos de roteamento existentes, ressaltando suas vantagens e desvantagens. Na seo 1.4.1, os principais algoritmos de roteamento so apresentados. Algoritmos de busca e roteamento geralmente tentam otimizar o encaminhamento de uma mensagem de um peer para outro. Os trs modelos mais comuns so (seo 1.1.4):

centralizado, inundao e tabela de hash distribuda (DHT). O modelo de inundao tambm classificado como modelo descentralizado no-estruturado, enquanto que o modelo DHT chamado de modelo descentralizado estruturado. Isso se deve ao mecanismo (estruturado ou no) de entrada de um n na rede e de busca de informaes. 1.3.4.1. Modelo Centralizado Popularizado pelo Napster, esse modelo caracteriza-se pela conexo dos peers a um diretrio central onde eles publicam informaes sobre o contedo que oferecem para compartilhamento. Como ilustra a Figura 6, ao receber uma requisio, o dice (diretrio) n central escolhe o peer no diretrio que for mais adequado. Esse peer pode ser o mais rpido e disponvel, dependendo das necessidades do usurio. Ento, a troca de arquivos ser realizada diretamente entre os dois peers. Esse modelo requer uma infra-estrutura de gerenciamento (o servidor de diretrios), que armazena informaes sobre todos os participantes da comunidade. Tal aspecto pode gerar limites de escalabilidade ao modelo, uma vez que requer servidores maiores quando o nmero de requisies aumenta, e mais espao para armazenamento medida que a quantidade de usurios cresce. Contudo, a experincia do Napster mostrou que, exceto por questes legais, esse modelo era bastante robusto e eficiente.

1 2 3
pesquisa download
Figura 6: Modelo centralizado

4 ndice 5

1.3.4.2. Modelo de Inundao O modelo de inundao de requisies diferente do modelo de ndice central, pois no se baseia na publicao dos recursos compartilhados. Ao invs disso, cada requisio de um peer enviada para todos os peers diretamente conectados, os quais enviam para os peers diretamente conectados a eles, e assim sucessivamente at que a requisio seja respondida ou que ocorra o nmero mximo de encaminhamentos (tipicamente 5 a 9). Esse modelo (Figura 7) utilizado pelo Gnutella e requer alta capacidade dos enlaces de comunicao para proporcionar desempenho razovel, apresentando problemas de escalabilidade quando o objetivo alcanar todos os peers em uma rede. Contudo, o modelo eficiente em comunidades limitadas e em redes corporativas.

pesquisa download

6 4 5

1 3 2
Figura 7: Modelo de inundao

Manipulando o nmero de conexes de cada n e configurando apropriadamente o valor do parmetro TTL (time to live) das mensagens de requisio, o modelo de inundao pode ser utilizado por centenas de milhares de ns. Alm disso, algumas empresas tm desenvolvido softwares para clientes superns, os quais concentram vrias requisies, alcanando bom desempenho com enlaces com capacidades de transmisso mais baixas a custo de alto consumo de CPU. O armazenamento de pesquisas recentes (caching) tambm usado para melhorar a escalabilidade. 1.3.4.3. Modelo DHT O modelo de tabelas de hash distribudas (DHT) o mais recente. Nesse modelo, um ID randmico associado a cada peer da rede que conhecem um determinado nmero de peers, como pode ser visualizado na Figura 8. Quando um documento publicado (compartilhado) em tal sistema, um ID associado ao documento baseado em uma hash de contedo dos documentos e no seu nome. Cada peer ento encaminha o documento ao peer cujo ID mais prximo do ID do documento. Esse processo repetido at que o ID do peer atual seja o mais prximo do ID do documento. Cada operao de roteamento tambm garante que uma cpia local do documento seja mantida. Quando um peer solicita o documento de um sistema P2P, a requisio ir at o peer com ID mais semelhante ao ID do documento. Esse processo continua at que uma cpia do documento seja encontrada. Ento o documento transferido ao peer que originou a requisio, enquanto cada peer que participou do roteamento permanecer com uma cpia local do documento [46]. Apesar do modelo DHT ser eficiente para comunidades grandes e globais, ele apresenta um problema relacionado ao ID do documento. Este precisa ser conhecido antes que uma requisio do documento seja realizada. Assim, mais difcil implementar uma pesquisa nesse modelo que no modelo de inundao. Alm disso, pode ocorrer a formao de ilhas, onde a comunidade se divide em sub-comunidades que no possuem nenhuma ligao (links) entre si.

Arquivo Id = h(dado) = 0008

6
Id 000024

1 5
Id 001500

4
Id 000010

2
Id 001200

3
Id 000200

Figura 8: Modelo DHT

Existem quatro algoritmos principais que implementam esse modelo: Chord, CAN, Tapestry e Pastry, que so apresentados na seo 1.4.1.

1.4. Tecnologias e Solues


Esta seo trata das principais solues e tecnologias utilizadas na implementao de sistemas P2P. So abordadas as principais solues de busca (os algoritmos de roteamento), as plataformas de desenvolvimento e as redes pblicas mais utilizadas na Internet. 1.4.1. Algoritmos de Roteamento A busca de informaes em sistemas P2P depende dos algoritmos de roteamento. Em todos eles uma chave fornecida como entrada e, como resposta, uma mensagem roteada para o n responsvel pela chave. Cada n mantm uma tabela de roteamento consistindo de um pequeno subconjunto de ns do sistema. Quando um n recebe uma consulta de uma chave pela qual ele no responsvel, o n roteia a consulta para algum n vizinho que continua resolvendo a consulta. 1.4.1.1. Chord O sistema Chord [46] consiste de n usurios participantes, cada um dos quais pode ter alguns registros armazenados e est preparado para armazenar bits e itens do ndice para a utilizao por outros usurios. O endereo IP de cada usurio pode ser mapeado para um nmero de m bits atravs de uma funo hash consistente , como SHA-1 [5]. Desse modo, possvel converter qualquer endereo IP em um nmero de 160 bits chamado de identificador do n.

Figura 9: (a) Um conjunto de 32 identificadores de ns organizados em um crculo. (b) Exemplos de tabelas finger.

Conceitualmente, todos os 2160 identificadores esto organizados em um espao de chave circular. A Figura 9 mostra o crculo de identificadores de ns para m = 5, ou seja, 25 identificadores. Observe que os ns 1, 4, 7, 12, 15, 20 e 27 correspondem a ns reais e esto sombreados na Figura 9, apenas esses ns fazem parte da rede. Os identificadores so representados como um crculo de nmeros de 0 a 2m 1, ento o sucessor(k) definido como sendo o identificador de n do primeiro n real seguinte a k, no sentido horrio. Por exemplo, o sucessor(5) = 7, sucessor(9) = 12 e sucessor(20) = 27. Os nomes de registro tambm so mapeados para nmeros atravs da funo hash (SHA-1) para gerar um nmero de 160 bits, denominados chaves. Dessa forma, para converter o nome do registro (arquivo procurado) em sua chave usamos chave = hash (nome). Se uma pessoa deseja tornar disponveis os seus registros, primeiro ela deve criar uma tupla do tipo (nome, IP) e depois pedir ao sucessor (hash(nome)) para armazenar a tupla. Se mais tarde algum usurio quiser procurar por nome, ele utilizar o hash do nome para obter chave, e depois usar sucessor (chave) para encontrar o endereo do IP do n que armazena suas tuplas de ndice. Localizao de Chave Simples De um modo geral, o algoritmo Chord funciona da seguinte forma: o n solicitante envia um pacote a seu sucessor contendo seu endereo IP e a chave que est procurando. O pacote se propaga pelo anel at localizar o sucessor para o identificador que est sendo procurado. Quando o sucessor (aquele que possui a chave solicitada) encontrado, ele devolve as informaes diretamente ao solicitante, cujo endereo IP ele dispe. Cada n contm o

endereo IP do seu sucessor e de seu predecessor, de forma que as consultas possam ser enviadas no sentido horrio ou anti-horrio, dependendo do percurso mais curto. Mesmo com duas opes de sentido, a pesquisa linear de todos os ns muito ineficiente em um sistema P2P de grande porte, pois o nmero mdio de ns exigidos por pesquisa N/2. Localizao de Chave Escalvel Para tornar a busca mais rpida, o Chord mantm informaes adicionais de outros ns. Estas informaes so armazenadas em uma tabela de m entradas, denominada de tabela finger. Cada uma das entradas tem dois campos: incio e o endereo IP de seu sucessor, como mostra os exemplos apresentados na Figura 9b. Os valores dos campos correspondentes entrada i no n k so:
inicio = k + 2i (mdulo 2m ) endereo IP de sucessor(inicio[i])

Este esquema tem duas caractersticas importantes. Primeiramente, cada n armazena informaes de um nmero relativamente pequeno de ns, em que a maior parte desses ns tem identificadores de ns bastante prximos. Segundo, a tabela finger de um n no contm informaes suficientes para determinar diretamente o sucessor de uma chave k arbitrria. Por exemplo, o n 1 na Figura 9a no pode determinar o sucessor da chave 14, uma vez que o sucessor (n 15) no aparece em sua tabela finger. Utilizando a tabela finger, a pesquisa da chave no n k prossegue da seguinte maneira: Se a chave estiver entre k e o sucessor(k), ento o n que contm a informao sobre a chave o sucessor(k), e a pesquisa se encerra. Caso contrrio, a tabela finger consultada para determinar a entrada cujo campo incio o predecessor mais prximo da chave. A seguir, uma solicitao enviada diretamente ao endereo IP contido nessa entrada da tabela finger, solicitando que ele continue a pesquisa. Tendo em vista que cada pesquisa reduz metade a distncia restante at o destino, possvel mostrar que o nmero mdio de pesquisa log2 n. Para melhorar o entendimento, considere a pesquisa de chave = 14 no n 1. Como 14 no est entre 1 e 4, a tabela finger consultada. O predecessor mais prximo a 14 9, e assim a solicitao encaminhada ao endereo IP da entrada de 9, isto , ao n 12. O n 12 verifica que o n 14 est entre ele e o seu sucessor, no caso 15, e assim retorna o endereo IP do n 15. O Chord ainda traz um procedimento que visa corrigir a tabela finger, constantemente desatualizada pela entrada e sada dos ns. Maiores detalhes podem ser obtidos em [46]. 1.4.1.2. Pastry No Pastry [41], a cada n da rede atribudo um identificador (nodeId) de 128 bits que pode ser gerado a partir de uma funo hash aplicada ao seu endereo IP ou a sua chave pblica. O nodeId usado para indicar a posio do n em um espao de chave circular com faixa de 0 2128 1. Uma chave mapeada para um n cujo nodeId est numericamente

mais prximo da identificao da chave. Assumindo que uma rede consiste de N ns, o Pastry pode rotear qualquer mensagem em O(log2bN) hops (b um parmetro de configurao). Para o propsito de roteamento, o nodeId e as chaves so pensados como uma seqncia de dgitos com base 2b. O Pastry roteia as mensagens para o n cujo nodeId est numericamente mais prximo da chave pesquisada. Isto feito da seguinte forma: a cada etapa do roteamento, um n normalmente encaminha as mensagens para outro n cujo nodeId compartilhe com a chave pelo menos um digito (ou b bits) a mais do que compartilhado com o n atual. Se nenhum n conhecido, a mensagem encaminhada para um n cujo nodeId compartilha um prefixo com a chave e est numericamente mais prximo da chave do que o presente n. Para suportar este procedimento de roteamento, cada n mantm uma tabela de roteamento, um conjunto de vizinhanas e um conjunto de folhas. Uma tabela de roteamento formada por log2bN | linhas, cada uma com 2b 1 | entradas. Cada entrada na tabela de roteamento contm o endereo IP de potenciais ns cujo nodeId tem um prefixo apropriado. O conjunto de vizinhana M contm os nodeIds de |M | ns que esto mais prximos (de acordo com uma mtrica de proximidade) do n local. O conjunto de vizinhana normalmente utilizado no roteamento das mensagens. O conjunto de folhas, L, formado pelos |L|/ 2 ns sucessores e |L|/ 2 ns predecessores mais prximos de um dado n. A Figura 10 apresenta um estado hipottico de um n Pastry com nodeId igual a 10233102 (base 4), em um sistema de 16 bits para identificao e um valor de b = 2.

Figura 10: Tabela de roteamento do N 10233102

O procedimento de roteamento funciona da seguinte maneira: dado uma mensagem, o n primeiro checa se a chave est dentro da faixa de endereos coberto pelo conjunto de folhas. Em caso afirmativo, a mensagem encaminhada diretamente para o n destinatrio.

Isto quer dizer que existe um n no conjunto de folhas que est mais prximo da chave pesquisada (possivelmente no presente n). Se a chave no encontrada no conjunto de folhas, ento a tabela de roteamento usada e a mensagem encaminhada para o n que compartilha um prefixo comum com a chave (pelo menos um ou mais dgitos). Em certos casos, possvel que o n associado no esteja alcanvel. Neste caso, a mensagem encaminhada para um n que compartilhe um prefixo com a chave e est numericamente mais prximo da chave do que o n atual. O sistema Pastry ainda fornece alguns procedimentos para lidar com as questes de entrada e sada de ns da rede. Alm de aplicar uma heurstica que garante que as entradas na tabela de roteamento so escolhidas de maneira a fornecer uma boa localizao. 1.4.1.3. Tapestry O Tapestry [47] muito similar ao Pastry. Entre as similaridades esto o uso do prefixo/sufixo no roteamento, o algoritmo de entrada e sada dos ns e o custo de armazenamento do contedo. Por estes motivos, abordaremos neste texto somente as principais diferenas. No Tapestry no existem os conjuntos de ns folhas e de vizinhos. Quando a tabela de roteamento de u n no possui uma entrada para um n que compartilhe um sufixo m comum com a chave (pelo menos um ou mais dgitos), a mensagem encaminhada para um n que est numericamente mais prximo da chave do que o n atual. O nmero de saltos esperados log16N.

1.4.1.4. CAN O CAN (Content Addressable Network) [40] baseado em um espao cartesiano de d dimenses sobre uma toride. Este espao de coordenada completamente lgico e no possui nenhuma relao com as coordenadas fsicas do sistema. Este plano virtual dinamicamente dividido entre todos os ns de maneira que cada n possua sua prpria zona. Por exemplo, a Figura 11 mostra um espao de coordenada 2d [0,1] x [0,1] dividido entre 5 ns.

zona do n B

Figura 11: Exemplo de um espao 2d com 5 ns

O espao virtual usado para armazenar todos os pares (chave, valor) entre os ns participantes da rede. Uma chave K deterministicamente mapeada em um ponto P do espao cartesiano utilizando uma funo hash uniforme. O par (chave, valor) ento armazenado no n responsvel pela zona onde o ponto P se encontra. Quando um n deseja

encontrar o valor correspondente chave K, ele deve aplicar a mesma funo no valor da chave para encontrar o ponto para o qual ir direcionar sua busca. Se o ponto P no de responsabilidade do n, ou de seus vizinhos, a busca dever ser roteada pela rede CAN at encontrar o n que possua a zona onde o ponto P se encontra.
d=2

N L A S O

Figura 12: Roteamento no espao de coordenadas 2d

Cada n mantm uma tabela de roteamento contendo o endereo IP e a coordenada da zona de cada um dos seus vizinhos imediatos. Uma mensagem CAN inclui as coordenadas do destinatrio. Usando o conjunto de coordenadas dos seus vizinhos, um n faz o roteamento das mensagens para o vizinho que mais se aproxima das coordenadas do destinatrio, conforme mostra a Figura 12. Para um espao com d dimenses dividido em n zonas iguais, em mdia so necessrios (d/4)(n1/d) saltos e cada n mantm 2d vizinhos. 1.4.2. Plataformas de Desenvolvimento Muitas aplicaes P2P atuais no utilizam nenhum arcabouo (framework) para desenvolver suas aplicaes. Entretanto, j possvel utilizar algumas plataformas de desenvolvimento para alavancar a construo de novas solues P2P, como JXTA, .Net e Groove. 1.4.2.1. JXTA At recentemente, a tecnologia P2P esteve sendo utilizada em aplicaes de funo nica, tal como comunicadores instantneos. Levando o conceito de P2P mais adiante, a Sun Microsystems concebeu a idia do Projeto JXTA como um meio de integrar a tecnologia P2P ao ncleo da arquitetura de rede [23]. O Projeto JXTA um conjunto de protocolos P2P simples e abertos que habilitam os dispositivos na rede a se comunicarem, colaborarem e compartilharem recursos. Os peers JXTA criam uma rede virtual ad hoc no topo de redes existentes, mascarando a complexidade existente nas camadas de baixo. Na rede virtual JXTA, qualquer peer pode interagir com outros peers, independente de sua localizao, tipo de servio ou ambiente operacional mesmo quando alguns peers e recursos esto posicionados atrs de firewalls ou esto em diferentes tecnologias de transporte de rede. Assim, o acesso aos recursos da

rede no limitado por incompatibilidades de plataforma ou restries da arquitetura clienteservidor. A tecnologia do Projeto JXTA adota como objetivos: interoperabilidade (entre diferentes sistemas e comunidades P2P), independncia de plataforma (diversas linguagens, sistemas e redes), generalidade (qualquer tipo de dispositivo digital) e segurana. A tecnologia JXTA funciona em qualquer dispositivo, incluindo aparelhos celulares, PDAs, sensores eletrnicos, estaes de trabalho e servidores. Baseado em tecnologias aprovadas e padronizadas como HTTP, TCP/IP e XML, JXTA no dependente de nenhuma linguagem de programao particular, sistema de rede, ou plataforma de sistema e pode trabalhar com uma combinao dos mesmos. JXTA est posicionada como uma pilha P2P, uma camada localizada acima do sistema operacional ou mquina virtual e abaixo das aplicaes e dos servios P2P. Pode ser descrita simplesmente como uma tecnologia que permite a comunicao entre peers. Cada peer associado a um identificador nico, um peer ID, e pertence a um ou mais peergroups. Dentro dos peergroups os peers cooperam e tm funes similares sob um conjunto unificado de capacidades e restries. JXTA prov protocolos para as funes bsicas: criar e encontrar grupos, entrar e sair de grupos, monitorar os grupos, conversar com outros grupos e peers, compartilhar contedo e servios tudo isso realizado atravs da publicao e troca de anncios XML e mensagens entre os peers. Conceitualmente, cada peer no JXTA abstrai trs camadas: o ncleo, a camada de servios e a camada de aplicao. O ncleo responsvel por gerenciar o protocolo JXTA; ele encapsula o conhecimento de todas as operaes P2P bsicas. Ou seja, ele contm as funcionalidades e a infra-estrutura suficientes para o desenvolvimento de qualquer aplicao P2P. A camada de servio, por sua vez, armazena as funcionalidades comuns que mais de um programa P2P poderia utilizar. Ela prov funcionalidades similares a de uma biblioteca que pode ser controlada pelas aplicaes JXTA atravs de lgica na camada de aplicao. A camada de aplicao, finalmente, onde a aplicao P2P realmente reside. Ela pode permitir que o usurio controle diferentes servios, ou pode ser onde a lgica de uma aplicao autnoma opera. Por exemplo, um simples programa de bate-papo pode ser construdo nessa camada, fazendo uso tanto do servio quanto do ncleo para permitir que os peers troquem mensagens. Para desenvolvedores, o Projeto JXTA prov um conjunto de blocos que permitem uma slida fundao para aplicaes computacionais distribudas e do suporte a funes comuns requeridas por qualquer sistema P2P. Utilizando esses recursos, os desenvolvedores podem elaborar suas aplicaes P2P mais facilmente. J esto disponveis APIs em Java, C++ e outras linguagens. Os protocolos JXTA esto especificados em alto-nvel e, portanto, podem ser implementados teoricamente em qualquer linguagem. A arquitetura JXTA est atualmente em sua segunda verso. Modificaes significativas foram realizadas a fim de criar redes P2P de melhor desempenho, maior escalabilidade e facilidade de manuteno.

1.4.2.2. .NET A plataforma .Net [31] disponibiliza um conjunto de alternativas que podem ser utilizadas para construir aplicaes P Entretanto, importante conhecer como as funcionalidades 2P. podem ser utilizadas, de modo a tornar mais fcil a escolha do modelo mais adequado a cada aplicao. A plataforma .NET disponibiliza quatro modelos (ou tipos) de aplicao para P2P [32]: Web Services: Essa tecnologia prov mecanismos para fazer registro, descoberta e recuperao (download) para aplicaes P2P. Windows Forms: Essa a soluo fornecida pela plataforma .NET para facilitar a construo de interfaces grficas sofisticadas e pode ser utilizada para construir aplicaes P2P mais estimulantes. Service Process: Essa tecnologia permite construir aplicaes P2P capazes de compartilhar e localizar servios de processamento. Esse tipo de soluo muito til para construir solues que requerem processos distribudos, como o Seti@home (http://setiathome.ssl.berkeley.edu).

1.4.2.3. Groove Development Kit (GDK) O GDK [18] uma plataforma para desenvolvimento de aplicaes P2P que pode ser utilizada gratuitamente. No entanto, deve-se obter uma licena para os produtos criados com ele. O Groove foi desenvolvido utilizando Microsof Component Object Model (COM). Sendo assim, alm de simplesmente utilizar as funcionalidades fornecidas pelo Groove, que permitem a prototipao rpida de aplicaes P2P utilizando linguagens script como VBSCript ou JavaScript, qualquer extenso deve ser implementada utilizando objetos COM, o que prende os programas plataforma de desenvolvimento Microsoft. O Groove utiliza uma abordagem hbrida, o que permite o emprego de soluo centralizada ou descentralizada. Alm disso, ele disponibiliza os seguintes servios: Armazenamento de mensagens enviadas para clientes off-line; Servios de interface grfica; Gerenciamento de dados, permitindo manipular facilmente dados sincronizados; Compartilhamento de espao, possibilitando acessar ferramentas (de um grupo) em tempo de execuo; Servio de identificao, que permite recuperar (localizar) usurio que esto on-line. Ferramentas de publicao, que permitem disponibilizar, criar, refinar e testar as ferramentas desenvolvidas.

Tudo que preciso para desenvolver aplicaes baseadas nessa arquitetura o kit de desenvolvimento (GDK) e conhecimento em linguagens COM como, Visual C++, Visual Basic, Delphi, etc. Informaes adicionais sobre o desenvolvimento de aplicaes P2P com Groove podem ser encontradas em [28] e [39].

1.4.3. Redes Pblicas Redes P2P tornaram-se populares com o surgimento do Napster em 1999 e continuaram em evidncia com os servios providos pelo KaZaA e Morpheus. Em poucos anos, aplicaes P2P passaram a ser utilizadas por milhares de usurios para troca de mensagens, texto, udio e vdeos, armazenados em milhares de computadores pessoais espalhados em todo o mundo. Atualmente existem vrias aplicaes P2P disponveis na Internet. Esse texto descreve em resumo o funcionamento de algumas dessas aplicaes. 1.4.3.1. Gnutella Pode-se dizer que o Gnutella (http://www.gnutella.com) um dos primeiros protocolos e aplicaes verdadeiramente P2P. Difere do Napster por no possuir um servidor centralizado. O Gnutella baseado em um mtodo de descoberta dinmico para encontrar outros ns Gnutella na Internet. Tanto o cliente quanto o servidor so empacotados em uma nica distribuio binria. A rede que formada pela unio de todos os ns que rodam o protocolo Gnutella chama-se Gnutella Network ou gNet. O protocolo Gnutella est em constante evoluo e a ltima verso a 0.6 [26]. Gnutella um popular protocolo P2P, e foi inicialmente desenvolvido por programadores da NullSoft com a finalidade de compartilhar arquivos, era disponibilizado sobre GNU Public License (GPL) por volta de maro de 2000. A AOL adquiriu a NullSoft aps o surgimento do WinAmp, e devido a problemas com gravadoras e o Napster, a AOL suspendeu qualquer desenvolvimento formal do Gnutella. Porm, ocorreu uma reao por parte da comunidade internet, que uniu esforos i dividuais e corporativos para inovar o n Gnutella, mant-lo funcionando e trabalhando melhor. O alvo primrio do Gnutella o compartilhamento de msicas, dando nfase computao P2P. H clientes disponveis para diferentes plataformas, tais como: Windows, Unix, Macintosh e Linux. Arquitetura A rede Gnutella consiste em um sistema descentralizado onde os ns esto conectados via TCP/IP e executando um software que implementa o protocolo Gnutella. Para se conectar rede, um n precisa saber previamente um endereo de um outro n que j participa da rede. A rede Gnutella do tipo broadcast, no qual consultas so duplicadas e repetidas para os demais ns. Para melhorar o desempenho e a escalabilidade da rede o Gnutella categoriza os ns em supern e n cliente. O supern nada mais que uma mquina confivel e que possui alta taxa de transmisso de dados agindo como um servidor proxy, servindo vrios ns clientes. Dessa forma, o supern remove uma carga excessiva da rede roteando mensagens dos clientes que possuem baixa taxa de transmisso de dados. Nesse caso, um usurio que acessa a rede via modem conecta-se diretamente ao supern melhorando bastante o seu desempenho. Quando utiliza esse conceito, a rede Gnutella imita a prpria Internet: ns que possuem baixa taxa de transmisso de dados se conectam a potentes roteadores que transmitem a maioria dos dados utilizando altas taxas de transmisso.

Procedimento de Busca O n onde a busca foi realizada envia uma mensagem com a consulta para todos os ns que esto diretamente ligados a ele. Esses ns por sua vez, repassam a consulta para todos os ns vizinhos. Esse processo se repete atingindo todo os ns pertencentes a um determinado raio. Como as consultas consomem muita largura de banda da rede Gnutella, elas so limitadas a 256 bytes. Alm disso, o Gnutella utiliza um parmetro (TTL) para especificar o nmero mximo de vezes que a consulta pode se propagar para outros ns. Os ns so responsveis por ignorar uma determinada consulta quando o TTL expira. As consultas no Gnutella contm uma string com as palavras chaves da busca. Para atingir esse critrio o nome do arquivo deve conter todos os termos procurados. Sendo assim, uma consulta por Caetano mp3 retornaria o arquivo musicas_caetano.mp3 e no retornaria caetano.doc. As consultas possuem um campo que determina a velocidade mnima que um n deve possuir para que ele esteja apto a retornar uma consulta, isso evita que mquinas que tenham uma baixa taxa de transmisso forneam arquivos. Pode existir ainda um tipo de consulta que requisite todos os arquivos de um determinado n. Um n responde a uma consulta quando o seu contedo satisfaz a consulta. A resposta do n contm o seu endereo IP e uma porta onde o n pode ser acessado para transferir o arquivo. A resposta percorre o mesmo caminho da consulta. Transferncia de arquivos Uma vez que o n que realizou a busca e recebe uma resposta positiva, ele sabe o endereo IP do n, ou dos ns, que atendeu, ou atenderam, a sua consulta. Sendo assim, ele abre uma conexo TCP/IP diretamente para o n que possui os arquivos. Se o n que contm os arquivos est embaixo de um firewall, o n envia uma consulta push, esse tipo de consulta diz para o n que contm os arquivos para ele enviar determinados arquivos para o solicitante. Caso as duas mquinas estejam em baixo de um firewall, outras tcnicas mais elaboradas devem ser utilizadas [33]. 1.4.3.2. Freenet Freenet [10] (http://freenet.sourceforge.net/) nasceu de um projeto iniciado em 1997 por Ian Clarkena na diviso de informtica da Universidade de Edinburgh. Os objetivos do Gnutella e Freenet so diferentes. Enquanto o Gnutella concentra-se em ser um mero aplicativo, o Freenet tem objetivos scio-polticos, tais quais: Permitir que pessoas distribuam material anonimamente; Permitir que esse material seja consultado tambm de forma annima; Garantir que seja praticamente impossvel a retirada completa do material na rede; Operar sem controle central.

Tecnicamente, o Freenet possui um mecanismo dinmico de publicao que cria rplicas dos arquivos solicitados nos peers entre o solicitante e o fornecedor. Isso possibilita otimizar buscas dinamicamente, diminuindo assim o nmero de saltos, uma vez que os peers

de interesse comum tendem a estar conectados de forma direta ou prxima, conforme a Figura 13.
A B E
Arquivo original

F
Consulta

Cpia

Resposta

Figura 13: Mecanismo de replicao de arquivos do Freenet

O Freenet tambm possui um controle do tempo de publicao de cada arquivo, o material que passa muito tempo sem ser consultado excludo da rede. Durante a busca, quando o cliente Freenet recebe uma requisio e no pode atend-la, ele encaminha para apenas um site (unicast) onde a busca feita em profundidade. Ao contrrio do Gnutella que a repassa a todos os seus vizinhos (multicast). Por isso o Freenet apresenta maior escalabilidade e menor demanda de trfego. Arquitetura O Freenet possui uma topologia de rede similar a do Gnutella, exceto pelo fato de que o Freenet tem como objetivo principal criar um sistema global de armazenamento de informaes. O foco principal no armazenamento de arquivos. A rede Freenet no apenas roteia mensagens, ela tambm armazena vrios arquivos em mquinas que no os pertence. Sendo assim, o Freenet constri um imenso sistema de armazenamento distribudo e tolerante a falhas. Os ns esto conectados via TCP/IP. Quando um novo n entra na rede ele tem que conhecer o endereo de algum outro n que pertena rede. Alm disso, o cliente deve especificar a quantidade de disco disponvel para armazenar dados de outros ns. O usurio no capaz de acessar o contedo que est armazenado na sua mquina local, pois esses dados ficam codificados. Todo arquivo armazenado no Freenet identificado por uma chave nica, dessa forma necessrio saber a chave do arquivo antes de recuper-lo. Quando o download do arquivo realizado, a aplicao re-aplica o algoritmo sobre o arquivo para regerar a chave e comparar com a chave original, esse procedimento permite verificar se o arquivo foi adulterado pela rede. Procedimento de Busca A busca no Freenet evita encher a rede de consultas, assim como faz a rede Gnutella. Cada n do Freenet envia uma consulta para ns prximos ao que eles acham que possui a informao. Essa deciso tomada levando em considerao uma tabela de roteamento que cada n possui. Essa tabela armazena endereos de outros ns e chaves que eles devem possuir.

Quando um n atende a uma consulta, eles armazenam a direo (caminho) dos ns que possuem a consulta, otimizando futuras solicitaes desse arquivo. Os ns que repassam a resposta tambm podem armazenar o arquivo localmente, passando a ser fonte da informao para consultas futuras. Transferncia de arquivos Um dos objetivos do Freenet manter annimos os ns que possuem um arquivo. Diferentemente do Gnutella, a recuperao de um arquivo realizada atravs de vrios ns, o que dificulta a identificao do n que forneceu o arquivo, tornando annimas as mquinas que compartilham informaes. 1.4.3.3. FastTrack O FastTrack a rede pblica dos aplicativos: KaZaA, KaZaA Lite, iMesh e Grokster. Essa rede utiliza uma arquitetura em duas camadas, onde a primeira composta por superns (mquinas mais potentes e que possuem conexo rpida) e a segunda formada por mquinas de usurios comuns. Os superns assumem um papel principal na rede, uma vez que todo usurio precisa se conectar a um supern para ter acesso ao sistema. Alm disso, eles so responsveis pela busca que realizada da seguinte forma: 1. Ao se conectar a um supern as mquinas avisam quais os nomes dos arquivos que elas dispem. Quando chega uma consulta, a busca feita apenas nesse sub-conjunto dos dados. 2. O supern retorna o resultado da busca feita localmente. Esse processo rpido e o efeito causado no usurio final excelente, uma vez que ele percebe que o sistema est respondendo rapidamente. 3. O supern, ento, submete a consulta a outros superns, para encontrar respostas mais precisas para a consulta do usurio. O FastTrack a maior rede pblica existente e mantm em mdia 4 milhes de usurios conectados a todo o momento. Esses usurios disponibilizam diferentes tipos de arquivos, como vdeo, udio, softwares, etc. 1.4.3.4. Edonkey2000 e OverNet Edonkey2000 (http://www.edonkey2000.com) a rede dos aplicativos: eDonkey, eMule (http://www.project-emule.com). Trata-se de rede centralizada, entretanto a empresa que desenvolveu essa rede, a MetaMachine, distribuiu o software servidor. Atualmente, qualquer usurio est apto a criar o seu prprio servidor. Essa rede se destaca das demais pela quantidade de arquivos de vdeo que elas contm. A maior parte dos arquivos disponveis so de boa qualidade. Isso se deve ao fato de que cada arquivo armazenado no sistema possui um cdigo hash que o identifica unicamente. Esses arquivos so indexados e selecionados em sites especializados, que excluem os arquivos de baixa qualidade ou danificados. Um problema acarretado pela distribuio do software servidor que o prprio usurio fica responsvel por manter a lista de servidores atuais. Para facilitar essa tarefa, existem alguns sites que mantm a lista de servidores mais atuais, portanto o que o usurio

precisa fazer ir ao site e recuperar a lista. No entanto, estes servidores podem (e ficam) facilmente congestionados, prejudicando o desempenho da rede eDonkey. Overnet (http://www.overnet.com) foi desenvolvido para resolver os problemas de servidores centralizados do eDonkey. Ele publica as informaes e efetua as buscas de uma maneira completamente descentralizada, usando um modelo DHT. Ambos (eDonkey2000 e Overnet) usam o mesmo protocolo para transferncia rpida de arquivos, o Multisource FTP (MFTP). A tendncia que os usurios do eDonkey2000 migrem para a rede Overnet.

1.5. Atividades do Grupo de Trabalho P2P da RNP


Esta seo tem por objetivo apresentar o Grupo de Trabalho de Computao Colaborativa da RNP [19], seus objetivos e atividades, bem como a experincia da equipe com algumas questes relacionadas a sistemas P2P na Internet e particularmente no backbone da RNP. 1.5.1. Objetivos O Grupo de Trabalho em Computao Colaborativa (GT P2P) tem o objetivo de avaliar os benefcios da implantao de suporte a sistemas P2P na RNP e nas instituies conectadas, bem como o impacto da utilizao de tais sistemas no desempenho da rede. Alguns dos objetivos especficos que definem o escopo do projeto dentro das possveis atividades na rea de P2P, so: Implantao de um projeto piloto para suporte a aplicaes P2P; Anlise dos efeitos do trfego gerados por aplicaes P2P no backbone da RNP; Avaliao do impacto de aplicaes P2P em diversas plataformas e tecnologias de comunicao.

Nesta seo so descritos dois principais objetivos do GT-P2P: projeto piloto e avaliao de trfego. O projeto piloto compreende uma infra-estrutura para o desenvolvimento de aplicaes P2P e um conjunto de aplicaes que utilizam essa infraestrutura. A anlise de trfego apresenta um estudo feito pelo GT-P2P sobre o trfego de aplicaes P2P na RNP. Finalmente so abordados aspectos de simulao relacionados redes P2P. Informaes adicionais sobre o GT-P2P (e formas de colaborar com o desenvolvimento) esto disponveis em http://www.cin.ufpe.br/~gprt/gtp2p. A pgina tambm disponibiliza relatrios tcnicos mais detalhados sobre o projeto e solues que esto sendo desenvolvidas. 1.5.2. Projeto Piloto O Projeto Piloto que est sendo desenvolvido pelo GT-P2P pode ser dividido em duas partes: infra-estrutura e aplicaes. A infra-estrutura abrange uma srie de servios que sero fornecidos por mquinas executando no backbone da RNP para auxiliar e facilitar a construo de aplicaes P2P. As aplicaes compreendem o desenvolvimento de softwares para validar a infra-estrutura proposta.

1.5.2.1 Infra-estrutura Existe atualmente uma srie de ferramentas que auxiliam a construo de aplicaes P2P (seo 1.4.2). A proposta do GT-P2P no construir uma nova plataforma de desenvolvimento, mas utilizar os recursos da RNP para prover um conjunto de servios que atendam s principais necessidades das aplicaes P2P, como identificao de nomes e localizao de recursos. A infra-estrutura, denominada de XPeer uma aplicao distribuda que permanecer em execuo no backbone da RNP em tempo integral. Os PoPs iro executar instncias dessa aplicao formando uma rede P2P de altssima velocidade dentro do backbone da RNP. No futuro, outras mquinas podero executar instncias dessa aplicao P2P, o que iro permitir acesso a um maior nmero de usurios, alm de aumentar a quantidade de informaes compartilhadas. Dessa forma, a infra-estrutura XPeer pode alcanar maior escalabilidade sem perder desempenho. Cada n da rede XPeer mantm um conjunto de usurios (aplicaes que utilizam o servio da rede XPeer) da RNP conectados a ele. As informaes referentes a cada usurio ficam armazenadas no PoP no qual o usurio tiver sido registrado e replicadas em outros PoPs vizinhos. Essas informaes podem ser acessadas por qualquer outro PoP da rede XPeer e servem para localizar um usurio ou mesmo customizar aplicaes. Atravs do uso desta arquitetura, diferente de uma arquitetura cliente-servidor, qualquer n (PoP) da rede pode deixar de funcionar e mesmo assim a aplicao continuar executando. Outra caracterstica inerente s aplicaes P2P presente nessa infra-estrutura a capacidade de um n acessar qualquer outro n da rede. Todo n tem papel de cliente e de servidor, operando como servidor quando compartilham informaes e como cliente quando recuperam informaes na rede. A arquitetura do XPeer dividida em trs camadas principais (Figura 14) que so: Camada de Servios Contm os servios disponibilizados pelo XPeer e que sero utilizados pelas diversas aplicaes. Aplicao Consiste em uma aplicao distribuda que utiliza solues P2P existentes como JXTA (seo 1.4.2) e Chord (seo 1.4.1). Mdulos teis Contm os mdulos que do suporte aplicao distribuda. Existem trs mdulos principais que sero utilizados por esta camada: o JXTA, o Chord e Storage. O JXTA contm uma srie de funcionalidades que auxiliam na construo de aplicaes P2P genricas. O Chord prov solues de busca e o Storage um sistema de armazenamento de dados proprietrio que poder conter informaes da aplicao e do usurio.

Remove

Access

Search
JXTA

Scope

A parte mais importante da infra-estrutura XPeer so os servios que ela disponibiliza para auxiliar outras aplicaes. Join Atravs desse servio o usurio solicita a sua participao na rede. Para que um usurio seja aceito pela rede, ele deve possuir um identificador nico e uma senha. O usurio publica na rede um conjunto de informaes que servem para que outros usurios possam encontr-lo. Esse servio tambm responsvel por autenticar e garantir a identidade de um usurio, podendo ser utilizado a partir de qualquer dispositivo capaz de se conectar a rede como, laptops e PDAs. Leave Esse servio faz com que o usurio deixe a rede de forma elegante, requisitando XPeer que remova as informaes publicadas pelo usurio. Para saber o que acontece quando o usurio desconecta da rede sem utilizar esse servio veja a descrio do servio Post abaixo. Scope Especifica a rede visvel por um usurio, ou seja, define os usurios que so acessveis durante uma busca. Access Especifica o acesso que um determinado usurio tem s informaes compartilhadas por um determinado usurio, ou seja, esse servio serve para restringir o acesso s informaes compartilhadas por um usurio. Post Cada usurio pertencente rede XPeer mantm uma estrutura de dados com informaes pblicas, que servem para localizar o usurio na rede. O Post o servio que permite adicionar informaes nessa estrutura, sendo cada informao composta por uma tupla contendo o nome do campo e o valor do campo. Uma aplicao de Xadrez, por exemplo, poder utilizar essa estrutura para armazenar o ranking do usurio. Get Recupera informaes pblicas de um usurio cadastradas pelo servio Post. Remove Remove um campo publicado atravs do Post. List Lista todos os campos armazenados na estrutura de dados da aplicao. Search Este servio permite localizar um usurio na rede XPeer. Essa localizao pode ser feita atravs do nome do usurio ou de uma informao publicada por ele. O nome do campo, publicado atravs do Post, tambm pode ser utilizado para recuperar um usurio. 1.5.2.2 Aplicaes A infra-estrutura citada na seo anterior permite a construo de diversas aplicaes P2P. Para valid-la, o GT-P2P est propondo a construo de duas aplicaes: uma mais simples de troca de mensagens e outra mais elaborada com o objetivo de promover uma maior integrao educacional entre os usurios da RNP.

Join

Figura 14: A arquitetura da XPeer.

Post

XPeer Core Chord Storage

Get

List

Nessa sub-seo ser descrita apenas a aplicao educacional chamada de XBrain. Seu objetivo fazer com que pessoas que esto dispostas a doar um pouco do seu tempo possam ajudar pessoas que tem sede por conhecimento. Para esclarecer o funcionamento dessa aplicao imagine o seguinte cenrio: Eduardo tem 27 anos, formado em Cincias da Computao e se acha capaz de auxiliar pessoas interessadas em matemtica bsica. Assim, Eduardo entra na aplicao XBrain e se cadastra como uma pessoa capaz de ajudar algum nesse assunto. Feito isso, ele deixa a aplicao e vai navegar na Internet. Enquanto isso, um garoto chamado Marquinhos, entra na rede XBrain procura de algum capaz de lhe ajudar a resolver funes de primeiro grau. Fazendo uma busca pela palavra matemtica, ele recebe como resposta um conjunto de pessoas capazes de ajud-lo nesse assunto, entre elas, Eduardo. Marquinhos seleciona Eduardo e, a partir da, os dois passam a se comunicar trocando mensagens ponto-a-ponto (P2P). Essa aplicao pode ter um impacto importante na Internet, uma vez que ir permitir que pessoas que tenham conhecimento possam ajudar tantas outras que possuem deficincia. Alm disso, ela tem um grande apelo social, tendo em vista que o conjunto menor de pessoas que tiveram acesso a educao de boa qualidade estaro doando um pouco do seu tempo para levar o conhecimento a um conjunto maior de pessoas que no tiveram a mesma oportunidade. Isto chamado de Computao Colaborativa e Solidria. colaborativa porque os computadores interagem entre si de maneira direta (P2P), todos se comportando como clientes e servidores e compartilhando informaes. solidria porque permite que as pessoas compartilhem o seu conhecimento uns com os outros. Um outro aspecto importante a ressaltar que, da mesma forma que os computadores, os usurios tm um comportamento P2P, onde qualquer um pode ser professor em um assunto e aluno em outro. A grande idia alterar o paradigma de educao distncia, deixando a tradicional interao professor/aluno com hora marcada, para uma forma de complementao pedaggica que tem um enorme poder sinrgico. Existe uma grande oportunidade para oferecer s pessoas a possibilidade de fazerem um trabalho voluntrio sem sarem da frente dos seus computadores. O GT-P2P ir disponibilizar essa aplicao para ser executada nas mquinas dos usurios da RNP utilizando os servios da rede XPeer. A Figura 15 mostra a aplicao XBrain solicitando servios da infra-estrutura XPeer, instalada no backbone da RNP. Para utilizar os servios XPeer cada aplicao XBrain precisa se conectar a um PoP que disponibiliza os servios. Cada PoP vai manter um registro dos usurios de forma a possibilitar a autenticao dos usurios na rede, bem como fornecer subsdios que possibilitem a localizao desse usurio.

Representao de um usurio da RNP Representao backbone RNP XPeer


PoP

XPeer
PoP

XBrain

PoP

XPeer XBrain Representao de um PoP da RNP XBrain

Figura 15: Aplicao XBrain utiliza os servios da rede XPeer instalada no backbone da RNP.

As buscas tambm sero realizadas nos PoPs, uma vez que eles contm todas as informaes pblicas referentes aos usurios. Sendo assim, a busca por um usurio ou pela informao que ele disponibiliza somente precisar ser realizada na rede XPeer dentro do backbone da RNP. O papel da aplicao XPeer termina quando localiza um usurio na rede, a partir da os usurios devem se conectar diretamente, ou seja, P2P. Uma vez que utiliza os servios da XPeer para realizar as principais tarefas, a aplicao XBrain se torna muito simples. Os principais componentes (Figura 16) so: Interface grfica Esse mdulo contm as telas da aplicao e acessa a aplicao XBrain atravs de uma fachada. A fachada responsvel por disponibilizar as principais funcionalidades que podem ser exibidas e manipuladas. Estima-se que a aplicao ser composta por 5 telas principais que iro permitir: a entrada do usurio na rede Xpeer, cadastrar as habilidades e conhecimentos desejados, localizar um professor na rede, trocar conhecimentos (mensagens) e publicar questes (dvidas). Fachada Esse mdulo tem o papel de isolar a interface grfica da aplicao. Isso extremamente importante para uma aplicao P2P, porque ela poder possuir vrias interfaces diferentes. Alm disso, como um dos objetivos do GT-P2P disponibilizar essa aplicao em diferentes dispositivos como, celulares, notebooks, desktops e PDAs. Com o uso da fachada cada um desses dispositivos poder utilizar interfaces diferentes para acessar as mesmas funcionalidades da aplicao. XBrain Core Esse mdulo contm a aplicao propriamente dita. Nele sero programadas as regras de negcio da aplicao. Esse mdulo faz uso de dois componentes de comunicao para executar as principais tarefas referentes conexo P2P e tambm conexo com a rede XPeer. Mdulos para Comunicao A comunicao P2P e a utilizao dos servios XPeer so tarefas bastante especficas e devem ser isoladas em componentes. Esses componentes tero como tarefa principal fazer a conexo entre dois computadores e possibilitar a utilizao dos servios oferecidos pela rede XPeer.

Interface grfica Fachada XBrain Core

Conexo P2P

Conexo XPeer

Figura 16: Arquitetura da aplicao XBrain

1.5.3. Avaliao de Trfego Essa seo apresenta os resultados obtidos na avaliao da utilizao dos recursos da rede RNP (os recursos computacionais e os enlaces de comunicao) pelos sistemas P2P existentes na Internet, principalmente para transferncia de arquivos (ex: KaZaA). O objetivo avaliar o impacto gerado pelo uso destas aplicaes no backbone da RNP, com base em dados coletados sobre fluxos durante uma semana. Os resultados da anlise mostram indcios de um grande impacto do trfego das aplicaes P2P no trfego global da rede [42]. 1.5.3.1. Metodologia Os dados analisados foram obtidos atravs de arquivos coletados pelo grupo de trabalho GTQoS (http://www.nuperc.unifacs.br/gtqos/), responsvel pelo projeto-piloto de medio do trfego no backbone da RNP. O trfego analisado compreende a um conjunto de arquivos no formato binrio gerado pelo NetFlow [9] que foram coletados no perodo de 02 a 08 de novembro de 2003. As mtricas adotadas para este estudo visam descrever o comportamento bsico do trfego em volume, vazo e durao dos fluxos. Entre as ferramentas utilizadas para a obteno de resultados, destacam-se: Flow-Tools, AWK e c-shell script. Para otimizar o uso das ferramentas acima descritas, foram definidas tcnicas para manipulao e exibio dos resultados dos relatrios. Os principais critrios de filtragem foram em relao s portas P2P, interfaces do POP-SP com os demais POPs da RNP, aplicaes mais utilizadas a serem comparadas s aplicaes P2P, tempo mnimo do fluxo e unidades de tempo dos relatrios finais. 1.5.3.2. Resultados A Figura 17 mostra o perfil de trfego relacionado ao volume de dados passante no POP-SP durante o perodo de medio. Para apresentao, cada amostra no grfico corresponde ao volume de trfego num intervalo de 5 minutos. A primeira impresso que se tem deste resultado que o perfil de trfego no aparenta substanciais alteraes em relao ao perfil conhecido do trfego Internet [7]. Ou seja, tem-se a percepo de que a contribuio de trfego P2P no relevante, visto que seu volume gerado substancialmente menor do que o trfego gerado por aplicaes Web.

4000

Total Web P2P 3000 0 0 1000 2000

Volume de Trfego - MBytes

200

400

600

800

1000

1200

1400

Amostras - 5 min

Figura 17: Perfil de Trfego em Volume Transferido (Mbytes) no POP-SP, 02 a 08/Nov, Mdia de 5 minutos

Uma outra avaliao que pode ser feita atravs da observao da funo de distribuio acumulada emprica ECDF (Empirical Cumulated Distribution Function) da vazo medida por tipo de trfego no intervalo considerado. Na Figura 18 pode ser visto que a distribuio da vazo de trfego difere entre eles de forma clara. Observa-se que 50% do trfego Web contribui com at 20Mbps, enquanto que 50% do trfego P2P contribui com at 6Mbps.
CDF Volume Web - 5 dias
1.0
1.0

CDF Volume P2P - 5 dias

0.8

0.6

0.4

Fn(x)

Fn(x)

0.0

0.0 e+00

5.0 e+08 x

1.0 e+09

1.5 e+09

0.0

0.2

0.2

0.4

0.6

0.8

0 e+00

2 e+08 x

4 e+08

6 e+08

Figura 18: O grfico da esquerda representa um ECDF do Volume de Trfego Web, enquanto que o da direita representa um ECDF do Trfego P2P

Distribuio do Volume de Trfego Web


0- 10K 10-100K 100K-1M 1M-10M 10M-100M 100M- 1G
5 e+ 08 4 e+ 08

Distribuio do Volume de Trfego DNS


0-10K 10-100K 100K-1M 1M-10M 10M-100M 100M-1G

4 e+ 10

3 e+ 10

3 e+ 08 2 e+ 08 1 e+ 08 0 e+ 00

2 e+ 10

1 e+ 10

0 e+ 00 2/Nov 3/Nov 4/Nov 5/Nov 6/Nov 7/Nov 8/Nov

2/Nov

3/Nov

4/Nov

5/Nov

6/Nov

7/Nov

8/Nov

Figura 19: O grfico da esquerda representa a distribuio do volume de trfego na porta 80 (Web), enquanto que o da direita representa a distribuio do volume de trfego na porta 53 (DNS)

Na Figura 19 apresentada a anlise da contribuio do volume de trfego gerado por fluxos de aplicaes na porta 80 (tipicamente trfego WEB) de acordo com sua classificao nas faixas de 0 a 10KB, de 10KB a 100KB, de 100KB a 1MB, de 1MB a 10MB, de 10MB a 100MB e de 100MB a 1GB [20]. O perfil esperado do trfego nesta porta, de acordo com [8], de uma maior contribuio no volume de trfego associada s duas primeiras faixas de classificao. Porm, como est bem claro neste resultado, o maior volume de trfego gerado por dia durante toda a semana est associado s faixas de 100KB a 100MB. Na regio de ocorrncia de fluxos de tamanho entre 100KB a 10MB existe uma contribuio significativa ao volume de trfego nesta porta. Como este comportamento inesperado, isto um forte indicativo de que as aplicaes P2P estejam tambm utilizando esta porta para transferncia de dados. Alm da porta 80, esta anlise foi estendida para outras portas de servios conhecidos, a saber nas portas 53, 22 e 443. Esses resultados esto descritos em detalhes em [42]. 1.5.4. Simulao Devido a natureza descentralizada e crescimento rpido das redes P2P, realizar testes em um ambiente real que utiliza essa tecnologia torna-se uma tarefa quase impossvel. Entretanto possvel utilizar a simulao de uma rede P2P para avaliar aplicaes e protocolos, em um ambiente controlado. A simulao tambm pode ser usada para fornecer um melhor entendimento de como as redes P2P funcionaro em um ambiente real. Construir um simulador capaz de retratar fielmente o comportamento de uma rede P2P uma tarefa bastante complicada. Existe, atualmente, uma srie de simuladores para redes P2P, mas em geral cada rede possui um simulador prprio. Ainda no se chegou a um consenso sobre um sistema de simulao genrico para redes P2P, apesar de j ter sido proposto por [48].

Entretanto existe um consenso a cerca das principais caractersticas que precisam ser avaliadas ao se construir ou utilizar um simulador para redes P2P. Entre elas esto: distribuio de contedo, comportamento dos ns da rede e configurao da rede fsica. 1.5.4.1. Distribuio de contedo A distribuio de contedo define que a dinmica de uma rede P2P depende diretamente do volume e variedade dos arquivos compartilhados pelos ns. Logo, os simuladores devem utilizar esses atributos para retratar com maior fidelidade uma rede peer-to-peer real. Para uma rede que possui pequeno volume de dados, ou seja, poucos ns compartilhando arquivos, as consultas tendem ser mais demoradas uma vez que precisam ser roteadas por um maior nmero de ns. Alm disso, a carga no sistema fica desbalanceada sobrecarregando uma pequena parte da rede que dispe de contedo [45]. O outro parmetro que deve ser considerado a variedade dos dados. Em geral as redes P2P obedecem a distribuies de probabilidade conhecida como leis de potncia [30], que indicam que a maior parte dos ns est interessada em uma pequena parte do contedo disponvel na rede. Portanto, para simular essa caracterstica preciso configurar diferentes tipos de arquivos atribuindo relevncia especfica para cada um deles. 1.5.4.2. Comportamento dos ns O comportamento dos ns pode afetar a dinmica de um sistema de diversas maneiras. Por exemplo, ns que se conectam e saem rapidamente da rede podem afetar significativamente o desempenho do sistema, uma vez que necessrio uma srie de procedimentos para restaurar a rede, aps a entrada ou sada de um n [21]. Outro comportamento que pode afetar o sistema P2P o nmero de downloads efetuados na rede, quando so realizados muitos downloads o desempenho da rede tende a ser prejudicado. Sendo assim, o simulador deve permitir a configurao da probabilidade de um dado arquivo ser recuperado da rede [21]. 1.5.4.3. Configurao da rede fsica Embora muitas demonstraes tenham mostrado que o desempenho de uma rede P2P depende diretamente das caractersticas da rede fsica, muitos simuladores existentes insistem em desconsiderar detalhes de configurao da rede fsica [21]. Isso se deve, em geral, ao fato de que mais complexo avaliar um sistema P2P executando sobre uma rede que incluem detalhes de pacotes. A topologia da rede um dos parmetros que precisam ser configurados pelo simulador. Ao se conectarem a rede P2P os ns tendem a seguir um padro onde alguns ns possuem uma maior probabilidade de serem contatados por ns que acabam de entrar na rede. Alm disso, dependendo do modelo de rede a ser utilizado (seo 1.1.4.) alguns ns podem assumir papis diferentes na rede. Outro parmetro importante para as redes fsicas a largura de banda. Alguns ns possuem maior largura de banda e, devido a essa caracterstica, possuem papis e atribuies diferentes na rede. Em algumas arquiteturas de rede, ns que possuem baixa largura de banda no podem compartilhar arquivos, por exemplo.

1.5.4.4. O simulador GnutellaSim GnutellaSim [17] um simulador P2P que trabalha ao nvel de pacotes, permitindo a avaliao completa da rede Gnutella (e outras rede P2P), com um modelo de rede detalhado. O simulador baseado em um arcabouo que permite o isolamento de funes e uma estrutura centrada em protocolos. O arcabouo foi projetado para permitir a incorporao de diferentes alternativas de implementao para um determinado sistema P2P e pode ser usado em conjunto com diferentes simuladores de redes. Na verdade, GnutellaSim apenas uma instncia desse arcabouo, a primeira implementada usando as suas funcionalidades. Em sua verso atual, o simulador GnutellaSim pode ser executado em conjunto com o simulador ns-2 [34], mas est sendo portado para outros simuladores de rede. Ele implementa as verses 0.4 e 0.6 do protocolo Gnutella [26]. O que pode ser extrado dessa seo que a simulao de um sistema P2P antes dele ser avaliado na prtica fundamental para garantir o seu desempenho. Entretanto, para retratar com maior fidelidade as redes P2P, necessrio considerar todos os atributos que influenciam na configurao do sistema.

1.6. Consideraes Finais


Esta seo explica alguns pontos sobre a questo social do uso de redes peer-to-peer, detalha os prximos passos da tecnologia e tece algumas consideraes acerca da necessidade e importncia dessas redes. 1.6.1. Questes Jurdicas e Impacto Social Muito se tem falado sobre a ilegalidade de sistemas peer-to-peer, em especial os de compartilhamento de arquivos, e alguns sistemas j sofreram intervenes judiciais. Por exemplo, o Napster teve seu funcionamento interrompido e restaurado vrias vezes. Entretanto, os esforos de empresas e mesmo indstrias contra os sistemas de compartilhamento de arquivos se d devido facilidade de compartilhar arquivos ilegalmente, realizada por usurios que disponibilizam arquivos indevidamente (i.e., programas, msicas, filmes, etc., com direitos de uso, execuo ou exibio restritos), e no por ilegalidade nos sistemas de compartilhamento em si, o que no ocorre. Os sistemas peer-to-peer de compartilhamento de arquivos no tm como controlar a origem dos arquivos compartilhados e dessa forma deixam para o usurio esse controle. Assim, o uso de tais sistemas dificulta a descoberta e mesmo a coleta de provas contra usurios que disponibilizam arquivos indevidamente. Um dos debates ainda em aberto sobre o anonimato dos usurios de sistemas peerto-peer. O conhecimento da identidade do usurio traz problemas de segurana para o mesmo, sua mquina e sua rede; mas o anonimato facilita o uso dos recursos de maneira ilegal. Muitos dos sistemas implementados vem o anonimato como algo positivo para os usurios, mas no o implementam completamente, tornando possvel a hackers identificar a origem dos usurios. Apesar desses problemas, o uso de redes peer-to-peer representa um passo importante para a democratizao de conhecimento e a socializao de recursos. Qualquer

que seja o foco da rede em questo (compartilhamento de arquivos, troca de mensagens, conferncias de udio ou vdeo, computao colaborativa, compartilhamento de processador, etc), como na rede as mquinas podem ter o mesmo nvel de importncia e prioridade, qualquer usurio da rede peer-to-peer pode ter acesso aos recursos compartilhados por ela. Isso permite, por exemplo: A uma pessoa publicar um documento ou um programa que no seria possvel nos meios tradicionais sem recursos para essa publicao e sem ser passvel de censura; A uma junta mdica se reunir para conversar sobre casos difceis de pacientes sem precisar pagar o acesso caro a uma rede de videoconferncia; A grupos de interesse em escolas trocar experincias em matrias especficas; A uma instituio de pesquisa realizar simulaes de grande porte com o acesso a processadores ociosos compartilhados.

Como pas industrializado em desenvolvimento, o Brasil pode aproveitar bastante o uso de redes peer-to-peer para os casos citados e muitos outros, auxiliando sua populao a trocar idias e informaes e acessar recursos que no seriam possveis de outra maneira, em especial pessoas que no tm acesso fcil a computador (por exemplo, s na escola ou no trabalho). Muitas instituies de pesquisa com poucas verbas podem se beneficiar do poder de processamento de redes com processadores compartilhados. 1.6.2. Direes Futuras Alguns problemas em redes peer-to-peer que no foram resolvidos pela comunidade acadmica nem pela indstria esto sendo estudados no momento e so descritos aqui como assuntos relevantes de pesquisa. A grande maioria das redes P2P em utilizao no foi simulada em cenrios de grande escala (de tamanho prximo Internet) nem em condies que previam muitos defeitos (alta perda de conectividade, travamento da mquina, baixssima taxa de transmisso, etc). Isso fez com que algumas aplicaes tivessem seu desempenho prtico muito inferior ao previsto antes de sua implantao [7], gerando a necessidade de alteraes em programas e at mesmo em sua arquitetura e de publicao de vrias correes para os programas. A maioria dos sistemas P2P requer um comportamento colaborativo dos participantes, onde os benefcios gerados pelos participantes que colaboram (por exemplo, participante que compartilha o acesso a seu processador quando ocioso) so divididos entre os participantes que os requisitam (por exemplo, o participante que joga um processo na rede para execuo no nmero mximo de mquinas possvel). Assim, se a quantidade de recursos compartilhados for m uito menor que a demanda, haver muita demanda reprimida, o que acarretar em um funcionamento lento (por exemplo, para conseguir alocar um processo em um processador ocioso) da rede e, conseqentemente, na sua perda de importncia. Dessa forma, alguns trabalhos estudam formas de compensao para usurios que contribuem com recursos para a rede. Essa compensao pode ser financeira, em tempo de acesso a recurso, em prioridade de acesso a recurso ou em quantidade de recurso acessvel simultaneamente Algumas aplicaes que implementam redes P2P (como eDonkey2000, seo 1.4.3) usam

esquemas prprios de pontuao para os usurios que mais compartilham recursos, dando a estes uma maior prioridade no acesso a outros recursos compartilhados. Alguns problemas de segurana no uso de redes P2P ainda no esto resolvidos, embora haja vrias propostas para resolv-los. O anonimato, quando devidamente implementado, traz o problema de confiana no recurso compartilhado. Esse problema pode ser parcialmente resolvido com qualificao (reputao) de uns usurios pelos outros. Entretanto, como usurios novos no tm qualificao, um usurio malicioso pode simplesmente entrar na rede sempre como um novo usurio (o que possvel pelo anonimato). Assim, a deteco de usurios maliciosos torna-se difcil e muito dependente do tipo de recurso compartilhado. No caso de troca de mensagens ou de computao colaborativa, o anonimato perde o sentido, pois impossibilita a no-repudiao, por exemplo, no h como provar que as mensagens enviadas por um usurio foram realmente enviadas por ele, exceto se houver um esquema de autenticao. Tambm muito difcil detectar identidades mltiplas (por exemplo, a mesma pessoa acessando a rede fazendo-se passar por diferentes usurios) sem relacionar a identidade virtual a uma identificao real do usurio, atravs de um documento fsico ou biometria. A maior parte das redes pblicas P2P so baseadas em arquiteturas descentralizadas, onde a publicao e busca de contedo no feita em todos os ns, porque no h uma organizao estruturada entre eles. Entre essas redes se destacam Gnutella, KaZaA e eDonkey2000. As redes estruturadas so representadas por modelos baseados em DHT, onde a busca e insero sempre levam em considerao todos os ns da rede. Modelos DHT apresentam muitas vantagens tericas (por isso so mais apreciados pela comunidade acadmica), mas tambm tm desvantagens. Entre elas, a principal a falta de localidade no armazenamento das informaes. Uma tabela hash pode escolher qualquer n da rede para armazenar a informao, independente de sua localizao geogrfica. Essa caracterstica leva fatalmente a problemas de desempenho, pois as transferncias de documentos e informaes percorrem um maior nmero de roteadores, potencialmente gerando maiores congestionamentos, assim como sendo influenciadas negativamente por eles. Algumas redes pblicas, no entanto, j esto optando por solues estruturadas, baseadas em DHT. Este o caso da rede Overnet (seo 1.4.3) que est substituindo aos poucos a rede eDonkey. No exato momento em que este documento est sendo escrito, o Overnet est com aproximadamente 1,6 milhes de usurios conectados, enquanto que o KaZaA conta com mais de 4 milhes. Uma avaliao simples (no cientfica) mostra que o resultado das buscas mais rpido no Overnet, mas a transferncia de arquivos mais lenta. Alm disso, o KaZaA retorna um maior nmero de respostas, embora o mecanismo de busca no pesquise em todos os ns conectados. 1.6.3. Concluses As redes P2P no so novidade para os usurios mais antigos da Internet. A principal diferena das atuais redes P2P e do modelo original da Internet (seo 1.1.1) a possibilidade de qualquer computador, inclusive (e principalmente) aqueles instalados nas residncias dos usurios, participarem ativamente da rede. Por isso, esperado que com o amadurecimento da tecnologia, muitos tipos novos de redes P2P devam surgir. Resta

descobrir a resposta para a seguinte pergunta: as atuais redes pblicas P2P so um sucesso devido tecnologia ou ao contedo grtis (freqentemente infringindo os direitos autorais)? A grande vantagem das redes P2P est na inerente escalabilidade e disponibilidade de informaes, servidas por uma grande quantidade de peers em vez de alguns servidores especficos. No entanto, no se pode dizer que o modelo P2P vai suplantar o modelo tradicional cliente/servidor. Aplicaes crticas ainda no podem ser implementadas com o modelo P2P, uma vez que ele apresenta problemas de confiabilidade, devido conectividade varivel das mquinas participantes e administrao descentralizada. O modelo cliente/servidor permite que servidores de alta disponibilidade e segurana forneam informaes confiveis, caracterstica indispensvel para o mundo corporativo. Para o usurio domstico, ao contrrio, freqentemente uma grande quantidade de informaes (documentos, software, msicas, filmes, etc.) mais importante do que uma informao especfica.

Referncias
[1] ANDERSEN, D., BALAKRISHNAN, H., KAASHOEK, F. & MORRIS, R., Resilient Overlay Networks, 18th ACM Symposium on Operating Systems Principles, Banff/Canada, Outubro de 2001. [2] BARAK, A. et WHEELER, R., MOSIX: An Integrated Multiprocessor UNIX, Winter USENIX Conference, Fevereiro de 1989. [3] BARKAY, D., Peer-to-Peer Computing: Technologies for Sharing and Collaborating on the Net. Intel Press, Agosto de 2001. [4] BECKER, D., et al., Beowulf: A ParallelWorkstation for Scientific Computation, 24o International Conference on Parallel Processing, 1995. [5] BOSSELAERS, A., et al., SHA: a design for parallel architectures?, Proceedings Eurocrypt97, 1997. [6] BROOKSHIER, D., GOVONI, D., KRISHNAN, N. JXTA: Java P2P Programming. Sams. Maro de 2002. [7] CHAWATHE, Y., RATNASAMY, S., BRESLAU, L., LANHAM, N., SHENKER, S., Making Gnutella-like P2P Systems Scalable, ACM SIGCOMM 2003, Karlsruhe, Alemanha, Agosto de 2003. [8] CHOI, Hyoung-Kee, LIMB, John O., A Behavioral Model of Web Traffic, 7th Annual IEEE International Conference on Network Protocols (ICNP), Canada, Outubro de 1999. [9] CISCO, NetFlow Services and Applications, White Paper, http://www.cisco.com/warp/public/cc/pd/iosw/ioft/neflct/tech/napps_wp.htm, acessado em Novembro 2003. [10] CLARKE, I., et al, Protecting Free Expression Online with Freenet, IEEE Internet Computing, Janeiro de 2002.

[11] CRESPO, A. et GARCIA-MOLINA, H., Routing indices for peer-to-peer systems. In Proceedings of the 22nd International Conference on Distributed Computing Systems, pages 23-30, Vienna, Austria, Julho de 2002. [12] CROWCROFT, Jon, MORETON, Tim, PRATT, Ian, TWIGG, Andrew. Peer-to-Peer Systems and the Grid, draft, University of Cambridge Computer Laboratory, 2003. [13] DABEK, F., KAASHOEK, M. F., KARGER, D., MORRIS, R. et STOICA, Widearea cooperative storage with CFS. In 18th ACM Symposium on Operating Systems Principles, Outubro de 2001. [14] FOSTER, I., Internet Computing and the emerging Grid, Nature, Junho de 2000. [15] FOX, Geoffrey. Peer-To-Peer Networks, IEEE Computing in Science & Engineering Magazine, Maio-Junho 2001. [16] GE, Z., FIGUEIREDO, D., JAISWAL, S., KUROSE, J. et Towsley, D., Modeling Peer-Peer File Sharing Systems, IEEE INFOCOM 2003, So Francisco, CA, USA, Maro de 2003. [17] GNUTELLASIM, Packet-level Peer-to-Peer Simulation Framework and GnutellaSim, http://www.cc.gatech.edu/computing/compass/gnutella/. [18] Groove Networks, Groove Platform Development Kit http://www.groove.net/devzone/default.cfm?pagename=Platform_GDK. [19] GTP2P, Grupo de Trabalho em Computao http://www.cin.ufpe.br/~gprt/gtp2p. Fevereiro de 2004. Colaborativa da (GDK), RNP.

[20] GUMMADI, K., DUNN, R., SAROIU, S., GRIBBLE, S., LEVY, H., ZAHORJAN, J., Measurement, Modeling, and Analysis of a Peer-to-Peer File-Sharing Workload, 19th ACM Symposium on Operating Systems Principles (SOSP-19), Bolton Landing, NY, USA, Outubro de 2003. [21] HE, Qi, AMMAR, Mostafa, RILEY, George, RAJ, Himanshu, FUJIMOTO, Richard. Mapping Peer Behavior to Packet-Level Details: A Framework for Packet-Level Simulation of Peer-to-Peer Systems. In 11th IEEE/ACM International Symposium on Modeling, Analysis and Simulation of Computer and Telecommunication Systems (MASCOTS), Outubro de 2003. [22] IRTF, Peer-to-Peer Research Group, http://www.irtf.org/charters/p2prg.html. [23] JXTA Project, http://www.jxta.org, Fevereiro de 2004. [24] JOVANOVIC, M., ANNEXSTEIN, F. et BERMAN, K., Modeling Peer-to-Peer Network Topologies through Small-World Models and Power Laws, IX Telecommunications Forum, Dezembro de 2001. [25] KALOGERAKI, V., GUNOPULOS, D. et ZEINALIPOUR-YAZTI, D., A local search mechanism for peer-to-peer networks. In Proceedings of the eleventh international conference on Information and knowledge management, pages 300--307. ACM Press, Fevereiro de 2002.

[26] KLINGBERG, T. et MANFREDI, R., Gnutella 0.6, gnutella.sourceforge.net/src/rfc-0_6-draft.html, Junho de 2002.

Draft,

http://rfc-

[27] LITZKOW, M., LIVNY, M., et MUTKA, M. Condor A Hunter of Idle Workstations, 8th International Conference on Distributed Computing Systems, Junho de 1988. [28] LUDVIGSON, T., Groove Networks: Making P2P a Reality, Case #6-0008, Tuck School of Business at Dartmouth, http://mba.tuck.dartmouth.edu/pdf/2002-6-0008.pdf, Janeiro de 2002. [29] LV, Q., et al., Search and Replication in Unstructured Peer-to-Peer Networks, 16o ACM International Conference on Supercomputing(ICS'02), Junho de 2002. [30] MEDINA, A., MATTA, I., BYERS, J. On the origin of power laws in internet topologies, technical report, Computer Science Department, Boston University, Abril de 2000. [31] Microsoft .NET Homepage. http://www.microsoft.com/net/, Outubro de 2003. [32] Microsoft, .NET P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET Framework, MSDN Magazine, http://msdn.microsoft.com/msdnmag/issues/ 01/02/netpeers/, Fevereiro de 2001. [33] MILOJICIC, Dejan S., KALOGERAKI, Vana, LUKOSE, Rajan, NAGARAJA, Kiran, PRUYNE, Jim, RICHARD, Bruno, ROLLINS, Sami, XU, Zhichen, Peer-to-Peer Computing, technical report, HP Laboratories Palo Alto, Maro de 2002. [34] Network Simulator (ns-2, verso 2.27), http://www.isi.edu/nsnam/ns/. [35] ORAM, A., Peer-to-Peer for Academia. Published on The OReilly Peer-to-Peer & Web Services Conference, Outubro de 2001. [36] ORAM, A., Peer-to-Peer: Harnessing the Power of Disruptive Technologies, OReilly, 2001. [37] P2P Architect Project, Ensuring dependability of P2P applications at architectural level, Deliverable D1, Abril de 2002, http://www.atc.gr/p2p_architect/results/ 0101F05_P2P Survey.pdf. [38] PARAMESWARAN, M., SUSARLA, A., WHINSTON, A., P2P Networking: An Information-Sharing Alternative. IEEE Computer, Julho de 2001. [39] PITZER, Bill, P2P with Groove, WebTechniques, http://www.catdancers.com/ webmags/webtech/2001/05/stratrevu, Fevereiro de 2004. [40] RATNASAMY, S., FRANCIS, P., HANDLEY, M., KARP, R., SHENKER, S., A Scalable Content-Addressable Network. ACM SIGCOMM 2001, Agosto de 2001. [41] ROWSTRON, A. et DRUSCHEL, P., "Pastry: Scalable, distributed object location and routing for large-scale peer-to-peer systems", in Proc. 18th IFIP/ACM International Conference on Distributed Systems Platforms (Middleware), Heidelberg, Germany, pages 329-350, Outubro de 2001.

[42] SADOK, Djamel, KAMIENSKI, Carlos, FERNANDES, Stnio, SILVESTRE, Guthemberg, DIAS, Kelvin, ROCHA, Joo. Anlise de Trfego P2P no Backbone da RNP, 22o Simpsio Brasileiro de Redes de Computadores (SBRC 2004) , Maio 2004. [43] SCHOLLMEIR, R., Peer-to-Peer Networking. Applications for and Impacts on Future IP-Based Networks. 3. ITG Fachtagung Netze und Anwengungen, Duisburg, Germany, Maro de 2002. [44] SCHLOSSER, Mario T., KAMVAR, Sepandar D., Modeling Interactions in a P2P Network, First Workshop on Semantics in P2P and Grid Computing, Dezembro de 2002. [45] SCHLOSSER, M. T., CONDIE, T. E., KAMVAR, S. D., Simulating a P2P FileSharing Network; First Workshop on Semantics in P2P and Grid Computing, USA, Dezembro de 2002. [46] STOICA, I., MORRIS, R., KARGER, D. R., KAASHOCK, M. Frans et BALAKRISHMAN, H., Chord: A scalable peer-to-peer lookup protocol for internet applications. In Proceedings of the ACM SIGCOMM, pages 149--160, San Diego, California, Agosto de 2001. [47] STRIBLING, J., RHEA, S., JOSEPH, A. et KUBIATOWICZ, J. Tapestry: A Resilient Global-scale Overlay for Service Deployment, IEEE Journal on Selected Areas in Communications, Janeiro 2004. [48] TING, Nyik San, DETERS, Ralph. A Generic Peer-to-Peer Network Simulator, technical report, Department of Computer Science, University of Saskatchewan, Junho de 2003. [49] TOWSLEY, D., Peer-peer Networking, Tutorial no SBRC2003, http://www.cin.ufpe.br/~gprt/gtp2p/tutoriais/p2p03-tutorial_towsley.pdf, Maio de 2003. [50] TRAN, D., HUA, Kien, DO, Tai, ZIGZAG: An Efficient Peer-to-Peer Scheme for Media Streaming, IEEE INFOCOM 2003, So Francisco, CA, USA, Maro de 2003. [51] TRIANTAFILLOU, P., XIRUHAKI, C., KOUBARAKIS, M. et NTARMOS, N. "Towards High Performance Peer-to-Peer Content and Resource Sharing Systems", Proceedings of CIDR, Janeiro de 2003. [52] WALDMAN, M., RUBIN, A. et CRANOR, L., Publius: A Robust, Tamper-Evident, Censorship-Resistant Web Publishing System, 9a USENIX Security Symposium, Agosto de 2000. [53] YANG, B. et GARCIA-MOLINA, H. Efficient Search in Peer-to-Peer Networks. I Proc. Intl. Conf. On Distributed Computing Systems (ICDCS), Vienna, Austria, Julho de 2002. [54] ZHANG H., GOEL, A. et GOVINDAN, R., Using the small-world model to improve freenet performance. In Proceedings of the IEEE INFOCOM, New York, NY, USA, 2002.

Вам также может понравиться