在 Linux 内核中估算当前稳态全局带宽 插入位置BBR_main or UCP_main内核CC回调入口函数/* Global Kalman BDP: feed PROBE_BW cruise btl_bw into filter */if(ucp_kf_enableucp-round_startucp-modeUCP_PROBE_BWucp-pacing_gainBBR_UNIT){u64 bw(u64)rs-delivered*BW_UNIT/max_t(u32,rs-interval_us,1U);if(!atomic_read(ucp_kf_active)){ucp_kf_update(bw,(u32)ucp_kf_startup_r_pct_val,false);}else{ucp_kf_update(bw,(u32)ucp_kf_steady_r_pct_val,true);}}算法实现/* ---- Kalman-filter global BDP startup --------------------------------- */staticu64ucp_kf_compute_R(u64 z,u32 pct){u64 rz*(u64)pct/100;returnr*r;}staticu64ucp_kf_update(u64 z,u32 r_pct,boolcheck){u64 Patomic64_read(ucp_kf_P);u64 xatomic64_read(ucp_kf_x);u64 Rucp_kf_compute_R(z,r_pct);u32 shift0;u64 Pcopy,Rcopy,denom;s64 delta;P(1ULLucp_kf_q_shift);if(unlikely(!atomic_read(ucp_kf_active))){atomic64_set(ucp_kf_x,z);atomic64_set(ucp_kf_P,max(R,1ULL));atomic_set(ucp_kf_active,1);returnz;}if(check){delta(s64)z-(s64)x;u64 nu2(u64)(delta0?-delta:delta);u64 SPR;if(S0){nu2(nu210)*(nu210);S20;if(S0nu2/S(u64)ucp_kf_chi2_num_val/(u64)ucp_kf_chi2_den_val)returnx;}}PcopyP;RcopyR;{u64 max_vPcopy;if(Rcopymax_v)max_vRcopy;if(PcopyRcopymax_v)max_vPcopyRcopy;while(max_v(1ULL31)){Pcopy1;Rcopy1;max_v1;shift;}}denomPcopyRcopy;if(denom0)returnx;x(x*Rcopyz*Pcopy)/denom;PPcopy*Rcopy/denom;if(shift0)Pshift;{u64 q1ULLucp_kf_q_shift;if(Pq)Pq;}if(x0){atomic64_set(ucp_kf_x,x);atomic64_set(ucp_kf_P,P);}returnx;}staticu64ucp_kf_get_init_bw(structsock*sk){structtcp_sock*tptcp_sk(sk);u64 fair,init_bw;if(!ucp_kf_enable||!atomic_read(ucp_kf_active)){pr_info_ratelimited(UCP KF: init skipped enable%d active%d\n,ucp_kf_enable,atomic_read(ucp_kf_active));return0;}fair(u64)atomic64_read(ucp_kf_x);if(fair0)return0;init_bwfair*(u64)ucp_kf_discount_num_val/(u64)ucp_kf_discount_den_val;init_bwinit_bw*BBR_UNIT/(u64)ucp_high_gain_val;if(init_bw(u64)tcp_snd_cwnd(tp)*(u64)BBR_UNIT/max_t(u32,tp-srtt_us3,1U))return0;returninit_bw;}