Presentation is loading. Please wait.

Presentation is loading. Please wait.

5/8/20151 TCP. 5/8/20152 TCP Adaptive Retransmission Algorithm - Original Theory  Estimate RTT  Multiply by 2 to allow for variations Practice  Use.

Similar presentations


Presentation on theme: "5/8/20151 TCP. 5/8/20152 TCP Adaptive Retransmission Algorithm - Original Theory  Estimate RTT  Multiply by 2 to allow for variations Practice  Use."— Presentation transcript:

1 5/8/20151 TCP

2 5/8/20152 TCP Adaptive Retransmission Algorithm - Original Theory  Estimate RTT  Multiply by 2 to allow for variations Practice  Use exponential moving average (A = 0.1 to 0.2)  Estimate = (A) * measurement + (1- A) * estimate Problem  Did not handle variations well  Ambiguity for retransmitted packets Was ACK in response to first, second, etc transmission?

3 5/8/20153 TCP Adaptive Retransmission Algorithm – Karn-Partridge Algorithm  Exclude retransmitted packets from RTT estimate  For each retransmission Double RTT estimate Exponential backoff from congestion Problem  Still did not handle variations well  Did not solve network congestion problems as well as desired

4 5/8/20154 TCP Adaptive Retransmission Algorithm – Jacobson Algorithm  Estimate variance of RTT Calculate mean interpacket RTT deviation to approximate variance Use second exponential moving average Deviation = (B) * |RTT_Estimate – Measurement| + (1–B) * deviation B = 0.25, A = for RTT_estimate  Use variance estimate as component of RTT estimate Next_RTT = RTT_Estimate + 4 * Deviation  Protects against high jitter Notes  Algorithm is only as good as the granularity of the clock  Accurate timeout mechanism is important for congestion control

5 5/8/20155 TCP Connection Establishment 3-Way Handshake  Sequence Numbers J,K  Message Types Synchronize (SYN) Acknowledge (ACK)  Passive Open Server listens for connection from client  Active Open Client initiates connection to server Synchronize (SYN) J SYN K, acknowledge (ACK) J+1 ACK K+1 ClientServer Time flows down listen

6 5/8/20156 TCP Connection Termination Message Types  Finished (FIN)  Acknowledge (ACK) Active Close  Sends no more data Passive close  Accepts no more data Finished (FIN) J ACK J+1 ACK K+1 ClientServer Time flows down FIN K

7 5/8/20157 TCP Connection Management (cont) TCP client lifecycle TCP server lifecycle

8 5/8/20158 TCP State Descriptions CLOSEDDisconnected LISTENWaiting for incoming connection SYN_RCVDConnection request received SYN_SENTConnection request sent ESTABLISHEDConnection ready for data transport CLOSE_WAITConnection closed by peer LAST_ACKConnection closed by peer, closed locally, await ACK FIN_WAIT_1Connection closed locally FIN_WAIT_2Connection closed locally and ACK’d CLOSINGConnection closed by both sides simultaneously TIME_WAITWait for network to discard related packets CLOSEDDisconnected LISTENWaiting for incoming connection SYN_RCVDConnection request received SYN_SENTConnection request sent ESTABLISHEDConnection ready for data transport CLOSE_WAITConnection closed by peer LAST_ACKConnection closed by peer, closed locally, await ACK FIN_WAIT_1Connection closed locally FIN_WAIT_2Connection closed locally and ACK’d CLOSINGConnection closed by both sides simultaneously TIME_WAITWait for network to discard related packets CLOSEDDisconnected LISTENWaiting for incoming connection SYN_RCVDConnection request received SYN_SENTConnection request sent ESTABLISHEDConnection ready for data transport CLOSE_WAITConnection closed by peer LAST_ACKConnection closed by peer, closed locally, await ACK FIN_WAIT_1Connection closed locally FIN_WAIT_2Connection closed locally and ACK’d CLOSINGConnection closed by both sides simultaneously TIME_WAITWait for network to discard related packets CLOSEDDisconnected LISTENWaiting for incoming connection SYN_RCVDConnection request received SYN_SENTConnection request sent ESTABLISHEDConnection ready for data transport CLOSE_WAITConnection closed by peer LAST_ACKConnection closed by peer, closed locally, await ACK FIN_WAIT_1Connection closed locally FIN_WAIT_2Connection closed locally and ACK’d CLOSINGConnection closed by both sides simultaneously TIME_WAITWait for network to discard related packets

