08.01.2015 Views

Luciana dos Santos Lima Um Protocolo para Descoberta e Seleção ...

Luciana dos Santos Lima Um Protocolo para Descoberta e Seleção ...

Luciana dos Santos Lima Um Protocolo para Descoberta e Seleção ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Luciana</strong> <strong>dos</strong> <strong>Santos</strong> <strong>Lima</strong><br />

<strong>Um</strong> <strong>Protocolo</strong> <strong>para</strong> <strong>Descoberta</strong><br />

e Seleção de Recursos em<br />

Grades Móveis Ad hoc<br />

TESE DE DOUTORADO<br />

DEPARTAMENTO DE INFORMÁTICA<br />

Programa de Pós-Graduação em Informática<br />

Rio de Janeiro<br />

Junho de 2007


<strong>Luciana</strong> <strong>dos</strong> <strong>Santos</strong> <strong>Lima</strong><br />

<strong>Um</strong> <strong>Protocolo</strong> <strong>para</strong> <strong>Descoberta</strong> e Seleção<br />

de Recursos em Grades Móveis Ad hoc<br />

Tese de Doutorado<br />

Tese apresentada como requisito parcial <strong>para</strong><br />

obtenção do título de Doutor pelo Programa de Pós-<br />

Graduação em Informática da PUC-Rio.<br />

Orientador: Markus Endler<br />

Co-orientadores: Luiz Fernando Gomes Soares<br />

Antônio Tadeu Azevedo Gomes<br />

Artur Ziviani<br />

Rio de Janeiro, junho de 2007


<strong>Luciana</strong> <strong>dos</strong> <strong>Santos</strong> <strong>Lima</strong><br />

<strong>Um</strong> <strong>Protocolo</strong> <strong>para</strong> <strong>Descoberta</strong> e Seleção<br />

de Recursos em Grades Móveis Ad hoc<br />

Tese apresentada como requisito parcial <strong>para</strong> obtenção<br />

do título de Doutor pelo Programa de Pós-Graduação em<br />

Informática da PUC-Rio. Aprovada pela Comissão<br />

Examinadora abaixo assinada.<br />

Markus Endler<br />

Orientador<br />

PUC-Rio<br />

Luiz Fernando Gomes Soares<br />

Co-orientador<br />

PUC-Rio<br />

Antônio Tadeu Azevedo Gomes<br />

Co-orientador<br />

LNCC<br />

Artur Ziviani<br />

Co-orientador<br />

LNCC<br />

Antonio Alfredo Ferreira Loureiro<br />

UFMG<br />

José Ferreira de Rezende<br />

UFRJ<br />

Renato Fontoura de Gusmão Cerqueira<br />

PUC-Rio<br />

Sérgio Colcher<br />

PUC-Rio<br />

José Eugenio Leal<br />

Coordenador Setorial do Centro Técnico Científico - PUC-Rio<br />

Rio de Janeiro, 15 de junho de 2007


To<strong>dos</strong> os direitos reserva<strong>dos</strong>. É proibida a reprodução total ou<br />

parcial do trabalho sem autorização da universidade, da autora<br />

e do orientador.<br />

<strong>Luciana</strong> <strong>dos</strong> <strong>Santos</strong> <strong>Lima</strong><br />

Graduou-se em Ciência da Computação na UFAL<br />

(Universidade Federal de Alagoas) em 1999. Especializou-se<br />

em Tecnologia da Informação no TCI/UFAL em 2000. Obteve<br />

o título de Mestre em Informática, pela PUC-Rio, em 2002. É<br />

pesquisadora na área de Redes de Computadores e Sistemas<br />

Distribuí<strong>dos</strong>, com ênfase em redes sem fio, descoberta de<br />

serviços, colaboração móvel e grades móveis. Desenvolveu<br />

pesquisas por dois anos em projetos na área de grades móveis<br />

no Laboratório Nacional de Computação Científica e<br />

atualmente está afiliada ao Laboratório Tecgraf/PUC-Rio.<br />

<strong>Lima</strong>, <strong>Luciana</strong> <strong>dos</strong> <strong>Santos</strong><br />

Ficha Catalográfica<br />

<strong>Um</strong> protocolo <strong>para</strong> descoberta e seleção de recursos<br />

em grades móveis ad hoc / <strong>Luciana</strong> <strong>dos</strong> <strong>Santos</strong> <strong>Lima</strong>;<br />

orientador: Markus Endler; co-orientadores: Luiz Fernando<br />

Gomes Soares, Antônio Tadeu Azevedo Gomes, Artur<br />

Ziviani. – 2007.<br />

213 f. : il. (col.) ; 30 cm<br />

Tese (Doutorado em Informática) – Pontifícia<br />

Universidade Católica do Rio de Janeiro, Rio de Janeiro,<br />

2007.<br />

Inclui referências bibliográficas.<br />

1. Informática – Teses. 2. <strong>Descoberta</strong> de recursos. 3.<br />

Seleção de recursos. 4. Grades móveis. 5. Redes sem fio.<br />

I. Endler, Markus. II. Soares, Luiz Fernando Gomes. III.<br />

Gomes, Antônio Tadeu Azevedo. IV. Ziviani, Artur. V.<br />

Pontifícia Universidade Católica do Rio de Janeiro.<br />

Departamento de Informárica. VI. Título.<br />

CDD: 004


Este trabalho é dedicado<br />

a Deus, que, há muitos anos, fez-me uma promessa, a<br />

mim e a to<strong>dos</strong> os Seus filhos, promessa essa que vem se<br />

cumprindo em minha vida:<br />

“Ele (o filho de Deus) é como árvore plantada junto a<br />

corrente de águas, que, no devido tempo, dá o seu fruto,<br />

e cuja folhagem não murcha; e tudo quanto ele faz será<br />

bem sucedido.” [Sl, 1:3]<br />

Ao meu Senhor e Salvador a minha gratidão eterna:<br />

“Graças te dou, visto que por um modo<br />

assombrosamente maravilhoso me formaste; as tuas<br />

obras são admiráveis, e a minha alma o sabe muito<br />

bem;” [Sl, 139:14]<br />

<strong>Luciana</strong> <strong>Lima</strong>


Agradecimentos<br />

Ao meu orientador, Markus Endler, por ter me acolhido como sua orientanda, pela<br />

sua disponibilidade e boa vontade, qualidades essenciais em um orientador.<br />

Agradeço por ter me dado liberdade <strong>para</strong> crescer como pesquisadora e me<br />

incentivado a percorrer o caminho árduo e, por vezes, doloroso de definição de<br />

um tema de tese. Obrigada pelo respeito com que lapidou as minhas idéias e pela<br />

confiança em mim depositada: respeito e confiança, características que nortearam<br />

esses quatro anos de convivência.<br />

Ao meu eterno “ori” e atual “co-ori”, Luiz Fernando Gomes Soares, o meu<br />

agradecimento sincero. Você foi fundamental na construção da minha carreira<br />

acadêmica, responsável pelo “alicerce” sobre o qual, com este trabalho, deposito<br />

mais alguns “tijolinhos”. Existe um pouco de você em tudo o que sou hoje como<br />

pesquisadora. Tomei <strong>para</strong> mim a sua disciplina, responsabilidade e<br />

perfeccionismo. Tive lições inesquecíveis como sua orientanda de mestrado, não<br />

só do profissional que você é, mas também do ser humano que consegue nos<br />

surpreender com demonstrações de desprendimento e amor ao próximo. Levarei,<br />

por toda a vida, os seus ensinamentos preciosos. Muito Obrigada!<br />

Aos meus co-orientadores, Antônio Tadeu e Artur Ziviani, meu reconhecimento<br />

sincero. Tive a oportunidade de conviver de perto durante esses últimos dois anos<br />

com esses pesquisadores incríveis. Completamente apaixona<strong>dos</strong> pelo “fazer<br />

ciência”, motiva<strong>dos</strong> e meus principais motivadores, os verdadeiros “culpa<strong>dos</strong>”<br />

pela conclusão do meu doutorado. Agradeço de coração por tudo que pude<br />

aprender com vocês. Espero continuar a minha caminhada contando com a<br />

colaboração e a parceria que construímos ao longo desse período.<br />

Ao professor, Bruno Schulze, que esteve conosco no início deste trabalho,<br />

contribuindo com o seu conhecimento e abrindo as portas <strong>para</strong> que pudéssemos<br />

utilizar a grade fixa do ComCiDis (http://comcidis.lncc.br/), projeto por ele


coordenado, o meu agradecimento sincero.<br />

Aos bolsistas de Iniciação Científica PIBIC do LNCC, Bruno Bastos e Pedro<br />

Alcover, o meu muitíssimo obrigada! Em pouco mais de um ano e meio de<br />

convivência científica, esses dois “meninos” contribuíram, e muito, <strong>para</strong> a<br />

realização deste trabalho. Bruno desvendando os “mistérios” do Globus Toolkit e<br />

viabilizando a integração das soluções, aqui propostas, <strong>para</strong> as grades móveis,<br />

com a grade fixa do projeto ComCiDis. Pedro estudando os simuladores<br />

escolhi<strong>dos</strong> <strong>para</strong> realizar a avaliação de desempenho deste trabalho. Fico<br />

extremamente feliz de ver o quanto vocês evoluíram nesse período e o excelente<br />

trabalho que desenvolveram. Mais uma vez, obrigada de coração.<br />

Aos colaboradores franceses, Nicolas Bolicaut e Guillaume Chelius, o meu muito<br />

obrigada! Ao Nicolas, gostaria de agradecer pela receptividade que demonstrou<br />

nos testes que desenvolvemos juntos no testbed do INRIA/INSA-Lyon. Ao<br />

Guillaume, por ter discutido conosco os aspectos que envolvem os mecanismos de<br />

difusão em uma rede sem fio ad hoc de saltos múltiplos.<br />

Antes <strong>dos</strong> agradecimentos, gostaria de render uma homenagem à banca de<br />

avaliação desta tese, constituída pelos Professores Antonio Loureiro, José<br />

Rezende, Renato Cerqueira, Sérgio Colcher e pelas suplentes Noemi Rodriguez e<br />

Simone Martins. Durante o desenvolvimento da minha vida acadêmica, pude<br />

acompanhar o trabalho que cada um de vocês vem construindo em suas<br />

respectivas áreas de pesquisa. É, <strong>para</strong> mim, motivo de orgulho saber que a<br />

contribuição de cada um de vocês estará depositada nas páginas deste trabalho.<br />

Muito obrigada por vocês terem aceitado participar da minha defesa de doutorado.<br />

Agradeço a compreensão e o apoio incondicional de minha mãe, Maria José, e de<br />

minhas irmãs queridas, Adriana e Nathalie. Vocês conhecem o meu coração<br />

melhor do que eu mesma e por isso mesmo devem saber o quanto as amo e a<br />

importância que vocês têm em minha vida. Em momento algum vocês duvidaram<br />

de que eu concluiria, com êxito, o meu doutorado, mesmo quando eu,<br />

desacreditada do meu trabalho, pensei em desistir. Obrigada, vocês são a melhor<br />

família que alguém poderia sonhar em ter. Aproveito <strong>para</strong> registrar o carinho com


que as minhas “maninhas” revisaram o meu texto, em busca de “erros do meu<br />

português ruim” – como diria Roberto Carlos – na verdade, não tão ruim assim ;-)<br />

Na conclusão dessa etapa tão importante da minha vida, não poderia deixar de<br />

registrar o meu agradecimento ao meu amor maior, primeiro e mais importante<br />

exemplo: meu pai, José Maria (in memorian). A vida nos separou muito cedo, mas<br />

permitiu que eu tivesse com você a mais importante lição: ser uma pessoa<br />

honesta, independentemente das circunstâncias, e lutar sempre, com muita<br />

vontade e determinação, por tudo o que se quer. Desde que você se foi, vivo<br />

angustiada com a idéia de não ter te dito, suficientemente e repetidas vezes, o<br />

quanto eu te amo. Registro aqui, <strong>para</strong> todo o sempre, o meu amor incondicional<br />

por você, o homem mais íntegro e generoso que já conheci.<br />

Nada mais justo do que registrar o meu agradecimento especial a Maíra Greco, a<br />

Déborah de Barros e à Profª. Simone Junqueira. Em um momento de muita<br />

dificuldade, decidi abandonar o doutorado, foi um período muito doloroso, e essas<br />

três pessoas se preocu<strong>para</strong>m comigo e me confortaram, dedicando um pouco do<br />

seu tempo a me incentivar e encorajar, não permitindo que eu concluísse o meu<br />

intento. Obrigada de coração pelo que vocês representaram <strong>para</strong> mim naqueles<br />

momentos tão difíceis.<br />

Para tornar real um grande sonho, é preciso o apoio e amor de pessoas muito<br />

especiais, que, por afinidade, unem-se a você durante essa longa caminhada que<br />

chamamos de “vida”. Esses são os nossos amigos, a família que temos a liberdade<br />

de escolher <strong>para</strong> compartilhar conosco as nossas dores e alegrias. Moreno e<br />

Lorenza, amo vocês, eu os considero como verdadeiros irmãos e admiro<br />

profundamente a relação de amor e respeito que vocês construíram. Obrigada por<br />

todo o afeto que vocês me dedicaram. Lucimar, Maíra (novamente ela!), Paulinha,<br />

Taci e Vivi – em ordem alfabética <strong>para</strong> não criar problemas :-) –, minhas amigas<br />

queridas, o que dizer de vocês Sempre presentes nesses sete anos de Rio de<br />

Janeiro, tanta coisa aconteceu e, com fé em Deus, permaneceremos unidas nas<br />

tantas “aventuras” que ainda hão de vir. Obrigada a vocês pela nossa amizade.<br />

Adéle, quando a mente já não dava conta do trabalho a cumprir, você era a minha<br />

companheira de descontração, juntas seguíamos animadas até o Rio Scenarium,


um sentimento especial de afinidade nos uniu, sou grata por na reta final do meu<br />

doutorado termos estreitado os nossos laços de amizade.<br />

O maior presente que já “ganhei” através da Internet foi um amigo. É verdade, em<br />

uma lista de discussão técnica sobre o protocolo IP Móvel, na época, i<strong>dos</strong> de<br />

1999, tema do meu trabalho de conclusão de curso da graduação em Ciência da<br />

Computação na Universidade Federal de Alagoas. Emmanuel Coelho Alves, um<br />

francês que hoje reside na China, um amigo ao mesmo tempo tão distante e tão<br />

próximo. Pude contar com o seu apoio nesses oito anos de amizade, rechea<strong>dos</strong> de<br />

demonstrações constantes de solidariedade. Devoto a você um sentimento sincero<br />

de gratidão, pois nos momentos mais difíceis da minha vida, apesar de nunca<br />

termos tido sequer um encontro real, você sempre esteve presente, dando<br />

conselhos, incentivo e me fortalecendo com as suas palavras e atitudes. Como<br />

amigos também dizem “eu te amo”, registro aqui o meu amor phileo por você.<br />

Durante o meu doutorado, pude contar com o apoio material e humano daqueles<br />

que fazem o laboratório Tecgraf. Gostaria de agradecer ao meu coordenador de<br />

projeto, Alberto Raposo, pela oportunidade que ele me concedeu. Obrigada<br />

também aos meus companheiros de trabalho, Cezar Pozzer, Eduardo Teles e Börje<br />

Karlsson. Pude aprender e me divertir muito com vocês, não vou esquecer os<br />

nossos almoços no Bandejão da PUC (meu prato só perdia <strong>para</strong> o do Pozzer!) e as<br />

sessões de XP. O meu agradecimento também a toda equipe do grupo de VR, é<br />

muito bom fazer parte desse time. Não poderia deixar de registrar, aqui, o meu<br />

carinho a uma pessoa muito especial, Sr. Ernesto Fleck. Obrigada por<br />

compartilhar comigo a sua sabedoria e pela “adoção”, afinal, como o Senhor<br />

mesmo sempre brinca – e eu levo a sério! –, eu sou a sua filha mais velha, sei que<br />

a minha conquista é motivo de orgulho <strong>para</strong> o Senhor. Mais uma vez, obrigada!<br />

Eu simplesmente fugia de qualquer tipo de atividade física até que, em plena reta<br />

final da escrita da minha dissertação de mestrado, diagnosticada com LER (Lesão<br />

por Esforço Repetitivo), fui obrigada a praticar algum tipo de atividade física.<br />

Entrei na Gávea Gym e acabei simplesmente “viciada”. Gostaria de agradecer a<br />

to<strong>dos</strong> os profissionais da GG, que sempre tão cuida<strong>dos</strong>os, ajudam a colocar o meu<br />

corpo em ordem quando, nem sempre, a minha mente está. E foi lá na GG


também que travei o primeiro contato com o Yôga – metodologia estritamente<br />

prática que conduz ao samádhi, o estado de hiperconsciência e megalucidez que<br />

só o Yôga proporciona. Registro, aqui, o meu pújá efetivo aos mestres de Yôga<br />

que tive: Vinícius, Humberto e Rafaella, claro, como não poderia deixar de ser, o<br />

meu pújá ao mestre DeRose, responsável pelo resgate das raízes ancestrais do<br />

Yôga que hoje pratico. Saúdo a você com o nome do nosso Yôga: Swásthya!<br />

Agradeço ao Posto 10 (Country Club) por ter se firmado, durante esses quatro<br />

anos de doutorado, como o meu melhor ambiente de trabalho. Entre um sucolé do<br />

Claudinho e um copinho de LimãoPlus (diet, é claro!), estudei <strong>para</strong> provas, li e<br />

revisei artigos, além de ter buscado inspiração <strong>para</strong> definir vários pontos desta<br />

tese. Pois é, além de “concentração e transpiração”, esse trabalho também traz<br />

consigo o barulhinho das ondas do mar de Ipanema, o cheirinho de maresia e a<br />

beleza do pôr-do-sol mais lindo do mundo, aplaudido de pé por seus fiéis<br />

admiradores, dentre os quais me incluo.<br />

Posso dizer que o meu doutorado teve como trilha sonora as composições do<br />

4 Cabeça (é assim mesmo que se escreve!), em especial, do meu querido amigo,<br />

Luis Carlinhos. LC, a sua música e o seu sorriso conseguiam um verdadeiro<br />

milagre nos meus momentos de maior tensão: acalentar a minha alma, devolvendo<br />

a alegria ao meu semblante e me proporcionando momentos de pura magia.<br />

Saindo do mundo da arte e fazendo uma <strong>para</strong>da, obrigatória, no universo da<br />

tecnologia, gostaria de agradecer ao grupo de desenvolvedores do Google, por<br />

terem proporcionado um mecanismo de busca tão eficiente e preciso, que em<br />

muito contribuiu, durante todo o processo de pesquisa do meu doutorado, <strong>para</strong> o<br />

desenvolvimento desta tese.<br />

Agradeço o apoio financeiro que recebi da PUC-Rio, através do Departamento de<br />

Informática, pela bolsa VRAC e ao CNPq, pela bolsa PCI, concedida através de<br />

convênio com o LNCC.


Resumo<br />

<strong>Lima</strong>, <strong>Luciana</strong> <strong>dos</strong> <strong>Santos</strong>; Endler, Markus; Soares, Luiz Fernando Gomes;<br />

Gomes, Antônio Tadeu Azevedo; Ziviani, Artur. <strong>Um</strong> <strong>Protocolo</strong> <strong>para</strong><br />

<strong>Descoberta</strong> e Seleção de Recursos em Grades Móveis Ad hoc. Rio de<br />

Janeiro, 2007. 213p. Tese de Doutorado – Departamento de Informática,<br />

Pontifícia Universidade Católica do Rio de Janeiro.<br />

Nos últimos anos, o uso de dispositivos móveis em grades computacionais<br />

tem sido alvo de crescente investigação. Entretanto, um problema mais desafiador,<br />

referente ao estabelecimento dinâmico de grades móveis, baseadas<br />

exclusivamente em redes sem fio ad hoc, ainda tem sido pouco investigado. <strong>Um</strong>a<br />

contribuição desta tese é a proposta de uma arquitetura de software específica <strong>para</strong><br />

grades móveis, que pode ser igualmente aplicável a redes sem fio infraestruturadas<br />

e ad hoc. Em grades fixas, a responsabilidade de prover um serviço<br />

computacional é compartilhada entre dispositivos com relativa abundância de<br />

recursos, se com<strong>para</strong>das a grades móveis. Nestas últimas, é interessante que a<br />

descoberta e a seleção de recursos <strong>para</strong> execução de tarefas sejam tratadas<br />

conjuntamente, de modo a promover a seleção automática <strong>dos</strong> dispositivos com<br />

maior disponibilidade de recursos, considerando-se os requisitos da aplicação.<br />

Entretanto, tais elementos têm sido tradicionalmente trata<strong>dos</strong> em se<strong>para</strong>do na<br />

literatura relacionada a grades móveis e, em grande parte das abordagens<br />

existentes, assume-se que a seleção de recursos seja executada de forma manual<br />

pelos usuários da grade móvel. Esta tese propõe, como uma outra contribuição,<br />

um protocolo que integra as fases de descoberta e seleção automática de recursos<br />

em grades móveis, permitindo que a provisão de serviços computacionais seja<br />

escalonada entre os dispositivos com maior disponibilidade <strong>dos</strong> recursos<br />

requeri<strong>dos</strong> pelo serviço. Devido à característica dinâmica <strong>dos</strong> recursos que<br />

correspondem às requisições <strong>dos</strong> usuários em uma grade móvel (por exemplo,<br />

tempo de CPU livre e memória disponível), o protocolo baseia-se unicamente no<br />

envio, sob demanda, de requisições via broadcast. No entanto, principalmente em<br />

redes sem fio ad hoc de saltos múltiplos, essa estratégia pode acarretar uma<br />

sobrecarga nos dispositivos envolvi<strong>dos</strong>, tanto na difusão de requisições quanto no<br />

encaminhamento de respostas. <strong>Um</strong>a terceira contribuição desta tese é o<br />

desenvolvimento de um mecanismo que permite reduzir a sobrecarga, devido à<br />

difusão de mensagens de resposta, por meio da supressão de respostas excedentes


ao longo da rede. O mecanismo, embora implementado no contexto do protocolo<br />

proposto nesta tese, pode ser aplicado também a outros protocolos de descoberta<br />

basea<strong>dos</strong> no envio de requisições via broadcast. Os resulta<strong>dos</strong> experimentais,<br />

obti<strong>dos</strong> em redes de testes e em plataformas de simulação, mostram que o<br />

protocolo proposto provê um balanceamento de carga eficiente entre os<br />

dispositivos, mediante o aumento do número de requisições. Além disso, pode-se<br />

observar que o mecanismo de supressão de respostas é escalável no que diz<br />

respeito ao crescimento do número de dispositivos, em com<strong>para</strong>ção com<br />

protocolos de descoberta basea<strong>dos</strong> puramente no envio de requisições por<br />

broadcast em redes sem fio ad hoc.<br />

Palavras-chave<br />

Fio.<br />

<strong>Descoberta</strong> de Recursos; Seleção de Recursos; Grades Móveis; Redes Sem


Abstract<br />

<strong>Lima</strong>, <strong>Luciana</strong> <strong>dos</strong> <strong>Santos</strong>; Endler, Markus; Soares, Luiz Fernando Gomes;<br />

Gomes, Antônio Tadeu Azevedo; Ziviani, Artur. A Protocol for Resource<br />

Discovery and Selection in Mobile Ad hoc Grids. Rio de Janeiro, 2007.<br />

213p. PhD Thesis – Departamento de Informática, Pontifícia Universidade<br />

Católica do Rio de Janeiro.<br />

In the last few years, the use of mobile devices in computational grids has<br />

seen a growing interest. Nevertheless, a more challenging issue, the dynamic<br />

establishment of mobile grids on wireless ad hoc networks, has been so far only<br />

partially addressed. The first contribution of this thesis is the proposal of a<br />

software architecture for mobile grids that can be used for both infrastructured and<br />

ad hoc wireless networks. In the execution of conventional applications in grids,<br />

the responsibility to provide the service is shared among the most resourceful<br />

mobile devices. In mobile grids, it is fundamental that resource discovery and<br />

selection of resources are jointly handled. This calls for a mechanism that<br />

promotes the automatic selection of the best resource providers amongst the<br />

discovered nodes, taking into account the requirements of the application.<br />

Discovery and selection, however, have been traditionally handled se<strong>para</strong>tely and<br />

in most approaches the selection of resources and services requires explicit<br />

intervention by the user of the mobile grid. As a second contribution of this thesis,<br />

we propose a protocol that integrates the phases of resource discovery and<br />

automatic selection in mobile grids, allowing that computational resource<br />

provisioning is scheduled among the most resourceful nodes. Due to the dynamics<br />

of the resources needed in a mobile grid (for example, free CPU time and<br />

available memory), the protocol is based solely on demand-driven broadcasts.<br />

However, mainly in multihop ad hoc wireless networks, this strategy can incur in<br />

overhead at the involved devices, due to the diffusion of requests and replies. A<br />

third contribution of this thesis is the development of a mechanism that allows to<br />

reduce this overhead by means of the suppression of redundant replies in the<br />

network. The mechanism has been implemented in the context of the proposal<br />

protocol, but can be applied as well to other query-based discovery protocols<br />

based on broadcasts. The experimental results obtained from executions in a<br />

testbed and through simulations show that the proposed protocol provides<br />

efficient load balancing between devices with an increasing number of requests.


Moreover, it can be observed that the mechanism for suppression of replies scales<br />

well with respect to an increasing number of devices when compared to other<br />

discovery protocols in wireless ad hoc networks that are purely based on requests<br />

via broadcast.<br />

Keywords<br />

Resource Discovery; Resource Selection; Mobile Grids; Wireless Networks.


Sumário<br />

1 Introdução 24<br />

1.1. Motivação 24<br />

1.2. Requisitos <strong>para</strong> a <strong>Descoberta</strong> de Serviços em Grades Móveis<br />

ad hoc 26<br />

1.3. Objetivos 30<br />

1.4. Sumário das Principais Contribuições 32<br />

1.5. Organização da Tese 33<br />

2 A Arquitetura MoGrid 36<br />

2.1. Introdução 36<br />

2.2. Modelo de Serviços da Arquitetura MoGrid 37<br />

2.3. <strong>Um</strong> Middleware <strong>para</strong> Grades Móveis 40<br />

2.3.1. Camada de <strong>Descoberta</strong> P2P 41<br />

2.3.1.1. API de <strong>Descoberta</strong> 41<br />

2.3.1.2. Entidades de <strong>Descoberta</strong> 44<br />

2.3.2. Camada de Transparência 47<br />

2.3.2.1. Subcamada de Acesso Transparente aos Recursos 48<br />

2.3.2.2. Requisitos da Camada de Acesso Transparente aos Recursos 51<br />

2.3.2.3. Subcamadas de Adaptação 55<br />

2.4. Os Modelos de Falhas da Arquitetura MoGrid 56<br />

2.5. Trabalhos Relaciona<strong>dos</strong> 60<br />

2.5.1. Discussão sobre os Trabalhos Relaciona<strong>dos</strong> 62<br />

2.5.2. Análise Com<strong>para</strong>tiva 66<br />

2.5.3. Contribuições Alcançadas 70<br />

3 Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 72<br />

3.1. Apresentação 72<br />

3.2. Classificação <strong>dos</strong> <strong>Protocolo</strong>s de <strong>Descoberta</strong> de Serviços 74<br />

3.2.1. Os Mecanismos de <strong>Descoberta</strong> de Serviços 80


3.2.1.1. <strong>Descoberta</strong> Passiva 81<br />

3.2.1.2. <strong>Descoberta</strong> Ativa 85<br />

3.2.2. O Mecanismo de Seleção de Serviços 89<br />

3.2.3. Mecanismos <strong>para</strong> oferecer suporte à Mobilidade 91<br />

3.3. Visão Geral <strong>dos</strong> <strong>Protocolo</strong>s de <strong>Descoberta</strong> de Serviços 95<br />

3.4. Resumo Com<strong>para</strong>tivo <strong>dos</strong> <strong>Protocolo</strong>s de <strong>Descoberta</strong> de Serviços<br />

<strong>para</strong> MANETs 97<br />

4 O <strong>Protocolo</strong> P2PDP 100<br />

4.1. Introdução 100<br />

4.2. Suposições a Respeito do Sistema 103<br />

4.3. Visão Geral do <strong>Protocolo</strong> P2PDP 104<br />

4.4. Classificação do <strong>Protocolo</strong> P2PDP 105<br />

4.5. Funcionamento do <strong>Protocolo</strong> P2PDP 110<br />

4.6. O Algoritmo de Supressão de Respostas 115<br />

4.7. O Algoritmo <strong>para</strong> o Cálculo do Retardo no Envio de Respostas 121<br />

4.8. O Mecanismo <strong>para</strong> o Reconhecimento do Envio de Respostas 124<br />

4.9. Análise Com<strong>para</strong>tiva do <strong>Protocolo</strong> P2PDP 128<br />

5 Implementação 135<br />

5.1. Tecnologias Utilizadas 135<br />

5.2. Implementação do <strong>Protocolo</strong> P2PDP 137<br />

5.2.1. Descrição de Recursos e Controle de Admissão 138<br />

5.2.2. Mensagens de Controle P2PDP 138<br />

5.2.3. Canal de Comunicação P2PDP 139<br />

5.2.4. Entidades de <strong>Descoberta</strong> P2PDP 140<br />

5.2.5. Cenários de Uso 144<br />

5.3. Integração do MoGrid com o Globus Toolkit 145<br />

5.3.1. O Globus Toolkit 145<br />

5.3.2. Requisições de <strong>Descoberta</strong> P2PDP em uma Grade Globus 146<br />

5.3.3. Monitoramento de Recursos em uma Grade Globus 148<br />

5.3.4. Controle de Admissão em uma Grade Globus 149<br />

5.3.5. Implementação do Proxy de Colaboração 150<br />

5.4. Aplicações de Teste 152


5.4.1. Ambientes de Teste Reais 154<br />

5.4.2. Ambiente de Teste Simulado 156<br />

6 Avaliação de Desempenho 161<br />

6.1. Cenários de Simulação e Métricas de Avaliação 161<br />

6.2. Análise de Escalabilidade 165<br />

6.2.1. Análise da Influência do P2PDP na Carga Média da MANET 168<br />

6.2.2. Análise do Mecanismo de Supressão de Respostas do P2PDP 174<br />

6.2.3. Visão Geral da Análise de Escalabilidade 180<br />

6.3. Controle da Ocorrência de Colisões 181<br />

6.4. Balanceamento de Carga 182<br />

6.5. Visão Geral <strong>dos</strong> Resulta<strong>dos</strong> Obti<strong>dos</strong> 185<br />

6.6. Avaliação do P2PDP na Presença de Mobilidade 185<br />

6.6.1. Composição <strong>dos</strong> Cenários 186<br />

6.6.2. Métrica de Avaliação 187<br />

6.6.3. Resulta<strong>dos</strong> Obti<strong>dos</strong> 188<br />

7 Conclusões 191<br />

7.1. Contribuições da Tese 191<br />

7.1.1. Contribuições <strong>para</strong> o Estado da Arte 192<br />

7.1.2. Contribuições Tecnológicas 194<br />

7.2. Trabalhos Futuros 195<br />

7.2.1. Arquitetura MoGrid 195<br />

7.2.2. Incorporação de Novos Mecanismos ao <strong>Protocolo</strong> P2PDP 196<br />

7.2.3. Otimização de Mecanismos do <strong>Protocolo</strong> P2PDP 199<br />

7.3. Considerações Finais 201<br />

8 Referências Bibliográficas 202<br />

A Apêndice 210<br />

A.1. Detalhes sobre o Ambiente de Simulação NCTUns 210<br />

A.2. Gráficos Complementares referentes à Análise da Influência do<br />

P2PDP na Carga Média da MANET 211


Lista de Figuras<br />

Figura 1 – Formação de uma grade móvel pela proximidade<br />

geográfica <strong>dos</strong> dispositivos. 26<br />

Figura 2 – Arquitetura MoGrid. 40<br />

Figura 3 – API de descoberta. 41<br />

Figura 4 – Estrutura do parâmetro serviceDescriptor. 42<br />

Figura 5 – Entidades envolvidas no processo de descoberta. 44<br />

Figura 6 – Arquitetura MoGrid: a camada de transparência. 48<br />

Figura 7 – Mecanismos de descoberta de serviços. 81<br />

Figura 8 – Mecanismo de anúncio incremental do Konark. 82<br />

Figura 9 – Encaminhamento de requisições baseado em grupos de<br />

serviços (adaptada de [Strang 2005]). 87<br />

Figura 10 – Critérios de seleção de serviços. 90<br />

Figura 11 – Méto<strong>dos</strong> de provisão de suporte à mobilidade. 93<br />

Figura 12 – Funcionamento básico do protocolo P2PDP em uma<br />

MANET. 110<br />

Figura 13 – Mensagem InitiatorRequest (IReq). 111<br />

Figura 14 – Representação ASN.1 da mensagem<br />

InitiatorRequest (IReq). 112<br />

Figura 15 – Estrutura de da<strong>dos</strong> pendingList. 112<br />

Figura 16 – Representação ASN.1 da estrutura de da<strong>dos</strong><br />

pendingList. 113<br />

Figura 17 – Mensagem CollaboratorReply (CRep). 114<br />

Figura 18 – Representação ASN.1 da mensagem<br />

CollaboratorReply (CRep). 114<br />

Figura 19 – Estrutura de da<strong>dos</strong> resumeList. 115<br />

Figura 20 – Representação ASN.1 da estrutura de da<strong>dos</strong><br />

resumeList. 115<br />

Figura 21 – O algoritmo de supressão de respostas por vizinhança<br />

SbV. 116<br />

Figura 22 – Cenário ilustrando a supressão de mensagens CRep


com o algoritmo SbV. 119<br />

Figura 23 – Propagação em eco de mensagens CRep pelo<br />

protocolo P2PDP. 125<br />

Figura 24 – O algoritmo de tratamento de requisições. 126<br />

Figura 25 – O algoritmo de reconhecimento de envio de respostas. 127<br />

Figura 26 – O proxy de colaboração MoGrid. 137<br />

Figura 27 – Descrição de recursos e controle de admissão. 138<br />

Figura 28 – Declaração das mensagens de controle P2PDP. 139<br />

Figura 29 – Canal de comunicação P2PDP. 140<br />

Figura 30 – Entidades iniciador e coordenador e a subcamada de<br />

adaptação. 141<br />

Figura 31 – Entidade colaborador. 142<br />

Figura 32 – Seqüência de invocação de operações associadas à<br />

descoberta de serviço. 144<br />

Figura 33 – Seqüência de invocação de operações associadas à<br />

recepção de uma requisição de serviço no colaborador. 144<br />

Figura 34 – Mensagem CollaboratorReply (CRep) modificada. 148<br />

Figura 35 – Entidade proxy de colaboração. 151<br />

Figura 36 – Seqüência de invocação de operações associadas à<br />

recepção de uma requisição de serviço no proxy de colaboração. 151<br />

Figura 37 – Exemplo de rodada de simulação do protocolo P2PDP. 157<br />

Figura 38 – Rodada de simulação NCTUns com mobilidade. 160<br />

Figura 39 – P2PDP: cenário de uso favorável. 162<br />

Figura 40 – P2PDP: cenário de uso desfavorável. 163<br />

Figura 41 – Carga na MANET <strong>para</strong> 20% de colaboradores ativos (p). 170<br />

Figura 42 – Carga na MANET <strong>para</strong> 40% de colaboradores ativos (p). 171<br />

Figura 43 – Carga na MANET <strong>para</strong> 60% de colaboradores ativos (p). 171<br />

Figura 44 – Carga na MANET <strong>para</strong> 80% de colaboradores ativos (p). 172<br />

Figura 45 – Eficiência da descoberta de serviços (extraída de<br />

[Lee et al. 2003]). 173<br />

Figura 46 – Número médio de supressões <strong>para</strong> R=4 e N=60. 175<br />

Figura 47 – Número médio de supressões <strong>para</strong> R=4 e N=120. 175<br />

Figura 48 – Número médio de supressões <strong>para</strong> R=4 e N=240. 176


Figura 49 – Distribuição das supressões de mensagens de resposta<br />

<strong>para</strong> N=60. 177<br />

Figura 50 – Distribuição das supressões de mensagens de resposta<br />

<strong>para</strong> N=120. 178<br />

Figura 51 – Distribuição das supressões de mensagens de resposta<br />

<strong>para</strong> N=240. 179<br />

Figura 52 – Carga cumulativa do uso da CPU nos nós colaboradores. 184<br />

Figura 53 – Exemplo de distribuição inicial <strong>dos</strong> dispositivos em um<br />

cenário móvel. 187<br />

Figura 54 – Eficiência da descoberta: percentual de respostas<br />

recebidas em função do número de respostas solicitadas. 190<br />

Figura 55 – Carga na MANET <strong>para</strong> 20% de colaboradores ativos (p). 211<br />

Figura 56 – Carga na MANET <strong>para</strong> 40% de colaboradores ativos (p). 212<br />

Figura 57 – Carga na MANET <strong>para</strong> 60% de colaboradores ativos (p). 212<br />

Figura 58 – Carga na MANET <strong>para</strong> 80% de colaboradores ativos (p). 213


Lista de Tabelas<br />

Tabela 1 – Resumo com<strong>para</strong>tivo <strong>dos</strong> projetos relaciona<strong>dos</strong> à<br />

arquitetura MoGrid. 69<br />

Tabela 2 – Resumo com<strong>para</strong>tivo <strong>dos</strong> protocolos de descoberta de<br />

serviços <strong>para</strong> redes sem fio. 98<br />

Tabela 3 – Resumo com<strong>para</strong>tivo entre o protocolo P2PDP e os<br />

protocolos de descoberta de serviços <strong>para</strong> MANETS de saltos<br />

múltiplos. 130<br />

Tabela 4 – Parâmetros de simulação NCTUns sem contemplar<br />

mobilidade. 157<br />

Tabela 5 – Parâmetros de simulação NCTUns contemplando a<br />

mobilidade. 159<br />

Tabela 6 – Parâmetros de simulação ns-2. 168<br />

Tabela 7 – Número total de transmissões de pacotes. 169<br />

Tabela 8 – Número médio de supressões <strong>para</strong> p=20 e p=60<br />

com N=60. 177<br />

Tabela 9 – Número médio de supressões <strong>para</strong> p=20 e p=60<br />

com N=120. 178<br />

Tabela 10 – Número médio de supressões <strong>para</strong> p=40 e p=80<br />

com N=240. 179<br />

Tabela 11 – Parâmetros de simulação <strong>dos</strong> cenários com mobilidade. 187<br />

Tabela 12 – Eficiência da descoberta em função da velocidade de<br />

deslocamento. 188


Lista de Acrônimos<br />

AKOGRIMO<br />

ALLIA<br />

AODV<br />

API<br />

ARES<br />

ASA<br />

ASL<br />

ASN.1<br />

AWK<br />

BEB<br />

Bluetooth<br />

Bluetooth SDP<br />

CBRP<br />

CDC/PP<br />

CLDC<br />

CoG<br />

COLOMBA<br />

CoS<br />

DARC*<br />

DEAPspace<br />

DNS<br />

DR<br />

DSR<br />

FDC<br />

FTA<br />

GIIS<br />

Access to KnOwledge through the GRId in a MObile world<br />

Do termo inglês “allia-nce”.<br />

Ad hoc On-demand Distance Vector<br />

Application Programming Interface<br />

Architectures de RésEaux de Services<br />

Audio Sharing Application<br />

Adaptation SubLayers<br />

Abstract Syntax Notation One<br />

Aho, Weinberger, Kernighan<br />

O acrônimo corresponde as iniciais <strong>dos</strong> nomes de seus inventores.<br />

Binary Exponential Back-off<br />

Do dinamarquês, Blåtand (Blue Tooth em inglês)<br />

Harald “Blåtand” Gormson, rei dinamarquês (940 a 985 D.C.) que<br />

unificou os reinos da Dinamarca e da Noruega. Esse viking era<br />

conhecido pela sua diplomacia e capacidade de negociação. O logo<br />

do Bluetooth foi inspirado nas letras H e B do alfabeto rúnico<br />

[Bluetooth 2003].<br />

Bluetooth Service Discovery Protocol<br />

Cluster Based Routing Protocol<br />

Connected Device Configuration/Personal Profile<br />

Connected Limited Device Configuration<br />

Commodity Grid<br />

Context and Location-based Middleware for Binding Adaptation<br />

Capacity of Service<br />

Distributed Ad Hoc Resource Coordination<br />

Pronuncia-se “dark star”.<br />

Distributed Embedded Application Platform space<br />

Domain Name System<br />

Delayed Replies<br />

Dynamic Source Routing<br />

Função de Distribuição Cumulativa<br />

Field Theoretic Approach<br />

Grid Index Information Service


GRADEp<br />

GRAM<br />

GridFTP<br />

GRIS<br />

GSD<br />

GSI<br />

GTK<br />

HTTP<br />

IETF<br />

INRIA<br />

INSA<br />

GRADE pervasiva<br />

Globus Resource Allocation Manage<br />

Grid File Transfer Protocol<br />

Grid Resource Information Service<br />

Group-based Service Discovery<br />

Grid Security Infrastructure<br />

Globus ToolKit<br />

Hyper Text Transfer Protocol<br />

Internet Engineering Task Force<br />

Institut National de Recherche en Informatique et en Automatique<br />

Institut Supérieur des Sciences Appliquées<br />

IPv6 Internet Protocol version 6<br />

ISAM<br />

ISO<br />

J2ME<br />

J2SE<br />

JINI<br />

K*Grid<br />

LRU<br />

Lua<br />

M3<br />

MAC<br />

MANET<br />

MARTIN<br />

MASGRID<br />

MDS<br />

MIDP<br />

MILD<br />

MoCA<br />

MoGrid<br />

NCTUns<br />

Infra-estrutura de Suporte às Aplicações Móveis distribuídas<br />

International Organization for Standardization<br />

Java 2 Micro Edition<br />

Java 2 Standard Edition<br />

Projeto Jini da Sun.<br />

Pronuncia-se “GEE-nee”, sua origem está relacionada à palavra<br />

árabe que corresponde, em português, a “mágico”.<br />

Korean national Grid<br />

Least Recently Used<br />

Inicialmente foi definido o acrônimo SOL (Simple Object<br />

Language), entretanto o escopo da linguagem foi reduzido, dai veio<br />

a inspiração; já que a linguagem seria algo menor do que o<br />

proposto inicialmente – SOL –, porque não se chamar Lua.<br />

Matrix-Matrix Multiplication<br />

Medium Access Control<br />

Mobile Ad hoc NETwork<br />

Mechanisms and ARchitectures for TeleINformatics<br />

Mobile Ad hoc Service GRID<br />

Monitoring and Discovery Service<br />

Mobile Information Device Profile<br />

Multiplicative Increase Linear Decrease<br />

Mobile Collaboration Architecture<br />

Mobile Grid<br />

National Chiao Tung University network simulator


NGG<br />

ns<br />

nsTOOL<br />

OGSA<br />

ORION<br />

OTcl<br />

OWL<br />

P2P<br />

P2PDP<br />

PDA<br />

QoS<br />

RAS<br />

RDS<br />

RNP<br />

RPC<br />

RSSI<br />

RTT<br />

RWP<br />

SLP<br />

SOAP<br />

SSDP<br />

TCP/IP<br />

TEP<br />

TIMELY<br />

TRAP<br />

TRAS<br />

UDP<br />

UPnP<br />

UUID<br />

VAN<br />

Wi-Fi<br />

WLAN<br />

WSDL<br />

XML<br />

Next Generation Grid<br />

network simulator<br />

ns dispaTcher and pOst-prOcessing Launcher<br />

Open Grid Services Architecture<br />

Optimized Routing Independent Overlay Network<br />

Object Tool Command Language<br />

Ontology Web Language<br />

Peer-to-Peer<br />

P2P Discovery Protocol<br />

Personal Digital Assistant<br />

Quality of Service<br />

Resource Access Service (MASGRID)<br />

Resource Discovery Service (MASGRID)<br />

Rede Nacional de Pesquisa<br />

Remote Procedure Call<br />

Radio Signal Strength Indications<br />

Round-trip Time<br />

Random WayPoint<br />

Service Location Protocol<br />

Simple Object Access Protocol<br />

Simple Service Discovery Protocol<br />

Transmission Control Protocol/Internet Protocol<br />

Tabela de Execuções Pendentes<br />

The Illinois Mobile Environment LaboratorY<br />

Transparent Resource Access Protocol<br />

Transparent Resource Access Sublayer<br />

User Datagram Protocol<br />

Universal Plug and Play<br />

Universally Unique IDentifier<br />

Vehicular Area Networks<br />

Wireless Fidelity<br />

Wireless Local Area Network<br />

Web Services Description Language<br />

eXtensible Markup Language


1<br />

Introdução<br />

1.1.<br />

Motivação<br />

Grades computacionais são a nova tendência em computação distribuída<br />

[Foster 2003]. Originalmente concebido como um conceito <strong>para</strong> o<br />

compartilhamento de recursos computacionais e de comunicação entre nós fixos,<br />

o conceito de grade tem, gradativamente, sido estendido <strong>para</strong> ambientes móveis<br />

[KGrid 2002; Yamin et al. 2003; Akogrimo 2004; Kurkovsky et al. 2004;<br />

McKnight et al. 2004; Litke et al. 2004; Ihsan et al 2005; <strong>Lima</strong> et al. 2005].<br />

Existem duas abordagens principais <strong>para</strong> a integração de redes sem fio em<br />

ambientes de grades computacionais. Na primeira abordagem, dispositivos móveis<br />

são usa<strong>dos</strong> apenas como interfaces <strong>para</strong> acesso sem fio às grades fixas<br />

convencionais [Hwang & Aravamudham 2004]. Na segunda abordagem,<br />

dispositivos móveis atuam como elementos computacionais da grade<br />

propriamente dita, disponibilizando os seus recursos e serviços, ou seja, esses<br />

dispositivos são responsáveis pelo processamento compartilhado e pela execução<br />

colaborativa de tarefas. Essa segunda abordagem, denominada nesta tese de<br />

grades móveis, é propiciada pela tendência atual de utilização de dispositivos<br />

móveis com capacidade de processamento e comunicação cada vez maiores, mas<br />

cujo uso atual tem sido predominantemente pessoal.<br />

O maior desafio colocado pelas grades móveis é o compartilhamento de<br />

recursos dinâmicos – como capacidade de processamento e memória – <strong>dos</strong><br />

dispositivos móveis, considerando-se as limitações <strong>dos</strong> mesmos em termos desses<br />

recursos e de outros recursos envolvi<strong>dos</strong> – como fonte limitada de energia. Esse<br />

compartilhamento permite que um usuário, através de seu dispositivo móvel,<br />

possa interagir com dispositivos de outros usuários, utilizando os recursos<br />

computacionais dinâmicos e de comunicação desses dispositivos <strong>para</strong> a execução<br />

de tarefas complexas, que demandam maior capacidade computacional. Esse


Introdução 25<br />

compartilhamento só é possível através da utilização de arquiteturas e protocolos<br />

que permitam a identificação e seleção <strong>dos</strong> recursos e serviços computacionais<br />

oferta<strong>dos</strong> na grade móvel. Essa perspectiva de compartilhamento cria formas<br />

inovadoras de utilização <strong>dos</strong> dispositivos sem fio, como, por exemplo, em<br />

situações de emergência, com a coordenação da tomada de decisões na gestão de<br />

crises provocadas por causas naturais – como terremotos e maremotos – ou pela<br />

ação do homem – como em atenta<strong>dos</strong> terroristas de grandes dimensões –, onde<br />

não existe uma infra-estrutura de comunicação ou a infra-estrutura existente não<br />

está disponível. Esses exemplos ilustram a necessidade de grades móveis<br />

[McKnight et al. 2004]. Em tais situações, o compartilhamento <strong>dos</strong> recursos<br />

computacionais <strong>dos</strong> dispositivos móveis é crucial <strong>para</strong> que se obtenha, em tempo<br />

hábil, formas de trabalho colaborativo, como, por exemplo, através da coleta e do<br />

processamento automático de informações sobre grandes grupos de pessoas<br />

feridas, de modo a promover uma melhor alocação <strong>dos</strong> recursos médicos<br />

disponíveis [Hwang & Aravamudham 2004].<br />

<strong>Um</strong>a condição extrema de funcionamento de grades móveis ocorre nas redes<br />

sem fio ad hoc (Mobile Ad hoc NETworks – MANETs). Essas redes são<br />

caracterizadas pela total ausência de infra-estrutura, onde to<strong>dos</strong> os dispositivos<br />

participantes são móveis e a topologia da rede é formada temporariamente, de<br />

forma dinâmica e independente, com os dispositivos podendo participar ou sair da<br />

grade móvel a qualquer momento, formando cenários de compartilhamento<br />

temporários. Os desafios relaciona<strong>dos</strong> a essas redes são ainda maiores quando se<br />

consideram cenários de saltos múltiplos. Em MANETs de saltos múltiplos, tanto a<br />

demanda quanto a disponibilidade de serviços e recursos podem apresentar uma<br />

alta variabilidade, em com<strong>para</strong>ção com os cenários encontra<strong>dos</strong> nas redes fixas e<br />

redes sem fio infra-estruturadas. A Figura 1 ilustra a formação de uma grade<br />

móvel ad hoc através de uma MANET de saltos múltiplos mostrando como um<br />

grupo de dispositivos móveis, localiza<strong>dos</strong> em uma mesma região geográfica<br />

[Figura 1(a)], interconectam-se. Na Figura 1(b), cada círculo tracejado representa<br />

o alcance de transmissão do nó posicionado no seu centro.


Introdução 26<br />

( a ) Dispositivos co-localiza<strong>dos</strong> ( b ) Formação de topologia temporária<br />

Figura 1 – Formação de uma grade móvel pela proximidade geográfica <strong>dos</strong> dispositivos.<br />

1.2.<br />

Requisitos <strong>para</strong> a <strong>Descoberta</strong> de Serviços em Grades Móveis ad hoc<br />

O mecanismo de descoberta de serviços é um elemento fundamental em<br />

ambientes computacionais auto-organizáveis e, em particular, nas grades móveis<br />

ad hoc. De uma forma geral, protocolos de descoberta de serviços viabilizam a<br />

detecção automática de dispositivos e <strong>dos</strong> serviços ofereci<strong>dos</strong> por esses<br />

dispositivos em uma rede de computadores [Marin-Perianu et al. 2005; Mian et al.<br />

2006]. Em outras palavras, descoberta de serviços corresponde à ação de<br />

encontrar um provedor <strong>para</strong> um serviço requisitado. <strong>Um</strong> serviço, em uma rede,<br />

pode ser qualquer entidade de software ou hardware que um usuário deseje<br />

utilizar. Quando a localização do serviço solicitado é obtida – tipicamente o<br />

endereço do provedor –, o usuário pode, posteriormente, acessá-lo <strong>para</strong> sua<br />

utilização.<br />

Nos ambientes de grade, os serviços são caracteriza<strong>dos</strong> como uma<br />

composição de recursos computacionais altamente dinâmicos. A disponibilidade<br />

desses recursos está sujeita a variações abruptas, como é o caso, por exemplo, da<br />

carga de CPU, cuja distribuição é bimodal, apresentando picos de utilização, ao<br />

longo do tempo, que variam entre carga total (100% de utilização) e valores<br />

próximos à inatividade [Bolosky et al. 2000]. Além disso, a flutuação verificada<br />

na disponibilidade <strong>dos</strong> recursos dinâmicos pode variar consideravelmente em<br />

perío<strong>dos</strong> curtos de tempo. Nas grades móveis, particularmente, essa característica<br />

é agravada em função da mobilidade <strong>dos</strong> dispositivos e da sua heterogeneidade, o


Introdução 27<br />

que se reflete na capacidade, em termos de recursos, <strong>dos</strong> mesmos. Em redes sem<br />

fio, a taxa de mobilidade pode ser elevada e o tempo de permanência <strong>dos</strong><br />

dispositivos na grade é variável, caracterizando altas taxas de churn. 1 Portanto,<br />

além da constituição <strong>dos</strong> serviços como recursos dinâmicos, típico das grades<br />

computacionais, nas grades móveis é importante considerar também aspectos<br />

relaciona<strong>dos</strong> à mobilidade <strong>dos</strong> dispositivos, que caracterizam esses ambientes<br />

como altamente dinâmicos, onde se verifica uma flutuação constante na topologia<br />

da rede. Devido a esses fatores, um protocolo de descoberta de recursos e serviços<br />

<strong>para</strong> grades móveis deve ser primordialmente reativo, baseando-se no envio de<br />

requisições sob demanda [Frank & Karl 2004].<br />

Nesse ponto é necessário deixar claro o cenário alvo deste trabalho. A<br />

solução aqui apresentada <strong>para</strong> a descoberta e seleção de recursos dinâmicos, em<br />

muitos aspectos, é genérica <strong>para</strong> ambientes de grades computacionais,<br />

considerando-se que algumas adaptações sejam feitas, entretanto, a sua<br />

especificação foi concebida tendo como foco um ambiente <strong>para</strong> execução<br />

distribuída de tarefas entre dispositivos sem fio, organiza<strong>dos</strong> de forma ad hoc em<br />

uma grade móvel [McKnight et al. 2004; Kurkovsky et al. 2004;<br />

<strong>Lima</strong> et al. 2005]. Esse trabalho surgiu no contexto da arquitetura MoGrid<br />

(Mobile Grid) [<strong>Lima</strong> et al. 2005], apresentada em mais detalhes no Capítulo 2,<br />

que foi projetada com o intuito de facilitar o desenvolvimento de aplicações de<br />

grade <strong>para</strong> execução entre dispositivos móveis interconecta<strong>dos</strong> através de uma<br />

rede sem fio. É importante ressaltar que a solução proposta nesta tese foi avaliada<br />

somente no contexto das grades móveis.<br />

Do que foi exposto, pode-se destacar três requisitos principais que devem<br />

ser atendi<strong>dos</strong> por um protocolo de descoberta e seleção de recursos e serviços,<br />

especificado <strong>para</strong> uma grade móvel organizada através de uma rede sem fio ad<br />

hoc de saltos múltiplos, conforme será discutido nos próximos parágrafos: (i)<br />

reduzir o impacto do problema da implosão de mensagens de resposta a uma<br />

requisição, (ii) minimizar a ocorrência de colisões provocadas pelo aumento do<br />

tráfego de da<strong>dos</strong> no enlace sem fio – em virtude da transmissão de mensagens do<br />

1 Termo comumente empregado em redes P2P <strong>para</strong> definir a transitoriedade <strong>dos</strong> dispositivos, que


Introdução 28<br />

protocolo de descoberta – e (iii) realizar uma distribuição uniforme das<br />

requisições de serviço, promovendo um balanceamento de carga implícito através<br />

da seleção <strong>dos</strong> dispositivos mais aptos.<br />

Redução do impacto do problema da implosão de mensagens de resposta.<br />

É comum que ocorra uma sobrecarga nos dispositivos em protocolos de<br />

descoberta de serviços reativos, nos quais as requisições de serviço são feitas sob<br />

demanda e dá-se uma interação direta entre clientes e provedores de serviço. Essa<br />

sobrecarga é acarretada pela troca de mensagens de descoberta entre eles, tanto no<br />

que diz respeito ao seu processamento quanto no aumento do consumo de energia<br />

provocado pela sua transmissão. Como nas abordagens reativas a requisição é<br />

propagada na rede utilizando um mecanismo de difusão por broadcast, é esperado<br />

que os dispositivos que oferecem o serviço solicitado respondam prontamente,<br />

provocando uma implosão de mensagens de resposta [Duffield et al. 1999]. Esse<br />

problema é decorrente do volume potencialmente grande de respostas geradas<br />

pelos dispositivos provedores do serviço requisitado, situação essa que se agrava<br />

em redes de grande escala. Para aplacar os efeitos colaterais da transmissão por<br />

difusão, é necessária a utilização de um mecanismo capaz de reduzir o tráfego de<br />

mensagens de resposta na rede, levando em consideração o número de instâncias<br />

de serviço solicitadas pelo dispositivo requisitante. Essa redução deve considerar a<br />

adequação <strong>dos</strong> dispositivos respondentes em oferecer o serviço, promovendo uma<br />

estratégia de seleção das respostas com maior qualidade ao longo da rede. A<br />

solução <strong>para</strong> essa questão é obtida através de um mecanismo de supressão das<br />

respostas excedentes, que atua nos nós intermediários, conforme elas são<br />

encaminhadas na rede em direção ao dispositivo que solicitou o serviço.<br />

Redução do número de colisões provocadas pelo aumento do tráfego de<br />

mensagens de descoberta. A probabilidade de ocorrência de colisões pode crescer<br />

em decorrência do aumento de tráfego no enlace sem fio, provocado pela intensa<br />

troca de mensagens de controle – requisição e resposta – do protocolo de<br />

descoberta entre os dispositivos móveis. Nesse cenário, é verificado um alto<br />

índice de propagação de mensagens de requisição de descoberta na rede e, como<br />

conseqüência, um volume potencialmente grande de respostas, caracterizando,<br />

entram e saem do sistema a qualquer instante [Stutzbach & Rejaie 2006].


Introdução 29<br />

respectivamente, situações típicas de inundação e implosão de mensagens, o que<br />

provoca um aumento na probabilidade da ocorrência de colisões [Ni et al. 1999;<br />

Duffield et al. 1999; Tseng et al. 2003]. Para reduzir o impacto do problema<br />

descrito, além de adotar um mecanismo de supressão de respostas excedentes,<br />

como descrito no item anterior, faz-se necessário adotar um mecanismo de retardo<br />

programado que promova, implicitamente, um assincronismo no envio das<br />

mensagens de controle do protocolo de descoberta, propiciando, dessa forma, a<br />

redução do número de colisões dessas mensagens.<br />

Balanceamento de carga em função da distribuição das requisições de<br />

serviços. Para se obter uma distribuição uniforme de serviços entre os dispositivos<br />

da grade móvel, com um balanceamento de carga, deve-se considerar a alocação<br />

prévia <strong>dos</strong> recursos, efetuada através do envio de mensagens de resposta e da<br />

utilização <strong>dos</strong> serviços. Portanto, em uma grade móvel, o escalonamento deve<br />

adotar uma abordagem distribuída, podendo ser realizado em dois pontos<br />

distintos: no envio das requisições por serviços ou no encaminhamento das<br />

mensagens de respostas a essas requisições. Na primeira abordagem os<br />

dispositivos devem trocar periodicamente informações sobre a sua disponibilidade<br />

de recursos e serviços <strong>para</strong> que a entrega da requisição seja efetuada somente <strong>para</strong><br />

os dispositivos mais aptos, incorporando um mecanismo de anúncio ao protocolo<br />

de descoberta. Essa abordagem é descartada haja vista a defesa realizada no início<br />

desta seção por um mecanismo de descoberta exclusivamente reativo <strong>para</strong> as<br />

grades móveis. Na segunda abordagem, cada dispositivo qualifica a sua própria<br />

resposta em função da sua disponibilidade de recursos, ou seja, a partir do seu<br />

conhecimento sobre os recursos disponíveis localmente, sem depender do<br />

conhecimento da disponibilidade de recursos <strong>dos</strong> demais dispositivos da rede. Em<br />

um cenário com tantas restrições e tamanha dinamicidade da topologia de rede, é<br />

importante que, ao se efetuar uma requisição de serviço, possa haver uma seleção<br />

natural das melhores respostas, isto é, <strong>dos</strong> dispositivos mais aptos a atender às<br />

necessidades definidas na requisição. Sob a óptica desta tese, as melhores<br />

respostas são aquelas provenientes <strong>dos</strong> dispositivos com mais recursos<br />

disponíveis. Essas respostas são selecionadas no seu encaminhamento na rede,<br />

sendo privilegiadas em detrimento das demais, consideradas excedentes. A<br />

implementação do critério de seleção de respostas baseia-se na informação de


Introdução 30<br />

contexto de cada dispositivo. Nesta tese, entende-se por contexto toda informação<br />

que represente o estado <strong>dos</strong> dispositivos móveis, incluindo a qualidade do enlace<br />

sem fio, carga de CPU, carga residual da bateria, memória disponível e espaço de<br />

armazenamento em disco.<br />

1.3.<br />

Objetivos<br />

O objetivo desta tese é o desenvolvimento e a avaliação de desempenho de um<br />

protocolo de descoberta e seleção de recursos e serviços que atenda às<br />

necessidades das grades móveis, considerando fatores como a intermitência <strong>dos</strong><br />

enlaces sem fio e a variação na disponibilidade <strong>dos</strong> serviços. Para tanto, o<br />

protocolo de descoberta deve adotar uma abordagem reativa, em que os serviços<br />

são descobertos sob demanda pelos dispositivos requisitantes, através da difusão<br />

de mensagens de requisição, e as respostas são selecionadas enquanto são<br />

encaminhadas da sua origem até o nó requisitante.<br />

Nesta tese é proposta uma arquitetura descentralizada <strong>para</strong> atender a<br />

demanda das grades móveis organizadas através de redes sem fio ad hoc. Essa<br />

arquitetura, denominada MoGrid, foi projetada <strong>para</strong> oferecer um ambiente de<br />

descoberta e execução de serviços, defini<strong>dos</strong> como uma composição de recursos<br />

dinâmicos, em grades móveis, promovendo a distribuição, entre os dispositivos<br />

sem fio, da execução <strong>dos</strong> serviços requisita<strong>dos</strong>, adotando uma abordagem peer-topeer<br />

(P2P). Essa arquitetura compreende uma camada de descoberta e seleção de<br />

recursos e serviços e uma camada de transparência que trata as questões<br />

relacionadas à conectividade irregular da grade móvel. Durante o processo de<br />

especificação e implementação da arquitetura MoGrid, optou-se por concentrar o<br />

desenvolvimento desta tese na camada de descoberta e seleção de serviços, que,<br />

por si só, já possui uma complexidade considerável.<br />

Nesta tese, é proposto o P2PDP (Peer-to-Peer Discovery Protocol), um<br />

novo protocolo que integra os mecanismos de descoberta e seleção de recursos e<br />

serviços ao mecanismo de roteamento de pacotes de da<strong>dos</strong>, em uma abordagem<br />

completamente descentralizada, independente de um endereçamento de rede<br />

explícito, operando no nível da camada de aplicação. No caso de serviços não<br />

específicos, como ciclos de processamento e espaço de armazenamento, os quais,


Introdução 31<br />

tipicamente, podem ser ofereci<strong>dos</strong> por muitos dispositivos, a responsabilidade de<br />

prover o serviço é compartilhada entre os dispositivos que constituem a grade<br />

móvel. Esse compartilhamento é feito de modo uniforme, através do uso do<br />

protocolo P2PDP, tendo como critério de distribuição da tarefa de provisão de<br />

serviços a quantidade de recursos disponível em cada dispositivo. Já com os<br />

serviços de um tipo específico, como um serviço de impressão, em cuja requisição<br />

está implícita a necessidade do cliente por um único provedor do serviço, o<br />

objetivo do protocolo P2PDP é selecionar, dentre as possíveis respostas a<br />

requisição de serviço, aquela que melhor atenda às necessidades do cliente,<br />

considerando, também, em alguns casos, o nível de energia disponível, a<br />

qualidade do enlace sem fio e a proximidade física entre provedor e cliente,<br />

definida em função da distância em número de saltos.<br />

O protocolo de descoberta P2PDP atende às necessidades das grades<br />

móveis ad hoc, promovendo a descoberta de serviços sob demanda, em tempo de<br />

execução, acionada pela necessidade <strong>dos</strong> usuários. O processamento introduzido<br />

pelo P2PDP não promove gargalos na sua execução e nem gera uma sobrecarga<br />

administrativa nos dispositivos da rede, o que se verifica pelo fraco acoplamento<br />

entre as entidades envolvidas no processo de descoberta – provedores de serviços<br />

e clientes –, as quais entram e saem da rede, a qualquer instante, sem que isso<br />

comprometa o funcionamento do mecanismo de descoberta. O protocolo P2PDP<br />

foi desenvolvido no contexto da arquitetura MoGrid, com o intuito de facilitar o<br />

desenvolvimento de aplicações colaborativas, baseadas no compartilhamento de<br />

recursos dinâmicos, <strong>para</strong> a execução de serviços na grade móvel. A arquitetura<br />

MoGrid é apresentada em mais detalhes no Capítulo 2.<br />

A avaliação do protocolo proposto foi realizada em duas frentes. A primeira<br />

corresponde a sua implementação, dentro de um middleware <strong>para</strong> grades móveis,<br />

e, subseqüentemente, a sua utilização no desenvolvimento de aplicações-protótipo<br />

<strong>para</strong> essas grades; nessa frente, é realizada uma avaliação experimental do<br />

protocolo através da análise do seu funcionamento em cenários reais,<br />

representa<strong>dos</strong> por redes de teste. A segunda frente diz respeito à realização de<br />

simulações <strong>para</strong> avaliar o seu desempenho em cenários de maior escala.


Introdução 32<br />

1.4.<br />

Sumário das Principais Contribuições<br />

Esta tese apresenta o projeto, implementação e avaliação de desempenho de um<br />

protocolo <strong>para</strong> descoberta e seleção de recursos e serviços, especificamente<br />

desenvolvido <strong>para</strong> atender às necessidades das grades móveis ad hoc: o protocolo<br />

P2PDP (Peer-to-peer Discovery Protocol). As principais contribuições alcançadas<br />

na área de descoberta de serviços, com o desenvolvimento deste trabalho, podem<br />

ser classificadas em duas categorias: contribuições <strong>para</strong> o estado da arte e<br />

contribuições tecnológicas.<br />

Contribuições <strong>para</strong> o estado da arte<br />

O desenvolvimento desta tese teve como resultado duas contribuições<br />

principais <strong>para</strong> o estado da arte na área de descoberta de serviços, a especificação<br />

do protocolo P2PDP e da arquitetura MoGrid, a saber:<br />

• A concepção, implementação e avaliação de desempenho do algoritmo de<br />

supressão de respostas por vizinhança (Suppression by Vicinity – SbV),<br />

que permite tratar o problema da implosão de respostas em protocolos de<br />

descoberta <strong>para</strong> MANETs, basea<strong>dos</strong> na transmissão por difusão,<br />

utilizando broadcast;<br />

• A concepção, implementação e avaliação de desempenho do algoritmo de<br />

retardo programado no envio de mensagens de resposta (Delayed Replies<br />

– DR), com o intuito de promover uma seleção natural entre as respostas<br />

que melhor se adequam às especificidades de uma dada requisição de<br />

serviço;<br />

• Especificação de um conjunto de requisitos <strong>para</strong> o desenvolvimento de um<br />

protocolo <strong>para</strong> descoberta e seleção de recursos e serviços em grades<br />

móveis ad hoc. Os requisitos do projeto do protocolo de descoberta levam<br />

em consideração as particularidades <strong>dos</strong> recursos computacionais<br />

dinâmicos, que caracterizam os serviços disponíveis em uma grade móvel;<br />

• Definição de uma arquitetura genérica em camadas, denominada MoGrid,<br />

que serviu de base <strong>para</strong> o desenvolvimento de um middleware, de mesmo


Introdução 33<br />

nome, que trata aspectos relaciona<strong>dos</strong> à computação distribuída em grades<br />

móveis, organizadas através de redes sem fio infra-estruturadas e ad hoc.<br />

Contribuições tecnológicas<br />

Além das contribuições científicas <strong>para</strong> o estado da arte, foi desenvolvido<br />

um conjunto de artefatos de software <strong>para</strong> auxiliar o desenvolvimento de<br />

aplicações colaborativas, em grades móveis, baseadas no compartilhamento de<br />

recursos e serviços, a saber:<br />

• Implementação do middleware MoGrid e do protocolo de descoberta<br />

P2PDP;<br />

• Implementação de um proxy de colaboração com a funcionalidade de<br />

permitir o acesso de dispositivos sem fio aos serviços e recursos<br />

disponíveis em uma grade fixa;<br />

• Uso do middleware MoGrid <strong>para</strong> o desenvolvimento de aplicações<br />

colaborativas, baseadas no compartilhamento de serviços gerenciado pelo<br />

protocolo P2PDP.<br />

1.5.<br />

Organização da Tese<br />

O restante desta tese está organizada como se segue:<br />

O Capítulo 2 contextualiza este trabalho apresentando a arquitetura MoGrid,<br />

projetada com o intuito de oferecer suporte ao desenvolvimento de aplicações<br />

baseadas no compartilhamento de recursos em grades móveis, <strong>para</strong> a tomada de<br />

decisões referentes à descoberta e ao acesso a esses recursos. A arquitetura<br />

compreende uma camada de descoberta de serviços peer-to-peer – na qual foi<br />

desenvolvido o protocolo de descoberta P2PDP, proposto nesta tese – e uma<br />

camada de transparência – que lida com problemas relaciona<strong>dos</strong> a perío<strong>dos</strong> de<br />

desconexão durante os processos de descoberta de recursos, submissão e execução<br />

de tarefas. Ao final do capítulo, são apresenta<strong>dos</strong> os trabalhos relaciona<strong>dos</strong> que<br />

dizem respeito a arquiteturas de grades móveis.<br />

O Capítulo 3 é reservado aos trabalhos relaciona<strong>dos</strong> à área-tema desta tese –<br />

descoberta de serviços <strong>para</strong> redes sem fio ad hoc –, que é feita tendo como base


Introdução 34<br />

uma classificação genérica proposta <strong>para</strong> os protocolos de descoberta de serviços<br />

em redes de computadores. Na revisão bibliográfica é dada uma maior ênfase aos<br />

trabalhos que tratam, especificamente, da descoberta de serviços em redes sem fio<br />

ad hoc de saltos múltiplos, abordagem similar à adotada no protocolo P2PDP. Ao<br />

final do capítulo, tem-se um resumo com<strong>para</strong>tivo, que utiliza os critérios<br />

enumera<strong>dos</strong> na classificação apresentada, incluindo os principais protocolos<br />

desenvolvi<strong>dos</strong> <strong>para</strong> as redes fixas que foram adapta<strong>dos</strong> às redes sem fio infraestruturadas,<br />

os protocolos <strong>para</strong> as redes sem fio ad hoc de salto único e os<br />

protocolos <strong>para</strong> as redes sem fio de saltos múltiplos.<br />

No Capítulo 4, é apresentado o protocolo <strong>para</strong> descoberta e seleção de<br />

recursos em grades móveis ad hoc, denominado P2PDP (Peer-to-Peer Discovery<br />

Protocol), sendo o foco principal deste trabalho. O núcleo do protocolo se baseia<br />

em um mecanismo distribuído, que emprega dois algoritmos principais: o<br />

algoritmo de supressão de mensagens de resposta por vizinhança (Suppression by<br />

Vicinity) e o algoritmo de retardo programado no envio de mensagens de resposta<br />

(Delayed Replies). Esses algoritmos oferecem uma estratégia <strong>para</strong> reduzir a<br />

implosão e a colisão de respostas em grades móveis ad hoc, além de proporcionar<br />

um mecanismo de seleção das melhores respostas às requisições de serviço.<br />

O Capítulo 5 é dedicado às questões relacionadas à implementação do<br />

protocolo P2PDP, trazendo as decisões de projeto quanto às tecnologias<br />

utilizadas, além de alguns diagramas de classe e de seqüência, com o intuito de<br />

facilitar a compreensão do comportamento das entidades envolvidas no processo<br />

de descoberta e seleção de recursos. Esse capítulo traz maiores detalhes sobre a<br />

utilização do protocolo P2PDP e da API fornecida pela arquitetura MoGrid no<br />

desenvolvimento de três aplicações colaborativas diferenciadas. <strong>Um</strong> cenário de<br />

simulação é utilizado <strong>para</strong> atestar a correção da implementação da arquitetura<br />

MoGrid e do protocolo P2PDP.<br />

No Capítulo 6, é feita a avaliação de desempenho do protocolo P2PDP por<br />

meio da interpretação <strong>dos</strong> resulta<strong>dos</strong> obti<strong>dos</strong> a partir das simulações e da rede de<br />

teste. Diferentes cenários foram utiliza<strong>dos</strong> com a variação de parâmetros, como o<br />

tamanho da rede, a densidade de dispositivos, o raio de transmissão, o impacto de<br />

diferentes taxas de requisição, o percentual de dispositivos atuando como<br />

provedores de serviço, entre outros.


Introdução 35<br />

Finalmente, no Capítulo 7, são tecidas as considerações finais, com destaque<br />

<strong>para</strong> as contribuições decorrentes deste trabalho e a apresentação de problemas<br />

não trata<strong>dos</strong>, mas que podem gerar trabalhos futuros interessantes.<br />

O Apêndice traz alguns detalhes sobre as simulações executadas <strong>para</strong> avaliar<br />

a correção e o desempenho do protocolo de descoberta P2PDP e do middleware<br />

MoGrid.


2<br />

A Arquitetura MoGrid<br />

2.1.<br />

Introdução<br />

Na etapa de definição do tema desta tese, foi proposta uma arquitetura em<br />

camadas, denominada MoGrid, que permite a distribuição de tarefas entre os<br />

dispositivos que constituem uma grade móvel. Essa arquitetura trata aspectos<br />

relaciona<strong>dos</strong> à computação distribuída em redes sem fio, constituídas por grupos<br />

de dispositivos móveis, que atuam, colaborativamente, <strong>para</strong> a execução de tarefas<br />

e utilização de serviços e recursos. As duas camadas que compõem a arquitetura<br />

MoGrid especificam os mecanismos associa<strong>dos</strong> à descoberta de serviços e ao<br />

acesso transparente aos mesmos. Através da abordagem em camadas, os<br />

diferentes mecanismos relaciona<strong>dos</strong> ao compartilhamento e à utilização de<br />

serviços são se<strong>para</strong><strong>dos</strong>, podendo ser utiliza<strong>dos</strong> como módulos independentes,<br />

acopla<strong>dos</strong>, inclusive em outras arquiteturas.<br />

<strong>Um</strong> aspecto central <strong>para</strong> a arquitetura proposta é o mecanismo responsável<br />

pela descoberta de serviços, modelado através do protocolo P2PDP. Esse<br />

protocolo coordena a distribuição de tarefas entre os dispositivos sem fio,<br />

associando a “necessidade” por recursos com a “disponibilidade” <strong>dos</strong> mesmos, em<br />

cada possível colaborador na rede – o que caracteriza o conceito de resource<br />

matching. Durante o processo de especificação e implementação da arquitetura<br />

MoGrid, optou-se por concentrar o desenvolvimento desta tese na camada de<br />

descoberta de serviços, que, por si só, já possui uma complexidade considerável.<br />

A camada de transparência de acesso atua sobre os resulta<strong>dos</strong> obti<strong>dos</strong> através do<br />

processo de descoberta, garantindo a utilização <strong>dos</strong> serviços e recursos<br />

descobertos, em meio a perío<strong>dos</strong> de desconexão de provedores de serviços e seus<br />

clientes. A decisão de focar o trabalho desenvolvido nesta tese na camada de<br />

descoberta tem como intuito oferecer um mecanismo robusto e confiável de<br />

descoberta de serviços, sob o qual a camada de transparência possa atuar.


A Arquitetura MoGrid 37<br />

2.2.<br />

Modelo de Serviços da Arquitetura MoGrid<br />

Pode-se afirmar que um modelo de serviços <strong>para</strong> grades móveis deve considerar<br />

uma das seguintes abordagens: (i) os dispositivos sem fio atuando como interfaces<br />

de acesso aos recursos disponibiliza<strong>dos</strong> por grades computacionais convencionais<br />

ou (ii) os dispositivos sem fio atuando como elementos computacionais da grade<br />

disponibilizando os seus recursos e serviços. A segunda abordagem corresponde<br />

ao modelo de serviços adotado nesta tese. Esse modelo oferece suporte à categoria<br />

de aplicações que consideram a formação de grupos de dispositivos heterogêneos<br />

e autônomos em uma rede sem fio, em um modo ad hoc. Nessa linha, são<br />

apresenta<strong>dos</strong> diversos cenários de uso no levantamento efetuado em [<strong>Lima</strong> 2005],<br />

os quais ilustram o modelo de serviços adotado nesta tese.<br />

Alguns aspectos devem ser considera<strong>dos</strong> em função do modelo de serviços<br />

definido, os quais serão brevemente discuti<strong>dos</strong> nos parágrafos subseqüentes.<br />

• Perfil <strong>dos</strong> dispositivos. A arquitetura MoGrid foi desenvolvida<br />

considerando-se tanto dispositivos com restrições em relação aos recursos<br />

a serem compartilha<strong>dos</strong> – caracteriza<strong>dos</strong> por apresentar conexões de rede<br />

intermitentes, largura de banda limitada, processadores lentos, visores de<br />

dimensões reduzidas, tempo de autonomia de bateria e memória<br />

limita<strong>dos</strong>, como alguns modelos de celulares, pagers, e PDAs –, os quais<br />

atuam na arquitetura apenas como consumidores de recursos, ou seja,<br />

desempenhando o papel de iniciador das requisições de serviço, quanto<br />

dispositivos com uma configuração de hardware mais potente,<br />

apresentando uma maior disponibilidade de recursos e uma conectividade<br />

mais estável – como notebooks e modelos mais modernos de celulares e<br />

PDAs –, os quais desempenham simultaneamente os papéis de produtores<br />

e consumidores de recursos, atuando, respectivamente, como<br />

colaboradores e iniciadores. É importante ressaltar que a arquitetura<br />

MoGrid oferece suporte às plataformas Windows e Linux;<br />

• Suposições sobre a rede sem fio. A arquitetura MoGrid é independente<br />

de um endereçamento de rede explícito, a identificação <strong>dos</strong> dispositivos é<br />

feita através de um identificador único associado dinamicamente a cada<br />

dispositivo, o que possibilita que a arquitetura opere sem a necessidade de


A Arquitetura MoGrid 38<br />

um protocolo de roteamento, adaptando-se com poucas modificações a<br />

qualquer tipo de rede sem fio. Os dispositivos devem ser interconecta<strong>dos</strong><br />

através de enlaces sem fio bidirecionais, o que possibilita o envio e a<br />

recepção de da<strong>dos</strong> entre dois dispositivos quaisquer na rede. Para<br />

possibilitar a detecção de vizinhança, os dispositivos devem ser capazes<br />

de transmitir pacotes de da<strong>dos</strong> os seus vizinhos imediatos, por broadcast<br />

local. A latência de transmissão da rede pode interferir de forma negativa<br />

no desempenho da arquitetura MoGrid. Considerações a respeito de<br />

falhas e interferências relacionadas ao enlace sem fio encontram-se na<br />

Seção 2.4;<br />

• Perfil de mobilidade <strong>dos</strong> dispositivos. A arquitetura MoGrid foi<br />

especificada <strong>para</strong> prover suporte a grupos de dispositivos móveis em<br />

cenários de mobilidade moderada que reproduzam a mobilidade humana,<br />

deslocando-se com uma velocidade média de até 4 m/s. Em cenários de<br />

alta mobilidade, as taxas de churn são muito elevadas, o que inviabiliza a<br />

formação de grupos espontâneos por um período de tempo suficiente <strong>para</strong><br />

contemplar o processamento envolvido nas etapas de descoberta, seleção,<br />

submissão e execução de tarefas, etapas essas que caracterizam uma grade<br />

computacional, móvel ou fixa;<br />

• Suposições sobre os serviços. A arquitetura MoGrid se adequa a<br />

execução de tarefas distribuídas <strong>para</strong>lelizadas, que não apresentem<br />

relações de interdependência, caracterizadas no ambiente de grades fixas<br />

por uma abordagem mestre-escravo, também conhecida como bag-oftasks.<br />

Para deixar claro os conceitos de serviço, tarefa e recurso na<br />

arquitetura MoGrid, é utilizada a ilustração de um dispositivo que precisa<br />

executar uma bateria de simulações, considerando-se um cenário ideal.<br />

Para que a simulação seja executada, é necessário que os dispositivos na<br />

grade possuam instalado o simulador no qual a simulação foi<br />

desenvolvida. Nesse caso, o serviço solicitado é o “serviço de simulação”;<br />

as tarefas correspondem a cada rodada que compõe a bateria de<br />

simulações, as quais devem ser distribuídas entre os dispositivos mais<br />

aptos, ou seja, com mais recursos disponíveis; e os recursos – que no<br />

exemplo da simulação podem ser ,


A Arquitetura MoGrid 39<br />

e – determinam em função da sua disponibilidade se os<br />

dispositivos estão aptos ou não a executar as rodadas de simulação;<br />

• Requisitos de QoS. A arquitetura MoGrid deve prover um nível aceitável<br />

de QoS na execução <strong>dos</strong> serviços disponibiliza<strong>dos</strong> na grade móvel que<br />

reflita a percepção de qualidade do usuário do serviço. Para tanto, é<br />

necessário que os colaboradores ofereçam garantias mínimas sobre a<br />

disponibilidade de seus recursos ao responderem a uma requisição de<br />

descoberta de serviço. Essas garantias são expressas através de requisitos<br />

de QoS. Na arquitetura MoGrid esses requisitos são especifica<strong>dos</strong> em<br />

função das informações de contexto do dispositivo que disponibiliza o<br />

serviço. Ao receber uma requisição, o dispositivo avalia, em função das<br />

informações de contexto priorizadas pelo cliente, se ele está ou não em<br />

condições de oferecer o serviço. Por exemplo, ao submeter suas tarefas<br />

<strong>para</strong> execução em uma grade móvel, uma aplicação de longa duração,<br />

com consumo elevado de CPU, pode especificar os recursos , , e como<br />

requisitos de execução. Além disso, a aplicação pode ainda estabelecer<br />

diferentes níveis de prioridade entre esses recursos, associando um peso<br />

relativo a cada um deles, podendo definir, por exemplo, que o requisito<br />

é mais importante do que o requisito<br />

na escolha do dispositivo que irá<br />

executar a tarefa. No tratamento de requisições concorrentes, <strong>para</strong> que<br />

garantias mínimas de QoS sejam oferecidas, implementou-se um<br />

mecanismo de adaptação simples, que reduz o indicador da disposição do<br />

dispositivo em colaborar em função do aumento do número de<br />

requisições pendentes (vide Subseção 2.3.1.2 e Seção 4.5). É importante<br />

mencionar que no instante em que o serviço for de fato utilizado, o<br />

provedor do serviço não tem meios de garantir que as mesmas condições<br />

irão se verificar. Após a fase de descoberta, podem ocorrer alterações no<br />

estado de qualquer um <strong>dos</strong> recursos considera<strong>dos</strong>, comprometendo a<br />

submissão ou execução do serviço solicitado, entretanto, esse tópico não é<br />

o foco deste trabalho. O tempo de descoberta aceitável foi especificado


A Arquitetura MoGrid 40<br />

em 10 s, que corresponde ao período que transcorre entre o envio da<br />

requisição e o recebimento das primeiras respostas pelo nó requisitante;<br />

• Segurança. A questão da segurança é especialmente relevante na<br />

integração das grades móveis com as grades fixas. Entretanto, aspectos<br />

relaciona<strong>dos</strong> à segurança não foram especifica<strong>dos</strong> na arquitetura MoGrid,<br />

os quais devem ser incorpora<strong>dos</strong> como trabalhos futuros.<br />

2.3.<br />

<strong>Um</strong> Middleware <strong>para</strong> Grades Móveis<br />

A arquitetura MoGrid foi especificada tendo como finalidade oferecer suporte ao<br />

desenvolvimento de aplicações de grade em redes sem fio infra-estruturadas e ad<br />

hoc, possibilitando aos dispositivos sem fio executar tarefas computacionalmente<br />

complexas utilizando os recursos disponíveis na grade móvel. Nesse processo<br />

foram identifica<strong>dos</strong> dois aspectos principais: (i) a descoberta e seleção <strong>dos</strong><br />

dispositivos mais aptos a executar as tarefas na grade móvel, em função das<br />

necessidades por recursos definidas na aplicação, e (ii) o gerenciamento da<br />

execução dessas tarefas, garantindo a sua conclusão mesmo mediante variações na<br />

qualidade do enlace sem fio e perío<strong>dos</strong> de desconexão <strong>dos</strong> dispositivos da grade<br />

móvel. A arquitetura MoGrid compreende uma camada de descoberta peer-topeer<br />

e uma camada de transparência, como se pode observar na Figura 2.<br />

Figura 2 – Arquitetura MoGrid.<br />

A arquitetura MoGrid possibilita a descoberta simultânea de múltiplas<br />

instâncias de um mesmo serviço, possibilitando a manutenção de um grau de<br />

redundância do mesmo. Essa abordagem é indicada <strong>para</strong> atender a demanda das<br />

grades móveis na execução de tarefas complexas, que demandam maior<br />

capacidade computacional, situação na qual, assim como nas grades


A Arquitetura MoGrid 41<br />

computacionais fixas, o serviço provido é o próprio poder de processamento <strong>dos</strong><br />

dispositivos.<br />

A arquitetura oferece suporte a dois tipos principais de aplicações: (i)<br />

aplicações de grade cientes da mobilidade <strong>dos</strong> dispositivos e (ii) aplicações<br />

convencionais de grade, como transferência particionada de arquivos e aplicações<br />

do tipo mestre-escravo, <strong>para</strong> as quais o uso da arquitetura deve ser transparente. O<br />

primeiro tipo de aplicação faz uso direto <strong>dos</strong> serviços ofereci<strong>dos</strong> pela camada de<br />

descoberta e se responsabiliza, durante a submissão e execução de tarefas, pela<br />

gerência de questões relacionadas à conectividade irregular da grade móvel. No<br />

segundo tipo de aplicação, as questões são tratadas pela camada de transparência,<br />

que se responsabiliza também por acionar o serviço de descoberta.<br />

2.3.1.<br />

Camada de <strong>Descoberta</strong> P2P<br />

A camada de descoberta P2P é composta de três partes principais: a API de<br />

descoberta, as entidades envolvidas no processo de descoberta e o protocolo de<br />

descoberta e seleção de recursos P2PDP (Peer-to-Peer Discovery Protocol), o<br />

qual é apresentado em detalhes no Capítulo 4.<br />

2.3.1.1.<br />

API de <strong>Descoberta</strong><br />

Aplicações executando em um dispositivo móvel devem usar as operações<br />

disponíveis na API de descoberta – diretamente ou através da camada de<br />

transparência – <strong>para</strong> usufruir <strong>dos</strong> benefícios <strong>dos</strong> mecanismos de descoberta e<br />

seleção de serviços da arquitetura. A API de descoberta provê, às aplicações,<br />

operações <strong>para</strong> registro de serviços, anúncio de serviços, especificação do perfil<br />

da requisição e descoberta de serviços. A Figura 3 mostra as principais operações<br />

desta API.<br />

Figura 3 – API de descoberta.


A Arquitetura MoGrid 42<br />

Para que um serviço torne-se acessível na grade móvel, o dispositivo que<br />

provê o serviço faz o seu registro localmente, através da operação register().<br />

Na arquitetura MoGrid, cada serviço é descrito por meio de um conjunto de<br />

atributos (serviceDescriptor), que é passado como parâmetro da operação<br />

register(). Esse conjunto de atributos define uma representação padronizada<br />

<strong>para</strong> to<strong>dos</strong> os serviços na grade móvel através de um identificador único universal,<br />

uma descrição sucinta do serviço, um conjunto de palavras-chave e a sua<br />

localização, como ilustrado na Figura 4. O identificador único universal de um<br />

serviço é definido como um valor de 16 bytes gerado a partir da combinação da<br />

identificação do nó que o disponibiliza, do identificador mnemônico do serviço e<br />

do tempo corrente do sistema. Através da operação deregister(), é possível<br />

efetuar a remoção <strong>dos</strong> serviços registra<strong>dos</strong> localmente, passando como parâmetro<br />

o seu identificador único universal (serviceID).<br />

Figura 4 – Estrutura do parâmetro serviceDescriptor.<br />

<strong>Um</strong> serviço registrado pode ser anunciado periodicamente na grade móvel<br />

(operação advertise()) – em uma abordagem proativa –, ou as informações<br />

sobre o novo serviço disponível podem ser obtidas sob demanda como resultado<br />

das requisições das aplicações <strong>para</strong> descoberta de serviços (operação discover())<br />

– em uma abordagem reativa. Caso as duas abordagens sejam adotadas é<br />

caracterizado um mecanismo híbrido de descoberta de serviços.<br />

No processo de descoberta, é necessária a descrição da requisição de serviço<br />

(resourceQuery), que é passada como parâmetro da operação discover(). A<br />

requisição contém uma descrição sucinta do serviço e um conjunto de palavraschave<br />

associadas ao mesmo. Esses atributos são com<strong>para</strong><strong>dos</strong>, em cada dispositivo,<br />

com as informações sobre os serviços por ele ofereci<strong>dos</strong>, informações estas<br />

registradas em uma estrutura de da<strong>dos</strong> local, cujas entradas correspondem a pares<br />

do tipo {serviceID, serviceDescriptor}. A API permite ainda que as<br />

aplicações personalizem previamente suas requisições <strong>para</strong> descoberta de serviços<br />

(operação createRequestProfile()), gerando um perfil da requisição<br />

(reqProfile), que será informado na operação de descoberta (discover()). Essa<br />

personalização é útil quando são geradas várias requisições a serviços com as


A Arquitetura MoGrid 43<br />

mesmas características, evitando que as mesmas informações sejam passadas em<br />

cada requisição. O perfil da requisição define o número de colaboradores que o<br />

iniciador necessita envolver na execução do serviço (numMaxReplies; zero<br />

significa tantos colaboradores quanto os disponíveis na rede sem fio), por quanto<br />

tempo a aplicação está disposta a esperar por respostas (maxReplyDelay 1 ) e a<br />

informação de contexto de interesse (ctxtInfo). A informação de contexto de<br />

interesse determina quais recursos devem ser considera<strong>dos</strong> em uma requisição e a<br />

importância relativa entre eles, sendo denominado de “perfil de execução”. As<br />

informações contidas no perfil de execução são utilizadas no cálculo do retardo<br />

programado associado ao envio das mensagens de resposta do protocolo de<br />

descoberta. O retardo gerado é inversamente proporcional à disponibilidade <strong>dos</strong><br />

recursos do dispositivo que são necessários <strong>para</strong> a provisão do serviço solicitado.<br />

Esse parâmetro é utilizado no processo de seleção <strong>para</strong> medir a qualidade das<br />

respostas encaminhadas, identificando o grupo de colaboradores mais aptos,<br />

dentre aqueles que se prontificaram a oferecer o serviço.<br />

O conceito de perfil de execução proposto na arquitetura MoGrid é similar<br />

ao conceito de “resource matching” [Tangmunarunkit et al. 2003; Farooq &<br />

Khalil 2006] da área de grades computacionais, o qual define a seleção do grupo<br />

de dispositivos que irá colaborar na execução de um conjunto de tarefas, com base<br />

nos recursos disponíveis em cada elemento do grupo, considerando-se os<br />

requisitos da aplicação. A informação de perfil de execução é um parâmetro<br />

importante durante o processo de seleção na arquitetura MoGrid, pois reflete os<br />

requisitos do serviço que devem ser considera<strong>dos</strong> ao se medir a qualidade das<br />

mensagens de resposta a uma dada requisição. Contudo, após a fase de descoberta,<br />

podem ocorrer alterações no estado de qualquer um <strong>dos</strong> recursos considera<strong>dos</strong> no<br />

perfil de execução de um dado serviço que venham a comprometer a submissão<br />

ou execução das tarefas. As aplicações que fazem uso direto <strong>dos</strong> serviços<br />

ofereci<strong>dos</strong> pela camada de descoberta se responsabilizam, durante a submissão e<br />

execução de tarefas, pela gerência de questões relacionadas à conectividade<br />

irregular da grade móvel. Por outro lado, <strong>para</strong> as aplicações que não acessam<br />

1 Esse valor de retardo pode ser definido estaticamente ou ajustado dinamicamente através de um<br />

algoritmo adaptativo, baseado em estimativas de RTT (Round Trip Time).


A Arquitetura MoGrid 44<br />

diretamente o serviço de descoberta (vide Figura 2 da Seção 2.3), o tratamento<br />

desse tipo de condição é feito pela camada de transparência, que aciona esse<br />

serviço em benefício da aplicação. As funções da camada de transparência são<br />

descritas em detalhes na Subseção 2.3.2.<br />

2.3.1.2.<br />

Entidades de <strong>Descoberta</strong><br />

A forma como as entidades envolvidas no processo de descoberta de serviços se<br />

relacionam, bem como a interação entre elas, através da troca de mensagens do<br />

protocolo de descoberta P2P (P2PDP), é ilustrada na Figura 5. Essa dinâmica é<br />

representada em dois cenários distintos: em redes sem fio ad hoc [Figura 5(a)] e<br />

em redes sem fio infra-estruturadas [Figura 5(b)].<br />

( a ) Rede sem fio ad hoc<br />

( b ) Rede sem fio infra-estruturada<br />

Figura 5 – Entidades envolvidas no processo de descoberta.<br />

A camada de descoberta P2P define três entidades principais –<br />

colaboradores, iniciadores e coordenadores – que correspondem aos diferentes<br />

papéis que um dispositivo pode desempenhar no processo de descoberta de<br />

serviços, como ilustrado na Figura 5. Colaboradores estão disponíveis <strong>para</strong> a<br />

execução de tarefas da grade móvel. <strong>Um</strong> dispositivo móvel está apto a atuar como<br />

colaborador após registrar seus serviços localmente (operação register()).<br />

Iniciadores submetem, aos colaboradores, as requisições por serviços e o perfil de


A Arquitetura MoGrid 45<br />

execução desses serviços, que especifica quais recursos são necessários <strong>para</strong> o<br />

processamento de tarefas da aplicação. Qualquer dispositivo móvel pode ser um<br />

iniciador em uma grade móvel. Finalmente, coordenadores atuam como<br />

intermediadores entre iniciadores e colaboradores. Coordenadores encaminham as<br />

requisições <strong>dos</strong> iniciadores <strong>para</strong> descoberta de serviços aos colaboradores e, com<br />

base nas respostas recebidas, disponibilizam, aos iniciadores, uma lista contendo<br />

os colaboradores mais apropria<strong>dos</strong>. É importante ressaltar que, embora o foco<br />

principal desta tese sejam as grades móveis implantadas em redes sem fio ad hoc<br />

[Figura 5(a)], a arquitetura MoGrid também contempla a implementação do<br />

serviço em uma rede com um coordenador centralizado, se uma rede sem fio<br />

infra-estruturada estiver disponível. Nesse tipo de rede, um ou mais dispositivos<br />

conecta<strong>dos</strong> à rede fixa atuam como coordenadores da grade móvel, gerenciando as<br />

requisições de to<strong>dos</strong> os dispositivos sem fio. Isso evita que os dispositivos móveis<br />

sejam sobrecarrega<strong>dos</strong> devido ao processamento adicional das funções associadas<br />

à coordenação de suas requisições, que é o comportamento padrão em uma rede<br />

sem fio ad hoc. A Figura 5(b) ilustra esse cenário alternativo.<br />

Dois serviços desempenham funções importantes na arquitetura proposta: o<br />

monitor e o gerente de contexto (ContextListener). Cada dispositivo, na grade<br />

móvel, possui um monitor residente. O serviço monitor é responsável por coletar a<br />

informação de contexto <strong>dos</strong> dispositivos móveis, incluindo a qualidade do enlace<br />

sem fio, carga de CPU, carga residual da bateria, memória disponível e espaço de<br />

armazenamento. Em uma rede sem fio ad hoc, cada dispositivo possui também<br />

um gerente de contexto residente [Figura 5(a)]; em contraste, uma rede sem fio<br />

infra-estruturada pode ter um gerente de contexto centralizado [Figura 5(b)]. O<br />

serviço de gerente de contexto recebe, periodicamente, do serviço monitor, a<br />

informação de estado coletada, e deduz, a partir de tal informação, a<br />

disponibilidade de recursos <strong>dos</strong> dispositivos. Quando um coordenador consulta os<br />

colaboradores sobre a disponibilidade de recursos de seus dispositivos, <strong>para</strong> a<br />

execução de uma tarefa, os colaboradores interagem com o serviço de<br />

gerenciamento de contexto <strong>para</strong> verificar se eles oferecem o perfil de execução<br />

necessário <strong>para</strong> participar na execução da tarefa.<br />

Basicamente, um colaborador adota dois critérios <strong>para</strong> decidir se está apto a<br />

prover o iniciador com o serviço solicitado. O primeiro critério representa um


A Arquitetura MoGrid 46<br />

parâmetro subjetivo que indica a disposição do usuário em participar ou não da<br />

provisão do serviço, de acordo com a sua “boa vontade” em colaborar<br />

(willingness). O segundo critério atua como um “controlador de admissão”<br />

(AdmissionController), verificando se o colaborador pode disponibilizar o serviço<br />

solicitado pelo iniciador e a sua “adequação” (suitability) <strong>para</strong> participar na<br />

execução das tarefas nas quais o serviço é particionado, considerando o seu nível<br />

de comprometimento com as demais requisições às quais tenha respondido.<br />

Fundamentalmente, a adequação de um colaborador é medida de acordo com o<br />

perfil de execução do serviço provido pelo iniciador que efetuou a requisição<br />

(ctxtInfo na operação createRequestProfile()). Retomando o exemplo de<br />

uma aplicação de longa duração, que exija um processamento intensivo,<br />

colaboradores com níveis mais eleva<strong>dos</strong> de energia tipicamente serão<br />

seleciona<strong>dos</strong> <strong>para</strong> executar uma tarefa. O mecanismo de seleção é implementado<br />

de forma distribuída no protocolo P2PDP, que é apresentado em detalhes no<br />

Capítulo 4.<br />

O tratamento de requisições concorrentes merece ser discutido. Caso um<br />

colaborador tenha respondido a uma dada requisição, mas a execução do serviço<br />

ainda não tenha sido iniciada – por exemplo, a execução de uma rodada de<br />

simulação –, essa resposta representa uma reserva antecipada de recursos <strong>para</strong> a<br />

execução do serviço [Wolf et al. 1995; Smith et al. 2000], caracterizando o<br />

compromisso do dispositivo em atender à requisição. A validade dessa reserva é<br />

indicada quando a requisição é gerada, sendo definida através do parâmetro<br />

maxReplyDelay, que especifica o tempo que a aplicação está disposta a esperar<br />

por respostas. Ao receber uma nova requisição, o colaborador deve considerar o<br />

seu nível de comprometimento com as demais requisições já respondidas como<br />

um <strong>dos</strong> critérios determinantes <strong>para</strong> se definir a sua aptidão. Esse aspecto é<br />

fundamental <strong>para</strong> oferecer alguma garantia 2 quanto à qualidade do serviço que<br />

está sendo entregue e, em situações extremas, que o serviço seja, de fato,<br />

disponibilizado, mesmo que a qualidade na qual ele esteja sendo entregue não<br />

2 As garantias oferecidas na entrega de um serviço em ambientes computacionais móveis não são<br />

garantias absolutas, pois estão condicionadas às peculiaridades desses ambientes, como a<br />

qualidade do enlace sem fio, a disponibilidade de largura de banda e a mobilidade <strong>dos</strong> dispositivos.


A Arquitetura MoGrid 47<br />

corresponda integralmente as expectativas do usuário. O nível de<br />

comprometimento de um colaborador mede o quanto os recursos necessários <strong>para</strong><br />

a entrega do serviço solicitado já estão comprometi<strong>dos</strong> com a execução de outras<br />

requisições, impedindo que ele responda a mais requisições do que é capaz de<br />

atender. O monitoramento das condições do dispositivo é feito pelo serviço de<br />

gerenciamento de contexto.<br />

Coordenadores tratam os casos de requisições não completamente atendidas,<br />

em que são recebidas menos respostas do que o esperado – devido, por exemplo, a<br />

respostas perdidas na rede. Em tais casos, a aplicação (ou a camada de<br />

transparência) que disparou a requisição do iniciador terá que lidar com essa<br />

situação através do envio de uma requisição adicional ao protocolo de descoberta<br />

ou da notificação de falha no processo de descoberta ao cliente da aplicação. <strong>Um</strong><br />

cenário oposto ocorre quando o coordenador recebe mais respostas do que<br />

solicitado pelo iniciador. Em tais casos, o coordenador seleciona as respostas mais<br />

apropriadas, com base em critérios pré-estabeleci<strong>dos</strong>, antes de encaminhá-las <strong>para</strong><br />

o iniciador interessado. Esses critérios podem ser defini<strong>dos</strong> pelo usuário, de<br />

acordo com as características <strong>dos</strong> serviços que ele usualmente solicita, ou, então,<br />

podem ser adota<strong>dos</strong> os critérios-padrão defini<strong>dos</strong> na arquitetura MoGrid. A<br />

abordagem mais comumente utilizada, na seleção de respostas a uma solicitação<br />

de descoberta, adota a distância, em número de saltos, entre o cliente e o provedor<br />

do serviço como critério de decisão [Lenders et al. 2005; Varshavsky et al. 2005].<br />

Na arquitetura MoGrid, dois critérios são utiliza<strong>dos</strong> <strong>para</strong> selecionar as melhores<br />

respostas caso o coordenador receba mais respostas do que as que foram<br />

solicitadas: a distância, em número de saltos, do colaborador até o iniciador, e o<br />

perfil de execução contido na resposta do colaborador. Essa seleção é feita de<br />

forma automática pelo coordenador em benefício do iniciador.<br />

2.3.2.<br />

Camada de Transparência<br />

A camada de transparência é responsável por gerenciar as questões relacionadas à<br />

conectividade irregular da grade móvel, decorrente de perío<strong>dos</strong> de desconexão,<br />

provoca<strong>dos</strong> pela instabilidade do enlace ou mesmo pela indisponibilidade <strong>dos</strong><br />

provedores durante a fase de descoberta de recursos e, posteriormente, de


A Arquitetura MoGrid 48<br />

submissão e execução de tarefas. A camada de transparência é composta pela<br />

subcamada de acesso transparente aos recursos e pelas subcamadas de adaptação,<br />

como ilustrado na Figura 6.<br />

Figura 6 – Arquitetura MoGrid: a camada de transparência.<br />

2.3.2.1.<br />

Subcamada de Acesso Transparente aos Recursos<br />

Considerando-se o fator mobilidade, simplificando a definição apresentada em<br />

[Peddermors et al., 2004], existem dois possíveis comportamentos que uma<br />

aplicação pode adotar, o que influenciará no nível de transparência de acesso<br />

oferecido: (i) aplicações que não têm consciência da mobilidade e,<br />

conseqüentemente, não gerenciam o problema da desconexão; e (ii) aplicações<br />

que têm consciência da mobilidade e tratam o gerenciamento de desconexão na<br />

própria aplicação. Para oferecer suporte ao gerenciamento de desconexão às<br />

aplicações que se comportam como descrito em (i), foi idealizada a subcamada de<br />

acesso transparente aos recursos (Transparent Resource Access Sublayer –<br />

TRAS).<br />

Normalmente, após receber a lista <strong>dos</strong> colaboradores mais aptos, em<br />

resposta à uma requisição de serviço, o iniciador, que efetuou a requisição, pode<br />

realizar a distribuição de tarefas, entre eles, usando um protocolo padrão, como,<br />

por exemplo, o GridFTP [Foster & Kesselman 1997] ou alguma implementação<br />

projetada <strong>para</strong> atender às necessidades da aplicação cliente. Cada colaborador,<br />

após executar completamente uma tarefa, envia os resulta<strong>dos</strong> obti<strong>dos</strong> <strong>para</strong> o<br />

iniciador. No entanto, durante a submissão ou execução de tarefas, o iniciador, ou<br />

qualquer <strong>dos</strong> colaboradores, pode passar por um período de desconexão, que pode<br />

ser voluntária (por exemplo, dispositivo sendo deslocado ou entrando no modo de<br />

economia de energia) ou involuntária (como a perda abrupta de conectividade).


A Arquitetura MoGrid 49<br />

Quando o coordenador é centralizado [Figura 5(b)], ele pode lidar com a<br />

desconexão <strong>dos</strong> iniciadores, atuando como um proxy, em benefício <strong>dos</strong> mesmos,<br />

armazenando os resulta<strong>dos</strong> envia<strong>dos</strong> pelos colaboradores, até que a conexão com<br />

o iniciador possa ser restabelecida, quando, então, ele entrega os resulta<strong>dos</strong><br />

obti<strong>dos</strong>. Vale ressaltar a necessidade de se definir políticas, no coordenador, que<br />

estabeleçam critérios <strong>para</strong> a manutenção do armazenamento desses resulta<strong>dos</strong>.<br />

Essas políticas podem ser definidas localmente, onde cada coordenador determina<br />

a sua, ou podem ser definidas de forma global, nesse caso, to<strong>dos</strong> os dispositivos<br />

da rede adotam o mesmo conjunto de políticas. No caso da desconexão <strong>dos</strong><br />

colaboradores, o coordenador atua em benefício do iniciador que efetuou a<br />

requisição, selecionando novos colaboradores, com o auxílio do protocolo P2PDP.<br />

Quando as desconexões <strong>dos</strong> colaboradores são voluntárias, independentemente do<br />

coordenador ser centralizado ou distribuído, mecanismos <strong>para</strong> migração de<br />

tarefas, entre colaboradores, podem ser emprega<strong>dos</strong> [Milojicic et al. 2000]. Os<br />

colaboradores podem enviar, <strong>para</strong> o coordenador, uma mensagem de notificação<br />

de desconexão, incluindo, nessa mensagem, informações sobre o estado de<br />

execução da tarefa que cada um estava executando. Ao receber essa notificação, o<br />

coordenador aciona o processo de seleção de um novo colaborador, atuando como<br />

um intermediador no processo de migração da execução da tarefa.<br />

Para coordenadores descentraliza<strong>dos</strong> [Figura 5 (a)], como ocorre<br />

tipicamente no caso das redes sem fio ad hoc, algumas considerações adicionais<br />

devem ser feitas. O restante desta seção tem como foco os requisitos de projeto da<br />

TRAS <strong>para</strong> oferecer suporte à desconexão das entidades de descoberta, em redes<br />

sem fio ad hoc, e a forma como ela se relaciona com o protocolo P2PDP.<br />

No caso de desconexão voluntária do iniciador, ele notifica antecipadamente<br />

esse evento aos seus colaboradores atuais. Quando finalizam a execução da tarefa,<br />

os colaboradores notifica<strong>dos</strong> armazenam os resulta<strong>dos</strong> correspondentes até que o<br />

iniciador anuncie que está novamente conectado, ou até que um temporizador<br />

(waiting-for-initiator), dis<strong>para</strong>do no instante em que a tarefa é concluída, expire.<br />

Nesse último caso, os colaboradores descartam os resulta<strong>dos</strong> que foram<br />

armazena<strong>dos</strong>. Cada colaborador define o seu temporizador de forma independente<br />

em relação aos demais colaboradores.


A Arquitetura MoGrid 50<br />

Quando um colaborador detecta que irá se desconectar, ele suspende as<br />

tarefas em andamento e notifica esse evento a to<strong>dos</strong> os iniciadores com os quais<br />

ele está cooperando. A partir desse ponto, dependendo do tempo de conexão<br />

restante e da disponibilidade de seus recursos, o colaborador pode apresentar dois<br />

comportamentos distintos: (i) ele descarta os resulta<strong>dos</strong> parciais obti<strong>dos</strong> e<br />

transfere a responsabilidade de selecionar um novo colaborador, <strong>para</strong> reiniciar a<br />

execução da tarefa, ao iniciador, que, <strong>para</strong> isso, acionará o coordenador, ou (ii) ele<br />

se encarrega de fazer a migração do estado atual da sua execução <strong>para</strong> um novo<br />

colaborador, o qual deve retomar a execução da tarefa do ponto em que ela foi<br />

interrompida. Na primeira abordagem, em resposta à notificação de desconexão, o<br />

iniciador dis<strong>para</strong> o envio de mensagens P2PDP IReq <strong>para</strong> a seleção de um novo<br />

colaborador. Só então, após receber o resultado indicando quem foi o colaborador<br />

selecionado, a tarefa é resubmetida, sendo executada desde o início. Na segunda<br />

abordagem, o colaborador utiliza o protocolo P2PDP <strong>para</strong> selecionar um<br />

substituto, restringindo a consulta a sua vizinhança física, ou seja, aos dispositivos<br />

que estão conecta<strong>dos</strong> diretamente ao colaborador. Essa estratégia é indicada <strong>para</strong><br />

reduzir o consumo de energia adicional provocado pela inundação da rede com a<br />

difusão de uma nova mensagem de requisição do iniciador <strong>para</strong> encontrar um<br />

substituto ao colaborador que se tornou indisponível. O colaborador atual<br />

transfere a tarefa <strong>para</strong> o novo colaborador, juntamente com o seu estado de<br />

execução, gerenciando o processo de migração através da camada de<br />

transparência. Ao finalizar a execução da tarefa, o colaborador substituto entrega<br />

o resultado da execução ao iniciador. Caso a seleção de um novo colaborador não<br />

seja bem sucedida, o colaborador se comporta como descrito na primeira<br />

abordagem, transferindo a responsabilidade da seleção de um novo colaborador<br />

<strong>para</strong> o iniciador.<br />

Para a detecção de possíveis desconexões involuntárias, tanto <strong>para</strong> o<br />

iniciador quanto <strong>para</strong> o colaborador, a camada de transparência pode monitorar os<br />

eventos, processa<strong>dos</strong> pelo serviço de gerenciamento de contexto, relaciona<strong>dos</strong> à<br />

qualidade do enlace sem fio e a sua reserva de energia; inferindo, a partir desses<br />

recursos, um estado de desconexão iminente. Ao detectar esse estado, o gerente de<br />

contexto notifica a entidade de descoberta, que executa os mesmos procedimentos<br />

aciona<strong>dos</strong> em uma desconexão voluntária. A implementação de um mecanismo


A Arquitetura MoGrid 51<br />

eficiente de detecção de desconexões involuntárias apresenta uma série de<br />

dificuldades. A detecção pode não ser imediata, impossibilitando que a entidade<br />

de descoberta seja notificada em tempo hábil <strong>para</strong> acionar os procedimentos de<br />

desconexão necessários. Em uma situação oposta, o dispositivo pode apresentar<br />

uma indisponibilidade temporária de seus recursos. Nesse quadro, o gerente de<br />

contexto pode interpretar essa indisponibilidade como um evento de desconexão<br />

involuntária e notificá-lo à entidade de descoberta, que aciona, então, os<br />

procedimentos de desconexão, antecipando uma situação que, nesse caso, não vai<br />

acontecer. É importante mencionar, que subcamadas de adaptação distintas podem<br />

aplicar tratamentos diferencia<strong>dos</strong> <strong>para</strong> lidar com os perío<strong>dos</strong> de desconexão<br />

involuntária das entidades de descoberta, como discutido na Subseção 2.3.2.3.<br />

Esses tratamentos são determina<strong>dos</strong> pelas características específicas da família de<br />

aplicações à qual cada subcamada de adaptação provê suporte.<br />

2.3.2.2.<br />

Requisitos da Camada de Acesso Transparente aos Recursos<br />

Para prover suporte ao gerenciamento das desconexões involuntárias, é necessário<br />

que se defina um outro protocolo – complementar ao P2PDP – no âmbito da<br />

camada de transparência. Nesta subseção, é apresentada uma discussão quanto aos<br />

requisitos necessários <strong>para</strong> auxiliar na especificação do protocolo de acesso<br />

transparente aos recursos (Transparent Resource Access Protocol – TRAP). A<br />

especificação desse protocolo tem o propósito de definir um nível aceitável de<br />

qualidade na execução <strong>dos</strong> serviços descobertos na grade móvel, definido de<br />

forma subjetiva, em função da percepção do usuário do serviço. Para tanto, é<br />

necessário que os colaboradores ofereçam garantias mínimas sobre a<br />

disponibilidade de seus recursos ao responderem a uma requisição de serviço. O<br />

projeto e a implementação do TRAP não são o foco desta tese; entretanto, os<br />

próximos parágrafos trazem uma discussão sobre os requisitos básicos que o<br />

protocolo de acesso deve atender <strong>para</strong> que os serviços descobertos na grade móvel<br />

sejam utiliza<strong>dos</strong>, independentemente de desconexões involuntárias.<br />

Mecanismo de comunicação. É necessário definir como a comunicação<br />

entre o cliente e o provedor de serviço será estabelecida. Duas abordagens<br />

principais podem ser adotadas. Na primeira, o mecanismo de comunicação


A Arquitetura MoGrid 52<br />

utilizará o protocolo de roteamento adotado na MANET <strong>para</strong> promover o<br />

encaminhamento de mensagens de invocação do serviço e de entrega do resultado<br />

da sua execução. Na segunda abordagem, indicada <strong>para</strong> cenários de baixa<br />

mobilidade, o TRAP pode manter uma estrutura de da<strong>dos</strong>, denominada tabela de<br />

execuções pendentes (TEP), com informações sobre o caminho entre a origem<br />

(colaborador) e o destino (iniciador) do serviço descoberto. Essas informações<br />

permitem que as mensagens de invocação e de resultado sejam encaminhadas,<br />

salto-a-salto, do cliente até o provedor, e vice-versa, através das informações<br />

armazenadas na tabela mantida, localmente, pelos nós intermediários. Em face a<br />

perío<strong>dos</strong> de alta mobilidade, apenas a primeira abordagem seria viável, dado que a<br />

manutenção da TEP exigiria um mecanismo de atualização, acionado em função<br />

da quebras de rotas. Esse mecanismo faria uso do protocolo P2PDP <strong>para</strong> descobrir<br />

um novo caminho entre a origem e o destino. Nesse caso, o serviço requisitado<br />

seria a localização do destino.<br />

Monitoramento do provedor do serviço. O TRAP deve fornecer garantias<br />

que o provedor do serviço selecionado desempenhe as suas funcionalidades com<br />

um nível de qualidade que não extrapole um limite mínimo de tolerância (QoS min ),<br />

oferecendo, com uma certa probabilidade, a garantia de que o resultado gerado<br />

atenda às necessidades do cliente. Para garantir essa propriedade, um mecanismo<br />

de monitoramento da disponibilidade <strong>dos</strong> recursos do provedor do serviço deve<br />

ser incorporado ao TRAP. Os recursos monitora<strong>dos</strong> seriam aqueles defini<strong>dos</strong> na<br />

requisição do serviço, em função das características da aplicação. Esse monitor<br />

notificaria ao TRAP caso o provedor atingisse um nível de disponibilidade de<br />

recursos insatisfatório <strong>para</strong> a execução do serviço. Com essa informação, o TRAP<br />

poderia, automaticamente, acionar o mecanismo de redescoberta e dar início à<br />

migração de serviço ou, simplesmente, comunicar ao cliente (iniciador) a<br />

indisponibilidade do provedor (colaborador). A ação a ser executada, em resposta<br />

ao recebimento de uma notificação de indisponibilidade do provedor, é definida<br />

na subcamada de adaptação, através do mecanismo de callbacks. O resultado do<br />

monitoramento <strong>dos</strong> provedores de serviço também pode ser utilizado na<br />

implementação de um mecanismo de reputação [Rheingold 2003]. O<br />

funcionamento desse mecanismo se baseia na preocupação que os usuários de<br />

sistemas computacionais – como aqueles que constituem uma grade móvel – têm


A Arquitetura MoGrid 53<br />

em manter a sua reputação elevada, evitando assim qualquer comportamento que<br />

reduza o seu conceito perante os demais membros do grupo. Esse fator pode ainda<br />

ser utilizado <strong>para</strong> adaptar o parâmetro que indica a disposição de um colaborador<br />

em participar na execução de um serviço, em função da reputação do dispositivo<br />

requisitando o serviço; caso a reputação do iniciador seja considerada<br />

insatisfatória, o colaborador pode se negar a atender a sua requisição de serviço. É<br />

importante levar em consideração, na implementação do mecanismo de<br />

monitoramento, que deve ser definido o que caracteriza uma indisponibilidade<br />

real de uma flutuação temporária na disponibilidade de recursos do provedor,<br />

evitando que notificações precipitadas sejam dis<strong>para</strong>das. Esse é um problema não<br />

trivial, intrínseco às redes sem fio, e <strong>para</strong> que o mecanismo de monitoramento seja<br />

implementado, é preciso que se faça uma investigação aprofundada sobre o tema.<br />

Manutenção do estado da execução. Para que haja migração de serviço<br />

entre os colaboradores, é necessário que o estado da sua execução possa ser<br />

recuperado <strong>para</strong> que a nova instância do serviço retome a sua execução a partir do<br />

ponto em que ela foi interrompida. Segundo Milojicic et al. [2000], o estado de<br />

execução inclui o espaço de endereçamento do processo, o ponto de execução –<br />

conteúdo <strong>dos</strong> registradores –, o estado da comunicação – como arquivos abertos e<br />

canais de mensagens que foram estabeleci<strong>dos</strong> – e esta<strong>dos</strong> dependentes do sistema<br />

operacional. É importante mencionar a necessidade de se definir operações <strong>para</strong><br />

interromper e reiniciar um serviço. Para isso, é obrigatório que a implementação<br />

do serviço ofereça algum tipo de interface que possibilite as funções de<br />

exportação e importação <strong>para</strong> extrair o estado de execução do serviço do provedor<br />

de origem e recuperá-lo no provedor de destino. Essas interfaces normalmente são<br />

providas pelo sistema operacional ou por bibliotecas específicas associadas à<br />

linguagem de programação utilizada.<br />

Migração de serviço. Esse requisito diz respeito à transferência do serviço,<br />

entre dois provedores – a origem e o destino – durante a sua execução. A<br />

transferência inclui a migração do serviço e do seu estado de execução. A camada<br />

TRAS requer um mecanismo de migração de processos <strong>para</strong> os serviços statefull.<br />

Existem diversos trabalhos que tratam essa questão, adotando abordagens<br />

diferenciadas. A implementação desse mecanismo exige uma investigação<br />

meticulosa sobre o tema. Levando em consideração o algoritmo definido por


A Arquitetura MoGrid 54<br />

Milojicic et al. [2000], na camada de acesso transparente, a migração de um<br />

serviço deve cumprir as seguintes etapas: (i) a migração é requisitada em função<br />

da notificação de uma indisponibilidade iminente do colaborador (provedor do<br />

serviço); (ii) é efetuada a escolha do novo colaborador, dando início a um novo<br />

processo de descoberta através do protocolo P2PDP; (iii) a execução do serviço é<br />

suspensa no colaborador de origem; (iv) os canais de comunicação utiliza<strong>dos</strong> pelo<br />

serviço são estabeleci<strong>dos</strong> no novo colaborador; (v) o estado do serviço é extraído<br />

da instância em suspensão no colaborador de origem; (vi) uma instância do<br />

serviço é criada no novo colaborador; (vii) o estado de execução do serviço, que<br />

foi transferido, é importado pela instância em execução no novo colaborador e<br />

(viii) a nova instância do serviço pode então ter a sua execução retomada do ponto<br />

em que foi interrompida, e a instância do serviço, no colaborador de origem, pode<br />

finalmente ser removida.<br />

Mecanismo de redescoberta. Caso seja necessário substituir um<br />

colaborador durante a execução de um dado serviço, torna-se necessário acionar o<br />

mecanismo de redescoberta de colaboradores <strong>para</strong> que a execução do serviço<br />

possa ser concluída no substituto. Para que esse requisito seja alcançado, é preciso<br />

acionar, mais uma vez, o protocolo de descoberta P2PDP. Essa etapa pode ser<br />

gerenciada pelo provedor do serviço (colaborador P2PDP) ou pelo próprio cliente<br />

(iniciador P2PDP), dependendo da ação dis<strong>para</strong>da pelo protocolo TRAP quando o<br />

colaborador é notificado sobre um evento de indisponibilidade do serviço em<br />

execução. O colaborador pode acionar automaticamente o mecanismo de<br />

redescoberta ou simplesmente comunicar ao iniciador que houve uma falha na<br />

execução do serviço, transferindo <strong>para</strong> ele essa responsabilidade. <strong>Um</strong>a outra<br />

abordagem seria acionar o mecanismo de redescoberta, automaticamente, quando<br />

um provedor de serviço enviasse ao iniciador uma mensagem de notificação de<br />

indisponibilidade. Essa mensagem seria, então, encaminhada por broadcast<br />

limitado, na grade móvel, e encapsularia uma mensagem de requisição P2PDP<br />

(IReq). Ao receber uma notificação destinada a um outro dispositivo, os nós<br />

intermediários, no caminho entre o antigo colaborador e o iniciador, respondem ao<br />

iniciador, caso se adeqüem ao perfil de execução do serviço, encapsulando a<br />

mensagem de resposta (CRep) do protocolo P2PDP na notificação de<br />

indisponibilidade. Nesse caso, ao receber a notificação de indisponibilidade do


A Arquitetura MoGrid 55<br />

antigo colaborador, o iniciador receberá também uma lista com os novos<br />

colaboradores.<br />

2.3.2.3.<br />

Subcamadas de Adaptação<br />

Em contraste com as aplicações cientes da utilização da arquitetura, as aplicaçõespadrão<br />

de grades fixas não têm conhecimento de detalhes particulares da API de<br />

descoberta. Para oferecer suporte a essas aplicações, a camada de transparência<br />

estabelece a cooperação entre o iniciador e os seus colaboradores potenciais,<br />

utilizando o protocolo P2PDP, através das funcionalidades oferecidas pelas<br />

subcamadas de adaptação (Adaptation SubLayers – ASLs). Como já foi<br />

mencionado, a subcamada TRAS provê mecanismos independentes da aplicação<br />

que garantem a transparência no acesso e utilização <strong>dos</strong> recursos; no entanto, cada<br />

tipo de aplicação, em uma grade móvel, apresenta requisitos específicos. Por<br />

exemplo, aplicações baseadas no <strong>para</strong>digma de computação <strong>para</strong>lela mestreescravo<br />

demandam maior poder de processamento, mas são menos suscetíveis à<br />

conectividade intermitente. De um modo geral, o resultado do processamento<br />

desse tipo de aplicação gera um volume de da<strong>dos</strong> pequeno que pode ser<br />

transferido em um breve período de conectividade estável, exigindo pouco do<br />

meio sem fio em termos de transmissão de da<strong>dos</strong>. Entretanto, aplicações dessa<br />

mesma categoria, que gerem resulta<strong>dos</strong> volumosos, irão demandar, também,<br />

estabilidade da conexão e carga residual da bateria, devido à necessidade de<br />

transmissão de uma quantidade de da<strong>dos</strong> considerável. Por outro lado, <strong>para</strong><br />

aplicações que efetuam replicação de da<strong>dos</strong>, requisitos como capacidade de<br />

armazenamento, estabilidade da conexão e carga residual da bateria são mais<br />

importantes, dado o grande volume de da<strong>dos</strong> transferi<strong>dos</strong> no meio sem fio. O<br />

processo de replicação implica na necessidade de espaço físico <strong>para</strong> armazenar os<br />

da<strong>dos</strong> e uma conectividade estável <strong>para</strong> lidar com uma taxa de transmissão<br />

constante, responsável por um aumento no consumo de energia. O principal<br />

propósito das subcamadas de adaptação é implementar o tratamento <strong>dos</strong> eventos<br />

relaciona<strong>dos</strong> à mobilidade e à desconexão da forma que melhor se adeqüe a cada<br />

tipo de aplicação, implementando os procedimentos que devem ser aciona<strong>dos</strong> em<br />

caso de notificação de eventos de exceção.


A Arquitetura MoGrid 56<br />

Cada subcamada de adaptação deve implementar algumas operações de<br />

callback que definem o comportamento esperado <strong>dos</strong> iniciadores, coordenadores e<br />

colaboradores no caso de eventos de exceção, como requisições não atendidas ou<br />

desconexões voluntárias e, quando possível, exceções decorrentes da detecção de<br />

desconexões involuntárias. Apesar de não trivial, idealmente, a subcamada TRAS<br />

deve, ao detectar qualquer evento de exceção, identificá-lo e acionar a callback<br />

correspondente. Ao se implementar uma ASL específica, é fundamental que se<br />

definam os possíveis eventos de exceção e se ofereçam mecanismos de<br />

identificação <strong>dos</strong> mesmos. Além disso, deve-se realizar a associação entre esses<br />

eventos e as callbacks correspondentes, que devem ser implementadas na ASL.<br />

No caso de eventos determinísticos, como desconexão voluntária e requisições<br />

não atendidas, é fácil fazer essa associação. O mesmo não acontece no caso <strong>dos</strong><br />

eventos cuja detecção está associada ao monitoramento das condições da rede e da<br />

variação da disponibilidade de recursos no próprio dispositivo, como desconexões<br />

involuntárias e redução na qualidade do serviço oferecido. Nessa situação, deve-se<br />

definir condições limites que caracterizem a exceção – como intervalos temporais<br />

nos quais as variações são permitidas, valores mínimos que cada recurso pode<br />

assumir em um dado intervalo – além de se permitir a composição dessas<br />

condições considerando-se diferentes recursos, definindo, por exemplo, <strong>para</strong> a<br />

detecção de um evento de redução de QoS, que a carga residual da bateria não<br />

pode ser inferior a 50% e a carga de processamento não pode se manter abaixo de<br />

40% por um período de tempo superior a um minuto. Nesse cenário, quando uma<br />

entidade não consegue efetuar o mapeamento entre uma exceção específica e a<br />

sua callback de tratamento, a aplicação deve, então, ser notificada imediatamente.<br />

A caracterização das exceções não é trivial e requer conhecimento a respeito <strong>dos</strong><br />

requisitos da aplicação cliente.<br />

2.4.<br />

Os Modelos de Falhas da Arquitetura MoGrid<br />

Falhas podem ter diversas origens, que vão desde causas físicas – como<br />

rompimento de uma trilha em um circuito eletrônico ou ruí<strong>dos</strong> na rede elétrica –,<br />

até falhas de origem humana, quer sejam intencionais ou não – como erros de<br />

projeto ou mesmo erros causa<strong>dos</strong> pelo mau uso <strong>dos</strong> sistemas. Em um cenário de<br />

comunicação sem fio, existem ainda os problemas provoca<strong>dos</strong> pela perda de


A Arquitetura MoGrid 57<br />

pacotes de da<strong>dos</strong> e desconexões constantes, problemas esses que tornam o sistema<br />

ainda mais propenso à manifestação de falhas. Independentemente da sua origem,<br />

em um sistema de tempo real distribuído, uma falha pode ser classificada de<br />

acordo com o comportamento do componente que a detecta após a sua ocorrência,<br />

como descrito em [Chow & Johnson 1997]. Os modelos de falhas considera<strong>dos</strong><br />

serão analisa<strong>dos</strong> nos próximos parágrafos em função <strong>dos</strong> dispositivos sem fio e<br />

<strong>dos</strong> canais de comunicação da grade móvel. Como o colaborador desempenha o<br />

papel mais crítico da arquitetura, os modelos de falhas serão ilustra<strong>dos</strong> em função<br />

do comportamento deste componente, tendo como foco a camada de descoberta<br />

da arquitetura MoGrid.<br />

Fail-Stop. <strong>Um</strong> dispositivo atuando como um colaborador da grade móvel<br />

é desativado, quer seja por intervenção humana ou por alguma falha no<br />

equipamento, deixando de responder a requisições de serviço e de executar as<br />

requisições com as quais já tenha se comprometido. Nesse caso, o dispositivo não<br />

executará operações inválidas e simplesmente deixará de funcionar, o que não<br />

interferirá no funcionamento da arquitetura como um todo, pois os demais<br />

dispositivos continuarão desempenhando as suas funções corretamente e irão<br />

detectar, com o tempo, a sua indisponibilidade. Existe ainda a possibilidade de um<br />

colaborador que faz parte do caminho de retorno de uma mensagem de resposta<br />

deixar de funcionar, provocando a quebra da rota estabelecida no processo de<br />

descoberta entre um candidato a colaborador e o requisitante do serviço. Nesse<br />

caso, se o mecanismo de reconhecimento do envio de respostas não conseguir<br />

recuperar a falha ocorrida no encaminhamento da resposta, a mesma não será<br />

entregue ao nó requisitante, podendo ser substituída por uma resposta de<br />

qualidade inferior, proveniente de um colaborador com menos recursos mas cujo<br />

caminho reverso tenha se mantido durante o período de tempo transcorrido entre<br />

as etapas de requisição e descoberta do serviço.<br />

Falha Bizantina. As falhas bizantinas ou arbitrárias pressupõe um<br />

comportamento incorreto <strong>dos</strong> componentes do sistema. Na arquitetura MoGrid, as<br />

entidades de descoberta poderiam gerar mensagens com erro ou mesmo<br />

maliciosas que comprometeriam o funcionamento do protocolo. Além disso, os<br />

nós poderiam gerar mensagens falsas aleatoriamente, como, por exemplo,<br />

iniciadores emitindo requisições de serviço com uma freqüência elevada ou


A Arquitetura MoGrid 58<br />

colaboradores respondendo a requisições de serviço às quais não estejam aptos a<br />

atender. Na arquitetura MoGrid esse tipo de falha não é tratado. Os protocolos<br />

especifica<strong>dos</strong> <strong>para</strong> solucionar o problema do consenso apresentam uma<br />

complexidade computacional extremamente elevada e, em muitos casos,<br />

especialmente em redes instáveis como as redes sem fio ad hoc, apresentam<br />

problemas de convergência [Angluin et al. 2006].<br />

Falhas de Omissão. Falhas como desconexões voluntárias e involuntárias<br />

de dispositivos – provocadas por quebras de rotas em função do particionamento<br />

da rede, atenuação do sinal no enlace sem fio, o problema do terminal oculto,<br />

entre outros – são responsáveis por fazer com que um ou mais componentes da<br />

arquitetura fiquem incomunicáveis por perío<strong>dos</strong> variáveis de tempo. Em<br />

decorrência dessas falhas de comunicação, os dispositivos ficam impossibilita<strong>dos</strong><br />

de responder a novas requisições de serviço ou mesmo executar as requisições as<br />

quais tenham respondido anteriormente – quando atuando como colaboradores – e<br />

de submeter tarefas <strong>para</strong> a grade móvel e de receber os resulta<strong>dos</strong> da execução das<br />

mesmas – quando atuando como iniciadores. Nesse caso, as conseqüências das<br />

falhas são mais graves.<br />

Falhas Temporais. Esse tipo de falha pode ocorrer em função da falta de<br />

sincronização de relógios entre os dispositivos da grade ou em função de<br />

variações abruptas da latência do sinal do enlace sem fio. Na arquitetura MoGrid,<br />

respostas mais adequadas, provenientes de dispositivos com mais recursos, que<br />

tenham sido atrasadas ou mesmo estejam sendo transmitidas no tempo certo<br />

podem ser suprimidas por respostas menos aptas. Essa situação se verifica caso os<br />

dispositivos que originaram essas respostas antecipem o envio das mesmas ou elas<br />

trafeguem através de enlaces com menor latência. Nesse caso, o requisitante não<br />

deixará de ser atendido, entretanto, o serviço disponibilizado não será o de melhor<br />

qualidade em função das falhas temporais que ocorreram, prejudicando o processo<br />

de seleção das respostas. Analisando as falhas temporais, tem-se que a principal<br />

demanda da camada de descoberta, em relação às camadas inferiores, diz respeito<br />

ao mecanismo de sincronização de relógios entre os dispositivos que constituem a<br />

grade móvel. Para o correto funcionamento da arquitetura, é necessário que a<br />

diferença de velocidade entre os relógios <strong>dos</strong> dispositivos seja desprezível.


A Arquitetura MoGrid 59<br />

O conceito básico <strong>para</strong> se implementar tolerância a falhas é redundância,<br />

de hardware ou software. Em termos gerais, a redundância pode assumir dois<br />

formatos: temporal ou espacial. A redundância temporal implica que após a<br />

detecção da falha, uma ação corretiva seja acionada como, por exemplo, a<br />

repetição do procedimento que gerou a falha. Esse tipo de redundância é em geral<br />

menos aplicável a sistemas críticos, já que o procedimento de recuperação pode<br />

violar as especificações rígidas de tempo (hard deadlines). No caso da<br />

redundância espacial, uma mesma ação crítica é executada por vários<br />

componentes replica<strong>dos</strong>. Nesse caso, existe a possibilidade da falha ser mascarada<br />

no sentido de que a falha de um componente é compensada pela ação correta de<br />

outros componentes replica<strong>dos</strong>. A redundância espacial é adequada <strong>para</strong> sistemas<br />

críticos, por não gerar atrasos extras nos processos de detecção e recuperação de<br />

erros [Macêdo et al. 2004]. Na arquitetura MoGrid, o mecanismo de tolerância a<br />

falhas da camada de descoberta pode ser implementado através de redundância<br />

espacial, onde várias instâncias do mesmo serviço são selecionadas <strong>para</strong> atender a<br />

uma requisição específica. Na camada de transparência, o mecanismo de<br />

tolerância a falhas pode ser implementado através de redundância temporal, onde<br />

o anúncio de desconexões voluntárias e a detecção de desconexões involuntárias<br />

dis<strong>para</strong>m ações corretivas.<br />

Pelo que foi exposto, é possível observar que a arquitetura MoGrid<br />

pressupõe apenas a ocorrência de falhas do tipo fail-stop, apresentando <strong>para</strong> esses<br />

tipos de falhas mecanismos de tolerância basea<strong>dos</strong> em redundância espacial.<br />

Entretanto, os mecanismos de redundância implementa<strong>dos</strong> não necessariamente<br />

garantem que as respostas às requisições de descobertas obtidas na presença de<br />

falhas sejam as de melhor qualidade. Os problemas decorrentes das falhas<br />

bizantinas, de omissão e temporais podem ser trata<strong>dos</strong> na arquitetura MoGrid<br />

através da camada de transparência. Na Subseção 2.3.2, é apresentada uma<br />

discussão inicial sobre as medidas de correção que podem ser acionadas em<br />

função da ocorrência de falhas de omissão. Soluções <strong>para</strong> esses tipos de falhas<br />

devem ser incorporadas com a conclusão da especificação da camada de<br />

transparência.


A Arquitetura MoGrid 60<br />

2.5.<br />

Trabalhos Relaciona<strong>dos</strong><br />

Como é possível constatar nos trabalhos publica<strong>dos</strong> na área de grades<br />

computacionais, nos últimos anos, há um interesse crescente em viabilizar<br />

aplicações baseadas na tecnologia de grades, sejam elas móveis ou fixas, <strong>para</strong><br />

dispositivos portáteis, o que tem apontado modelos alternativos <strong>para</strong> computação<br />

em grade. Tal interesse tem motivado o desenvolvimento de grades P2P [Bhatia<br />

2005; Fox et al. 2003; P-Grid 2002] e grades pervasivas [Geyer et al. 2005],<br />

embora na maioria desses trabalhos seja oferecido suporte apenas <strong>para</strong> que os<br />

dispositivos móveis sejam utiliza<strong>dos</strong>, exclusivamente, como interfaces <strong>para</strong> o<br />

acesso sem fio às grades fixas. Nesta seção, são descritos alguns projetos<br />

específicos que oferecem algum nível de suporte <strong>para</strong> as grades móveis ou que se<br />

aproximam desse propósito, oferecendo suporte a ambientes móveis de<br />

colaboração. Inicialmente será feita uma breve apresentação desses trabalhos, os<br />

quais serão posteriormente discuti<strong>dos</strong> na Subseção 2.5.1.<br />

ISAM (Infra-estrutura de Suporte às Aplicações Móveis distribuídas)<br />

[Yamin et al. 2003]. Projeto que propõe a integração de três conceitos principais –<br />

consciência do contexto, mobilidade e grade computacional – em um ambiente de<br />

computação pervasiva. Esse ambiente oferece suporte ao desenvolvimento de<br />

aplicações móveis distribuídas que apresentam um comportamento adaptativo.<br />

Pesquisas envolvendo o conceito de grades pervasivas em ambientes P2P foram<br />

desenvolvidas no contexto do projeto ISAM, através do Grupo de Trabalho da<br />

RNP GRADEp [Geyer et al. 2005], no período de 2004 a 2005. O projeto<br />

GRADEp teve, por objetivo, a extensão da perspectiva tradicional de computação<br />

em grade, pela inclusão de aspectos de mobilidade de dispositivos, de usuário e de<br />

componentes das aplicações. O middleware GRADEp oferece suporte a operações<br />

no modo desconectado <strong>para</strong> dispositivos fixos e móveis em uma grade fixa. O<br />

projeto oferece suporte à mobilidade, considerando em sua especificação que o<br />

ponto de acesso à rede fixa pode mudar com o tempo. Os dispositivos são<br />

associa<strong>dos</strong> a um identificador único de modo que eles possam ser localiza<strong>dos</strong> na<br />

grade independente do ponto de acesso ao qual eles estão conecta<strong>dos</strong>.<br />

<strong>Um</strong> ambiente de resolução de problemas baseado em grades sem fio<br />

[Kurkovsky et al. 2004]. Este projeto propõe um ambiente de resolução de


A Arquitetura MoGrid 61<br />

problemas baseado em uma grade computacional móvel, organizada através de<br />

uma rede sem fio infra-estruturada, na qual os dispositivos móveis são<br />

visualiza<strong>dos</strong> como agentes colaborativos em um sistema multi-agente. Tal<br />

ambiente trata aspectos referentes à distribuição, coordenação e remontagem de<br />

tarefas complexas de grade, lidando com aspectos como instabilidade da rede,<br />

transparência de acesso e fidedignidade. Nesse projeto os dispositivos sem fio<br />

atuam como elementos computacionais da grade propriamente dita,<br />

disponibilizando os seus recursos e serviços, sendo aciona<strong>dos</strong> <strong>para</strong> a execução<br />

colaborativa de tarefas.<br />

AKOGRIMO (Access to KnOwledge through the GRId in a MObile world)<br />

[Akogrimo 2004]. Este é um projeto promovido pelo fundo europeu, com o<br />

propósito de desenvolver arquiteturas e protótipos <strong>para</strong> as grades de próxima<br />

geração (Next Genaration Grid – NGGs), baseadas na arquitetura OGSA,<br />

motivado pelo crescimento de usuários de dispositivos portáteis na Europa.<br />

Atualmente, o projeto AKOGRIMO tem como foco a proposição de aplicações<br />

inovadoras <strong>para</strong> grades móveis organizadas através de redes sem fio infraestruturadas<br />

em WLANs (Wireless Local Area Networks), baseadas no protocolo<br />

IPv6, de modo que se possa oferecer serviços aos cidadãos comuns, auxiliando-os<br />

em atividades do seu dia-a-dia em um contexto comercial. O domínio de tais<br />

aplicações abrange e-health, e-learning, gerenciamento de crises e catástrofes,<br />

logística, turismo, entre outros. Entretanto, nas especificações do projeto não há<br />

referências sobre o tratamento dado a dispositivos com restrições de recursos. O<br />

projeto AKOGRIMO trata as questões referentes à mobilidade em um nível mais<br />

elevado, sob a perspectiva de serviços móveis.<br />

MASGRID (Mobile Ad hoc Service Grid) [Ihsan et al 2005]. Nesse<br />

trabalho, os autores propõem uma arquitetura que ofereça funcionalidades<br />

similares às disponíveis no Globus Toolkit [Foster & Kesselman 1997], <strong>para</strong> o<br />

estabelecimento e utilização de uma grade móvel organizada através de uma rede<br />

sem fio ad hoc, de forma simplificada, de modo que essas funções possam ser<br />

utilizadas pelos dispositivos móveis que a constituem. A arquitetura define dois<br />

mecanismos principais: o serviço de descoberta de recursos (Resource Discovery<br />

Service – RDS) e o serviço de acesso aos recursos (Resource Access Service –<br />

RAS), os quais dependem, respectivamente, <strong>dos</strong> protocolos de conectividade e de


A Arquitetura MoGrid 62<br />

roteamento, utiliza<strong>dos</strong> na MANET. Os autores apresentam um modelo conceitual,<br />

definindo as funções que cada um <strong>dos</strong> mecanismos deve desempenhar; entretanto,<br />

eles não se detém em aspectos operacionais referentes à sua implementação. A<br />

proposta do mecanismo de descoberta, apesar de ser brevemente apresentada,<br />

recebe maior atenção em relação ao mecanismo de acesso aos recursos.<br />

2.5.1.<br />

Discussão sobre os Trabalhos Relaciona<strong>dos</strong><br />

O surgimento das grades móveis tornou-se viável devido à disponibilidade de<br />

dispositivos móveis com capacidade de processamento e comunicação cada vez<br />

maiores, o que é comprovado pelo número crescente de vendas de notebooks e<br />

PDAs em todo o mundo, chegando a casa <strong>dos</strong> milhões anualmente. 3<br />

Essa<br />

realidade proporciona um novo tipo de rede de compartilhamento de recursos que<br />

explora a larga disseminação <strong>dos</strong> dispositivos sem fio que, considerando-se a sua<br />

capacidade de interconexão, promove um ambiente de colaboração que não deve<br />

ser desprezado [McKnight et al. 2004]. Apesar das restrições de recursos<br />

apresentadas por esses dispositivos, em decorrência das suas dimensões cada vez<br />

mais reduzidas, a integração <strong>dos</strong> dispositivos móveis, interconecta<strong>dos</strong> através de<br />

enlaces sem fio, é defendida como uma possibilidade real de colaboração em uma<br />

grade computacional [Phan et al 2002]. O desafio de integração <strong>dos</strong> dispositivos<br />

sem fio em uma grade móvel é ampliado quando esses dispositivos estão<br />

organiza<strong>dos</strong> através de uma MANET de saltos múltiplos, mas não inviabilizado,<br />

como demonstram os estu<strong>dos</strong> apresenta<strong>dos</strong> em [Red Herring 2005;<br />

<strong>Lima</strong> et al. 2005; Gomes et al. 2007].<br />

Nos projetos anteriormente cita<strong>dos</strong> nesta seção, não é oferecido suporte ao<br />

desenvolvimento de aplicações de grade baseadas no compartilhamento de<br />

recursos em redes sem fio ad hoc, nas quais é oferecida uma visão mais focada do<br />

conceito de grades móveis – onde a infra-estrutura da rede é dinâmica, devido às<br />

constantes modificações provocadas pela mobilidade <strong>dos</strong> usuários. Para ilustrar o<br />

3 Segundo o estudo “Worldwide Quarterly PC Tracker” da consultoria IDC referente ao quarto<br />

trimestre de 2006, as vendas de notebooks irão ultrapassar as <strong>dos</strong> computadores pessoais de mesa


A Arquitetura MoGrid 63<br />

que foi dito, pode-se mencionar o projeto GRADEp que, apesar <strong>dos</strong> resulta<strong>dos</strong><br />

expressivos na inclusão de dispositivos móveis como elementos computacionais<br />

da grade, não se aplica às grades móveis pois foi desenvolvido <strong>para</strong> oferecer<br />

suporte à mobilidade de dispositivos e usuários – com ênfase em pervasividade –<br />

em uma grade fixa.<br />

É imprescindível, em uma grade móvel, a adoção de uma abordagem<br />

cooperativa e completamente descentralizada <strong>para</strong> prover a descoberta e<br />

coordenação de recursos. A abordagem que mais se aproxima desse objetivo é<br />

aquela proposta em [Kurkovsky et al. 2004], que apresenta um ambiente <strong>para</strong><br />

solução de problemas <strong>para</strong> grades móveis organizadas através de uma rede sem<br />

fio infra-estruturada. Entretanto, nessa abordagem, a responsabilidade de<br />

coordenar a distribuição e execução das tarefas da grade é delegada a um<br />

elemento central, conectado à rede fixa. Por outro lado, durante o período de<br />

vigência (2004 – 2007) do contrato europeu <strong>para</strong> implementação do projeto<br />

AKOGRIMO, vários resulta<strong>dos</strong> foram publica<strong>dos</strong>. Esses trabalhos, entretanto,<br />

apesar de também apostarem na utilização <strong>dos</strong> recursos disponíveis na grade<br />

móvel <strong>para</strong> a provisão de serviços <strong>para</strong> os dispositivos da grade, baseiam sua<br />

arquitetura na presença de elementos centrais, com alta concentração de recursos,<br />

<strong>para</strong> coordenar os mecanismos associa<strong>dos</strong> ao compartilhamento de recursos e<br />

serviços.<br />

A arquitetura MASGRID foi especificada <strong>para</strong> oferecer suporte a grades<br />

móveis ad hoc, entretanto, os mecanismos propostos não foram desenvolvi<strong>dos</strong>, de<br />

modo que não existem resulta<strong>dos</strong> que comprovem a sua aplicabilidade. De modo<br />

similar, no projeto coreano K*Grid [KGrid 2002], foi apresentada uma proposta<br />

promissora com o intuito de oferecer suporte à formação de grades móveis<br />

pervasivas, organizadas como WLANs, investindo no uso de recursos ociosos <strong>dos</strong><br />

dispositivos sem fio. Entretanto, não há, até o presente momento, nenhum registro<br />

da evolução do projeto K*Grid nessa área específica, motivo pelo qual ele não se<br />

encontra entre os trabalhos apresenta<strong>dos</strong> nesta seção.<br />

em 2011. Disponível em . Acesso em: 01 abr. 2007.


A Arquitetura MoGrid 64<br />

<strong>Um</strong>a outra possibilidade de com<strong>para</strong>ção mais específica, que no entanto<br />

merece ser mencionada, diz respeito aos requisitos da camada de transparência,<br />

descrita na Subseção 2.3.2, os quais se assemelham, em muitos aspectos, às<br />

funcionalidades oferecidas pelas arquiteturas de provisão de qualidade de serviço<br />

(Quality of Service – QoS) <strong>para</strong> redes sem fio. Nas grades móveis, exemplos de<br />

parâmetros de QoS relaciona<strong>dos</strong> à execução de serviços incluem o tempo de<br />

conclusão das tarefas e o grau de precisão <strong>dos</strong> resulta<strong>dos</strong>. Já em relação a<br />

capacidade <strong>dos</strong> dispositivos da grade móvel, pode-se considerar a taxa de<br />

ocupação do processador, o percentual de memória disponível e a qualidade do<br />

enlace sem fio, entre outros.<br />

No contexto das arquiteturas de provisão de QoS, o middleware<br />

COLOMBA (Context and Location-based Middleware for Binding Adaptation)<br />

[Bellavista et al. 2003] oferece suporte à associação dinâmica de recursos através<br />

da exploração de metada<strong>dos</strong>. Esses metada<strong>dos</strong> são utiliza<strong>dos</strong> <strong>para</strong> descrever<br />

recursos, dispositivos, informações sobre os usuários, estratégias preferenciais e<br />

serviços do middleware. O middleware é estruturado em dois componentes: (i) o<br />

binder manager, que intermedia o acesso aos recursos de acordo com a política<br />

especificada e (ii) o policy manager, que oferece suporte à especificação,<br />

instalação dinâmica e alocação de políticas.<br />

Em [<strong>Lima</strong> 2002] é proposto um conjunto de frameworks <strong>para</strong> provisão de<br />

QoS em redes sem fio basea<strong>dos</strong> em conceitos como (i) noção de intervalos de<br />

QoS, (ii) adoção de parâmetros de QoS relaciona<strong>dos</strong> à mobilidade, (iii) classes de<br />

QoS, (iv) reservas antecipadas de recursos e (iv) políticas de controle de acesso<br />

aos recursos. Abordagem similar é adotada pelo grupo de pesquisa TIMELY (The<br />

Illinois Mobile Environment LaboratorY), que propõe uma arquitetura de<br />

gerenciamento de recursos adaptativa <strong>para</strong> ambientes de computação móvel<br />

[Bharghavan et al. 1998]. A arquitetura oferece um modelo de serviços adaptativo<br />

que permite às aplicações e aos gerente de recursos renegociar a QoS em função<br />

de alterações nas condições da rede sem fio.<br />

Como as aplicações de grade exigem um processamento intensivo, elas têm<br />

o seu desempenho afetado pela mobilidade <strong>dos</strong> dispositivos que participam da sua<br />

execução. Se esses dispositivos apresentam um perfil de mobilidade elevada, isso<br />

pode impactar de forma adversa no tempo necessário <strong>para</strong> concluir a execução da<br />

tarefa. Fazendo um <strong>para</strong>lelo entre os mecanismos de gerenciamento de recursos


A Arquitetura MoGrid 65<br />

das arquiteturas de QoS mencionadas anteriormente e os requisitos da camada de<br />

transparência da arquitetura MoGrid, é possível observar que a questão da<br />

mobilidade está diretamente relacionada a questão da provisão de qualidade de<br />

serviço. O objetivo fim das aplicações colaborativas desenvolvidas <strong>para</strong> as grades<br />

móveis é oferecer aos usuários de dispositivos móveis em redes sem fio as<br />

mesmas garantias de QoS experimentadas pelos usuários de dispositivos<br />

computacionais em redes fixas. Vale ressaltar que mesmo nos ambientes fixos, as<br />

“garantias” oferecidas durante a execução de um serviço não são garantias<br />

“absolutas”, o que se agrava ainda mais em ambientes computacionais móveis,<br />

nos quais essas garantias estão condicionadas à qualidade do enlace sem fio e à<br />

mobilidade <strong>dos</strong> dispositivos. Dessa forma, as garantias são válidas apenas se os<br />

recursos do dispositivo e do enlace sem fio não sofrerem variações que degradem<br />

o seu desempenho.<br />

<strong>Um</strong> aspecto de fundamental importância, comum tanto à camada de<br />

transparência – especialmente à subcamada de acesso transparente aos recursos –<br />

quanto às arquiteturas de provisão de QoS, diz respeito ao monitoramento da<br />

qualidade do serviço durante a sua utilização, visando a manutenção da QoS. No<br />

processo de manutenção da QoS, em alguns casos pode mesmo haver a<br />

necessidade da substituição <strong>dos</strong> provedores de serviço, já que a ocorrência<br />

freqüente de desconexões <strong>dos</strong> dispositivos pode resultar em um nível de QoS<br />

insatisfatório. De acordo com as especificações definidas na Subseção 2.3.2, na<br />

arquitetura MoGrid essas questões devem ser tratadas na subcamada de acesso<br />

transparente ao recurso, com a substituição <strong>dos</strong> colaboradores – no caso de<br />

desconexões voluntárias ou involuntárias – e a migração de tarefas; ações que<br />

“garantem” a provisão de um nível mínimo de QoS na grade móvel. Esse<br />

procedimento se assemelha ao mecanismo de sintonização, 4 utilizado nas<br />

arquiteturas de QoS. Esse mecanismo deve ser investigado com o intuito de<br />

enriquecer as discussões quanto aos requisitos necessários <strong>para</strong> a especificação da<br />

camada de transparência, podendo ser incorporado no seu desenvolvimento, com<br />

algumas adaptações, <strong>para</strong> atender as necessidades de uma grade móvel.


A Arquitetura MoGrid 66<br />

2.5.2.<br />

Análise Com<strong>para</strong>tiva<br />

A seguir, são defini<strong>dos</strong>, de forma breve, alguns parâmetros <strong>para</strong> mensurar o<br />

quanto as diferentes propostas, apresentadas nesta seção, adequam-se aos cenários<br />

de mobilidade das redes sem fio, destacando a forma como as características desse<br />

tipo de rede são tratadas nos projetos aqui menciona<strong>dos</strong>. Os parâmetros que serão<br />

apresenta<strong>dos</strong> nos próximos parágrafos são utiliza<strong>dos</strong>, na Tabela 1, como base de<br />

com<strong>para</strong>ção entre as propostas discutidas nesta seção e a arquitetura MoGrid.<br />

Provisão de Suporte a Redes Sem Fio Infra-estruturadas e Ad hoc. Para<br />

que uma arquitetura de descoberta de recursos e serviços atenda às necessidades<br />

de uma grade móvel, de acordo com a visão defendida nesta tese – onde os<br />

dispositivos sem fio desempenham o papel de elementos computacionais da grade<br />

móvel, não atuando apenas como consumidores de recursos e serviços –, a<br />

arquitetura deve oferecer suporte tanto às redes sem fio infra-estruturadas quanto<br />

às redes sem fio ad hoc.<br />

Gerenciamento de Mobilidade. Em grades móveis, a taxa de mobilidade<br />

<strong>dos</strong> dispositivos pode ser elevada e o tempo de permanência <strong>dos</strong> dispositivos na<br />

grade é variável, caracterizando altas taxas de churn. Portanto, é importante que se<br />

considerem aspectos relaciona<strong>dos</strong> à mobilidade e, conseqüentemente, aos<br />

perío<strong>dos</strong> de desconexão, na especificação de uma arquitetura <strong>para</strong> esse ambiente.<br />

Diretório de Serviços Distribuído. <strong>Um</strong>a arquitetura de descoberta de<br />

recursos e serviços é definida em função do uso de um serviço de diretório – que<br />

pode ser classificado em centralizado ou distribuído – <strong>para</strong> armazenar as<br />

informações sobre os recursos e serviços disponíveis na grade. A escolha do tipo<br />

de diretório influencia a forma como as informações sobre os serviços são<br />

recuperadas no processo de descoberta. No caso de um diretório centralizado, os<br />

clientes devem inicialmente obter a identificação de rede do diretório <strong>para</strong> então<br />

consultá-lo sobre os serviços disponíveis. Nesse caso, pode-se ainda implementar<br />

no diretório um mecanismo de notificação de informações sobre os serviços, que é<br />

4 Na provisão de QoS o mecanismo de sintonização é responsável pelo redimensionamento da<br />

parcela de utilização <strong>dos</strong> recursos, a qual foi disponibilizada ao usuário do serviço durante a


A Arquitetura MoGrid 67<br />

ativado a partir do registro de interesse do cliente a respeito de informações sobre<br />

recursos e serviços específicos. No caso de um diretório distribuído, cada<br />

dispositivo da rede deve armazenar localmente as informações a respeito <strong>dos</strong><br />

serviços que ele próprio disponibiliza, podendo ainda utilizar uma estratégia de<br />

cache <strong>para</strong> armazenar também as informações sobre os demais serviços ofereci<strong>dos</strong><br />

na grade, obtidas através de um mecanismo de anúncios periódicos de serviços.<br />

Essa abordagem é recomendada <strong>para</strong> as redes sem fio ad hoc nas quais a ausência<br />

de qualquer infra-estrutura pré-existente obriga que os serviços ofereci<strong>dos</strong> sejam<br />

especifica<strong>dos</strong> de forma flexível e distribuída, sem a dependência de um ponto<br />

central de coordenação. O uso de diretórios de serviços distribuí<strong>dos</strong> evita que o<br />

deslocamento ou mesmo a desconexão <strong>dos</strong> dispositivos comprometa o<br />

funcionamento do mecanismo de descoberta da grade móvel.<br />

Transparência de Acesso. <strong>Um</strong>a arquitetura de descoberta de serviços deve<br />

oferecer mecanismos que garantam a transparência de acesso ao recurso pelo<br />

dispositivo que o solicita. Na grade móvel, o importante é a disponibilidade do<br />

recurso e não a sua origem ou localização. A arquitetura deve oferecer suporte ao<br />

gerenciamento do problema da desconexão <strong>dos</strong> dispositivos móveis, tanto as<br />

voluntárias quanto as involuntárias.<br />

Heterogeneidade. Nas grades móveis, um fator de complexidade adicional<br />

diz respeito à heterogeneidade de hardware, de software e <strong>dos</strong> ambientes nos<br />

quais os dispositivos sem fio estão conecta<strong>dos</strong>, envolvendo diferentes tecnologias<br />

de rede, como Ethernet, Wi-Fi, celular, entre outros. Os novos ambientes<br />

propostos pelas grades móveis apontam <strong>para</strong> o compartilhamento de recursos e<br />

serviços através de redes com enlaces intermitentes e dispositivos finais que não<br />

necessariamente adotam políticas de segurança. Nesse novo ambiente, é<br />

importante a adoção de mecanismos <strong>para</strong> descoberta e acesso aos recursos e<br />

serviços que sejam independentes do protocolo de roteamento utilizado na<br />

MANET e não se restrinjam a uma tecnologia de rede sem fio específica. Outro<br />

fator que deve ser considerado é a diversidade de plataformas de hardware e<br />

sistemas operacionais. É de fundamental importância a utilização de mecanismos<br />

negociação da QoS, na fase de estabelecimento do contrato de serviço.


A Arquitetura MoGrid 68<br />

<strong>para</strong> oferecer portabilidade como, por exemplo, o uso de uma linguagem de<br />

desenvolvimento multiplataforma.<br />

Migração de Execução. <strong>Um</strong> problema específico que deve ser considerado<br />

é a migração da execução de tarefas entre colaboradores quando, por exemplo, um<br />

dispositivo infere que está prestes a perder a sua conectividade com a grade móvel<br />

que ele integra. A migração de tarefas deve ser realizada, idealmente, com a<br />

manutenção do estado de execução, o que aumenta consideravelmente a sua<br />

complexidade. Outro fator agravante nesse processo diz respeito a<br />

heterogeneidade de dispositivos, o que implica em hardware e software distintos<br />

entre os dispositivos da grade móvel; esse fator deve ser considerado ao se definir<br />

uma API <strong>para</strong> a migração de execução de tarefas.<br />

Descrição de Recursos. A descrição de recursos deve ser implementada de<br />

forma padronizada a fim de garantir a uniformidade entre as requisições e as<br />

descrições de recursos publicadas, promovendo a interoperabilidade entre redes e<br />

equipamentos. É importante considerar mecanismos de adaptação que<br />

possibilitem a extensão do modelo adotado, sem prejuízo ao processo de<br />

descoberta.<br />

A Tabela 1 apresenta um resumo com<strong>para</strong>tivo entre os trabalhos<br />

apresenta<strong>dos</strong> nesta seção e a arquitetura MoGrid. Os símbolos “T”, “NT”, “PT” e<br />

“” indicam, respectivamente, “tratado”, “não tratado”, “parcialmente tratado” e<br />

“não pôde ser avaliado”.


A Arquitetura MoGrid 69<br />

Tabela 1 – Resumo com<strong>para</strong>tivo <strong>dos</strong> projetos relaciona<strong>dos</strong> à arquitetura MoGrid.<br />

MoGrid<br />

ISAM/<br />

GRADEp<br />

[Kurkovsky<br />

et al. 2004]<br />

AKOGRIMO<br />

MASGRID<br />

Rede Sem Fio:<br />

Infra-estruturada<br />

Ad hoc<br />

T<br />

T<br />

T<br />

NT<br />

T<br />

NT<br />

T<br />

NT<br />

T<br />

NT<br />

Gerenciamento de Mobilidade PT NT PT T T<br />

Diretório de Serviços Distribuído T NT NT NT 5 T<br />

Transparência de Acesso PT T T <br />

Heterogeneidade T NT NT NT NT<br />

Migração de Execução NT PT 6 NT PT NT<br />

Descrição de Recursos PT PT T NT<br />

Dentre as arquiteturas apresentadas as abordagens propostas em [Kurkovsky<br />

et al. 2004], AKOGRIMO e MASGRID são as que mais se aproximam da visão<br />

de grade móvel defendida nesta tese, ou seja, um ambiente onde os dispositivos<br />

móveis atuam como elementos computacionais da grade propriamente dita.<br />

Dessas propostas, apenas a arquitetura MASGRID se propõe a oferecer suporte a<br />

uma grade móvel ad hoc, as demais se limitam a uma WLAN infra-estruturada,<br />

apresentando dependências quanto às tecnologias de rede e de software, o que<br />

viola a condição de heterogeneidade inerente às grades móveis. Entretanto, a<br />

arquitetura MASGRID é apresentada como uma proposta preliminar, sem<br />

especificar detalhes a respeito das soluções adotadas e muito menos oferecer uma<br />

implementação que possa ser utilizada. Por sua vez, nas soluções apresentadas em<br />

[Kurkovsky et al. 2004] e AKOGRIMO a especificação da arquitetura de<br />

descoberta de recursos se baseia na presença de um elemento central, um<br />

dispositivo rico em recursos conectado tanto à rede fixa quanto à rede móvel. Essa<br />

solução é inviável <strong>para</strong> as grades móveis organizadas através de redes sem fio ad<br />

hoc devido a ausência de um elemento central estável que possa gerenciar os<br />

processos de descoberta de recursos e de execução de tarefas, dado que nesse tipo<br />

5<br />

Adota um serviço de diretório centralizado, baseado em uma implementação do SLP<br />

[Guttman 1999].<br />

6 A migração da execução de tarefas no GRADEp é gerenciada pelo próprio usuário, de forma<br />

programada, e seu alcance se restringe ao escopo da rede local; não há gerenciamento de<br />

mobilidade física.


A Arquitetura MoGrid 70<br />

de rede to<strong>dos</strong> os dispositivos são móveis e to<strong>dos</strong> se conectam através do enlace<br />

sem fio. Além disso, em redes ad hoc situações de particionamento são<br />

freqüentes, o que provocaria a ausência do serviço de diretório, por um período<br />

indeterminado, em n-1 partições da rede, considerando n igual ao número de<br />

partições. A única alternativa que pode minimizar o efeito do particionamento das<br />

redes ad hoc na disponibilização das informações sobre os serviços da grade é a<br />

replicação dessas informações através da utilização de vários servidores de<br />

diretórios. Entretanto, ao se aumentar o número de servidores cria-se um novo<br />

problema, o da manutenção da consistência entre eles, cuja solução apresenta um<br />

nível de complexidade elevado em redes fixas, o qual pode crescer<br />

consideravelmente em redes sem fio ad hoc, inviabilizando o uso dessa alternativa<br />

[Carter et al. 2003; Farkas et al. 2004].<br />

2.5.3.<br />

Contribuições Alcançadas<br />

A arquitetura MoGrid foi proposta com o intuito de oferecer suporte ao<br />

desenvolvimento de aplicações <strong>para</strong> grades móveis e auxiliar a tomada de<br />

decisões referentes à descoberta e à seleção de recursos, bem como ao acesso e a<br />

utilização desses recursos. Algumas propostas foram desenvolvidas <strong>para</strong> oferecer<br />

suporte às grades móveis, entretanto, a maior parte dessas propostas tem adotado<br />

abordagens centralizadas, baseadas em redes fixas ou em redes sem fio infraestruturadas<br />

[Yamin et al. 2003; Kurkovsky et al. 2004]. A arquitetura MoGrid é<br />

independente de elementos centraliza<strong>dos</strong> e provê um ambiente de execução de<br />

tarefas que oferece, ao desenvolvedor de aplicações de grade, um conjunto de<br />

funcionalidades que tratam os aspectos relaciona<strong>dos</strong> à colaboração entre<br />

dispositivos heterogêneos em uma rede sem fio.<br />

Esta tese traz entre as suas principais contribuições a especificação de uma<br />

arquitetura <strong>para</strong> grades móveis que oferece suporte tanto às redes sem fio infraestruturadas<br />

quanto às redes sem fio ad hoc, tendo sido concebida de modo a<br />

também ser integrável com tecnologias de grade fixa. A arquitetura MoGrid adota<br />

uma abordagem peer-to-peer, totalmente descentralizada, independente da<br />

tecnologia de rede utilizada e de protocolos de roteamento em uso na MANET,<br />

tendo sido projetada <strong>para</strong> atender às necessidades específicas das grades móveis.


A Arquitetura MoGrid 71<br />

Por ter sido especificada de forma modular, adotando uma abordagem em<br />

camadas, os diferentes mecanismos relaciona<strong>dos</strong> à descoberta (camada de<br />

descoberta) e à utilização de serviços (camada de transparência) são se<strong>para</strong><strong>dos</strong>,<br />

podendo ser utiliza<strong>dos</strong> como módulos independentes, acopla<strong>dos</strong>, inclusive, em<br />

outras arquiteturas. Como é o caso do protocolo de descoberta e seleção de<br />

recursos P2PDP (Capítulo 4) e do algoritmo de supressão de mensagens de<br />

resposta por vizinhança (Seção 4.6).<br />

No próximo capítulo, os trabalhos relaciona<strong>dos</strong> à área-tema desta tese –<br />

descoberta de serviços <strong>para</strong> redes sem fio ad hoc – são apresenta<strong>dos</strong>. As<br />

peculiaridades de cada trabalho ilustram os diferentes critérios aponta<strong>dos</strong> na<br />

classificação genérica <strong>para</strong> os protocolos de descoberta de serviços introduzi<strong>dos</strong><br />

no mesmo capítulo. Na revisão bibliográfica é dada uma maior ênfase aos<br />

trabalhos que tratam, especificamente, da descoberta de serviços em redes sem fio<br />

ad hoc de saltos múltiplos, abordagem similar à adotada no protocolo <strong>para</strong><br />

descoberta e seleção de recursos em grades móveis ad hoc proposto nesta tese,<br />

denominado P2PDP (Peer-to-Peer Discovery Protocol). O protocolo P2PDP é<br />

descrito em detalhes no Capítulo 4.


3<br />

Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços<br />

3.1.<br />

Apresentação<br />

<strong>Descoberta</strong> de serviços é um tópico que sempre despertou muito interesse de<br />

pesquisa e desenvolvimento nas áreas de sistemas distribuí<strong>dos</strong> e redes de<br />

computadores, originando propostas nos mais diversos cenários, tanto <strong>para</strong> redes<br />

fixas quanto redes sem fio. Durante muito tempo, os protocolos de descoberta de<br />

serviços seguiram o modelo clássico de aplicações cliente-servidor. Nessa visão,<br />

de uma forma geral, servidores centraliza<strong>dos</strong> atuam como diretórios, armazenando<br />

um índice global <strong>dos</strong> serviços disponíveis na rede e gerenciando todo o processo<br />

de descoberta. Devido a essas características, esses protocolos são mais adequa<strong>dos</strong><br />

a redes fixas. Dentre os protocolos que fazem parte desse modelo, destacam-se<br />

Jini [Sun 1999a] da Sun, Salutation [Salutation 1999] da IBM e SLP (Service<br />

Location Protocol) [Guttman 1999] da IETF. 1 Esses protocolos foram adapta<strong>dos</strong><br />

<strong>para</strong> dispositivos móveis conecta<strong>dos</strong> através de redes locais sem fio infraestruturadas;<br />

a maioria com o objetivo de atender às necessidades das redes<br />

domésticas e empresariais por recursos e serviços de hardware – como<br />

impressoras multifuncionais, projetores multimídia, entre outros. As soluções<br />

obtidas nada mais são do que uma adaptação da solução original, desenvolvida<br />

<strong>para</strong> ambientes fixos, onde servidores centraliza<strong>dos</strong> oferecem suporte ao<br />

mecanismo de descoberta a serviços específicos, o que restringe a sua<br />

aplicabilidade. O protocolo UPnP [UPnP 2000] apresenta proposta similar aos<br />

protocolos menciona<strong>dos</strong> anteriormente, entretanto, o UPnP não adota o<br />

1 Por não ser o foco deste trabalho, esses protocolos não serão discuti<strong>dos</strong> em mais detalhes,<br />

entretanto, na Tabela 2 é feito um resumo com as suas principais características, de acordo com os<br />

critérios de classificação apresenta<strong>dos</strong> na Seção 3.2. Maiores informações sobre esses protocolos<br />

podem ser encontradas em [<strong>Lima</strong> et al. 2007a].


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 73<br />

mecanismo de diretórios de serviços, apresentando uma abordagem distribuída<br />

que utiliza comunicação peer-to-peer.<br />

O interesse crescente em viabilizar o compartilhamento de recursos e<br />

serviços entre dispositivos móveis, organiza<strong>dos</strong> através de uma rede sem fio, tem<br />

motivado o surgimento de modelos alternativos. Existem alguns protocolos<br />

desenvolvi<strong>dos</strong>, especificamente, <strong>para</strong> oferecer suporte às redes sem fio ad hoc de<br />

salto único, dentre os quais se destacam o Bluetooth SDP [Bluetooth 2001] e o<br />

DEAPspace [Nidd 2001; Hermann et al. 2001]. Por sua vez, a pesquisa na área de<br />

descoberta de serviços em redes sem fio ad hoc de saltos múltiplos é<br />

relativamente nova, ainda não existindo um padrão consolidado que possa ser<br />

utilizado pela indústria. O principal motivo <strong>para</strong> a falta de maturidade <strong>dos</strong><br />

protótipos produzi<strong>dos</strong>, deve-se à mobilidade irrestrita <strong>dos</strong> dispositivos, os quais<br />

podem entrar e sair, espontaneamente, do sistema. Esse tipo de rede, de uma<br />

forma geral, é associado à formação de grupos de colaboração temporários – por<br />

exemplo, em situações de resgate em grandes áreas e na cooperação veicular em<br />

auto-estradas e no trânsito das grandes cidades, através de redes veiculares<br />

(Vehicular Area Networks – VANs) – ou ao estabelecimento de redes de sensores<br />

– por exemplo, em regiões inóspitas e vastas, como florestas densas –, adequan<strong>dos</strong>e<br />

a situações onde não existe uma infra-estrutura de comunicação ou a infraestrutura<br />

existente não está disponível. Nesses cenários, tanto a demanda quanto a<br />

disponibilidade de recursos e serviços podem apresentar uma variabilidade sem<br />

par, em com<strong>para</strong>ção aos cenários de redes fixas e redes sem fio ad hoc de salto<br />

único. Dentre algumas das principais propostas de protocolos de descoberta de<br />

serviços, da academia, <strong>para</strong> MANETs de saltos múltiplos, pode-se mencionar:<br />

GSD (Group-based Service Discovery) [Chakraborty et al. 2002; Chakraborty et<br />

al. 2005; Chakraborty et al. 2006], Allia (Allia-nce) [Ratsimor et al. 2002;<br />

Ratsimor et al. 2004], Konark [Lee et al. 2003; Helal et al. 2003], ORION<br />

(Optimized Routing Independent Overlay Network) [Klemm et al. 2003], a<br />

abordagem cross-layer de Varshavsky et al. [2005] e a abordagem FTA (Field<br />

Theoretic Approach) que se baseia na teoria de campo eletrostático [Lenders et al.<br />

2005]. Esses protocolos serão discuti<strong>dos</strong> mais adiante, ilustrando a classificação<br />

proposta <strong>para</strong> os protocolos de descoberta de serviços apresentada na Seção 3.2.


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 74<br />

3.2.<br />

Classificação <strong>dos</strong> <strong>Protocolo</strong>s de <strong>Descoberta</strong> de Serviços<br />

Os protocolos de descoberta de serviços existentes geralmente empregam<br />

terminologias específicas com o propósito de ressaltar as características positivas<br />

<strong>dos</strong> mesmos, identificadas como aspectos singulares de cada proposta em relação<br />

ao estado da arte. A utilização de uma terminologia comum <strong>para</strong> a classificação<br />

auxilia na análise das vantagens e desvantagens das diferentes abordagens,<br />

revelando-se um mecanismo de com<strong>para</strong>ção eficiente. A seguir, será apresentada<br />

uma classificação obtida a partir da avaliação de diferentes protocolos de<br />

descoberta de serviços encontra<strong>dos</strong> na literatura, bem como da convergência das<br />

classificações propostas <strong>para</strong> esses trabalhos por diferentes autores [Marin-<br />

Perianu et al. 2005; Cho & Lee 2005; Zhu et al. 2005; Edwards 2006; Mian et al.<br />

2006; Seno et al. 2007]. Essa classificação foi elaborada levando-se em<br />

consideração um conjunto de critérios que se constituem em uma base de<br />

com<strong>para</strong>ção, a saber:<br />

• A arquitetura de descoberta de serviços. <strong>Um</strong>a arquitetura especifica a<br />

organização de qualquer sistema e o modo como os seus principais<br />

componentes estão conecta<strong>dos</strong> entre si. As arquiteturas de descoberta de<br />

serviços podem adotar uma abordagem baseada no uso de diretórios de<br />

serviços centraliza<strong>dos</strong>, os quais são responsáveis pelo processamento de<br />

anúncios e consultas em nome de to<strong>dos</strong> os dispositivos da rede, ou<br />

distribuí<strong>dos</strong>, onde cada dispositivo é responsável por manter as<br />

informações sobre os serviços que disponibiliza ou conhece;<br />

• O escopo da descoberta de serviços. O escopo da descoberta corresponde<br />

ao conjunto de serviços que podem ser descobertos por um dado cliente.<br />

A determinação do escopo de um protocolo de descoberta permite o<br />

controle <strong>dos</strong> mecanismos que são utiliza<strong>dos</strong> <strong>para</strong> obter informações sobre<br />

os serviços na rede. A definição do escopo da descoberta é feita com base<br />

em critérios, como a topologia da rede, as permissões de acesso<br />

embutidas nos diferentes papéis de usuário em um domínio<br />

administrativo e as informações de contexto de alto nível – tais como as<br />

informações temporais (como data, hora e fuso horário), espaciais (como<br />

latitude, longitude e posição relativa) e àquelas relacionadas às atividades


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 75<br />

desempenhadas pelos usuários <strong>dos</strong> dispositivos no seu dia-a-dia. Em<br />

protocolos de descoberta de serviços distribuí<strong>dos</strong>, cujo escopo é definido<br />

em função da topologia da rede, o alcance do mecanismo de descoberta é<br />

determinado, em parte, pelas regras de roteamento em vigência. Nesses<br />

protocolos, a requisição de serviço pode ser encaminhada apenas aos<br />

dispositivos que constituem a rede local do dispositivo que a originou, ou<br />

alcançar dispositivos em outras redes físicas, a vários saltos de distância<br />

de onde a requisição foi originada. Em protocolos de descoberta de<br />

serviços centraliza<strong>dos</strong>, basea<strong>dos</strong> na estrutura de diretórios, o escopo pode<br />

ser expandido interconectando-se diretórios em diferentes domínios<br />

administrativos com relações de confiança previamente estabelecidas;<br />

nesses sistemas, pode-se empregar políticas de controle de acesso aos<br />

serviços com base na autenticação <strong>dos</strong> usuários <strong>dos</strong> dispositivos, segundo<br />

os seus papéis;<br />

• As técnicas de descrição de serviços. Descrição de serviço é uma<br />

abstração das características e facilidades inerentes a um serviço. Essa<br />

abstração torna-se necessária em diferentes etapas do processo de<br />

descoberta: (i) quando um serviço, na arquitetura baseada no uso de<br />

diretórios centraliza<strong>dos</strong>, é registrado pelo seu provedor junto ao diretório;<br />

(ii) quando um provedor, na arquitetura baseada no uso de diretórios<br />

distribuí<strong>dos</strong>, divulga na rede, através de mensagens de anúncios, a<br />

disponibilidade <strong>dos</strong> serviços que oferece; e (iii) quando o serviço é<br />

requisitado por outros dispositivos ou mesmo por outros serviços. Em um<br />

protocolo de descoberta, os clientes procuram por um serviço específico<br />

consultando as descrições de serviços anunciadas pelos provedores ou<br />

enviando uma requisição à rede contendo a descrição do serviço que<br />

desejam. Existem duas abordagens empregadas com maior freqüência: os<br />

pares atributo-valor e as linguagens de descrição. Serviços descritos<br />

através de pares atributo-valor, que é o formato mais comumente<br />

utilizado em protocolos de descoberta, são representa<strong>dos</strong> através de um<br />

nome e de um conjunto de atributos. Serviços descritos através de


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 76<br />

linguagens de descrição permitem uma representação do serviço através<br />

do uso de ontologias; 2<br />

• O mecanismo de consulta às informações de serviços. O método de<br />

consulta utilizado em um protocolo de descoberta de serviços pode ser<br />

entendido como um processo de busca atrelado a um casamento<br />

(matching) entre as requisições de descoberta (demandas) e as descrições<br />

de serviços locais e remotos (ofertas), estas últimas divulgadas através de<br />

anúncios ou registradas em diretórios. O algoritmo de matching utilizado<br />

pelo mecanismo de consulta representa uma função que aceita, como<br />

entrada, a demanda e um conjunto de descrições de ofertas, provendo,<br />

como resultado, o subconjunto das ofertas que satisfazem a demanda<br />

especificada. Segundo [Gonzalez-Castillo et al. 2001], pode-se alcançar<br />

uma melhoria do processo quando o algoritmo retorna uma lista ordenada<br />

das k melhores ofertas, <strong>para</strong> cada demanda. <strong>Um</strong>a vez que o processo de<br />

matching é baseado em com<strong>para</strong>ções, linguagens que permitam, de forma<br />

natural, especificar tipos, restrições e relações entre conceitos agregam<br />

valor semântico ao protocolo de descoberta de serviços, como ocorre com<br />

as linguagens de descrição baseadas em XML [W3C 2001; W3C 2004];<br />

• O armazenamento das informações de serviços. Informações de serviço<br />

são divulgadas pelo provedor do serviço (ou diretório) através de<br />

mecanismos de anúncio ou em resposta a mensagens de requisição. A<br />

informação de um serviço é utilizada <strong>para</strong> descrever, identificar e<br />

selecionar o serviço na rede. A informação pode incluir o nome do<br />

serviço, o seu identificador, o endereço do provedor do serviço, o<br />

protocolo que o cliente e o provedor devem utilizar <strong>para</strong> invocar o<br />

serviço, o período no qual a informação é válida, entre outros itens. As<br />

informações sobre os serviços devem ser armazenadas em repositórios, de<br />

modo que os demais dispositivos possam recuperá-las e contactar o<br />

provedor de um serviço particular. De acordo com o modo como esses<br />

2 Em ciência da computação, uma ontologia é um modelo de da<strong>dos</strong> que representa um domínio<br />

específico. Ontologias permitem que se façam inferências sobre os objetos em um dado domínio e<br />

sobre as relações entre eles [Berners-Lee et al. 2001].


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 77<br />

repositórios são organiza<strong>dos</strong>, eles são classifica<strong>dos</strong> como centraliza<strong>dos</strong> ou<br />

distribuí<strong>dos</strong>. Na primeira abordagem, as informações sobre to<strong>dos</strong> os<br />

serviços disponíveis na rede são armazenadas em diretórios<br />

compartilha<strong>dos</strong> com acesso centralizado. Na segunda abordagem, os<br />

dispositivos da rede possuem o seu próprio repositório local, onde<br />

armazenam informações sobre os serviços que disponibilizam, assim<br />

como sobre os serviços divulga<strong>dos</strong> na rede. A abordagem distribuída pode<br />

ainda ser subdividida em cooperativa, quando os nós mantêm<br />

informações parciais sobre os serviços da rede, que se complementam, e<br />

não cooperativa, quando os dispositivos armazenam as informações sobre<br />

to<strong>dos</strong> os serviços da rede, mantendo uma visão global do sistema. O<br />

mecanismo utilizado <strong>para</strong> determinar a validade das informações sobre<br />

um serviço define se essas informações estão armazenadas como soft<br />

state ou hard state. Quando as informações sobre os serviços são<br />

mantidas na forma soft state – estratégia comumente empregada no<br />

armazenamento distribuído – a sua validade é especificada na mensagem<br />

de anúncio e precisa ser atualizada, periodicamente, pelo seu provedor,<br />

antes que expire, o que tornaria o serviço inalcançável. Quando as<br />

informações sobre os serviços são mantidas como hard state, elas só são<br />

removidas se o provedor do serviço solicitar, explicitamente, a sua<br />

remoção ou for constatada a indisponibilidade do serviço, ao se tentar<br />

utilizá-lo;<br />

• Os mecanismos de descoberta de serviços. Os mecanismos de descoberta<br />

podem ser utiliza<strong>dos</strong> <strong>para</strong> localizar o dispositivo que hospeda o diretório<br />

responsável por armazenar as informações sobre os serviços da rede ou<br />

<strong>para</strong> localizar diretamente os dispositivos provedores de serviços. A<br />

abordagem adotada no processo de descoberta depende da arquitetura de<br />

descoberta e de como os serviços são registra<strong>dos</strong>. Basicamente, existem<br />

duas formas <strong>para</strong> se consultar informações sobre os serviços disponíveis<br />

na rede: a descoberta passiva, onde os provedores anunciam<br />

periodicamente os seus serviços <strong>para</strong> toda a rede, e a descoberta ativa,<br />

onde o cliente envia requisições de descoberta <strong>para</strong> provedores ou


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 78<br />

diretórios com o intuito de obter informações sobre um serviço específico<br />

ou sobre to<strong>dos</strong> os serviços disponíveis;<br />

• Os mecanismos de seleção de serviços. Embora o escopo do mecanismo<br />

de descoberta restrinja o número de respostas recebidas pelo cliente, o<br />

resultado de uma requisição a um determinado serviço pode conter não<br />

somente informações de um, mas de vários provedores do mesmo serviço.<br />

Neste caso, o ideal é que o melhor provedor seja selecionado, sem que<br />

haja a necessidade de interferência do usuário. Os protocolos de<br />

descoberta podem oferecer opções de seleção manual, com a intervenção<br />

direta do usuário da aplicação, ou automática, através de um algoritmo<br />

implementado no lado cliente, selecionando a melhor opção em função<br />

das características da aplicação. Nos protocolos de descoberta que<br />

utilizam repositórios centraliza<strong>dos</strong>, o algoritmo de seleção pode ser<br />

implementado no próprio diretório, que se encarrega de fazer a seleção do<br />

melhor serviço, em nome do cliente, de acordo com critérios<br />

especifica<strong>dos</strong> na requisição;<br />

• O mecanismo de invocação de serviços. Embora seja um tópico à parte,<br />

muitos protocolos de descoberta de serviços tratam a questão da<br />

invocação do serviço. Depois que a seleção é processada, o protocolo de<br />

descoberta de serviços pode oferecer mecanismos <strong>para</strong> que o cliente<br />

utilize o serviço, a partir das informações contidas na resposta<br />

selecionada. Os protocolos de descoberta oferecem suporte à invocação<br />

de serviços em três níveis diferentes, que podem ser cumulativos. No<br />

primeiro nível, o cliente obtém a localização do serviço, através do<br />

mecanismo de descoberta, e se conecta diretamente ao provedor que o<br />

oferece através do seu endereço de rede; as aplicações que utilizam o<br />

protocolo de descoberta são responsáveis por definir o mecanismo de<br />

comunicação entre clientes e servidores e o conjunto de operações<br />

disponíveis no serviço. Em um segundo nível, o protocolo de descoberta<br />

especifica os mecanismos de comunicação entre os clientes e os serviços.<br />

Em um terceiro nível, o protocolo de descoberta pode definir um conjunto<br />

de operações específicas <strong>para</strong> um domínio de aplicação, em adição à<br />

localização do serviço e ao mecanismo de comunicação;


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 79<br />

• Os mecanismos <strong>para</strong> oferecer suporte à mobilidade. O suporte à<br />

mobilidade implica que a informação sobre os serviços disponíveis na<br />

rede, quer seja armazenada em diretórios centraliza<strong>dos</strong> ou distribuí<strong>dos</strong>,<br />

deva ser atualizada em função das modificações na topologia da rede,<br />

provocadas pela mobilidade <strong>dos</strong> dispositivos. Caso as informações<br />

mantidas por um dispositivo sobre os serviços da rede estejam obsoletas,<br />

há uma grande chance desse dispositivo responder a uma requisição de<br />

serviço com informações desatualizadas. Ao receber a resposta a sua<br />

solicitação, o cliente tentará acessar o serviço e, só então, irá detectar a<br />

sua indisponibilidade, pois o provedor do serviço pode ter se deslocado<br />

ou se tornado inalcançável;<br />

• Os mecanismos de segurança. A questão da segurança apresenta vários<br />

desafios no projeto de protocolos de descoberta de serviços,<br />

especialmente em MANETs. A necessidade de se atender a requisitos de<br />

usabilidade, como configuração automática, implementação simplificada<br />

e redução do tráfego de mensagens de controle na rede, implica na adoção<br />

de esquemas de segurança muito simples. <strong>Um</strong>a grande parte <strong>dos</strong><br />

protocolos de descoberta de serviços encontra<strong>dos</strong> na literatura não tratam<br />

a questão da segurança ou apenas a embutem em suas propostas,<br />

utilizando as soluções implementadas nas tecnologias sobre as quais elas<br />

se baseiam. No projeto de alguns protocolos de descoberta de serviços, é<br />

possível constatar a tentativa de inserir um nível mínimo de controle com<br />

fins de segurança, como acontece no Bluetooth SDP, com a provisão de<br />

mecanismos opcionais de criptografia da comunicação no nível de enlace,<br />

e no Allia, com a especificação de políticas de segurança próprias,<br />

baseadas na percepção do usuário. Além de restringir a usabilidade, em<br />

MANETs, a implementação de mecanismos de segurança adiciona<br />

também um alto custo computacional ao projeto de um protocolo de<br />

descoberta de serviços. Entretanto, essa medida pode se mostrar<br />

necessária em ambientes onde usuários que não possuem uma relação de<br />

confiança pré-estabelecida se comunicam livremente, constituindo<br />

comunidades virtuais com potencial <strong>para</strong> colaboração.


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 80<br />

Nas próximas seções, os protocolos de descoberta de serviços <strong>para</strong> redes<br />

sem fio ad hoc, menciona<strong>dos</strong> na Seção 3.1, são revisita<strong>dos</strong> em função da<br />

classificação aqui apresentada. É importante registrar que apenas os critérios<br />

relevantes ao projeto de um protocolo de descoberta e seleção de recursos <strong>para</strong><br />

grades móveis ad hoc serão apresenta<strong>dos</strong> nas próximas seções, a saber: os<br />

mecanismos de descoberta de serviços, o mecanismo de seleção de serviços e os<br />

mecanismos <strong>para</strong> oferecer suporte à mobilidade. Os exemplos que serão utiliza<strong>dos</strong><br />

restringem-se aos protocolos de descoberta de serviços projeta<strong>dos</strong> <strong>para</strong> as<br />

MANETs, por essa abordagem estar diretamente relacionada com o trabalho<br />

desenvolvido nesta tese: o projeto, a implementação e a avaliação de desempenho<br />

de um protocolo de descoberta e seleção de recursos <strong>para</strong> grades móveis<br />

organizadas através de redes sem fio ad hoc de saltos múltiplos, denominado<br />

P2PDP (Peer-to-Peer Discovery Protocol), o qual é descrito em detalhes no<br />

Capítulo 4. Maiores informações sobre a classificação aqui apresentada e sobre as<br />

peculiaridades de cada protocolo de descoberta mencionado na Seção 3.1 podem<br />

ser encontradas em [<strong>Lima</strong> et al. 2007a].<br />

3.2.1.<br />

Os Mecanismos de <strong>Descoberta</strong> de Serviços<br />

Os mecanismos de descoberta podem ser utiliza<strong>dos</strong> <strong>para</strong> localizar o dispositivo<br />

que hospeda o diretório responsável por armazenar as informações sobre os<br />

serviços da rede ou <strong>para</strong> localizar diretamente os dispositivos provedores de<br />

serviços. A abordagem adotada no processo de descoberta depende da arquitetura<br />

de descoberta e de como os serviços são registra<strong>dos</strong>. Basicamente, existem duas<br />

formas <strong>para</strong> se consultar informações sobre os serviços disponíveis na rede<br />

(Figura 7): a descoberta passiva, onde os provedores anunciam periodicamente os<br />

seus serviços <strong>para</strong> toda a rede, como ocorre no DEAPspace, e a descoberta ativa,<br />

onde o cliente envia mensagens de descoberta <strong>para</strong> provedores ou diretórios com<br />

o intuito de obter informações sobre um serviço específico ou sobre to<strong>dos</strong> os<br />

serviços disponíveis, como no Bluetooth SDP e no ORION. Essas abordagens<br />

também são conhecidas, na literatura, como proativa e reativa, respectivamente,<br />

em uma alusão à classificação utilizada com os protocolos de roteamento planos<br />

<strong>para</strong> MANETs. Na maioria <strong>dos</strong> casos, os protocolos de descoberta de serviços<br />

implementam ambas as abordagens, como acontece com os protocolos GSD,


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 81<br />

Allia, Konark, ORION, FTA e com a abordagem cross-layer de Varshavsky et al.<br />

[2005].<br />

Figura 7 – Mecanismos de descoberta de serviços.<br />

3.2.1.1.<br />

<strong>Descoberta</strong> Passiva<br />

Nessa abordagem, quando um serviço anuncia as suas características e a sua<br />

disponibilidade, todas as partes envolvidas recebem essa informação. Na<br />

arquitetura baseada no uso de diretórios centraliza<strong>dos</strong>, os provedores registram as<br />

informações sobre os serviços que disponibilizam junto aos diretórios e esses<br />

fazem anúncios periódicos divulgando os serviços que gerenciam. Na arquitetura<br />

baseada no uso de diretórios distribuí<strong>dos</strong>, os clientes mantêm atualizado o seu<br />

conhecimento sobre os serviços disponíveis através <strong>dos</strong> anúncios de serviços que<br />

são difundi<strong>dos</strong>, periodicamente, na rede, pelos provedores de serviços. <strong>Um</strong><br />

dispositivo pode emitir anúncios contendo apenas informações sobre os serviços<br />

que disponibiliza, ou incluir também informações sobre os serviços ofereci<strong>dos</strong> por<br />

outros dispositivos do sistema a respeito <strong>dos</strong> quais tenha conhecimento, como<br />

acontece no DEAPspace, GSD, FTA e na a abordagem cross-layer de<br />

Varshavsky et al. [2005]. Em alguns protocolos, as informações sobre os serviços<br />

remotos se restringem àquelas referentes aos dispositivos na vizinhança do<br />

receptor do anúncio. Entretanto, existem abordagens que defendem a replicação<br />

das informações sobre os serviços da rede em to<strong>dos</strong> os dispositivos, criando uma<br />

visão global do sistema em cada dispositivo. Este é o caso do DEAPspace, onde<br />

os dispositivos anunciam, em janelas de tempo reservadas, a sua visão global do<br />

sistema. No Konark, é proposto o mecanismo de anúncio incremental, como uma<br />

melhoria à abordagem apresentada no DEAPspace, onde a consistência da visão<br />

global é obtida por um mecanismo de filtragem: cada anúncio corresponde à<br />

diferença (delta) entre o conhecimento adquirido pelo dispositivo e a visão global


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 82<br />

divulgada pelos demais dispositivos da rede (Figura 8). Esse mecanismo<br />

caracteriza um “protocolo epidêmico”, também conhecido como protocolo de<br />

disseminação de “rumores” (gossip). O objetivo do mecanismo de disseminação é<br />

compartilhar o conhecimento da visão global de serviços disponíveis no sistema<br />

entre to<strong>dos</strong> os nós da rede, com a máxima convergência, gerando a menor<br />

quantidade possível de tráfego de mensagens de anúncio. Como avaliado em [Lee<br />

et al. 2003], a extensão ao protocolo Konark baseada na disseminação de rumores<br />

(Konark gossip) obtém uma convergência tão rápida quanto a alcançada pelo<br />

DEAPspace-plus, 3 com um tráfego de da<strong>dos</strong> bem menor, o que o torna mais<br />

eficiente. Entretanto, o funcionamento do protocolo de descoberta Konark é<br />

atrelado a pré-existência de um mecanismo que ofereça suporte ao roteamento<br />

multicast na MANET.<br />

Figura 8 – Mecanismo de anúncio incremental do Konark.<br />

Em muitas propostas, é definido um parâmetro configurável denominado<br />

“diâmetro do anúncio”, responsável por delimitar o alcance <strong>dos</strong> anúncios em<br />

termos do número de saltos que eles irão percorrer, como é o caso <strong>dos</strong> protocolos<br />

GSD, Allia e FTA. Em uma rede de salto único, o diâmetro corresponde a “0”,<br />

3 DEAPspace-plus corresponde a uma extensão ao protocolo DEAPspace que oferece suporte às<br />

redes sem fio ad hoc de saltos múltiplos.


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 83<br />

enquanto que, em redes de saltos múltiplos, esse valor é definido no intervalo<br />

fechado [1, n], onde n representa o limite máximo.<br />

No protocolo GSD, os nós efetuam anúncios periódicos <strong>para</strong> seus vizinhos,<br />

anúncios esses restritos a um número de saltos configurável. Ao receber uma<br />

mensagem de anúncio, as informações referentes aos serviços são extraídas e<br />

armazenadas localmente como soft state, até que a sua validade expire, quando<br />

elas são removidas do repositório de serviços do dispositivo. As mensagens de<br />

anúncio de serviços carregam, de carona, informações sobre os grupos de serviços<br />

anuncia<strong>dos</strong> na vizinhança do nó. As informações sobre grupos de serviço<br />

viabilizam o mecanismo de matching aproximado, oferecendo resulta<strong>dos</strong><br />

aproxima<strong>dos</strong> a uma consulta. Por exemplo, se a requisição especifica uma<br />

impressora InkJet, o mecanismo de matching faz uma consulta considerando o<br />

grupo ao qual o serviço pertence (Printer). Dessa forma, é possível descobrir<br />

uma impressora LaserJet presente na vizinhança; a resposta a essa requisição<br />

trará informações sobre os dois serviços, impressora InkJet e impressora<br />

LaserJet.<br />

No Allia, os anúncios podem ser de dois tipos: anúncio de serviço e anúncio<br />

de plataforma (ou dispositivo). Os anúncios de serviço transportam informações<br />

sobre os serviços disponibiliza<strong>dos</strong> pelo dispositivo anunciante. Esses anúncios<br />

podem ser emiti<strong>dos</strong> periodicamente ou em função de eventos específicos, como<br />

quando um agente no dispositivo recebe um novo anúncio ou detecta a presença<br />

de um novo dispositivo na vizinhança. Os anúncios de plataforma servem <strong>para</strong> um<br />

dispositivo notificar seus vizinhos sobre a sua presença, e são emiti<strong>dos</strong><br />

periodicamente. <strong>Um</strong> anúncio de plataforma serve ainda <strong>para</strong> atualizar a validade<br />

das informações divulgadas pelos anúncios de serviços do dispositivo anunciante.<br />

No Allia, a periodicidade de envio do anúncio pode ser ajustada em função de<br />

políticas locais. Várias políticas podem ser utilizadas <strong>para</strong> ajustar as taxas de<br />

envio, como mencionado a seguir. Em redes estáveis, pode-se empregar uma taxa<br />

de freqüência constante de anúncios. Nos cenários de topologia dinâmica, pode-se<br />

adotar o algoritmo MILD (Multiplicative Increase Linear Decrease) ou o BEB<br />

(Binary Exponential Back-off), <strong>para</strong> aumentar a freqüência de envio <strong>dos</strong> anúncios<br />

de serviços. <strong>Um</strong>a terceira abordagem reduz a freqüência com que os anúncios são<br />

gera<strong>dos</strong>, restringindo o seu envio à detecção da presença de novos dispositivos,


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 84<br />

caracterizando um aumento na taxa de mobilidade da MANET, o que se infere<br />

através do recebimento de novos anúncios de serviços. <strong>Um</strong>a característica<br />

particular do Allia é a formação de “alianças” (Allia-nce) de dispositivos. A<br />

aliança de um dado dispositivo consiste no conjunto de dispositivos <strong>dos</strong> quais ele<br />

armazena anúncios de serviço. Tanto o número de membros quanto o diâmetro de<br />

uma aliança são determina<strong>dos</strong> pela política local do dispositivo. O número de<br />

membros está associado ao número de anúncios remotos que podem ser<br />

armazena<strong>dos</strong> pelo nó, já o diâmetro, ao número de saltos que os anúncios podem<br />

percorrer. Em ambientes altamente dinâmicos, é recomendada a redução do<br />

diâmetro da aliança, <strong>para</strong> evitar que as informações armazenadas a partir <strong>dos</strong><br />

anúncios de serviço tornem-se obsoletas muito rapidamente, devido ao constante<br />

deslocamento <strong>dos</strong> nós. No Allia, o uso de políticas locais garante a flexibilidade<br />

do protocolo e a sua adaptabilidade, em tempo de execução, às características do<br />

ambiente, à capacidade do dispositivo, às configurações específicas das aplicações<br />

hospedadas pelo dispositivo e às preferências do usuário.<br />

A idéia central, em torno da qual a abordagem FTA foi desenvolvida,<br />

baseia-se na distribuição das informações sobre os serviços <strong>para</strong> toda a vizinhança<br />

da rede usando uma analogia com campos eletrostáticos: um serviço é visto como<br />

uma carga eletrostática (positiva), que gera um campo sobre a rede, e as<br />

requisições de descoberta são vistas como cargas de teste (negativas), que são<br />

atraídas <strong>para</strong> o serviço, em função do gradiente de campo gerado. Os anúncios de<br />

serviços são dissemina<strong>dos</strong> na rede sem fio através de um mecanismo de difusão<br />

por broadcast. Esses anúncios contém informações sobre a capacidade do<br />

provedor em oferecer cada tipo de serviço e o gradiente de campo associado a<br />

cada serviço.<br />

Em oposição aos trabalhos menciona<strong>dos</strong>, o protocolo P2PDP não<br />

implementa o mecanismo de descoberta passiva. Como a sua especificação foi<br />

definida em função das especificidades das grades móveis, o mecanismo de<br />

anúncio mostrou-se proibitivo, visto que, nesses ambientes, a provisão do serviço<br />

está associada ao compartilhamento de recursos dinâmicos entre os dispositivos<br />

da grade. Esses recursos se caracterizam por apresentarem flutuações na sua<br />

disponibilidade em função do tempo, sendo influencia<strong>dos</strong> por fatores como a<br />

qualidade do enlace sem fio e variações na topologia da rede. Considerando-se,


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 85<br />

por exemplo, a conexão entre dois nós, ela pode deixar de existir em uma fração<br />

de segundo, quer seja em função de variações na qualidade do enlace sem fio,<br />

quer seja pelo deslocamento de um ou mais nós que constituem o caminho entre<br />

eles. Em uma rede sem fio, a manutenção da conectividade entre dois nós<br />

quaisquer – A e B – só é garantida com a colaboração <strong>dos</strong> nós vizinhos. A conexão<br />

entre os nós A e B pode sofrer interferências caso ocorram tentativas de<br />

comunicação entre os nós na sua vizinhança nesse período. Nesse caso, segundo<br />

[Yang & De Veciana 2005], o recurso de interesse não é o enlace entre os dois nós<br />

e sim o canal sem fio da região geográfica na qual eles se encontram.<br />

Devido as características anteriormente mencionadas, a manutenção de um<br />

mecanismo periódico de anúncios contendo informações sobre os recursos<br />

disponíveis na grade móvel e o armazenamento dessas informações nos<br />

dispositivos, incorre no aumento do consumo de recursos como ciclos de<br />

processamento e espaço de armazenamento. As alterações freqüentes na<br />

disponibilidade <strong>dos</strong> recursos dinâmicos implica na redução <strong>dos</strong> intervalos entre a<br />

transmissão de anúncios <strong>para</strong> garantir que as informações armazenadas sobre<br />

esses recursos, nos dispositivos da grade móvel, mantenham-se atualizadas e<br />

consistentes. Como foi verificado na análise de desempenho do protocolo Allia,<br />

realizada em [Ratsimor et al. 2004], um efeito colateral do aumento da freqüência<br />

de envio <strong>dos</strong> anúncios é o crescimento do tráfego de da<strong>dos</strong> no canal sem fio,<br />

aumentando a probabilidade de ocorrência de colisões e provocando uma redução<br />

na taxa de entrega de pacotes. Como conseqüência do aumento do número de<br />

transmissões, verifica-se a redução da carga residual da bateria <strong>dos</strong> dispositivos<br />

sem fio, o que reduz o tempo de vida <strong>dos</strong> dispositivos na grade móvel. De um<br />

modo geral, quando os recursos provi<strong>dos</strong> são altamente dinâmicos, o uso do<br />

mecanismo de anúncios em redes ad hoc torna-se proibitivo [Frank & Karl 2004].<br />

3.2.1.2.<br />

<strong>Descoberta</strong> Ativa<br />

Nessa abordagem, o cliente envia mensagens de descoberta <strong>para</strong> obter<br />

informações sobre os serviços ou diretórios da rede. Ao receber uma requisição<br />

originada localmente, o dispositivo a processa; se a descrição corresponder a um<br />

serviço que ele disponibiliza, uma resposta é gerada e entregue ao cliente; caso


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 86<br />

contrário, a requisição é então encaminhada aos demais dispositivos da rede.<br />

Requisições <strong>para</strong> um mesmo serviço, provenientes de clientes diferentes, são<br />

tratadas e respondidas se<strong>para</strong>damente. Na arquitetura baseada no uso de diretórios<br />

centraliza<strong>dos</strong>, inicialmente, os clientes usam multicast UDP ou broadcast UDP<br />

<strong>para</strong> descobrir o diretório que gerencia as informações sobre os serviços. Feito<br />

isso, as requisições passam a ser enviadas em unicast ao diretório que responde,<br />

também em unicast, informando as características e a localização do serviço;<br />

posteriormente, o cliente se conecta diretamente ao provedor <strong>para</strong> ter acesso ao<br />

serviço. Na arquitetura baseada no uso de diretórios distribuí<strong>dos</strong>, as mensagens de<br />

descoberta são transmitidas por difusão <strong>para</strong> to<strong>dos</strong> os dispositivos na rede, através<br />

de broadcast ou multicast – Bluetooth SDP, GSD, Konark, ORION, FTA e a<br />

abordagem cross-layer de Varshavsky et al. [2005]. Quando o encaminhamento<br />

de pacotes em saltos múltiplos é tratado, o alcance da mensagem (número de<br />

saltos pelos quais ela irá trafegar) é geralmente definido, assim como acontece<br />

com os anúncios de serviço na descoberta ativa, por um parâmetro configurável,<br />

denominado “diâmetro da requisição”. Alguns protocolos implementam<br />

mecanismos diferencia<strong>dos</strong> de encaminhamento de requisições. Nessas propostas,<br />

as requisições são difundidas, de forma seletiva, na direção <strong>dos</strong> nós que têm a<br />

maior probabilidade de oferecer o serviço, o que é feito com base em critérios prédefini<strong>dos</strong>.<br />

No GSD, o critério utilizado diz respeito ao grupo ao qual o serviço<br />

pertence, no Allia às políticas definidas pelo usuário e no FTA ao potencial do<br />

dispositivo em prover o serviço. Cada um desses critérios é comentado a seguir.<br />

No GSD, quando um dispositivo precisa utilizar um serviço, inicialmente é<br />

realizada uma consulta às informações de serviços armazenadas localmente, que<br />

correspondem às informações sobre os serviços disponibiliza<strong>dos</strong> pelos seus<br />

vizinhos a no máximo N saltos de distância. Caso não exista referência ao serviço<br />

em questão, o dispositivo gera uma mensagem de requisição e a encaminha,<br />

adotando uma abordagem seletiva, orientada aos grupos de serviços presentes na<br />

sua vizinhança. A Figura 9 ilustra a dinâmica do mecanismo de roteamento<br />

inteligente de requisições de serviços <strong>para</strong> uma rede sem fio ad hoc de saltos<br />

múltiplos simplificada, com o diâmetro da requisição (parâmetro HOP_COUNT)<br />

igual a 4.


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 87<br />

Figura 9 – Encaminhamento de requisições baseado em grupos de serviços (adaptada<br />

de [Strang 2005]).<br />

A Figura 9 mostra uma seqüência de nós interconecta<strong>dos</strong>, onde os círculos<br />

traceja<strong>dos</strong> delimitam a vizinhança <strong>dos</strong> nós. As legendas S e G representam,<br />

respectivamente, os serviços e os grupos aos quais eles pertencem. O dispositivo<br />

N 1 corresponde ao nó que originou a requisição e o dispositivo N 6 corresponde ao<br />

provedor do serviço requisitado (S 1 ). Quando a requisição {S 1 (G 1 )}, solicitando o<br />

serviço S 1 que pertence ao grupo G 1 , é recebida pelos nós N 2 e N 3 , eles verificam,<br />

nas suas bases de informações de serviços, as entradas associadas ao grupo G 1 na<br />

sua vizinhança. Como o nó N 2 não possui nenhuma entrada associada ao grupo<br />

G 1 , ele descarta a requisição. O nó N 3 encontra uma entrada <strong>para</strong> o grupo G 1<br />

associada ao nó N 4 ; a requisição é, então, seletivamente, encaminhada a esse nó.<br />

O procedimento descrito se repete em to<strong>dos</strong> os outros nós, até que a requisição<br />

alcance o nó N 6 , onde é descoberta uma entrada direta <strong>para</strong> o serviço requisitado<br />

(S 1 ). Quando o GSD falha na identificação do conjunto de nós <strong>para</strong> efetuar o<br />

encaminhamento seletivo, a requisição é, então, transmitida através de broadcast.<br />

O desempenho do protocolo GSD decai especialmente quando as requisições não<br />

são especificadas em termos <strong>dos</strong> grupos de serviço, utilizando outros atributos, o<br />

que implica em um esquema de inundação da rede.<br />

Com o intuito de prevenir a inundação da rede pela difusão das mensagens<br />

de requisição, causada pelo uso de broadcast [Ni et al. 1999; Tseng et al. 2003], o


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 88<br />

Allia implementa um mecanismo de encaminhamento seletivo, através do uso de<br />

multicast baseado em políticas. Essa abordagem restringe a transmissão a um<br />

conjunto de vizinhos em particular – especifica<strong>dos</strong> nas políticas locais do<br />

dispositivo –, como, por exemplo, aqueles mais ativos. Ao receber uma<br />

requisição, o dispositivo decide se irá processá-la, ou não, com base na sua<br />

política local. Caso nenhuma referência ao serviço seja encontrada, a requisição é<br />

enviada <strong>para</strong> o agente de encaminhamento, que consulta a política local <strong>para</strong><br />

decidir se a encaminha, ou não, <strong>para</strong> os outros dispositivos na sua aliança.<br />

Na abordagem FTA, as requisições <strong>para</strong> uma instância de um dado tipo de<br />

serviço são encaminhadas seletivamente na direção do provedor que gerou o<br />

maior gradiente de campo, de forma similar ao roteamento de mensagens anycast.<br />

Para que as requisições possam ser encaminhadas de forma apropriada, os valores<br />

<strong>dos</strong> campos eletrostáticos, calcula<strong>dos</strong> por cada dispositivo, <strong>para</strong> os diferentes tipos<br />

de serviços, devem ser troca<strong>dos</strong> periodicamente entre os nós vizinhos, o que é<br />

feito através <strong>dos</strong> anúncios periódicos de serviços dissemina<strong>dos</strong> por broadcast.<br />

Para amenizar os efeitos provoca<strong>dos</strong> pela inundação da rede com mensagens de<br />

anúncio, o FTA propõe uma estratégia <strong>para</strong> aumentar a escalabilidade dessa<br />

solução com o armazenamento das informações contidas nesses anúncios nos nós<br />

intermediários, entretanto essa estratégia só se mostra eficaz quando aplicada a<br />

múltiplas instâncias de um mesmo tipo de serviço, mostrando-se inepta quando na<br />

rede são disponibiliza<strong>dos</strong> diferentes tipos de serviços distintos.<br />

No protocolo ORION, os dispositivos não fazem a divulgação das<br />

informações sobre os serviço os quais disponibilizam; as informações sobre os<br />

serviços são obtidas através de requisições sob demanda. Nesse protocolo, cada nó<br />

armazena as informações de serviços contidas nas respostas às requisições de<br />

serviços que trafegam na rede por seu intermédio, o que caracteriza um<br />

mecanismo de anúncio “implícito”.<br />

Propostas adeptas da integração <strong>dos</strong> mecanismos de roteamento e<br />

descoberta de serviços, recomendam a utilização de protocolos de roteamento <strong>para</strong><br />

redes sem fio ad hoc, como o protocolo reativo AODV (Ad hoc On-demand<br />

Distance Vector) [Perkins et al. 2003], caso falhas sejam detectadas no caminho<br />

utilizado <strong>para</strong> o encaminhamento da mensagem de resposta em direção ao nó que<br />

originou a requisição, como ocorre no GSD e no ORION. No caso <strong>dos</strong> protocolos


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 89<br />

que adotam uma abordagem cross-layer, como em [Varshavsky et al. 2005], as<br />

mensagens de requisição e anúncio de serviços são encapsuladas nas mensagens<br />

de controle do protocolo de roteamento sobre o qual o mecanismo de descoberta<br />

foi implementado.<br />

De forma similar aos trabalhos menciona<strong>dos</strong> anteriormente, o protocolo<br />

P2PDP implementa o mecanismo de descoberta ativa e utiliza o conceito de<br />

diâmetro de requisição. Como contribuição da abordagem proposta no protocolo<br />

P2PDP, é introduzido o conceito de perfil de execução, que identifica os<br />

requisitos necessários, em termos de recursos dinâmicos, <strong>para</strong> a execução das<br />

tarefas pelos dispositivos da grade móvel. Essa informação é transmitida na<br />

requisição de serviço, o que permite que ao receber uma requisição o nó possa<br />

verificar a sua adequação ao perfil de execução antes de respondê-la. Esse<br />

conceito é comum aos ambientes de grade fixa, no qual os dispositivos são<br />

seleciona<strong>dos</strong> <strong>para</strong> executar tarefas em função de um conjunto de requerimentos<br />

associa<strong>dos</strong> a disponibilidade de recursos nos mesmos.<br />

3.2.2.<br />

O Mecanismo de Seleção de Serviços<br />

Embora o escopo do mecanismo de descoberta restrinja o número de respostas<br />

recebidas pelo cliente, o resultado de uma requisição <strong>para</strong> um determinado serviço<br />

deve conter não só informações de um, mas de vários provedores do mesmo<br />

serviço. Neste caso, o ideal é que o melhor provedor seja selecionado, sem que<br />

haja a necessidade de interferência do usuário. Como ilustrado na Figura 10, os<br />

protocolos de descoberta de serviços podem oferecer opções de seleção manual,<br />

com a intervenção direta do usuário da aplicação – como ocorre nos protocolos<br />

Bluetooth SDP, DEAPspace, GSD, Allia, Konark e ORION –, ou automática,<br />

através de um algoritmo implementado no lado cliente, selecionando a melhor<br />

opção em função das características da aplicação, como ocorre no FTA e na<br />

abordagem cross-layer de Varshavsky et al. [2005]. Quando a abordagem de<br />

seleção automática é implementada, deve-se considerar as métricas que irão<br />

definir qual é a melhor oferta. Na abordagem cross-layer de Varshavsky et al.<br />

[2005], o critério de seleção utilizado é a menor distância, em número de saltos,<br />

entre o dispositivo que originou a requisição e o provedor do serviço. Os autores


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 90<br />

mencionam a possibilidade de se utilizar métricas específicas associadas ao<br />

serviço, às condições do provedor – como, por exemplo, a sua carga de<br />

processamento, que está diretamente relacionada ao número de requisições sendo<br />

atendidas – ou mesmo às condições da rede. Na abordagem FTA, quando há mais<br />

de um provedor <strong>para</strong> o mesmo tipo de serviço, a seleção é feita de forma<br />

automática pelo sistema de descoberta, que escolhe, em prol do cliente, o<br />

provedor mais adequado, em função de duas métricas: a distância entre o cliente e<br />

a instância do serviço, calculada tendo como base o número de saltos entre eles, e<br />

a capacidade de serviço (Capacity of Service – CoS), que representa a carga do<br />

serviço, em uma analogia a cargas em um campo eletrostático. Nessa abordagem,<br />

cada tipo de serviço determina o CoS em função de características específicas do<br />

serviço que devem ser padronizadas em to<strong>dos</strong> os dispositivos da rede. Por<br />

exemplo, o CoS de um serviço de provisão de acesso à Internet pode indicar a<br />

capacidade do enlace das suas conexões, já o CoS de um serviço de impressão<br />

pode indicar a sua velocidade. O CoS assume valores positivos em um intervalo<br />

[CoS min , CoS max ] definido <strong>para</strong> cada tipo de serviço; esses intervalos devem ser<br />

representa<strong>dos</strong> de modo uniforme por to<strong>dos</strong> os dispositivos na rede.<br />

Figura 10 – Critérios de seleção de serviços.<br />

Como mencionado, na maioria <strong>dos</strong> protocolos apresenta<strong>dos</strong>, a seleção <strong>dos</strong><br />

serviços de interesse é feita manualmente pelo usuário ou pela aplicação que<br />

utiliza o sistema. As exceções ficam por conta da abordagem cross-layer de<br />

Varshavsky et al. [2005] e do FTA nos quais, assim como no protocolo P2PDP, a<br />

seleção é implementada de forma automática. <strong>Um</strong> diferencial do protocolo P2PDP<br />

em relação a esses trabalhos diz respeito a forma como o critério de seleção é<br />

aplicado. Diferentemente do FTA, onde a seleção é feita no encaminhamento da<br />

requisição de serviço, no P2PDP a seleção ocorre durante o encaminhamento das<br />

respostas, permitindo que mais de uma resposta seja selecionada, o que não ocorre<br />

no FTA, onde uma única instância do serviço é retornada. Esse comportamento do<br />

protocolo P2PDP se deve ao fato da sua especificação ter sido determinada pelos<br />

requisitos do mecanismo de seleção das grades computacionais, onde uma


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 91<br />

requisição deve receber como resposta, informações sobre múltiplas instâncias do<br />

mesmo serviço. A vantagem de se implementar a seleção no encaminhamento das<br />

respostas e não no das requisições se deve ao fato de não haver a necessidade de<br />

se manter informações atualizadas, armazenadas em cada dispositivo, sobre a<br />

disponibilidade de serviços nos outros nós da rede. A implementação do<br />

mecanismo de seleção durante o encaminhamento das requisições introduz a<br />

necessidade de se especificar um parâmetro de com<strong>para</strong>ção – no caso do FTA, o<br />

CoS – que estabeleça um critério de seleção entre os diferentes tipos de serviço de<br />

cada provedor sobre os quais se tenha informações, de modo que as requisições<br />

sejam encaminhadas seletivamente na direção <strong>dos</strong> melhores provedores.<br />

Em relação a abordagem cross-layer de Varshavsky et al. [2005], na qual a<br />

seleção é feita somente quando as mensagens de resposta chegam ao dispositivo<br />

que originou a requisição, no P2PDP, como já foi mencionado, a seleção é feita no<br />

encaminhamento das respostas, de uma forma cooperativa, pelos dispositivos no<br />

diâmetro da requisição. A seleção no encaminhamento das mensagens de resposta<br />

no P2PDP é implementada pelo mecanismo de supressão, o que permite que as<br />

respostas menos aptas sejam removidas da rede antes de chegar ao seu destino, o<br />

que evita o desperdício de recursos como ciclos de CPU e energia no<br />

processamento e encaminhamento dessas mensagens pelos nós intermediários.<br />

Além disso, no P2PDP é permitido configurar, na requisição de serviço, o número<br />

de respostas esperado e o tempo máximo que o requisitante está disposto a esperar<br />

por essas respostas, opção não disponível nos trabalhos apresenta<strong>dos</strong>. Esses<br />

parâmetros são necessários em uma grade computacional, pois estão relaciona<strong>dos</strong><br />

diretamente aos mecanismos de distribuição e execução de tarefas, determinando,<br />

respectivamente, o número de dispositivos necessários <strong>para</strong> a execução das tarefas<br />

que compõem uma requisição de serviço e uma fração do retardo máximo<br />

tolerado na iniciação do serviço, a qual diz respeito ao tempo de resposta do<br />

mecanismo de descoberta.<br />

3.2.3.<br />

Mecanismos <strong>para</strong> oferecer suporte à Mobilidade<br />

Em uma rede sem fio, os dispositivos se movimentam constantemente, alterando a<br />

sua localização física, o que torna obsoletas as rotas através das quais eles eram


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 92<br />

alcançáveis. <strong>Um</strong>a abordagem de armazenamento de informação de serviço é dita<br />

completamente distribuída, quando cada dispositivo mantém informações somente<br />

a respeito <strong>dos</strong> serviços que ele próprio disponibiliza, sem ter que gerenciar<br />

informações sobre os serviços disponibiliza<strong>dos</strong> pelos demais dispositivos. Nesse<br />

cenário, o problema de se manter, mediante a presença da mobilidade, as<br />

informações sobre os serviços atualizadas é contornado através da descoberta<br />

ativa. Nesse caso, pode-se verificar uma atualização implícita das informações<br />

sobre os serviços [Marin-Perianu et al. 2005]. São realizadas consultas aos<br />

serviços disponíveis na rede, sob demanda, através do envio de mensagens de<br />

requisição a endereços de multicast ou broadcast (ver Subseção 3.2.1).<br />

O suporte à mobilidade implica que a informação sobre os serviços<br />

disponíveis na rede, quer seja armazenada nos diretórios (centralizada) ou nos<br />

dispositivos da rede (distribuída), deva ser atualizada em função das modificações<br />

na topologia da rede, provocadas pela mobilidade <strong>dos</strong> dispositivos. Se, em um<br />

dado grupo, um dispositivo armazena informações sobre os serviços <strong>dos</strong> demais<br />

dispositivos, espera-se que ele mantenha informações corretas, na medida do<br />

possível. Se o dispositivo altera a sua posição em relação ao grupo, ou se algum<br />

membro do grupo se desloca, as informações de serviços devem ser atualizadas o<br />

mais rapidamente possível. Somente dessa forma, pode-se esperar, com uma certa<br />

probabilidade, que um protocolo de descoberta de serviços consiga descobrir um<br />

dado serviço em tempo hábil. Caso as informações mantidas por um dispositivo<br />

sobre os serviços da rede estejam obsoletas, há uma grande chance desse<br />

dispositivo responder, a uma requisição de serviço, com informações<br />

desatualizadas; ao receber a resposta a sua solicitação, o cliente tentará acessar o<br />

serviço e, só então, irá detectar a sua indisponibilidade, pois o provedor do serviço<br />

pode ter se deslocado ou se tornado inalcançável. Existem dois méto<strong>dos</strong> principais<br />

<strong>para</strong> solucionar esse problema (Figura 11): proativo e reativo. No método<br />

proativo, os dispositivos mantêm uma visão atualizada das informações sobre os<br />

serviços disponíveis na rede com a troca periódica de mensagens de anúncio<br />

contendo da<strong>dos</strong> mais recentes sobre o serviço. No método reativo, a informação é<br />

atualizada em razão da ocorrência de eventos na rede, como, por exemplo, a<br />

indisponibilidade de uma rota <strong>para</strong> um provedor ou a detecção de mudanças de<br />

estado informadas pelo próprio serviço. Nesse método, a disponibilidade do


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 93<br />

serviço pode ser consultada pelos clientes, junto a provedores (ou diretórios), de<br />

forma direta, sob demanda, ou através de notificações. <strong>Um</strong> terceiro método diz<br />

respeito à manutenção das informações sobre os serviços atualizadas mediante À<br />

mobilidade da rede de um modo implícito, em decorrência da adoção de um<br />

mecanismo de descoberta reativo, baseado puramente no envio de requisições de<br />

serviço sob demanda, como é o caso do Bluetooth SDP. Nesse protocolo, como a<br />

descoberta é feita em função do modelo requisição-resposta, não há manutenção<br />

das informações de serviços, o que caracteriza uma atualização “implícita”.<br />

Figura 11 – Méto<strong>dos</strong> de provisão de suporte à mobilidade.<br />

<strong>Protocolo</strong>s de descoberta que adotam a abordagem cross-layer podem<br />

implementar os dois méto<strong>dos</strong>, como é o caso de [Varshavsky et al. 2005], que<br />

utiliza as informações de roteamento e aquelas contidas nas mensagens de<br />

controle do protocolo de descoberta <strong>para</strong> inferir a respeito da validade das<br />

informações mantidas sobre os serviços e, conseqüentemente, sobre a<br />

disponibilidade desses serviços. Em protocolos de descoberta basea<strong>dos</strong> na<br />

manutenção da estrutura da rede sobreposta, como é o caso do ORION, a<br />

atualização das informações sobre os serviços da rede é associada à manutenção<br />

das informações de roteamento e, portanto, a indisponibilidade do caminho <strong>para</strong><br />

um provedor indica a indisponibilidade de um serviço, seguindo uma abordagem<br />

de manutenção das informações sobre os serviços reativa. No ORION, o único<br />

tipo de serviço provido é a transferência de arquivos, o que o caracteriza como um<br />

protocolo de propósito específico.<br />

Em alguns protocolos de descoberta de serviços, como é o caso do Konark e<br />

da abordagem cross-layer de Varshavsky et al. [2005], o tráfego referente ao<br />

mecanismo de descoberta – mensagens de anúncios, requisições e respostas de<br />

serviços – é interceptado e processado, pelos nós intermediários, de modo que se<br />

obtenham informações sobre serviços adicionais.<br />

<strong>Um</strong>a prática comum, é a manutenção das informações sobre os serviços na<br />

forma soft state: o período de validade da informação é especificado nas


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 94<br />

mensagens de anúncio, o que caracteriza o método proativo de provisão de<br />

suporte à mobilidade. Antes que o período de validade associado ao serviço<br />

expire, o seu provedor deve encaminhar um novo anúncio <strong>para</strong> revalidar as<br />

informações sobre o serviço, o que se obtém através de um mecanismo de<br />

anúncios periódicos. A periodicidade com que esses anúncios são divulga<strong>dos</strong><br />

pode ser definida através de parâmetros configuráveis pelo usuário – como<br />

acontece nos protocolos GSD, Allia e FTA –, através do monitoramento das<br />

condições da rede – como no Allia e na abordagem cross-layer de<br />

Varshavsky et al. [2005] – ou, ainda, uma combinação das duas abordagens,<br />

levando sempre em consideração a mobilidade <strong>dos</strong> dispositivos e de sua<br />

vizinhança. Alguns protocolos de descoberta de serviços que implementam o<br />

método proativo usam a limitação do número de saltos da propagação <strong>dos</strong><br />

anúncios, <strong>para</strong> restringir o alcance da transmissão das informações sobre os<br />

serviços da rede, como é o caso <strong>dos</strong> protocolos GSD, Allia e FTA. Essa<br />

abordagem tem como intuito facilitar a manutenção das informações sobre os<br />

serviços, limitando a sua divulgação aos dispositivos mais próximos<br />

geograficamente, que constituem uma vizinhança física, aumentando, com isso, as<br />

chances de se localizar um serviço dentro da vizinhança do dispositivo.<br />

O P2PDP foi projetado <strong>para</strong> um cenário dinâmico, sendo intrínseco ao seu<br />

funcionamento prover mecanismos que ofereçam suporte à mobilidade <strong>dos</strong> nós,<br />

mantendo as informações sobre os serviços atualizadas, o que é obtido de forma<br />

“implícita” pelo mecanismo de descoberta ativa, através de requisições de serviço<br />

sob demanda, em função da necessidade <strong>dos</strong> usuários. Os demais trabalhos<br />

apresenta<strong>dos</strong>, com exceção do Bluetooth SDP, implementam um mecanismo<br />

explícito de provisão de suporte à mobilidade <strong>para</strong> minimizar o problema de se<br />

manter as informações sobre os serviços atualizadas. Nesses protocolos, essas<br />

informações são obtidas através das mensagens de anúncio e das respostas às<br />

mensagens de requisição. No protocolo P2PDP cada dispositivo armazena<br />

exclusivamente informações sobre os serviços que ele disponibiliza; <strong>para</strong> obter<br />

informações sobre os serviços disponíveis na rede, são realizadas requisições sob<br />

demanda, as quais obtém como resposta informações atualizadas sobre os<br />

serviços. Dentre as suas vantagens, essa abordagem não introduz custos adicionais<br />

em função do armazenamento das informações de serviço – presente nas


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 95<br />

abordagens que utilizam os méto<strong>dos</strong> reativo e proativo – e do aumento da carga da<br />

rede em decorrência do envio periódico de anúncios de serviços<br />

[Engelstad et al. 2006], além do custo de comunicação ao se tentar contactar<br />

provedores de serviço que não estão mais disponíveis, em função da consulta a<br />

informações de serviços desatualizadas.<br />

3.3.<br />

Visão Geral <strong>dos</strong> <strong>Protocolo</strong>s de <strong>Descoberta</strong> de Serviços<br />

Como os protocolos <strong>para</strong> as redes fixas alcançaram a maturidade no seu<br />

desenvolvimento, é possível observar uma tendência crescente no sentido de<br />

desenvolver novas soluções com o intuito de oferecer suporte à descoberta de<br />

serviços <strong>para</strong> as redes sem fio, especialmente <strong>para</strong> as redes sem fio ad hoc. Os<br />

protocolos de descoberta de serviços desenvolvi<strong>dos</strong> <strong>para</strong> as MANETs de saltos<br />

múltiplos são iniciativas recentes da área acadêmica e não existe, até o momento,<br />

uma especificação que possa ser adotada como padrão pela indústria. Nessas<br />

redes, a mobilidade introduz questões desafiadoras, como a manutenção das<br />

informações sobre os serviços mediante as freqüentes mudanças de topologia da<br />

rede – o que implica no controle da periodicidade e do alcance das mensagens de<br />

anúncio –, aspectos relaciona<strong>dos</strong> à escalabilidade, o gerenciamento <strong>dos</strong> recursos<br />

<strong>dos</strong> dispositivos sem fio – especialmente a energia, recurso constantemente<br />

solicitado nas transmissões geradas pelos protocolos de descoberta – e<br />

mecanismos <strong>para</strong> controlar o tráfego de mensagens de requisição e resposta, que<br />

são as responsáveis, respectivamente, pela inundação e implosão de mensagens no<br />

enlace sem fio, aumentando a probabilidade da ocorrência de colisões.<br />

A seleção automática de serviços apresenta-se como um aspecto importante<br />

no desenvolvimento de um protocolo de descoberta de serviços <strong>para</strong> redes sem fio<br />

ad hoc, como destacado na proposta do protocolo FTA e na abordagem crosslayer<br />

de Varshavsky et al. [2005]. Devido à mobilidade <strong>dos</strong> dispositivos que<br />

constituem esse tipo de rede, a seleção do provedor de serviço mais adequado –<br />

dentre aqueles que disponibilizam o serviço – é fundamental <strong>para</strong> garantir que o<br />

serviço possa ser, de fato, utilizado após a sua descoberta. Critérios como a<br />

distância da rede e a capacidade do provedor são geralmente utiliza<strong>dos</strong> na<br />

implementação da escolha <strong>dos</strong> provedores mais adequa<strong>dos</strong>. Em [Varshavsky<br />

et al. 2005], é enfatizada a necessidade de um mecanismo de reavaliação do


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 96<br />

serviço selecionado, que garanta a qualidade do serviço de descoberta oferecido,<br />

através do registro de rotinas de callback, <strong>para</strong> que o cliente seja notificado<br />

quando um servidor mais adequado for detectado na sua vizinhança. Mecanismos<br />

de seleção de serviços devem ser aprimora<strong>dos</strong> no sentido de embutir algum nível<br />

de provisão de QoS nos protocolos de descoberta de serviços <strong>para</strong> as redes sem fio<br />

ad hoc.<br />

As abordagens apresentadas até aqui, não atendem às necessidades<br />

originadas pelas grades móveis organizadas através de redes sem fio ad hoc, que<br />

necessitam de um mecanismo completamente descentralizado, onde cada<br />

dispositivo deve se responsabilizar pelo gerenciamento de seus serviços de forma<br />

autônoma. Isso se deve ao fato <strong>dos</strong> dispositivos sem fio e, conseqüentemente, os<br />

serviços que eles disponibilizam se deslocarem freqüentemente, alterando a<br />

topologia da rede, o que inviabiliza a manutenção das informações de serviço em<br />

um dispositivo central. Na grande maioria <strong>dos</strong> protocolos apresenta<strong>dos</strong> neste<br />

capítulo, os anúncios estão associa<strong>dos</strong> a recursos estáticos, ou seja, recursos que<br />

não apresentam flutuações na sua disponibilidade, como acontece, por exemplo,<br />

com impressoras multifuncionais, as quais estão disponíveis todo o tempo em que<br />

permanecerem ativas. A sua disponibilidade não é fracionada, como ocorre com<br />

os recursos dinâmicos, os quais estão associa<strong>dos</strong> aos serviços não-específicos que<br />

demandam, por exemplo, um alto consumo de processamento e energia.<br />

Em se tratando de grades móveis ad hoc, a descoberta de serviços deve ser<br />

realizada, preferencialmente, sob demanda, através de consultas à vizinhança,<br />

evitando que o meio sem fio seja inundado com mensagens de divulgação<br />

periódica de informações de serviços, cujo tempo de validade deve ser reduzido,<br />

devido à instabilidade da topologia, provocada pelas altas taxas de churn. Nesse<br />

modelo, quando um dispositivo realiza uma requisição, os demais dispositivos o<br />

auxiliam a “espalhar” o pedido e a receber a(s) resposta(s), atuando de forma<br />

colaborativa. Além disso, de acordo com a revisão bibliográfica realizada, não há<br />

nenhum protocolo de descoberta de serviços que realize explicitamente a seleção<br />

simultânea de nós múltiplos como os provedores mais adequa<strong>dos</strong> de um serviço<br />

específico. Tal característica, de forma similar às técnicas de meta-escalonamento<br />

em grades fixas [Czajkowski et al. 2004], é particularmente importante em grades<br />

móveis <strong>para</strong> oferecer um ambiente de execução <strong>para</strong> aplicações de processamento<br />

intensivo.


Trabalhos Relaciona<strong>dos</strong> à <strong>Descoberta</strong> de Serviços 97<br />

A discussão anterior apenas reforça a necessidade de um novo protocolo de<br />

descoberta que contemple as peculiaridades das grades móveis ad hoc. Nesta tese,<br />

é proposto o protocolo P2PDP (Peer-to-Peer Discovery Protocol) com o intuito<br />

de suprir a carência de um mecanismo integrado de descoberta e seleção de<br />

recursos <strong>para</strong> as grades móveis ad hoc [Gomes et al. 2007; <strong>Lima</strong> et al. 2007b]. Por<br />

adotar uma abordagem reativa – baseada no envio de requisições de descoberta e<br />

de respostas a essas requisições, sob demanda, utilizando difusão por broadcast –<br />

o protocolo P2PDP trata os problemas de inundação [Ni et al. 1999;<br />

Tseng et al. 2003] e de implosão [Duffield et al. 1999], respectivamente das<br />

requisições e de suas respostas, comuns a esse tipo de abordagem. O protocolo<br />

P2PDP é descrito em detalhes no Capítulo 4.<br />

3.4.<br />

Resumo Com<strong>para</strong>tivo <strong>dos</strong> <strong>Protocolo</strong>s de <strong>Descoberta</strong> de Serviços<br />

<strong>para</strong> MANETs<br />

Como foi mencionado na Seção 3.1, as soluções propostas <strong>para</strong> a descoberta de<br />

serviços em redes sem fio têm se concentrado em três cenários distintos: (i) as<br />

soluções projetadas <strong>para</strong> redes fixas adaptadas às redes sem fio, (ii) as soluções<br />

projetadas <strong>para</strong> as redes sem fio ad hoc de salto único e (iii) as soluções projetadas<br />

<strong>para</strong> as redes sem fio ad hoc de saltos múltiplos. Na Tabela 2, a classificação<br />

apresentada na Seção 3.2 é utilizada como base de com<strong>para</strong>ção entre as principais<br />

iniciativas de prover mecanismos de descoberta de serviços <strong>para</strong> as redes sem fio.


Tabela 2 – Resumo com<strong>para</strong>tivo <strong>dos</strong> protocolos de descoberta de serviços <strong>para</strong> redes sem fio.<br />

Soluções <strong>para</strong> redes fixas adaptadas às redes sem fio<br />

Soluções <strong>para</strong> redes sem<br />

fio ad hoc de salto único<br />

Soluções <strong>para</strong> redes sem fio ad hoc de saltos múltiplos<br />

Salutation SLPv2 Jini UPnP SSDP<br />

Bluetooth<br />

SDP<br />

DEAPspace GSD Allia<br />

Konark<br />

Gossip<br />

ORION<br />

[Varshavsky<br />

et al. 2005]<br />

FTA<br />

P2PDP<br />

Arquitetura de<br />

<strong>Descoberta</strong><br />

Diretório<br />

centralizado<br />

hierárquico ou<br />

plano<br />

Diretório<br />

centralizado<br />

plano ou<br />

distribuído<br />

Diretório<br />

centralizado<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Diretório<br />

distribuído<br />

Escopo<br />

Topologia da<br />

rede (PANs a<br />

WANs)<br />

Topologia da<br />

rede e papéis<br />

de usuário<br />

(escopos)<br />

Topologia da<br />

rede, papéis de<br />

usuário e<br />

contexto<br />

Topologia da<br />

rede (PANs a<br />

WANs)<br />

Topologia da<br />

rede<br />

Topologia da<br />

rede<br />

Topologia da<br />

rede<br />

Topologia da<br />

rede<br />

Topologia da<br />

rede<br />

Topologia da<br />

rede<br />

Topologia da<br />

rede<br />

Topologia da<br />

rede<br />

Topologia da<br />

rede e contexto<br />

Descrição de<br />

Serviços<br />

Pares atributovalor<br />

basea<strong>dos</strong><br />

em templates e<br />

elementos prédefini<strong>dos</strong><br />

(unidades<br />

funcionais)<br />

Pares atributovalor<br />

basea<strong>dos</strong><br />

em templates<br />

de atributos<br />

Descrição de<br />

pares atributovalor<br />

utilizando<br />

linguagem de<br />

programação<br />

Descrição em<br />

XML baseada<br />

em templates<br />

UPnP<br />

Pares atributovalor<br />

basea<strong>dos</strong><br />

Pares atributovalor<br />

em templates e<br />

elementos prédefini<strong>dos</strong><br />

Ontologia<br />

Independente<br />

Descrição em<br />

XML, com<br />

templates prédefini<strong>dos</strong><br />

Pares atributovalor<br />

Independente<br />

Descrição de<br />

Não tratada<br />

pares atributovalor<br />

utilizando<br />

(considera-se o<br />

uso de<br />

linguagem de<br />

ontologias)<br />

programação<br />

Méto<strong>dos</strong> de<br />

Busca<br />

(matching)<br />

Baseado na<br />

com<strong>para</strong>ção de<br />

vários atributos<br />

Com<strong>para</strong>ção de<br />

vários atributos<br />

utilizando<br />

predica<strong>dos</strong><br />

lógicos<br />

Dependente da<br />

linguagem de<br />

programação<br />

utilizada<br />

Baseado na<br />

com<strong>para</strong>ção de<br />

um único<br />

atributo<br />

Baseado na<br />

com<strong>para</strong>ção de<br />

vários atributos<br />

do tipo UUID<br />

Baseado na<br />

com<strong>para</strong>ção de<br />

vários atributos<br />

Semântico<br />

Compatível com<br />

o mecanismo<br />

de descrição<br />

adotado<br />

Semântico e<br />

baseado na<br />

com<strong>para</strong>ção de<br />

diferentes<br />

atributos<br />

Baseado na<br />

com<strong>para</strong>ção de<br />

diferentes<br />

atributos<br />

Módulo de<br />

com<strong>para</strong>ção<br />

adaptável<br />

Não Tratado<br />

Dependente da<br />

linguagem de<br />

programação<br />

utilizada<br />

Armazenagem<br />

da Informação<br />

de Serviço<br />

Centralizada,<br />

mantida como<br />

hard state<br />

Centralizada ou<br />

distribuída nãocooperativa,<br />

mantida como<br />

soft state<br />

Centralizada,<br />

mantida como<br />

soft state<br />

(leasing)<br />

Distribuída não<br />

cooperativa,<br />

mantida como<br />

soft state<br />

Distribuída<br />

cooperativa,<br />

mantida como<br />

hard state<br />

Distribuída não<br />

cooperativa,<br />

mantida como<br />

soft state<br />

Distribuída<br />

cooperativa,<br />

mantida como<br />

soft state<br />

Distribuída<br />

cooperativa,<br />

mantida como<br />

soft state<br />

Distribuída não<br />

cooperativa,<br />

mantida como<br />

soft state<br />

Distribuída<br />

cooperativa,<br />

mantida como<br />

hard state, (uso<br />

da política LRU<br />

Distribuída<br />

cooperativa:<br />

mantida como<br />

soft state<br />

Distribuída<br />

cooperativa:<br />

mantida como<br />

soft state<br />

Distribuída<br />

cooperativa,<br />

mantida como<br />

hard state<br />

Anúncio de<br />

Serviços<br />

Broadcast<br />

Multicast<br />

Multicast e<br />

notificação por<br />

inscrição<br />

Multicast Não Tratado Broadcast<br />

Broadcast<br />

limitado ao<br />

diâmetro do<br />

anúncio<br />

Broadcast<br />

limitado à<br />

aliança<br />

Anúncios<br />

incrementais,<br />

através de<br />

multicast<br />

Não Tratado<br />

A difusão<br />

depende do<br />

protocolo de<br />

roteamento<br />

usado<br />

Broadcast<br />

limitado pelo<br />

número de<br />

saltos<br />

Não Tratado


Tabela 2 – Resumo com<strong>para</strong>tivo <strong>dos</strong> protocolos de descoberta de serviços <strong>para</strong> redes sem fio (continuação).<br />

Soluções <strong>para</strong> redes fixas adaptadas às redes sem fio<br />

Soluções <strong>para</strong> redes sem<br />

fio ad hoc de salto único<br />

Soluções <strong>para</strong> redes sem fio ad hoc de saltos múltiplos<br />

Salutation SLPv2 Jini UPnP SSDP<br />

Bluetooth<br />

SDP<br />

DEAPspace GSD Allia<br />

Konark<br />

Gossip<br />

ORION<br />

[Varshavsky<br />

et al. 2005]<br />

FTA<br />

P2PDP<br />

Requisição de<br />

Serviços<br />

Seleção de<br />

Serviços<br />

Invocação de<br />

Serviços<br />

Provisão de<br />

Suporte à<br />

Mobilidade<br />

Segurança<br />

Requisições<br />

são enviadas<br />

ao Salutation<br />

Manager (SLM)<br />

via unicast ou<br />

através de<br />

broadcast<br />

quando se usa<br />

diretório<br />

distribuído<br />

User Agents<br />

(UAs) enviam<br />

requisições em<br />

unicast <strong>para</strong> o<br />

Directory Agent<br />

(DA) ou através<br />

de multicast<br />

<strong>para</strong> os Service<br />

Agents (SAs)<br />

Serviços,<br />

clientes e LUSs<br />

(LookUp<br />

Services) usam<br />

multicast ou<br />

fazem<br />

requisições aos<br />

LUSs via<br />

unicast<br />

Requisições via<br />

unicast ou<br />

multicast<br />

Requisições<br />

através de<br />

broadcast<br />

Não Tratada<br />

Encaminhada,<br />

em modo<br />

seletivo, com<br />

base no(s)<br />

grupo(s) do<br />

serviço<br />

Encaminhada<br />

<strong>para</strong> as<br />

plataformas de<br />

agentes<br />

vizinhas,<br />

utilizando<br />

broadcast ou<br />

multicast<br />

Encaminhada<br />

<strong>para</strong> o<br />

endereço de<br />

grupo do<br />

Konark<br />

(multicast)<br />

Encaminhada<br />

por multicast ou<br />

broadcast<br />

Disseminadas<br />

através de<br />

broadcast (ex.<br />

DSR e AODV)<br />

ou unicast (ex.<br />

CBRP)<br />

Encaminhada à<br />

instância do<br />

serviço mais<br />

próximo ou com<br />

maior gradiente<br />

do campo<br />

Encaminhada<br />

por broadcast<br />

local, limitado<br />

pelo número de<br />

saltos<br />

Manual Manual Manual Manual Manual Manual Manual Manual Manual Manual Automática Automática Automática<br />

Localização do<br />

serviço,<br />

mecanismo de<br />

comunicação<br />

Reativa<br />

Localização do<br />

serviço (URLs)<br />

Proativa e<br />

Reativa<br />

Uso opcional de<br />

Autenticação do assinaturas<br />

usuário no RPC digitais<br />

(autenticação)<br />

Localização do<br />

serviço<br />

mecanismo de<br />

comunicação e<br />

operações<br />

Proativa e<br />

Reativa<br />

Nível de<br />

segurança<br />

provido pela<br />

linguagem de<br />

programação<br />

(Java)<br />

Localização do<br />

serviço,<br />

mecanismo de<br />

comunicação e<br />

operações<br />

Proativa e<br />

Reativa<br />

Extensões<br />

oferecem um<br />

framework <strong>para</strong><br />

controle de<br />

acesso e<br />

autenticação de<br />

dispositivos<br />

Localização do<br />

serviço<br />

Não tratada Não Tratada Não Tratada<br />

Implícita Proativa Proativa Proativa<br />

Estabelecida na<br />

fase de<br />

negociação da<br />

conexão; a<br />

comunicação<br />

pode ser<br />

criptografada<br />

no nível de<br />

enlace<br />

Não Tratada<br />

Não Tratada<br />

Uso de políticas<br />

locais <strong>para</strong><br />

definir<br />

restrições de<br />

segurança,<br />

como direito de<br />

acesso e<br />

verificação de<br />

credenciais<br />

Localização do<br />

serviço,<br />

mecanismo de<br />

comunicação e<br />

operações<br />

específicas<br />

Proativa e<br />

Reativa<br />

Localização do<br />

serviço e<br />

mecanismo de<br />

comunicação<br />

Reativa<br />

Não Tratada<br />

Proativa e<br />

Reativa<br />

Não Tratada<br />

Proativa<br />

Localização do<br />

Serviço<br />

Implícita<br />

Não Tratada Não Tratada Não Tratada Não Tratada Não Tratada


4<br />

O <strong>Protocolo</strong> P2PDP<br />

4.1.<br />

Introdução<br />

A pesquisa na área de descoberta de serviços em redes sem fio ad hoc de saltos<br />

múltiplos é relativamente nova e mais desafiadora – em relação àquela <strong>para</strong> redes<br />

fixas e redes sem fio infra-estruturadas –, em particular, devido ao maior<br />

dinamismo da topologia de rede determinado pela mobilidade de to<strong>dos</strong> os<br />

dispositivos sem fio, o que resulta na instabilidade <strong>dos</strong> enlaces e das rotas. Nas<br />

MANETs de saltos múltiplos, cada dispositivo atua como um roteador e, <strong>para</strong><br />

tanto, precisa manter informações de roteamento localmente. A instabilidade<br />

desses ambientes, provocada pela transitoriedade da topologia da rede e pela<br />

escassez de recursos – como energia e memória –, torna desafiador o<br />

armazenamento de informações de roteamento e, principalmente, a garantia de sua<br />

consistência. Algumas propostas integram as funcionalidades de descoberta de<br />

serviços e de roteamento em um único protocolo [Koodli and Perkins 2002;<br />

Harbird et al. 2005; Varshavsky et al. 2005]. Por outro lado, existe um número<br />

considerável de propostas que oferecem soluções <strong>para</strong> a descoberta de serviços no<br />

nível de aplicação [Ratsimor et al. 2002; Helal et al. 2003; Lenders et al. 2005;<br />

Chakraborty et al. 2006]. Essas propostas são independentes da utilização de um<br />

protocolo de roteamento na MANET, podendo ser utilizadas mesmo na sua<br />

ausência, pois não dependem da disponibilidade e precisão de informações sobre a<br />

topologia da rede, como, por exemplo, informações a respeito de dispositivos<br />

vizinhos localiza<strong>dos</strong> a um ou dois saltos de distância. Nesses protocolos, a<br />

responsabilidade de transmitir as requisições de descoberta é distribuída entre os<br />

nós da rede, sendo geralmente realizada no nível de aplicação por multicast ou<br />

broadcast. Entretanto, quando o protocolo de descoberta de serviços adota um<br />

mecanismo de difusão, ele incorre no problema da inundação da rede<br />

[Ni et al. 1999; Tseng et al. 2003]. Esse problema diz respeito à ocorrência de


O <strong>Protocolo</strong> P2PDP 101<br />

colisões, redundâncias e contenção de acesso ao meio à medida que a quantidade<br />

de nós aumenta. Essa situação é agravada quando o esquema de difusão adotado<br />

se baseia em inundação cega (blind flooding), ou seja, na primeira vez em que um<br />

nó recebe uma mensagem ele a retransmite aos seus vizinhos.<br />

As aplicações de computação distribuída em grades, de uma forma geral,<br />

caracterizam-se pelo particionamento de um serviço em várias tarefas menores de<br />

forma que elas possam ser executadas em <strong>para</strong>lelo, como forma de obter<br />

resulta<strong>dos</strong> intermediários, promovendo o compartilhamento <strong>dos</strong> recursos da grade<br />

através da seleção <strong>dos</strong> dispositivos mais aptos a colaborar no instante em que o<br />

serviço foi solicitado. Essa abordagem exige um protocolo que ofereça suporte à<br />

descoberta simultânea de múltiplas instâncias de um mesmo serviço,<br />

possibilitando a manutenção de redundância do mesmo. Essa situação é agravada<br />

em uma grade móvel organizada através de uma rede sem fio ad hoc, dado que,<br />

dentre as suas peculiaridades, em uma MANET, os elementos que a constituem<br />

devem atuar de maneira altamente cooperativa: as tarefas da rede – roteamento,<br />

descoberta de serviços, entre outras – são distribuídas entre os dispositivos móveis<br />

e qualquer operação é o resultado da colaboração de um grupo desses dispositivos<br />

[Hubaux et al. 2001]. Quando o protocolo de descoberta de serviços adota um<br />

mecanismo de difusão, ele incorre no problema da implosão de mensagens de<br />

resposta [Duffield et al. 1999]. Esse problema é decorrente do volume,<br />

potencialmente grande de respostas gerado pelos dispositivos provedores do<br />

serviço requisitado, em especial, em redes de grande escala.<br />

Neste capítulo, é apresentado um novo protocolo de descoberta e seleção de<br />

recursos <strong>para</strong> grades móveis organizadas através de redes sem fio ad hoc de saltos<br />

múltiplos, denominado P2PDP (Peer-to-Peer Discovery Protocol). Esse protocolo<br />

foi desenvolvido no contexto do middleware MoGrid [<strong>Lima</strong> et al. 2005], descrito<br />

no Capítulo 2. Com o uso do protocolo P2PDP, a responsabilidade de provisão de<br />

um serviço é distribuída entre os nós com mais recursos na MANET através de<br />

um mecanismo automático de seleção que considera o número de instâncias<br />

desejadas do serviço em questão, parâmetro informado na requisição. O protocolo<br />

adota uma abordagem peer-to-peer, totalmente descentralizada, independente de<br />

protocolos de roteamento, ou mesmo de um nível de endereçamento explícito na<br />

MANET, <strong>para</strong> garantir o seu funcionamento. A seleção <strong>dos</strong> nós que irão


O <strong>Protocolo</strong> P2PDP 102<br />

efetivamente colaborar na provisão de serviços é baseada em um mecanismo<br />

distribuído que combina dois algoritmos: o algoritmo de supressão de mensagens<br />

de resposta por vizinhança (Suppression by Vicinity – SbV) e o algoritmo que<br />

calcula o retardo no envio de mensagens de resposta (Delayed Replies – DR).<br />

Esses algoritmos estão entre as principais contribuições desta tese e têm como<br />

finalidade tratar os problemas de implosão e colisão de mensagens de resposta,<br />

respectivamente, os quais são intrínsecos às abordagens que implementam a<br />

descoberta de recursos e serviços através de broadcast. O funcionamento <strong>dos</strong><br />

algoritmos SbV e DR será descrito, respectivamente, nas Seções 4.6 e 4.7.<br />

As requisições de serviço e as respostas do protocolo P2PDP são<br />

transmitidas por broadcast através de mecanismos distintos. As requisições de<br />

serviço são transmitidas na MANET através de inundação seletiva, utilizando um<br />

parâmetro configurável que determina o seu diâmetro, ou seja, o número máximo<br />

de saltos que a requisição deve seguir, e uma espera aleatória inserida no<br />

encaminhamento da requisição <strong>para</strong> evitar a contenção de acesso ao meio em<br />

função de transmissões concomitantes. Já as respostas são encaminhadas ao<br />

dispositivo requisitante por broadcast salto-a-salto no nível de aplicação,<br />

denominado nesta tese de “broadcast direcionado”. Esses mecanismos serão<br />

apresenta<strong>dos</strong> em detalhes na próxima seção.<br />

Como os protocolos de descoberta basea<strong>dos</strong> em comunicação por difusão<br />

que se têm registro na literatura sempre realizam a transmissão das requisições por<br />

broadcast e das respostas a essas requisições por unicast, cabe aqui uma breve<br />

discussão sobre a razão de se utilizar no protocolo de descoberta P2PDP<br />

broadcast salto-a-salto no nível de aplicação e não unicast na transmissão das<br />

mensagens de resposta. No modo de transmissão unicast, <strong>para</strong> que um nó possa<br />

interceptar as respostas de seus vizinhos, a sua interface de rede deve ser<br />

configurada <strong>para</strong> operar em modo promíscuo. Além das questões de segurança<br />

envolvidas, essa alternativa introduz o inconveniente de que, nesse modo de<br />

operação, o nó deve processar a porção de da<strong>dos</strong> (payload) de to<strong>dos</strong> os pacotes<br />

que trafegam no enlace sem fio e não somente daqueles gera<strong>dos</strong> pelo protocolo<br />

P2PDP. Isso resulta em um desperdício de recursos, como CPU, memória e<br />

energia, que são fundamentais <strong>para</strong> a execução de serviços computacionais. Em<br />

contrapartida, utilizando-se a transmissão em broadcast salto-a-salto no nível de


O <strong>Protocolo</strong> P2PDP 103<br />

aplicação, os pacotes continuam sendo processa<strong>dos</strong> no nível MAC como acontece<br />

em qualquer tipo de transmissão, inclusive unicast. Entretanto, no nível de<br />

aplicação, somente os pacotes P2PDP são processa<strong>dos</strong>, já que, nessa abordagem,<br />

não existe a necessidade da interface de rede atuar no modo promíscuo.<br />

4.2.<br />

Suposições a Respeito do Sistema<br />

Considerou-se um certo conjunto de suposições na especificação do protocolo<br />

P2PDP, que exercem influência na implementação proposta, descrita em detalhes<br />

no Capítulo 5. Antes que o protocolo P2PDP seja apresentado em detalhes, faz-se<br />

necessário descrever essas suposições, as quais são introduzidas a seguir:<br />

• Os dispositivos devem ser capazes de transmitir pacotes de da<strong>dos</strong> <strong>para</strong><br />

to<strong>dos</strong> os seus vizinhos imediatos, por broadcast local;<br />

• Os enlaces sem fio são bidirecionais, possibilitando o envio e a recepção<br />

de da<strong>dos</strong> entre dois dispositivos quaisquer na rede, ou seja, se o nó N 1 é<br />

capaz de realizar transmissões <strong>para</strong> N 2 , então N 2 também é capaz de<br />

transmitir <strong>para</strong> N 1 ;<br />

• Cada dispositivo tem a capacidade de executar uma transmissão sem fio e<br />

escalonar tal transmissão <strong>para</strong> um período de tempo específico, assim<br />

como cancelar essa transmissão caso ela ainda não tenha sido efetuada;<br />

• Na implementação <strong>dos</strong> mecanismos de temporização – presentes no<br />

retardo do envio de mensagens de resposta, no agendamento de reenvio de<br />

respostas em caso de reconhecimento negativo, na sumarização de<br />

respostas provenientes <strong>dos</strong> colaboradores pelo coordenador e na<br />

manutenção <strong>dos</strong> registros de requisições pendentes (vide Seção 4.5) –<br />

considera-se que a diferença de velocidade entre os relógios <strong>dos</strong><br />

dispositivos na grade móvel é desprezível.<br />

Apesar de considerar-se que os relógios <strong>dos</strong> dispositivos na grade móvel<br />

estão relativamente sincroniza<strong>dos</strong>, é importante ressaltar, a necessidade de se<br />

avaliar, futuramente, o impacto da diferença de velocidade <strong>dos</strong> relógios desses<br />

dispositivos nos mecanismos de temporização implementa<strong>dos</strong>. O assincronismo<br />

<strong>dos</strong> relógios pode influenciar negativamente o mecanismo de supressão de


O <strong>Protocolo</strong> P2PDP 104<br />

respostas e, conseqüentemente, afetar a qualidade das respostas selecionadas. Isso<br />

se explica pelo fato de que, se a velocidade <strong>dos</strong> relógios é diferente entre os<br />

dispositivos, um colaborador mais apto pode esperar mais tempo absoluto <strong>para</strong><br />

enviar a sua resposta em relação a um outro colaborador menos apto, cujo relógio<br />

apresenta uma velocidade mais alta.<br />

4.3.<br />

Visão Geral do <strong>Protocolo</strong> P2PDP<br />

Nesta seção, é apresentada uma visão geral do protocolo P2PDP que reflete a<br />

delimitação do seu escopo de atuação, enumerando as soluções propostas às<br />

questões que nortearam a sua especificação, discuti<strong>dos</strong> na introdução deste<br />

capítulo (Seção 4.1).<br />

Os mecanismos implementa<strong>dos</strong> no protocolo P2PDP atendem às<br />

necessidades de uma grade móvel ad hoc, oferecendo soluções <strong>para</strong> (i) reduzir os<br />

problemas de inundação da rede, devido à difusão de requisições de serviços,<br />

limitando o seu alcance através do conceito de diâmetro da requisição; (ii) reduzir<br />

o impacto do problema da implosão de respostas a essas requisições, através da<br />

utilização do algoritmo SbV, que faz a supressão das respostas excedentes; (iii)<br />

minimizar a ocorrência de colisões provocadas pelo aumento do tráfego de da<strong>dos</strong><br />

no enlace sem fio, em virtude da transmissão de mensagens de controle –<br />

problema minimizado pelo uso do mecanismo de retardo programado no envio<br />

das respostas, oferecido pelo algoritmo DR; (iv) efetuar o resource matching com<br />

a seleção <strong>dos</strong> melhores colaboradores <strong>para</strong> executar as tarefas da grade móvel<br />

através da implementação do mecanismo de seleção das melhores respostas, que é<br />

viabilizado pelo uso conjunto do conceito de adequação do dispositivo em<br />

colaborar na realização de tarefas em função <strong>dos</strong> recursos necessários <strong>para</strong> a sua<br />

execução e do agendamento do envio das respostas, utilizando o retardo<br />

programado – fator que proporciona uma ordenação entre as respostas, com<br />

aquelas mais adequadas sendo as primeiras a serem entregues ao iniciador; (v)<br />

prover um mecanismo limitado de redundância de colaboradores, configurável<br />

através do parâmetro que determina o número de respostas esperado pelo iniciador<br />

e, por fim, (vi) garantir que o funcionamento do dispositivo não será afetado pela<br />

sua colaboração na grade móvel, através da definição de um parâmetro


O <strong>Protocolo</strong> P2PDP 105<br />

configurável, que indica a disposição do dispositivo em participar da execução de<br />

tarefas e do conceito de adequação, que leva em consideração as condições do<br />

dispositivo, em termos de disponibilidade de recursos, antes de responder a uma<br />

requisição, gerando retar<strong>dos</strong> de envio maiores quanto maior for o<br />

comprometimento <strong>dos</strong> seus recursos com a execução de tarefas da grade móvel.<br />

4.4.<br />

Classificação do <strong>Protocolo</strong> P2PDP<br />

Nesta seção, é apresentada uma classificação do protocolo P2PDP em função <strong>dos</strong><br />

critérios apresenta<strong>dos</strong> no Capítulo 3 <strong>para</strong> analisar os protocolos de descoberta de<br />

serviços. A especificação do protocolo P2PDP é resumida nos próximos<br />

parágrafos, sendo aprofundada nas seções subseqüentes.<br />

Arquitetura de <strong>Descoberta</strong> de Serviços. O P2PDP foi projetado <strong>para</strong><br />

oferecer suporte a uma arquitetura de descoberta baseada no uso de diretórios<br />

distribuí<strong>dos</strong>, com os dispositivos se comunicando de forma peer-to-peer,<br />

abordagem defendida em um estudo detalhado apresentado em<br />

[Engelstad et al. 2006]. Nesse estudo os autores mostram que o uso de diretórios<br />

centraliza<strong>dos</strong> não apresenta um bom desempenho quando empregadas com um<br />

mecanismo de descoberta reativo. A razão principal é que o aumento na<br />

disponibilidade de serviços – definida em função da descoberta e, posteriormente,<br />

do acesso ao serviço <strong>para</strong> sua utilização – é insignificante se com<strong>para</strong>do ao custo<br />

adicional provocado pelo aumento no número de mensagens referentes ao anúncio<br />

e registro das informações de serviços.<br />

Escopo da <strong>Descoberta</strong> de Serviços. O escopo da descoberta no P2PDP é<br />

definido em função da topologia da rede; o alcance do mecanismo de descoberta é<br />

determinado em função do diâmetro da requisição. No P2PDP, a requisição de<br />

serviço pode alcançar dispositivos a vários saltos de distância de onde ela foi<br />

originada, através da difusão por broadcast limitado.<br />

Descrição de Serviços. Os serviços no protocolo P2PDP são descritos<br />

através de implementações de uma interface comum denominada<br />

ServiceDescription, em uma abordagem similar à utilizada por Jini [Sun 1999a].<br />

Os atributos da interface ServiceDescription compreendem um identificador único


O <strong>Protocolo</strong> P2PDP 106<br />

universal <strong>para</strong> o serviço, um identificador mnemônico, uma breve descrição, um<br />

conjunto de palavras-chave e a sua localização.<br />

Consulta às Informações de Serviços. O algoritmo de matching efetua<br />

com<strong>para</strong>ções entre a descrição do serviço requisitado e as informações sobre os<br />

serviços ofereci<strong>dos</strong> pelo dispositivo, considerando-se to<strong>dos</strong> os atributos defini<strong>dos</strong><br />

na interface ServiceDescription. Ao receber uma requisição, o dispositivo verifica<br />

(i) se está disponível <strong>para</strong> colaborar (willingness) e (ii) se possui o serviço<br />

solicitado (AdmissionController) e está apto a colaborar em função <strong>dos</strong> seus<br />

recursos (suitability), ou seja, do perfil de execução definido na requisição. O<br />

módulo de busca é implementado através do controle de admissão, que faz a<br />

com<strong>para</strong>ção entre a descrição da requisição remota e a descrição <strong>dos</strong> serviços<br />

disponibiliza<strong>dos</strong> localmente. Ao ser detectado um serviço que atenda às<br />

características exigidas na requisição (ii), o colaborador envia a sua descrição<br />

completa como resposta ao nó que originou a requisição, além disso, são enviadas<br />

informações a respeito <strong>dos</strong> recursos especifica<strong>dos</strong> no perfil de execução.<br />

Armazenamento das Informações de Serviços. O armazenamento das<br />

informações <strong>dos</strong> serviços é feito de forma distribuída cooperativa. Cada<br />

dispositivo é responsável por armazenar apenas as informações a respeito <strong>dos</strong><br />

serviços que disponibiliza. Essas informações são mantidas como hard state, o<br />

que significa que, <strong>para</strong> que um serviço se torne indisponível, é necessário que o<br />

seu registro seja removido. A API de descoberta MoGrid oferece operações <strong>para</strong><br />

registro (register()) e remoção (deregister()) das informações sobre os<br />

serviços (Subseção 2.3.1.1).<br />

Anúncio de Serviços. O protocolo P2PDP foi projetado no contexto das<br />

grades móveis [<strong>Lima</strong> et al. 2005], onde os serviços são caracteriza<strong>dos</strong> como uma<br />

composição de recursos computacionais altamente dinâmicos, os quais<br />

apresentam flutuações na sua disponibilidade, pois são influencia<strong>dos</strong> por fatores<br />

como a qualidade do enlace sem fio e variações na topologia da rede. Devido a<br />

essa peculiaridade, as informações sobre os serviços tornam-se inválidas em um<br />

período de tempo muito reduzido, o que exige que a periodicidade de envio <strong>dos</strong><br />

anúncios de serviços seja aumentada e que se utilize um mecanismo otimizado de<br />

armazenamento dessas informações. Nas condições apresentadas, essa solução se<br />

torna inviável, especialmente em redes sem fio ad hoc de maior escala, já que


O <strong>Protocolo</strong> P2PDP 107<br />

aumenta consideravelmente o consumo de largura de banda e de recursos <strong>dos</strong><br />

dispositivos – como energia, ciclos de processamento, espaço de armazenamento<br />

e memória – com o processamento e armazenamento dessas informações,<br />

podendo causar contenção de acesso ao meio [Frank & Karl 2004]. Na avaliação<br />

de desempenho do protocolo Allia, mais especificamente na análise do<br />

mecanismo de anúncios de serviço, foi constatado que o aumento na periodicidade<br />

de envio <strong>dos</strong> anúncios provoca um aumento considerável no volume de da<strong>dos</strong> que<br />

trafegam na MANET, ocasionando uma redução na taxa de entrega de pacotes de<br />

da<strong>dos</strong> [Ratsimor et al. 2004]. Por essa razão, o P2PDP, em sua implementação<br />

atual, não apresenta suporte ao mecanismo de anúncio, o qual, entretanto, pode ser<br />

facilmente acoplado com a adição de mensagens de anúncio (operação<br />

advertise(), Subseção 2.3.1.1) e esquemas de gerenciamento do<br />

armazenamento desses anúncios nos dispositivos que constituem a grade móvel.<br />

Requisição de Serviços. O protocolo P2PDP tem como base o mecanismo<br />

de descoberta ativa, o qual é feito através de requisições de serviços sob demanda.<br />

Para oferecer suporte às grades móveis, como diferencial em relação às<br />

abordagens apresentadas no Capítulo 3, no P2PDP uma mensagem de requisição<br />

deve considerar, além do serviço solicitado, o perfil de execução necessário ao<br />

dispositivo que irá atendê-la. Em uma aplicação de compartilhamento de arquivos,<br />

o objeto da requisição é o arquivo, que pode ser um áudio, um vídeo, uma imagem<br />

ou mesmo um documento de texto. Para esse tipo de aplicação, é desejável que o<br />

dispositivo atendendo a requisição apresente uma conectividade estável e um bom<br />

nível de energia, o que indica que provavelmente ele permanecerá alcançável e<br />

ativo durante o tempo que durar a transferência do arquivo solicitado. Os nós<br />

colaboradores respondem a uma requisição, encaminhando, através de broadcast<br />

direcionado, a descrição do serviço e o perfil de execução do dispositivo,<br />

seguindo o caminho inverso ao percorrido pela requisição correspondente. Os nós<br />

intermediários verificam se eles estão no caminho de retorno da mensagem; em<br />

caso afirmativo, eles consultam uma estrutura de da<strong>dos</strong> local (pendingList), que<br />

faz a associação entre uma requisição e o caminho <strong>para</strong> alcançar a sua origem,<br />

determinando qual é o próximo salto.<br />

Seleção de Serviços. Em uma grade móvel ad hoc, a seleção <strong>dos</strong><br />

dispositivos que irão colaborar na execução de um conjunto de tarefas deve estar


O <strong>Protocolo</strong> P2PDP 108<br />

embutida no mecanismo de descoberta, o que não ocorre nas propostas<br />

encontradas na literatura [Litke et al. 2004; McKnight et al. 2003], que tratam<br />

desses aspectos se<strong>para</strong>damente. Como demonstram os estu<strong>dos</strong> realiza<strong>dos</strong> em<br />

[Tyan & Mahmoud 2005; Varshavsky et al. 2005], em uma MANET, a seleção de<br />

serviços influencia o desempenho da rede, afetando a sua capacidade, o que<br />

implica na necessidade de se implementar esse mecanismo de forma integrada ao<br />

mecanismo de descoberta. A seleção de serviços torna-se necessária quando uma<br />

requisição recebe um número de respostas maior do que o solicitado. Nesse<br />

procedimento, no protocolo P2PDP, são considera<strong>dos</strong> dois critérios <strong>para</strong><br />

“ordenar” as respostas: a distância, em número de saltos, do colaborador até o<br />

iniciador, e o perfil de execução do colaborador. O protocolo de descoberta<br />

descrito em [Varshavsky et al. 2005] também utiliza como métrica, <strong>para</strong> realizar a<br />

seleção das respostas, a distância em número de saltos entre o provedor do serviço<br />

e o cliente, entretanto a seleção é efetuada pelo dispositivo que originou a<br />

requisição de descoberta ao receber as respostas à sua requisição. Já no protocolo<br />

P2PDP, a seleção é feita de forma distribuída no encaminhamento das mensagens<br />

de resposta, possibilitando que respostas excedentes sejam descartadas pelos nós<br />

intermediários. Na abordagem FTA [Lenders et al. 2005], o mecanismo de seleção<br />

é aplicado no encaminhamento da requisição, que é direcionada ao provedor mais<br />

apto, tendo como resultado uma única resposta. Já no protocolo P2PDP, o número<br />

de respostas selecionadas é configurável, sendo especificado no perfil da<br />

requisição, o que atende a necessidade das grades móveis de descobrir múltiplas<br />

instâncias de um mesmo serviço. Para oferecer suporte ao encaminhamento<br />

direcionado das requisições de serviço, o FTA propaga as informações sobre a<br />

capacidade de cada provedor em oferecer os serviços da rede através de<br />

inundações periódicas.<br />

Invocação de Serviços. No protocolo P2PDP, em resposta a uma requisição<br />

de descoberta o cliente obtém apenas a localização do serviço. Para invocar o<br />

serviço, o cliente deve se conectar diretamente ao provedor que o oferece através<br />

do seu endereço de rede. As aplicações da grade são responsáveis por definir o<br />

mecanismo de comunicação entre clientes e provedores e o conjunto de operações<br />

disponíveis no serviço. Utilizando-se o protocolo P2PDP em conjunto com a<br />

arquitetura MoGrid, é possível beneficiar-se do mecanismo de invocação de


O <strong>Protocolo</strong> P2PDP 109<br />

serviços especificado na camada de transparência (Subseção 2.3.2); mais<br />

precisamente, na subcamada de adaptação (Subseção 2.3.2.3). Na arquitetura<br />

MoGrid a invocação do serviço é feita considerando-se a sua localização e os<br />

mecanismos de comunicação defini<strong>dos</strong> na camada de transparência.<br />

Provisão de Suporte à Mobilidade. O P2PDP foi projetado <strong>para</strong> um cenário<br />

dinâmico, sendo intrínseco ao seu funcionamento prover mecanismos que<br />

mantenham as informações sobre os serviços da grade móvel atualizadas, mesmo<br />

frente à mobilidade <strong>dos</strong> nós, o que é obtido, de forma implícita, pelo mecanismo<br />

de descoberta ativa, através de requisições de serviço sob demanda. Além disso,<br />

alguns parâmetros são configuráveis em função da mobilidade do nó e da<br />

percepção de mobilidade da sua vizinhança, como o diâmetro da requisição, o<br />

número de respostas esperado e o tempo de espera por respostas, to<strong>dos</strong> campos da<br />

mensagem de requisição. Abordagens similares foram descritas na Subseção<br />

3.2.3, onde o encaminhamento das mensagens de resposta é realizado através da<br />

integração <strong>dos</strong> mecanismos de roteamento e de descoberta de serviços [Klemm et<br />

al. 2003; Ratsimor et al. 2004; Lenders et al. 2005; Varshavsky et al. 2005;<br />

Chakraborty et al. 2006]. Vários estu<strong>dos</strong> indicam que essa integração, em<br />

MANETs, aumenta a eficiência do sistema, incentivando a adoção de abordagens<br />

cross-layer [Raman et al. 2001; Shakkottai et al. 2003; Conti et al. 2004]. Esses<br />

estu<strong>dos</strong> sugerem, <strong>para</strong> as redes sem fio ad hoc, a integração das camadas de<br />

enlace, roteamento e descoberta de serviços, unificando a pilha de rede em<br />

oposição ao modelo tradicional em camadas. O protocolo P2PDP funciona<br />

independentemente da utilização de mecanismos de roteamento, promovendo a<br />

integração da camada de roteamento à camada de descoberta no nível de<br />

aplicação, em uma abordagem que pode ser denominada cross-layer. Isso se deve<br />

ao fato de que, através do mecanismo de descoberta, as mensagens são<br />

encaminhadas utilizando uma estratégia de roteamento baseada em serviços e não<br />

no endereço <strong>dos</strong> nós. Além disso, especificamente no roteamento das mensagens<br />

de resposta, é empregado um mecanismo de encaminhamento seletivo,<br />

implementado através do algoritmo SbV (Seção 4.6).<br />

Mecanismos de Segurança. No projeto do protocolo P2PDP, assim como<br />

na maioria das propostas apresentadas no Capítulo 3, não foi definido nenhum<br />

mecanismo específico <strong>para</strong> tratar questões de segurança, as quais, segundo [Mian


O <strong>Protocolo</strong> P2PDP 110<br />

et al. 2006], representam, por si só, uma área de pesquisa relevante, que precisa<br />

ser investigada mais atentamente.<br />

4.5.<br />

Funcionamento do <strong>Protocolo</strong> P2PDP<br />

O protocolo P2PDP formaliza o relacionamento das entidades envolvidas no<br />

processo de descoberta – iniciador, coordenador e colaborador – definindo três<br />

mensagens de controle: InitiatorRequest (IReq), CollaboratorReply (CRep)<br />

e CollaboratorReplyList (CRepList). A Figura 12 ilustra o funcionamento<br />

básico do protocolo em MANETs, considerando-se um cenário ideal, sem a<br />

ocorrência de falhas. Na figura, assume-se que to<strong>dos</strong> os dispositivos<br />

colaboradores na rede respondem à requisição do iniciador, o dispositivo i. Em<br />

uma MANET, as entidades de descoberta são implementadas em cada dispositivo,<br />

como ilustra a Figura 5(a) na Subseção 2.3.1.2. Os dispositivos são responsáveis<br />

por coordenar as suas próprias requisições, pois, diferentemente das redes sem fio<br />

infra-estruturadas, na MANET não existe um coordenador centralizado. As<br />

mensagens e o funcionamento geral do protocolo são descritos ao longo desta<br />

seção. As Seções 4.6 e 4.7 oferecem mais detalhes sobre os algoritmos que<br />

regulam o funcionamento do protocolo.<br />

Figura 12 – Funcionamento básico do protocolo P2PDP em uma MANET.<br />

Mensagens InitiatorRequest (IReq) são enviadas do iniciador <strong>para</strong> o seu<br />

coordenador e encaminhadas posteriormente, por esse, <strong>para</strong> os colaboradores por


O <strong>Protocolo</strong> P2PDP 111<br />

difusão (passo 1 da Figura 12). Como ilustrado na Figura 13, uma mensagem<br />

IReq é composta: (i) por um identificador único universal da requisição, usado<br />

<strong>para</strong> fazer o mapeamento entre as requisições e suas respostas (reqID); (ii) pelo<br />

retardo máximo de resposta que um iniciador admite (maxReplyDelay); (iii) pelo<br />

número de colaboradores que o iniciador necessita envolver (numMaxReplies);<br />

(iv) pela informação de contexto na qual a aplicação está interessada (ctxtInfo);<br />

(v) pelo diâmetro atual (numHops) e diâmetro máximo (maxHops) – em número de<br />

saltos – associa<strong>dos</strong> à propagação da requisição e (vi) pela identificação do<br />

dispositivo que gerou a requisição (hopID) que pode ser, por exemplo, em redes<br />

802.11, o endereço MAC do dispositivo. É importante destacar que o campo<br />

reqID de uma requisição corresponde a um valor de 16 bytes gerado a partir da<br />

combinação da identificação do nó que originou a requisição (hopID), do<br />

identificador mnemônico do serviço solicitado e do tempo corrente do sistema<br />

(timestamp), resultando em um identificador único universal. A Figura 14 traz a<br />

representação da mensagem IReq, utilizando a notação ASN.1.<br />

Figura 13 – Mensagem InitiatorRequest (IReq).<br />

Existe um aspecto do encaminhamento das mensagens de requisição que<br />

merece ser comentado. Ao receber uma requisição, os dispositivos que se<br />

encontram no mesmo raio de transmissão a encaminham <strong>para</strong> a rede em<br />

broadcast, considerando o diâmetro da requisição. O diâmetro da requisição<br />

(numHops) indica o número máximo de saltos que uma requisição de serviço pode<br />

trafegar na rede. Esse parâmetro limita o alcance da requisição, oferecendo um<br />

mecanismo de difusão controlado, evitando que a mensagem se propague<br />

indefinidamente na rede. Nessa situação, os dispositivos podem iniciar a<br />

transmissão da requisição em instantes de tempo muito próximos, ou mesmo<br />

coincidentes, o que pode ocasionar a contenção de acesso ao canal de<br />

comunicação sem fio. Para tratar esse problema, na implementação do mecanismo<br />

de encaminhamento de requisições foi adicionado um retardo aleatório,<br />

denominado requestDelay. Desse modo, dois parâmetros são utiliza<strong>dos</strong> <strong>para</strong><br />

controlar a inundação de uma mensagem IReq na rede: o diâmetro da requisição –


O <strong>Protocolo</strong> P2PDP 112<br />

parâmetro maxHops, vide Figura 13 – e o retardo aleatório, introduzido pelo<br />

parâmetro requestDelay.<br />

Figura 14 – Representação ASN.1 da mensagem InitiatorRequest (IReq).<br />

Ao receber uma mensagem IReq, o colaborador a registra como uma<br />

requisição pendente em uma estrutura de da<strong>dos</strong> local, denominada pendingList,<br />

que é representada na Figura 15. Além de armazenar os campos reqID,<br />

numMaxReplies e hopID, que são extraí<strong>dos</strong> da mensagem IReq, cada entrada, em<br />

uma pendingList, possui um campo numReplies (inicialmente configurado com<br />

o valor “0”) e dois temporizadores relaciona<strong>dos</strong> (replyDelay e cleanUp). Cada<br />

registro em uma pendingList é mantido por um período que determina o seu<br />

tempo de vida (cleanUp). Os temporizadores numReplies e cleanUp são<br />

descritos na Seção 4.6; o temporizador replyDelay é descrito na Seção 4.7. A<br />

Figura 16 traz a representação da estrutura de da<strong>dos</strong> pendingList, utilizando a<br />

notação ASN.1.<br />

Figura 15 – Estrutura de da<strong>dos</strong> pendingList.


O <strong>Protocolo</strong> P2PDP 113<br />

Figura 16 – Representação ASN.1 da estrutura de da<strong>dos</strong> pendingList.<br />

Após atualizar a pendingList, o colaborador responde à requisição<br />

(mensagem IReq) de acordo com a sua disposição em colaborar (willingness),<br />

como descrito na Seção 4.7. Além de responder às requisições, os nós podem<br />

atuar como intermediários na difusão das mensagens IReq <strong>para</strong> os demais<br />

colaboradores na MANET, caso numHops < maxHops. As mensagens IReq são<br />

retransmitidas utilizando-se broadcast limitado. Independentemente do<br />

mecanismo adotado, antes que uma requisição seja retransmitida, ela deve ter o<br />

campo numHops incrementado e o campo hopID atualizado com a identificação do<br />

nó que realizou a retransmissão. A atualização do valor de hopID possibilita que<br />

os nós mais distantes na MANET mantenham o caminho de retorno em suas<br />

estruturas locais pendingList.<br />

Mensagens CollaboratorReply (CRep) são enviadas salto-a-salto por<br />

broadcast direcionado pelos colaboradores <strong>para</strong> os coordenadores em resposta às<br />

mensagens IReq (passos 2/2’ e 3 da Figura 12). Ao receber uma mensagem CRep,<br />

se o dispositivo integra o seu caminho de retorno, ele procura, em sua<br />

pendingList, por um registro correspondente àquela requisição <strong>para</strong> determinar<br />

qual será o próximo salto através do qual a mensagem deverá ser encaminhada.<br />

Esse processo continua até que a mensagem alcance o seu destino final, ou seja, o<br />

nó que originou a requisição de serviço (mensagem IReq). Cada mensagem CRep<br />

é associada à requisição que o dispositivo está respondendo pelo identificador<br />

obtido a partir da mensagem IReq correspondente (reqID). <strong>Um</strong>a mensagem CRep<br />

informa ao coordenador sobre o endereço do nó colaborador (collabAddr), bem<br />

como sobre a sua disponibilidade de recursos (resInfo) de acordo com o perfil da<br />

requisição informado pelo iniciador na requisição correspondente. Como o perfil


O <strong>Protocolo</strong> P2PDP 114<br />

de execução do serviço, embutido no perfil da requisição, é descrito em termos de<br />

recursos dinâmicos, é importante ressaltar que, <strong>para</strong> alguns desses recursos, o<br />

mecanismo de descoberta deve estar associado com alguma forma de reserva<br />

antecipada [Wolf et al. 1995; Smith et al. 2000], o que oferece um nível mínimo<br />

de garantia de que o serviço será de fato utilizado após ser descoberto. Como<br />

ilustrado na Figura 17, além <strong>dos</strong> campos reqID, collabAddr e resInfo, uma<br />

mensagem CRep também é composta pela identificação do nó que encaminhou a<br />

requisição ao colaborador (retPath). O colaborador obtém essa identificação a<br />

partir do valor do campo hopID na entrada correspondente à mensagem IReq na<br />

sua pendingList. A Figura 18 traz a representação da mensagem CRep, utilizando<br />

a notação ASN.1.<br />

Figura 17 – Mensagem CollaboratorReply (CRep).<br />

Figura 18 – Representação ASN.1 da mensagem CollaboratorReply (CRep).<br />

Finalmente, as mensagens CollaboratorReplyList (CRepList) são<br />

enviadas pelo coordenador <strong>para</strong> o iniciador. <strong>Um</strong>a mensagem CRepList é<br />

composta de uma lista que resume as respostas <strong>dos</strong> colaboradores seleciona<strong>dos</strong> no<br />

contexto de uma mesma requisição (passo 4 da Figura 12). Coordenadores<br />

constroem mensagens CRepList como descrito a seguir. Quando um coordenador<br />

recebe uma mensagem IReq, ele insere uma nova entrada representando a


O <strong>Protocolo</strong> P2PDP 115<br />

requisição em uma estrutura de da<strong>dos</strong> local, denominada resumeList, que é<br />

representada na Figura 19. Cada registro em uma resumeList é constituído pelo<br />

identificador da requisição (reqID) e pelo número de colaboradores que o<br />

iniciador necessita envolver na distribuição da tarefa (numMaxReplies). Tal<br />

entrada é associada a um temporizador (resumeDelay), configurado em função do<br />

retardo de resposta máximo (maxReplyDelay) que o iniciador admite. 1 Quando<br />

esse temporizador expira, o coordenador sumariza todas as mensagens CRep que<br />

foram recebidas, associadas à requisição pendente, descartando, se preciso, as<br />

mensagens CRep excedentes. A lista resultante é então enviada ao iniciador que<br />

efetuou a requisição em uma única mensagem CRepList. A Figura 20 traz a<br />

representação da estrutura de da<strong>dos</strong> resumeList, utilizando a notação ASN.1.<br />

Figura 19 – Estrutura de da<strong>dos</strong> resumeList.<br />

Figura 20 – Representação ASN.1 da estrutura de da<strong>dos</strong> resumeList.<br />

4.6.<br />

O Algoritmo de Supressão de Respostas<br />

Nesta seção, é apresentado o mecanismo de supressão de mensagens de resposta<br />

por vizinhança (Suppression by Vicinity – SbV), que permite tratar o problema da<br />

implosão de respostas em protocolos de descoberta <strong>para</strong> MANETs basea<strong>dos</strong> em<br />

difusão [Duffield et al. 1999]. O mecanismo SbV adota uma abordagem peer-topeer,<br />

independente de protocolos de roteamento ou mesmo do endereçamento no<br />

nível de rede na MANET. Embora tenha sido projetado no contexto do protocolo<br />

1 No caso de um coordenador centralizado, esse temporizador deve considerar também o retardo<br />

de transferência entre iniciadores e coordenadores.


O <strong>Protocolo</strong> P2PDP 116<br />

P2PDP, esse mecanismo pode ser empregado em diferentes protocolos de<br />

descoberta, sejam eles reativos – em que serviços são descobertos, sob demanda,<br />

pelos dispositivos requisitantes – ou proativos – basea<strong>dos</strong> no envio periódico de<br />

anúncios de serviços pelos dispositivos provedores. Pelos resulta<strong>dos</strong><br />

experimentais, obti<strong>dos</strong> através do uso do mecanismo SbV com o protocolo<br />

P2PDP, foi possível atestar a sua eficiência (vide Capítulo 6).<br />

A Figura 21 traz o pseudocódigo do algoritmo de supressão, descrito a<br />

seguir.<br />

Figura 21 – O algoritmo de supressão de respostas por vizinhança SbV.<br />

No mecanismo SbV as respostas são transmitidas salto-a-salto, através de<br />

broadcast, pelos dispositivos na vizinhança da origem de uma requisição. Nesse<br />

contexto, “vizinhança” diz respeito aos dispositivos localiza<strong>dos</strong> no diâmetro da<br />

requisição, os quais são denomina<strong>dos</strong> de “vizinhos”. Ao receber uma resposta, o<br />

dispositivo verifica se a mesma não corresponde a uma mensagem por ele<br />

originada (linha 1). Essa condição é verificada caso exista uma entrada <strong>para</strong> a<br />

requisição em questão, identificada através do campo msg.reqID, em sua<br />

pendingList e o valor do campo msg.collabAddr seja igual ao identificador do


O <strong>Protocolo</strong> P2PDP 117<br />

dispositivo local (localID). Nesse caso, a mensagem é então encaminhada <strong>para</strong> o<br />

processamento de reconhecimento de envio de mensagens de resposta (vide Seção<br />

4.8). Caso contrário, a mensagem é processada como descrito a seguir.<br />

Quando um dispositivo recebe uma resposta correspondendo a uma<br />

requisição dele originada, o dispositivo processa a mensagem e a retira da<br />

MANET (linha 4). Se, ao invés, a resposta estiver endereçada a um outro<br />

dispositivo, o receptor verifica primeiramente se a mesma corresponde a uma<br />

resposta válida, ou seja, se há uma entrada em sua pendingList relacionada à<br />

requisição correspondente e se nenhuma outra resposta do dispositivo em questão<br />

(msg.collabAddr) foi processada anteriormente. Em caso negativo, a resposta é<br />

descartada. 2 Senão, o dispositivo incrementa o valor do campo numReplies (N R ) e<br />

com<strong>para</strong> o novo valor de N R com o valor do campo numMaxReplies (N M ) na<br />

entrada correspondente em sua pendingList. Se N R = N M , isso indica que já<br />

foram encaminhadas mensagens de resposta suficientes <strong>para</strong> atender à requisição<br />

do iniciador. Nesse caso, o dispositivo suprime uma eventual resposta sua que não<br />

tenha sido ainda transmitida. A seguir, o dispositivo com<strong>para</strong> sua própria<br />

identificação com o valor do campo retPath na resposta. Se os valores são<br />

iguais, o dispositivo se encontra no caminho de retorno da mesma. Nesse caso, se<br />

N R ≤ N M , o dispositivo pode encaminhar a mensagem de resposta na direção do<br />

dispositivo que corresponde ao próximo salto no caminho de retorno da resposta.<br />

A identificação desse dispositivo é obtida pelo campo hopID, na entrada<br />

relacionada à requisição correspondente em sua pendingList. Se N R > N M , o<br />

dispositivo suprime a resposta recebida. Para permitir futuras supressões, a<br />

entrada correspondente na pendingList é mantida no dispositivo até que o<br />

temporizador cleanUp expire. Na implementação proposta (veja o Capítulo 5),<br />

cada dispositivo configura individualmente o temporizador cleanUp associado a<br />

cada entrada na sua pendingList <strong>para</strong> τ max unidades de tempo, como dado por<br />

τ = − HS<br />

(1)<br />

max<br />

Dmax 2<br />

2 Em condições ideais, essa situação não poderia acontecer, devido ao mecanismo de inundação de<br />

requisições. Contudo, fatores como colisões ou o uso de esquemas inibidores de redundância em<br />

inundações [Tseng et al. 2003] podem ocasionar situações desse tipo.


O <strong>Protocolo</strong> P2PDP 118<br />

Na Equação (1), D max corresponde ao retardo máximo de envio da resposta<br />

tolerado pelo iniciador. H e S são parâmetros de sintonização, usa<strong>dos</strong> <strong>para</strong><br />

contabilizar os retar<strong>dos</strong> de transferência que as mensagens IReq e CRep podem<br />

experimentar. H representa a distância, em número de saltos, entre o dispositivo<br />

colaborador e o que originou a requisição; essa associação é feita com fins de<br />

garantir justiça entre os colaboradores, evitando que os nós mais distantes<br />

apresentem os maiores retar<strong>dos</strong>. 3 S permite a sintonização do valor de τ max de<br />

acordo com o retardo de transferência 4 experimentado em cada dispositivo. Os<br />

valores de D max e H são obti<strong>dos</strong>, respectivamente, a partir <strong>dos</strong> campos<br />

maxReplyDelay e hopCount da mensagem IReq. Dessa forma, o cálculo de τ max<br />

possibilita que um nó colaborador, mais próximo do nó que originou a requisição,<br />

mantenha entradas em sua pendingList por mais tempo do que os nós mais<br />

distantes, considerando os retar<strong>dos</strong> adicionais, aos quais as respostas <strong>dos</strong> nós mais<br />

distantes estão sujeitas.<br />

O parâmetro S é configurável, podendo ser alterado pelo usuário. Entretanto,<br />

na especificação do protocolo P2PDP o valor default de S foi configurado <strong>para</strong><br />

10 ms. Esse valor corresponde a mesma ordem de grandeza que o retardo sofrido<br />

por pacotes de da<strong>dos</strong> de 1500 bytes sendo transmiti<strong>dos</strong> a uma taxa de 1 Mbps,<br />

percorrendo uma distância de 100 m, desconsiderando possíveis variações<br />

provocadas pelo enfileiramento de pacotes nos buffers de transmissão e recepção e<br />

mecanismos de contenção de acesso ao meio.<br />

A Figura 22 ilustra o funcionamento do mecanismo SbV. Na figura, os nós<br />

w e z estão no raio de transmissão do nó y. A Figura 22(a) traz a configuração<br />

inicial das estruturas pendingList <strong>dos</strong> nós z e y. Na Figura 22(b), o nó y recebe<br />

3 Dependendo do tipo de serviço requisitado, pode ser necessário privilegiar as respostas<br />

provenientes <strong>dos</strong> colaboradores mais próximos (considerando o número de saltos). Segundo<br />

[Lenders et al. 2005], existem muitas razões <strong>para</strong> se querer privilegiar as instâncias mais próximas<br />

de um serviço. Para mencionar algumas, a comunicação entre nós co-localiza<strong>dos</strong> geralmente reduz<br />

o retardo fim-a-fim e a probabilidade de falha na rota, devido a mobilidade <strong>dos</strong> nós, reduzindo<br />

também a interferência causada pelas transmissões de da<strong>dos</strong>; a observação desses aspectos, de um<br />

modo geral, aumenta a capacidade da rede.<br />

4 O retardo de transferência corresponde a soma <strong>dos</strong> retar<strong>dos</strong> de acesso e de transmissão, sendo, na<br />

grande maioria <strong>dos</strong> casos, uma variável aleatória. No entanto, em alguns protocolos, o maior valor<br />

que o retardo de transferência pode assumir é finito.


O <strong>Protocolo</strong> P2PDP 119<br />

uma resposta (CRep) <strong>para</strong> uma requisição (IReq) com reqID=1000 5 e incrementa<br />

o valor de N R do campo numReplies na entrada correspondente em sua<br />

pendingList. Como, na Figura 22(c), o nó y é o caminho de retorno da resposta,<br />

y reencaminha a mensagem, fazendo broadcast local direcionado ao nó w, que<br />

corresponde ao próximo salto de y no caminho de retorno. O nó z “escuta” a<br />

mensagem e, assim como y, incrementa o valor de N R do campo numReplies na<br />

entrada correspondente em sua pendingList, mas ele não reencaminha a<br />

mensagem, pois z não está no seu caminho de retorno. Na Figura 22(d), z recebe<br />

uma nova resposta <strong>para</strong> a requisição com reqID=1000, mas, embora ele esteja em<br />

seu caminho de retorno, ele não a encaminha, pois o campo numMaxReplies, na<br />

entrada correspondente em sua pendingList, indica que ele já encaminhou ou<br />

“escutou” N M mensagens.<br />

( a ) ( b )<br />

( c ) ( d )<br />

Figura 22 – Cenário ilustrando a supressão de mensagens CRep com o algoritmo SbV.<br />

5 O valor “1000” utilizado <strong>para</strong> representar o valor de reqID é meramente ilustrativo. Como já foi<br />

mencionado no início do capítulo, o valor do campo reqID é calculado de forma a se obter um<br />

identificador único universal.


O <strong>Protocolo</strong> P2PDP 120<br />

No mecanismo SbV, ao receber uma requisição específica, um dispositivo<br />

móvel pode detectar – antes de enviar a sua própria resposta –, se algum outro<br />

dispositivo, com mais recursos, já tenha respondido àquela requisição. Desse<br />

modo, o envio das mensagens de resposta através de broadcast permite que as<br />

respostas <strong>dos</strong> dispositivos mais aptos suprimam respostas excedentes provenientes<br />

<strong>dos</strong> outros dispositivos da vizinhança, os quais possuem menos recursos<br />

disponíveis. Em uma rede sem fio ad hoc de saltos múltiplos, mesmo com a<br />

adoção do mecanismo de supressão, o envio de mensagens de controle –<br />

requisição e descoberta – através de broadcast ainda poderia provocar a implosão<br />

de respostas. Isso se deve à redundância de caminhos segui<strong>dos</strong> pelas mensagens<br />

de controle até o seu destino, o que provoca, como efeito colateral, uma<br />

sobrecarga com o seu processamento nos nós intermediários, além de consumir<br />

recursos escassos em MANETs, como banda passante e energia. Para evitar esse<br />

problema, no algoritmo SbV uma mensagem CRep é enviada, através do seu<br />

caminho de retorno, na direção do nó que originou a requisição, mas cada nó<br />

intermediário, nesse caminho, informa aos seus vizinhos – devido ao mecanismo<br />

de broadcast salto-a-salto – sobre as requisições que já foram respondidas,<br />

possibilitando futuras supressões ao longo desse caminho, incluindo a vizinhança<br />

<strong>dos</strong> dispositivos no caminho. Isso permite reduzir a implosão de respostas, que é<br />

intrínseca às abordagens de descoberta baseadas em broadcast<br />

[Duffield et al. 1999]. Além disso, conforme demonstram os resulta<strong>dos</strong><br />

experimentais (vide Capítulo 6), esse mecanismo promove um aumento na<br />

supressão de mensagens de resposta redundantes à medida que as respostas vão se<br />

aproximando do dispositivo requisitante – considerando a proximidade física <strong>dos</strong><br />

dispositivos em função da distância em número de saltos –, configurando, desse<br />

modo, uma solução escalável no que diz respeito ao número de dispositivos<br />

participantes e à densidade da MANET.<br />

Vale destacar que, em MANETs cujo controle de acesso ao meio físico é<br />

baseado no protocolo CSMA/CA (Carrier Sense Multiple Access / Collision<br />

Avoidance), o uso de um esquema de broadcast salto-a-salto, como proposto pelo<br />

mecanismo SbV, exclui a aplicação <strong>dos</strong> mecanismos de acesso basea<strong>dos</strong> em<br />

confirmação ou no diálogo RTS/CTS (Request-To-Send / Clear-To-Send),<br />

ofereci<strong>dos</strong> por esse protocolo, tornando as transmissões de mensagens menos


O <strong>Protocolo</strong> P2PDP 121<br />

confiáveis devido à maior probabilidade de perdas por colisão. A ausência de<br />

reconhecimento pode ser solucionada indiretamente no próprio mecanismo SbV<br />

(vide discussão a respeito na Seção 4.8). Contudo, é interessante também que, em<br />

conjunto com o SbV, seja adotado algum mecanismo que garanta um certo<br />

assincronismo na transmissão das respostas, de modo a reduzir a probabilidade de<br />

colisões. Isso pode ser conseguido, por exemplo, através de um retardo<br />

programado no envio das respostas [Duffield et al. 1999]. O algoritmo DR,<br />

descrito na próxima seção, supre essa necessidade no protocolo P2PDP como um<br />

efeito colateral benéfico. O algoritmo DR foi projetado com o intuito de promover<br />

a seleção das melhores respostas a uma requisição de serviço em função da<br />

disponibilidade de recursos em cada colaborador.<br />

4.7.<br />

O Algoritmo <strong>para</strong> o Cálculo do Retardo no Envio de Respostas<br />

No protocolo P2PDP, cada nó disposto a colaborar na provisão de um serviço<br />

específico retarda a transmissão de suas mensagens CRep de acordo com o<br />

temporizador replyDelay, associado à requisição em questão (reqID), na entrada<br />

correspondente em sua pendingList. O algoritmo de “retardo de respostas”<br />

(Delayed Replies – DR) configura esse temporizador de modo que ele seja<br />

inversamente proporcional à disponibilidade <strong>dos</strong> recursos do nó que são<br />

necessários <strong>para</strong> prover o serviço requisitado. Como resultado, os dispositivos<br />

com mais recursos são os primeiros a responder às requisições de descoberta de<br />

serviços. Além disso, o retardo diferenciado do envio reduz o problema de colisão<br />

de mensagens de resposta. O algoritmo DR é executado de forma distribuída e<br />

completamente independente em cada colaborador <strong>para</strong> cada requisição<br />

respondida.<br />

É preciso ressaltar que a determinação do retardo no envio da resposta é<br />

flexível no que tange aos recursos sendo considera<strong>dos</strong>, <strong>para</strong> a provisão do serviço<br />

– por exemplo, qualidade do enlace sem fio, carga de CPU livre, energia<br />

disponível na bateria –, e à importância relativa entre eles – denominada “peso” –,<br />

o que permite que com os mesmos recursos possam ser especifica<strong>dos</strong> critérios de<br />

seleção diferencia<strong>dos</strong> <strong>para</strong> aplicações com características distintas. A informação<br />

sobre quais recursos devem ser considera<strong>dos</strong> no cálculo da adequação de um nó e


O <strong>Protocolo</strong> P2PDP 122<br />

os pesos relativos é transportada pelas mensagens IReq, no campo ctxtInfo,<br />

definido no requisitante. Como foi visto na Subseção 2.3.1.2, esse campo é<br />

determinado em função das características da aplicação, podendo ser definido pelo<br />

desenvolvedor da aplicação ou, ainda, através de valores padrões, especifica<strong>dos</strong> na<br />

subcamada de adaptação implementada <strong>para</strong> a família a qual a aplicação pertence<br />

(Subseção 2.3.2.3). Quando um nó recebe uma requisição, ele obtém seu estado<br />

atual, através do serviço MoGrid de gerência de contexto (ContextListener), em<br />

função <strong>dos</strong> recursos de interesse <strong>para</strong> calcular o retardo de resposta. Para esse<br />

algoritmo funcionar a contento, to<strong>dos</strong> os nós, na MANET, devem empregar o<br />

mesmo critério no cálculo do retardo. Na implementação do P2PDP (veja o<br />

Capítulo 5), um nó colaborador configura o temporizador replyDelay, na entrada<br />

correspondente ao identificador da requisição recebida (reqID) em sua<br />

pendingList, <strong>para</strong> τ unidades de tempo, conforme dado por<br />

⎛ ⎛ ⎞⎞<br />

τ = ⎜1 − ω τ ,<br />

⎜<br />

⎝ ⎝ ⎠⎠<br />

N<br />

⎜ αiPi<br />

⎟⎟<br />

0 ≤ ≤1<br />

∑ N<br />

max<br />

i=<br />

1 ⎜ ∑ P ⎟⎟<br />

0 < ω ≤1<br />

j=<br />

1 j<br />

α<br />

(2)<br />

A Equação (2) pode ser dividida em duas partes: a primeira, expressando a<br />

“função de adequação” do dispositivo e a segunda, representando o valor de τ max ,<br />

obtido através da Equação (1). Na função de adequação, ω indica a disposição<br />

(“boa vontade”) do nó colaborador em participar da provisão do serviço, podendo<br />

assumir qualquer valor no intervalo (0, 1]. ω é um parâmetro subjetivo, um fator<br />

determinado pelo usuário que descreve o nível de interesse do usuário em permitir<br />

que o seu dispositivo colabore com os outros na MANET. τ não é definido <strong>para</strong><br />

ω = 0, uma vez que tal valor significa que o usuário não deseja participar da<br />

provisão do serviço. Nesse caso, nenhuma resposta será enviada pelo nó<br />

colaborador; ele apenas atuará como um nó intermediário no encaminhamento de<br />

mensagens do protocolo de descoberta. N representa o número <strong>dos</strong> diferentes tipos<br />

de recursos que o nó colaborador deve considerar. P i corresponde ao peso que<br />

descreve a importância relativa de cada recurso do tipo i, 1 ≤ i ≤ N. Os valores de<br />

{P 1 , P 2 , ..., P N } são obti<strong>dos</strong> a partir do campo ctxtInfo transmitido na requisição<br />

(mensagem IReq). α i corresponde ao nível normalizado de disponibilidade, no<br />

intervalo [0, 1], do recurso do tipo i no nó colaborador. Considerando-se, por<br />

exemplo, o recurso energia, α energia assumirá um valor percentual de 0% a 100%


O <strong>Protocolo</strong> P2PDP 123<br />

em função da carga residual da bateria disponível no dispositivo. Já o valor de<br />

P energia é definido pelo iniciador, na requisição, em função da importância do<br />

recurso <strong>para</strong> a execução do serviço solicitado. É importante mencionar<br />

que os diferentes tipos de recursos que podem ser monitora<strong>dos</strong> são determina<strong>dos</strong><br />

pela implementação do serviço monitor do MoGrid, aos quais está associada uma<br />

ordenação única, que garante a correta associação entre α i e P i . Finalmente, o<br />

valor de τ max corresponde a expressão (D max – 2HS), que é descrita na Equação (1),<br />

pelo algoritmo SbV, e corresponde a uma parcela do valor de retardo máximo que<br />

uma resposta pode sofrer (maxReplyDelay); lembrando que o valor de D max é<br />

definido pelo iniciador na mensagem de requisição de serviço (IReq).<br />

É importante mencionar que o parâmetro S, presente nas Equações (1) e (2),<br />

é ajustado em função da qualidade do enlace sem fio que influencia no retardo de<br />

transferência, sendo responsável pelo cálculo <strong>dos</strong> temporizadores associa<strong>dos</strong> ao<br />

retardo de envio de respostas (τ) e da validade das entradas na pendingList<br />

(τ max ), relacionadas à construção do caminho reverso ao percorrido pela requisição<br />

que é utilizado no encaminhamento das respostas. Os registros da estrutura de<br />

da<strong>dos</strong> local pendingList são cria<strong>dos</strong> durante o processamento da requisição e<br />

manti<strong>dos</strong> como soft state até que a sua validade – determinada pelo campo<br />

cleanUp – expire. As informações contidas nessa estrutura de da<strong>dos</strong> auxiliam no<br />

roteamento das mensagens de resposta; caso não sejam localizadas entradas na<br />

pendingList, o roteamento das respostas é feito por broadcast local nãodirecionado,<br />

ou seja, alcançando to<strong>dos</strong> os nós no raio de transmissão do nó<br />

intermediário.<br />

A seguir é feita uma análise da correspondência entre os valores obti<strong>dos</strong>,<br />

<strong>para</strong> τ e τ max , <strong>para</strong> uma dada requisição. Na Equação (1), o cálculo de τ max define o<br />

tempo máximo que as informações sobre uma dada requisição devem ser mantidas<br />

na tabela de requisições pendentes, considerando-se o tempo que o iniciador está<br />

disposto a esperar por respostas, a distância entre o colaborador e o iniciador e o<br />

retardo de transferência que as mensagens trocadas entre eles experimentam. <strong>Um</strong><br />

colaborador que esteja apto a responder a essa requisição deve enviar a sua<br />

resposta em um período inferior ou igual a τ max , dado que, depois que esse tempo<br />

tiver transcorrido, a sua resposta não será recebida em tempo hábil. O algoritmo<br />

DR utiliza a função de adequação do colaborador – somatório <strong>dos</strong> valores de


O <strong>Protocolo</strong> P2PDP 124<br />

{α 1 , α 2 , ..., α N }, normaliza<strong>dos</strong> por {P 1 , P 2 , ..., P N }, aplica<strong>dos</strong> à ω – <strong>para</strong> gerar<br />

retar<strong>dos</strong> no envio das respostas, calcula<strong>dos</strong> através da Equação (2), que sejam<br />

inversamente proporcionais a sua disponibilidade de recursos. Desse modo,<br />

quanto maior for o valor obtido pelo cálculo da função de adequação, mais<br />

rapidamente a resposta do colaborador será transmitida, promovendo um<br />

mecanismo de seleção das melhores respostas no seu envio. O cálculo da função<br />

de adequação é realizado com as informações obtidas através do monitoramento<br />

do contexto de cada dispositivo da rede que é realizado pelo serviço monitor da<br />

arquitetura MoGrid (Subseção 2.3.1.2). Se ainda assim o número total de<br />

respostas produzido – numReplies (N R ) – for maior do que o número máximo de<br />

respostas solicitado pelo nó requisitante – numMaxReplies (N M ) –, o coordenador<br />

da requisição se encarrega de selecionar as N M primeiras respostas recebidas. O<br />

algoritmo DR garante que as mensagens <strong>dos</strong> colaboradores mais aptos a prover o<br />

serviço serão privilegiadas pelos coordenadores das requisições.<br />

4.8.<br />

O Mecanismo <strong>para</strong> o Reconhecimento do Envio de Respostas<br />

Como foi mencionado na Seção 4.6, o uso de um esquema de encaminhamento de<br />

mensagens por broadcast salto-a-salto, como o proposto pelo algoritmo SbV,<br />

exclui da aplicação qualquer tipo de mecanismo de acesso baseado em<br />

confirmação na camada de acesso ao meio físico, o que torna as transmissões de<br />

mensagens menos confiáveis, devido ao aumento da probabilidade de perdas<br />

provocadas pela ocorrência de colisões. Para contornar o problema da baixa<br />

confiabilidade das transmissões broadcast, no protocolo CSMA/CA, foi<br />

desenvolvido um mecanismo de reconhecimento salto-a-salto de respostas, que<br />

aproveita a própria transmissão em broadcast de uma resposta por um dispositivo<br />

como reconhecimento <strong>para</strong> a transmissão dessa mesma resposta pelo dispositivo<br />

anterior, no caminho de retorno da mensagem. Para isso, utilizou-se a<br />

característica de “propagação em eco” da comunicação por broadcast, em redes<br />

sem fio ad hoc de saltos múltiplos, <strong>para</strong> implementar um mecanismo de<br />

reconhecimento implícito no SbV. Como ilustrado na Figura 23, propagação em<br />

eco diz respeito à recepção de uma mensagem de resposta, pelo dispositivo que a<br />

originou, através do seu vizinho direto, que corresponde ao próximo salto em


O <strong>Protocolo</strong> P2PDP 125<br />

direção ao dispositivo que originou a requisição. No exemplo dessa figura, o<br />

dispositivo N 1 gerou uma resposta (CRep 1 ) e a transmitiu na MANET por<br />

broadcast local direcionado, alterando o campo retPath da mensagem <strong>para</strong> o<br />

valor do identificador do nó N 4 . De acordo com o algoritmo SbV, como os nós N 2<br />

e N 3 não estão no caminho de retorno da mensagem, eles a descartam (linha 23, na<br />

Figura 21). Ao receber a mensagem de resposta, por sua vez, N 4 procede de modo<br />

similar à N 1 , já que ele se encontra no caminho de retorno da mensagem, e a<br />

encaminha por broadcast local na direção do nó que originou a requisição,<br />

alterando o campo retPath da mensagem <strong>para</strong> o valor do identificador do nó N 5 .<br />

Como conseqüência da propagação em eco das mensagens pelo P2PDP, o nó N 1<br />

receberá a própria resposta que ele originou de N 4 , o dispositivo que corresponde<br />

ao próximo salto no caminho de retorno, levando a uma confirmação implícita da<br />

transmissão anterior.<br />

Figura 23 – Propagação em eco de mensagens CRep pelo protocolo P2PDP.<br />

O mecanismo de reconhecimento atua em dois instantes distintos: (i) no<br />

tratamento de mensagens de requisição, quando o dispositivo pode colaborar e<br />

envia uma mensagem de resposta ao nó que requisitou o serviço, e (ii) no<br />

tratamento das mensagens de resposta duplicadas que são “escutadas” pelo<br />

dispositivo, embutido na lógica do algoritmo SbV (Figura 21, linha 2). Em (i) o<br />

dispositivo agenda o reenvio da mensagem de resposta <strong>para</strong> um tempo específico<br />

caso o seu reconhecimento não seja recebido antes que esse tempo expire. Já em<br />

(ii), o dispositivo monitora as respostas que ele encaminha ou apenas “escuta”,


O <strong>Protocolo</strong> P2PDP 126<br />

cancelando o reenvio agendado se o reconhecimento do envio da sua resposta for<br />

recebido.<br />

A Figura 24 traz o pseudocódigo do algoritmo de tratamento das<br />

requisições P2PDP (IReq), onde o mecanismo de reconhecimento é inicializado.<br />

Figura 24 – O algoritmo de tratamento de requisições.<br />

Ao receber uma requisição de serviço, o dispositivo verifica se ela já não<br />

foi tratada localmente, consultando se há uma entrada em sua pendingList<br />

relacionada à requisição correspondente. Em caso positivo, a requisição já foi<br />

processada pelo dispositivo e é então descartada. Senão, o dispositivo encaminha<br />

a requisição, em broadcast local, <strong>para</strong> os seus vizinhos, obedecendo à restrição<br />

imposta pelo diâmetro da requisição, isto é, a requisição só será encaminhada se<br />

numHops ≤ maxHops. A seguir, o dispositivo verifica se pode colaborar, ou seja, se<br />

ele disponibiliza o serviço, e se o valor de ω está no intervalo (0, 1]. Se essas<br />

condições se verificam, então, o dispositivo adiciona a requisição como uma<br />

entrada em sua pendingList, pelo período de tempo definido por τ max , que é<br />

calculado por meio da Equação (1). Na linha 7 da Figura 24, a resposta à<br />

requisição é gerada, e o seu envio é escalonado em função do temporizador τ –<br />

calculado utilizando-se a Equação (2). A resposta gerada é encaminhada por<br />

broadcast local direcionado ao nó que a originou, utilizando como próximo salto,<br />

no caminho de retorno ao percorrido pela requisição, o identificador de<br />

dispositivo obtido através do campo hopID na pendingList local. Nesse ponto, é<br />

acionado o mecanismo de reconhecimento, com o agendamento de reenvio da


O <strong>Protocolo</strong> P2PDP 127<br />

mensagem de resposta <strong>para</strong> o tempo definido pelo temporizador ackTimer (linha<br />

9). O período de duração desse temporizador é calculado tendo como resultado<br />

um valor no intervalo (τ, τ max ). O reenvio da resposta, associado a esse<br />

agendamento, só será de fato realizado caso o dispositivo não receba o<br />

reconhecimento na recepção da mensagem de resposta.<br />

A Figura 25 traz o pseudocódigo do algoritmo de monitoramento das<br />

mensagens de resposta do protocolo P2PDP (CRep). Esse algoritmo possibilita o<br />

reconhecimento de envio de respostas originadas pelo próprio dispositivo, como<br />

pode ser visto, a seguir, em mais detalhes.<br />

Figura 25 – O algoritmo de reconhecimento de envio de respostas.<br />

Como se pode observar no pseudocódigo do algoritmo SbV, ilustrado na<br />

Figura 21, quando um dispositivo recebe uma resposta, originada por ele, a uma<br />

requisição de serviço da MANET, o dispositivo detecta que a mensagem foi<br />

originada localmente (teste na linha 1) e aciona o mecanismo de reconhecimento<br />

implícito de envio de respostas (linha 2). No pseudocódigo do algoritmo de<br />

reconhecimento de envio de mensagens de resposta, Figura 25, o dispositivo<br />

averigua, primeiramente, se há uma entrada em sua pendingList relacionada à<br />

requisição correspondente. Em caso positivo, o dispositivo testa se o identificador<br />

do nó que entregou a mensagem (msg.source) corresponde ao próximo salto<br />

(entrada.hopID), <strong>para</strong> a requisição em questão (msg.reqID), na sua<br />

pendingList, ou se o número de respostas recebidas (N R ) é maior ou igual ao<br />

número de respostas esperado (N M ), <strong>para</strong> a mesma requisição (msg.reqID). Se a<br />

primeira condição se verifica (msg.source = entrada.hopID), o dispositivo tem<br />

uma confirmação de que a sua resposta foi recebida pelo nó no próximo salto no<br />

caminho de retorno, em direção ao dispositivo que originou a requisição. Se a<br />

segunda condição se verifica (N R ≥ N M ), isso significa que já foram encaminhadas<br />

mensagens de resposta suficientes <strong>para</strong> atender à requisição do iniciador. Se


O <strong>Protocolo</strong> P2PDP 128<br />

qualquer das duas condições se verifica (teste na linha 4), o agendamento de<br />

reenvio da resposta é cancelado (linha 5), caso o temporizador de reenvio<br />

(ackTimer) ainda não tenha expirado. Caso contrário, é detectada a ocorrência de<br />

uma colisão pela não propagação do eco da mensagem de resposta dentro do<br />

período de tempo esperado (ackTimer) e, como resultado, o reenvio da resposta é<br />

efetivado. O reenvio é feito definindo-se o próximo salto da mensagem de<br />

resposta como o endereço de broadcast local. Como conseqüência do reenvio,<br />

to<strong>dos</strong> os nós que são vizinhos diretos do dispositivo que originou a resposta irão<br />

tratá-la, encaminhando-a na MANET, por broadcast direcionado – caso conheçam<br />

a identificação do dispositivo que corresponde ao próximo salto em direção ao<br />

dispositivo que solicitou o serviço – ou por broadcast local. Esse procedimento é<br />

repetido em to<strong>dos</strong> os nós intermediários até que a mensagem alcance o seu<br />

destino.<br />

Atualmente, o reconhecimento de envio de respostas no protocolo P2PDP<br />

não é processado nos nós intermediários, apenas no nó que originou a requisição.<br />

Essa solução pode ser estendida, contemplando to<strong>dos</strong> os dispositivos no caminho<br />

de retorno da mensagem. É importante ressaltar que o mecanismo de<br />

retransmissão de mensagens de resposta oferece uma solução preliminar<br />

considerada nesta tese <strong>para</strong> o tratamento de falhas no enlace, devido à mobilidade<br />

<strong>dos</strong> dispositivos. Caso a mensagem de resposta gerada por um dispositivo seja<br />

suprimida por to<strong>dos</strong> os seus vizinhos diretos, não será possível efetuar o<br />

reconhecimento de envio da mensagem em questão. Nesse caso, a retransmissão<br />

da mensagem não poderá ser evitada.<br />

4.9.<br />

Análise Com<strong>para</strong>tiva do <strong>Protocolo</strong> P2PDP<br />

O objetivo desta seção é com<strong>para</strong>r os protocolos de descoberta de serviços <strong>para</strong><br />

redes sem fio ad hoc de saltos múltiplos, apresenta<strong>dos</strong> no Capítulo 3, com as<br />

principais contribuições propostas no protocolo P2PDP, a saber:<br />

Boa vontade em colaborar (willingness). Parâmetro configurável pelo<br />

usuário <strong>para</strong> indicar o quanto ele está disposto a colaborar com os demais,<br />

independentemente do seu dispositivo oferecer, ou não, os serviços que estão<br />

sendo solicita<strong>dos</strong>. Como foi mencionado na Seção 4.7, esse parâmetro pode ser


O <strong>Protocolo</strong> P2PDP 129<br />

definido em tempo de execução, sendo ajustado automaticamente em função de<br />

variações na disponibilidade <strong>dos</strong> recursos do dispositivo móvel.<br />

Diâmetro da requisição. Parâmetro configurável pelo usuário <strong>para</strong> indicar o<br />

número máximo de saltos (maxHops) que as suas requisições por serviços podem<br />

trafegar. Esse parâmetro limita o alcance da requisição, oferecendo um<br />

mecanismo de difusão controlado, evitando que a mensagem se propague<br />

indefinidamente na rede.<br />

Controle do número de respostas a cada requisição. Configurável pelo<br />

usuário e utilizado <strong>para</strong> reduzir o tráfego de mensagens de resposta na rede<br />

(numMaxReplies). A cada requisição é associado um número limite de respostas<br />

esperado.<br />

Nível de adequação do colaborador à requisição (suitability). Cada<br />

dispositivo calcula, segundo uma função de adequação, o quanto ele está apto <strong>para</strong><br />

atender à requisição <strong>dos</strong> outros nós. O resultado obtido corresponde a um valor no<br />

intervalo [0, 1]. A função de adequação é aplicada considerando-se os recursos<br />

computacionais que o dispositivo possui no momento em que a requisição é<br />

recebida e o perfil de execução do serviço requisitado, que define a prioridade que<br />

cada recurso computacional tem <strong>para</strong> a utilização do serviço.<br />

Retardo programado do envio de mensagens de resposta. As respostas às<br />

requisições são retardadas em função da adequação do nó em atender à<br />

solicitação, analisando a capacidade do dispositivo em função do perfil de<br />

execução do serviço requisitado (veja a descrição do algoritmo DR, Seção 4.7). A<br />

requisição do usuário indica o tempo que o dispositivo que originou a requisição<br />

está disposto a aguardar por respostas à sua solicitação (campo maxReplyDelay<br />

da mensagem IReq). A uma variação desse tempo de espera – valor de τ max obtido<br />

através da Equação (1) –, é aplicado o valor obtido através da função de<br />

adequação – vide Equação (2); o resultado é usado <strong>para</strong> ajustar o temporizador,<br />

que determinará quão rapidamente um colaborador deverá responder à requisição<br />

do iniciador.<br />

Supressão de mensagens de resposta na vizinhança. As mensagens de<br />

resposta no P2PDP são enviadas por broadcast local direcionado e retransmitidas<br />

através do caminho reverso ao realizado pela mensagem de requisição. Durante o


O <strong>Protocolo</strong> P2PDP 130<br />

encaminhamento da resposta, os nós intermediários podem suprimir mensagens de<br />

resposta de acordo com o parâmetro numMaxReplies (veja a descrição do<br />

algoritmo SbV, Seção 4.6). Esse parâmetro é usado pelos dispositivos <strong>para</strong> inibir<br />

o envio de suas próprias respostas – se ele se identificou como um possível<br />

colaborador –, ou das respostas que são encaminhadas através dele, caso o número<br />

de respostas que ele tenha “escutado” já seja suficiente <strong>para</strong> atender à requisição<br />

do iniciador.<br />

A Tabela 3 traz um resumo com<strong>para</strong>tivo do P2PDP, com os protocolos <strong>para</strong><br />

descoberta de serviços em redes sem fio ad hoc de saltos múltiplos introduzi<strong>dos</strong><br />

no Capítulo 3, em função <strong>dos</strong> parâmetros apresenta<strong>dos</strong> nesta seção. Os símbolos<br />

“NT” e “PT” indicam, respectivamente, “não tratado” e “parcialmente tratado”.<br />

Tabela 3 – Resumo com<strong>para</strong>tivo entre o protocolo P2PDP e os protocolos de descoberta<br />

de serviços <strong>para</strong> MANETS de saltos múltiplos.<br />

Boa Vontade<br />

(Willingness)<br />

Diâmetro da<br />

Requisição<br />

Número de<br />

Respostas<br />

Adequação<br />

(Suitability)<br />

Retardo<br />

Programado<br />

Supressão de<br />

Respostas<br />

P2PDP<br />

Parâmetro<br />

configurável pelo<br />

usuário, de modo<br />

manual ou<br />

dinâmico,<br />

variando de [0,1],<br />

que indica o<br />

quanto o<br />

dispositivo está<br />

disposto a<br />

colaborar<br />

O parâmetro<br />

maxHops limita o<br />

número de saltos<br />

que uma<br />

mensagem de<br />

requisição (IReq)<br />

pode trafegar<br />

O parâmetro<br />

numMaxReplies<br />

é utilizado <strong>para</strong><br />

limitar o número<br />

de mensagens de<br />

resposta na rede<br />

A função de<br />

adequação de um<br />

colaborador é<br />

mensurada de<br />

acordo com o<br />

perfil de<br />

execução provido<br />

pelo iniciador que<br />

efetuou a<br />

requisição<br />

(ctxtInfo na<br />

operação<br />

createRequest<br />

Profile())<br />

As respostas às<br />

requisições são<br />

temporizadas em<br />

função da<br />

adequação do nó<br />

em atender à<br />

solicitação e do<br />

tempo máximo<br />

que o solicitante<br />

está disposto a<br />

esperar<br />

(maxReply<br />

Delay)<br />

Os nós<br />

intermediários<br />

escutam as<br />

respostas a todas<br />

as requisições e<br />

restringem o<br />

encaminhamento<br />

da mensagem<br />

em função da<br />

informação sobre<br />

o número de<br />

respostas<br />

esperado pelo<br />

iniciador<br />

GSD<br />

NT<br />

Diâmetro limitado<br />

por um parâmetro<br />

configurável pelo<br />

usuário e também<br />

pela semântica<br />

de grupos,<br />

responsável pelo<br />

encaminhamento<br />

seletivo das<br />

requisições <strong>para</strong><br />

os dispositivos<br />

que possuem<br />

informações<br />

sobre o mesmo<br />

grupo de serviço<br />

da requisição<br />

NT NT NT<br />

NT<br />

Múltiplas<br />

respostas podem<br />

ser geradas por<br />

um mesmo nó,<br />

caso ele possua<br />

mais de uma<br />

entrada <strong>para</strong> o<br />

serviço em sua<br />

tabela (serviços<br />

locais ou<br />

remotos),<br />

entretanto, a<br />

seleção de<br />

serviços é<br />

manual


O <strong>Protocolo</strong> P2PDP 131<br />

Boa Vontade<br />

(Willingness)<br />

Diâmetro da<br />

Requisição<br />

Número de<br />

Respostas<br />

Adequação<br />

(Suitability)<br />

Retardo<br />

Programado<br />

Supressão de<br />

Respostas<br />

Allia<br />

Ao receber uma<br />

requisição, o<br />

dispositivo decide<br />

se irá processála,<br />

ou não, com<br />

base na sua<br />

política local.<br />

Especificação na<br />

política local de<br />

um parâmetro<br />

que restringe o<br />

número de saltos<br />

que a requisição<br />

pode trafegar<br />

(diâmetro da<br />

aliança)<br />

NT NT NT NT<br />

Konark<br />

Gossip<br />

NT<br />

NT<br />

A requisição é<br />

enviada <strong>para</strong> o<br />

endereço de<br />

grupo Konark,<br />

utilizando<br />

multicast<br />

NT<br />

PT<br />

As propriedades<br />

associadas ao<br />

serviço podem<br />

ser usadas <strong>para</strong><br />

indicar a<br />

adequabilidade<br />

do provedor<br />

O envio de<br />

anúncios é<br />

temporizado <strong>para</strong><br />

evitar inundação<br />

(multicast) e<br />

permitir que o nó<br />

“aprenda” mais<br />

sobre a rede,<br />

enviando<br />

respostas mais<br />

completas e<br />

sumarizadas<br />

PT<br />

Implementa<br />

sumarização; as<br />

respostas são<br />

enviadas de<br />

forma<br />

incremental; cada<br />

nó ouve as<br />

respostas que<br />

trafegam na rede<br />

e só respondem<br />

caso possuam<br />

alguma<br />

informação<br />

adicional<br />

ORION NT NT NT NT NT<br />

Os nós<br />

intermediários<br />

sumarizam as<br />

respostas que<br />

recebem, antes<br />

de entregá-las ao<br />

solicitante<br />

[Varshavsky<br />

et al. 2005]<br />

NT<br />

NT<br />

Depende do<br />

protocolo de<br />

roteamento<br />

utilizado<br />

NT NT NT NT<br />

FTA<br />

NT<br />

A requisição é<br />

encaminhada ao<br />

provedor que<br />

oferecer o melhor<br />

tradeoff entre<br />

proximidade<br />

física e<br />

capacidade de<br />

oferecer o serviço<br />

PT<br />

Cada requisição<br />

emitida sempre<br />

terá como<br />

resultado apenas<br />

uma resposta<br />

É introduzido o<br />

conceito de CoS<br />

(Capacity of<br />

Service); esse<br />

valor é calculado<br />

e divulgado, na<br />

rede, por cada<br />

provedor,<br />

definindo a sua<br />

capacidade em<br />

prover o serviço<br />

NT<br />

PT<br />

Promove uma<br />

supressão<br />

implícita de<br />

respostas, já que<br />

os nós que irão<br />

responder são<br />

“seleciona<strong>dos</strong>” no<br />

encaminhamento<br />

da requisição<br />

Em uma grade móvel ad hoc, a seleção <strong>dos</strong> dispositivos que irão colaborar<br />

na execução de um conjunto de tarefas deve estar embutida no mecanismo de<br />

descoberta, o que não ocorre nas propostas encontradas na literatura [Litke et al.<br />

2004; McKnight et al. 2003], as quais, tradicionalmente, sugerem abordagens<br />

independentes <strong>para</strong> tratar esses dois aspectos. Com o uso do P2PDP, as aplicações<br />

se beneficiam <strong>dos</strong> mecanismos de descoberta e seleção, embuti<strong>dos</strong> em um único<br />

protocolo, sem a sobrecarga provocada pelo gerenciamento de mensagens de


O <strong>Protocolo</strong> P2PDP 132<br />

anúncios de recursos e serviços, abordagem tipicamente adotada pelos protocolos<br />

de descoberta de serviços propostos <strong>para</strong> MANETs de saltos múltiplos, como<br />

aqueles descritos no Capítulo 3. Cabe aqui incluir uma com<strong>para</strong>ção mais<br />

detalhada entre o protocolo P2PDP e os protocolos que apresentam um<br />

comportamento mais similar ao seu. Considerando-se os resumos com<strong>para</strong>tivos<br />

efetua<strong>dos</strong> nas Tabelas 2 e 3, dentre os trabalhos analisa<strong>dos</strong>, a abordagem crosslayer<br />

de Varshavsky et al. [2005] e o protocolo FTA [Lenders et al. 2005] são os<br />

que apresentam maiores semelhanças com o protocolo P2PDP.<br />

Diferentemente da maioria <strong>dos</strong> protocolos de descoberta de serviços<br />

propostos <strong>para</strong> MANETs de saltos múltiplos, no protocolo P2PDP, a seleção das<br />

melhores respostas é realizada de forma automática, sem a necessidade de<br />

intervenção do usuário, como parte integrante do mecanismo de supressão de<br />

respostas desnecessárias. Mesmo na abordagem cross-layer de Varshavsky et al.,<br />

que oferece um mecanismo automático de seleção de respostas, o critério utilizado<br />

não é o que melhor se adequa ao conceito de resource matching <strong>dos</strong> ambientes de<br />

grade (Subseção 2.3.1); na abordagem proposta, o critério de seleção adotado é a<br />

distância, em número de saltos, entre o cliente e os provedores de serviço. Como<br />

se pode observar pelo resumo apresentado na Tabela 3, no protocolo FTA, é<br />

apresentada uma abordagem que se adapta melhor às necessidades das grades<br />

móveis ad hoc. Na proposta apresentada, o critério de seleção é configurável,<br />

podendo ser implementado em função da distância na rede entre os dispositivos<br />

envolvi<strong>dos</strong>, na capacidade de cada provedor em oferecer o serviço (Capacity of<br />

Service – CoS) ou utilizando uma combinação <strong>dos</strong> dois critérios. Entretanto, no<br />

FTA, o gerenciamento da informação sobre a capacidade de prover o serviço<br />

implica na troca periódica de mensagens de anúncios <strong>para</strong> atualizar o valor do<br />

CoS, através da inundação da rede; cada tipo de serviço possui um CoS<br />

específico. O gradiente de campo gerado por cada tipo de serviço que um<br />

dispositivo disponibiliza na rede é definido através do cálculo de potencial do<br />

serviço (φ) como o somatório do CoS de cada provedor do serviço pela distância<br />

em número de saltos do dispositivo ao provedor, informações obtidas através das<br />

mensagens de anúncio de serviços. A informação sobre o gradiente de campo<br />

gerado por cada instância de serviço na rede é distribuída entre os vizinhos do<br />

dispositivo a até um número de saltos específico, configurável pelo usuário.


O <strong>Protocolo</strong> P2PDP 133<br />

A abordagem proposta no protocolo FTA é similar à adotada no protocolo<br />

P2PDP, ambas implementam um mecanismo de seleção distribuído, entretanto, no<br />

FTA, a seleção é feita no encaminhamento da requisição, que é direcionada ao<br />

provedor mais apto, o que resulta na entrega de uma única resposta ao dispositivo<br />

que originou a requisição de serviço. Por sua vez, no protocolo P2PDP, a seleção<br />

é feita no encaminhamento das mensagens de resposta. O assincronismo no envio<br />

dessas mensagens, obtido pela utilização do algoritmo DR (Seção 4.7), garante<br />

que os provedores mais aptos serão os primeiros a responder. No FTA, cada<br />

dispositivo precisa ter conhecimento prévio da CoS <strong>dos</strong> demais dispositivos, <strong>para</strong><br />

então definir o seu potencial <strong>para</strong> oferecer o serviço; no P2PDP, o dispositivo só<br />

precisa ter conhecimento da sua informação de contexto, que diz respeito a<br />

disponibilidade <strong>dos</strong> seus recursos, <strong>para</strong> definir se está apto ou não a colaborar<br />

(suitability). Cada vez que um dispositivo recebe um anúncio de serviço, com uma<br />

atualização do valor do CoS, é necessário que ele refaça o cálculo do seu potencial<br />

em relação ao tipo de serviço em questão e o divulgue na MANET, o que incorre<br />

em um problema de escalabilidade.<br />

No P2PDP, os diferentes tipos de serviço definem perfis de execução que<br />

combinam um conjunto de recursos dinâmicos comuns a to<strong>dos</strong> os tipos de<br />

serviços, como a qualidade do enlace sem fio, carga de CPU, espaço de<br />

armazenamento em disco, memória e energia disponíveis. A combinação da<br />

disponibilidade desses recursos, <strong>para</strong> determinar o potencial do dispositivo em<br />

prover o serviço, é diferenciada, <strong>para</strong> cada família de aplicações, em função <strong>dos</strong><br />

níveis de prioridade entre eles. Em uma grade móvel, caracterizada como um<br />

ambiente distribuído de execução de tarefas, existe a necessidade real, em se<br />

tratando de serviços não específicos, de se obter, em resposta a uma requisição de<br />

serviço, a indicação de mais de um provedor, o que não é contemplado pela<br />

abordagem proposta no FTA. O que se justifica por essa proposta não ter sido<br />

desenvolvida <strong>para</strong> se adequar às características de um ambiente de grade, mas sim<br />

à descoberta de serviços específicos em MANETs.<br />

Pelo que foi discutido, é possível afirmar que dentre os protocolos<br />

apresenta<strong>dos</strong>, o P2PDP é o que melhor atende às necessidades de uma grade<br />

móvel ad hoc. Isso se deve ao fato do P2PDP ter sido especificado levando em


O <strong>Protocolo</strong> P2PDP 134<br />

consideração os requisitos necessários a um protocolo de descoberta desenvolvido<br />

<strong>para</strong> esse ambiente particular, os quais são descritos na Seção 1.2.


5<br />

Implementação<br />

Este capítulo é dedicado a apresentar a implementação da arquitetura MoGrid e,<br />

mais especificamente, do protocolo P2PDP, trazendo as suposições adotadas <strong>para</strong><br />

o seu desenvolvimento, as decisões de projeto quanto às tecnologias utilizadas,<br />

além <strong>dos</strong> cenários de uso que constituem o protocolo de descoberta e seleção de<br />

recursos e serviços. Esses cenários de uso são representa<strong>dos</strong> por alguns diagramas<br />

de seqüência, com o intuito de facilitar a compreensão do comportamento das<br />

entidades envolvidas no processo de descoberta e seleção de recursos e serviços.<br />

Além disso, são apresenta<strong>dos</strong> os detalhes da integração do middleware MoGrid<br />

com uma grade fixa através do Globus Toolkit [Foster & Kesselman 1997]. Este<br />

capítulo traz também maiores detalhes sobre a utilização do protocolo P2PDP e da<br />

API fornecida pela arquitetura MoGrid, através do desenvolvimento de aplicações<br />

colaborativas diversificadas e do teste de correção da implementação do protocolo<br />

utilizando o simulador NCTUns [Wang & Lin 2005].<br />

5.1.<br />

Tecnologias Utilizadas<br />

A implementação foi desenvolvida na linguagem Java da SUN [Sun 1994], sendo<br />

adotado o perfil CDC (Connected Device Configuration) do J2ME [Sun 1999b]<br />

como plataforma de referência <strong>para</strong> a implementação. <strong>Um</strong>a versão simplificada da<br />

implementação também foi desenvolvida adotando o perfil CLDC/MIDP<br />

(Connected Limited Device Configuration/Mobile Information Device Profile).<br />

Nessa versão, foram implementadas somente as entidades iniciador e coordenador<br />

do protocolo P2PDP, devido às restrições do perfil CLDC/MIDP no que se refere<br />

ao controle de execução de tarefas, mecanismos de temporização e ao<br />

monitoramento de recursos, que são essenciais <strong>para</strong> a entidade colaborador. As<br />

entidades de descoberta – iniciador, coordenador e colaborador – foram<br />

explicadas em detalhes na Subseção 2.3.1.2 e na Seção 4.5. A linguagem Java foi


Implementação 136<br />

escolhida por ser uma linguagem multiplataforma e oferecer recursos de<br />

programação <strong>para</strong> dispositivos móveis.<br />

O serviço monitor (Subseção 2.3.1.2), utilizado nas versões desenvolvidas<br />

<strong>para</strong> Windows XP e Linux, corresponde à implementação disponível na<br />

arquitetura MoCA (Mobile Collaboration Architecture) [Sacramento et al. 2004].<br />

Esse serviço foi desenvolvido como um daemon executando em cada dispositivo<br />

móvel, responsável por coletar informações de estado, tais como a qualidade do<br />

enlace sem fio, nível de energia, uso de CPU e memória disponível. Essas<br />

informações são processadas pelo gerente de contexto (Subseção 2.3.1.2), que<br />

alimenta o colaborador, informando-o, quando solicitado, sobre a disponibilidade<br />

de recursos do dispositivo. Essa informação será utilizada pelo algoritmo DR<br />

(Seção 4.7) <strong>para</strong> o cálculo do retardo de envio de mensagens de resposta. A<br />

utilização dessa implementação do monitor deve-se ao fato <strong>dos</strong> estu<strong>dos</strong> iniciais<br />

que conduziram a este trabalho terem sido desenvolvi<strong>dos</strong> durante o processo de<br />

especificação da arquitetura MoCA.<br />

Para que os dispositivos portáteis possam atuar como uma interface de<br />

acesso à grade fixa, utilizando os serviços e recursos que ela disponibiliza, foi<br />

necessária a definição de uma nova entidade na arquitetura MoGrid, capaz de<br />

fazer a tradução do protocolo P2PDP <strong>para</strong> os protocolos usa<strong>dos</strong> em grades fixas.<br />

Essa entidade, denominada proxy de colaboração, atua como um intermediador na<br />

descoberta e seleção de recursos e submissão de tarefas em uma grade fixa,<br />

através <strong>dos</strong> dispositivos provenientes de uma grade móvel, como ilustrado na<br />

Figura 26. O conceito do proxy de colaboração é genérico na arquitetura MoGrid,<br />

podendo ser especializado <strong>para</strong> tecnologias de grade fixa particulares. A<br />

implementação do proxy de colaboração desenvolvida nesta tese é responsável<br />

pela integração do MoGrid com o Globus [Foster & Kesselman 1997] – um<br />

toolkit de software <strong>para</strong> construção de grades fixas. O proxy deve ser um<br />

dispositivo presente, simultaneamente, na grade móvel e na grade fixa; qualquer<br />

dispositivo que hospede o software cliente do Globus e o middleware MoGrid é<br />

passível de se tornar um proxy de colaboração. A escolha do Globus Toolkit deve-


Implementação 137<br />

se ao fato da grade fixa do projeto ComCiDis 1 , na qual foram realiza<strong>dos</strong> os<br />

experimentos com o proxy de colaboração, ter sido implantada utilizando essa<br />

tecnologia.<br />

Figura 26 – O proxy de colaboração MoGrid.<br />

5.2.<br />

Implementação do <strong>Protocolo</strong> P2PDP<br />

As próximas subseções trazem detalhes sobre a implementação do protocolo de<br />

descoberta P2P. Foi adotado o <strong>para</strong>digma de orientação a objetos tanto na<br />

modelagem quanto na implementação. As principais classes do protocolo, bem<br />

como o relacionamento entre elas, são apresenta<strong>dos</strong> através de diagramas de<br />

classe e de seqüência UML (Unified Modeling Language) [OMG 2005], com o<br />

intuito de facilitar a compreensão do comportamento das entidades envolvidas no<br />

processo de descoberta e seleção de serviços. Nos diagramas de classe, foi<br />

utilizada uma grafia diferenciada <strong>para</strong> representar as classes abstratas (itálico) e as<br />

concretas (regular). Além disso, classes que implementam interfaces têm essas<br />

interfaces identificadas pelo estereótipo “”.<br />

1 A página do projeto ComCiDis está disponível em . Acesso em: 15<br />

mai. 2007.


Implementação 138<br />

5.2.1.<br />

Descrição de Recursos e Controle de Admissão<br />

A Figura 27 ilustra as classes responsáveis pela descrição <strong>dos</strong> recursos e pelo<br />

controle de admissão do protocolo.<br />

Figura 27 – Descrição de recursos e controle de admissão.<br />

Cada recurso disponível na grade é representado por uma instância da classe<br />

ResourceDescriptor e é registrado, pelo dispositivo que o disponibiliza, através do<br />

método put() da classe ResourceRegistry. Ao ser registrado, o recurso é<br />

associado a um identificador único universal, representado pela classe<br />

ResourceIdentifier. Ao receber uma requisição de serviço, o colaborador consulta<br />

o mecanismo de controle de admissão <strong>para</strong> verificar se o serviço solicitado é<br />

oferecido pelo dispositivo; esse procedimento é efetuado através do método<br />

admit() da classe AdmissionController.<br />

5.2.2.<br />

Mensagens de Controle P2PDP<br />

As mensagens de controle do protocolo de descoberta P2PDP, descritas na Seção<br />

4.5, são representadas como subclasses da classe abstrata P2PDPMessageImpl,<br />

como ilustrado na Figura 28. A manipulação de qualquer campo presente nessas


Implementação 139<br />

mensagens pelas entidades do protocolo ocorre por intermédio desse conjunto de<br />

classes. A classe P2PDPMessageImpl implementa os méto<strong>dos</strong> que manipulam<br />

campos comuns a todas as mensagens de controle P2PDP – IReq, CRep e<br />

CRepList. Esses méto<strong>dos</strong> são defini<strong>dos</strong> na interface .<br />

Figura 28 – Declaração das mensagens de controle P2PDP.<br />

5.2.3.<br />

Canal de Comunicação P2PDP<br />

As mensagens do protocolo P2PDP trafegam na MANET utilizando canais de<br />

comunicação cria<strong>dos</strong> a partir da classe P2PDPConnectionFactory, como ilustrado<br />

na Figura 29. Na implementação do protocolo P2PDP <strong>para</strong> redes sem fio ad hoc,<br />

apenas um canal de comunicação broadcast é criado, o qual é representado por<br />

uma instância da classe P2PDPBroadcastConnection. Isso se deve ao fato de que,<br />

nesse tipo de rede, as entidades iniciador e coordenador são implementadas no<br />

mesmo dispositivo, comunicando-se diretamente, através de chamadas a méto<strong>dos</strong><br />

das classes Initiator e Coordinator, ilustradas na Figura 30, sem a necessidade de<br />

criação de um canal de comunicação específico entre elas (classe<br />

P2PDPUnicastConnection). Em uma implementação do P2PDP <strong>para</strong> uma rede<br />

sem fio infra-estruturada, o coordenador pode ser implementado na estação base,<br />

que é o dispositivo mais rico em recursos da rede sem fio, podendo atuar como<br />

coordenador <strong>para</strong> to<strong>dos</strong> os iniciadores da grade móvel. Nesse caso, a comunicação


Implementação 140<br />

entre iniciador e coordenador é feita através de um canal de comunicação unicast<br />

(classe P2PDPUnicastConnection); a comunicação entre coordenador e<br />

colaboradores utiliza, assim como nas redes sem fio ad hoc, o canal de<br />

comunicação broadcast.<br />

Figura 29 – Canal de comunicação P2PDP.<br />

As classes P2PDPUnicastConnection e P2PDPBroadcastConnection são<br />

representadas na Figura 30 como subclasses da classe abstrata<br />

P2PDPConnectionImpl que implementa a interface .<br />

Essas classes oferecem às entidades do protocolo P2PDP os mecanismos <strong>para</strong><br />

acesso ao canal de comunicação oferecido pela plataforma de hardware ou<br />

software – no caso, o sistema operacional do dispositivo sem fio.<br />

5.2.4.<br />

Entidades de <strong>Descoberta</strong> P2PDP<br />

A Figura 30 ilustra as classes que representam as entidades de descoberta –<br />

iniciador (classe Initiator) e coordenador (classe Coordinator) – e a interface que<br />

representa as operações fornecidas pelas subcamadas de adaptação (ASLs) da<br />

camada de transparência (interface ), que foram descritas<br />

na Subseção 2.3.2.3. <strong>Um</strong>a aplicação MoGrid inicia o processo de descoberta<br />

acionando o método submitRequest() de uma classe que implementa<br />

. Essa aplicação desenvolvida deve implementar a<br />

interface , que define o método<br />

receiveReplyList() <strong>para</strong> recepção <strong>dos</strong> resulta<strong>dos</strong> do processo de descoberta.


Implementação 141<br />

Figura 30 – Entidades iniciador e coordenador e a subcamada de adaptação.<br />

A Figura 30 ilustra também uma implementação default de ASL (classe<br />

AdaptationSublayerImpl). Aplicações que apresentem características específicas<br />

podem demandar o desenvolvimento de ASLs também específicas; isso é<br />

conseguido por meio de classes que implementam a interface<br />

. <strong>Um</strong> exemplo que ilustra a necessidade do<br />

desenvolvimento de ASLs específicas é a implementação do método<br />

selectReplies(). Apesar do protocolo P2PDP implementar a seleção das<br />

melhores respostas ao longo da rede (Seções 4.6 e 4.7), em algumas situações o<br />

coordenador pode receber mais respostas do que as que foram solicitadas pelo<br />

iniciador. Para atender a esses casos, o método selectReplies() é responsável<br />

por efetuar a seleção de respostas, mantendo o processo de seleção automático,<br />

sem a necessidade de intervenção direta do cliente da aplicação. No caso da classe<br />

default AdaptationSublayerImpl, esse método devolve simplesmente as primeiras<br />

respostas que chegam ao coordenador. Outras aplicações podem implementar<br />

outras estratégias de seleção nesse método por intermédio de classes específicas<br />

que implementam , conforme discutido ao final da<br />

Subseção 2.3.1.2.<br />

A Figura 31 traz as classes que representam a entidade colaborador (classe<br />

Collaborator), o mecanismo de controle de admissão (classe<br />

AdmissionController) e os serviços responsáveis pelo monitoramento das


Implementação 142<br />

informações <strong>dos</strong> recursos do dispositivo (classe MoCAMonitor) e pela inferência<br />

do seu nível de colaboração (classe ContextListener).<br />

Figura 31 – Entidade colaborador.<br />

Ao processar uma requisição de serviço, através do método<br />

handlerIReqMessage(), o colaborador primeiro verifica se a requisição já foi<br />

tratada por ele (isIReqMessageDuplicate()), descartando-a em caso afirmativo.<br />

Caso contrário, o colaborador consulta o atributo willingness, <strong>para</strong> definir se<br />

está disposto (0 < willingness ≤ 1) ou não (willingness = 0) a colaborar. Se o<br />

dispositivo está atuando no modo de colaboração ativa, ele então verifica se<br />

oferece o serviço solicitado, através do método admit(), da classe<br />

AdmissionController. No modo de colaboração ativa, o dispositivo não somente<br />

auxilia no encaminhamento das mensagens P2PDP – o que caracteriza o modo<br />

passivo – como também disponibiliza os seus recursos <strong>para</strong> os demais na rede. Se<br />

o colaborador possui o serviço em questão, ele então gera uma mensagem de<br />

resposta (CRep) e escalona o seu envio através do método sendCRepMessage(). O<br />

algoritmo DR, implementado através da classe CollaborationReplyDelay-<br />

Function, é acionado <strong>para</strong> calcular o instante de tempo (getReplyDelay()) em<br />

que a resposta do colaborador será enviada, bem como coletar a informação sobre<br />

o perfil de execução do dispositivo (getExecutionProfile()). Essa informação<br />

é transmitida na mensagem CRep, podendo ser usada pela ASL da aplicação que


Implementação 143<br />

requisitou o serviço como critério de seleção das melhores respostas, quando essas<br />

ultrapassam o número solicitado. Logo após o envio da sua resposta, o<br />

colaborador aciona o método waitCRepAcknowledgment() e fica aguardando<br />

pelo reconhecimento implícito de que a sua mensagem foi encaminhada, na rede,<br />

em direção ao nó que requisitou o serviço (pseudocódigo da Figura 25). Se o<br />

reconhecimento não for recebido (handlerDuplicateCRep()) dentro de um<br />

intervalo de tempo específico, então o colaborador reenvia a sua resposta, dessa<br />

vez, tendo como próximo salto no caminho de retorno to<strong>dos</strong> os seus vizinhos<br />

diretos, o que é definido pela utilização do endereço de broadcast, conforme é<br />

descrito na Seção 4.8.<br />

É importante mencionar que o valor do atributo willingness (ω), definido<br />

na Equação (2) apresentada no Capítulo 4, foi calculado como ω<br />

usr<br />

2L, onde ω usr<br />

representa o nível de interesse (no intervalo [0, 1]) do usuário em permitir que o<br />

seu dispositivo colabore com os outros na MANET e L representa o número de<br />

requisições que foram respondidas pelo dispositivo. Desta forma, implementou-se<br />

um mecanismo de adaptação simples, que oferece uma reserva antecipada de<br />

recursos na medida em que reduz o indicador da disposição do dispositivo em<br />

colaborar (willingness) quando o número de requisições pendentes aumenta. A<br />

adaptação do valor de ω tem como objetivo não apenas oferecer níveis mínimos<br />

de garantia de que o recurso requisitado esteja disponível quando a execução da<br />

tarefa for iniciada, como também preservar o dispositivo colaborador, evitando<br />

que ele fique sobrecarregado por atender mais requisições do que a sua<br />

capacidade permite. O ajuste desse parâmetro facilita o controle de admissão pois<br />

se ω atinge o seu valor mínimo (ω = 0), o colaborador passa a não responder às<br />

requisições da grade, mesmo que ele ofereça os serviços solicita<strong>dos</strong>. Caso esse<br />

parâmetro seja mantido no seu valor máximo (ω = 1) durante a participação do<br />

dispositivo na grade móvel, mesmo assim o cálculo do retardo no envio das<br />

mensagens garante que o temporizador τ seja configurado <strong>para</strong> um valor elevado,<br />

próximo ao limite definido pelo iniciador da requisição (maxRepDelay), fazendo<br />

com que a sua resposta seja preterida, sendo retirada da rede pelo mecanismo de<br />

supressão (Seção 4.8).


Implementação 144<br />

5.2.5.<br />

Cenários de Uso<br />

Esta subseção ilustra os aspectos dinâmicos da colaboração entre as entidades de<br />

descoberta e os serviços de monitoração, através da utilização de diagramas de<br />

seqüência.<br />

A seqüência de invocação de méto<strong>dos</strong> referente à descoberta de serviços, no<br />

P2PDP, é ilustrada pelo diagrama apresentado na Figura 32.<br />

Figura 32 – Seqüência de invocação de operações associadas à descoberta de serviço.<br />

A seqüência de invocação de méto<strong>dos</strong> referente ao tratamento de uma<br />

requisição de serviço pela entidade colaborador (classe Collaborator), no P2PDP,<br />

é ilustrada pelo diagrama apresentado na Figura 33.<br />

Figura 33 – Seqüência de invocação de operações associadas à recepção de uma<br />

requisição de serviço no colaborador.


Implementação 145<br />

5.3.<br />

Integração do MoGrid com o Globus Toolkit<br />

<strong>Um</strong> desafio no desenvolvimento de aplicações <strong>para</strong> grades móveis é a<br />

possibilidade de integração com grades fixas convencionais. Embora grades<br />

móveis possam, a princípio, ser pensadas como agrupamentos isola<strong>dos</strong> de<br />

processamento, a aproximação de uma grade móvel a um ponto de acesso <strong>para</strong><br />

uma rede fixa pode expandir, consideravelmente, a capacidade computacional da<br />

grade móvel. Nesta seção, os serviços que compõem o Globus Toolkit são<br />

brevemente apresenta<strong>dos</strong>, assim como as adaptações que se fizeram necessárias na<br />

arquitetura MoGrid, especialmente, na camada de descoberta, <strong>para</strong> que os<br />

dispositivos que constituem a grade móvel pudessem ter acesso aos recursos da<br />

grade fixa Globus de uma forma transparente. Nessa direção, são discuti<strong>dos</strong><br />

aspectos como a implementação do monitoramento <strong>dos</strong> recursos e do mecanismo<br />

de controle de admissão da grade fixa.<br />

5.3.1.<br />

O Globus Toolkit<br />

O Globus Toolkit (GTK) é um conjunto de ferramentas usado na criação de<br />

sistemas e aplicações em grades. O GTK permite que problemas<br />

computacionalmente complexos sejam executa<strong>dos</strong> rapidamente, dividindo-os em<br />

partes e os submetendo, sob a forma de tarefas (processos), às máquinas da grade,<br />

de acordo com os recursos disponíveis nas mesmas e com as necessidades<br />

específicas do problema. Cada tarefa deve ser instanciada na máquina remota em<br />

que for executada; <strong>para</strong> isso, um programa executável (ou script) que implemente<br />

a tarefa pode ter que ser previamente copiado <strong>para</strong> a máquina remota. O Globus<br />

oferece mecanismos <strong>para</strong> efetuar a transferência de arquivos entre as máquinas<br />

que constituem a grade.<br />

Para prover essas funcionalidades, o Globus Toolkit oferece vários serviços:<br />

• Grid Security Infrastructure (GSI). Provê segurança e permite um login<br />

único de usuário em toda a grade. Dessa forma, um usuário não precisa<br />

efetuar login em cada máquina usada no processamento de suas tarefas,<br />

mas utiliza uma única credencial, que fornece o acesso temporário a todas<br />

as máquinas usadas na grade;


Implementação 146<br />

• Globus Resource Allocation Manager (GRAM). Provê mecanismos de<br />

alocação de recursos e de criação e monitoração de tarefas, informando o<br />

andamento das tarefas durante o seu tempo de execução;<br />

• Grid File Transfer Protocol (GridFTP). Responsável pela transferência<br />

de arquivos (por exemplo, <strong>para</strong> cópia de executáveis) entre as máquinas da<br />

grade, por meio do protocolo FTP;<br />

• Monitoring and Discovery Service (MDS). Provê uma área de acesso<br />

público que disponibiliza informações sobre a grade. O MDS provê dois<br />

tipos de serviço:<br />

o Grid Resource Information Service (GRIS). Presente localmente em<br />

cada máquina da grade; envia informações sobre a máquina (sistema<br />

operacional, CPU livre, memória disponível, etc.) <strong>para</strong> uma determinada<br />

máquina na grade, que hospeda o GIIS;<br />

o Grid Index Information Service (GIIS). Recebe as informações,<br />

enviadas pelos GRIS, que estão localmente em cada máquina da grade.<br />

Desta forma, o GIIS é capaz de consolidar informações sobre a grade<br />

como um todo, oferecendo, às máquinas que têm acesso ao GIIS,<br />

informações específicas sobre um recurso qualquer.<br />

O GTK disponibiliza o CoG Kit [CoG 1997], implementado em várias<br />

linguagens, como Python e Java, <strong>para</strong> oferecer facilidades no desenvolvimento de<br />

aplicações <strong>para</strong> a grade Globus. Essa API permite que programadores<br />

implementem aplicações que possam ter acesso a serviços Globus, tais como<br />

submissão de tarefas (GSI, GRAM), transferência de arquivos (GridFTP) e<br />

descoberta de recursos (MDS). A implementação Java dessa API foi utilizada na<br />

implementação da integração da grade Globus à arquitetura MoGrid.<br />

5.3.2.<br />

Requisições de <strong>Descoberta</strong> P2PDP em uma Grade Globus<br />

Quando um usuário MoGrid requisita, no dispositivo móvel, a descoberta de<br />

recursos ou a submissão de uma tarefa, e essa requisição é recebida pelo proxy de<br />

colaboração, este se autentica na grade Globus apresentando um certificado de<br />

usuário e obtendo uma credencial temporária, válida enquanto durar a sessão. Não


Implementação 147<br />

é necessário que um usuário MoGrid possua esse certificado, porém é necessário<br />

que o proxy autentique um usuário Globus junto ao serviço GSI, ou seja, o usuário<br />

MoGrid personifica um usuário Globus através do proxy. Logo, qualquer máquina<br />

com acesso à grade Globus, e que tenha o MoGrid instalado, está apta a atuar<br />

como um proxy <strong>para</strong> a submissão de tarefas da grade móvel <strong>para</strong> a grade fixa. 2<br />

Ao receber uma requisição P2PDP, o proxy só enviará, ao usuário MoGrid<br />

requisitante, informações sobre os recursos <strong>dos</strong> nós da grade Globus em que puder<br />

se autenticar <strong>para</strong> a submissão de tarefas. O proxy envia ao cliente MoGrid<br />

exatamente o número de respostas solicitadas na requisição, encarregando-se de<br />

selecionar previamente os melhores colaboradores dentre as máquinas na grade<br />

fixa aptas a atender a requisição. O proxy torna transparente <strong>para</strong> o usuário<br />

MoGrid a existência de uma grade fixa e os nós da grade Globus são vistos como<br />

nós MoGrid alcançáveis através do proxy. Já na execução de uma tarefa, o proxy<br />

recebe, do usuário MoGrid requisitante, o nome do arquivo executável, seus<br />

argumentos, os arquivos que devem ser copia<strong>dos</strong> <strong>para</strong> a execução e o endereço do<br />

“nó MoGrid” (na realidade, um nó na grade Globus) em que a tarefa será<br />

executada. O proxy é responsável também pela gerência do ciclo de vida <strong>dos</strong><br />

arquivos que devem estar na máquina remota no momento da execução, ou seja, o<br />

proxy deve copiá-los antes que a execução da tarefa tenha início e removê-los<br />

logo após a sua conclusão.<br />

Para possibilitar a comunicação entre os dispositivos MoGrid e Globus, foi<br />

necessário acrescentar um campo à mensagem de resposta CRep do P2PDP. Esse<br />

novo campo, denominado proxyID, fornece o identificador do dispositivo que<br />

atua como proxy entre as duas grades. Para nós que não atuam como proxies,<br />

proxyID = 0. Dessa forma, o processo de submissão de tarefas obedece a mesma<br />

lógica tanto na grade móvel quanto na grade fixa. A Figura 34 traz a representação<br />

da mensagem CRep modificada.<br />

2 Deve-se ressaltar que as questões relacionadas ao mapeamento do usuário Globus <strong>para</strong> usuários<br />

MoGrid não são consideradas nesta tese. Essas questões dizem respeito aos mecanismos de<br />

segurança, que de uma forma global não são trata<strong>dos</strong> nesta tese.


Implementação 148<br />

Figura 34 – Mensagem CollaboratorReply (CRep) modificada.<br />

5.3.3.<br />

Monitoramento de Recursos em uma Grade Globus<br />

Para que se possa implementar o mecanismo de seleção <strong>dos</strong> dispositivos mais<br />

aptos a executar as tarefas da grade através do mecanismo de retardo no envio das<br />

mensagens de resposta, é necessário realizar o monitoramento das informações de<br />

contexto <strong>dos</strong> dispositivos na grade fixa, <strong>para</strong> que se possa efetuar o cálculo do<br />

temporizador replyDelay (vide Equação (2) na Seção 4.7).<br />

Para a escolha das máquinas responsáveis pela execução das tarefas na<br />

grade fixa – considerando-se que a qualidade do enlace sem fio e o nível de<br />

energia são constantes –, os recursos leva<strong>dos</strong> em consideração, na especificação<br />

do perfil de execução, foram CPU, memória e espaço em disco. O monitoramento<br />

desses recursos no GTK é feito através do MDS. Como o monitor MoCA,<br />

utilizado no middleware MoGrid, passa as informações sobre os recursos de uma<br />

forma diferente da utilizada no MDS, foi necessário desenvolver uma interface<br />

padrão <strong>para</strong> a descoberta de recursos que homogeneizasse essas informações,<br />

permitindo, assim, a integração <strong>dos</strong> mecanismos de monitoramento de recursos<br />

entre a grade móvel e a grade fixa.<br />

Diferentemente do monitor MoCA utilizado no MoGrid, que é executado<br />

como um daemon em cada dispositivo móvel, o monitor do Globus foi<br />

implementado, no middleware MoGrid, como um cliente do MDS que recebe<br />

informações sobre os recursos de todas as máquinas da grade fixa. No monitor do<br />

Globus (classe GlobusMonitor), essas informações são tratadas, sendo se<strong>para</strong>das<br />

pela identificação da máquina e enviadas, uma a uma, ao proxy MoGrid que<br />

solicitou a informação, mantendo a interface padrão de monitoramento de<br />

recursos MoGrid.


Implementação 149<br />

5.3.4.<br />

Controle de Admissão em uma Grade Globus<br />

O MDS trata apenas informações sobre os recursos físicos das máquinas, porém<br />

algumas aplicações podem exigir recursos lógicos, como programas e scripts<br />

desenvolvi<strong>dos</strong> em uma linguagem específica, que precisem localizar o seu<br />

ambiente de execução. Isso acontece, por exemplo, com aplicações Java que<br />

precisam de uma máquina virtual <strong>para</strong> serem executadas. Na API de descoberta<br />

MoGrid, existem operações <strong>para</strong> registro e remoção de serviços (operações<br />

register() e deregister()). O registro é feito de forma distribuída, com cada<br />

dispositivo na grade móvel se responsabilizando por gerenciar as informações<br />

sobre os serviços que disponibiliza. Como as máquinas, na grade fixa, não têm<br />

conhecimento do middleware MoGrid, não existe um mecanismo de registro das<br />

informações de serviços que cada máquina disponibiliza. Ao receber uma<br />

requisição de descoberta, antes de verificar quais máquinas da grade fixa atendem<br />

ao perfil de execução do serviço requisitado, o proxy precisa determinar quais<br />

máquinas, da grade fixa, disponibilizam o serviço. Esse procedimento<br />

corresponde às ações de um controle de admissão, que é responsável por<br />

determinar a existência <strong>dos</strong> recursos solicita<strong>dos</strong> – como softwares instala<strong>dos</strong> nas<br />

máquinas da grade fixa – aos quais o proxy tem acesso. Como o GTK só oferece<br />

suporte à execução de tarefas em máquinas executando sistemas operacionais da<br />

família UNIX, a solução <strong>para</strong> determinar se um dado serviço existe na grade fixa<br />

foi utilizar shell scripts. Cada serviço é associado a um determinado script, com<br />

uma lógica específica, <strong>para</strong> verificar a sua existência. Caso o serviço seja<br />

encontrado, esse script deve retornar a sua localização exata na máquina remota;<br />

caso contrário, o resultado é vazio.<br />

Para otimizar o mecanismo de controle de admissão ao inicializar o proxy, o<br />

seu administrador pode cadastrar scripts <strong>para</strong> localizar os serviços mais<br />

freqüentemente requisita<strong>dos</strong>. Esses scripts podem ser executa<strong>dos</strong> de forma reativa<br />

ou proativa; independentemente da abordagem adotada, o resultado obtido é<br />

cadastrado, no proxy, através da operação register() da API de descoberta<br />

MoGrid, da mesma forma como é feito nos dispositivos da grade móvel. Na<br />

abordagem reativa, cada vez que o proxy recebe uma requisição, ele executa o<br />

script correspondente ao serviço solicitado nas máquinas da grade fixa – caso


Implementação 150<br />

exista algum script associado ao serviço. Na abordagem proativa, o proxy executa<br />

os scripts cadastra<strong>dos</strong> periodicamente nas máquinas da grade fixa. Na<br />

implementação do ProxyCollaborator, a abordagem adotada foi a proativa.<br />

5.3.5.<br />

Implementação do Proxy de Colaboração<br />

Nesta seção, são apresentadas as extensões que se fizeram necessárias na entidade<br />

colaborador <strong>para</strong> que o proxy de colaboração pudesse ser implementado.<br />

A Figura 35 traz as classes associadas ao proxy de colaboração; o<br />

relacionamento entre essas classes é similar ao que foi apresentado na Figura 31.<br />

As alterações introduzidas no proxy de colaboração (classe ProxyCollaborator),<br />

em relação ao colaborador, dizem respeito à autenticação do dispositivo na grade<br />

fixa Globus e ao acesso aos serviços de monitoramento ofereci<strong>dos</strong> pelo GTK.<br />

Ao ser instanciado, o proxy de colaboração se autentica na grade Globus<br />

através do método sign() da classe ProxyInit, que, por sua vez, ativa a criação do<br />

monitor do Globus (classe GlobusMonitor) através do método<br />

createGlobusMonitor() da classe GridAuthentication. O processamento de<br />

requisições de serviços e das respostas a essas requisições é efetuado de forma<br />

similar ao que foi descrito <strong>para</strong> o colaborador. A diferença é que, ao tratar uma<br />

requisição, o proxy gera tantas respostas quantas forem as máquinas disponíveis,<br />

na grade fixa, <strong>para</strong> atendê-las, conforme descrito na Subseção 5.3.2.


Implementação 151<br />

Figura 35 – Entidade proxy de colaboração.<br />

A seqüência de invocação de méto<strong>dos</strong> referente ao tratamento de uma<br />

requisição de serviço pelo proxy de colaboração no P2PDP é ilustrada na<br />

Figura 36.<br />

Figura 36 – Seqüência de invocação de operações associadas à recepção de uma<br />

requisição de serviço no proxy de colaboração.


Implementação 152<br />

5.4.<br />

Aplicações de Teste<br />

Esta seção ilustra a utilização do protocolo P2PDP e da API de descoberta da<br />

arquitetura MoGrid por meio de um conjunto de aplicações colaborativas.<br />

Primeiramente, é apresentada uma aplicação P2P de compartilhamento de<br />

arquivos de áudio. A seguir, são apresentadas duas aplicações de processamento<br />

distribuído: uma aplicação de multiplicação de matrizes e uma outra que gerencia<br />

a execução de simulações <strong>para</strong>lelas do simulador ns-2 [ISI 1995].<br />

A aplicação que gerencia o compartilhamento de arquivos de áudio,<br />

denominada ASA (Audio Sharing Application), foi inspirada em aplicações como<br />

Gnutella [Gnutella 2005] e Napster [Napster 2005]. O perfil de execução dessa<br />

aplicação é definido por uma subcamada de adaptação (ASL) desenvolvida<br />

especificamente <strong>para</strong> a família de aplicações de transferência de arquivos. Para<br />

essas aplicações, é importante balancear a qualidade do enlace sem fio e o tempo<br />

de autonomia da bateria do colaborador selecionado <strong>para</strong> prover o serviço<br />

requisitado. Portanto, <strong>para</strong> essa aplicação, o perfil de execução foi definido<br />

levando-se em consideração os recursos energia e a qualidade do enlace sem fio.<br />

Na implementação da ASL, optou-se por considerar os dois recursos com pesos<br />

iguais. Assim, os parâmetros da Equação (2) foram configura<strong>dos</strong> como: N = 2 e<br />

P energia = P qualidade do enlace = 1. Nos testes realiza<strong>dos</strong>, foi utilizado o valor default de<br />

S (vide Seção 4.6), ou seja, S = 10 ms.<br />

A segunda aplicação desenvolvida utilizando o protocolo P2PDP,<br />

denominada M3 (Matrix-Matrix Multiplication), usa uma abordagem mestreescravo<br />

<strong>para</strong> multiplicação distribuída de matrizes. O objetivo dessa aplicação,<br />

desenvolvida como um “toy problem”, 3<br />

foi ilustrar a utilização de recursos<br />

tipicamente disponíveis em uma grade fixa por dispositivos portáteis em uma<br />

grade móvel. Nessa aplicação foi utilizado um algoritmo de multiplicação<br />

distribuída bastante simples: dadas duas matrizes, A mxn e B nxp , um nó-mestre<br />

(iniciador) calcula C mxp = AB selecionando m nós-escravos (colaboradores) e<br />

3 Termo comumente empregado na literatura especializada <strong>para</strong> designar a criação de uma versão<br />

simplificada de um problema complexo, usado <strong>para</strong> demonstrar um conceito através da<br />

investigação ou teste de algoritmos relaciona<strong>dos</strong> a um problema real.


Implementação 153<br />

enviando, <strong>para</strong> cada escravo i (1 ≤ i ≤ m), uma cópia da matriz B com a matrizlinha<br />

i<br />

A 1 xn<br />

, cujos elementos correspondem à i-ésima linha de A. Cada escravo i<br />

calcula a matriz-linha<br />

i i<br />

c1 x p<br />

= a1<br />

xnB<br />

e a retorna <strong>para</strong> o nó-mestre. Ao receber o<br />

resultado, o nó-mestre alimenta, então, cada i-ésima linha de C com a matriz-linha<br />

i<br />

c 1<br />

obtida. A seleção <strong>dos</strong> nós-escravos, na MANET, é feita através do protocolo<br />

x p<br />

P2PDP, levando-se em consideração os nós que possuem a maior quantidade<br />

disponível <strong>dos</strong> recursos CPU e memória. Esses recursos constituem o perfil de<br />

execução da aplicação M3. A ASL utilizada por essa aplicação foi desenvolvida<br />

<strong>para</strong> a família de aplicações de processamento intensivo. Para essas aplicações,<br />

variações na qualidade do enlace sem fio não influenciam a escolha <strong>dos</strong><br />

colaboradores <strong>para</strong> a ASL – dado que a transferência de informações entre<br />

iniciadores e colaboradores é mínima e discreta. No caso específico da aplicação<br />

M3, por ser um toy problem, o tempo médio de execução de cada tarefa –<br />

considerando-se matrizes com tamanho máximo 20x20 – ficou em torno de 1 ms,<br />

motivo pelo qual o tempo de autonomia da bateria do dispositivo foi<br />

desconsiderado na seleção de colaboradores. Assim, na implementação da<br />

aplicação M3 os parâmetros da Equação (2) foram configura<strong>dos</strong> como: N = 2,<br />

P CPU = P memória = 1 e S = 100 ms. O valor de S foi definido empiricamente, com<br />

base nos resulta<strong>dos</strong> obti<strong>dos</strong> nos testes realiza<strong>dos</strong> com a variação desse parâmetro.<br />

Nesse ponto é importante ressaltar que as aplicações ASA e M3 foram<br />

desenvolvidas única e exclusivamente <strong>para</strong> avaliar a correção da implementação<br />

do protocolo P2PDP e do middleware MoGrid, auxiliando na realização de testes<br />

que resultaram em refinamentos sucessivos dessas implementações. As aplicações<br />

ASA e M3 não foram especificadas <strong>para</strong> atender as necessidades de cenários<br />

realistas ou visando uma utilidade mais ampla.<br />

A terceira aplicação desenvolvida foi uma ferramenta que inicia, gerencia e<br />

pós-processa um conjunto de simulações <strong>para</strong>lelas do simulador ns-2. O pósprocessamento<br />

trata os da<strong>dos</strong> coleta<strong>dos</strong>, nas simulações, <strong>para</strong> obtenção <strong>dos</strong><br />

resulta<strong>dos</strong> em função de critérios de análise pré-defini<strong>dos</strong>. A ferramenta,<br />

denominada nsTOOL (ns dispaTcher and pOst-prOcessing Launcher), oferece<br />

uma interface gráfica e uma interface textual <strong>para</strong> facilitar a automatização do<br />

processo de submissão de múltiplos cenários de simulação <strong>para</strong> os dispositivos da


Implementação 154<br />

grade móvel aptos a colaborar. Isso inclui o proxy MoGrid, o que possibilita o<br />

envio <strong>dos</strong> scripts de simulação <strong>para</strong> as máquinas de uma grade fixa Globus<br />

qualquer. Como a aplicação nsTOOL pertence à mesma família da aplicação M3 –<br />

família de aplicações de processamento intensivo –, foi utilizada a mesma ASL.<br />

Entretanto, na aplicação nsTOOL – caracterizada como uma aplicação de longa<br />

duração –, o tempo de execução de cada tarefa é considerável, pois cada<br />

colaborador é responsável por um dado conjunto de simulações. Nesse caso, o<br />

tempo de autonomia da bateria do dispositivo é essencial na seleção <strong>dos</strong><br />

colaboradores na grade móvel que irão gerenciar as rodadas de simulação e<br />

executar o pós-processamento de seus resulta<strong>dos</strong>. Na implementação da aplicação<br />

nsTOOL, os parâmetros da Equação (2) foram configura<strong>dos</strong> como: N = 3,<br />

P energia = 3, P CPU = 2 e P memória = 1. Nos testes realiza<strong>dos</strong>, foi utilizado o valor<br />

default de S (vide Seção 4.6), ou seja, S = 10 ms.<br />

5.4.1.<br />

Ambientes de Teste Reais<br />

As três aplicações descritas neste capítulo foram executadas inicialmente em três<br />

cenários de teste reais distintos, descritos a seguir.<br />

Primeiramente, cada uma das três aplicações foi executada na rede do<br />

laboratório MARTIN 4<br />

(Mechanisms and ARchitectures for TeleINformatics),<br />

constituída por cinco máquinas Linux e uma máquina Windows, todas<br />

interligadas por uma rede Ethernet. Para emular o funcionamento em uma rede<br />

sem fio, foi instalado em todas as máquinas um módulo de emulação do<br />

Monitor/Sim MoCA, o que permitiu reproduzir variações das informações de<br />

contexto referentes a qualidade do enlace sem fio, além de emular a variação <strong>dos</strong><br />

níveis de energia disponíveis através de uma função linear decrescente. A<br />

qualidade do enlace sem fio foi medida em função da intensidade do sinal de rádio<br />

(Radio Signal Strength Indications – RSSI), configurado no intervalo [-20 dBm, -<br />

85 dBm], com os valores limites representando, respectivamente, o melhor e o<br />

pior nível de intensidade do sinal. As informações de contexto referentes a CPU,<br />

4 A página do projeto está disponível em . Acesso em: 10 fev. 2007.


Implementação 155<br />

memória e espaço em disco foram obtidas pelo módulo de execução real do<br />

monitor MoCA em cada máquina.<br />

Posteriormente, a aplicação M3 foi executada em uma rede sem fio de testes<br />

implementada no projeto ARES 5 (Architectures de RésEaux de Services) do<br />

INRIA/INSA-Lyon. Essa rede é constituída por quatro laptops e quatro mini-PCs<br />

(shuttles) executando Linux, sendo configurada em modo ad hoc.<br />

Por fim, as aplicações M3 e nsTOOL foram executadas novamente na rede<br />

do projeto MARTIN, dessa vez <strong>para</strong> verificar o funcionamento do proxy de<br />

colaboração. Para isso, uma das máquinas dessa rede foi registrada também como<br />

parte integrante do projeto InteGridade [Integridade 2003] que oferece uma grade<br />

baseada no Globus versão 2.4.<br />

Em to<strong>dos</strong> os cenários supracita<strong>dos</strong>, os mecanismos de descoberta e seleção<br />

do protocolo P2PDP apresentaram o comportamento esperado, retornando como<br />

resultado o número de respostas solicitadas na requisição, com a seleção das<br />

respostas de melhor qualidade e a supressão das respostas desnecessárias. Pela<br />

observação do arquivo de trace do protocolo P2PDP, que registra o envio e<br />

recepção de requisições e respostas, incluindo a ocorrência de supressões, foi<br />

possível rastrear o encaminhamento dessas mensagens e verificar a distribuição da<br />

ocorrência de supressões entre os nós que compunham o caminho de retorno das<br />

mensagens de resposta. Através da com<strong>para</strong>ção do perfil de execução de to<strong>dos</strong> os<br />

dispositivos respondentes, foi possível observar que os colaboradores que tiveram<br />

as suas respostas selecionadas <strong>para</strong> cada requisição foram os que apresentaram a<br />

maior disponibilidade <strong>dos</strong> recursos indica<strong>dos</strong> no perfil da requisição. Monitorando<br />

um bom número dessas execuções com o comando top – presente no sistema<br />

operacional Linux – e o gerenciador de tarefas (taskmgr) – presente no sistema<br />

operacional Windows –, foi possível observar a variação na disponibilidade de<br />

recursos <strong>dos</strong> dispositivos em função do processamento das requisições de<br />

descoberta e verificar a correção <strong>dos</strong> valores de retardo de envio gera<strong>dos</strong> pelos<br />

colaboradores. Entretanto, é importante ressaltar que os experimentos realiza<strong>dos</strong><br />

5 Os testes foram realiza<strong>dos</strong> em cooperação com os pesquisadores Guillaume Chelius e Nicolas<br />

Bolicaut. A página do projeto está disponível em . Acesso<br />

em: 10 fev. 2007.


Implementação 156<br />

têm um caráter inicial, dada a simplicidade das aplicações implementadas, não<br />

sendo possível obter resulta<strong>dos</strong> conclusivos que apresentem uma validade mais<br />

geral sobre o desempenho do P2PDP, o que é feito no Capítulo 6.<br />

5.4.2.<br />

Ambiente de Teste Simulado<br />

É importante ressaltar que os experimentos realiza<strong>dos</strong> nos cenários descritos na<br />

seção anterior têm um caráter de prova de conceito somente, dada a simplicidade<br />

das aplicações implementadas e <strong>dos</strong> ambientes de teste disponíveis. Para<br />

possibilitar testes da implementação do middleware MoGrid e do protocolo<br />

P2PDP em cenários mais complexos, foram realizadas rodadas de execução<br />

simulada da aplicação M3 no simulador NCTUns [Wang & Lin 2005]. Esse<br />

simulador permite a configuração de vários dispositivos virtuais em uma mesma<br />

máquina. Cada um desses dispositivos virtuais pode executar uma instância real<br />

da implementação, conferindo assim um ambiente de simulação muito similar a<br />

de um ambiente real de testes. Nos testes realiza<strong>dos</strong> sobre o NCTUns, os<br />

dispositivos virtuais foram organiza<strong>dos</strong> como uma rede sem fio ad hoc de saltos<br />

múltiplos. Os testes sobre o simulador NCTUns foram executa<strong>dos</strong> em duas etapas.<br />

Na primeira etapa, os parâmetros relaciona<strong>dos</strong> à mobilidade foram<br />

desconsidera<strong>dos</strong>. Em uma segunda etapa, a mobilidade <strong>dos</strong> dispositivos foi<br />

considerada.<br />

Para ser possível a execução <strong>dos</strong> testes sobre o NCTUns, foi necessário<br />

adaptar o serviço monitor de modo a atender algumas características do ambiente<br />

de simulação. Como uma única máquina executando o NCTUns é usada <strong>para</strong><br />

simular vários dispositivos em uma MANET, o uso do serviço monitor original<br />

incorreria em um cenário irreal, com to<strong>dos</strong> os dispositivos na rede sem fio<br />

apresentando as mesmas informações de estado. Para solucionar esse problema,<br />

foi implementado um serviço monitor modificado que, a partir das informações de<br />

estado reais – obtidas através do serviço monitor –, retorna valores aleatórios<br />

diferencia<strong>dos</strong> <strong>para</strong> cada nó que compõe o cenário sem fio simulado.<br />

A Tabela 4 apresenta os valores <strong>dos</strong> parâmetros usa<strong>dos</strong> na constituição das<br />

rodadas de simulação do cenário que não contempla a mobilidade <strong>dos</strong>


Implementação 157<br />

dispositivos. Foi considerado <strong>para</strong> esse cenário uma densidade fixa de dispositivos<br />

na MANET, usando topologias em grade. A escolha <strong>dos</strong> dispositivos que irão<br />

atuar como colaboradores ativos é feita de forma aleatória a cada rodada pelo<br />

script NCTUns que gera a topologia da rede, considerando o valor de p.<br />

Tabela 4 – Parâmetros de simulação NCTUns sem contemplar mobilidade.<br />

Parâmetro<br />

Valores<br />

Número de dispositivos (N) 16<br />

Densidade de dispositivos por raio de transmissão<br />

4 dispositivos<br />

Distância média entre dispositivos<br />

240 m<br />

Alcance da transmissão<br />

250 m<br />

Percentual de dispositivos colaboradores ativos (p) 20%<br />

Número máximo de respostas (R) 2<br />

A Figura 37 ilustra o comportamento das entidades P2PDP no processo de<br />

descoberta em uma rodada de simulação específica no NCTUns, <strong>para</strong> o cenário<br />

determinado na Tabela 4, com os dispositivos sem fio dispostos regularmente em<br />

grade.<br />

(a) Encaminhamento da requisição<br />

(b) Encaminhamento das respostas<br />

Figura 37 – Exemplo de rodada de simulação do protocolo P2PDP.<br />

Na Figura 37, o nó 7 atua como o iniciador do processo de descoberta, os<br />

nós 12, 13 e 14 atuam no modo de colaboração ativa e os demais nós no modo<br />

passivo, apenas encaminhando as mensagens de controle do P2PDP que lhes são<br />

enviadas. Na Figura 37(a), o iniciador submete uma requisição de serviço<br />

(mensagem IReq) à rede, com o número máximo de respostas configurado <strong>para</strong>


Implementação 158<br />

dois (numMaxReplies = 2) e o tempo máximo de espera por respostas <strong>para</strong> dez<br />

segun<strong>dos</strong> (maxReplyDelay = 10). Ao receber uma requisição, os colaboradores<br />

verificam duas condições: (i) se eles estão no modo de colaboração ativo<br />

(0 < willingness ≤ 1), ou seja, se eles podem colaborar, e (ii) se eles oferecem o<br />

serviço solicitado. Cada colaborador ativo calcula o retardo de envio da sua<br />

mensagem de resposta (replyDelay), de forma independente e distribuída,<br />

utilizando o algoritmo DR, e, a seguir, agenda o envio da sua resposta no instante<br />

de tempo obtido. Os valores obti<strong>dos</strong> <strong>para</strong> os temporizadores replyDelay, nos<br />

colaboradores 12, 13 e 14, foram, respectivamente, 1744 ms, 4087 ms e 8827 ms<br />

na rodada ilustrada na figura. As respostas são encaminhadas salto-a-salto em<br />

broadcast local direcionado, ou seja, to<strong>dos</strong> os vizinhos diretos de um nó que tenha<br />

emitido uma resposta escutam a mensagem, mas apenas o nó que está no seu<br />

caminho de retorno a encaminha adiante na rede; os outros nós a descartam,<br />

conforme especificado no algoritmo SbV. Na Figura 37(b), as setas tracejadas<br />

representam as respostas encaminhadas aos nós que não se encontram no caminho<br />

de retorno dessas mensagens e os círculos traceja<strong>dos</strong> representam o descarte das<br />

mensagens nesses nós. O caminho de retorno da resposta originada pelo nó 12<br />

(CRep 12 ) é 121615117, o do nó 13 (CRep 13 ) é 139567 e o do nó<br />

14 (CRep 14 ) é 1410117. Ao escutar as mensagens de resposta <strong>dos</strong> nós 12 e<br />

13, o nó 14 suprime a sua própria mensagem, pois a classifica como excedente, já<br />

que o valor do seu replyDelay é muito maior do que o <strong>dos</strong> demais; a supressão é<br />

representada na Figura 37(b) pelo círculo contornado pela linha sólida.<br />

Nos cenários de teste realiza<strong>dos</strong> considerando-se a mobilidade <strong>dos</strong><br />

dispositivos foram executadas rodadas de simulação utilizando os valores <strong>dos</strong><br />

parâmetros defini<strong>dos</strong> na Tabela 5. Foi considerado <strong>para</strong> esse cenário uma<br />

topologia determinada aleatoriamente a cada rodada pelo script NCTUns. A<br />

escolha <strong>dos</strong> dispositivos que irão atuar como colaboradores ativos é feita também<br />

de forma aleatória a cada rodada, considerando o valor de p.


Implementação 159<br />

Tabela 5 – Parâmetros de simulação NCTUns contemplando a mobilidade.<br />

Parâmetro<br />

Valores<br />

Número de dispositivos (N) 10<br />

Densidade média de dispositivos por raio de transmissão<br />

3 dispositivos<br />

Distância média entre dispositivos<br />

240 m<br />

Alcance da transmissão<br />

250 m<br />

Velocidade máxima de deslocamento<br />

2 m/s<br />

Pausa entre deslocamentos<br />

10 s<br />

Percentual de dispositivos colaboradores ativos (p) 60%<br />

Número máximo de respostas (R) 2<br />

A Figura 38 ilustra o comportamento das entidades P2PDP no processo de<br />

descoberta em uma rodada de simulação específica, de acordo com o cenário<br />

descrito pelos parâmetros da Tabela 5. O tempo máximo de espera por uma<br />

resposta (maxReplyDelay) é configurado <strong>para</strong> 10 s. Nesse cenário, o nó 4 atua<br />

como o iniciador do processo de descoberta, os nós 2, 5, 7, 8, 9 e 10 atuam no<br />

modo de colaboração ativa e os demais nós, no modo passivo. As setas, na figura,<br />

indicam o deslocamento <strong>dos</strong> nós durante o tempo de simulação, que foi de 53<br />

segun<strong>dos</strong>. Os círculos traceja<strong>dos</strong> indicam a área que corresponde ao alcance de<br />

transmissão de cada nó no início da rodada de simulação; o círculo com a borda<br />

contínua indica a área que corresponde ao alcance de transmissão do iniciador<br />

(nó 4) após completar o seu deslocamento.<br />

Pela observação da Figura 38, no início da colaboração, desconsiderando-se<br />

a adequação <strong>dos</strong> dispositivos, os colaboradores mais próximos do iniciador são os<br />

nós 5 e 10. Conforme os dispositivos vão se movimentando, os colaboradores 2,<br />

5, 9 e 10 vão se aproximando do iniciador, permanecendo no seu alcance de<br />

transmissão ao final do deslocamento. Pela análise do arquivo de trace da<br />

simulação, é possível observar que os colaboradores 7 e 8 foram os únicos a não<br />

responder à requisição do iniciador, por se encontrarem fora do alcance de<br />

transmissão <strong>dos</strong> demais nós, durante a difusão da mensagem. Os nós 2, 5, 9 e 10<br />

agendam o envio de suas respostas, conforme especificado no algoritmo SbV, em<br />

função do temporizador replyDelay, calculado de forma distribuída e<br />

independente, em cada colaborador, através do algoritmo DR. Os valores obti<strong>dos</strong><br />

<strong>para</strong> os temporizadores replyDelay nos colaboradores 2, 5, 9 e 10 foram,<br />

respectivamente, 1667 ms, 3829 ms, 2884 ms e 6830 ms. Por fim, o iniciador<br />

recebe as respostas <strong>dos</strong> colaboradores 2 e 9, com as demais respostas sendo


Implementação 160<br />

suprimidas ao longo do seu caminho de retorno. A resposta do colaborador 5 é<br />

descartada pelo iniciador, pois ele já havia recebido o número de respostas que<br />

havia solicitado (R = 2). A resposta do colaborador 10 é suprimida por ele mesmo<br />

ao escutar as respostas <strong>dos</strong> colaboradores 2 e 9. Como resultado das simulações<br />

executadas, foi possível verificar a correção <strong>dos</strong> mecanismos de descoberta e<br />

seleção de recursos implementa<strong>dos</strong> no protocolo P2PDP, considerando-se o<br />

deslocamento <strong>dos</strong> nós. É importante ressaltar que a escolha do cenário<br />

reproduzido na Figura 38 foi simplesmente o de ilustrar o comportamento do<br />

protocolo P2PDP em uma rede sem fio ad hoc de saltos múltiplos, mediante a<br />

mobilidade <strong>dos</strong> nós. O número de dispositivos foi escolhido por uma questão<br />

meramente didática, com o intuito de facilitar a explanação sobre o<br />

funcionamento do protocolo P2PDP. Cenários de maior escala são retrata<strong>dos</strong> no<br />

Capítulo 6, onde é feita a avaliação de desempenho do protocolo P2PDP.<br />

Figura 38 – Rodada de simulação NCTUns com mobilidade.


6<br />

Avaliação de Desempenho<br />

<strong>Um</strong> <strong>dos</strong> grandes desafios no desenvolvimento de soluções <strong>para</strong> grades móveis é a<br />

necessidade de se avaliar o desempenho destas soluções <strong>para</strong> um grande número<br />

de dispositivos sem fio que podem compor a grade móvel. Mesmo que essas<br />

soluções tenham sido validadas com uma implementação em pequena escala, é<br />

importante a sua avaliação em um ambiente de maior escala, devido à<br />

complexidade adicional introduzida pelo comportamento dinâmico de um grande<br />

número de dispositivos sem fio. Com base nestas considerações, a simulação<br />

apresenta-se como a única alternativa viável <strong>para</strong> a avaliação de desempenho em<br />

larga escala.<br />

O objetivo deste capítulo é apresentar, em detalhes, os resulta<strong>dos</strong> obti<strong>dos</strong><br />

através da simulação do protocolo de descoberta e seleção de recursos P2PDP<br />

com a utilização de diferentes cenários de simulação. Como foi mencionado nos<br />

capítulos anteriores, o P2PDP envolve a difusão de uma mensagem de requisição<br />

de descoberta <strong>para</strong> um recurso específico na grade móvel. A essa requisição,<br />

pode-se seguir um conjunto de mensagens de resposta, partindo de vários outros<br />

dispositivos na grade que possam oferecer o recurso solicitado. A idéia é que, <strong>para</strong><br />

garantir a escalabilidade do protocolo, parte dessas mensagens de resposta possam<br />

ser suprimidas, ao longo do seu caminho de retorno, à medida que a requisição<br />

seja plenamente satisfeita por outras respostas [Gomes et al. 2007; <strong>Lima</strong> et al.<br />

2007b].<br />

6.1.<br />

Cenários de Simulação e Métricas de Avaliação<br />

Nesta seção, são discuti<strong>dos</strong> os cenários de simulação que refletem os casos de uso<br />

favoráveis e desfavoráveis do protocolo P2PDP. Dando continuidade a essa<br />

discussão, ao final desta seção são apresenta<strong>dos</strong> alguns fatores que influenciam o


Avaliação de Desempenho 162<br />

desempenho do protocolo, o que irá auxiliar na identificação das métricas que<br />

melhor se adequam à avaliação de desempenho do protocolo proposto.<br />

Nos cenários de simulação ilustra<strong>dos</strong> pela Figura 39 e pela Figura 40, os<br />

círculos representam o alcance de transmissão <strong>dos</strong> dispositivos posiciona<strong>dos</strong> no<br />

seu centro. Nesses cenários, considera-se que a mensagem de requisição (IReq) é<br />

propagada <strong>para</strong> to<strong>dos</strong> os dispositivos (colaboradores C 1 a C 7 ) e que esses<br />

dispositivos podem colaborar, enviando mensagens de resposta (CRep),<br />

representadas pelas setas tracejadas, <strong>para</strong> o nó que originou a requisição (iniciador<br />

I), em função da sua disponibilidade de recursos. Para evitar que as figuras<br />

ficassem sobrecarregadas, foi omitida a representação da entrega de cada resposta<br />

<strong>para</strong> to<strong>dos</strong> os nós no alcance de transmissão do colaborador que a originou. Por<br />

exemplo, na Figura 39, a resposta do nó C 2 é recebida pelos nós I, C 1 e C 5 , os<br />

quais se encontram no alcance de transmissão de C 2 , entretanto, apenas o caminho<br />

C 5 C 2 foi representado.<br />

Figura 39 – P2PDP: cenário de uso favorável.<br />

A Figura 39 ilustra um cenário de simulação favorável do protocolo P2PDP,<br />

onde os vizinhos diretos (colaboradores C 1 e C 2 ) do nó que originou a requisição<br />

(iniciador I) encontram-se no alcance de transmissão um do outro. Nessa situação,<br />

o mecanismo de supressão apresenta o seu melhor desempenho, pois as<br />

mensagens de resposta que chegam aos vizinhos diretos do iniciador, nós (C 1 e<br />

C 2 ), sobrevivendo às supressões realizadas nos nós intermediários, são escutadas


Avaliação de Desempenho 163<br />

por ambos, que podem então suprimir as suas próprias respostas ou mesmo as<br />

mensagens provenientes <strong>dos</strong> outros nós da rede, caso elas sejam reconhecidas<br />

como excedentes pelo algoritmo SbV.<br />

Figura 40 – P2PDP: cenário de uso desfavorável.<br />

A Figura 40 ilustra um cenário de simulação desfavorável do protocolo<br />

P2PDP. Nesse cenário, to<strong>dos</strong> os vizinhos diretos (colaboradores C 1 , C 2 e C 3 ) do<br />

nó que originou a requisição (iniciador I) encontram-se fora do alcance de<br />

transmissão uns <strong>dos</strong> outros. Nesse caso, o mecanismo de supressão pode<br />

apresentar o seu pior desempenho, pois as mensagens de resposta que chegam a<br />

cada um desses nós (C 1 , C 2 e C 3 ), não seriam “escutadas” pelos demais, o que<br />

inviabiliza a supressão de respostas entre esses nós. Nessa situação, o número de<br />

respostas recebidas pelo iniciador pode chegar, em um caso extremo, ao número<br />

de respostas solicitadas (numMaxReplies), vezes o número de vizinhos diretos do<br />

iniciador (N).<br />

O desempenho do protocolo P2PDP, nos cenários de simulação<br />

apresenta<strong>dos</strong>, pode sofrer variações em função de parâmetros como o número de<br />

dispositivos na grade móvel, a densidade de dispositivos – parâmetro que<br />

determina o número de dispositivos na área de cobertura equivalente ao raio de<br />

transmissão –, a distância média entre os dispositivos, o percentual de dispositivos<br />

atuando no modo de colaboração ativa e o número máximo de respostas esperado.


Avaliação de Desempenho 164<br />

Esses fatores influenciam o número de mensagens que trafegam pelo enlace sem<br />

fio e, conseqüentemente, a atuação do mecanismo de supressão de respostas. A<br />

seguir, são apresentadas as métricas que serão empregadas como medidas de<br />

avaliação de desempenho do protocolo P2PDP, levando em consideração a<br />

variação <strong>dos</strong> parâmetros acima menciona<strong>dos</strong>:<br />

• Número total de transmissões. Indica a carga média da MANET em<br />

termos do número total de mensagens de requisição e resposta do<br />

protocolo P2PDP, que varia em função do aumento do número de<br />

dispositivos na grade móvel;<br />

• Diâmetro de supressão. O diâmetro de supressão das mensagens de<br />

resposta por vizinhança mede a distância – em número de saltos – <strong>dos</strong><br />

dispositivos onde ocorrem as supressões até o dispositivo requisitante. O<br />

tamanho do diâmetro de supressão determina a distribuição do<br />

processamento gerado pelo algoritmo SbV entre os dispositivos da grade<br />

móvel;<br />

• Balanceamento de carga. Essa métrica quantifica o nível de<br />

balanceamento de carga obtido, em função do mecanismo de seleção que<br />

promove uma distribuição uniforme das requisições de serviço, entre os<br />

dispositivos da rede mais aptos a atendê-las. A carga é medida em termos<br />

do percentual de CPU compartilhado por cada dispositivo da grade móvel<br />

durante o processamento das requisições.<br />

Essas métricas foram escolhidas por representarem os requisitos defini<strong>dos</strong><br />

na Seção 1.2, que dizem respeito às características desejáveis a um protocolo de<br />

descoberta de serviços em uma grade móvel ad hoc, os quais são retoma<strong>dos</strong> na<br />

Seção 6.5. As métricas número total de transmissões e diâmetro de supressão<br />

estão relacionadas à avaliação do impacto do problema de implosões de respostas<br />

e de colisões; já a métrica balanceamento de carga diz respeito à avaliação da<br />

distribuição das requisições de serviço no protocolo P2PDP.<br />

A discussão apresentada no início deste capítulo definiu a simulação como a<br />

única alternativa viável <strong>para</strong> a avaliação de desempenho do protocolo P2PDP em<br />

um ambiente de maior escala. Dadas as características do protocolo P2PDP e as<br />

medidas de desempenho que se pretende utilizar, o ns-2 [ISI 1995] foi o simulador


Avaliação de Desempenho 165<br />

escolhido. Outros aspectos que motivaram a escolha do simulador ns-2 dizem<br />

respeito a sua utilização ser bastante difundida na comunidade científica, a grande<br />

quantidade de documentação disponível e listas de discussão ativas sobre o<br />

mesmo; a versão do simulador utilizada corresponde a 2.29.<br />

6.2.<br />

Análise de Escalabilidade<br />

O protocolo P2PDP teve a sua escalabilidade avaliada com simulações realizadas<br />

no ns-2, as quais foram modeladas sobre uma rede sem fio ad hoc de saltos<br />

múltiplos “fixa”, ou seja, sem especificar parâmetros referentes à mobilidade <strong>dos</strong><br />

dispositivos, utilizando a camada MAC IEEE 802.11 com a sua configuração<br />

padrão. Portanto, esses experimentos correspondem a cenários com baixa<br />

mobilidade ou ausência de mobilidade. Nesses cenários, o tempo necessário <strong>para</strong> a<br />

descoberta equivale ao RTT (round-trip time) entre o envio da requisição e o<br />

recebimento das primeiras respostas, que correspondem as respostas de melhor<br />

qualidade, pelo nó requisitante. <strong>Um</strong>a baixa taxa de movimentação <strong>dos</strong> nós, nesse<br />

caso, garante uma relativa estabilidade da topologia da rede, de forma que o<br />

caminho seguido pelas primeiras respostas deverá ser o caminho inverso ao<br />

seguido pela requisição de descoberta.<br />

Nos cenários apresenta<strong>dos</strong>, a topologia da rede sem fio foi definida como<br />

um conjunto de nós dispostos regularmente na forma de grade, como ilustrado na<br />

Figura 37 do Capítulo 5. Os scripts desenvolvi<strong>dos</strong> <strong>para</strong> a simulação no ns-2,<br />

implementa<strong>dos</strong> em OTcl (Object Tool Command Language), reproduzem o<br />

comportamento do algoritmo SbV nas entidades de descoberta P2PDP em cada<br />

dispositivo. Esses scripts tiveram como objetivo avaliar os caminhos segui<strong>dos</strong> por<br />

diferentes mensagens de resposta do protocolo P2PDP e medir o grau médio de<br />

sobreposição desses caminhos. Esse parâmetro define em que altura do caminho<br />

seguido pela mensagem de resposta, entre o colaborador e o iniciador, ocorre a<br />

supressão da resposta; o grau médio de sobreposição é medido em termos do<br />

números de saltos. Essa abordagem permitiu que se medisse o nível de supressão<br />

de respostas P2PDP. Em cada script, é configurado o parâmetro N = m x n, que<br />

especifica o número total de dispositivos da grade. <strong>Um</strong> segundo parâmetro de<br />

simulação, p, determina a porcentagem de colaboradores ativos, ou seja, o


Avaliação de Desempenho 166<br />

percentual de dispositivos da grade que irão responder à requisição do nó<br />

requisitante, enviando uma resposta por unicast em sua direção. <strong>Um</strong> terceiro<br />

parâmetro, R, define quantas respostas são esperadas pelo nó requisitante. Assim,<br />

pôde ser avaliada a influência do número relativo de colaboradores ativos e<br />

respostas esperadas pelo requisitante sobre o desempenho do protocolo. Em<br />

função da topologia de grade utilizada, o uso de unicast na transmissão das<br />

respostas mostrou-se uma solução simples e eficiente <strong>para</strong> reproduzir o<br />

comportamento da transmissão das respostas através do caminho de retorno, sem<br />

a necessidade de se implementar o monitoramento (“escuta”) dessas mensagens<br />

pelos nós que não fazem parte do caminho. Após a definição do número de nós<br />

que atuarão como colaboradores ativos (p x N), é aplicada uma função que<br />

escolhe aleatoriamente a posição que esses nós irão ocupar na grade.<br />

<strong>Um</strong> segundo script, em Lua [Ierusalimschy et al. 2006], é então aplicado ao<br />

resultado da simulação. Esse script processa (i) o arquivo textual gerado pelo<br />

script ns-2, que descreve a topologia em grade utilizada na simulação e (ii) o<br />

arquivo de trace <strong>dos</strong> pacotes da simulação no ns-2. A partir do processamento<br />

desses arquivos, o script extrai algumas informações, como o nó que corresponde<br />

ao destino final e to<strong>dos</strong> os seus vizinhos diretos, os nós que correspondem às<br />

origens <strong>dos</strong> pacotes transmiti<strong>dos</strong> e, por fim, o caminho, salto-a-salto, percorrido<br />

por cada pacote, reproduzido através de tuplas constituídas pelo nó-origem, nódestino<br />

e pela identificação do pacote. Com isso, é montada uma tabela, através da<br />

qual são analisadas as supressões das mensagens de resposta ao longo da grade<br />

simulada. O objetivo de se utilizar esse script de pós-processamento, é identificar<br />

supressões por vizinhança em potencial e calcular quantas transmissões de pacotes<br />

e quantas supressões, por diâmetro de supressão, efetivamente ocorreriam se o<br />

algoritmo SbV fosse de fato implementado na simulação.<br />

O motivo de se adotar um modelo em grade sem fio fixa <strong>para</strong> as simulações<br />

no ns-2 foi gerar topologias com comportamento de encaminhamento de pacotes<br />

bem definido. Essa abordagem foi escolhida com o intuito de obter<br />

comportamentos regulares e previsíveis <strong>para</strong> assim poder efetuar uma análise mais<br />

precisa da escalabilidade do algoritmo, levando em consideração os cenários de<br />

uso do protocolo P2PDP mais e menos favoráveis descritos na Seção 6.1. A<br />

topologia adotada corresponde a uma fotografia instantânea de uma rede sem fio


Avaliação de Desempenho 167<br />

com baixa taxa de movimentação, caracterizando um cenário bem específico. Esse<br />

cenário específico pode ser representado utilizando-se, por exemplo, o modelo de<br />

mobilidade RWP (Random WayPoint), a velocidade média de deslocamento <strong>dos</strong><br />

nós de 2 m/s – velocidade que caracteriza o perfil de mobilidade de uma pessoa<br />

caminhando –, sem perío<strong>dos</strong> de pausa entre os deslocamentos. Além disso, é<br />

necessário que se façam algumas considerações adicionais: (i) o período de tempo<br />

decorrido entre o envio de uma requisição e a recepção das respostas<br />

correspondentes transcorre em 10 s (maxReplyDelay = 10), (ii) o alcance de<br />

transmissão de cada dispositivo é configurado <strong>para</strong> 250 m (padrão da camada<br />

MAC IEEE 802.11, implementada no ns-2) e (iii) as distâncias máxima e mínima<br />

entre os dispositivos vizinhos são configuradas <strong>para</strong> 200 m e 10 m,<br />

respectivamente, o que implica em um deslocamento coletivo, com os dispositivos<br />

não se afastando mais do que 200 m uns <strong>dos</strong> outros. Nesse cenário de baixa<br />

mobilidade, os nós continuarão alcançáveis com uma grande probabilidade – a<br />

menos que ocorra alguma falha com o próprio dispositivo ou no enlace sem fio, o<br />

que não foi considerado nesse exemplo. A baixa mobilidade <strong>dos</strong> dispositivos não<br />

interfere nos resulta<strong>dos</strong> de simulação obti<strong>dos</strong> pois a topologia da rede é mantida.<br />

Foi realizada uma série de experimentos reproduzindo o comportamento do<br />

algoritmo SbV, considerando-se uma densidade fixa de dispositivos na MANET –<br />

usando topologias com número fixo de dispositivos em um mesmo raio de<br />

transmissão –, de modo a avaliar o efeito do aumento no número de dispositivos<br />

na MANET, sobre o mecanismo de supressão de respostas. Os resulta<strong>dos</strong><br />

apresenta<strong>dos</strong> nesta seção correspondem às médias <strong>dos</strong> resulta<strong>dos</strong> coleta<strong>dos</strong>, em<br />

um total de cem rodadas por cenário de simulação, com um nível de confiança de<br />

95%. Os experimentos visaram, primordialmente, a avaliação de duas métricas: o<br />

número total de transmissões, considerando-se a carga de mensagens de resposta<br />

na MANET, e o diâmetro de supressão dessas mensagens. A Tabela 6 apresenta<br />

os valores <strong>dos</strong> parâmetros de simulação usa<strong>dos</strong> na constituição das rodadas de<br />

simulação.


Avaliação de Desempenho 168<br />

Tabela 6 – Parâmetros de simulação ns-2.<br />

Parâmetro<br />

Valores<br />

Número de dispositivos (N) 25 a 240<br />

Densidade de dispositivos<br />

5 dispositivos<br />

Distância média entre dispositivos<br />

10 m<br />

Percentual de dispositivos colaboradores ativos (p) 20% a 80%<br />

Número máximo de respostas (R) 1 a 10<br />

Na Tabela 6, o número de dispositivos (N) varia de 25 até 240 nós, ou seja,<br />

os pares m x n variam de 5 x 5 até 16 x 15, formando uma seqüência do tipo<br />

{5 x 5, 5 x 6, 6 x 6, 6 x 7 ... 15 x 16}, com m e n variando em passos de 1. O valor<br />

de p varia no intervalo de 20% até 80% em passos de 20%, ou seja, são atribuí<strong>dos</strong><br />

a p os valores 20%, 40%, 60% e 80%, o valor de R varia de 1 a 10 em passos de 1.<br />

6.2.1.<br />

Análise da Influência do P2PDP na Carga Média da MANET<br />

A carga média decorrente do tráfego de mensagens de resposta, foi medida<br />

calculando-se, <strong>para</strong> cada cenário, a média do número total de transmissões de<br />

pacotes relativos a essas mensagens. Para essa métrica, foi feita uma com<strong>para</strong>ção<br />

entre dois protocolos de descoberta de serviços simples, os quais tiveram o seu<br />

comportamento reproduzido através de scripts ns-2, um baseado puramente em<br />

requisições por broadcast e respostas por unicast (chamado, aqui, de “UCast”) e o<br />

protocolo P2PDP, baseado em requisições e respostas por broadcast,<br />

incorporando o mecanismo SbV no encaminhamento de respostas. Em ambos os<br />

protocolos, não há o emprego de anúncios de serviços. Os gráficos das<br />

Figuras 41, 42, 43 e 44 ilustram os resulta<strong>dos</strong> das medições do volume de<br />

mensagens de resposta, em função do número de dispositivos na MANET, <strong>para</strong><br />

diferentes percentuais de dispositivos respondentes; as barras verticais indicam os<br />

níveis de confiança. É possível observar, nesses gráficos, que através do<br />

mecanismo SbV obtém-se uma redução crescente no número total de<br />

transmissões, <strong>para</strong> um número crescente de dispositivos na MANET, quando<br />

com<strong>para</strong>do, nas mesmas condições, ao comportamento do protocolo UCast. Podese<br />

constatar resulta<strong>dos</strong> ainda mais acentua<strong>dos</strong> de supressão quando se aumenta o<br />

percentual de dispositivos (p) com interesse em colaborar na provisão de serviços.


Avaliação de Desempenho 169<br />

Esses resulta<strong>dos</strong> indicam uma boa escalabilidade <strong>para</strong> protocolos que adotam o<br />

mecanismo SbV no tratamento de respostas, como no P2PDP.<br />

Como esperado, a adoção do mecanismo de supressão por vizinhança reduz<br />

consideravelmente o número total de transmissões, se com<strong>para</strong>do ao protocolo<br />

UCast. Como é ilustrado na Tabela 7, <strong>para</strong> um número máximo de respostas (R)<br />

igual a 10, o uso do mecanismo SbV reduz em média em até 2,77 vezes o número<br />

total de transmissões na rede; essa redução chega a 14,24 quando o número<br />

máximo de respostas (R) é configurado <strong>para</strong> 1. Fazendo a mesma com<strong>para</strong>ção em<br />

relação ao percentual de colaboradores ativos (p), verifica-se que <strong>para</strong> p=20% o<br />

uso do mecanismo SbV reduz em média em até 12,08 vezes o número total de<br />

transmissões na rede; essa redução chega a 24,60 quando o percentual de<br />

colaboradores ativos (p) cresce <strong>para</strong> 80%. Através da observação direta desses<br />

resulta<strong>dos</strong>, constata-se que o aumento na densidade do número de colaboradores<br />

ativos (p) influencia diretamente no aumento do volume de da<strong>dos</strong> gerado na rede,<br />

em função da transmissão de respostas por broadcast na rede. Com a utilização do<br />

mecanismo SbV é possível verificar que quanto maior a densidade de<br />

colaboradores ativos, mais drasticamente esse volume de da<strong>dos</strong> é reduzido.<br />

Tabela 7 – Número total de transmissões de pacotes.<br />

p (%) SbV R=1 SbV R=2 SbV R=4 SbV R=6 SbV R=8 SbV R=10 UCast<br />

20 36 74 134 173 201 223 368<br />

40 59 99 178 242 291 331 737<br />

60 76 119 200 280 343 396 1093<br />

80 93 135 217 308 382 439 1467<br />

Considerando-se um cenário de grade móvel realista, o número de<br />

dispositivos pode variar da casa das dezenas – estudantes em uma sala de aula – a<br />

centenas – pessoas em um aeroporto aguardando os seus vôos ou mesmo<br />

participantes de uma conferência. De acordo com os resulta<strong>dos</strong> obti<strong>dos</strong> em<br />

pesquisas relacionadas à colaboração em sistemas P2P, uma parcela significativa<br />

<strong>dos</strong> usuários não contribui com recursos na comunidade. Segundo os resulta<strong>dos</strong><br />

obti<strong>dos</strong> em [Saroiu et al. 2002], no Gnutella [Gnutella 2005] cerca de 25% <strong>dos</strong><br />

dispositivos atuam exclusivamente como consumidores de recursos e serviços; no<br />

Napster [Napster 2005] esse número varia de 20% a 40%. Considerando-se a<br />

ocorrência de números similares em uma grade móvel <strong>para</strong> aplicações de<br />

compartilhamento de arquivos, infere-se que em média 72% <strong>dos</strong> dispositivos


Avaliação de Desempenho 170<br />

atuarão como colaboradores ativos. Fazendo uma estimativa baseada nos<br />

resulta<strong>dos</strong> mostra<strong>dos</strong> na Tabela 7, o uso do mecanismo SbV reduz em até 23,57<br />

vezes o número total de transmissões na rede <strong>para</strong> p = 72%.<br />

Com relação ao número de dispositivos na rede (N), é possível observar que,<br />

no mecanismo SbV, o aumento do número de transmissões acontece de forma<br />

suave, proporcionalmente ao aumento de colaboradores ativos (p). O número total<br />

de transmissões de pacotes de da<strong>dos</strong> na rede está diretamente relacionado aos<br />

valores de N e p, ou seja, quanto maior o número de colaboradores ativos ( N × p )<br />

é natural que haja um aumento proporcional no número de respostas trafegando na<br />

rede. Ainda em relação ao mecanismo SbV, o crescimento do número de total de<br />

transmissões é controlado pela supressão de respostas desnecessárias, que são<br />

retiradas da rede antes de chegar ao seu destino. Como a supressão é feita<br />

levando-se em consideração o número máximo de respostas (R) solicitadas na<br />

requisição de descoberta, quanto menor for o valor de R maior será o número de<br />

supressões, o que é atestado com<strong>para</strong>ndo-se os valores obti<strong>dos</strong> <strong>para</strong> R=1 e R=9<br />

nos gráficos reproduzi<strong>dos</strong> nas Figuras 41, 42, 43 e 44.<br />

Figura 41 – Carga na MANET <strong>para</strong> 20% de colaboradores ativos (p).


Avaliação de Desempenho 171<br />

Figura 42 – Carga na MANET <strong>para</strong> 40% de colaboradores ativos (p).<br />

Figura 43 – Carga na MANET <strong>para</strong> 60% de colaboradores ativos (p).


Avaliação de Desempenho 172<br />

Figura 44 – Carga na MANET <strong>para</strong> 80% de colaboradores ativos (p).<br />

É importante ressaltar que a com<strong>para</strong>ção do protocolo P2PDP com<br />

protocolos que adotam um mecanismo de descoberta baseado no encaminhamento<br />

de anúncios periódicos de serviços – quer seja exclusivamente proativa ou híbrida<br />

– não ofereceria um nível de com<strong>para</strong>ção coerente. Isso se deve ao fato do<br />

protocolo P2PDP adotar uma abordagem de descoberta reativa – baseada no envio<br />

de requisições de serviço sob demanda –, tendo sido desenvolvido<br />

especificamente <strong>para</strong> oferecer suporte à descoberta de recursos dinâmicos em uma<br />

grade móvel ad hoc, em conformidade com os requisitos defini<strong>dos</strong> na Seção 1.2.<br />

Neste trabalho, optou-se por colocar o desempenho do P2PDP sob perspectiva,<br />

com<strong>para</strong>ndo-o com um protocolo de descoberta de recursos reativo, baseado<br />

puramente no uso de broadcast <strong>para</strong> difusão das requisições e no encaminhamento<br />

das respostas em unicast até o nó que originou a requisição (UCast). Essa<br />

com<strong>para</strong>ção se mostra válida tendo em vista os resulta<strong>dos</strong> apresenta<strong>dos</strong> na<br />

avaliação com<strong>para</strong>tiva de desempenho <strong>dos</strong> protocolos proativos Konark-gossip<br />

[Lee et al. 2003] e Allia [Ratsimor et al. 2004] com um protocolo baseado no<br />

mecanismo de descoberta reativo. A especificação do protocolo UCast definida<br />

nesta tese é similar a do protocolo reativo utilizado como base de com<strong>para</strong>ção<br />

nesses trabalhos.; esse protocolo será denominado genericamente como UCast<br />

desse ponto em diante. Os resulta<strong>dos</strong> obti<strong>dos</strong> mostram que o UCast apresenta<br />

desempenho satisfatório em com<strong>para</strong>ção com as abordagens proativas. Os


Avaliação de Desempenho 173<br />

gráficos apresenta<strong>dos</strong> em [Lee et al. 2003] mostram que o tempo de resposta do<br />

protocolo UCast é consideravelmente maior do que o das abordagens proativas,<br />

especialmente quando o diâmetro da requisição é configurado <strong>para</strong> menos de<br />

quatro saltos. Entretanto, o volume de tráfego gerado pelo protocolo UCast é bem<br />

menor do que a maioria <strong>dos</strong> protocolos reativos analisa<strong>dos</strong>, superando, inclusive,<br />

o protocolo que apresentou o melhor desempenho entre os proativos. No gráfico<br />

apresentado em [Lee et al. 2003], reproduzido aqui na Figura 45, a eficiência da<br />

descoberta de serviços é representada considerando como critério de avaliação o<br />

tempo de resposta da solicitação de descoberta pelo volume de tráfego de da<strong>dos</strong><br />

gerado pelas mensagens de descoberta – anúncio, requisição e resposta. Através<br />

da análise desse gráfico, pode-se observar que o protocolo UCast – identificado<br />

como “broadcast” na Figura 45 – apresentou o desempenho mais aproximado do<br />

protocolo Konark-gossip, que foi o que obteve a melhor avaliação. Considerando<br />

ainda a eficiência da descoberta de serviços, o protocolo UCast supera o<br />

desempenho do protocolo Konark-gossip quando o diâmetro da requisição é<br />

configurado <strong>para</strong> zero, ou seja, quando a requisição é entregue apenas aos<br />

vizinhos diretos do nó que a originou. No gráfico da Figura 45 o tempo de<br />

resposta é dado em segun<strong>dos</strong> e o volume do tráfego de da<strong>dos</strong> é dado em bytes; a<br />

legenda TTL (Time-To-Live) representa o número de saltos através do qual uma<br />

requisição de descoberta é encaminhada.<br />

Figura 45 – Eficiência da descoberta de serviços (extraída de [Lee et al. 2003]).<br />

Ao final dessa discussão, é possível concluir que como o uso do algoritmo<br />

SbV reduz consideravelmente o tráfego de da<strong>dos</strong> gerado pelo protocolo UCast, o


Avaliação de Desempenho 174<br />

protocolo P2PDP tem o potencial de apresentar um resultado superior, em relação<br />

a esse mesmo parâmetro, se com<strong>para</strong>do aos protocolos proativos Allia e Konarkgossip.<br />

Para a obtenção de um resultado mais preciso é necessário que,<br />

futuramente, seja realizada uma análise com<strong>para</strong>tiva de desempenho do protocolo<br />

P2PDP com os protocolos proativos em questão.<br />

6.2.2.<br />

Análise do Mecanismo de Supressão de Respostas do P2PDP<br />

O diâmetro de supressão das mensagens de resposta mede a distância – em<br />

número de saltos – <strong>dos</strong> dispositivos onde ocorrem as supressões até o dispositivo<br />

requisitante. Essa métrica permite avaliar a distribuição da ocorrência de<br />

supressões, nos dispositivos na MANET, propiciada pelo mecanismo SbV, graças<br />

ao não encaminhamento das mensagens de resposta excedentes na rede.<br />

Como pode ser observado nos gráficos reproduzi<strong>dos</strong> nas Figuras 46, 47<br />

e 48, o número médio de supressões mantém uma taxa de crescimento<br />

proporcional em função do aumento do diâmetro de supressão <strong>para</strong> to<strong>dos</strong> os<br />

percentuais de colaboradores ativos (p). Por esse motivo, sem incorrer em prejuízo<br />

<strong>para</strong> a análise <strong>dos</strong> resulta<strong>dos</strong> relativos à métrica diâmetro de supressão, apenas os<br />

gráficos referentes aos valores p =20% e p = 60% serão apresenta<strong>dos</strong>. É<br />

importante mencionar que nos gráficos reproduzi<strong>dos</strong> abaixo, o número de<br />

respostas solicitadas (R) é igual a 4, que corresponde a uma amostra representativa<br />

<strong>para</strong> os demais valores de R.


Avaliação de Desempenho 175<br />

Figura 46 – Número médio de supressões <strong>para</strong> R=4 e N=60.<br />

Figura 47 – Número médio de supressões <strong>para</strong> R=4 e N=120.


Avaliação de Desempenho 176<br />

Figura 48 – Número médio de supressões <strong>para</strong> R=4 e N=240.<br />

Os gráficos reproduzi<strong>dos</strong> nas Figuras 49, 50 e 51 ilustram os resulta<strong>dos</strong> das<br />

medições do diâmetro das supressões, <strong>para</strong> diferentes números de dispositivos e<br />

percentuais de dispositivos respondentes na MANET, sob a forma de uma<br />

distribuição cumulativa de probabilidades. Para ilustrar a distribuição das<br />

supressões pela MANET, os resulta<strong>dos</strong> das medições são contrasta<strong>dos</strong> com uma<br />

função de distribuição cumulativa uniforme (FDC), que é representada, no<br />

gráfico, pela linha contínua na diagonal. Essa abordagem se mostra como uma boa<br />

alternativa <strong>para</strong> apresentar os resulta<strong>dos</strong> obti<strong>dos</strong> pois permite verificar o quanto a<br />

função de distribuição relativa ao diâmetro de supressão se afasta da FDC<br />

uniforme. Quanto mais próxima a função de distribuição do diâmetro de supressão<br />

se apresenta da FDC uniforme, isso significa que, a responsabilidade pela<br />

supressão é espalhada pelos vários dispositivos da grade móvel, não provocando a<br />

sobrecarga de dispositivos específicos.<br />

Nos gráficos apresenta<strong>dos</strong>, pode-se observar uma melhor distribuição das<br />

supressões com o aumento no número de dispositivos (N) e percentuais de<br />

dispositivos respondentes (p) na rede, o que novamente indica a escalabilidade da<br />

estratégia proposta. É possível observar também, que conforme o número de<br />

respostas esperadas (R) aumenta, a função de distribuição do diâmetro de<br />

supressão se afasta proporcionalmente da FDC uniforme, o que é esperado, já que<br />

como o número de respostas que devem ser entregues ao iniciador aumenta é<br />

natural que a ocorrência de supressões diminua.


Avaliação de Desempenho 177<br />

Tabela 8 – Número médio de supressões <strong>para</strong> p=20 e p=60 com N=60.<br />

Diâmetro<br />

de<br />

SbV R=1 SbV R=2 SbV R=4 SbV R=6 SbV R=8 SbV R=10<br />

Supressão 20% 60% 20% 60% 20% 60% 20% 60% 20% 60% 20% 60%<br />

1 1,50 4,00 1,50 3,90 1,60 3,91 1,44 4,00 1,00 4,16 0,75 3,90<br />

2 1,90 5,80 2,70 7,20 3,10 8,89 2,60 9,72 2,20 10,28 1,65 10,85<br />

3 3,10 8,70 2,80 8,20 1,69 8,32 1,20 8,08 0,84 7,48 0,50 6,40<br />

4 2,40 7,50 1,90 8,00 1,15 6,61 0,60 4,96 0,32 4,00 0,25 2,80<br />

5 1,90 6,40 1,40 5,10 0,49 3,82 0,24 2,40 0,16 1,44 0,10 0,85<br />

6 1,00 3,10 0,70 3,10 0,19 1,60 0,08 0,64 0,08 0,24 0,00 0,15<br />

7 0,50 1,80 0,10 0,60 0,04 0,22 0,00 0,08 0,00 0,00 0,00 0,00<br />

( a ) Percentual de colaboradores ativos (p) igual a 20%<br />

( b ) Percentual de colaboradores ativos (p) igual a 60%<br />

Figura 49 – Distribuição das supressões de mensagens de resposta <strong>para</strong> N=60.


Avaliação de Desempenho 178<br />

Tabela 9 – Número médio de supressões <strong>para</strong> p=20 e p=60 com N=120.<br />

Diâmetro<br />

de<br />

SbV R=1 SbV R=2 SbV R=4 SbV R=6 SbV R=8 SbV R=10<br />

Supressão 20% 60% 20% 60% 20% 60% 20% 60% 20% 60% 20% 60%<br />

1 1,62 3,48 1,60 3,68 1,75 4,16 2,00 4,50 1,80 4,16 1,44 3,72<br />

2 2,34 5,58 3,00 6,60 4,60 8,36 5,30 10,85 5,40 12,52 5,44 14,28<br />

3 3,06 9,24 3,72 8,80 3,90 10,48 3,65 11,00 3,28 11,64 2,72 11,60<br />

4 3,78 9,72 3,76 12,08 3,45 11,8 3,05 12,30 2,20 11,32 1,48 10,52<br />

5 4,02 13,14 3,68 11,60 2,70 11,64 2,00 10,00 1,32 9,56 0,80 9,00<br />

6 3,54 10,00 3,00 10,68 1,85 8,76 1,10 8,15 0,68 7,28 0,32 6,24<br />

7 2,94 9,18 1,96 7,44 1,00 6,60 0,60 5,55 0,28 3,72 0,08 2,00<br />

8 1,80 5,00 1,12 5,44 0,60 4,00 0,25 1,90 0,16 0,76 0,00 0,16<br />

9 1,26 4,08 0,64 2,52 0,00 0,80 0,00 0,25 0,00 0,16 0,00 0,00<br />

10 0,24 0,84 0,00 0,32 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00<br />

( a ) Percentual de colaboradores ativos (p) igual a 20%<br />

( b ) Percentual de colaboradores ativos (p) igual a 60%<br />

Figura 50 – Distribuição das supressões de mensagens de resposta <strong>para</strong> N=120.


Avaliação de Desempenho 179<br />

Tabela 10 – Número médio de supressões <strong>para</strong> p=40 e p=80 com N=240.<br />

Diâmetro<br />

de<br />

SbV R=1 SbV R=2 SbV R=4 SbV R=6 SbV R=8 SbV R=10<br />

Supressão 40% 80% 40% 80% 40% 80% 40% 80% 40% 80% 40% 80%<br />

1 1,68 2,88 1,50 3,65 1,90 4,00 2,10 4,50 2,00 4,15 2,00 3,90<br />

2 2,40 7,20 3,35 7,25 5,20 8,90 5,90 11,00 7,00 13,10 7,45 15,75<br />

3 2,96 7,36 3,90 9,00 4,40 10,55 5,30 12,00 4,90 13,35 5,00 13,60<br />

4 4,16 12,40 4,40 11,7 4,80 13,00 4,40 14,00 4,45 14,20 4,20 14,40<br />

5 4,56 11,92 4,80 13,45 4,50 14,45 4,15 14,45 3,50 14,10 3,15 13,80<br />

6 5,36 16,00 4,80 15,42 4,10 14,15 3,20 13,35 2,40 12,70 1,80 11,50<br />

7 4,88 13,00 4,25 13,32 3,00 12,40 2,15 10,70 1,75 10,25 1,30 9,95<br />

8 3,60 12,64 3,25 11,34 2,15 10,25 1,35 8,90 0,85 7,70 0,55 6,80<br />

9 3,12 8,72 2,35 11,28 1,30 7,40 0,60 6,10 0,35 4,95 0,25 3,70<br />

10 2,64 7,84 1,60 8,46 0,70 4,85 0,30 3,40 0,20 2,05 0,20 1,10<br />

11 1,36 4,16 0,90 6,42 0,35 2,50 0,20 0,95 0,10 0,35 0,20 0,30<br />

12 0,88 2,80 0,40 4,02 0,20 0,45 0,10 0,15 0,00 0,15 0,00 0,00<br />

13 0,00 0,00 0,00 1,50 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00<br />

( a ) Percentual de colaboradores ativos (p) igual a 20%<br />

( b ) Percentual de colaboradores ativos (p) igual a 60%<br />

Figura 51 – Distribuição das supressões de mensagens de resposta <strong>para</strong> N=240.


Avaliação de Desempenho 180<br />

Através <strong>dos</strong> resulta<strong>dos</strong> obti<strong>dos</strong>, sumaria<strong>dos</strong> nas Tabelas 8, 9 e 10, podemos<br />

observar que conforme o número de respostas esperadas aumenta (R),<br />

independentemente do número de dispositivos da rede (N), verifica-se que a<br />

ocorrência de supressões se aproxima do dispositivo requisitante, apresentando<br />

uma freqüência mais intensa nos dispositivos a uma distância de 2 a 4 saltos do<br />

iniciador. Esse comportamento é esperado pois dado que o número de respostas<br />

solicitadas aumenta, menor é a ocorrência de supressões nos dispositivos mais<br />

distantes, pois eles “escutarão” um número menor de mensagens. Os dispositivos<br />

mais próximos do iniciador “escutam” mais mensagens, realizando um número<br />

maior de supressões, que ocorrem quando o número de respostas escutadas por<br />

esses dispositivos ultrapassam o número de respostas solicitadas na requisição.<br />

6.2.3.<br />

Visão Geral da Análise de Escalabilidade<br />

Nesta seção, foram apresenta<strong>dos</strong> os resulta<strong>dos</strong> das simulações no ns-2, com o<br />

protocolo P2PDP, tendo, como foco, o mecanismo de supressão de mensagens de<br />

resposta por vizinhança (SbV), em uma topologia de grade sem fio fixa. Em<br />

particular, mostrou-se que o mecanismo de supressão por vizinhança,<br />

implementado no P2PDP, possibilita uma redução significativa na sobrecarga de<br />

tráfego de comunicação associado ao processo de descoberta. Além disso, o<br />

mecanismo SbV distribui a supressão de respostas entre os dispositivos da rede,<br />

reduzindo a ocorrência de supressões à medida que as respostas vão se<br />

aproximando do dispositivo requisitante. O uso do protocolo P2PDP, em conjunto<br />

com o mecanismo SbV, mostrou-se eficaz em controlar o volume de respostas<br />

recebidas pelo requisitante do serviço, sem comprometer a qualidade das respostas<br />

recebidas no protocolo P2PDP – isto é, favorecendo as respostas <strong>dos</strong><br />

colaboradores mais aptos. É importante ressaltar que, no P2PDP, a seleção das<br />

mensagens de resposta de melhor qualidade é implementado de forma distribuída,<br />

nos nós colaboradores, através do retardo programado introduzido no envio dessas<br />

respostas. O retardo é calculado de modo a ser inversamente proporcional à<br />

qualidade das respostas, que é medida em função da disponibilidade <strong>dos</strong> recursos<br />

do dispositivo que são necessários <strong>para</strong> a provisão do serviço solicitado. Ou seja,<br />

as respostas de melhor qualidade são enviadas primeiro, favorecendo assim a<br />

supressão posterior das respostas de pior qualidade pelo mecanismo SbV,


Avaliação de Desempenho 181<br />

consideradas excedentes. Pode-se observar, ainda, que o processamento adicional,<br />

gerado pelo mecanismo de supressão, é distribuído uniformemente entre os<br />

dispositivos da rede, evitando que os vizinhos diretos do dispositivo requisitante<br />

sejam sobrecarrega<strong>dos</strong>, promovendo um balanceamento indireto no consumo de<br />

bateria.<br />

6.3.<br />

Controle da Ocorrência de Colisões<br />

É importante ressaltar que, apesar do uso de comunicação por broadcast tanto no<br />

encaminhamento das requisições de descoberta quanto no encaminhamento das<br />

respostas a essas requisições, a ocorrência de colisões provocadas pelo tráfego de<br />

mensagens de descoberta do protocolo P2PDP manteve-se estável nos<br />

experimentos realiza<strong>dos</strong>. Esse resultado foi verificado empiricamente pela<br />

observação <strong>dos</strong> resulta<strong>dos</strong> obti<strong>dos</strong> nos ambientes de teste descritos na Seção 5.4.<br />

Nos ambientes de teste reais, descritos na Subseção 5.4.1, os resulta<strong>dos</strong> foram<br />

obti<strong>dos</strong> pela com<strong>para</strong>ção entre o número de respostas solicitadas e o número de<br />

respostas que foram de fato entregues ao dispositivo que originou a requisição. Já<br />

no ambiente de teste simulado, descrito na Subseção 5.4.2, os resulta<strong>dos</strong> foram<br />

obti<strong>dos</strong> pela análise <strong>dos</strong> arquivos de trace das simulações realizadas no NCTUns.<br />

Nos primeiros experimentos com o protocolo P2PDP, foi possível verificar a<br />

ocorrência de um número considerável de colisões. A partir da utilização do<br />

parâmetro requestDelay (Seção 4.5) e do mecanismo de retardo programado<br />

(Seção 4.7), aplica<strong>dos</strong>, respectivamente, no encaminhamento das requisições de<br />

descoberta e das mensagens de resposta a essas requisições, foi introduzido um<br />

assincronismo na transmissão das mensagens de descoberta do protocolo P2PDP.<br />

Como resultado, observou-se que o número de colisões foi reduzido<br />

consideravelmente, passando a não interferir no resultado <strong>dos</strong> experimentos<br />

realiza<strong>dos</strong>. Entretanto, deve-se deixar claro que, apesar da importância <strong>dos</strong><br />

resulta<strong>dos</strong> obti<strong>dos</strong> empiricamente, esses resulta<strong>dos</strong> precisam ser investiga<strong>dos</strong> em<br />

mais detalhes através da realização de simulações.<br />

Nos experimentos realiza<strong>dos</strong>, o retardo programado foi calculado através da<br />

Equação (2), utilizando-se o algoritmo DR. Por sua vez, o parâmetro


Avaliação de Desempenho 182<br />

requestDelay foi configurado em cada retransmissão <strong>para</strong> um valor aleatório,<br />

em milisegun<strong>dos</strong>, no intervalo [0, 30].<br />

6.4.<br />

Balanceamento de Carga<br />

<strong>Um</strong>a bateria de testes foi realizada com o intuito de estimar a capacidade de<br />

balanceamento de carga do protocolo P2PDP obtidas em função do mecanismo<br />

de seleção, que promove uma distribuição uniforme das requisições de serviço<br />

entre os dispositivos da rede mais aptos a atendê-las. Durante a execução de um<br />

serviço pode ocorrer uma redução na sua qualidade, que pode ser provocada por<br />

variações na disponibilidade <strong>dos</strong> recursos disponíveis no dispositivo executando o<br />

serviço, introduzindo tempos de resposta eleva<strong>dos</strong>. A implementação do<br />

balanceamento de carga no P2PDP foca na distribuição uniforme da<br />

responsabilidade de execução das tarefas da grade, o que se faz em função da<br />

disponibilidade de recursos <strong>dos</strong> nós. Ao receber uma requisição de descoberta, os<br />

dispositivos da grade apresentam níveis diferencia<strong>dos</strong> de disponibilidade de<br />

recursos, o que faz com que os retar<strong>dos</strong> no envio das respostas à requisição sejam<br />

configura<strong>dos</strong> de forma distinta em cada nó. Esse comportamento do protocolo<br />

P2PDP oferece implicitamente um mecanismo de balanceamento de carga<br />

dinâmico, baseado na auto-avaliação da disponibilidade de recursos em cada<br />

dispositivo, e com<strong>para</strong>ções com as respostas provenientes <strong>dos</strong> demais dispositivos<br />

da grade, que pode até mesmo provocar a supressão do envio da sua própria<br />

resposta.<br />

Para ilustrar o comportamento do mecanismo de balanceamento de carga do<br />

protocolo P2PDP, considere um dispositivo atuando como iniciador e dois<br />

dispositivos (C 1 e C 2 ) atuando como colaboradores. O iniciador espera receber<br />

apenas uma resposta <strong>para</strong> cada requisição. Ao receber a primeira requisição, o<br />

nível de disponibilidade de recursos do colaborador C 1 é superior ao de C 2 , em<br />

função do mecanismo de retardo no envio das respostas, a resposta de C 1 é<br />

privilegiada e esse dispositivo passa a executar o serviço. Enquanto C 1 está<br />

executando o serviço, o iniciador envia uma nova requisição. Ao receber a nova<br />

requisição, os recursos disponíveis em C 1 estão comprometi<strong>dos</strong> com a execução<br />

da primeira requisição, nesse intervalo o colaborador C 2 torna-se mais apto. Como


Avaliação de Desempenho 183<br />

conseqüência, C 1 gera um retardo de envio maior do que C 2 , que tem a sua<br />

resposta privilegiada e é então encarregado de atender a segunda requisição. Essa<br />

situação se repete, o que faz com que a carga gerada pelo processamento das<br />

requisições seja distribuída uniformemente entre os colaboradores mais aptos,<br />

com os dispositivos se revezando na execução de serviços na grade móvel.<br />

Os experimentos foram realiza<strong>dos</strong> em uma rede de teste constituída por três<br />

máquinas Linux e uma máquina Windows, todas executando a aplicação M3<br />

(Matrix-Matrix Multiplication). Para quantificar o nível de balanceamento de<br />

carga obtido com a utilização do protocolo P2PDP, o consumo <strong>dos</strong> recursos CPU<br />

e memória foram monitora<strong>dos</strong> durante as baterias de execução realizadas na rede<br />

de teste. As variações no consumo de memória durante as baterias de execução<br />

não foram significativas, por esse motivo, a análise <strong>dos</strong> resulta<strong>dos</strong> aqui<br />

apresenta<strong>dos</strong> contempla apenas o recurso CPU. Para produzir uma carga<br />

cumulativa nos nós colaboradores, foi adicionada uma espera ocupada ao código<br />

original da aplicação M3 que foi descrita na Seção 5.4. Em função dessa<br />

modificação, a aplicação processa um laço vazio de um milhão de iterações após o<br />

cálculo da matriz-linha resultado. Essa carga cumulativa foi criada <strong>para</strong> forçar os<br />

colaboradores a atingirem níveis próximos a indisponibilidade devido ao alto<br />

percentual de CPU sendo utilizada, chegando a picos de 100% de utilização.<br />

Quando um dado colaborador executa a aplicação M3 ele gera um retardo de<br />

envio de resposta bem maior em relação aos colaboradores que não estão<br />

executando a mesma aplicação, o que fará com que a sua resposta seja preterida<br />

em favor das respostas geradas pelos outros colaboradores. As requisições são<br />

geradas, pela aplicação M3, em intervalos regulares de 30 s e o tempo máximo de<br />

espera (maxReplyDelay), por cada resposta, é configurado <strong>para</strong> 10 s. Esses<br />

valores foram escolhi<strong>dos</strong> pois o tempo de execução média de cada tarefa gerada<br />

pela aplicação M3 é de 20s e o tempo no qual o processo de descoberta deve ser<br />

concluído considerado mínimo é de 10s [Hermann et al. 2001]. Em função desses<br />

valores, espera-se no intervalo de 30s a requisição de descoberta seja respondida e<br />

a aplicação M3 executada no colaborador selecionado. Para esses experimentos<br />

foram realizadas trinta baterias de teste, com cada uma gerando trinta requisições<br />

de serviço M3. Os resulta<strong>dos</strong> obti<strong>dos</strong> são ilustra<strong>dos</strong> através do gráfico na<br />

Figura 52.


Avaliação de Desempenho 184<br />

Figura 52 – Carga cumulativa do uso da CPU nos nós colaboradores.<br />

O gráfico reproduzido na Figura 52 mostra o compartilhamento da carga de<br />

CPU <strong>para</strong> cada nó, durante um experimento específico, que reflete o<br />

comportamento obtido em todas as baterias de teste executadas. O<br />

compartilhamento de CPU diz respeito a distribuição percentual de utilização da<br />

CPU em cada um <strong>dos</strong> dispositivos durante o processamento das requisições, que<br />

inclui as etapas de descoberta e utilização de recursos. É possível observar no<br />

gráfico da Figura 52 que os nós colaboradores têm a sua carga de CPU balanceada<br />

após um estado inicial de calibragem do mecanismo de seleção que corresponde<br />

ao período em que as três primeiras requisições são atendidas; o protocolo P2PDP<br />

proporciona o balanceamento de carga, entre os nós colaboradores, a medida que<br />

o número de requisições cresce. Como era de se esperar, a utilização de CPU é<br />

distribuída de modo uniforme entre os três dispositivos colaboradores, que se<br />

alternam na execução das requisições de serviço M3. A análise <strong>dos</strong> arquivos de<br />

log de cada dispositivo, nos quais foram registradas as variações na<br />

disponibilidade de CPU, reforça os estu<strong>dos</strong> feitos em [Bolosky et al. 2000], onde a<br />

distribuição da utilização da carga de CPU é caracterizada como bimodal, ou seja,<br />

os seus valores alternam entre perío<strong>dos</strong> de utilização total e outros próximos à<br />

inatividade.


Avaliação de Desempenho 185<br />

6.5.<br />

Visão Geral <strong>dos</strong> Resulta<strong>dos</strong> Obti<strong>dos</strong><br />

O desempenho do protocolo de descoberta P2PDP foi avaliado em cenários<br />

estáticos, utilizando-se duas estratégias distintas: simulações em uma grade sem<br />

fio fixa no ns-2 e baterias de execução de aplicações MoGrid em uma rede de<br />

teste. Para a avaliação <strong>dos</strong> experimentos, algumas métricas foram definidas:<br />

número total de transmissões de mensagens de resposta do protocolo P2PDP,<br />

diâmetro de supressão de mensagens de resposta por vizinhança e balanceamento<br />

de carga em função do mecanismo de seleção de respostas que,<br />

conseqüentemente, privilegia as respostas <strong>dos</strong> colaboradores mais aptos. Para<br />

medir a escalabilidade do protocolo, foram gera<strong>dos</strong> cenários de simulação em<br />

função da variação de diferentes parâmetros, como o número de dispositivos na<br />

rede, a densidade de dispositivos, a distância média entre os dispositivos, o<br />

alcance de transmissão, o percentual de dispositivos atuando no modo de<br />

colaboração ativa e o número máximo de respostas esperado.<br />

Os resulta<strong>dos</strong> obti<strong>dos</strong> foram satisfatórios, atestando a adequabilidade do<br />

protocolo P2PDP frente às exigências apontadas no Capítulo 1 como requisitos<br />

necessários a um protocolo de descoberta de recursos <strong>para</strong> grades móveis ad hoc,<br />

a saber: (i) reduzir o impacto do problema da implosão de mensagens de resposta<br />

a uma requisição, (ii) minimizar a ocorrência de colisões provocadas pelo<br />

aumento do tráfego de da<strong>dos</strong> no enlace sem fio – em virtude da transmissão de<br />

mensagens do protocolo de descoberta – e (iii) realizar uma distribuição uniforme<br />

das requisições de serviço, promovendo um balanceamento de carga implícito<br />

através da seleção <strong>dos</strong> dispositivos mais aptos.<br />

6.6.<br />

Avaliação do P2PDP na Presença de Mobilidade<br />

Para avaliar a implementação do protocolo de descoberta P2PDP na presença de<br />

mobilidade, foram defini<strong>dos</strong> cenários dinâmicos, garantindo uma topologia<br />

conexa no instante “0” da simulação.


Avaliação de Desempenho 186<br />

6.6.1.<br />

Composição <strong>dos</strong> Cenários<br />

Os cenários móveis foram compostos por 40 nós dispostos em uma área de<br />

500 x 500 m 2 , onde a posição de cada nó é definida por um script, criado<br />

especificamente <strong>para</strong> esse propósito. O primeiro nó é inserido na coordenada<br />

central da área de simulação. O nó seguinte é inserido em uma coordenada<br />

compreendida dentro do raio de transmissão do primeiro nó. No processo de<br />

criação <strong>dos</strong> nós subseqüentes, um nó é escolhido aleatoriamente entre os nós já<br />

existentes de modo a servir como referência <strong>para</strong> o posicionamento do novo nó,<br />

esse nó é denominado “nó base”. A aleatoriedade na escolha do nó base é<br />

influenciada pelo parâmetro de seleção, que indica quantas vezes um mesmo nó<br />

pode ser escolhido como nó base. O valor desse parâmetro foi deduzido<br />

empiricamente, sendo configurado como 3, por ser esse o valor que apresentou a<br />

melhor distribuição espacial <strong>dos</strong> nós.<br />

<strong>Um</strong> novo nó é inserido na vizinhança do nó base escolhido a uma distância<br />

compreendida entre 0,5 e 0,9 do raio de transmissão desse nó. O valor do raio de<br />

transmissão é configurado como 100 m <strong>para</strong> to<strong>dos</strong> os nós. É importante destacar<br />

que com a utilização do script <strong>para</strong> o posicionamento inicial <strong>dos</strong> nós, o parâmetro<br />

densidade não é mais configurável, sendo determinado de forma variável em<br />

função da escolha do nó base.<br />

A Figura 53 ilustra a topologia inicial de um <strong>dos</strong> cenários de simulação<br />

gera<strong>dos</strong> <strong>para</strong> a avaliação do protocolo P2PDP.


Avaliação de Desempenho 187<br />

Figura 53 – Exemplo de distribuição inicial <strong>dos</strong> dispositivos em um cenário móvel.<br />

6.6.2.<br />

Métrica de Avaliação<br />

Os experimentos com mobilidade visaram, primordialmente, a avaliação da<br />

métrica eficiência da descoberta, que consiste no percentual de vezes, em cada<br />

rodada, em que o iniciador obteve exatamente o número desejado de respostas à<br />

requisição de descoberta. Esses resulta<strong>dos</strong> foram obti<strong>dos</strong> utilizando-se proporção<br />

amostral. A Tabela 11 apresenta os valores <strong>dos</strong> parâmetros de simulação usa<strong>dos</strong><br />

na constituição das rodadas.<br />

Tabela 11 – Parâmetros de simulação <strong>dos</strong> cenários com mobilidade.<br />

Parâmetro<br />

Valores<br />

Número de dispositivos (N) 40<br />

Distância média inicial entre dispositivos<br />

50 m ou 90 m<br />

Alcance da transmissão<br />

100 m<br />

Velocidade de deslocamento<br />

0 m/s a 8 m/s<br />

Pausa entre deslocamentos<br />

0 s<br />

Percentual de dispositivos colaboradores ativos (p) 25%<br />

Número de requisições 1<br />

Número máximo de respostas (R) 4


Avaliação de Desempenho 188<br />

Para avaliar a eficiência da descoberta utilizando-se o protocolo P2PDP em<br />

cenários que contemplam a mobilidade, a aplicação M3 (vide Seção 5.4) foi<br />

utilizada, sendo executada no simulador NCTUns, de modo similar ao que foi<br />

descrito na Subseção 5.4.2. Nos cenários de simulação, os dispositivos se<br />

deslocam de acordo com o modelo de mobilidade RWP (Random WayPoint),<br />

assumindo velocidades uniformes no intervalo de [0, 8] m/s, variando em passos<br />

de 1, sem pausas entre os deslocamentos. Cada cenário de simulação foi<br />

executado em cem rodadas, totalizando novecentas execuções. Em cada rodada<br />

um único iniciador foi criado, com 25% <strong>dos</strong> dispositivos móveis atuando como<br />

colaboradores ativos, ou seja, aptos a responder à requisição de descoberta. Esse<br />

percentual foi escolhido pois, segundo estu<strong>dos</strong> realiza<strong>dos</strong> com redes P2P – as<br />

quais, de forma similar às grades móveis, baseiam-se no conceito de colaboração<br />

através do compartilhamento de recursos –, apesar de cerca de 75% <strong>dos</strong><br />

dispositivos atuarem como colaboradores ativos, apenas 25% <strong>dos</strong> dispositivos são<br />

responsáveis por responder a 98% das requisições de descoberta<br />

[Hughes et al. 2005].<br />

6.6.3.<br />

Resulta<strong>dos</strong> Obti<strong>dos</strong><br />

Os resulta<strong>dos</strong> apresenta<strong>dos</strong> nesta seção correspondem a proporção amostral <strong>dos</strong><br />

resulta<strong>dos</strong> coleta<strong>dos</strong>, em um total de cem rodadas por cenário de simulação, com<br />

um nível de confiança de 95%. Em nossas simulações, apenas um dispositivo<br />

atuava como iniciador, efetuando uma única requisição de serviço em cada<br />

rodada. A Tabela 12 ilustra os resulta<strong>dos</strong> obti<strong>dos</strong> considerando-se a métrica<br />

eficiência da descoberta.<br />

Tabela 12 – Eficiência da descoberta em função da velocidade de deslocamento.<br />

Velocidade Eficiência da descoberta (%) Intervalo de confiança (%)<br />

0 92 ± 4,13<br />

1 79 ± 7,98<br />

2 58 ± 9,67<br />

3 44 ± 9,73<br />

4 31 ± 9,06<br />

5 24 ± 8,37<br />

6 28 ± 8,80<br />

7 26 ± 8,60<br />

8 15 ± 7,00


Avaliação de Desempenho 189<br />

Com relação aos resulta<strong>dos</strong> obti<strong>dos</strong>, de uma forma geral, é verificada uma<br />

redução da eficiência do protocolo de descoberta inversamente proporcional ao<br />

aumento da velocidade de deslocamento <strong>dos</strong> dispositivos. O protocolo P2PDP<br />

apresenta um bom desempenho <strong>para</strong> as velocidades de 0, 1 e 2 m/s, podendo ainda<br />

ser utilizado com as velocidades de 3 e 4 m/s. Com o aumento da velocidade de<br />

deslocamento <strong>dos</strong> dispositivos, a eficiência do protocolo é consideravelmente<br />

prejudicada. É possível observar um comportamento estatisticamente equivalente<br />

do protocolo P2PDP <strong>para</strong> as velocidades de 5, 6 e 7 m/s, onde o resultado se<br />

estabiliza em aproximadamente 20-30%, apresentando uma queda mais acentuada<br />

na eficiência da descoberta a partir da velocidade de 8 m/s. <strong>Um</strong>a hipótese possível<br />

é a de que esse comportamento ocorra em função da área utilizada pelos cenários<br />

de simulação (500 x 500 m 2 ). Em uma área restrita, como a utilizada nesses<br />

experimentos, mesmo com o deslocamento contínuo <strong>dos</strong> dispositivos, é esperado<br />

que a partir de uma dada velocidade, ao encontrar um obstáculo, os dispositivos<br />

sigam o caminho oposto, o que faz com que eles se cruzem com uma freqüência<br />

maior do que o esperado, apresentando um comportamento semelhante. Em uma<br />

área maior, os dispositivos tendem a se distanciar mais uns <strong>dos</strong> outros. Entretanto,<br />

<strong>para</strong> se fazer qualquer afirmação nesse sentido é necessário a realização de novas<br />

rodadas de simulação variando a área utilizada.<br />

O gráfico reproduzido na Figura 54 ilustra os resulta<strong>dos</strong> apresenta<strong>dos</strong> na<br />

Tabela 12. É importante destacar que o protocolo P2PDP foi concebido tendo<br />

como foco a mobilidade humana. Considerando a eficiência do protocolo de<br />

descoberta P2PDP, a sua utilização é recomendada <strong>para</strong> o perfil de mobilidade<br />

que se enquadra no intervalo entre as velocidades de [1, 4] m/s, cujos extremos<br />

caracterizam, respectivamente, uma pessoa caminhando lentamente e uma pessoa<br />

correndo.


Avaliação de Desempenho 190<br />

Figura 54 – Eficiência da descoberta: percentual de respostas recebidas em função do<br />

número de respostas solicitadas.<br />

Como se pode observar, <strong>para</strong> a velocidade de 0 m/s, ou seja, em cenários<br />

estáticos, o protocolo P2PDP não apresenta um percentual de eficiência da<br />

descoberta de 100%, isso se deve a fatores como a ocorrência de colisões, o<br />

retardo máximo tolerado na recepção das mensagens de resposta e a forma como<br />

os dispositivos estão distribuí<strong>dos</strong>. Dependendo do nível de dispersão <strong>dos</strong><br />

dispositivos, é normal que, em alguns casos, o posicionamento do iniciador no<br />

cenário de teste, que é definido de forma aleatória, influencie de forma negativa os<br />

resulta<strong>dos</strong> obti<strong>dos</strong>. Caso o iniciador se posicione em algum extremo da área<br />

utilizada na simulação (500 x 500 m 2 ), é possível que o tempo máximo de espera<br />

por respostas definido na requisição de serviço não seja atendido pelos<br />

colaboradores que se encontram nos extremos opostos da área de simulação, o que<br />

provocaria o descarte das mensagens desses colaboradores por atraso.


7<br />

Conclusões<br />

Nesta tese, apresentou-se o projeto, a implementação e a avaliação de desempenho<br />

de um protocolo de descoberta e seleção de recursos <strong>para</strong> grades móveis ad hoc,<br />

denominado P2PDP (Capítulo 4). O protocolo P2PDP foi desenvolvido no<br />

contexto da arquitetura MoGrid – uma arquitetura de software específica <strong>para</strong><br />

grades móveis, aplicável a redes sem fio infra-estruturadas e ad hoc (Capítulo 2) –<br />

como solução <strong>para</strong> a descoberta e seleção de recursos entre os dispositivos da<br />

grade móvel. O protocolo adota uma abordagem reativa, baseando-se no envio,<br />

sob demanda, de requisições de descoberta por difusão, completamente distribuída<br />

e independente da utilização de qualquer mecanismo de roteamento da MANET,<br />

com as requisições e respostas originadas sob demanda. Com o intuito de reduzir<br />

a implosão de mensagens de resposta, foi proposto o mecanismo de supressão de<br />

respostas por vizinhança, implementado através do algoritmo SbV (Seção 4.6).<br />

Para implementar um mecanismo justo de alocação <strong>dos</strong> recursos às tarefas na<br />

grade móvel, foi utilizado um mecanismo que classifica as respostas em função da<br />

seleção <strong>dos</strong> colaboradores mais aptos, implementado através do algoritmo DR,<br />

que introduz um retardo programado no envio de mensagens de resposta (Seção<br />

4.7), promovendo um balanceamento de carga implícito na rede mediante o<br />

aumento do número de requisições. Como resultado indireto da aplicação do<br />

algoritmo DR, foi possível minimizar a ocorrência de colisões, provocadas pelo<br />

aumento do tráfego na grade, proveniente da transmissão de mensagens de<br />

resposta P2PDP.<br />

7.1.<br />

Contribuições da Tese<br />

As principais contribuições alcançadas com o desenvolvimento deste trabalho,<br />

foram classificadas, no Capítulo 1, em duas categorias: (i) contribuições <strong>para</strong> o<br />

estado da arte na área de descoberta de serviços e (ii) contribuições tecnológicas.


Conclusões 192<br />

Essas contribuições, sumariadas na Seção 1.4, serão revisitadas, em mais detalhes,<br />

nesta seção.<br />

Antes de apresentar as principais contribuições desta tese, é importante<br />

ressaltar o trabalho de pesquisa desenvolvido sobre os protocolos de descoberta de<br />

recursos e serviços <strong>para</strong> redes de computadores que deu origem a [<strong>Lima</strong> et al.<br />

2007a]. No estudo desenvolvido, foram avalia<strong>dos</strong> os protocolos propostos <strong>para</strong> as<br />

redes sem fio ad hoc e as adaptações propostas aos protocolos desenvolvi<strong>dos</strong> <strong>para</strong><br />

redes fixas, com o intuito de oferecer suporte às redes sem fio infra-estruturadas.<br />

Esse estudo foi decisivo <strong>para</strong> a elaboração do Capítulo 3, proporcionando uma<br />

visão ampla das estratégias utilizadas nas mais diferentes propostas de protocolos<br />

de descoberta de serviços <strong>para</strong> redes sem fio. Essa abordagem permitiu que se<br />

identificassem as necessidades das grades móveis definindo, na Seção 1.2, os<br />

principais requisitos <strong>para</strong> o projeto de um protocolo de descoberta de serviços<br />

<strong>para</strong> uma grade móvel ad hoc.<br />

7.1.1.<br />

Contribuições <strong>para</strong> o Estado da Arte<br />

O desenvolvimento desta tese teve como resultado duas contribuições principais<br />

<strong>para</strong> o estado da arte na área de descoberta de serviços, a especificação do<br />

protocolo P2PDP e da arquitetura MoGrid, a saber:<br />

• A concepção, implementação e avaliação de desempenho do algoritmo de<br />

supressão de respostas por vizinhança (Suppression by Vicinity – SbV),<br />

que permite tratar o problema da implosão de respostas em protocolos de<br />

descoberta <strong>para</strong> MANETs, basea<strong>dos</strong> em difusão, utilizando broadcast. O<br />

mecanismo proposto de supressão de respostas por vizinhança mostrou-se<br />

eficaz em controlar o volume de respostas recebido pelo requisitante do<br />

serviço, sem comprometer a qualidade dessas respostas – ou seja,<br />

favorecendo à seleção das respostas <strong>dos</strong> colaboradores mais aptos. Podese<br />

observar, ainda, que o processamento adicional, gerado pelo<br />

mecanismo de supressão, é distribuído uniformemente entre os<br />

dispositivos da grade móvel, evitando que os vizinhos diretos do<br />

dispositivo requisitante sejam sobrecarrega<strong>dos</strong>. Esse comportamento<br />

promove um balanceamento de carga indireto, além de evitar que ocorra


Conclusões 193<br />

um aumento no consumo de energia graças à redução do número de<br />

transmissões de mensagens de descoberta P2PDP. Os resulta<strong>dos</strong><br />

experimentais obti<strong>dos</strong>, apresenta<strong>dos</strong> na Seção 6.2, indicam uma boa<br />

escalabilidade <strong>para</strong> protocolos de descoberta reativos que adotem o<br />

mecanismo SbV no tratamento de implosão de respostas, como acontece<br />

no P2PDP;<br />

• A concepção, implementação e avaliação de desempenho do algoritmo de<br />

retardo no envio de mensagens de resposta (Delayed Replies – DR), com o<br />

intuito de promover uma seleção entre as respostas que melhor se<br />

adequam às especificidades de uma dada requisição de serviço. A<br />

utilização desse mecanismo produz, como efeito colateral benéfico, a<br />

distribuição uniforme da execução <strong>dos</strong> serviços entre os colaboradores da<br />

grade móvel, como mostram os resulta<strong>dos</strong> obti<strong>dos</strong> a partir <strong>dos</strong><br />

experimentos realiza<strong>dos</strong> na rede de teste, apresenta<strong>dos</strong> na Seção 6.4. A<br />

análise desses resulta<strong>dos</strong> reforça os estu<strong>dos</strong> feitos em [Bolosky et al.<br />

2000], onde a distribuição da utilização de recursos dinâmicos é<br />

caracterizada como bimodal, o que se verifica, por exemplo, com a carga<br />

de CPU, cujos valores alternam entre perío<strong>dos</strong> de utilização total e outros<br />

próximos à inatividade;<br />

• Especificação de um conjunto de requisitos <strong>para</strong> o desenvolvimento de um<br />

protocolo de descoberta e seleção de recursos em grades móveis ad hoc,<br />

onde os dispositivos se organizam através de uma rede sem fio ad hoc de<br />

saltos múltiplos. Os requisitos do projeto do protocolo de descoberta<br />

levam em consideração as particularidades <strong>dos</strong> recursos dinâmicos, típicos<br />

<strong>dos</strong> ambientes de grade móvel. Essa característica foi determinante na<br />

adoção de uma abordagem reativa – baseada na requisição de recursos e<br />

serviços sob demanda –, dada a alta flutuação na disponibilidade <strong>dos</strong><br />

recursos dinâmicos, os quais determinam o perfil de execução <strong>dos</strong><br />

serviços nos colaboradores P2PDP;<br />

• Definição de uma arquitetura genérica, em camadas, denominada MoGrid,<br />

que serviu de base <strong>para</strong> o desenvolvimento de um middleware, de mesmo<br />

nome, que trata aspectos relaciona<strong>dos</strong> à computação distribuída em grades<br />

móveis. Essas grades são organizadas através de redes sem fio infra-


Conclusões 194<br />

estruturadas e ad hoc, constituídas por grupos de dispositivos sem fio, que<br />

atuam, colaborativamente, <strong>para</strong> a execução de tarefas. A arquitetura<br />

MoGrid foi concebida de modo a também ser integrável com tecnologias<br />

de grade fixa. Através da abordagem em camadas, a arquitetura oferece<br />

suporte tanto às aplicações cientes da mobilidade, projetadas <strong>para</strong> utilizar<br />

o middleware MoGrid, quanto às aplicações legadas – típicas <strong>dos</strong> cenários<br />

de computação <strong>para</strong>lela – <strong>para</strong> as quais o uso da arquitetura é transparente.<br />

Em função dessa abordagem, os diferentes mecanismos relaciona<strong>dos</strong> à<br />

descoberta (camada de descoberta) e à utilização de serviços (camada de<br />

transparência) – como o protocolo de descoberta e seleção de recursos<br />

P2PDP (Capítulo 4) e o algoritmo de supressão de mensagens de resposta<br />

por vizinhança (Seção 4.6) – são se<strong>para</strong><strong>dos</strong>, podendo ser utiliza<strong>dos</strong> como<br />

módulos independentes, acopla<strong>dos</strong>, inclusive, em outras arquiteturas.<br />

7.1.2.<br />

Contribuições Tecnológicas<br />

Além das contribuições científicas <strong>para</strong> o estado da arte, foi desenvolvido um<br />

conjunto de artefatos de software <strong>para</strong> auxiliar o desenvolvimento de aplicações<br />

colaborativas, em grades móveis, baseadas no compartilhamento de recursos e<br />

serviços, a saber:<br />

• Implementação do middleware MoGrid <strong>para</strong> os ambientes Linux e<br />

Windows XP, utilizando a linguagem de programação Java [Sun 1994;<br />

Sun 1999b], oferecendo suporte à mobilidade, através de um mecanismo<br />

descentralizado de descoberta e compartilhamento de recursos <strong>para</strong> a<br />

execução distribuída de tarefas em uma grade móvel;<br />

• Implementação do protocolo de descoberta P2PDP <strong>para</strong> os ambientes<br />

Linux e Windows XP, utilizando a linguagem de programação Java<br />

[Sun 1994; Sun 1999b]. A seleção <strong>dos</strong> dispositivos que irão colaborar na<br />

provisão de serviços foi realizada pela implementação de dois algoritmos<br />

distribuí<strong>dos</strong>, cita<strong>dos</strong> nas contribuições <strong>para</strong> o estado da arte (SbV e DR);<br />

• Implementação de um proxy de colaboração com a funcionalidade de<br />

permitir o acesso de dispositivos sem fio aos serviços e recursos<br />

disponíveis em uma grade fixa, implantada sobre a plataforma Globus


Conclusões 195<br />

Toolkit 2.4 [Foster & Kesselman 1997]. O proxy MoGrid é responsável<br />

pela tradução de protocolos entre a grade fixa e a grade móvel. Os<br />

recursos da grade fixa são identifica<strong>dos</strong> pelo proxy MoGrid – através do<br />

serviço Globus MDS (Monitoring and Discovery System) –, após o seu<br />

credenciamento na grade fixa, e, a partir daí, podem ser descobertos pelos<br />

dispositivos que compõem a grade móvel, através do protocolo P2PDP;<br />

• Desenvolvimento de uma ferramenta que incorpora um gerenciador de<br />

simulações de rede <strong>para</strong> o ns-2 [ISI 1995], baseado nas camadas de<br />

descoberta e acesso aos recursos disponibilizadas pelo middleware<br />

MoGrid, responsável por dis<strong>para</strong>r as rodadas de simulação de forma<br />

<strong>para</strong>lela e executar o pós-processamento <strong>dos</strong> resulta<strong>dos</strong> obti<strong>dos</strong> em cada<br />

rodada. A ferramenta, denominada nsTOOL (ns dispaTcher and pOstprOcessing<br />

Launcher), oferece uma interface gráfica e uma interface<br />

textual, <strong>para</strong> facilitar a automatização do processo de submissão de<br />

múltiplos cenários de simulação <strong>para</strong> os dispositivos da grade móvel aptos<br />

a colaborar. Essa ferramenta também pode ser utilizada em conjunto com<br />

o proxy de colaboração permitindo que as rodadas de simulação da grade<br />

móvel sejam executadas por dispositivos na grade fixa, que são mais ricos<br />

em recursos se com<strong>para</strong><strong>dos</strong> aos dispositivos sem fio da grade móvel.<br />

7.2.<br />

Trabalhos Futuros<br />

Existem alguns aspectos sobre os quais vislumbra-se a necessidade de futuras<br />

adaptações na especificação e implementação do protocolo P2PDP e da<br />

arquitetura MoGrid. A seguir, esses aspectos são apresenta<strong>dos</strong> como sugestões de<br />

pesquisas futuras.<br />

7.2.1.<br />

Arquitetura MoGrid<br />

Nesta subseção são discutidas algumas frentes de pesquisa que podem ser<br />

investigadas, dando continuidade ao desenvolvimento da arquitetura MoGrid.<br />

Para prover suporte ao gerenciamento das desconexões involuntárias, é<br />

necessário que a especificação da camada de transparência da arquitetura MoGrid


Conclusões 196<br />

seja concluída. Apesar <strong>dos</strong> esforços em se efetuar um levantamento preliminar <strong>dos</strong><br />

requisitos e funcionalidades da camada de transparência (vide Subseção 2.3.2),<br />

muitos aspectos relaciona<strong>dos</strong> a essa camada ainda precisam ser investiga<strong>dos</strong>,<br />

sendo necessário um esforço considerável no sentido de prover uma especificação<br />

<strong>dos</strong> módulos que a constituem. Em uma etapa subseqüente, deve-se analisar os<br />

requisitos especifica<strong>dos</strong> <strong>para</strong> a camada de transparência com o objetivo de definir<br />

o projeto, a implementação e a avaliação de um outro protocolo – complementar<br />

ao P2PDP – no âmbito dessa camada – o protocolo TRAP (Transparent Resource<br />

Access Protocol) –, de modo a estabelecer um padrão de comunicação entre as<br />

entidades de descoberta na fase de acesso e utilização <strong>dos</strong> recursos recémdescobertos.<br />

Na arquitetura MoGrid, a entidade proxy de colaboração pode corresponder<br />

tanto a um dispositivo fixo com uma interface sem fio, que lhe permite se<br />

comunicar com os dispositivos da grade móvel, quanto a um dispositivo sem fio<br />

que se conecta temporariamente à grade fixa, através de uma rede sem fio infraestruturada.<br />

No primeiro caso, o perfil de execução da entidade proxy não<br />

influenciará na qualidade das respostas que ele gera em nome <strong>dos</strong> dispositivos da<br />

grade fixa, entretanto, no segundo caso, o perfil de execução da entidade proxy<br />

deve ser considerado no cálculo da adequação desses dispositivos (vide Equação<br />

(2) na Seção 4.7), dado que, como o tempo de execução de uma tarefa pode ser<br />

longo – como ocorre com as aplicações de grade de processamento intensivo –, é<br />

grande a chance do proxy, ou da grade móvel como um todo, se mover e tornar<br />

impossível a obtenção <strong>dos</strong> resulta<strong>dos</strong> gera<strong>dos</strong> pelos colaboradores da grade fixa.<br />

Ainda em relação ao proxy de colaboração, aspectos relaciona<strong>dos</strong> à segurança são<br />

especialmente relevantes na integração das grades móveis com as grades fixas,<br />

sendo necessária a autenticação <strong>dos</strong> usuários móveis na grade fixa, o que deve ser<br />

incorporado em versões futuras da arquitetura MoGrid.<br />

7.2.2.<br />

Incorporação de Novos Mecanismos ao <strong>Protocolo</strong> P2PDP<br />

Nesta subseção é discutida a possibilidade de incorporar alguns mecanismo<br />

adicionais ao protocolo P2PDP com a finalidade de introduzir novas


Conclusões 197<br />

funcionalidades que, em alguns casos, resultam na ampliação do seu escopo de<br />

aplicação.<br />

O protocolo P2PDP utiliza um modo de encaminhamento de requisições<br />

baseado em inundação por broadcast, delimitado em função do diâmetro da<br />

requisição – número de saltos que a mensagem pode trafegar. Nessa abordagem,<br />

denominada broadcast limitado, as requisições são encaminhadas através de<br />

inundação, com to<strong>dos</strong> os nós dentro do diâmetro especificado recebendo as<br />

requisições de descoberta. Caso os nós intermediários, responsáveis pelo<br />

encaminhamento das requisições, armazenassem algum tipo de informação sobre<br />

os serviços disponíveis na sua vizinhança – como, por exemplo, através do<br />

armazenamento das respostas que passam por esses nós –, algum tipo de filtragem<br />

poderia ser efetuada no roteamento dessas requisições, evitando que elas fossem<br />

disseminadas em regiões onde o serviço solicitado não vem sendo oferecido há<br />

algum tempo. O modo de encaminhamento por broadcast limitado, implementado<br />

no P2PDP, poderia ser incrementado, utilizando-se abordagens que fazem o<br />

encaminhamento seletivo das mensagens de requisição de serviço. Em<br />

[Chakraborty et al. 2006], o encaminhamento das requisições é feito com base na<br />

informação sobre os grupos de serviço aos quais o serviço pertence, o que permite<br />

a obtenção de resulta<strong>dos</strong> aproxima<strong>dos</strong>. Por exemplo, se uma requisição especifica<br />

um serviço que possa ser executado em sistemas basea<strong>dos</strong> em um processador de<br />

uma determinada família (por exemplo, Intel Pentium) e uma instância desse<br />

serviço, compatível com sistemas basea<strong>dos</strong> nessa família, for descoberta, um<br />

resultado aproximado é encontrado. Nessa abordagem, ao receber uma requisição,<br />

o nó verifica a informação sobre o(s) grupo(s) do serviço solicitado e tenta validála<br />

com as informações de grupo na sua vizinhança, encaminhando a requisição<br />

somente aos nós que disponibilizam informações sobre o(s) grupo(s) em questão.<br />

Já na abordagem FTA [Lenders et al. 2005], o critério de encaminhamento de<br />

requisições se baseia na distância da rede – calculada em função do número de<br />

saltos entre o cliente e os possíveis provedores de serviço – e na capacidade do<br />

serviço (CoS), divulgada periodicamente por cada nó na sua vizinhança.<br />

A arquitetura MoGrid prevê, em sua API, uma operação <strong>para</strong> anúncio das<br />

informações de serviços na grade móvel. <strong>Um</strong> trabalho interessante seria<br />

incorporar, ao protocolo P2PDP, um mecanismo de descoberta proativo – baseado


Conclusões 198<br />

no envio periódico de anúncios contendo informações sobre os recursos e serviços<br />

disponíveis na grade –, o que implicaria na análise de técnicas <strong>para</strong> gerenciar o<br />

armazenamento dessas informações em cada dispositivo. A adição de mecanismos<br />

de anúncio, mais especificamente anúncio incremental [Lee et al. 2003] – que<br />

corresponde ao delta da visão do dispositivo em relação à visão global da rede –,<br />

pode se mostrar eficaz caso se deseje ampliar o escopo de atuação do protocolo<br />

P2PDP <strong>para</strong> a descoberta de recursos e serviços específicos, associa<strong>dos</strong> aos<br />

recursos estáticos, os quais não apresentam tantas variações em sua<br />

disponibilidade quanto os recursos dinâmicos trata<strong>dos</strong> em uma grade móvel. Com<br />

a implementação dessa abordagem, o uso do protocolo P2PDP continuaria<br />

contemplando as grades móveis ad hoc, mas não se restringiria apenas a esse<br />

ambiente, podendo oferecer suporte à descoberta de serviços em qualquer tipo de<br />

rede que se caracterize pela mobilidade <strong>dos</strong> nós que a constituem.<br />

Na especificação atual do P2PDP, a descrição <strong>dos</strong> recursos é feita através da<br />

implementação de uma interface comum Java, denominada ServiceDescription.<br />

<strong>Um</strong>a abordagem que pode ser implementada é a incorporação de uma linguagem<br />

de descrição de recursos, baseada em XML, <strong>para</strong> prover maior flexibilidade e<br />

poder de expressão à descrição de recursos e serviços no protocolo P2PDP, o que<br />

seria refletido no algoritmo de matching. Os protocolos propostos em [Lee et al.<br />

2003; Chakraborty et al. 2005; Chakraborty et al. 2006] seguem essa abordagem,<br />

utilizando linguagens de descrição semântica baseadas em ontologias, o que,<br />

segundo análise realizada pelos autores, garante uma maior eficiência no<br />

algoritmo de matching.<br />

Por fim, os cenários de simulação utiliza<strong>dos</strong> consideraram dispositivos com<br />

mobilidade moderada, deslocando-se a velocidades no intervalo [0, 4] m/s,<br />

reproduzindo a mobilidade humana. Em cenários envolvendo topologias<br />

altamente dinâmicas, o conceito de caminho de retorno – usado pelas mensagens<br />

de resposta – pode falhar, por exemplo, se algum dispositivo, no caminho, se<br />

afastar do mesmo. Nesse sentido, é interessante investigar mecanismos que<br />

permitam o uso alternativo de protocolos de roteamento reativos <strong>para</strong> MANETs –<br />

como, por exemplo, o AODV [Perkins et al. 2003] – quando é detectada uma<br />

falha no caminho de retorno, utilizado <strong>para</strong> o encaminhamento da mensagem de<br />

resposta, em direção ao nó que originou a requisição.


Conclusões 199<br />

7.2.3.<br />

Otimização de Mecanismos do <strong>Protocolo</strong> P2PDP<br />

Nesta subseção são discuti<strong>dos</strong> alguns aspectos referentes à implementação atual<br />

do protocolo P2PDP que podem ser modifica<strong>dos</strong> com o objetivo de torná-lo mais<br />

adaptativo em resposta às constantes alterações verificadas tanto nas condições e<br />

topologia da rede sem fio quanto na disponibilidade de recursos <strong>dos</strong> dispositivos<br />

móveis.<br />

Analisando os protocolos de descoberta de recursos e serviços sob a<br />

perspectiva das arquiteturas de QoS [Bharghavan et al. 1998; <strong>Lima</strong> 2002;<br />

Bellavista et al. 2003], os mesmos podem ser com<strong>para</strong><strong>dos</strong>, em muitos aspectos,<br />

aos protocolos de reserva de recursos, usuais na provisão de serviços com QoS.<br />

Por essa razão, é válida a análise de alguns trabalhos representativos dessa área<br />

que possam auxiliar na especificação de um mecanismo mais elaborado <strong>para</strong><br />

efetuar reservas antecipadas de recursos. Esse mecanismo incluiria o tratamento<br />

de underbooking, ou seja, situação que pode acontecer se os colaboradores<br />

reservam recursos que não serão utiliza<strong>dos</strong> – o que se deve ao fato da resposta do<br />

colaborador ser suprimida antes que ela possa chegar até o nó que originou a<br />

requisição. Embora a reserva efetuada seja temporária, pois a sua validade está<br />

associada ao período que determina o tempo de vida da requisição pendente,<br />

armazenada em uma estrutura de da<strong>dos</strong> local do dispositivo, ela pode causar<br />

impacto no processamento de requisições concorrentes, impedindo que um<br />

colaborador apto possa responder a uma requisição de descoberta em tempo hábil.<br />

Na implementação atual do protocolo P2PDP, a adequação de uma entidade<br />

colaborador é calculada levando-se em conta somente o seu perfil de execução,<br />

sem considerar o perfil de execução <strong>dos</strong> dispositivos na sua vizinhança. Em<br />

[Lenders et al. 2005] as requisições de serviço são encaminhadas na direção do<br />

dispositivo mais apto a oferecer o serviço levando em consideração o seu<br />

potencial como provedor, que é calculado em função da capacidade de cada<br />

provedor da rede oferecer o serviço, informação que é disseminada<br />

periodicamente por broadcast. Em uma grade móvel é comum a interconexão de<br />

dispositivos heterogêneos, com capacidades de hardware distintas, desse modo, a<br />

avaliação <strong>dos</strong> percentuais de disponibilidade de recursos de forma isolada, em<br />

cada dispositivo, pode prejudicar a qualidade <strong>dos</strong> resulta<strong>dos</strong> obti<strong>dos</strong> através do


Conclusões 200<br />

mecanismo de seleção. É necessário avaliar o quanto essa abordagem pode<br />

impactar na provisão de balanceamento de carga, proporcionada pelo mecanismo<br />

de seleção, e investigar soluções alternativas, de modo a estender o mecanismo<br />

atualmente em uso. <strong>Um</strong> outro ponto que advém dessa discussão é a adição de um<br />

parâmetro que identifique o perfil do dispositivo no cálculo de sua adequação<br />

(vide Equação (2) na Seção 4.7). A título de ilustração, 80% de 16 Mb de espaço<br />

em disco de um PDA é bem inferior a 10% de 80 Gb de um notebook, por<br />

exemplo. Ainda nessa linha de argumentação, os colaboradores de uma grade fixa,<br />

introduzi<strong>dos</strong> na grade móvel através da entidade proxy de colaboração, devem ter<br />

as suas respostas privilegiadas na seleção em relação aos dispositivos portáteis por<br />

apresentarem, apenas <strong>para</strong> mencionar alguns itens, um nível de conectividade<br />

relativamente constante e fonte de energia ilimitada (considerando-se o uso de nobreaks).<br />

É importante investigar a influência do parâmetro maxReplyDelay na<br />

eficiência do mecanismo de supressões. O ajuste desse parâmetro de forma<br />

dinâmica – por exemplo, em função do retardo de transferência das mensagens –<br />

pode auxiliar a reduzir o tempo de descoberta sem aumentar o número de colisões<br />

de respostas. Ainda nesse contexto, vale ressaltar a importância de se estudar o<br />

impacto da diferença de velocidade <strong>dos</strong> relógios <strong>dos</strong> dispositivos nos mecanismos<br />

de temporização implementa<strong>dos</strong>.<br />

Em função da variação na disponibilidade de recursos nos dispositivos sem<br />

fio, provocada pela execução de tarefas da grade móvel e do consumo de recursos<br />

gerado por demandas locais, o valor do parâmetro ω – que indica a disposição do<br />

nó colaborador em participar da provisão do serviço da grade móvel – pode ser<br />

alterado, de forma adaptativa, em tempo de execução. A sintonização automática<br />

do valor de ω possibilitaria que a carga de processamento do dispositivo fosse<br />

considerada também na decisão de participar ou não da execução de tarefas na<br />

grade móvel, sem a necessidade de constante intervenção do usuário da aplicação.<br />

ω poderia ser adaptado, por exemplo, em função de valores limites, defini<strong>dos</strong> pelo<br />

usuário do dispositivo, que determinariam a sua tolerância em relação aos níveis<br />

de utilização de seus recursos, <strong>para</strong> que o dispositivo continuasse atuando como<br />

um colaborador ativo na grade. <strong>Um</strong> usuário poderia restringir a sua colaboração,


Conclusões 201<br />

por exemplo, caso a carga residual da bateria atingisse 50% e a carga de<br />

processamento ultrapassasse 60% de utilização.<br />

7.3.<br />

Considerações Finais<br />

Esta tese é concluída oferecendo diversas oportunidades a serem exploradas,<br />

apontando diferentes perspectivas de pesquisa relacionadas à área de descoberta e<br />

seleção de recursos e serviços em grades móveis. Além disso, foram levanta<strong>dos</strong><br />

um conjunto de requisitos de projeto <strong>para</strong> auxiliar a especificação e o<br />

desenvolvimento de uma camada de acesso transparente aos recursos e serviços da<br />

grade móvel, que, por si só, representam uma área de pesquisa relevante, que<br />

merece ser investigada mais atentamente.


8<br />

Referências Bibliográficas<br />

AKOGRIMO Consortium: Access to Knowledge through the Grid in a Mobile<br />

World. European FP6-IST Project, Number FP6-2004-IST-2-004293. 2004 –<br />

2007. Disponível em: . Acesso em: 01 fev. 2007.<br />

ANGLUIN, D.; FISCHER, M.J.; JIANG, H. Stabilizing Consensus in Mobile<br />

Networks. In: Proceedings of Distributed Computing in Sensor Systems:<br />

Second IEEE International Conference, Lecture Notes in Computer Science,<br />

Springer-Verlag. 2006. Volume 4026, p. 37-50.<br />

BELLAVISTA, P.; CORRADI, A.; MONTANARI, R.; STEFANELLI, C.<br />

Dynamic Binding in Mobile Applications, a Middleware Approach. In: IEEE<br />

Internet Computing, 2003. Volume 7, Issue 2, p. 34-42.<br />

BERNERS-LEE, T.; HENDLER, J.; LASSILA, O. The Semantic Web. In:<br />

Scientific American, 2001. Volume 284, Number 5, p. 34-43.<br />

BHARGHAVAN, V.; LEE, Kang-Won; LU, Songwu; HA, Sungwon; LI, Jin-Ru;<br />

DWYER, D. The TIMELY Adaptive Resource Management Architecture. In:<br />

IEEE Personal Communications Magazine, 1998. Volume 5, Issue 4, p. 20-31.<br />

BHATIA, K. Peer-To-Peer Requirements on the Open Grid Services Architecture<br />

Framework, GFD.49, GGF Document Series, OGSA P2P Research Group. 2005.<br />

BOLOSKY, W. J.; DOUCEUR, J. R.; ELY, D.; THEIMER, M. Feasibility of a<br />

Serverless Distributed File System Deployed on an Existing Set of Desktop PCs.<br />

In: Proceedings of the 2000 ACM SIGMETRICS international Conference on<br />

Measurement and Modeling of Computer Systems (Santa Clara, California,<br />

United States). ACM Press, New York. 2000. p. 34-43. ISBN 1-58113-194-1.<br />

BLUETOOTH CONSORTIUM. Specification of the Bluetooth System, v. 1.1<br />

core. 2001. Disponível em: . Acesso em: 01 fev. 2007.<br />

BLUETOOTH .ORG. What´s in a name The story of Bluetooth. 2003.<br />

Disponível em: .<br />

Acesso em: 01 fev. 2007.<br />

CARTER, C.; YI, S.; RATANCHANDANI, P.; KRAVETS, R. Manycast:<br />

exploring the space between anycast and multicast in ad hoc networks. In<br />

Proceedings of the 9th Annual international Conference on Mobile<br />

Computing and Networking, San Diego, CA, USA, 2003. ACM Press, New<br />

York, p. 273-285. ISBN 1-58113-753-2.<br />

CHAKRABORTY, D.; JOSHI, A.; FININ, T.; YESHA, Y. GSD: A Novel Groupbased<br />

Service Discovery Protocol for MANETS. In: 4 th IEEE Conference on<br />

Mobile and Wireless Communications Networks. 2002.


Referências Bibliográficas 203<br />

CHAKRABORTY, D.; JOSHI, A.; FININ, T.; YESHA, Y. Service Composition<br />

for Mobile Environments. In: Mobile Networks and Applications. 2005.<br />

Volume 10, Issue 4, p. 435-451.<br />

CHAKRABORTY, D.; JOSHI, A.; YESHA, Y.; FININ, T. Toward Distributed<br />

Service Discovery in Pervasive Computing Environments. In: IEEE<br />

Transactions on Mobile Computing. 2006. Volume 5, Issue 2, p. 97-112.<br />

CHO, C.; LEE, D. Survey of Service Discovery Architectures for Mobile Ad<br />

hoc Networks. Term Paper, Computer and Information Science and Engineering<br />

Department, University of Florida. Gainesville, 2005.<br />

CHOW, R.; JOHNSON, T. Distributed Operating Systems and Algorithms,<br />

Addison Wesley, 1997.<br />

CoG. Java CoG Kit. 1997. Disponível em: . Acesso em:<br />

10 fev. 2007.<br />

CONTI, M.; MASELLI, G.; TURI, G.; GIORDANO, S. Cross-layering in mobile<br />

ad hoc network design. In: IEEE Computer, 2004. Volume 37, Issue 2, p. 48-51.<br />

CZAJKOWSKI, K.; FOSTER, I.; KESSELMAN. C. Resource and service<br />

management. In: I. Foster and C. Kesselman, editors, The Grid 2: Blueprint for<br />

a New Computing Infrastructure, Morgan Kaufmann Publishers, Second<br />

Edition, New York, 2004.<br />

DUFFIELD, N.G.; GROSSGLAUSER, M.; RAMAKRISHNAN, K.K. Distrust<br />

and Privacy: Axioms for Multicast Congestion Control. In: Proc. 9 th<br />

International Workshop on Network and Operating Systems Support for<br />

Digital Audio and Video. 1999.<br />

EDWARDS, W.K. Discovery Systems in Ubiquitous Computing. In: IEEE<br />

Pervasive Computing. 2006. Volume 5, Number 2, p. 70-77.<br />

ENGELSTAD, P.E.; ZHENG, Y.; KOODLI, R.; PERKINS, C.E. Service<br />

Discovery Architectures for On-Demand Ad Hoc Networks. In: International<br />

Journal of Ad Hoc Sensor Wireless Networks, Old City Publishing (OCP<br />

Science), 2006. Volume 2, Number 1, p. 27-58.<br />

FARKAS, K.; RUF, L.; MAY, M.; PLATTNER, B. Framework for Service<br />

Provisioning in Mobile Ad Hoc Networks. In: Proceedings of the First<br />

International Conference on Telecommunications and Computer Networks,<br />

San Sebastian, Spain, 2004.<br />

FAROOQ, U.; KHALIL, W. A Generic Mobility Model for Resource Prediction<br />

in Mobile Grids. In: International Symposium on Collaborative Technologies<br />

and Systems. 2006. ISBN 0-9785699-0-3. p. 189-193.<br />

FOSTER, I. The Grid: A new infrastructure for the 21 st century science. In: Grid<br />

Computing: Making the Global Infrastructure a Reality. John Wiley & Sons<br />

Ltd. 2003. p. 51-63. ISBN 978-0-470-85319-1. Disponível em:<br />

. Acesso em: 10 fev. 2007.<br />

FOSTER, I., KESSELMAN, C. Globus: A Metacomputing Infrastructure Toolkit.<br />

In: International Journal of Supercomputer Applications and High<br />

Performance Computing, 1997. Volume 11, Number 2, p. 115-128.


Referências Bibliográficas 204<br />

FOX, G.; GANNON, D.; KO, S.; LEE, S.; PALLICKARA, S.; PIERCE, M.;<br />

QIU, X.; RAO, X.; UYAR, A.; WANG, M.; WU, W. Peer-to-peer Grids. In:<br />

Berman, F., Fox, G., Hey, T., eds.: Grid Computing - Making the Global<br />

Infrastructure a Reality. John Wiley & Sons Ltd. 2003. p. 471-490.<br />

FRANK, C.; KARL, H. Consistency challenges of service discovery in mobile ad<br />

hoc networks. In: Proceedings of the 7 th ACM international Symposium on<br />

Modeling, Analysis and Simulation of Wireless and Mobile Systems, Venice,<br />

Italy (ACM Press, New York, NY), 2004. p. 105-114.<br />

GEYER, C.F.R.; DA SILVA, L.C.; YAMIN, A.C.; AUGUSTIN, I.; FILHO,<br />

A.E.S.; MORAES, M.C.; REAL, R.A.; FRAINER, G.C.; PIRES, R.P. GRADEp:<br />

Towards Pervasive Grid Executions. In: III Workshop de Grade<br />

Computacional e Aplicações. Rio de Janeiro, 2005.<br />

GNU. GAWK: Effective AWK Programming: A User’s Guide for GNU Awk, 3 rd<br />

Edition, Free Software Foundation, Inc. 1989-2003. Disponível em:<br />

. Acesso em: 20 fev.<br />

2007.<br />

GNUTELLA. 2005. Disponível em: . Acesso em: 01<br />

fev. 2007.<br />

GOMES, A.T.A.; ZIVIANI, A.; LIMA, L.S.; ENDLER, M. DICHOTOMY: A<br />

Resource Discovery and Scheduling Protocol for Multihop Ad hoc Mobile Grids.<br />

In: 1st International Workshop on Context-Awareness and Mobility in Grid<br />

Computing, co-located with IEEE CCGrid 2007. Rio de Janeiro, 2007.<br />

GONZALEZ-CASTILLO, J.; TRASTOUR, D.; BARTOLINI, C. Description<br />

Logics for Matchmaking Services. In: Proceedings of the Workshop on<br />

Applications of Description Logics at KI-2001. Vienna, Austria, 2001.<br />

GUTTMAN, E. Service Location Protocol: Automatic Discovery of IP Network<br />

Services. In: IEEE Internet Computing. 1999. Volume 3, Number 4, p. 71-80.<br />

HARBIRD, R.; HAILES, S.; MASCOLO, C. Adaptive Resource Discovery for<br />

Ubiquitous Computing. In: Proceedings of 2 nd Workshop on Middleware for<br />

Pervasive and Ad-Hoc Computing. 2004. Volume 77, p. 155-160.<br />

HELAL, S.; DESAI, N.; VERMA, V.; LEE, C. Konark – A Service Discovery<br />

and Delivery Protocol for Ad hoc Networks. In: Proceedings of the Third IEEE<br />

Conference on Wireless Communication Networks. New Orleans, 2003.<br />

HERMANN, R.; HUSEMANN, D.; MOSER, M.; Nidd, M.; ROHNER, C.;<br />

SCHADE, A. DEAPspace – Transient Ad hoc Networking of Pervasive Devices.<br />

In: Computer Networks. 2001. Volume 35, Issue 4, p. 411-428.<br />

HUBAUX. J.-P.; GROSS, T., LE BOUDEC, J.-Y.; VETTERLI, M. Toward Self-<br />

Organized Mobile Ad Hoc Networks: The Terminodes Project. In: IEEE<br />

Communications, 2001. Volume 39, Number 1, p. 118-124.<br />

HUGHES, D.; COULSON, G.; WALKERDINE, J. Free Riding on Gnutella<br />

Revisited: The Bell Tolls In: IEEE Distributed Systems Online. 2005. Volume<br />

6, Issue 6. DOI 10.1109/MDSO.2005.31.<br />

HWANG, J.; ARAVAMUDHAM, P. Middleware Services for P2P Computing in<br />

Wireless Grid Networks. In: IEEE Internet Computing. 2004. Volume 8,<br />

Number 4, p. 40-46.


Referências Bibliográficas 205<br />

IERUSALIMSCHY, R.; de FIGUEIREDO, L.H.; CELES W. Lua 5.1 Reference<br />

Manual. Lua.org, 2006. ISBN 85-903798-3-3.<br />

IHSAN, I.; QADIR, M.A.; IFTIKHAR, N. Mobile Ad-Hoc Service Grid –<br />

MASGRID. In: Transactions on Engineering, Computing and Technology,<br />

World Enformatika Society. 2005. ISBN 975-98458-4-9. Volume 5, pp 124-127.<br />

INTEGRIDADE Project. 2003. Disponível em: .<br />

Acesso em: 01 abr. 2007.<br />

ISI – Information Sciences Institute. The Network Simulator – ns-2. 1995 –<br />

2007. Disponível em: . Acesso em: 01 fev. 2007.<br />

KLEMM, A.; LINDEMANN, C.; WALDHORST, O.P. A Special-Purpose Peerto-Peer<br />

File Sharing System for Mobile Ad Hoc Networks. In: Proceedings of<br />

IEEE Semiannual Vehicular Technology Conference, Orlando, FL. 2003.<br />

ISBN 0-7803-7954-3.<br />

KOODLI, R.; PERKINS, C.E. Service Discovery in on-demand Ad Hoc<br />

Networks. In: IETF Internet Draft (expired). 2002.<br />

KURKOVSKY, S.; BHAGYAVATI, R.A.; YANG, M. Modeling a Grid-Based<br />

Problem-Solving Environment for Mobile Devices. In: Proceedings of the IEEE<br />

International Conference on Information Technology: Coding and<br />

Computing. Las Vegas, USA, 2004. ISBN: 0-7695-2108-8.<br />

K*Grid Project. 2002-2006. Disponível em: . Acesso em: 01 fev. 2007.<br />

LEE, C.; HELAL, A.; DESAI, N.; VERMA, V.; ARSLAN, B. Konark: A System<br />

and Protocols for Device Independent, Peer-to-Peer Discovery and Delivery of<br />

Mobile Services. In: Systems, Man and Cybernetics, Part A, IEEE<br />

Transactions. 2003. Volume 33, Issue 6, p. 682- 696.<br />

LENDERS, V; MAY, M.; PLATTNER, B. Service discovery in mobile ad hoc<br />

networks: A field theoretic approach. In: Sixth IEEE International Symposium<br />

on a World of Wireless Mobile and Multimedia Networks. 2005. p. 120-130.<br />

ISBN 0-7695-2342-0.<br />

LIMA, L. <strong>dos</strong> S. <strong>Um</strong> Framework <strong>para</strong> Provisão de QoS em Redes Móveis Sem<br />

fio. Dissertação de Mestrado. Departamento de Informática. Pontifícia<br />

Universidade Católica do Rio de Janeiro. 2002.<br />

LIMA, L. <strong>dos</strong> S. Grades sem Fio: Desenvolvendo Aplicações <strong>para</strong> o<br />

Compartilhamento de Recursos e Informações. Relatório Técnico. Departamento<br />

de Informática. Pontifícia Universidade Católica do Rio de Janeiro. 2005. .<br />

LIMA, L. <strong>dos</strong> S.; GOMES, A.T.A.; ZIVIANI, A.; ENDLER, M.; SCHULZE, B.;<br />

SOARES, L.F.G. Peer-to-Peer Resource Discovery in Mobile Grids. In:<br />

Proceedings of 3 rd International Workshop on Middleware for Grid<br />

Computing. 2005. ACM 1-59593-269-0/05/11.<br />

LIMA, L. <strong>dos</strong> S.; GOMES, A.T.A.; ZIVIANI, A.; ENDLER, M. <strong>Descoberta</strong> de<br />

Serviços em Redes de Computadores (minicurso). In: XXV Simpósio Brasileiro<br />

de Redes de Computadores. Belém, PA, Brasil, 2007.


Referências Bibliográficas 206<br />

LIMA, L. <strong>dos</strong> S.; GOMES, A.T.A.; ZIVIANI, A.; FRANÇA, P.A.; BASTOS,<br />

B.F.; ENDLER, M. Reduzindo a Implosão de Respostas em <strong>Protocolo</strong>s de<br />

<strong>Descoberta</strong> de Serviços <strong>para</strong> Redes sem fio Ad hoc de Saltos Múltiplos. In: XXV<br />

Simpósio Brasileiro de Redes de Computadores. Belém, PA, Brasil, 2007.<br />

LITKE, A.; SKOUTAS, D.; VARVARIGOU, T. Mobile Grid Computing:<br />

Changes and Challenges of Resource Management in a Mobile Grid Environment.<br />

In: International Conference on Practical Aspects of Knowledge<br />

Management. 2004.<br />

MACÊDO, R.J.A.; LIMA, G.M.; BARRETO, L.P.; ANDRADE, A.M.S.;<br />

BARBOZA, F.J.R.; SÁ, A.; ALBUQUERQUE, R.; ANDRADE, S. Tratando a<br />

Previsibilidade em Sistemas de Tempo-real Distribuí<strong>dos</strong>: Especificação.<br />

Linguagens, Middleware e Mecanismos Básicos (minicurso). In: XXII Simpósio<br />

Brasileiro de Redes de Computadores. Gramado, RS, Brasil, 2004.<br />

MARIN-PERIANU, R.S.; HARTEL, P.; SCHOLTEN, H. A Classification of<br />

Service Discovery Protocols, Technical Report TR-CTIT-05-25, Centre for<br />

Telematics and Information Technology, University of Twente. Enschede, 2005.<br />

ISSN 1381-3625.<br />

MCKNIGHT, L.W.; HOWISON, J. Towards a Sharing Protocol for Wireless<br />

Grids. In: International Conference on Computing, Communication and<br />

Control Technologies. Orlando, Florida, 2003.<br />

MCKNIGHT, L.W.; HOWISON, J.; BRADNER, S. Wireless grids: Distributed<br />

resource sharing by mobile, nomadic, and fixed devices. In: IEEE Internet<br />

Computing. 2004. Volume 8, Number 4, p. 24-31.<br />

MIAN, A.N.; BERALDI, R.; BALDONI, R. Survey of Service Discovery<br />

Protocols in Mobile Ad Hoc Networks, Technical Report 4/06, Dipartimento di<br />

Informatica e Sistemistica “Antonio Ruberti”, Università degli Studi di Roma “La<br />

Sapienza”. Rome, Italy, 2006.<br />

MILOJICIC, D.S.; DOUGLIS, F.; PAINDAVEINE, Y.; WHEELER, R.; ZHOU,<br />

S. Process Migration. In: ACM Computing Surveys. 2000. Volume 32, Number<br />

3, p. 241-299.<br />

NAPSTER. 2005. Disponível em: . Acesso em 01 fev.<br />

2007.<br />

NI, S.-Y.; TSENG, Y.-C.; CHEN, Y.-S.; SHEU, J.-P. The Broadcast Storm<br />

Problem in a Mobile Ad hoc Network. In: Proceedings of the 5th Annual<br />

ACM/IEEE International Conference on Mobile Computing and<br />

Networking, ACM Press. New York, NY, USA, 1999. p. 151-162.<br />

NIDD, M. Service Discovery in DEAPspace. In: IEEE Personal<br />

Communications. 2001. Volume 8, Number 4, p. 39-45.<br />

OMG. UML Notation Guide (version 2.0). Rational Software Corporation.<br />

Object Management Group. 2005. Disponível em: .<br />

Acesso em: 10 fev. 2007.<br />

PEDDERMORS, A.; ZANDBELT, H.; BARGH, M. A Mechanism for Host<br />

Mobility Management supporting Application Awareness. In: Proceedings of the<br />

2nd international conference on Mobile systems, applications, and services,<br />

ACM Press. Boston, USA, 2004. ISBN 1-58113-793-1.


Referências Bibliográficas 207<br />

PERKINS, C.; BELDING-ROYER, E.; DAS, S. Ad hoc On-Demand Distance<br />

Vector (AODV) Routing, IETF RFC 3561. 2003.<br />

P-GRID Project. 2002 – 2007. Disponível em: . Acesso<br />

em: 01 fev. 2007.<br />

PHAN, T.; HUANG, L.; DULAN, C. Challenge: Integrating Mobile Wireless<br />

Devices into the Computational Grid. In: Proceedings of the 8 th ACM<br />

International Conference on Mobile Computing and Networking. 2002.<br />

RAMAN, B.; BHAGWAT, P.; SESHAN, S. Arguments for cross-layer<br />

optimizations in bluetooth scatternets. In: Proceedings of Symposium on<br />

Applications and the Internet. San Diego, California, USA, 2001. p. 176-184.<br />

ISBN 0-7695-0942-8.<br />

RATSIMOR, O.; CHAKRABORTY, D.; JOSHI, A.; FININ, T. Allia: Alliancebased<br />

Service Discovery for Ad hoc Environments. In: Proceedings ACM<br />

Mobile Commerce Workshop. 2002.<br />

RATSIMOR, O.; CHAKRABORTY, D.; JOSHI, A.; FININ, T.; YESHA, Y.<br />

Service Discovery in Agent-Based Pervasive Computing Environments. In:<br />

Mobile Networks and Applications. 2004. Volume 9, Issue 6, p. 679- 692,<br />

Disponível em: .<br />

Acesso em: 01 fev. 2007.<br />

RED HERRING. Startup Takes on the Home: Wireless Grid promises to<br />

transform home networking with P2P-like technology. 2005. Disponível em:<br />

. Acesso em: 01 fev. 2007<br />

RHEINGOLD, H. The Evolution of Reputation. In: Smart Mobs (the next social<br />

revolution), Perseus Publishing, 2003. p. 113-132. Disponível em:<br />

. Acesso em: 20 fev. 2007.<br />

RICHARD III, G.G. Service Advertisement and Discovery Enabling Universal<br />

Device Cooperation. In: IEEE Internet Computing. 2000. Volume 4, Number 5,<br />

p. 18-26.<br />

SACRAMENTO, V.; ENDLER, M.; RUBINSZTEJN, H.K.; LIMA, L. <strong>dos</strong> S.;<br />

GONÇALVES, K.; NASCIMENTO, F.N.; BUENO, G.A. MoCA: A Middleware<br />

for Developing Collaborative Applications for Mobile Users. In: IEEE<br />

Distributed Systems Online. 2004. Volume 5, Number 10.<br />

SALUTATION Consortium Inc. Salutation Architecture Specification [site<br />

desativado]. 1999.<br />

SAROIU, S.; GUMMADI, P.K.; GRIBBLE, S.D. A Measurement Study of Peerto-Peer<br />

File Sharing Systems. In: Proceedings of the Multimedia Computing<br />

and Networking Conference. San Jose, CA, USA, 2002. p. 156-170.<br />

SENO, S.A.H; BUDIARTO, R.; WAN, T.-C. Survey and new Approach in<br />

Service Discovery and Advertisement for Mobile Ad hoc Networks. In:<br />

International Journal of Computer Science and Network Security, 2007.<br />

Volume 7, Number 2, p. 275-284.<br />

SHAKKOTTAI, S.; RAPPAPORT, T.S.; KARLSSON, P.C. Cross-layer design<br />

for wireless networks. In: IEEE Communications Magazine, Texas University,<br />

Austin, TX, USA, 2003. Volume 41, Issue 10, p. 74-80.


Referências Bibliográficas 208<br />

SMITH, W.; FOSTER, I.; TAYLOR, V. Scheduling with advance reservations.<br />

In: IEEE International Parallel and Distributed Processing Symposium. 2000.<br />

p. 127-132.<br />

STUTZBACH, D.; REJAIE, R. Understanding churn in peer-to-peer networks. In:<br />

Proceedings of the 6th ACM SIGCOMM on Internet Measurement. Rio de<br />

Janeiro, Brazil, 2006. ACM Press, New York, p. 189-202.<br />

STRANG, T. Service Discovery Protocols. In: Lecture Ubiquitous Computing.<br />

2005. Disponível em: . Acesso em: 01 fev. 2007.<br />

SUN Microsystems. Java Platform, Standard Edition (J2SE). 1994 – 2007.<br />

Disponível em: . Acesso em: 01 fev. 2007.<br />

SUN Microsystems. Jini Technology. 1999a. Disponível em:<br />

. Acesso em: 01 fev. 2007.<br />

SUN Microsystems. Java 2 Micro Edition Technology for Creating Mobile<br />

Devices (J2ME). 1999b – 2007. Disponível em: .<br />

Acesso em: 01 fev. 2007.<br />

TANGMUNARUNKIT, H.; DECKER, S.; KESSELMAN, C. Ontology-based<br />

Resource Matching in the Grid – The Grid meets the Semantic Web. In:<br />

Proceedings of the Second International Semantic Web Conference. Sanibel-<br />

Captiva Islands, Florida, USA, 2003.<br />

TSENG, Y.-C.; NI, S.-Y.; SHIH, E.-Y. Adaptive Approaches to Relieving<br />

Broadcast Storms in a Wireless Multihop Mobile Ad Hoc Network. In: IEEE<br />

Transactions on Computers. 2003. Volume 52, Number 5, p. 545-557.<br />

TYAN, J.; MAHMOUD, Q.H. A Comprehensive Service Discovery Solution for<br />

Mobile Ad Hoc Networks. In: Mobile Networks and Applications, 2005.<br />

Volume 10, Issue 4, p. 423-434.<br />

UPnP Forum. 2000. Disponível em: . Acesso em: 01 fev.<br />

2007.<br />

VARSHAVSKY, A.; REID, B.; de LARA, E. A Cross-Layer approach to Service<br />

Discovery and Selection in MANETs. In: Proceedings of 2 nd IEEE<br />

International Conference on Mobile Ad hoc and Sensor Systems. 2005. ISBN<br />

0-7803-9465-8.<br />

WANG, S.Y; LIN, Y.B. NCTUns Network Simulation and Emulation for<br />

Wireless Resource Management. In: Wiley Wireless Communications and<br />

Mobile Computing. 2005. Volume 5, Issue 8, p. 899-916.<br />

WOLF, L.; DELGROSSI, L.; STEINMETZ, R.; SCHALLER, S.; WITTIG, H.<br />

Issues of reserving resources in advance. In: ACM International Workshop on<br />

Network and Operating System Support for Digital Audio and Video. 1995.<br />

p. 51-162.<br />

W3C Consortium. Web Services Description Language. 2001. Disponível em:<br />

. Acesso em: 01 fev. 2007.<br />

W3C Consortium. Ontology Web Language. 2004. Disponível em:<br />

. Acesso em: 01 fev. 2007.


Referências Bibliográficas 209<br />

YAMIN, A.C.; BARBOSA, J.B.; AUGUSTIN, I.; SILVA, L.C.; REAL, R.;<br />

GEYER, C.F.R.; CAVALHEIRO, G. Towards Merging Context-Aware, Mobile<br />

and Grid Computing. In: International Journal of High Performance<br />

Computing Applications. 2003. Volume 17, Number 2, p. 191-203.<br />

YANG, X.; DE VECIANA, G. Inducing spatial clustering in MAC contention for<br />

spread spectrum ad hoc networks. In Proceedings of the 6 th ACM international<br />

Symposium on Mobile Ad Hoc Networking and Computing, Urbana-<br />

Champaign, IL, USA, 2005. ACM Press, New York, NY, p. 121-132.<br />

ZHU, F.; MUTKA, M.W.; NI, L.M. Service Discovery in Pervasive Computing<br />

Environments. In: IEEE Pervasive Computing. 2005. Volume 4, Issue 4, p. 81-<br />

90.


A<br />

Apêndice<br />

A.1.<br />

Detalhes sobre o Ambiente de Simulação NCTUns<br />

Como o simulador ns-2 [ISI 1995] não é capaz de tratar adequadamente certos<br />

eventos de interesse no P2PDP, como a interceptação de pacotes em modo<br />

promíscuo em redes sem fio, cogitou-se a possibilidade de alterar o código-fonte<br />

do ns-2. Porém, esta seria uma escolha que demandaria um tempo considerável de<br />

desenvolvimento. Por esse motivo, optou-se pela busca de alternativas<br />

complementares <strong>para</strong> esse simulador. A solução encontrada foi a adoção, em<br />

conjunto com o ns-2, do simulador NCTUns [Wang & Lin 2005], versão 3.0, haja<br />

vista que, dentre outras características, o NCTUns possibilita o uso da própria<br />

implementação do protocolo P2PDP, em Java, sem alterações, como gerador de<br />

tráfego <strong>para</strong> as simulações. O NCTUns faz uso da pilha de protocolos TCP/IP e,<br />

com isso, permite simulações mais fidedignas, além de possibilitar a integração de<br />

nós simula<strong>dos</strong> e emula<strong>dos</strong>. A opção por se manter os dois ambientes de simulação<br />

se deve ao fato do NCTUns apresentar uma restrição em função da configuração<br />

da máquina em que as simulações são executadas; o tamanho máximo da grade<br />

suportado pelo processador da máquina simuladora é de 56 nós. Devido a essa<br />

restrição, o uso do NCTUns não permite avaliar a escalabilidade do protocolo, o<br />

que é viabilizado pelo uso do simulador ns-2. Por sua vez, o NCTUns possibilitou<br />

que as implementações do protocolo P2PDP e do middleware MoGrid tivessem a<br />

sua correção atestada, facilitando, inclusive a depuração do código, reproduzindo<br />

de forma fidedigna as peculiaridades de uma rede sem fio. Por esse motivo, optouse<br />

pela manutenção <strong>dos</strong> dois simuladores, com o ns-2 utilizado na avaliação de<br />

desempenho e o NCTUns na verificação de correção da implementação e na<br />

avaliação do percentual de eficiência da descoberta do protocolo P2PDP.<br />

Como o formato do trace do simulador NCTUns não permite rastrear os<br />

pacotes pela sua identificação (ID), dado que cada pacote repassado recebe uma


Apêndice 211<br />

nova ID, foi implementado, então, um script em awk [GNU 2003], <strong>para</strong> depurar o<br />

arquivo de trace do NCTUns e rastrear o caminho <strong>dos</strong> pacotes em uma topologia<br />

simulada. Como no trace o tamanho de cada pacote é exibido, a solução<br />

implementada foi a de gerar, durante a execução da simulação, um número<br />

aleatório de bytes em cada mensagem, com o intuito de diferenciá-las umas das<br />

outras, o que possibilitou o seu posterior rastreamento. <strong>Um</strong> outro aspecto<br />

interessante, observado em função <strong>dos</strong> testes realiza<strong>dos</strong> no NCTUns, é o de que,<br />

em uma rede fixa, o tempo da aplicação (tempo real) é semelhante ao simulado.<br />

Porém, em uma rede sem fio, o tempo de simulação é bem menor que o da<br />

aplicação. Por essa razão, foi escolhido o uso do tempo real <strong>para</strong> simular o<br />

protocolo P2PDP no contexto do middleware MoGrid.<br />

A.2.<br />

Gráficos Complementares referentes à Análise da Influência do<br />

P2PDP na Carga Média da MANET<br />

A seguir, são apresenta<strong>dos</strong> gráficos complementares aos apresenta<strong>dos</strong> na<br />

Subseção 6.2.1, Figuras 55, 56, 57 e 58, ilustrando o comportamento do protocolo<br />

P2PDP com o número máximo de respostas (R) variando no intervalo [1, 10].<br />

Figura 55 – Carga na MANET <strong>para</strong> 20% de colaboradores ativos (p).


Apêndice 212<br />

Figura 56 – Carga na MANET <strong>para</strong> 40% de colaboradores ativos (p).<br />

Figura 57 – Carga na MANET <strong>para</strong> 60% de colaboradores ativos (p).


Apêndice 213<br />

Figura 58 – Carga na MANET <strong>para</strong> 80% de colaboradores ativos (p).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!