You are on page 1of 46

Bab 3

Transport Layer

A note on the use of these Powerpoint slides:


We’re making these slides freely available to all (faculty, students, readers).
They’re in PowerPoint form so you see the animations; and can add, modify,
and delete slides (including this one) and slide content to suit your needs.

Computer
They obviously represent a lot of work on our part. In return for use, we only
ask the following:

 If you use these slides (e.g., in a class) that you mention their source
(after all, we’d like people to use our book!)
Networking: A Top
 If you post any slides on a www site, that you note that they are adapted
from (or perhaps identical to) our slides, and note our copyright of this
Down Approach
material.
7th edition
Thanks and enjoy! JFK/KWR
Jim Kurose, Keith Ross
All material copyright 1996-2016 Pearson/Addison Wesley
J.F Kurose and K.W. Ross, All Rights Reserved April 2016
Transport Layer 2-1
Chapter 3.3 outline
3.1 transport-layer services 3.5 connection-oriented
3.2 multiplexing and transport: TCP
demultiplexing • segment structure
3.3 connectionless transport: UDP • reliable data transfer
• flow control
3.4 principles of reliable data
• connection management
transfer
3.6 principles of congestion
control
3.7 TCP congestion control

Transport Layer3-2
TCP reliable data transfer
 TCP membuat layanan
rdt diatas layanan IP yg
tdk reliabel
• Segmen terpipeline
• Acks kumulatif Jika TCP sender
• Satu timer retransmisi disimplifikasi:
• Abaikan duplikasi ack
 retransmissions dipicu
• abaikan flow control,
oleh: congestion control
• Events yang timeout
• Duplikasi ack

Transport Layer3-3
Event pada pengiriman TCP:
data rcvd dari app: timeout:
 buat segment dengan seq  retransmit segment yang
# mengakibatkan timeout
 seq # adalah angka byte-  restart timer
stream dari byte pertama ack rcvd:
data di segment  jika ack memberitahu
 jalankan timer jika tentang segmen
belum berjalan sebelumnya yg belum ter-
ACK
• Timer diangga sebagai • update yang diketahui
segmen paling awal yg menjadi ter-ACK
belum ter-ACK • jalankan timer jika masih
• expiration interval: ada segmen yg belum ter-
TimeOutInterval ACK

Transport Layer3-4
TCP sender (simplified)
data received from application above
create segment, seq. #: NextSeqNum
pass segment to IP (i.e., “send”)
NextSeqNum = NextSeqNum + length(data)
if (timer currently not running)
 start timer
NextSeqNum = InitialSeqNum wait
SendBase = InitialSeqNum for
event timeout
retransmit not-yet-acked segment
with smallest seq. #
start timer
ACK received, with ACK field value y
if (y > SendBase) {
SendBase = y
/* SendBase–1: last cumulatively ACKed byte */
if (there are currently not-yet-acked segments)
start timer
else stop timer
} Transport Layer3-5
TCP: retransmission scenarios
Host A Host B Host A Host B

SendBase=92
Seq=92, 8 bytes of data Seq=92, 8 bytes of data

Seq=100, 20 bytes of data


timeout

timeout
ACK=100
X
ACK=100
ACK=120

Seq=92, 8 bytes of data Seq=92, 8


SendBase=100 bytes of data
SendBase=120
ACK=100
ACK=120

SendBase=120

lost ACK scenario premature timeout


Transport Layer3-6
TCP: retransmission scenarios
Host A Host B

Seq=92, 8 bytes of data

Seq=100, 20 bytes of data


ACK=100
timeout

X
ACK=120

Seq=120, 15 bytes of data

cumulative ACK
Transport Layer3-7
TCP ACK generation [RFC 1122, RFC 2581]
event at receiver TCP receiver action
kedatangan segmen sesuai urutan ACK ter-delay. Tunggu sampai 500ms
dengan seq # yang diminta utk segmen berikutnya. Jika tidak ada
Semua data sampai seq # sudah ter-ACK segmen berikutnya, kirim ACK

