chp3.ppt_0
TRANSCRIPT
-
8/2/2019 chp3.ppt_0
1/220
-
8/2/2019 chp3.ppt_0
2/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-22
Chapter 3 OutlineChapter 3 Outline
3. Introduction 3.1 Transport-layer
services
3.2 Multiplexing anddemultiplexing
3.3 Connectionlesstransport: UDP
3.4 Principles of reliabledata transfer
3.5 Connection-orientedtransport: TCP segment structure
reliable data transfer
flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
-
8/2/2019 chp3.ppt_0
3/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-33
Protocols/ServicesProtocols/Services
application
transport
network
link
physical
Data TransportData Transport
ServicesServices
Application ProgramApplication Program
ServicesServices
Hop-to-HopHop-to-Hop
protocolsprotocols
End-to-EndEnd-to-End
protocolsprotocols
-
8/2/2019 chp3.ppt_0
4/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-44
Data Transport Services1Data Transport Services1
(API)
(API)
App. SoftwareApp. Software
App. SoftwareApp. Software
transport
network
link
physical
application
ControlledControlled
by OSby OS
ControlledControlled
by App. Soft.by App. Soft.
the applicationthe application
transport
network
link
physical
the applicationthe application
Data
Transport
Services
-
8/2/2019 chp3.ppt_0
5/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-55
Data Transport Services2Data Transport Services2
Data
Transport
Services
Data
Transport
Services
Computer NetworkComputer NetworkComputer Network
application processapplication process
application processapplication process
application processapplication processapplication processapplication process
application processapplication process
application processapplication process
Applications Messages, Objects, Files
Data Transport Services are provided to the applicationData Transport Services are provided to the application
process. The main services are:process. The main services are:
Breaking down the messages, in source, andBreaking down the messages, in source, andassembling the message, in destination.assembling the message, in destination.
Source-Destination routing, finding the path,Source-Destination routing, finding the path,through the links and routers (switches) of thethrough the links and routers (switches) of thenetwork.network.
SourceDestination (end to end) flow control. ItSourceDestination (end to end) flow control. Itmakes possible slow-running process wellmakes possible slow-running process wellcommunicate with fast-running process.communicate with fast-running process.
Error detection and correction.Error detection and correction. ......
-
8/2/2019 chp3.ppt_0
6/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-66
Services & Layer ProtocolsServices & Layer Protocols
Transport-layer Protocols:
They take care of application processes. The processes aredistinguished by means of port numbers.
They control flow intensity between the communicatingprocesses.
They apply acknowledgment scheme and make a reliable inter-inter-
process communication. Network-layer Protocols:
They manage to pass packets router-by-router, from sourcesource hostto destinationdestination host. Hosts are distinguished by means of IP add.
They do accounting for inter-inter-hosthost traffic. Link-layer Protocols and Physical-layer Protocols:
They make frames move into links, repeaters, hubs, switches, androutes in a way from source host to destination host.
They take care of channel coding and error correction system.
They regulate flow intensity between adjacent intermediate
Transport-layer Protocols:
They take care of application processes. The processes aredistinguished by means of port numbers.
They control flow intensity between the communicatingprocesses.
They apply acknowledgment scheme and make a reliable inter-inter-
process communication. Network-layer Protocols:
They manage to pass packets router-by-router, from sourcesource hostto destinationdestination host. Hosts are distinguished by means of IP add.
They do accounting for inter-inter-hosthost traffic. Link-layer Protocols and Physical-layer Protocols:
They make frames move into links, repeaters, hubs, switches, androutes in a way from source host to destination host.
They take care of channel coding and error correction system.
They regulate flow intensity between adjacent intermediate
Data
Transport
Services
transportnetwork
linkphysical
-
8/2/2019 chp3.ppt_0
7/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-77
network layer:logical communication between host-router, router-router, router-host.
transport layer:logical communication betweenprocesses. relies on: enhances from network layer services extends host-to-host communication to process-to-
process communication
Computer Network -Computer Network - UniversityUniversityanalogyanalogyIUST studentssend letters to TU students
processes = students, Port number = students ID number,
application messages = letters in envelopes, hosts = universities, IP add. = universitys address, transport protocol = post office of universities network-layer protocol = postal service of state
Transport Layer vs. Network LayerTransport Layer vs. Network Layer
-
8/2/2019 chp3.ppt_0
8/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-88
Chapter 3 OutlineChapter 3 Outline
3. Introduction
3.1 Transport-layerservices
3.2 Multiplexing anddemultiplexing
3.3 Connectionlesstransport: UDP
3.4 Principles of reliabledata transfer
3.5 Connection-orientedtransport: TCP segment structure
reliable data transfer
flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
-
8/2/2019 chp3.ppt_0
9/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-99
provide logical communication
between application processesrunning on different hosts transport protocols run in end
systems sending side: breaks app
messagesmessages into segments,passes to network layer
receiving side:reassembles segments intomessagesmessages, passes toapplication layer
more than one transportprotocol available toapplications.
Internet: TCP and UDP
provide logical communication
between application processesrunning on different hosts transport protocols run in end
systems sending side: breaks app
messagesmessages into segments,passes to network layer
receiving side:reassembles segments intomessagesmessages, passes toapplication layer
more than one transportprotocol available toapplications.
Internet: TCP and UDP
network
data link
physical
application
transport
network
data link
physical
application
transportnetwork
data link
physical
Transport Services and ProtocolsTransport Services and Protocols
LogicalLogical end to end transportend to end transport
-
8/2/2019 chp3.ppt_0
10/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1010
Ht
Message
applicationHa Message
transport
Ht Ht Ht
network
App. Process decides to send
a message to its counterpart
App. Layer adds its header,
sends the message to transport layer
Transport layer breaks down
the message into several parts,
add its header to each part
And makes segments.
It sends one-by-one segmentsto network layer
Protocol layering and dataProtocol layering and data
App. ProcessApp. ProcessApp. ProcessApp. Process
-
8/2/2019 chp3.ppt_0
11/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1111
reliable, in-orderdelivery (TCP) congestion control,
flow control,
connection setup. unreliable, unordered
delivery (UDP) no-frills extension of
best-effort IP. services not available:
delay guarantees,
bandwidth guarantees.
reliable, in-orderdelivery (TCP) congestion control,
flow control,
connection setup. unreliable, unordered
delivery (UDP) no-frills extension of
best-effort IP. services not available:
delay guarantees,
bandwidth guarantees.
Logical end to endLogical end to end
transporttransport
Internet Transport-Layer ProtocolsInternet Transport-Layer Protocols
network
data link
physical
network
data link
physical
application
transport
network
data link
physical
application
transportnetwork
data link
physical
-
8/2/2019 chp3.ppt_0
12/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1212
Chapter 3 OutlineChapter 3 Outline
3. Introduction
3.1 Transport-layerservices
3.2 Multiplexing anddemultiplexing 3.3 Connectionless
transport: UDP
3.4 Principles of reliabledata transfer
3.5 Connection-orientedtransport: TCP segment structure
reliable data transfer
flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
-
8/2/2019 chp3.ppt_0
13/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1313
applicationapplicationapplicationapplication
transporttransporttransporttransport
networknetworknetworknetwork
linklinklinklink
physicalphysicalphysicalphysical
P1 applicationapplicationapplicationapplication
transporttransporttransporttransport
networknetworknetworknetwork
linklinklinklink
physicalphysicalphysicalphysical
applicationapplicationapplicationapplication
transporttransporttransporttransport
networknetworknetworknetwork
linklinklinklink
physicalphysicalphysicalphysical
P2P3 P4P1
host 1 host 2 host 3
= process = socket
Multiplexing at Sending Host
gathering data from multiple sockets, enveloping data
with header (later used for demultiplexing)
Multiplexing at Sending Host
gathering data from multiple sockets, enveloping data
with header (later used for demultiplexing)
Multiplexing/DemultiplexingMultiplexing/Demultiplexing
multiplexingmultiplexing
-
8/2/2019 chp3.ppt_0
14/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1414
applicationapplicationapplicationapplication
transporttransporttransporttransport
networknetworknetworknetwork
linklinklinklink
physicalphysicalphysicalphysical
P1 applicationapplicationapplicationapplication
transporttransporttransporttransport
networknetworknetworknetwork
linklinklinklink
physicalphysicalphysicalphysical
applicationapplicationapplicationapplication
transporttransporttransporttransport
networknetworknetworknetwork
linklinklinklink
physicalphysicalphysicalphysical
P2P3 P4P1
host 1 host 2 host 3
= process = socket
Demultiplexing at Receiving Host
delivering received segments
to correct socket
Demultiplexing at Receiving Host
delivering received segments
to correct socket
Multiplexing/DemultiplexingMultiplexing/Demultiplexing
demultiplexingdemultiplexing
-
8/2/2019 chp3.ppt_0
15/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1515
host receives IP datagrams: each datagram has source IPsource IP
address, destination IP addressaddress, destination IP address
each datagram carries 1
transport-layer segment each segment has source,source,
destination port numberdestination port number(recall: well-known port numbersfor specific applications).
host uses IP addresses & portnumbers to direct segment toappropriate socket.
How Demultiplexing WorksHow Demultiplexing Works
TCP/UDP segment formatTCP/UDP segment format
source port # dest port #32 bits
applicationapplication
datadata
(message)(message)
other header fieldsother header fields
source port # dest port #
applicationapplication
datadata
(message)(message)
other header fieldsother header fields
-
8/2/2019 chp3.ppt_0
16/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1616
Apps create sockets indestination:
sd1 = Socket(PF-Inet,sock-Dgram,Ipproto_TCP);
Bind(sd1, Socket,Socket length);
UDP Socket identified by2-tuple: Dest. IP address Dest. Port number. It means:
Socket =(dest IP address , dest port number)
When host receives UDPWhen host receives UDPsegment:segment: checks destination portchecks destination port
number in segment,number in segment, directs UDP segment todirects UDP segment to
SocketSocket (process) with that(process) with thatport number,port number, IP datagrams with differentIP datagrams with different
source IP addresses and/orsource IP addresses and/orsource port numbers directedsource port numbers directedto sameto same socketsocket (process)(process)..
Connectionless Demultiplexing1Connectionless Demultiplexing1
-
8/2/2019 chp3.ppt_0
17/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1717
Connectionless Demultiplexing2Connectionless Demultiplexing2
create socket,port=x, forincoming request:serverSocket =DatagramSocket()
read request fromserverSocket
write reply toserverSocket
specifying clienthost address,port number
Server
(running on IP address:C)
closeclientSocket
read reply fromclientSocket
create socket,clientSocket =DatagramSocket()
Create, address (hostid, port=x,send datagram requestusing clientSocket
Client
(running on IP address:A)
-
8/2/2019 chp3.ppt_0
18/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1818
Client
IP:B
P2
client
IP: A
P1P3
server
IP: C
Connectionless Demultiplexing3Connectionless Demultiplexing3
P1
server (datagram) sockets: (C, 5193)client socket: (A, 4012)
SP: 5193SP: 5193
DP: 801DP: 801
C to BC to B
SP: 801SP: 801
DP: 5193DP: 5193
B to CB to CB to CB to C
SP: 5193SP: 5193
DP: 4012DP: 4012
C to A
SP: 4012SP: 4012
DP: 5193DP: 5193
A to C
Two arriving UDP segments with
different source IP address or sourceport number will be directed to a
socket.
client socket: (B, 801)
-
8/2/2019 chp3.ppt_0
19/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-1919
TCP socket identifiedby 4-tuple: source IP address source port number dest IP address dest port number
receiving host uses allfour values to directsegment to appropriatesocket.
TCP socket identifiedby 4-tuple: source IP address source port number dest IP address dest port number
receiving host uses allfour values to directsegment to appropriatesocket.
Server host may supportmany simultaneous TCPsockets: each socket identified by
its own 4-tuple
Example: Web servershave different socketsfor each connectingclient non-persistent HTTP will
have different socket foreach request.
Server host may supportmany simultaneous TCPsockets: each socket identified by
its own 4-tuple
Example: Web servershave different socketsfor each connecting
client non-persistent HTTP will
have different socket foreach request.
Connection-Oriented Demultiplexing1Connection-Oriented Demultiplexing1
-
8/2/2019 chp3.ppt_0
20/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2020
create socket,connect to
hostidhostid, port=
xxclientSocket =Socket()
read reply fromclientSocket
closeclientSocket
send request usingclientSocket
wait for incoming
connection requestconnectionSocket =welcomeSocket.accept()
create socket,port=xx, forincoming request:welcomeSocket =
ServerSocket()
closeconnectionSocket
Create and read request fromconnectionSocket
write reply toconnectionSocket
TCPconnection setup
Client/Server Socket Interaction: TCPClient/Server Socket Interaction: TCP
Client(running on IP address:A)
Server
(running on IPaddress:C)
-
8/2/2019 chp3.ppt_0
21/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2121
Sockets in Connection-OrientedSockets in Connection-Oriented
ClientsocketClientsocket
ConnectionsocketConnectionsocket
Welcoming
socket
Welcoming
socket
Three
-wayh
andshake
Client processClient process Server processServer process
Client IP Address&
Port Number
Server IP Address&
Port Number2
Server IP Address&
Port Number1
bytes
Server
(running on IPaddress:C)
Client(running on IP address:A)
Client IP Address&
Port Number+
4-tuple identifier
-
8/2/2019 chp3.ppt_0
22/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2222
client
IP: A
server
IP: C
Connection-Oriented Demultiplexing2Connection-Oriented Demultiplexing2
P1
SP: 2549SP: 2549
DP: 1324DP: 1324
C to A
P2
SP: 1324SP: 1324
DP: 80DP: 80
A to C
connection socket (A, C, 1324, 2549)client sockets (C, A, 2549, 1324)
SP: 1324SP: 1324
DP: 2549DP: 2549
AA toto CCAA toto CC
-
8/2/2019 chp3.ppt_0
23/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2323
Connection-Oriented Demultiplexing3Connection-Oriented Demultiplexing3
Client
IP:B
P1
client
IP: A
P1P3P5
server
IP: C
SP: 9157SP: 9157DP: 2053DP: 2053
P6
A to C
SP: 5775SP: 5775DP: 2053DP: 2053
B to C
SP: 1807SP: 1807
DP: 2053DP: 2053
A to C
P4P2
Server host may support many simultaneous TCP sockets, with each socket attached to a process.
Each socket is identified by its own 4-tuple.
All 4 fields are used to direct (demultiplex) the segment to the appropriate socket.
Server host may support many simultaneous TCP sockets, with each socket attached to a process.
Each socket is identified by its own 4-tuple.
All 4 fields are used to direct (demultiplex) the segment to the appropriate socket.
In contrast with UDP, two arriving TCP segments with different source IP address or
source port number will be directed to two different sockets.
In contrast with UDP, two arriving TCP segments with different source IP address or
source port number will be directed to two different sockets.
-
8/2/2019 chp3.ppt_0
24/[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2424
Connection-Oriented Demultiplexing4Connection-Oriented Demultiplexing4
Client
IP:B
P1
client
IP: A
P1P3P4
server
IP: C
SP: 9157SP: 9157DP: 2053DP: 2053
A to C
SP: 5775SP: 5775DP: 2053DP: 2053
B to C
SP: 1807SP: 1807
DP: 2053DP: 2053
A to C
P2
Threaded Server
-
8/2/2019 chp3.ppt_0
25/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2525
Chapter 3 outlineChapter 3 outline
3. Introduction
3.1 Transport-layerservices
3.2 Multiplexing anddemultiplexing
3.3 Connectionlesstransport: UDP
3.4 Principles of reliabledata transfer
3.5 Connection-orientedtransport: TCP segment structure
reliable data transfer
flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
-
8/2/2019 chp3.ppt_0
26/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2626
simple Internet transportprotocol.
best effort service, UDPsegments may be:
Lost, Delivered out of order
to app,
connectionless:
no handshaking betweenUDP sender, receiver.
each UDP segmenthandled independently
of others.
Why is there a UDP? no connection
establishment (which can
add delay). simple: no connection state
at sender, receiver.
small segment header.
no congestion control: UDPcan blast away as fast asdesired
UDP: User Datagram ProtocolUDP: User Datagram Protocol [RFC 768][RFC 768]
d
-
8/2/2019 chp3.ppt_0
27/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2727
often used for streamingmultimedia apps
loss tolerant
rate sensitive
other UDP uses DNS
SNMP
reliable transfer over UDP:add reliability at applicationlayer
application-specificerror recovery!
source port # dest port #
32 bits
ApplicationApplication
datadata
(message)(message)
UDP segment format
length checksumLength, in
bytes of UDP
segment,
including
header
UDP HeaderUDP Header
Ch k
-
8/2/2019 chp3.ppt_0
28/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2828
Sender:
treat segment contents assequence of 16-bitintegers.
checksum: addition (1s
complement sum) ofsegment contents.
sender puts checksumvalue into UDP checksumfield.
Sender:
treat segment contents assequence of 16-bitintegers.
checksum: addition (1s
complement sum) ofsegment contents.
sender puts checksumvalue into UDP checksumfield.
Receiver:
compute checksum ofreceived segment
check if computed checksumequals checksum field value:
NO - error detected YES - no error detected.
Receiver:
compute checksum ofreceived segment
check if computed checksumequals checksum field value:
NO - error detected YES - no error detected.
Goal: detect errors (e.g., flipped bits) in transmitted segment
UDP ChecksumUDP Checksum
Ch k E l
-
8/2/2019 chp3.ppt_0
29/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-2929
Checksum ExampleChecksum Example
Source Port #:
Destin. Port #:
1scompleme
ntChecksum:
Note That: Source Port# + Dest. Port# + Checksum =1111111111111111
Sum:
1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 11 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0
Length:
0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1
Checksum Example When msb is not ZeroChecksum Example When msb is not Zero
-
8/2/2019 chp3.ppt_0
30/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3030
Checksum Example-When msb is not ZeroChecksum Example-When msb is not Zero
Note
When adding numbers, a carryout from the mostsignificant bit needs to be added to the result
Example: add two 16-bit integers
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
Sum:Checksum:
Ch 3 liCh 3 li
-
8/2/2019 chp3.ppt_0
31/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3131
Chapter 3 outlineChapter 3 outline
3. Introduction
3.1 Transport-layerservices
3.2 Multiplexing and
demultiplexing
3.3 Connectionlesstransport: UDP
3.4 Principles ofreliable data transfer
3.5 Connection-orientedtransport: TCP segment structure
reliable data transfer
flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
Ch 3 liCh 3 li
-
8/2/2019 chp3.ppt_0
32/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3232
Important in: app., transport, link layers.Important in: app., transport, link layers.
ap
plication
ap
plication
layer
layer
ap
plication
ap
plication
layer
layer
(a) Service model
(b) Service implementation
Chapter 3 outlineChapter 3 outline
characteristics of unreliable channel will
determine complexity of reliable data
characteristics of unreliable channel will
determine complexity of reliable data
R li bl D T f G i dR li bl D T f G i d
-
8/2/2019 chp3.ppt_0
33/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3333
send
side
receive
side
rdt_send():called fromabove, (e.g., by app.). Passed
data to
deliver to receiver upper layer
udt_send():called by
rdt,
to transfer packet over
rdt_rcv():called when
packet arrives on rcv-side of
channel
deliver_data():called by rdt to deliver
data to upper
Reliable Data Transfer: Getting startedReliable Data Transfer: Getting started
R li bl D T f i dR li bl D t T f tti t t d
-
8/2/2019 chp3.ppt_0
34/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3434
We will:
incrementally develop sender, receiver sides ofreliable data transfer protocol (rdt)
consider only unidirectional data transfer but control info will flow on both directions!
use finite state machines (FSM) to specifysender, receiver
We will:
incrementally develop sender, receiver sides ofreliable data transfer protocol (rdt)
consider only unidirectional data transfer but control info will flow on both directions!
use finite state machines (FSM) to specifysender, receiver
state: when in
this state
next state
uniquely
determined
state
1state
2
event causing state transitionactions taken on state transition
eventactions
Reliable Data Transfer: getting startedReliable Data Transfer: getting started
R li bl D t T f U li bl Ch lR li bl D t T f U li bl Ch l
-
8/2/2019 chp3.ppt_0
35/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3535
Reliable Data Transfer over Unreliable ChannelReliable Data Transfer over Unreliable Channel
rdt1.0: underlying channel perfectly reliable.
rdt2.0: underlying channel may flip bits in packet. ACK/NAK +Stop&Wait.
rdt2.1: What happens if ACK/NAK corrupted?
Sender handles defected ACK/NAKs.
rdt2.2: a NAK-free protocol. Instead of NAK, receiver sends ACK for last pkt received
OK.
Duplicate ACK at sender results in same action as NAK:
retransmit current pkt. rdt3.0: Channels with errors andloss (Timer).
Stop&Wait: Performance is low.
Pipelining increase the performance: Go-Back-N, Selective
Repeat.
rdt1.0: underlying channel perfectly reliable.
rdt2.0: underlying channel may flip bits in packet. ACK/NAK +Stop&Wait.
rdt2.1: What happens if ACK/NAK corrupted?
Sender handles defected ACK/NAKs.
rdt2.2: a NAK-free protocol. Instead of NAK, receiver sends ACK for last pkt received
OK.
Duplicate ACK at sender results in same action as NAK:
retransmit current pkt. rdt3.0: Channels with errors andloss (Timer).
Stop&Wait: Performance is low.
Pipelining increase the performance: Go-Back-N, Selective
Repeat.
dt1 0dt1 0 l f l l li bl h ll f l l li bl h l
-
8/2/2019 chp3.ppt_0
36/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3636
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
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
Wait forcall fromabove
sndpkt = make_pkt(data)udt_send(sndpkt)
rdt_send(data)
sender
rdt_send(data) event, creates a packet
containing the data via the action
make_pkt(data) and sends the packet via the
action udt_send(packet).
Wait forcall from
belowextract (rcvpkt,data)deliver_data(data)
rdt_rcv(rcvpkt)
receiver
rdt_rcv(rcvpkt)event, removes the data from the
packet via the action extract(rcvpkt, data) and
passes the data up to upper layer via the action
deliver_data(data).
rdt1.0:rdt1.0: a protocol for a completely reliable channela protocol for a completely reliable channel
dt2 0 h l ith bitdt2 0 h l ith bit
-
8/2/2019 chp3.ppt_0
37/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3737
underlying channel may flip bits in packet
recall: UDP checksum to detect bit errors. thequestion: how to recover from errors:
acknowledgements (ACKs):receiver explicitly tells sender thatpkt received OK.
negative acknowledgements (NAKs):receiver explicitly tellssender that pkt had errors (Please repeat that.)
sender retransmits pkt on receipt of NAK.
new mechanisms in rdt2.0 (beyond rdt1.0):
error detection. receiver feedback: Reciever sends control message (ACK,NAK)
to sender.
raliable data transfer based the retransmission is known as:
ARQ (Automatic Repeat reQuest).
underlying channel may flip bits in packet
recall: UDP checksum to detect bit errors. thequestion: how to recover from errors:
acknowledgements (ACKs):receiver explicitly tells sender thatpkt received OK.
negative acknowledgements (NAKs):receiver explicitly tellssender that pkt had errors (Please repeat that.)
sender retransmits pkt on receipt of NAK.
new mechanisms in rdt2.0 (beyond rdt1.0):
error detection. receiver feedback: Reciever sends control message (ACK,NAK)
to sender.
raliable data transfer based the retransmission is known as:
ARQ (Automatic Repeat reQuest).
rdt2.0: channel with bit errorsrdt2.0: channel with bit errors
dt2 0 FSM ifi tidt2 0 FSM ifi ti (S & i )(S &W i )
-
8/2/2019 chp3.ppt_0
38/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3838
extract(rcvpkt,data)deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &¬corrupt(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&corrupt(rcvpkt)
Wait forcall from
belowReceiver
(one state)
Wait forcall from
aboveudt_send(sndpkt)
rdt_rcv(rcvpkt) &&isNAK(rcvpkt)Wait for
ACK or
NAK
Sender
(two states)
sndpkt = make_pkt(datadata, checksum)udt_send(sndpkt)
rdt_send(datadata)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
Wait for call from above
ACK packet is received.
NACK packet is received.
rdt2.0: FSM specificationrdt2.0: FSM specification (Stop&Wait)(Stop&Wait)
dt2 0 ti ithdt2 0 ti ith
-
8/2/2019 chp3.ppt_0
39/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-3939
Wait forcall fromabove
Wait forACK or
NAK
Wait forcall from
below
sndpkt = make_pkt(datadata, checksum)
udt_send(sndpkt)
rdt_send(datadata)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&isNAK(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
Wait for call form above
udt_send(NAK)
rdt_rcv(rcvpkt) &&corrupt(rcvpkt)
extract(rcvpkt,datadata)deliver_data(datadata)
udt_send(ACK)
rdt_rcv(rcvpkt) &¬corrupt(rcvpkt)
rdt2.0: operation with no errorsrdt2.0: operation with no errors
dt2 0 irdt2 0: error scenario
-
8/2/2019 chp3.ppt_0
40/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4040
Wait forcall fromabove
Wait forACK or
NAK
Wait forcall from
below
sndpkt = make_pkt(datadata, checksum)
udt_send(sndpkt)
rdt_send(datadata)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
Wait for call from above
udt_send(NAK)
rdt_rcv(rcvpkt) &&corrupt(rcvpkt)
extract(rcvpkt,datadata)deliver_data(datadata)
udt_send(ACK)
rdt_rcv(rcvpkt) &¬corrupt(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&isNAK(rcvpkt)
rdt2.0: error scenariordt2.0: error scenario
dt2 0 h f t l d f t ACK/NAK C tirdt2 0 has a fatal defect: ACK/NAK Corruption
-
8/2/2019 chp3.ppt_0
41/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4141
What happens ifACK/NAK corrupted?
sender doesnt know whathappened at receiver!
cant just retransmit:possible duplicate
What to do?
sender ACKs/NAKsreceivers ACK/NAK? Whatif sender ACK/NAK lost?
retransmit, but this mightcause retransmission ofcorrectly received pkt!
What happens ifACK/NAK corrupted?
sender doesnt know whathappened at receiver!
cant just retransmit:possible duplicate
What to do?
sender ACKs/NAKsreceivers ACK/NAK? Whatif sender ACK/NAK lost?
retransmit, but this mightcause retransmission of
correctly received pkt!
Handling duplicates: sender adds sequence
numberto each pkt
sender retransmits current
pkt if ACK/NAK is recieved receiver discards (doesnt
deliver up) duplicate pkt
Handling duplicates: sender adds sequence
numberto each pkt
sender retransmits current
pkt if ACK/NAK is recieved receiver discards (doesnt
deliver up) duplicate pkt
Sender sends one packet,then waits for receiver
response
stop and wait
rdt2.0 has a fatal defect: ACK/NAK Corruptionrdt2.0 has a fatal defect: ACK/NAK Corruption
dt2 1rdt2 1: S dSender h dl d f t d ACK/NAKhandles defected ACK/NAKs
-
8/2/2019 chp3.ppt_0
42/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4242
Wait for call0 fromabove
Wait forACK orNAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||
isNAK(rcvpkt) )
sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isNAK(rcvpkt) )
Wait forcall 1 from
above
Wait forACK orNAK 1
rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)
Wait for call 1from above
sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)
Wait for call 0from above
Seq. no=1
Seq. no=0
rdt2.1:rdt2.1: SenderSenderhandles defected ACK/NAKs.handles defected ACK/NAKs.
rdt2 1:rdt2 1: ReceiverReceiver handles defectedhandles defected ACK/NAKACK/NAKs
-
8/2/2019 chp3.ppt_0
43/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4343
Wait for1 frombelow
Wait for0 frombelow
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)&& has_seq1(rcvpkt)
extract(rcvpkt,data)deliver_data(data)
sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)extract(rcvpkt,data)deliver_data(data)
sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)
sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
rdt_rcv(rcvpkt) &¬corrupt(rcvpkt) &&
has_seq0(rcvpkt)
sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) &¬ corrupt(rcvpkt) &&
has_seq1(rcvpkt)
sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)
rdt2.1:rdt2.1: ReceiverReceiverhandles defectedhandles defected ACK/NAKs.ACK/NAKs.
rdt2 1: discussionrdt2 1: discussion
-
8/2/2019 chp3.ppt_0
44/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4444
Sender: seq # added to pkt two seq. #s (0,1) will
suffice. Why? must check if received
ACK/NAK corrupted. twice as many states.
state must rememberwhether current pkthas 0 or 1 seq. #
Sender: seq # added to pkt two seq. #s (0,1) will
suffice. Why? must check if received
ACK/NAK corrupted. twice as many states.
state must rememberwhether current pkthas 0 or 1 seq. #
Receiver: must check if received
packet is duplicate.
state indicates whether0 or 1 is expected pktseq #.
note: receiver can notknow if its last
ACK/NAK received OKat sender.
Receiver: must check if received
packet is duplicate. state indicates whether
0 or 1 is expected pktseq #.
note: receiver can notknow if its last
ACK/NAK received OKat sender.
rdt2.1: discussionrdt2.1: discussion
rdt2 2: a NAK free protocolrdt2 2: a NAK free protocol
-
8/2/2019 chp3.ppt_0
45/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4545
same functionality as rdt2.1, using ACKsonly
instead of NAK, receiver sends ACK forlast pkt received OK receiver must explicitlyinclude seq # of pkt
being ACKed
duplicate ACK at sender results in same
action as NAK: retransmit current pktretransmit current pkt
same functionality as rdt2.1, using ACKsonly
instead of NAK, receiver sends ACK forlast pkt received OK receiver must explicitlyinclude seq # of pkt
being ACKed
duplicate ACK at sender results in same
action as NAK: retransmit current pktretransmit current pkt
rdt2.2: a NAK-free protocolrdt2.2: a NAK-free protocol
rdt2 2: sender receiver fragmentsrdt2 2: sender receiver fragments
-
8/2/2019 chp3.ppt_0
46/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4646
Wait forcall 0 from
above
sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )Wait forACK
0
sender
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)&& has_seq1(rcvpkt)
extract(rcvpkt,data); deliver_data(data)sndpkt = make_pkt(ACK1, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||
has_seq1(rcvpkt) )
udt_send(sndpkt) Wait for0 from
below
receiver
rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)&&isACK(rcvpkt,0)
Wait for
rdt2.2: sender, receiver fragmentsrdt2.2: sender, receiver fragments
1
rdt3 0: Channels with errorsrdt3 0: Channels with errors andand loss (Timer)loss (Timer)
-
8/2/2019 chp3.ppt_0
47/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4747
New assumption:underlying channel canalso lose packets (dataor ACKs)
checksum, seq. #, ACKs,retransmissions will beof help, but not enough
Q: how to deal with loss?
sender waits untilcertain data or ACKlost, then retransmits
Timer drawbacks?
New assumption:underlying channel canalso lose packets (dataor ACKs)
checksum, seq. #, ACKs,retransmissions will beof help, but not enough
Q: how to deal with loss?
sender waits untilcertain data or ACKlost, then retransmits
Timer drawbacks?
Approach: sender waitsreasonable amount oftime for ACK
retransmits if no ACK
received in this time if pkt (or ACK) just delayed
(not lost):
retransmission will beduplicate, but use of seq.#s already handles this
receiver must specify seq# of pkt being ACKed
requires countdown timer
Approach: sender waitsreasonable amount oftime for ACK
retransmits if no ACK
received in this time if pkt (or ACK) just delayed
(not lost):
retransmission will beduplicate, but use of seq.#s already handles this
receiver must specify seq# of pkt being ACKed
requires countdown timer
rdt3.0: Channels with errorsrdt3.0: Channels with errors andandloss (Timer)loss (Timer)
rdt3 0: Senderrdt3 0: Sender
-
8/2/2019 chp3.ppt_0
48/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4848
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)start_timer
rdt_send(data)
Waitfor
ACK0
Wait forcall 1 from
above
sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)
start_timer
rdt_send(data)
rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt,0)
stop_timer
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)&& isACK(rcvpkt,1)
stop_timer
udt_send(sndpkt)start_timer
timeout
udt_send(sndpkt)start_timer
timeout
Wait forcall 0from
above
Waitfor
ACK1
Wait for call 1 from above
rdt_rcv(rcvpkt)
rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
Wait for ACK0rdt_rcv(rcvpkt)
Wait for call 0 from above
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||isACK(rcvpkt,0) )
Wait for ACK1
rdt3.0: Senderrdt3.0: Sender
rdt3 0 in actionrdt3 0 in action
-
8/2/2019 chp3.ppt_0
49/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-4949
(b) lost packet(a) operation with no loss
rdt3.0 in actionrdt3.0 in action
rdt3 0 in actionrdt3 0 in action
-
8/2/2019 chp3.ppt_0
50/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5050
(c) lost ACK (d) premature time
rdt3.0 in actionrdt3.0 in action
Performance of Stop & Wait (rdt3 0)Performance of Stop & Wait (rdt3 0)
-
8/2/2019 chp3.ppt_0
51/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5151
rdt3.0 works, but performance stinks
example: 1 Gbps link, 15 ms e-e prop. delay, 1KB packet:
U sender: utilization fraction of time sender busy sending 1KB pkt every 30 msec = 33kB/sec throughput over 1 Gbps link
network protocol limits use of physical resources!
T
transmit
= 8kb/pkt
109 b/sec= 8 sec
L (packet length in bits)
R (transmission rate, bps) =
Usender
= 0.008 ms
15ms + 15ms + 0.008
ms
= 0.00027L / R
RTT + L / R=
Performance of Stop & Wait (rdt3.0)Performance of Stop & Wait (rdt3.0)
rdt3 0: stop and wait operationrdt3 0: stop-and-wait operation
-
8/2/2019 chp3.ppt_0
52/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5252
first packet bit transmitted, t = 0sender receiver
RTT
last packet bit transmitted, t = L / R
first packet bit arriveslast packet bit arrives, send ACK
ACK arrives, send nextpacket, t = RTT + L / R
Usender
=0.008
30.008=
0.00027L / R
RTT + L / R=
rdt3.0: stop-and-wait operationrdt3.0: stop-and-wait operation
Pipelined protocolsPipelined protocols
-
8/2/2019 chp3.ppt_0
53/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5353
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
(b) A pipelined protocol in operatio(a)A stop-and-waitprotocol in operation
data packet
ACK packet
data packet
ACK packet
Pipelined protocolsPipelined protocols
Pipelining: Increasing UtilizationPipelining: Increasing Utilization
-
8/2/2019 chp3.ppt_0
54/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5454
first packet bit transmitted, t = 0
sender receiver
RTT
last bit transmitted, t = L / R
first packet bit arriveslast packet bit arrives, send ACK
ACK arrives, send nextpacket, t = RTT + L / R
last bit of 2nd packet arrives, send ACKlast bit of 3rd packet arrives, send ACK
Usender
=.024
30.008= 0.0008
3 * L / R
RTT + L / R=
Increase utilization
by a factor of 3!
Pipelining: Increasing UtilizationPipelining: Increasing Utilization
Go-Back-NGo-Back-N
-
8/2/2019 chp3.ppt_0
55/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5555
Sender: k-bit seq # in pkt header
window of up to N, consecutive unacked pkts allowed
ACK(n): ACKs all pkts up to, including seq # n -
may deceive duplicate ACKs (see receiver)
timer for each in-flight pkt
timeout(n): retransmit pkt n and all higher seq # pkts in window
alreadyACKd
sent, not
yet ACKd
usable,not yet sent
not usable67891
0
1
1
1
2
1
3
1
4
54321 1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0window size
N AC
K
6
send_base nextseqnum
cumulative ACK
Go-Back-NGo Back N
GBN: Sender extended FSMGBN: Sender extended FSM
-
8/2/2019 chp3.ppt_0
56/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5656
Waitstart_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])udt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum < base+N) {
sndpkt[nextseqnum] =make_pkt(nextseqnum,data,chksum)
udt_send(sndpkt[nextseqnum])if (nextseqnum == base+N) start_timer
nextseqnum++ }elserefuse_data(data)
base = getacknum(rcvpkt)+1If (base == nextseqnum)stop_timerelsestart_timer
rdt_rcv(rcvpkt) &¬corrupt(rcvpkt)
base=1nextseqnum=1
rdt_rcv(rcvpkt)&& corrupt(rcvpkt)
base
nextseqnum
base+N
wait
start11
22
If a timeout occurs, the sender resendsIf a timeout occurs, the sender resends allall packets thatpackets that
have been previously sent but that have not yet beenhave been previously sent but that have not yet been
acknowledged.acknowledged.
If an ACK is received but thereIf an ACK is received but there
are still additional transmitted-are still additional transmitted-
but-yet-to-be-acknowledgedbut-yet-to-be-acknowledged
packets, the timer is restartedpackets, the timer is restarted
Timer can be thought of as aTimer can be thought of as atimer for the oldesttimer for the oldest
transmitted-but-not-yet-transmitted-but-not-yet-
acknowledged packet.acknowledged packet.
GBN: Sender extended FSMGBN: Sender extended FSM
GBN: Receiver extended FSMGBN: Receiver extended FSM
-
8/2/2019 chp3.ppt_0
57/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5757
ACK-only: always send ACK for correctly-received pktwith highest in-orderseq #
may generate duplicate ACKs need only remember expectedseqnum
out-of-order pkt: discard (dont buffer) -> no receiver buffering!
Re-ACK pkt with highest in-order seq #
Wait
udt_send(sndpkt)
default
rdt_rcv(rcvpkt)&& notcurrupt(rcvpkt)&& hasseqnum(rcvpkt,expectedseqnum)
extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(expectedseqnum,ACK,chksum)udt_send(sndpkt)
expectedseqnum++
expectedseqnum=1sndpkt =make_pkt(expectedseqnum,ACK,chksum)
start
GBN: Receiver extended FSMGBN: Receiver extended FSM
-
8/2/2019 chp3.ppt_0
58/220
Selective RepeatSelective Repeat
-
8/2/2019 chp3.ppt_0
59/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-5959
receiver individuallyacknowledges all correctlyreceived pkts buffers pkts, as needed, for eventual in-order delivery
to upper layer
sender only resends pkts for which ACK notreceived sender timer for each unACKed pkt
sender window N consecutive seq #s
again limits seq #s of sent, unACKed pkts
Selective RepeatSelective Repeat
Selective repeat: sender, receiver windowsSelective repeat: sender, receiver windows
-
8/2/2019 chp3.ppt_0
60/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6060
Selective repeat: sender, receiver windowsSelective repeat: sender, receiver windows
Selective repeatSelective repeat
-
8/2/2019 chp3.ppt_0
61/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6161
data from above : if next available seq # in
window, send pkt
timeout(n): resend pkt n, restart timer
ACK(n) in [sendbase,sendbase+N]:
mark pkt n as received if n smallest unACKed pkt,
advance window base tonext unACKed seq #
sender
pkt n in [rcvbase, rcvbase+N-1]
send ACK(n)
out-of-order: buffer
in-order: deliver (also deliver
buffered, in-order pkts),
advance window to next not-
yet-received pkt
pkt n in [rcvbase-N,rcvbase-1]
ACK(n)
otherwise:
ignore
receiver
Selective repeatSelective repeat
Selective repeat in actionSelective repeat in action
-
8/2/2019 chp3.ppt_0
62/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6262
Selective repeat in actionSelective repeat in action
Selective repeat: dilemmaSelective repeat: dilemma
-
8/2/2019 chp3.ppt_0
63/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6363
Example: seq #s: 0, 1, 2, 3
window size=3
receiver sees nodifference in twoscenarios!
incorrectly passesduplicate data as newin (a)
Q: what relationship
between seq # size and
Selective repeat: dilemmaSelective repeat: dilemma
Chapter 3 outlineChapter 3 outline
-
8/2/2019 chp3.ppt_0
64/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6464
Chapter 3 outlineC p e 3 ou e
3. Introduction
3.1 Transport-layerservices
3.2 Multiplexing and
demultiplexing 3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer 3.5 Connection-
oriented transport:TCP segment structure
reliable data transfer
flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
TCP: OverviewTCP: Overview RFCs: 793, 1122, 1323, 2018, 2581RFCs: 793, 1122, 1323, 2018, 2581
-
8/2/2019 chp3.ppt_0
65/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6565
full duplex data: bi-directional data flow in same
connection MSS: maximum segment size
connection-oriented: handshaking (exchange of control
msgs) inits sender, receiver statebefore data exchange
flow controlled: sender will not overwhelm receiver
no delay or bandwidth guarantee
point-to-point: one sender, one receiver Reliable:
guaranteed arrival no error in order delivery
in-order byte stream: no message boundaries
pipelined: TCP congestion and flow control set
window size send & receive buffersProcess
writes dataProcess
writes data
TCPsendbuffer
TCPsendbuffer
SocketSocket
Processreads data
Processreads data
TCPreceivebuffer
TCPreceivebuffer
SocketSocketsegment segment
TCP: OverviewTCP: Overview RFCs: 793, 1122, 1323, 2018, 2581RFCs: 793, 1122, 1323, 2018, 2581
TCP Reliable Data Transfer
-
8/2/2019 chp3.ppt_0
66/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6666
TCP provides reliable data transfer service on topof IPs unreliable service,
Cumulative ACKs,
Single retransmission timer, When the receiver receives out-of-order,
segments, it buffers them and re-ACK the last in-order data,
The sender retransmits at timeout or receivingduplicate ACKs,
Somewhere between Go-back-N and Selective
Repeat.
Chapter 3 outlineChapter 3 outline
-
8/2/2019 chp3.ppt_0
67/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6767
pp
3. Introduction 3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing 3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer 3.5 Connection-oriented
transport: TCP
segment structure
reliable data transfer
flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
TCP Segment StructureTCP Segment Structure
-
8/2/2019 chp3.ppt_0
68/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6868
gg
seq # is byte-stream number of firstdata byte in segment
URG: urgent data (generally not used)
ACK: ACK #valid
PSH: push data now
(generally not used)
RST, SYN, FIN:
connection estab
(setup, teardown
commands)
# bytes
rcvr willing
to accept
TCP checksum
(as in UDP)
Maximum Segment Size, window scaling factor,
Time-stamping, maximum segment length,
RFCs: 854, 1323
Header Length
[4Bytes]
TCP Segment StructureTCP Segment Structure
-
8/2/2019 chp3.ppt_0
69/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-6969
source port # dest port #
32 bits
application
data(variable length)
sequence number
acknowledgement number
Receive window
Urg data pnterchecksum
FSRPAUhead
len
not
used
Options (variable length)
URG: urgent data
(generally not used)
ACK: ACK #
valid
PSH: push data now
(generally not used)RST, SYN, FIN:
connection estab
(setup, teardown
commands)
# bytes
rcvr willingto accept
TCP checksum
(as in UDP)
Maximum Segment Size,
window scaling factor,
Time-stamping,
maximum segment length,
RFCs: 854, 1323
[4Bytes]
seq # is byte-
stream number
of first data
byte in
segment
gg
TCP Segment Structure (con.)TCP Segment Structure (con.)
-
8/2/2019 chp3.ppt_0
70/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7070
applicatio
ntransport
rdt_send(data)
data
6000 B
(a) 6000 Byte
data
passed to TCP
Seq=001
Seq=1001
Seq=200
1
Se
q=3001
Seq=4001
Seq=5001
Byte
data
1 2 1001 2001 3001 4001
5001
(b) Data is broken into 6 1000-Byte-segments.
TCP Header
g ( )g ( )
TCP seq#s and Ack#sTCP seq#s and Ack#s
-
8/2/2019 chp3.ppt_0
71/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7171
Seq. #s:
byte streamnumber of firstbyte in segmentsdata
ACKs: seq # of next byte
expected fromother side
cumulative ACKQ: how receiver handles
out-of-order segments
A: TCP spec doesnt
say, it is up to
Host A Host BSeq=42,Ack=79,data=C
Seq=79,A
ck=43,data=C
Seq=43,Ack=80
User
types
C
host ACKs
receipt
of echoed
C
host ACKs
receipt of
C, echoesback C
timesimple telnet scenariosimple telnet scenario
qq
TCP Round Trip Time and TimeoutTCP Round Trip Time and Timeout
-
8/2/2019 chp3.ppt_0
72/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7272
Q: how to set TCPtimeout value?
longer than RTT but RTT varies
too short: prematuretimeout
unnecessaryretransmissions
too long: slow reaction
to segment loss
Q: how to set TCPtimeout value?
longer than RTT but RTT varies
too short: prematuretimeout
unnecessaryretransmissions
too long: slow reactionto segment loss
Q: how to estimate RTT?
SampleRTT: measured timefrom segment transmission
until ACK receipt ignore retransmissions
SampleRTT will vary, want
estimated RTT smoother average several recent
measurements, not justcurrent SampleRTT
Q: how to estimate RTT?
SampleRTT: measured timefrom segment transmission
until ACK receipt ignore retransmissions
SampleRTT will vary, want
estimated RTT smoother average several recent
measurements, not justcurrent SampleRTT
TCP uses a timeout/retransmit mechanism to recover from lost segment.TCP uses a timeout/retransmit mechanism to recover from lost segment.
pp
-
8/2/2019 chp3.ppt_0
73/220
Request for Comments: 2988, Nov 2000Request for Comments: 2988, Nov 2000
-
8/2/2019 chp3.ppt_0
74/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7474
q ,q
Until a round-trip time (RTT) measurement hasbeen made for a segment sent between the senderand receiver, the sender should set RTO 3 secs.
When the first RTT measurement SampleRTTismade, the host must set
1. StimatedRTTSampleRTT
2. DevRTTSampleRTT/23. RTO StimatedRTT+ max (G, 4DevRTT).
Experience has shown that finer clock granularities (G 100 msec)perform somewhat better than more coarse granularities.
Request for Comments: 2988, Nov 2000Request for Comments: 2988, Nov 2000
-
8/2/2019 chp3.ppt_0
75/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7575
q ,q ,
When a subsequent RTT measurement SampleRTT' is made, ahost must set
1. DevRTT(1 - )DevRTT + |StimatedRTT-SampleRTT'|
2. StimatedRTT (1 - ) StimatedRTT+ SampleRTT
3. RTO StimatedRTT+ max (G, 4 DevRTT)
The value of StimatedRTTused in the update to DevRTTis its
value before updating StimatedRTTitself using the second
assignment.
Whenever RTO is computed, if it is less than 1 second then the RTO
should be rounded up to 1 second.
The above should be computed using =1/8 and =1/4.
Example RTT estimationExample RTT estimation
-
8/2/2019 chp3.ppt_0
76/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7676
150
RTT(milisec)
350
300
100
200
250
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
n=time (seconds)
SampleRTT
EstimatedRTT
Chapter 3 outlineChapter 3 outline
-
8/2/2019 chp3.ppt_0
77/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7777
p
3. Introduction 3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing 3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer 3.5 Connection-oriented
transport: TCP segment structure
reliable data transfer flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
TCP reliable data transferTCP reliable data transfer
-
8/2/2019 chp3.ppt_0
78/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7878
TCP creates rdtservice on top of IPsunreliable service
Pipelined segments
Cumulative acks TCP uses single
retransmission timer
TCP is a GBN styleprotocol. RFC 2018propose a SelectiveRepeat style for TCP.
TCP creates rdtservice on top of IPsunreliable service
Pipelined segments
Cumulative acks TCP uses single
retransmission timer
TCP is a GBN styleprotocol. RFC 2018propose a SelectiveRepeat style for TCP.
Retransmissions aretriggered by: timeout events
duplicate acks
Initially considersimplified TCP sender: ignore duplicate acks
ignore flow control,
congestion control
Retransmissions aretriggered by: timeout events
duplicate acks
Initially considersimplified TCP sender: ignore duplicate acks
ignore flow control,
congestion control
TCP sender events:TCP sender events:
-
8/2/2019 chp3.ppt_0
79/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-7979
data rcvd from app:
Create segment withseq #
seq # is byte-streamnumber of first data
byte in segment start timer if not
already running (thinkof timer as for oldestunacked segment)
expiration interval:RTO
[TimeOutInterval]
data rcvd from app:
Create segment withseq #
seq # is byte-streamnumber of first data
byte in segment start timer if not
already running (thinkof timer as for oldestunacked segment)
expiration interval:RTO
[TimeOutInterval]
timeout:
retransmit segmentthat caused timeout
restart timer
Ack rcvd:
If acknowledgespreviously unackedsegments
update what is known tobe acked
start timer if there areoutstanding segments
timeout:
retransmit segmentthat caused timeout
restart timer
Ack rcvd:
If acknowledgespreviously unackedsegments
update what is known tobe acked
start timer if there areoutstanding segments
TCP SenderTCP Sender(simplified)(simplified)
-
8/2/2019 chp3.ppt_0
80/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-8080
Comment:
SendBase-1: lastcumulatively
acked byte
Example:
SendBase-1 = 71y= 73, so the rcvr
wants 73+ ;
y > SendBase, so
that new data is
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) {
switch(event)
event: data received from application abovecreate TCP segment with sequence number NextSeqNumif (timer currently not running) start timerpass segment to IPNextSeqNum = NextSeqNum + length(data)
event: timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event: ACK received, with ACK field value of y
if (y > SendBase) {SendBase = yif (there are currently not-yet-acknowledged segments)
start timer}
} /* end of loop forever */
NextSeqNum = InitialSeqNumSendBase = InitialSeqNum
loop (forever) {
switch(event)
event: data received from application abovecreate TCP segment with sequence number NextSeqNumif (timer currently not running) start timerpass segment to IPNextSeqNum = NextSeqNum + length(data)
event: timer timeoutretransmit not-yet-acknowledged segment with
smallest sequence numberstart timer
event: ACK received, with ACK field value of y
if (y > SendBase) {SendBase = yif (there are currently not-yet-acknowledged segments)
start timer}
} /* end of loop forever */
TCP: retransmission schemesTCP: retransmission schemes
-
8/2/2019 chp3.ppt_0
81/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-8181
Ack=25001Win=000
Ack=25001Win=000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2122 2324 25 26
120010001
A data segment
1,2,3. .., 1000[B]
Win= RcvWindow
Win = 4000 [B]Win = 4000 [B]Seq=1Seq=1Ack=4001
Win=10000
Ack=4001
Win=10000
4001
Ack=12001
Win=5000
Ack=12001
Win=5000
TimeOut12001
Ack=18001Win=7000
Ack=18001
Win=7000
18001
Ack=20001
Win=5000
Ack=20001
Win=5000
20001
Host BHost A
ACKs from B is not detailed
TCP ACK generationTCP ACK generation[RFC 1122, RFC 2581]*[RFC 1122, RFC 2581]*
-
8/2/2019 chp3.ppt_0
82/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-8282
Event at Receiver TCP Receiver action
Arrival of in-order segment
with
expected seq #. All data up to
expected seq # alreadyACKed.
Delayed ACK. Wait up to 500ms
for next segment. If no next
segment,
send ACK.
Arrival of in-order segment
with
expected seq #. One other
segment has ACK pending.
Immediately send single cumulative
ACK, ACKing both in-order
segments.
Arrival of out-of-order Immediately send duplicate ACK,
TCP retransmission (Normal ACK)*TCP retransmission (Normal ACK)*
-
8/2/2019 chp3.ppt_0
83/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-8383
Seq=1,1000bytesdata
ACK=2001
Host B
Seq=4001
ACK=6
001
time
Host A
Seq=1001Seq=2001Seq=
3001
T
-
8/2/2019 chp3.ppt_0
84/220
TCP retransmission (Premature ACK)*TCP retransmission (Premature ACK)*
-
8/2/2019 chp3.ppt_0
85/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-8585
Seq=1,1000bytesdata
ACK=
2001
Win2
Host BHost A
Seq=1001Seq=2001Seq=3001
T
-
8/2/2019 chp3.ppt_0
86/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-8686
Sender keeps
transmission
based on
Win&SendBase
T
-
8/2/2019 chp3.ppt_0
87/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-8787
TCP receiver sends an immediate ACK if it receivesan out-of-order segment.
This is a duplicate ACK.
This dupe ACK informs the sender and tells it whatsequence number the receiver expected.
Its unclear whether dupe ACKs indicate loss orsimply packet re-ordering on the network.
But, multiple duplicate ACKs probably indicate loss.
Fast RetransmitFast Retransmit
-
8/2/2019 chp3.ppt_0
88/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-8888
Time-out period oftenrelatively long: long delay before
resending lost packet
Detect lost segmentsvia duplicate ACKs. Sender often sends
many segments back-to-back
If segment is lost,there will likely be manyduplicate ACKs.
If sender receives 3ACKs for the samedata, it supposes thatsegment after ACKeddata was lost: fast retransmit: resend
segment before timerexpires
-
8/2/2019 chp3.ppt_0
89/220
Fast retransmit algorithm:Fast retransmit algorithm:
-
8/2/2019 chp3.ppt_0
90/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9090
ent: ACK received, with ACK field value of yif (y > SendBase) {
SendBase = yif (there are currently not-yet-acknowledged segments)
start timer}
else {increment count of dup ACKs received for yif (count of ACKs received for y is 3) {
resend segment with sequence number y}
a duplicate ACK for
already ACKed segment
fast retransmit
Chapter 3 outlineChapter 3 outline
-
8/2/2019 chp3.ppt_0
91/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9191
3. Introduction 3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing 3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer 3.5 Connection-oriented
transport: TCP segment structure
reliable data transfer
flow control connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
TCP Flow ControlTCP Flow Control
-
8/2/2019 chp3.ppt_0
92/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9292
receive side of TCP
connection has a receivebuffer: RcvBuffer
Sender wont overflowreceivers buffer by
transmitting too much,
too fast. speed-matching
service: matching thesend rate to thereceiving apps drainrate.
App process may beslow at reading frombuffer.
TCP
data
in buffer
spare
buffer
data from IP
RcvW
indow
data to app proc.
RcvBuffer
TCP Flow Control: how it worksTCP Flow Control: how it works
-
8/2/2019 chp3.ppt_0
93/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9393
(Suppose TCP receiver discards out-of-order segments)
spare room in buffer =
Rcvr advertises spareroom by including valueof RcvWindow insegments
Sender limits unACKeddata to RcvWindow guarantees receive
buffer doesnt overflow
RcvWindow = RcvBuffer - [LastByteRcvd LastByteRead]
TCP
data
in buffer
spare
buffer
data from IP
RcvWind
ow
data to app proc.
RcvBuffer
Chapter 3 outlineChapter 3 outline
-
8/2/2019 chp3.ppt_0
94/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9494
3. Introduction 3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing 3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer 3.5 Connection-oriented
transport: TCP segment structure
reliable data transfer
flow control
connection management
3.6 Principles of congestioncontrol
3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
TCP Connection ManagementTCP Connection Management
-
8/2/2019 chp3.ppt_0
95/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9595
Recall:TCP sender, receiverestablish connectionbefore exchanging datasegments
initialize TCP variables:
seq. #s
buffers, flow controlinfo (e.g. RcvWindow)
client:connection initiatorSocket clientSocket = new
Socket("hostname","portnumber");
server:contacted by clientSocket connectionSocket =welcomeSocket.accept();
Three way handshake:
Step 1:client host sends TCPSYN segment to server
specifies initial seq #
no data
Step 2:server host receivesSYN, replies with SYNACKsegment
server allocates buffers
specifies server initial seq.#
Step 3: client receives SYNACK,replies with ACK segment,
which may contain data
TCP Connection Management (cont.)TCP Connection Management (cont.)
-
8/2/2019 chp3.ppt_0
96/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9696
client
SYN=1,ClientISN
server
ACK=1,S
YN=1,Se
r.ISN,Win
=X
ACK=1,Win=Y,SN=ISN
connection requestnopayload
connection accepted
nopayload
Payload(optional)
connection ack.
time time
Three way handshake:
Win= RcvWindow
ISN= Initial Sequence Number
TCP Connection Management (cont.)TCP Connection Management (cont.)
-
8/2/2019 chp3.ppt_0
97/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9797
Closing a connection:Either of the two processes
participating in a TCPconnection can end theconnection.
Example
client closes socket:ClientSocket.close();
Step 1: client end systemsends TCP FIN controlsegment to server.
client
FIN=1
server
ACK=1
ACK=1
close
close
closedtimedw
ait
30
,60or120sec.
FIN=1mean
s:no
moredat a
from
sender
FIN=1
time
Final ACK lossFinal ACK loss
-
8/2/2019 chp3.ppt_0
98/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9898
If clients final ACK is lostthe server resends ACKand FIN.
If the resented ACK andFIN reaches client before
timed wait, client resendsits final ACK and waitsagain.
After timed out all
resources on client sidereleased (including portnumbers).
client
FIN=1
server
ACK=1
ACK=1
close
close
timed
wait
30
,60or
120sec.
FIN=1
time
FIN=1ACK=1
ACK=1The time is implementation-dependent.
TCP Connection Management (cont.)TCP Connection Management (cont.)
-
8/2/2019 chp3.ppt_0
99/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-9999
Step 2: server receives FIN, replies
with ACK. Closes connection, sends FIN.
Step 3: client receives FIN, replies with ACK. Enters timed wait - will respond with ACK to received FINs
Step 4: server, receives ACK. Connection closed.
Note:with small modification, can handle
simultaneous FINs.
TCP Connection Management (cont)TCP Connection Management (cont)
-
8/2/2019 chp3.ppt_0
100/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-100100
TCP client
lifecycle
TCP server
lifecycle
State Transition DiagramState Transition Diagram(start)
-
8/2/2019 chp3.ppt_0
101/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-101101
CLOSEDCLOSED
LISTENLISTEN
SYN_RCVDSYN_RCVD SYN_SENTSYN_SENT
ESTABLISHED
CLOSE_WAITCLOSE_WAIT
LAST_ACKLAST_ACKCLOSINGCLOSING
TIME_WAITTIME_WAIT
FIN_WAIT_2FIN_WAIT_2
FIN_WAIT_1FIN_WAIT_1
(Passive open)
SYN + ACK/ACKACK/-
Close/FIN
FIN/ACKClose/FIN
timed wait30,60.120 sec
FIN/ACK
ACK/-
ACK/-
Close /FIN
Close/-
Send/SYN
ACK+FIN/AC
K
SYN/SYN + ACK
FIN/ACK
ACK/-
CLOSEDCLOSED
Close/- (Active open)
Connect/SYN
(Passive
close)
(Activeclose)
(start)
(back to start)
Timeout/-
EVENT/ACTIONEVENT/ACTIONEVENT/ACTIONEVENT/ACTION
Open/-
Normal path for a clientNormal path for a client
Normal path for a serverNormal path for a server
Unusual eventUnusual event (Step 1 of the 3-way handshake)
RST/-
SYN/SYN + ACK(Step 2 of the 3-way handshake)
(Step 3 of the 3-way handshake)
CLOSED activi
TCP State There are several things that must beremembered about a connection. To
-
8/2/2019 chp3.ppt_0
102/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-102102
LISTEN
SYN_RCVD
ESTABLISHED
CLOSING
TIME_WAIT
SYN_SENT
FIN_WAIT_1
CLOSE_WAIT
LAST_ACK
FIN_WAIT_2
iveopen,createTCB
sendSY
N
passive open,create TCB
sendSYN
receiveS
YN,
sendSYN,
ACK
receiv
e
RST
receiveACK receiveSYN,ACK,
sendACKapplic.
close,sendFIN
applic.
close,
sendF
IN
receiveFIN,sendACK
receive FIN
send ACK
receiveFIN,ACK
sendACKreceive
ACK
receive FIN
send ACK
receive
ACK
applic. close
sendFIN
receiveACK
applic. closeor timeout,delete TCB
2MSL timeoutdelete TCB
receive SYN,send ACK
applic.closediagram
store this information we imagine that
there is a data structure called a
Transmission Control Block (TCB).
Chapter 3 outlineChapter 3 outline
-
8/2/2019 chp3.ppt_0
103/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-103103
3. Introduction 3.1 Transport-layer
services
3.2 Multiplexing and
demultiplexing 3.3 Connectionless
transport: UDP
3.4 Principles of reliable
data transfer 3.5 Connection-oriented
transport: TCP segment structure
reliable data transfer
flow control
connection management
3.6 Principles ofcongestion control 3.7 TCP congestion control
3.8 Multimedia Stream & TCP
3.9 TCP fairness 3.10 TCP modeling
3.11 http modeling
Principles of Congestion ControlPrinciples of Congestion Control
-
8/2/2019 chp3.ppt_0
104/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-104104
Congestion: too many sources sending too much data too fastfor networkto handle and competing for bottleneckbandwidth
Two common approaches:
rate-based: control rate of traffic (e.g., token bucket) window-based: limit number of unacknowledged packets
window size controls rate,
Flow control = prevents end-system buffer overflow
window-based control can be used for both.
source1
source2
source3
sink2
sink1
sink3
100Mbs100Mbps
100Mbps
10Mbps 100Mbps
10Mbps1.5Mbpsbottleneck
Congestion: A Close-up ViewCongestion: A Close-up View
-
8/2/2019 chp3.ppt_0
105/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-105105
knee point after which throughput increases very slowly delay increases fast
cliff point after which
throughput starts to decreasevery fast to zero (congestioncollapse)
delay approaches infinity
Note (in an M/M/1 queue) delay = 1/(1 utilization)
Delay
Offered
Load
Throughput
knee cliff
congestion
collapse
packet
loss
Offered
Load
Congestion Control vs. Congestion AvoidanceCongestion Control vs. Congestion Avoidance
Congestion Control vs. Congestion AvoidanceCongestion Control vs. Congestion Avoidance
-
8/2/2019 chp3.ppt_0
106/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-106106
Congestion control goal Stay left of cliff
Keeps network operating atfull capacity, but minimizespacket loss maximizegoodput
Congestion avoidance goal
stay left of knee Right of cliff:
Congestion collapse
Offered
Load
Throughput
knee cliff
congestion
collapse
packet
loss
Congestion CollapseCongestion Collapse
-
8/2/2019 chp3.ppt_0
107/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-107107
Definition: Increase in network load results in decrease
ofuseful work done Many possible causes
Spurious retransmissions of packets still in flight
Undelivered packets
Packets consume resources and are dropped elsewhere in network
Fragments
Mismatch of transmission and retransmission units
Control traffic Large percentage of traffic is for control
Stale or unwanted packets
Packets that are delayed on long queues
Causes/Costs of Congestion: scenario 1Causes/Costs of Congestion: scenario 1
-
8/2/2019 chp3.ppt_0
108/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-108108
Applications in A and B sending into connection at an
average rate ofin bytes/sec. Original" data: sent into the socket only once.
Simple transport protocol: no error recovery
(retransmission), flow control, or congestion control.
unlimited shared
output link buffers
Host A in: original datarate [B/s]
Host B
out
Shared link
R[B/s]
Causes/Costs of Congestion: scenario 1(cont)Causes/Costs of Congestion: scenario 1(cont)
-
8/2/2019 chp3.ppt_0
109/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-109109
(a) Per-connection throughput.
[Byte/s]
[Byte/s]
out
(throughput)
in (offered load)R/2
R/2
(b) Per-connection delay.
[Byte/s]
[Byte/s]
D
elay(ms)
in (offered load)R/2
out = in out = R/2
Scenario 2: Two Sender, a Router with Finite BuffersScenario 2: Two Sender, a Router with Finite Buffers
-
8/2/2019 chp3.ppt_0
110/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-110110
one router, finitebuffers
sender retransmission of lost packet
finite shared output link
buffers
Host A in : original data
Host B
outin: original data, plus
retransmitted data (offered loadto network)
Scenario 2: (cont)Scenario 2: (cont)
-
8/2/2019 chp3.ppt_0
111/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-111111
Each connection is reliable. If a packet containing atransport-level segment is dropped at the router, itwill eventually be retransmitted by the sender.
in [Bytes/sec] = rate at which the application sends
original data into the socket.
in [Bytes/sec] = offered load to the network(containing original data orretransmitted data).
[Byte/s]
Scenario 2:Scenario 2: retransmission due to lost packetretransmission due to lost packet ((perfect retransmission)perfect retransmission)
-
8/2/2019 chp3.ppt_0
112/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-112112
[Byte/s]
[Byte/s]
in (offered load)R/2
out
(throu
ghput)
R/2
R/3
R/4
Example: At in=R/2 --> out=R/3
in=R/2 = 0.333R Bytes/sec (on average) original data +
0.167R Bytes/sec (on average) retransmitted data.
Cost of a congested network: the sender must perform retransmissions inorder to compensate for dropped (lost) packets due to buffer overflow.
Scenario 2:Scenario 2: retransmission due to delayed (not lost) packetretransmission due to delayed (not lost) packet
-
8/2/2019 chp3.ppt_0
113/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-113113
retransmission due to delayed (not lost) packet. Each
packet is assumed to be forwarded (on average) twice by
the router.
out
(throughput)
in (offered load)R/2
R/2
R/3
R/4
[Byte/s]
[Byte/s]
Scenario 2:Scenario 2: retransmission due to delayed (not lost) packetretransmission due to delayed (not lost) packet
-
8/2/2019 chp3.ppt_0
114/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-114114
Sender timeouts and retransmit a packet that has beendelayed in the queue, but not yet lost.
Both the original data packet and the retransmission mayreach the receiver.The receiver will discard the retransmission.
The "work" done by the router in forwarding theretransmitted copy of the original packet was "wasted" as thereceiver will have already received the original copy of thispacket.
Cost of a congested network: unneeded retransmissions bythe sender in the face of large delays may cause a router touse its link bandwidth to forward unneeded copies of apacket.
-
8/2/2019 chp3.ppt_0
115/220
Causes/Costs of Congestion: scenario 3(Cont)Causes/Costs of Congestion: scenario 3(Cont)
-
8/2/2019 chp3.ppt_0
116/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-116116
Extremely small
in: buffer overflows are rare, andout=in Larger in: , the overflows are still rare. Thus, an
increase in in results in an increase in out .
Causes/Costs of Congestion: scenario 3(Cont)Causes/Costs of Congestion: scenario 3(Cont)
-
8/2/2019 chp3.ppt_0
117/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-117117
Extremely large in (and hence in): A-C traffic arriving to
R2 is at most R. If in is extremely large for all connections, then the arrival
rate of B-D traffic at R2 can be much larger than that of the
A-C traffic.
As the offered load approaches infinity, an empty buffer atR2 is immediately filled by a B-D packet, and the throughput
of the A-C connection at R2 goes to zero. When packet dropped (in R2), any upstream (R1) transmission
capacity used for that packet was wasted!
As the offered load approaches infinity, the throughput goes to
zero.
When packet dropped (in R2), any upstream (R1) transmission
capacity used for that packet was wasted!
As the offered load approaches infinity, the throughput goes to
zero.
Scenario 3 (cont)Scenario 3 (cont)
-
8/2/2019 chp3.ppt_0
118/220
[email protected]@iust.ac.ir ITransport LayerITransport Layer 3-3-118118
[Byte/s]
[Byte/s]
out
(throughput)
in (offered load)R/2
R/2
A-C and B-D traffic compete at router R2 for the buffer, A-C
traffic that successfully gets through R2 becomes smaller and
smaller as the offered load from B-D gets larger and larger.
Host A
out
Host B
R1