MINOR: quic: remove unused pacing burst in bind_conf/quic_cc_path

Pacing burst size is now dynamic. As such, configuration value has been
removed and related fields in bind_conf and quic_cc_path structures can
be safely removed.

This should be backported up to 3.1.
This commit is contained in:
Amaury Denoyelle 2025-01-23 17:06:04 +01:00
parent cb91ccd8a8
commit 7896edccdc
7 changed files with 2 additions and 20 deletions

View File

@ -185,7 +185,6 @@ struct bind_conf {
struct quic_cc_algo *quic_cc_algo; /* QUIC control congestion algorithm */ struct quic_cc_algo *quic_cc_algo; /* QUIC control congestion algorithm */
size_t max_cwnd; /* QUIC maximumu congestion control window size (kB) */ size_t max_cwnd; /* QUIC maximumu congestion control window size (kB) */
enum quic_sock_mode quic_mode; /* QUIC socket allocation strategy */ enum quic_sock_mode quic_mode; /* QUIC socket allocation strategy */
int quic_pacing_burst; /* QUIC allowed pacing burst size */
#endif #endif
struct proxy *frontend; /* the frontend all these listeners belong to, or NULL */ struct proxy *frontend; /* the frontend all these listeners belong to, or NULL */
const struct mux_proto_list *mux_proto; /* the mux to use for all incoming connections (specified by the "proto" keyword) */ const struct mux_proto_list *mux_proto; /* the mux to use for all incoming connections (specified by the "proto" keyword) */

View File

@ -118,8 +118,6 @@ struct quic_cc_path {
uint64_t in_flight; uint64_t in_flight;
/* Number of in flight ack-eliciting packets. */ /* Number of in flight ack-eliciting packets. */
uint64_t ifae_pkts; uint64_t ifae_pkts;
/* Burst size if pacing is used. Not used if congestion algo handle pacing itself. */
uint32_t pacing_burst;
uint64_t delivery_rate; /* bytes per second */ uint64_t delivery_rate; /* bytes per second */
size_t send_quantum; size_t send_quantum;
uint32_t recovery_start_ts; uint32_t recovery_start_ts;

View File

@ -39,7 +39,6 @@ void quic_cc_state_trace(struct buffer *buf, const struct quic_cc *cc);
/* Pacing callbacks */ /* Pacing callbacks */
uint quic_cc_default_pacing_inter(const struct quic_cc *cc); uint quic_cc_default_pacing_inter(const struct quic_cc *cc);
uint quic_cc_default_pacing_burst(const struct quic_cc *cc);
static inline const char *quic_cc_state_str(enum quic_cc_algo_state_type state) static inline const char *quic_cc_state_str(enum quic_cc_algo_state_type state)
{ {
@ -82,7 +81,7 @@ static inline void *quic_cc_priv(const struct quic_cc *cc)
* which is true for an IPv4 path, if not false for an IPv6 path. * which is true for an IPv4 path, if not false for an IPv6 path.
*/ */
static inline void quic_cc_path_init(struct quic_cc_path *path, int ipv4, unsigned long max_cwnd, static inline void quic_cc_path_init(struct quic_cc_path *path, int ipv4, unsigned long max_cwnd,
struct quic_cc_algo *algo, int burst, struct quic_cc_algo *algo,
struct quic_conn *qc) struct quic_conn *qc)
{ {
unsigned int max_dgram_sz; unsigned int max_dgram_sz;
@ -98,7 +97,6 @@ static inline void quic_cc_path_init(struct quic_cc_path *path, int ipv4, unsign
path->prep_in_flight = 0; path->prep_in_flight = 0;
path->in_flight = 0; path->in_flight = 0;
path->ifae_pkts = 0; path->ifae_pkts = 0;
path->pacing_burst = burst;
quic_cc_init(&path->cc, algo, qc); quic_cc_init(&path->cc, algo, qc);
path->delivery_rate = 0; path->delivery_rate = 0;
path->send_quantum = 64 * 1024; path->send_quantum = 64 * 1024;

View File

@ -202,9 +202,7 @@ static int bind_parse_quic_cc_algo(char **args, int cur_arg, struct proxy *px,
goto fail; goto fail;
} }
conf->quic_pacing_burst = burst;
cc_algo->pacing_inter = quic_cc_default_pacing_inter; cc_algo->pacing_inter = quic_cc_default_pacing_inter;
cc_algo->pacing_burst = quic_cc_default_pacing_burst;
} }
if (*end_opt == ')') { if (*end_opt == ')') {

View File

@ -2040,7 +2040,6 @@ struct bind_conf *bind_conf_alloc(struct proxy *fe, const char *file,
/* Use connection socket for QUIC by default. */ /* Use connection socket for QUIC by default. */
bind_conf->quic_mode = QUIC_SOCK_MODE_CONN; bind_conf->quic_mode = QUIC_SOCK_MODE_CONN;
bind_conf->max_cwnd = global.tune.quic_frontend_max_window_size; bind_conf->max_cwnd = global.tune.quic_frontend_max_window_size;
bind_conf->quic_pacing_burst = 0;
#endif #endif
LIST_INIT(&bind_conf->listeners); LIST_INIT(&bind_conf->listeners);

View File

@ -57,15 +57,6 @@ uint quic_cc_default_pacing_inter(const struct quic_cc *cc)
return path->loss.srtt * 1000000 / (path->cwnd / path->mtu + 1) + 1; return path->loss.srtt * 1000000 / (path->cwnd / path->mtu + 1) + 1;
} }
/* Return the max number of datagrams which can be emitted in a burst with
* pacing. Must return a strictly positive value.
*/
uint quic_cc_default_pacing_burst(const struct quic_cc *cc)
{
struct quic_cc_path *path = container_of(cc, struct quic_cc_path, cc);
return path->pacing_burst;
}
/* Returns true if congestion window on path ought to be increased. */ /* Returns true if congestion window on path ought to be increased. */
int quic_cwnd_may_increase(const struct quic_cc_path *path) int quic_cwnd_may_increase(const struct quic_cc_path *path)
{ {

View File

@ -1225,8 +1225,7 @@ struct quic_conn *qc_new_conn(const struct quic_version *qv, int ipv4,
/* Only one path at this time (multipath not supported) */ /* Only one path at this time (multipath not supported) */
qc->path = &qc->paths[0]; qc->path = &qc->paths[0];
quic_cc_path_init(qc->path, ipv4, server ? l->bind_conf->max_cwnd : 0, quic_cc_path_init(qc->path, ipv4, server ? l->bind_conf->max_cwnd : 0,
cc_algo ? cc_algo : default_quic_cc_algo, cc_algo ? cc_algo : default_quic_cc_algo, qc);
l->bind_conf->quic_pacing_burst, qc);
memcpy(&qc->local_addr, local_addr, sizeof(qc->local_addr)); memcpy(&qc->local_addr, local_addr, sizeof(qc->local_addr));
memcpy(&qc->peer_addr, peer_addr, sizeof qc->peer_addr); memcpy(&qc->peer_addr, peer_addr, sizeof qc->peer_addr);