1 transport overview 10/7/2009. 2 outline recap r overview of transport layer r udp r reliable data...

93
1 Transport Overview 10/7/2009

Upload: zoe-cannon

Post on 02-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

1

Transport Overview

10/7/2009

Page 2: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

2

Outline

Recap Overview of transport layer UDP Reliable data transfer, the stop-and-wait

protocol

Page 3: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

3

Recap: P2P

The Lookup problem More generally, moving from a host-centric Internet to

a “data-centric” Internet supporting data persistency, availability, and authenticity

The scalability problem

Page 4: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

Key Design Issues

Robustness: Resistant to churn and failures

Efficiency: A client has content that others need; otherwise, its upload capacity may not be utilized

Incentive: clients are willing to upload

Lookup problem

4

servers

C0

client 1

client 2

client 3

client n

C1

C2 C3

Cn

Page 5: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

5

Recap: BitTorrent Robustness

Piece256KBBlock

16KB

File

421 3

Incomplete Piece

Piece: unit of information exchange among peersBlock: unit of download

A swarming protocol: peers exchange piece availability and request blocks from peers

10 0 1

Page 6: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

BitTorrent: Incentive

Periodically (typically every 10 seconds) calculate data-receiving rates from all peers

Upload to (unchoke) the fastest

- constant number (4) of unchoking slots

- partition upload bw equally among unchoked

requests/interests

requests/interests

requests/interests

requests/interests

commonly referred to as “tit-for-tat” strategy

requests/interests

Page 7: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

Optimistic Unchoking

Periodically select a peer at random and upload to it typically every 3 unchoking rounds (30

seconds)

Multi-purpose mechanism allow bootstrapping of new clients continuously look for the fastest peers

(exploitation vs exploration)

Page 8: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

Block Availability

Request (local) rarest first achieves the fastest replication of rare pieces obtain something of value

Page 9: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

Block Availability: Revisions

When downloading starts (first 4 pieces): choose at random and request them from the peers get pieces as quickly as possible obtain something to offer to others

Endgame mode defense against the “last-block problem”:

cannot finish because missing a few last pieces

send requests for missing sub-pieces to all peers in our peer list

send cancel messages upon receipt of a sub-piece

Page 10: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

BitTorrent Fluid Analysis

Normalize file size to 1 x(t): number of downloaders (also known as

leechers) y(t): number of seeds in the system at time t. : the arrival rate of new requests. : the uploading bandwidth of a given peer. c: the downloading bandwidth of a given peer,

assume c ≥ μ. : the rate at which downloaders abort download. : the rate at which seeds leave the system. : indicates the effectiveness of downloader

sharing, η takes values in [0, 1].10

Page 11: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

System Evolution

Solving steady state:

Define

11

Page 12: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

System Evolution: Download Time T

Look at system state, # of downloaders that will finish download and become seed:

=>

12

Page 13: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

BitTorrent: Summary

Very widely used mainline: written in Python Azureus and μTorrent: the

most popular Other popular clients: ABC,

BitComet, BitLord, BitTornado, Opera browser

Many explorations, e.g., BitThief BitTyrant

Better understanding is needed

requests/interests

requests/interests

requests/interests

requests/interests

requests/interests

Page 14: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

Summary: P2P

Widely considered to be a key component for the next-generation Content distribution system

Many issues remaining, e.g., Streaming ISP/P2P integration …

14

Page 15: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

15

Outline

Recap Overview of transport layer UDP Reliable data transfer, the stop-and-go

protocols

Page 16: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

16

Transport Layer vs. Network Layer

Provide logical communication between app’ processes

Transport protocols run in end systems send side: breaks app

messages into segments, passes to network layer

rcv side: reassembles segments into messages, passes to app layer

Transport vs. network layer services: Network layer: data transfer

between end systems Transport layer: data transfer

between processes• relies on, enhances network

layer services

application

transportnetworkdata linkphysical

application

transportnetworkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysical

networkdata linkphysicalnetwork

data linkphysical

logical end-end transport

Page 17: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

17

Transport Layer Services and Protocols Reliable, in-order delivery (TCP)

multiplexing reliability and connection setup congestion control flow control

Unreliable, unordered delivery: UDP multiplexing

Services not available: delay guarantees bandwidth guarantees

Page 18: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

18

Transport Layer: Road Ahead Class 1:

transport layer services connectionless transport: UDP reliable data transfer using stop-and-wait

Class 2: sliding window reliability TCP reliability

• overview of TCP• TCP RTT measurement• TCP connection management

Class 3: principles of congestion control TCP congestion control; AIMD

