Improves minimum RTT probing, adds packet pacing and refactors the code.

This commit is contained in:
Lukas Prause
2026-07-13 16:20:23 +02:00
parent 52cb1fe1f1
commit 35aa714256
3 changed files with 348 additions and 153 deletions
+19 -5
View File
@@ -7,6 +7,16 @@
#include <linux/math64.h>
/* State in which roccet currently opperates */
enum roccet_state {
LAUNCH,
ORBITER,
RTT_PROBE,
RTT_PROBE_REFILL,
DRAIN
};
/* TCP ROCCET helper type, storing data related to ack counting */
struct ack_rate {
u32 last_rate; /* Last ACK-rate */
u32 last_rate_time; /* Timestamp of the last ACK-rate */
@@ -14,8 +24,8 @@ struct ack_rate {
u32 cnt; /* Used for counting acks */
};
/* Based on the BICTCP struct with additions specific
* for the ROCCET-Algorithm
/* TCP ROCCET struct based on the original BICTCP struct with
* additions specific to the ROCCET-Algorithm.
*/
struct roccettcp {
u32 cnt; /* increase cwnd by 1 after ACKs */
@@ -30,7 +40,7 @@ struct roccettcp {
u32 epoch_start; /* beginning of an epoch */
u32 ack_cnt; /* number of acks */
u32 tcp_cwnd; /* estimated tcp cwnd */
u32 curr_rtt; /* the minimum rtt of current round */
u32 curr_rtt; /* last sample rtt of current round */
u32 roccet_last_event_time_us; /* The last time ROCCET was
* triggered
@@ -39,11 +49,15 @@ struct roccettcp {
u32 curr_min_rtt; /* The current observed minRTT */
u32 next_min_rtt_probe; /* Next time to probe the minRTT */
u32 probe_min_rtt_until; /* End of minRTT probing period */
u32 cwnd_before_min_rtt_probe; /* cwnd before min RTT probeing */
u32 refill_until; /* End of pipe refill after minRTT probe */
u32 cwnd_before_min_rtt_probe; /* cwnd before min RTT probeing */
u32 curr_srrtt; /* srRTT calculated based on the latest ACK */
u32 next_srrtt_check; /* Next check for srRTT */
struct ack_rate ack_rate; /* The last and the current ACK rate */
u32 last_rtt; /* Used for jitter calculation */
u32 last_rtt; /* sample rtt of previous round.
* Used for jitter calculation
*/
enum roccet_state state; /* State in which roccet currently opperates */
};
#endif /* __TCP_ROCCET_H */