UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
ADICIONANDO COMPORTAMENTO BASEADO EM BITTORRENT À
REDE LOP2P
Área de Sistemas Distribuídos
por
Jorge Fuck Junior
Rafael de Santiago, M.Sc.
Orientador
Itajaí (SC), junho de 2011
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
ADICIONANDO COMPORTAMENTO BASEADO EM BITTORRENT À
REDE LOP2P
Área de Sistemas Distribuídos
por
Jorge Fuck Junior
Relatório apresentado à Banca Examinadora do
Trabalho de Conclusão do Curso de Ciência da
Computação para análise e aprovação.
Orientador: Rafael de Santiago, M. Sc.
Itajaí (SC), junho de 2011
i
AGRADECIMENTOS
A meus pais Jorge Fuck e Denise Porciuncula Fuck e minha irmã Marina Porciuncula Fuck
devo minha vida, seja por, dentre inúmeras razões, a alegria, perseverança, confiança e honestidade
que me passam diariamente. Sem a educação e compreensão que tive de meus pais, que sempre me
ajudaram em momentos de dificuldade e me exaltaram em momentos de felicidade, não consigo
imaginar como seria minha vida hoje.
A pessoa que mais me compreende neste mundo, sem que sequer eu diga alguma palavra.
Namorada, companheira, amiga, faltam palavras para descrever o seu papel na minha vida srta.
Camila Beaumord. Agradeço as suas correções de português, dicas de texto e sua paciência
também, tive meus momentos de mal humor e voce estava lá para me ajudar. Thanks dear!
Ao meu orientador e, acima de tudo amigo (de longa data), Professor e Mestre Rafael de
Santiago, expresso minha gratidão pela confiança e sabedoria passadas, sempre me auxiliando com
minhas dúvidas, perguntas e mais perguntas sobre tudo. Obrigado Rafa!
Tive grandes colegas durante todo o curso, gostaria de agradecer em especial os amigos
Ronie Pastorino de Oliveira e Rafael Piemontez, que estiveram comigo no início, embora tenhamos
perdido contato durante alguns momentos no decorrer do curso, a amizade que fizemos no primeiro
semestre de aulas ficou.
Agradeço a Prefeitura de Itajaí e a equipe do CTIMA, que quando enfrentei dificuldades no
desenvolvimento deste, foram compreensivos e me cederam tempo valioso para que pudesse me
concentrar.
Gostaria de extender meus agradecimentos também a algumas pessoas que, durante este
capítulo da minha vida, tive o prazer de conhecer dentre os ambientes profissionais em que estive.
Os amigos Ivan, Maicon, Paulo, José, muito aprendi com vocês, espero que tenhamos a chance de
trabalhar juntos novamente no futuro.
ii
SUMÁRIO
LISTA DE ABREVIATURAS................................................................... v
LISTA DE FIGURAS ................................................................................ vi
LISTA DE TABELAS .............................................................................. vii
RESUMO ..................................................................................................viii
ABSTRACT ................................................................................................ ix
1. INTRODUÇÃO ...................................................................................... 9
1.1. PROBLEMATIZAÇÃO ................................................................................... 12
1.1.1. Formulação do Problema ............................................................................... 12
1.1.2. Solução Proposta ............................................................................................. 12
1.2. OBJETIVOS ...................................................................................................... 13
1.2.1. Objetivo Geral ................................................................................................. 13
1.2.2. Objetivos Específicos ...................................................................................... 13
2. FUNDAMENTAÇÃO TEÓRICA ...................................................... 16
2.1. OBJETOS DE APRENDIZAGEM .................................................................. 16
2.1.1. SISTEMAS LOWARE (LEARNING OBJECTS – WARE) ...................... 18
2.1.2. Redes de repositórios ...................................................................................... 22
2.2. REDE LOP2P .................................................................................................... 26
2.2.1. Plugin loware ................................................................................................... 28
2.2.2. Camada de Mediação ..................................................................................... 28
2.3. REDES P2P ........................................................................................................ 30
2.3.1. Exemplos de Aplicações P2P .......................................................................... 31
2.3.2. Impactos Sociais das Tecnologias P2P .......................................................... 37
2.4. FRAMEWORK JXTA ...................................................................................... 38
2.4.1. JxtaCast............................................................................................................ 42
3. Desenvolvimento ................................................................................... 45
3.1. COMPORTAMENTO BITTORRENT .......................................................... 45
3.1.1. Divisão por blocos dos arquivos de OAs ....................................................... 45
3.1.2. Tipos de mensagens......................................................................................... 47
3.1.3. Comunicação entre peers ................................................................................ 51
3.1.4. Interação entre os peers e suas camadas ....................................................... 51
3.2. ANALISE DO CÓDIGO-FONTE LOP2P ANTERIOR ............................... 52
3.3. MUDANÇAS DO COMPORTAMENTO BITTORRENT APLICADAS AO
LOP2P 54
3.3.1. JxtaCast............................................................................................................ 54
3.3.2. Alterações no código ....................................................................................... 55
3.3.3. Segmentação e agrupamento dos OAs .......................................................... 60
3.3.4. Busca por blocos .............................................................................................. 62
iii
3.4. EXPERIMENTOS COM O COMPORTAMENTO BITTORRENT LOP2P
64
3.4.1. Resultados do ambiente controlado .............................................................. 65
3.4.2. Resultados em ambiente real ......................................................................... 71
4. CONSIDERAÇÕES FINAIS .............................................................. 75
REFERÊNCIAS BIBLIOGRÁFICAS ................................................... 77
iv
LISTA DE ABREVIATURAS
ARIADNE
CM
EA
ERP
IEEE
IP
IMS DRI
LCMS
LMS
LOP2P
LOR
LOWARE
LTSC
MD5
MOODLE
OA
OAI PMH
OER
P2P
PBP
PDP
PIP
PRP
RIVED
RVP
SBC
TCC
TCP/IP
UNIVALI
XML
Alliance of Remote Instructional Authoring and Distribution Network for
Europe
Camada de Mediação
Enterprise Architect
Endpoint Routing Protocol
Institute of Eletrical and Eletronics Engineer
Internet Protocol
Instructional Management Systems for Digital Repository Interoperability
Learning Content Management Systems
Learning Management Systems
Learning Objects Peer to Peer
Learning Object Repositories
Learning Objects - Ware
Learning Technology Standards Comitee
Message Digest Algorithm 5
Modular Object-Oriented Dynamic Learning Environment
Objeto de Aprendizagem
Open Archive Initiative Protocol for Metadata Harvesting
Open Education Resource
Peer to Peer
Pipe Binding Protocol
Peer Discovery Protocol
Peer Information Protocol
Peer Resolver Protocol
Rede Internacional Virtual de Educacíon
Rendezvous Protocol
Sociedade Brasileira de Computação
Trabalho de Conclusão de Curso
Transmission Control Protocol - Internet Protocol
Universidade do Vale do Itajaí
Extensible Markup Language
v
LISTA DE FIGURAS
Figura 1. Exemplo ilustrando o LOP2P com um comportamento BitTorrent ...................................11
Figura 2. Componentes de um LMS ..................................................................................................18
Figura 3. Componentes de um LCMS ................................................................................................ 20
Figura 4. Itens fundamentais para um repositório de OA ..................................................................21
Figura 5. Funções na camada de mediação IMS DRI ........................................................................25
Figura 6. Cenário com a rede LOP2P ................................................................................................ 27
Figura 7. Arquitetura da CM e integração com o sistema loware......................................................30
Figura 8. Exemplo de uso da Aplicação Napster ...............................................................................32
Figura 9. Exemplo de uso da aplicação Gnutella ...............................................................................33
Figura 10. Exemplo de uso da Aplicação BitTorrent .........................................................................36
Figura 11. Camadas do framework JXTA .......................................................................................... 39
Figura 12. Pipes e intermediários entre peers ....................................................................................41
Figura 13. Grupos de peers e Rendezvous nodes ...............................................................................42
Figura 14. Divisão do arquivo em blocos .......................................................................................... 46
Figura 15. Uso das mensagens entre os peers ....................................................................................50
Figura 16. Diagrama de sequência com a Interação entre os peers e suas Camadas de Mediação ...51
Figura 17. Engenharia reversa do código-fonte LOP2P, pacote Network Communication Device –
envio de mensagens. ...................................................................................................................53
Figura 18. Engenharia reversa do código-fonte LOP2P, pacote Network Communication Device recebimento de mensagens. ........................................................................................................54
Figura 19. Diagrama de classes do pacote protoSubmitDevice .........................................................57
Figura 20. Diagrama de classes do pacote protoNetCommunicationDevice .....................................59
Figura 21. Diagrama de classes do pacote protoSearchDevice .........................................................59
Figura 22. Segmentação do OA, de forma detalhada .........................................................................61
Figura 23. Agrupamento do OA, de forma detalhada ........................................................................62
Figura 24. Busca por blocos dentre os peers ......................................................................................63
Figura 25. Diagrama de redes para a infra-estrutura descrita na tabela 3 ..........................................66
Figura 26. Camada de Mediação do peer LOP2Pb2 ..........................................................................67
Figura 27. LOP2Pb2 após o agrupamento dos blocos e com o arquivo original aberto ....................68
Figura 28. LOP2Pb4 realizando o download de todos os blocos e os agrupando.............................. 69
Figura 29. Diagrama de redes para a estrutura descrita na tabela 4 ...................................................70
Figura 30. LOP2Pb1 realiza o download de todos os blocos a partir de LOP2Pb4 e LOP2Pb5 .......71
Figura 31. Diagrama de redes com a estrutura descrita na tabela 5 ...................................................72
Figura 32. LOP2Pb6 após o download dos blocos.............................................................................73
Figura 33. Diagrama de redes detalhando a estrutura descrita na tabela 6 ........................................74
vi
LISTA DE TABELAS
Tabela 1. Comparativo entre redes de repositórios ............................................................................23
Tabela 2. Comparativo entre as aplicações P2P .................................................................................37
Tabela 3. Dispositivos para o primeiro experimento em ambiente controlado ..................................65
Tabela 4. Dispositivos para o segundo experimento em ambiente controlado ..................................69
Tabela 5. Dispositivos para o primeiro experimento em ambiente real .............................................72
Tabela 6. Dispositivos para o segundo experimento em ambiente real .............................................73
vii
RESUMO
FUCK JUNIOR, Jorge. Adicionando comportamento baseado em BitTorrent à rede LOP2P.
Itajaí, 2011. 80 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação)–Centro
de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2011.
As soluções na área de sistemas distribuídos se encontram em constante evolução e adaptação
devido ao surgimento de novos conceitos, modelos, hardwares e necessidades impostas pelo
contexto ao qual estão aplicadas. Este trabalho relata uma mudança à arquitetura LOP2P, que faz
uso da tecnologia P2P para distribuir objetos de aprendizagem entre instituições de ensino por meio
da Internet. A arquitetura LOP2P realiza a conexão entre os repositórios de instituições de ensino e
foi concebida de forma que, quando um arquivo é solicitado, o mesmo deve ser enviado por
completo em uma conexão, de uma única origem, não tolerando falhas ou interrupções na mesma.
Isso se torna um problema quando se trata de arquivos de grande volume; a mudança que este
projeto propôs visa alterar a forma como estes arquivos são enviados e recebidos. Para tal, foi
adicionado um comportamento baseado em características semelhantes a do protocolo BitTorrent,
que foi passível de implementação através do uso do framework especifico para aplicações P2P, o
JXTA. Após a implementação do comportamento BitTorrent, tornou-se possível que arquivos sejam
segmentados, em partes com tamanho pré-definido, para que sejam enviados ao software solicitante
que se responsabiliza por juntar as partes recebidas, tornando assim o arquivo completo e pronto
para ser executado ou visualizado. Esta mudança tem como objetivo dar uma maior escalabilidade à
arquitetura LOP2P, deixando a ferramenta mais robusta e mais tolerante a falhas, dado ao
comportamento BitTorrent, para que a mesma possa crescer em seu uso pelas instituições de ensino
que desejam compartilhar seus objetos de aprendizagem.
Palavras-chave: Sistemas Distribuídos. LOP2P. BitTorrent.
viii
ABSTRACT
The solutions in the area of Distributed Systems are in constant evolution and adaptation due to the
emergence of new concepts, models, hardware and requirements imposed by the context to which
they are applied. This project details a change in the LOP2P architecture, which uses P2P
technology to distribute learning objects among learning institutions through the Internet. The
LO2P architecture connects learning institutions repositories and was designed so that when a file
is requested, it must be sent completely in one connection, from a single source, not tolerating
failures or interruptions. This becomes a problem when it comes to files with greater volumes; the
changes donehere seek to modify the way these files are sent and received. To do so, the project
consists in adding a behavior based on similar characteristics of the BitTorrent protocol, which
were implemented due to the use of a framework specifically designed for P2P applications, JXTA.
After the implementation of the BitTorrent behavior, it became possible for files to be segmented
into parts with predefined size, so they are sent to the requester who will be responsible for piecing
together the parts received, thus making the file complete and ready to be executed or displayed.
This change aims to give a higher scalability to the LOP2P Architecture, leaving the tool more
robust and fault tolerant due to the BitTorrent behavior, so that it can grow in its use by learning
institutions that wish to share their learning objects.
Keywords: Distributed Systems. LOP2P. BitTorrent.
ix
1. INTRODUÇÃO
Um Sistema Distribuído é definido por Jia e Zhou (2005) como um sistema constituído de
uma coleção de maquinas autônomas conectadas por uma rede de comunicação e equipadas com
um sistema de software desenhado para produzir um ambiente de computação integrado e
consistente. Levando em conta essa definição, a área de sistemas distribuídos tem sido beneficiada
por um rápido processo de avanço tecnológico, como por exemplo, os componentes citados por Jia
e Zhou (2005), o aumento de banda de Internet que tivemos nos últimos anos e a quantidade e poder
de computadores desktops, que têm aumentado com novas tecnologias de processamento multi-core
a custo mais acessivel.
Dentre as soluções criadas em sistemas distribuídos, pode-se citar o popular Napster, que
teve seu inicio em 1999 e se popularizou em 2000, criando uma rede em que cada desktop agia
como cliente e servidor, tornando-se assim uma rede de compartilhamento de músicas através da
Internet. Embora tenha tido um promissor inicio, conseguindo até oito milhões de usuários
conectados e um volume de 20 milhões de músicas sendo trocadas diariamente, grandes gravadoras
e selos musicais detentores dos direitos destas músicas não aprovaram a ideia de uma rede em que
suas músicas por direito seriam distribuídas sem nenhum lucro para as mesmas. Começaram-se
então os processos judiciais que acabaram pelo fim do Napster em março de 2001. Passado o
choque ocasionado tanto pelo inicio quanto pelo fim do Napster, uma grande ideia havia sido
popularizada e o legado havia sido deixado para aplicações similares que viriam a usar uma forma
de distribuir arquivos, o P2P.
A tecnologia P2P, conforme a definição de Shirky (2000), é uma classe de aplicações que
toma vantagem de recursos (ex. storage, cycles, conteúdo) disponíveis em computadores
conectados à Internet (chamados também de peers edge). Tendo uma definição ampla, as
tecnologias P2P tem sido extensivamente usadas para diversos tipos de aplicações, como Napster,
Gnutella, Kazaa, Limewire, BitTorrent e até Skype.
Dentre as ferramentas mais populares para distribuição de arquivos, o BitTorrent introduziu
dois importantes conceitos: (i) o fato de não usar um sistema ou um protocolo próprio para busca de
arquivos, a busca é feita através de paginas na Internet que contenham arquivos .torrent; (ii) outro
conceito é o de File Swarming, que quer dizer que, uma vez que se começa a baixar parte de um
arquivo, essa parte já se torna disponível a outros peers também interessados no mesmo arquivo,
isso tudo controlado por um software que utiliza o protocolo HTTP, chamado tracker, que pode
9
manter e controlar informações úteis como velocidade de download e upload de seus peers e saber
onde na rede está o próximo segmento do arquivo que está sendo baixado.
As aplicações com a tecnologia P2P são muitas. Este trabalho em questão aborda uma
alteração de comportamento em uma ferramenta já existente, o LOP2P, que é uma arquitetura que
possibilita o compartilhamento de Objetos de Aprendizagem, definido por Wiley (2000) como
qualquer recurso digital que pode ser reutilizado para apoiar a aprendizagem. Proposta por Santiago
(2009), a arquitetura LOP2P possibilita que instituições de ensino compartilhem seus repositórios,
buscando assim quebrar o isolamento que ocorre com os Objetos de Aprendizagem no cenário
atual, em que esse material é desenvolvido e armazenado, mas falha no seu propósito de ser
reaproveitado e reusado por outras instituições.
A arquitetura LOP2P utiliza o modelo peer-to-peer, em que instituições de ensino utilizam
um plugin LOP2P junto ao seu atual Ambiente Virtual de Aprendizagem (ou Sistema de
Distribuição de Objetos de Aprendizagem), como, por exemplo, o MOODLE, para se conectarem a
uma rede na qual ocorre a troca de mensagens (SANTIAGO, 2009).
A principio, o LOP2P distribui os objetos de uma forma em que, caso haja alguma
interrupção no serviço de Internet ou qualquer outra interrupção durante o download, o Objeto de
Aprendizagem que está sendo feito o download é perdido e o usuário terá de ser realizar o
download novamente do inicio; isso se torna um problema quando tratamos de Objetos de
Aprendizagem com grandes tamanhos e quando o peer interessado ou o peer que possui o arquivo
estão apresentando algum problema com o link de Internet. Outro problema que não é abordado
pelo LOP2P é de que a velocidade do download de Objetos de Aprendizagem é sempre nivelada
pela taxa de upload de determinado peer que possui o arquivo a ser baixado, pois o arquivo é
baixado por completo de somente um peer. O problema se dá nesse caso porque a taxa de upload é
sempre relativamente menor a taxa de download em links banda larga disponíveis no Brasil
(tecnologia ADSL).
Implementar um comportamento BitTorrent ao LOP2P significa dar mais flexibilidade no
download de Objetos de Aprendizagem, fazendo com que eles possam ser baixados em segmentos,
aproveitando melhor assim a banda de internet das instituições. Significa também adicionar um
modulo similar ao tracker HTTP do BitTorrent, para manter abrigadas informações de download e
upload de vários peers para melhorar o método de download/upload no uso da ferramenta por
outras instituições de ensino.
Uma maior disponibilidade dos Objetos de Aprendizagem pode ser alcançada com o
comportamento BitTorrent, pois, como complemento às tecnologias P2P, ela utiliza dos benefícios
10
de um cenário em que haja muitas pessoas interessadas no mesmo arquivo, já que, com um apenas
um segmento baixado já é possível contribuir através do compartilhamento deste com a rede.
Um exemplo do comportamento acima é ilustrado na Figura 1, onde a instituição de ensino
A quer fazer o download de um Objeto de Aprendizagem X. O resultado da pesquisa realizada por
A é de que as instituições B, C e D possuem esse arquivo, mas B e C possuem somente alguns
segmentos porque ainda estão realizando o download do mesmo conteúdo também, enquanto D
possui o arquivo completo; o processo de download é então iniciado para A, de forma que B e C
ainda continuam realizando o download dos segmentos aos quais já estavam fazendo normalmente.
Figura 1. Exemplo ilustrando o LOP2P com um comportamento BitTorrent
Ao realizar essa alteração de comportamento na arquitetura LOP2P, estará preparando-a para
abrigar cada vez mais instituições interessadas em compartilhar materiais de ensino, visto que, com
o comportamento BitTorrent, é possível tornar o maior interesse de peers em determinado arquivo
em disponibilidade do mesmo na rede LOP2P.
11
1.1. PROBLEMATIZAÇÃO
1.1.1. Formulação do Problema
A principal característica dos Objetos de Aprendizagem (OAs) é a sua reusabilidade. No
cenário atual, muitas instituições de ensino possuem um sistema loware (Learning Objects - Ware)
para armazenar estes objetos e distribuí-los aos seus alunos de acordo com seu curso e grade
curricular; os mesmos até gerenciam o aprendizado do aluno. Com base nesse contexto, foi criada
uma rede para fortificar a característica de reusabilidade destes OAs, fazendo com que sistemas
loware de diversas instituições de ensino pudessem ampliar os seus repositórios, compartilhando-os
entre si.
A rede LOP2P visa à maior distribuição de OAs por instituições de ensino através de seus
sistemas loware, conectando-as entre si utilizando um modelo P2P em que as instituições de ensino
realizam as buscas diretamente em outras.
Mesmo dando-se a possibilidade às instituições de ensino de compartilhar seus OAs, a rede
ainda pode aproveitar-se de outras vantagens de uma rede P2P. Visto que, com o advento da rede
LOP2P, essas instituições de ensino compartilharão cada vez mais objetos entre si, muitos OAs que
antes eram disponibilizados por somente uma delas, estarão disponíveis em um grupo de peers.
Com o numero crescente de instituições de ensino procurando por este determinado objeto, a carga
de rede pode ser muito alta e não bem aproveitada, tornando-se um gargalo, visto que há um grande
grupo de peers com o determinado objeto e que estão ociosos, enquanto o download é realizado de
somente uma instituição.
1.1.2. Solução Proposta
Este trabalho relata uma alteração à rede LOP2P, especificamente na forma como a qual
distribui os arquivos às instituições de ensino, baseando-se no protocolo BitTorrent e nos conceitos
que o mesmo introduziu às atuais soluções de distribuição de arquivos em redes P2P.
Esta solução visa adicionar a divisão por blocos destes arquivos a serem distribuídos, para
que instituições de ensino possam aproveitar ao máximo de suas conexões e façam download de
não um só peer, mas sim de vários outros pertencentes ao grupo e que possuam o arquivo
procurado, empregando assim também princípios cada vez mais avançados de sistemas distribuídos.
12
Este trabalho tem como objetivo solucionar os problemas de crescimento da rede LOP2P por
adicionar um comportamento BitTorrent a mesma, aumentando assim a escalabilidade do projeto
original. Isso possibilitará às instituições de ensino que distribuam seus OAs de maneira mais
eficaz, tirando proveito máximo de suas conexões e não sobrecarregando suas redes internas e
acessos externos.
1.2. OBJETIVOS
1.2.1. Objetivo Geral
O Objetivo Geral deste trabalho é adaptar o comportamento BitTorrent à arquitetura LOP2.
1.2.2. Objetivos Específicos
Os Objetivos Específicos a serem atingidos são:

Pesquisar sobre redes peer-to-peer e BitTorrent;

Pesquisar sobre Objetos de Aprendizagem e sistemas loware;

Pesquisar sobre o framework JXTA, procurando a melhor forma de criar o
comportamento BitTorrent;

Pesquisar se há alguma solução já desenvolvida em algum outro framework;

Analisar e compreender atual código do LOP2P;

Realizar uma modelagem a fim de redefinir um modelo da arquitetura com a nova
característica;

Implementar as mudanças propostas;

Avaliar peers na WAN;

Realizar a validação do produto final em ambiente real; e

Documentar todo o desenvolvimento e resultados.
13
1.3.
Metodologia
Para atender com as necessidades do projeto proposto, as atividades foram divididas e
realizadas da seguinte forma:

Definição do Tema: nesta etapa teve foram definidos assuntos relacionados ao tema,
como tecnologias a serem estudadas, frameworks a serem pesquisados, como o tema se
aplicaria e como poderia se forrnar um trabalho de conclusão;

Definição de Introdução, Escopo e Objetivos: após definido o tema, foi necessário
elaborar uma Introdução ao trabalho, que foi de ajuda também para melhor exemplificar
a idéia central do trabalho e definir o escopo ao qual este projeto se propõe. Pesquisas
quanto a redes P2P, LOP2P e Objetos de Aprendizagem foram realizadas a fim de
definir e chegar a um consenso do que seria o escopo do projeto;

Estudos: levantamento bibliográfico foi realizado nessa etapa com o propósito de
verificar o material necessário para a escrita da Fundamentação Teórica e de base para
construção do projeto. Foram utilizados recursos como e-books, dissertações e artigos.
Após o levantamento do material necessário, deu-se inicio ao processo de leitura do
mesmo, realizando anotações durante e escrevendo a Fundamentação Teórica em
paralelo;

Projeto: após a conclusão da Fundamentação Teórica, deu-se inicio ao capítulo referente
ao projeto a ser desenvolvido, levando em conta os objetivos definidos no inicio das
atividades e as soluções já levantadas. Durante a escrita do Projeto, ainda foram
realizadas leituras sobre o protocolo JxtaCast e o protocolo BitTorrent, assim como a
engenharia reversa do código LOP2P, a fim de definir o projeto a ser implementado;

Desenvolvimento: nesta etapa deu-se inicio o desenvolvimento do comportamento
proposto, com base no projeto especificado. Foi diagnosticado nesta etapa a deficiência
do protocolo JxtaCast, que é explicado em detalhes no capítulo Desenvolvimento e como
foi possível implementação do comportamento sem o mesmo.

