You are on page 1of 54

Transport Layer Protocol

Hendrawan
hend@telecom.ee.itb.ac.id

1
Orientasi
• Transport layer protocol adalah protokol end-to-end
• Hanya diimplementasikan pada host

2
Transport Protocols

3
Transport Protocol pada Internet
• Internet men-support dua transport protocol

4
UDP – User Datagram Protocol

5
UDP – User Datagram Protocol

• UDP mendukung transmisi datagram unreliable


• UDP hanya memperluas host-to-host delivery service dari
datagram IP ke suatu application-to-application service
• Satu-satunya yg ditambahkan UDP adalah Multiplexing dan
demultiplexing

6
Format UDP

7
Port Number
• UDP (dan TCP) menggunakan port number utk identifikasi aplikasi
• Address global unik pd transport layer (utk UDP dan TCP) adalah
suatu tuple <IP address, port number>
• Ada 65.535 UDP port per host

8
TCP - Transmission Control Protocol

9
Topik-Topik TCP

• Connection-oriented reliable byte stream


• TCP connection management
– 3 way handshake
• TCP flow control
– Sliding window flow control
• TCP congestion control
• TCP error control
– Skim retransmisi ARQ

10
Apakah Flow/Congestion/Error Control?

• Flow Control : Algoritma utk mencegah pengirim


‘membanjiri’ (overrun) penerima dg
informasi
• Congestion Control : Algoritma utk mencegah pengirim
membuat overload jaringan
• Error Control : Algoritma utk recovery atau
‘menghilangkan’ efek dari kehilangan
paket

11
Overview

• TCP = Transmission Control protocol


– Connection-oriented protocol
– Menyediakan unicast reliable end-to-end byte stream melalui
unreliable internetwork

12
Connection-Oriented Reliable Byte Stream

• Sebelum transfer data, TCP membangun suatu koneksi


– Satu entitas TCP menunggu utk koneksi (server)
– Entitas TCP lain (client) mengkontak server
• Prosedur aktual utk set-up koneksi lebih kompleks
• Tiap koneksi adalah full duplex

13
Connection-Oriented Reliable Byte Stream

• Byte stream dipecah kedlm potongan-potongan


disebut segment
– Penerima mengirimkan acknowledgment utk segment
– TCP menjaga suatu timer. Jika Ack tdk diterima dlm waktu
timeout segment diretransmisikan
• Deteksi Error
– TCP mempunyai checksum utk header dan data. Segment
dg invalid checksum dibuang
– Tiap byte yg ditransmisikan mempunyai nomor sequence

14
Connection-Oriented Reliable Byte Stream

• Ke layer yg lebih rendah, TCP menyerahkan data dlm blok,


segment
• Ke layer yg lebih tinggi, TCP menyerahkan data sbg deretan
byte dan tdk mengidentifikasi batas antar byte

15
Transmission Control Protocol (TCP)

• Connection-oriented transport protocol


– menyediakan transport dari source port ke destination port
• Beroperasi diatas IP
• Stream-oriented (sebagai lawan dari message-oriented)
– deretan byte data diterima dari sending application bersama-sama
dengan informasi untuk header
– TCP men-segmentasi deretan data dan menambahkan header
• secara umum TCP menentukan kapan untuk mengakhiri
segmen dan transmit
• user dapat memaksa segmentasi dan transport via push
function
– process sebaliknya terjadi pada TCP process di penerima

16
TCP Streams

Application Application

byte stream byte stream

segments

Transmitter Receiver
Send buffer Receive buffer

ACKs

17
TCP Header Overhead

Data

20 bytes of TCP
TCP header Header

20 bytes of IP
IP header Header

18
Format TCP
• Segment TCP memp. header 20 byte dg byte data  0

19
TCP Segment Header

Options

20
Field-Field Header

• Source port mengindikasikan source TCP user


• Destination port mengindikasikan receiving TCP user
• Sequence number menunjukan posisi pada byte data pertama
dari segmen (byte-counter untuk koneksi)
• Acknowledgement number ack secara piggybacking
menunjukan byte data berikutnya yang diharapkan
• Data offset menunjukan panjang header dalam 32-bit words

21
Field-Field Header

• Flags
– URG flag digunakan untuk menginformasikan TCP user
tujuan data urgent datang
– PSH (push) flag mengindikasikan source user meminta
segmentasi pada akhir penyerahan data saat ini dan
transmisi semua segment pada buffer pengirim (sampai
dengan termasuk segment saat ini)
• juga memaksa receiving TCP process untuk secara
segera meneruskan segment saat ini dan juga yang
lainnya pada buffer penerima ke user tujuan

22
Field-Field Header fields
• Checksum
– diaplikasikan ke seluruh segment dan ‘pseudoheader’
• pseudoheader mencakup beberapa field dari IP header:
source dan destination IP address, protocol, segment
length
• memberikan proteksi terhadap kesalahan pengiriman
oleh IP--mis., corruption of destination IP address

