a) cwnd-utvikling:
- Slow start: cwnd dobles per RTT (1 → 2 → 4 → 8 → 16). Etter 4 RTT-er når cwnd ssthresh = 16 MSS.
- Overgang til congestion avoidance: Vekst går fra eksponentiell til lineær — cwnd øker med 1 MSS per RTT (16 → 17 → 18 → … → 24).
- Triple duplicate ACK ved cwnd = 24 (TCP Reno — fast recovery):
- ssthresh settes til cwnd / 2 = 12 MSS
- cwnd settes til ssthresh = 12 MSS (multiplicative decrease)
- Senderen fortsetter i congestion avoidance (lineær vekst) fra cwnd = 12 MSS
Ved et timeout i stedet for triple duplicate ACK ville cwnd vært satt til 1 MSS og slow start startet på nytt.
b) TCP Tahoe vs. Reno ved triple duplicate ACK:
| Tahoe | Reno |
| ssthresh | cwnd / 2 | cwnd / 2 |
| cwnd settes til | 1 MSS (slow start fra start) | ssthresh (fast recovery / fast retransmit) |
| Resultat | Konservativ — full slow start | Mindre dramatisk — fortsetter i congestion avoidance |
Tanken bak Reno: triple duplicate ACK betyr at noen pakker fortsatt kommer frem (mottakeren genererer ACK-er), så nettverket er ikke totalt overbelastet — full slow start er overdrevent.
c) Reduksjon ved timeout og rettferdighet:
Et timeout indikerer alvorlig metning (pakkene kommer ikke frem). TCP «backer av» kraftig — cwnd settes til 1 og slow start startes — for å gi nettverket tid til å tømmes.
Rettferdighet kommer av AIMD (Additive Increase, Multiplicative Decrease): alle TCP-flows som deler en flaskehals, øker cwnd lineært ved suksess og halverer ved tap. Over tid konvergerer flowsene mot lik andel av kapasiteten — uavhengig av når de startet.
Pensum: Kap. 3 — TCP metningskontroll, AIMD, fast retransmit/recovery