Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.protocols.tcp-ip    |    TCP and IP network protocols.    |    14,669 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 14,085 of 14,669    |
|    Thomas to All    |
|    Modifying the TCP congestion control alg    |
|    02 Nov 13 17:04:11    |
      From: comicnabster@gmail.com              The default TCP congestion control algorithm works like this:              Initially, set the cwnd to 1 segment and the ssthresh to the receiver's       advertised window size.       When a new ACK is received, increment the cwnd by 1 segment (aka doubling cwnd       every RTT), in what is called the slow start phase. When cwnd exceeds       ssthresh, enter congestion avoidance, where cwnd is incremented by 1/cwnd       segments every ACK (or        incremented by 1 segment every RTT).       In the case of a timeout, set ssthresh to cwnd/2, and set cwnd to 1.       Now suppose you modified the congestion control algorithm as follows:              Initial parameters (cwnd = 1 and ssthresh = advertised size) are the same       When a new ACK is received, increment cwnd by 1 (as before). But when cwnd       exceeds ssthresh, increment cwnd by a constant 0.01 segments.       When a timeout occurs, set ssthresh to cwnd*0.875 and then set cwnd to 1.       What impact would this have on the TCP sender's data transmission rate,       compared to the original congestion control algorithm?              My tentative answer:              Initially, there is no impact during the slow start phase. Cwnd is incremented       by 1 segment in both the original and modified algorithms.       If no timeouts have occurred, then there is still no impact even after cwnd       exceeds ssthresh. This is because the sender picks the smaller of either the       advertised window size or the cwnd to use as its sending window. Since the       initial value of ssthresh        is the advertised window size, the fact that cwnd is incremented by 0.01       rather than 1 makes no difference, as the sender would go with the advertised       window size.       However, if a timeout occurs, then the modified algorithm negatively impacts       the data rate. Compared to the original algorithm, the modified algorithm       results in a larger new ssthresh (0.875 of cwnd vs 0.5 of cwnd). Thus slow       start will last longer with        the modified algorithm, temporarily increasing the data rate. However,       ssthresh is now smaller than the advertised window size (assuming that didn't       change). So once cwnd exceeds ssthresh, the sender will still choose cwnd as       its sending window value.        Compared to the original algorithm, the cwnd (and thus the sender's window)       will increase very slowly, which adversely impacts the data transmission rate.       Net result = lower data transmission rate with the modified algorithm.              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca