Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th...

35
Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 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 see the animations; and 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: If you use these slides (e.g., in a class) that you mention their source (after all, we’d like people to use our book!) If you post any slides 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-2012 J.F Kurose and K.W. Ross, All Rights Reserved he course notes are adapted for Bucknell’s CSCI 363 iannong Meng pring 2014

Transcript of Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th...

Page 1: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Application Layer 2-1

Chapter 3Transport

Layer

Computer Networking: A

Top Down Approach

6th edition Jim Kurose, Keith Ross

Addison-WesleyMarch 2012

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 see the animations; and 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: If you use these slides (e.g., in a class) that you mention their

source (after all, we’d like people to use our book!) If you post any slides 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-2012 J.F Kurose and K.W. Ross, All Rights Reserved

The course notes are adapted for Bucknell’s CSCI 363Xiannong MengSpring 2014

Page 2: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-2

Chapter 3 outline

3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data

transfer

3.5 connection-oriented transport: TCP segment

structure reliable data

transfer flow control connection

management3.6 principles of

congestion control

3.7 TCP congestion control

Page 3: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-3

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

full duplex data: bi-directional

data flow in same connection

MSS: maximum segment size

connection-oriented: handshaking

(exchange of control msgs) inits sender, receiver state before data exchange

flow controlled: sender will not

overwhelm receiver

point-to-point: one sender, one

receiver reliable, in-order

byte steam: no “message

boundaries” pipelined:

TCP congestion and flow control set window size

Page 4: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-4

TCP segment structure

source port # dest port #

32 bits

applicationdata

(variable length)

sequence number

acknowledgement number

receive window

Urg data pointerchecksum

FSRPAUheadlen

notused

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

countingby bytes of data(not segments!)

Internetchecksum

(as in UDP)

Page 5: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

TCP header file

The TCP header is defined in tcp.h in the directory of /usr/include/netinet/

See http://www.eg.bucknell.edu/~cs363/2014-spring/code/tcp.h

Transport Layer 3-5

Page 6: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-6

TCP seq. numbers, ACKs

sequence numbers:byte stream “number” of first byte in segment’s data

acknowledgements:seq # of next byte expected from other side

cumulative ACKQ: how receiver handles out-of-order segmentsA: TCP spec doesn’t say, - up to implementor

source port # dest port #

sequence number

acknowledgement number

checksum

rwnd

urg pointer

incoming segment to sender

A

sent ACKed

sent, not-yet ACKed(“in-flight”)

usablebut not yet sent

not usable

window size N

sender sequence number space

source port # dest port #

sequence number

acknowledgement number

checksum

rwnd

urg pointer

outgoing segment from sender

Page 7: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

TCP seq. numbers, ACKs (1) Assume A sends B a 500,000 bytes

file, and Maximum Segment Size (MSS) is 1,000 bytes, the first byte is numbered 0, B only sends ack, no other information

The file is segmented into 500 segments, 0-999, 1000-1999, … 499,000-

499,999 (seq, ack) from A to B would be (0,

n/a), (1000, n/a) …Transport Layer 3-7

Page 8: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

TCP seq. numbers, ACKs (2) If B also sends something data to

A, the acks can be “piggy-backed” in data segments

We may see the (seq, ack) between A and B as A(0, n/a), B(0, 1000), A(1000, 5), B(5,

2000), … Where B(0, 1000) means B is sending

packet starting from 0, and B has received packets up to 999 from A, expecting packet 1000 from A

A(0, n/a) means A is sending packets starting from 0, the ack field is not used because nothing has received from B yet

Transport Layer 3-8

Page 9: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

TCP seq. numbers, ACKs (3) Packets could arrive out of order,

for example A has received all the bytes from 0 through 535, and from 900 through 999, but missing packets between 536 and 899. How to handle? Two options Ack through 535, discard 900 through

999 Ack through 535, buffer 900 through

999 for later reassemble TCP standards didn’t specify what

to do. The application layer always sees

ordered data, nothing out-of-order is available to application.

Transport Layer 3-9

Page 10: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-10

TCP seq. numbers, ACKs

Usertypes

‘C’

host ACKsreceipt

of echoed‘C’

host ACKsreceipt of‘C’, echoesback ‘C’

simple telnet scenario

Host BHost A

Seq=42, ACK=79, data = ‘C’

Seq=79, ACK=43, data = ‘C’

Seq=43, ACK=80

Page 11: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-11

TCP round trip time, timeoutQ: how to set

TCP timeout value?

longer than RTT but RTT varies

too short: premature timeout, unnecessary retransmissions

too long: slow reaction to segment loss

Q: how to estimate RTT?

SampleRTT: measured time from segment transmission until ACK receipt ignore

retransmissions SampleRTT will vary,

want estimated RTT “smoother” average several

recent measurements, not just current SampleRTT

Page 12: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-12

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

100

150

200

