BBR中BW的测量
非稳态的测量(发包速率上限受app发包速率限制)
只要是个可以使用的样本都会被用来计算bw,但是更新的条件是
- 不受到app发包速率限制,
- 或者大于当前最大的bw
这两个条件非常严格,
稳态的测量
if (bbr->lt_use_bw) { /* already using long-term rate, lt_bw? */
if (bbr->mode == BBR_PROBE_BW && bbr->round_start &&
++bbr->lt_rtt_cnt >= bbr_lt_bw_max_rtts) {
bbr_reset_lt_bw_sampling(sk); /* stop using lt_bw */
bbr_reset_probe_bw_mode(sk); /* restart gain cycling */
}
return;
}
先是判断是否超过了最大rtt时间,如果是的话,重置数据,重新开始采样测量bw
if (!bbr->lt_is_sampling) {
if (!rs->losses)
return;
bbr_reset_lt_bw_sampling_interval(sk);
bbr->lt_is_sampling = true;
}
这段是开始测量的判断,必须是不处于丢包阶段的样本开始。
if (rs->is_app_limite