240 likes | 257 Views
CSCE 515 : Computer Network Programming. Chin-Tser Huang huangct@cse.sc.edu University of South Carolina. Midterm Exam Grade. Before adjustment Graduate: Avg 10, Highest 12.5 Undergrad: Avg 12.4, Highest 18 After adjustment Graduate: +5 to everyone Undergrad: +2 to everyone.
E N D
CSCE 515:Computer Network Programming Chin-Tser Huang huangct@cse.sc.edu University of South Carolina
Midterm Exam Grade • Before adjustment • Graduate: Avg 10, Highest 12.5 • Undergrad: Avg 12.4, Highest 18 • After adjustment • Graduate: +5 to everyone • Undergrad: +2 to everyone
Final Exam Guide • Problems similar to those in midterm exam • Will have one more programming problem that asks you to debug a piece of code • In each section, the one who makes most progress in final exam compared to midterm exam grade will get 2 bonus points!
Bulk Data Flow • With bulk of data to send, it is desired that sender is allowed to transmit multiple packets before it stops and waits for acknowledgment • However, cannot keep sending without pause, otherwise receiver may run out of buffer • Use sliding window protocol to control data flow
Sliding Window Protocol • Receiver advertises a window to notify sender how much data it can send • Window closes as left edge moves to right • When data is sent and acknowledged • Window opens as right edge moves to right • When receiving process reads acknowledged data and freeing up space in TCP receive buffer • Window shrinks as right edge moves to left (discouraged)
Sliding Window offered window (advertised by receiver) usable window 1 2 3 4 5 6 7 8 9 10 11 … can’t send until sent, not ACKed window moves sent and acknowledged can send ASAP
TCP Options • A variable-length list of optional information for TCP segments • Some options defined in TCP include • End of option list • No operation • Maximum segment size • Window scale factor • Timestamp • Selective acknowledgment
TCP SACK Permitted and SACK Option • When establishing a connection, either end can use SACK permitted option to let the other end know that it can accept SACK option • When some segment is lost, can use SACK option to acknowledge received bytes to avoid redundant retransmission
TCP SACK Option Examples • Assume left window edge is 5000 and sender sends a burst of 8 segments, each containing 500 data bytes • Case 1: first 4 segments are received but the last 4 are dropped • receiver will return a normal TCP ACK segment acknowledging sequence number 7000, with no SACK option
TCP SACK Option Examples • Case 2: first segment is dropped but the remaining 7 are received • Upon receiving each of the last seven packets, receiver will return a TCP ACK segment that acknowledges sequence number 5000 and contains a SACK option specifying one block of queued data Triggering Segment ACK Left Edge Right Edge 5000 (lost) 5500 5000 5500 6000 6000 5000 5500 6500 6500 5000 5500 7000 7000 5000 5500 7500 7500 5000 5500 8000 8000 5000 5500 8500 8500 5000 5500 9000
TCP SACK Option Examples • Case 3: 2nd, 4th, 6th, and 8th (last) segments are dropped • receiver ACKs the first packet normally, and the 3rd, 5th, and 7th packets trigger SACK options Triggering Segment ACK 1st Block 2nd Block 3rd Block Left Right Left Right Left Right 5000 5500 5500 (lost) 6000 5500 6000 6500 6500 (lost) 7000 5500 7000 7500 6000 6500 7500 (lost) 8000 5500 8000 8500 7000 7500 6000 6500 8500 (lost)
TCP PUSH Flag • Sender uses PUSH flag to notify receiver to pass all data it has to the receiving process • Some cases where PUSH is set • Send buffer is emptied by sending this segment • This segment is final data segment
Urgent Mode • One end notifies the other end that some “urgent data” is in data stream • What action to take is up to receiver • Two fields in TCP header needs to be set • URG flag set to 1 • Urgent pointer set to a positive offset that is added to ISN to get seq# of last byte of urgent data
TCP Timeout and Retransmission • TCP handles lost data segments and acknowledgments by setting a timeout when it sends data • If data isn’t acknowledged when timeout expires, TCP retransmits data • Two implementation issues to consider • How to determine timeout interval • How frequently to retransmit data
Round-Trip Time Measurement • RTT changes over time due to route changes and network traffic changes • TCP should track RTT changes and modify its timeout accordingly R R+(1-)M, where =0.9 RTO = R, where =2
Improved RTT Measurement • Previous approach can’t keep up with wide fluctuations in RTT and may cause unnecessary retransmissions Err = M-A A A+gErr, where g=0.125 D D+h(|Err|-D), where h=0.25 RTO = A+4D
Karn’s Algorithm • When receiving an ACK after retransmission, TCP can’t tell this ACK is for original transmission or for retransmission • Hence can’t update RTT estimators using received ACK when a timeout and retransmission occur
TCP Congestion Control • Assume packet loss is largely due to congestion • Two indications of packet loss: timeout and receipt of duplicate ACKs • When congestion occurs, slow down transmission rate, and gradually come back if congestion is relieved • Use two algorithms • Slow start • Congestion avoidance
Slow Start • The rate at which new packets should be injected into network is the rate at which acknowledgments are returned • Use a congestion window (cwnd) in sender’s TCP • Initialized to one segment when new connection is established • Increased by one segment each time an ACK is received until packet loss occurs: exponential increase • Congestion window is flow control by sender while advertised window is flow control by receiver
Congestion Avoidance • Use a slow start threshold (ssthresh) • When receiving 3 dup ACKs, cwnd is cut in half, and window grows linearly • 3 dup ACKs indicates network capable of delivering some segments • When timeout occurs, cwnd instead set to 1 MSS, and window first grows exponentially until reach ssthresh, then grows linearly • Timeout before 3 dup ACKs implies severe congestion
Congestion Control Algorithm • When cwnd is below ssthresh, sender in slow-start phase, window grows exponentially • When cwnd is above ssthresh, sender is in congestion-avoidance phase, window grows linearly • When a triple duplicate ACK occurs, ssthresh set to cwnd/2 and cwnd set to ssthresh • When timeout occurs, ssthresh set to cwnd/2 and cwnd is set to 1 MSS
Fast Retransmit and Fast Recovery • Used when receiving 3 dup ACKs • Receiving 3 dup ACKs means data can still flow, so no need to reduce rate abruptly • Fast retransmit: when receiving 3 dup ACKs, retransmit without waiting for retransmission timeout • Fast recovery: perform congestion avoidance, not slow start
Repacketization • When TCP times out and retransmits, it does not have to retransmit the identical segment again • Instead, TCP is allowed to send a bigger segment (not exceeding MSS) to increase performance • Because TCP identifies data by byte number, not segment number
Next Class • TCP persist and keepalive timers • Other TCP options • Read TI Ch. 22, 23, 24