OSIRIS Framework: construindo sistemas de monitoramento com redes de sensores sem fio para compartilhar dados - PDF
OSIRIS Framework: construindo sistemas de monitoramento com redes de sensores sem fio para compartilhar dados
Download "OSIRIS Framework: construindo sistemas de monitoramento com redes de sensores sem fio para compartilhar dados"
Ruy Bentes Dreer
1 OSIRIS Framework: construindo sistemas de monitoramento com redes de sensores sem fio para compartilhar dados Felipe Santos, Raphael Guerra 1 Laboratório Tempo Instituto de Computação Universidade Federal Fluminense (UFF), Niterói/RJ, Brasil Abstract. Physical components of wireless sensor networks (WSNs) are highly heterogeneous, suffer damage, are replaced, data is generated massively and must be managed, stored and made available to other systems. In this paper, we propose the OSIRIS, which provides resources for monitoring the WSN, collecting, processing, and storing data, and an interface for providing data to other applications and/or systems. OSIRIS uses a set of abstractions to offer flexibility for the creation of various monitoring systems and to decouple network physical sensors from data consuming applications. We used OSIRIS to build a thermal monitoring system for datacenters. Resumo. Componentes físicos de redes de sensores sem fio são altamente heterogêneos, sofrem avaria, são substituídos, dados são gerados massivamente e devem ser gerenciados, armazenados e compartilhados com outros sistemas. Neste trabalho, propomos o framework OSIRIS, o qual oferece recursos para coletar, processar, armazenar e disponibilização dados da rede sensora para outras aplicações e/ou sistemas, além de monitorar a própria rede sensora. O diferencial do OSIRIS é a flexibilidade na criação de sistemas de monitoramento diversos e o desacoplamento entre a rede de sensores físicos e a aplicação final, que é obtido a partir de um conjunto de abstrações definidos no framework. Nós utilizamos o OSIRIS para construir um sistema de monitoramento térmico em centros de processamento de dados. 1. Introdução Redes de sensores sem fio consistem de pequenos sensores com limitados recursos computacionais que trabalham em grupo de forma inteligente para atingir seus objetivos. A utilização destas redes em aplicações práticas tem como maior desafio a limitação energética e a baixa capacidade de processamento dos nós [Yick et al. 2008]. Diversas aplicações destas redes já foram propostas na literatura [Suzuki et al. 2007, Wang et al. 2011, Zanatta et al. 2014], inclusive para ambientes inteligentes e Internet das Coisas [Piyare and Lee 2013, Kelly et al. 2013, Zhong et al. 2014]. O compartilhamento de dados coletados com outras aplicações representa um desafio adicional à implantação de sistemas baseados em redes de sensores sem fio. Dentre os desafios para esta interoperabilidade, podemos citar a natureza altamente heterogênea das redes de sensores sem fio e a conectividade volátil dos nós. Além disso, o tráfego gerado em cada requisição de dados aumenta o consumo de energia da rede. Estes dados muitas vezes ainda precisam ser processados antes de utilizados para oferecer uma
2 visão mais completa e robusta do ambiente monitorado, técnica conhecida como fusão de dados [Durrant-Whyte and Henderson 2008]. Neste contexto, faz-se necessário uma infraestrutura capaz de coletar, processar, armazenar e compartilhar entre várias aplicações concorrentes dados provenientes de diferentes fontes de maneira padronizada e flexível, além de gerenciar a rede coletora ao mesmo tempo em que esconde detalhes intrínsecos da forma como os dados são obtidos. Construir esta infraestrutura do zero para cada sistema de monitoramento é uma tarefa custosa. Em nossa revisão bibliográfica, o SenseWeb [Kansal et al. 2007] é a proposta de uma infraestrutura para compartilhamento de dados sensoriais que mais se assemelha ao nosso trabalho. Como podemos ver na Figura 1, ele define 4 componentes principais: sense gateway, mobile proxy, coordinator e data transformer. O sense gateway e o mobile proxy provêm uma interface uniforme para a comunicação com os sensores. O coordinator armazena dados em cache para minimizar o fluxo de dados proveniente diretamente dos sensores e gerencia as necessidades de sensoriamento de cada aplicação para localizar os sensores apropriados. Finalmente, o data transformers manipula os dados coletados antes de repassá-los para as aplicações, seja para melhor visualização, conversão de unidade ou filtragem. Observamos que não há cache ou armazenamento persistente de dados provenientes de data transformers. Logo, dados crus que precisam ser manipulados antes de repassados às aplicações devem ser processados a cada solicitação. Aplicações também precisam estar cientes da necessidade de realizar estas transformações. Além disso, se duas aplicações distintas solicitam dados da mesma rede sensora, haverá tráfego de dados na rede para cada solicitação, o que aumenta o consumo energético. Notamos também que o coordinator é um elemento centralizador, o que compromete a escalabilidade. Finalmente, o SenseWeb não oferece um elemento para gerenciar o funcionamento das redes de sensores sem fio, como consumo de energia, estado da árvore de roteamento, etc. Nossa proposta é o OSIRIS Framework (veja a Figura 2). Ele consiste de 4 módulos principais: Collector, SensorNet, VirtualSensorNet e DBManager. O Collec- Sensores Sensores Virtuais... SensorNet VirtualSensorNet DBManager Camada de comunicação Collectors Applications Figura 1. Arquitetura do SenseWeb. Figura 2. Arquitetura do OSIRIS.
3 tor é o gateway que extrai dados da rede sensora e os transfere para o OSIRIS, podendo haver vários deles para uma mesma rede. O SensorNet é a representação em software do estado atual da rede física e de seus sensores, armazenando dados e metadados como nível de bateria, leitura atual de cada sensor, grafo de roteamento de dados, etc. O VirtualSensorNet é a entidade gerenciadora dos VirtualSensors, a abstração de um sensor do ponto de vista das aplicações. O VirtualSensor esconde da aplicação a fonte dos dados, podendo a fonte ser um sensor físico diretamente ou um processamento de dados proveniente de vários sensores (para tolerância a falhas, fusão de dados, entre outros). O DBManager recebe requisições do SensorNet e do VirtualSensorNet para armazenar e retornar dados. Todos estes módulos são distribuídos e se comunicam por meio de uma Camada de Comunicação. O SensorNet e o VirtualSensorNet evitam que sucessivas consultas aos dados de uma mesmo sensor gere tráfego extra na rede sensora física, economizando energia. Além disso, o VirtualSensorNet permite que dados processados da rede física sejam armazenados e disponibilizados como se fossem provenientes diretamente de sensores. Esta abstração reduz a carga de processamento no framework e o acoplamento entre as aplicações e a natureza original dos dados como obtidos diretamente da rede física. O posicionamento estratégico dos Collectors oferece tolerância a falhas e reduz o tráfego dentro da rede por oferecer várias opções de rota de saída para os dados coletados. O DBManager permite a consulta de históricos sempre que necessário. O resto deste documento está estruturado da seguinte forma. A Seção 2 descreve a camada de comunicação, e a Seção 3, os módulos do OSIRIS. Em seguida, apresentamos na Seção 4 uma implementação de um sistema de monitoramento térmico sobre o OSIRIS. Esta implementação será demonstrada no evento. Finalmente, a Seção 5 traz as conclusões e propostas de trabalhos futuros. 2. Camada de comunicação do OSIRIS No OSIRIS, os módulos podem se comunicar de maneira síncrona ou assíncrona para efetuar requisições, retornar repostas e difundir mensagens de eventos. Os módulos que requerem respostas às suas requisições comunicam-se de forma síncrona como uma transação atômica. Ou o cliente recebe a resposta à requisição enviada, ou a ação solicitada não é efetuada no servidor. Há também módulos que necessitam apenas divulgar mensagens sobre um determinado estado de seus recursos para um número indeterminado de interessados seguindo o padrão publish-subscribe. Estes módulos realizam uma comunicação assíncrona com garantia de entrega, mas sem confirmação de recebimento. O OSIRIS define grupos de mensagens para o envio de mensagens assíncronas. Qualquer módulo interessado nas mensagens de um grupo deve subscrever-se no respectivo grupo. O OSIRIS já define alguns grupos de mensagens padrões, que serão discutidos na Seção 3, e o desenvolvedor que estende o OSIRIS pode criar novos grupos conforme julgar necessário para a sua aplicação de monitoramento. A troca de mensagens é feita usando o OMCP - OSIRIS module communication protocol - um protocolo de comunicação de baixo acoplamento desenvolvido para a comunicação entre os módulos do OSIRIS. Baseado no estilo arquitetural REST [Fielding 2000], o OMCP define 5 métodos: GET, POST, PUT, DELETE e NO- TIFY. Os quatro primeiros métodos são chamadas RPC síncronas e bloqueantes que ne-
4 cessitam de retorno obrigatório. Se o recebimento da mensagem de resposta não for confirmado, a ação não é executada no servidor. O GET recupera informações de um recurso, o POST cria um novo recurso, o PUT atualiza um recurso e o DELETE apaga um recurso existente. Já o NOTIFY é um método sem retorno não-bloqueante utilizado notificação assíncrona (publish-subscribe). 3. Módulos do OSIRIS O OSIRIS consiste de um conjunto de módulos especializados que cooperam entre si. Temos para a coleta de dados o módulo Collector, para o processamento e disponibilização de dados o módulo VirtualSensorNet, para o a persistência de dados o DBManager e para o monitoramento da rede sensora o módulo SensorNet. As próximas seções descrevem estes módulos com mais detalhes Collector O Collector é o módulo que conecta o framework à rede de sensores, capturando passivamente (sumidouro) dados provenientes da rede de sensores para alimentar os outros módulos do OSIRIS. O Collector empacota os dados adquiridos para repassá-los ao framework, atribuindo-lhes propriedades de rastreabilidade como a qual rede, coletor e sensor o dado pertence. É no Collector que os dados devem ser estritamente tratados, descritos em detalhes, com identificações sobre o valor, o nome do campo (temperatura, pressão, luminosidade, etc.), o tipo do valor do dado no ambiente computacional (integer, bool, real, text, etc.), a unidade de medida do valor (Celsius, volt, ampere, entre outros) e o símbolo da unidade de medida (Hz, V, A, entre outros). Por exemplo, uma amostra de temperatura teria para a tupla <valor, campo, tipo, unidade, símbolo> os valores <30.5, temperatura, real, Celsius, C>. Cada instância em execução do Collector deve possuir um identificador para si e um outro para qual rede ele pertence. Se todos os sensores enviam os dados para uma determinada base, o Collector deve fazer parte desta base para receber os dados e repassálos ao OSIRIS por meio do grupo de mensagens dedicado as mensagens do Colletor, chamado de omcp://collector.messagegroup.osiris/ SensorNet O SensorNet é o módulo responsável por monitorar a rede física e emitir notificações quando alterações ocorrem na rede. Ele mapeia os dados e metadados da rede de sensores para o ambiente computacional, organizando os dados logicamente utilizando os seguintes recursos: Networks Mapeamento para armazenar dados sobre todas as redes de sensores monitoradas com o SensorNet. Collectors Em cada rede monitorada, um ou mais coletores devem existir, sendo estes alocados neste recurso. Sensors Os sensores são alocados neste recurso, que é parte constituinte dos recursos Collectors e Networks. O SensorNet funciona da seguinte maneira. As mensagens de captura enviadas pelos Collectors são capturadas pelo SensorNet. Para tanto,
5 ele se inscreve no grupo de mensagens de divulgação de dados do coletor, omcp://collector.messagegroup.osiris/. Os dados coletados são utilizados para atualizar os respectivos recursos, caso sejam dados de um recurso já existente, ou para instruir o módulo a criar novos recursos. Como a rede sensora sem fio pode enviar dados replicados ou fora de ordem, o SensorNet requer a especificação de um campo identificador nos dados coletados para não atualizar o estado de um sensor com informação antiga nem repassar informação replicada. O SensorNet também verifica periodicamente se seus recursos estão sendo atualizados. Caso não estejam, o SensorNet altera o estado deste sensor para desativado e emite uma notificação para o sistema informando que o determinado recurso está inativo. A notificação é enviada para o grupo de mensagens omcp://notification.messagegroup.osiris/. Uma posterior atualização muda o estado do recurso para ativo novamente. Um sensor também pode estar no estado atualizado (se acabou de receber uma atualização de dados), novo (se acabou de ser criado), reativado (se estava inativo e voltou a funcionar) ou malfuncionamento (se alguns de seus dados não são atualizados ou recebem valores estranhos). Logo, este módulo evita que consultas sobre a rede de sensores sejam repassadas diretamente para a rede física, o que reduz o tráfego na rede, economiza energia e abstrai a alta heterogeneidade intrínseca de redes de sensores sem fio VirtualSensorNet O VirtualSensorNet é o módulo responsável por desacoplar os dados coletados dos dispositivos físicos (fontes geradoras) existentes na rede de sensores. Sendo assim, ele é uma abstração entre as aplicações e as fontes geradoras. O VirtualSensorNet pode ainda tratar os dados obtidos antes de disponibilizá-los para as aplicações. Desta forma, alterações nas fontes geradoras são invisíveis para as aplicações consumidoras de dados. O VirtualSensorNet utiliza os sensores virtuais, que são unidades sensoras de software. Existem 3 tipos de sensores virtuais: Link, Composite e Blending. Os sensores virtuais do tipo Link podem vincular-se a um sensor físico e armazenar seus dados. Ele permite também a ampliação ou a substituição dos dispositivos físicos, pois pode alterar a sua fonte de dados mesmo depois de criado. Os sensores virtuais do tipo Composite são capazes de compor um novo sensor virtual a partir da seleção de campos de diversos sensores virtuais existentes. A composição roteia os dados já armazenados para o novo sensor virtual, sem duplicação de dados. Os sensores virtuais do tipo Blending são a especialização projetada para realizar o processamento de dados sobre um conjunto de sensores virtuais. O sensor virtual do tipo Blending contém um conjunto de sensores virtuais e uma função para o processamento. As funções atuam como módulos do OSIRIS e recebem como parâmetro os sensores virtuais selecionados para processar o conjunto de dados. Ao termino da operação, as funções enviam o resultado para o Blending, para que o valor seja adicionado como um dado de leitura deste sensor. Com Blendings podemos implementar fusões de dados, conversões métricas, tolerância a falhas, entre outros. Similar ao SensorNet, o VirtualSensorNet emite notificações sobre mudanças de estados de seus sensores virtuais para as aplicações interessadas. As notificações
6 são enviadas para o mesmo grupo de mensagens utilizado pelo SensorNet, o grupo omcp://notification.messagegroup.osiris/ DBManager O DBManager é módulo projetado para o armazenamento de dados do OSIRIS e trabalha diretamente com a persistência de dados do SensorNet e do VirtualSensorNet. Sua tarefa é o armazenamento os dados de maneira inteligente, gerando o mínimo possível de duplicação dos dados compartilhados entre o SensorNet e o VirtualSensorNet. Outra característica do DBManager é otimizar as operações de busca e armazenamento de dados. O DBManager não possui nenhum grupo de mensagens, e as comunicações com ele são sempre realizadas por meio de métodos síncronos. 4. Implementação de um Sistema de Monitoramento Térmico Qualquer sistema de monitoramento e controle térmico deve, essencialmente, coletar dados sensoriais da temperatura do ambiente e agir sobre o ambiente monitorado de modo a manter a temperatura dentro do patamar desejado. Na demonstração que apresentaremos no evento, utilizamos o OSIRIS para construir o TMON, um sistema de monitoramento térmico para centros de processamento de dados. Seu código fonte e documentação da instalação estão disponíveis no link https://github.com/labtempo/tmon/, onde o menu WiKi contém o manual de instalação e uso. Nossa implementação assume a existência de uma camada de coleta de dados com redes de sensores sem fio. Neste trabalho, usamos a mesma rede sensora proposta por Zanatta et al [Zanatta et al. 2014]. O TMON apresenta gráficos com as leituras de temperatura de cada sensor, cálculo da média de temperatura na sala, e o monitoramento do estado da rede sensora, tudo disponibilizado para o usuário por meio de uma interface de visualização Web. O monitoramento do funcionamento da rede de sensores sem fio é realizado com informações sobre a atividade dos sensores, a topologia da rede e o nível de bateria de cada nó. Nós usamos o módulo SensorNet para realizar o monitoramento da rede de sensores sem fio. Com os dados obtidos do SensorNet (sensor, network, collector), foi possível a construção do grafo da rede sensora. Parâmetros de informação adicionais foram utilizados para declarar o parentesco dos sensores e o papel de atuação (sensor e/ou roteador). A Figura 3 mostra um grafo da topologia de roteamento de dados da rede sensora na nossa interface Web. Nesta figura, é possível visualizar a organização da rede sensora em forma de árvore, formada pela relação pai-filho entre os nós. As cores dos nós indicam se estão ativos ou inativos (verde ou vermelho); o nó azul é a estação base. Também vemos os números identificadores de cada nó. A Figura 4 apresenta o nível de energia de um nó. Todos os nós da rede possuem bateria, mesmo que não estejam realizando a função de captura. Para o monitoramento do ambiente, a Figura 5 apresenta o mapa térmico do CPD, com a temperatura capturada sobre cada ponto da sala em um dado instante. Já a Figura 6 apresenta um gráfico, na parte superior, com a temperatura média da sala do CPD. Dados de temperatura de cada sensor e da temperatura média da sala do CPD foram implementadas com o OSIRIS utilizando os sensores virtuais. Os sensores virtuais são capazes de
7 Figura 3. Grafo da rede sensora. Figura 4. Consumo de energia. Figura 5. Leitura de temperatura de cada sensor. Figura 6. Cálculo da temperatura média da sala. operar sobre um conjunto de sensores virtuais, processando a informação de temperatura média do ambiente e atribuindo este resultado como uma nova medida de um sensor virtual. A fonte dos dados (sensor físico ou processamento) é completamente indiferente para a aplicação de visualização, que enxerga tudo como sendo um dado de sensor. 5. Conclusão O compartilhamento de dados coletados com outras aplicações representa um desafio adicional à implantação de sistemas baseados em redes de sensores sem fio. Neste trabalho, apresentamos o OSIRIS, uma infraestrutura capaz de coletar, processar, armazenar e compartilhar entre várias aplicações concorrentes dados provenientes de diferentes fontes de maneira padronizada e flexível, além de gerenciar a rede coletora ao mesmo tempo em que esconde detalhes intrínsecos da forma como os dados são obtidos. O OSIRIS ainda oferece abstrações para representar em software o estado atual dos sensores físicos (o SensorNet) e para abstrair das aplicações consumidoras de dados quem são as fontes geradoras de dados (o SensorNet). Neste trabalho, demonstramos uma aplicação deste framework para construir um sistema de monitoramento térmico. Vimos que o pequeno conjunto de abstrações de-
8 finidos pelo OSIRIS é capaz de expressar os mais diversos requisitos de um sistema de monitoramento que precisa processar dados coletados e disponibilizá-los para outras aplicações. Dentre os trabalhos futuros, destacamos a necessidade de descentralizar o SensorNet e o VirtualSensorNet. Além disso, a inclusão de um localizador de dados, como no SenseWeb [Kansal et al. 2007], automatizaria a tarefa de encontrar sensores virtuais que atendam aos interesses das aplicações e de vincular sensores virtuais a sensores do SensorNet. Referências Durrant-Whyte, H. and Henderson, T. (2008). Multisensor data fusion. In Siciliano, B. and Khatib, O., editors, Springer Handbook of Robotics, pages Springer Berlin Heidelberg. Fielding, R. T. (2000). Architectural Styles and the Design of Network-based Software Architectures. PhD thesis. AAI Kansal, A., Nath, S., Liu, J., and Zhao, F. (2007). SenseWeb: an infrastructure for shared sensing. IEEE MultiMedia, 14(4):8 13. Kelly, S., Suryadevara, N., and Mukhopadhyay, S. (2013). Towards the implementation of iot for environmental condition monitoring in homes. Sensors Journal, IEEE, 13(10): Piyare, R. and Lee, S. R. (2013). Towards internet of things (iots): Integration of wireless sensor network to cloud services for data collection and sharing. CoRR, abs/ Suzuki, M., Saruwatari, S., Kurata, N., and Morikawa, H. (2007). A high-density earthquake monitoring system using wireless sensor networks. In Proceedings of the 5th International Conference on Embedded Networked Sensor Systems, SenSys 07, pages , New York, NY, USA. ACM. Wang, B., Guo, X., Chen, Z., and Shuai, Z. (2011). Application of wireless sensor network in farmland data acquisition system. In Zhang, J., editor, Applied Informatics and Communication, volume 226 of Communications in Computer and Information Science, pages Springer Berlin Heidelberg. Yick, J., Mukherjee, B., and Ghosal, D. (2008). Wireless sensor network survey. Computer Networks, 52(12): Zanatta, G., Bottari, G. D., Guerra, R., and Leite, J. C. B. (2014). Building a WSN infrastructure with COTS components for the thermal monitoring of datacenters. In Symposium on Applied Computing, SAC 2014, Gyeongju, Republic of Korea - March 24-28, 2014, pages Zhong, D., Lv, H., Han, J., and Wei, Q. (2014). A practical application combining wireless sensor networks and internet of things: Safety management system for tower crane groups. Sensors, 14(8):