transport layer (tcp/udp) - courses.cs.washington.edu · •flow control (tcp) •retransmission...

97
Transport Layer (TCP/UDP)

Upload: vandung

Post on 10-Apr-2019

257 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Transport Layer (TCP/UDP)

Page 2: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Where we are in the Course

•Moving down to the Transport Layer!

CSE 461 University of Washington 2

Physical

Link

Network

Transport

Application

Page 3: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

The Transport Layer• The transport layer provides end-to-end connectivity

• To the transport layer, its payload is just bytes

CSE 461 University of Washington 3

Host Host

TCP

IP

802.11

app

TCP

IP

Ethernet

app

Page 4: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Encapsulation

CSE 461 University of Washington 4

802.11 IP TCP HTTP

TCP Segment

IP Packet

Frame

HTTP payload

802.11 IP UDP DNS header and payload

UDP Datagram

Page 5: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Transport Layer Services

•Provide different kinds of data delivery across the network to applications

• Could there be protocols in the two empty boxes?

CSE 461 University of Washington 5

Unreliable Reliable

Packets Datagrams (UDP)

Bytestream Streams (TCP)

Page 6: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Comparison of Internet Transports: Function

CSE 461 University of Washington 6

TCP UDP

Streams Datagrams

Connections Connectionless

Bytes are delivered to receiving app reliably (once,

and in order)

Packets may be lost, reordered, duplicated

(but not corrupted)

Arbitrary length content Fixed maximum datagram size

Page 7: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Comparison of Internet Transports: Performance

CSE 461 University of Washington 7

TCP UDP

Connection latency No delay

Segment delivery latency (“nagling”)

Datagram is sent now

Flow control matches sender’s rate to receiver’s

capability

No flow control(can lead to many lost

datagrams)

Congestion control matches sender’s rate to network’s

capability

No congestion control(can lead to many lost

datagrams)

Page 8: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Socket API

• Simple OS abstraction to use the network• The “network” API (really Transport service) used to write all Internet apps

• Part of all major OSes and languages; originally Berkeley (Unix) ~1983

• Supports both Internet transport services (TCP and UDP)

• The OS provides sockets; the Internet provides the port abstraction

CSE 461 University of Washington 8

Page 9: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Socket API• Sockets are associated with (“bound to”) Internet

ports

CSE 461 University of Washington 9

Socket,Port #1

Socket,Port #2

Page 10: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Socket APISame API used for Streams and Datagrams

CSE 461 University of Washington 10

Primitive Meaning

SOCKET Create a new communication endpoint

BIND Associate a local address (port) with a socket

LISTEN Announce willingness to accept connections

ACCEPT Passively establish an incoming connection

CONNECT Actively attempt to establish a connection

SEND(TO) Send some data over the socket

RECEIVE(FROM) Receive some data over the socket

CLOSE Release the socket

Only needed for Streams

To/From for Datagrams

Note: A language layer can obscure this interface

Page 11: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Ports• Application process is identified by the tuple

<IP address, protocol, and port>• Ports are 16-bit integers representing local “mailboxes” that a process leases

• Servers often bind to “well-known ports”• numbered below 1024

• require administrative privileges (“privileged ports”)

• Clients often assigned “ephemeral” ports• Chosen by OS, used temporarily

CSE 461 University of Washington 11

Page 12: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Some Well-Known Ports

CSE 461 University of Washington 12

Port Protocol Use

20, 21 FTP File transfer

22 SSH Remote login, replacement for Telnet

25 SMTP Email

80 HTTP World Wide Web

110 POP-3 Remote email access

143 IMAP Remote email access

443 HTTPS Secure Web (HTTP over SSL/TLS)

543 RTSP Media player control

631 IPP Printer sharing

Page 13: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Topics• Service models

• Socket API and ports

• Datagrams, Streams

• User Datagram Protocol (UDP)

• Connections (TCP)

• Sliding Window (TCP)

• Flow control (TCP)

• Retransmission timers (TCP)

• Congestion control (TCP)

CSE 461 University of Washington 13

Page 14: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

UDP

Page 15: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

User Datagram Protocol (UDP)

•Used by apps that don’t want TCP semantics or for which TCP performance characteristics are unacceptable• Voice-over-IP

