21
1 Fundamentals of Data Communication and Networking Chapter 3 T L Transport Layer Computer Networking: A Top Down Approach F t i th It t A note on the use of these ppt slides: We’re making these slides freely available to all (faculty, students, readers). They’re in PowerPoint form so you can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: Transport Layer 3-1 Featuring the Internet Jim Kurose, Keith Ross Addison-Wesley following: If you use these slides (e.g., in a class) in substantially unaltered form, that you mention their source (after all, we’d like people to use our book!) If you post any slides in substantially unaltered form on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material. Thanks and enjoy! JFK/KWR All material copyright 1996-2011 J.F Kurose and K.W. Ross, All Rights Reserved Chapter 3: Transport Layer Our goals: understand principles bh d learn about transport l t l i th behind transport layer services: multiplexing/demultipl exing reliable data transfer flow control congestion control layer protocols in the Internet: UDP: connectionless transport TCP: connection-oriented transport TCP congestion control Transport Layer 3-2 congestion control

Chapter 3 T LTransport Layer - Redes de Computadores

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

1

Fundamentals of Data Communication and Networking

Chapter 3T LTransport Layer

Computer Networking: A Top Down Approach F t i th I t t

A note on the use of these ppt slides:We’re making these slides freely available to all (faculty, students, readers). They’re in PowerPoint form so you can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following:

Transport Layer 3-1

Featuring the Internet

Jim Kurose, Keith RossAddison-Wesley

following: If you use these slides (e.g., in a class) in substantially unaltered form, that you mention their source (after all, we’d like people to use our book!) If you post any slides in substantially unaltered form on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material.

Thanks and enjoy! JFK/KWR

All material copyright 1996-2011J.F Kurose and K.W. Ross, All Rights Reserved

Chapter 3: Transport LayerOur goals: understand principles

b h d learn about transport

l t l i th behind transport layer services: multiplexing/demultipl

exing reliable data transfer flow control congestion control

layer protocols in the Internet: UDP: connectionless

transport TCP: connection-oriented

transport TCP congestion control

Transport Layer 3-2

congestion control CP congest on control

2

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-3

reliable data transfer congest on control

Transport services and protocols provide logical communication

between app processes running on different hosts

applicationtransportnetworkdata linkphysical

networkd t linkrunning on different hosts

transport protocols run in end systems send side: breaks app

messages into segments, passes to network layer

rcv side: reassembles segments into messages

physical

application

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

data linkphysicalnetwork

data linkphysical

Transport Layer 3-4

segments into messages, passes to app layer

more than one transport protocol available to apps Internet: TCP and UDP

applicationtransportnetworkdata linkphysical

3

Transport vs. network layer

network layer: logical communication communication between hosts

transport layer: logical communication between processes relies on, enhances,

network layer services

Transport Layer 3-5

y

Internet transport-layer protocols

reliable, in-order delivery (TCP)

l

applicationtransportnetworkdata linkphysical

networkd t link

congestion control flow control connection setup

unreliable, unordered delivery: UDP no-frills extension of

“best effort” IP

physical

application

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

data linkphysicalnetwork

data linkphysical

Transport Layer 3-6

best-effort IP services not available:

delay guarantees bandwidth guarantees

applicationtransportnetworkdata linkphysical

4

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-7

reliable data transfer congest on control

Multiplexing/demultiplexing

delivering received segmentsto correct socket

Demultiplexing at rcv host:gathering data from multiplesockets, enveloping data with h d (l d f

Multiplexing at send host:

application

transport

P1 application

transport

t k

application

transport

P2P3 P4P1

= process= socket

to correct socket header (later used for demultiplexing)

Transport Layer 3-8

network

link

physical

network

link

physical

network

link

physical

host 1 host 2 host 3

5

How demultiplexing works host receives IP datagrams

each datagram has source IP address, destination IP dd source port # dest port #

32 bits

address each datagram carries 1

transport-layer segment each segment has source,

destination port number host uses IP addresses & port

numbers to direct segment to

source port # dest port #

applicationdata

other header fields

Transport Layer 3-9

appropriate socket (message)

TCP/UDP segment format

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-10

reliable data transfer congest on control

6

UDP: User Datagram Protocol [RFC 768]

“no frills,” “bare bones” Internet transport protocol

Why is there a UDP?protocol

“best effort” service, UDP segments may be: lost delivered out of order

to app connectionless:

no connection establishment (which can add delay)

simple: no connection state at sender, receiver

small segment header no congestion control: UDP

Transport Layer 3-11

no handshaking between UDP sender, receiver

each UDP segment handled independently of others

gcan blast away as fast as desired

UDP: more often used for streaming

multimedia apps loss tolerant source port # dest port #

32 bits

loss tolerant rate sensitive

other UDP uses DNS SNMP

reliable transfer over UDP: add reliability at

source port # dest port #

Applicationdata

length checksumLength, in

bytes of UDPsegment,including

header

Transport Layer 3-12

add reliability at application layer application-specific

error recovery!

(message)

UDP segment format

7

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

segment

Sender: treat segment contents

as sequence of 16-bit integers

checksum: addition (1’s complement sum) of

Receiver: compute checksum of

received segment check if computed checksum

equals checksum field value: NO - error detected

Transport Layer 3-13

p )segment contents

