Professional Documents
Culture Documents
Transport Layer
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
timeout
ACK=100
X
ACK=100
ACK=120
SendBase=120
X
ACK=120
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
Transport Layer3-9
TCP fast retransmit
Host A Host B
ACK=100
timeout
ACK=100
ACK=100
ACK=100
Seq=100, 20 bytes of data
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
network network
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
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
Host B
R/2
delay
out
Host A
out
pengirim mengirim data hanya
pada saat buffer router tersedia
in R/2
A
free buffer space!
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
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
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
Host D
Host C
Transport Layer3-31
Penyebab/Biaya dari congestion: skenario
3
C/2
out
in’ C/2
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)
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
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”
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
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