0% found this document useful (0 votes)
5 views

Lecture_08_CN214 Transport Layer TCP

Uploaded by

hashimalmusalam
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Lecture_08_CN214 Transport Layer TCP

Uploaded by

hashimalmusalam
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 43

Chapter 3

Transport
Layer

Computer Networking: A
Top-Down Approach
8th edition
Jim Kurose, Keith Ross
Pearson, 2020

Transport Layer: 3-1


Chapter 3: roadmap
 Transport-layer services
 Multiplexing and demultiplexing
 Connectionless transport: UDP
 Principles of reliable data transfer
 Connection-oriented transport: TCP
 Principles of congestion control
 TCP congestion control

Transport Layer: 3-2


Transport Layer Protocol
TCP Services
Reliable transport between sending and receiving process
Connection-oriented: setup required between client and server processes
Flow control: sender won’t overwhelm receiver
Congestion control: throttle sender when network overloaded
Does not provide timing, minimum throughput guarantee, security
UDP Services
Unreliable data transfer between sending and receiving process
Does not provide reliability, flow control, congestion control, timing,
throughput guarantee, security, or connection setup
It is a faster and connectionless protocol
Transport Layer: 3-3
Principles of reliable data transfer
 Important in app., transport, link layers
 Characteristics of unreliable channel will determine complexity of reliable
data transfer protocol (rdt)

Transport Layer: 3-4


Principles of reliable data transfer
 Important in app., transport, link layers
 Characteristics of unreliable channel will determine complexity of reliable
data transfer protocol (rdt)
sending receiving
process process
sending receiving application data data
process process transport
application data data
transport
reliable channel sender-side of receiver-side
reliable data of reliable data
transfer protocol transfer protocol
reliable service abstraction
transport
network
unreliable channel

reliable service implementation


Transport Layer: 3-5
Principles of reliable data transfer

sending receiving
process process
application data data
transport

sender-side of receiver-side
Complexity of reliable data reliable data
transfer protocol
of reliable data
transfer protocol
transfer protocol will depend
(strongly) on characteristics of transport
network
unreliable channel (lose, unreliable channel
corrupt, reorder data?)
reliable service implementation

Transport Layer: 3-6


Principles of reliable data transfer

sending receiving
process process
application data data
transport

sender-side of receiver-side
reliable data of reliable data
Sender, receiver do not know transfer protocol transfer protocol
the “state” of each other, e.g.,
was a message received? transport
network
 unless communicated via a unreliable channel

message
reliable service implementation

Transport Layer: 3-7


Reliable data transfer protocol (rdt): interfaces

rdt_send(): called from above, deliver_data(): called by rdt


(e.g., by app.). Passed data to to deliver data to upper layer
deliver to receiver upper layer
sending receiving
process process
rdt_send() data data
deliver_data()

sender-side data receiver-side


implementation of implementation of
rdt reliable data packet rdt reliable data
transfer protocol transfer protocol

udt_send() Header data Header data rdt_rcv()

unreliable channel
udt_send(): called by rdt rdt_rcv(): called when packet
to transfer packet over Bi-directional communication over arrives on receiver side of
unreliable channel to receiver unreliable channel channel
Transport Layer: 3-8
Reliable data transfer: getting started
 incrementally develop sender, receiver sides
 reliable data transfer protocol (rdt)

 consider only unidirectional data transfer


• but control info will flow in both directions!

Transport Layer: 3-9


Basic Protocols RDT 1.0 - 3.0(not in TCP)
 RDT 1.0 Channel underlying channel perfectly reliable