• DNS, RPC

• DHCP

(If application wants reliability and messages then it has work to do!)

CSE 461 University of Washington 15

Page 16: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Datagram Sockets

CSE 461 University of Washington 16

Client (host 1) Server (host 2)Time

request

reply

Page 17: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Datagram Sockets

CSE 461 University of Washington 17

Client (host 1) Server (host 2)Time

1: socket2: bind

1: socket

6: sendto

3: recvfrom*4: sendto

5: recvfrom*

7: close 7: close

*= call blocks

request

reply

The protocol impliedby this diagram ishorribly broken!

Page 18: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

UDP Buffering

CSE 461 University of Washington 18

App

Port Mux/Demux

App AppApplication

Transport(UDP)

Network (IP) packet

Message queues

Ports

Page 19: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

UDP Header• Uses ports to identify sending and receiving application

processes

• Datagram length limited to 64K

• Checksum (16 bits) for reliability

CSE 461 University of Washington 19

UDP header

Page 20: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

UDP Header

• Optional checksum covers UDP segment and IP pseudoheader• Checks key IP fields (addresses)

• Value of zero means “no checksum”

CSE 461 University of Washington 20

Page 21: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Internet Checksum

• Idea: • sender sums up data in N-bit words

• results in a 16-bit value that is a function of the data

• receiver performs same summation• if value receiver computes doesn’t match value sent by

sender, the packet has been corrupted• Widely used in, e.g., TCP/IP/UDP

CSE 461 University of Washington 21

1500 bytes 16 bits

Page 22: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Internet Checksum

•Sum is defined in 1s complement arithmetic (must add back carries)• And it’s the negative sum

• “The checksum field is the 16 bit one's complement of the one's complement sum of all 16 bit words …” – RFC 791

CSE 461 University of Washington 22

Page 23: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 23

Internet Checksum (2)Sending:

1.Arrange data in 16-bit words

2.Put zero in checksum position, add

3.Add any carryover back to get 16 bits

4.Negate (complement) to get sum

0001 f204 f4f5 f6f7

+(0000)------2ddf0

ddf0 + 2 ------

ddf2

220d

Page 24: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 24

Internet Checksum (3)0001 f204 f4f5 f6f7

+(0000)------2ddf1

ddf1 + 2 ------

ddf3

220c

Sending:

1.Arrange data in 16-bit words

2.Put zero in checksum position, add

3.Add any carryover back to get 16 bits

4.Negate (complement) to get sum

Page 25: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 25

Internet Checksum (4)Receiving:

1. Arrange data in 16-bit words

2. Checksum will be non-zero, add

3. Add any carryover back to get 16 bits

4. Negate the result and check it is 0

0001 f204 f4f5 f6f7

+ 220c ------2fffd

fffd+ 2 ------

ffff

0000

Page 26: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 26

Internet Checksum (5)Receiving:

1. Arrange data in 16-bit words

2. Checksum will be non-zero, add

3. Add any carryover back to get 16 bits

4. Negate the result and check it is 0

0001 f204 f4f5 f6f7

+ 220c ------2fffd

fffd+ 2 ------

ffff

0000

Page 27: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

(Pre-TCP)

Reliability and Retransmissions

Page 28: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Context on Reliability

•Where in the stack should we place reliability?

CSE 461 University of Washington 28

Physical

Link

Network

Transport

Application

Page 29: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Context on Reliability (2)

•Everywhere! It is a key issue• Different layers contribute differently

CSE 461 University of Washington 29

Recover actions(correctness)

Mask errors(performance optimization)

Physical

Link

Network

Transport

Application

Page 30: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

ARQ (Automatic Repeat reQuest)

•ARQ often used when errors are common or must be corrected• E.g., WiFi (common) and TCP (must correct)

•Rules at sender and receiver:• Receiver automatically acknowledges correct frames with an ACK

• positive acknowledgements

• Sender automatically resends after a timeout

• Keep re-sending until an ACK is received

CSE 461 University of Washington 30

Page 31: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

ARQ

•Normal operation (no loss)

CSE 461 University of Washington 31

Frame

ACKTimeout Time

Sender Receiver

