• Nenhum resultado encontrado

ORB PARA DISPOSITIVOS MÓVEIS

N/A
N/A
Protected

Academic year: 2021

Share "ORB PARA DISPOSITIVOS MÓVEIS"

Copied!
15
0
0

Texto

(1)

D

EPARTAMENTO DE

I

NFORMÁTICA

P

ONTIFÍCIA

U

NIVERSIDADE

C

ATÓLICA DO

R

IO DE

J

ANEIRO

Monografia do Curso de

Introdução à Computação Móvel

ORB

PARA

D

ISPOSITIVOS

M

ÓVEIS

Renato Figueiró Maia

Professor: Markus Endler

(2)

INTRODUÇÃO

1.1. AMBIENTES MÓVEIS

O atual ambiente de Internet fornece um nível de qualidade de serviço (QoS) razoável para muitas aplicações. Páginas Web e servidores de e-mail estão amplamente disponíveis e acessíveis a uma boa velocidade. Idealmente, o meio mais rápido de fornecer boas aplicações para dispositivos móveis é portar aplicações baseadas em PCs para dispositivos móveis. Entretanto, o ambiente de comunicação sem fio é diferente, caracterizado por uma largura de banda menor que a de redes convencionais e por desconexões esporádicas. Portanto, para criar um ambiente razoável, novas aplicações precisam desenvolver e otimizar a plataforma sem fio. Contudo essa otimização acarreta numa maior complexidade e consequentemente maiores custos e prazos, especialmente quando se considera questões como confiabilidade, escalabilidade, segurança, manutenabilidade, etc.

Uma rede sem fio é uma tecnologia que permite com que dois ou mais computadores se comuniquem sem a necessidade de alguma espécie de cabeamento entre eles. Uma rede sem fio pode apresentar duas topologias principais. A primeira consiste simplesmente de diversos dispositivos equipados com uma placa de interface com um meio sem fio, que se comunicam diretamente ou por intermédio dos demais dispositivos. Estas redes são chamadas de redes ad

hoc e são mais adequadas para redes com poucos computadores e com uma área geográfica reduzida. Outra forma é utilizar um equipamento chamado ponto de acesso (estação base) através do qual os dispositivos móveis podem se conectar. Um ponto de acesso inclui uma interface para uma rede cabeada através da qual este pode se comunicar com outros pontos de acesso. Desta forma é possível difundir o sinal da rede sem fio por áreas maiores, assim como permitir que os dispositivos móveis possam se comunicar com redes cabeadas, como a Internet. Rede de Acesso Sem Fio Rede Cabeada Rede de Acesso Sem Fio Ponto de Acesso Ponto de Acesso

Figura 1 – Modelo de referência de redes sem fio.

Utilizaremos neste trabalho, como modelo de referência de redes sem fio, a estrutura de redes composta de pontos de acesso, conforme é ilustrado na Figura 1. Este modelo foi escolhido por ser mais simplificado.

(3)

O desenvolvimento da tecnologia de redes cabeadas criou a possibilidade de se construir aplicações através da composição de conjuntos de componentes distribuídos que executam separadamente através de uma rede. Tais sistemas distribuídos oferecem muitas vantagens em potencial sobre aplicações monolíticas, como escalabilidade, flexibilidade e reusabilidade. Entretanto, é necessário um esquema adequado de comunicação de componentes distribuídos.

CORBA [1] (Common Object Request Broker Architecture) é uma especificação proposta pela OMG (Object Management Group) de uma infraestrutura para comunicação de objetos distribuídos num ambiente heterogêneo, de forma transparente à aplicação. Esta infraestrutura permite que objetos clientes possam solicitar serviços de outros objetos (chamados objetos servidores) por meio de uma interface bem definida. A Figura 2 mostra os principais componentes da arquitetura CORBA e suas interconexões.

ORB Core

Cliente Implementação do objeto

DII Stub Interface Esquel. DSI OA ORB

Interface identica para todas implementações de ORB Podem haver multiplos OAs

Há um stub e um esqueleto para cada tido de objeto Interface específica da implementação do ORB

Figura 2 - Estrutura de interfaces de um ORB.

O componente principal da arquitetura CORBA é o ORB (Object Request Broker), que encapsula toda a infraestrutura necessária para identificar e localizar objetos, manipular conexões e a entrega de dados. Através do ORB os objetos clientes podem fazer chamadas de métodos de objetos servidores remotos. O ORB é responsável por empacotar os parâmetros da chamada, envia-los ao objeto servidor e devolver o valor de retorno e os parâmetros de saída ao objeto cliente.

A partir da definição da interface de um objeto servidor, descrita em IDL (Interface Definition

Language) são gerados dois componentes que conectam os objetos distribuídos ao ORB, são eles o esqueleto do servidor e o stub do cliente. O esqueleto do servidor é a interface através da qual as implementações dos objetos recebem as chamadas remotas, e o stub do cliente é a interface através da qual os objetos fazem chamadas a objetos servidores remotos. Para cada tipo de objeto são gerados um stub e um esqueleto diferentes.

Também é possível que os objetos façam chamadas através da interface DII (Dynamic

Invocation Interface), assim como os objetos podem receber chamadas através de um esqueleto dinâmico. Estas interfaces permitem manipular as chamadas remotas de forma dinâmica, como será descrito posteriormente.

