17.06.2015 Views

Monografia - UFF

Monografia - UFF

Monografia - UFF

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.4 O Algoritmo Completo 41<br />

1: function probeTimerExpire(currentProbe) {<br />

2:<br />

3: sendProbeAtRate(probeRates[currentProbe % 4]);<br />

4: currentProbe = currentProbe + 1;<br />

5: }<br />

6:<br />

7: function recvProbe(from, rate) {<br />

8:<br />

9: updateStatistics(from, rate);<br />

10: updateCost(from);<br />

11: }<br />

12:<br />

13: function updateCost(from) {<br />

14:<br />

15: usedStatistics = probeRateChoice(from);<br />

16: sourceRate = probeRates[usedStatistics];<br />

17: P ab = nLq[from, usedStatistics];<br />

18: P ba = Lq[from, usedStatistics];<br />

19: bestCost = infinity;<br />

20:<br />

21: for (i in availableRates) {<br />

22: newETX = computeETXAtRate(P ab , P ba , sourceRate, i);<br />

23: newCost = (newETX * probeSize) / i;<br />

24:<br />

25: if (newCost < bestCost) {<br />

26: bestCost = newCost;<br />

27: bestRate = i;<br />

28: }<br />

29: }<br />

30:<br />

31: if (bestCost != infinity) {<br />

32: rateForLink[from] = bestRate;<br />

33: }<br />

34: costForLink[from] = bestCost;<br />

35: }<br />

Figura 3.6: Pseudocódigo do funcionamento básico do MARA.<br />

3.4 O Algoritmo Completo<br />

A execução do MARA pode ser resumida pelo pseudocódigo apresentado na Figura 3.6.<br />

Periodicamente, o MARA envia um dos seus pacotes de probe. Quando o temporizador<br />

de envios expira, a função probeT imerExpire é executada, realizando o envio. Antes do<br />

envio em si, a função precisa decidir qual é a taxa do probe atual. Para isso, utiliza-se

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!