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