Вы находитесь на странице: 1из 73

Computer Science VIII

Chapter 3
Transport Layer
Ing. Etson Guerrero

Transport Layer 3-1


Chapter 3: Transport Layer
Our goals:
 understand principles  learn about transport
behind transport layer protocols in the
layer services: Internet:
 multiplexing/demultipl  UDP: connectionless
exing transport
 reliable data transfer  TCP: connection-oriented
 flow control transport
 congestion control  TCP congestion control

Transport Layer 3-2


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-3


Transport services and protocols
application
transport
 provide logical communication network
data link
between app processes physical

running on different hosts


 transport protocols run in
end systems
 send side: breaks app
messages into segments,
passes to network layer
 rcv side: reassembles application
transport
segments into messages, network
data link
passes to app layer physical

 more than one transport


protocol available to apps
 Internet: TCP and UDP

Transport Layer 3-4


Transport vs. network layer
 network layer: logical Household analogy:
communication 12 kids sending letters to
between hosts 12 kids
 transport layer: logical  processes = kids
communication  app messages = letters
between processes in envelopes
relies on, enhances,
 hosts = houses

network layer services
 transport protocol =
Ann and Bill
 network-layer protocol
= postal service

Transport Layer 3-5


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-7


Multiplexing/demultiplexing
Demultiplexing at rcv host: Multiplexing at send host:
gathering data from multiple
delivering received segments
sockets, enveloping data with
to correct socket
header (later used for
demultiplexing)
= socket = process

P3 P1
P1 P2 P4 application
application application

transport transport transport

network network network

link link link

physical physical physical

host 2 host 3
host 1
Transport Layer 3-8
How demultiplexing works
 host receives IP datagrams
 each datagram has source 32 bits
IP address, destination IP
address source port # dest port #

 each datagram carries 1


transport-layer segment other header fields
 each segment has source,
destination port number
 host uses IP addresses & port application
numbers to direct segment to data
appropriate socket (message)

TCP/UDP segment format

Transport Layer 3-9


Connectionless demultiplexing

Transport Layer 3-10


Connectionless demux (cont)
DatagramSocket serverSocket = new DatagramSocket(6428);

P2 P1
P1
P3

SP: 6428 SP: 6428


DP: 9157 DP: 5775

SP: 9157 SP: 5775


client DP: 6428 DP: 6428 Client
server
IP: A IP: C IP:B

SP provides “return address”

Transport Layer 3-11


Connection-oriented demux

Transport Layer 3-12


Connection-oriented demux
(cont)

P1 P4 P5 P6 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 Client
server
IP: A S-IP: A
IP: C S-IP: B IP:B
D-IP:C D-IP:C

Transport Layer 3-13


Connection-oriented demux:
Threaded Web Server

P1 P4 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 Client
server
IP: A S-IP: A
IP: C S-IP: B IP:B
D-IP:C D-IP:C

Transport Layer 3-14


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-15


UDP: User Datagram Protocol [RFC 768]
 “no frills,” “bare bones”
Internet transport Why is there a UDP?
protocol
 no connection
 “best effort” service, UDP establishment (which can
segments may be: add delay)
 lost  simple: no connection state
 delivered out of order at sender, receiver
to app  small segment header
 connectionless:  no congestion control: UDP
 no handshaking between can blast away as fast as
UDP sender, receiver desired
 each UDP segment
handled independently
of others

Transport Layer 3-16


UDP: more
32 bits

Length, in source port # dest port #


bytes of UDP length checksum
segment,
including
header

Application
data
(message)

UDP segment format

Transport Layer 3-17


UDP checksum
Goal: detect “errors” (e.g., flipped bits) in transmitted
segment

Transport Layer 3-18


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-20


Principles of Reliable data transfer
 important in app., transport, link layers
 top-10 list of important networking topics!

 characteristics of unreliable channel will determine