9 5/8/20159 TCP State Transition Diagram CLOSED ESTABLISHED LISTEN SYN_RCVDSYN_SENT FIN_WAIT_1 FIN_WAIT_2 CLOSING TIME_WAIT CLOSE_WAIT LAST_ACK Passive open Close/FIN ACK SYN/SYN + ACK Active open/SYN Close SYN/SYN + ACK Timeout FIN + ACK/ACK SYN + ACK/ACK Send/SYN ACK FIN/ACK Close/ACK FIN/ACK Close/FIN

10 5/8/ TCP State Transition Diagram Questions  State transitions Describe the path taken by a server under normal conditions Describe the path taken by a client under normal conditions Describe the path taken assuming the client closes the connection first  TIME_WAIT state What purpose does this state serve Prove that at least one side of a connection enters this state Explain how both sides might enter this state

11 5/8/ TCP State Transition Diagram CLOSED ESTABLISHED LISTEN SYN_RCVDSYN_SENT Passive open SYN/SYN + ACK Active open/SYN Close SYN/SYN + ACK SYN + ACK/ACK ACK Passive open SYN/SYN + ACK ACK Active open/SYN SYN + ACK/ACK Send/SYN SYN/SYN + ACK TCP A TCP B 1. CLOSED LISTEN 2. SYN-SENT --> --> SYN-RECEIVED 3. ESTABLISHED <-- SYN-RECEIVED 4. ESTABLISHED --> --> ESTABLISHED 5. ESTABLISHED --> --> ESTABLISHED

12 5/8/ TCP State Transition Diagram CLOSED ESTABLISHED LISTEN SYN_RCVDSYN_SENT FIN_WAIT_1 FIN_WAIT_2 CLOSING TIME_WAIT CLOSE_WAIT LAST_ACK Passive open Close/FIN SYN/SYN + ACK Active open/SYN Close SYN/SYN + ACK Timeout SYN + ACK/ACK ACK FIN/ACK Close/FIN FIN/ACK Close/FIN ACK Send/SYN Close/FIN ACK FIN/ACK Timeout FIN/ACK Close/FIN ACK Close/FIN FIN/ACK ACK Timeout Close/FIN Timeout FIN + ACK/ACK FIN + ACK/ACK

13 5/8/ TCP Sliding Window Protocol Sequence numbers  Indices into byte stream ACK sequence number  Actually next byte expected as opposed to last byte received Advertised window  Enables dynamic receive window size Receive buffers  Data ready for delivery to application until requested  Out-of-order data out to maximum buffer capacity Sender buffers  Unacknowledged data  Unsent data out to maximum buffer capacity

14 5/8/ TCP Sliding Window Protocol – Sender Side LastByteAcked <= LastByteSent LastByteSent <= LastByteWritten Buffer bytes between LastByteAcked and LastByteWritten First unacknowledged byte Last byte sent Data available, but outside window Maximum buffer size Advertised window

15 5/8/ TCP Sliding Window Protocol – Receiver Side LastByteRead < NextByteExpected NextByteExpected <= LastByteRcvd + 1 Buffer bytes between NextByteRead and LastByteRcvd Next byte to be read by application Next byte expected (ACK value) Buffered, out-of-order data Maximum buffer size Advertised window

16 5/8/ TCP ACK generation - 1 Arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed  Delayed ACK. Wait up to 500ms for next segment. Next byte to be read by application Next byte expected (ACK value) Maximum buffer size Available buffer size

17 5/8/ TCP ACK generation - 2 Arrival of in-order segment with expected seq #. One other segment has ACK pending  Immediately send single cumulative ACK, ACKing both in- order segments Next byte to be read by application Next byte expected (ACK value) Maximum buffer size Available buffer size

18 5/8/ TCP ACK generation - 3 Arrival of out-of-order segment higher-than-expect seq. # Gap detected  Immediately send duplicate ACK, indicating seq. # of next expected byte Next byte to be read by application Next byte expected (ACK value) Maximum buffer size Available buffer size

19 5/8/ TCP ACK generation - 4 Arrival of segment that partially or completely fills gap  Immediate send ACK, provided that segment starts at lower end of gap Next byte to be read by application Next byte expected (ACK value) Maximum buffer size Available buffer size

20 5/8/ TCP ACK generation [RFC 1122, RFC 2581] Event at Receiver Arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed Arrival of in-order segment with expected seq #. One other segment has ACK pending Arrival of out-of-order segment higher-than-expect seq. #. Gap detected Arrival of segment that partially or completely fills gap TCP Receiver action Delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK Immediately send single cumulative ACK, ACKing both in-order segments Immediately send duplicate ACK, indicating seq. # of next expected byte Immediate send ACK, provided that segment starts at lower end of gap

