Sistemas Descentralizados

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
  • Fairness
          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.
  • Topologia
          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.

graphic
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.

graphic
         
          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.