complexity of reliable data transfer protocol (rdt)
Transport Layer 3-21
Principles of Reliable data transfer
 important in app., transport, link layers
 top-10 list of important networking topics!

 characteristics of unreliable channel will determine


complexity of reliable data transfer protocol (rdt)
Transport Layer 3-22
Principles of Reliable data transfer
 important in app., transport, link layers
 top-10 list of important networking topics!

 characteristics of unreliable channel will determine


complexity of reliable data transfer protocol (rdt)
Transport Layer 3-23
Reliable data transfer: getting started
rdt_send(): called from above, deliver_data(): called by
(e.g., by app.). Passed data to rdt to deliver data to upper
deliver to receiver upper layer

send receive
side side

udt_send(): called by rdt, rdt_rcv(): called when packet


to transfer packet over arrives on rcv-side of channel
unreliable channel to receiver

Transport Layer 3-24


Rdt1.0: reliable transfer over a reliable channel
 underlying channel perfectly reliable
 no bit errors
 no loss of packets

 separate FSMs for sender, receiver:


 sender sends data into underlying channel
 receiver read data from underlying channel

Transport Layer 3-25


Rdt2.0: channel with bit errors
 underlying channel may flip bits in packet
 checksum to detect bit errors

 the question: how to recover from errors:


 acknowledgements (ACKs): receiver explicitly tells sender
that pkt received OK
 negative acknowledgements (NAKs): receiver explicitly
tells sender that pkt had errors
 sender retransmits pkt on receipt of NAK

 new mechanisms in rdt2.0 (beyond rdt1.0):


 error detection
 receiver feedback: control msgs (ACK,NAK) rcvr->sender

Transport Layer 3-26


rdt2.0 has a fatal flaw!

Transport Layer 3-27


rdt2.1: discussion
Sender: Receiver:
 seq # added to pkt  must check if received
 two seq. #’s (0,1) will packet is duplicate
suffice. Why?  state indicates whether
0 or 1 is expected pkt
 must check if received seq #
ACK/NAK corrupted
 note: receiver can not
 twice as many states know if its last
 state must “remember” ACK/NAK received OK
whether “current” pkt
at sender
has 0 or 1 seq. #

Transport Layer 3-28


rdt2.2: a NAK-free protocol

 same functionality as rdt2.1, using ACKs only


 instead of NAK, receiver sends ACK for last pkt
received OK
 receiver must explicitly include seq # of pkt being ACKed
 duplicate ACK at sender results in same action as
NAK: retransmit current pkt

Transport Layer 3-29


rdt3.0: channels with errors and loss

New assumption: Approach: sender waits


underlying channel can “reasonable” amount of
also lose packets (data time for ACK
or ACKs)  retransmits if no ACK
 checksum, seq. #, ACKs, received in this time
retransmissions will be  if pkt (or ACK) just delayed
of help, but not enough (not lost):
 retransmission will be
duplicate, but use of seq.
#’s already handles this
 receiver must specify seq
# of pkt being ACKed
 requires countdown timer

Transport Layer 3-30


rdt3.0 in action

Transport Layer 3-31


Performance of rdt3.0

 rdt3.0 works, but performance stinks


 ex: 1 Gbps link, 15 ms prop. delay, 8000 bit packet:

Transport Layer 3-32


Pipelined protocols
Pipelining: sender allows multiple, “in-flight”, yet-to-
be-acknowledged pkts
 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-33
Pipelining: increased utilization
sender receiver
first packet bit transmitted, t = 0
last bit transmitted, t = L / R

first packet bit arrives


RTT last packet bit arrives, send ACK
last bit of 2nd packet arrives, send ACK
last bit of 3rd packet arrives, send ACK
ACK arrives, send next
packet, t = RTT + L / R

Increase utilization
by a factor of 3!

U 3*L/R .024
sender
= = = 0.0008
RTT + L / R 30.008 microsecon
ds
Transport Layer 3-34
Pipelining Protocols
Go-back-N: big picture: Selective Repeat: big pic
 Sender can have up to  Sender can have up to
