TCP congestion control algoritma penting untuk keberhasilan Internet dalam menghadapi pola akses pengguna yang tidak dapat diprediksi dan keterbatasan sumber daya. Tanpa algoritma ini, Internet mungkin sudah menjadi sejarah karena keruntuhan kongesti pada akhir 1980-an.
2. Internet Congestion Collapse
Akhir tahun 80-an, Internet sering kolaps
akibat kongesti
Data + Retransmissions
Host
Congestion!
Packet drops!!
Host
Collapse
Host More Drops!!!
3. TCP congestion control
penting
Algoritma kendali kongesti TCP
merupakan latar belakang utama
sukesnya Internet dalam
menghadapi pola akses user yang
tidak dapat diprediksi
(unpredictable user access
patterns) serta keterbatasan
resource
Tanpa kendali kongesti TCP,
Internet sudah menjadi sejarah
4. Resource Management
Solutions
Cara menangani kongesti
resource allocation
How to effectively and fairly allocate resources among competing
users?
resources = bandwidth of links + buffers on the routers
control congestion if (and when) is occurs
How to react when queues overflow and packets have to be
dropped?
Dua tempat implementasi penanganan kongesti
routers di dalam jaringan (queuing discipline)
hosts at the edges of the network (transport protocol)
5. The Cost of Congestion
packet
knee cliff
Cost loss
Throughput
High delay
Packet loss congestion
collapse
Wasted upstream
bandwidth when a pkt is
discarded at Load
downstream Delay
Wasted bandwidth due
to retransmission (a pkt
goes through a link
multiple times)
Load
6. 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
7. Detecting Congestion
Packet drops yang sering timbul
mengindikasikan kongesti
Packet
Src Dst
Drop
Ack
Timeout! No Ack
= Congestion!
8. 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
9. 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
10. AIMD
Additive Increase/Multiplicative
Decrease
Setiap terjadi packet drop,
CongestionWindow (cwnd) dibagi 2
(multiplicative decrease)
Multiplicative decrease diperlukan untuk
mencegah kongesti
Jika tidak terjadi packet drop, cwnd
diperbesar secara bertahap /gradually
(additive increase)
11. Multiplicative Decrease
cwnd dinyatakan dalam bytes, tetapi
literatur kebanyakan membicarakan
kongesti dalam istilah paket (yaitu
dalam MSS == Maximum Segment
Size)
Ukuran cwnd tidak boleh di bawah
ukuran sebuah paket
12. Additive Increase
Additive Increase merupakan reaksi
atas “persepsi terhadap kapasitas yang
ada”
Ide dasar Linear Increase :
Untuk setiap paket yang dapat dikirim,
dinaikkan 1 packet
cwnd dinaikkan 1 untuk setiap ACK yang
diterima
13. AIMD (cont)
Source Destination
Algorithm
cwnd dinaikkan satu (satu paket) per
RTT (linear increase)
cwnd dibagi dua jika suatu timeout
terjadi (multiplicative decrease)
…
In practice: increment a little for each ACK
Increment = (MSS*MSS)/cwnd
cwnd = cwnd + Increment
15. 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
16. 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
17. Contoh Slow Start
cwnd = 1 segment 1
ent 1
ACK for segm
cwnd = 2 segment 2
segment 3
ents 2
ACK for segm
ents 3
ACK for segm
cwnd = 4 segment 4
segment 5
segment 6
ents 4
ACK for segm
ents 5
ACK for segm
ents 6
ACK for segm
cwnd = 7
18. Sifat slow start
Ukuran CongestionWindow naik
dengan cepat
Untuk setiap ACK, CongestionWindow
selalu dinaikkan 1 tanpa peduli jumlah
segmen yang telah di-ACK
TCP melambatkan kenaikkkan
CongestionWindow dengan kombinasi
slow start dengan AIMD
19. Slow Start dan AIMD
Perubahan dari slow start ke AIMD
Jika transmisi terputus, TCP mengetahui current
value dari CongestionWindow (= value sebelum
loss/2)
Menggunakan current value di atas sebagai
“target” window size (= CongestionThreshold)
Slow start digunakan sampai tercapainya
CongestionThreshold, lalu digunakan additive
increase (AIMD)
20. Fast Retransmit Sender Receiver
Packet 1
Masalah: TCP timeouts Packet 2
ACK 1
menyebabkan periode idle
Packet 3
Packet 4 ACK 2
Fast retransmit: ACK 2
Packet 5
Ack dikirimkan untuk setiap Packet 6
paket yang diterima ACK 2
Duplikat dari ack sebelumnya ACK 2
dikirimkan jika paket yang Retransmit
diterima tidak terurut packet 3
Duplikasi ACKs digunakan ACK 6
juga untuk mendorong
retransmisi
Ketika menerima 3 ACK
yang sama, sender akan
me-retransmits paket yang
hilang
21. Fast Recovery
Fast recovery mencegah slow
start setelah fast retransmit
Setelah 3 ACKs yang sama
(duplikasi) diterima:
Retransmit “lost packet”
Congestion threshold
sshtresh= cwnd/2
cwnd = cwnd+3
Enter congestion avoidance
Increment cwnd by one for
each additional duplicate
ACK
When ACK yang datang
meng-acknowledges “data
baru” (digambar:
AckNo=2028), set:
cwnd=ssthresh
enter congestion avoidance
22. TCP Congestion Control
Congestion Congestion occurs
20 avoidance
15
Congestion
window
Threshold
10
Slow
start
5
0
Round-trip times
23. Self Clocking and Slow Start
Setiap pengiriman paket di- “clock” oleh
sebuah ACK – no bursts develop
…
W=1 W=2 W=4 W=5 W=6 W=7
Slow Start
24. Self Clocking in Operation
Setiap pengiriman paket di-“clock” oleh
sebuah ACK – no bursts develop
… …
W=32
25. Self Clocking Interrupted
Selama timeouts, ACKs tidak muncul (drained). Self clocking
terputus. Pengiriman berikutnya berupa pengiriman burst
burst. Slow start kembali digunakan!
ACKs
Lost
Drained!! Ack32
… …
16 packet burst
W=32 Retransmission
Timeout Cut window in 1/2
26. 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
W=32 Cut window in 1/2
27. Versi TCP
TCP/Tahoe
TCP/Reno: banyak Operating System
menerapkan TCP/Reno type
congestion control
TCP/Vegas: not currently used
28. TCP Tahoe
Dirancang oleh by Van Jacobson
Terdiri dari : basic TCP algorithms,
AIMD, Slow Start, Fast Retransmit
29. TCP Reno
Dirancang oleh Van Jacobson pada akhir 80-an
Masih bekerja dengan baik walaupun bandwidth
Internet telah meningkat lebih dari 10.000 kali
Duplicate ACKs:
Fast retransmit
Fast recovery
Fast Recovery avoids slow start
Timeout:
Retransmit
Slow Start
TCP Reno improves upon TCP Tahoe when a single
packet is dropped in a round-trip time.
32. TCP Reno
SS CA
Fast retransmission/fast recovery
33. TCP New Reno
Jika terjadi kehilangan beberapa paket, Reno has problems
Partial ACK:
Muncul bila beberapa paket hilang
Partial ACK hanya meng-acknowledge beberapa paket pada awal
fast recovery
Sender harus menunggu sampai timeout terjadi
New Reno:
Partial ACK does not take sender out of fast recovery
Partial ACK causes retransmission of the segment following
the acknowledged segment
New Reno can deal with multiple lost segments without going to
slow start
34. SACK
SACK = Selective acknowledgment
Issue: Reno and New Reno retransmit at most 1 lost packet
per round trip time
Selective acknowledgments: The receiver can
acknowledge non-continuous blocks of data (SACK 0-1023,
1024-2047)
Multiple blocks can be sent in a single segment
TCP SACK:
Enters fast recovery upon 3 duplicate ACKs
Sender keeps track of SACKs and infers if segments are lost.
Sender retransmits the next segment from the list of segments that
are deemed lost.