Dear Eddie, Thanks for your reply..Ok - the way I saw this problem was like this: Say the sender is idle for 1.5 RTTs and then sends 2 packets, then when the feedback is received, then the following part of the algorithm from Section 4.3 (RFC3448) would be executed (the presumption is that this algorithm (Section 4.3 RFC3448) is executed for every feedback packet received): If (sender has been idle or data-limited) min_rate = max(2*X_recv, W_init/R); This ensures that the min_rate is atleast W_init/R. So what I felt was that what happens if one of those 2 packets were lost. Do we still execute the above code? But after I wrote the previous mail and a deep inspection led me to think that this may not cause any "serious" effect, since if the loss event rate 'p' was greater than 0, then the sending rate would be rate limited to the rate calculated by the throughput equation. So this should not be a problem and if that is the case then you can ignore my previous mail. This is in the same line of thinking that Gorry and I discussed few days back: The response of the sender when a feedback packet arrives after the nofeedback timer: ``if (not the first feedback packet, and not the first feedback packet after a nofeedback timer)'' - we ignore the feedback packet. In this case, we were wondering what happens if the sender was datalimited after a nofeedback timer expiry and sends very few packets! Do we still ignore the feedback packet? -Arjuna On 2/14/07, Eddie Kohler <kohler@xxxxxxxxxxx> wrote:
Hi Arjuna, I'm not quite sure what you mean here. There is no text in the RFCs that I know of that recommends this procedure. What the RFCs say is that the rate is not to be *reduced below* W_init as the result of an idle period. This doesn't change "min_rate", exactly, as far as that parameter exists. For instance, while the sender is idle [so X_recv must needs be 0], the implementation might do something like "X_recv := max(X_recv/2, W_init/2R)" on every nofeedback timer, rather than the straightforward "X_recv /= 2" common when the sender is sending. Can you tell us where you got the calculation you listed below? Eddie Arjuna Sathiaseelan wrote: > If the sender had been idle or datalimited, then the minrate is > calculated as: > > If (sender has been idle or data-limited) > min_rate = max(2*X_recv, W_init/R); > Else > min_rate = 2*X_recv; > > But I guess we have overlooked the possibility that loss event rate p > could be greater than 0 after an idle or datalimited period. So in the > presence of loss, it may not be wise to assign the minrate to be a > maximum of 2*X_recv and Winit/R.. > > If that is the case, the I guess we have to add something like this: > > If ((p==0) && sender has been idle or data-limited) > min_rate = max(2*X_recv, W_init/R); > Else > min_rate = 2*X_recv; > > Am I making sense here? > > Regards > Arjuna
-- Electronics Research Group University of Aberdeen Aberdeen AB24 3UE Web: www.erg.abdn.ac.uk/users/arjuna Phone : +44-1224-272780 Fax : +44-1224-272497