Page 32: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

ARQ

• Loss and retransmission

CSE 461 University of Washington 32

ACK

Frame

Timeout Time

Sender Receiver

Frame

X

Page 33: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

So What’s Tricky About ARQ?

•Two non-trivial issues:• How long to set the timeout?

• How to avoid accepting duplicate frames as new frames

•Want performance in the common case and correctness always

CSE 461 University of Washington 33

Page 34: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Timeouts

• Timeout should be:• Not too big (link goes idle)

• Not too small (spurious resend)

• Fairly easy on a LAN• Clear worst case, little variation

• Fairly difficult over the Internet• Much variation, no obvious bound

• We’ll revisit this with TCP (later)

CSE 461 University of Washington 34

Page 35: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Duplicates

•What happens if an ACK is lost?

CSE 461 University of Washington 35

Frame

ACK

X

Frame

ACKTimeout

Sender Receiver

Page 36: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Duplicates

•What happens ifthe timeout is early?

CSE 461 University of Washington 36

Frame

ACK

Frame

ACK

Timeout

Sender Receiver

Page 37: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Duplicates

•What happens ifthe timeout is early?

CSE 461 University of Washington 37

Frame

ACK

Frame

ACK

Timeout

Sender Receiver

Which frame is this ACK ACK’ing?

Page 38: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sequence Numbers

•For correctness, frames and ACKs must both carry sequence numbers

•At an extreme, to distinguish the current frame from the next one, a single bit (two numbers) is sufficient• Called Stop-and-Wait protocol

• In general, the number of packets that can be in flight is limited to half the range of the sequence numbers

CSE 461 University of Washington 38

Page 39: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Stop-and-Wait

• In the normal case:

CSE 461 University of Washington 39

Time

Sender Receiver

Page 40: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Stop-and-Wait (2)

• In the normal case:

CSE 461 University of Washington 40

Frame 0

ACK 0Timeout Time

Sender Receiver

Frame 1

ACK 1

Page 41: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Stop-and-Wait (3)

•With ACK loss:

CSE 461 University of Washington 41

X

Frame 0

ACK 0Timeout

Sender Receiver

Page 42: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Stop-and-Wait (4)

•With ACK loss:

CSE 461 University of Washington 42

Frame 0

ACK 0

X

Frame 0

ACK 0Timeout

Sender Receiver

It’s a Resend!

Page 43: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Stop-and-Wait (5)

•With early timeout:

CSE 461 University of Washington 43

ACK 0

Frame 0

Timeout

Sender Receiver

Page 44: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Stop-and-Wait (6)

•With early timeout:

CSE 461 University of Washington 44

Frame 0

ACK 0

Frame 0

ACK 0

Timeout

Sender Receiver

It’s aResend

OK …

Page 45: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Limitation of Stop-and-Wait

• It allows only a single frame to be outstanding from the sender:• Good for LAN, not efficient for high latency communication

•Ex: R=1 Mbps, D = 50 ms• How many frames/sec? If R=10 Mbps?

CSE 461 University of Washington 45

Page 46: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window

•Generalization of stop-and-wait• Allows W frames to be outstanding• Can send W frames per round trip time (=2D)

• Various options for numbering frames/ACKs and handling loss• Will look at along with

CSE 461 University of Washington 46

Page 47: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

TCP

Page 48: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

TCP HeaderFrom https://nmap.org/book/tcpip-ref.html

Page 49: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

TCP Protocol

• TCP Consists of 3 primary phases:• Connection Establishment (Setup)

• Sliding Windows/Flow Control

• Connection Release (Teardown)

Page 50: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Connection Establishment

•Both sender and receiver must be ready before we start the transfer of data• Need to agree on a set of parameters

• e.g., the Maximum Segment Size (MSS)

• This is signaling• It sets up state at the endpoints

• Like “dialing” for a telephone call

CSE 461 University of Washington 50

Page 51: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 51

Three-Way Handshake• Used in TCP; opens connection for

data in both directions

• Each side probes the other with a fresh Initial Sequence Number (ISN)• Sends on a SYNchronize segment

• Echo on an ACKnowledge segment

• Chosen to be robust even against delayed duplicates

Active party(client)