1.2.1. Componentes da arquitetura CORBA

A comunicação entre a implementação do objeto e o ORB é feita pelo OA (Object Adapter). Ele manipula serviços como a geração e interpretação de referências de objetos, chamadas de métodos, segurança das interações, ativação e desativação de objetos e implementações,

(4)

mapeamento de referências às implementações de objetos correspondentes e o registro de implementações.

Quando uma chamada é feita, o objeto é ativado pelo OA. Para fazer isso o OA precisa ter acesso a informações sobre a localização do objeto e o ambiente operacional. Esta informação fica armazenada no Repositório de Implementação, que é um componente padrão da arquitetura CORBA.

As interfaces dos objetos podem ser especificadas de duas formas: em IDL ou elas podem ser adicionadas ao Repositório de Interfaces, outro componente da arquitetura. A interface DII permite que clien tes especifiquem chamadas a objetos cuja definição e interface são desconhecidas em tempo de compilação. Para utilizar a DII, o cliente tem que construir uma chamada no formato exigido pelo padrão CORBA, incluindo a referência de objeto, a operação e a lista de parâmetros. Estas especificações de objetos e os serviços que eles fornecem são obtidas do Repositório de Interfaces.

O lado do servidor análogo ao DII é o DSI (Dynamic Skeleton Interface), com o uso desta interface, a operação não é mais disparada através do esqueleto gerado a partir da especificação da interface em IDL, que é específico para as operações desta interface. Ao invés disso, a operação é disparada através de uma interface que fornece acesso ao nome da operação e seus parâmetros (como na DII especificada acima, a informação pode ser obtida a partir do Repositório de Interface). Portanto, DSI é uma maneira de entregar chamadas de métodos provenientes do ORB a uma implementação de objeto que não se conhece em tempo de compilação.

1.2.2. Interoperabilidade

Há muitas implementações de ORB disponíveis atualmente no mercado. Esta diversidade é problemática, pois permite aos desenvolvedores gerar produtos especificamente para as necessidades do seu ambiente operacional, e cria a necessidade de ORBs diferentes interoperarem. Além do mais, há sistemas distribuídos que não são compatíveis com a arquitetura CORBA, portanto há a crescente necessidade de fornecer mecanismos de interoperabilidade entres estes sistemas e CORBA. Para tanto, a OMG definiu a arquitetura de interoperabilidade de CORBA.

Diferenças de implementação não são as únicas barreiras que separam objetos, outras razões são fortalecimento de políticas de segurança ou ambientes de teste protegidos para produtos em desenvolvimento. Para fornecer um ambiente completamente interoperável, todas estas diferenças tem que ser levadas em consideração. Por isso que CORBA 2.0 introduz o conceito de domínio, que a grosso modo define um conjunto de objetos que, por alguma razão, seja pela implementação ou por questões administrativas, são separados dos demais objetos. Portanto, objetos de domínios diferentes precisam de mecanismos de interligação para que possam interagir.

As abordagens para interoperabilidade podem ser basicamente divididas em mecanismos de interligações imediatas e mediadas. Com ligações mediadas, as mensagens de um domínio são transformados da forma específica daquele domínio, em outra forma mutuamente conhecida entre domínios diferentes. Esta forma comum pode ser tanto uma padronizada (especificada pela OMG, por exemplo o IIOP), ou uma forma conhecia entre as duas partes. Com interligações imediatas, as mensagens são transformadas diretamente de uma forma interna de um domínio para a forma da outra. A segunda solução é potencialmente mais rápida, mas é menos geral, e portanto é necessário poder utilizar ambas.

Para permitir a interoperabilidade entre ORBs é necessário definir um modelo de referência de objetos que possa identificar objetos em diversos ORBs diferentes. Isto é feito através do IOR (Inter-ORB Object Reference), que fornece uma estrutura de dados flexível para armazenar

(5)

as informações necessárias de uma referência de objetos, como a máquina onde o objeto se encontra, o OA responsável e o identificador do objeto no OA.

Além de um modelo de referência de objetos é necessário especificar algum tipo de sintaxe de transmissão de mensagens padrão. Isto é feito pelo protocolo GIOP (General Inter-ORB

Protocol) definido pela OMG. Ele foi especificamente definido para suprir as necessidades de interação entre os ORBs e foi projetado para trabalhar sobre qualquer protocolo de transporte que se adeque a um conjunto mínimo de características. Obviamente, versões do GIOP implementadas utilizando diferentes protocolos de transporte não serão necessariamente diretamente compatíveis, entretanto sua interação será feita de maneira muito mais eficiente. Além de definir uma sintaxe de transmissão de mensagens geral, a OMG também especifica um mapeamento obrigatório do protocolo GIOP utilizando o protocolo de transporte TCP/IP, chamado de IIOP (Internet Inter-ORB Protocol). A intenção é que o IIOP funcione como uma língua comum e necessariamente compreensível por todas implementações de ORBs. A especificação também permite um conjunto de protocolos específicos para um determinado ambiente, chamados de ESIOPs (Environment Specific Inter-ORB Protocol), que servem como mecanismo de interoperabilidade quando existem muitas implementações utilizando um determinado protocolo de transporte.

2. O WIRELESS CORBA

