Protocolo Bittorrent ● Fundamentos Básicos ● Funcionamento do Protocolo ● Principais problemas ● Impacto na Rede ● Considerações Finais [email protected] LETRA - UNIRIO 1 Protocolo Bittorrent Fundamentos Básicos ● ● ● Bittorrent é um protocolo peer-to-peer para compartilhamento de arquivos criado por Bram Cohen. BitTorrent é projetado para facilitar transferências de arquivos entre vários pares de uma rede P2P. Sítio do projeto http://www.bittorrent.org Para melhor endendimento de uma rede Bittorrent é importante conhecer seus elementos 2 Protocolo Bittorrent Fundamentos Básicos Elementos Bittorrent: ● Cliente ● ● Par (peer) ● ● Aplicativo que implementa o protocolo, é o cliente BitTorrent que está sendo executado na máquina local. Par é qualquer cliente BitTorrent participando de um download/upload. Semeador (seeder) ● Par que contém uma cópia completa do arquivo . Este apenas realiza upload. 3 Protocolo Bittorrent Fundamentos Básicos Elementos Bittorrent: ● Sangue-sugas (leecher) ● ● Enxame (swarm) ● ● Pares que estão baixando ou enviando informação para uma rede Bittorrent. Rede de pares (peers) que estão compartilhando determinada informação. Rastreador (Tracker) ● Servidor responsável por manter uma lista atualizadas de todos os pares que participam de enxames. Também guarda estatísticas sobre a rede. 4 Protocolo Bittorrent Fundamentos Básicos Elementos Bittorrent: ● Arquivo de metadados (metafile) ● ● Pedaço ● ● Arquivo de extensão '.torrent' que contém informações sobre o arquivo ou arquivos que serão baixados. Cada arquivo presente em um '.torrent' é dividido em pedaços com objetivo de otimizar a troca dos mesmos. Bloco ● Cada pedaço é subdividido em blocos, que são a unidade mínima de envio. 5 Protocolo Bittorrent Funcionamento do Protocolo Ínicio : ● ● ● ● Em sítios especializados, baixar arquivo de metadado com extenção '.torrent'; Chamar o arquivo '.torrent' através do cliente Bittorrent; Neste arquivo irá conter o(s) arquivo(s) a serem baixado(s) e qual(is) ratreador(es) deverão ser contactado(s); Ao entrar em contato com o Rastreador (Tracker) , este envia uma lista de todos os pares no enxame (swarm) no momento. Este processo é conhecido como anúncio; 6 Protocolo Bittorrent Funcionamento do Protocolo Ínicio : ● ● ● ● Cliente conecta com pares do enxame para descobrir quem tem pedaços a oferecer; O Cliente começa receber pedaços de outros pares. Agora também já está apto a enviar pedaços a pares que o solicitarem; A escolha, em ambos os casos, de quais pedaços ou blocos e com quais pares trocá-los é feita seguindo alguns algoritmos; Para cada pedaço completamente recebido, o cliente calcula o hash SHA1 do pedaço, e confere se este está de acordo com o valor presente no arquivo de metadados. 7 Protocolo Bittorrent Funcionamento do Protocolo Ínicio : ● Quando o cliente conclui o recebimento de todos os pedaços do arquivo, ele deixa de realizar download e torna-se um semeador. 8 Protocolo Bittorrent Funcionamento do Protocolo Arquivo de metadados( .torrent) : ● O arquivo '.torrent' está codificado no formato bencoding, que suporta quatro tipos de dados: strings (cadeias de caracteres), números inteiros, listas e dicionários . As listas e dicionário podem conter qualquer um dos quatro tipos. ● Strings: [número de caracteres em base dez]:[texto] ● ● Inteiros: i[número em base dez]e ● ● Ex.: 10:bittorrent → “bittorrent” Ex.: i6e → 6 Listas: l[valor em bencoding][valor em bencoding][...]e ● Ex: l3:bit7:torrenti2008ee → <“bit”, “torrent”, 2008> 9 Protocolo Bittorrent Funcionamento do Protocolo Arquivo de metadados( .torrent) : ● Dicionários: d[chave em bencoding][valor em bencoding][chave][valor][...]e ● ● Ex.: d1:a6:inicio1:bi5e1:c3:fime → <(“a”, “inicio”), (“b”, 5), (“c”, “fim”)> O conteúdo de um arquivo metadado (o arquivo com a terminação ". Torrent") é uma “bencoded” dicionário, que contém as chaves listadas abaixo. ● ● Info: um dicionário que descreve o arquivo (s) do torrent. Announce: Anunciar URL do tracker(string) . 10 Protocolo Bittorrent Funcionamento do Protocolo Arquivo de metadados( .torrent) : ● O conteúdo de um arquivo metadado (o arquivo com a terminação ". Torrent") é uma “bencoded” dicionário, que contém as chaves listadas abaixo. ● ● ● ● Announce-list: (opcional) esta é uma extensão para a especificação oficial. Esta chave é utilizada para implementar listas de backup trackers. creation date: (opcional) hora da criação do torrent, no formato hora UNIX . (Inteiro - Segundos desde 1-1-1970) comment: (opcional) comentários do autor (string) create by: (opcional) nome e versão do programa utilizado para criar o .Torrent (string) 11 Protocolo Bittorrent Funcionamento do Protocolo Arquivo de metadados( .torrent) : 12 Protocolo Bittorrent Funcionamento do Protocolo Algoritmos: ● Algoritmos de seleçao de pares ● ● ● Após a descoberta dos semeadores(seeders) e dos sanguesugas(leechers) , faz-se necessário escolher de quais usuários baixar e para quais enviar. O Bittorrent prevê um algoritmo que favorece a troca recíproca de informações, o 'tit-for-tat“. Como o BitTorrent não possui uma central de alocação de recursos, cada peer é responsável por maximizar sua taxa de download. Alcançam este objetivo fazendo download do maior número de peers quem eles podem e decidindo para qual peer fazer upload. 13 Protocolo Bittorrent Funcionamento do Protocolo Algoritmos: ● Algoritmos de seleçao de pares ● ● Para cooperar, peers fazem upload, para não cooperar, sufocam (choke) peers, Resumindo o 'tit-fot-tat' se apresenta da seguinte forma: ● CHOKE -> Cliente para de enviar para este PAR; ● UNCHOKE -> Cliente envia dados para este PAR; ● OPTIMISTIC UNCHOCKING -> Cliente escolhe aleatoriamente algum PAR para UNCHOKE; 14 Protocolo Bittorrent Funcionamento do Protocolo Algoritmos: ● ● ● Algoritmos de seleção de pedaços Cada arquivo sendo baixado é dividido em pedaços, que podem ser obtidos simultaneamente de vários peers. O Bittorrent se utiliza de alguns algoritimos principais para selecionar pedaços: ● Prioridade Estrita ● Mais raro primeiro ● Primeiro pedaços Aleatório ● Modo End Game 15 Protocolo Bittorrent Funcionamento do Protocolo Principais problemas: ● Problema do Leech; ● Falta de Anonimato; ● Os FreeRiders ● Estes, usuários que se beneficiam de redes Bittorrent sem muito ou nada contribuirem; 16 Protocolo Bittorrent Funcionamento do Protocolo Impacto na Rede: ● As transferências usando o protocolo BitTorrent são responsáveis por grande parte do tráfego da Internet. 17 Protocolo Bittorrent Funcionamento do Protocolo Impacto na Rede: Sudoeste Europeu Oriente Médio Sul da Europa Alemanha Norte da África Protocolo Ares BitTorrent DirectConnect eDonkey Gnutella Imesh Thunder Outros Europa Ocidental Local América do Sul As transferências usando o protocolo BitTorrent são responsáveis por grande parte do tráfego da Internet. Sul da África ● 0.29% 42.63% 0.00% 2.24% 0.84% 0.16% 0.11% 1.80% 48.34% 30.02% 80.83% 74.51% 40.77% 48.94% 78.85% 58.20% 0.01% 0.00% 17.87% 0.08% 0.85% 0.00% 0.12% 0.30% 2.48% 25.99% 1.16% 7.70% 24.22% 47.17% 15.37% 35.99% 18.60% 0.36% 0.14% 14.21% 1.75% 1.66% 5.00% 2.75% 13.60% 0.02% 0.00% 0.47% 0.00% 0.03% 0.00% 0.14% 14.04% 0.80% 0.00% 0.69% 0.77% 1.64% 0.52% 0.62% 2.64% 0.19% 0.00% 0.10% 0.68% 0.41% 0.03% 0.21% 18 Protocolo Bittorrent Funcionamento do Protocolo Conclusão: ● BitTorrent é um protocolo extremamente útil, que tem como principais fraquezas a dependência de servidores e o tempo de vida dos arquivos fortemente dependente do interesse dos usuários. Apesar destes desafios, ele se mostra um concorrente respeitável para a troca de arquivos, já sendo usada, de fato, em projetos de grande porte, como algumas distribuições do sistema operacional Linux. Suas vantagens técnicas são essenciais para o envio de arquivos grandes (tendência nos aplicativos e documentos de mídia) de forma barata. 19