Passive party(server)

Page 52: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 52

Three-Way Handshake (2)

•Three steps:• Client sends SYN(x)• Server replies with SYN(y)ACK(x+1)

• Client replies with ACK(y+1)• SYNs are retransmitted if lost

•Sequence and ack numbers carried on further segments

1

2

3

Active party(client)

Passive party(server)

Time

Page 53: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 53

Three-Way Handshake (3)

•Suppose delayed, duplicate copies of the SYN and ACK arrive at the server!• Improbable, but anyhow …

Active party(client)

Passive party(server)

Page 54: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 54

Three-Way Handshake (4)

•Suppose delayed, duplicate copies of the SYN and ACK arrive at the server!• Improbable, but anyhow …

•Connection will be cleanly rejected on both sides ☺

Active party(client)

Passive party(server)

X

XREJECT

REJECT

Page 55: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

TCP Connection State Machine

CSE 461 University of Washington 55

Both parties run instances of this state

machine

Page 56: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

TCP Release

•Follow the active party

CSE 461 University of Washington 56

Page 57: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

TCP Release

•Follow the passive party

CSE 461 University of Washington 57

Page 58: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

TCP Release

•Again, with states …

CSE 461 University of Washington 58

1

2

CLOSED

Active party Passive party

FIN_WAIT_1

CLOSE_WAIT

LAST_ACKFIN_WAIT_2

TIME_WAIT

CLOSED

ESTABLISHED

(timeout)

ESTABLISHED

Page 59: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

TIME_WAIT State

•Wait a long time after sending all segments and before completing the close• Two times the maximum segment lifetime of 60 seconds

•Why?• ACK might have been lost, in which case FIN will be resent

for an orderly close• Could otherwise interfere with a subsequent connection

CSE 461 University of Washington 59

Page 60: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Flow Control

Page 61: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Recall

•ARQ with one message at a time is Stop-and-Wait (normal case below)

CSE 461 University of Washington 61

Frame 0

ACK 0Timeout Time

Sender Receiver

Frame 1

ACK 1

Page 62: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Limitation of Stop-and-Wait

• It allows only a single message to be outstanding from the sender:• Fine for LAN (only one frame fit)• Not efficient for network paths with BD >> 1 packet

CSE 461 University of Washington 62

Page 63: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Limitation of Stop-and-Wait (2)

•Example: R=1 Mbps, D = 50 ms• RTT (Round Trip Time) = 2D = 100 ms

• How many packets/sec?

• What if R=10 Mbps?

CSE 461 University of Washington 63

Page 64: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window

•Generalization of stop-and-wait• Allows W packets to be outstanding• Can send W packets per RTT (=2D)

• Pipelining improves performance • Need W=2BD to fill network path

CSE 461 University of Washington 64

Page 65: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window (2)

• What W will use the network capacity?

• Ex: R=1 Mbps, D = 50 ms

• Ex: What if R=10 Mbps?

CSE 461 University of Washington 65

Page 66: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window (3)

•Ex: R=1 Mbps, D = 50 ms• 2BD = 106 b/sec x 100. 10-3 sec = 100 kbit• W = 2BD = 10 packets of 1250 bytes

•Ex: What if R=10 Mbps?• 2BD = 1000 kbit• W = 2BD = 100 packets of 1250 bytes

CSE 461 University of Washington 66

Page 67: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window Protocol

•Many variations, depending on how buffers, acknowledgements, and retransmissions are handled

•Go-Back-N• Simplest version, can be inefficient

•Selective Repeat• More complex, better performance

CSE 461 University of Washington 67

Page 68: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Sender

•Sender buffers up to W segments until they are acknowledged• LFS=LAST FRAME SENT, LAR=LAST ACK REC’D• Sends while LFS – LAR ≤ W

CSE 461 University of Washington 68

.. 5 6 7 .. 2 3 4 5 2 3 ..

LAR LFS

W=5

Acked Unacked 3 ..Unavailable

Available

seq. number

SlidingWindow

Page 69: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Sender (2)

•Transport accepts another segment of data from the Application ...• Transport sends it (as LFS–LAR 5)

CSE 461 University of Washington 69

.. 5 6 7 .. 2 3 4 5 2 3 ..

