Lo scheduler round robin classico risulta iniquo nel caso ho pacchetti di dimensione variabile, una delle implementazioni per simulare un round robin su pacchetti di dimensione variabile è il Deficit Round Robin
Ho una serie di code su cui accumulo ad ogni turno una serie di permessi Se i permessi sono sufficienti a trasmettere, posso trasmettere, altrimenti li accumulo. Per ogni coda ho:
Quando visito la coda i-esima calcolo il nuovo Di Di = Di + Qi Finchè Di >= Li (Li= lunghezza primo pacchetto) trasmetto il primo pacchetto. Quando la coda che sto servendo non ha più pacchetti, non accumula deficit, La mia idea è di trasmettere qualcosa ad ogni iterazione, per questo posso fare il quanto grande come il più grande pacchetto possibile. Faccio in modo che rimangano nella lista solo le code attive:
CODE:
Round | Coda | Di iniziale | Di finale | L pacchetto Tx | FineTx |
---|---|---|---|---|---|
1 | 1 | 0 | 300 | 200 | 200 |
1 | 2 | 0 | 0 | 500 | 700 |
1 | 3 | 0 | 400 | 100 | 800 |
1 | 4 | 0 | 320 | 180 | 980 |
2 | 1 | 300 | 50 | 750 | 1730 |
2 | 3 | 400 | 300 | 600 | 2850 |
2 | 3 | 300 | 0 | 200 | 3050 |
2 | 4 | 120 | 0 | 50 | 3800 |
Assumendo lunghezza media della coda costante, calcolare la distribuzione di probabilità e valore atteso del numero di pacchetti tra due eventi di scarto successivi nei due casi:
a: chiamo X il numero di pacchetti tra due scarti
Pr(X=x) = (1-p)^X*p
x | Prob
--- | ---
0 | p
1 | (1-p)p
2 | (1-p)^2p
è una distribuzione di tipo geometrico (quanti fallimenti prima di un successo)
b: Pr(X=x) = p / 1-(x-1)p $ p/(1-(x-1)p) /sigma^(x-2)_(c=0) (1-p/(1-cp)) =$ //p se 1<=x<= 1/p
_p
Il bitvector indica su quali regole matcha il pacchetto IP sorgente | bitvector --- | --- A | 1011 B | 0101
IP destinazione | bitvector |
---|---|
C | 1100 |
C | 1010 |
E | 1001 |
* | 1000 |
Port Src | bitvector |
---|---|
53 | 1001 |
123 | 0101 |
80 | 0011 |
* | 0001 |
Resta da effettuare l'AND dei bitvector dei campi Campi | bitvector --- | --- A | 1011 D | 1010 80 | 0011 23 | 0010 TCP | 0111 res | 0010
Per codificare un prefisso di lunghezza variabile usando 33 bit usiamo il seguente algoritmo: Scriviamo i bit del prefisso seguiti da 1 e poi zeri fino a 33 bit
Mostrare che il massimo numero di nodi è O(NW) con
(W-log2N)N/2+N/2-1 O(W*N)