• Nenhum resultado encontrado

Por forma a estimar a proximidade dos v´arios n´os, o DEBA utiliza a informac¸˜ao contida nos Vectores de Vizinhanc¸a anunciados periodicamente pelos n´os que formam a rede. Inicialmente, dado que as tabelas de vizinhanc¸a dos n´os se encontram vazias, os vectores de vizinhanc¸a enviados apenas contˆem o vector local do pr´oprio n´o. Por´em, `a medida que os n´os v˜ao recebendo os vectores de vizinhanc¸a dos seus vizinhos, estes v˜ao sendo gradualmente agregados. No entanto, o Vector Local de cada n´o, contido no Vector de Vizinhanc¸a, s´o ir´a ser propagado a dois saltos de distˆancia. Esta perda de informac¸˜ao ´e necess´aria por forma a evitar que as constantes agregac¸˜oes resultem num ´unico Vector de

Cap´ıtulo 3. Digest Exchange Broadcast Algorithm 18

Vizinhanc¸a que seria partilhado por todos os n´os da rede. Caso este cen´ario acontecesse, deixaria de ser poss´ıvel estimar a proximidade entre os v´arios n´os, uma vez que estas s˜ao identificadas pelas diferenc¸as entre os v´arios Vectores de Vizinhanc¸a. Por forma ao n´o identificar as secc¸˜oes do Vector de Vizinhanc¸a que ser˜ao agregadas e as que ser˜ao rejei- tadas (as secc¸˜oes que atingiram o n´umero m´aximo de retransmiss˜oes), esta informac¸˜ao ´e identificada pelo pr´oprio emissor do vector de vizinhanc¸a. Isto ´e, caso o n´o x receba um Vector de Vizinhanc¸a do n´o y, y ir´a indicar, ao n´o x, que parte do seu Vector de Vizinhanc¸a dever´a ser incorporada no Vector de Vizinhanc¸a de x (relativamente `a Fig. 3.2 esta informac¸˜ao corresponde aos valores assinalados com um asterisco (*) no Vector de Vizinhanc¸a). O Alg. 1 apresenta os passos realizados no envio e recepc¸˜ao das mensagem de controlo.

Algoritmo 1 Pseudo-c´odigo do algoritmo desenvolvido - Anuncio de vectores

1: uses Mac Layer (MAC)

2:

3: upon event < Init > do

4: handledM sgs ← ø 5: tv ← ø 6: startT imer(∆) 7: vl = randomN umber 8: E = getM ACAddress(self ) 9:

10: upon event < Timeout > do

