190 likes | 336 Views
CSCE 515 : Computer Network Programming. Chin-Tser Huang huangct@cse.sc.edu University of South Carolina. Midterm Exam Grade. Before adjustment Graduate: Avg 11.56, Highest 18 Undergrad: Avg 9.5, Highest 14 After adjustment Graduate: +2 to everyone Undergrad: +4 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 11.56, Highest 18 • Undergrad: Avg 9.5, Highest 14 • After adjustment • Graduate: +2 to everyone • Undergrad: +4 to everyone
Final Exam Guide • Problems similar to those in midterm exam • Might 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 3 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 • 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 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
Next Class • TCP persist and keepalive timers • Other TCP options • Read TI Ch. 22, 23, 24