kedatangan segmen sesuai urutan segera kirim single cumulative


dengan seq # yang diminta. Satu segmen ACK, meng-ACKing kedua in-order
Lain punya ACK yag ter-pending segments

kedatangan of segmen tidak urut dengan segera kirim duplicate ACK,


seq. # lebih tinggi dari yang diminta. mengindikasikan seq. # dari byte yg
Terjadi gap diminta berikutnta

kedatangan segment yang Segera kirim ACK, diketahui that


Secara parsial atau lengkap mengisi gap segment dimulai pada akhir gap yg lebih
rendah
Transport Layer3-8
TCP fast retransmit
 Periode time-out period
seringkali cukup lama: TCP fast retransmit
• delay panjang sebelum jika sender menerima 3
kirim ulang pkt yg hilang
ACKs dari data yg sama
(“triple duplicate ACKs”),
 deteksi segment yg hilang
Kirim ulang segment
lewat duplikasi ACK. dengan seq # terkecil
• sender sering kirim banyak
 dimungkinkan segmen
segmen back-to-back
tidak ter-ACK tsb hilang,
• ji segment hilang, mungkin jadi jangan tunggu
terjadi banyak duplikasi sampai timeout
ACKs.

Transport Layer3-9
TCP fast retransmit
Host A Host B

Seq=92, 8 bytes of data


Seq=100, 20 bytes of data
X

ACK=100

timeout
ACK=100
ACK=100
ACK=100
Seq=100, 20 bytes of data

fast retransmit after sender


receipt of triple duplicate ACK
Transport Layer3-10
Bab 3 outline
3.1 layanan transport-layer 3.5 connection-oriented
3.2 multiplexing dan transport: TCP
demultiplexing • Struktur segment
3.3 connectionless transport: UDP • reliable data transfer
• flow control
3.4 prinsip-prinsip dari reliable
• Manajemen koneksi
data transfer
3.6 prinsip-prinsip
congestion control
3.7 TCP congestion control

Transport Layer3-11
TCP flow control
application
application mungkin process
menghapus data dari application
TCP socket buffers ….
TCP socket OS
receiver buffers
… lebih lambat dari
pada penerima TCP
mengirim data TCP
(pengirim sedang code
mengirim)

IP
flow control code
penerima mengendalikan
pengirim, sehingga pengirim
tidak akan membanjiri buffer from sender
penerima karena mentransimisi
terlalu banyak dan cepat receiver protocol stack

Transport Layer3-12
TCP flow control
 penerima menginformasikan
free buffer space dengan to application process
mencantumkan nilai rwnd di
TCP header pada segment
penerima-ke-pengirim RcvBuffer buffered data
• Ukuran RcvBuffer diset
melalui socket options rwnd free buffer space
(umumnya 4096 bytes)
• Beberapa sistem operasi secara
otomatis menyesuaikan
RcvBuffer TCP segment payloads
 Pengirim membatasi jumlah
unacked (“ in-flight” ) data ke receiver-side buffering
nilai rwnd penerima
 menjamin buffer penerima
tidak akan berlebihan
Transport Layer3-13
Bab 3 outline
3.1 layanan transport- 3.5 connection-oriented
layer transport: TCP
3.2 multiplexing dan • Struktur segmen
demultiplexing • reliable data transfer
3.3 connectionless • flow control
transport: UDP • manajemen koneksi
3.4 prinsip-prinsip dari 3.6 prinsip-prinsip
reliable data transfer congestion control
3.7 TCP congestion control

Transport Layer3-14
Manajemen Koneksi
Sebelum pertukaran data, pengirim/penerima melakukan
“ handshake”
 Setuju untuk membuat koneksi (penerima mengetahui kemauan
pengirim untuk membuat koneksi, dan sebaliknya)
 Setuju pada paramater-parameter koneksi
application application

connection state: ESTAB connection state: ESTAB


connection variables: connection Variables:
seq # client-to-server seq # client-to-server
server-to-client server-to-client
rcvBuffer size rcvBuffer size
at server,client at server,client

