On Tue, Jul 25, 2017 at 2:08 PM, David Sze <
sze....@gmail.com> wrote:
> Hi Neal, Yuchung,
>
> I have a couple questions about the delivery rate estimation draft and its
> use in BBR.
>
>
> 1. Consider an application that has 3 distinct "phases":
>
> (a) Sends a large amount of data (enough to get BBR out of Startup state)
> (b) Alternates between long periods of idle time and sends of small amounts
> of data (e.g. 1xSMSS)
> (c) Sends a large amount of data again
>
> If I'm understanding correctly, none of the sends in phase (b) would be
> considered "app limited", since they don't satisfy the "<1xSMSS" condition.
Actually, the sends in phase (b) would be considered "app-limited".
This is covered in section 3.4 of the draft:
https://tools.ietf.org/html/draft-cheng-iccrg-delivery-rate-estimation-00#section-3.4
The check in OnApplicationWrite() is executed "when the sending
application asks the transport layer to send more data". Since the app
is idle at the time of the write, "C.write_seq - SND.NXT < SND.MSS"
and all the other conditions are true, so the connection is marked as
application-limited.
We will try to update the draft to make it more clear that these
checks run before the data is enqueued in TCP, rather than after.
> 2. Section 4.2 of the draft talks about ACK losses and BtlBw
> underestimation. If ACKs are reordered/delayed, isn't BtlBw overestimation
> also possible? e.g.
>
> (a) @ t=0 (P1 and P2 transmitted)
>
> P1.delivered=0
> P1.delivered_time=0
> P2.delivered=0
> P2.delivered_time=0
>
> (b) @ t=150 (ACK for P1 delayed, ACK for P2 received)
>
> rs2.delivery_rate=(1460-0)/(0.15-0)
In TCP, ACKs are cumulative, so if a sender has received an ACK for P2
it knows that P1 was delivered as well. So this particular issue
should not be a problem, if I understand your scenario.
Also keep in mind that the app or congestion control will generally be
applying a filter to the delivery rate samples, so if there are
transient effects that cause the delivery rate samples to occasionally
be low, those samples should be ignored (e.g. see the BtlBw filter in
the BBR draft).
neal