• Nenhum resultado encontrado

3.3 O Protocolo RACE

3.4.3 Componente de Ciência de Congestionamento

Frente aos trabalhos encontrados na literatura, a utilização o co- nhecimento da quantidade de buffer para tomada de decisão de ro- teamento é um aspecto inovador presente neste trabalho. Todos os trabalhos sobre protocolos de roteamento que utilizam métricas para construir rotas, consideram a velocidade, qualidade do enlace e a ener- gia residual dos nodos. Porém, como observado em [Hull, Jamieson e Balakrishnan 2004] e recentemente em [Agarkhed, Biradar e Mytri 2012], o estouro de buffer é um dos fatores que causam a perda de pa- cotes e por consequência degrada o desempenho dos protocolos. Por isso, a informação da situação de buffer pode ajudar a reduzir a perda de pacotes.

O componente de ciência de congestionamento é responsável por prover as medições sobre a situação de buffer dos nodos. Esta métrica é importante, pois o conhecimento da situação de congestiona- mento pode evitar consequentes retransmissões provocadas por perda de pacotes, o que ocasiona uma grande disputa pelo canal. O traba- lho [Fdili Youssef Fakhri 2012], posterior ao RACE, também utilizou o conhecimento de buffer para realizar decisão de roteamento melho- rando o desempenho do protocolo MMSPEED, discutido na subseção 2.1.3.

Na camada de rede do protocolo RACE, cada nodo tem dois ti- pos de buffers, para pacotes com e sem prioridade, como pode ser visto na Figura 3.1. A fila normal é organizada de maneira FIFO, enquanto a outra é uma fila de prioridade. As prioridades na fila são computa- das considerando o tempo de criação do pacote. Os pacotes que foram criados há mais tempo, têm maior prioridade. O tempo de criação do

pacote indica que ele está a mais tempo viajando pela rede, então para garantir que ele possa chegar com o menor atraso possível, ele recebe a prioridade de ser transmitido.

Para ficar ciente da situação de congestionamento, cada nodo precisa manter o conhecimento da situação de buffer da vizinhança. Isto é feito pela cálculo do grau de congestionamento médio (utilizando média móvel) MBr, que consiste da situação local do nodo vizinho no subconjunto Fn. Esse processo é ilustrado pela Equação 3.3, onde Bri é a normalização do buffer local. O termo Br é calculado de acordo com a equação 3.4 onde Bc e Bd são, respectivamente, o espaço (buf- fer) utilizado das filas normal e de prioridade e Bcmax e Bdmax são respectivamente a capacidade máxima dos buffers das filas normal e de prioridade. MBr= PN i Bri N (3.3) Br= (Bcmax− Bc) + (Bdmax− Bd) (3.4)

Considera-se que as aplicações de todos os nodos tenham perío- dos diferentes para os envios das mensagens. Sendo assim, espera-se que haja nodos que enviem mais mensagens que outros. Dessa forma, serão geradas regiões mais congestionadas que outras, e é este fato que a métrica de buffer pretende explorar. A Figura 3.2 ilustra uma situação de congestionamento, onde a métrica de buffer é utilizada para evitar regiões congestionadas. Nesta figura, os nodos encaminham mensa- gens por regiões alternativas onde os nodos estão descongestionados,

Fig. 3.2: Evitando Regiões Congestionadas

evitando que nodos com os limites máximos de buffers atingidos sejam escolhidos. Dessa forma, que novas mensagens possam ser descarta- das.

O processo para o cálculo da métrica de buffer residual é execu- tado em duas etapas. A primeira, descrita pelo algoritmo 2, é executado por todos os nodos para informarem aos seus vizinhos sobre as suas si- tuações atuais de buffer. Os espaços utilizados dos buffers das filas normal e prioridade e as suas capacidade máximas são os parâmetros de entrada do algoritmo. Como resultado o algoritmo devolve o buffer residual do nodo local e essa informação é anexada a mensagem bea- conque será transmitida para os nodos vizinhos no próximo período

de envio.

Input: Buffer Normal Utilizado (Bc), Buffer Prioridade Utilizado (Bd), Buffer Normal Máximo

(Bcmax),Buffer Prioridade Máximo (Bdmax) Output: Buffer Residual (Br)

Br= (Bcmax- Bc) + (Bdmax- Bd); return Br;

Algorithm 2: Algoritmo para o Cálculo do Buffer Residual Local

A segunda etapa, ilustrada no algoritmo 3, ocorre no nodo fonte que mantem o conhecimento da média da situação de buffer dos vizi- nhos. O conjunto de nodos vizinhos é a entrada do algoritmo. Como resultado, o buffer residual médio de cada nodo vizinho é atualizado para uso posterior na escolha das métricas.

Input: Conjunto de Nodos Vizinhos N eighbor T amanhoJ anela = 5;

foreach Neighbor i do

for j = 1 to TamanhoJanela do

Neighbor[i].br = Neighbor[i].br + Neighbor[i].br[j]; end

Neighbor[i].br = Neighbor[i].br/TamanhoJanela; end

Algorithm 3: Algoritmo para o Cálculo do Buffer Residual Médio dos Vizinhos

3.4.4 Estimador de Qualidade de Enlace

O componente estimador de qualidade de enlace foi implemen- tado na camada MAC e pode ser usado sob demanda da camada de ro- teamento para computar a métrica de qualidade de enlace. De acordo com [Woo, Tong e Culler 2003], é essencial ter um estimador de quali- dade de enlace, pois a escolha do melhor enlace está diretamente rela- cionada com o sucesso na transmissão de pacotes. Como consequência da perda de pacotes, os nodos sensores gastam mais energia devido à necessidade de retransmissão, além do aumento da disputa pelo canal. Dentre os diversos estimadores de qualidade de enlace existen- tes, foi escolhido o WMEWMA (Window Mean Exponentially Weigh- ted Moving Average) [Woo e Culler 2003], pois, além de ser um esti- mador clássico da literatura, a sua implementação é simples e usa de maneira eficiente a memória, o que, para um nodo sensor é uma carac- terística importante em virtude das restrições de recursos. A Equação 3.5 é usada para calcular o WMEWMA, sendo LQEα,W(n) ∈ [0,1], α ∈ [0,1] e P RR = Nts

Nt e P RR ∈ [0,1] , onde Nts é o número de

pacotes transmitidos com sucesso e Nté o número de pacotes transmi- tidos. O parâmetro W é o tamanho da janela de tempo de observação do LQE e α é o peso dado ao histórico.

LQEα,W(n) = α ∗ LQEα,W(n − 1) + (1 − α) ∗ P RR (3.5)

O processo para o cálculo da qualidade de enlace é expresso pelo algoritmo 4. A cada vez que uma mensagem é enviada para um nodo vizinho, a taxa de pacotes recebida é computada (PRR). Após

um tempo W o PRR é filtrado com WMEWMA para o cálculo final do LQE. O conjunto de nodos vizinhos e os parâmetros α e W são as entradas do algoritmo. Como resultado, o LQE de cada nodo vizinho é atualizado para uso posterior na escolha das métricas.

Input: Conjunto de Nodos Vizinhos N eighbor,α,W foreach Neighbor i do Neighbor[i].prr = Neigh- bor[i].qtdPacotesEnviadosSucesso/Neighbor[i].qtdPacotesEnviados; end foreach Neighbor i do for j = 1 to W do Neighbor[i].lqe[j] = α * Neighbor[i].lqe[j] + (1-α) * Neighbor[i].prr; end end

Algorithm 4: Algoritmo para o Cálculo do LQE dos Vizinhos