universidade federal do ceará campus quixadá tecnólogo em redes

Propaganda
UNIVERSIDADE FEDERAL DO CEARÁ
CAMPUS QUIXADÁ
TECNÓLOGO EM REDES DE COMPUTADORES
ALEXSANDERSON VIEIRA SANTOS
UMA SOLUÇÃO SDN PARA A COMUNICAÇÃO MESH DE NÓS EM
UMA REDE ZIGBEE PADRÃO 802.15.4
QUIXADÁ
2015
ALEXSANDERSON VIEIRA SANTOS
UMA SOLUÇÃO SDN PARA A COMUNICAÇÃO MESH DE NÓS EM
UMA REDE ZIGBEE PADRÃO 802.15.4
Trabalho de Conclusão de Curso submetido à Coordenação do
Curso Tecnólogo em Redes de Computadores da Universidade
Federal do Ceará como requisito parcial para obtenção do grau de
Tecnólogo.
Área de concentração: Redes de Computadores
Orientador Profº. MSc. Michel Sales Bonfim
QUIXADÁ
2015
Dados Internacionais de Catalogação na Publicação
Universidade Federal do Ceará
Biblioteca do Campus de Quixadá
S235s
Santos, Alexsanderson Vieira
Uma solução SDN para comunicação mesh de nós em uma rede Zigbee padrão 802.15.4 /
Alexsanderson Vieira Santos. – 2015.
56 f. : il. color., enc. ; 30 cm.
Monografia (graduação) – Universidade Federal do Ceará, Campus de Quixadá, Curso de
Tecnologia em Redes de Computadores, Quixadá, 2015.
Orientação: Prof. Me. Michel Sales Bonfim
Área de concentração: Redes de Computadores
1. Internet das coisas 2. Roteadores (Redes de computadores) 3. Redes definidas por software I.
Título.
CDD 004.6
ALEXSANDERSON VIEIRA SANTOS
UMA SOLUÇÃO SDN PARA A COMUNICAÇÃO MESH DE NÓS EM
UMA REDE ZIGBEE PADRÃO 802.15.4
Trabalho de Conclusão de Curso submetido à Coordenação do Curso Tecnólogo em Redes
de Computadores da Universidade Federal do Ceará como requisito parcial para obtenção
do grau de Tecnólogo.
Área de concentração: Redes de Computadores
Aprovado em: 29 / junho / 2015.
BANCA EXAMINADORA
_____________________________________
Profª. MSc. Michel Sales Bonfim (Orientador)
Universidade Federal do Ceará-UFC
_________________________________________
Prof. Dr. Atslands Rego Rocha
Universidade Federal do Ceará-UFC
_________________________________________
Prof. MSc. Marcos Dantas Ortiz
Universidade Federal do Ceará-UFC
À minha adorável namorada...
AGRADECIMENTOS
Agradeço primeiramente a Deus por ter me ajudado a chegar até aqui, e minha família
que me deu suporte tanto financeiro quanto sentimental para continuar meu caminho na
universidade.
Agradeço a minha namorada, que nos momentos mais difíceis da minha caminhada ela
sempre esteve lá para me dar apoio.
Ao Prof. MSc. Michel Sales por acreditar que este projeto seria capaz, e sempre estar
disponível para me ajudar com possíveis dúvidas.
Agradeço aos professores que aceitaram participar da banca de defesa, Prof. MSc.
Marcos Dantas, Profª Drª Atslands Rego da Rocha.
Aos colegas da universidade, pois durante esses anos compartilhamos conhecimentos e
aprendemos muito.
"Desistir é a saída dos fracos. Insistir é a alternativa dos fortes."
(Desconhecido)
RESUMO
Internet das coisas (IoT) é um novo paradigma que vem ganhando grande importância em
telecomunicações nos últimos tempos. A ideia básica por trás desse paradigma é conectar uma
grande quantidade de objetos dos mais variados tipos, em rede, podendo utilizar esquemas de
endereçamento únicos, e assim interagir uns com os outros. O padrão IEEE 802.15.4 define o
protocolo ZigBee, e alguns pontos importantes são o baixo consumo de energia e baixo custo de
rede sem fio. Um dos principais algoritmos de roteamento adotados no ZigBee é o AODV que é
utilizado como padrão, tem a característica de gerar um grande número de pacotes trafegados
na rede, o que aumenta o overhead da rede e consequentemente piora a escalabilidade da rede.
Outro problema do padrão 802.15.4 ZigBee é que o usuário fica limitado apenas ao que é
disponibilizado por padrão, ou seja, o software que é desenvolvido para funcionar no firmware
do dispositivo da rede ZigBee, não deixa que novas funcionalidades sejam aplicadas. Redes
Definidas por Software (SDN) é um novo paradigma em redes de computadores com o objetivo
de separar plano de controle, responsável pelo gerenciamento e protocolos da rede, e plano de
dados, responsável pelo encaminhamento de pacotes. Os problemas encontrados no padrão
802.15.4 ZigBee podem ser resolvidos com a utilização do paradigma SDN, pois ele propõe um
modelo de gerenciamento centralizado por software, ou seja, com a separação do plano de
controle e dados, o plano de controle fica mais flexível para o desenvolvimento de novos
recursos e funcionalidades para a rede, tornando a rede mais fácil a manutenção, necessitando
apenas uma breve configuração dos dispositivos ZigBee. O principal objetivo deste trabalho é
propor uma solução de roteamento reativo, baseado em um modelo inicial SDN, para a
comunicação Mesh em ambientes de Internet das Coisas que utilizam o padrão 802.15.4. A
proposta desse trabalho é uma solução SDN para o roteamento mesh em infraestruturas de rede
IoT que realizam sensoriamento, como alternativa ao uso do protocolo AODV. Essa solução foi
avaliada a partir de um estudo de caso onde foi montada uma rede de testes em que as decisões
de roteamento são tomadas por uma aplicação em um nó central coordenador da rede ZigBee.
Palavras chave: Internet das Coisas. Redes ZigBee. Redes Definidas por Software.
ABSTRACT
Internet of Things (IoT) is a new paradigm that has gained great importance in
telecommunications in recent times. The basic idea behind this paradigm is to connect a lot of
objects of all kinds in the network and can use unique addressing schemes, and thus interact
with each other. The IEEE 802.15.4 standard defines the ZigBee protocol, and some important
points are the low power consumption and low cost of wireless network. A major routing
algorithms adopted in ZigBee is AODV which is used as a standard has the characteristic of
generating a large number of trafficked packets in the network, increasing network overhead
and consequently worsening the scalability of the network. Another problem 802.15.4 ZigBee
standard is that the user is limited only to what is available by default, that is, software that is
designed to work in the ZigBee network device firmware, do not let that new features are
implemented. Software Defined Networking (SDN) is a new paradigm in computer networks in
order to separate control plane, responsible for managing and network protocols, and data plan,
responsible for packet forwarding. The problems found in ZigBee 802.15.4 standard can be
solved using the paradigm SDN as it proposes a centralized management model for software, ie
the separation of control and data plane, the control plane is more flexible for the development
of new features and functionality to the network, making it easier to maintain network,
requiring only a brief configuration of ZigBee devices. The main objective of this work is to
propose a reactive routing solution, based on an initial model SDN, for Mesh communication
Internet of Things environments using the 802.15.4 standard. The purpose of this work is an
SDN solution for mesh routing in IoT network infrastructures that perform sensing, as an
alternative to using the AODV protocol. This solution was evaluated from a case study where a
test network in which routing decisions are made by an application on a central node ZigBee
network coordinator was mounted.
Keywords: Internet of Things. ZigBee Networks. Software Defined Networks.
LISTA DE ILUSTRAÇÕES
Figura 1 - Camadas SDN
21
Figura 2 - Arquitetura SDN
22
Figura 3 - Camadas Funcionais ZigBee e Pilha de Protocolos
27
Figura 4 - Dispositivos e Topologias ZigBee
28
Figura 5 - Transceptor de rádio frequência XBee
29
Figura 6 - Representação da comunicação UART
30
Figura 7 - Representação de uma transmissão Broadcast em uma rede ZigBee
33
Figura 8 - Esquema de envio do Many to One
35
Figura 9 - Placa Arduíno UNO
36
Figura 10 - Placa Arduíno como base, e o transceptor sem fio XBee adicionado a Shield
37
Figura 11 - Esquema de camadas da proposta
40
Figura 12 - Equipamento SDNRouter, Arduíno e Shield com módulo XBee
42
Figura 13 - Módulo XBee PRO com adaptador de entrada microUSB XBee-Explorer
43
Figura 14 - Exemplo de funcionamento Many to One
47
Figura 15 - Estabelecimento do Canal de Controle, Many to One e Route Record Indicator 47
Figura 16 - Solicitação da tabela de vizinhos e da criação de nós na topologia virtual
48
Figura 17 - Exemplo funcionamento Algoritmo de Dijkstra
49
Figura 18 - Solicitação de Rota e Envio de Comando
50
Figura 19 - Esquema da LED na nossa solução
50
Figura 20 - Topologia do experimento
51
Figura 21 - LED do experimento apagada
52
Figura 22 - LED do experimento acesa
52
Tabela 1 - Estruturas de dados do SDNRouter, e exemplos
42
Tabela 2 - Estruturas de dados da aplicação e alguns exemplos
44
Tabela 3 - Mensagens utilizadas no estabelecimento do canal de controle
45
Tabela 4 - Mensagens utilizadas na etapa estabelecimento de rotas para o tráfego de dados
49
Tabela 5 - Dados do arquivo de LOG
53
Tabela 6 - Pacote Exemplo Route Record
54
Tabela 7 -Create Source Route
55
SUMÁRIO
1 INTRODUÇÃO.....................................................................................................................11
2 TRABALHOS RELACIONADOS........................................................................................14
3 OBJETIVOS..........................................................................................................................15
4 FUNDAMENTAÇÃO TEÓRICA.........................................................................................16
4.1 Redes Definidas Por Software.......................................................................................16
4.2 Internet das Coisas.........................................................................................................19
4.3 ZigBee............................................................................................................................22
4.4 Arduíno..........................................................................................................................31
5 PROPOSTA............................................................................................................................36
5.1 Visão Geral.....................................................................................................................36
5.2 Arquitetura e Implementação.........................................................................................37
5.3 Funcionamento...............................................................................................................41
6 EXPERIMENTOS..................................................................................................................47
7 CONCLUSÃO.......................................................................................................................53
REFERÊNCIAS........................................................................................................................54
APÊNDICES.............................................................................................................................57
APÊNDICE A - LOGS DO EXPERIMENTO......................................................................57
11
1 INTRODUÇÃO
Daqui há 20 anos, de acordo com Evans (2011), o número de dispositivos conectados à
Internet será muito maior do que o número de "pessoas" e todos esses objetos poderão se
comunicar e trocar informações. Estamos entrando em uma nova era da ubiquidade, na era da
Internet das Coisas (IoT – Internet of Things) em que novas formas de comunicação entre o ser
humano e as coisas, e entre as próprias coisas serão realizados (TAN, 2010).
De acordo com Huang (2014), a definição de IoT é que todas as coisas que são,
equipamentos digitais, e estejam conectadas em rede, possibilitem o acesso de suas
informações através de uma fácil comunicação entre as coisas e coisas, coisas e pessoas,
pessoas e o contexto do ambiente.
Em 2003, o padrão IEEE 802.15.4 foi desenvolvido e ele define a tecnologia ZigBee.
Este padrão de comunicação foi desenvolvido pela ZigBee Aliance, em parceria com a IEEE, e
tem o objetivo de disponibilizar uma rede de baixa potência de operação, o que ocasionaria um
baixo consumo de energia nos dispositivos, aumentando a vida útil das baterias, caso
utilizassem, e da rede em que estivessem inseridos esses dispositivos. Dentre as suas principais
características temos: o baixo consumo de energia e baixo custo de rede sem fio para ambientes
residenciais e industriais. A especificação do ZigBee define camada de rede, camada de
aplicação e estratégias de segurança correlatas (KREUTZ, 2015).
O padrão ZigBee provê uma comunicação Mesh entre seus dispositivos, ou seja, todos
os nós estão aptos a se comunicar e trocar informações. Uma das qualidades no modelo Mesh é
a redundância na rede, pois caso a comunicação entre alguns dispositivos falhe, não causará
danos graves no roteamento dos dados na rede. O protocolo mais utilizado na implementação
de redes Mesh ZigBee é o Ad Hoc On-Demand Distance Vector (AODV), em que os dados são
roteados através de multiplos altos (multi-hop) na rede. Entretanto, o problema de se utilizar
esse protocolo é que o alto número de pacotes broadcast que são enviados na rede gera um
aumento do overhead, afetando a escalabilidade da rede (KREUTZ, 2015).
Além dos problemas do AODV, outra problemática no padrão ZigBee é a falta de
flexibilidade para a implementação de novos recursos em hardwares proprietários, ou seja, o
software que é disponibilizado no firmware do dispositivo ZigBee, apenas disponibiliza
algumas funcionalidades por padrão, e não deixa que novas sejam implementadas. Sendo assim,
o usuário ou fica limitado pelo o que é disponibilizado por padrão no dispositivo, ou terá que
12
trabalhar com interfaces de baixo nível, dificultando ou até impossibilitando o desenvolvimento
de funções avançadas na rede, como balanceamento de carga. Para solucionar os problemas
anteriores, pode-se utilizar Redes Definidas por Software (Software Defined Network - SDN).
SDN é um novo paradigma em redes de computadores que tem como o objetivo separar o plano
de controle e o plano de dados de uma rede. O plano de controle é o responsável pelos
protocolos e pelas tomadas de decisões que resultam na confecção das tabelas de fluxo,
enquanto o plano de dados cuida da comutação e repasse dos pacotes na rede, ou seja, é a parte
física da rede que conterá apenas a função de repasse dos dados de acordo com as regras
disponíveis na tabela de fluxo (COSTA, 2013).
Este trabalho propõe uma solução SDN para o roteamento mesh em infraestruturas de
IoT que realizam sensoriamento. Tal solução propõe a separação do plano de controle e de
dados utilizando os recursos (mensagens e protocolos) do módulo XBee, provendo uma
ferramenta de gerenciamento centralizado da rede (controlador), uma aplicação com a função
de realizar um roteamento reativo, baseado na qualidade de link, e um ambiente que permite
implementação de novas soluções de roteamento.
Nossa solução foi avaliada através de um estudo de caso realizado em uma rede de
testes com dispositivos Arduinos, equipados com módulos Xbee, além de um nó XBee
coordenador.
O restante do trabalho está organizado como segue. A seção 2 deste artigo descreve
os trabalhos relacionados. Na seção 3 será a fundamentação teórica com as explicações dos
principais pontos abordados neste trabalho. Na seção 4 descrevemos as características,
arquitetura e funcionameno da nossa proposta. A seção 5 abordará os experimentose a análise
dos resultados obtidos no trabalho. Na seção 6 terá uma breve discussão acerta do tema
abordado. Por último a seção 7 conterá as considerações finais.
13
2 TRABALHOS RELACIONADOS
Flauzac et al. (2015) apresenta um novo modelo de arquitetura baseada em SDN para
redes IoT. A proposta central desse trabalho é o controlador de borda, interconectando várias
redes IoT, e as funcionalidades de decisão de rotas paras as redes são distribuídas entres os
controladores de borda, ou seja, a idéia de SDN estará aplicada somente entre os roteadores que
interligam essas redes, e deixando as determinadas decisões de rotas dentro das redes com a
arquitetura atua de redes de computadores. Em nossa solução, habilitamos o uso de SDN nos
próprios nós da rede IoT, não apenas nas bordas, possibilitando uma flexibilidade na
implementação de novas funções na rede como um todo.
Qin et al. (2014) propõe uma abordagem de SDN para o ambiente de IoT, para atingir
níveis dinâmicos de qualidade para diferentes cenários de IoT heterogêneas. Sua proposta
utiliza um middleware com um controlador IoT SDN, denominado MINA (Multinetwork
Information Architecture). Este controlador desenvolvido incorpora e suporta comandos de
diferenciação de fluxos, multi-hop, e caminhos heterogêneos Ad-Hoc. Nesta proposta foi
definido como solução para as funcionalidades que uma IoT necessita, uma nova arquitetura
para um controlador de rede, baseado em SDN, contrário com nossa proposta que utiliza uma
solução de SDN de alto nível, em que o controlador é um dispositivo que recebe as mensagens
dos dispositivos da rede IoT e repassa para a camada de aplicação que tratará essas mensagens
de acordo com as aplicações que ali foram desenvolvidas, não necessitando de uma nova
arquitetura para o controlador da rede.
Kin et al. (2014) propõe o protocolo STR (Shortcut Tree Routing), que fornece o
caminho de roteamento ideal, e mantêm as características das topologias de roteamento em
árvore ZigBee, porém com nenhuma descoberta de rota. O protocolo STR é distribuído entre os
dispositivos da rede, compatível com o padrão ZigBee, apenas utiliza o endereçamento e as
tabelas de vizinhos para calcular as rotas. Essa solução é bem parecida com a proposta desse
trabalho, porém sua solução baseia-se em um protocolo de comunicação que estará
implementado em cada dispositivo da rede, ou seja, os próprios dispositivos tem que
encaminhar e decidir o roteamento dos dados, gerando grande overhead. Nossa tira a decisão de
cálculo de rotas dos dispositivos da rede ZigBee, e aplica em uma solução SDN centralizada.
14
3 OBJETIVOS
3.1 Objetivo Geral
Propor uma solução de roteamento reativo, baseado em um modelo inicial SDN, para a
comunicação Mesh em ambientes de Internet das Coisas que utilizam o padrão 802.15.4.
3.2 Objetivos Específicos
● Definir um modelo SDN inicial para um ambiente de IoT que utiliza o padrão 802.15.4,
utilizando os recursos do módulo XBee.
● Definir um modelo de roteamento centralizado e reativo, baseada na qualidade do link.
●
Validar a solução utilizando estudos de caso.
15
4 FUNDAMENTAÇÃO TEÓRICA
A seguir serão abordados os pontos principais da fundamentação teórica para a
realização e sucesso deste trabalho.
4.1 Redes Definidas por Software
Podemos observar com o passar do tempo e com a evolução das redes de computadores,
os dispositivos de rede tornaram seu hardware e software totalmente privado, em contraste a
essa realidade, começou a se desenvolver novas propostas com o ideal de internet do futuro,
uma das formas desenvolvidas é como de prover programabilidade às redes por meio da
implementação de SDN.
As SDNs constituem um novo paradigma para o desenvolvimento de pesquisas em
redes de computadores que vem ganhando a atenção de grande parte da comunidade acadêmica
e da indústria na área (RODRIGUES, 2012).
O princípio por trás das SDNs é possuir a capacidade de controlar o plano de dados
através de uma interface bem definida. O plano de controle tem o objetivo de realizar tomadas
de decisões que resultam na confecção das tabelas de roteamento, e o plano de dados cuida da
comutação e repasse dos pacotes na rede (COSTA, 2013). A figura 1 apresenta as camadas SDN,
com a especificação do plano de dados, controlador da rede e plano de controle.
O paradigma de SDN e o protocolo OpenFlow foram desenvolvidos com o
propósito de viabilizar o desenvolvimento e testes de novas propostas de redes, sem afetar a
rede real ou rede de produção (RODRIGUES, 2012).
A arquitetura atual de roteadores de rede é formada basicamente por duas camadas
distintas, que é o software de controle e o hardware dedicado ao encaminhamento de pacotes.
Em contrapartida a arquitetura das redes SDN subdivide essas camadas de forma que seja
possível programar essa rede, permitindo que o plano de controle possa ser movido para um
servidor dedicado (COSTA, 2013).
Ou seja, SDNs é caracterizada pela existência de um sistema de controle (software)
que pode controlar o mecanismo de encaminhamento dos elementos de comutação da rede por
uma interface de programação bem definida (RODRIGUES, 2012).
Nosso trabalho irá utilizar SDN na centralização das decisões de roteamento em
uma aplicação reativa, ou seja, o plano de dados serão simples roteadores onde suas tabelas de
rotas serão calculadas por uma aplicação criada no plano de controle.
16
Como pode ser visualizado na Figura 1, um controlador SDN atua como um
intermediário entre pedidos e os elementos de rede. Essa abordagem apresenta os dados
provenientes do plano de dados para a camada de aplicações.
Figura 1: Camadas SDN
Fonte: Camadas SDN (2015)
De acordo com Kreutz et al (2014) as vantagens da utilização de SDN são:
A. Torna-se mais fácil a programação de aplicações para essas redes pois uma vez que as
abstrações providas pela plataforma de controle e as linguagens de programação de rede
podem ser compartilhadas.
B. Todas as aplicações podem tirar proveito das mesmas informações de rede (no ponto de
vista de rede global), levando a mais decisões políticas coerentes e eficazes.
C. As aplicações podem tomar medidas a partir de qualquer parte da rede, assim não há a
necessidade de elaborar uma estratégia precisa sobre a localização da nova funcionalidade.
D. A integração de diferentes aplicações torna-se mais simples. Por exemplo, o
balanceamento de carga e aplicações de roteamento podem ser combinados
sequencialmente, tendo procedência sobre políticas de roteamento.
Uma arquitetura SDN pode ser descrita como uma composição de diferentes camadas,
cada camada tem suas próprias funções específicas, enquanto alguns deles estão sempre
presentes em uma implementação de SDN, como a southbound API, NOSs (Network Operating
System - Sistema Operacional de Rede), northbound API, e aplicações de rede. Outros podes
17
estar em implementações específicas, como hipervisor (KREUTZ, 2014). Serão descritas a
seguir os pontos principais da arquitetura SDN de acordo com Kreutz (2014).
Figura 2: Arquitetura SDN
Fonte: Kreutz et al (2014)
A seguir podemos verificar as explicações de cada ponto da arquitetura SDN
exemplificada na figura 2.
I.
Infraestrutura
Uma infraestrutura SDN é de forma semelhante a uma rede tradicional, é composto por
um conjunto de equipamentos (switches, roteadores, etc) de rede. A principal diferença reside
em que esses dispositivos agora são apenas de encaminhamento simples, sem controle ou
software para tomar decisões autônomas. Ou seja, a inteligência da rede é removida desses
dispositivos e incorporado em um sistema de controle lógico.
II. Interfaces Southbound
Interfaces Southbound (ou Southbound API) são as pontes de ligação entre os elementos
de controle e expedição, sendo, portando, o elemento crucial para separar claramente a
funcionalidade de controle e plano de dados. No entanto, essas API’s estão fortemente ligadas
aos elementos de encaminhamento da infraestrutura física ou virtual subjacente. Alguns
exemplos
são
OpenFlow
(MCKEOWN,
2008),
ForCES
(RFC
ForCES,
2015),
Protocol-Oblivious Forwarding (POF) (SONG, 2013).
III. Hypervisors de Rede
Hypervisors permitem que máquinas virtuais distintas compartilhem os mesmos
recursos de hardware. Em uma infraestrutura como serviço em nuvem (IaaS), cada usuário
pode ter seus próprios recursos virtuais, de computação até armazenamento. Uma característica
18
interessante de tecnologias de virtualização é o fato de que as máquinas virtuais podem ser
facilmente migradas de um servidor físico para outro. Exemplos são segundo Kreutz, 2015
VXLAN, NVGRE, FlowVisor.
IV. Network Operating Systems (NOS’s) ou Controladores
Esses sistemas oferecem abstrações para acessar dispositivos de nível mais baixo,
gerenciar o acesso simultâneo aos recursos subjacentes (disco rígido, placa de rede, CPU,
número de elemento do plano de dados). Controladores centralizados, tais como, por exemplo,
NOX-MT (TOOTOONCHIAN, 2012), Maestro (CAI, 2011), Beacon (ERICKSON, 2013) e
Floodlight (PROJECT FLOODLIGHT, 2015), foram concebidos para alcançar taxas de
transferência necessárias em redes de classe empresarial e centros de dados. Esses
controladores são baseados em projetos de vários segmentos para explorar o paralelismo
multicore de computadores.
V. Interfaces Northbound
A interface northbound é principalmente um ecossistema de software, não um hardware,
como é o caso das Southbound. Normalmente, uma interface northbound abstrai os conjuntos
de instruções de baixo nível usadas por southbound interfaces para programar dispositivos de
encaminhamento. Exemplos de acordo com Kreutz, 2015, Frenetic, Nettle, NetCore, Procera e
Pyretic.
VI. Linguagem de Virtualização
É a linguagem que simplifica a tarefa dos desenvolvedores de aplicativos sobre as
regras de encaminhamento. É a simplificação para a camada de controle na comunicação com
os dispositivos do plano de dados. Exemplo de acordo com Kreutz, 2015, Pyretic.
VII. Linguagens de Programação
São as linguagens utilizadas na confecção de aplicações que irão executar no plano de
controle SDN. Exemplo de acordo com Kreutz, 2015, Java, C++.
VIII. Aplicações de Rede
Aplicações propriamente ditas que irão processar os dados do plano de dados e
encaminhar para cada dispositivo decisões de controle.
4.2 Internet das Coisas
Internet das Coisas (IoT – Internet of Things) é um paradigma que rapidamente vem
ganhando importância no cenário das modernas redes de telecomunicações. A ideia básica é
deste conceito é a presença generalizada em torno de nós, com uma variedade de coisas ou
19
objetos como, identificadores de rádio frequência (RFID), tags, sensores, atuadores, smartfones,
etc, que através de esquemas de endereçamento únicas, são capazes de interagir uns com os
outros, e cooperar com seus vizinhos e chegar a objetivos comuns (GIUSTO et al., 2010).
IoT foi inicialmente proposto em 1999 e ele referia-se a unicamente a identificação de
objetos interoperáveis conectados por rádio frequência com tecnologia RFID. No entanto
atualmente a definição de IoT ainda está em processo de formação, porém, alguns autores
definiram como sendo uma infraestrutura de rede dinâmica global com capacidades de
autoconfiguração com base em normas e protocolos de comunicação interoperáveis. Após o
argumento sobre IoT ter sido amplamente discutido, várias tecnologias abordando esse tema
foram rapidamente desenvolvidas, em particular, sensoriamento inteligente, e técnicas de
comunicação sem fio, além de novos desafios de investigação na área de IoT sempre aparecem
(LI et al. 2014).
As aplicações com a utilização de IoT aumentaram acentuadamente. Com o
desenvolvimento de tecnologias e aplicações, grandes mudanças no campo da IoT ocorreram.
O "Relatório da UIT Internet em 2005 informou que a definição e o alcance da IoT mudaram, e
a cobertura foi bastante expandida, ou seja, IoT já não era apenas baseado na tecnologia RFID,
como de primeiramente era inteiramente dependente, agora o conceito mudava e faz com que
qualquer “coisa” a fazer qualquer conexão, a qualquer momento, em qualquer lugar (HUANG,
2014).
IoT permite a coleta de informações, armazenamento e transmissão em dispositivos que
contenham sensores. A sua aplicabilidade tem sido amplamente utilizada na gestão de cadeias
de suprimentos, manufatura, monitoramento ambiental, varejo, operações de prateleiras
inteligentes, cuidados de saúde, indústria de alimentos e restaurantes, indústria logística,
turismo, serviços de biblioteca e muitas outras áreas. A IoT é de grande importância para a
economia e sociedade. Para acelerar as aplicações de IoT, o desenvolvimento de uma
infraestrutura de rede desempenha um papem fundamental (LI et al. 2014).
Atualmente a IoT é aplicado a diversas área com sucesso, de acordo com Li et al. (2014),
seguem algumas aplicações de IoT e as suas vantagens:
A)
Aplicações Industriais
IoT é capaz de melhorar as transações comerciais com redes de serviços mais
inteligentes, isso irá melhorar significativamente a eficiência do processamento de
informações em tempo real e gerenciar aplicações de granulação fina, tais como
20
pagamentos online, armazenamento de dados críticos, Agregação de QoS e indicadores
de desempenho associados.
B)
Social IoT
Recentemente a ideia de integração entre IoT com redes sociais foi proposto, e um novo
paradigma, SIOT (Social Internet das Coisas). SIOT propõe descrever um mundo onde
as coisas ao redor de uma pessoa podem ser detectadas de forma inteligente na rede.
SIOT pode realizar descoberta de serviços de forma eficaz e melhorar a escalabilidade
da IoT semelhante as redes sociais atuais. Segurança de privacidade podem ser
aplicadas em IoT para garantir a integridade e inviolabilidade dos dados da rede.
C)
Aplicações de Saúde
Saúde é uma área de aplicação importante da IoT. Esse conceito é adotado para
melhorar a qualidade de serviço e reduzir custos. Um certo número de dispositivos
médicos são utilizados para monitorar parâmetros de saúde, tais como temperatura
corporal, nível de glicose do sangue e a pressão sanguínea. Avanços em redes de
sensores são a força motriz para a implementação de IoT nos sistemas de saúde. A IoT
pode fornecer sistemas de saúde com a integração de tais dispositivos sensores
heterogêneos para obter uma visão abrangente dos parâmetros de saúde.
D)
Infraestrutura
IoT também pode ser desenvolvido em muitas áreas de infraestrutura, como cidades
inteligentes, monitoramento ambiental e casas e construções inteligentes. Em edifícios
inteligentes IoT é utilizado para melhorar a qualidade da construção e diminuir
desperdícios.
E)
Segurança e Vigilância
Em IoT, as interligações entre os dispositivos podem trazer problemas de segurança sem
precedentes. A forte proteção é necessária para evitar ataques e falhas de funcionamento.
Em redes tradicionais, os protocolos de segurança e garantias de privacidade são
amplamente utilizados para proteger a privacidade e comunicação, no entanto essas
abordagens em redes tradicionais não são suficientes para abordar em IoT, antes de ser
aplicado eles devem ser melhorados.
Embora tenham sido feitos esforços significativos para o desenvolvimento da IoT, ainda
existem vários desafios importantes como projetar um SOA para IoT é um grande desafio, no
21
qual as coisas baseadas em serviços podem sofrer em termos de desempenho, incluindo custo.
Além disso, a composição de serviço automatizado com base nos requisitos de aplicação é
ainda um enorme desafio.
Do ponto de vista de infraestrutura de rede, a IoT é uma rede heterogênea muito
complexa, que inclui a conexão entre vários tipos de redes através de várias tecnologias de
comunicação. Esses dispositivos e as determinadas metodologias para a abordagem de gestão
das coisas ainda é um desafio.
Em um sentido mais restrito, a IoT refere-se à rede que liga as coisas, a fim de realizar a
gestão de identificação inteligente de coisas. Num sentido mais amplo, a IoT pode ser vista
como a integração de espaço de informação e espaço físico, e todas as coisas que são
digitalizados e em rede para que as pessoas possam interagir e acessar as informações de forma
mais eficiente entre as coisas e coisas, coisas e pessoas, pessoas e contexto do ambiente. Além
disso, IoT adota todos os tipos de tecnologia da informação e novos modelos de serviços, assim
integrar a aplicação de informatização na sociedade humana (HUANG, 2014).
A comunicação autônoma entre os dispositivos em uma rede é uma das características
em IoT, nosso trabalho dá uma breve visão dessa cominicação, porém a utilização de IoT nesse
trabalho é a utilização de sua infraestrutura que realiza sensoriamento.
4.3 ZIGBEE
4.3.1 Padrão IEEE 802.15.4
A ZigBee Aliance (ZigBee Alliance, 2005) é uma associação de companhias que
trabalham juntas no desenvolvimento de padrões e produtos com confiança e com baixo
consumo de energia. Essa tecnologia provavelmente será incorporada em uma gama de
produtos e aplicações nas áreas de consumo, comercial, industrial e mercados governamentais
em todo o mundo. O padrão IEEE 802.15.4 (Institute of Electrical and Electronics Engineers,
2003) é responsável pela criação de duas camadas mais baixas da tecnologia ZigBee, que são,
camada física e camada MAC, as vantagens dessas camadas são a facilidade de instalação,
transferência de dados confiável, operação de curto alcance, custo extremamente baixo, e uma
autonomia razoável, mantendo uma pilha de protocolos simples e flexível (BARONTI et al.
2007). A seguir uma exemplificação gráfica na figura 3 das camadas da tecnologia ZigBee.
Figura 3: Camadas Funcionais ZigBee e Pilha de Protocolos
22
Fonte: Barotoni (2007)
ZigBee identifica três tipos de dispositivos, Dispositivo Final ZigBee (DFZ), que atua
como um simples dispositivo na rede, Roteador ZigBee (RZ), que tem as funcionalidades de
roteamento na rede, e o Coordenador ZigBee (CZ) é um dispositivo que gerencia a rede em que
esteja inserido. Além disso a camada ZigBee suporta topologias em estrela, árvore e em malha.
Podemos ver na figura 4 os exemplos de dispositivos em uma rede ZigBee em situações de
topologias diferentes (BARONTI et al. 2007).
Figura 4: Dispositivos e Topologias ZigBee
Fonte: Barotoni (2007)
23
Uma rede é estabelecida por meio do procedimento de associação, ou seja, quando um
dispositivo adere a uma rede existente o processo de descoberta de rede é iniciado. Após a
camada de rede receber um pedido de associação da camada MAC, é enviado para este
dispositivo um endereço de 16 bits.
Redes em Malha, ou redes mesh (Figura 4), são redes em que seus dispositivos estão
interconectados entre só formando uma malha, um dos pontos positivos nessas redes é seu auto
grau de redundância de dados trafegados nessa rede (ESLAMI, 2014).
A camada de aplicação do padrão 802.15.4 define a especificação do aplicativo
correspondente. Especialmente, que define o serviço de ligação o que significa que o serviço de
dados pode ser ligado entre os nodos fixos. A definição de camada de rede ZigBee inclui
topologia de rede, estabelecimento de rede, manutenção de rede, roteamento e seu
manuseamento. ZigBee define três tipos de dispositivos: coordenador ZigBee, roteador ZigBee
e dispositivos finais ZigBee. E três topologias de rede, estrela, árvore e topologia mesh. A
topologia em estrela ZigBee é projetada principalmente para a simples comunicação de um nó
para vários nós. A de árvore usa um mecanismo hierárquico em árvore roteamento. E a rede em
malha, ou mesh, usa o método de encaminhamento mista combinada com AODV e roteamento
hierárquico em árvore (RAN, 2006)
Serviços de segurança previstos no padrão ZigBee incluem métodos para o
estabelecimento de chave, transporte de chave, proteção de frames, e gerenciamento de
dispositivos (ZIGBEE ALLIANCE, 2005).
4.4 Tecnologias ZigBee
4.4.1 XBee
Módulos XBee são baseados nos padrões IEEE 802.15.4 e de hardware aberto e tem o
objetivo de controle e monitoração de aplicação onde o principal requisito é o baixo consumo
de energia. O modulo opera na frequência de 2,4 GHz com taxa de dados de no máximo 250
Kbps. O XBee utiliza 128 bits de criptografia AES (Advance Encryption Standard) para a
segurança. O alcance da comunicação dos módulos XBee é de 100 metros, enquanto o XBee
PRO oferece alcance de 150 metros (YUSSOFF, 2010).
XBee é o nome dado pela empresa que a desenvolveu, Digi International, ao seu
transceptor de rádio frequência. ZigBee é um protocolo que pertence à ZigBee Alliance.
24
Embora os nomes são semelhantes, é importante distinguir entre XBee e ZigBee (ZIGBEE RF
MODULES USER GUIDE, 2015).
ZigBee é uma especificação para a comunicação em uma rede pessoal sem fio (WPAN).
ZigBee tem como alvo o domínio de aplicação de baixo consumo de energia, baixo ciclo de
trabalho e dispositivos requisito de taxa de dados de baixa A Aliance é uma associação de
empresas que trabalham juntos para garantir o sucesso deste padrão global aberto. ZigBee é
construído em cima do padrão IEEE 802.15.4, e ele oferece funções de roteamento e multi-hop.
XBee é um transceptor de rádio, sem fio, que pode transmitir e receber dados. Um módulo de
pequena estrutura, e pequenos circuitos eletrônicos usados para transmitir e receber sinais de
rádio em frequências diferentes. A figura 5 mostra a imagem de um transceptor sem fio XBee
(ZIGBEE RF MODULES USER GUIDE, 2015).
Figura 5: Transceptor de rádio frequência XBee
Fonte: Yimg.com (2015)
A utilização dos módulos de comunicação sem fio XBee que provê o protocolo de
comunicação 802.15.4 é um dos pontos deste trabalho. Nós utilizamos uma rede com módulos
XBee’s configuradas como coordenador e roteadores, tais módulos por padrão utilizam o
protocolo ZigBee.
Como descrito anteriormente, o padrão 802.15.4, ZigBee, utiliza dois modelos de
endereçamento, o EUI-64 e EUI-16, uma característica importante do endereçamento de 64 bits
é que ele não é modificável, ou seja, este tipo de endereçamento já vem no dispositivo deste a
sua fabricação. Já m endereçamento de 16 bits, EUI-16, é atribuído ao dispositivo que juntar-se
a rede, o endereço 0x000 é exclusivo do coordenador da rede, esses endereços são gerados
randomicamente pelo roteador ou pelo coordenador. Se um determinado dispositivo se
25
desassociar por algum motivo da rede e após algum tempo o mesmo voltar a fazer parta da rede,
o seu endereço de 16 bits pode ser diferente da última vez, pois esses endereços são gerados
randomicamente (XBEE ZIGBEE USER MANUAL, 2015).
Existem dois modelos de comunicação quando se utiliza módulos XBee, o modo API e
AT. O modo AT é apenas uma série de comandos que são escritos diretamente na serial do
módulo e que são interpretadas. A comunicação por meio da operação API requer uma interface
estruturada, ou seja, os dados são comunicados através de frames em uma ordem definida
(XBEE ZIGBEE USER MANUAL, 2015).
Figura 6: Representação da comunicação UART
Fonte: XBee ZigBee User Manual (2015)
Outra característica a ser observada na comunicação XBee é a UART. Esse termo
refere-se à comunicação com a porta serial da placa microcontroladora em que o módulo de
comunicação sem fio XBee está acoplada, ou seja, UART é a série de comunicações realizada
entre XBee/Microcontrolador. Na figura 6 podemos observar a comunicação entre o módulo
XBee e o microcontrolador, os dados de entrada “DIN”, que são os sinais transmitidos do
microcontrolador para o módulo XBee, “DOUT” são os sinais transmitidos do módulo XBee
para a o microcontrolador. O controle de fluxo CTS fornece a indicação para o
microcontrolador parar de enviar dados seriais para o módulo XBee. Já o controle de fluxo RTS
indica ao módulo XBee a parar de enviar sinais de dados para a placa microcontroladora.
Os frames criados especificamente para a utilização com os módulos de comunicação
sem fio XBee de acordo com XBee ZigBee User Manual (2015) são:
I.
AT Command: Usado para consultar ou definir parâmetros do módulo no
dispositivo local. Esse frame aplica mudanças após sua execução. As alterações
entram em vigor após que o comando é executado.
26
II. ZigBee Transmit Request: Frame utilizado para a transmissão de dados de um
módulo para outro na rede previamente especificado.
III. Explicit Addressing ZigBee Command Frame: Similar ao ZigBee Transmit
Request, porém para ser utilizado os módulos de comunicação dever estar
programadas para utilizá-la, há um parâmetro “AO” no firmware do XBee que se
setado para o valor 1 as mensagens Explicit poderão ser utilizadas. Por padrão
“AO” é 0. As mensagens Explicit são utilizadas para solicitação e resposta de
informações importantes para a rede, como por exemplo tabela de rotas e tabela de
vizinhos.
IV. Remote Command Request: Usado para consultar ou definir parâmetros em
módulo remoto.
V. Create Source Route: Este frame criar rotas no módulo, ou seja, ele especifica
uma rota completa em que um frame deve percorrer para chegar da origem ao
destino.
VI. AT Command Response: É uma resposta ao frame comando AT.
VII. Modem Status: São mensagens de status, geralmente enviadas ao coordenador da
rede, como por exemplo quando um nó entra na rede, é enviado um Modem Status
especificando tal situação.
VIII. ZigBee Transmit Status: Quando uma mensagem TX Request for processada o
módulo envia um Transmit Status, ou seja, é um frame de verificação se os dados
foram transmitidos com sucesso.
IX. ZigBee Receive Packet: Quando o módulo XBee recebe frame, ele é enviado para
a UART usando este tipo de mensagem.
X. ZigBee Explicit RX Indicator: Quando o módulo recebe uma mensagem Explicit,
a mensagem é enviada para a UART usando este tipo de mensagem.
XI. Node Identification Indicator: Esse frame é recebido quando um módulo
transmite uma mensagem de identificação dele mesmo.
XII. Remote Command Response: Caso um módulo receba um frame de resposta a
um comando remoto AT, essa resposta será enviada para a UART utilizando esse
tipo de mensagem.
XIII. Over-the-Air Firmware Updade Status: Esta mensagem fornece uma indicação
de status de um firmware, caso tenha disponível alguma atualização.
27
XIV. Route Record Indicator: Esse frame é recebido sempre quando a rede esta
utilizando o modelo Many to One. Em seu payload contém toda a rota por onde
este pacote trafega.
XV. Many to One Request Indicator: Esta mensagem é sempre enviada para a UART
quando um frame Many to One Route Request é recebido.
As tabelas de rotas de dispositivos de uma rede ZigBee usa endereços de 16 bits, mas
como esse endereço não é estático, para resolver este problema, nas transmissões de mensagens
é sempre enviado com os endereços de 64 bits e 16 bits (XBee ZigBee USER MANUAL, 2015).
Mensagens ZDO são aplicadas no modo API XBee para o gerenciamento, e descoberta
de serviços em todos os dispositivos ZigBee. ZDO funciona através de clusters, ou seja, valores
predefinidos para cada serviço relacionado (XBee ZigBee USER MANUAL, 2015). A seguir alguns
exemplos de mensagens ZDO com seus respectivos clusters.
-> Management Network Discovery Request (ClusterID 0x0030): Transmissão
unicast usado para um dispositivo remoto executar a verificação de rede.
-> Management Network Discovery Response (ClusterID 0x8030): Resposta a uma
requisição de verificação de rede.
-> Management LQI (Neighbor Table) Request (ClusterID 0x0031): Transmissão
unicast para um dispositivo remoto executar e retornar a sua tabela de vizinhos.
-> Management LQI (Neighbor Table) Response (ClusterID 0x8031): Resposta a
uma requisição de tabela de vizinhos.
->
Management Rtg (Routing Table) Request (ClusterID 0x0032): Transmissão
unicast usada para que um dispositivo remoto envie sua tabela de roteamento.
-> Management Rtg (Routing Table) Response (ClusterID 0x8032): Resposta da
solicitação da tabela de rotas.
As transmissões de dados de uma rede ZigBee é realizado de duas maneiras: Broadcast
e Unicast. A seguir, descrevemos essas duas abordagens.
A. Transmissões Broadcast
São utilizadas para a transmissão de mensagens para toda a rede, ou seja, a mensagem
que é transmitida é recebida por todos os nós. Por exemplo, em uma transmissão a partir do
coordenador, é enviado um pacote para todos os seus vizinhos, e deles para os seus demais
vizinhos e assim sucessivamente (XBee ZigBee USER MANUAL, 2015). A figura 7 representa a
28
transmissão broadcast, em que o “C” é o coordenador da rede, “R” os roteadores e “E”
dispositivos finais.
Figura 7: Representação de uma transmissão Broadcast em uma rede ZigBee
Fonte: XBee ZB User Manual (2015)
B.
Transmissões Unicast
Transmissões unicast são aquelas em que um determinado dispositivo queira enviar
uma mensagem para outro dispositivo, porém, este pode ser seu vizinho ou um nó na rede a
vários saltos por outros dispositivos de distância.
Uma funcionalidade que é encontrada nos dispositivos de uma rede ZigBee é que cada
dispositivo mantém uma tabela de endereços que mapeia um endereço de 64 bits para um
endereço de 16 bits. Quando uma transmissão é dirigida a um endereço de 64 bits, a pilha
ZigBee procura na tabela de endereços uma entrada com um endereço de 64 bits
correspondente, na esperança de determinar o endereço de 16 bits do destino. Se um endereço
de 16 bits não for encontrado, a pilha ZigBee irá realizar a descoberta de endereços para
descobrir o endereço de 16 bits do dispositivo atual. Um dispositivo pode armazenar até 10
endereços em sua tabela de endereços (XBEE ZIGBEE USER MANUAL, 2015).
Transmissões unicast requer alguns tipos de roteamento. Em uma rede ZigBee existe 3
tipos de roteamento:
1. AODV (Ad-Hoc On-Demand Distance Vector) Mesh Routing: O roteamento utilizando
este método é realizado através de saltos, em que é criado anteriormente um caminho
29
entre a origem e o destino, sendo transmitido os dados através dos demais dispositivos
da rede até o destino (XBee ZigBee USER MANUAL, 2015).
2. Many to One Routing: Em vez de requerer que cada dispositivo da rede faça sua própria
descoberta de percurso, uma única transmissão Many to One é enviado a partir do
coordenador para que os dispositivos que receberem essa mensagem criem em sua
tabela de roteamento rotas reversas para o coordenador. Essas rotas reversas então são o
caminho de volta, do dispositivo recebedor para o coordenador (XBee ZigBee USER
MANUAL, 2015). Podemos verificar na figura 8 o funcionamento do Many to One.
Inicialmente, o coordenador da rede envia uma mensagem Many to One Route Request
Broadcast, esta mensagem indica que o coordenador está enviando para os demais
dispositivos da rede um comando para que estes configurem em suas tabelas de rotas.
Após criar em suas tabelas de rotas a rota para a comunicação com o coordenador da
rede, os dispositivos enviam uma mensagem Route Reply indicando ao coordenador a
criação da rota e o sucesso da comunicação, essa mensagem conterá todo o caminho por
onde ele percorrer.
3. Source Routing: Quando um coletor de dados tem muitos destinos para se enviar dados, a
descoberta de rotas para esses destinos pode causar uma grande quantidade de pacotes
trafegando na rede. O método Source Routing é utilizado em conjunto com o Many to One.
Após as rotas reversas nos dispositivos da rede serem configuradas o coordenador da rede
poderá, utilizando Source Routing, enviar uma mensagem Route Reply aos destinatários,
estes por sua vez enviam como resposta uma mensagem Route Record Indicator, essa
mensagem de resposta ao coordenador conterá em seu payload os endereços de 16 bits dos
dispositivos por onde trafegou, ou seja, os saltos por onde passou. O coordenador de posse
dessas informações poderá criar em sua tabela de roteamento rotas com os determinados
saltos até o destino.
Figura 8: Esquema de envio do Many to One
30
Fonte: XBee ZigBee User Manual (2015)
4.4.2 Arduíno
O Arduíno é uma plataforma de prototipagem com o hardware livre e de fácil
implementação de projetos. A maior vantagem da utilização da plataforma arduíno sobre as
outras plataformas de desenvolvimento é a facilidade de utilização, pois pessoas que não são da
área de eletrônica e programação podem rapidamente aprender seus conceitos (MCROBERTS,
2011).
O Arduíno pode ser utilizado para desenvolver objetos interativos independentes, pode
sr conectado a um computador ou a própria internet para enviar dados do arduíno ou atuar sobre
ele (MCROBERTS, 2011).
Para programar utilizando a plataforma arduíno você utiliza uma IDE (Integrated
Development Environment) do próprio arduíno, este é um software livre na qual o usuário pode
escrever seus códigos na linguagem em que o arduíno compreende, no caso linguagem C e C++
(MCROBERTS, 2011).
31
Arduíno é baseado no microcontrolador ATmega328 (Figura 9). Ele possui 14 portas
digitais e 6 analógicas que podem ser tato de entrada e saída de dados e possui conexão com
computador através de USB. Existem complementos para a plataforma arduíno que são os
denominados Shields. Esses complementos podem obter as mais diversas funcionalidades,
como GSM, Ethernet, e a utilizada neste trabalho Shield XBee (ARDUINO S.A, 2015).
Figura 9: Placa Arduíno UNO
Fonte: Arduino S.A. (2015)
Para a utilização do módulo XBee com a placa de prototipagem arduíno deve ser
utilizado um shield especifico para o módulo, essa shield é acoplada na placa arduíno.
Na shield o pino DOUT esta conectado a ao pino RX do microcontrolador arduíno e o
pino DIN está ligado ao TX. Os pinos de RX e TX do microcontrolador ainda estão ligados aos
pinos de TX e RX (respectivamente) do chip FTDI - dados enviados a partir do
microcontrolador vai ser transmitidos para o computador por USB, bem como a ser enviada
sem fios pelo módulo Xbee. O microcontrolador, no entanto, apenas será capaz de receber os
dados do módulo Xbee, não através de USB a partir do computador.
32
Figura 10: Placa Arduíno como base, e o transceptor sem fio XBee adicionado a Shield
Fonte: jayconsystems.com (2015)
A placa de prototipação Arduíno foi utilizada em nosso trabalho para suportar a
aplicação criada para cada nó roteador da rede ZigBee. Para acoplar o módulo XBee junto com
o Arduíno foi necessário a utilização de uma shield, para assim haver a comunicação da
aplicação adicionada na placa com o módulo XBee.
4.4.3 API’s
API’s de programação são utilizadas por desenvolvedores para criar aplicações que
interagem com o módulo de comunicação XBee e por sua vez com a rede em que está inserida.
As duas API’s mais utilizadas são nas linguagens Java e C++.
API Java é utilizada por desenvolvedores que criam aplicações de interação com o
coordenador XBee, essa API desenvolvida já contêm uma série de classes e métodos que
interagem com várias mensagens API, algumas dessas mensagens são de acordo com XBee API
Java (2015):
33
A. ATCommand: Para executar comandos AT no módulo local XBee.
B. RemoteATRequest: Para executar comandos AT em módulos remotos.
C. TxRequest16: Para enviar dados a um módulo remoto utilizando endereço de
destino de 16 bits. Apenas dispositivos Série 1.
D. TxRequest64: Para enviar dados a um módulo remoto utilizando endereço de
destino de 6e bits. Apenas dispositivos Série 1.
E. ZNetTxRequest: Para enviar dados a um módulo remoto. Apenas dispositivos
Série 2.
F. ATCommandResponse: Essa é uma mensagem que é enviada após o
processamento da mensagem ATCommand.
G. ModemStatusResponse: Envia para para ele mesmo uma mensagem indicando
algum evento ocorrido, por exemplo a associação na rede.
H. RemoteATResponse: Envia uma resposta para a mensagem RemoteATRequest.
I.
TxStatusResponse: Indica que a transmissão das mensagens TXRequest16 ou
TXRequest64 foi realizada com sucesso.
J.
RxResponse16: Essa mensagem é recebida após o envio da mensagem
TXRequest16.
K. RxResponse64: Essa mensagem é recebida após o envio da mensagem
TXRequest64.
L. ZNetTxStatusResponse: É enviado após um ZNetTXRequest e indica se a
transmissão foi concretizada.
M. ZNetRxResponse: Essa mensagen é recebida após o ZNetTXRequest ser enviado.
N. ZNetExplicitRxResponse:
Essa
mensagem
é
recebida
após
o
ZNetExplicitTxRequest ser enviado.
Da mesma forma que a API em Java, a API C++, é usada por desenvolvedores para
programar aplicações que serão embarcadas em placas de prototipagem, a mais utilizada é a
placa Arduíno. Essa é uma biblioteca Arduíno para se comunicar com XBees no modo API,
com suporte a módulos série 1 (802.15.4), e séries 2 (ZB Pro/ ZNet). É uma biblioteca que
possui suporte a maioria das mensagens tratadas com XBee, incluindo mensagens TX/RX,
comandos AT, mensagens I/O e modem status (XBEE API ARDUÍNO, 2015). Porém ainda
não dá suporte as mensagens do tipo Explícit.
34
Os esquemas Many to One e Source Route serão utilizadas em nossa solução de forma
que inicialmente o coordenador irá enviar, periodicamente, uma mensagem para os demais
dispositivos
da
rede
configurarem
rotas
reversas.
Utilizando
as
mensagens
ZB_Request_Indicator o coordenador irá enviar solicitações aos dispositivos da rede, para que
estes respondam com as informações de suas tabelas de vizinhos, e assim criar uma topologia
virtual da rede. Quando um dispositivo queira uma rota para a comunicação com outro nó da
rede, este dispositivo envia uma mensagem pré-programada ao coordenador para poder gerar o
envio simultâneo da mensagem Route Record indicator, pois a aplicação criada no coordenador
irá utilizar as informações contidas no payload para cacular a rota entre os dois dispositivos que
queiram se comunicar.
35
5 PROPOSTA
5.1 Visão Geral
O objetivo do nosso trabalho foi de prover uma solução inicial de roteamento, baseado
em SDN, para um ambiente de IoT baseado na tecnologia ZigBee. Nossa solução foi
desenvolvida utilizando as funcionalidades e recursos do módulo XBee. Para tal, a proposta é
definida por dois elementos centrais: SDNCoordinator e SDNRouter.
O SDNCoordinator, na visão SDN, representa o plano de controle. Ele será o
responsável pela coordenação da rede ZigBee que irá se formar entre os dispositivos. Agindo
como um controlador SDN, o SDNCoordinator terá uma visão global da rede ao qual ele
gerencia. Sobre o SDNCoordinator, uma aplicação foi desenvolvida com a linguagem de
programação Java para o tratamento das mensagens de controle. Essa aplicação é responsável
pelo cálculo de rotas do plano de dados da rede ZigBee, sendo o Dijikstra o algoritmo utilizado
para esse cálculo. Como mostrado na figura 11, o SDNCoordinator é um módulo de
comunicação que faz o intermédio entre o plano de dados e a camada de aplicação, onde foi
desenvolvido a aplicação que calculará as rotas dos demais dispositivos SDNRouters.
Por outro lado, o SDNRouter, na visão SDN, será os elementos do plano de dados. A sua
funcionalidade será o de encaminhamento das mensagens na rede ZigBee. Caso um nó
SDNRouter necessite de uma rota para a comunicação com determinado dispositivo na rede, ele
solicitará ao plano de controle da rede, que na nossa solução será o dispositivo SDNCoordinator.
Na figura 11, os dispositivos SDNRouters são elementos de encaminhamento, em que sua
funcionalidade de cálculo de rotas foi transferida para a camada de aplicação, e caso desejem o
cálculo de rotas esses solicitarão ao controlador da rede, no caso, o dispositivo
SDNCoordinator. É de grande importância verificar que em nossa solução estamos usando as
mensagens que já vem implementadas no módulo XBee para prover um modelo de SDN.
Figura 11: Esquema de camadas da proposta
36
Fonte: Adaptado pelo Autor (2015)
Utilizamos as linguagens de programação Java, para a criação da aplicação
SDNCoordinator, e C++, para criar a aplicação SDNRouter, aplicação do coordenador e
roteador respectivamente.
Foi implementado estruturas de dados para o armazenamento das informações. A API
utilizada tanto em Java e em C++ foi a HashMap, esse tipo de estrutura faz chaveamento de
informações, ou seja, as informações guardadas são chaveadas com um valor determinado pelo
desenvolvedor, para quando for ser recuperadas apenas passar o valor da chave.
5.2 Arquitetura e Implementação
Neste tópico abordaremos as descrições técnicas dos elementos, bem como o
funcionamento detalhado da nossa solução.
5.2.1 SDNRouter
O SDNRouter fisicamente é uma placa arduíno com shield e módulo de comunicação
sem fio 802.15.4 XBee. Na placa arduíno constará um código desenvolvido que contém a
função de interpretar as mensagens que chegam a ele e de solicitar rotas ao outro elemento da
rede. A figura 12 mostra o equipamento SDNRouter.
37
Figura 12: Equipamento SDNRouter, Arduíno e Shield com módulo XBee
Fonte: Adaptado pelo Autor (2015)
As estruturas de dados que guardam as informações são cinco, AddressNumber, msb_1,
lsb_1, msb_2. Não foi possível a implementação de apenas uma estrutura de dados que suporta
todas as entradas, por que a API utilizada HashMap em C++ não suporta dados concatenados.
Porém na função onde consta essas estruturas a implementação de mais delas é de fácil
desenvolvimento. Essas informações serão guardadas de acordo com as suas entradas. A tabela
1 é um exemplo de entradas nas estruturas de dados, por exemplo, a primeira entrada refere-se a
uma rota que tem apenas 1 salto de distância, ou seja, apenas 1 endereço de 16 bits deve ser
guardado na estrutura, que são os valores de Msb_1 e Lsb_1. A segunda entrada como é uma
rota de 2 saltos até o destino, teremos 2 endereços de 16 bits até o destino, o primeiro endereço
será o Msb_1 e Lsb_1, e o segundo endereço de salto será, Msb_2 e Lsb2.
38
Tabela 1: Estruturas de dados do SDNRouter, e exemplos
Estrutura
1ª Entrada
2ª Entrada
1
2
Msb_1
122
122
Lsb_1
23
23
Msb_2
null
134
Lsb_2
null
43
AddressNumber
5.2.2 SDNCoordinator
Iniciaremos mostrando a descrição técnica do elemento SDNCoordinator. Como
mostrado na figura 13, ele é um módulo de comunicação sem fio 802.15.4 XBee PRO, que está
configurado no modo de comunicação API Coordenator. A placa XBee Explorer USB é um
conversor USB para Serial FT231X. Ele traduz mensagens do computador para o módulo
XBee.
Figura 13: Módulo XBee PRO com adaptador de entrada microUSB XBee-Explorer
Fonte: Adaptado pelo Autor (2015)
A aplicação SDNCoordinator possui três estruturas de dados, AddressTable, RouteTable,
NeighborsTable, essas estruturas de dados são do tipo chave referência, em que o usuário
39
informa um valor para ser a chave referenciadora dos dados que se queira armazenar, e assim
quando for recolher aqueles dados em específico deve informar a sua determinada chave.
A primeira estrutura é a AddressTable, ela armazena as informações de mapeamento de
endereços de 64 para 16, pois quando o roteador enviar uma solicitação de rotas para um
determinado endereço de 64 bits, a aplicação irá buscar na estrutura o determinado endereço de
16 bits relacionado ao dispositivo. Sua chave referenciadora é a soma do sexto e oitavo valores,
convertidos para decimal, do endereço de 64 bits de cada nó, ou seja, se um endereço 64 bits de
um determinado nó é “0x00, 0x13, 0xa2, 0x00, 0x40, 0xa5, 0x9d, 0x8e”, a soma dos valores
“0xa5, 0x8e”, convertidos a decimal, será a chave referenciadora. Utilizamos essa abordagem
de soma, para trabalharmos com valores decimais em Java. Por outro lado, o valor para essa
chave será a soma do endereço de 16 bits daquele determinado roteador, ou seja, se o endereço
de 16 bits for, “0xd9, 0xfe”, a soma desses dois valores será o endereço de 16 bits guardado para
aquele nó. O exemplo dado na explicação pode ser visto na tabela 2 abaixo.
Outra estrutura de dados utilizada em nossa solução é a RouteTable, ela armazena as
informações do número de saltos até o destino e quais são eles, separados pelo delimitador
barra. A RouteTable obtém essas informações dos saltos a partir do frame Route Record
Indicator, e a chave referenciadora é o endereço de 16 bits somado daquele determinado nó.
A estrutura NeighborsTable guarda as informações de vizinhos de todos os nós da rede,
com a chave referenciadora que é o endereço de 16 bits somado de cada nó da rede.
Tabela 2: Estruturas de dados da aplicação e alguns exemplos
Estrutura de Dados
Chave
Dados
AddressTable
307
471
RouteTable
307
2/308,310
nullinformation,0x00,0x00/0x00,0x13,0xa2,0x00,0x40,0xa5
NeighborsTable
307
,0x9d,0xd6/0x7e;information,0x17,0x08/0x00,0x13,0xa2,0x
00,0x40,0xa8,0x36,0xbc/0xfd;null
Os dados da estrutura NeighborsTable estão separados por delimitadores, como pode
ser visualizado na Tabela 2. Neste exemplo, inicialmente o array que utilizamos para armazenar
possui apenas o valor null. Quando temos dados para armazenar, concatenamos o valor null
com information e, junto dessa informação, separado por vírgula está o endereço de 16 bits do
40
vizinho “A”, seguindo a leitura, na sequência, após a barra, “/”, teremos o endereço de 64 bits
do vizinho “A”, e por último, após a barra, teremos a LQI da comunicação com aquele vizinho.
Após o ponto e vírgula, iniciamos com as informações do outro vizinho do determinado nó,
vizinho “B”, na mesma sequência descrita anteriormente.
5.3 Funcionamento
Em nossa solução há dois momentos que devem ser observados, o primeiro chamamos
de Construção do Canal de Controle e o segundo é a Estabelecimento de Rotas para o Tráfego
de Dados.
5.3.1 Estabelecimento do Canal de Controle
O Canal de Controle é um conjunto de canais de comunicação que permitem a troca de
informações entre o SDNCoordinator e os SDNRouters. Ele é necessário para que seja possível
o envio das solicitações de rotas, por parte dos SDNRouters, e a posterior criação destas pelo
SDNCoordinator. Uma descrição de como é estabelecido o Canal de Controle será apresentada
a seguir.
Em um primeiro momento o SDNCoordinator irá enviar uma mensagem Many to One
Request Indicator para todos os nós da rede, para que estes criem uma tabela de rota reversa e
assim poderem se comunicar com o coordenador. Podemos observar um exemplo da
comunicação many to one na figura 14. Após isso, cada dispositivo SDNRouter irá enviar uma
mensagem para o coordenador, pois isso irá forçar o envio simultâneo do Route Request
Indicator. Esse frame contém em sua estrutura toda a rota por onde ele trafegou até chegar a seu
destino, no caso o SDNCoordinator. Essas informações serão necessárias para que o dispositivo
coordenador possa criar uma rota para cada dispositivo na rede, através da mensagem Create
Source Route, e assim poder se comunicar com eles.
Após os canais de comunicação tanto dos dispositivos da rede com o coordenador, e do
coordenador aos demais dispositivos estiver estabelecida (Canal de Controle), a aplicação
SDNCoordinator envia uma mensagem de solicitação das tabelas de vizinhos dos nós,
encapsulada em uma mensagem ZigBee Explicit Request Indicator. O objetivo de obter tais
tabelas é para assim criar a topologia virtual (visão global da rede) no plano de controle e,
posteriormente, poder calcular as rotas dos dispositivos solicitantes. As mensagens utilizadas
para o estabelecimento do canal de controle são mostradas no Tabela 3.
41
Tabela 3: Mensagens utilizadas no estabelecimento do canal de controle
Mensagem
Descrição
Mensagem utilizada pelo modelo many to
Many to One Request Indicator
one, e faz com que os nós que a recebam,
criem rotas reversas para a comunicação com
o nó que enviou esta mensagem.
Mensagem
gerada
antes
do
envio
de
mensagens para o dispositivo que envia
Route Record Indicator
mensagens many to one, ela serve para indicar
o caminho por onde trafegou até chegar ao
destino, pois em seu payload contém todos os
saltos do tráfego.
Esta mensagem é utilizada para que o
dispositivo possa criar rotas manualmente em
Create Source Route
sua tabela de rotas, as informações necessárias
são o endereço de destino, 64 bits e 16 bits, e
os números de saltos até o destino. Essa
mensagem é processada na UART.
Mensagem utilizada pelos dispositivos no
modo API Explicit, essas mensagens são
utilizadas geralmente para gerenciamento da
ZigBee Explicit Request Indicator
rede. No nosso caso esta mensagem é utilizada
no estabelecimento do canal de controle
quando nossa aplicação SDNCoordinator
solicita a tabela de vizinhos dos dispositivos
da rede ZigBee. A aplicação envia essa
mensagem utilizando as informações de saltos
da mensagem Route Record Indicator.
Esta é a mensagem de resposta a solicitação da
tabela de vizinhos através da mensagem
ZigBee Explicit Response Indicator
ZigBee Explicit Request Indicator. Todas as
informações dos vizinhos de cada nó da rede
42
estarão contidas em cada mensagem desta que
a aplicação SDNCoordinator receber.
As informações dos saltos contidas na payload dos pacotes Route Record Indicator são
armazenadas na estrutura de dados RouteTable, assim como as informações das tabelas de
vizinhos na payload das mensagens ZigBee Explicit Response Indicator, para cada nó é
armazenada na estrutura de dados NeighborsTable. A estrutura de dados AddressTable contém
as informações recolhidas da mensagem Route Record Indicator, mensagens de endereço de 64
bits e endereço de 16 bits.
Figura 14: Exemplo de funcionamento Many to One
Fonte: Adaptado pelo Autor (2015)
Figura 15: Estabelecimento do Canal de Controle, Many to One e Route Record
Indicator
Fonte: Adaptado pelo Autor (2015)
43
Uma informação importante que também é recolhida e que se deve levar em
importância é o LQI, essa informação é a qualidade do sinal de comunicação entre dois
vizinhos, ou seja, em um determinado nó com seus vizinhos, ele terá um valor de qualidade de
sinal para a comunicação entre eles, e essa informação vem contida no frame de resposta
ZigBee Explicit Response Indicator, esta informação também é utilizada na montagem da
topologia virtual. A figura 16 exemplifica esse processo.
Figura 16: Solicitação da tabela de vizinhos e da criação de nós na topologia virtual
Fonte: Adaptado pelo Autor (2015)
5.3.2 Estabelecimento de Rotas para o Tráfego de Dados
Quando um SDNRouter necessita enviar um pacote para outro SDNRouter, o primeiro
inicialmente verifica em sua tabela de rotas se existe alguma rota disponível para aquele destino.
Se existe, ele cria essa rota no módulo XBee através do frame Create Source Route e começa a
enviar os pacotes. Entretanto, se a rota não existir na tabela, o primeiro SDNRouter deve iniciar
o processo denominado Estabelecimento de Rotas para o Tráfego de Dados.
Para tal, o SDNRouter envia uma mensagem de solicitação de rota à aplicação
SDNCoordinator, essa mensagem contém um delimitador em hexadecimal “0x4f, 0x4b”, que
em ASCII significa “OK”, esse delimitador é concatenado com os valores do endereço de 64
bits do roteador com o qual ele quer se comunicar, no caso essa informação será apenas o sexto
e oitavo valor do endereço de 64 bits de destino.
44
O cálculo de roteamento utilizado nessa solução é o Algoritmo de Dijkstra, ele funciona
verificando o melhor caminho, através de saltos, observados os valores de qualidade de sinal,
no nosso caso a LQI. A figura 17 exemplifica o funcionamento do Algoritmo de Dijkstra.
A aplicação SDNCoordinator de posse dessas informações, faz uma verificação
inicialmente, observando que o primeiro e segundo bytes são os valores delimitadores e
constata que aquela é uma mensagem de solicitação de rotas e redireciona o processamento para
um método que tratará esse cálculo com base nas informações contidas no quarto e quinto byte.
Ao somar os dois últimos bytes do pacote a aplicação terá o endereço somado de 64 bits do
destino que o roteador deseja uma rota. A aplicação usa essa informação como chave para
recolher valores na estrutura de dados AddressTable, e assim recolher a informação do endereço
somado de 16 bits daquele determinado destino. Um exemplo da etapa de estabelecimento de
rotas para o trafego de dados é vista na figura 18.
Figura 17: Exemplo funcionamento Algoritmo de Dijkstra
Fonte: Adaptado pelo Autor (2015)
Figura 18: Solicitação de Rota e Envio de Comando
Fonte: Adaptado pelo Autor (2015)
45
Após o cálculo de rotas realizado pela aplicação SDNCoordinator, ela enviará as
informações geradas para o roteador solicitante de rotas, em nossa solução, antes de adicionar
os valores, utilizamos o primeiro byte da informação com o valor ”0xff”, ou“255” em decimal,
para quando essa informação chegar ao roteador solicitante ele saiba que aquela mensagem é
uma mensagem de resposta com as rotas calculadas. Além de enviar as informações de
endereço MSB 16 bits e endereço LSB 16 bits do roteador destino que o solicitante quer uma
comunicação.
Quando a mensagem de rotas chega ao roteador ele armazena a informação da rota na
sua tabela de rotas e cria essa rota no módulo XBee através do frame Create Source Route, para
gerar uma comunicação com o roteador de destino, utilizando os endereços de saltos coletados
e o endereço de 64 e 16 bits do destino. Após essa comunicação estabelecida o roteador está
apto a enviar mensagens para o destino. Podemos verificar na tabela 4 as mensagens utilizadas
para o estabelecimento do tráfego de dados.
Tabela 4: Mensagens utilizadas na etapa estabelecimento de rotas para o tráfego de dados
Mensagem
Descrição
Essa mensagem é utilizada na etapa de
estabelecimento do canal de controle com a
resposta da solicitação das tabelas de vizinhos
dos nós da rede, porém nessa etapa ela é
Zigbee Explicit Response Indicator
utilizada apenas para o envio de informações
no seu campo payload. Essas informações são
de solicitações de rotas, os endereços
calculados na aplicação SDNCoordinator e o
comando enviado de um roteador para outro
após o estabelecimento da comunicação entre
eles.
Essa mensagem será utilizada pelo roteador
Create Source Route
para criar uma rota em sua tabela de rotas para
o destino, utilizando os endereços de saltos
calculados pela aplicação SDNCoordinator.
Fonte: Adaptado pelo Autor (2015)
46
6 EXPERIMENTOS
Os equipamentos utilizados em nossa solução foram, 4 módulos de comunicação sem
fio XBee, 3 placas Arduíno, 3 shields XBee, 1 placa XBee explorer.
O cenário proposto para nossa solução é com os nós da rede dispostos em série, ou seja,
em que tenha sempre um roteador final distante o bastante do coordenador para gerar as
mensagens de multi saltos. A figura 20 mostra a imagem tirada do software XCTU no dia do
experimento. A dificuldade para colocar os dispositivos desta maneira é considerável, pois a
potência do sinal dos módulos XBee é muito vasta, então colocamos barreiras físicas para a
topologia ideal fosse gerada.
Figura 19: Esquema da LED na nossa solução
Fonte: Adaptado pelo Autor (2015)
Como descrito anteriormente foi criado dois algoritmos, o SDNCoordinator e o
SDNRouter, o primeiro fica executando em um computador em que o coordenador esteja
acoplado, o segundo fica em cada roteador da rede ZigBee.
Como em nossa solução, no algoritmo SDNCoordinator, não estamos utilizando
threads, os envios solicitações das mensagens Route Record simultâneas dos roteadores, após o
recebimento da mensagem Many to One, do coordenador, não seria possível, no caso,
definimos um contador, em cada roteador, para a cada chegada da mensagem Many to One, o
roteador verifica no contador, se for sua oportunidade de enviar ele enviará. Na nossa solução
definimos que o último roteador envie o Route Record primeiramente, após o seu roteador
vizinho, e por último o roteador vizinho ao coordenador.
47
Figura 20: Topologia do experimento
Fonte: XCTU (2015)
Após todo o processo de criar a topologia, e calcular a rota para o roteador solicitante de
rotas, e enviar a solução para o solicitante, este roteador envia um comando para o roteador
mais distante em nossa topologia, no caso, esse comando é um comando para acender e apagar
uma lâmpada LED acoplado ao último roteador. Com isso provamos que nossa solução
funciona, e os roteadores estão se comunicando a partir da decisão de rotas enviada pelo
coordenador. A figura 21 mostra uma foto no momento da placa Arduino no momento da LED
apagada, e a figura 22 no momento em que o comando para acender a LED é interpretada. A
figura 19 tem o esquema utilizado em nossa solução do posicionamento da LED na placa
Arduino.
Figura 21: LED do experimento apagada
Fonte: Adaptado pelo Autor (2015)
48
Figura 22: LED do experimento acesa
Fonte: Adaptado pelo Autor (2015)
Na execução de nossa solução no algoritmo SDNCoordinator um arquivo de log é
criado com as informações dos pacotes enviados dos roteadores para o coordenador, Route
Record Indicator, a tabela de rotas e tabela de endereços criada usando estrutura de dados, há
também as informações da criação do Create Source Route, na fase da criação do canal de
controle entre o coordenador e os roteadores. Quando o pacote de solicitação de rotas chega ao
coordenador, esse frame é guardado no arquivo de logs, capturando as informações dos dados
de payload. Por último, após o envio do cálculo de roteamento para o determinado roteador
solicitante, é recuperado da aplicação as informações de cada nó na topologia, suas informações
de endereçamento, os vizinhos correspondentes, e a potência de sinal entre os nós, ou seja, LQI.
As informações capturadas no arquivo de log estão na sessão apêndice. A tabela 5 contém um
breve resumo das informações da topologia criada.
Tabela 5: Dados do arquivo de LOG, da topologia do experimento
49
A tabela anterior foi formulada a partir dos dados da topologia, armazenados no arquivo
de log, podemos observar que os valores armazenados na topologia são decimais, pois o
trabalho com esse tipo é mais agradável e o algoritmo de roteamento que utilizamos somente
aceita parâmetros em decimal. Os valores em negrito são os valores em decimal, e os valores
correspondentes ao seu lado em vermelho são os valores em hexadecimal. Uma observação a
ser feita é com relação ao coordenador, em nossa solução decidimos adicionar o coodenador em
nossa topologia, no caso ao início da execução da nossa solução o coordenador é adicionado a
topologia virtual, com seus determinados nós vizinhos, que no nosso caso apenas um. Outra
observação a ser feita é que para o algoritmo de roteamento conseguisse calcular o roteamento
corretamente os valores de endereçamento 16 bits contidos na topologia virtual não poderiam
ser nulos, no caso do coordenador como por padrão em uma rede ZigBee o seu endereço de 16
bits é sempre 0000, decidimos, na topologia virtual, adicionar o coordenador com o endereço de
16 bits 111. Os valores de endereço MSB e LSB, como mostrado na tabela anterior é os valores
do primeiro e segundo byte do endereço de 16 bits consecutivamente, esses valores são
armazenados com os seus respectivos nós na topologia virtual, pois eles serão importantes no
envio dos dados de roteamento.
Outra informação importante dos dados armazenados no arquivo de log é com relação
ao Route Record Indicator, na tabela 6, podemos observar um exemplo de log, é com relação ao
nó da topologia de endereço 16 bits 6CBF, quando recebeu o Many to One do coordenador
enviou essa mensagem Route Record Indicator como resposta, em seu conteúdo tinha as
informações do seu endereço de 64 bits, endereço 16 bits, quantidade de saltos por onde a
mensagem trafegou, e os endereços de 16 bits dos saltos.
Tabela 6: Pacote Exemplo Route Record Indicator
Campos/Dados
Dados em Decimal
Dados em Hexadecimal
Delimitadores
0,125,51
00,7D,33
Endereço de 64 bits
0,19,162,0,64,168,54,158
00,13,A2,00,A8,36,9E,6C
Endereço de 16 bits
108,191
6C,BF
50
Quantidade de
2
02
Endereços de Saltos
23,08,127,117
17,08,7F,75
Checksum
173
AD
Saltos
Após o coordenador receber o pacote Route Record Indicator e capturar as informações
desse frame, o coordenador necessita saber os nós vizinhos daquele determinado roteador, para
isso, como descrito anteriormente, ele cria uma mensagem Create Source Route, para
determinar um link de comunicação com o nó roteador, com isso ele utiliza-se das informações
contidas e capturadas do frame Route Record Indicator. A tabela 7 ilustra as informações de um
determinado frame Create Source Route armazenado em arquivo de log. Contém o endereço de
destino 64, endereço de destino 16 bits, um valor default, número de saltos, e os endereços de
16 bits dos saltos.
Tabela 7: Frame Create Source Route
Campos/Dados
Dados em Decimal
Dados em Hexadecimal
Delimitadores
126,0,18,33,00
7E,00,12,21,00
Endereço de 64 bits
00,19,162,0,64,168,54,158
00,13,A2,00,40,A8,36,9E
Endereço de 16 bits
108,191
6C,BF
Valor Default
00
00
Numero de Saltos
2
02
Endereços de Saltos
23,8,127,117
17,08,7F,75
Checksum
45
2D
51
Algumas dificuldades foram encontradas no desenvolvimento da nossa solução, uma
delas foi a utilização das mensagens ZigBee Explicit na aplicação SDNRouter, pois a API XBee
que é disponibilizada não estava implementado os métodos para se manusear as informações
dos frames do tipo Explicit, no caso, como era essencial a utilização dessas informações em
nossa solução, tivemos que desenvolver e adicionar a parte do código de manuseamento dessas
mensagens na API XBee, para um maior sucesso dessa implementação, enviamos nossa
modificação para a empresa desenvolvedora da API caso ache que nossa solução foi satisfatória,
ela possa vir adicionada na próxima versão da API XBee Arduíno.
Outra dificuldade encontrada foi na conversão dos valores hexadecimais dos pacotes
em decimal, pois essa conversão da maneira mais usual utilizada por desenvolvedores na
plataforma Java, não funciona, então no nosso caso desenvolvemos uma classe que contêm
todos os valores possíveis para endereços hexadecimais com seus correspondentes valores em
decimal, assim, quando é adicionado um valor hexadecimal por parâmetro essa classe retorna o
valor referente em decimal.
Uma das maiores dificuldades encontradas para a implementação da nossa solução foi a
aplicação dos dispositivos para que eles ficassem dispostos da maneira como está
exemplificado na figura 20, pois a potência de alcance dos módulos de comunicação sem fio
XBee é muito grande, e como em nosso equipamento disponível não tivemos baterias para
colocá-los dispostos mais facilmente, tivemos que adicionar várias estruturas físicas para que o
sinal decaísse e ficasse disposto como na figura exemplo 20.
Todos os algoritmos utilizados para o desenvolvimento da nossa solução estão
armazenados
em
um
diretório
github,
https://github.com/AlexsandersonSantos/XBEE-SDN.
repositório
público
no
link:
52
7 CONCLUSÃO
O objetivo do nosso trabalho foi prover uma solução inicial de roteamento, baseado em
Redes Definidas por Software (SDN), para um ambiente de Internet das Coisas baseado na
tecnologia ZigBee. A ideia de SDN de separação dos planos de dados e controle é aplicada em
nosso trabalho, tirando o cálculo de rotas dos roteadores e levando para o controlador, que na
nossa solução é o próprio coordenador da rede, em que há uma aplicação desenvolvida na
linguagem Java em conjunto com um algoritmo de cálculo de rotas por melhor caminho
Dijikstra.
A ideia de IoT é aplicada em nossa solução onde os nós da rede se comunicam
independentemente de configuração de rotas por gerentes de rede, pois as rotas são calculadas a
partir de decisão previamente calculada.
Podemos verificar na quantidade de pacotes que trafega na rede após as duas etapas da
nossa solução é bem reduzida então, nossos trabalhos futuros serão a implementação de novas
funcionalidades na camada de aplicação e a comparação da nossa solução de roteamento com o
protocolo de roteamento AODV, para verificar se nossa solução, a partir da quantidade de
pacotes trafegados na rede, obtêm uma maior eficiência energética.
Esperamos que nossa solução promova um grande impacto na comunidade, pois com
esse novo modelo de comunicação centralizado e essa aplicação desenvolvida, os
pesquisadores terão um vasto campo de pesquisa no desenvolvimento de aplicações que podem
ser implementadas em conjunto desta.
53
REFERÊNCIAS
BARONTI, P. et al. Wireless sensor networks: A survey on the state of the art and the 802.15.4
and ZigBee standards. v. 30, p. 1655–1695, 2007.
COSTA, L. R. Universidade de Brasília OpenFlow e o Paradigma de Redes Definidas por
Software. 2013.
KREUTZ, D. et al. Software-Defined Networking: A Comprehensive Survey. Proceedings of
the IEEE, v. 103, n. 1, p. 14–76, jan. 2015.
CHZE, P. L. R.; LEONG, K. S. A secure multi-hop routing for IoT communication. Internet of
Things (WF-IoT), 2014 IEEE World Forum on, n. 3, p. 428–432, 2014.
GIUSTO. D, A. Iera, G. Morabito, L. Atzori (Eds.), The Internet of Things, Springer. ISBN:
978-1-4419-1673-0. 2010.
FLAUZAC, O. et al. SDN Based Architecture for IoT and Improvement of the Security. 2015
IEEE 29th International Conference on Advanced Information Networking and Applications
Workshops, p. 688–693, 2015.
HUANG, H.; ZHU, J.; ZHANG, L. An SDN_based Management Framework for IoT Devices.
2014.
LI, S. et al. The internet of things: a survey. Information Systems Frontiers, n. April 2014, p.
243–259, 2014.
KIM, T. et al. Neighbor table based shortcut tree routing in ZigBee wireless networks. IEEE
Transactions on Parallel and Distributed Systems, v. 25, n. 3, p. 706–716, 2014.
ESLAMI, M.; KARIMI, O.; KHODADADI, T. A Survey on Wireless Mesh Networks:
Architecture, Specifications and Challenges 1. p. 219–222, 2014.
MCROBERTS, M. Arduino Básico. [s.l: s.n.]. p. 456. 2014.
54
RAN, P.; SUN, M.; ZOU, Y. ZigBee Routing Selection Strategy Based on Data Services and
Energy-Balanced ZigBee Routing. 2006 IEEE Asia-Pacific Conference on Services Computing
(APSCC’06), p. 400–404, 2006.
RODRIGUES, H. Redes Definidas por Software: uma abordagem sistêmica para o
desenvolvimento de pesquisas em Redes de Computadores. 2013.
TAN, L.; WANG, N. Future Internet: The Internet of Things. p. 376–380, 2010.
QIN, Z. et al. A software defined networking architecture for the internet-of-things. IEEE/IFIP
NOMS 2014 - IEEE/IFIP Network Operations and Management Symposium:
Management in a Software Defined World, 2014.
YUSSOFF, Y. M. et al. Development of a PIC-based wireless sensor node utilizing XBee
technology. ICIME 2010 - 2010 2nd IEEE International Conference on Information
Management and Engineering, v. 1, p. 116–120, 2010.
SONG, H.; CLARA, S. Protocol-oblivious forwarding: unleash the power of SDN through a
future-proof forwarding plane. HotSDN ’13, p. 127–132, 2013.
MCKEOWN, N. et al. OpenFlow: enabling innovation in campus networks. Computer
Communication Review, v. 38, p. 69–74, 2008.
CAI, Z.; COX, A.; T. S. NG, E. Maestro: A System for Scalable OpenFlow Control.
Cs.Rice.Edu, p. 10, 2011.
TOOTOONCHIAN, A. et al. On controller performance in software-defined networks.
Proceeding Hot-ICE’12 Proceedings of the 2nd USENIX conference on Hot Topics in
Management of Internet, Cloud, and Enterprise Networks and Services, p. 10–10, 2012.
ERICKSON, D. The beacon openflow controller. Proceedings of the second ACM SIGCOMM
workshop, p. 13–18, 2013.
55
PROJECT FLOODLIGHT. Disponível em: <http://floodlight.openflowhub.org/>. Acesso em:
9 abr. 2015.
RFC ForCES. Disponível em: <http://www.ietf.org/rfc/rfc5810.txt>. Acesso em: 9 abr. 2015.
XBee-SDN. Códigos Desenvolvidos para a introdução de SDN em uma rede ZigBee.
Disponível em: <https://github.com/AlexsandersonSantos/XBEE-SDN>. Acesso em: 10 mai.
2015.
XBee API Java. A Java API for Digi XBee/XBee-Pro OEM RF Modules. Disponível em:
<https://code.google.com/p/xbee-api/>. Acesso em: 20 mai. 2015.
XBee API Arduíno. Arduino library for communicating with XBees in API mode. Disponível
em: <https://code.google.com/p/xbee-arduino/>. Acesso em: 20 mai. 2015.
Camadas SDN. Disponível em: <http://www.neovise.com>. Acesso em: 13 mai. 2015
ZigBee Alliance, ZigBee Specifications, version 1.0, April 2005.
Institute of Electrical and Electronics Engineers, Inc., IEEE Std. 802.15.4-2003 ‘‘Wireless
Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low Rate
Wireless Personal Area Networks (LR-WPANs), New York, IEEE Press. October 1, 2003
56
APÊNDICES
APÊNDICE A – LOGS DO EXPERIMENTO
INFORMAÇÕES COLETADAS
Frame Route Record Indicator
Tabela de Rotas
Tabela de Endereços
Mensagem Create Source Route
Frame Route Record Indicator
Mensagem Create Source Route
Frame Route Record Indicator
Pacote de Solicitação de Rota
Dados do Pacote de Solicitação de Rota
VALORES
0 125 51 0 19 162 0 64 168 54 158 108 191 0 2 23 8
127 117 173
2/null,23,8,127,117
326
299
126 0 18 33 0 0 19 162 0 64 168 54 158 108 191 0 2
23 8 127 117 45
0 125 51 0 19 162 0 64 168 54 188 23 8 0 1 127 117
187
126 0 18 33 0 0 19 162 0 64 168 54 188 23 8 0 1 127
117 171
0 125 51 0 19 162 0 64 165 158 213 127 117 0 0 93
180
apiId=ZNET_EXPLICIT_RX_RESPONSE
(0x91),length=22,checksum=0x41,error=false,remot
eAddress64=0x00,0x13,0xa2,0x00,0x40,0xa5,0x9e,
0xd5,remoteAddress16=0x7f,0x75,option=PACKE
T_ACKNOWLEDGED,data=0x4f,0x4b,0xa8,0x9e,
sourceEndpoint=0xe8,destinationEndpoint=0xe8,cl
usterId(msb)=0x00,clusterId(lsb)=0x11,profileId(m
sb)=0x05,profileId(lsb)=0x00
0x4f 0x4b 0xa8 0x9e
NODO 1
Topologia
Endereço 16 bits: 299
Endereço 64 bits: 326
Endereço MSB: 108
Endereço LSB: 191
Vizinhos
Nó vizinho: 31
LQI: 249
NODO 3
Endereço 16 bits: 244
Endereço 64 bits: 378
Endereço MSB: 127
Endereço LSB: 117
Vizinhos
Nó vizinho: 111
LQI: 240
Nó vizinho: 31
LQI: 183
NODO 2
Endereço 16 bits: 31
Endereço 64 bits: 356
Endereço MSB: 23
Endereço LSB: 8
Vizinhos
Nó vizinho: 299
LQI: 254
Nó vizinho: 244
LQI: 252
NODO 4
Endereço 16 bits: 111
Endereço 64 bits: 379
Endereço MSB: 165
Endereço LSB: 214
Vizinhos
Nó vizinho: 244
LQI: 251
Download