Hi Neal,
I still have some doubts about bw calculation, it seams like that the total num of sent date from “t1” to “t1 + 80ms” is bw*80ms because of pacing gain(1.25->0.75), then new_bw = (bw*20*1.25 +bw*20*0.75 + bw*20*1 + bw*20*1)/80ms = bw, then it
does not probe more bandwidth.
But I looked at the logic of calculating bandwidth in kernel, which is not like this(tcp_rate.c tcp_rate_skb_delivered and tcp_rate_gen) as followig:
min_rtt is 20ms, typical rtt is about 80ms, one part of the sampling data is roughly as follows(inflight is almost the same about 82):
at t1 - 60ms, cwnd 84 pacingrate is 2025762, pacing gain is 1 maxbw is 24313
at t1 - 40ms, cwnd 84 pacingrate is 2025762, pacing gain is 1 maxbw is 24313
at t1 - 20ms, cwnd 84 pacingrate is 2025762, pacing gain is 1 maxbw is 24313
at t1, cwnd 84 pacingrate is 2532203, pacing gain is 1.25 maxbw is 24313 deliverd is d1
at t1 + 20ms, cwnd 84 pacingrate is 1519321, pacing gain is 0.75 maxbw is 24313
at t1 + 40ms, cwnd 84 pacingrate is 2025762, pacing gain is 1 maxbw is 24313
at t1 + 60ms, cwnd 84 pacingrate is 2025762, pacing gain is 1 maxbw is 24313
at t1 + 80ms, cwnd 84 pacingrate is 2025762, pacing gain is 1 maxbw is 24313, it will ack segs of time t1 sent.
at t1 + 100ms, deliverd is d1+ delivered from “at t1-60ms” to “t1+20ms”, then new_bw = (d1 + (bw*20 * 3 + bw * 20 *1.25) - d1)/80ms = (bw+ bw/16) > bw
As above, at time "t1+100ms", new_bw is only a little bigger than bw,it is hard to probe more bandwidth, the reason for what you said “the BBRv1 approach of only probing for bandwidth for a single min_rtt can lead to bandwidth growth problems”
is described above, am I right?
Thanks.