Professional Documents
Culture Documents
5
Colaborao na Internet e a Tecnologia
Peer-to-Peer
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.
5.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 [39]:
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.
5.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 5.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).
5.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 http. Atualmente, alm
de 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
5.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
5.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
5.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 5.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 5.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
1 4
2 ndice
3 5
pesquisa
download
5
1
3
1
5
Id 001500 4
Id 000010
2
Id 001200
3
Id 000200
endereo IP de sucessor(inicio[i])
5.4.1.4. CAN
O CAN (Content Addressable Network) [42] 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 5.11 mostra um espao de coordenada 2d [0,1] x [0,1]
dividido entre 5 ns.
zona do n B
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
L A O
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.
A E
Arquivo original
B F
Consulta
Cpia Resposta
C D
5.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
infra-estrutura. 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.
Access
Search
Scope
Post
Join
List
Get
XPeer Core
PoP
XPeer
XBrain
Representao de
um PoP da RNP XBrain
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 5.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.
Fachada
XBrain Core
3000
Volume de Trfego - MBytes
2000
1000
0
Amostras - 5 min
1.0
0.8
0.8
0.6
0.6
Fn(x)
Fn(x)
0.4
0.4
0.2
0.2
0.0
0.0
0.0 e+00 5.0 e+08 1.0 e+09 1.5 e+09 0 e+00 2 e+08 4 e+08 6 e+08
x x
1 1
e+ e+
10 08
0
0 e+
e+ 00
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
5.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 [50].
5.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 5.1.1) a
possibilidade de qualquer computador, inclusive (e principalmente) aqueles instalados
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.