network network

Socket clientSocket = Socket connectionSocket =


newSocket("hostname","port welcomeSocket.accept();
number");
Transport Layer3-15
Agreeing to establish a connection

2-way handshake:
Q: akankah 2-way handshake
selalu berhasil dalam jaringan?
 variable delays
Let’s talk  Pentranmisian kembali message (e.g.
ESTAB req_conn(x)) karena message loss
OK  Penyusunan kembali message
ESTAB
 Tidak dapat “ melihat” sisi yang lain

choose x
req_conn(x)
ESTAB
acc_conn(x)
ESTAB

Transport Layer3-16
Persetujuan untuk membuat koneksi
Skenario-skenario kegagalan 2-way handshake:

choose x choose x
req_conn(x) req_conn(x)
ESTAB ESTAB
retransmit acc_conn(x) retransmit acc_conn(x)
req_conn(x) req_conn(x)

ESTAB ESTAB
data(x+1) accept
req_conn(x)
retransmit data(x+1)
data(x+1)
connection connection
client x completes server x completes server
client
terminates forgets x terminates forgets x
req_conn(x)

ESTAB ESTAB
data(x+1) accept
half open connection! data(x+1)
(no client!)
Transport Layer3-17
TCP 3-way handshake

client state server state


LISTEN LISTEN
choose init seq num, x
send TCP SYN msg
SYNSENT SYNbit=1, Seq=x
choose init seq num, y
send TCP SYNACK
msg, acking SYN SYN RCVD
SYNbit=1, Seq=y
ACKbit=1; ACKnum=x+1
received SYNACK(x)
ESTAB indicates server is live;
send ACK for SYNACK;
this segment may contain ACKbit=1, ACKnum=y+1
client-to-server data
received ACK(y)
indicates client is live
ESTAB

Transport Layer3-18
TCP 3-way handshake:
FSM
closed

Socket connectionSocket =
welcomeSocket.accept();

 Socket clientSocket =
SYN(x) newSocket("hostname","port
number");
SYNACK(seq=y,ACKnum=x+1)
create new socket for listen SYN(seq=x)
communication back to client

SYN SYN
rcvd sent

SYNACK(seq=y,ACKnum=x+1)
ESTAB ACK(ACKnum=y+1)
ACK(ACKnum=y+1)

Transport Layer3-19
TCP: penutupan koneksi
 client dan server masing-masing menutup
koneksinya
• mengirim TCP segment dengan FIN bit = 1
 merespon FIN yang diterima dengan ACK
• saat menerima FIN, ACK dapat dipadukan dengan FIN
miliknya
 pertukaran FIN secara simultan dapat ditangani

Transport Layer3-20
TCP: penutupan koneksi
client state server state
ESTAB ESTAB
clientSocket.close()
FIN_WAIT_1 Tidak dapat FINbit=1, seq=x
mengirim data, tapi
dapat menerima CLOSE_WAIT
data ACKbit=1; ACKnum=x+1
masih dapat
FIN_WAIT_2 menunggu server mengirim data
menutup

LAST_ACK
FINbit=1, seq=y
TIMED_WAIT tidak lagi dapat
mengirim data
ACKbit=1; ACKnum=y+1
menunggu hingga
2*max segment lifetime CLOSED

CLOSED

Transport Layer3-21
Bab 3 outline
3.5 connection-oriented
3.1 transport-layer transport: TCP
services • Struktur segment
3.2 multiplexing and • reliable data transfer
demultiplexing • flow control
3.3 connectionless • Manajemen koneksi
transport: UDP management
3.4 principles of reliable 3.6 prinsip-prinsip
data transfer congestion control
3.7 TCP congestion control

Transport Layer3-22
Prinsip-prinsip congestion control
congestion:
 secara informal: “ terlalu banyak source mengirim
terlalu banyak data yang terlalu cepat bagi network
untuk menanganinya”
 berbeda dengan flow control!
 manifestasi:
• paket-paket hilang (buffer meluap di router)
• delay berkepanjangan (antrian pada buffer
dalam router)
 10 problem teratas!

Transport Layer3-23
Penyebab/Biaya dari congestion: skenario
1
original data: in
throughput:out
 2 pengirim, 2 penerima
 1 router, buffer tak Host A

terbatas Buffer link output bersama yang tak terbatas

 Kapasitas link output: R


 tanpa transmisi ulang

Host B

R/2

delay
out

in R/2 in R/2


 throughput tiap koneksi  delay besar saat arrival rate,
maksimum : R/2 in, mendekati kapasitas
Transport Layer3-24
Penyebab/Biaya dari congestion: skenario
2
 1 router, buffer terbatas
 pengirim men-transmisi ulang packet yang timed-out
• application-layer input = application-layer output:in = out
• transport-layer input meliputi retransmissions :in in

in : data original


'in: data original, plus out
data transmisi ulang

Host A

Buffer link output bersama yang


Host B terbatas
Transport Layer3-25
Penyebab/Biaya dari congestion: skenario
2
R/2
Idealisasi: pengetahuan
sempurna

out
 pengirim mengirim data hanya
pada saat buffer router tersedia
in R/2

in : data original


copy 'in: data original , plus data out
transmisi ulang

A
free buffer space!

Buffer link output bersama


Host B yang terbatas
Transport Layer3-26
Penyebab/Biaya dari congestion: skenario
2
Idealisasi: paket hilang yang diketahui
terjadi pada router karena buffer penuh.
 Pengirim hanya akan mengirim ulang
jika paket yang diketahui akan hilang

in : original data


copy 'in: original data, plus out
retransmitted data

A
tanpa buffer space!

Host B
Transport Layer3-27
Penyebab/Biaya dari congestion: skenario
2
Idealisasi: paket hilang yang R/2
diketahui terjadi pada router
karena buffer penuh. Ketika pengiriman
saat R/2, beberapa
 Pengirim hanya akan mengirim

out
paket ditransmisi
ulang jika paket yang diketahui ulang, tapi goodput
akan hilang asymtot masih R/2
(mengapa?)
in R/2

in : data original


'in: data original, plus out
data transmisi ulang

A
buffer space tersedia!

Host B
Transport Layer3-28
Penyebab/Biaya dari congestion: skenario 2
Realistis: duplikasi R/2
 paket bisa hilang, dibuang di
router karena buffer penuh Ketika pengiriman
saat R/2, beberapa

out
 pengirim kehabisan waktu paket ditransmisi
ulang termasuk
lebih awal, mengirim dua duplikasinya terkirim
copy, kedua-duanya dikirim in R/2
semua

in
timeout
copy out
'in

A
free buffer space!

Host B
Transport Layer3-29
Penyebab/Biaya dari congestion: skenario 2
Realistis: duplikasi R/2
 paket bisa hilang, dibuang di
Ketika pengiriman
router karena buffer penuh saat R/2, beberapa

out
 pengirim kehabisan waktu paket ditransmisi
ulang termasuk
lebih awal, mengirim dua duplikasinya terkirim
copy, kedua-duanya dikirim in R/2
semua

“ biaya” dari congestion:


 Kerja lebih (retrans) untuk “ goodput” yang diberikan
 Transmisi ulang yang tidak diperlukan: link membawa beberapa copy paket
• menurunkan goodput

Transport Layer3-30
Penyebab/Biaya dari congestion: skenario
3
 4 pengirim Q: apa yang terjadi saat in dan in’
meningkat ?
 Jalur multihop
A: saat in’ merah meningkat, semua
 timeout/ transmisi ulang paket biru yang datang pada upper
queue dibuang, throughput biru 0
Host A
in : data original out
Host B

'in: data original plus


data transmisi ulang
Buffer link output bersama
yang terbatas

Host D

Host C

Transport Layer3-31
Penyebab/Biaya dari congestion: skenario
3
C/2

out

in’ C/2

“ biaya” lain dari congestion:


 Ketika paket dibuang, kapasitas upstream transmission yang
digunakan paket tersebut menjadi sia-sia!

Transport Layer3-32
Bab 3 outline
3.5 connection-oriented
3.1 transport-layer transport: TCP
services • Struktur segment
3.2 multiplexing and • reliable data transfer
demultiplexing • flow control
3.3 connectionless • Manajemen koneksi
transport: UDP management
3.4 principles of reliable 3.6 prinsip-prinsip
data transfer congestion control
3.7 TCP congestion control

Transport Layer3-33
TCP congestion control: additive increase
multiplicative decrease
 pendekatan: pengirim meningkatkan kecepatan
transmisi (window size), dengan memperhatikan
bandwidth yang dapat digunakan, hingga terjadi loss
• additive increase: meningkatkan nilai cwnd
dengan 1 MSS setiap RTT hingga loss terdeteksi
• multiplicative decrease: menjadikan cwnd separuh
additively increase window size …
setelah loss …. until loss occurs (then cut window in half)

congestion window size


cwnd: TCP sender
Perilaku AIMD gigi
gergaji: mendeteksi
bandwidth

time
Transport Layer3-34
TCP Congestion Control: detail
sender sequence number space
cwnd TCP sending rate:
 secara kasar: kirim
cwnd byte, tunggu
last byte last byte RTT untuk ACKS, lalu
sent, not-
ACKed
yet ACKed
sent kirim byte lagi
(“in-flight”)
cwnd
 Pengirim membatasi transmisi: ~
rate~ bytes/sec
RTT
LastByteSent- < cwnd
LastByteAcked
 cwnd bersifat dinamis, fungsi dari
network congestion yang terjadi

Transport Layer3-35
TCP Slow Start
Host A Host B
 Ketika koneksi dimulai,
tingkatkan kecepatan
secara exponensial hingga one segm
ent
terjadi loss pertama:

RTT
• initialisasi cwnd = 1 MSS two segm
ents
• gandakan cwnd tiap RTT
• usai dengan menaikkan nilai
cwnd untuk setiap ACK four segm
ents
yang diterima
 ringkasan: kecepatan awal
lambat tapi peningkatan
cepat secara exponensial time

Transport Layer3-36
TCP: mendeteksi, bereaksi pada loss
 loss ditandai oleh timeout:
• cwnd diset 1 MSS;
• window meningkat secara exponential (seperti pada slow start) hingga threshold, lalu
meningkat secara linear
 loss ditandai oleh 3 duplikasi ACK: TCP RENO
• dup ACKs menandakan network mampu mengirim beberapa segmen
• cwnd dipotong separuh lalu meningkat secara linear
 TCP Tahoe selalu menset cwnd to 1 (timeout atau 3 duplikasi ack)

Transport Layer3-37
TCP: perubahan dari slow start ke CA
Q: kapan seharusnya
peningkatan exponensial
berubah linear?
A: saat cwnd menjadi 1/2
dari nilainya sebelum
timeout.

Implementasi:
 ssthresh berubah
 saat loss, ssthresh diset
1/2 dari cwnd sesaat
sebelum terjadi loss

* Check out the online interactive exercises for more


examples: http://gaia.cs.umass.edu/kurose_ross/interactive/ Transport Layer3-38
Ringkasa: TCP Congestion Control
New
New ACK!
ACK!
duplicate ACK
dupACKcount++ new ACK
new ACK
.
cwnd = cwnd + MSS (MSS/cwnd)
dupACKcount = 0
cwnd = cwnd+MSS transmit new segment(s), as allowed
dupACKcount = 0
 transmit new segment(s), as allowed
cwnd = 1 MSS
ssthresh = 64 KB cwnd > ssthresh
dupACKcount = 0 slow  congestion
start timeout avoidance
ssthresh = cwnd/2
cwnd = 1 MSS duplicate ACK
timeout dupACKcount = 0 dupACKcount++
ssthresh = cwnd/2 retransmit missing segment
cwnd = 1 MSS
dupACKcount = 0
retransmit missing segment
timeout
New
ACK!
ssthresh = cwnd/2
cwnd = 1 New ACK
dupACKcount = 0
retransmit missing segment cwnd = ssthresh dupACKcount == 3
dupACKcount == 3 dupACKcount = 0
ssthresh= cwnd/2 ssthresh= cwnd/2
cwnd = ssthresh + 3 cwnd = ssthresh + 3
retransmit missing segment retransmit missing segment
fast
recovery
duplicate ACK
cwnd = cwnd + MSS
transmit new segment(s), as allowed

Transport Layer3-39
TCP throughput
 Rata2TCP thruput sebagai fungsi window size, RTT?
• abaikan slow start, assumsikan data selalu untuk dikirim
 W: window size (dalam bytes) dimana loss terjadi
• Rata2 window size (# in-flight bytes) adalah ¾ W
• Rata2 thruput adalah 3/4W per RTT
3 W
rata2 TCP thruput = bytes/sec
4 RTT

W/2

Transport Layer3-40
TCP Mendatang: TCP pada “ long, fat pipes”

 misal: 1500 byte segmen, 100ms RTT, diinginkan


10 Gbps throughput
 memerlukan W = 83,333 in-flight segmen
 throughput dalam hal probabilitas segment loss
probability, L [Mathis 1997]:
1.22 . MSS
TCP throughput =
RTT L

➜ untuk mendapatkan10 Gbps throughput, perlu loss


rate L = 2·10-10 – a very small loss rate!
 Version baru untuk TCP pada kecepatan tinggi

Transport Layer3-41
TCP Fairness
Tujuan fairness: Jika K sesi TCP berbagi link
bottleneck yang sama dengan bandwidth R, setiap
sesi seharusnya mendapat rata-rata kecepatan R/K

TCP connection 1

bottleneck
router
capacity R
TCP connection 2

Transport Layer3-42
Mengapa TCP fair
dua sesi bersaing:
 additive increase memberi peningkatan 1, sebagaimana
throughout meningkat
 multiplicative decrease menurunkan throughput secara
proportional
R equal bandwidth share

Connection 2 throughput
loss: menurunkan window dengan factor 2
congestion avoidance: additive increase
loss: decrease window by factor of 2
congestion avoidance: additive increase

Connection 1 throughput R
Transport Layer3-43
Fairness (lanjutan)
Fairness dan UDP Fairness, koneksi TCP
 Aplikasi multimedia parallel
kerap tidak  Aplikasi dapat membuka
menggunakan TCP multiple koneksi paralel
• Tidak ingin kecepatan antar dua host
dipengaruhi congestion
control  misal: web browsers
 Tidak menggunakan  contoh, kecepatan link R
UDP: terdapat 9 koneksi:
• Kirim audio/video • app baru meminta untuk 1
dengan kecepatan TCP, mendapat kecepatan R/10
konstan, mentolerir • app baru meminta 11 TCPs,
kehilangan paket mendapat R/2

Transport Layer3-44
Explicit Congestion Notification (ECN)
network-assisted congestion control:
 dua bit pada IP header (field ToS) ditandai oleh network router
untuk menandakan congestion
 congestion indication disampaikan pada host penerima
 penerima (melihat congestion indication pada IP datagram) ) menset
ECE bit pada penerima-ke-pengirim segmen ACK memberitahu
pengirim adanya congestion

TCP ACK segment


source destination
application application
ECE=1
transport transport
network network
link link
physical physical

ECN=00 ECN=11

IP datagram
Transport Layer3-45
Bab 3: Ringkasan
 Prinsip-prinsip layanan
transport layer:
selanjutnya:
• multiplexing, demultiplexing
• reliable data transfer
 meninggalkan
network “ edge”
• flow control
(application,
• congestion control transport layers)
 instansiasi, implementasi pada  menuju network
Internet
• UDP
“core”
• TCP  dua bab network
layer:
• data plane
• control plane

Transport Layer3-46

You might also like