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 ...
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).