21 5/8/ Fast Retransmit What’s the problem with time-out?  time-out period often relatively long Detect lost segments via duplicate ACKs.  Sender often sends many segments back- to-back  If segment is lost, there will likely be many duplicate ACKs. If sender receives 3 ACKs for the same data, it supposes that segment after ACKed data was lost:  fast retransmit: resend segment before timer expires Why 3?

22 5/8/ event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } else { increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) { resend segment with sequence number y } Fast retransmit algorithm: a duplicate ACK for already ACKed segment fast retransmit

23 5/8/ A 4 th situation? Next byte to be read by application Next byte expected (ACK value) Buffered, out-of-order data Maximum buffer size Available buffer size What if? Receiver side

24 5/8/ TCP Flow Control Sender First unacknowledged byte Last byte sent Data available, but outside window Maximum buffer size Sliding window Next byte to be read by application Next byte expected (ACK value) Buffered, out-of-order data Maximum buffer size Available buffer size Receiver Avoid?

25 5/8/ Flow Control vs. Congestion Control Flow control  Preventing senders from overrunning the capacity of the receivers Congestion control  Preventing too much data from being injected into the network, causing switches or links to become overloaded TCP provides both  flow control based on advertised window  congestion control discussed later in class

26 5/8/ TCP Flow Control Receiving side  Receive buffer size = MaxRcvBuffer  LastByteRcvd - LastByteRead < = MaxRcvBuffer  AdvertisedWindow = MaxRcvBuffer - (NextByteExpected - NextByteRead) Shrinks as data arrives and Grows as the application consumes data Sending side  Send buffer size = MaxSendBuffer  LastByteSent - LastByteAcked < = AdvertisedWindow  EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked) EffectiveWindow > 0 to send data  LastByteWritten - LastByteAcked < = MaxSendBuffer  block sender if (LastByteWritten - LastByteAcked) + y > MaxSenderBuffer

27 5/8/ TCP Flow Control Problem: Slow receiver application  Advertised window goes to 0  Sender cannot send more data  Non-data packets used to update window  Receiver may not spontaneously generate update or update may be lost Solution  Sender periodically sends 1-byte segment, ignoring advertised window of 0  Eventually window opens  Sender learns of opening from next ACK of 1-byte segment

28 5/8/ TCP Flow Control Problem: Application delivers tiny pieces of data to TCP  Example: telnet in character mode  Each piece sent as a segment, returned as ACK  Very inefficient Solution  Delay transmission to accumulate more data  Nagle’s algorithm Send first piece of data Accumulate data until first piece ACK’d Send accumulated data and restart accumulation Not ideal for some traffic (e.g. mouse motion)

29 5/8/ TCP Flow Control Problem: Slow application reads data in tiny pieces  Receiver advertises tiny window  Sender fills tiny window  Known as silly window syndrome Solution  Advertise window opening only when MSS or 1/2 of buffer is available  Sender delays sending until window is MSS or 1/2 of receiver’s buffer (estimated)

30 5/8/ TCP Bit Allocation Limitations Sequence numbers vs. packet lifetime  Assumed that IP packets live less than 60 seconds  Can we send 2 32 bytes in 60 seconds?  Less than an STS-12 line Advertised window vs. delay-bandwidth  Only 16 bits for advertised window  Cross-country RTT = 100 ms  Adequate for only 5.24 Mbps!

31 5/8/ TCP Sequence Numbers – 32-bit BandwidthSpeedTime until wrap around T11.5 Mbps6.4 hours Ethernet10 Mbps57 minutes T345 Mbps13 minutes FDDI100 Mbps6 minutes STS-3155 Mbps4 minutes STS Mbps55 seconds STS Gbps28 seconds

32 5/8/ TCP Advertised Window – 16-bit BandwidthSpeedMax RTT T11.5 Mbps350 ms Ethernet10 Mbps52.4 ms T345 Mbps11.6 ms FDDI100 Mbps5.2 ms STS-3155 Mbps3.4 ms STS Mbps843 µs STS Gbps437 µs


Download ppt "5/8/20151 TCP. 5/8/20152 TCP Adaptive Retransmission Algorithm - Original Theory  Estimate RTT  Multiply by 2 to allow for variations Practice  Use."

Similar presentations


Ads by Google