Com o surgimento de tecnologias de redes sem fio, como o GSM, telefonia via satélite, e LANs sem fio, se tornou evidente a importância de que CORBA possa também ser estendido para acomodar redes que contém enlaces sem fio. Primeiramente, o crescimento da classe de dispositivos móveis que utilizam comunicação sem fio faz com que CORBA ou algo similar se mostre necessário, pois dispositivos móveis geralmente tem menos recursos locais do que é possível em dispositivos estacionários, conseqüentemente a habilidade de utilizar serviços de objetos remotos se torna ainda mais importante em dispositivos móveis. Além disso, como os dispositivos móveis se tornam cada vez mais poderosos e sofisticados, espera-se obter acesso a serviços que estão disponíveis através de dispositivos estacionários, através de dispositivos móveis.

Entretanto, a especificação atual de CORBA não se adequa bem ao acesso sem fio. Pelo fado de até agora CORBA ter sido desenvolvido especificamente para redes cabeadas, certas considerações têm sido feitas e que não são válidas para redes sem fio, o que cria dificuldades para aplicações que utilizam acesso sem fio.

2.1. PROBLEMAS DO PADRÃO CORBA PARA AMBIENTES MÓVEIS.

CORBA fornece um framework para construção de sistemas distribuídos através da definição de padrões em três níveis. No nível arquitetural, CORBA define a noção de objeto distribuído e o Object Request Broker, que interage entre eles, e define como os objetos distribuídos se encontram e interagem. No nível de aplicação, CORBA define um conjunto de APIs padrão. No nível de protocolo, CORBA define um pequeno conjunto de protocolos inter-ORB, que permitem com que objetos que utilizem ORBs implementados independentemente se comuniquem.

A arquitetura geral de CORBA mostra-se suficientemente abstrata e flexível para acomodar as diferenças das redes sem fio sem alteração. Entretanto, o nível de protocolo e de aplicação exigem alterações ou extensões.

Apesar de CORBA permitir utilizar protocolos proprietários para comunicação entre objetos de um mesmo tipo de ORB, assim como a definição protocolos especializados para comunicação entre ORBs diferentes que operem em circunstâncias especiais (ESIOPs), o padrão CORBA exige a implementação do protocolo IIOP, que trabalha sobre TCP/IP, como

(6)

forma de interoperabilidade básica com objetos de outros ORBs. Entretanto, o uso do IIOP é problemático com o acesso sem fio.

Diversos estudos [2, 3, 4] tem mostrado que o TCP/IP apresenta uma performance pobre sob as circunstâncias de redes sem fio, como latências maiores, banda passante reduzida e variável, perdas e erros de transmissão, etc. O próprio IIOP foi construído assumindo-se que conexões entre objetos são mantidas continuamente. Idealmente, seria necessário que fosse possível encapsular a comunicação dentro de uma abstração que possa manipular desconexões e reconexões automaticamente. Contudo o IIOP foi desenvolvido de forma que nenhuma informação de estado é preservada entre um objeto cliente e um objeto servidor através de conexões TCP/IP. Se o servidor fica ciente da perda de uma conexão, é esperado que ele cancele quaisquer operações pendentes para aquela conexão cliente.

A interface de invocação dinâmica de CORBA (DII) fornece uma forma de chamada de métodos que permite que o objeto cliente possa fazer requisições com uma chamada não-bloqueante e então recuperar o resultado posteriormente. Entretanto, o resultado de uma chamada assíncrona é armazenado no lado do cliente. A especificação atual do IIOP não define nenhum mecanismo que permita armazenar respostas no servidor até que os clientes estejam hábeis a recebê-las.

Inclusive os identificadores de requisição do IIOP, que são utilizado pelo ORB para identificar as respostas de suas respectivas requisições, só são únicos dentro do contexto e tempo de vida de uma única conexão. Consequentemente, mesmo que um cliente desconectado possa se reconectar antes que o servidor cancele a sua requisição pendente, o IIOP não fornece nenhum mecanismo que permita com que respostas às requisições baseadas em conexões antigas sejam feitas através de uma nova conexão.

Aplicações móveis estão sujeitas às várias alterações no ambiente de rede que inexistem em redes fixas, como a variação de latência, largura de banda e freqüência de desconexão. Portanto, é necessário que se possa criar mecanismos que possam manipular tais circunstâncias de forma flexível e eficiente. Para tanto se faz necessário que o padrão CORBA forneça mecanismos que permitam que aplicações possam determinar as condições de transmissão de rede e talvez modificá-las. Assim como poder definir dinamicamente estratégias para lidar com tais condições de rede que seriam impostas pelo ORB para as aplicações que não fossem “ network aware”. Como exemplos de tais métodos e políticas temos:

• Reconexão transparente após desconexões;

• Estratégias para tentativa de conexão (número de tentativas e intervalo entre elas);

• Reserva de largura de banda. 2.2. O PADRÃO WIRELESSCORBA

Mobilidade em CORBA foi primeiramente discutida pelo OMG Telecom Domain Task Force, quando o projeto EC/ACTS DOLMEN apresentou um protótipo CORBA para redes móveis. Em junho de 2001, a OMG lançou sua especificação sobre acesso sem fio e mobilidade de terminal em CORBA [5].

O principal objetivo do projeto era manter a transparência da mobilidade dos ORBs que não sejam móveis. Isto foi resolvido através da definição de um domínio para a rede cabeada e outro para a rede sem fio, de forma a permitir que a ponte entre estes domínios forneça a transparência de mobilidade. Para tanto foram definidos os seguntes domínios: Visited

