• Nenhum resultado encontrado

UNIVERSIDADE FEDERAL DE MINAS GERAIS INSTITUTO DE CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO CRISTIANO MACIEL DA SILVA.

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDADE FEDERAL DE MINAS GERAIS INSTITUTO DE CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO CRISTIANO MACIEL DA SILVA."

Copied!
94
0
0

Texto

(1)

INSTITUTO DE CIÊNCIAS EXATAS

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

U

MA

A

RQUITETURA DE

P

ROXIES

P

ARA

A

MBIENTES

P

AR

-

A

-P

AR

CRISTIANO MACIEL DA SILVA

Belo Horizonte

Minas Gerais

Julho de 2004

(2)

U

MA

A

RQUITETURA DE

P

ROXIES

P

ARA

A

MBIENTES

P

AR

-

A

-P

AR

Dissertação apresentada ao Curso de Pós Graduação em Ciência da Computação da Universidade Federal de Minas Gerais, como requisito parcial para a obtenção do grau de Mestre em Ciência da Computação.

Belo Horizonte

Minas Gerais

05 de Julho de 2004

(3)

iii

R

ESUMO

A tecnologia par-a-par emerge como um novo paradigma para sistemas distribuídos. A continuidade de seu crescimento depende do desenvolvimento de mecanismos que garantam a escalabilidade da rede. Este trabalho analisa a utilização de sistemas de replicação no ambiente par-a-par de forma a reduzir a utilização da banda de rede e latência percebida pelo usuário, aumentando a disponibilidade dos serviços. Além de prover conteúdo em um ambiente par-a-par específico, tal sistema de replicação pode atuar (também) como um interligador de diversos sistemas par-a-par, tornando possível que clientes de um sistema tenham acesso aos recursos disponíveis em quaisquer dos sistemas conectados ao replicador. A arquitetura de replicação projetada atende a todos estes requisitos, tendo sido aplicada a duas populares redes par-a-par: DirectConnect e

eDonkey. Os resultados experimentais mostram que esta estratégia de replicação

permite a redução da latência percebida pelo usuário e o aumento da disponibilidade dos recursos.

(4)

iv

A

BSTRACT

Peer-to-peer is emerging as a new paradigm for distributed computing. Its continuing growing, however, depends on the development of mechanisms that guarantee the scalability of the networks. This work analyzes the utilization of caching systems in peer-to-peer environments, reducing bandwidth requirements and user-perceived latency, and increasing the availability of the services. Besides serving content of a specific network, such caching system may also act as a gateway among different peer-to-peer systems, making possible that clients of one system have access to the available resources in any of the connected systems. We designed a proxy architecture that fulfills these requirements and applied it to two popular P2P networks: DirectConnect and

eDonkey. Simulation results show that our caching strategy allows the reduction of user

(5)

v

S

UMÁRIO

RESUMO...III

ABSTRACT ...IV

LISTA DE ILUSTRAÇÕES... VIII

LISTA DE TABELAS ...X CAPÍTULO 1...11 INTRODUÇÃO ...11 1.1 Motivação...13 1.2 Objetivo...13 1.3 Descrição...14 1.4 Organização...14 CAPÍTULO 2...16 TRABALHOS RELACIONADOS...16 2.1 Sistemas par-a-par...18

2.2 Sistemas de compartilhamento de arquivos ...22

2.3 Localização de arquivos em redes par-a-par ...22

2.3.1 Técnicas baseadas na propagação de consultas ...22

2.3.2 Técnicas baseadas no armazenamento de índices...23

2.3.3 Técnicas baseadas em tabelas hash distribuídas...24

2.3.4 Técnicas baseadas em histórico ...25

(6)

vi

2.4.1 Identificação única de arquivos...26

2.5 Sumário ...27

CAPÍTULO 3...29

SISTEMAS DE REPLICAÇÃO PARA O AMBIENTE PAR-A-PAR...29

3.1 Apresentação ...29

3.2 Sumário ...34

CAPÍTULO 4...35

AVALIAÇÃO DE ESCALABILIDADE - ESTUDO DE CASO DA REDE FREENET ...35

4.1 Rede FreeNet ...36

4.2 Aurora, o simulador FreeNet...38

4.3 Simulações...43

4.3.1 Rede sem replicação...44

4.3.2 Rede com replicação ...45

4.4 Sumário ...47

CAPÍTULO 5...48

AVALIAÇÃO DE INTEROPERABILIDADE...48

5.1 Protótipo do sistema de replicação ...48

5.1.1 Organização do sistema de replicação...52

5.1.2 Localização de arquivos ...54

5.1.3 Obtenção de arquivos ...57

5.1.4 Repositório de replicação ...58

(7)

vii

5.1.5.1 Comunicação núcleo - plugin...60

5.1.5.2 Comunicação plugin - núcleo...63

5.2 Estudo de casos...66

5.2.1 Estudo de caso - DirectConnect ...67

5.2.1.1 Plugin DirectConnect...70

5.2.2 Estudo de Caso eDonkey ...74

5.2.2.1 Plugin eDonkey ...78 5.3 Resultados ...80 5.4 Sumário ...86 CAPÍTULO 6...88 CONCLUSÃO ...88 6.1 Trabalhos Futuros ...89 REFERÊNCIAS...90

(8)

viii

L

ISTA DE

I

LUSTRAÇÕES

FIGURA 1 – Classificação de sistemas par-a-par com base na atividade da rede ...20

FIGURA 2 – Exemplo de sistemas par-a-par com modelo híbrido (a) e puro (b) ...21

FIGURA 3 – Posicionamento do sistema de replicação ...31

FIGURA 4 – Roteamento em redes FreeNet...37

FIGURA 5 – Topologia para uma rede FreeNet contendo 10 nodos...41

FIGURA 6 – Topologia para uma rede FreeNet com sistema de replicação ...42

FIGURA 7 – Camadas do sistema de replicação...53

FIGURA 8 – Detalhamento do sistema de replicação ...54

FIGURA 9 – Interação do sistema de replicação com redes par-a-par...55

FIGURA 10 – Fluxo para localização de recursos ...56

FIGURA 11 – Fluxo para obtenção de recursos...58

FIGURA 12 – Arquitetura do protótipo desenvolvido...67

FIGURA 13 – Topologia de uma rede DirectConnect...68

FIGURA 14 – Tipos de Buscas do Protocolo DirectConnect ...69

FIGURA 15 – Plugin DirectConnect ...71

FIGURA 16 – Rede eDonkey...75

FIGURA 17 – Armazenamento de arquivos no eDonkey...77

FIGURA 18 – Plugin eDonkey...78

(9)

ix

GRÁFICO 1 – Mediana (a) e média (b) para rede sem replicação...44

GRÁFICO 2 – Mediana (a) e média (b) para rede com 50 replicadores ...45

GRÁFICO 3 – Mediana (a) e média (b) para rede com 50 nodos por replicador ...46

GRÁFICO 4 – Freqüência de solicitação de arquivos da amostra ...81

GRÁFICO 5 – Distribuição do tamanho dos arquivos da amostra...82

GRÁFICO 6 – Arquivos requisitados x arquivos servidos pelo replicador ...84

(10)

x

L

ISTA DE

T

ABELAS

TABELA 1 – Apresentação das operações solicitadas do núcleo para o plugin...62

TABELA 2 – Operações solicitadas do plugin para o núcleo...63

TABELA 3 – Caracterização da amostra ...81

(11)

C

APÍTULO

1

I

NTRODUÇÃO

A tecnologia par-a-par refere-se, principalmente, ao compartilhamento de recursos presentes em computadores localizados na periferia (ou bordas) da Internet. Estes computadores, também chamados de nodos (ou peers), tipicamente não apresentam um uso computacional intenso contínuo, sendo comumente de uso pessoal em ambiente de trabalho, acadêmico ou doméstico. O processamento realizado nestas estações segue um padrão com presença de picos de utilização e existência de longos períodos de baixa demanda computacional. Com o recente avanço da tecnologia, estas estações conseguiram um grande aumento de seu poder de processamento e a possibilidade de utilização destas máquinas em um ambiente distribuído oferece uma imensa capacidade computacional.

(12)

