MobUser - Distributed Systems Group - INESC-ID
Transcrição
MobUser - Distributed Systems Group - INESC-ID
MobUser: Uma plataforma para partilha de informação centrada no utilizador para dispositivos móveis Mauro Silva, João Leitão, Carlos Ribeiro [email protected], [email protected], [email protected] INESC-ID, Instituto Superior Técnico, Universidade Técnica de Lisboa Resumo Dispositivos móveis com capacidade de comunicação sem fios são uma constante na nossa vida quotidiana. Este facto introduz a possibilidade destes dispositivos trocarem informação que assista o utilizador nas suas tarefas quotidianas. Consideremos, por exemplo, a troca de informação sobre pontos de interesse em locais comummente frequentados pelo utilizador. Seria útil o suporte de aplicações que efectuassem essa troca, de forma descentralizada (tendo apenas como suporte interacções entre pares), sem qualquer interacção por parte do utilizador e sem recorrer a uma entidade centralizada, protegendo dessa forma informação potencialmente sensı́vel do utilizador. No entanto, as actuais soluções não são adequadas para tal visto que a grande maioria dependem de algum tipo de centralização (sejam brokers ou nós que servem de ponto de encontro), as soluções encontradas que não dependem deste tipo de arquitectura apresentam um grande custo visto que são baseadas em soluções de publicação/subscrição baseadas em conteúdo. Para enfrentar este desafio, apresentamos neste artigo o MobUser, um novo serviço de publicação-subscrição baseado em tópicos especialmente adaptado para suportar operações conscientes da localização para dispositivos móveis de forma descentralizada. Mostramos, através de simulações, que o MobUser oferece melhor desempenho e maior taxa de entrega de eventos, usando o cenário previamente descrito como caso de estudo, quando comparado com outro sistema de publicação/subscrição para ambientes móveis. 1 Introdução Os dispositivos móveis com capacidade de comunicação sem fios são uma constante na nossa vida diária e os utilizadores esperam que os seus dispositivos tenham acesso constante a informação. Embora o acesso a servidores centralizados por dispositivos móveis possa ser dispendioso e, por vezes, mesmo impossı́vel, os dispositivos cruzam-se constantemente com outros que podem ter informação útil. Uma vez que estes dispositivos têm um alto nı́vel de mobilidade, a informação disseminada pelos mesmos tem a possibilidade de ser propagada para localizações distantes sem a necessidade de soluções centralizadas. 1 Este artigo surgiu de uma ideia para uma aplicação móvel, similar ao ’Foursquare’1 , cujo desenho não requeira um componente centralizado. Com esta aplicação os dispositivos seriam capazes de trocar informação relativa a pontos de interesse entre si de forma a que, quando um utilizador sentisse necessidade de procurar algo, a informação já estaria guardada no seu dispositivo. Para conseguir desenvolver esta aplicação, a abstracção proporcionada pelos sistemas de publicação/subscrição adequa-se perfeitamente aos requisitos, uma vez que permitem uma comunicação independente do tempo, do espaço e de sincronização[1]. Além disso, os sistemas de publicação/subscrição baseados em tópicos, também apresentam a vantagem de poder filtrar informação que não irá ser útil ao utilizador subscrevendo apenas tópicos que façam parte dos seus interesses. A disseminação de informação numa rede com altos nı́veis de mobilidade e com dispositivos que, por várias razões (entre as quais limitações de energia), não estão constantemente conectados, apresenta alguns custos. Por exemplo, é complexo assegurar nı́veis elevados de fiabilidade sem propagar constantemente informação, e para todos os vizinhos, dessa forma inundando a rede[2]. Este artigo apresenta um algoritmo de disseminação de eventos que concretiza um sistema de publicação/subscrição baseado em tópicos para redes sem fios ad hoc e compara o mesmo com uma solução existente na literatura[2]. Resultados experimentais demonstram que o nosso algoritmo apresenta um alto nı́vel de fiabilidade, o que se traduz no facto de os subscritores receberem os eventos nos quais estão interessados com elevada probabilidade, mesmo quando existe um grau de conectividade baixo na rede ad hoc. Visto o nosso algoritmo não assumir qualquer protocolo de encaminhamento, é facilmente adaptável para várias tecnologias de comunicação sem fios (como Bluetooth ou 802.11). A sua inerente escalabilidade provém deste se basear em trocas entre-pares. O resto do artigo está organizado da seguinte forma: a Secção 2 apresenta trabalho relacionado relevante. A Secção 3 motiva, apresenta e descreve o MobUser. Na Secção 4 avaliamos e comparamos o nosso trabalho com uma das soluções descritas na literatura e, por fim, a Secção 5 conclui o artigo. 2 Trabalho Relacionado Esta secção introduz soluções existentes que à primeira vista se poderiam adequar ao problema abordado neste artigo. Primeiramente, apresentamos alguns algoritmos de disseminação epidémica para redes ad hoc. De seguida, examinamos algumas soluções existentes de publicação/subscrição em redes ad hoc. 2.1 Disseminação epidémica em redes ad hoc Algoritmos de comunicação epidémica são uma classe de algoritmos em que periodicamente um nó escolhe um conjunto de nós vizinhos para trocar in1 https://foursquare.com/about/new 2 formação. Especificamente para redes ad hoc foi proposta no passado a variante de Opportunistic Gossip[3], na qual a mobilidade dos nós é aceite e usada como forma de disseminar a informação em locais distantes (similar à nossa solução). Outro algoritmo de disseminação epidémica para redes ad hoc que usa a mobilidade dos nós para potenciar o seu funcionamento é o Autonomous Gossip[4], que tem propriedades semelhantes ao nosso sistema porém neste sistema os dados são tratados como um organismo vivo e o perfil do dispositivo é visto como uma descrição do ecossistema do dispositivo. Neste sistema os dados competem pela memória de acordo com o perfil dos dispositivos. Esta solução, no entanto pode levar a que grande parte da comunicação feita seja para obtenção de dados inúteis, o que faria com que o dispositivo gastasse bateria sem ganho para o seu utilizador. Adicionalmente, os tópicos com percentagem de subscrição baixa tendencialmente não são disseminados, afectando assim a fiabilidade do sistema. 2.2 Sistemas de publicação/subscrição em redes ad hoc O JEDI[5] é um sistema de publicação/subscrição que permite, explicitamente, mobilidade. Contudo, este sistema tem um suporte de mobilidade bastante limitado, baseando-se essencialmente em duas operações: moveOut e moveIn. Estas operações permitem aos nós explicitamente mover-se na topologia da rede, não sendo adequado ao nosso problema. Existe algum interesse em permitir um crescente nı́vel de mobilidade em sistemas de publicação/subscrição para redes ad hoc[6,7,8,2] porque a natureza independente do paradigma de publicação/subscrição é especialmente eficaz para este tipo de redes. Porém a maioria dos estudos publicados foca-se em sistemas baseados em conteúdo[6,9], incorrendo em custos adicionais elevados, ou confiam em arquitecturas com algum tipo de centralização (como o uso de brokers ou de nós que servem como ponto de encontro)[6], sendo por isso inadequados a ambientes com elevada mobilidade e sem infraestrutura. Algumas soluções como o SpiderCast[7] e o Sub-2-Sub[8] apresentam sistemas de publicação/subscrição baseados em tópicos que são totalmente distribuı́dos. Porém estes baseiam-se na construção de redes sobrepostas que apresentam elevado custo de manutenção em ambientes de elevada mobilidade. Adicionalmente, visto que as redes sobrepostas são criadas de acordo com tópicos, os eventos de tópicos com baixa subscrição dificilmente chegarão aos interessados, visto ser improvável que estas redes sobrepostas sejam conexas. O trabalho que mais se assemelha ao nosso é o Mobility Friendly Publish/Subscribe (MFPS)[2], esta solução difunde o seu perfil (tópicos aos quais subscreve) e a sua velocidade actual com um intervalo de tempo configurável. Quando um ou mais dispositivos estabelecem contacto trocam mensagens com os identificadores únicos dos eventos que possuem. Posteriormente usam essa informação para trocar os eventos que tenham tópicos de interesse dos vizinhos e que os vizinhos ainda não tenham. Os autores declaram que assumem que o identificador é de tamanho muito reduzido quando comparado com a informação transferida, porém para que um identificador seja razoavelmente único num sistema distribuı́do de larga escala e de forma a não ser necessária uma entidade 3 central que os emita, o tamanho do identificador pode não ser desprezável. No nosso trabalho experimental usamos este algoritmo como termo de comparação com a nossa solução. Um aspecto negativo a todas as soluções discutidas previamente, é a sua baixa fiabilidade para tópicos com baixo número de subscrições. 3 MobUser Nesta secção, descrevemos o MobUser. Começamos por apresentar o modelo assumido, seguido de uma perspectiva global do protocolo, introduzindo os componentes principais da nossa solução. Seguidamente descrevemos detalhadamente cada componente. 3.1 Modelo de sistema Descrevemos agora o modelo de sistema assumido neste trabalho. O sistema visa operar numa área com mobilidade de estilo urbano. Neste modelo os dispositivos são móveis e têm capacidade para comunicar directamente entre si quando se encontram no raio de alcance de cada um. Assumimos que os dados trocados entre dispositivos são guardados parcialmente nos dispositivos (existe limite de memória associada aos dispositivos). A rede é assumida como sendo totalmente ad hoc sem qualquer dispositivo de infraestrutura presente. O número de dispositivos com os quais cada dispositivo consegue comunicar varia constantemente e não está restrito quanto a um número máximo. É assumido que os dispositivos tenham energia, memória e processamento limitado. 3.2 Perspectiva Global A nossa solução usa o sistema de detecção de vizinhos que for disponibilizada pela tecnologia de comunicação em utilização (e.g. Wireless ou Bluetooth). Caso essa tecnologia não disponibilize tal serviço mas disponibilizar um meio de difusão de mensagens podemos simplesmente usar esse serviço para difundir o nosso interesse em comunicar. O funcionamento da nossa solução baseia-se numa tarefa recorrente que é executada com um intervalo configurável. Esta tarefa procura dispositivos com os quais possa trocar informação. Cada dispositivo tem um perfil que consiste no conjunto de tópicos nos quais o seu utilizador está interessado, ou seja, os tópicos subscritos pelo utilizador. Os tópicos são definidos na altura da implementação do sistema e conhecidos globalmente. Quando um novo vizinho é encontrado ambos trocam perfis gerados nessa altura com base na procura dos tópicos que cada um tem registado e no perfil que têm armazenado. Após a troca dos perfis os dispositivos trocam qualquer evento que pertença a um tópico subscrito pelo seu vizinho e armazenam os eventos recebidos nas estruturas de dados apropriadas. Os eventos são caracterizados por um nome, um 4 tópico, uma estampilha temporal, uma localização e uma reputação. Os eventos podem ser guardados em três listas, a lista de eventos recentes, a lista de eventos populares e a lista de eventos irrelevantes. Estas listas são listas ordenadas sendo que a sua ordenação depende da lista. A função da lista de eventos recentes é armazenar os eventos recebidos mais recentemente, logo está ordenada do mais recente para o menos recente. A função da lista de eventos populares é armazenar os eventos com maior reputação e, portanto, está ordenada do evento com maior reputação para menor reputação. A função da lista de eventos irrelevantes é auxiliar a disseminação de eventos pertencentes a tópicos menos subscritos mantendo os eventos que foram retransmitidos menos vezes. A informação da quantidade de vezes que foram retransmitidos está codificada na reputação e, como tal, esta lista está ordenada do evento com menor reputação para o evento com maior reputação. 3.3 Armazenamento de eventos No armazenamento de eventos os eventos são verificados e caso pertençam a um tópico que não foi subscrito no perfil gerado são descartados. Caso pertençam ao perfil gerado, mas não ao perfil definido pelo utilizador então são guardados na lista de eventos irrelevantes caso exista espaço livre para tal.2 Se os eventos pertencerem ao perfil do utilizador é feita uma pesquisa na lista de eventos recentes e populares, caso o evento exista na lista de eventos recentes esse evento é transferido para a lista de eventos populares e a sua reputação é aumentada. Caso exista na lista de eventos populares, a sua reputação é aumentada. Caso não exista em qualquer uma das listas, o evento é adicionado à lista de eventos recentes. No caso de qualquer uma das listas estar cheia o novo evento simplesmente toma o lugar do evento que está em último lugar na ordenação referida anteriormente. 3.4 Disseminação A fase de disseminação começa por descobrir os vizinhos com qual o dispositivo consegue contactar. Para cada vizinho descoberto é gerado um perfil temporário (perfil gerado) que consiste em adicionar à lista de tópicos definidos pelo utilizador os tópicos com menos procura. Esta procura é uma visão subjectiva de cada dispositivo recolhida através de contadores associados aos tópicos que denota o padrão dos perfis que o dispositivo recebeu no passado. O perfil gerado é partilhado com o dispositivo vizinho. O facto de adicionarmos os perfis menos procurados no sistema tem dois efeitos, ofuscar o perfil real do utilizador, dificultando assim a tarefa de associar um perfil de utilizador ao seu dispositivo, e também facilitar a difusão de eventos associados a tópicos menos subscritos. Visto que os identificadores usados neste sistema são apenas para efeitos de comunicação, podemos ainda gerar novos identificadores após cada interacção ou após um conjunto de interacções. Isto é implementado no protótipo desenvolvido, 2 Os detalhes de geração do perfil encontram-se mais a frente no texto 5 mas que não é apresentado devido a limites de espaço, onde mudamos o endereço MAC entre interacções para dificultar ainda mais a associação de um perfil a um dispositivo fı́sico. Quando um dispositivo recebe o perfil de outro, responde com o seu perfil e também procura nas três listas já referidas por eventos que estejam de acordo com o perfil recebido. Caso sejam encontrados eventos cujo tópico esteja contido no perfil do vizinho, esses eventos são enviados para o mesmo. Este envio pode ser feito de duas maneiras, de forma aglomerada, em que todos os eventos são enviados no mesmo pacote, ou de forma interactiva, em que cada dispositivo tem de enviar um evento antes de receber o próximo. A vantagem de enviar todos os eventos no mesmo pacote é pouparmos em termos de comunicação. A vantagem de enviar de forma interactiva é que previne comportamento egoı́sta, em que um dispositivo apenas recebe informação e nunca a envia. Cada evento enviado da lista de eventos irrelevantes tem a sua reputação aumentada por cada envio. Após a disseminação dos eventos segue-se uma fase de armazenamento de eventos que segue os procedimentos descritos na secção anterior. 4 Avaliação Nesta secção apresentamos a avaliação da nossa solução, bem como os detalhes de cada teste efectuado. Começamos por descrever o simulador utilizado, de seguida apresentamos as configurações comuns a todos os testes e, por fim, os resultados obtidos. 4.1 Ambiente de teste Para avaliar a nossa solução simulámos o nosso algoritmo usando o Network Simulator (v2.35)(também conhecido por NS2)3 . Para criar os modelos de movimento utilizamos o BonnMotion (v2.0)[10] com o modelo de movimento Manhattan Grid. 4.2 Configurações comuns Simulámos os protocolos como um Agent do NS2, que usa directamente a camada MAC do 802.11b. Definimos como alcance máximo da antena 10 metros, uma vez que o nosso protocolo é suposto ser possı́vel de executar em qualquer dispositivo móvel, sendo que as duas tecnologias de comunicação sem fios mais utilizadas nos dispositivos móveis são o 802.11 e o Bluetooth. O modelo de propagação usado foi o Two-Ray Ground, uma vez que se trata do modelo usado pela solução com a qual comparamos o desempenho do nosso sistema. Os valores usados para RXThresh , para definir o alcance da antena, do NS2 foram calculados usando a ferramenta threshold contida no próprio NS2. Para gerar os padrões de movimento usamos o modelo já referido, com as seguintes propriedades: 3 http://www.isi.edu/nsnam/ns/ 6 – Número de segundos ignorados do inı́cio da simulação: 3600. Este valor foi usado uma vez que é o valor padrão do BonnMotion para todos os cenários. – Altura e largura da área de simulação: 300 metros, excepto nos testes de densidade. – Número de dispositivos simulados: 100. – Probabilidade de mudança de velocidade: 20%. – Velocidade mı́nima: 0.5m/s e Velocidade média: 1m/s. Estes valores foram escolhidos de acordo com [11]. – Probabilidade de parar: 0%. – Probabilidade de mudar de direcção: 50%. – Numero de quarteirões por dimensão: 15, excepto nos testes de densidade. Este valor foi escolhido de forma a criar quarteirões de 20 metros não permitindo assim que dispositivos em ruas paralelas consigam comunicar. A avaliação experimental tem como principal objectivo medir a fiabilidade e a quantidade de dados transmitidos. Definimos a fiabilidade como a percentagem de eventos publicados que chega aos dispositivos que subscreveram ao tópico desse evento. Os resultados apresentados resultam da execução de 10 testes independentes com diferentes padrões de movimento. Em todos os gráficos apresentados, com excepção dos gráficos da evolução de fiabilidade, são representados os intervalos de confiança para um alfa de 0,01. Em todos os testes o intervalo de tempo entre pesquisas por novos vizinhos foi configurada para 300 segundos para o nosso sistema. Para o Mobility Friendly Publish/Subscribe (MFPS)[2] esse intervalo varia entre 150 e 450 segundos, sendo que, como o MFPS usa a velocidade dos nós à sua volta para calcular o seu intervalo, a média está nos 300 segundos. 4.3 Resultados Nesta secção começamos por apresentar o resultado experimental que nos permitiu escolher a melhor configuração para o nosso sistema. De seguida, apresentamos resultados que analisam o comportamento das soluções em três dimensões distintas: Tempo, Probabilidade de Subscrição e Densidade. Começamos por analisar o comportamento das soluções ao longo do tempo, passando para uma análise do comportamento com diferentes probabilidades de subscrição a um determinado tópico e finalizamos com uma análise com diferentes densidades de nós. Configuração do sistema Visto que o sistema tem um limite máximo de memória, começamos por determinar a melhor proporção de tamanhos para as listas de eventos anteriormente descritas. Para tal, criamos um teste em que todos os nós subscrevem o mesmo tópico, e todos os nós publicam um evento nesse tópico. Estipulamos um valor máximo de 20 eventos no total para guardar em memória e definimos os valores máximos de cada lista para 10% do total para a lista de eventos irrelevantes, e alteramos o máximo da lista de eventos 7 recentes para ir de 10 a 80%, sendo que a lista de eventos populares ocupa o espaço de sobra. O ambiente foi simulado durante uma hora. De acordo com os resultados experimentais a configuração com melhores resultados é 70% para a lista de eventos recentes e 20% para eventos populares. (a) (b) Figura 1. Em (a) temos a evolução de fiabilidade com o tempo, e em (b) temos a evolução da quantidade de dados transmitidos com o tempo. Tempo Após averiguar a melhor configuração para o nosso sistema, avaliamos a fiabilidade dos sistemas ao longo do tempo. Para avaliar essa evolução efectuamos simulações de 1, 4, 8, 12 e 24 horas. Os resultados estão apresentados na Figura 1(a). Neste teste todos os dispositivos subscrevem ao mesmo tópico e cada um publica um evento para esse mesmo tópico. A linha com o nome MobUserFlood representa um sistema que, como o nosso, apenas procura por vizinhos com um intervalo de 300 segundos, mas não tem qualquer limite de memória e troca sempre todos os eventos que tem com os seus vizinhos, independentemente de subscrições. Esta alternativa pretende averiguar a fiabilidade máxima que se pode obter no nosso sistema. É usado o limite máximo, tanto para o nosso sistema como para o MFPS, de 20 eventos guardados em memória, sendo que no caso do nosso sistema esses 20 eventos estão repartidos pelas três listas de eventos na proporção já descrita (10% para irrelevantes, 20% para populares e 70% para recentes). As Figuras 1(a) e 1(b) mostram claramente que a nossa solução oferece melhor fiabilidade com um custo de comunicação similar. Podemos também observar que o nosso sistema providencia uma entrega muito mais rápida, sendo que cerca de 90% dos subscritores tinham recebido o evento após 5 horas e meia em comparação com o MFPS que apenas se aproxima dos 90% de entrega após 16 horas. 8 (a) (b) Figura 2. Em (a) temos a evolução de fiabilidade com a probabilidade de subscrição, e em (b) temos a evolução da quantidade de dados transmitidos com a mesma. Probabilidade de Subscrição Após este teste focamo-nos na fiabilidade com diferentes percentagens de subscritores para um tópico. Para tal alteramos a probabilidade de um dispositivo subscrever a um dado tópico variando entre 100 a 10%. As simulações para este teste simulam quatro horas de actividade. Para cada ponto deste teste, cada dispositivo tinha uma determinada probabilidade de subscrever a um tópico. Caso subscrevesse então publicava um evento para esse mesmo tópico. Como é possı́vel observar na Figura 2(a), apenas 10% de espaço usado para eventos que não são relevantes para o dispositivo em si torna o sistema muito menos vulnerável a alterações de subscrição. Podemos ver que no caso do MFPS, com uma probabilidade de 10% de subscrição o resultado tem um intervalo de confiança de 71% a 94% o que demonstra que está bastante dependente da topologia. No nosso caso, quando a probabilidade de subscrição baixa, os resultados são menos variáveis, demonstrando uma menor dependência da topologia. É interessante reparar que a fiabilidade aumenta com probabilidades de subscrição mais baixas. Isto ocorre porque para probabilidades mais baixas de subscrição existem menos eventos produzidos e a necessitar de entrega. É tambem importante notar a evolução que ambos os protocolos têm com subscrições baixas. Podemos ver na Figura 3 que o MobUser apresenta uma evolução na fiabilidade mais rápida, sendo que cerca de 2000 segundos após o inicio da simulação, quase todos os subscritores recebem o evento. O MFPS tem uma evolução lenta e altamente dependente da topologia. Densidade Finalmente, avaliamos a fiabilidade do nosso sistema para densidades de nós variáveis. A configuração deste teste é semelhante ao anterior, com a excepção que o tamanho de cada lado da área de simulação varia entre 100 e 1000 metros. Podemos ver na Figura 4(a) que o MobUser é menos afectado pela densidade que o MFPS. Com densidades mais baixas, a fiabilidade do MobUser é similar à da variante MobUserFlood, que como descrito anteriormente não tem limites de memória. A Figura 4(b) mostra que o MobUser tem um custo de 9 (a) (b) Figura 3. Evolução da fiabilidade ao longo do tempo com diversas probabilidades de subscrição, em (a) temos o MFPS, e em (b) temos o MobUser. (a) (b) Figura 4. Em (a) temos a evolução de fiabilidade com a densidade, e em (b) temos a evolução da quantidade de dados transmitidos com a mesma. 10 comunicação maior comparativamente com as alternativas. Isto deve-se à troca de perfis efectuada pelo nosso sistema. No entanto, este custo adicional não é significativo. (a) (b) Figura 5. Evolução da fiabilidade ao longo do tempo com diversas densidades, em (a) temos o MFPS, e em (b) temos o MobUser. Mais uma vez podemos verificar na Figura 5 que a latência na entrega dos eventos no nosso sistema é menor. Efectuamos também testes usando o padrão de movimento Random Waypoint, que não apresentamos devido a limites de espaço. Estes testes revelam resultados consistentes com os apresentados anteriormente. 5 Conclusão Apresentámos neste artigo um algoritmo de disseminação de eventos que implementa uma solução de publicação/subscrição baseada em tópicos. Este algoritmo foi desenhado para redes sem fios ad hoc e tem como base trocas entrepares. Motivo pelo qual tem uma inerente escalabilidade e descentralização. A 11 nossa solução não só suporta mobilidade como a alavanca para disseminar a informação em locais distantes. Contribuı́mos também com uma estrutura de armazenamento de eventos que não só assegura que o uso da memória é limitado mas também permite que eventos de tópicos com baixa percentagem de subscrição possam ser disseminados. Os resultados experimentais demonstram que o MobUser apresenta melhor fiabilidade, menor latência na entrega dos eventos e um uso mais eficiente da bateria, quando comparado com o [2]. Estimamos que soluções que tenham como base comunicação com redes sobrepostas apresentem resultados inferiores devido ao custo de manutenção das mesmas. Referências 1. Eugster, P.T., Felber, P.A., Guerraoui, R., Kermarrec, A.M.: The many faces of publish/subscribe. ACM Comput. Surv. 35(2) (June 2003) 114–131 2. Baehni, S., Chhabra, C.S., Guerraoui, R.: Mobility Friendly Publish/Subscribe. Technical report (2004) 3. Friedman, R., Gavidia, D., Rodrigues, L., Viana, A.C., Voulgaris, S.: Gossiping on manets: the beauty and the beast. SIGOPS Oper. Syst. Rev. 41(5) (October 2007) 67–74 4. Datta, A., Quarteroni, S., Aberer, K.: Autonomous gossiping: A self-organizing epidemic algorithm for selective information dissemination in wireless mobile adhoc networks. In Bouzeghoub, M., Goble, C., Kashyap, V., Spaccapietra, S., eds.: Semantics of a Networked World. Volume 3226 of Lecture Notes in Computer Science. Springer Berlin / Heidelberg (2004) 126–143 10.1007/978-3-540-301455 8. 5. Cugola, G., Di Nitto, E., Fuggetta, A.: The jedi event-based infrastructure and its application to the development of the opss wfms. Software Engineering, IEEE Transactions on 27(9) (sep 2001) 827 –850 6. Baldoni, R., Beraldi, R., Cugola, G., Migliavacca, M., Querzoni, L.: Structure-less content-based routing in mobile ad hoc networks. In: Pervasive Services, 2005. ICPS ’05. Proceedings. International Conference on. (july 2005) 37 – 46 7. Chockler, G., Melamed, R., Tock, Y., Vitenberg, R.: Spidercast: a scalable interestaware overlay for topic-based pub/sub communication. In: Proceedings of the 2007 inaugural international conference on Distributed event-based systems. DEBS ’07, New York, NY, USA, ACM (2007) 14–25 8. Voulgaris, S., Rivière, E., Kermarrec, A.M., Van Steen, M.: Sub-2-Sub: SelfOrganizing Content-Based Publish and Subscribe for Dynamic and Large Scale Collaborative Networks. Rapport de recherche RR-5772, INRIA (2005) 9. Fiege, L., Gärtner, F.C., Kasten, O., Zeidler, A.: Supporting mobility in contentbased publish/subscribe middleware. In: Proceedings of the ACM/IFIP/USENIX 2003 International Conference on Middleware. Middleware ’03, New York, NY, USA, Springer-Verlag New York, Inc. (2003) 103–122 10. Aschenbruck, N., Ernst, R., Gerhards-Padilla, E., Schwamborn, M.: Bonnmotion: a mobility scenario generation and analysis tool. In: Proc. of the 3rd International ICST Conference on Simulation Tools and Techniques. SIMUTools ’10, ICST, Brussels, Belgium, Belgium, ICST (Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering) (2010) 51:1–51:10 11. Tarawneh, M.S.: Evaluation of pedestrian speed in jordan with investigation of some contributing factors. Journal of Safety Research 32(2) (2001) 229 – 236 12