LAR

W=5

Acked Unacked 3 ..Unavailable

Sent

seq. number

SlidingWindow

LFS

Page 70: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Sender (3)

•Next higher ACK arrives from peer…• Window advances, buffer is freed • LFS–LAR 4 (can send one more)

CSE 461 University of Washington 70

.. 5 6 7 .. 2 3 4 5 2 3 ..

LAR

W=5

Acked Unacked 3 ..Unavailable

Available

seq. number

SlidingWindow

LFS

Page 71: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Go-Back-N

•Receiver keeps only a single packet buffer for the next segment• State variable, LAS = LAST ACK SENT

•On receive:• If seq. number is LAS+1, accept and pass it to app, update

LAS, send ACK• Otherwise discard (as out of order)

CSE 461 University of Washington 71

Page 72: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Selective Repeat

• Receiver passes data to app in order, and buffers out-of-order segments to reduce retransmissions

• ACK conveys highest in-order segment, plus hints about out-of-order segments

• TCP uses a selective repeat design; we’ll see the details later

CSE 461 University of Washington 72

Page 73: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Selective Repeat (2)

•Buffers W segments, keeps state variable LAS = LAST

ACK SENT

•On receive:• Buffer segments [LAS+1, LAS+W] • Send app in-order segments from LAS+1, and update LAS

• Send ACK for LAS regardless

CSE 461 University of Washington 73

Page 74: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Retransmissions

•Go-Back-N uses a single timer to detect losses• On timeout, resends buffered packets starting at LAR+1

•Selective Repeat uses a timer per unacked segment to detect losses• On timeout for segment, resend it

• Hope to resend fewer segments

CSE 461 University of Washington 74

Page 75: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sequence Numbers

•Need more than 0/1 for Stop-and-Wait …• But how many?

• For Selective Repeat, need W numbers for packets, plus W for acks of earlier packets• 2W seq. numbers• Fewer for Go-Back-N (W+1)

•Typically implement seq. number with an N-bit counter that wraps around at 2N—1 • E.g., N=8: …, 253, 254, 255, 0, 1, 2, 3, …

CSE 461 University of Washington 75

Page 76: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sequence Time Plot

CSE 461 University of Washington 76

Time

Seq

. N

um

ber

Acks(at Receiver)

Delay (=RTT/2)

Transmissions(at Sender)

Page 77: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sequence Time Plot (2)

CSE 461 University of Washington 77

Time

Seq

. N

um

ber

Go-Back-N scenario

Page 78: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sequence Time Plot (3)

CSE 461 University of Washington 78

Time

Seq

. N

um

ber Loss

Timeout

Retransmissions

Page 79: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Problem

•Sliding window has pipelining to keep network busy• What if the receiver is overloaded?

CSE 461 University of Washington 79

Streaming video

Big Iron Wee Mobile

Arg …

Page 80: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Receiver

•Consider receiver with W buffers• LAS=LAST ACK SENT, app pulls in-order data from buffer with

recv() call

CSE 461 University of Washington 80

SlidingWindow

.. 5 6 7 5 2 3 ..

LAS

W=5

Finished 3 ..Too high

seq. number

555 5Acceptable

Page 81: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Receiver (2)

•Suppose the next two segments arrive but app does not call recv()

CSE 461 University of Washington 81

.. 5 6 7 5 2 3 ..

LAS

W=5

Finished 3 ..Too high

seq. number

555 5Acceptable

Page 82: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Receiver (3)

•Suppose the next two segments arrive but app does not call recv()• LAS rises, but we can’t slide window!

CSE 461 University of Washington 82

.. 5 6 7 5 2 3 ..

LAS

W=5

Finished 3 ..Too high

seq. number

555 5Acked

Page 83: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Receiver (4)

•Further segments arrive (in order) we fill buffer • Must drop segments until app recvs!

CSE 461 University of Washington 83

NothingAcceptable!

.. 5 6 7 5 2 3 ..

W=5

Finished 3 ..Too high

seq. number

555 5Acked

LAS

Page 84: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Sliding Window – Receiver (5)

•App recv() takes two segments• Window slides (phew)

CSE 461 University of Washington 84