Sistemas par-a-par são arquiteturas distribuídas, tipicamente sem controle centralizado ou organização hierárquica, nas quais o software executado em cada nodo é equivalente em funcionalidade. Sua natureza distribuída torna este tipo de sistema inerentemente robusto a certos tipos de falhas, tornando-os altamente indicados para aplicações que necessitem de grande capacidade de armazenamento e processamento de longa duração. O modelo par-a-par também apresenta o benefício da escalabilidade para o tratamento de crescimentos não-polinomiais no número de usuários e equipamentos conectados, devido ao nível de descentralização que pode ser obtido nesta arquitetura. Com o recente crescimento do tráfego par-a-par, torna-se natural a avaliação do potencial de utilização de sistemas de replicação neste ambiente. Entretanto, fundamentais diferenças existem entre os serviços Web e par-a-par [49], bem como entre seus tráfegos associados, justificando uma análise criteriosa da tecnologia a ser empregada no sistema de replicação a fim de superar estes desafios.

Como diferenças relevantes entre os tráfegos par-a-par e Web aponta-se o tamanho dos recursos compartilhados, caráter transiente dos nodos de uma rede par-a-par, limitação de banda associada aos nodos par-a-par e complicadores relacionados à identificação de recursos em redes par-a-par. Enquanto na Web cada recurso é identificado de forma única através de um endereço de host juntamente com o nome do recurso (arquivo), o mesmo não ocorre para as redes par-a-par. Entretanto, de forma similar ao conteúdo Web, o conteúdo par-a-par possui objetos muito populares criando o potencial para a redução de tráfego redundante, que é o objetivo desta.

(13)

1.1 Motivação

Com o crescimento da utilização de aplicações par-a-par é fundamental identificar novos mecanismos que colaborem para a redução do tráfego na rede, aumentando sua escalabilidade e replicando recursos de acordo com as preferências dos usuários. Sistemas de replicação contemplam estas características, principalmente quando analisados os relevantes ganhos de desempenho proporcionados no ambiente Web [38]. Com a adoção deste tipo de sistema (de replicação) no ambiente par-a-par podem ser atingidos outros ganhos como o aumento do potencial de anonimato e segurança dos nodos (afinal, o sistema de replicação acrescenta uma nova camada de abstração na comunicação entre os nodos), além da possibilidade de sua utilização como interligadores (gateways) entre diversas redes par-a-par, convertendo consultas, respostas e conteúdo. Agentes do sistema de replicação (proxies) também podem realizar atividades de análises estatísticas da rede, redirecionando requisições para nodos que ofereçam uma melhor qualidade de serviço e alterando a qualidade da mídia servida, de forma a atender aos requisitos computacionais e de largura de banda de cada nodo em específico.

1.2 Objetivo

Atualmente, as grandes corporações e os provedores de acesso à Internet registram uma fatia importante de seu canal de comunicação com a rede mundial consumido por tráfego par-a-par. Este trabalho propõe o projeto de um sistema de replicação para utilização na fronteira da rede corporativa com a rede mundial, tendo como objetivo

(14)

racionalizar a utilização do referido canal para este tipo de conteúdo, obtendo-se resultados que comprovem a eficácia de tal abordagem.

1.3 Descrição

Com este objetivo, neste trabalho são apresentados os diversos sistemas par-a-par atualmente em uso, as técnicas de replicação que podem ser empregadas, as principais diferenças entre o ambiente par-a-par e Web, além das funcionalidades extras que podem ser agregadas a um sistema de replicação para ambientes par-a-par, como por exemplo: coleta de dados sobre estabilidade de nodos; interligação entre redes par-a-par distintas, dentre outras. Após a caracterização de sistemas par-a-par e sistemas de replicação, procede-se a descrição detalhada dos experimentos realizados, bem como as soluções desenvolvidas, análise de amostras de dados utilizadas, resultados obtidos e conclusão da pesquisa.

1.4 Organização

Este documento encontra-se organizado da seguinte forma. O Capítulo 2 discute os trabalhos relacionados. O Capítulo 3 apresenta a formalização de sistemas de replicação para ambientes par-a-par. O Capítulo 4 apresenta uma avaliação de escalabilidade da utilização sistemas de replicação no ambiente par-a-par, sendo esta análise realizada com base na rede FreeNet através do simulador Aurora. O capítulo 5 descreve a avaliação de interoperabilidade entre os protocolos DirectConnect e eDonkey e a caracterização dos ganhos que podem ser obtidos com esta estratégia no ambiente

(15)

par-a-par em termos de taxa de acertos do sistema de replicação. Por fim, o Capítulo 6 apresenta as conclusões e a relação de trabalhos futuros que podem complementar esta pesquisa.

(16)

C

APÍTULO

2

T

RABALHOS

R

ELACIONADOS

Este capítulo apresenta a tecnologia de sistemas par-a-par, classificando seus diversos tipos, aplicações e técnicas atualmente empregadas. A apresentação se dá através dos diversos trabalhos realizados que compuseram a evolução desta tecnologia, caracterizando suas diversas aplicações e áreas de utilização, bem como suas principais técnicas e desafios. Os principais trabalhos em destaque são:

SQUIRREL [13], que pode ser definido como uma tecnologia de replicação Web distribuída, apresenta como contribuição o desenvolvimento de uma arquitetura descentralizada que oferece as mesmas funcionalidades de um sistema de replicação Web centralizado. Entretanto, este trabalho difere de SQUIRREL no sentido de não buscar o tratamento de tráfego Web, mas sim par-a-par.

(17)

FARSITE [8] consiste de um sistema de arquivos baseado em uma tecnologia par-a-par que garante grande persistência e disponibilidade de dados, similar a um sistema de arquivos tradicional, utilizando o mesmo número de réplicas para cada objeto. Este trabalho difere de FARSITE no sentido de não apresentar como objetivo o oferecimento de fortes requisitos de persistência de dados, mas sim, uma estratégia de replicação proporcional à popularidade do recurso. Em contraste com um sistema de arquivos, o objetivo de uma comunidade par-a-par não é prover fortes requisitos de persistência, mas sim maximizar a quantidade de conteúdo disponível.

CHORD [28] define um algoritmo que garante a resolução de qualquer consulta com o envio de apenas O(log n) mensagens em um sistema constituído de n nodos, sendo que cada nodo deve manter informação sobre apenas O(log n) outros nodos. Este trabalho difere de CHORD na estratégia utilizada para otimizar o roteamento. Enquanto CHORD implementa um novo algoritmo, neste trabalho insere-se uma nova entidade na rede com o objetivo de replicar arquivos freqüentemente acessados.

PASTRY [24] considera a localidade de rede visando otimizar os trajetos das mensagens. Cada nodo mantém uma pequena lista de antecessores e sucessores para garantir a corretude, mesmo quando nodos falham. Este sistema permite o roteamento de mensagens para o nodo numericamente mais próximo de uma chave em menos que log2b n passos (b é um parâmetro de configuração com valor típico quatro). Já a entrega

é garantida a menos que L/2 (L é um parâmetro de configuração com valor típico 2b) nós com identificadores adjacentes falhem simultaneamente. De forma similar a CHORD, PASTRY busca otimizar o roteamento da rede, enquanto neste trabalho busca-se replicar arquivos freqüentemente requisitados [35].

(18)

2.1 Sistemas par-a-par

A tecnologia par-a-par refere-se a uma classe de sistemas e aplicações que empregam recursos distribuídos de forma a realizar atividades de uma maneira descentralizada [22]. Entre os recursos compartilhados, destacam-se: poder de processamento, capacidade de armazenamento de dados e disponibilização de conteúdo [34].

São encontradas diversas definições para esta tecnologia. O Intel P2P Working

Group a define como o “compartilhamento de serviços e recursos computacionais

através da troca direta entre sistemas” [21]. Alex Weytsel define par-a-par como “o uso de dispositivos na periferia da Internet através de uma abordagem não-cliente” [31]. Ross Lee Graham define par-a-par através de três requisitos chaves:

a) computadores com operação similar aos servidores;

b) presença de um sistema de endereçamento independente do serviço de

nomeação de domínios (DNS)1;

c) capacidade de operação com conectividade variável [29].

