Aplicações

Sistemas que utilizam a arquitetura P2P

BitTorrent

Um dos protocolos P2P mais populares para a distribuição de arquivos é o BitTorrent. Um torrent nada mais é do que um arquivo que contém metadados sobre o conteúdo a ser requisitado, que por sua vez se encontra dividido em pedaços de tamanhos idênticos (normalmente 256 KBytes) entre os pares que possuem tal conteúdo. Durante a etapa de download, um par estará, simultaneamente, baixando e fornecendo pedaços. Como veremos mais à frente, esta dualidade é importante para a saúde da rede.

Cada torrent aponta para pelo menos um nó de infraestrutura chamado de tracker. Quando um par entra em uma rede BitTorrent, este par se registra com o tracker e, através dele, obtém um subconjunto de endereços IP relevantes escolhidos aleatoriamente dentre os registrados. Assim, conexões TCP são formadas entre o novo par e os nós recém-descobertos, que logo se tornarão vizinhos.

A cada intevalo de tempo, um dado par solicitará uma lista com os pedaços do arquivo que cada um de seus vizinhos possui, permitindo-o requisitar os pedaços faltantes. Eventualmente, este par terá que decidir quais pedaços pedir aos vizinhos e para quais vizinhos dar prioridade na hora de enviar dados. A técnica utilizada para determinar esta primeira dinâmica é chamada de "rarest first", consistindo em requisitar primeiro os pedaços mais escassos dentre os vizinhos e, consequentemente, aumentar o número de cópias disponíveis deste pedaço outrora raro. Por outro lado, na hora de decidir para quais pares enviar mais dados, um par deverá dar prioridade aos vizinhos que fornecem a taxas mais altas. Esta última dinâmica se chama "tit-for-tat", traduzindo a ideia de "troca equivalente".

Com o passar do tempo, pares antigos podem sair da rede e novos nós podem tentar estabelecer uma conexão TCP com o nó inicial. Afinal, uma rede como esta possui alto nível de escalabilidade e conectividade ad-hoc, em que um enorme número de nós pode entrar ou se desconectar a qualquer momento sem desestabilizar a dinâmica.




Gnutella

Introduzido em março de 2000 por dois funcionários da divisão Nullsoft da AOL, o Gnutella é uma tecnologia de busca e compartilhamento de arquivos. Através de softwares que implementam o protocolo Gnutella, como o FrostWire ou o WireShare, é possível facilmente procurar e baixar novos arquivos de forma descentralizada.

As consultas pelos arquivos desejados são encaminhadas a cada nó conhecido que, por sua vez, enchaminha a consulta aos seus próprios conhecidos. Dessa forma, seu funcionamento se inspira em técnicas de inundação, com a peculiaridade de que existe um Time-To-Live (TTL) que define quantos saltos uma consulta pode percorrer antes de ser descartada. Quando um arquivo é finalmente encontrado, dependendo da versão do protocolo, uma conexão direta é estabelecida entre os detentores do arquivo e o requisitante, iniciando a transferência.

Notamos que, se o TTL for menor que o diâmetro da rede, não será garantido que uma consulta alcance a rede inteira. Por fim, vale ressaltar que o número de consultas e potenciais respostas cresce exponencialmente a cada salto e, por tal motivo, a escalabilidade do protocolo fica prejudicada.




Skype

O protocolo utilizado no Skype é proprietário e, por isso, é difícil determinar seu funcionamento com precisão. No entanto, sabe-se que, por padrão, os pacotes de vídeo e áudio são enviados através de UDP, enquanto o controle das chamadas é feito por TCP. O Skype é um exemplo de como técnicas P2P podem ser utilizadas em aplicações com finalidades que fogem do compartilhamento de arquivos ou da distribuição de conteúdo com as quais já estamos familiarizados.

Os dois serviços principais do Skype (telefonia pela internet e mensagens instantâneas) são intrinsecamente P2P, tendo em vista que a aplicação se resume a pares de usuários se comunicando em tempo real. Suspeita-se que uma hierarquia seja formada pelos pares participantes, separando-os em "pares ordinários", referentes aos usuários comuns do serviço, e "superpares", que mantêm mais conexões que o normal e agem de forma similar a servidores. Imagina-se que o mapeamento entre nomes de usuários do Skype e seus respectivos endereços IP atuais sejam distribuídos através dos "superpares" aos demais nós da hierarquia. A imagem abaixo tenta capturar esta ideia de forma ilustrativa, sem possuir um compromisso com o que de fato acontece.




