PDF - Engineering Research

Transcrição

PDF - Engineering Research
Engineering Research
Technical Reports
Volume 5 – Issue 3 – Article 2
ISSN 2179-7625 (online)
SCALABILITY ON DISTRIBUTED VIRTUAL
ENVIRONMENTS USING ANYCAST PROTOCOL BASED
ON ANYAVDNET FRAMEWORK
Ricardo Silva Alves de Oliveira1, Pedro Henrique Reis2, Ronaldo Celso
Messias Correia3, Rogério Eduardo Garcia4, Celso Olivete Junior5
MAY / 2014
Taubaté, São Paulo, Brazil
1
Departamento de Matemática e Computação,
Presidente Prudente, Brasil, [email protected].
2
Departamento de Matemática e Computação,
Presidente Prudente, Brasil, [email protected].
3
Departamento de Matemática e Computação,
Presidente Prudente, Brasil, [email protected].
4
Departamento de Matemática e Computação,
Presidente Prudente, Brasil, [email protected].
5
Departamento de Matemática e Computação,
Presidente Prudente, Brasil, [email protected].
Universidade Estadual Paulista "Júlio de Mesquita Filho", Campus de Presidente Prudente,
Universidade Estadual Paulista "Júlio de Mesquita Filho", Campus de Presidente Prudente,
Universidade Estadual Paulista "Júlio de Mesquita Filho", Campus de Presidente Prudente,
Universidade Estadual Paulista "Júlio de Mesquita Filho", Campus de Presidente Prudente,
Universidade Estadual Paulista "Júlio de Mesquita Filho", Campus de Presidente Prudente,
Engineering Research: Technical Reports
Technical Editor: Giorgio Eugenio Oscare Giacaglia, Universidade de Taubaté, Brazil
Associate Technical Editors
Eduardo Hidenori Enari, Universidade de Taubaté, Brazil
Wendell de Queiróz Lamas, Universidade de São Paulo at Lorena, Brazil
Editorial Board
Antonio Faria Neto, Universidade de Taubaté, Brazil
Asfaw Beyene, San Diego State University, USA
Bilal M. Ayyub, University of Maryland, USA
Bob E. Schutz, University of Texas at Austin, USA
Carlos Alberto de Almeida, Pontifícia Universidade Católica do Rio de Janeiro, Brazil
Ciro Morlino, Università degli Studi di Pisa, Italy
Eliane da Silveira Romagnolli Araujo, Universidade de Taubaté, Brazil
Epaminondas Rosa Junior, Illinois State University, USA
Evandro Luís Nohara, Universidade de Taubaté, Brazil
Fernando Manuel Ferreira Lobo Pereira, Universidade do Porto, Portugal
Gilberto Walter Arenas Miranda, Universidade de Taubaté, Brazil
Hubertus F. von Bremen, California State Polytechnic University Pomona, USA
João Bosco Gonçalves, Universidade de Taubaté, Brazil
Jorge Muniz Júnior, Universidade Estadual Paulista at Guaratinguetá, Brazil
José Luz Silveira, Universidade Estadual Paulista at Guaratinguetá, Brazil
José Walter Parquet Bizarria, Universidade de Taubaté, Brazil
María Isabel Sosa, Universidad Nacional de La Plata, Argentina
Ogbonnaya Inya Okoro, University of Nigeria at Nsukka, Nigeria
Paolo Laranci, Università degli Studi di Perugia, Italy
Rolando A. Zanzi Vigouroux, Kungliga Tekniska högskolan, Sweden
Sanaul Huq Chowdhury, Griffith University, Australia
Tomasz Kapitaniak, Politechnika Lódzka, Poland
Zeki Tüfekçioğlu, Ankara Üniversitesi, Turkey
The “Engineering Research” is a publication with purpose of technical and academic knowledge dissemination.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
26
BIOGRAPHIES
Ricardo Silva Alves de Oliveira is graduated in Computer Science at Faculty of Science and Technology, FCT UNESP
- Presidente Prudente.
Pedro Henrique Reis is currently pursuing Bachelors of Computer Science at Faculty of Science and Technology, FCT
UNESP - Presidente Prudente. Develops a scientific initiation project in the area of scalability in distributed virtual
environments.
Ronaldo Celso Messias Correia is graduated in Computer Science and PhD in. in Electrical and Computer
Engineering from the Technological Institute of Aeronautics, Brazil. Professor at Faculty of Science and
Technology/UNESP, Brazil. Has experience in Computer Science, acting on the following knowledge areas: Virtual
Reality, Distributed Virtual Environments , Database.
Rogério Eduardo Garcia is graduated in Computer Science and PhD in Computer Science and Computational
Mathematics from the USP - University of São Paulo at São Carlos, SP, Brazil. Professor at Faculty of Science and
Technology - Department of Computing and Mathematic , UNESP - Univ Estadual Paulista at Presidente Prudente, SP,
Brazil. Has experience in Computer Science, acting on the following knowledge areas: Software Engineering,
Information Visualization.
Celso Olivete Júnior is graduated in Computer Science and PhD in Electrical Engineering from the USP - University
of São Paulo at São Carlos, SP, Brazil. Professor at Faculty of Science and Technology - Department of Computing
and Mathematic , UNESP - Univ Estadual Paulista at Presidente Prudente, SP, Brazil. Has experience in Computer
Science, acting on the following knowledge areas: Image Processing, Computer Vision, Web.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
27
PRESENTATION
This article describes results of the Undergraduate Thesis presented to São Paulo State
University in Partial Fulfilment of the Requirements for the Degree of Honours Degree in Bachelor
of Information Systems.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
28
TABLE OF CONTENTS
Section
Page
Editorial Board
xxvi
Biographies
xxvii
Presentation
xxviii
Abstract
30
Introduction
30
Theoretical Foundation
33
AanyAVDNet Framework
36
Results and Discussions
41
Conclusions
44
References
45
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
29
ESCALABILIDADE EM AMBIENTES VIRTUAIS DISTRIBUÍDOS USANDO O
FRAMEWORK ANYAVDNET BASEADO NO PROTOCOLO ANYCAST
O desenvolvimento de Ambientes Virtuais Distribuídos (Distributed Virtual Environments, DVE)
trata de restrições impostas pelo sistema de comunicação. Em um trabalho anterior, a abordagem
implementada no AVDNet auxilia na redução da quantidade de pacotes na rede de comunicação e
na redução do processo computacional para renderizar ambiente virtual através da criação de
regiões que separam espacialmente o ambiente. Entretanto, ela tem restrições em lidar com a gestão
de largura de banda e na escolha de servidores adequados, considerando a disponibilidade de
servidores. Neste artigo é apresentado o AnyAVDNet: uma estrutura que implementa a distribuição
de carga dinâmica entre os servidores de regiões ambiente virtual. Adicionalmente, são
apresentadas métricas implementadas para apoiar a escolha do servidor considerando os recursos
disponíveis (processador e memória) e recursos de comunicação (largura de banda e rastreio de
rota) para cada servidor conectado. Também, são apresentados resultados utilizando um ambiente
simulado.
Palavras-chave: ambientes virtuais distribuídos; anycast; distribuição de carga; escalabilidade.
SCALABILITY ON DISTRIBUTED VIRTUAL ENVIRONMENTS USING ANYCAST
PROTOCOL BASED ON ANYAVDNET FRAMEWORK
The development of large scale Distributed Virtual Environments (DVE) deals with constraints
imposed by communication system. On a former work, the approach implemented in AVDNet
helps on reducing the amount of packages on communication network and on reducing
computational process to render virtual environment by creating regions that separates spatially the
environment. However, it has restrictions on dealing with bandwidth management and on choosing
suitable servers, considering the servers availability. This paper presents the AnyAVDNet: a
framework that implements dynamic load distribution among servers of virtual environment
regions. In addition, it is shown metrics implemented to support choosing of server considering
both resources available (processor and memory) and communication resources (bandwidth and
trace route) for each server connected. Results are also presented using a simulated environment.
Keywords: anycast; distributed virtual environments; load distribution; scalability.
1. INTRODUÇÃO
Dentro do contexto da realidade virtual surgem os Ambientes Virtuais Distribuídos (AVDs),
que podem ser definidos de forma simplificada como sistemas que permitem com que múltiplos
usuários interajam uns com os outros, podendo compartilhar informações e manipular objetos em
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
30
tempo real. Cada usuário tem sua própria visão deste mundo e toda alteração de estado do ambiente
é distribuída entre os demais usuários (SINGHAL; ZYDA, 1999; BALIKHINA et al, 2002).
A variedade de funcionalidades que os AVDs devem apresentar torna esse tipo de sistema
mais complexo à medida que se pretende aproximá-lo dos ambientes reais. Esses ambientes devem
suportar intensa interação distribuída, pois com a participação de diversos usuários o ambiente deve
garantir confiabilidade e desempenho satisfatórios para que participantes possam interagir entre si
em tempo real, e inclusive reagir a informações do ambiente também em tempo real (SINGHAL;
ZYDA, 1999).
A pesquisa e projeto de AVDs é uma área promissora e extremamente estimulante, pelos
desafios tecnológicos e pelo potencial de aplicabilidade. Existem ainda muitos problemas a serem
resolvidos, principalmente quando o foco é a escalabilidade. A maioria das arquiteturas para
aplicações de realidade virtual distribuída encontradas nas literaturas (SINGHAL; ZYDA, 1999;
BALIKHINA et al, 2002; HEGER et al, 2012; CHEN et al, 2011) além de suportar um número
limitado de usuários, necessitam de conexões rápidas entre os participantes e máquinas com
considerável capacidade de processamento. Estas restrições são completamente razoáveis para
sistemas planejados para interações em grupos pequenos dentro de uma organização, mas são
impróprios para sistemas executados na Internet, na qual centenas ou até milhares de usuários
participam simultaneamente do ambiente.
Os AVDs são particularmente difíceis e complexos de serem projetados e implementados de
forma eficiente. Tal complexidade se deve, principalmente, ao fato de que um AVD resulta da
junção de três áreas de aplicações da computação: aplicação distribuída, computação gráfica e
interação humano-máquina (SINGHAL; ZYDA, 1999).
O ambiente virtual como aplicação distribuída, deve tratar da heterogeneidade das estações
participantes, do gerenciamento eficiente dos recursos de rede, da perda dos pacotes, das falhas da
rede, da escalabilidade e da concorrência. Já como aplicação gráfica, a computação gráfica é
utilizada para gerar representações visuais do ambiente para os participantes. Na maioria dos casos,
estas representações são construídas utilizando gráficos tridimensionais, embora alguns sistemas
suportem também representações bidimensionais do ambiente. Sendo uma aplicação interativa, o
ambiente virtual deve processar, em tempo real, os dados de entrada dos usuários, que pode
consistir na mudança de algum parâmetro ou estado de um objeto, previamente selecionado
(SINGHAL; ZYDA, 1999; OLIVEIRA et al, 2004).
A questão da heterogeneidade das estações não se resolve apenas com a implementação de
um sistema portável, estando também ligada à qualidade da apresentação gráfica. A escalabilidade,
por sua vez, não é só determinada pelo número de mensagens na rede, mas também pela degradação
da apresentação gráfica com o número crescente de usuários. A interatividade, a qualidade da
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
31
animação e o gerenciamento das mensagens da rede estão certamente vinculados pelo tempo de
CPU alocado a cada uma das tarefas. Em resumo o projetista de um AVD deve enfocar o sistema
como um todo, estando consciente de que, na tentativa de otimizar um determinado elemento,
poderá prejudicar o desempenho de outro (PURBRICK; GREENHALGH, 2007).
Conforme o número de usuários cresce, aumenta a largura de banda necessária para a troca
de informações em tempo real entre as estações para atualizar o ambiente e mantê-lo em um estado
consistente para todos os usuários conectados.
Quando um AVD não é projetado, a rede pode facilmente se tornar um fator limitante e
corromper a sincronização entre usuários (ERASLAN et al, 2007). Reduzindo a carga de rede podese diminuir a latências das transmissões causadas pelos congestionamentos, e consequentemente, as
atualizações de mudança de estado do ambiente são enviadas mais rapidamente.
A estratégia de dividir o ambiente em regiões está relacionada à comunicação espacial
(interação dentro de um espaço comum) entre os objetos que compartilham a mesma área. Esse tipo
de distribuição auxilia tanto na diminuição da utilização da rede de comunicação, quanto na carga
computacional utilizada para o processamento do AVD, pelo fato de reduzir o número de
participantes envolvidos nas atualizações de estado. Entretanto, problemas relacionados ao
balanceamento de carga entre os servidores de região são constantes e precisam ser solucionados
(JARAMILLO et al, 2003).
Neste trabalho é apresentado o AnyAVDNet, um framework para balanceamento de carga
entre os servidores de região da arquitetura AVDNet (CORREIA, 2005; CORREIA;
PELLEGRINO, 2005). São propostas estratégias utilizando o protocolo Anycast em nível de
aplicação e a proposição de métricas para análise de desempenho dos servidores e sistema de
comunicação, reduzindo a latência da troca de pacotes e aumentado a escalabilidade do ambiente.
Para apresentar os detalhes desta pesquisa, este artigo encontra-se organizado como segue.
Na Seção 2 são apresentadas as abordagens de balanceamento de carga e escalabilidade em AVDs.
Detalhes de implementação do framework AnyAVDNet são apresentados na Seção 3. Na Seção 4 é
apresentada uma avaliação do framework e as simulações realizadas. E, finalmente, na Seção 5, as
conclusões.
2. FUNDAMENTAÇÃO TEÓRICA
Uma abordagem adotada por vários AVDs para melhorar a escalabilidade é a divisão
espacial do ambiente (JARAMILLO et al, 2003; SINGHAL; ZYDA, 1999). Particionar um
ambiente virtual em regiões e distribuir as responsabilidades da gestão de cada região por múltiplos
servidores, o que pode reduzir significativamente as cargas de trabalho de cada servidor, mantendo
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
32
a escalabilidade e concorrência em ambientes virtuais em larga escala (SINGHAL; ZYDA, 1999;
ERASLAN et al, 2007; ISHIBASHI et al, 2003).
No entanto, uma distribuição não uniforme dos usuários sobre o ambiente virtual pode
incorrer em desequilíbrio da carga de trabalho entre os servidores, ou seja, alguns servidores ficam
responsáveis por regiões mais populosas do que outros e sofrem com a sobrecarga de trabalho.
Consequentemente, os usuários gerenciados por servidores sobrecarregados estão
vulneráveis a desempenho baixo devido a altas latências de atualizações de estado em servidores.
Para evitar tal degradação de desempenho, os sistemas de distribuição dinâmicos de carga
foram introduzidos: servidores sobrecarregados transferem suas cargas de trabalho excessivas para
outros menos carregados para manter o desempenho aceitável de seus usuários.
Há muitas abordagens de distribuição de carga no campo de computação distribuída (COULORIS
et al, 2001, KUROSE; ROSS, 2010). Em AVDs os atuais sistemasde distribuição dinâmicade carga
entre múltiplos servidorespodem ser classificados emtrês tipos (LEE et al, 2007):
• Distribuição local: o servidor sobrecarregado distribui parte do seu trabalho entre
servidores que gerenciam áreas vizinhas a sua. A vantagem é que o servidor necessita
conhecer somente os dados relativos aos seus vizinhos e a migração de usuários é
pequena.
• Distribuição global: o servidor distribui o trabalho extra entre todos os servidores do
ambiente. Isso permite que mesmo em casos de extrema sobrecarga, o servidor consiga
distribuí-la, o que não é possível na distribuição local. Um coordenador central realiza o
particionamento do ambiente virtual. Contudo, reparticionar sobrecarrega e requer uma
grande migração de usuários dependendo do tamanho do ambiente virtual e do número de
servidores no sistema.
• Distribuição Adaptativa: o servidor sobrecarregado equilibra sua carga de trabalho com
um conjunto de servidores, além de seus vizinhos, de acordo com a carga de trabalho dos
servidores.
A arquitetura AVDNet adota a abordagem adaptativa, e propõe o protocolo de comunicação
multicast em nível de aplicação como uma técnica alternativa para ou gerenciamento da
comunicação em grupos, conforme ilustrada na Figura 1. Cada região do ambiente virtual é
controlada por uma estação, definida como servidor de região, adotando o conceito de múltiplos
servidores. Os clientes do ambiente se comunicam com os diferentes servidores enquanto se
movimenta por este. Estes servidores recebem atualizações de clientes e enviam as atualizações os
interessados nesta informação, ou seja, os que estão inseridos na mesma região, mantendo o
controle dos clientes por ele atendido. Quando o participante é o primeiro a acessar uma
determinada região, ele é identificado como servidor desta região, e todos os dados referentes aos
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
33
objetos tridimensionais da região são recuperados na base de dados do servidor e são instanciados
produzindo referências e tornando-os
tornando
acessíveis, passando a ter a capacidade de processar
requisições de outros clientes.
Figura 1 – Abordagem adaptativa da Arquitetura AVDNet
Quando um novo participante entra no ambiente e sua região inicial
inicial se encontra ativa, ele
deve identificar o servidor e então solicitar os objetos lá contidos e suas referências.
Devido aos múltiplos servidores da AVDNet alguns problemass devem ser considerados, tais
como: a escolha de estações com baixa capacidade de processamento para serem servidores primário
ou secundário de uma região;; a sobrecarrega dos servidores; e largura de banda do sistema de
comunicação onde estão localizados os servidores. É importante notar que esta não é uma limitação
do protocolo de comunicação adotado na AVDNet,
AVDNet e sim de infraestrutura.
2.1. Protocolo de Comunicação Anycast
O protocolo Anycast (KUROSE
KUROSE; ROSS, 2010; PARTRIDGE et al,, 1993) é um serviço que
permite um nó enviar uma mensagem para um membro próximo de um grupo, onde proximidade é
definida utilizando-se uma métrica. Solicitações de serviços dirigidas
dirigid a este grupo Anycast são
retransmitidas para o servidor mais adequado a atender a solicitação de um determinado cliente.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
201
34
Existem duas abordagens de utilização do Anycast. A primeira éo Anycast na camada de rede,
também conhecido como IP Anycast, onde a escolha do servidor é feita por meio de protocolos de
roteamento que fazem uso de métricas disponíveis na camada de rede, como número de saltos e
tempo de resposta do servidor. O principal obstáculo dessa abordagem é o fato de o protocolo
utilizado na escolha do servidor, não tenha sido incluído nas especificações do Anycast. Problemas
de escalabilidade nas tabelas de roteamento e no esquema de seleção ainda são questões em aberto
no IPAnycast (KUROSE; ROSS, 2010).
O IP Anycast não funciona adequadamente com grupos altamente dinâmico e sua
implantação tem sido prejudicada por preocupações com segurança, escalabilidade, faturamento e
com o número de grupos.
A segunda abordagem é o Anycast em nível de aplicação. Nessa abordagem o problema da
escolha de um servidor é resolvido na camada de aplicação, sem o envolvimento dos roteadores. A
escolha do servidor tem como base alguns indicadores de desempenho, tais como a capacidade do
servidor, tempo de resposta, a carga do servidor, etc. (ISHIBASHI et al, 2003).
Por ser mais flexível e adequado ao problema de balanceamento dinâmico de carga em
questão, o Anycast em nível de aplicação foi adotado como umas das estratégias do framework.
3. O FRAMEWORK ANYAVDNET
O framework AnyAVDNet é apresentado como um complemento da camada de comunicação
da AVDNet e propõe a criação de mais de uma estação para controlar cada região do ambiente, além
de fornecer mecanismos para facilitara tarefa dos clientes de encontrar, dentre estas estações
controladoras, a com melhor condições para estabelecer uma conexão, assim melhorando a
distribuição da carga de processamento entre as estações servidoras e diminuindo a latência das
trocas de mensagens.
A métrica proposta pelo AnyAVDNet é definida com base no cálculo da média ponderada
entre os dados recolhidas no servidor primário, sendo o tempo de CPU livre, a quantidade de
memória RAM disponível, e o número de saltos IP entre o servidor primário.
A arquitetura do AnyAVDNet é dividida em dois módulos: o módulo Cliente e o módulo
Servidor. O diagrama de classes é ilustrado na Figura 2. O módulo Servidor disponibiliza
funcionalidades para a criação de um servidor Anycast e adiciona aos servidores de região a
capacidade de coletar dados para o cálculo de sua métrica Anycast e enviá-las ao cliente. Um
servidor Anycast tem a responsabilidade de manter o endereço de todos os servidores primários de
cada região, para que um cliente, ao se conectar possa escolher um servidor de região que esteja em
melhor condição de atendê-lo.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
35
Figura 2 – Diagrama de classes do framework AnyAVDNet
O módulo Cliente apresenta funcionalidades que permitem ao cliente do AVD conectar-se ao
servidor Anycast e também solicitar aos servidores primários de região suas respectivas métricas
Anycast.
A sequência de funcionamento da estratégia proposta no AnyAVDNet é ilustrada na Figura
3. O servidor Anycast, ao receber uma conexão de um cliente, verifica se existem servidores
primários para a região na qual o cliente deseja se conectar. Se não existir servidor, esse cliente passa
a ser o servidor primário desta região. Caso contrário, o servidor Anycast envia ao cliente uma lista
com os endereços de todos os servidores para aquela região.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
36
Figura 3 – Sequência de funcionamento do AnyAVDNet
Ao receber a lista, o cliente envia para cada servidor da lista uma solicitação requisitando o
valor de sua métrica Anycast. Cada servidor realiza o cálculo e envia para o cliente.
De posse das métricas Anycast dos servidores, o cliente tem condições de escolher o servidor
com melhores condições para realizar a conexão.
3.1. Aspectos de Implementação do AnyAVDNet
O AnyAVDNet foi implementado utilizando a linguagem Java, juntamente com a API Sigar
(HYPERIC, 2011) e a biblioteca Jpcap (FUJII, 2007). A Sigar foi utilizada para coleta das seguintes
dados do sistema:
•
Memória do sistema, recursos de CPU, carga média, o tempo de atividade.
•
Detecção do sistema de arquivos.
•
Detecção de interfaces de rede, informações de configuração, etc.
Essas informações estão disponíveis em vários sistemas operacionais, mascada um tem suas
características próprias para fornecê-las.
O Jpcap é uma biblioteca Java para captura e envio de pacotes de rede, permitindo
manipulação de dados em baixo nível. Pode capturar pacotes IPv4, IPv6, ARP/RARP, TCP, UDP e
ICMPv4.
A especificação e implementação do AnyAVDNetfoi realizada utilizando o conceito de
framework, que é um conjunto de classes cooperantes que constroem um projeto reutilizável para
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
37
uma específica classe de software. Como benefícios pode-se citar: modularidade, a extensibilidade e
a inversão de controle, fornecendo alto índice de reusabilidade para aplicações de domínio específico
(FAYAD et al, 1999; LEWANDOWSKI, 1998).
Figura 4 – Classe ServidorAnycast
A classe ServidorAnycast, apresentada na Figura 4, implementa da interface Runnable e
sobrescreve o método public void run(void) para aguardar conexões dos cliente. Quando uma
conexão é recebida por meio de um socket uma instância da classe Anycast é criada para tratar essa
conexão e o Servidor Anycast volta a aguardar outras conexões.
A classe Anycast, ilustrada na Figura 5, também implementa a interfaceRunnable e possui o
método processaConexao, responsável em tratar a conexão do cliente verificando a existência de
servidores primários de região. Se não houver servidores primários, a classe Anycast envia uma
mensagem para o cliente se tornar o servidor primário desta região, caso contrário é enviado para o
cliente uma lista com endereços desses servidores.
Figura 5 – Classe Anycast
Para tornar a manipulação da lista de servidores primários mais flexível, a classe Anycast
possui um atributo servidoresPrimarios do tipo IListaServidoresPrimario (Figura 6), que é uma
interface que declara métodos comuns para a manipulação da lista de servidores primários, deixando
a cargo da aplicação usuária do AnyAVDNet implementar esses métodos da forma que melhor atenda
sua necessidade, sem impacto na funcionalidade do framework.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
38
Figura 6 – Interface IListaServidoresPrimario
A classe ServidorPrimario, é instanciada no cliente quando este se torna um servidor de
região. Ela tem a finalidade de coletar as informações necessárias para o cálculo da métrica e esperar
por conexões de outros clientes para enviar essas métricas aos solicitantes (Figura 7).
Figura 7 – Classe ServidorPrimario
A classe Cliente realiza a conexão com um servidor Anycast por meio do método
obtemMelhorServidor(), solicitando os endereços dos servidores de região disponíveis. Ao receber
esses endereços, são solicitadas aos servidores primários de região suas respectivas métricas e
baseado nessas métricas escolhe o servidor para se conectar. Umas das principais características da
classe Cliente está vinculada ao atributo metricaMinima,que armazena o valor mínimo que a métrica
do servidor primário deve possuir para que o cliente possa se conectar, caso a métrica Anycast do
servidor primário seja inferir ao valor de metricaMinima,o cliente passa a ser também um servidor
primário.
Outra característica importante da classe Cliente é o método obtemMelhorServidor.
Conforme ilustrado na Figura 8, existe uma sobrecarga desse método, tanto na versão sem
parâmetros como na versão que recebe uma lista de endereços de servidores primários, ambas
retornam um objeto do tipo InetAddressque contém o endereço, IPv4 ou IPv6, do servidor escolhido.
Caso não exista servidores primários, ou nenhuma das métricas dos servidores primários estejam
acima do valor de metricaMinima, os métodos retornam valor nulo.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
39
Figura 8 – Classe Cliente
A classe Métricas é a principal classe do framework,responsável pela coleta dos dados dos
servidores primários de região, tais como tempo de CPU disponível, quantidade de memória RAM
livre e o número de saltos IP entre o cliente e o servidor primário (Figura 9). O método
calculaMetrica retorna o valor da métrica do servidor primário, realizando uma média ponderada
com os valores de saltos IP, quantidade de memória RAM disponível e tempo de CPU livre.
Figura 9 – Classe Metricas
A classe ContaSaltos, Figura 10, implementa as funcionalidades para obter a quantidade de
saltos do IP do servidor de região até o cliente. Utiliza as classes disponíveis na biblioteca Jpcap, que
possuem métodos para manipulação, visualização e análise dos dados dos pacotes por meio do Java.
A Figura 11 apresenta a classe DadosServidorPrimario, responsável em manter a
métricaAnycast do servidor e o seu endereço.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
40
Figura 10 – Classe ContaSaltos
Para maior flexibilidade do framework foi definida a classe Propriedades, que tem a
finalidade de acessar um arquivo externo de configuração e carregar seu conteúdo ao framework
AnyAVDNet. Arquivos de configurações são arquivos texto com a estrutura <chave>=<valor> e são
usados para ajustar atributos na aplicação Java e carregados uma única vez na aplicação.
Figura 11 – Classe DadosServidorPrimario
A classe Propriedades acessa o arquivo propriedades.properties na pasta local do
framework. Os seguintes atributos podem ser configurados:
•
enderecoServidorAnycast: endereço IP do servidor Anycast.
•
portaServidorAnycast: porta na qual o servidor Anycastaguarda por conexões.
•
portaServidorPrimario:porta na qual o servidor primário de região aguarda por conexões.
•
portaCliente: porta na qual o cliente espera por conexões.
•
pesoMemoria: indica o peso da quantidade de memória no cálculo da métrica Anycast.
•
pesoCPU: indica o peso do tempo de CPU livre no cálculo da métrica Anycast.
•
pesoSalto: indica o peso do número de saltos no cálculo da métrica Anycast.
•
metricaMinima: valor mínimo da métrica Anycast de um servidor primário para aceitar
conexões de clientes, deve ser em notação (cientifica) Exponencial(Ex.: 5.96e9).
4. RESULTADOS E DISCUSSÕES
Para avaliar as funcionalidades das classes do framework AnyAVDNet foram desenvolvidas
três aplicações com a finalidade de simular as ações dos clientes, do servidor Anycast e dos
servidores primários. A aplicação Servidor Anycast (Figura 12), instancia um objeto da classe
ServidorAnycast e aguarda as conexões de clientes. O gerenciamento e atualização dos servidores
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
41
primários conectados no ServidorAnycast é responsabilidade da classe ListaServidoresPrimarios que
implementa a interface IListaServidoresPrimarios.
Figura 12 – Aplicação Servidor Anycast
A aplicação ClienteAnyAVDNet estende a classe Cliente (Figura 8) e adiciona atributos para
exibição dos dados sobre o cliente. Após o processo de busca por um servidor primário, caso não
encontre um adequado o cliente passa a ser o servidor primário (Figura 13).
Figura 13 – Aplicação Cliente
A aplicação Servidor Primário exibe o IP local do servidor primário e também os dados da
memória RAM disponível e porcentagem de CPU livre. O tempo para atualização dos recursos
disponíveis pode ser configurado, Figura 14.
Figura 14 - Aplicação Servidor Primário
4.1. Simulações Realizadas
Para a realização das simulações de balanceamento dinâmico de carga foram utilizados três
computadores, Figura 15, sendo dois com processador Intel Core 2 Duo de 2 GHz e 2 Gb de
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
42
memória RAM, denominados respectivamente P1 e P2, e o terceiro com processador Intel Celeron
de 2,8 GHz e 2,5 Gb de memória RAM,
RAM denominado P3.
Figura 15
1 – Configuração do ambiente de teste
O arquivo propriedades.properties foi definido com a seguinte configuração para os três
computadores:
#Arquivos de propriedades do framework
#criado por ...
enderecoServidorAnycast=192.168.0.192
portaServidorAnycast=39876
portaServidorPrimario=39877
portaCliente=39878
pesoMemoria=0.5
pesoCPU=0.4
pesoSalto=0.1
metricaMinima=1.0
Foram atribuídos pesos diferenciados para pesoMemória, pesoCPU e pesoSalto. A
metricaMinima tem seu valor 1.0 apenas como parâmetro inicial, pois será imediatamente
substituído após a solicitação do cálculo da métrica que sempre será maior que este valor.
O objetivo da simulação
ão é gerar ambientes com configurações próximas as que podem
ocorrer em ambientes virtuais reais,
reais e aplicar a técnica de gerenciamento dinâmico do framework,
em especial a escolha dos servidores com base no cálculo da métrica. Para efetuar o cálculo da
métrica (M) é realizada uma média ponderada com os valores de saltos IP (SIP), quantidade de
memória RAM disponível (MEM) e tempo de CPU livre (TCPU), onde PC é o valor de pesoCPU,
PM o valor de pesoMemoria e PS é o valor de pesoSalto cujos valores foram definidos no arquivo de
propriedades.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
201
43
M = PC * TCPU + PM *MEM + PS *(30 - SIP)
O valor 30 representa a quantidade máxima de saltos IP (SIP) que pode ser calculado pelo
AnyAVDNet, quanto menor o valor de SIP, maior o resultado da expressão PS *(30 - SIP). Como os
testes foram realizados em uma rede local e a quantidade de saltos de um computador para o outro
sempre tem um valor fixo, o valor de pesoSalto foi definido como 0.1 ou 10% de relevância no
cálculo da métrica.O tempo CPU e a quantidade de memória livre receberam 40% e 50% de
relevância respectivamente.
A primeira simulação resultou na seguinte situação:
•
O computador P1 foi escolhido como ServidorAnycast, com IP 192.168.0.192.
•
O computador P2 foi o primeiro a se conectar no ServidorAnycast e retornou um servidor
primário com IP 192.168.0.134.
•
O computador P3 se conectou ao servidor Anycast e obteve o IP do servidor primário
(P2) e solicitou sua métrica, e obteve como resultado o valor de 6.817239045e8. Como
no arquivo de configuração o valor da metricaMinima estava definido como 1.0 o
computador P3 se tornou cliente de P2, como esperado.
Na segunda simulação, o computador P1 permaneceu como servidorAnycast. Entretanto, para
a ocorrência da configuração de dois servidores primários, o valor do atributo metricaMinima do
arquivo de configuração no computador P3 foi ajustado para 1.0e9 (1.000.000.000). E a seguinte
situação foi configurada:
•
O computador P1 foi definido como servidor Anycast, IP 192.168.0.192.
•
O computador P2 foi escolhido para realizar a primeira conexão com o servidor Anycast,
sendo então o servidor primário.
•
O computador P3 foi o segundo a se conectar ao servidorAnycast e obteve o endereço de
P2 (Servidor Primário).
•
P3 se conecta a P2 e solicita sua métrica Anycast obtendo o resultado menor que o valor
da metricaMinima. Assim P3 também passa a ser um servidor primário.
•
Em P1 também é instanciado a aplicação cliente, que se conecta ao servidor Anycast e
obtêm os endereços dos servidores primários P2 e P3.
•
P1 solicita as métricas Anycast de P2 e P3, sendo a métrica Anycast de P3 maior que a de
P2, assim P1passa a ser cliente de P3.
As simulações foram realizadas para apresentar situações de configuração de ambientes de
gerenciamento dinâmico de carga onde qual a escolha de um servidor primário dentre um conjunto
de servidores é necessária. A definição de métricas reduz a carga dos servidores diminuindo a
latência nas transmissões causadas pelos congestionamentos e consequentemente, as atualizações de
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
44
mudança de estado do ambiente são enviadas mais rapidamente proporcionando aumento de
escalabilidade no sistema.
5. CONCLUSÕES
O framework AnyAVDNet é apresentado como uma solução para o balanceamento dinâmico
de carga entre servidores de região em ambientes virtuais distribuídos utilizando o protocolo Anycast
em nível de aplicação. Propõe a adoção de métricas para escolha dos servidores, baseado em
recursos disponíveis no computador (processador e memória) e recursos do sistema de comunicação
(largura de banda e tempo de resposta por meio de saltos).
O AnyAVDNet é um framework portável e flexível, que pode ser facilmente utilizado para
construção de novas aplicações de realidade virtual distribuída ou ter suas funcionalidades
distribuição de carga incorporadas em sistemas já existentes. Estas são características requeridas
pela maioria dos frameworks, porém alcançada por poucas.
Apesar das simulações realizadas apresentarem resultados satisfatórios com relação a escolha
do servidor, se faz necessário um estudo mais elaborado sobre a relevância de cada componente no
cálculo da média ponderada da métrica.
REFERÊNCIAS
BALIKHINA, T.; BALL, F.; DUCE, D. Distributed Virtual Environments - An Active Future? The
20 th Eurographics UK Conference, De Montfort University, Leicester, UK ,Junho 2002,
2002.
CHEN, J.; GROTTKE, S.; SABLATNIG, J.; SEILER, R.; WOLISZ, A. Scalability of a Distributed
Virtual Environment Based on a Structure Peer-To-Peer Architecture. Communications
Systems and Networks (COMSNETS), 2011 Third International Conference, 2011.
COULORIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed Systems - Concepts and Design.
3. ed. USA. Addison Wesley, 2001.
CORREIA, R. C. M. AVDNet-Arquitetura para Ambientes Virtuais Distribuídos Escaláveis
Baseada na Infra-Estrutura Atual da Internet. Tese de Doutorado, Instituto Tecnológico de
Aeronáutica, São José dos Campos, SP, 2005.
CORREIA, R. C. M.; PELLEGRINO, S. M. Scalable Distributed Virtual Environments Using
Multicast Application Level. Proceedings of the 9th International Conference on Computer
Supported Cooperative Work in Design, Coventry, UK, v. 1. pp. 140-145, 2005.
ERASLAN, M. et al. A Scalable Network Architeture For Distributed Virtual Environments With
Dynamic Qos Over Ipv6. Ontario Canadá, 2007.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
45
FAYAD, M. E.; JOHNSON, R E.; SCHIMIDT, D C. Building application Frameworks: Object–
oriented Foundations of Framework Design, John Wiley & Sons, New York, 1999.
FUJII, K. A Java library for capturing and sending network packets. 2007. Disponível em:
<http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/>
HEGER, F.; SCHIELE, G.; SÜSELBECK, R.; ITZEL, L.; BECKER, C. Scalability in Peer-to-Peerbased MMVEs: The Continuous Events Approach. The 9th Annual IEEE Consumer
Communications and Networking Conference – Peer-to-Peer Networking and Content
Distribution, 2012.
HYPERIC. SIGAR, System Information Gatherer and Reported. 2011. Disponível em:
<http://support.hyperic.com/display/SIGAR/Home>
ISHIBASHI, Y. et al. Group Synchronization in Networked Virtual Environments. IEEE
International Conference on Communications, 2003, v. 2, p. 885-890, 2003
JARAMILLO, J. E.; ESCOBAR, L.; TREFFTZ, H. Area of Interest Management by Grid-Based
Discrete Aurea Approximations for Distributed Virtual Environments. Symposium on
Virtual Reality – SVR 2003. Ribeirão Preto, SP.
KUROSE, J. F.; ROSS K. W. Redes de computadores e a Internet”. Pearson Education do Brasil,
2010.
LEE, D. et al. ATLAS A Scalable Network Framework for DistributedVirtual Environments.
Korea, 2007.
LEWANDOWSKI, S. M. Frameworks for Component-Based Client/Server Computing. ACM
Computing Surveys, 1998.
OLIVEIRA O, J.C.; YU, S.J.; GEORGANAS, N.D. Synchronized World Embedding in Virtual
Environments. IEEE Computer Graphics and Applications, v. 24, p. 73-83, 2004.
PARTRIDGE, C.; MENDEZ, T.; MILLIKEN, W. RFC 1546 - Host Anycasting Service. 1993.
PURBRICK, J.; GREENHALGH, C. An Extensible Event-based Infrastructure for Networked
Virtual Worlds. IEEE Virtual Reality Conference 2002, Orlando, Florida, Março, 2002.
SINGHAL, S.; ZYDA, M. Networked Virtual Environments: Design and Implementation. 1. ed.
Addison Wesley Pub Co Inc, 1999. 331 p.
Eng Res, v. 5, n. 3, p. 25-46, May / 2014.
46

Documentos relacionados