• no bit errors
• no loss of packets
• RDT 2.0 channel with bit errors
• checksum to detect bit errors
• stop and wait
• ACKs and NAKs
• RDT 2.1 adds sequence number (1 bit)
• RDT 2.2 with duplicate Acks instead of Nacks
• Stop and wait
• ACKs but no need for NAKs
• RDT 3.0 channels with errors and loss
• Stop and wait (also called alternating bit protocol)
• Sender can ignore duplicate ACKs and wait for timeout Transport Layer: 3-10
rdt3.0 in action
sender receiver sender receiver
send pkt0 pkt0 send pkt0 pkt0
rcv pkt0 rcv pkt0
ack0 send ack0 ack0 send ack0
rcv ack0 rcv ack0
send pkt1 pkt1 send pkt1 pkt1
rcv pkt1 X Timeout Time: RTT
loss
ack1 send ack1 + Processing Time
rcv ack1
send pkt0 pkt0 Taken by the
rcv pkt0 timeout
ack0 send ack0 resend pkt1 pkt1 Receiver
rcv pkt1
ack1 send ack1
rcv ack1
send pkt0 pkt0
(a) no loss rcv pkt0
ack0 send ack0

(b) packet loss


Transport Layer: 3-11
rdt3.0 in action
sender receiver
sender receiver send pkt0 pkt0
send pkt0 pkt0 rcv pkt0
ack0 send ack0
rcv pkt0
send ack0 rcv ack0
ack0 send pkt1 pkt1
rcv ack0 rcv pkt1
send pkt1 pkt1
rcv pkt1 send ack1
ack1 ack1
send ack1
X
loss timeout
resend pkt1 pkt1
rcv pkt1
timeout
resend pkt1 pkt1 rcv ack1 pkt0 (detect duplicate)
rcv pkt1 send pkt0
(detect duplicate) ack1
send ack1
ack1
send ack1 rcv ack1 rcv pkt0
rcv ack1 ack0 send ack0
pkt0 send pkt0 pkt0
send pkt0 rcv pkt0
rcv pkt0 ack0 (detect duplicate)
ack0 send ack0 send ack0

(c) ACK loss (d) premature timeout/ delayed ACK


Transport Layer: 3-12
Pipelined protocols(in TCP)
Pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged
packets
• Range of sequence numbers must be increased
• Buffering at sender and/or receiver

 Two generic forms of pipelined protocols: Go-Back-N, Selective Repeat


Transport Layer: 3-13
Pipelined protocols: overview
Go-back-N: Selective Repeat:
 Sender can have up to N  Sender can have up to N
unack’ed packets in pipeline unack’ed packets in pipeline
 Receiver only sends cumulative  Receiver sends individual ack
acknowledge (ack) for each packet
• Doesn't ack packet if there’s a gap
 Sender maintains timer for
 Sender has timer for oldest
each unacknowledged packet
unacknowledged packet
• When timer expires, retransmit
• When timer expires, retransmit all only that unacknowledged packets
unacknowledged packets Transport Layer: 3-14
Go-Back-N: sender
 Sender: “window” of up to N, consecutive transmitted but unACKed pkts
• k-bit seq # in pkt header

 Cumulative ACK: ACK(n): ACKs all packets up to, including seq # n


• on receiving ACK(n): move window forward to begin at n+1
 Timer for oldest in-flight packet
 Timeout(n): retransmit packet n and all higher seq # packets in window
Transport Layer: 3-15
Go-Back-N: receiver
 ACK-only: always send ACK for correctly-received packet so far, with
highest in-order seq #
• may generate duplicate ACKs
• need only remember rcv_base
 on receipt of out-of-order packet:
• can discard (don’t buffer) or buffer: an implementation decision
• re-ACK pkt with highest in-order seq #
Receiver view of sequence number space:
received and ACKed

… … Out-of-order: received but not ACKed

rcv_base
Not received
Transport Layer: 3-16
Go-Back-N in action
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
send pkt2 receive pkt0, send ack0
012345678
send pkt3 Xloss receive pkt1, send ack1
012345678
(wait)
receive pkt3, discard,
012345678 rcv ack0, send (re)send ack1
012345678 pkt4
rcv ack1, send receive pkt4, discard,
pkt5 (re)send ack1
ignore duplicate ACK
receive pkt5, discard,
pkt 2 timeout (re)send ack1
012345678 send pkt2
012345678 send pkt3
012345678 send pkt4 rcv pkt2, deliver, send ack2
012345678 send pkt5 rcv pkt3, deliver, send ack3
rcv pkt4, deliver, send ack4
rcv pkt5, deliver, send ack5