Domain, onde ficam uma ou mais Access Bridges, por onde os ORBs dos terminais móveis se conectam a rede; Terminal Domain, que consiste no dispositivo móvel que contém um ORB e uma Terminal Bridge por onde os objetos do terminal móvel se comunicam com os demais; e adicionalmente o Home Domain, onde fica localizado o Home Location Agent (HLA) do terminal, que mantém a localização do terminal móvel. A comunicação entre uma Access

(7)

Bridge e uma Terminal Bridge é feita através de um túnel de mensagens GIOP que trafega sobre um meio sem fio. Os 3 domínios do padrão Wireless CORBA são ilustrados na Figura 3.

Terminal Bridge Túnel GIOP Home Location Agent Access Bridge Access Bridge Access Bridge Visited Domain Home Domain Termiminal Domain Access Bridge

Figura 3 - Arquitetura do padrão Wireless CORBA.

2.2.1. Tratamento de mensagens

Outro componente que se faz necessário na arquitetura Wireless CORBA é o Mobile IOR, que é uma referência de objeto para objetos móveis. O Mobile IOR possui a mesma estrutura do IOR definido pelo padrão CORBA. Tal referência é composta pela mesma estrutura exigida pelo protocolo IIOP (i.e. profile IIOP) e uma estrutura adicional chamada de profile

MobileTerminal, que contém informações que são necessárias para fornecer a transparência da gerência de localização (e.g. o HLA do terminal). Podem haver vários profiles IIOP dentro de um Mobile IOR, mas apenas um único profile MobileTerminal. A estrutura do Mobile IOR é ilustrada na Figura 4.

...

ProfileBody ProfileBody

IIOP MobileTerminal

HomeLocationInfo Figura 4 - Estrutura do Mobile IOR.

O profile IIOP do Mobile IOR pode especificar o HLA ou a Access Bridge onde o terminal foi encontrado pela última vez. Desta forma, quando uma requisição é feita a um determinado

Mobile IOR, ela é recebida pelo HLA ou por uma Access Bridge. Caso a requisição seja recebida pelo HLA, este pode redirecionar a requisição para a Access Bridge onde o terminal se encontra atualmente. Caso a requisição seja recebida por uma Access Bridge, podem ocorrer duas situações: se o terminal móvel ainda se encontra conectado a Access Bridge, esta repassa a requisição através de um túnel para o Terminal Bridge do terminal móvel; caso contrário a

Access Bridge redireciona a requisição para a Access Bridge onde o terminal se encontra, ou para o HLA, que por sua vez redirecionará a requisição para a Access Bridge onde o terminal se encontra.

Quando o HLA desconhece a localização do objeto móvel este retorna com uma exceção de sistema de OBJECT_NOT_EXIST (caso de uma requisição) ou um status de UNKNOWN_OBJECT (caso de um pedido de localização do objeto). Este é o mesmo procedimento realizado por uma Access Bridge que recebe uma mensagem endereçada a um objeto móvel que tenha migrado e que não possua um HLA, denominado de objeto homeless.

2.2.2. Tunelamento de mensagens GIOP

Toda comunicação entre uma Access Bridge e uma Terminal Bridge é feita através de um túnel de mensagens GIOP. Há somente um único túnel GIOP entre uma dada Access Bridge e uma

(8)

Terminal Bridge, o qual é compartilhado por todas as conexões GIOP destinadas e originadas dos terminais associados à Access Bridge.

O protocolo GTP (GIOP Tunneling Protocol) é um protocolo abstrato e independente da camada de transporte. Ele define mensagens para o estabelecimento, encerramento e re-estabelecimento (recuperação) de um túnel de mensagens GIOP, assim como mensagens para transmissão e reencaminhamento de mensagens GIOP. O GIOP também define mensagens para o estabelecimento e encerramento de conexões GIOP através de uma Access Bridge. A Figura 5 ilustra a arquitetura do protocolo.

GIOP

chamadas de métodos CORBA mensagens GIOP msg. GTP mensagens IIOP fluxo TCP Objeto Objeto GIOP GTP GTP IIOP IIOP

cam. de adptação cam. de adptação

transporte transporte TCP TCP

Figura 5 - Arquitetura do protocolo de tunelamento GIOP.

Como o GTP é um protocolo abstrato, é necessário definir um mapeamento concreto sobre um protocolo de transporte. O GTP assume que o protocolo de transporte forneça as mesmas garantias de confiabilidade e ordenamento de mensagens assumidas pelo GIOP. Por causa disto, o mapeamento do protocolo GTP sobre protocolos que não forneçam este nível de serviço exige a definição de uma camada de adaptação que se encarregue de satisfazer estas condições. A especificação define três mapeamentos concretos do protocolo GTP: sobre TCP, sobre UDP, sobre WAP.

2.2.3. Handoff

