linux bbr算法样本采集

文章目录

    • 样本格式
    • 样本初始化
    • 样本更新
    • 样本生成
    • 检查是否app受限
      • 何时设定app受限
    • 总结

样本格式

/* 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,猜测的 */
};

正如

你可能感兴趣的:(Linux,TCP,bbr,linux,样本采集)