Class 4: performance modeling; TCP variants the analysis and design framework for congestion

control

Page 19: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

19

Outline

Recap Overview of transport layer UDP Reliable data transfer, the stop-and-go

protocols

Page 20: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

UDP: User Datagram Protocol [RFC 768]Often used for

streaming multimedia apps loss tolerant rate sensitive

Other UDP usesDNSSNMP

source port # dest port #

32 bits

Applicationdata

(message)

UDP segment format

length checksumLength, in

bytes of UDP

segment,including

header

Page 21: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

UDP Checksum

Sender: treat segment contents

as sequence of 16-bit integers

checksum: addition of segment contents to be zero

sender puts checksum value into UDP checksum field

Receiver: compute checksum of

received segment compute sum of segment

and checksum; check if sum zero NO - error detected YES - no error detected.

But maybe errors nonetheless?

Goal: end-to-end detection of “errors” (e.g., flipped bits) in transmitted segment

Page 22: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

One’s Complement Arithmetic

UDP checksum is based on one’s complement arithmetic one’s complement was a common representation of

signed numbers in early computers

One’s complement representation bit-wise NOT for negative numbers example: assume 8 bits

• 00000000: 0• 00000001: 1• 01111111: 127 • 10000000: ?• 11111111: ?

addition: conventional binary addition except adding any resulting carry back into the resulting sum

• Example: -1 + 2

22

Page 23: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

UDP Checksum: Algorithm

Example checksum:

1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 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 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1

wraparound

sumchecksum

- For fast implementation of computing UDP checksum, see http://www.faqs.org/rfcs/rfc1071.html

Page 24: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

UDP Checksum: Coverage

Calculated over: A pseudo-header

IP Source Address (4 bytes)

IP Destination Address (4 bytes)

Protocol (2 bytes) UDP Length (2 bytes)

UDP header

UDP data

Page 25: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

25

Outline

Recap Overview of transport layer UDP Reliable data transfer

Page 26: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

26

Principles of Reliable Data Transfer Important in app., transport, link layers top-10 list of important networking topics!

Page 27: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

Reliable Data Transfer

27

Page 28: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

28

Reliable Data Transfer: Getting Started

sendside

receiveside

rdt_send(): called from above, (e.g., by app.)

udt_send(): called by rdt,to transfer packet over unreliable channel to

receiver

rdt_rcv(): called from below; when packet arrives on rcv-side

of channel

deliver_data(): called by rdt to deliver data to

upper

Page 29: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

29

Reliable Data Transfer: Getting StartedWe’ll: incrementally develop sender, receiver

sides of reliable data transfer protocol (rdt) consider only unidirectional data transfer

but control info will flow on both directions!

use finite state machines (FSM) to specify sender, receiver

state1

state2

event causing state transitionactions taken on state transition

state: when in this “state” next state

uniquely determined by

next event

eventactions

Page 30: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

30

Outline

Review Overview of transport layer UDP Reliable data transfer

perfect channel

Page 31: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

31

Rdt1.0: reliable transfer over a reliable channel

separate FSMs for sender, receiver: sender sends data into underlying channel receiver reads data from underlying channel

Wait for call from above packet = make_pkt(data)

udt_send(packet)

rdt_send(data)

extract (packet,data)deliver_data(data)

Wait for call from

below

rdt_rcv(packet)

sender receiver

Page 32: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

32

Potential Channel Errors

bit errors

loss (drop) of packets

reordering or duplication

Characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt).

Page 33: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

33

Outline

Recap Overview of transport layer UDP Reliable data transfer

o perfect channel channel with bit errors

Page 34: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

34

Rdt2.0: Channel With Bit Errors

Underlying channel may flip bits in packet

New mechanisms in rdt2.0 (beyond rdt1.0): receiver error detection: recall: UDP checksum to

detect bit errors sender retransmission receiver feedback: control msgs (ACK,NAK) rcvr-

>sender• 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

Page 35: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

35

rdt2.0: FSM Specification

Wait for data udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait for data

extract(rcvpkt,data)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

sender

receiver

Wait for ACK or

NAK

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

Page 36: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

36

rdt2.0: Operation with No Errors

Wait for data

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

extract(rcvpkt,data)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait for ACK or

NAK

Wait for data

rdt_send(data)

Page 37: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

37

rdt2.0: Error Scenario

Wait for data

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

extract(rcvpkt,data)deliver_data(data)udt_send(ACK)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

udt_send(NAK)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Wait for ACK or

NAK

Wait for data

rdt_send(data)

Page 38: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