Experimentos e Resultados: foram realizados experimentos com o comportamento já
aplicado a arquitetura LOP2P e documentados. Nesta etapa também foram identificadas
mínimas alterações necessárias para o melhor funcionamento do comportamento.
14
1.4.
Estrutura do trabalho
Este documento está estruturado em quatro capítulos. Em seguida, é feita uma breve
descrição sobre eles.
O Capítulo 1, Introdução, apresentou uma visão geral e histórica do peer-to-peer, Objetos de
Aprendizagem, a rede LOP2P e a motivação para a escolha do tema. Foram definidos os objetivos e
detalhado a problematização ao qual este trabalho se refere, além da metodologia aplicada ao
projeto.
No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão bibliográfica sobre temas
relevantes ao projeto proposto, como objetos de aprendizagem, rede LOP2P e framework JXTA,
assim como uma análise a respeito de redes P2P no geral.
O Capítulo 3 apresenta o Desenvolvimento detalhado do comportamento proposto,
especificando-o textualmente e por meio de diagramas de sequência e diagramas de classe. Este
capítulo também discute como foi implementado o comportamento BitTorrent e o que teve de ser
alterado na arquitetura da rede LOP2P, além de apresentar a metodologia utilizada no
desenvolvimento do projeto. Ao final deste capitulo, são apresentados o experimentos realizados
com a arquitetura já carregando o comportamento BitTorrent.
Concluindo, no Capítulo 4, apresentam-se as Considerações Finais, onde são abordados os
resultados, mudanças de algumas estratégias de desenvolvimento do projeto, alterações realizadas
ao cronograma, dentre outros.
15
2. FUNDAMENTAÇÃO TEÓRICA
Este capítulo documenta a pesquisa teórica relacionada aos temas deste TCC, explicando
conceitos e aplicações. São abordados os seguintes temas: objetos de aprendizagem, repositórios e
redes de repositórios para objetos de aprendizagem, redes P2P com foco no protocolo BitTorrent,
rede LOP2P, framework JXTA e o protocolo JxtaCast.
2.1. Objetos de Aprendizagem
Wiley (2000) define um OA como qualquer recurso digital ou não, que pode ser utilizado e
reutilizado para auxiliar o aprendizado; estes objetos possuem uma característica fortemente similar
ao conceito de Orientação a Objetos, em que os mesmos podem ser usados e reusados em contextos
diferentes de aprendizado, independentemente de que abranjam uma pequena ou grande quantidade
de assuntos. Um OA também pode ser visto como uma entidade digital que pode ser distribuída via
Internet, viabilizando assim o seu acesso simultâneo por um grande volume de pessoas; essa visão
separa o antigo e o novo conceito de OA, o qual este trabalho de baseia; exemplos de antigos OA
seriam os recursos não digitais como uma fita-cassete ou algum outro material físico, do novo,
vídeos distribuídos de forma digital, programas educacionais, textos.
O padrão atual de OA é mantido e promovido pela LTSC (Learning Technology Standards
Comitee). Formada em 1996 pela IEEE (Institute of Eletrical and Eletronics Engineer), a LTSC tem
como objetivo assegurar de que a interoperabilidade entre os OA seja mantida.
A principal característica de um OA é a sua reusabilidade. Uma vez que um OA é criado, ele
deve ser reusado ao máximo nos demais contextos ao qual for adequado. Tomando como exemplo,
para se entender o conceito de reusabilidade e abrangência de um OA, pode-se pensar no ensino de
teoria e pratica sobre um instrumento musical. Um objeto trataria do ensino de um instrumento,
como o contrabaixo, assim como outros tratariam dos demais instrumentos musicais, como violão
ou piano, ensinando técnicas e particularidades de cada instrumento. Estes objetos podendo ser
vídeos explicativos ou aulas em forma de um programa interativo. Podem existir também outros
OAs que sejam mais abrangentes, como um que ensine teoria musical, o qual pode ser parte de um
contexto de aprendizagem que envolva quaisquer outros instrumentos de cordas, de forma que a
mesma teoria musical pode ser reaproveitada e reaplicada para o ensino de diversos instrumentos de
cordas.
16
Devido à característica principal dos OAs, que é a reusabilidade, é imprescindível que eles
possam ser utilizados livremente, sendo que o uso de licenças restritivas atrapalha este reuso.
Embora as leis de propriedade intelectual no Brasil e outros países como Estados Unidos e
Inglaterra protejam o direito do autor a partir do momento que o produto, seja ele uma obra literária,
software, música, trabalho artístico é criado, lhe dando os devidos direitos legais sobre o produto de
tais criações (LOW et al., 2008; WILEY, 2000), isso cria uma barreira no reuso de OAs por
terceiros, Wilhelm e Wilde (2005) afirmam que o encargo de obter licença de copyrights para que
um OA possa ser usado no curso da produção de um contexto de aprendizado envolvendo diversos
OAs pode bloquear todo o processo de produção do contexto em si.
O processo de obtenção de copyrights para utilização de OAs com o autor ou detentor dos
direitos do mesmo envolve dois custos ao usuário que esteja querendo adaptar ou realizar quaisquer
modificações ao OA solicitado. O primeiro é o custo financeiro em troca do direito de uso e
adaptação do OA, caso o autor ou detentor dos direitos julgue necessário. O segundo é o tempo
gasto em descobrir o autor ou quem detêm os direitos do OA que está sendo utilizado, entrar em
contato com o mesmo e negociar um contrato ao qual dá os direitos necessários ao usuário que
deseja realizar as adaptações ou modificações.
Em 2002, a fundação William and Flora Hewlett apresentou o termo OER (Open
Educational Resource, ou recurso de educação aberto). A definição apresentada é de que se trata de
recursos educacionais provenientes de tecnologia, abertos para consulta, uso e adaptação por uma
comunidade de usuários para objetivos não comerciais. São tipicamente disponibilizados livremente
pela Internet. Seu principal uso é por professores e instituições de ensino, mas também podem ser
usados diretamente por estudantes. Recursos educacionais abertos incluem OAs como material de
leitura, simulações, experimentos e demonstrações, assim como syllabi, curricula e guias de
professores (UNESCO, 2002).
A idéia proposta isenta o individuo que deseja reutilizar algum OA de custos agregados ao
licenciamento tradicional, visto que os recursos de educação abertos descritos podem utilizar
licenças como a Creative Commons License e a GNU Free Document License, que permitiriam o
livre acesso.
17
2.1.1. Sistemas loware (Learning Objects – ware)
São denominados sistemas loware (SANTIAGO, 2009) softwares que possuam suporte a
OAs. Nas próximas Subseções, alguns destes sistemas citados na literatura serão classificados e
definidos.
2.1.1.1.
LMS (Learning Management Systems)
De acordo com Irlbeck e Mowat (2007), LMS são sistemas que simplificam a administração
do aprendizado, possibilitando aos estudantes planejar e monitorar a sua jornada de aprendizado,
facilitando também a interação dos estudantes entre si e com o professor, através da criação de
turmas, salas de bate-papo, fóruns.
Na Figura 2 é mostrado o relacionamento dos componentes que estão envolvidos em um
LMS, sendo o Gerenciador de Estudante responsável por acompanhar os passos do aluno, e o
Gerenciador de Aprendizagem um componente que define a configuração da jornada do
aprendizado (SANTIAGO, 2009).
Figura 2. Componentes de um LMS
Fonte: adaptado de Irlbeck e Mowat (2007)
18
Podem-se citar três exemplos de sistemas LMS utilizados hoje: o (i) MOODLE, o (ii)
Teleduc e o (iii) WebCT.
O MOODLE (Modular Object-Oriented Dynamic Learning Environment) possui código
aberto e é amplamente utilizado no Brasil devido a sua ativa comunidade de software livre, o que
permite atualizações e correções de possíveis problemas com a ferramenta. Ele é utilizado
atualmente pela UNIVALI (Universidade do Vale do Itajaí) para gerenciar o aprendizado de seus
alunos e foi o escolhido pela rede LOP2P para os primeiros testes com a ferramenta, que é discutida
na Subseção 2.2.
2.1.1.2.
LCMS (Learning Content Management Systems)
Irlbeck e Mowat (2007) afirmam que LCMS trata-se de um software voltado a autoria de
materiais de aprendizagem digitais, permitindo que o conteúdo produzido seja gravado, gerenciado
e reusado através de um sistema integrado de bases de dados gerenciáveis pelos autores.
Na Figura 3 é mostrado o relacionamento entre os componentes que formam um LCMS.
Muito há em comum com um sistema LMS, visto que um LCMS se trata basicamente de um LMS
com suporte a autoria de OAs (SANTIAGO, 2009).
19
Figura 3. Componentes de um LCMS
Fonte: adaptado de Irlbeck e Mowat (2007)
2.1.1.3. LOR (Learning Object Repositories)
Os repositórios de objeto de aprendizagem têm como principal objetivo armazenar OA
(Objeto de Aprendizagem), facilitar a localização dos mesmos por meio de buscas nestes
repositórios partindo de tópicos (como temas, autores, formato) e fazer a distribuição destes
arquivos a seus solicitantes. Estes geralmente são utilizados em conjunto com um LMS ou LCMS.
O RIVED (Rede Internacional Virtual de Educacíon) é um exemplo de um repositório de
OA aplicado a América Latina. Segundo Nascimento e Morgado (2008), a ferramenta foca o uso de
tecnologias digitais para as áreas de ciências e matemática do ensino médio. Os OAs utilizados pelo
repositório são produzidos através de uma serie de passos, que são desempenhados por uma equipe
multidisciplinar em cada pais participante (NASCIMENTO; MORGADO, 2008).
20
Segundo Santiago (2009), a arquitetura básica de um repositório contém três itens
fundamentais: (i) repositório de conteúdo, onde os OA são armazenados junto com seus metadados,
(ii) Mecanismo de Indexação e Pesquisa, que realiza a indexação com base nestes metadados e
provê um sistema de busca e (iii) Mecanismo de Interface, que fornece a funcionalidade de pesquisa
para um software ou usuário final. A Figura 4 descreve os itens citados.
Figura 4. Itens fundamentais para um repositório de OA
Fonte: adaptado de Santiago (2009)
Tendo visto a arquitetura básica de sistemas loware, devemos entender como os repositórios
destes sistemas podem ser unidos, mesmo partindo de iniciativas diferentes, para que possam
manter uma comunicação entre si e compartilhar estes OAs armazenados com seus usuários.
21
2.1.2. Redes de repositórios
De acordo com Irlbeck e Mowat (2007), a iniciativa de implantar e manter um repositório de
Objetos de Aprendizagem é comum em diversas instituições de ensino. Muitas produzem OAs para
uso próprio ou para filiados e precisam de um repositório para mantê-los organizados. Percebe-se
então que, mesmo com o fato de manter repositórios, a característica de reusabilidade que os OAs
possuem ainda não está em seu total uso, tendo que sua área de abrangência acaba-se limitando a
somente um repositório, uma instituição de ensino.
A fim de unir estes repositórios, as redes de repositórios têm como objetivo integrar
repositórios e definir padrões de interoperabilidade para os mesmos (SANTIAGO, 2009)
Exemplos de redes de repositórios podem ser visualizados na Tabela 1. Segue a descrição de
alguns deles:

ARIADNE: é citado na tabela como uma rede de repositórios que interliga outras redes
de repositórios, como o Edusource. A diferença entre os dois está em que o ARIADNE
fornece uma busca através de um endereço publicado na Web, o Edusource fornece uma
API que habilita aplicações clientes a realizarem buscas por OAs;

Lomster: conecta usuários que desejam compartilhar OAs e não repositórios como nos
exemplos vistos anteriormente. Possui uma característica que o destaca que é a
indexação dos OAs através do um padrão de metadados; e

LOP2P: é explicada em mais detalhes na Subseção 2.2.
22
Tabela 1. Comparativo entre redes de repositórios
Iniciativas
Conecta quem
Como conecta
Principalmente
OAs Livres
ARIADNE
(Edutella)
Redes de
repositórios e provê
pesquisa federada
Conecta repositórios com um
provedor peer-to-peer e provê
aplicação cliente para
pesquisa
Não
Edusource
Rede que conecta
repositórios
Uma API para criação da
conexão com a rede de
repositórios é disponibilizada
Não
Lomster
Conecta pessoas que
desejam
compartilhar OAs
Conecta os usuários através de
uma rede peer-to-peer e
publica os OAs
compartilhados
Não
LOP2P
Conecta
principalmente
instituições de
ensino para
compartilhamento de
OAs. Pode conectar
repositórios
Conecta a instituição de
ensino através dos sistemas de
gerenciamento de aprendizado
(LMS)
Sim
Fonte: Santiago (2009)
Para que uma rede de repositórios possa realizar a integração de repositórios de OA, é
necessário haver um padrão de interoperabilidade entre eles. Segundo Hatala et al. (2004), podem
ser considerados dois padrões para a integração de repositórios de OA distribuídos, o (i) OAI PMH
(Open Archive Initiative Protocol for Metadata Harvesting) e o (ii) IMS DRI (Digital Repository
Interoperability). Como a rede LOP2P, a qual esse trabalho pretende realizar uma mudança no
comportamento, utiliza-se primordialmente do IMS DRI, detalhado na subseção a seguir.
23
2.1.2.1.
IMS DRI (Digital Repository Interoperability)
A IMS é um consorcio global que, de acordo com Hatala (2004), foca-se em padrões de
aprendizagem e desenvolve especificações para o contexto de ensino, que são divididos em três
documentos: (i) modelos de informação, (ii) convenções XML e (iii) um guia de melhores praticas
de programação.
O IMS DRI (Digital Repository Interoperability) é um padrão que especifica uma
arquitetura funcional e um modelo de referencia para interoperabilidade de repositórios, sendo
necessária em casos de repositórios diferentes, provenientes de iniciativas divergentes que não se
comunicam, estabelecendo então uma camada de adequação no intuito de integrar estes repositórios
para que se pareçam com uma unidade (SANTIAGO, 2009).
As principais funções que o padrão aborda para esta camada de mediação, por parte do
utilizador de recursos ou um sistema loware são: search, submit, gather, alert, request. Quanto aos
repositórios, as funções implementadas são as de store, manage, expose e deliver. Pode-se
visualizar o modelo e suas iterações de forma mais clara na Figura 5.
24
Figura 5. Funções na camada de mediação IMS DRI
As linhas vermelhas indicam as iterações entre as funções, repositórios e utilizadores destes
recursos, funções estas que garantem que a interoperabilidade seja mantida entre eles. Tais funções
podem ser descritas como:

Search/Expose: procura o metadado de um ou mais repositórios e retorna os registros
encontrados;

Gather/Expose: recolhe registros de metadados de um ou mais repositórios para prover
um repositório de registros agregados;

Alert/Expose: dispara um alerta quando um metadado é modificado em um ou mais
repositórios. A razão de essas funções estarem ligadas por uma linha pontilhada é a de
até o momento, a função Alert se encontrar somente como sugestão de melhores práticas,
25
podendo ter como forma de distribuição o protocolo de e-mail SMTP para distribuição
de tais alertas;

Submit/Store: envia o OA e seu metadado a um repositório, onde a função Store
armazena ambos metadados e OA no repositório; e

