Hi Tom, That's exactly what I found out when I implemented faster restart in ns-2 and did some tests :)..With a CBR source modelling a G.711 codec sending 50 pps - and assuming there is reasonable bottleneck bandwidth available such that there is no packet loss - then the sender never leaves slow start..It doesnt get into congestion avoidance..So when a feedback timer expires - based on the algorithm, it stays in the slow start part of the algorithm - after the silence suppression period with p = 0. So it never executes the faster restart part where p > 0. So in this typical scenario - the sender behaves as an ordinary TFRC sender.
but I'm not sure what the resulting max transmit rate would be. Normally it'd be half the rate in the last RTT, but that was zero in this case, since the app went idle
No - the maximum rate would be the last ACTIVE received rate (if there was a packet loss or ecn mark - then the received rate wuld have be reduced by half). But if there were no packet loss (p = 0) - then the maximum rate would be the last active received rate (which is the highest achievable rate). So in our case, what happens next is the question? :) does it exit slow start? If so, how is it going to execute the p > 0 part of the algorithm? Questions worth an investigation :)..Thanks for your reply :) -Arjuna On 5/5/06, Phelan, Tom <tphelan@xxxxxxxxxxxx> wrote:
Hi Arjuna, Part of the justification for faster restart is that the path has already been proven to support a higher rate (by earlier transmissions), and we're just trying to return to that. That justification doesn't exist for slow start. But let me see if I understand your scenario. An application reaches its desired throughput before first packet loss and therefore never leaves the slow start phase. I'd say that this is a fairly normal situation with media streams -- the user has chosen a codec that's likely to not congest the network in the absence of competing flows -- although the presence of any TCP flow would probably disrupt that. After some period at this rate with no packet loss the application goes idle long enough for the nofeedback timer to expire. This would seem to be a fairly likely situation for silence-suppressed voice. I'm not sure what happens then (no time to reread the spec and figure it out, sorry). I would expect the nofeedback timer to cause the connection to leave slow start, but I'm not sure what the resulting max transmit rate would be. Normally it'd be half the rate in the last RTT, but that was zero in this case, since the app went idle. Sounds worth investigating... Tom P. > -----Original Message----- > From: Arjuna Sathiaseelan [mailto:arjuna.sathiaseelan@xxxxxxxxx] > Sent: Friday, May 05, 2006 3:29 AM > To: h.balan@xxxxxxxxxxxx > Cc: gorry@xxxxxxxxxxxxxx; dccp@xxxxxxxx > Subject: Re: minimal sending rate in the case of tfrc for small > packetsand its faster restart variant > > I would like to add something here..Its a doubt.. > > I am wondering what happens where there is an idle period during slow > start where the nofeedback timer has expired - with p = 0. Faster > restart wouldnt work with the given algorithm - since it doesnt make > any changes to the existing TFRC slow start algorithm. Shouldnt faster > restart proposal modify the slowstart part of the algorithm as well? > Please do correct me if I am wrong. Thanks :) > > If p > 0, > Calculate X_calc using the TCP throughput equation. > X_recv_limit := 2*X_recv. > If X_recv_limit < X_fast_max, > X_recv_limit := min(4*X_recv, X_fast_max). > X := max(min(X_calc, X_recv_limit), s/t_mbi). > Else > If (t_now - tld >= R) > X := max(min(2*X, 2*X_recv), s/R); > tld := now. > > > -Arjuna > > On 5/2/06, h.balan@xxxxxxxxxxxx <h.balan@xxxxxxxxxxxx> wrote: > > We are sending interactive voice traffic over CCID 3(RFC4342) (also > > its variant for small packets draft-ietf-dccp-tfrc-voip-05.txt and > > the variant for small packets with with faster restart draft-ietf- > > dccp-tfrc-faster-restart-00.txt), trying to observe the impact of > > the protocol on the end-to-end quality. Since the codec uses > > silence suppresion, our traffic contains periods of data > > transmission alternating with periods of idleness, and due to the > > fact that we experience frequent slow start (we can only double our > > transmission rate during one RTT), the minimal rate of TFRC is an > > important factor affecting the transmission quality. > > We kindly ask you for some clarifications regarding the way in > > which the rate is set in the case of TFRC for small packets and its > > faster restart variant. > > > > RFC 3448, section 4.3 states: > > "If (p > 0) > > Calculate X_calc using the TCP throughput equation. > > X = max(min(X_calc, 2*X_recv), s/t_mbi); > > Else > > If (t_now - tld >= R) > > X = max(min(2*X, 2*X_recv), s/R); > > tld = t_now;" > > while draft-ietf-dccp-tfrc-voip-05.txt requires the nominal packet > > size s to 1460 bytes; > > > > Question 1) Should s=1460 bytes be used in the factors s/t_mbi and > > s/R ? If so, should they be corrected by a factor s_true / (s_true > > + H) accounting for the header size? > > The difference between the two methods is significant in the case > > of VoIP packets, reaching over an order of magnitude. > > > > draft-ietf-dccp-tfrc-faster-restart-00.txt states: > > "This document suggests a relatively simple approach to this problem. > > Some protocols using TFRC [CCID 3 PROFILE] already specify that the > > allowed sending rate is never reduced below the RFC-3390 sending > > rate of four packets per RTT during an idle period. Faster Restart > > specifies that the allowed sending rate is never reduced below eight > > packets per RTT, for small packets." > > > > Question 2) Is the rate of eight packets per RTT the minimal rate > > of the protocol even in periods of non-idleness? Relating to the > > previous question, should the averaged packet size or the nominal > > packet size of 1460 bytes be used in the calculation of the rate? > > > > In case the answer to the previous question is affirmative, should > > the rate calculation at the end of section 3. become: > > "If p > 0, > > Calculate X_calc using the TCP throughput equation. > > X_recv_limit := 2*X_recv. > > If X_recv_limit < X_fast_max, > > X_recv_limit := min(4*X_recv, X_fast_max). > > X := max(min(X_calc, X_recv_limit), 8*s/R). <= changed minimal > > rate > > Else > > If (t_now - tld >= R) > > X := max(min(2*X, 2*X_recv), 8*s/R); <= changed minimal rate > > tld := now." > > > > Changing the minimal rate from s/t_mbi to 8*s/R while in congestion > > avoidance mode shortens the time needed to reach the codec's > > nominal transmission rate by log_4(8*t_mbi/R) RTTs ~= 6 RTTs for a > > connection with 50ms round trip. > > > > Vlad Balan > > > > > > > > > -- > Regards, > Arjuna > > Postdoctoral Researcher > Engineering Research Lab, > Department of Engineering, > University of Aberdeen
-- Regards, Arjuna Postdoctoral Researcher Engineering Research Lab, Department of Engineering, University of Aberdeen