Transport Layer: 3-17


Selective repeat
 Receiver individually acknowledges all correctly received packets
• buffers packets, as needed, for eventual in-order delivery to upper
layer
 Sender times-out/retransmits individually for unACKed packets
• sender maintains timer for each unACKed pkt
 Sender window
• N consecutive seq #s
• limits seq #s of sent, unACKed packets

Transport Layer: 3-18


Selective repeat: sender, receiver windows

Transport Layer: 3-19


Selective repeat: sender and receiver
sender receiver
data from above: packet n in [rcvbase, rcvbase+N-1]
 if next available seq # in  send ACK(n)
window, send packet  out-of-order: buffer
timeout(n):  in-order: deliver (also deliver
buffered, in-order packets),
 resend packet n, restart timer
advance window to next not-yet-
ACK(n) in [sendbase,sendbase+N]: received packet
 mark packet n as received packet n in [rcvbase-N,rcvbase-1]
 ACK(n)
 if n smallest unACKed packet,
advance window base to next otherwise:
unACKed seq #  ignore

Transport Layer: 3-20


Selective Repeat in action
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
012345678 send pkt2 receive pkt0, send ack0
012345678 send pkt3 Xloss receive pkt1, send ack1
(wait)
receive pkt3, buffer,
012345678 rcv ack0, send send ack3
012345678 pkt4
rcv ack1, send
receive pkt4, buffer,
pkt5
record ack3 arrived send ack4
receive pkt5, buffer,
pkt 2 timeout send ack5
012345678 send pkt2
012345678 (but not 3,4,5)
012345678 rcv pkt2; deliver pkt2,
012345678 pkt3, pkt4, pkt5; send ack2

Q: what happens when ack2 arrives?

Transport Layer: 3-21


Pipelined protocols: overview
Go-back-N: Selective Repeat:
 Sender can have up to N  Sender can have up to N
unack’ed packets in pipeline unack’ed packets in pipeline
 Receiver only sends cumulative  Receiver sends individual ack
acknowledge (ack) for each packet
• Doesn't ack packet if there’s a gap
 Sender maintains timer for
 Sender has timer for oldest
each unacknowledged packet
unacknowledged packet
• When timer expires, retransmit
• When timer expires, retransmit all only that unacknowledged packets
unacknowledged packets Transport Layer: 3-22
Sample Short Question

 Which is better go-Back-N or selective repeat of pipelined


protocols in TCP? Justify your answer.

Transport Layer: 3-23


Selective repeat: sender window
(after receipt)
receiver window
(after receipt)

0123012 pkt0
pkt1

a dilemma!
0123012 0123012
0123012 pkt2 0123012
0123012
example: 0123012 pkt3
X
 seq #s: 0, 1, 2, 3 (base 4 counting) 0123012
pkt0 will accept packet

 window size=3 (a) no problem


with seq number 0

0123012 pkt0
0123012 pkt1 0123012
0123012 pkt2 X 0123012
X 0123012
X
timeout
retransmit pkt0
0123012 pkt0
will accept packet
with seq number 0
(b) oops!
Transport Layer: 3-24
Selective repeat: sender window
(after receipt)
receiver window
(after receipt)

0123012 pkt0
pkt1

a dilemma!
0123012 0123012
0123012 pkt2 0123012
0123012
example: 0123012 pkt3
X
 seq #s: 0, 1, 2, 3 (base 4 counting)  receiver can’t
0123012
pkt0 will accept packet
see sender side
 window size=3 (a) no problem
 receiver
with seq number 0

behavior
identical in both
cases!
0something’s
123012 pkt0
0(very)
1 2 3 0 1wrong!
Q: what relationship is needed 2 pkt1
pkt2
0123012
X
between sequence # size and 0123012 0123012
X 0123012
window size to avoid problem timeout
X
in scenario (b)? retransmit pkt0
0123012 pkt0
will accept packet
with seq number 0
(b) oops!
Transport Layer: 3-25
Chapter 3: roadmap
 Transport-layer services
 Multiplexing and demultiplexing
 Connectionless transport: UDP
 Principles of reliable data transfer
 Connection-oriented transport: TCP
• segment structure
• reliable data transfer
• flow control
• connection management
 Principles of congestion control
 TCP congestion control
Transport Layer: 3-26
TCP: overview RFCs: 793,1122, 2018, 5681, 7323

 Point-to-point:  Cumulative ACKs


• One sender, One receiver  Pipelining:
 Reliable, in-order byte • TCP congestion and flow control
steam: set window size
• No “message boundaries"  Connection-oriented:
 Full duplex data: • Handshaking (exchange of control
• Bi-directional data flow in messages) initializes sender,
same connection receiver state before data exchange
• MSS: maximum segment size  Flow controlled:
• Sender will not overwhelm receiver

Transport Layer: 3-27


TCP segment structure
32 bits

source port # dest port # segment seq #: counting


ACK: seq # of next expected sequence number bytes of data into bytestream
byte; A bit: this is an ACK (not segments!)
acknowledgement number
length (of TCP header) head not
len used C EUAP R SF receive window flow control: # bytes
Internet checksum checksum Urg data pointer receiver willing to accept

options (variable
C, E: congestion notification length)
TCP options
application data sent by
RST, SYN, FIN: connection data application into
management (variable length) TCP socket

Transport Layer: 3-28


Control Field

Description of flags in the control field


Control Flag
 URG is set to 1 if the urgent pointer is in use
 A connection request is sent by making SYN
= 1 and ACK = 0
 A connection is confirmed by sending SYN =
1 and ACK = 1
 When the sender has no more data to be sent
then FIN = 1 is sent to release the connection
 RST bit is used to reset a connection. Also
reject a connection attempt
 PSH is used to indicate end of message
Transport Layer: 3-30
TCP sequence numbers, ACKs
outgoing segment from sender
Sequence numbers: source port # dest port #
sequence number
• Byte stream number of the acknowledgement number

first byte in segment’s data checksum


rwnd
urg pointer

window size
Acknowledgements: N

• Seq # of next byte expected


from other side sender sequence number space

• Cumulative ACK sent sent, not- usable not


ACKed yet ACKed but not usable
Q: How receiver handles out-of- (“in-flight”) yet sent

order segments outgoing segment from receiver

• A: TCP spec doesn’t say, - up


source port # dest port #
sequence number

to implementor, app acknowledgement number


A rwnd
developer checksum urg pointer
Transport Layer: 3-31
TCP sequence numbers, ACKs
Host A Host B

User types‘C’
Seq=42, ACK=79, data = ‘C’
host ACKs receipt of‘C’,
echoes back ‘C’
Seq=79, ACK=43, data = ‘C’
host ACKs receipt
of echoed ‘C’
Seq=43, ACK=80

simple telnet scenario


Transport Layer: 3-32
TCP round trip time, timeout
Q: How to set TCP timeout Q: How to estimate RTT?
value?  SampleRTT: Measured time
 Longer than RTT, but RTT from segment transmission until
varies! ACK receipt
• ignore retransmissions
 Too short: premature
 SampleRTT will vary, want
timeout, unnecessary
estimated RTT “smoother”
retransmissions
• average several recent
 Too long: slow reaction to measurements, not just current
segment loss SampleRTT

Transport Layer: 3-33


TCP round trip time, timeout
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
 exponential weighted moving average (EWMA)
 influence of past sample decreases exponentially fast
 typical value:  = 0.125
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