Request/Deliver: solicita um determinado OA a um repositório, onde Deliver é a reposta
a solicitação feita, por parte do repositório selecionado.
A rede LOP2P, que será apresentada em seguida, faz uso primordial do padrão de
interoperabilidade IMS DRI descrito, utilizando-se dos conceitos propostos pelo padrão como a
camada de mediação e suas funções de repositórios interoperáveis, que também serão vistos em
seguida.
2.2. Rede LOP2P
Proposta por Rafael de Santiago (2009), a rede LOP2P fornece uma integração para sistemas
loware de instituições de ensino baseado em uma rede P2P. Segundo o autor, a característica
principal do LOP2P é viabilizar o compartilhamento de OAs entre instituições de ensino por meio
de seu sistema loware, em vez de computadores pessoais. Deste modo, cada instituição conectada é
considerada um peer.
A conexão entre os sistemas loware das instituições é feita utilizando dois componentes, (i)
uma Camada de Mediação, para se conectar a rede LOP2P e o (ii) Plugin loware (Learning Object Ware) que conecta o sistema loware da instituição à Camada de Mediação.
Pode-se visualizar na Figura 6 um ambiente com a rede LOP2P, onde peer 1 realiza uma
busca por OA (X); essa pesquisa então é disparada para os outros peers conectados a rede, peer 2
envia uma mensagem à peer 1 comunicando-o que possui o OA em questão, então o download é
iniciado a partir de peer 2:
26
Figura 6. Cenário com a rede LOP2P
A arquitetura da rede LOP2P provê os seguintes serviços, baseados no padrão IMS DRI:

Publicação de OAs: publicar o OA no repositório local e buscas realizadas em outras
instituições conseguem visualizar esse OA em seus resultados;

Busca por OA: pode ser conduzida uma busca por OA localizados em outras instituições
conectadas a rede;

Download: uma vez localizado o OA desejado, pode ser feito o download do mesmo; e

Visualização: em caso de OA que seja configurado para visualização online, ele pode ser
visualizado e utilizado online.
27
A rede LOP2P consegue facilmente abrigar novas instituições que estejam interessadas em
distribuir seus OAs para outras. É necessário somente que a instituição utilize o Plugin loware, que
é explicado em mais detalhes na subseção a seguir, em conjunto com o seu sistema loware. A partir
daí, o mesmo conseguirá se comunicar com a Camada de Mediação, detalhada na Subseção 2.2.2,
que por sua vez, fará a integração com os demais repositórios.
2.2.1. Plugin loware
Para que o sistema loware consiga se comunicar com a Camada de Mediação e possa utilizar
os serviços da rede LOP2P, é necessário que haja um software junto ao sistema loware. Este
software é chamado de Plugin, pois suas funcionalidades complementam as funções do loware. Um
Plugin deve viabilizar com a Camada de Mediação um canal de comunicação através do uso de
sockets (SANTIGO, 2009).
Pode-se visualizar o Plugin loware dentro de um peer na Figura 6.
2.2.2. Camada de Mediação
A Camada de Mediação (CM) é responsável por promover a comunicação do sistema
loware à rede LOP2P, garantindo a interoperabilidade através de funções baseadas no padrão IMS
DRI. São elas:

Mecanismo de Tradução: responsável por fazer a tradução da requisição realizada pelo
sistema loware para a Camada de Mediação, para que a mesma possa as requisições
dessa aplicação. Realiza também a tradução de mensagens originadas da Camada de
Mediação para o sistema loware;

Mecanismo de Interface para a comunicação com o sistema loware: recebe as mensagens
do sistema loware e as repassa aos mecanismos da Camada de Mediação, responsável
também por receber as mensagens da CM e entregá-las ao sistema loware;

Mecanismo de Comunicação com a rede P2P: responsável por manter a Camada de
Mediação conectada a rede P2P e por garantir que os serviços disponibilizados pelo
sistema loware sejam divulgados na rede e estejam à disposição de outros peers
interessados;
28

Submit/Store: função de mesmo nome do padrão IMS DRI, é responsável por receber a
solicitação de recuperação de OAs, solicitados pelo sistema loware, provenientes de
algum peer na rede;

Request/Deliver: função de mesmo nome do padrão IMS DRI, é responsável por
fornecer um meio para a exibição de OAs, no qual o peer realiza a solicitação a Camada
de Mediação a visualização de um objeto previamente pesquisado, então a CM solicita a
visualização ao sistema loware que o transmite para o peer solicitante;

Search/Expose: função de mesmo nome do padrão IMS DRI, é responsável pela busca e
disponibilização dos OAs a partir do sistema loware; e

Gather: função concebida a partir do padrão OAI PMH, trata especificamente de manter
repositórios intermediários, que seriam repositórios que não armazenam OAs
propriamente, mas sim metadados de OAs provenientes de outros repositórios. A rede
LOP2P trata estes Repositórios Intermediários por incorporar os mesmos a todos os
peers, mantendo sempre uma listagem atualizada de metadados de OAs de outros
sistemas loware em todos os peers.
A iteração entre os componentes descritos fica clara na Figura 7, que representa um peer na
rede LOP2P.
29
Figura 7. Arquitetura da CM e integração com o sistema loware
Fonte: Santiago (2009)
2.3. Redes P2P
De acordo com Taylor e Harrison (2009), nos seus primórdios, uma rede P2P poderia ser
descrita como uma conversa ao telefone, na qual envolve duas pessoas de igual status, ou seja, uma
rede ponto-a-ponto entre dois participantes (peers) de igual importância. Atualmente, com o
advento de computadores pessoais e dispositivos móveis conectados a Internet, a criação e o uso de
redes P2P têm sido aplicados em diversos casos e situações ou condições específicas. Não há hoje
uma definição mundialmente aceita para redes P2P; muitos sistemas atuais, mesmo não tendo uma
relação exatamente igual entre seus peers, ainda são considerados P2P. No final da década de 90,
quando houve o grande crescimento de aplicações usando um modelo similar ao P2P, uma
definição foi proposta por Shirky (2000), segundo ele, P2P pode ser definido como uma classe de
aplicações que toma vantagem de recursos como storages, cycles, conteúdo, presença humana,
disponíveis em peers edge da Internet.
Segundo Taylor e Harrison (2009), o termo True P2P descreve a arquitetura ideal em uma
rede P2P, que emprega o uso de um design puramente descentralizado, onde todos os peers
30
participam de forma igual na rede, como cliente e servidor; como pode ser constatado pela
definição, uma aplicação totalmente P2P é algo muito difícil de ser implementado e pode não
necessariamente trazer os melhores resultados.
De acordo com Androutsellis-Theotokis e Spinellis (2004), podem-se classificar as redes
P2P no grau de centralização ao qual elas possuem:

Puramente descentralizadas: uma rede na qual todos os peers executam as mesmas
funções, agindo como servidores e clientes, não havendo uma coordenação centralizada
na rede. Redes True P2P encaixam-se nessa classificação;

Parcialmente
centralizadas:
alguns
peers
possuem
maior
importância
ou
responsabilidade que outros, tornando-os assim supernodes, que podem ser responsáveis
por manter em cache informações sobre outros peers; e

Hibridas: redes onde existem estruturas centrais que facilitem a interação entre os peers.
As redes P2P também podem ser classificadas de acordo com como a busca dentro de suas
redes é realizada:

Desestruturada: para se encontrar determinado recurso na rede, deve-se propagar uma
busca a todos os peers na rede;

Estruturada: onde existe um sistema central que é capaz de endereçar os peers na rede,
os peers então submetem a pesquisa a esse sistema central para localizar o recurso
especificado; e

Parcialmente estruturada: tentando unir as vantagens das duas abordagens anteriores,
define para os arquivos uma localização e uma rota.
2.3.1. Exemplos de Aplicações P2P
Muitos são os programas que fazem uso total ou de parte do conceito de P2P, sejam
programas de file sharing, computação distribuída, bate-papo. Nos tópicos a seguir serão
endereçadas características dos mais importantes e que mais contribuíram para o crescimento e a
popularização das redes P2P.
31
2.3.1.1.
Napster
Segundo Taylor e Harrison (2009), teve seu ápice no inicio dos anos 2000, mas perdeu o seu
uso e sua popularidade muito rapidamente. Ao fim de 2001 já havia perdido muitos usuários e
recebia varias ações judiciais por violação de copyrights, o que será discutido mais adiante. O
Napster compartilhava arquivos de música utilizando uma arquitetura mista, em que a busca por
arquivos e peers é feita em servidores centralizados, mas a transferência de arquivos entre os
usuários é feita diretamente entre eles.
Na Figura 8 é mostrada a primeira conexão de um usuário ao Napster, onde ele, User B, se
registra no servidor Napster.com, o servidor adiciona as suas músicas ao seu banco de dados e
fornece essas informações à usuários que requisitarem alguma música que User B possua.
Figura 8. Exemplo de uso da Aplicação Napster
Fonte: Taylor e Harrison (2009)
A Figura 6 também mostra uma busca originada por User A, onde o servidor Napster.com
acha o arquivo solicitado no peer User C e informa o User A da localização, que conecta ao User C
e inicia o download da música.
32
2.3.1.2.
Gnutella
Segundo a Free Software Foundation (2010), trata-se de um protocolo de distribuição de
arquivos, que teve varias implementações pelos mais variados clientes, como o LimeWire, que
utilizou um protocolo baseado na rede Gnutella, e o Morpheus, quando passou a utilizar o
Gnucleus, um software de código aberto compatível com o Gnutella. De acordo com Taylor e
Harrison (2009), pode ser considerado um True P2P, possui um sistema de busca e peers totalmente
descentralizado, onde as consultas são realizadas e propagadas pelos peers até que seja encontrado
o arquivo originalmente, tornando-se um problema visto que isso leva a um grande numero de
consultas pela rede e a busca não se torna muito otimizada, já que o arquivo solicitado pode estar no
ultimo peer a receber a consulta original.
Na Figura 9, o User A deseja se conectar a rede Gnutella, é utilizado então um GnuCache,
onde ele obtém o endereço de um peer, a partir deste, ele inicia uma descoberta de outro peers por
envio de pings a esse primeiro peer que responde a ele os peers próximos a ele. User A então inicia
a sua busca por determinado arquivo disparando a sua solicitação a todos os peers encontrados por
ele, o arquivo é encontrado em D e o download é iniciado em seguida.
Figura 9. Exemplo de uso da aplicação Gnutella
Fonte: Taylor e Harrison (2009)
33
2.3.1.3.
Kazaa
Um programa para compartilhamento de arquivos que utiliza o protocolo Fast Track. Criado
em 2001 pelos mesmos desenvolvedores do Skype, o protocolo Fast Track tem uma vantagem sobre
o Gnutella, pois utiliza supernodes, que são nós que mantem cache de grupos de usuários e
diminuem assim o gargalo que seria causado por uma pesquisa no estilo do protocolo Gnutella,
aumentando também a disponibilidade de recursos no protocolo (TAYLOR e HARRISON, 2009).
2.3.1.4.
Skype
Diferente de outros sistemas VoIP (Voz sobre IP), o Skype usa um sistema P2P para sua
comunicação, através do processamento em background de seu aplicativo, enquanto outros sistemas
VoIP necessitam um servidor para tal feito (TAYLOR e HARRISON, 2009). A tecnologia por traz
do Skype é closed source, então são poucos os detalhes técnicos divulgados sobre.
2.3.1.5.
BitTorrent
Criado por Bram Cohen, teve sua primeira versão apresentada em 2002 e desde então, de
acordo com a revista Wired (2007), obteve o posto de uma das maiores ferramentas de
compartilhamento de arquivos da Internet. Com o sucesso gerado, Cohen fundou a BitTorrent Inc.
em Setembro de 2004, detentora da marca, que inclui o protocolo e a aplicação BitTorrent e
µTorrent, que utilizam o protocolo.
Protocolo utilizado para a distribuição de arquivos, segundo Taylor e Harrison (2009), os
dois principais conceitos introduzidos pelo protocolo BitTorrent são:

Integração com a Web na busca por arquivos: a busca por arquivos é realizada através de
webservers comuns que podem ser vistos como repositórios de metadados. Fica a
encargo destes organizar e prover ao usuário final a melhor forma de pesquisar por
arquivos .torrent, arquivos estes que serão descritos em seguida; e

File Swarming: conceito qual não havia nos demais protocolos criados até o momento, o
file swarming possibilita que, uma vez que o usuário começou a baixar determinado
arquivo, parte desse arquivo já se torna disponível aos demais peers interessados no
mesmo arquivo. Esse comportamento adotado pelo protocolo foi essencial para que o
mesmo tivesse a aceitação e a popularidade que possui hoje.
34
Taylor e Harrison (2009) definem também os componentes e terminologias utilizadas em
uma rede BitTorrent:

Arquivos .torrent: trata-se de um arquivo de metadados com informações sobre o
arquivo que o usuário está interessado, informações como localização do Tracker,
quantidade de pedaços que formam o arquivo inteiro, nome do arquivo. São distribuídos
e organizados em webservers, para que o usuário faça a pesquisa através do mesmo e
faça o download desse arquivo metadado. Uma vez em posse desse arquivo, ele é aberto
com o cliente BitTorrent do usuário e o mesmo carrega as informações e procura o
Tracker especificado pelo arquivo para iniciar o download;

Swarm: é o grupo de peers interessados em um determinado arquivo, especificado pelo
arquivo .torrent;

Tracker: é o servidor responsável por manter informações sobre todos os usuários que
formam um swarm de um determinado arquivo .torrent. Conforme peers entram e saem
da rede, o Tracker mantem uma lista de peers ativos e interessados no arquivo. Trackers
recebem informações de cada peer em seus swarms contendo estatísticas sobre a
quantidade de download e upload efetuada até o momento, característica essa muito
importante, pois é dessa forma que o Tracker consegue efetuar o controle tit-for-tat;