0 8 16 31
Source IP address
Destination IP address
00000000 Protocol=6 TCP segment length

23
State TCP dalam Normal Connection
Lifetime

24
Sequence numbers

Host A Host B

SYN, Seq_
no = n

A c k_ no = n +1
no = n , ACK,
_
SYN, Seq

Seq_no
= n+1,
ACK, A
ck_no
= n+1

Delayed segment with


Seq_no = n+2
will be accepted

25
TCP Flow Control

• TCP mengimplementasikan sliding window flow


control
• Acknowledgment terpisah dari setting ukuran
window di pengirim
• Acknowledgment tdk secara otomatis menaikan
ukuran window
• Acknowledgment adalah akumulatif

26
Sliding Window Flow Control

• Sliding window protocol dilaksanakan pd byte level

• Disini pengirim dp transmit nomor sequence 6, 7, 8

27
Sliding Window: “window closes”

• Transmisi single byte (dg SeqNo = 6) dan Ack diterima (AckNo


=5, win = 4):

28
Sliding Window: “window opens”

• Ack diterima yg memperbesar window ke kanan (AckNo = 5, win =


6):

• Penerima membuka window jika buffer TCP kosong (data sudah


dikirimkan ke aplikasi)
29
Sliding Window: “window shrinks”

• Ack diterima yg memperkecil window dari sebelah kanan (AckNo


= 5, win = 3):

• Shrinking window sebaiknya tdk digunakan

30
Managemen Window dlm TCP

• Penerima mengembalikan dua parameter ke pengirim

• Interpreatsi adalah:
– Saya siap menerima data baru dg
SeqNo = AckNo, AckNo+1, ….., AckNo+win-1
• Penerima dp meng-Ack data tanpa membuka window
• Penerima dp mengubah ukuran window tanpa meng-Ack data

31
Contoh : Sliding Window

32
Contoh Mekanisme Alokasi Credit TCP

33
Error Control pd TCP

• TCP mengimplementasikan varian dari skim retransmisi Go-


Back-N
• TCP menjaga Retransmission Timer utk tiap koneksi:
– Timer dimulai saat transmisi. Timeout menyebabkan
retransmisi
• TCP menggandengkan error control dan congestion control
(yaitu dg mengasumsikan error disebabkan oleh congestion)
• TCP memungkinlan accelerated retransmission (Fast
Retransmit)

34
Retransmission Timer TCP

• Retransmission Timer
– Setting Retransmission Timer sangat penting utk efisiensi
– Timeout terlalu kecil  Menyebabkan retransmisi yg tdk
perlu
– Timeout terlalu besar  Menunggu cukup lama sebelum
suatu retransmisi dp dilakukan
– Masalahnya delay dlm jaringan tidak tetap
– Karenanya Retransmission Timer harus adaptive

35
Pengukuran Round Trip Time

• Mekanisme retransmisi TCP


adaptive
• Retransmission timer di-set
berdasarkan pengukuran round
trip time (RTT) yg dilakukan TCP

RTT didasarkan pd perbedaan waktu


antara transmisi segment dan Ack
Tetapi:
TCP tdk meng-Ack tiap segment
Tiap koneksi hanya punya satu timer

36
Adaptive Retransmission Timer
• End-to-end round-trip delay pada internet lebih variable daripada round-
trip delay pada link point-to-point
– timeout tidak efektif
• jika terlalu besar, memberikan respons lambat terhadap
kehilangan segment
• jika terlalu kecil, menyebabkan retransmisi yang tidak perlu
– hampir semua TCP mengimplementasikan adaptive timeout
didasarkan pada estimasi round-trip delay saat ini
• Kesulitan dalam estimasi round-trip delay
– receiving TCP process tidak perlu mengeluarkan ack dg segera
– jika segment telah mengalami retransmisi, tidak bisa tahu apakah ack
merujuk ke transmisi original atau retransmisi
– kondisi trafik internet dapat berubah secara tiba-tiba

37
Pengukuran Round Trip Time
• Retransmission timer di-set ke harga Retransmission Timeout (RTO)
• RTO dikalkulasi berdasarkan pengukuran RTT
• Pengukuran RTT di-’haluskan’ dg estimator srtt dan rttvar :

• Gain di-set ke  = 1/4 dan  = 1/8


• srtt0 = 0 det, rttvar0 = 3 det, juga RTO1 = srtt1 + 2rttvar2

38
Algoritma Karn

• Jika Ack utk segment yg diretranmisi tiba,


pengirim tdk tahu apakah Ack utk yg
original atau retransmisi

Algoritma Karn:
Jangan update srtt pd segment yg telah
diretransmisi.
Tiap saat TCP retransmit, diset