Clay Shirky da O’Reilly e Associados propõe que “par-a-par é uma classe de aplicações que consegue aproveitar recursos (armazenamento, ciclos, conteúdo, presença humana) disponíveis na periferia da Internet”. Já Kindberg define par-a-par como “sistemas com tempos-de-vida independentes”. O fato é que a atividade ou função realizada por uma aplicação par-a-par pode ser tanto de computação distribuída [26], como de compartilhamento de conteúdo ou colaborativa.

1 Domain naming service.

(19)

Aplicações par-a-par de computação distribuída têm como objetivo a divisão de grandes tarefas em pequenos sub-conjuntos que podem ser processados em paralelo sobre um número de nodos independentes. Grande parte das implementações deste modelo são direcionadas a aplicações que exigem alto grau de processamento, buscando o aproveitamento de ciclos não utilizados pelos diversos computadores conectados à rede mundial [5]. Usualmente, a mesma tarefa é executada em cada nodo com alteração única dos dados de entrada. Exemplos deste tipo de aplicação incluem a busca por vida extraterrestre [51], quebra de chaves criptográficas, cálculos de risco marginal, avaliação de crédito e análises demográficas.

Aplicações par-a-par de compartilhamento de arquivos têm como foco o armazenamento e a recuperação de dados em diversos nodos componentes da rede [32], permitindo que estes nodos busquem e baixem arquivos disponibilizados em outros nodos. Como regra geral, as implementações atuais não incorporam complexos mecanismos de garantia de confiabilidade, deixando a cargo do usuário a responsabilidade por escolhas inteligentes de localização de arquivos, bem como pela realização de novas tentativas em caso da ocorrência de falhas durante o processo de transferência do arquivo [51]. Na verdade, estas aplicações têm como objetivo o aproveitamento de área de armazenamento não-utilizada em nodos, criando uma espécie de servidor distribuído de arquivos, cuja confiabilidade pode ser incrementada através da utilização de técnicas tradicionais de banco de dados (replicação, por exemplo) [44].

Aplicações par-a-par colaborativas permitem que usuários realizem interação em tempo real sem a necessidade de um servidor central para o recebimento e a distribuição da informação ou conteúdo. Programas que permitem a troca de mensagens instantâneas entre usuários são uma subclasse deste tipo de aplicação [4]. Similarmente,

(20)

também emergem aplicações compartilhadas que permitem a interação através da visualização e edição da mesma informação simultaneamente por usuários (ou nodos), possivelmente separados por milhares de quilômetros. Por fim, jogos são um outro tipo de aplicações colaborativas. A FIG. 1 ilustra esta organização.

FIGURA 1 – Classificação de sistemas par-a-par com base na atividade da rede

Embora a tecnologia par-a-par date dos primórdios da Internet, recentemente este tipo de aplicação passou a receber uma atenção especial devido à explosão de popularidade das aplicações de compartilhamento de arquivos, com destaque ao Napster [20]. Hoje, par-a-par recebe grande atenção da indústria através de grupos como o P2P

Working Group [21], liderado por parceiros industriais como Intel, HP, Sony, contando

também com a participação de diversas outras empresas. Existe também o JXTA que trata da elaboração de um padrão aberto para o desenvolvimento de aplicações (par-a-par), liderado pela Sun Microsystems. Em paralelo, esta tecnologia também recebe atenção da academia através de uma grande variedade de eventos com foco na pesquisa de tópicos específicos desta área como o Internacional Workshop on P2P Computing,

Global and P2P Computing on Large Scale Distributed Systems, International Conference on P2P Computing e O’Reilly P2P and Web Services Conference.

Além da função ou atividade executada pela rede, também é possível classificar sistemas par-a-par com base na arquitetura empregada na sua construção (ou paradigma

(21)

de projeto). Os sistemas em uso atualmente são concebidos a partir dos seguintes paradigmas: modelo puro; modelo híbrido; modelo intermediário.

Sistemas par-a-par puros não permitem a existência de uma entidade centralizadora. As redes Gnutella [10, 27] e FreeNet [9] são exemplos deste tipo de sistema.

Sistemas par-a-par híbridos permitem a existência de uma entidade central que é acionada pelos nodos para o envio ou a obtenção de meta-informações, como a localização de algum dado ou a verificação de credenciais de segurança, dentre outros. A partir daí, segue-se a tradicional comunicação par-a-par. São exemplos destas aplicações: Napster, Groove, Aimster, Magi, Softwax e iMesh.

Sistemas par-a-par intermediários se utilizam do conceito de super nodos para o armazenamento de grandes quantidades de dados ou mesmo informações que nodos comuns tipicamente não possuem. Neste caso, os nodos comuns buscam por informações nestes nodos especiais sempre que não conseguem encontrá-la de outra maneira. A FIG. 2 exemplifica o modelo híbrido e puro.

(22)

2.2 Sistemas de compartilhamento de arquivos

Através da análise dos diversos tipos de sistemas par-a-par e suas características é possível visualizar que um sistema de replicação somente terá utilidade para redes de compartilhamento de arquivos. Este tipo de rede apresenta duas atividades básicas [46]: a localização de arquivos e o acesso efetivo ao conteúdo do arquivo. A atividade de localização de arquivos é complexa, geralmente envolvendo grande utilização de largura de banda e alta latência para a descoberta do arquivo desejado [48]. Esta localização envolve uma consulta aos metadados que descrevem o recurso desejado, possivelmente retornando sua localização. Já o acesso ao conteúdo do arquivo deve ser realizado de maneira eficiente e robusta a erros de rede e dos nodos [40].

2.3 Localização de arquivos em redes par-a-par

As principais classes de técnicas utilizadas para a localização ou descoberta de arquivos em redes par-a-par de compartilhamento de arquivos são descritas a seguir:

2.3.1 Técnicas baseadas na propagação de consultas

É uma classe de técnicas que utiliza a propagação de consultas nodo-a-nodo com o intuito de localizar o arquivo. Um dado nodo que deseje pesquisar por um recurso propaga uma consulta para seus vizinhos. Cada vizinho, ao receber a consulta, verifica no seu repositório local por dados equivalentes e realiza novamente a propagação para os vizinhos dos vizinhos, promovendo a difusão da consulta pela rede. Quando alguma resposta é obtida, ela retorna pelo caminho inverso seguido pela consulta.

(23)

Apresentam-se como variações desta técnica: inundação; propagação estilo gossip; caminhada aleatória; difusão direta.

A inundação utiliza um parâmetro de profundidade com o intuito de limitar seu escopo, tendo como resultado sistemas não escaláveis com alto consumo de banda de rede. Propagação estilo gossip tenta reduzir o consumo de banda de rede através do envio das consultas para apenas um sub-conjunto dos vizinhos do nodo, seguindo um padrão similar ao da propagação de vírus.

Caminhada aleatória (random walk) é um caso extremo da propagação estilo

gossip, onde cada nodo propaga a consulta para apenas um único outro nodo escolhido

de forma aleatória.

Difusão direta tenta melhorar o desempenho da propagação estilo gossip através da seleção explícita de quais nodos devem ser contatados para a propagação da consulta. Adotando métricas como conectividade e preferência pessoal, tal abordagem permite que um nodo rapidamente localize recursos populares em uma rede com topologias bem realistas.

2.3.2 Técnicas baseadas no armazenamento de índices

As técnicas baseadas em índices promovem um suporte às buscas por palavras-chave, podendo empregar três tipos de abordagens: índices centralizados; índices distribuídos; índices híbridos.

Índices centralizados necessitam de um substancial investimento em banda de comunicação e hardware. Além disto, devido às questões judiciais associadas à

(24)

distribuição de mídias, juntamente com o exemplo Napster, nenhuma tecnologia par-a-par recente se utiliza desta técnica.

Índices distribuídos é uma técnica em que a tabela de índices se encontra distribuída e compartilhada pelos diversos nodos componentes da rede. Apresenta como aspectos positivos a redução de vulnerabilidade legal, bem como um grande potencial de desempenho e escalabilidade. Entretanto, sua dificuldade de manutenção da consistência entre as diversas cópias e sua intrínseca falta de segurança tornam a rede susceptível a sabotagens por nodos maliciosos.

