Professional Documents
Culture Documents
packet
knee cliff
Cost loss
Throughput
High delay
to retransmission (a pkt
goes through a link
multiple times)
Load
Congestion Control vs.
Congestion Avoidance
Congestion control goal
Stay left of cliff
Congestion avoidance goal
Stay left of knee knee cliff
Throughput
congestion
collapse
Load
Detecting Congestion
Packet drops yang sering timbul
mengindikasikan kongesti
Packet
Src Dst
Drop
Ack
Timeout! No Ack
= Congestion!
Mengendalikan kongesti
Ukuran window dikurangi jumlah paket
di jaringan lebih sedikit
Memperbesar ukuran window akan
lebih banyak paket di jaringan
Konsep congestion window :
Ukuran window lebih kecil jika kongesti
terjadi dan membesar bila kongesti
berkurang
Karakteristik skema congestion
avoidance yang diinginkan
Efficiency (high utilization)
Fairness (resource sharing)
Distributedness (no central knowledge for
scalability)
Convergence and stability (fast convergence
after disturbance, low oscillation)
responsiveness (speed to new state, lower or
higher)
smoothness
AIMD
Additive Increase/Multiplicative Decrease
…
In practice: increment a little for each ACK
Increment = (MSS*MSS)/cwnd
cwnd = cwnd + Increment
AIMD (cont)
Trace: sawtooth behavior
70
60
50
40
KB
30
20
10
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0
Time (seconds)
Problems
Berapa ukuran window yang seharusnya?
Initially?
Bila terjadi packet loss dan timeout?
Pessimistic window size? (mis. 1)
Additive increase terlalu lambat – koneksi yang
pendek tidak akan menggunakan bandwidth yang
ada secara penuh
Optimistic window size?
Pengiriman paket initial yang terlalu besar dapat
menyebabkan overflow di antrian router
Slow Start
Objective: menentukan kapasitas yang ada di
awal dengan cepat
Idea
Dimulai dengan CongestionWindow = 1 paket
CongestionWindow ditambah 1 untuk setiap ACK
Digunakan dalam dua kondisi
Pada awal koneksi
Jika koneksi terputus ketika menunggu sebuah
timeout
Contoh Slow Start
cwnd = 1
cwnd = 2
cwnd = 4
cwnd = 7
Sifat slow start
Packet 1
Masalah: TCP timeouts menyebabkan Packet 2
periode idle Packet 3 ACK 1
Fast retransmit: Packet 4 ACK 2
Ack dikirimkan untuk setiap paket yang diterima
Duplikat dari ack sebelumnya dikirimkan jika Packet 5 ACK 2
paket yang diterima tidak terurut
Duplikasi ACKs digunakan juga untuk mendorong Packet 6
retransmisi ACK 2
Ketika menerima 3 ACK yang sama, sender akan ACK 2
me-retransmits paket yang hilang
Retransmit
packet 3
ACK 6
Fast Recovery cwnd=12
sshtresh=5
cwnd=12
sshtresh=5
Fast recovery mencegah slow
start setelah fast retransmit
Setelah 3 ACKs yang sama
(duplikasi) diterima: cwnd=12
sshtresh=5
Retransmit “lost packet”
Congestion threshold
sshtresh= cwnd/2
cwnd=12
cwnd = cwnd+3 sshtresh=5
Enter congestion avoidance
Increment cwnd by one for
each additional duplicate ACK
When ACK yang datang cwnd=9
meng-acknowledges “data sshtresh=9
baru” (digambar:
AckNo=2028), set:
cwnd=ssthresh
enter congestion avoidance
TCP Congestion Control
15
Congestion
window
Threshold
10
Slow
start
5
Round-trip times
Self Clocking and Slow Start
Setiap pengiriman paket di- “clock” oleh sebuah ACK – no bursts
develop
… …
W=32
Self Clocking Interrupted
Selama timeouts, ACKs tidak muncul (drained). Self clocking
terputus. Pengiriman berikutnya berupa pengiriman burst burst.
Slow start kembali digunakan!
ACKs
Lost Ack32
Drained!!
… …
16 packet burst
W=32 Retransmission
Timeout Cut window in 1/2
Self Clocking and Fast
Retransmit / Fast Recovery
Ketika fast retransmit digunakan, paket di-retransmisi sebelum
semua ACKs hilang sehingga slow start tidak diperlukan
Lost
… …
Fast
Retransmission
SS CA