linux bbr算法样本采集

本文详细介绍了Linux BBR算法中的样本采集过程,包括样本格式、初始化、更新、生成以及如何检查应用是否受限。内容涉及样本的各个字段含义,初始化时记录的关键信息,更新样本的条件,以及在样本生成时如何处理app受限状态。文章还探讨了何时设置app受限,并对采样的两个关键参数进行了总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

样本格式

/* A rate sample measures the number of (original/retransmitted) data
 1. packets delivered "delivered" over an interval of time "interval_us".
 2. The tcp_rate.c code fills in the rate sample, and congestion
 3. control modules that define a cong_control function to run at the end
 4. of ACK processing can optionally chose to consult this sample when
 5. setting cwnd and pacing rate.
 6. A sample is invalid if "delivered" or "interval_us" is negative.
 */
struct rate_sample {
	u64  prior_mstamp; /* starting timestamp for interval 开始采样的时间点 */
	u32  prior_delivered;	/* tp->delivered at "prior_mstamp" 开始采样时对端已确认的数据包个数 */
	s32  delivered;		/* number of packets delivered over interval 采样期间确认的字节数 */
	long interval_us;	/* time for tp->delivered to incr "delivered" 采样时间 */
	u32 snd_interval_us;	/* snd interval for delivered packets 发送这么多采样数据所需要的时间 */
	u32 rcv_interval_us;	/* rcv interval for delivered packets 这么多采样数据被确认需要的时间 */
	long rtt_us;		/* RTT of last (S)ACKed packet (or -1) 采样期间最后一个包的rtt值 */
	int  losses;		/* number of packets marked lost upon ACK  处理最后一个ack距离上一个ack的时间段内的丢包数 */
	u32  acked_sacked;	/* number of packets newly (S)ACKed upon ACK 最后一个包确认的数据包个数 */
	u32  prior_in_flight;	/* in flight before this ACK 仍然在途的报文个数 */
	bool is_app_limited;	/* is sample from packet with bubble in pipe? app发包是否缓慢 */
	bool is_retrans;	/* is sample from retransmission? 样本是否采集自重传数据,由sack来区分 */
	bool is_ack_delayed;	/* is this (likely) a delayed ACK? 是否一个延迟ack,猜测的 */
};

正如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值