N unacked packets in N unacked packets in
pipeline pipeline
 Rcvr only sends  Rcvr acks individual
cumulative acks packets
 Doesn’t ack packet if  Sender maintains
there’s a gap timer for each
 Sender has timer for unacked packet
oldest unacked packet  When timer expires,
 If timer expires, retransmit only unack
retransmit all unacked packet
packets

Transport Layer 3-35


GBN in action

Transport Layer 3-36


Selective Repeat
 receiver individually acknowledges all correctly
received pkts
 buffers pkts, as needed, for eventual in-order delivery
to upper layer
 sender only resends pkts for which ACK not
received
 sender timer for each unACKed pkt
 sender window
 N consecutive seq #’s
 again limits seq #s of sent, unACKed pkts

Transport Layer 3-37


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

Transport Layer 3-38


Selective repeat in action

Transport Layer 3-39


Selective repeat:
dilemma
Example:
 seq #’s: 0, 1, 2, 3
 window size=3

 receiver sees no difference in two scenarios!


 incorrectly passes duplicate data as new in (a)

Q: what relationship between seq # size and window


size?

Transport Layer 3-40


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-41


TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

 point-to-point:  full duplex data:


 one sender, one receiver  bi-directional data flow

 reliable, in-order byte in same connection


 MSS: maximum segment
steam:
size
 no “message boundaries”
 connection-oriented:
 pipelined:
 handshaking (exchange
 TCP congestion and flow
of control msgs) init’s
control set window size sender, receiver state
 send & receive buffers before data exchange
 flow controlled:
 sender will not
application application
writes data reads data
socket socket

overwhelm receiver
door door
TCP TCP
send buffer receive buffer
segment

Transport Layer 3-42


TCP segment structure
32 bits
URG: urgent data counting
(generally not used) source port # dest port #
by bytes
sequence number of data
ACK: ACK #
valid acknowledgement number (not segments!)
head not
PSH: push data now len used
UA P R S F Receive window
(generally not used) # bytes
checksum Urg data pnter
rcvr willing
RST, SYN, FIN: to accept
Options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)

Transport Layer 3-43


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
connection management
 3.3 Connectionless

flow control
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-44


TCP Connection Management
TCP sender, receiver Three way handshake:
establish “connection”
before exchanging data Step 1: client host sends TCP
segments SYN segment to server
 initialize TCP variables:  specifies initial seq #
 seq. #s  no data
 buffers, flow control Step 2: server host receives
info (e.g. RcvWindow) SYN, replies with SYNACK
 client: connection initiator segment