sender puts checksum value into UDP checksum field

NO error detected YES - no error detected.

But maybe errors nonetheless? More later ….

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-14

reliable data transfer congest on control

8

Rdt2.0: channel with bit errors

underlying channel may flip bits in packet checksum to detect bit errors

th ti h t f 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):

Transport Layer 3-15

new mechanisms in rdt2.0 (beyond rdt1.0): error detection receiver feedback: control msgs (ACK,NAK) rcvr->sender

rdt2.0 has a fatal flaw!

What happens if ACK/NAK corrupted?

Handling duplicates: sender retransmits current ACK/NAK corrupted?

sender doesn’t know what happened at receiver!

can’t just retransmit: possible duplicate

sender retransmits current pkt if ACK/NAK garbled

sender adds sequence number to each pkt

receiver discards (doesn’t deliver up) duplicate pkt

Transport Layer 3-16

Sender sends one packet, then waits for receiver response

stop and wait

9

rdt2.2: a NAK-free protocol

same functionality as rdt2.1, using ACKs only instead of NAK receiver sends ACK for last pkt 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-17

rdt3.0: channels with errors and loss

New assumption:underlying channel can

Approach: sender waits “reasonable” amount of underlying channel can

also lose packets (data or ACKs) checksum, seq. #, ACKs,

retransmissions will be of help, but not enough

reasonable amount of time for ACK

retransmits if no ACK received in this time

if pkt (or ACK) just delayed (not lost): retransmission will be

duplicate but use of seq

Transport Layer 3-18

duplicate, but use of seq. #’s already handles this

receiver must specify seq # of pkt being ACKed

requires countdown timer

10

Pipelined protocolsPipelining: sender allows multiple, “in-flight”, yet-to-

be-acknowledged pkts range of sequence numbers must be increased range of sequence numbers must be increased buffering at sender and/or receiver

Transport Layer 3-19

Two generic forms of pipelined protocols: go-Back-N, selective repeat

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

Transport Layer 3-20

N consecutive seq #’s again limits seq #s of sent, unACKed pkts

11

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-21

reliable data transfer congest on control

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

full duplex data: bi-directional data flow

point-to-point: one sender, one receiver f

in same connection MSS: maximum segment

size connection-oriented:

handshaking (exchange of control msgs) init’s sender receiver state

, reliable, in-order byte

steam: no “message boundaries”

pipelined: TCP congestion and flow

control set window size

Transport Layer 3-22

sender, receiver state before data exchange

flow controlled: sender will not

overwhelm receiver

send & receive buffers

socketdoor

TCPsend buffer

TCPreceive buffer

socketdoor

segment

applicationwrites data

applicationreads data

12

TCP segment structure

source port # dest port #

32 bits

sequence number

URG: urgent data (generally not used)

ACK ACK #

countingby bytes of dataq m

acknowledgement numberReceive windowUrg data pnterchecksum

FSRPAUheadlen

notused

Options (variable length)

ACK: ACK #valid

PSH: push data now(generally not used)

RST, SYN, FIN:connection estab(setup, teardown

d )

# bytes rcvr willingto accept

of data(not segments!)

Transport Layer 3-23

applicationdata

(variable length)

commands)

Internetchecksum

(as in UDP)

TCP seq. #’s and ACKsSeq. #’s:

byte stream “number” of first

Host A Host B

Usertbyte in segment’s

dataACKs:

seq # of next byte expected from other side

cumulative ACK

types‘C’

host ACKsreceipt

host ACKsreceipt of‘C’, echoes

back ‘C’

Transport Layer 3-24

cumulat ve A KQ: how receiver handles

out-of-order segments A: TCP spec doesn’t

say, - up to implementor

pof echoed

‘C’

timesimple telnet scenario

13

TCP Round Trip Time and Timeout

Q: how to set TCP timeout value?l h RTT

Q: how to estimate RTT? SampleRTT: measured time from

segment transmission until ACK longer than RTT but RTT varies

too short: premature timeout unnecessary

retransmissions too long: slow reaction

segment transmission until ACK receipt ignore retransmissions

SampleRTT will vary, want estimated RTT “smoother” average several recent

measurements, not just current SampleRTT

Transport Layer 3-25

to segment loss current SampleRTT

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

350

200

250

300

RTT

(mill

isec

onds

)

Transport Layer 3-26

100

150

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

time (seconnds)

SampleRTT Estimated RTT

14

TCP Round Trip Time and Timeout