38

Big Picture of rdt2.0sender

data (n)

receiver

data (n)

ACK

data (n+1)

waiting for N/ACK

waitingfor data

NACK

Page 39: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

39

rdt2.0 is Incomplete!

What happens if ACK/NAK corrupted? Although sender receives feedback, but doesn’t

know what happened at receiver!

sender

data (n)waiting

for N/ACK ?

Page 40: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

40

Two Possibilities

sender

data (n)

receiver

data (n)

waiting for

N/ACK waitingfor data

NACK

sender receiver

waiting for

N/ACK ACK

data (n+1)

data (n)

deliver

deliver

Wait for data udt_send(sndpkt)

rdt_rcv(rcvpkt) && isNAK(rcvpkt)

sender

Wait for ACK or

NAK

snkpkt = make_pkt(data, checksum)udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt) && isACK(rcvpkt)

Page 41: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

41

Handle Control Message CorruptionIt is always harder to deal with control

message errors than data message errors sender can’t just retransmit: possible duplicate

Handling duplicates: sender adds sequence

number to each pkt sender retransmits current

pkt if ACK/NAK garbled receiver discards (doesn’t

deliver up) duplicate pkt

sender sends one packet, then waits for receiver response

stop and wait

Page 42: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

42

rdt2.1b: Sender, Handles Garbled ACK/NAKs

Wait for pkt n from

above

Wait for ACK or

NAK

sndpkt = make_pkt(n, data, checksum)udt_send(sndpkt)

rdt_send(data)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isNAK(rcvpkt) )

sndpkt = make_pkt(n+1, data, checksum)udt_send(sndpkt)

rdt_send(data)

Wait for ACK or

NAK

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)

Wait for pkt n+1 from

above

Page 43: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

43

rdt2.1b: Receiver, Handles Garbled ACK/NAKs

Wait for n from below

Wait for n+1 from

below

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq(n, rcvpkt)

extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && ! has_seq(n,rcvpkt)

sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Page 44: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

44

rdt2.1b: Summary

Sender: seq # added to pkt must check if received ACK/NAK corrupted

Receiver: must check if received packet is duplicate

by checking if the packet has the expected pkt seq #

Page 45: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

45

Another Look at rdt2.1bsender

data (n)

receiver

ACK

data 1 (n+1)

waiting for n

sending n

waiting n+1

sendingn+1

waiting for n+2

NACK

data (n)

data (n)

ACK

Page 46: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

46

State Relationship of rt2.1b

s0 senders1 s2

receiverw0 w1 w2 w3

w3

first time

rcvs 0

first timercvsack 0

w0 w1 w2

W1: wait for data with seq. 1S1: sending data with seq. 1

State invariant:- When receiver’s state is waiting for seq #n, sender’s state can be sending either seq#n-1or seq#n

Page 47: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

47

rdt2.1c: Sender, Handles Garbled ACK/NAKs: Using 1 bit

Wait for call 0 from

above

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

rdt_send(data)

Wait for ACK or

NAK udt_send(sndpkt)

rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isNAK(rcvpkt) )

sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)

rdt_send(data)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)

udt_send(sndpkt)

rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) ||isNAK(rcvpkt) )

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)

Wait for call 1 from

above

Wait for ACK or NAK 1

Page 48: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

48

rdt2.1c: Receiver, Handles Garbled ACK/NAKs: Using 1 bit

Wait for 0 from below

sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt)

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)

extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

Wait for 1 from below

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt)

extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && (corrupt(rcvpkt)

sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt)

rdt_rcv(rcvpkt) && (corrupt(rcvpkt)

sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)

sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)

Page 49: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

49

rdt2.1c: Discussion

Sender: state must

“remember” whether “current” pkt has 0 or 1 seq. #

Receiver: must check if

received packet is duplicate state indicates whether

0 or 1 is expected pkt seq #

Page 50: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

50

A Flavor of Protocol Correctness Analysis: rdt2.1c Combined states of sender and channel Assume the sender always has data to send

0 0 00 0 N 0 1 A

1 1 11 0 A 1 1 N

sender state: sending 0 and waiting for ACK

channel state: packet seq#

corrupt ok corrupt

okok

corrupt

ok

receiver state: waiting for 0 0 1 0 0 1 N

corrupt

ok

1 0 0corrupt

1 0 N

corrupt

ok

Page 51: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

51

rdt2.2: a NAK-free protocol

Same functionality as rdt2.1c, using ACKs only

Instead of NAK, receiver sends ACK for last pkt received OK receiver must explicitly include seq # of pkt being