O suporte ao Handoff é um recurso opcional da especificação do Wireless CORBA. O suporte ao Handoff pode ser determinado de acordo com a versão do protocolo GTP (versão 2.0 dá suporte ao Handoff e a versão 1.0 não). Na especificação são citados dois casos de Handoff: o caso normal, quando um terminal migra de uma Access Bridge para outra; e quando é feito pelo terminal móvel com o intuito de recuperar a conexão, depois de uma perda. Até o final desta seção chamaremos o primeiro tipo de Handoff e o segundo de recuperação de acesso. O Handoff pode ser iniciado pela rede, que ocorre quando uma aplicação faz uma chamada ao método start_handoff da Access Bridge ao qual o terminal está conectado, informando o identificador do terminal, a nova Access Bridge a qual o terminal deve se conectar e um objeto de callback utilizado para informar o resultado do processo de Handoff. Se o terminal for capaz de manter simultaneamente a conexão entre duas Access Bridges, então ele deve primeiramente estabelecer um túnel com a nova Access Bridge, para então encerrar o túnel com a anterior. Caso o processo de Handoff não seja completado com sucesso, a Access Bridge reporta o estado de HANDOFF_FAILURE para o objeto de callback correspondente.

O Handoff também pode ser iniciado pelo terminal, já o processo de recuperação de acesso somente pode ser iniciado pelo terminal. Sempre que um terminal muda de Access Bridge, durante o processo de Handoff ou recuperação de acesso, a sua localização é atualizada no HLA.

Como o GIOP exige que todas as respostas sejam enviadas através da mesma conexão GIOP da requisição correspondente, quando uma Access Bridge recebe uma mensagem GIOP destinada a um terminal que já tenha migrado, esta repassa a mensagem à nova Access Bridge

(9)

que contém o terminal. A informação sobre a localização do terminal pode ser obtida através do HLA.

A Access Bridge dá suporte à notificação de eventos de Handoff, de forma que outras Access

Bridges podem se registrar para receber eventos de notificação no momento da saída ou chegada de um terminal em outra Access Bridge.

3. MIDDLEWARES CORBA PARA AMBIENTES MÓVEIS. 3.1. MIWCO

Em [6] é descrita a plataforma de middleware MIwCO (MIwCO Is Wireless CORBA), que implementa a especificação Wireless CORBA da OMG como uma extensão do ORB MICO (MICO Is CORBA), que é uma implementação de CORBA com código aberto na linguagem C++. O MIwCO foi desenvolvido na Universidade de Helsinki, em conjunto com o projeto de pesquisa sobre a especificação do padrão Wireless CORBA da OMG.

A arquitetura do sistema proposto é ilustrada na Figura 6. Nesta figura, os círculos representam aplicações CORBA arbitrárias, os retângulos com bordas arredondadas são componentes do MIwCO, retângulos podem ser vistos como dispositivos individuais, as linhas tracejadas representam possíveis conexões GIOP, e as linhas pontilhadas representam possíveis conexões GTP. Terminal Bridge Home Location Agent Access

Bridge AccessBridge

Nadmin Nadmin

Tadmin

Aplic.

Aplic.

Figura 6 - Arquitetura MIwCO.

Os componentes Nadmin e Tadmin, não fazem parte da especificação Wireless CORBA, mas foram implementados para realizar testes e funções administrativas, basicamente relacionadas a administração de conexões GTP. Estes dois componentes, basicamente exportam as operações disponíveis na interface dos componentes Access Bridge.

3.1.1. Implementação

O HLA pode praticamente ser implementado como uma aplicação CORBA comum, que implicaria numa implementação independente do ORB escolhido. Entretanto, é necessário

(10)

que o HLA possua mecanismos para obter as informações contidas no Mobile IOR, que não são disponíveis para uma aplicação CORBA. Por esta razão, a implementação do HLA no MIwCO é específica.

A Access Bridge foi implementada na forma especificada pelo padrão Wireless CORBA, ou seja, como um objeto CORBA que realiza a comunicação entre um ORB de um terminal e a rede cabeada através de um túnel de mensagens GIOP com uma Terminal Bridge. Portanto, a Access

Bridge funciona como uma aplicação CORBA independente que deve ser executada em cada ponto de acesso da rede sem fio.

A mesma abordagem foi utilizada na implementação da Terminal Bridge, que executa como um processo separado. Isto é porque, como o MICO é implementado como uma biblioteca, portanto para canalizar todo o tráfego do terminal móvel através de uma única conexão GIOP, a Terminal Bridge necessita capturar todo este tráfego. Entretanto esta implementação exige que a plataforma do terminal seja multi-tarefa.

As alterações no núcleo do MICO foram projetadas de forma a manter o suporte a mobilidade separadas da implementação original, fazendo com que as aplicações somente verifiquem se o ORB se encontra em um dispositivo móvel ocasionalmente, e que não precisem realizar nenhum trabalho extra caso estejam num dispositivo convencional.

3.2. E*ORB

O e*ORB [7] é um ORB comercial desenvolvido pela empresa Vertel, projetado para sistemas embutidos e de tempo-real. O e*ORB foi desenvolvido especificamente para o ambiente de telecomunicações e muitas de suas características são adequadas às exigências de redução de recursos e confiabilidade de ambientes móveis. Apesar do e*ORB não seguir a especificação

Wireless CORBA da OMG, este se mostra como uma alternativa viável ao desenvolvimento de aplicações CORBA para ambientes móveis.

3.2.1. Incorporação dinâmica de protocolos

