Skip to content

Commit

Permalink
WIP: Just to not lose this.
Browse files Browse the repository at this point in the history
  • Loading branch information
haproxyFred committed Aug 13, 2024
1 parent 88ea41c commit 99d47ab
Show file tree
Hide file tree
Showing 6 changed files with 939 additions and 3 deletions.
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,8 @@ OPTIONS_OBJS += src/quic_rx.o src/mux_quic.o src/h3.o src/quic_tx.o \
src/quic_cc_nocc.o src/qpack-dec.o src/quic_cc.o \
src/cfgparse-quic.o src/qmux_trace.o src/qpack-enc.o \
src/qpack-tbl.o src/h3_stats.o src/quic_stats.o \
src/quic_fctl.o src/cbuf.o src/quic_rules.o
src/quic_fctl.o src/cbuf.o src/quic_rules.o \
src/quic_drs.o src/quic_cc_bbr.o
endif
ifneq ($(USE_QUIC_OPENSSL_COMPAT:0=),)
Expand Down
4 changes: 3 additions & 1 deletion include/haproxy/quic_cc-t.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@

extern struct quic_cc_algo quic_cc_algo_nr;
extern struct quic_cc_algo quic_cc_algo_cubic;
extern struct quic_cc_algo quic_cc_algo_bbr;
extern struct quic_cc_algo *default_quic_cc_algo;

/* Fake algorithm with its fixed window */
Expand Down Expand Up @@ -80,14 +81,15 @@ struct quic_cc_event {
enum quic_cc_algo_type {
QUIC_CC_ALGO_TP_NEWRENO,
QUIC_CC_ALGO_TP_CUBIC,
QUIC_CC_ALGO_TP_BBR,
QUIC_CC_ALGO_TP_NOCC,
};

struct quic_cc {
/* <conn> is there only for debugging purpose. */
struct quic_conn *qc;
struct quic_cc_algo *algo;
uint32_t priv[18];
uint32_t priv[248];
};

struct quic_cc_path {
Expand Down
38 changes: 38 additions & 0 deletions include/haproxy/quic_cc_drs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#include <inttypes.h>

#include <haproxy/window_filter.h>

#define false 0
#define true 1

/* Rate sample */
struct quic_rs {
uint64_t delivered;
uint64_t prior_delivered;
uint64_t tx_in_flight;
uint64_t lost;
uint64_t prior_lost;
uint32_t interval;
uint32_t prior_time;
uint32_t send_elapsed;
uint32_t ack_elapsed;
uint32_t is_app_limited;
};

/* Delivery rate sampling */
struct quic_drs {
struct quic_rs rs;
struct wf wf;
uint64_t round_count;
uint64_t next_round_delivered;
uint64_t delivered;
uint64_t lost;
uint32_t delivered_ts;
uint32_t first_sent_ts;
int is_cwnd_limited; /* boolean */
int app_limited; /* boolean */
};

extern struct pool_head *pool_head_quic_drs;

void quic_cc_drs_init(struct quic_drs *drs);
2 changes: 1 addition & 1 deletion src/quic_cc.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

#include <haproxy/quic_cc.h>

struct quic_cc_algo *default_quic_cc_algo = &quic_cc_algo_cubic;
struct quic_cc_algo *default_quic_cc_algo = &quic_cc_algo_bbr;

/*
* Initialize <cc> congestion control with <algo> as algorithm depending on <ipv4>
Expand Down
Loading

0 comments on commit 99d47ab

Please sign in to comment.