Transport Protocols Kameswari Chebrolu Dept. of Electrical - - PowerPoint PPT Presentation

transport protocols
SMART_READER_LITE
LIVE PREVIEW

Transport Protocols Kameswari Chebrolu Dept. of Electrical - - PowerPoint PPT Presentation

Transport Protocols Kameswari Chebrolu Dept. of Electrical Engineering, IIT Kanpur End-to-End Protocols Convert host-to-host packet delivery service into a process-to-process communication channel Demultiplexing: Multiple applications


slide-1
SLIDE 1

Transport Protocols

Kameswari Chebrolu

  • Dept. of Electrical Engineering, IIT Kanpur
slide-2
SLIDE 2

End-to-End Protocols

  • Convert host-to-host packet delivery service into

a process-to-process communication channel

– Demultiplexing: Multiple applications can share the

network

  • End points identified by ports

– Ports are not interpreted globally – servers have well defined ports (look at /etc/services)

slide-3
SLIDE 3

Application Layer Expectations

  • Guaranteed message delivery
  • Ordered delivery
  • No duplication
  • Support arbitrarily large messages
  • Synchronization between the sender and receiver
  • Support flow control
  • Support demultiplexing
slide-4
SLIDE 4

Limitations of Networks

  • Packet Losses
  • Re-ordering
  • Duplicate copies
  • Limit on maximum message size
  • Long delays
slide-5
SLIDE 5

User Datagram Protocol (UDP)

SrcPort DstPort Checksum Length Data

16 31

Application process Application process Application process UDP Packets arrive Ports Queues Packets demultiplexed

Demultiplexing UDP Header Computes checksum

  • ver UDP header,

message body and pseudo-header

slide-6
SLIDE 6

Transmission Control Protocol (TCP)

  • Connection oriented

– Maintains state to provide reliable service

  • Byte-stream oriented

– Handles byte streams instead of messages

  • Full Duplex

– Supports flow of data in each direction

  • Flow-control

– Prevents sender from overrunning the receiver

  • Congestion-control

– Prevents sender from overloading the network

slide-7
SLIDE 7

TCP Cont...

Application process Write bytes TCP Send buffer Segment Segment Segment Transmit segments Application process Read bytes TCP Receive buffer

■■■

slide-8
SLIDE 8

TCP Header Format

Options (variable) Data Checksum SrcPort DstPort HdrLen Flags UrgPtr AdvertisedWindow SequenceNum Acknowledgment 4 10 16 31 Sender Data (SequenceNum) Acknowledgment + AdvertisedWindow Receiver

slide-9
SLIDE 9

Connection Establishment

Active participant

(client) (server) SYN, SequenceNum = x ACK, Acknowledgment =y+1 A c k n

  • w

l e d g m e n t = x + 1 S Y N + A C K , S e q u e n c e N u m = y ,

slide-10
SLIDE 10

State Transition Diagram

slide-11
SLIDE 11

Sliding Window: Data Link vs Transport

P2P: End points can be engineered to support the link TCP: Any kind of computer can be connected to the Internet

➢ Need mechanism for each side to learn other side's resources

(e.g. buffer space) -- Flow control P2P: Not possible to unknowingly congest the link TCP: No idea what links will be traversed, network capacity can dynamically vary due to competing traffic

Need mechanism to alter sending rate in response to network congestion – Congestion control

slide-12
SLIDE 12

Sliding Window: Data Link vs Transport

P2P: Dedicated Link -- Physical Link connects the same two computers TCP: Connects two processes on any two machines in the Internet

Needs explicit connection establishment phase to exchange state P2P: Fixed round trip transmission time (RTT) TCP: Potentially different and widely varying RTTs

Timeout mechanism has to be adaptive P2P: No Reordering TCP: Scope for reordering due to arbitrary long delays

Need to be robust against old packets showing up suddenly

slide-13
SLIDE 13

Slow Start

  • Add a variable cwnd (congestion window)
  • At start, set cwnd=1
  • On each ack for new data, increase cwnd by 1
  • When sending, send the minimum of receiver's

advertised window or cwnd

slide-14
SLIDE 14
slide-15
SLIDE 15

Congestion Avoidance

(Additive Increase, Multiplicative Decrease)

  • On detecting congestion, set cwnd to half the

window size (multiplicative decrease)

  • On each ack of new data, increase cwnd by

1/cwnd (additive increase)

slide-16
SLIDE 16

Combining Slow Start and Congestion Avoidance

  • Two variables cwnd and ssthresh
  • On time out, set ssthresh = cwnd/2; cwnd = 1
  • When new data is acked,