Índices híbridos propõem a utilização de diversas entidades especiais (super nodos) no lugar do servidor centralizado. Estas entidades surgem naturalmente de nodos tradicionais a partir de certas avaliações de banda de comunicação, capacidade de processamento e espaço de armazenamento. No sentido de obter resultados para consultas, cada nodo contata um ou mais super nodos, sendo que estes (super nodos) também podem se comunicar entre si para a resolução de consultas. Integrando as vantagens dos esquemas centralizado e distribuído, este é o método mais popular atualmente. Foi inicialmente implementado pelo Fasttrack, sendo também utilizado pelos sistemas Morpheus [19], Kazaa [15], além das implementações de busca em

JXTA.

2.3.3 Técnicas baseadas em tabelas hash distribuídas

Esta classe de técnicas atribui um identificador global único (GUID)2 a cada recurso

armazenado no sistema, tipicamente o algoritmo seguro de hash (Sha-1)3 [23] do

(25)

conteúdo. A rede é estruturada de forma que uma dada chave possa ser rapidamente localizada independente da quantidade de nodos presentes. Neste modelo, buscas por palavras-chave podem ser facilmente implementadas através da elaboração e disponibilização de catálogos. Como desvantagem, o custo de manutenção da rede pode tornar-se proibitivo na situação em que nodos apresentem-se muito transientes.

2.3.4 Técnicas baseadas em histórico

Esta classe de técnicas não se utiliza de consultas baseadas em requisições do usuário. Ao invés disto, tenta prever a relevância para o usuário de cada recurso encontrado na rede através do armazenamento de informações passadas para a elaboração do perfil do usuário. Baseado em informações históricas sobre o conteúdo mantido e descartado pelo nodo, o sistema é então capaz de determinar elementos comuns interessantes (ao nodo). Embora este tipo de sistema possa ser bastante útil para a aquisição de dados em pano de fundo, sua utilização de forma interativa é comprometida devido a sua alta latência.

2.4 Recuperação de conteúdo em redes par-a-par

As técnicas discutidas no item anterior têm como objetivo realizar a localização de arquivos na rede par-a-par de compartilhamento de arquivos. O passo seguinte à localização é o efetivo acesso ao recurso (conteúdo do arquivo) através de um mecanismo eficiente e apto a lidar com situações de falhas de comunicação, tanto por instabilidade da rede, quanto pelo caráter transiente dos nodos envolvidos na transação

3 Secure hash algorithm.

(26)

[37]. De forma a superar estes obstáculos e proporcionar que o nodo lide com a heterogeneidade da banda de rede, dois mecanismos podem ser empregados: requisição de intervalos; entrega segmentada.

Requisição de intervalos é uma técnica que permite que nodos requisitem pequenas porções de conteúdo, possibilitando a reinicialização de transferências a partir de seus pontos de falha de conexão, representando uma economia de recursos de rede e de processamento.

Entrega segmentada é um mecanismo complementar que permite que um nodo baixe recursos de diversos outros nodos em paralelo, reduzindo o período de tempo necessário para sua completa obtenção. Enquanto no ambiente Web a localização de recursos se dá através de um identificador de servidor aliado ao nome do arquivo, no ambiente par-a-par, devido ao caráter transiente de seus nodos, este mecanismo de identificação deve ser elaborado de forma independente do nome do nodo. Surge como alternativa viável, a utilização de características intrínsecas ao recurso como nome, tamanho e algum tipo de assinatura digital referente ao conteúdo do arquivo.

2.4.1 Identificação única de arquivos

Para a identificação de forma única e eficiente de arquivos em uma rede par-a-par utiliza-se um mecanismo de cálculo de assinatura digital baseada no conteúdo do arquivo. Através deste mecanismo pode-se retomar a transferência de arquivos que foram transferidos incompletos devido a falhas ocorridas em uma sessão anterior ou mesmo permitir a transferência paralela de pequenos trechos dos arquivos através de diversos nodos. Como principais algoritmos para o cálculo da assinatura digital,

(27)

destacam-se: MD4; Sha-1. O MD4 atribui um identificador de 128 bits para cada arquivo com base em seu conteúdo, resultando na probabilidade de 1/264 que dois arquivos recebam o mesmo identificador. Já o algoritmo Sha-1 atribui para cada arquivo de tamanho inferior a 264 bits um identificador de 160 bits.

2.5 Sumário

Este trabalho apresenta interesse no estudo de mecanismos de replicação para redes par-a-par, sendo natural considerar seu escopo como restrito à análise de redes de compartilhamento de arquivos, pela própria natureza deste tipo de aplicação. Foram escolhidas três redes populares para serem utilizadas ao longo deste trabalho: FreeNet,

DirectConnect e eDonkey. Conforme os conceitos recém-apresentados, a rede FreeNet

pode ser caracterizada como um sistema par-a-par puro, sem a existência de entidades centralizadoras na rede, onde é utilizada uma técnica de propagação de consultas com base em um hash do conteúdo do arquivo. A rede DirectConnect é um sistema par-a-par híbrido, existindo uma entidade central à rede acionada pelos nodos para o envio ou a obtenção de meta-informações. Nesta rede, a busca é realizada através de propagação de consultas das unidades centralizadoras para os nodos detentores de recursos. A rede

eDonkey é um sistema par-a-par intermediário com a presença de entidades que atuam

como supernodos para o armazenamento de grandes quantidades de dados ou mesmo informações que nodos comuns não possuem. Nesta rede, a busca é realizada através da utilização de índices distribuídos que permitem a localização dos recursos. De maneira similar, todas estas redes apresentam a operação de requisição de intervalos, uma

(28)

técnica que permite que nodos requisitem pequenas porções de conteúdo, conforme já mencionado.

(29)

C

APÍTULO

3

S

ISTEMAS DE

R

EPLICAÇÃO PARA O

A

MBIENTE

P

AR

-

A

-P

AR

3.1 Apresentação

Ao longo desta seção define-se um sistema de replicação para o ambiente par-a-par através da caracterização de suas funcionalidades e principais estratégias para seu o projeto. Um sistema de replicação consiste na utilização de uma entidade intermediária ao provedor e requisitante de um recurso, onde ocorre armazenamento dos recursos transacionados no chamado repositório de replicação, permitindo que estes recursos

(30)

sejam futuramente disponibilizados a novas requisições, com redução do custo de comunicação com seus detentores originais. Tal mecanismo, quando devidamente aplicado, pode ser responsável por uma importante economia de rede, balanceamento de carga entre provedores de conteúdo, redução de latência de rede percebida pelos usuários e aumento da disponibilidade de recursos. Com o recente crescimento da rede mundial em termos de popularidade e tamanho, aumentam também os requisitos de escalabilidade de sua infra-estrutura. Crescimento exponencial desacompanhado de soluções de escalabilidade, eventualmente resultam em uma carga de rede superior à sua capacidade, com latência para respostas inaceitável e possibilidade de colapso dos serviços da rede [3]. A utilização de sistemas de replicação para ambientes par-a-par tem como promessa a melhora da percepção da rede pelos nodos, mascarando latências da rede de longa distância através da redução do intervalo de tempo necessário para a obtenção de respostas de requisições. Com a inerente replicação de conteúdo, ocorre também o aumento da disponibilidade de recursos, já que falhas da rede não mais implicam na sua indisponibilidade [36]. Acredita-se que a principal utilização de um sistema de replicação de conteúdo par-a-par encontra-se nas grandes corporações e provedores de acesso à Internet, que atualmente registram uma fatia importante de seu canal de comunicação com a rede mundial consumido por este tipo de tráfego. Desta forma, este trabalho propõe o projeto de um sistema de replicação para utilização na fronteira da rede corporativa com a rede mundial, tendo como objetivo racionalizar a utilização deste canal para conteúdo par-a-par, conforme ilustra a FIG. 3.

(31)

FIGURA 3 – Posicionamento do sistema de replicação

O funcionamento genérico de um mecanismo de replicação é simples. Um nodo que deseja localizar um recurso solicita esta informação ao sistema de replicação. Assim que o sistema de replicação recebe a requisição do nodo solicitante4, este verifica se