250

300

350

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

time (seconnds)

RTT

(mill

isec

onds

)

SampleRTT Estimated RTT

EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT exponential weighted moving average influence of past sample decreases

exponentially fast typical value: = 0.125

TCP round trip time, timeout

RTT (

mill

iseco

nds)

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

sampleRTT

EstimatedRTT

time (seconds)

Page 13: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-13

EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT

TCP round trip time, timeout example

Packet # Estimate RTT (ms)

Sample RTT (ms)

20 10 40

21 14 42

22 18 35

23 20 38

24 23 …

= 0.125

Page 14: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-14

timeout interval: EstimatedRTT plus “safety margin” large variation in EstimatedRTT -> larger safety

margin estimate SampleRTT deviation from

EstimatedRTT:

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

TCP round trip time, timeout

(typically, = 0.25)

TimeoutInterval = EstimatedRTT + 4*DevRTT

estimated RTT “safety margin”

Page 15: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-15

TCP round trip time, timeout example

DevRTT = (1-0.25)*5 + 0.25*|38-20| = 9 ms

TimeoutInterval = EstimatedRTT + 4*DevRTT

estimated RTT “safety margin”

In our example:TimeoutInterval = 20 + 4 * 9 = 56 ms

Page 16: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-16

Chapter 3 outline

3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data

transfer

3.5 connection-oriented transport: TCP segment

structure reliable data

transfer flow control connection

management3.6 principles of

congestion control

3.7 TCP congestion control

Page 17: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-17

TCP reliable data transfer TCP creates rdt

service on top of IP’s unreliable service pipelined

segments cumulative acks single

retransmission timer

retransmissions triggered by: timeout events duplicate acks

let’s initially consider simplified TCP sender: ignore duplicate

acks ignore flow

control, congestion control

Page 18: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-18

TCP sender events:data rcvd from

app: create segment

with seq # seq # is byte-

stream number of first data byte in segment

start timer if not already running think of timer as

for oldest unacked segment

expiration interval: TimeOutInterval

timeout: retransmit

segment that caused timeout

restart timer ack rcvd: if ack

acknowledges previously unacked segments update what is

known to be ACKed

start timer if there are still unacked segments

Page 19: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-19

TCP sender (simplified Fig. 3.33, p. 243)

waitfor

event

NextSeqNum = InitialSeqNumSendBase = InitialSeqNum

L

create segment, seq. #: NextSeqNumpass segment to IP (i.e., “send”)NextSeqNum = NextSeqNum + length(data) if (timer currently not running) start timer

data received from application above

retransmit not-yet-acked segment with smallest seq. #start timer

timeout

if (y > SendBase) { SendBase = y /* SendBase–1: last cumulatively ACKed byte */ if (there are currently not-yet-acked segments) start timer else stop timer }

ACK received, with ACK field value y

Page 20: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-20

TCP: retransmission scenarios

lost ACK scenario

Host BHost A

Seq=92, 8 bytes of data

ACK=100

Seq=92, 8 bytes of data

Xtim

eout

ACK=100

premature timeout

Host BHost A

Seq=92, 8 bytes of data

ACK=100

Seq=92, 8bytes of data

tim

eout

ACK=120

Seq=100, 20 bytes of data

ACK=120

SendBase=100

SendBase=120

SendBase=120

SendBase=92

Page 21: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-21

TCP: retransmission scenarios

X

cumulative ACK

Host BHost A

Seq=92, 8 bytes of data

ACK=100

Seq=120, 15 bytes of data

tim

eout

Seq=100, 20 bytes of data

ACK=120

Page 22: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-22

TCP ACK generation [RFC 1122, RFC

2581]

event at receiver

arrival of in-order segment withexpected seq #. All data up toexpected seq # already ACKed

arrival of in-order segment withexpected seq #. One other segment has ACK pending

arrival of out-of-order segmenthigher-than-expect seq. # .Gap detected

arrival of segment that partially or completely fills gap

TCP receiver action

delayed ACK. Wait up to 500msfor next segment. If no next segment,send ACK

immediately send single cumulative ACK, ACKing both in-order segments

immediately send duplicate ACK, indicating seq. # of next expected byte

immediate send ACK, provided thatsegment starts at lower end of gap

Page 23: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-23

TCP fast retransmit time-out period

often relatively long: long delay

before resending lost packet

detect lost segments via duplicate ACKs. sender often

sends many segments back-to-back

if segment is lost, there will likely be many duplicate ACKs.

if sender receives 3 ACKs for same data(“triple duplicate ACKs”), resend unacked segment with smallest seq #

likely that unacked segment lost, so don’t wait for timeout

TCP fast retransmit

(“triple duplicate ACKs”),

Page 24: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-24

X

fast retransmit after sender receipt of triple duplicate ACK

Host BHost A

Seq=92, 8 bytes of data

ACK=100

tim

eout

