ZigBee Tiago Souza Azevedo [email protected] CPE 825 - Roteamento em Redes de Computadores Programa de Engenharia de Sistemas e Computação Universidade Federal do Rio de Janeiro Especificação ZigBee • Suíte de protocolos de comunicação para rádios digitais baseda no padrão IEEE 802.15.4 • Definida pela “ZigBee Alliance”, união de empresas com o objetivo de: Definir as camadas de rede, segurança e aplicação; Provêr interoperabilidade e especificações de teste de conformidade; Gerenciar a evolução da tecnologia; ZigBee Alliance Alguns Participantes: Especificação ZigBee Taxas e Freqüências Camada de Rede Objetivos: definir mecanismos para ingressar e abandonar uma rede; rotear frames e aplicar primitivas de segurança; descobrir e manter rotas entre dispositivos; descobrir dispositivos vizinhos que podem ser alcançados diretamente; armazenar informações do estado da rede; atribuir endereços para todos os dispositivos novos; Dispositivos ZigBee • ZigBee Coordinator (Coordenador ZigBee - ZC): cria uma rede tornando-se a raiz da árvore dessa rede; o único dispositivo capaz de rotear dados entre redes; armazena informação sobre a rede; determina parâmetros como: o número máximo de filhos (Cm) de um roteador o número máximo de roteadores filhos (Rm) a profundidade da rede (Lm). Dispositivos ZigBee •ZigBee End Device (Dispositivo Final ZigBee - ZED): troca informações com seu nó pai; requer menos memória, pois não precisa armazenar informações de roteamento; é mais barato que um roteador ou um coordenador ZigBee; • ZigBee Router (Roteador ZigBee - ZR): rotear dados para outros dispositivos; utiliza os parâmetros (definidos pelo ZC)para calcular o parâmetro Cskip; este é utilizado para computar o tamanho do “pool” de endereços de filhos : 1 Cm ( Lm d 1), Cskip(d ) 1 Cm Rm Cm Rm Lm d 1 , 1 Rm se Rm 1 (a) Caso contrário (b) Dispositivos ZigBee Topologias de Redes ZigBee A especificação ZigBee suporta três topologias de redes: estrela, árvore, e malha. Formação da Rede ZigBee PASSOS: início através de uma primitiva da camada de rede que é restrita ao coordenador ZigBee; procura por um conjunto de canais; procura em cada canal por dispositivos ou redes ZigBee; escolhe o melhor canal para criar uma nova rede; escolhe um identificador de rede; permite outros dispositivos ingressarem na rede; Atribuição de Endereços ao ingressar em uma rede, cada dispositivo recebe um endereço de rede lógico os endereços de rede são atribuídos ou por um coordenador ou por um roteador, usando um algoritmo de árvore estruturada Atribuição de Endereços - Exemplo Cskip=31 01 Total:127 32 63 94 125,126 node A 32 Addr = 64, Cskip = 1 Cm=6 Rm=4 Lm=3 Se um nó pai na profundidade d tem endereço Aparent, então: Addr = 92 Addr = 125 Ao n-ésimo roteador filho é atribuido o endereço Aparent + (n-1) × Cskip(d) + 1 Addr = 63, Cskip = 7 Addr = 30 C Addr = 0, Cskip = 31 Addr = 126 Addr = 1, Cskip = 7 A Addr = 32, Cskip = 7 Addr = 31 B Addr = 40, Cskip = 1 Addr = 33, Cskip = 1 Addr = 45 C Addr = 38 Addr = 39 Ao n-ésimo dispositivo final, é atribuido o endereço Aparent + Rm × Cskip(d) + n Procedimento de Inundação Cada dispositivo mantêm um registro de qualquer nova transação broadcast (broadcast transaction record - BTR); Esse registro contem o número de seqüência e o endereço fonte do frame de broadcast; Esses registros são armazenados na tabela de transações broadcast (broadcast transaction table - BTT); Procedimento de Inundação Algoritmo: • Ao receber um frame de broadcast de um vizinho: • Comparar o número de seqüência e o endereço fonte com seus registros na BTT • Se o dispositivo tem uma BTR para este frame • Então ele deve descartar o frame. • Senão, nenhum registro é encontrado, o dispositivo cria um novo registro na BTT e verifica o campo “radius”. • Se maior que zero o dispositivo decrementa este campo e retransmite o frame (espera por um tempo aleatório) • Caso contrário o frame é descartado. Cálculo do Custo do Enlace •Um caminho P de tamanho L, é um conjunto ordenado de dispositivos [D1, D2, ..., DL] e enlaces [Di, Di+1]. O custo total de um caminho é dado por: onde cada valor C{[Di, Di+1]} é o custo do enlace entre os dispositivos Di e Di+1. O custo do enlace C{l} para o enlace L varia no intervalo de [0,7] e é definido por: onde PL é a probabilidade da entrega com sucesso de um pacote no enlace. Cálculo do Custo do Enlace Como PL é calculado? tarefa atribuída aos programadores; a maneira mais natural, seria continuamente contar o número de pacotes recebidos e perdidos durante o período de funcionamento; Capacidade de Roteamento Um dipositivo tem capacidade de tabela de rota se: é um coordenador ou roteador ZigBee; possui uma tabela de rotas; possui registro livre em sua tabela de rota ou um registro correspondente ao endereço destino na tabela de rotas; Capacidade de Roteamento Um dispositivo tem capacidade de tabela de descoberta de rota se: possui uma tabela de descoberta de rota possui um registro livre em sua tabela de descoberta Se um dispositivo tem ambos, capacidade de tabela de descoberta de rota e capacidade de tabela de rota então dizemos que ele possui Capacidade de Roteamento. Algoritmo de Roteamento Roteamento em Árvore ou Roteamento Hierárquico Para um dispositivo roteador com endereço An em uma profundidade d, se então o endereço de destino D é um descendente deste roteador e o endereço N do próximo salto é dado por: para dispositivos finais e caso contrário. Se a expressão não é satisfeita, o frame deve ser encaminhado até o dispositivo pai. Descoberta de rota (AODV) Se o dispositivo não tem um registro na tabela de rotas para o destino, então: • estabelecer um registro na tabela com o campo “status” igual a constante DISCOVERY_UNDERWAY; • envia um frame com o comando de descoberta(RREQ) de rota em broadcast; • os dispositivos ao receberem o frame RREQ se comportam como: Recepção de um RREQ Recepção de um RREP Descoberta de Rotas - Exemplos Custo:6 Custo: 1 Nó F ZED Nó E ZR Custo:7 Nó C ZR Nó D ZR Custo:7 Custo:3 Nó B ZR Custo:2 Nó A ZC Descoberta de Rotas - Exemplos Discover Table Id:50 ResidualC:10 ForwardC:6 Nó F ZED RREQ PathCost:10 Nó E ZR Discover Table Id:50 ResidualC:9 ForwardC:1 Routig Table Destino: F PathCost:1 Nó D ZR RREP Id:50 PathCost:10 RREP Id:50 PathCost:16 RREP Id:50 PathCost:16 RREP Id:50 PathCost:10 RREQ PathCost:9 Nó B ZR Discover Table Id:50 ResidualC:2 ForwardC:0 RREQ Id:50 PathCost:2 Routig Table Destino: F PathCost:6 Discover Table Id:50 ResidualC:3 ForwardC:0 Nó C ZR RREQ Id:50 PathCost:3 Nó A ZC Routig Table Destino: F NextHop:B Status:ACTIVE Manutenção de Rotas A manutenção de rotas é subdividida em: • manutenção da rede com topologia de malha; • manutenção da rede com topologia de árvore; Manutenção de Rotas Na manutenção da rede com topologia de malha: O dispositivo máximo alcançado envia um frame de “route request” com o seu próprio endereço como fonte e o endereço do nó que falhou como destino em broadcasting; Enquanto estiver executando a manutenção, qualquer frame pendente para o destino que falhou deve ser armazenado até o fim da manutenção ou descartado dependendo da capacidade do dispositivo; Se um “route reply” não chegar dentro de um tempo determinado, o dispositivo retorna um frame de “route error”; Neste caso o dispositivo fonte tentará encontrar outra rota, através do procedimento de descoberta de rota, ou encaminhará os dados para o destino utilizando o roteamento hierárquico; Manutenção de Rotas Na manutenção da rede com topologia de árvore: Ocorre quando um dispositivo não consegue mais alcançar seu pai, este tenta uma nova associação com seu pai através de primitivas da camada abaixo; Se este procedimento falhar, o dispositivo deve desassociar seus filhos e procurar por outro dispositivo pai, recebendo um novo endereço; Dúvidas ?