possui o recurso solicitado em seu repositório de replicação. Caso afirmativo, o conteúdo é retornado ao cliente. Caso negativo, o sistema de replicação propaga a requisição para outros nodos da rede na tentativa de localizar e servir o conteúdo [31]. Quando o sistema de replicação consegue obter uma cópia do recurso, este realiza seu armazenamento no repositório de replicação e encaminha uma cópia para o nodo requisitante. Destacam-se como operações típicas de uma rede par-a-par: requisições de consulta (ou localização); requisições de obtenção (ou acesso) de recurso.

As requisições de consulta são o instrumento pelo qual nodos pesquisam a localização (ou existência) de recursos na rede. Estas consultas podem ser baseadas em palavras-chave presentes no nome do recurso, tamanho ou hash do conteúdo binário. Estas consultas são propagadas pela rede e respondidas por nodos que percebem uma situação de equivalência. As requisições de obtenção de recursos são utilizadas por

4 As expressões ‘nodo solicitante’ e ‘nodo originador’ são utilizadas com o mesmo significado ao longo

(32)

nodos que já localizaram um recurso interessante e desejam realizar uma cópia para o seu repositório local. Estas requisições são enviadas diretamente para o nodo detentor do recurso, que realizará sua transferência pela rede.

Para ser efetivo, um sistema de replicação deve lidar com estas operações da rede, existindo diversos níveis de atuação que podem ser exercidos pelo sistema de replicação. Sistemas de replicação transparentes não alteram requisições, respostas ou conteúdo, realizando suas atividades através da interceptação de requisições. Este modelo permite a instauração de diversos controles administrativos (como exemplo, a implementação de políticas de balanceamento de carga). Entretanto, este modelo viola o argumento fim-a-fim [25] não mantendo constantes as terminações de uma conexão [3]. Sistemas de replicação não transparentes podem alterar requisições, respostas ou conteúdos e podem ser utilizados para a realização de conversões ou formatações de conteúdo de forma a servir os nodos com restrições de banda de rede de uma maneira mais apropriada.

Sistemas não replicadores atuam apenas como intermediários na propagação de requisições, respostas e conteúdo formando elos de conexão entre redes par-a-par de mesma natureza e atuando no auxílio de nodos com conexões de baixa qualidade [30].

Sistemas de replicação interligadores atuam na conversão de requisições e respostas entre diversas redes par-a-par, possibilitando que nodos consigam acessar recursos presentes em outras redes, realizando uma tarefa de unificação do sistema par-a-par.

Sistemas de replicação tuneladores atuam tipicamente no envio de conteúdo para nodos cercados por firewalls, usualmente não realizando replicação de conteúdo.

(33)

Todas estas possibilidades de atuação do sistema de replicação são originais do ambiente Web [43]. Mas, pelas diferenças entre os ambientes Web e par-a-par, e pelo fato de um sistema de replicação estar estreitamente relacionado com seu ambiente de atuação, deve-se realizar uma comparação entre as características dos tráfego Web e par-a-par. Tipicamente, o tamanho de um objeto trocado em uma rede par-a-par é superior a três ordens de grandeza do tamanho de um objeto Web. Apenas esta informação já constitui uma diferença relevante entre estes dois tipos de tráfego. Além disso, em contraposição ao serviço Web, nodos de uma rede par-a-par possuem caráter transiente e momento de conexão indeterminado, ou seja, a priori não é possível determinar a quantidade de tempo que um determinado nodo permanecerá ativo. De forma análoga, quando um nodo é percebido inativo, também não se consegue prever o momento em que este nodo retornará ao estado de ativo. Outra diferença fundamental refere-se ao fato dos nodos par-a-par não poderem ser assumidos como dedicados integralmente às atividades executas pela rede. Enquanto os servidores Web são máquinas específicas para servir este tipo de conteúdo, o mesmo já não ocorre com os nodos par-a-par, havendo restrições de recursos de processamento, armazenamento e banda de rede. Além disto, no ambiente par-a-par surge a opção de obtenção de conteúdo de múltiplas fontes, reduzindo-se o tempo de obtenção do recurso através da requisição de pequenos trechos relativos a um mesmo arquivo para diferentes nodos. Entretanto, de forma similar ao conteúdo Web, o conteúdo par-a-par possui objetos muito populares criando o potencial para a redução de tráfego redundante [16].

(34)

3.2 Sumário

Esta seção apresentou as atribuições de um sistema de replicação para o ambiente par-a-par, uma entidade intermediária ao provedor e requisitante de um recurso, através da caracterização de suas funcionalidades. Este tipo de sistema pode ser categorizado pela sua atuação na rede, tendo sido abordado neste trabalho o projeto de um sistema não-transparente e interligador.

(35)

C

APÍTULO

4

A

VALIAÇÃO DE

E

SCALABILIDADE

- E

STUDO

DE

C

ASO DA

R

EDE

F

REE

N

ET

Nesta seção são descritos os experimentos de escalabilidade realizados através de simulação de redes FreeNet, onde pretende-se identificar os ganhos que podem ser obtidos utilizando-se sistemas de replicação em uma rede par-a-par. FreeNet é uma rede descentralizada, projetada com o objetivo de prover o anonimato necessário para salvaguardar o direito de liberdade de expressão, possibilitando que todos os nodos consigam inserir e recuperar recursos, inexistindo a possibilidade de implementação de algum mecanismo de controle de conteúdo. FreeNet define um roteamento inteligente conjugado com replicação e espelhamento automático de dados populares. Desde a

(36)

divulgação da idéia proposta por Ian Clarke [9], o projeto FreeNet Open Source ganhou visibilidade e popularidade crescentes.

4.1 Rede FreeNet

Cada nodo FreeNet possui seu próprio repositório de dados onde documentos são encriptados e armazenados. Após o armazenamento de um documento neste repositório, sua recuperação somente é possível com a utilização da chave de encriptação. Sem esta chave, a localização de qualquer documento é inviabilizada. Cada nodo se comunica com os outros através de um canal encriptado sobre TCP/IP. Quando um nodo recebe uma requisição por algum recurso, primeiramente, ele checa seu repositório de dados. Na eventualidade deste recurso não existir localmente, o nodo propaga a consulta para um vizinho que possua o documento com entrada hash mais próxima do hash referente ao documento solicitado. A cada propagação desta mensagem, um contador de escopo de inundação é decrementado. A requisição falha quando o contador de inundação atinge o valor zero e nenhum documento foi encontrado. Caso a requisição atinja um nodo que não possui o documento procurado e nem um vizinho para propagação da requisição, estando o valor do contador de escopo de inundação maior que zero, uma mensagem de Falha na Requisição é propagada para o nodo anterior, o qual buscará por um novo caminho (ou ramo) para o encaminhamento da requisição, seguindo o formato de um mecanismo de backtracking. Esta situação encontra-se ilustrada na FIG. 4 com a seqüência A B C D E.

(37)

FIGURA 4 – Roteamento em redes FreeNet

No nodo F, caso o documento não tenha sido encontrado no repositório de dados e o contador de escopo de inundação seja maior que zero, uma mensagem de Falha na

Requisição será propagada por todo o caminho de volta ao nodo A até que seja atingido

o cliente que iniciou a requisição. Entretanto, caso o documento ou recurso esteja disponível no nodo F, uma mensagem de resposta de dados será propagada pelo fluxo F E  C  B A (sem passar pelo nodo D). Cada nodo neste caminho irá replicar o

documento, e, para aumentar a entropia do tráfego fortalecendo o anonimato, cada nodo pode, aleatoriamente, atribuir qualquer outro nodo conhecido como originador do

(38)

conteúdo. Pelo mesmo motivo, quando a requisição atingir o nodo F, mesmo que o contador de escopo de inundação seja zero, este nodo pode propagá-la com uma pequena probabilidade tornando bem complicada a análise de tráfego neste tipo de rede. Cada nodo da rede FreeNet implementa um repositório de dados que armazena tanto conteúdo de arquivos, como referências de arquivos conhecidos (links) na forma de uma fila first-in first-out (FIFO) com o recurso mais recentemente acessado sendo promovido para o final da fila (similar a uma lista cronológica). Quando um novo documento é inserido no nodo, este é direcionado para o fim da lista. Caso o repositório de dados esteja com sua capacidade esgotada, as entradas presentes no início da lista são removidas até que espaço suficiente seja liberado.

