O modelo peer-to-peer
Alguns pontos fundamentais das redes peer-to-peer (P2P):
Dinâmica dos participantes
Providenciar um serviço poderoso baseado em participantes dinâmicos
torna-se complicado, pois os peers podem ficar offline a qualquer momento, sem
aviso prévio.
Roteamento
Uma estrutura de roteamento eficiente é necessária. Ela deve ser escalável,
tolerante a falhas, e deve explorar a proximidade das redes.
Busca
Para encontrar o conteúdo que o cliente quer, de todos os vídeos que milhões de
usuários adicionam, é necessário um mecanismo de busca eficiente em aplicações
P2P, que deve ser escalável tanto no número de vídeos quanto no número de peers.
Multicast
Para alguns casos de comunicação em rede, o uso de unicast é mais do
que suficiente. Mas para atender aos sistemas de VOD em redes P2P, é
necessária uma transmissão de dados de um para muitos ( multicast ).
Tecnologias
Para lidar com os pontos fundamentais descritos acima, várias tecnologias foram
desenvolvidas
Nos sistemas peer-to-peer, os peers são muito dinâmicos e possuem um
relacionamento fraco entre eles. Se em um sistema de compartilhamento de
arquivos peer-to-peer não existir nenhum incentivo para permitir outros fazerem
download de você (ou seja, nenhum incentivo para fazer upload), ninguém vai fazer
upload de arquivos para os outros. Afinal, por que alguém iria compartilhar
arquivos com um desconhecido, sem receber nada em troca? Isso faz com que a
qualidade do serviço caia, e é conhecido como “free riding”. Para que as pessoas
façam upload pelo menos da mesma quantidade que fazem download, um
incentivo deve ser criado (e forçado) no sistema.
Algumas soluções foram criadas para promover o altruísmo. Algumas delas são:
- Tit-For-Tat
Como um sistema com peers baseado apenas no altruísmo encorajaria o
free- riding, os sistemas peer-to-peer geralmente utilizam uma estratégia iterada
de teoria dos jogos. Esse tipo de estratégia combina altruísmo com
reciprocidade, e faz com que os peers fiquem menos vulneráveis ao free riding.
Uma dessas estratégias é o Tit-For-Tat, utilizada com algumas variações nos
sistemas peer-to-peer. Com isso, um peer ocasionalmente coopera, mesmo que
outros peers não o façam.
Essa técnica foi utilizada inicialmente no BitTorrent. Um dos problemas
desta técnica é a necessidade dos peers em possuir algo para trocar
diretamente. Isso se torna um grande problema em video-on-demand, pois nele os
dados são mandados em ordem, ou seja, os peers que chegarem “atrasados”tem
muito pouco, ou nada, pra compartilhar com os peers que já fizeram download e
assistiram uma parte do video.
- Créditos
Um sistema de crédito recria o sistema financeiro do mundo real. Fazendo
isso, as pessoas podem trocar serviços por créditos. Isso permite o
compartilhamento sem o altruísmo e o torna possível mesmo quando 2 pessoas
não tem algo para trocar diretamente. Isto cabe muito bem em um sistema de
video-on-demand peer-to-peer. Apesar das vantagens, no momento não existe um
sistema de créditos distribuído que se destaque, e um sistema de créditos
centralizado seria um gargalo em potencial e um ponto de ataque.
- Controle social
A causa do free riding é o fraco relacionamento na rede. Uma forma de lidar
com isso seria utilizar relacionamentos do mundo real, tendo como pressuposto
que você não se aproveitaria desses relacionamentos, o que os tornaria menos
poderosos e eventualmente, os quebraria. Eles podem ser considerados
transitivos ( os amigos dos meus amigos são meus amigos ). Isto diminuiria o
número de free riders, mas o conteúdo disponível seria limitado ao que sua rede
de amigos está compartilhando.
A organização do sistema peer-to-peer é muito importante. Como estes são
supostamente escaláveis para um grande número de peers e estes são muito
dinâmicos, os peers não têm como “conhecer” todos os peers. Dessa forma, eles
são conectados diretamente a apenas uma parte dos peers do sistema. Peers
que são conectados diretamente são chamados de vizinhos. A forma com que
esses vizinhos são estruturados define como a busca e transmissão de dados são
feitas. Algumas das topologias possíveis são:
Desestruturada
Os nós não são estruturados ( ou são aleatoriamente estruturados ).
Swarm
Rede desestruturada de pessoas que assistem/compartilham o mesmo
video.
Cadeia
Rede estruturada de pessoas que assistem/compartilham o mesmo video.
Implementa batching sem o tempo de espera, permitindo que o cliente anterior
sirva o conteúdo ao cliente atual.
Árvore
Árvores são a generalização de uma cadeia. Aqui, o cliente serve diversos
outros clientes. Através do envio para outros clientes, a banda de upload deste é
aumentada, mas a profundidade da árvore diminui.
Organização do sistema com 7 peers em: ( i ) Cadeia, ( ii ) Árvore, ( iii ) Swarm.
O ciclo básico que um nó em uma rede peer-to-peer executa é mostrado na
figura abaixo.
Redes desestruturadas são geralmente utilizadas quando a taxa em que
este ciclo é executado é muito alta. Neste caso o esforço extra de manter a rede
estruturada não é eficiente, pois os peers deixam a rede depois de pouco tempo.
A eficiência deve ser conseguida na chegada e partida dos nós. Se os peers
permanecerem muito tempo online, então o esforço extra em estruturação é
justificado para otimizar uma busca e transferência de dados eficiente.