Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Transport Layer Flow control Connection management TCP, UDP 1 Announcements I hope you had a very happy Thanksgiving break! My sincere apologies for the Monday emergency cancellation!! SM5 is out. Due in one week. Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 2 Introduction Transport layer protocols are end-to-end protocols Transport layer is only implemented at the hosts HOST HOST Application Application Transport Transport Network Data Link Network Data Link Network Data Link Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher Data Link 3 Functions of the Transport Layer Reliability Connection Establishment Connection Termination Flow control Congestion control Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 4 Reliability How to achieve it? Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 5 Reliability How to achieve it? Send data in chunks (called packets) Number the packets sequentially at the sender Make sure all numbers are received without gaps Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 6 Reliability How to achieve it? Send data in chunks (called packets) Number the packets sequentially at the sender Make sure all numbers are received without gaps Acknowledge each packet number If sender sees an ack gap sender retransmits Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 7 Reliability How to achieve it? Send data in chunks (called packets) Number the packets sequentially at the sender Make sure all numbers are received without gaps Acknowledge each packet number If sender sees an ack gap sender retransmits Optimization: Cumulative acks (ACK N: acknowledge that all packets up to but not including packet N have been received). Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 8 Reliability How to achieve it? Send data in chunks (called packets) Number the packets sequentially at the sender Make sure all numbers are received without gaps Acknowledge each packet number If sender sees an ack gap sender retransmits Optimization: Cumulative acks (ACK N: acknowledge that all packets up to but not including packet N have been received). What about the number of the first packet? Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 9 Connection Establishment Connection establishment is asymmetric: one side puts itself in a LISTEN state (server) one side issues a request for connection (client) Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 10 Simple Solution (which has problems) Two Way Handshake Host A Host B CR (SeqN o = x) y) ACK (SeqNo = DATA(SeqN o = x) CR (SeqNo = x) Connection Request, A wants to start with SeqNo = x ACK (SeqNo = y) Acknowledge request, B will wants to start with SeqNo = y DATA (SeqNo = x) Data transmission with SeqNo x Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 11 Problems with Two-Way Handshake Host A Host B CR (Seq No CR (SeqN o = x) = y) qNo e S ( ACK DATA(SeqN o = x) = z) B responds to CR(SeqNo = z), an old duplicate connection requests from A In the shown scenario, A believes that the ACK is for the connection request CR(SeqNo = y) Result: A starts to send data with Sequence x. B will throw the data away since it expects SeqNo = z Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 12 Three-Way Handshake Host A Host B CR (SeqN o = x) y, ACK = x) ACK (SeqNo = DATA(SeqN o = x, ACK = y) Note: A and B acknowledge the sequence number from the other side This solution provides protection from old duplicate connection requests Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 13 Scenario 1 Duplicate connection request (CR) appears Host B Host A CR (Seq No = z) CR (SeqN o = x) =z) y , A CK = o N q e CK = x) A ACK (S , u = eqNo ACK (S REJ (ACK = y) DATA(S eqNo = x, ACK = u) Host A rejects the invalid connection request in the REJ(ACK=y) packet Note: The connection request CR(SeqNo=x) is completed successfully Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 14 Scenario 2 A duplicate acknowledgement (ACK) appears Host B Host A z) = CK CR (SeqN o = x) AC N Seq ( K A o= y, A ,A qN o = u e S ( K C CK = x) REJ (ACK DATA(S eqNo = x, ACK = u) = y) Host A rejects the invalid ACK by sending REJ(ACK=y) Note: The connection request CR(SeqNo=x) is completed successfully Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 15 Connection Termination A connection release should involve both sides of the connection (otherwise data is lost) Host A Host B CR () ACK () DATA() Here: B should wait after Disconnection Request (DR) is sent until all data has arrived DATA() DATA() DATA() DR () Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 16 Connection Termination in 4 steps An elegant way to terminate connections is to have each end shut down independently (“halfclose”) If one end wants to shut down, it sends a DR message Four steps involved: (1) A sends a DR to B (active close) (2) B ACKs the DR, (at this time: B can still send data to A) (3) and B sends a DR to A (passive close) (4) A ACKs the DR Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 17 Connection Termination in 4 steps Host B Host A DR ACK To account for packet losses, a timer is needed to limit the waiting time of a side DR ACK Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 18 TCP Segment Format • TCP segments have a 20 byte header with >= 0 bytes of data. IP header TCP header 20 bytes TCP data 20 bytes 0 15 16 Source Port Number 31 Destination Port Number Sequence number (32 bits) header length 0 Flags TCP checksum 20 bytes Acknowledgement number (32 bits) window size urgent pointer Options (if any) DATA Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 19 Flow Control Notion of window-based flow control: Have a window of packets ready for transmission Can send only those packets that are in the window up to the end of the window Every time an acknowledgement is received, window slides (and its size may be increased). Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 20 Flow Control Flow Control is a technique for speed-matching of transmitter and receiver. Flow control ensures that a transmitting station does not overflow a receiving station with data We will discuss two protocols for flow control: Stop-and-Wait On-Off Sliding Window For the time being, we assume that we have a perfect channel (no errors) 21 Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher Stop-and-Wait Flow Control Simplest form of flow control In Stop-and-Wait flow control, the receiver indicates its readiness to receive data for each frame Operations: 1. Sender: Transmit a single frame 2. Receiver: Transmit acknowledgment (ACK) 3. Goto 1. Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 22 Analysis of Stop-and-Wait End of Transmit of ACK Last bit received Receiver propagation delay Frame Frame ACK Efficiency = ? ACK Sender transmission delay Start Transmit End Transmit Last bit of ACK received Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 23 Sliding Window Flow Control Sliding Window Flow Control Allows transmission of multiple frames Assigns each frame a k-bit sequence number Range of sequence number is [0..2k-1], i.e., frames are counted modulo 2k Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 24 Operation of Sliding Window Sending Window: At any instant, the sender is permitted to send frames with sequence numbers in a certain range (the sending window) Frames already transmitted Window of frames that may be transmitted 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 Frame sequence number Last frame transmitted Window shrinks as frames are sent Window expands as acknowledgements are received Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 25 Operation of Sliding Window Receiving Window: The receiver maintains a receiving window corresponding to the sequence numbers of frames that are accepted Frames already received Window of frames that are accepted by receiver 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 Last frame acknowledged Window shrinks as frames are received Window expands as acknowledgements are sent Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 26 Operation of Sliding Window How is “flow control” achieved? Receiver can control the size of the sending window By limiting the size of the sending window data flow from sender to receiver can be limited Interpretation of ACK N message: Receiver acknowledges all packets until (but not including) sequence number N Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 27 Example Receiver Transmitter 0 1 2 3 4 5 6 7 0 1 2 3 F0 F1 F2 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 ACK43 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 28 Example Continued Transmitter Receiver 0 1 2 3 4 5 6 7 0 1 2 3 F3 0 1 2 3 4 5 6 7 0 1 2 3 F4 F5 F6 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 ACK3 4 4 0 1 2 3 4 5 6 7 0 1 2 3 0 1 2 3 4 5 6 7 0 1 2 3 Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 29 Slow Start Whenever starting traffic on a new connection, or whenever increasing traffic after congestion was experienced: Set cwnd = MSS bytes (=1 segment) Each time an ACK is received, slide the congestion window and increase size by 1 segment (= MSS bytes). Does Slow Start increment slowly? Not really. In fact, the increase of cwnd can be exponential Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 30 Slow Start Example The congestion window size grows very rapidly For every ACK, we increase cwnd by 1 irrespective of the number of segments ACK’ed TCP slows down the increase of cwnd when cwnd > ssthresh cwnd = 1xMSS segment 1 t1 ACK for segmen cwnd = 2xMSS cwnd = 4xMSS cwnd = 7xMSS segment 2 segment 3 ts 2 ACK for segmen ts 3 ACK for segmen segment 4 segment 5 segment 6 ts 4 ACK for segmen ts 5 ACK for segmen ts 6 ACK for segmen Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 31 Slow Start “Slow Start” slows down if the congestion window is larger than a threshold value If cwnd > ssthresh then each time an ACK is received, increment cwnd as follows: cwnd = cwnd + MSS * MSS / cwnd So cwnd is increased by one only if all segments have been acknowledged. ssthresh is modified if there is congestion in the network Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 32 Slow Start Example cwnd = 1 Assume that cwnd = 2 ssthresh = 8 14 cwnd = 4 Cwnd (in segments) 12 10 cwnd = 8 ssthresh 8 6 4 cwnd = 9 2 0 0 t= 2 t= 4 t= 6 t= Roundtrip times cwnd = 10 Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 33 Slow Start / Congestion Avoidance Here we give a more accurate version than in our earlier discussion of Slow Start: If cwnd <= ssthresh then Each time an Ack is received: cwnd = cwnd + MSS else /* cwnd > ssthresh */ Each time an Ack is received : cwnd = cwnd + MSS * MSS / cwnd endif Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 34 Slow Start / Congestion Avoidance Each time when congestion occurs (timeout or receipt of duplicate ACK), cwnd is reset to one: cwnd = 1 ssthresh is set to half the current size of the congestion window: ssthressh = cwnd / 2 Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 35 Slow Start / Congestion Avoidance A typical plot of cwnd for a TCP connection (MSS = 1500 bytes) : Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 36 Round-Trip Time Measurements The retransmission mechanism of TCP is adaptive The retransmission timers are set based on roundtrip time (RTT) measurements that TCP performs Segment 1 RTT #1 RTT #2 ACK for Segm ent 1 Segment 2 Segment 3 egment 2 ACK for S Segment RTT #3 The RTT is based on time difference between segment transmission and receipt of ACK But: TCP does not ACK each segment Each connection has only one timer 5 +3 Segme nt 4 egment 4 ACK for S egment 5 ACK for S Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 37 Round-Trip Time Measurements Retransmission timer is set to a Retransmission Timeout (RTO) value RTO is calculated based on the RTT measurements The RTT measurements are smoothed by the following estimators srtt and rttvar: srttn+1 = a RTT + (1- a ) srttn rttvarn+1 = b ( | RTT - srttn+1 | ) + (1- b ) rttvarn RTOn+1 = srttn+1 + 4 rttvarn+1 The gains are set to a =1/4 and b =1/8 srtt0 = 0 sec, rttvar0 = 3 sec, Also: RTO0 = srtt0 + 2 rttvar0 Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 38 TCP header fields Port Number: A port number identifies the endpoint of a connection. A pair <IP address, port number> identifies one endpoint of a connection. Two pairs <client IP address, server port number> and <server IP address, server port number> identify a TCP connection. Applications Ports: 23 80 104 Applications 7 80 16 TCP TCP IP IP Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher Ports: 39 TCP header fields Sequence Number (SeqNo): Sequence number is 32 bits long. So the range of SeqNo is 0 <= SeqNo <= 232 -1 4.3 Gbyte Each sequence number identifies a byte in the byte stream Initial Sequence Number (ISN) of a connection is set during connection establishment Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 40 TCP header fields Acknowledgement Number (AckNo): Acknowledgements are piggybacked A hosts uses the AckNo field to send acknowledgements. (If a host sends an AckNo in a segment it sets the “ACK flag”) The AckNo contains the next SeqNo that a hosts wants to receive Example: The acknowledgement for a segment with sequence numbers 0-1500 is AckNo=1501 Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 41 TCP header fields Flag bits: URG: Urgent pointer is valid If the bit is set, the following bytes contain an urgent message in the sequence number range “SeqNo <= urgent message <= SeqNo+urgent pointer” ACK: Segment carries a valid acknowledgement PSH: PUSH Flag Notification from sender to the receiver that the receiver should pass all data that it has to the application. Normally set by sender when the sender’s buffer is empty Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 42 TCP header fields Flag bits: RST: Reset the connection SYN: Synchronize sequence numbers The flag causes the receiver to reset the connection Receiver of a RST terminates the connection and indicates higher layer application about the reset Sent in the first packet when initiating a connection FIN: Sender is finished with sending Used for closing a connection Both sides of a connection must send a FIN Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 43 TCP States in Connection Lifetime SYN_SENT (active open) SYN (SeqNo = x) No = x + 1 ) k c A , y = o N q SYN (Se LISTEN (passive open) SYN_RCVD (AckNo = y + 1 ) EST ABLISHED EST ABLISHED FIN_WAIT _1 (active close) FIN_WAIT _2 T IM E_WAIT FIN (SeqNo = m) (AckNo = m+ 1 ) CLOSE_WAIT (passive close) FIN (SeqNo = n ) (AckNo = LAST _ACK n+1) CLOSED Copyright Jorg Liebeherr 98, Modified with permission, Abdelzaher 44