A inserção de documentos é similar ao processo de localização. Uma inserção somente acontece quando uma mensagem Inserção de Dados é propagada. Na FIG. 4, embora a requisição do documento tenha seguido A  B  C D  E  F, a

mensagem de Inserção de Dados somente passou por F E  C  B A. As mesmas

considerações são aplicáveis para a atribuição aleatória de originador de documento e para a política de replicação ao longo da rede.

4.2 Aurora, o simulador FreeNet

A avaliação da utilização de sistemas de replicação nas redes FreeNet foi realizada através de simulação, tendo sido escolhido o Aurora [2] como simulador pela sua ampla utilização pela comunidade acadêmica. A topologia da rede implementada pelo Aurora segue o padrão de um anel com cada nodo sendo iniciado com conexões para apenas dois de seus vizinhos (os vizinhos imediatos). O crescimento da rede é simulado através

(39)

de uma função linear no tempo. Para cada mensagem, o sistema armazena o número de nodos pelos quais esta mensagem passou até atingir seu destino. Requisições sem sucesso (recurso não encontrado) são automaticamente convertidas para um alto valor de caminho percorrido, inexistindo dados diretos sobre a quantidade de requisições que falharam. Através do Aurora pode-se configurar os seguintes parâmetros relativos à estrutura da rede:

a) tamanho inicial da rede; b) tamanho final da rede;

c) documentos armazenados por nodo (capacidade máxima); d) referências armazenadas por nodo (capacidade máxima); e) intervalo de documentos distintos existentes na rede;

f) parâmetro de contador de escopo de inundação para operações de inserção; g) parâmetro de contador de escopo de inundação para operações de requisição; h) parâmetro de contador de escopo de inundação para operações de anúncio.

Com foco na simulação, o Aurora permite a configuração da quantidade de operações realizadas pela rede durante a simulação. Este processo de simulação é um laço de repetição onde em cada iteração o simulador decide qual operação da rede

FreeNet será executada. São duas as operações possíveis: requisição de conteúdo;

inserção de conteúdo. Aurora fará a escolha de uma delas com uma idêntica (50% para cada opção). Quando uma operação de requisição é selecionada, um nodo requisitante e uma chave são geradas através das distribuições uniforme e Zipf [33], respectivamente (sendo estas distribuições definidas pelo simulador). Um comportamento similar ocorre quando a operação de inserção é selecionada, ou seja, Aurora gera o nodo que fornecerá

(40)

o arquivo, juntamente com a chave que lhe será atribuída. O simulador possui um módulo de rede que implementa as operações de requisição e inserção, além do arranjo de nodos que constitui uma abstração de nodos reais.

Cada nodo é representado por um identificador numérico e uma referência para uma entidade repositório de dados. Esta entidade lida com itens de dados, que são a representação interna do simulador para chaves e referências. O simulador também possui um módulo de estatísticas que consiste de registradores para a contabilização de indicadores como distância média e máxima percorrida pelas mensagens e cálculo do número de caminhos existentes no grafo. Por fim, de forma a garantir a corretude da simulação, Aurora realiza intensivas verificações das propriedades do sistema através de um modelo de programação por contrato.

Para implementar o sistema de replicação no Aurora, o código fonte original do simulador teve que ser alterado com a eleição de alguns nodos para possuírem um comportamento especial. Estes nodos especiais são referenciados como agentes do sistema de replicação e estão sujeitos às seguintes normas:

a) a quantidade de agentes do sistema de replicação será constante em cada simulação, não sendo contemplado o crescimento dinâmico destes agentes; b) cada nodo estará associado a somente um agente do sistema de replicação; c) a capacidade de armazenamento de um agente do sistema de replicação não será

considerada, sendo razoável assumir que um agente do sistema de replicação possui uma capacidade de armazenamento muito superior à de um nodo comum; d) antes do início da simulação, cada agente do sistema de replicação conhecerá todos os seus nodos subordinados, ou seja, os nodos que servem ou solicitam documentos a ele;

(41)

e) cada nodo somente solicita arquivos ao seu agente do sistema de replicação. De forma a atingir este requisito sem violar o protocolo FreeNet, cada nodo deve conhecer apenas o seu agente do sistema de replicação. Cada documento entregue ao nodo sempre irá incluir o agente do sistema de replicação como o originador do conteúdo;

f) cada agente do sistema de replicação somente conhece seus nodos subordinados e os outros agentes existentes na rede. Não haverá disputa por nodos entre os agentes do sistema de replicação.

Como estratégia de simulação, definiu-se que cada nodo ingressa na rede compartilhando apenas um único documento. Cada operação (seja requisição ou

inserção) executada pelo simulador corresponde a um instante de tempo. Não são

executadas operações em paralelo. Quando recursos são recebidos pelos agentes do sistema de replicação, uma cópia do conteúdo é armazenada no repositório de replicação, sendo que agentes do sistema de replicação também podem armazenar referências.

(42)

Para ilustrar as modificações realizadas, a FIG. 5 apresenta a topologia de uma rede par-a-par ausente de agentes do sistema de replicação. Esta rede segue o tradicional estilo em anel, onde cada nodo é conectado com dois de seus vizinhos imediatos. Quando são adicionados agentes do sistema de replicação, a topologia desta rede toma a forma da figura seguinte. Os agentes se conectam através de um anel com apenas dois vizinhos imediatos, enquanto cada nodo possui uma conexão direta com seu agente do sistema de replicação.

FIGURA 6 – Topologia para uma rede FreeNet com sistema de replicação

Para efeitos de simulação, a entidade agente do sistema de replicação foi considerada como uma extensão da entidade nodo, implicando na possibilidade desta originar requisições de documentos nos moldes de um nodo comum. Em verdade, nota-se que a diferença está na capacidade de armazenamento e na visão da rede que cada entidade possui.

(43)

4.3 Simulações

Nesta seção são descritas as simulações realizadas, juntamente com os resultados obtidos. Cada simulação consiste da execução de um determinado número de iterações em uma rede FreeNet, onde cada iteração pode ser uma consulta ou inserção de um conteúdo qualquer na rede. Conforme já mencionado, cada nodo inicia na rede com apenas um recurso armazenado em seu repositório local. O resultado dos experimentos é o valor médio e mediana da quantidade de vezes que cada mensagem foi propagada (ou seja, o tamanho do percurso percorrido pela mensagem). Neste contexto, um valor de quinhentos passos significa que o documento ou recurso procurado não foi encontrado, sendo este um valor padrão atribuído pelo simulador.

A primeira simulação apresenta uma rede ausente de agentes do sistema de replicação contendo um mil, dois mil e três mil nodos. O segundo experimento insere cinqüenta agentes do sistema de replicação nestas redes, identificando a relação entre os comportamentos assumidos pelas redes de um mil, dois mil e três mil nodos, comparando estes resultados com o experimento anterior. O terceiro experimento varia o número de agentes do sistema de replicação de forma a manter uma relação constante entre o número de nodos e agentes do sistema de replicação para redes de um mil, dois mil e três mil nodos, objetivando definir se o que realmente importa é a quantidade de agentes ou a relação entre a quantidade de nodos e agentes do sistema de replicação. Para todas as simulações, o contador de escopo de inundação é fixado com o valor nove, que representa um valor típico utilizado por clientes FreeNet. Mais relevante que o valor absoluto utilizado é a compreensão de seu impacto nos resultados. Este contador age como um seletor da capacidade de localização de recursos na rede, podendo ser

(44)

considerado como um fator de coesão, tendo efeito direto na redução ou aumento das distâncias lógicas da rede. Quanto maior o valor do contador de escopo de inundação para uma mesma distância física, maiores são as chances de localização de recursos, pois, maiores são os nodos consultados.

4.3.1 Rede sem replicação

Esta simulação analisa o comportamento assumido pela rede ausente de um sistema de replicação durante três mil iterações. São apresentados os resultados obtidos para redes com um mil, dois mil e três mil nodos. Como resultados da simulação, apresenta-se a média (e mediana) do tamanho dos caminhos percorridos pelas requisições5.

GRÁFICO 1 – Mediana (a) e média (b) para rede sem replicação

