Presentation on theme: "School of Information Technologies Transmission Control Protocol (TCP) NETS3303/3603 Week 8."— Presentation transcript:
School of Information Technologies Transmission Control Protocol (TCP) NETS3303/3603 Week 8
School of Information Technologies Outcomes Learn the mechanisms of TCP –How they operate –How they are implemented What are the limitations of TCP Retransmission and congestion control
School of Information Technologies Intro TCP - Transmission Control Protocol reliable, connection-oriented stream (point to point) protocol –if UDP is like Aus Post –TCP is like a one-to-one phone call (cannot broadcast/multicast)
School of Information Technologies Intro RFC 793 and host requirements 1122 TCP has own jargon: –Socket: a communication endpoint –segment: a TCP packet –MSS: maximum segment size, max pkt one TCP side can send another, negotiated at connection time –port: application identifier
School of Information Technologies TCP Properties stream orientation. stream of bytes passed between send/recv connection is full duplex –think of it as two independent streams joined with piggybacking mechanism piggybacking - one data stream has control info for the other data stream unstructured stream –doesn’t show packet boundaries to applications
School of Information Technologies TCP Properties virtual circuit connection –client connects and server listens/accepts –i/o transfers don’t have remote peer address Buffered Transfer –Send and receive buffers for flow control Reliability!
School of Information Technologies Providing Reliability Traditional technique: Positive Acknowledgement with Retransmission (PAR) –Receiver sends acknowledgement when data arrives –Sender starts timer whenever transmitting –Sender retransmits if timer expires before acknowledgement arrives
School of Information Technologies The Problem With Simplistic PAR This wastes a substantial network bandwidth because it must delay sending a new packet until it receives an ack for the previous packet
School of Information Technologies Solving The Problem Allow multiple packets to be outstanding at any time Still require acknowledgements and retransmission –For reliability Known as sliding window
School of Information Technologies Why Sliding Window Works Because a well-tuned sliding window protocol keeps the network completely saturated with packets –it obtains substantially higher throughput than a simple positive ack protocol
School of Information Technologies Sliding Window Used By TCP Measured in byte positions Bytes through 2 are acknowledged Bytes 3 through 6 not yet acknowledged Bytes 7 though 9 waiting to be sent Bytes above 9 lie outside the window and cannot be sent
School of Information Technologies Sliding Window TCP can use cumulative ACK e.g., ACK up to #7 tcp uses bytes not packets for sequencing recv-side controls sliding window –Based on its available buffer space –Can stop sending by telling it window size is 0 in ACK, thus flow control
School of Information Technologies TCP Flow Control Differs from mechanism used in LLC, HDLC and other data link protocols: –Decouples ack of received data units from granting permission to send more TCP’s flow control is known as a credit allocation scheme: –And each transmitted octet has a sequence number
School of Information Technologies Flow Control And TCP Window Receiver controls flow by telling sender size of currently available buffer measured in bytes –Called window advertisement Each segment, including data segments, specifies size of window beyond acknowledged byte Window size may be 0 (receiver cannot accept additional data at present) Receiver can send additional ack later when buffer space becomes available
School of Information Technologies TCP Header Fields for Flow Control Sequence number (SN) of first octet/byte in data segment Acknowledgement (ACK) number (AN) next octet to receive, (if any) Window (W) If ACK contains AN = i, W = j: Octets through SN = i - 1 acknowledged Permission is granted to send W = j more octets, i.e., from octets i through i + j - 1
School of Information Technologies TCP Credit Allocation Mechanism
School of Information Technologies Credit Allocation is Flexible Suppose last message B issued was AN = i, W = j: To increase credit to k (k > j) when no new data, B issues AN = i, W = k To acknowledge a segment containing m octets (m < j) without allocating more credit, B issues AN = i + m, W = j – m
School of Information Technologies TCP encapsulation
School of Information Technologies Silly Window Syndrome Problem when sending application creates data slowly or the receiving app consumes slowly –Significantly reduces network efficiency Smalls windows are advertised and small segments are sent E.g.: a 1-byte data segment would have 54 bytes overhead => 98%!!
School of Information Technologies Solution for SWS by Sender Serving application creates data slowly, may be 1 byte at a time Solutions using Nagle’s algorithm: –Sending TCP sends first data piece immediately –Subsequently, it accumulates data until receiving ack or enough data to fill MSS. Then, it sends it.
School of Information Technologies Solution for SWS by Receiver Serving an app consuming slowly Buffer gets full quickly and advertised 0 window; and then a small window ad for a long time Solution Delayed Acknowledgement: –When a segment arrives, don’t ack immediately –Waits until decent space but not more 500 ms to ack
School of Information Technologies TCP Header Hlen
School of Information Technologies Header Explained header sent in every TCP packet –Sometimes may just be control message (SYN/FIN/ACK) with no data view TCP as 2 sender/recv data streams with control information sent back the other way (piggybacking)
School of Information Technologies Header source port: 16 bits, the TCP source port destination port: 16 bits, note ports in 1st 8 bytes sequence number: 1st data octet in this segment (from send to recv): 32 bit space (ISN) ack: if ACK flag set, next expected sequence number (piggybacking; i.e., we are talking about the flow the other way)
School of Information Technologies Header hlen: # of 4-byte words in header (e.g. 5 means 20 bytes) Reserved bits: not used flags –URG: - urgent pointer field significant –ACK:- ack field significant (this pkt is an ACK!) –PSH: - push function (mostly ignored) –RST: - reset (give up on) the connection (error) –SYN: - initial synchronization packet (start connect) –FIN: - final hangup packet (end connect)
School of Information Technologies Header window: window size, begins with ACK field that recv-side will accept (piggyback) checksum: 16 bits –Includes 12-byte IP pseudo-header, tcp header, and data urgent pointer: offset from sequence number, points to data following urgent data, URG flag must be set options - e.g., Max Segment Size (MSS), timestamp
School of Information Technologies TCP Ports, Connections, And Endpoints Endpoint of communication is application program TCP uses protocol port number to identify application TCP connection between two endpoints identified by four items –Sender’s IP address –Sender’s protocol port number –Receiver’s IP address –Receiver’s protocol port number
School of Information Technologies TCP Open / Close Two sides of a connection One side waits for contact –A server program –Uses TCP’s passive open One side initiates contact –A client program –Uses TCP’s active open
School of Information Technologies Three-way handshake
School of Information Technologies TCP Open state-machine
School of Information Technologies Closing TCP connection connections are full duplex and it is possible to shutdown one side at a time close closes everything involves two 2-way handshakes (send FIN, recv replies with ACK per channel) –Modified three-way handshake interesting problem: how do you make sure last ACK got there (can’t ACK it...)?
School of Information Technologies TCP Close State-machine
School of Information Technologies First FIN cost both apps could close first and send FIN, hence left side is more complex –but state machine supports async close (right side) TIME_WAIT state is used to deal with unreliable delivery, must wait 2 MSL (max segment length) time, 1 or 2 minutes typically –Wait for any duplicate segments to arrive before closing
School of Information Technologies Some TCP Protocol Mechanisms flow control adaptive retransmission + backoff congestion control
School of Information Technologies TCP Retransmission Designed for Internet environment –Delays on one connection vary over time –Delays vary widely between connections Fixed value for timeout will fail –Waiting too long introduces unnecessary delay –Not waiting long enough wastes network bandwidth with unnecessary retransmission Retransmission strategy must be adaptive
School of Information Technologies Adaptive Retransmission TCP keeps estimate of round-trip time (RTT) on each connection RTT derived from observed delay between sending segment and receiving ack Timeout for retransmission based on current round-trip estimate
School of Information Technologies Difficulties With Adaptive Retransmission The problem is knowing when to retransmit Segments or ACKs can be lost or delayed, making RTT estimation difficult or inaccurate RTTs vary over several orders of magnitude between different connections Traffic is bursty, so RTTs fluctuate wildly on a single connection!
School of Information Technologies Solution: Smoothing Adaptive retransmission schemes keep a statistically smoothed round-trip estimate Smoothing keeps running average from fluctuating wildly –keeps TCP from overreacting to change Difficulty: choice of smoothing scheme!
School of Information Technologies Retransmission Timer Management Three Techniques to calculate RTO: 1.RTT Variance Estimation 2.Exponential RTO Backoff 3.Karn’s Algorithm
School of Information Technologies RTT Variance Estimation (Jacobson’s Algorithm) 3 sources of high variance in RTT: If data rate relatively low, then transmission delay (T) will be relatively large, with larger variance due to variance in packet size Load may change abruptly due to other sources Peer may not acknowledge segments immediately So, using only smoothed RTT is insufficient –need to consider delay variance too
School of Information Technologies Jacobson’s Algorithm Initial RTO value typically reflects Ethernet delay Update RTO using returning acks based on average and variance SRTT(K + 1) = (1 – g) × SRTT(K) + g × RTT(K + 1) SERR(K + 1) = RTT(K + 1) – SRTT(K) SDEV(K + 1) = (1 – h) × SDEV(K) + h × |SERR(K + 1)| SDEV is a RTT variability factor RTO(K + 1) = SRTT(K + 1) + 4 × SDEV(K + 1) g = 0.125 h = 0.25
School of Information Technologies TCP Round-Trip Estimation
School of Information Technologies Two Other Factors Jacobson’s algorithm can significantly improve TCP performance, but: What RTO to use for retransmitted segments? ANSWER: exponential RTO backoff algorithm Which round-trip samples to use as input to Jacobson’s algorithm? ANSWER: Karn’s algorithm
School of Information Technologies Exponential RTO Backoff Loss indicates congestion; multiple losses more severe congestion! So, it’s a form of congestion control Increase RTO each time the same segment retransmitted – backoff process Multiply RTO by constant: RTO = q × RTO When q = 2 is called binary exponential backoff (similar to Ethernet backoff)
School of Information Technologies Which RTT Samples to Consider? If an ack is received for retransmitted segment, there are 2 possibilities: 1.Ack is for first transmission 2.Ack is for second transmission TCP source cannot distinguish these 2 cases No valid way to calculate RTT: –From first transmission to ack, or –From second transmission to ack?
School of Information Technologies Karn’s Algorithm Do not use measured RTT of retransmitted segments to update SRTT and SDEV Calculate backoff RTO when a retransmission occurs Use backoff RTO for segments until an ACK arrives for a segment that has not been retransmitted –Then Jacobson’s algorithm is reactivated to calculate RTO
School of Information Technologies Summary Of TCP Major transport service in the Internet (85% of traffic) Connection oriented Provides end-to-end reliability Uses adaptive retransmission Includes facilities for flow control and congestion avoidance Uses 3-way handshake for connection startup and shutdown