Para satisfazer as restrições de tempo de resposta dos ambientes de tempo real, se faz necessária a exigência de um certo grau de QoS. Para tanto o e*ORB fornece mecanismos que permitem incorporar ao ORB protocolos de transporte eficientes e mais adequados às necessidades da aplicação. Em tal mecanismo o protocolo é divido em duas partes conceituais, o protocolo de mensagens (e.g. GIOP) e o protocolo de transporte (e.g. TCP/IP) Desta forma, o protocolo IIOP é desmembrado em seus componentes básicos: um formato de mensagem GIOP sobre uma conexão TCP/IP. Um outro exemplo de protocolo que poderia ser incorporado ao ORB seria o protocolo composto por um formato de mensagem GIOP sobre uma conexão ATM, o que resultaria em um protocolo com um grau de QoS que poderia ser utilizado em aplicações de tempo real.

O e*ORB fornece uma implementação open-source dos componentes do protocolo de mensagem e do protocolo de transporte que compõe o IIOP (i.e GIOP e TCP/IP), para ser utilizada como exemplo para o desenvolvimento de outros protocolos incorporáveis ao ORB.

3.2.2. Arquitetura micro-kernel

O núcleo do ORB do e*ORB é reduzido, o que o torna adequado para plataformas de hardware com recursos limitados. Entretanto outros módulos opcionais podem ser carregados dinamicamente e adicionados ao ORB a medida que surge a necessidade de uma determinada funcionalidade. Desta forma, é possível utilizar desde um ORB reduzido (como especificado pelo padrão minumum-CORBA da OMG) até um ORB totalmente compatível com o padrão CORBA.

(11)

Entretanto esta funcionalidade de incorporação de módulos adicionais somente é disponível em plataformas e sistemas que admitem módulos dinâmicos, como Windows, Solaris e Linux. Nos demais, é necessário compor o ORB estaticamente no momento da compilação da aplicação.

3.2.3. Alocação de memória

Os recursos das plataformas de software convencionais são normalmente melhor administrados pelo sistema operacional. Entretanto, em plataformas móveis, que dispõe de recursos escassos, muitas vezes é mais adequado tratar o uso dos recursos de uma forma mais sistemática.

Para tanto, o e*ORB permite a definição de alocadores de memória, que permitem alterar todo o modelo de alocação e liberação de memória utilizando tanto pela aplicação quando pelo próprio ORB. O e*ORB disponibiliza o alocador de memória padrão do C++ para as versões de debug e um alocador de alta performance para versões de distribuição da aplicação.

3.3. UIC

O UIC (Universally Interoperable Core) [8] é uma infraestrutura de middleware desenvolvida para cenários de computação ubíqua, que se propõe a tratar os problemas encontrados nas plataformas de middleware existentes. O UIC define um esqueleto baseado em componentes que encapsulam funcionalidades padrões comuns a maioria dos ORBs, dentre as quais podemos citar as seguintes:

• Protocolos de rede e transporte;

• Estabelecimento de conexões;

• Estratégias de empacotamento e desempacotamento;

• Chamadas remotas de métodos;

• Geração e reconhecimento de referências de objeto;

• Registro de objetos;

• Interface de clientes e servidores;

• Gerência de memória;

• Estratégias de concorrência.

Este esqueleto pode ser adaptado, estaticamente ou dinamicamente, para as necessidades dos mais diversos dispositivos e ambientes portáteis, permitindo assim manter uma estrutura simples e que contenha apenas os recursos necessários para uma determinada aplicação. O projeto modular do esqueleto, permite a separação de conceitos e encapsula os mecanismos necessários para cada tarefa específica em diferentes componentes, minimizando dependências indesejáveis e facilitando a montagem de esqueletos adaptáveis.

Apesar do UIC definir um esqueleto padrão projetado para middlewares orientados a objetos, como CORBA, Java RMI e DCOM, nada impede que o desenvolvedor da aplicação altere a estrutura de forma a atender outros requisitos, como por exemplo plataformas de chamada remota a procedimento não orientadas a objetos.

Uma determinada configuração do esqueleto é denominada personalidade. Personalidades podem ser classificadas como cliente (envia pedidos e recebe respostas), servidora (recebe pedidos e envia respostas), ou ambas. O UIC pode ser classificado como de personalidade única ou de multipersonalidade. Entretanto, um UIC de multipersonalidade não é o mesmo que uma coleção de UIC de personalidade única. No primeiro caso a aplicação utiliza o único UIC e a mesma interface de chamada de métodos independentemente do objeto remoto, já no segundo caso, a aplicação é responsável por selecionar a instância do UIC adequada.

(12)

As personalidades do UIC podem ser configuradas estaticamente, montando todos os componentes no momento da compilação, o que permite uma redução no tamanho o UIC; ou dinamicamente, carregando as bibliotecas necessárias em tempo de execução; ou uma forma híbrida, onde se define um conjunto de componentes estáticos e outros dinâmicos.

Os principais benefícios do UIC são: a infraestrutura homogênea que esconde as diferenças dos dispositivos portáteis; a sua estrutura baseada em componentes, que permite a especificação de um esqueleto específico para uma plataforma, tanto através da composição de um esqueleto adaptado, quando pela especialização de determinados componentes para as necessidades da aplicação; e a capacidade de se adaptar dinamicamente às mais diversas plataformas, através da reconfiguração da personalidade do UIC.

3.4. CORBA SOBRE WAP

Em [9] é apresentada uma proposta de implementar a arquitetura CORBA sobre o protocolo WAP (Wireless Application Protocol), tratando o problema da largura de banda reduzida, desconexões e migração de terminais móveis, mantendo-se compatíveis com as demais implementações de CORBA.

