Exemplo Prático: Bittorrent


Logo Bit Torrent

Contexto

À medida em que os arquivos foram aumentando de tamanho e o números de usuários foi crescendo, o tradicional modelo Cliente-Servidor foi tornando-se ineficiente e outras alternativas precisaram ser buscadas para substituir esse modelo.

O BitTorrent surgiu exatamente nesse contexto. Criado em 2001 e, por ser um protocolo que implementa redes par-a-par para compartilhamento de arquivos, solucionou problemas como o congestionamento de servidores e tornou-se rapidamente popular, tendo alcance mundial em muito pouco tempo. Em 2004, apenas 3 anos após sua criação, o BitTorrent já ocupava 25% de todo o tráfego da Internet.

Para usar o BitTorrent, é muito simples: basta ter um programa cliente que implemente o protocolo BitTorrent.

Como funciona?

Quando um usuário deseja fazer o download de um arquivo via BitTorrent, ele precisa inicialmente de um arquivo com a extensão .torrent. Esse arquivo contém metadata sobre os arquivos a serem compartilhados e sobre um servidor conhecido como "Tracker". Esse servidor é o responsável por fazer toda a coordenação do download e mapeia todos os outros computadores ("peers"/pares) que também estão baixando e/ou compartilhando esse arquivo. A rede composta por todos os computadores envolvidos no compartilhamento de um determinado arquivo é chamada de "swarm".

O compartilhamento dos arquivos acontece pela divisão do arquivo original em segmentos e cada conexão transmite um segmento por vez.

A partir do momento que o usuário entra em um "swarm", ele pode ser classificado da seguinte forma:

  • Peer
  • Os "peers" ou simplesmente pares são clientes são programas que implementam o protocolo BitTorrent.

  • Seeder
  • Os "seeders" são os clientes que possuem o arquivo completo já baixado em suas máquinas e contribuem para a "saúde" de um determinado arquivo. Um seeder pode ser o computador que inicialmente compartilha um arquivo ou um peer que já finalizou o download do mesmo via BitTorrent.

  • Leecher
  • Os "leechers" são os clientes que se conectam à rede par-a-par somente durante a duração do download do seu arquivo. Após a conclusão, se desconectam e atrapalham o resto dos computadores que estão conectados a ele. O BitTorrent criou uma maneira eficiente de lidar com os leechers, que será abordada mais à frente.

Para contornar o problema dos leechers e a imprevisibilidade da rede par-a-par, o BitTorrent criou algumas regras que otimizaram o Download de Arquivos:

Regras

  • Imediato compartilhamento
  • A partir do momento em que um par entra na rede e baixa um segmento do arquivo, ele vira uma fonte de distribuição desse segmento. Mesmo que o cliente seja um leecher, ele estará distribuindo segmentos do arquivo durante todo período que estiver fazendo o Download do mesmo.

  • Prioridades a Seeders
  • O BitTorrent consegue identificar o comportamento dos clientes que utilizam o seu protocolo. Para incentivar o compartilhamento de arquivos, o sistema oferece as melhores conexões para os clientes "seeders" e as piores para os "leechers".

  • Prioridade à segmentos raros
  • Para cada par novo que entra na rede, o tracker procura coordenar primeiramente o envio de segmentos mais "raros" para este par. Desta forma, cada par que entra contribui de forma mais eficaz para a consistência dessa rede.

Verificação de Segmentos

Como já dito anteriormente, todo arquivo a ser compartilhado é dividido em peçados. Quando um cliente recebe o pedaço de um arquivo, ele imediatamente consulta o arquivo .torrent que contém uma função hash para cada segmento e compara com o hash do segmento recebido. Isso permite a rejeição de segmentos corrompidos e garante um download sem erros.

Política de Envio de Dados

Em um protocolo par-a-par de compartilhamento de arquivos, nem sempre a política "olho por olho" é a melhor opção. Apesar de parecer justo que um par só envie dados para pares que os enviem de volta, alguns problemas podem surgir dessa concepção.

Como exemplo, tomemos um par que acabou de se juntar ao swarm. Ele inicialmente não estabeleceu nenhuma conexão e, por conta disso, não receberia dados de volta. Seguindo a política do "olho por olho", este par nunca conseguiria realizar o download do arquivo.

Para contornar esse problema, o BitTorrent criou um mecanismo que chamou de "optimistic unchoking", que funciona da seguinte maneira: cada cliente reserva uma parte de sua banda para realizar conexões com pares aleatórios, mesmo que esses não tenham boa conexão ou não tenham segmentos faltantes. Dessa forma, invariavelmente, todos os pares possuem boas oportunidades de recebimento de todos os seguimentos. Essa característica aliada à regra de prioridade à segmentos raros concede aos pares novos boas chances de integração à rede par-a-par.

Desvantagens

O protocolo BitTorrent funciona muito bem para Download de grandes arquivos que são muito populares. À medida que eles vão se tornando impopulares, entretanto, torna-se cada vez mais improvável a presença de seeders para o compartilhamento desse arquivo. Pesquisas apontam que 38% dos novos torrents se tornam indisponíveis dentro mesmo de um mês.

Menu