Tit-for-tat: do inglês olho-por-olho, forma qual o Tracker faz o controle de prioridades
para os seus peers, baseado em informações estatísticas que o mesmo recebe. Cada peer
possui uma proporção (ou ratio) que deve manter, definida pelo Tracker, que geralmente
é em torno de um para um. Ou seja, um peer que tenha feito um download de 5mb deve,
por sua vez, fazer o upload desse arquivo em sua totalidade, para que o Tracker possa
liberar o acesso desse peer a mais peers que ele controla, aumentando assim a
velocidade de download desse peer para solicitações futuras. Desta maneira o protocolo
BitTorrent consegue eliminar os usuários que não contribuem com o upload de
determinado arquivo, impedindo que o mesmo consiga continuar fazendo downloads
sem contribuir para o seu swarm;

Seed:é o peer que possui uma copia inteira do arquivo em que o swarm está interessado.
Tanto pode ser o peer que originou o arquivo .torrent quanto usuários que conseguem
35
terminar seus respectivos downloads, eles continuam como seeds para que outros peers
possam completar seus downloads; e

Choked: estado qual um peer não deseja fazer upload de informações no presente
momento, uma dos momentos que isto pode acontecer é quando um peer possui
conexões demais.
Na Figura 10, o seed Ian faz o upload de um arquivo .torrent a um determinado website que,
em seguida, já se torna disponível para download por outros peers. Um usuário então faz o
download do .torrent no website que Ian o armazenou e abre o mesmo com o seu Cliente
BitTorrent, que, por sua vez, contata o Tracker especificado no arquivo .torrent e recebe os
endereços de peers interessados no mesmo arquivo. Esse usuário então se conecta aos outros peers
e inicia o download de pedaços do arquivo que lhe são necessários:
Figura 10. Exemplo de uso da Aplicação BitTorrent
Fonte: Taylor e Harrison (2009)
36
O estudo do BitTorrent é de suma importância, pois a mudança qual este trabalho propõe à
rede LOP2P é fundamentada com base nos princípios detalhados nesta subseção, como os conceitos
de file swarming e segmentação de arquivos. O estudo dos mesmos possibilita um maior
entendimento sobre a motivação para a alteração no comportamento da rede LOP2P.
2.3.1.6.
Comparativo entre as aplicações P2P
Na Tabela 2, é elaborado um comparativo com as aplicações P2P que são abordadas neste
trabalho:
Tabela 2. Comparativo entre as aplicações P2P
Napster
Gnutella
Kazaa
Arquivos em
Compartilhamento Músicas
Músicas
geral
Skype
BitTorrent
Voz,
Texto, Arquivos em
Bate-papo
Geral
Parcialmente
Estruturada Desestruturada Desestruturada Estruturada
Estruturada
Puramente
Parcialmente
Puramente
Hibrida
Hibrida
Descentralizada Centralizada
Descentralizada
Não
Sim
Não
Não
Não
Busca
Centralização
True P2P
Envio
Arquivos
Blocos
pedaços)
de
por
(ou
Não
Não
Não
Não
Sim
2.3.2. Impactos Sociais das Tecnologias P2P
Os impactos sociais causados pela tecnologia P2P são muitos. Processos judiciais, ações de
grandes corporações contra usuários, enfim, o novo modo de compartilhar arquivos e outras
informações abriu portas para varias outras questões além das de cunho tecnológico. Autores como
Rainsford (2003) e Drahos e Braithwaite (2003) usam o termo Feudalismo na Informação,
originado da seguinte colocação de Drahos e Braithwaite (2003);
O atual impulso pelo controle do direito a propriedade intelectual cresceu a
uma situação análoga a de um sistema feudal no período medieval. Em
resumo, compositores e cientistas trabalham para os senhores feudais
corporativos, licenciando suas próprias invenções em troca de um espaço e
do direito de ‘cultivar a terra’ da sociedade da informação.
Drahos e Braithwaite (2003) citam a troca de espaço com os senhores feudais e a concessão
ao direito de “cultivar a terra” como analogia a relação que hoje desenvolvedores tem com grandes
37
corporações, que cedem apenas o espaço necessário para os mesmo trabalharem na tecnologia,
música, ciência, mas que os resultados sejam em prol da empresa, gerando lucros e propriedade
intelectual para as grandes corporações. Já outros autores como Rimmer (2003) levantam
argumentos de que se as alegações dos usuários P2P é de que estão apoiando a liberdade de
expressão e contribuindo para o conhecimento, então eles têm que realmente faze-lo; o que Rimmer
quer dizer com isso é que o P2P não está mantendo as expectativas de uma tecnologia
revolucionária na distribuição de arquivos como foi concebida, e que seu uso seria mais bem visto
por grandes corporações se não fossem a grande quantidade de material com infrações de copyright
que são distribuídos nas mais conhecidas redes de P2P.
2.4. Framework JXTA
Segundo Taylor e Harrison (2009), devido à quantidade de projetos e a maturidade que as
aplicações P2P atingiram atualmente, percebe-se que essas aplicações possuem um conjunto em
comum de necessidades especificas a serem tratadas e implementadas por seus desenvolvedores.
Com essa afirmação em mente, foi criado pela Sun Microsystems o framework JXTA, que vem do
termo juxtapose, que em português significa lado a lado.
O framework JXTA é um projeto open source que define um conjunto padrão de protocolos
XML, desenvolvidos para resolver problemas de funcionalidade comuns em redes P2P,
possibilitando que peers possam formar redes dinâmicas, independentes de seu sistema operacional
e linguagem de programação. De acordo com Flenner et al.(2002), o framework JXTA habilita o
desenvolvedor a delegar todo o trabalho mais complexo da criação de uma aplicação P2P ao JXTA,
para que o foco do mesmo seja em trabalhar no que deixa a sua aplicação única entre as demais.
Os três principais objetivos a serem atingidos quando fora desenvolvido o framework JXTA
eram:

Interoperabilidade: aplicações P2P atuais são desenvolvidas com um único tipo de
serviço a disponibilizar, sendo elas o Napster para compartilhamento de músicas, o
Gnutella para compartilhamento descentralizado de arquivos, Skype para bate-papo; o
resultado disso é de que os desenvolvedores de aplicações P2P tendem a criar códigos
específicos para estes serviços, resultando na falta de interoperabilidade e na duplicação
de código desnecessária. O framework JXTA cria uma linguagem comum para que os
peers possam se comunicar;
38

Independência de Linguagem/Plataformas: por usar protocolos definidos em uma
representação textual como o XML, o JXTA consegue atingir um alto nível de
independência de fatores como linguagem de programação, sistemas operacionais e até
métodos de transporte como TCP/IP e Bluetooth; e

Ubiquidade: o JXTA foi desenvolvido para funcionar em quaisquer dispositivos por
mais limitados ou incompatíveis que sejam. Aparelhos como PDAs, celulares, storages,
servidores podem ingressar em uma rede JXTA.
Segundo Flenner et al.(2002), a estrutura do framework pode ser dividida em três camadas,
como podemos ver na Figura 11. São elas: (i) núcleo, ou JXTA Core; (ii) serviços, ou JXTA
Services; e (iii) aplicações, ou JXTA Applications.
Figura 11. Camadas do framework JXTA
Fonte: Flenner et al.(2002)

Núcleo (JXTA Core): é responsável pelos protocolos e pelas funções básicas para
habilitar uma rede P2P. Inclui descoberta, transporte, segurança e criação de peers ou
grupos de peers.

Serviços (JXTA Services): a camada de serviços provê funções mais genéricas que são
usadas em diversas aplicações P2P, mas não necessariamente em todas, sendo elas
autenticação de peers, indexação, distribuição de arquivos.
39

Aplicações (JXTA Applications): camada voltada para o suporte de aplicações
desenvolvidas, sejam elas para distribuição de arquivos, bate-papo.
Foram definidos seis protocolos pelo JXTA (TAYLOR e HARRISON, 2009), sendo eles:

PRP (Peer Resolver Protocol): o mecanismo pelo qual o peer realiza uma consulta para
outros peers e recebe sua resposta;

PDP (Peer Discovery Protocol): mecanismo qual o peer pode publicar os seus recursos e
descobrir novos recursos de outros;

PIP (Peer Information Protocol): onde peers podem obter informações sobre outros
peers, como estado, tempo ativo, tráfego;

PBP (Pipe Binding Protocol): possibilita a conexão de pipes entre peers;

ERP (Endpoint Routing Protocol): faz o roteamento das mensagens JXTA; e

RVP (Rendezvous Protocol): mecanismo qual permite que peers possam submeter ou
subemeter outros peers à propagação de determinado serviço.
Taylor e Harrison (2009) definem os peers JXTA como diferenciados entre si por um
identificador Peer ID, combinado com o seu próprio endereço na rede e o nome do peer, torna
impossível a replicação de um peer na mesma rede, tanto mais em todas as possíveis redes.
Peers podem tornar disponíveis para uso do protocolo JXTA uma ou mais interfaces de seus
dispositivos ou seus recursos disponíveis através de advertisements, que são mensagens
estruturadas no padrão XML que são passados pela rede através de datagramas (mensagens).
Essas mensagens são enviadas aos demais peers através de pipes, sendo eles um método de
transferência assíncrono e unidirecional, podendo suportar a transferência de qualquer objeto, como
um código binário ou uma string de dados. Pipes não são necessariamente uma conexão entre peers
com uma ligação direta entre si. O cenário na Figura 12 ilustra a possibilidade de haver outros
dispositivos interligando peers (no caso de peer 1 e peer 2 temos um firewall e um servidor entre
eles):
40
Figura 12. Pipes e intermediários entre peers
Podemos chamar cada um, desde o firewall ao servidor entre o caminho de peer 1 e peer 2,
de hop, que podem ser descritos como os intermediários que são necessários para se entregar uma
mensagem de um ponto a outro (TAYLOR; HARRISON, 2009). Existem dois tipos de pipes, o (i)
ponto-a-ponto, que liga somente dois peers, um enviando e outro recebendo mensagens e o de (ii)
propagação, em que um peer é responsável por enviar a mensagem a mais de um peer.
Os grupos de peers JXTA são definidos com base em peers que são capazes de conversar
com o mesmo conjunto de protocolos, formando uma coleção de peers que colaboram para prover
um conjunto em comum de serviços (pode-se visualizar um grupo de peers na Figura 13).
41
Para compensar a falta de um servidor central em uma rede JXTA, peers comuns podem ser
nomeados à Rendezvous nodes. Estes agem como um ponto de encontro entre grupos de peers
JXTA, mantendo informações sobre outros peers comuns e também sobre outros Rendezvous nodes,
podendo ser vistos como gateways para vários grupos de peers, conforme a Figura 13.
Figura 13. Grupos de peers e Rendezvous nodes
Fonte: Taylor e Harrison (2009)
Outro tipo de peers são os Relay, utilizados para rotear messages entre peers atrás de
firewalls, caso o mesmo esteja bloqueando mensagens entre peers tentando uma comunicação.
Sendo um projeto de código livre, o JXTA possui uma comunidade Java bastante ativa e
conta com suporte de outros usuários, e-books ajudando em sua programação e novos protocolos
para endereçar a situações mais especificas do uso do JXTA. No tópico a seguir será falado de um
protocolo promissor baseado no JXTA, o JxtaCast.
2.4.1. JxtaCast
42
Criado pelo usuário slowhog do fórum JXTA, suportado e mantido pela comunidade Java, o
JxtaCast é um protocolo para transmissão de mensagens utilizado para distribuir arquivos aos
membros de um grupo de peers, é necessário que os mesmos estejam rodando uma mesma
aplicação que faça uso do protocolo (CLARK, 2003).
Segundo Clark (2003), o diferencial que o protocolo JxtaCast traz ao projeto JXTA original
é que, com o uso do JxtaCast, é feita uma divisão em blocos dos arquivos enviados aos peers, onde
estes blocos são colocados em mensagens e são enviados através de pipes propagate. Os peers que
recebem os blocos enviados ficam encarregados de remontar o arquivo original a partir destes
blocos. Caso haja uma perca de blocos durante a transmissão de um peer a outro, os peers são
capazes de negociar quais os blocos faltantes e os mesmo são enviados novamente. A divisão por
blocos é feita por vetores de bytes que armazenam o arquivo a ser transmitido, dividem-no em
blocos de bytes e então estes blocos são colocados em mensagens, que são enviados ao requisitante.
São implementadas pelo protocolo cinco tipos de mensagens (CLARK, 2003), sendo elas:

FILE: mensagem contendo um bloco do arquivo a ser enviado e informações sobre o
mesmo;

FILE ACKNOWLEDGE: mensagem enviada pelo peer destinatário ao peer remetente,
avisando-o do recebimento com sucesso do bloco requisitado;

FILE REQUEST: mensagem contendo a requisição de um arquivo OA ou determinado
bloco de arquivo;

FILE REQUEST RESPONSE: mensagem resposta da requisição, é idêntica a mensagem
FILE, mudando somente o campo de identificação da mensagem; e

CHAT: tipo de mensagem para troca de textos entre peers, bate-papo.
O protocolo JxtaCast ainda está em desenvolvimento, mas na sua versão atual, pode-se
utilizá-lo para uma transmissão de um arquivo de imagem de um peer a outro, constatando assim a
funcionalidade do protocolo (CLARK, 2003).
Para o trabalho proposto, o protocolo JxtaCast é um passo importante dado rumo ao
comportamento BitTorrent. Conforme será discutido adiante no Capitulo 3, as definições das
mensagens JxtaCast serão parte importante deste trabalho, visto que será necessário somente
43
adaptá-las para a situação especifica no qual este trabalho se aplica, que é a necessidade de receber
arquivos de vários peers e montá-los, tendo de manter a integridade dos blocos durante o
recebimento.
44
3. DESENVOLVIMENTO
Neste capitulo é documentado o desenvolvimento do projeto proposto por esse TCC, a
mudança de comportamento proposta à arquitetura LOP2P. Neste capitulo também é discutido o
problema encontrado com o protocolo JxtaCast em detalhes, a razão de o mesmo não ter sido
utilizado e como foi possível a implementação sem o mesmo. Foram levados em consideração os
objetivos previamente definidos, definição de escopo e são utilizados diagramas de sequência e
diagramas de classe para melhor entendimento do produto final. Ao final deste capítulo, são
descritos os experimentos realizados com o comportamento BitTorrent e os resultados obtidos.
3.1.
Comportamento BitTorrent
Conforme visto na Seção 2.3.2.5, o conceito de file swarming proposto pelo protocolo
BitTorrent foi algo que o diferenciou dos demais protocolos antecessores de P2P. O estudo
realizado a partir do protocolo viabilizou a idéia de um conceito similar, aplicado a uma arquitetura
existente e voltada à distribuição de OAs, no caso o LOP2P. O novo comportamento proposto para
a arquitetura LOP2P tem em comum com o conceito de file swarming o fato de, no caso do novo
comportamento, realizar a quebra dos arquivos OAs a serem transmitidos em blocos de tamanhos
pré-definidos e enviados ao grupo de interesse em tal arquivo, de acordo com os blocos requisitados
por tais peers dentro do grupo.
Para a implementação de tal comportamento, o estudo sobre o framework JXTA foi
essencial para que fosse possível tanto o melhor entendimento sobre tecnologias P2P quanto sobre
como tal comportamento poderia ser implementado utilizando um framework.
3.1.1. Divisão por blocos dos arquivos de OAs
No novo comportamento BitTorrent, os OAs são transformados em blocos por uma função
que carrega determinado arquivo em um vetor de bytes na memória e cria blocos, salvando-os em
uma pasta com a ID do OA em questão, possuindo cada um deles o nome de quadro.
Tal função age da seguinte forma: com um tamanho para os blocos pré-definido em 512
Kbytes, ela recebe um arquivo e calcula o seu tamanho. Com esse tamanho, ela divide o arquivo em
blocos, sendo o ultimo o bloco com tamanho variável dependendo do tamanho do arquivo, e
45
armazena o bloco a ser enviado em um arquivo denominado “quadro”, o qual então é anexado à
mensagem e encaminhado para envio.
A diferenciação destes blocos é feita através do nome do arquivo, que marca o ultimo byte
que aquele quadro possui, ex: quadro.512, quadro.1024. Na Figura 14, o OA de 1536Kbytes sendo
lido em pedaços de 512Kbytes e estes pedaços sendo armazenados em arquivos menores,
denominados a partir do ultimo valor lido.
Figura 14. Divisão do arquivo em blocos
O peer que recebe a mensagem, no final da transmissão, armazena o bloco recebido na pasta
com a ID do OA ao qual este pertence. Mesmo que blocos cheguem fora de ordem, estes blocos são
46
armazenados na pasta do peer requisitante com nomes distintos, não interferindo na montagem final
do arquivo posteriormente.
O fato de estes blocos serem mantidos em posições referentes aos seus números definidos
com base em um tamanho pré-definido possibilita não só o recebimento de blocos fora de ordem,
que outrora seriam descartados, mas também o envio de blocos recebidos por parte destes peers que
ainda não completaram os seus downloads, uma vez que estes peers podem responder pedidos de
blocos de arquivo que já os tenham.
São quatro os tipos de mensagens e suas requisições que os peers com comportamento
BitTorrent suportam, sendo estas baseadas nas mensagens já utilizadas pelo LOP2P.
3.1.2. Tipos de mensagens
Os quatro tipos de mensagens e requisições enviadas e recebidas por peers no novo
comportamento são:

TORRENT_DOWNLOAD: mensagem enviada pelo peer requisitante contendo a
identificação do bloco de arquivo solicitado para download;

TORRENT_UPLOAD: mensagem enviada pelo peer destinatário ao peer requisitante,
contendo o bloco solicitado;

TORRENT_REQUEST: mensagem enviada pelo peer requisitante contendo a requisição
de quais blocos o peer destinatário possui de determinado OA; e

TORRENT_SUBMIT: mensagem enviada pelo peer destinatário, informando ao peer
requisitante quantos blocos o mesmo possui.
3.1.2.1. Mensagem TORRENT_DOWNLOAD
A mensagem que armazena o bloco requisitado (TORRENT_DOWNLOAD) é estruturada
da seguinte forma:

Identificação do tipo da Mensagem: denominada TORRENT_DOWNLOAD;

ID do peer remetente: ID único do peer remetente, definido pelo protocolo JXTA;
47

ID do peer destinatário: ID único do peer destinatário, definido pelo protocolo JXTA;

Chave única: uma chave única identificando a transmissão da mensagem;

Nome do arquivo: não contemplando o seu caminho dentro do peer, somente o nome do
arquivo a ser transmitido; e

Bloco requisitado: somente identificação do bloco requisitado;
3.1.2.2. Mensagem TORRENT_UPLOAD
Mensagem enviada pelo peer destinatário ao peer requisitante contendo o bloco solicitado
na mensagem anterior (TORRENT_DOWNLOAD). A mensagem é estruturada da seguinte forma:

Identificação do tipo da Mensagem: denominada TORRENT_UPLOAD;

ID do peer remetente: ID único do peer remetente, definido pelo protocolo JXTA;

ID do peer destinatário: ID único do peer destinatário, definido pelo protocolo JXTA

Chave única: uma chave única identificando a transmissão da mensagem;

Nome do arquivo: não contemplando o seu caminho dentro do peer, somente o nome do
arquivo a ser transmitido; e

Bloco
requisitado:
a
partir
da
identificação
do
bloco
recebida
(TORRENT_DOWNLOAD), o mesmo é anexado a mensagem e enviado;
3.1.2.3. Mensagem TORRENT_REQUEST
Mensagem enviada pelo peer requisitante à todos os peers conhecidos, solicitando
informações sobre a quantidade de blocos que os mesmos possuem. Esta mensagem é enviada no
momento que o peer requisitante fez a busca, encontrou o OA que deseja e solicitou o download. A
mensagem é estruturada da seguinte forma:
48

Identificação do tipo da mensagem: denominada TORRENT_REQUEST;

ID do peer remetente: ID único do peer remetente, definido pelo protocolo JXTA;

ID do peer destinatário: ID único do peer destinatário, definido pelo protocolo JXTA

Chave única: uma chave única identificando a transmissão da mensagem; e

Metadado do OA solicitado: metadado de posse do peer remetente, contendo uma
contagem de blocos nula referente ao mesmo, identificando o OA ao qual o peer
requisitante deseja informações;
3.1.2.4. Mensagem TORRENT_SUBMIT
Mensagem
enviada
pelo
peer
destinatário,
informando
ao
peer
requisitante
(TORRENT_REQUEST) a quantidade de blocos que o mesmo possui. A mensagem é
estruturada da seguinte forma:

Identificação do tipo da mensagem: denominada TORRENT_SUBMIT;

ID do peer remetente: ID único do peer remetente, definido pelo protocolo JXTA;

ID do peer destinatário: ID único do peer destinatário, definido pelo protocolo JXTA

Chave única: uma chave única identificando a transmissão da mensagem; e

Metadado do OA solicitado: metadado de posse do peer contendo a quantidade de
blocos qual o mesmo possui, identificando também o OA qual o peer requisitante
solicitou informações;
3.1.2.5. Uso das mensagens
A melhor compreensão do uso das mensagens pode ser alcançada visualizando a Figura 15,
que mostra as mensagens sendo trocadas entre os peers, que são universidades fazendo a troca de
OAs.
49
O protocolo para o envio das mensagens entre os peers deve funcionar da seguinte forma; o
peer interessado faz a busca por um determinado OA, encontrado o objeto desejado, é feito a
solicitação de download. Após esta solicitação de download se dá inicio o a mudança de
comportamento proposta; são enviados então TORRENT_REQUEST para os peers conhecidos, em
busca de peers que possuam blocos do OA desejado, mesmo que não possuam todos os blocos do
mesmo. Recebido os blocos pertencentes aos peers através do TORRENT_SUBMIT, o peer
requisitante
inicia
o
processo
de
download
dos
blocos,
enviando
solicitações
TORRENT_DOWNLOAD e esperando-as em TORRENT_UPLOAD, não importando a ordem quais
estes blocos são recebidos, verificando assim o recebimento de todos os blocos necessários e, ao
final, montando-os em um arquivo único para o peer requisitante.
Figura 15. Uso das mensagens entre os peers
50
3.1.3. Comunicação entre peers
São usados pipes JXTA para a comunicação entre os peers. Conforme visto na Subseção
2.4, eles são responsáveis pela comunicação entre peers. Foi usado somente um tipo de pipe para o
projeto, o pipe ponto-a-ponto.
O
pipe
ponto-a-ponto
é
usado
para
as
mensagens
TORRENT_DOWNLOAD,
TORRENT_UPLOAD, TORRENT_REQUEST e TORRENT_SUBMIT. Todas as solicitações devem
ser atendidas ponto-a-ponto, nunca envolvendo broadcast entre todo um grupo JXTA.
3.1.4. Interação entre os peers e suas camadas
Na Figura 16, temos um diagrama de sequência detalhando um exemplo de uma interação
entre os peers dentro da rede LOP2P com o comportamento BitTorrent já adaptado e as interações
das camadas dentro destes peers. O exemplo ilustra a transferência de um OA contando com três
participantes, um requisitante e dois fornecedores do arquivo em questão.
Figura 16. Diagrama de sequência com a Interação entre os peers e suas Camadas de Mediação
51
3.2.
Analise do código-fonte LOP2P anterior
A partir do código-fonte da arquitetura LOP2P anterior, fez-se um processo de engenharia
reversa utilizando a ferramenta EA (Enterprise Architect). Deste modo, retornou-se as classes
utilizadas para a implementação do projeto e suas iterações. Foi possível notar o uso de funções do
padrão IMS DRI estudadas, como Search/Expose, Request/Deliver e Submit/Store.
Na Figura 17, pode-se observar parte do pacote Network Communication Device, onde se
encontram as classes implementadas utilizando o framework JXTA. Pode-se visualizar as seguintes
classes na parte selecionada, sendo elas responsáveis pela construção e pelo envio da mensagem:

NCDConfiguration: responsável por fornecer a estrutura necessária para configuração de
todas as classes pertencentes ao pacote Network Communication Device. Abriga
informações de configuração do peer na rede e é responsável também por nomear as
mensagens requisitadas pelo sistema loware à CM e consequentemente, a rede LOP2P;

NCDMessageSender: esta classe é encarregada de realizar o envio das mensagens,
provenientes de uma fila de mensagens que a arquitetura mantêm, onde são abrigadas
mensagens a serem despachadas aos peers. Podem-se ser visualizados também os tipos
de mensagens e seus respectivos nomes; e

LOP2PMessage: classe onde são originadas as mensagens que serão enviadas a outros
peers. Nesta mensagem são armazenados os OAs aos quais a arquitetura LOP2P
distribui e então enviadas aos peers solicitantes.
52
Figura 17. Engenharia reversa do código-fonte LOP2P, pacote Network Communication Device –
envio de mensagens.
Na Figura 18 é selecionada outra parte do pacote Network Communication Device, esta
sendo responsável pelo recebimento e tratamento posterior das mensagens. Podem-se visualizar
principalmente as seguintes classes na parte selecionada:

NCDConfiguration: mencionado anteriormente, abriga informações de configuração do
peer na rede;

NCDMessageReceiver: é responsável por receber as mensagens e armazená-las assim
que chegam em uma lista de mensagens a serem lidas; e

NCDMessagesReceiverVerifier: após o recebimento das mensagens, essa classe é
responsável por tratar as mensagens.
53
Figura 18. Engenharia reversa do código-fonte LOP2P, pacote Network Communication Device recebimento de mensagens.
A seguir são discutidas as mudanças realizadas à arquitetura LOP2P.
3.3. Mudanças do comportamento BitTorrent aplicadas ao LOP2P
Neste subtópico são discutidas as mudanças aplicadas à arquitetura LOP2P, discutindo a
implementação através de figuras e diagramas de classe.
3.3.1. JxtaCast
Durante os estudos e testes com o protocolo JxtaCast, implementando pequenas aplicações e
verificando seu funcionamento mais detalhadamente, pode-se notar que a mesma não se adaptaria
da melhor forma ao novo comportamento BitTorrent do LOP2P. O protocolo propõe um obrigatório
broadcast de mensagens, forçando desta forma que todos os peers do grupo venham a obter o
arquivo que esteja em questão, não sendo este o foco do LOP2P. É de entendimento deste que o
protocolo, que vinha sendo mantido por somente um usuário, está vindo a ser descontinuado, não
54
sendo oferecido qualquer tipo de suporte, conclusão tirada visto o fato de que não foram mais
encontradas noticias sobre o protocolo na internet e a pagina do mesmo não está mais disponível.
Mesmo diante destes problemas, medidas alternativas foram tomadas tentando ainda a
utilização do protocolo, mas não foi possível nenhuma forma que, em tempo hábil, fosse possível
aplicar o protocolo mantendo os princípios propostos, mantendo ainda a coerência no modelo de
classes.
Em função dos problemas relatados, foi decidido não utilizar o protocolo JxtaCast. Desta
forma, toda a codificação, segmentação de arquivos, tratamento de mensagens, tratamento e junção
dos blocos teve de ser feita sem auxilio do mesmo.
3.3.2. Alterações no código
As classes que abrigaram novo código para a implementação do comportamento BitTorrent
foram:

LOP2PMessage: conforme já detalhada no subtópico 3.2, é a classe aonde são
originadas as mensagens que são enviadas aos peers. Nesta classe, foram adicionadas as
mensagens propostas pelo novo comportamento, são elas TORRENT_DOWNLOAD,
TORRENT_UPLOAD, TORRENT_REQUEST e TORRENT_SUBMIT;

GDGather: classe responsável por receber a solicitações do loware de publicar um
determinado OA. Foi necessária a modificação nesta classe a fim de, quando o OA é
publicado, além de todo o processo de criação do metadado, é necessário neste momento
que, a classe seja capaz de segmentar o OA e armazenar os blocos referentes à mesma na
pasta designada. É necessário agora também que, no metadado, seja identificado quantos
blocos este OA terá;

LOP2PMetadata: classe aonde são originados os metadados referentes aos OAs que são
publicados na CM. Nesta classe foi necessário adicionar uma lista onde ficam guardadas
a quantidade de blocos que o OA referente possui, sendo criado também getters e setters
para atualizar a quantidade de blocos que determinado peer possui;

NCDData: classe responsável por possuir dados necessários para a configuração da
comunicação do peer entre os seus demais, possui também a lista de peers conhecidos
55
por este. Nesta, foi criada uma estrutura de listas aonde se abriga a quantidade de OAs
pesquisados pelo comportamento BitTorrent, quantos peers os têm e quantos blocos
cada um tem.

NCDMessagesReceiverVerifier: conforme já detalhado no subtópico 3.2, classe
responsável por tratar as mensagens quando recebidas. Foram adicionados nesta classe
os tratamentos para os novos tipos de mensagens; e

SuDSubmit: classe responsável pelas funções de download e upload dos OAs. Nesta,
foram alteradas as funções store, a fim de, quando uma solicitação de download seja
feita, seja chamada a classe SuDDownloadHandler, que será explicada a seguir. Foram
feitas também alterações no storeSubmit, que é responsável por receber a mensagem
TORRENT_DOWNLOAD, verificar o OA e, após modificação, o bloco que deve ser
enviado ao peer requisitante e envia-lo em sequência.
Foi necessária também a criação das seguintes classes:

SDTorrentRequest: possui a função search, que dispara buscas TORRENT_REQUEST
para os peers conhecidos, em busca de seus metadados solicitados e a quantidade de
blocos que os mesmo possuem, além da função searchExpose que envia o
TORRENT_SUBMIT ao peer requisitante contendo, no metadado solicitado, a
quantidade de blocos que possui;

SuDDownloadHandler: classe responsável por tratar de todo o processo de busca,
download e agrupamento dos blocos recebidos. A partir dela é chamada a função search
de SDTorrentRequest para a procura de blocos; são criadas threads SuDBitHandler, que
serão explicadas a seguir, para tratar do download de cada bloco e; agrupados os blocos,
montando o arquivo final; e

SuDBitHandler: classe, que extende thread, responsável por baixar cada bloco solicitado
pelo SuDDownloadHandler. Após o download, escreve no seu metadado que o
determinado bloco foi baixado com sucesso.
No diagrama de classes expresso na Figura 19, pode-se visualizar a interação entre as classes
do pacote protoSubmitDevice, contendo as novas classes SudDownloadHandler e SuDBitHandler,
além da SuDSubmit, que precisou de alterações, e a SuDConfiguration.
56
Figura 19. Diagrama de classes do pacote protoSubmitDevice
No diagrama de classes expresso na Figura 20, o pacote protoNetCommunicationDevice,
aonde estão as classes LOP2PMessage, NCDData e NCDMessageReceiverVerifier, que precisaram
ser alteradas conforme explicado anteriormente neste subtópico. Em conjunto a elas, no diagrama
também estão outras classes pertencentes ao pacote, para melhor visualização do resultado final.
57
58
Figura 20. Diagrama de classes do pacote protoNetCommunicationDevice
No diagrama de classes expresso na Figura 21, o pacote protoSearchDevice, onde se
encontra a classe SDTorrentRequest, criada por este projeto e mencionada neste subtópico.
Figura 21. Diagrama de classes do pacote protoSearchDevice
59
3.3.3. Segmentação e agrupamento dos OAs
Conforme discutido no subtópico 3.1.1, um aspecto crucial para que se possa ter um
comportamento BitTorrent, é a segmentação dos OAs; divindo-os em blocos para que, após
transmissão, possam ser agrupados, independente de suas origens diferentes, mas mantendo a
integridade quando o agrupamento tomar forma.
A classe GDGather, discutida no subtópico 3.1.2.1, é responsável pela publicação dos OAs
na CM e, após a mudança proposta por este projeto, pela segmentação dos OAs também. Ela atua
de forma que, quando o loware solicita a publicação de determinado OA na CM, a função
receiveMetadataFromLoware faz a publicação do OA na CM e aliado a isso, faz a segmentação do
OA, determinando também no seu metadado, a quantidade de blocos que o mesmo possui.
O processo de segmentação é iniciado calculando o tamanho do OA e com base nisso,
escreve em seu metadado quantos blocos este OA irá possuir. Inicia-se então a leitura do arquivo
em uma sequencia de bytes e a partir disto são criados novos arquivos que, com base na leitura
sequencial, são preenchidos com 512Kbytes do arquivo original, sendo o ultimo bloco com
tamanho variável. Estes arquivos são salvos em um diretório de caminho (./blocks/LOID/quadro.*),
onde LOID é o ID do OA e * é o numero final da sequencia de bytes que aquele bloco específico
possui.
Na Figura 22 podemos visualizar de forma mais detalhada o que acontece durante a
segmentação do OA.
60
Figura 22. Segmentação do OA, de forma detalhada
Quando o download dos blocos de determinado OA é finalizado, a classe
SuDDownloadHandler, após verificar que todos os blocos foram baixados, inicia o agrupamento
destes blocos.
O agrupamento é feito de forma similar à segmentação; um novo arquivo é instanciado e
salvo no diretório destino, após isto, a função começa a ler os quadros de forma sequencial e a
gravar os seus bytes no arquivo antes mencionado. Ao final da leitura e escrita, o arquivo é
finalizado, deixando o arquivo pronto para utilização do usuário.
Na Figura 23 podemos visualizar o agrupamento dos blocos de forma mais detalhada.
61
Figura 23. Agrupamento do OA, de forma detalhada
3.3.4. Busca por blocos
Após o processo comum de busca por OAs do LOP2P, quando o usuário seleciona o OA que
deseja fazer o download, é iniciada a busca por blocos, feita pela classe SDTorrentRequest, função
run, por este OA em peers conhecidos.
Uma vez que o peer tenha iniciado o download de um OA, o metadado respectivo a este já é
armazenado e passível de busca para os outros peers neste processo de procura por blocos, mesmo
que o peer possua alguns ou todos os blocos deste OA; caracterizando o file swarming discutido no
subtópico 3.1, visto que, mesmo que o peer em questão ainda esteja fazendo o download dos
blocos, ele pode fornecer estes que já possui a outros peers interessados.
62
Feita a busca por blocos e recebidos os resultados, a classe SuDDownloadHandler busca por
blocos contidos no próprio peer, referente a aquele OA, adicionando assim outra característica
mencionada no subtópico 3.1, o resumo de downloads inacabados.
A classe SuDDownloadHandler busca baixar um bloco de cada peer que foi encontrado na
busca anterior por blocos, se mesmo assim não sejam feitos os downloads de todos os blocos, é
selecionado um peer e feito o download do máximo de blocos que o mesmo possui, a fim de
completar a quantidade de blocos.
Na Figura 24 se pode ver um cenário com três peers LOP2P, onde peer A faz a busca pelo
OA X, que tem um total de três blocos, dos quais o mesmo já possui um bloco, resultado de um
download interrompido anteriormente.
Figura 24. Busca por blocos dentre os peers
63
3.4. Experimentos com o comportamento BitTorrent LOP2P
Nesta seção são discutidos os experimentos e seus resultados, que foram realizados para a
validação do projeto, estes divididos em duas etapas; os (i) testes em ambiente controlado e (ii)
testes em ambiente real. A definição das duas etapas:

Ambiente controlado: para os experimentos em ambiente controlado, foram necessários
somente quatro desktops, sendo eles maquinas virtuais com sistemas operacionais
Microsoft Windows XP ou Linux Fedora 14, com a instalação de um LMS e seu
repositório, no caso o MOODLE, em cada um deles. Foram feitos testes de requisição de
arquivos e fornecimentos de OA. Foram avaliados os clientes de cada peer e avaliados
também os pacotes trafegados pela LAN utilizando uma ferramenta especifica para
monitoramento destes pacotes trafegados. Um cenário de sucesso se dá no caso de todo o
grupo de peers conseguirem efetivamente trocar mensagens, receber os blocos enviados
de diversos peers dentro do grupo, verificar os blocos com sucesso e montar estes
arquivos de OA.

Ambiente real: Foram selecionados três servidores ativos de uma empresa X, localizada
na cidade de Itajaí, e um servidor caseiro, aos quais o autor deste projeto possui acesso,
para serem instalados o LMS e seu repositório em cada um deles. Estes servidores ficam
localizados atrás de vários hops1, incluindo firewalls e switches, os quais também são
fundamentais para a validação deste projeto. Foram então configurados estes peers para
a rede LOP2P com o novo comportamento BitTorrent e feitos testes de requisição e
fornecimento de OAs entre o grupo. Foram avaliados os resultados em cada peer. Um
cenário de sucesso no ambiente real é similar ao ambiente controlado, o mesmo se dá no
caso de o grupo conseguir encontrar a si mesmos na internet e o grupo poder ser
efetivamente criado, todo o grupo de peers conseguir trocar mensagens entre si, receber
os blocos enviados de diversos peers dentro do grupo, verificar os blocos com sucesso e
montar estes arquivos de OA.
1
Hops: intermediários que são necessários para se entregar uma mensagem de um ponto a outro, por exemplo,
firewalls, switches de rede e hubs.
64
Estas duas etapas foram realizadas após a mudança de comportamento BitTorrent proposta.
Para cada teste, foram relacionadas quatro características quais diferenciam os peers de seus
demais, são elas:

UID: Identificador único de cada peer, por se tratar de um número extenso, são
apresentados somente os quatro últimos dígitos de cada peer;

SO: é apresentado o sistema operacional utilizado para cada peer, levando em conta a
diversidade apropriada para o experimento;

IP: endereço IP do peer. Nos experimentos em ambiente controlado, são utilizados IPs
LAN, ou não válidos. Para os experimentos em ambiente real, são utilizados IPs WAN,
ou válidos; e

Blocos: quantidade de blocos que cada peer descrito possui no início de cada teste.
No subtópico a seguir, são detalhados os experimentos e expostos os resultados.
3.4.1. Resultados do ambiente controlado
Foram realizados dois testes em ambiente controlado, de acordo com o subtópico 3.4. Para o
primeiro teste, os computadores foram configurados da seguinte forma, expressa na Tabela 3.
Tabela 3. Dispositivos para o primeiro experimento em ambiente controlado
Nome
UID
LOP2Pb1
Final 2203
LOP2Pb2
Final DD03
SO
Fedora 14
Fedora 14
IP
192.168.174.150
192.168.174.149
Blocos 1(512) e
4(2048)
Blocos
Bloco 3(1536)
LOP2Pb4
LOP2Pb5
Final B203
Final EB03
Windows XP - Windows XP Professional
Professional
192.168.174.132
192.168.174.129
Nenhum
Todos
No diagrama de redes exposto na Figura 25, pode-se visualizar a estrutura descrita na Tabela
3.
65
Figura 25. Diagrama de redes para a infra-estrutura descrita na Tabela 3
Para este teste, foi utilizado como objeto de pesquisa um OA denominado Pilha, com o
tamanho de 1,68MB (ou 1.723 KB). Inicialmente, o LOP2Pb2 solicita os blocos dois e três para
finalizar o seu download, feito isso, o LOP2P 4 solicita blocos e faz download dos mesmos de todos
os peers na rede.
Na Figura 26, é mostrada a interface da CM, onde podemos visualizar os blocos recebidos.
O LOP2Pb2 fez o download com sucesso dos blocos que lhe faltavam, baixando um bloco de cada
peer presente na rede.
66
Figura 26. Camada de Mediação do peer LOP2Pb2
Na Figura 27, o LOP2Pb2, com todos os blocos referentes ao OA desejado, consegue juntar
os blocos e formar o arquivo original. A estrutura mantida no diretório /blocks é de o arquivo
original, depois de agrupado, em sua raiz e uma pasta nomeada com o ID do OA contendo os blocos
para envio aos peers requisitantes.
67
Figura 27. LOP2Pb2 após o agrupamento dos blocos e com o arquivo original aberto
Na Figura 28, o peer LOP2Pb4 fez a requisição de download de blocos e realiza o download
de todos, sendo um de cada peer que o possui e os agrupa, formando o arquivo original.
68
Figura 28. LOP2Pb4 realizando o download de todos os blocos e os agrupando
Em outro experimento em ambiente controlado, foram utilizados três computadores dentro
da rede LOP2P, são eles descritos na Tabela 4.
Tabela 4. Dispositivos para o segundo experimento em ambiente controlado
Nome
UID
LOP2Pb1
Final 9404
SO
Fedora 14
IP
Blocos
192.168.174.150
Nenhum
LOP2Pb4
Final 7703
Windows
XP
Professional
192.168.174.132
Nenhum
LOP2Pb5
Final 7903
– Windows
XP
Professional
192.168.174.129
Todos
-
No diagrama de redes exposto na Figura 29, pode-se visualizar a estrutura descrita na Tabela
4.
69
Figura 29. Diagrama de redes para a estrutura descrita na Tabela 4
Para este teste, foi utilizado como objeto de pesquisa um OA denominado Pilha, com o
tamanho de 21.9MB (ou 21.645KB). Inicialmente, o LOP2Pb4 solicita blocos para LOP2Pb5, após
a transferência com sucesso, os mesmos são agrupados e o arquivo aberto. LOP2Pb1 entra na rede e
baixa o OA a partir dos 2 peers. Após o download, o arquivo é agrupado e aberto novamente.
Na Figura 30, o peer LOP2Pb1 fez o download de blocos dos peers LOP2Pb5 e LOP2Pb4,
após isto, eles são agrupados e, na camada de mediação, podemos visualizar a mensagem de
agrupamento com sucesso.
70
Figura 30. LOP2Pb1 realiza o download de todos os blocos a partir de LOP2Pb4 e LOP2Pb5
3.4.2. Resultados em ambiente real
Foram realizados dois testes em ambiente real, de acordo com o subtópico 3.4. Para
ambos os testes, foram utilizados três servidores de uma empresa X e outro servidor montado. Nos
servidores da empresa X, LOP2Pb1 e LOP2Pb2 estavam ambos com endereços válidos na WAN,
mas no mesmo pool de endereços cedidos à empresa X, portanto, com comunicação direta entre
eles mas atrás de um firewall bridge para a internet. O LOP2Pb6, também localizado na empresa X,
estava na rede válida da Oi Telecom, atuando como peer relay para LOP2Pb5. O LOP2Pb5, por sua
vez, estava conectado à um serviço de ADSL domestica GVT, atrás de um firewall NAT.
Na Tabela 5, os servidores foram configurados da seguinte forma para estes experimentos.
71
Tabela 5. Dispositivos para o primeiro experimento em ambiente real
Nome
UID
LOP2Pb1
Final 4203
LOP2Pb2
Final 3403
SO
Fedora 14
Fedora 14
IP
187.44.99.73
187.44.99.72
Blocos
Nenhum
Nenhum
LOP2Pb5
LOP2Pb6
Final BD03
Final EE03
Windows XP Fedora 14
Professional
WAN: jorgelop2p.dyndns.org
200.215.80.164
LAN: 198.168.1.5
Todos
Nenhum
No diagrama de redes exposto na Figura 31, pode-se visualizar a estrutura descrita na tabela
5.
Figura 31. Diagrama de redes com a estrutura descrita na Tabela 5
No primeiro teste, foi utilizado um OA denominado Pilha, com o tamanho de 1,68MB (ou
1.723 KB), onde o peer LOP2Pb1 realiza a busca pelo OA desejado, faz o download dos blocos a
partir do peer LOP2Pb5 e agrupa os mesmos, possuindo então o arquivo completo e se tornando um
72
seed para os outros peers interessados no OA Pilha. Após isto, o peer LOP2Pb2 realiza o mesmo
processo e baixa os blocos tanto de LOP2Pb5 quanto de LOP2Pb1 e os agrupa, formando o arquivo
original. Por ultimo, LOP2Pb6 realiza o mesmo processo, realizando o download dos blocos a partir
dos três outros peers na rede.
Na Figura 32, o LOP2Pb6, com todos os blocos baixados, cada um a partir de um peer na
rede que agia como seed para o OA solicitado.
Figura 32. LOP2Pb6 após o download dos blocos
Foi realizado também, para o segundo experimento, a troca um OA denominado Pilha, com
o tamanho de 21.9MB (ou 21.645KB). Para este, foram utilizados somente três dos quatro
servidores utilizados anteriormente, conforme descritos na Tabela 6.
Tabela 6. Dispositivos para o segundo experimento em ambiente real
Nome
UID
SO
LOP2Pb1
Final 4203
Fedora 14
IP
187.44.99.73
Blocos
Nenhum
LOP2Pb5
Final 3403
Windows XP - Professional
WAN: jorgelop2p.dyndns.org
LAN: 198.168.1.5
Todos
73
LOP2Pb6
Final EE03
Fedora 14
200.215.80.164
Nenhum
No diagrama de redes exposto na Figura 33, pode-se visualizar a estrutura descrita na Tabela
6.
Figura 33. Diagrama de redes detalhando a estrutura descrita na tabela 6
Similar aos outros experimentos, LOP2Pb1 faz a solicitação do OA desejado ao peer
LOP2Pb5, faz o download e agrupa os blocos formando o arquivo original. Após isto, LOP2Pb6 faz
a pesquisa pelo mesmo OA e realiza o download a partir de LOP2Pb5 e LOP2Pb1.
74
4. CONSIDERAÇÕES FINAIS
Este trabalho apresentou uma mudança no comportamento da arquitetura LOP2P, que
compartilha objetos de aprendizagem entre peers, no caso, sistemas loware de instituições de
ensino. Antes deste projeto, a forma de compartilhamento destes objetos de aprendizagem não
dispunha ao peer escalabilidade ao fazer download de determinado arquivo. O mesmo deveria ser
baixado por completo de somente um peer, independente da carga de rede no momento do
download e tamanho do arquivo, estando suscetível a interrupções na transmissão.
A solução proposta se baseou em conceitos consolidados, aprovados e utilizados
diariamente em grande escala por usuários em todo mundo, presentes estes no protocolo BitTorrent.
Os conceitos que este projeto julgou necessário para criar um novo comportamento para a
arquitetura LOP2P, como o de file swarming, são características que a auxiliarão a suportar um
numero grande de instituições de ensino e se manter na vanguarda das tecnologias envolvendo
sistemas P2P.
Os objetivos definidos para este projeto concluídos com sucesso. O estudo feito sobre
Objetos de Aprendizagem, sistemas loware e redes de repositórios possibilitou o entendimento do
contexto ao qual o projeto fora aplicado, qual o ambiente que atuará e quais serão os tipos de
arquivos que devem ser compartilhados. Foi feito também um estudo da documentação da
arquitetura LOP2P, visando entender como a mesma funciona, camadas e modelos utilizados para a
sua implementação foram estudados a fundo. O conhecimento sobre outras redes de repositórios
aliado com o estudo realizado sobre o LOP2P foi importante para avaliar a situação atual de todas
as soluções e traçar um comparativo entre o LOP2P e alternativas existentes.
A pesquisa por redes peer-to-peer e pelo protocolo BitTorrent, auxiliou na construção da
Fundamentação Teórica e na base de conhecimento necessário para desenvolvimento do projeto
final. Aliado ao estudo realizado sobre o framework JXTA, foi possível projetar e implementar o
comportamento BitTorrent proposto.
Houveram problemas com o protocolo JxtaCast, discutido em sua grande parte na
Fundamentação Teorica, mas embora tenha sido um contratempo, a solução encontrada, de
implementar a funcionalidades sem a ajuda do mesmo, funcionou de forma melhor do que se previa
na primeira etapa do projeto.
75
Com a falta do protocolo JxtaCast, foi necessário implementar as mensagens necessárias e o
controle de envio e recebimento destas desde o início, utilizando o framework JXTA e mensagens
utilizadas anteriormente pela arquitetura LOP2P. Toda a segmentação dos OAs em blocos e o
agrupamento dos mesmos tiveram de ser feito do inicio também, o que atrasou pouco o
desenvolvimento, mas resultou em um código mais apropriado para as necessidades do
comportamento proposto.
Os objetivos definidos para o sucesso nos experimentos realizados foram cumpridos, foram
feitos experimentos com sistemas operacionais diversos, variados tipos de estruturas de rede, foi
alterado o tamanho dos arquivos, resultando em maior quantidade de blocos. Todos estes tiveram os
resultados esperados e foram documentados de forma extensa, gerando material para análise
detalhada.
O LOP2P possui um alto potencial para crescimento, tanto no quesito de reconhecimento,
com a sua adoção e utilização em diversas instituições de ensino, compartilhando seus OAs no
estado-da-arte se tratando de redes P2P, quanto no quesito cientifico e tecnológico. Para trabalhos
futuros envolvendo o comportamento BitTorrent implementado ao LOP2P, posso citar; (i)
implementação de maiores funcionalidades relacionadas ao novo comportamento BitTorrent no
plugin loware, como o maior controle do usuário quanto aos blocos a serem baixados, velocidade e
status de downloads e uploads e (ii) utilização de técnicas de otimização para o download de
blocos, levando em conta aspectos de rede como proximidade, resposta e latência de peers.
76
REFERÊNCIAS BIBLIOGRÁFICAS
ARIADNE. The ARIADNE Knowledge Pool System. 2006. Disponível em: <http://www.ariadneeu.org/index.php?option=com_content&task=view&id=27&Itemid=38 >. Acesso em: 10 set. 2010.
ANDROUTSELLIS-THEOTOKIS, Stephanos; SPINELLIS, Diomidis. A Survey of Peer-to-Peer
Content Distribution Technologies. ACM Computing Surveys, New York, v.36, p.335-371, 2004.
ISSN: 0360-0300
CLARK, J. JxtaCast: Broadcast files through propagation pipes. 2003. Disponível em:
<https://jxtacast.dev.java.net/>. Acesso em: 22 set. 2010.
DRAHOS, Peter; BRAITHWAITE, John. Information feudalism: who owns the knowledge
economy?. New York US: New Press, 2003.
FLENNER, Robert; ABBOTT, Michael; BOUBEZ, Toufic; COHEN, Frank; KRISHNAN,
Navaneeth; MOFFET, Alan; RAMAMURTI, Rajam; SIDDIGUI, Bilal; SOMMERS, Frank. Java
P2P: Unleashed. New Jersey, US: Sams Publishing, 2002. ISBN 0-672-32399-0
FREE SOFTWARE FOUNDATION. Gnutella: regarding Gnutella. 2010. Disponível em:
<http://www.gnu.org/philosophy/gnutella.html>. Acesso em: 01 set. 2010.
HATALA, Marek; RICHARDS, Griff; EAP, Timmy; WILLMS, Jordan. The interoperability of
learning object repositories and services: standards, implementations and lessons learned. In:
WORLD WIDE WEB CONFERENCE, 13., 2004, New York. Proceedings… New York: ACM
Press, 2004. ISBN: 1-58113-844-X.
IMS. IMS Digital Repositories Interoperability. 2003. Disponivel em:
<http://www.imsglobal.org/digitalrepositories/driv1p0/imsdri_infov1p0.html#1247983>. Acesso
em: 10 set. 2010.
IRLBECK, Sonja; MOWAT, Joanne. Learning Content Management System (LCMS). In:
KOOHANG, Alex; HARMAN, Keith. Learning Objects: standards, metadatas, repositories, and
LCMS. Santa Rosa: Informing Science Press, 2007. P157-184. ISBN 83-922337-5-1
JIA, Weijia; ZHOU, Wanley. Distributed network systems, from concepts to implementations.
Boston: Springer, 2005. vol. 15. ISBN: 0-387-23840-9.
LOW, Boon; CASSIDY, Kathryn; FERGUSSON, David; ATKISSON, Malcolm; MEER, Elizabeth
Vander; MCGEEVER, Mags. Distributed Computing Education, Part 5: coming to terms with
intellectual property rights. IEEE Distributed Systems Online, v.9, n.12, dez. 2008. ISSN 1541492.
NASCIMENTO, Anna C.; MORGADO, Eduardo. Um projeto de colaboração internacional na
América Latina. 2008. Disponível em: <http://rived.mec.gov.br/artigos/rived.pdf>. Acesso em: 10
set. 2010.
77
RAINSFORD, M.. P2P: revolution or evolution? 2003. Disponível em:
<http://www.opendemocracy.net/ debates/article--1666.jsp>. Acesso em: 18 set. 2010
RIMMER, M. The genie's revenge: a response to Siva Vaidhyanathan.2003. Disponivel em:
<http://www.opendemocracy.net/content/articles/PDF/1639>. Acesso em: 18 set. 2010
SANTIAGO, Rafael. LOP2P: arquitetura para compartilhamento de Objetos de Aprendizagem
entre Instituições de Ensino. 2009. 129 p. Dissertação (Mestrado em Computação Aplicada) Universidade do Vale do Itajaí, São José, 2009.
SHIRKY, Clay. OPENP2P, Modern p2p definition. 2000. Disponível em:
<http://www.openp2p.com/pub/a/p2p/2000/11/24/shirky1-whatisp2p.html>. Acesso em: 10 set.
2010.
SLOANE, Julie. WIRED 13.01: The BitTorrent Effect. 2007. Disponível em:
<http://www.wired.com/techbiz/startups/news/2007/12/YE_10_startups>. Acesso em: 16 set. 2010.
TAYLOR, Ian J.; HARRISON, Andrew. From P2P and grids to services on the web, evolving
distributed communities. 2.ed. London UK: Springer, 2009.
UNESCO. UNESCO Promotes New Initiative for Free Educational Resources on the Internet.
2002. Disponível em: <http://www.unesco.org/education/news_en/080702_free_edu_ress.shtml>.
Acesso em: 09 set. 2010.
WILEY, D. A. Connecting learning objects to instructional design theory: a definition, a metaphor,
and a taxonomy. In: WILEY, D. A. (Ed.), The instructional use of learning objects: online
version. 2000. Disponível em : < http://reusability.org/read/chapters/wiley.doc >. Acesso em: 10
set. 2010.
WILHELM, Pierre.; WILDE, Russ. Developing a university course for online delivery based on
learning objects: from ideals to compromises. Philadelphia US: Open Learning, 2005.
78
Download

Modelo de TCC para o Curso de Ciência da Computação da UNIVALI