Acceptable

.. 5 6 7 5 2 3 ..

W=5

Finished 3 ..

seq. number

555 5Acked

LAS

Page 85: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Flow Control

•Avoid loss at receiver by telling sender the available buffer space• WIN=#Acceptable, not W (from LAS)

CSE 461 University of Washington 85

Acceptable

.. 5 6 7 5 2 3 ..

W=5

Finished 3 ..

seq. number

555 5Acked

LAS

Page 86: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Flow Control (2)

•Sender uses lower of the sliding window and flow control window (WIN) as the effective window size

CSE 461 University of Washington 86

Acceptable

.. 5 6 7 5 2 3 ..

LAS

W=3

Finished 3 ..Too high

seq. number

555 5Acked

Page 87: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

CSE 461 University of Washington 87

Flow Control (3)

•TCP-style example• SEQ/ACK sliding window• Flow control with WIN

• SEQ + length < ACK+WIN

• 4KB buffer at receiver

• Circular buffer of bytes

Page 88: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Topic

•How to set the timeout for sending a retransmission• Adapting to the network path

CSE 461 University of Washington 88

Lost?

Network

Page 89: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Retransmissions

•With sliding window, detecting loss with timeout• Set timer when a segment is sent

• Cancel timer when ack is received• If timer fires, retransmit data as lost

CSE 461 University of Washington 89

Retransmit!

Page 90: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Timeout Problem

•Timeout should be “just right”• Too long wastes network capacity• Too short leads to spurious resends• But what is “just right”?

•Easy to set on a LAN (Link)• Short, fixed, predictable RTT

•Hard on the Internet (Transport)• Wide range, variable RTT

CSE 461 University of Washington 90

Page 91: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Example of RTTs

CSE 461 University of Washington 91

0

100

200

300

400

500

600

700

800

900

1000

0 20 40 60 80 100 120 140 160 180 200

Ro

un

d T

rip

Tim

e (m

s)BCNSEABCN

Seconds

Page 92: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Example of RTTs (2)

CSE 461 University of Washington 92

0

100

200

300

400

500

600

700

800

900

1000

0 20 40 60 80 100 120 140 160 180 200

Ro

un

d T

rip

Tim

e (m

s) Variation due to queuing at routers, changes in network paths, etc.

BCNSEABCN

Propagation (+transmission) delay ≈ 2D

Seconds

Page 93: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Example of RTTs (3)

CSE 461 University of Washington 93

0

100

200

300

400

500

600

700

800

900

1000

0 20 40 60 80 100 120 140 160 180 200

Ro

un

d T

rip

Tim

e (m

s)

Timer too high!

Timer too low!

Need to adapt to the network conditions

Seconds

Page 94: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Adaptive Timeout

• Smoothed estimates of the RTT (1) and variance in RTT (2)• Update estimates with a moving average

1. SRTTN+1 = 0.9*SRTTN + 0.1*RTTN+1

2. SvarN+1 = 0.9*SvarN + 0.1*|RTTN+1– SRTTN+1|

• Set timeout to a multiple of estimates• To estimate the upper RTT in practice

• TCP TimeoutN = SRTTN + 4*SvarN

CSE 461 University of Washington 94

Page 95: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Example of Adaptive Timeout

CSE 461 University of Washington 95

0

100

200

300

400

500

600

700

800

900

1000

0 20 40 60 80 100 120 140 160 180 200

RT

T (m

s)

SRTT

Svar

Seconds

Page 96: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Example of Adaptive Timeout (2)

CSE 461 University of Washington 96

0

100

200

300

400

500

600

700

800

900

1000

0 20 40 60 80 100 120 140 160 180 200

RT

T (m

s)

Timeout (SRTT + 4*Svar)

Earlytimeout

Seconds

Page 97: Transport Layer (TCP/UDP) - courses.cs.washington.edu · •Flow control (TCP) •Retransmission timers (TCP) •Congestion control (TCP) CSE 461 University of Washington 13. UDP

Adaptive Timeout (2)

•Simple to compute, does a good job of tracking actual RTT• Little “headroom” to lower• Yet very few early timeouts

•Turns out to be important for good performance and robustness

CSE 461 University of Washington 97