6.2 Protocolo Gossiping using the Energy Map
6.2.2 Eventos e Ações
Esta seção modela o funcionamento do GEM baseado em eventos e ações de tal forma que, quando um evento acontece, ocorre uma ou mais ações correspondentes. Os
eventos considerados no GEM são receber pacote, liação e decisão. As guras 6.4 à 6.10 ilustram as ações correspondentes do GEM para cada um desses eventos.
O evento receber pacote acontece quando um nó recebe um pacote. O primeiro passo da ação de receber pacote é vericar se o nó corrente é o próximo nó do pacote recebido (gura 6.4, ponto A). Se verdadeiro, o nó analisa o tipo do pacote (gura 6.4, pontos B, E e G) e executa uma ação especíca para receber cada um dos tipos de pacote (gura 6.4, pontos C , F , H e I ). Em seguida, o nó termina a ação (gura 6.4, ponto D). Um pacote pode ser dos tipos dados, criação da árvore, liação e reconhe- cimento. O primeiro contém dados de difusão. O nó monitor usa o segundo tipo para criar a árvore. O pacote de liação permite que cada nó lho se apresente para seu respectivo pai que reconhecerá seu novo lho enviando um pacote de reconhecimento como resposta. Caso o nó corrente não seja o próximo nó do pacote recebido (gura 6.4, ponto A), esse nó apenas descarta o pacote (gura 6.4, ponto J ). Observa-se que todos os nós da rede serão o próximo nó dos pacotes de dados, pois o GEM é um protocolo para a difusão de dados.
Figura 6.4: Ação receber pacote do GEM
A ação para receber um pacote de dados verica se o pacote está sendo recebido pela primeira vez (gura 6.5, ponto A). Se verdadeiro, o GEM encaminha o pacote para a camada de aplicação (gura 6.5, ponto B). Em seguida, se o nó corrente é um nó interno (gura 6.5, ponto C ), ele escalona o envio do pacote recebido para o momento em que cada um dos seus lhos estiver acordado (gura 6.5, ponto D) e termina ação (gura 6.5, ponto E). A ação para receber pacote de dados também termina quando o nó não é interno (gura 6.5, pontos C e E). Se o nó recebeu anteriormente o pacote (gura 6.5, ponto A), ele descarta o pacote recebido e termina a ação (gura 6.5, pontos F e E).
A ação para um receber pacote de criação também verica se o pacote está sendo recebido pela primeira vez (gura 6.6, ponto A). Se verdadeiro, o nó corrente assume que o nó anterior do pacote é seu pai (gura 6.6, ponto B). Em seguida, ele executa
Figura 6.5: Ação receber pacote de dados do GEM
a ação liação (gura 6.6, ponto C ) na qual o nó envia um pacote de liação para seu pai saber sobre o novo lho. O passo seguinte faz com que o nó corrente verique se ele está localizado dentro de uma região de baixa energia (gura 6.6, ponto D). A seção 6.2.3 descreve como um nó faz essa vericação. Se o nó estiver localizado dentro de uma dessas regiões, ele adapta seu comportamento para economizar energia e prolongar o tempo de vida da rede (gura 6.6, ponto E). Por exemplo, o nó pode reduzir seu ciclo de trabalho para dormir por mais tempo ou decidir que não ser um nó interno para eliminar descobertas e agendamentos. Em seguida, o nó corrente verica se sua distância em relação ao nó anterior do pacote é maior que um limiar de distância (gura 6.6, ponto F ). Se verdadeiro, ele escalona o evento decisão para decidir se será um nó interno (gura 6.6, ponto G). Caso contrário, ele será uma folha (gura 6.6, ponto I ) porque está localizado próximo ao anterior e suas descobertas seriam redundantes com as desse nó. O fato dos nós próximos ao anterior se tornarem folhas aumenta a distância média entre os nós internos, reduz o número desses nós na árvore e minimiza as descobertas e os agendamentos. Somente os nós internos realizam essas tarefas. Quando um nó decide ser folha, ele cancela eventuais escalonamentos do evento decisão (gura 6.6, ponto J ) e termina a ação corrente (gura 6.6, ponto H ). O nó deve cancelar esse evento porque sua decisão está tomada e ele pode ter escalonado tal evento quando recebeu o pacote de criação pela primeira vez.
As ações para receber os pacotes de liação e reconhecimento e a ação correspon- dente ao evento liação fazem com que cada nó sensor tenha um nó pai. Todo nó pai é um nó interno e é responsável por enviar os pacotes de difusão quando cada um de seus lhos estiver acordado. As guras 6.7, 6.8 e 6.9 ilustram as três ações, respec- tivamente. A ação para receber uma pacote de liação acontece porque o nó corrente enviou um pacote de criação e recebeu como resposta outro de liação, signicando que algum vizinho assumiu o nó corrente como pai. O primeiro passo dessa ação faz com que o nó corrente atualize sua lista de lhos (gura 6.7, ponto A) e escalone o envio de um pacote de reconhecimento destinado ao seu novo lho (gura 6.7, ponto B).
Figura 6.6: Ação receber pacote de criação do GEM
Figura 6.7: Ação receber pacote de liação do GEM
A ação para receber um pacote de reconhecimento faz com que o nó corrente saiba que foi reconhecido por seu pai. Assim, ele marca esse reconhecimento (gura 6.8, ponto A) e cancela o escalonamento do evento liação.
Figura 6.8: Ação receber pacote de reconhecimento do GEM
Um nó sensor executa a ação liação quando recebe um pacote de criação pela primeira vez. Nessa ação, o nó corrente escalona o envio de um pacote de liação para que o pai saiba sobre esse novo lho (gura 6.9, ponto A). Esse evento acontece no momento em que o pai estiver acordado. Isso é possível porque o cabeçalho do pacote de criação contém o escalonamento de trabalho do nó pai. O pacote de liação também tem esse campo para que o pai saiba quando enviar pacotes para seu novo lho. Como mostrado no capítulo 4, as informações sobre escalonamento de trabalho podem ser descritas em alguns bytes. O próximo passo da ação liação faz com que o nó corrente reescalone esse evento (gura 6.9, ponto B). Isso porque se o nó corrente não receber seu reconhecimento, ele precisa enviar o pacote de liação novamente.
O evento decisão acontece simultaneamente em todos os vizinhos de um nó in- terno. Essa simultaneidade acontece porque quando um nó envia um pacote de criação, ele especica no cabeçalho em quanto tempo seus vizinhos devem escalonar o evento
Figura 6.9: Ação de liação do GEM
decisão. Além disso, quando esse evento acontece, o nó corrente acorda e permanece assim até tomar sua decisão. O primeiro passo da ação de decisão faz com que o nó corrente verique se ele participa da árvore (gura 6.10, ponto A). Se verdadeiro, ele calcula sua probabilidade de decisão, escolhe um número aleatório e verica se esse número é menor que sua probabilidade de decisão (gura 6.10, pontos B, C e D). A seção 6.2.4 mostra como cada nó sensor calcula essa probabilidade. Se o número aleató- rio for menor que a probabilidade de decisão (gura 6.10, ponto D), o nó corrente será um nó interno (gura 6.10, ponto E). Assim, ele escalona suas transmissões do pacote de criação e termina a ação corrente (gura 6.10, pontos F e G). Essas transmissões possibilitam que o novo nó interno faça suas descobertas e agendamentos. Quando o número aleatório for maior ou igual à probabilidade de decisão (gura 6.10, ponto D), o nó corrente reescalona o evento de decisão para acontecer em um time step (gura 6.10, ponto H ) tempo necessário para que um nó envie um pacote de criação e todos seus vizinhos que estiverem acordados recebam e tratem o pacote. Durante o tempo de espera, se um nó receber um pacote de criação e a distância entre esse nó e o emissor do pacote for menor que o limiar de distância, a ação receber pacote de criação faz com que o nó seja uma folha, terminando a decisão. Após o tempo de espera, se o nó não tomou sua decisão, ele executa novamente a ação corrente, ganhando uma nova oportunidade de decisão. O nó sensor reescalona o evento de decisão até que ele ou um vizinho próximo decida ser um nó interno. O projetista da rede pode denir um número máximo de reescalonamentos, eliminando a possibilidade de uma repetição innita. Quando o evento de decisão acontece em um nó interno, esse envia um pacote de criação (gura 6.10, pontos A e I ), fazendo com que vizinhos próximos sejam folhas, o que minimiza o número de nós internos na árvore.
Como no capítulo 4, para que todos os vizinhos de um nó interno tenham a oportunidade de receber o pacote de criação com o menor número possível de retrans- missões, cada nó interno escalona suas retransmissões baseadas em dois pressupostos. Primeiro, o tempo total do processo de retransmissões deve ser igual ao período em que um nó permanece adormecido em seu ciclo operacional, garantindo que todos os vizinhos do nó interno sempre acordam durante o processo. Segundo, o intervalo entre as retransmissões deve ser igual ao período em que os nós permanecem acordados em
Figura 6.10: Ação de decisão do GEM
um ciclo operacional, garantindo que quando um vizinho acorda, o nó interno corrente sempre efetua pelo menos uma retransmissão antes desse vizinho voltar a dormir.