ACK=100

ACK=100

ACK=100

TCP fast retransmit

Seq=100, 20 bytes of data

Seq=100, 20 bytes of data

Page 25: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-25

Chapter 3 outline

3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data

transfer

3.5 connection-oriented transport: TCP segment

structure reliable data

transfer flow control connection

management3.6 principles of

congestion control

3.7 TCP congestion control

Page 26: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-26

TCP flow controlapplication

process

TCP socketreceiver buffers

TCPcode

IPcode

application

OS

receiver protocol stack

application may remove data from

TCP socket buffers ….

… slower than TCP receiver is delivering(sender is sending)

from sender

receiver controls sender, so sender won’t overflow receiver’s buffer by transmitting too much, too fast

flow control

Page 27: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-27

TCP flow control

buffered data

free buffer spacerwnd

RcvBuffer

TCP segment payloads

to application process

receiver “advertises” free buffer space by including rwnd value in TCP header of receiver-to-sender segments RcvBuffer size set via

socket options (typical default is 4096 bytes)

many operating systems autoadjust RcvBuffer

sender limits amount of unacked (“in-flight”) data to receiver’s rwnd value

guarantees receive buffer will not overflow

receiver-side buffering

Page 28: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-28

Chapter 3 outline

3.1 transport-layer services3.2 multiplexing and demultiplexing3.3 connectionless transport: UDP3.4 principles of reliable data

transfer

3.5 connection-oriented transport: TCP segment

structure reliable data

transfer flow control connection

management3.6 principles of

congestion control

3.7 TCP congestion control

Page 29: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-29

Connection Managementbefore exchanging data, sender/receiver

“handshake”: agree to establish connection (each knowing the

other willing to establish connection) agree on connection parameters

connection state: ESTABconnection variables:

seq # client-to-server server-to-clientrcvBuffer size at server,client

application

network

connection state: ESTABconnection Variables:

seq # client-to-server server-to-clientrcvBuffer size at server,client

application

network

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

number");

Socket connectionSocket = welcomeSocket.accept();

Page 30: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-30

Q: will 2-way handshake always work in network?

variable delays retransmitted

messages (e.g. req_conn(x)) due to message loss

message reordering can’t “see” other side

2-way handshake:

Let’s talk

OKESTAB

ESTAB

choose xreq_conn(x)

ESTAB

ESTABacc_conn(x)

Agreeing to establish a connection

Page 31: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-31

Agreeing to establish a connection

2-way handshake failure scenarios:

retransmitreq_conn(

x)

ESTAB

req_conn(x)

half open connection!(no client!)

client terminat

es

serverforgets x

connection x completes

retransmitreq_conn(

x)

ESTAB

req_conn(x)

data(x+1)

retransmitdata(x+1)

acceptdata(x+1)

choose xreq_conn(x)

ESTAB

ESTAB

acc_conn(x)

client terminat

es

ESTAB

choose xreq_conn(x)

ESTAB

acc_conn(x)

data(x+1) acceptdata(x+1)

connection x completes server

forgets x

Page 32: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-32

TCP 3-way handshake

SYNbit=1, Seq=x

choose init seq num, xsend TCP SYN msg

ESTAB

SYNbit=1, Seq=yACKbit=1; ACKnum=x+1

choose init seq num, ysend TCP SYNACKmsg, acking SYN

ACKbit=1, ACKnum=y+1

received SYNACK(x) indicates server is live;send ACK for SYNACK;

this segment may contain client-to-server data

received ACK(y) indicates client is live

SYNSENT

ESTAB

SYN RCVD

client state

LISTEN

server state

LISTEN

Page 33: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-33

TCP 3-way handshake: FSM

closed

L

listen

SYNrcvd

SYNsent

ESTAB

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

number");

SYN(seq=x)

Socket connectionSocket = welcomeSocket.accept();

SYN(x)

SYNACK(seq=y,ACKnum=x+1)create new socket for

communication back to client

SYNACK(seq=y,ACKnum=x+1)

ACK(ACKnum=y+1)ACK(ACKnum=y+1)

L

Page 34: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-34

TCP: closing a connection client, server each close their side

of connection send TCP segment with FIN bit = 1

respond to received FIN with ACK on receiving FIN, ACK can be

combined with own FIN simultaneous FIN exchanges can

be handled

Page 35: Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.

Transport Layer 3-35

FIN_WAIT_2

CLOSE_WAIT

FINbit=1, seq=y

ACKbit=1; ACKnum=y+1

ACKbit=1; ACKnum=x+1 wait for server

close

can stillsend data

can no longersend data

LAST_ACK

CLOSED

TIMED_WAIT

timed wait for 2*max

segment lifetime

CLOSED

TCP: closing a connection

FIN_WAIT_1 FINbit=1, seq=xcan no longersend but can receive data

clientSocket.close()

client state server state

ESTABESTAB