39
TCP Congestion Control
• Tujuan: membatasi jumlah total data memasuki internet ke
jumlah yang dapat dimuat
• Self-clocking mechanism
– setelah perioda startup, segment rate pengirim akan
matches dengan arrival rate dari acks
• sesuai dengan minimum link rate koneksi atau rate
dimana tujuan dapat memproses byte-byte yang tiba,
mana yang lebih kecil
– network bottlenecks dapat disebabkan karena
batasan fisik pada bandwidth atau disebakan karena
kongesti

40
TCP
Segment
Pacing

41
TCP Congestion Control

• TCP mempunyai mekanisme utk congestion control


• Ukuran window pd pengirim di-set sbb:

• dimana
– flow control window diberikan oleh penerima
– congestion window di-adjust berdasarkan feedback dari
jaringan

42
TCP Congestion Control

• Pengirim mempunyai dua parameter tambahan


– Congestion Window (cwnd)
Harga initial adalah 1 MSS (max segment size) dihitung dlm
byte
– Slow-start threshold value (ssthresh)
Harga initial adalah advertised window size

• Congestion control bekerja dlm dua mode


– slow start (cwnd < ssthresh)
– congestion avoidance (cwnd > ssthresh)

43
Slow Start

• Harga initial:
• cwnd = MSS bytes (= 1 segment)
• Setiap sebuah Ack diterima, congestion window
dinaikan dg MSS byte
• cwnd = cwnd + MSS
– Jika Ack meng-acknowledge 2 segment, cwnd tetap dinaikan
hanya dg MSS byte (= 1 segment)
– Bahkan jika Ack meng-acknowledge suatu segment lebih kecil
drpd MSS byte, cwnd dinaikan dg MSS byte
• Apakah slow start naik secara perlahan? Not really
Kenyataannya kenaikan cwnd dp eksponensial
44
Contoh Slow Start

• Ukuran congestion window


tumbuh sangat cepat
• Utk tiap Ack cwnd naik satu
tdk peduli junlah segment
yg di-ack
• TCP menurunkan (slow
down) kenaikan cwnd saat
cwnd > sstresh

45
Updating CWND
• New connection
– start with cwnd = 1
– each time ack received, cwnd = cwnd + 1
– cwnd grows exponentially until pipe is filled
• Response to timeout (congestion)  congestion avoidance
– set slow-start threshold: ssthresh = cwnd / 2
– set cwnd = 1 and follow slow-start until cwnd = ssthresh
• cwnd is increased by 1 for every ack received
– once cwnd reaches ssthresh, increase cwnd by 1 for each
round-trip time
• results in linear growth

46
Slow Start
&
Congestion
Avoidance

47
Contoh Slow Start/ Congestion Avoidance

48
Ilustrasi Slow Start & Congestion Avoidance

49
Respons thd Congestion

• Sebagin besar paket loss dlm jaringan disebabkan krn overflow


pd congested router (drpd krn error transmisi)
• Karenanya, TCP mengasumsikan ada congestion jika
mendeteksi ada suatu paket loss
• Pengirim TCP dp mendeteksi paket loss melalui:
– Timeout dari timer retransmisi
– Menerima duplikasi Ack
• Saat TCP mengasumsikan bw suatu paket loss disebabkan krn
congestion dan mengurangi ukuran dari window pengiriman

50
Fast Retransmit

• Fast retransmit
– jika segment diterima tidak berurutan, penerima segera
mengirimkan ack untuk segment terakhir yang urut yang
diterima
– jika pengirim menerima 3 duplikasi acks untuk segment yang
sama, segera retransmisi tanpa menunggu timeout.

51
Fast Retransmits
segment 1
cwnd = 1

ACK 2

cwnd = 2 segment 2
segment 3

ACK 3

ACK 4
cwnd = 4 segment 4
segment 5
segment 6
segment 7
ACK 4
3 duplicate
ACK 4
ACKs
ACK 4

52
Fast Recovery:
Setelah Fast Retransmit

• ssthresh = cwnd / 2
• cwnd = ssthresh
– drpd setting cwnd ke 1, turunkan cwnd setengahnya
(multiplicative decrease)
• utk tiap dup ack tiba
– dupack++
– MaxWindow = min(cwnd + dupack, AdvWin)
– indikasi paket meninggalkan jaringan, shg mugkin bisa utk
mengirim lebih lagi
• menerima ack utk data batu (diluar initial dup ack)
– dupack = 0
– exit fast recovery
• Tetapi jika RTO expires (terjadi) lakukan cwnd = 1

53
Fast Retransmit dan Fast Recovery
cwnd

AI/MD

Slow Start

Fast retransmit

Time

• Retransmit setelah 3 duplikasi acks


– mencegah expensive timeouts
• mengurangi slow starts
• Pd steady state, cwnd berosilasi sekitar ukuran window
optimal
54

You might also like