ACKed

Duplicate ACK at sender results in same action as NAK: retransmit current pkt

Page 52: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

52

rdt2.2: Sender, Receiver Fragments

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

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

Wait for ACK

0

sender FSMfragment

Wait for 0 from below

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt)

extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK,0, chksum)udt_send(sndpkt)

rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || has_seq1(rcvpkt))

sndpkt=make_pkt(ACK,1, chksum)udt_send(sndpkt)

receiver FSMfragment

Page 53: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

53

Outline

Review Overview of transport layer UDP Reliable data transfer

o perfect channelo channel with bit errors channel with bit errors and losses

Page 54: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

54

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?

Approach: sender waits “reasonable” amount of time for ACK

requires countdown timer 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

Page 55: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

55

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 0 from

above

Wait for

ACK1

rdt_rcv(rcvpkt)

Page 56: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

56

rdt3.0 in Action

Question to think about: How to determine a good timeout value?

Page 57: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

57

rdt3.0 in Action

Page 58: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

58

rdt3.0sender

data 0 (n-1)

receiver

data 0 (n-1)

ACK for 0 (n-1)

data 1 (n)

waiting for 0(n-1)

sending 0 (n-1)

waiting for 1(n)

sending 1(n) waiting

for 0(n+1)

ACK for 0 (n-1)

State consistency:

When receiver’s state is waiting n, the state of the sender is either sending for n-1 or sending for n

When sender’s state is sending for n, receiver’s state is waiting for n or n + 1

Page 59: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

59

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

What is Usender: utilization – fraction of time sender busy sending?

Assume: 1 Gbps link, 15 ms e-e prop. delay, 1KB packet

Page 60: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

60

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

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 61: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

61

A Summary of Questions

How to improve the performance of rdt3.0?

What if there are reordering and duplication?

How to determine the “right” timeout value?

Page 62: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

62

Page 63: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

63

Sliding Window Protocols: PipeliningPipelining: 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 64: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

64

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!

Question: a rule-of-thumb window size?

Page 65: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

65

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

ACK(n): ACKs all pkts up to, including seq # n - “cumulative ACK” note: ACK(n) could mean two things: I have received upto

and include n, or I am waiting for n timer for the packet at base timeout(n): retransmit pkt n and all higher seq # pkts in

window

W

Page 66: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

66

GBN: Sender Extended FSM

Waitstart_timerudt_send(sndpkt[base])udt_send(sndpkt[base+1])…udt_send(sndpkt[nextseqnum-1])

timeout

rdt_send(data)

if (nextseqnum < base+W) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else block sender

if (new packets ACKed) { advance base; if (more packets waiting) send more packets}if (base == nextseqnum) stop_timerelse start_timer for the packet at new base

rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)

base=1nextseqnum=1

rdt_rcv(rcvpkt) && corrupt(rcvpkt)

Page 67: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

67

GBN: Receiver Extended FSM

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

out-of-order pkt: discard (don’t buffer) -> no receiver buffering! re-ACK pkt with highest in-order seq # may generate duplicate ACKs

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 68: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

68

GBN inAction

windowsize = 4

Page 69: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

69

Discussion: Efficiency of Go-Back-n

Assume window size W

Assume each packet is lost with probability p

On average, how many packets do we send for each data packet?

Page 70: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

70

Selective Repeat

Sender window Window size W: W consecutive unACKed seq #’s

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

delivery to upper layer ACK(n) means received packet with seq# n only buffer size at receiver: window size

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

Page 71: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

71

Selective Repeat: Sender, Receiver Windows

W

W

Page 72: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

72

Selective Repeat

data from above : unACKed packets is less

than window size W, send; otherwise block app.

timeout(n): resend pkt n, restart timer

ACK(n) in [sendbase,sendbase+W-1]:

mark pkt n as received update sendbase to the

first packet unACKed

senderpkt n in [rcvbase, rcvbase+W-

1]

send ACK(n) if (out-of-order)

mark and buffer pkt nelse /*in-order*/

deliver any in-order packets

otherwise: ignore

receiver

Page 73: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

73

Selective Repeat in Action

Page 74: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

74

Discussion: Efficiency of Selective Repeat

Assume window size W

Assume each packet is lost with probability p

On average, how many packets do we send for each data packet?

Page 75: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

75

State Invariant: Window Location

Go-back-n (GBN)

Selective repeat (SR)

sender window

receiver window

sender window

receiver window

Page 76: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

76

Window Location Go-back-n (GBN)

Selective repeat (SR)

sender window

receiver window

sender window

receiver window