Setting the timeout EstimtedRTT plus “safety margin”

large variation in EstimatedRTT -> larger safety margin first estimate of how much SampleRTT deviates from

EstimatedRTT:

DevRTT = (1-)*DevRTT +*|SampleRTT-EstimatedRTT|

(typically = 0 25)

Transport Layer 3-27

TimeoutInterval = EstimatedRTT + 4*DevRTT

(typically, = 0.25)

Then set timeout interval:

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-28

reliable data transfer congest on control

15

TCP reliable data transfer

TCP creates rdt service on top of IP’s

Retransmissions are triggered by:service on top of IP s

unreliable service Pipelined segments Cumulative acks TCP uses single

retransmission timer

triggered by timeout events duplicate acks

Initially consider simplified TCP sender: ignore duplicate acks ignore flow control,

Transport Layer 3-29

ignore flow control, congestion control

TCP sender events:data rcvd from app: Create segment with

seq #

timeout: retransmit segment

that caused timeoutq seq # is byte-stream

number of first data byte in segment

start timer if not already running (think of timer as for oldest

restart timerAck rcvd: If acknowledges

previously unacked segments update what is known to

Transport Layer 3-30

unacked segment) expiration interval: TimeOutInterval

update what is known to be acked

start timer if there are outstanding segments

16

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-31

reliable data transfer congest on control

TCP Flow Control

receive side of TCP connection has a

sender won’t overflowreceiver’s buffer by

transmitting too much

flow control

connection has a receive buffer:

speed-matching service: matching the send rate to the receiving app’s drain

transmitting too much,too fast

Transport Layer 3-32

receiving app s drain rate

app process may be slow at reading from buffer

17

TCP Flow control: how it works Rcvr advertises spare

room by including value f i

(Suppose TCP receiver discards out-of-order segments)

i b ff

of RcvWindow in segments

Sender limits unACKed data to RcvWindow guarantees receive

buffer doesn’t overflow

Transport Layer 3-33

spare room in buffer= RcvWindow

= RcvBuffer-[LastByteRcvd -LastByteRead]

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-34

reliable data transfer congest on control

18

TCP Connection ManagementRecall: TCP sender, receiver

establish “connection” before exchanging data segments

Three way handshake:Step 1: client host sends TCP

SYN segment to server initialize TCP variables:

seq. #s buffers, flow control

info (e.g. RcvWindow) client: connection initiator

Socket clientSocket = new Socket("hostname","port

specifies initial seq # no data

Step 2: server host receives SYN, replies with SYNACK segment server allocates buffers s ifi s s i iti l

Transport Layer 3-35

number");

server: contacted by clientSocket connectionSocket = welcomeSocket.accept();

specifies server initial seq. #

Step 3: client receives SYNACK, replies with ACK segment, which may contain data

TCP Connection Management (cont.)

Closing a connection: client server

client closes socket:clientSocket.close();

Step 1: client end system sends TCP FIN control segment to server

St 2

close

close

it

Transport Layer 3-36

Step 2: server receives FIN, replies with ACK. Closes connection, sends FIN. closed

tim

ed w

ai

19

TCP Connection Management (cont.)

Step 3: client receives FIN, replies with ACK

client serverreplies with ACK.

Enters “timed wait” -will respond with ACK to received FINs

Step 4: server, receives ACK. Connection closed.

closing

closing

it

Transport Layer 3-37

Note: with small modification, can handle simultaneous FINs.

closed

tim

ed w

aiclosed

TCP Connection Management (cont)

TCP clientlifecycle

TCP serverlifecycle

Transport Layer 3-38

20

Chapter 3 outline

3.1 Transport-layer services

3.5 Connection-oriented transport: TCPservices

3.2 Multiplexing and demultiplexing

3.3 Connectionless transport: UDP

3.4 Principles of reliable data transfer

transport TCP segment structure reliable data transfer flow control connection management

3.6 Principles of congestion control

Transport Layer 3-39

reliable data transfer congest on control

Principles of Congestion Control

Congestion: informally: “too many sources sending too much 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)

Transport Layer 3-40

g y (q g ff ) a top-10 problem!

21

Approaches towards congestion control

E d d ti N t k i t d

Two broad approaches towards congestion control:

End-end congestion control:

no explicit feedback from network

congestion inferred from end-system observed loss, delay

Network-assisted congestion control:

routers provide feedback to end systems single bit indicating

congestion (SNA, DECbit, TCP/IP ECN,

Transport Layer 3-41

y approach taken by TCP ATM)

explicit rate sender should send at

Chapter 3: Summary principles behind transport

layer services:l i l i multiplexing,

demultiplexing reliable data transfer flow control congestion control

instantiation and

Next: leaving the network

“edge” (application

Transport Layer 3-42

instantiation and implementation in the Internet UDP TCP

edge (application, transport layers)

into the network “core”