Congestion control

Este un algoritm executat independent pentru fiecare conexiune. Acesta ajustează CWND (Congestion Window) folosind feedback-ul din rețea (ACK-uri).

Algoritmul New RENO

alt text

Inițial slow_start_threshold are valoarea infinit.

  • ON_ACK():
        if(CWND < ssthresh)    //slow-start
            CWND++;        //creștere exponențială
        else                   //congestion avoidance
            CWND += 1/CWND;
  • ON_LOSS():
        CWND /= 2;
        ssthresh = CWND;
  • ON_TIMEOUT():
        ssthresh = CWND/2;
        CWND = 1;

Fairness (Chiu-Jain diagram)

Reprezintă un grafic în care apare CWND a doi senderi.

alt text

alt text

W (RTT) = o unitate pentru fiecare pachet

Pentru linerate avem:

  • (BDP + BUFFER) / 2 >= BDP
  • BUFFER >= BDP

Generez loss pentru a vedea ce capacitate am. Pentru echitabilitate(fairness) scad rata de transmisie, dar buffer-ul trebuie să fie foarte mare ca să nu pierd performanță.

BW = CWND * MSS / RTT

1 loss la w + w + 1 + ... + 2w pachete => w * 3w / 4 pachete transmise

p = 1 / (3 * w^2 / 4) => w^2 = 4 / 3p => w =  (4 / 3p)  <=> aceeași fereastră pentru ambii senderi; aceeași pierdere și același throughput

p * CWND = probabilitatea să pierd un pachet

∆ = (1 - p) * 1 - p * CWND * (CWND / 2), p ≈ 0
∆ = 0 => se scoate CWND

Exerciții:

  • B = 1 Gbps
    S1, S2, RTT 10 ms

    BS1, BS2 = ?

    CWNDS1 = CWNDS2 =  (2 / p)  => BS1 = BS2 =  (2 / p)  * MSS / RTT
    BS1 + BS2 = B

  • Diferă RTT:
    RTTS1 = 1 ms
    RTTS2 = 10 ms

    CWNDS1 = CWNDS2 = CWND =  (2 / p)  => BS1 = BS2 =  (2 / p) 

    BS1 = CWND * MSS / 1ms (1)
    BS2 = CWND * MSS / 10ms (2)

    Din (1) și (2) => BS1 / BS2 = 10
    RTT mic => B mai mare (trimite mai repede)


alt text RTT = 1ms
C1 + C3 <= 1 Gbps
C2 + C3 <= 1 Gbps

C1 =  (2 / p1)  * MSS / RTT (1)
C2 =  (2 / p2)  * MSS / RTT (2)
C3 =  (2 / (p1 + p2))  * MSS / RTT (3)

Din (1), (2) și (3) => C1, C2 ≈  (2 / p)  ; C3 ≈  (1 / p)  => C1 / C3 = C2 / C3 =  2  =>
C3 * ( 2  + 1) = 1 Gbps => C3 = 1000 Mbps / 2,41 => nu se împarte egal