3.4.1. O protocolo WAP

O objetivo do protocolo WAP é fornecer um conjunto de protocolos que permite comunicação sem fio eficiente. É definida uma pilha de protocolos, como ilustrado na Figura 7. Todos protocolos são especificamente projetados para operar eficientemente sobre enlaces sem fio e cada um deles fornece serviços diferentes, como descrito a seguir:

WDP (Wireless Datagram Protocol): Fornece serviço orientado a datagrama, de forma consistente e independente do meio, similarmente ao UDP da pilha TCP/IP.

WTLP (Wireless Transport Layer Security): Similar a camada SSL (Secure Socket Layer) do TCP/IP, mas otimizada para as limitações de dispositivos móveis.

WTP (Wireless Transaction Protocol): Fornece serviço de transações para eficientemente manipular requisições confiáveis ou não, assim como transações assíncronas.

WSP (Wireless Session Protocol): Utilizada para serviços orientados a conexão, fornecendo um estado compartilhado entre o cliente e o servidor.

WAE (Wireless Application Environment): Define um modelo para integração de diferentes aplicações WWW e de telefonia móvel.

Camada da aplicação (WEA) Camada de sessão (WSP) Camada de transação (WTP) Camada de segurança (WTLS)

Camada de transporte (WDP) Camada do meio físico Figura 7 - Arquitetura WAP. 3.4.2. Arquitetura WAP-CORBA

(13)

[10] propõe um mapeamento do protocolo GIOP sobre WAP, denominado de Wireless

Inter-ORB Protocol (WIOP), como ilustrado na Figura 8. Tal protocolo utiliza o WDP como serviço de transporte, o WTP para transmitir requisições e transações de forma confiável e o WSP para tratar desconexões repentinas. Adicionalmente, por questões de segurança, o WTLS pode ser facilmente integrado a arquitetura. Para manter a transparência do meio sem fio dos demais ORBs é necessário o uso de um WIOP gateway que realiza as traduções necessárias entre a rede cabeada e a rede sem fio.

ORB GIOP WIOP WSP WTP WDP meio WIOP gateway Cliente móvel Servidor cabeado sem fio WIOP WSP WTP WDP meio ORB GIOP IIOP IIOP IP enlaçe IP enlaçe TCP TCP

Figura 8 - Arquitetura do WIOP gateway.

A comunicação entre o WIOP gateway e o cliente móvel não é feita através de um túnel e sim através dos serviços de transação do WTP. As chamadas de métodos síncronas são feitas através do serviço classe 2 do WTP, que permitem transferências com uma mensagem de resposta. Já as chamadas assíncronas são feitas através dos serviços classe 0 ou 1 do WTP, que permitem transações sem mensagem de resposta, de forma confiável ou não, respectivamente.

O uso do protocolo WSP permite tratar desconexões temporárias, entretanto não fornece nenhum mecanismo para distinguir desconexões temporárias de permanentes, fazendo com que os clientes necessitem recorrer a mecanismos de timeout para identificar uma perda definitiva da conexão.

Em [11] é proposto um mecanismo simples para tratar desconexões ocorridas no tempo entre uma requisição e uma resposta. A Figura 9 mostra uma chamada de um cliente a um servidor CORBA través de um WIOP gateway A. Antes que a resposta seja recebida, uma desconexão ocorre e o cliente reconecta à rede através de um WIOP gateway B. Neste ponto, a resposta associada, ou estará armazenada no gateway A, ou estará a caminho do gateway A. De qualquer forma, o cliente sabe que ainda não recebeu a resposta do pedido anterior, então ele faz novamente a chamada através gateway B, mas troca a referência de objeto do servidor CORBA pela referência do gateway A. Adicionalmente, é incluída a informação de identificação da transação WSP através da qual o pedido original foi feito, de forma que o

gateway A possa identificar o resultado. Desta maneira, o gateway B sabe que deve repassar o pedido para o gateway A ao invés do servidor CORBA.

(14)

Cliente móvel requisição requisição requisição requisição resposta resposta resposta Servidor CORBA WIOP gateway A WIOP gateway B

Figura 9 - Handoff no WIOP. 3.5. TRABALHOS RELACIONADOS

Outros trabalhos foram feitos com o objetivo de adaptar o padrão CORBA a ambientes móveis. O projeto DOLMEN foi a primeira proposta real de uma arquitetura CORBA para ambientes móveis. O projeto foi submetido a OMG e foi precursor da especificação Wireless CORBA. Por esta razão, apresenta muitas similaridades com o padrão proposto. Entretanto, um dos maiores problemas da arquitetura proposta pelo projeto DOLMEN é a exigência de que objetos servidores em dispositivos móveis necessitem apresentar características especiais, o que impede portar aplicações CORBA para o ambiente móvel facilmente.

Outro projeto que apresenta similaridades com o padrão de Wireless CORBA adotado pela OMG é o projeto ALICE. Assim como a arquitetura proposta pelo projeto DOLMEN, na arquitetura ALICE os objetos servidores em dispositivos móveis exigem certos requisitos especiais, mas especificamente, se faz necessário utilizar funções específicas relacionadas à mobilidade providas pelo ORB da unidade móvel. Uma discussão mais detalhada dessas arquiteturas pode ser encontrada em [12]

4. CONCLUSÃO