Socket clientSocket = new
Socket("hostname","port  server allocates buffers
number");  specifies server initial
seq. #
 server: contacted by client
Socket connectionSocket = Step 3: client receives SYNACK,
welcomeSocket.accept(); replies with ACK segment,
which may contain data

TCP
TCP Connection Management (cont.)

Closing a connection: Step 3: client receives FIN,


client closes socket: replies with ACK.
clientSocket.close();  Enters “timed wait” -
will respond with ACK
Step 1: client end system to received FINs
sends TCP FIN control
segment to server Step 4: server, receives
ACK. Connection closed.
Step 2: server receives
FIN, replies with ACK. Note: with small
Closes connection, sends modification, can handle
FIN. simultaneous FINs.

TCP
TCP seq. #’s and ACKs

Seq. #’s:
 byte stream “number” of first byte in segment’s data

ACKs:
 seq # of next byte expected from other side
 cumulative ACK

Q: how receiver handles out-of-order segments


 A: TCP spec doesn’t say, - up to implementor

Transport Layer 3-47


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-51


TCP reliable data transfer
 TCP creates rdt  Retransmissions are
service on top of IP’s triggered by:
unreliable service  timeout events
 Pipelined segments  duplicate acks
 Cumulative acks  Initially consider
 TCP uses single
simplified TCP sender:
ignore duplicate acks
retransmission timer 
 ignore flow control,
congestion control

Transport Layer 3-52


TCP sender events:
data rcvd from app: timeout:
 Create segment with  retransmit segment
seq # that caused timeout
 seq # is byte-stream  restart timer
number of first data Ack rcvd:
byte in segment  If acknowledges
 start timer if not previously unacked
already running (think segments
of timer as for oldest  update what is known to
unacked segment) be acked
 expiration interval:  start timer if there are
TimeOutInterval outstanding segments

Transport Layer 3-53


TCP: retransmission scenarios

Transport Layer 3-55


TCP ACK generation [RFC 1122, RFC 2581]

Event at Receiver TCP Receiver action


Arrival of in-order segment with ?
expected seq #. All data up to
expected seq # already ACKed

Arrival of in-order segment with


expected seq #. One other ?
segment has ACK pending

Arrival of out-of-order segment


higher-than-expect seq. # . ?
Gap detected

Arrival of segment that


partially or completely fills gap ?

Transport Layer 3-56


Fast Retransmit

Transport Layer 3-57


Fast retransmit algorithm:

event: ACK received, with ACK field value of y


if (y > SendBase) {
SendBase = y
if (there are currently not-yet-acknowledged segments)
start timer
}
else {
increment count of dup ACKs received for y
if (count of dup ACKs received for y = 3) {
resend segment with sequence number y
}

a duplicate ACK for fast retransmit


already ACKed segment

Transport Layer 3-58


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-59


TCP Flow Control
flow control
sender won’t overflow
 receive side of TCP receiver’s buffer by
connection has a transmitting too much,
receive buffer: too fast

 speed-matching
service: matching the
send rate to the
receiving app’s drain
rate
 app process may be
slow at reading from
buffer
Transport Layer 3-60
TCP Flow control: how it works
 Rcvr advertises spare
room by including value
of RcvWindow in
segments
 Sender limits unACKed
(Suppose TCP receiver data to RcvWindow
discards out-of-order  guarantees receive
segments) buffer doesn’t overflow
 spare room in buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd -
LastByteRead]

Transport Layer 3-61


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-62


Principles of Congestion Control

Congestion:
 informally: “too many sources sending too much
data too fast for network to handle”
 different from flow control!
 manifestations:
 lost packets (buffer overflow at routers)
 long delays (queueing in router buffers)
 a top-10 problem!

Transport Layer 3-63


Causes/costs of congestion: scenario 1
Host A lout
 two senders, two
lin : original data

receivers
 one router,
Host B unlimited shared
output link buffers

infinite buffers
 no retransmission

 large delays
when congested
 maximum
achievable
throughput
Transport Layer 3-64
Causes/costs of congestion: scenario 2

 one router, finite buffers


 sender retransmission of lost packet

Host A lin : original lout


data
l'in : original data, plus
retransmitted data

Host B finite shared output


link buffers

Transport Layer 3-65


Causes/costs of congestion: scenario 3
 four senders
Q: what happens as l
 multihop paths in
and l increase ?
 timeout/retransmit in
Host A lout
lin : original data
l'in : original data, plus
retransmitted data

finite shared output


link buffers

Host B

Transport Layer 3-66


Causes/costs of congestion: scenario 3
H l
o
o
s
u
t
A t

H
o
s
t
B

Another “cost” of congestion:


 when packet dropped, any “upstream transmission
capacity used for that packet was wasted!

Transport Layer 3-67


Approaches towards congestion control
Two broad approaches towards congestion control:

End-end congestion Network-assisted


control: congestion control:
 no explicit feedback from  routers provide feedback
network to end systems
 congestion inferred from  single bit indicating
end-system observed loss, congestion (SNA,
delay DECbit, TCP/IP ECN,
 approach taken by TCP ATM)
 explicit rate sender
should send at

Transport Layer 3-68


Case study: ATM ABR congestion control

ABR: available bit rate: RM (resource management)


 “elastic service” cells:
 if sender’s path  sent by sender, interspersed
“underloaded”: with data cells
 sender should use  bits in RM cell set by switches
available bandwidth (“network-assisted”)
 if sender’s path  NI bit: no increase in rate
congested: (mild congestion)
 sender throttled to  CI bit: congestion
minimum guaranteed indication
rate  RM cells returned to sender by
receiver, with bits intact

Transport Layer 3-69


Chapter 3 outline
 3.1 Transport-layer  3.5 Connection-oriented
services transport: TCP
 3.2 Multiplexing and  segment structure
demultiplexing  reliable data transfer
flow control
 3.3 Connectionless

connection management
transport: UDP 

 3.6 Principles of
 3.4 Principles of
reliable data transfer congestion control
 3.7 TCP congestion
control

Transport Layer 3-70


TCP congestion control: additive increase,
multiplicative decrease
 Approach: increase transmission rate (window size),
probing for usable bandwidth, until loss occurs
 additive increase: increase CongWin by 1 MSS
every RTT until loss detected
 multiplicative decrease: cut CongWin in half after
loss congestion
window
congestion window size

24 Kbytes

Saw tooth
behavior: probing
16 Kbytes

for bandwidth
8 Kbytes

time
time

Transport Layer 3-71


TCP Congestion Control: details
How does sender perceive congestion?

 three mechanisms:
 AIMD
 slow start
 conservative after timeout events

Transport Layer 3-72


TCP Slow Start

Transport Layer 3-73


Refinement: inferring loss
 After 3 dup ACKs:
 CongWin is cut in half Philosophy:
 window then grows
linearly  3 dup ACKs indicates
 But after timeout event: network capable of
delivering some segments
 CongWin instead set to
 timeout indicates a
1 MSS;
“more alarming”
 window then grows congestion scenario
exponentially
 to a threshold, then
grows linearly

Transport Layer 3-74


Summary: TCP Congestion Control

 When CongWin is below Threshold, sender in


slow-start phase, window grows exponentially.
 When CongWin is above Threshold, sender is in
congestion-avoidance phase, window grows linearly.
 When a triple duplicate ACK occurs, Threshold
set to CongWin/2 and CongWin set to
Threshold.

 When timeout occurs, Threshold set to


CongWin/2 and CongWin is set to 1 MSS.

Transport Layer 3-75


TCP Fairness
Fairness goal: if K TCP sessions share same
bottleneck link of bandwidth R, each should have
average rate of R/K

TCP connection 1

bottleneck
TCP
router
connection 2
capacity R

Transport Layer 3-78


Why is TCP fair?
Two competing sessions:
 Additive increase gives slope of 1, as throughout increases
 multiplicative decrease decreases throughput proportionally

R equal bandwidth share

loss: decrease window by factor of 2


congestion avoidance: additive increase
loss: decrease window by factor of 2
congestion avoidance: additive increase

Connection 1 throughput R

Transport Layer 3-79


Fairness (more)
Fairness and UDP Fairness and parallel TCP
 Multimedia apps often
connections
do not use TCP  nothing prevents app from
 do not want rate opening parallel
throttled by congestion connections between 2
control hosts.
 Instead use UDP:  Web browsers do this
 pump audio/video at  Example: link of rate R
constant rate, tolerate
packet loss
supporting 9 connections;
 new app asks for 1 TCP, gets
 Research area: TCP rate R/10
friendly  new app asks for 11 TCPs,
gets R/2 !

Transport Layer 3-80


Chapter 3: Summary
 principles behind transport
layer services:
 multiplexing,
demultiplexing
 reliable data transfer
 flow control Next:
 congestion control  leaving the network
 instantiation and “edge” (application,
implementation in the transport layers)
Internet  into the network
 UDP “core”
 TCP
Transport Layer 3-81

Вам также может понравиться