Q: what relationship between seq # size and

window size?

Page 77: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

77

Selective Repeat: Seq# Ambiguity

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)

Page 78: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

78

Sliding Window Protocols:Go-back-n and Selective Repeat

Go-back-n Selective Repeat

data bandwidth: sender to receiver(avg. number of times a pkt is transmitted)

ACK bandwidth (receiver to sender)Relationship between M (the number of seq#) and W (window size)

Buffer size at receiver

Complexity

p: the loss rate of a packet; M: number of seq# (e.g., 3 bit M = 8); W: window size

More efficient Less efficient

M > W M ≥ 2W

1 W

Simpler More complex

Less efficient

ppwp

11

More efficient

p11

Page 79: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

79

Question: What is Initial Seq#?

sender receiver

ACK for 0accept

data 0

Page 80: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

80

Question: What is Initial Seq#?

To avoid the scenario, a sender should not reuse a seq# before it is sure the packet has left the network

sender receiver

ACK for 0 (n)accept

data 0 (transfer $1000 to B)

data 0 (transfer $1000 to B)

accept?

Page 81: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

81

Outline

Recap Sliding window protocols

Go-back-n Selective repeat

Connection management

Page 82: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

82

Connection Management: Objective

Agree on initial sequence numbers a sender will not reuse a seq# before it is sure

that all packets with the seq# are purged from the network

• the network guarantees that a packet too old will be purged from the network: network bounds the life time of each packet

To avoid waiting for the seq# to start a session, use a larger seq# space

• needs connection setup so that the sender tells the receiver initial seq#

Agree on other initial parameters

Page 83: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

83

Three Way Handshake (TWH) [Tomlinson 1975]

Host A

SYN(seq=x)

Host B

ACK(seq=x), SYN(seq=y)

ACK(seq=y)

DATA(seq=x+1)

SYN: indicates connection setup

accept data only afterverified x is the init. seq

accept?

Page 84: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

84

Scenarios with Duplicate Request

Host A Host B

ACK(seq=x), SYN(seq=y)

REJECT(seq=y)

SYN(seq=x)

accept?

no suchrequest

reject

Page 85: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

85

Three Way Handshake (TWH) [Tomlinson 1975]

To ensure that the other side does want to send a request

Host A

SYN(seq=x)

Host B

ACK(seq=x), SYN(seq=y)

ACK(seq=y)

DATA(seq=x+1)

Host A Host B

ACK(seq=x), SYN(seq=y)

REJECT(seq=y)

SYN(seq=x)

accept?

no suchrequest

reject

ACK(seq=z)

Page 86: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

86

Connection Close

Objective of closure handshake: each side can release

resource and remove state about the connection

client

I am done. Are you done too?

server

I am done too. Goodbye!

init. close

close

close

release resource?

release resource?

release resource?

Page 87: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

87

General Case: The Two-Army Problem

The two blue armies need to agree on whether or not they will attack the white army. They achieve agreement by sending messengers to the other side. If they both agree, attack; otherwise, no. Note that a messenger can be captured!

Page 88: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

88

Four Way Teardown

Host A

FIN

Host B

ACK

ACK

FIN

close

close

closedall states removed

tim

ed w

ait

- can retransmit the ACKif its ACK is lost closed

A->B closed

A->B closed

all states removed

propose closeA->B

propose closeB->A

Page 89: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

89

A Summary of Questions

How to improve the performance of rdt3.0? sliding window protocols

What if there are duplication and reordering? network guarantee: max packet life time transport guarantee: not reuse a seq# before

life time seq# management and connection

management How to determine the “right”

parameters?

Page 90: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

90

Backup Slides

Page 91: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

91

Reordering and Duplication

Out-of-order and/or duplicated packets could be accepted by the receiver if not handled correctly

There are many solutions each with its own pitfalls

Internet solution: for each connection (sender-receiver pair), ensuring that two identically numbered packets are never outstanding at the same time network bounds the life time of each packet a connection will not reuse a seq# before it is sure that all

packets with the seq# are purged from the network• seq. number space should be large enough to not limit

transmission rate• needs connection setup so that the sender tells the receiver initial

seq#

Page 92: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

92

Scenarios with Duplicate Request/Reply

Host A Host B

ACK(seq=x), SYN(seq=y)

REJECT(seq=y)

SYN(seq=x)

accept?

no suchrequest

reject

ACK(seq=z)

Page 93: 1 Transport Overview 10/7/2009. 2 Outline  Recap r Overview of transport layer r UDP r Reliable data transfer, the stop-and-wait protocol

93

Backup Slides