SETI@home

Iniciado em maio de 1999, SETI (Search for Extraterrestrial Intelligence) é uma área científica cujo objetivo é detectar vida inteligente fora do planeta Terra. Uma das abordagens é utilizar raditelescópios para ouvir a banda dos sinais de rádio do espaço. Como tais sinais não ocorrem naturalmente uma detecção seria evidência de tecnologia e consequente vida extraterrestre. Sinais de radiotelescopios consistem primariamente de ruídos e sinais provenientes de tecnologia humana como satélites, radares e estações de TV.

Projetos modernos de rádio SETI analizam os dados digitalmente e, portanto, necessitam de grande poder computacional. Quanto maior o poder computacional, maior a faixa de frequências possíveis de serem cobertas com mais sensitividade. Assim, o projeto passou a distribuir um programa para que qualquer pessoa com conexão à internet pudesse baixar uma parcela dos dados e ajudar no processamento, permitindo que o SETI@home alcançasse um altíssimo nível de desempenho comparável a supercomputadores com apenas uma pequena fração de seus custos. Por exemplo, em 2002, o SETI@home era mais rápido que o maior supercomputador existente da época com um custo de apenas 1% do necessário para construi-lo.

Sendo assim, objetivo do projeto SETI@home passou a ser não apenas procurar por emissões de rádio extraterrestre, mas também demonstrar a viabilidade da participação pública na computação científica distribuída e fomentar o interesse em radio-astronomia.

O projeto é, na realidade, um sistema Par-a-Par híbrido, usando dois componentes principais: o cliente e o servidor de dados. Na arquitetura inicial, com exceção da computação, havia apenas um servidor distribuindo os dados aos clientes, o que se mostrou um gargalo da aplicação. Uma solução era aumentar o limite da banda, ideia que foi descartada por ter custos elevados. Uma forma de mitigar esse problema é ter servidores proxy para distribuir a carga.

Uma característica distinta de muitas outras aplicações P2P é que os usuários recebem crédito por aquilo que fazem (oposto do comum anonimato). Considerando que a computação é realizada de forma isolada em cada computador, os dispositivos precisam estar conectados ao servidor apenas para receber e posteriormente submeter as tarefas realizadas.





Otimização de Entrega do Windows

A otimização de entrega funciona permitindo que atualizações do Windows e aplicativos da Microsoft Store sejam distribuídos de outras fontes além da Microsoft, como de outros computadores na rede local do usuário ou até mesmo de computadores da internet que estão baixando os mesmos arquivos. A otimização de entrega também envia atualizações de aplicativos do PC do próprio usuário para outras pessoas de acordo com as configurações. O compartilhamento de dados entre usuários ajuda a reduzir a banda de internet necessária para manter mais de um dispositivo atualizado ou até mesmo aumentar as chances de um download ser bem-sucedido em caso de uma conexão com a internet limitada ou instável.

Quando o Windows baixa uma atualização ou aplicativo usando a otimização de entrega, o sistema operacional procura por outros PCs na rede local do usuário (ou internet, dependendo das configurações) que já baixaram tal atualização ou aplicativo. Vale ressaltar que o Windows não baixa o arquivo inteiro de apenas um único lugar. Ao invés disso, o arquivo é “quebrado” em partes menores de modo que o Windows possa obter algumas partes provenientes dos PCs que as possuem e, o restante, da própria Microsoft.

Por fim, a otimização de entrega não pode ser usada para baixar ou enviar conteúdo pessoal, tendo em vista que esta funcionalidade não possui permissão de acesso aos arquivos ou pastas pessoais. Para garantir que o usuário esteja recebendo atualizações autênticas, a otimização de entrega obtém informações de forma segura da Microsoft a fim de verificar a autenticidade de cada parte do arquivo que foi transferido através de outros PCs.