– If (cwnd < ssthresh) cwnd += 1; – Else cwnd += 1/cwnd;

slide-17
SLIDE 17

Congestion Window vs Time

Cwnd Cwnd/2 Slow Start Waiting for Timeout Timeout Slow Start Congestion Avoidance Time

slide-18
SLIDE 18

Fast Retransmit & Fast Recovery

  • Fast Retransmit: Retransmit packet at sender after

3 duplicate acks

  • Fast Recovery

– On 3rd dupack, retransmit packet, ssthresh = min

(cwnd/2,2); cwnd = ssthresh+3

– Another dupack, cwnd = cwnd +1; transmit packet if

allowed by cwnd

– On ack acknowledging new data, cwnd = ssthresh,

invoke congestion avoidance (linear increase in cwnd now on)

slide-19
SLIDE 19

Saw Tooth Pattern

(With fast retransmit and recovery)

60 20 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 Time (seconds) 70 30 40 50 10 10.0

slide-20
SLIDE 20

Sliding Window Recap

Sending application LastByteWritten TCP LastByteSent LastByteAcked Receiving application TCP LastByteRead NextByteExpected LastByteRcvd

Sending Side:

  • LastByteAcked <= LastByteSent
  • LastByteSent <= LastByteWritten
  • Buffer bytes between

LastByteAcked and LastByteWritten Receiving Side:

  • LastByteRead <= NextByteExpected
  • NextByteExpected <=

LastByteRcvd+1

  • Buffer bytes between LastByteRead

and LastByteRcvd

slide-21
SLIDE 21

Flow & Congestion Control

  • Buffers are of finite size

– MaxSendBuffer and MaxRcvBuffer

  • Receiving side:

– LastByteRcvd – LastByteRead <= MaxRcvBuffer – AdvertisedWindow = MaxRcvBuffer – ((NextByteExpected – 1) –

LastByteRead)

  • Sending side:

– MaxWindow = min (cwnd, AdvertisedWindow)

– EffectiveWindow = MaxWindow – (LastByteSent –

LastByteAcked)

– LastByteWritten – LastByteAcked <= MaxSendBuffer – Persist when AdvertisedWindow is zero

slide-22
SLIDE 22

RTT Estimation: Original Algorithm

  • Measure SampleRTT for sequence/ack combo
  • EstimatedRTT = a*EstimatedRTT + (1-a)*SampleRTT

– a is between 0.8-0.9 – small a heavily influenced by temporary fluctuations – large a not quick to adapt to real changes

  • Timeout = 2 * EstimatedRTT
slide-23
SLIDE 23

Jacobson/Karels Algorithm

  • Incorrect estimation of RTT worsens congestion
  • Algorithm takes into account variance of RTTs

– If variance is small, EstimatedRTT can be trusted – If variance is large, timeout should not depend

heavily on EstimatedRTT

slide-24
SLIDE 24

Jacobson/Karels Algorithm Cont..

  • Difference = SampleRTT - EstimatedRTT
  • EstimatedRTT = EstimatedRTT + ( d *

Difference)

  • Deviation = Deviation + d ( |Difference| -

Deviation)), where d ~ 0.125

  • Timeout = u * EstimatedRTT + q * Deviation,

where u = 1 and q = 4

  • Exponential RTO backoff
slide-25
SLIDE 25

Protection Against Wraparound

  • Wraparound occurs because sequence number

field is finite

– 32 bit sequence number space

  • Solution: Use time stamp option
  • Maximum Segment Lifetime (MSL) is 120 sec

Bandwidth Time until Wraparound T1 (1.5Mbps) 6.6 hrs Ethernet (10Mbps) 57 minutes T3 (45 Mbps) 13 minutes FDDI (100Mbps) 6 minutes STS-3 (155Mbps) 4 minutes STS-12 (622Mbps) 55 seconds STS-24 (1.2Gbps) 28 seconds

slide-26
SLIDE 26

Summary

  • Transport protocols essentially demultiplexing

functionality

  • Examples: UDP, TCP, RTP
  • TCP is a reliable connection-oriented byte-stream

protocol

– Sliding window based – Provides flow and congestion control

slide-27
SLIDE 27

Must Reads

  • D. Clark, "The Design Philosophy of the DARPA

Internet Protocols", SIGCOMM, Palo Alto, CA, Sept 1988, pp. 106-114

  • J. Saltzer, D. Reed, and D. Clark, "End-to-end

Arguments in System Design". ACM Transactions on Computer Systems (TOCS), Vol. 2, No. 4, 1984, pp. 195-206

  • Van Jacobson, "Congestion Avoidance and Control",

ACM SIGCOMM, 1988