Gnutella
Flavio Vinicius Diniz de Figueiredo
[email protected]
Universidade Federal de Campina Grande
Departamento de Sistemas e Computação
Sistemas Distribuı́dos, 2006.1
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
1 / 43
Roteiro
1
Introdução
2
Protocolo Base
Mensagens
Bootsrap
Busca e Download
3
A Rede Gnutella
Free-riding
Mapeando a Rede Gnutella
Problemas de escala
4
Novo Protocolo
Query Routing Protocol
Ultrapeers
Outras Melhorias
5
Conclusão
6
Referências
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
2 / 43
Roteiro
1
Introdução
2
Protocolo Base
Mensagens
Bootsrap
Busca e Download
3
A Rede Gnutella
Free-riding
Mapeando a Rede Gnutella
Problemas de escala
4
Novo Protocolo
Query Routing Protocol
Ultrapeers
Outras Melhorias
5
Conclusão
6
Referências
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
3 / 43
Introdução
Como surgiu o Gnutella
Em meados do ano 2000 Justin Frankel e Tom Pepper desenvolveram um
software P2P de compartilhamento de arquivos chamado de Gnutella. A
Nullsoft, empresa no qual o software estava sendo desenvolvido, é uma
subsidiaria da AOL, que temendo problemais legais cancelou o
desenvolvimento do software.
O programa foi divulgado pela Nullsoft um dia antes do seu cancelamento,
neste pouco milhares de copias do software foram baixadas. Pouco tempo
depois clones do cliente Gnutella foram surgindo pela internet, graças à
engenharia reversa feita no protocolo.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
4 / 43
Introdução
Um protocolo aberto que evolui de maneira distribuı́da
Com o surgimento de vários clientes Gnutella o protocolo evoluiu de uma
maneira descentralizada, alguns clientes fornecem o serviço utilizando
otimizações do protocolo mas sendo compatı́vel com a versão original.
Este modo-operando distribuı́do levou ao surgimento do Gnutella
Developers Forum CITE, onde a evolução do protocolo é discutida e
padronizada por diversos desenvolvedores.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
5 / 43
Introdução
Qual o motivo de tanto interesse no Gnutella?
Diferente de outras redes P2P de compartilhamento de arquivos, como o
Napster, o Gnutella não depende de um servidor central. Com o
fechamento do Napster e ataques sendo feitos ao o Kazaa (Rede
Fasttrack) a rede Gnutella cresceu em popularidade.
Caracterı́sticas
Usa um protocolo em sua maioria aberto.
O protocolo Gnutella forma uma rede P2P completamente
descentralizada.
Clientes precisam conhecer somente um outro cliente para fazer parte
da rede.
Isto dificulta o fechamento da rede, pois é muito difı́cil desconectar
todos clientes.
Alta tolerância a falhas de clientes pelo mesmo motivo anterior.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
6 / 43
Roteiro
1
Introdução
2
Protocolo Base
Mensagens
Bootsrap
Busca e Download
3
A Rede Gnutella
Free-riding
Mapeando a Rede Gnutella
Problemas de escala
4
Novo Protocolo
Query Routing Protocol
Ultrapeers
Outras Melhorias
5
Conclusão
6
Referências
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
7 / 43
Mensagens
Como todos os nós da rede fazem o papel de cliente e servidor o Gnutella
utiliza o termo servent (server + client para definir um software que roda
o protocolo Gnutella.
O protocolo base do Gnutella utiliza de cinco tipo de mensagens básicas.
Mensagens
Ping: Utilizado para descobrir outros servents da rede.
Pong: Resposta que um servent envia quando recebe um Ping.
Query: Utilizado para fazer pesquisa de arquivos na rede.
QueryHit: Resposta quando uma pesquisa foi feita com sucesso em
um servent.
Push: Utilizado para iniciar uma transferência de arquivo, que usa
HTTP.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
8 / 43
Mensagens
Todas mensagens contém campos de TTL que é decrementado a cada
salto, como também um campo Hops que é incrimentado a cada salto.
Onde: TTL(i) = TTL(0) + Hops(i).
Toda mensagem também contém informação suficiente para serem
identificadas (ID e Descritor).
Servents ignoram mensagens com TTL muito alto ou com identificação de
uma mensagem já recebida.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
9 / 43
Bootstrap
Servent A quer fazer parte de rede
O servent A precisa conhecer algum outro servent para fazer parte da rede.
A maneira que este conhecimento é adquirido não faz parte do protocolo,
geralmente este conhecimento é obitido usando um cache na WWW.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
10 / 43
Bootstrap
Envio de Pings
Antes de iniciar qualquer comunicação uma conexão deve ser iniciada para
criar o enlace de A para os servent B e C. Agora o servent A deve
propagar sua existência para a rede.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
11 / 43
Bootstrap
Encaminhamento de Pongs
Servents que recebem um ping do servent A devem propagar este Ping
entre os outros enlaces e responder com um Pong.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
12 / 43
Bootstrap
Recebimento de Pongs
Um servent que recebe um Ping responde o Pong somente para o servent
do qual este recebeu o Ping. Assim servents devem encaminhar Pings
devolta para o servent que originou o Ping, neste caso o servent A.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
13 / 43
Busca e Download
Supondo agora que o servent A quer fazer uma busca na rede. Neste caso
vamos supor que A ja é parte da rede mas conhece somente os servents B
e C.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
14 / 43
Busca e Download
Envio de Query
A inicialmente manda uma mensagem do tipo Query para os servents
conhecidos, B e C neste caso. O query contém informações para busca de
arquivos.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
15 / 43
Busca e Download
QueryHits
Os servents que recebem um Query propagam este pelos outros enlaces,
como foi feito com a mensagem de Ping. Caso a busca tenha sucesso um
QueryHit é enviado devolta para quem originou a Query.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
16 / 43
Busca e Download
QueryHits
Como no caso do Pong, QueryHits devem ser retornadas pelo mesmo
caminho que elas foram propagadas.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
17 / 43
Busca e Download
Obtendo o arquivo
Caso o servent A decida inicia uma transferência ao receber QueryHits,
este vai propagar uma mensagem de Push pelo mesmo caminho qu
recebeu o QueryHit. Quando o servent dono do arquivo (neste caso o F)
receber o Push este envia o arquivo fora da rede Gnutella.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
18 / 43
Roteiro
1
Introdução
2
Protocolo Base
Mensagens
Bootsrap
Busca e Download
3
A Rede Gnutella
Free-riding
Mapeando a Rede Gnutella
Problemas de escala
4
Novo Protocolo
Query Routing Protocol
Ultrapeers
Outras Melhorias
5
Conclusão
6
Referências
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
19 / 43
A Rede Gnutella
Por causa de sua natureza descentralizada e popularidade a rede Gnutella
acabou se tornando uma boa fonte de estudos na área de P2P. Vários
estudos foram feitos na rede no tempo de 2000-2002, estes mostram
problemas que existente na rede como assim seu comportamento de dos
usuários desta.
Alguns destes trabalhos explicitam o problema de escala que existe no
Gnutella CITE, outros mostram que a rede também tem pouca tolerãncia
a free-riders CITE.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
20 / 43
Free-riding
Um dos principais estudo de free-riding na rede Gnutella foi feito em 2000
CITE. Este mostra resultados em que a maioria da rede são free-rider. Os
free-rider são dı́vididos em dois tipos:
Tipos de Free-riders
Não compartilham arquivos
Compartilham arquivos que não são desejados.
Principais resultados
70% dos nós rede Gnutella não compartilham arquivos.
Dos que compartilham arquivos, 1% responde a 50% das buscas.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
21 / 43
Mapeando a Rede Gnutella
Um estudo interessante foi feito pelo Ripenau CITE onde ele monitorou a
rede Gnutella por alguns meses (entre 2000-2001), durante este tempo foi
análisado do trafego da rede como sua topologia. Este estudo mostra que
o Gnutella tem comportamento parecido com a distribuição power-law e
que a rede Gnutella não utiliza bem a estrutura da internet.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
22 / 43
Mapeando a Rede Gnutella
Comportamento da rede
O estudo mostra resultados de como os nós da rede se comportaram
durante o perı́odo analisado. Também indica o crescimento da rede.
Crescimento da rede
Durante o estudo o nó mais conectado cresceu (em número de conexões)
em 25%. Mostrando o crescimento da rede neste perı́odo.
Tempo de vida nós
40% dos nós ficam ativos por menos de 4 horas.
Apenas 25% dos nós ficam ativos por mais de 24 horas.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
23 / 43
Mapeando a Rede Gnutella
Distribuição power-law e o Gnutella
Várias redes locais como moléculas em uma célula, pessoas em um grupo
social, aeroportos, a Internet, etc. Seguem uma distribuição power-law.
Caracterı́sticas da power-law
Alguns poucos nós são altamente conectados.
A maioria dos nós são fracamente conectados.
Estes tipos de redes são altamente tolerântes a falhas (nós com poucas
conexões podem falhar sem afetar a rede), mas são fracas em relação a
ataques (caso os nós altamente conectado sejam identificados e atacados).
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
24 / 43
Mapeando a Rede Gnutella
Gnutella segue esta distribuição?
No inicio do estudo a rede Gnutella aparentava seguir a distribuição
power-law. Com o passar do tempo a rede não apresentava mais
caracterı́sticas puramente power-law.
Os autores do artigo mostram isto como uma vantagem pois a distribuição
apresentada aparenta ter a vantagem da power-law e sua desvantagem
amortizada.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
25 / 43
Mapeando a Rede Gnutella
Analisando o trafego da rede
O estudo também mostra o overhead gerado pelas mensagens de controle
(Ping e Pong) da rede. Outros tipos de mensagens são as geradas pelos
usuários (Query e QueryHit) e outras (Push e mensagens não
identificadas).
Trafego da rede - Primeira Análise
55% para mensagens de controle.
36% para mensagens de usuário.
9% para outros tipos de mensagens.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
26 / 43
Mapeando a Rede Gnutella
Novamente analisando o trafego da rede
Perto do fim do estudo mostrou resultados bem diferentes dos
apresentados anteriormente. Talvez isto seja devido a evolução dos
servents e do protocolo, ou simplesmente por causa da variação da rede.
Trafego da rede - Segunda Análise
92% para mensagens de controle.
8% para mensagens de usuário.
Valor desprezı́vel para outros tipos de mensagens.
Estudo também mostra que quantidade de trafego gerado é proporcional
ao número de nós.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
27 / 43
Problemas de escala
Vários textos comentam sobre os problemas de escalabilidade no Gnutella.
Mensagens de Ping-Pong podem causar um grande overhead na rede como
mostrado anteriormente. Outro problema que afeta a escala são os nós
com pouca banda, estes obviamente não conseguem lidar com o tanto
mensagens que circulam na rede criando bottlenecks.
Alguns destes estudos mostram que o Gnutella precisa de alguns gigabytes
de bandas para fazer buscas e é ineficiente quando comparada a redes
como o antigo Napster.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
28 / 43
Roteiro
1
Introdução
2
Protocolo Base
Mensagens
Bootsrap
Busca e Download
3
A Rede Gnutella
Free-riding
Mapeando a Rede Gnutella
Problemas de escala
4
Novo Protocolo
Query Routing Protocol
Ultrapeers
Outras Melhorias
5
Conclusão
6
Referências
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
29 / 43
Novo Protocolo
Principalmente devido ao problema de escala alguns desenvolvedores de
clientes Gnutella começaram a desenvolver melhorias para o protocolo. O
Gnutella Developers Forum é um local onde desenvolvedores discutem e
padronizam estas melhorias.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
30 / 43
Query Routing Protocol
Direcionando buscas
Uma das melhorias existentes é o Query Routing Protocol (QRP). A
motivação por trás deste é minimizar a quantidade de mensages query
propagadas pela rede. O QRP faz com que servents troquem informações
sobre os arquivos que compartilham para sers vizinhos, assim um Query
pode ser direcionado.
QRP
Servents indicam para os vizinhos metadados (palavras chaves) de
árquivos compartilhados.
Nós encaminham seus metadados e metadados recebidos até a
mensagem ter TTL=0.
Cada servent mantém uma tabela com palavra chaves e distância em
hops do servent que propagou a informação.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
31 / 43
Query Routing Protocol
Troca de mensagens - 1
Supondo o caso abaixo onde os nós B, C e D contém arquivos com
palavras chaves {x, y}, {z, w} e {q, p} respectivamente.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
32 / 43
Query Routing Protocol
Troca de mensagens - 2
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
33 / 43
Query Routing Protocol
Troca de mensagens - 3
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
34 / 43
Query Routing Protocol
Troca de mensagens - 4
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
35 / 43
Ultrapeers
TODO
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
36 / 43
Ultrapeers
Estrutura de rede com Ultrapeers
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
37 / 43
Outras Melhorias
Existem outras melhorias que foram introduzidas no protocolo Gnutella.
Algumas destas visam otimizar a descoberta de nós para fazer bootstrap
(GWebCaches) ou a transferência de dados (Swarming), assim como
outras.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
38 / 43
Roteiro
1
Introdução
2
Protocolo Base
Mensagens
Bootsrap
Busca e Download
3
A Rede Gnutella
Free-riding
Mapeando a Rede Gnutella
Problemas de escala
4
Novo Protocolo
Query Routing Protocol
Ultrapeers
Outras Melhorias
5
Conclusão
6
Referências
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
39 / 43
Conclusão
Com isto damos uma introdução ao protocolo utilizado no Gnutella e na
sua rede. Não foram encontrado estudos para verificar as melhorias nas
otimização que foram feitas no protocolo, mas algumas fontem que
proponhem estas indicam melhorias.
Um outro estudo realizado sobre free-riding CITE mostra que o Gnutella
tem problemas neste aspecto.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
40 / 43
Fim
Alguma pergunta?
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
41 / 43
Roteiro
1
Introdução
2
Protocolo Base
Mensagens
Bootsrap
Busca e Download
3
A Rede Gnutella
Free-riding
Mapeando a Rede Gnutella
Problemas de escala
4
Novo Protocolo
Query Routing Protocol
Ultrapeers
Outras Melhorias
5
Conclusão
6
Referências
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
42 / 43
Referências
Brito A. and Brasileiro F.
Programando um Subsistema Sı́ncrono para Suporte a Mecanismos
Eficientes de Tolerância a Falhas
Workshop de Tolerância a Falhas / Simpósio Brasileiro de Redes de
Computadores, 2004.
Flavio V. D. de Figueiredo (DSC)
Gnutella
sisdist 2006.1
43 / 43
Download

Gnutella - Computação UFCG - Universidade Federal de Campina