Para uma rede com um mil nodos, a quantidade de requisições concluídas com sucesso é baixa. Entretanto, com o passar do tempo, mesmo que de uma maneira lenta, a quantidade de transações concluídas com sucesso cresce, pois, nodos passam a conhecer e referenciar outros nodos, além de melhorar a distribuição dos documentos ao longo da

(45)

rede. Para redes com dois mil e três mil nodos, o cenário é mais perverso devido à grande quantidade de nodos.

4.3.2 Rede com replicação

Esta simulação ocorre com a rede populada com cinqüenta agentes do sistema de replicação, também para um mil, dois mil e três mil nodos, sendo executada por três mil iterações.

GRÁFICO 2 – Mediana (a) e média (b) para rede com 50 replicadores

Para uma rede contendo apenas mil nodos o caminho percorrido pelas requisições decresce rapidamente para um estado em que grande parte das requisições é completada com sucesso. Quanto maior o tamanho da rede, mais demorada é esta convergência. Com três mil nodos as três mil iterações não são suficientes para tornar a rede operacional. Embora seja possível notar um ganho de desempenho em relação ao cenário ausente de agentes do sistema de replicação, ainda não se têm subsídios sobre o motivo pelo qual o desempenho continua baixo para redes com três mil nodos. Quando inseridos cinqüenta agentes do sistema de replicação numa rede de um mil nodos, coloca-se uma relação de um agente para cada vinte nodos. Já, para uma rede

(46)

constituída de três mil nodos, os mesmos cinqüenta agentes implicam numa relação de um agente do sistema de replicação para cada sessenta nodos. De forma a encerrar esta questão, apresenta-se a simulação a seguir que oferece uma medida da elasticidade da rede através da manutenção da relação nodos por agentes do sistema de replicação, sendo sempre uma relação constante de um agente para cada cinqüenta nodos. Em uma rede de um mil nodos são instanciados vinte agentes. Para uma rede de dois mil nodos são instanciados quarenta agentes. Por fim, para três mil nodos são instanciados sessenta agentes do sistema de replicação.

GRÁFICO 3 – Mediana (a) e média (b) para rede com 50 nodos por replicador

Comparando estes resultados com os obtidos na seção anterior conclui-se que o desempenho da rede não é linear com a quantidade de agentes do sistema de replicação. Redes com uma maior quantidade de nodos apresentam uma dispersão maior de recursos, exigindo um maior número de operações para ingresso em um estágio de plena operação6. Pelo protocolo FreeNet, conforme requisições caminham pela rede nodos passam a se conhecer. No cenário de três mil nodos, estas ligações formadas ainda são

6 O termo ‘plena operação’ denota uma situação em que grande parte das requisições da rede são

completadas com sucesso, ou seja, o momento no qual a rede está efetivamente realizando sua função de prover conteúdo.

(47)

insuficientes para permitir que recursos sejam encontrados com o valor de escopo de inundação oferecido (nove passos).

4.4 Sumário

Nesta seção foram apresentados os experimentos de escalabilidade realizados através do simulador Aurora referente às redes FreeNet com o objetivo de identificar os ganhos potenciais pela utilização de um sistema de replicação. Cada experimento é realizado com e sem a presença dos agentes de replicação, de forma a possibilitar a comparação de resultados. O desempenho da rede é medido através do número de propagações que uma mensagem sofre para ser atendida.

Com a rede integrada com agentes do sistema de replicação, requisições são atendidas de forma mais eficiente, exigindo-se menos propagações entre nodos e melhorando o desempenho do sistema. Quanto maior é a rede, mais esforço é necessário para a localização de um recurso.

As simulações indicam que agentes do sistema de replicação para um sistema par-a-par oferecem ganhos de desempenho através da redução lógica de distâncias da rede. No caso específico das redes FreeNet, conforme o sistema opera e os nodos interagem, atalhos são criados e nodos distantes se tornam alcançáveis. Em um instante de tempo futuro, agentes do sistema de replicação possuirão tantas referências quantas forem comportadas em seu repositório de dados. No próximo capítulo será apresentada a implementação real de um sistema de replicação para os ambiente par-a-par

(48)

C

APÍTULO

5

A

VALIAÇÃO DE

I

NTEROPERABILIDADE

Nesta seção é apresentado o sistema computacional desenvolvido para atuar como replicador de conteúdo par-a-par, bem como os experimentos realizados para comprovação de sua eficácia na redução da utilização de banda de rede.

5.1 Protótipo do sistema de replicação

Neste trabalho avaliam-se os ganhos de otimização de transferências de conteúdo par-a-par que podem ser obtidos através do posicionamento do sistema de replicação na fronteira da rede corporativa com a Internet. Como estratégia de interação entre nodos, o sistema pode:

(49)

a) permitir que todos os nodos sejam visíveis a qualquer outro nodo da rede, uma estratégia interessante que pode ser aplicada a redes que possuem uma entidade concentradora (DirectConnect, por exemplo), tornando-a mais atraente aos usuários pela possibilidade de utilização de eventuais funcionalidades extras relativas à interação de usuários em tempo real (troca de mensagens instantâneas, por exemplo);

b) mascarar a existência de nodos vizinhos, permitindo que cada nodo enxergue apenas o sistema de replicação é um mecanismo interessante quando o sistema de replicação atua em redes par-a-par de acesso completamente descentralizado;

O sistema de replicação deve ser percebido pela rede como um nodo típico, destacando-se apenas por sua capacidade de oferecer conteúdo e alta disponibilidade. Neste sistema, a entidade responsável por replicar arquivos e referências7 é denominada

de repositório de replicação. Através do armazenamento de referências para arquivos, em adição ao conteúdo dos arquivos, o sistema torna-se apto a responder solicitações de localização de arquivos sem a necessidade de propagar uma consulta pela rede. Ao receber uma solicitação de localização de arquivo proveniente da rede, o sistema realiza uma busca no seu repositório de replicação. Caso exista referência ao recurso solicitado, esta é retornada ao nodo solicitante. Caso negativo, o sistema dispara uma busca na rede. Caso o recurso seja encontrado, o sistema armazena a referência do arquivo no repositório de replicação e envia uma mensagem de recurso encontrado ao nodo

7 Referências são links para arquivos presentes na rede, conhecidos pelo sistema de replicação e ainda

(50)

solicitante, declarando-se detentor do recurso e disponibilizando-se a entregá-lo. Caso o nodo opte por receber o conteúdo, o sistema realiza a obtenção efetiva do arquivo, replica-o internamente e encaminha uma cópia para o nodo solicitante. Para as próximas solicitações referentes a este mesmo arquivo, o sistema de replicação estará apto a realizar o seu serviço de forma independente do nodo detentor original. Com esta política de atuação, o sistema de replicação caracteriza-se como não transparente (já que altera parâmetros da requisição) e replicador (pelo fato de armazenar uma cópia do conteúdo localmente). Destacam-se como principais desafios da implementação deste sistema:

a) identificar um comportamento genérico seguido por todas as redes par-a-par de compartilhamento de arquivos;

b) projetar um mecanismo para a correta identificação de recursos nas diversas redes par-a-par, pois, em contraposição ao ambiente Web, a utilização do nome do arquivo como identificador único não é efetiva;

c) reconhecer os diversos tipos de encriptação de conteúdo praticado pelas redes par-a-par e prover mecanismos que permitam sua extensão ou a incorporação de novos mecanismos desenvolvidos a posteriori;

d) prover mecanismos eficientes para a alocação de memória, processamento e armazenamento, devido aos grandes montantes de dados manipulados por uma aplicação deste tipo;

e) permitir a expansão do sistema de replicação para tratar novas redes par-a-par de compartilhamento de arquivos;

f) prover políticas inteligentes para a reposição de arquivos no repositório de replicação, visto que seu compartilhamento é uma tarefa susceptível a eventos

(51)

freqüentes de mudanças na popularidade (como exemplo, o lançamento de um novo filme ou música);

g) lidar com heterogeneidades das diversas redes;

h) não tornar-se um ponto de contenção de desempenho ou falhas: a motivação para o desenvolvimento de um sistema deste tipo é justamente ampliar a disponibilidade de recursos e otimizar suas transferências;

