+ All Categories
Home > Documents > Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Date post: 15-Jan-2016
Category:
Upload: elaine-orman
View: 214 times
Download: 0 times
Share this document with a friend
26
Transport Layer 3-1 Homework Chapter 2#10,13-18 Due Wed September 17
Transcript
Page 1: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-1

Homework

Chapter 2#10,13-18 Due Wed September 17

Page 2: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-2

Chapter 3 outline

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 congestion control

3.7 TCP congestion control

Page 3: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-3

rdt3.0: channels with errors and loss

New assumption: underlying channel can also lose packets (data or ACKs) checksum, seq. #,

ACKs, retransmissions will be of help, but not enough

Q: how to deal with loss? sender waits until

certain data or ACK lost, then retransmits

yuck: drawbacks?

Approach: sender waits “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. #’s already handles this

receiver must specify seq # of pkt being ACKed

requires countdown timer

Page 4: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-4

rdt3.0 sender

sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)start_timer

rdt_send(data)

Wait for

ACK0

rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isACK(rcvpkt,1) )

Wait for call 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)

rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isACK(rcvpkt,0) )

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1)

stop_timerstop_timer

udt_send(sndpkt)start_timer

timeout

udt_send(sndpkt)start_timer

timeout

rdt_rcv(rcvpkt)

Wait for call 0from

above

Wait for

ACK1

rdt_rcv(rcvpkt)

Page 5: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-5

rdt3.0 in action

Page 6: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-6

rdt3.0 in action

Page 7: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-7

Performance of rdt3.0

rdt3.0 works, but performance stinks example: 1 Gbps link, 15 ms e-e prop. delay, 1KB packet:

Ttransmit

= 8kb/pkt10**9 b/sec

= 8 microsec

U sender: utilization – fraction of time sender busy sending 1KB pkt every 30 msec -> 33kB/sec thruput over 1 Gbps link network protocol limits use of physical resources!

U sender

= .008

30.008 = 0.00027

microseconds

L / R

RTT + L / R =

L (packet length in bits)R (transmission rate, bps)

=

Page 8: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-8

rdt3.0: stop-and-wait operation

first packet bit transmitted, t = 0

sender receiver

RTT

last packet bit transmitted, t = L / R

first packet bit arriveslast packet bit arrives, send ACK

ACK arrives, send next packet, t = RTT + L / R

U sender

= .008

30.008 = 0.00027

microseconds

L / R

RTT + L / R =

Page 9: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-9

Pipelined protocols

Pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged pkts range of sequence numbers must be increased buffering at sender and/or receiver

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

Page 10: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-10

Pipelining: increased utilization

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 next packet, t = RTT + L / R

last bit of 2nd packet arrives, send ACKlast bit of 3rd packet arrives, send ACK

U sender

= .024

30.008 = 0.0008

microseconds

3 * L / R

RTT + L / R =

Increase utilizationby a factor of 3!

Page 11: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-11

Go-Back-NSender: k-bit seq # in pkt header “window” of up to N, consecutive unack’ed pkts allowed

ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK” may deceive duplicate ACKs (see receiver)

timer for each in-flight pkt timeout(n): retransmit pkt n and all higher seq # pkts in window

Page 12: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-12

GBN: sender extended FSM

Wait start_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 (base == nextseqnum) start_timer nextseqnum++ }else refuse_data(data)

base = getacknum(rcvpkt)+1If (base == nextseqnum) stop_timer else start_timer

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

base=1nextseqnum=1

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Page 13: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-13

GBN: receiver extended FSM

ACK-only: always send ACK for correctly-received pkt with highest in-order seq # may generate duplicate ACKs need only remember expectedseqnum

out-of-order pkt: discard (don’t 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)

Page 14: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-14

GBN inaction

Page 15: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-15

Selective Repeat

receiver individually acknowledges all correctly received pkts buffers pkts, as needed, for eventual in-order

delivery to upper layer

sender only resends pkts for which ACK not received sender timer for each unACKed pkt

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

Page 16: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-16

Selective repeat: sender, receiver windows

Page 17: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-17

Selective repeat

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 to next unACKed seq #

senderpkt 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

Page 18: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-18

Selective repeat in action

Page 19: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-19

Selective repeat: dilemma

Example: seq #’s: 0, 1, 2, 3 window size=3

receiver sees no difference in two scenarios!

incorrectly passes duplicate data as new in (a)

Q: what relationship between seq # size and window size?

Page 20: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-20

Chapter 3 outline

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 congestion control

3.7 TCP congestion control

Page 21: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-21

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) init’s sender, receiver state before data exchange

flow controlled: sender will not

overwhelm receiver

point-to-point: one sender, one

receiver

reliable, in-order byte stream: no “message

boundaries”

pipelined: TCP congestion and flow

control set window size

send & receive bufferssocketdoor

T C Psend buffer

T C Preceive buffer

socketdoor

segm ent

applicationwrites data

applicationreads data

Page 22: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-22

TCP segment structure

source port # dest port #

32 bits

applicationdata

(variable length)

sequence number

acknowledgement numberReceive window

Urg data pnterchecksum

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 23: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-23

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

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

ACKs: seq # of next byte

expected from other side

cumulative ACKQ: how receiver handles

out-of-order segments A: TCP spec

doesn’t say, - up to implementer

Host A Host B

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

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

Seq=43, ACK=80

Usertypes

‘C’

host ACKsreceipt

of echoed‘C’

host ACKsreceipt of‘C’, echosback ‘C’

timesimple telnet scenario

Page 24: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-24

TCP Round Trip Time and 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 25: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-25

TCP Round Trip Time and TimeoutEstimatedRTT = (1- )*EstimatedRTT + *SampleRTT

Exponential weighted moving average influence of past sample decreases exponentially fast typical value: = 0.125

Page 26: Transport Layer3-1 Homework r Chapter 2#10,13-18 r Due Wed September 17.

Transport Layer 3-26

Example RTT estimation: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


Recommended