11: {vv0 corresponde `a informac¸˜ao que ir´a ser agregada no Vector de Vizinhanc¸a}

12: vv ← ø

13: for all (src → (vv, vv0) ∈ tv do

14: vv = vv ∪ vvn0

15: end for

16: vv = vv ∪ vl

17: trigger < controlMsgsSend |E, vv, vl >

18: startT imer(∆)

19:

20: upon event < controlMsgsDeliver |src, vv, vv0 > do

21: tv[src] = (vv, vv0)

Quando um n´o pretende enviar uma mensagem de difus˜ao este ir´a seleccionar, da sua tabela de vizinhanc¸a, os pr´oximos n´os que ir˜ao retransmitir a mensagem e ir´a incorpo- rar esta informac¸˜ao no cabec¸alho da mesma (Alg. 2). Os n´os seleccionados s˜ao aqueles cujos vectores de vizinhanc¸a sejam suficientemente distintos entre si, garantindo-se as- sim que os pr´oximos retransmissores est˜ao suficientemente distantes por forma a evitar o envio de mensagens redundantes. Al´em da lista de enderec¸os seleccionados para re- transmitir a mensagem, o cabec¸alho de cada mensagem difundida cont´em ainda um iden- tificador ´unico de mensagem gerado pelo emissor (que pode ser obtido por exemplo pela

Cap´ıtulo 3. Digest Exchange Broadcast Algorithm 19

concatenac¸˜ao de En com um n´umero de s´erie local ao emissor). O identificador ´unico

de mensagem permite aos n´os identificar duplicados, que ser˜ao descartados. Esta funci- onalidade assegura igualmente a terminac¸˜ao da propagac¸˜ao das mensagens, dispensando estimativas sobre o n´umero m´aximo de saltos que a mensagem ir´a necessitar para cobrir a totalidade da rede e portanto um campo do tipo time-to-live (TTL).

Algoritmo 2 Pseudo-c´odigo do algoritmo desenvolvido continuac¸˜ao

1: upon event < MsgsBroadcast |m > do

2: Cm n ← ø

3: idM sg = newID()

4: handleM sgs = handleM sgs ∪ idM sg

5: ls = obtemRetransmissores(tv, Cm n) 6: Broadcast(E, [idM sg, ls, m]) 7: 8: function obtemRetransmissores(tv, Cm n ) 9: tv = ordenaT V (tv) 10: for all src → (vv, vv0) ∈ tv do 11: val = true

12: for all srca→ (vva) ∈ Cnm&& val do

13: if (metrica(vv, vva) > threshold) then

14: bool = f alse 15: end if 16: end for 17: if (val) then 18: lista = lista ∪ {src} 19: Cnm[src] = (vv) 20: end if 21: end for 22: return lista

A selecc¸˜ao dos retransmissores ´e feita atrav´es de uma func¸˜ao de comparac¸˜ao. Esta func¸˜ao de comparac¸˜ao ´e a parte central do DEBA e ´e executada independentemente por cada n´o que tenha sido seleccionado para retransmitir a mensagem. Como detalhado no Alg. 2 (linha 5), para um n´o n, a func¸˜ao recebe como argumentos a Tabela de Vizinhanc¸a

de n (T Vn) e a lista de vizinhos seleccionados pelo n´o do qual a mensagem foi recebida

(Cnm) e retorna a lista dos vizinhos seleccionados. Genericamente, a func¸˜ao pode ser

decomposta em dois passos: i) ordenac¸˜ao de T Vn, ii) sequencialmente, para cada n´o em

T Vn, decidir se o n´o ´e ou n˜ao seleccionado.

O crit´erio de ordenac¸˜ao de T Vn influencia o algoritmo uma vez que os primeiros ele-

mentos analisados ter˜ao preferˆencia de selecc¸˜ao sobre os restantes. Assim, o passo i)

(Alg. 2 linha 9) ordena T Vnpor ordem decrescente da dimens˜ao do vector de vizinhanc¸a.

Este crit´erio ´e justificado por cada n´o gerar um vector local com o mesmo n´umero de inteiros e portanto, a um Vector de Vizinhanc¸a com mais elementos corresponder um n´o

Cap´ıtulo 3. Digest Exchange Broadcast Algorithm 20

com um maior n´umero de vizinhos, ou seja, com uma maior cobertura da retransmiss˜ao. Outros crit´erios testados, mas que avaliac¸˜oes preliminares mostraram n˜ao apresentar me- lhor desempenho foram:

• Ordem crescente da dimens˜ao do vector de vizinhanc¸a - este crit´erio ´e justificado por cada n´o gerar um vector local com o mesmo n´umero de inteiros e portanto, a um Vector de Vizinhanc¸a com menos elementos corresponder um n´o com menor n´umero de vizinhos. Assim, assume-se que o n´o se encontra numa zona pouco densa da rede e ao fazer estes n´os retransmitirem a mensagem garante-se que estes a ir˜ao receber. No entanto, esta abordagem n˜ao obteve bons resultados uma vez que em alguns casos os n´os seleccionados para retransmitir uma mensagem e cujo tama- nho do Vector de Vizinhanc¸a apresentavam menor dimens˜ao estavam cobertos por um outro n´o cujo tamanho do Vector de Vizinhanc¸a apresentava maior dimens˜ao. • Ordenac¸˜ao aleat´oria - neste caso a ordem de T V ´e ditada pela sequˆencia com que

as mensagens de controlo s˜ao recebidas. Devido a isto, o algoritmo em alguns casos apresentava um mau desempenho pois os n´os seleccionados para retransmitir uma mensagem apresentavam um Vector de Vizinhanc¸a de menor dimens˜ao que estaria coberto por um outro n´o cujo tamanho do Vector de Vizinhanc¸a apresentava maior dimens˜ao. Enquanto noutros casos obtinha um bom desempenho devido a serem seleccionados primeiro os n´os com Vectores de Vizinhanc¸a de maior dimens˜ao. Para uma mensagem m, o passo ii) (representado no Alg. 2 linhas 10-21) compara

sequencialmente o vector de vizinhanc¸a de cada um dos elementos de T Vncom cada um

dos elementos de um conjunto Cnm composto pelos vectores de vizinhanc¸a de:

• o n´o do qual foi recebida a mensagem m;

• os n´os que constam da lista de retransmissores em m e que existam tamb´em em

T Vn, ou seja, alguns dos n´os que s˜ao vizinhos tanto do emissor como do receptor

• n´os entretanto j´a seleccionados para retransmiss˜ao em iterac¸˜oes anteriores do passo ii).

Para que um n´o seja seleccionado, este tem de se mostrar suficientemente distinto na

comparac¸˜ao com todos os elementos de Cnm. As comparac¸˜oes podem seguir diferentes

crit´erios. Sejam V Va ∈ T Vn, V Vb ∈ Cnm dois vectores de vizinhanc¸a em comparac¸˜ao.

Foram desenvolvidas e avaliadas as seguintes quatro m´etricas:

R´acio Total Determinista (RTD) quociente do n´umero de inteiros em comum entre os dois vectores pelo n´umero total de inteiros na uni˜ao dos dois vectores, ou seja,

RT D(a, b) = |V Va∩V Vb|

|V Va∪V Vb|. Os vectores s˜ao considerados semelhantes se o quociente

Cap´ıtulo 3. Digest Exchange Broadcast Algorithm 21

R´acio Total Probabilista (RTP) como em RTD, contudo, o vector ´e considerado dis- tinto se RTP for inferior a uma constante pr´e-definida. Caso contr´ario, a semelhanc¸a ´e determinada por uma func¸˜ao probabilista que decresce linearmente com o valor de RTP.

R´acio M´ınimo Determinista (RMD) quociente do n´umero de inteiros em comum entre

os dois vectores pela dimens˜ao do menor vector, ou seja, RM D(a, b) = |V Va∩V Vb|

min{|V Va|,|V Vb|}.

Os vectores s˜ao considerados semelhantes se o quociente for superior a uma cons- tante pr´e-definida.

R´acio M´ınimo Probabilista (RMP) como em RMD, contudo, o vector ´e considerado distinto se RMP for inferior a uma constante pr´e-definida. Caso contr´ario, a semelhanc¸a ´e determinada por uma func¸˜ao probabilista que decresce linearmente com o valor de RMP.

De notar que qualquer das m´etricas resulta trivialmente na exclus˜ao de n´os que estejam

j´a presentes em Cm

n uma vez que, para qualquer n´o n, RT D(n, n) = RM D(n, n) =

1. A preparac¸˜ao da retransmiss˜ao termina com a incorporac¸˜ao dos enderec¸os dos n´os seleccionados no cabec¸alho da mensagem.

O Alg. 3 (linhas 4-18), mostra que quando um n´o n recebe uma mensagem de difus˜ao, este ir´a verificar se recebeu anteriormente uma c´opia dessa mensagem. Esta verificac¸˜ao ´e efectuada atrav´es da comparac¸˜ao do identificador ´unico da mensagem com um vector que guarda os identificadores das ´ultimas mensagens recebidas. Caso o vector j´a contenha o identificador da mensagem, esta ´e descartada, caso contr´ario, o n´o adiciona este identi- ficador ao vector e entrega a mensagem `a aplicac¸˜ao. Em seguida, o n´o verifica se o seu

identificador (En) est´a contido na lista de retransmissores no cabec¸alho da mensagem. Se

estiver, o n´o ir´a seleccionar os pr´oximos retransmissores e ir´a propagar a mensagem, caso contr´ario, o n´o n˜ao ir´a realizar qualquer operac¸˜ao.

Documentos relacionados