Desta forma, identificam-se como características necessárias em um sistema de replicação de conteúdo par-a-par:

a) operação com redes par-a-par distintas através da realização do processo de compartilhamento de arquivos entre estas, possibilitando que usuários (ou clientes) de uma determinada rede tenham acesso ao conteúdo mantido pela outra (funcionalidade de gateway);

b) suporte à requisição de intervalos, estando apto a receber e entregar arquivos de forma segmentada baseada na requisição de pequenos trechos, visto que diversas redes par-a-par utilizam-se deste artifício;

c) facilidade e praticidade para inclusão de suporte a novas redes par-a-par emergentes, mantendo o sistema de replicação sempre atualizado com as novas tendências dos usuários;

d) disponibilidade independente entre redes, na eventualidade de uma das redes alvo do sistema de replicação tornar-se indisponível, as operações executadas pelos clientes das outras redes devem permanecer operacionais.

(52)

5.1.1 Organização do sistema de replicação

Para que o sistema de replicação de conteúdo par-a-par opere de forma adequada devem ser implementados alguns serviços independentes da rede alvo, tais como:

a) gerenciar filas de requisições;

b) distribuir capacidade de processamento entre as diversas requisições; c) localizar arquivos nas diversas redes par-a-par tratadas;

d) obter arquivos da rede;

e) armazenar arquivos no sistema de replicação;

f) implementar uma política de reposição de páginas em memória e em disco; g) entregar arquivos a nodos solicitantes.

Embora os serviços citados anteriormente tenham caráter generalista e independente de rede, também é possível identificar serviços específicos como:

a) autenticação de usuários;

b) formatação de pacotes para envio e recebimento; c) algoritmos de criptografia de arquivos;

d) distribuição de mensagens instantâneas e comandos de administração de usuários; e) limitação de transferências simultâneas por nodos;

f) outros detalhes referentes a rede par-a-par em questão.

Estes serviços não apresentam relevância sob o aspecto da replicação, porém, são fundamentais para que o sistema consiga interagir com os nodos da rede. A existência

(53)

destas duas classes de serviços motiva o projeto do sistema de replicação em duas camadas complementares, conforme a FIG. 7.

FIGURA 7 – Camadas do sistema de replicação

A primeira camada contém, efetivamente, a inteligência do sistema com operações fundamentais de compartilhamento de arquivos (obtenção e disponibilização de arquivos, armazenamento e organização dos arquivos em disco, política de reposição de arquivos, dentre outros) e a implementação de um nodo genérico de uma rede par-a-par. A segunda camada é responsável pela interoperação do sistema com as diversas redes par-a-par alvo da replicação.

Esta modelagem tem o efeito prático de criar um sistema par-a-par genérico de compartilhamento de arquivos. A camada de inteligência funciona como a padronização de operações realizadas pela rede, seguida pela camada de interoperação que trata da tradução do protocolo padrão definido pelo sistema de replicação para os protocolos específicos de cada rede, sendo esta a razão de sua denominação de camada de tradução. Para o sistema de replicação interessam apenas as operações de ‘enviar busca por arquivo’, ‘receber resposta da busca’, ‘receber trecho de arquivo’ e ‘enviar trecho de arquivo’.

Enquanto na camada de inteligência (ou núcleo) existe apenas uma entidade (o núcleo em si), na camada de interoperação existe uma entidade de tradução para cada rede par-a-par gerenciada (também chamada de plugin). Esta abordagem apresenta

(54)

vantagens como a simplificação do processo de acréscimo de novos protocolos (plugins) e a possibilidade de compartilhamento de recursos entre redes par-a-par distintas (funcionalidade de gateway). A FIG. 8 detalha a organização interna proposta para o sistema de replicação.

FIGURA 8 – Detalhamento do sistema de replicação

5.1.2 Localização de arquivos

Para tornar mais claro o funcionamento do sistema de replicação, apresenta-se um exemplo ilustrativo do caminho percorrido por uma requisição de localização de arquivo: suponha duas redes par-a-par Ra e Rb interligadas pelo sistema de replicação S, composto pelo núcleo N e pelos plugins Pa e Pb. Na rede Ra existem os nodos Na1 e Na2 (nodos comuns clientes da rede Ra), enquanto que na rede Rb existem os nodos Nb1 e Nb2 (nodos comuns clientes da rede Rb), conforme ilustra a FIG. 9.

Suponha que o nodo Na1 tente localizar o arquivo A que encontra-se presente no nodo Nb1. Para realizar esta operação, o nodo Na1 envia uma requisição de busca para o plugin Pa, que realiza a interface do sistema de replicação com a rede Ra. Este plugin propaga a requisição para o núcleo N que verifica se este arquivo possui localização conhecida. Em caso afirmativo, o núcleo N retorna que conhece o arquivo para o plugin

(55)

Pa. O plugin Pa declara-se detentor do arquivo e retorna a resposta para o nodo solicitante Na1.

FIGURA 9 – Interação do sistema de replicação com redes par-a-par

No caso do núcleo não ter visto este arquivo antes, uma solicitação de busca pelo arquivo A é enviada para os plugins Pa e Pb. Cada plugin propaga a consulta para os nodos de sua rede. Quando a consulta atinge o nodo Nb1 (detentor do recurso), uma resposta é retornada ao plugin Pb, que trata de repassá-la ao núcleo. O núcleo realiza seu armazenamento na lista de arquivos conhecidos e retorna a resposta ao plugin Pa, que a converte para o protocolo utilizado na rede Ra, declarando-se detentor original do recurso e propagando a resposta para o nodo solicitante Na1. A FIG. 10 apresenta os passos seguidos em uma requisição de localização de arquivos.

(56)

FIGURA 10 – Fluxo para localização de recursos

Generalizando, um nodo deve encaminhar sua solicitação para o sistema de replicação. Esta solicitação é recebida no sistema pelo chamado plugin, que é a camada de interface que entende os detalhes da rede par-a-par de origem da requisição, decodificando a mensagem e analisando seu conteúdo. O plugin então encaminha esta mensagem em um formato padrão para o núcleo do sistema de replicação. O núcleo tenta identificar se conhece a localização do recurso. Caso afirmativo, uma mensagem é enviada do núcleo para o plugin que solicitou a localização. O plugin, ao receber a resposta do núcleo, declara-se detentor do recurso e propaga a mensagem para o nodo solicitante. Caso o núcleo não conheça o arquivo, será necessário realizar uma busca para checar se este arquivo existe em algum dos nodos conhecidos pelo sistema de replicação. Tal requisição de localização é enviada para todos os plugins de forma paralela. Cada plugin converte a requisição para o formato de sua rede e a propaga para seus nodos. Conforme são obtidos resultados positivos para a requisição, o plugin os propaga para o núcleo. Por sua vez, o núcleo propaga o resultado de volta ao plugin que solicitou o arquivo. Por fim, o plugin propaga a resposta para o nodo solicitante.

Referências

Documentos relacionados

Como essa corrente de defeito envolve obrigatóriamente a terra e o ponto neutro do sistema, realizou-se um estudo detalhado dos diversos tipos de aterramento

Durante os treinos dos atletas do basquete em cadeira de rodas, eles recebem assistência pelos acadêmicos do projeto para facilitar transferências da sua cadeira de rodas para

Para analisar as Componentes de Gestão foram utilizadas questões referentes à forma como o visitante considera as condições da ilha no momento da realização do

Não obstante a reconhecida necessidade desses serviços, tem-se observado graves falhas na gestão dos contratos de fornecimento de mão de obra terceirizada, bem

intitulado “O Plano de Desenvolvimento da Educação: razões, princípios e programas” (BRASIL, 2007d), o PDE tem a intenção de “ser mais do que a tradução..

Dessa forma, diante das questões apontadas no segundo capítulo, com os entraves enfrentados pela Gerência de Pós-compra da UFJF, como a falta de aplicação de

Essas informações são de caráter cadastral (técnico responsável pela equipe, logradouro, etc.), posicionamento da árvore (local na rua, dimensões da gola, distância da

Não podemos deixar de dizer que o sujeito pode não se importar com a distância do estabelecimento, dependendo do motivo pelo qual ingressa na academia, como