350

RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

RTT (milliseconds)
300

250

RTT (milliseconds)
200

sampleRTT
150

EstimatedRTT

100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
time
SampleRTT
Estimated RTT
Transport Layer: 3-34
(seconds)
TCP round trip time, timeout
 timeout interval: EstimatedRTT plus “safety margin”
• large variation in EstimatedRTT: want a larger safety margin
TimeoutInterval = EstimatedRTT + 4*DevRTT

estimated RTT “safety margin”

 DevRTT: EWMA of SampleRTT deviation from EstimatedRTT:


DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT|
(typically,  = 0.25)

* Check out the online interactive exercises for more examples: h ttp://gaia.cs.umass.edu/kurose_ross/interactive/
Transport Layer: 3-35
Timeout example

(set initially)

36
TCP Sender (simplified)
event: data received from event: timeout
application  retransmit segment that
 create segment with seq # caused timeout
 restart timer
 seq # is byte-stream number
of first data byte in segment
event: ACK received
 start timer if not already
 if ACK acknowledges
running
• think of timer as for oldest
previously unACKed segments
unACKed segment • update what is known to be
ACKed
• expiration interval:
TimeOutInterval • start timer if there are still
unACKed segments
Transport Layer: 3-37
TCP ACK generation [RFC 1122, RFC 2581]

event at receiver TCP receiver action


arrival of in-order segment with delayed ACK. Wait up to 500ms
expected seq #. All data up to for next segment. If no next segment,
expected seq # already ACKed send ACK

arrival of in-order segment with immediately send single cumulative


expected seq #. One other ACK, ACKing both in-order segments
segment has ACK pending

arrival of out-of-order segment immediately send duplicate ACK,


higher-than-expect seq. # . indicating seq. # of next expected byte
Gap detected

arrival of segment that immediate send ACK, provided that


partially or completely fills gap segment starts at lower end of gap

Transport Layer 3-38


TCP: retransmission scenarios
Host A Host B Host A Host B Host A Host B

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

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

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


SendBase=100 bytes of data send cumulative Seq=120, 15 bytes of data
SendBase=120 ACK for 120
ACK=100
ACK=120

SendBase=120
cumulative ACK
lost ACK scenario premature timeout covers for earlier
lost ACK
Transport Layer: 3-39
TCP fast retransmit
Host A Host B
TCP fast retransmit
if sender receives 3 additional
ACKs for same data (“triple Se q= 9
2, 8 by
Seq= data tes of
duplicate ACKs”), resend unACKed 100, 2
data
0 b yt e
s of
segment with smallest seq # X
 likely that unACKed segment lost,
=100
so don’t wait for timeout ACK

timeout
=100
ACK
CK =100
A
= 10 0
Receipt of three duplicate ACKs ACK

indicates 3 segments received Seq=100, 20 bytes of data

after a missing segment – lost


segment is likely. So retransmit!

Transport Layer: 3-40


TCP: Reliable Data Transfer

 TCP creates RDT service on  Retransmission triggered by:


top of the unreliable IP • Timeout events
protocol • Duplicate acknowledgement
• Pipelined segments
• Cumulative Acks
• Single retransmission timer

Transport Layer: 3-41


Sample Short Question

 Which is better go-Back-N or selective repeat of pipelined


protocols in TCP? Justify your answer.

Transport Layer: 3-42


Pipelined protocols: overview
Go-back-N: Selective Repeat:
 Sender can have up to N  Sender can have up to N
unack’ed packets in pipeline unack’ed packets in pipeline
 Receiver only sends cumulative  Receiver sends individual ack
acknowledge (ack) for each packet
• Doesn't ack packet if there’s a gap
 Sender maintains timer for
 Sender has timer for oldest
each unacknowledged packet
unacknowledged packet
• When timer expires, retransmit
• When timer expires, retransmit all only that unacknowledged packets
unacknowledged packets Transport Layer: 3-43

You might also like