A necessidade de middlewares de comunicação para ambientes móveis se tornou evidente em face à evolução e a popularização de tecnologias de rede sem fio. Por isso, diversos esforços tem sido feitos para adaptar a tecnologia CORBA ao contexto de aplicações móveis. Entretanto, dois problemas principais precisam ser solucionados. Primeiramente o problema da gerência da mobilidade deve ser abordado, ou seja, toda a comunicação deve ser adaptada para o contexto de dispositivos que podem mudar sua localização. Outro problema a ser abordado é referente a computação ubíqua, que provê com que a estrutura do CORBA seja adaptada para dispositivos com escassez de recursos.

Diversas propostas para o suporte da gerência da mobilidade em CORBA foram feitas, como é o caso da proposta de adaptação do modelo CORBA sobre o protocolo WAP e do projeto e*ORB da Vertel. Entretanto, estas são soluções proprietárias ou dependentes de uma tecnologia, além de apresentar problemas na integração com ORBs não-móveis. Contudo, a especificação do modelo Wireless CORBA proposta pela OMG é uma solução eficiente, independente de plataforma, não-proprietária e compatível com o padrão CORBA, além de já estar disponível através da extensão proposta pelo ORB MIwCO.

O problema referente à computação ubíqua é abordado no projeto do UIC, que fornece um

(15)

middleware de acordo com as necessidades do ambiente, permitindo a construção de ORBs adaptáveis e de tamanho reduzido. Outra abordagem similar é utilizada pelo projeto e*ORB, que implementa um núcleo adaptável de um ORB CORBA. Apesar das soluções propostas serem eficazes e compatíveis, ainda não existe nenhuma solução única que aborde ambos os problemas da adaptação do modelo de CORBA a ambientes móveis de forma satisfatória. 5. REFERÊNCIAS BIBLIOGRÁFICAS

[1] Object Management Group, Needham, Massachusetts; Common Object Request Broker

Architecture and Specification; versão 3.0; Junho de 2002.

[2] Amir, E.; Balakrishnan, H.; Seshan, S.; Katz, R. H.; Efficient TCP over networks with

wireless links; Proceedings of the Fifth IEEE Workshop of Hot Topics in Operating Systems, Maio de 1995.

[3] Hartenstein, H.; Jonas, K.; Liebsch, M.; Schmitz, R.; Stiemerling, M.; Westhoff, D.;

Performance of TCP in the Presence of Mobile IP Handoffs; ICT 2001 IEEE International Conference on Telecommunications, Junho de 2001.

[4] Fladenmuller, A.; De Silva, R.; The effect of Mobile IP handoffs on the performance of TCP; Journal on Mobile Networks and Applications, vol. 4, 1999.

[5] Black, K.; Currey, J.; Kangasharju, J., Länsiö, J.; Raatikainen, K.; Wireless Access and

Terminal Mobility in CORBA, 2001.

[6] Kangasharju, J.; Implementing the Wireless CORBA Specification, Universidade de Helsinki, 2002.

[7] Vertel Corporation; e*ORBTM Technical Description, Março de 2001.

[8] Roman, M.; Kon, F.; Camp bell, R. H.; Reflective Middleware: From Your Desk to Your

Hand. IEEE Distributed Systems Online Journal, Special Issue on Reflective Middleware, Julho de 2001.

[9] Malik, S.; Using WAP for Wireless CORBA; Paper for Wireless Networks Course. Universidade de Carleton, Abril de 2001. URL: http://individual.utoronto.ca/smalik/downloads/paper_590X.pdf

[10] Ruggaber, R.; Schiller, J.; Seitz, J.; Using WAP as the Enabling Technology for CORBA in

Mobile and Wireless Environments. Proceedings of the 7th IEEE Workshop on Future Trends of Distributed Computing Systems, 1999.

[11] Ruggaber, R.; Seitz, J.; Using CORBA Applications in Nomadic Environments. Proceedings of the 3rd IEEE Workshop on Mobile Computing Systems and Applications, 2000.

[12] Gomes, A. T. A.; CORBA para Computação Móvel. Departamento de Informática da PUC-Rio, 2000.

Referências

Documentos relacionados

A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas

São Tomé e Príncipe, pertence às seguintes organizações: Banco Africano para o Desenvolvimento, Aliança dos Pequenos Estados Insulares, União Africana, Comunidade dos Países

Preliminarmente, alega inépcia da inicial, vez que o requerente deixou de apresentar os requisitos essenciais da ação popular (ilegalidade e dano ao patrimônio público). No

Feitiço do Segredo: deposita um segredo numa pessoa de confiança, essa pessoa fica deposita um segredo numa pessoa de confiança, essa pessoa fica sendo o "Fiel do sendo o

c) Plano Municipal de Saneamento Básico ou documento que comprove a situação de elaboração deste, caso exista, para pontuação na etapa de hierarquização (item 4). 3.3

Este desafio nos exige uma nova postura frente às questões ambientais, significa tomar o meio ambiente como problema pedagógico, como práxis unificadora que favoreça

A respeito das propostas de desregulamentação nas relações de trabalho e da seguridade social no Brasil, percebidas tanto nas defesas do Banco Mundial quanto nas

O desenho permite ainda a investigação de questões específicas que surgem na pintura. Do mesmo modo que a relação entre figuras e plantas gera uma pesquisa de imagens, questões