Monografia - UFF
Monografia - UFF
Monografia - UFF
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