@@ -94,6 +94,7 @@ typedef struct xqc_path_ctx_s xqc_path_ctx_t;
9494typedef struct xqc_timer_manager_s xqc_timer_manager_t ;
9595typedef struct xqc_h3_ext_bytestream_s xqc_h3_ext_bytestream_t ;
9696typedef struct xqc_ping_record_s xqc_ping_record_t ;
97+ typedef struct xqc_conn_qos_stats_s xqc_conn_qos_stats_t ;
9798
9899typedef uint64_t xqc_msec_t ; /* store millisecond values */
99100typedef uint64_t xqc_usec_t ; /* store microsecond values */
@@ -221,4 +222,61 @@ typedef struct xqc_stream_settings_s {
221222 uint64_t recv_rate_bytes_per_sec ;
222223} xqc_stream_settings_t ;
223224
225+ #define XQC_CO_TAG (a , b , c , d ) (uint32_t)((a << 24) + (b << 16) + (c << 8) + d)
226+
227+ typedef enum xqc_conn_option_e {
228+ XQC_CO_TBBR = XQC_CO_TAG ('T' , 'B' , 'B' , 'R' ), // Reduced Buffer Bloat TCP
229+ XQC_CO_1RTT = XQC_CO_TAG ('1' , 'R' , 'T' , 'T' ), // STARTUP in BBR for 1 RTT
230+ XQC_CO_2RTT = XQC_CO_TAG ('2' , 'R' , 'T' , 'T' ), // STARTUP in BBR for 2 RTTs
231+ XQC_CO_BBR4 = XQC_CO_TAG ('B' , 'B' , 'R' , '4' ), // 20 RTT ack aggregation
232+ XQC_CO_BBR5 = XQC_CO_TAG ('B' , 'B' , 'R' , '5' ), // 40 RTT ack aggregation
233+ XQC_CO_IW03 = XQC_CO_TAG ('I' , 'W' , '0' , '3' ), // Force ICWND to 3
234+ XQC_CO_IW10 = XQC_CO_TAG ('I' , 'W' , '1' , '0' ), // Force ICWND to 10
235+ XQC_CO_IW20 = XQC_CO_TAG ('I' , 'W' , '2' , '0' ), // Force ICWND to 20
236+ XQC_CO_IW50 = XQC_CO_TAG ('I' , 'W' , '5' , '0' ), // Force ICWND to 50
237+ XQC_CO_B2ON = XQC_CO_TAG ('B' , '2' , 'O' , 'N' ), // Enable BBRv2
238+ XQC_CO_COPA = XQC_CO_TAG ('C' , 'O' , 'P' , 'A' ), // Enable COPA
239+ XQC_CO_C2ON = XQC_CO_TAG ('C' , '2' , 'O' , 'N' ), // Enable CopaV2
240+ XQC_CO_QBIC = XQC_CO_TAG ('Q' , 'B' , 'I' , 'C' ), // TCP Cubic
241+ XQC_CO_RENO = XQC_CO_TAG ('R' , 'E' , 'N' , 'O' ), // Enable reno
242+ XQC_CO_SPRI = XQC_CO_TAG ('S' , 'P' , 'R' , 'I' ), // enable stream priority by streamid
243+ XQC_CO_9218 = XQC_CO_TAG ('9' , '2' , '1' , '8' ), // enable stream priority by rfc9218
244+ XQC_CO_D218 = XQC_CO_TAG ('D' , '2' , '1' , '8' ), // disable rfc9218
245+ XQC_CO_DRST = XQC_CO_TAG ('D' , 'R' , 'S' , 'T' ), // disable cease sending stream
246+ XQC_CO_CBBR = XQC_CO_TAG ('C' , 'B' , 'B' , 'R' ), // A global option to enable all the following options (Customized BBR)
247+ XQC_CO_BNLS = XQC_CO_TAG ('B' , 'N' , 'L' , 'S' ), // Force BBR not to respond on losses during STARTUP
248+ XQC_CO_BACG = XQC_CO_TAG ('B' , 'A' , 'C' , 'G' ), // Use Adaptive CWND_GAIN in BBR
249+ XQC_CO_CG03 = XQC_CO_TAG ('C' , 'G' , '0' , '3' ), // Use 3 for CWND_GAIN in BBR
250+ XQC_CO_CG05 = XQC_CO_TAG ('C' , 'G' , '0' , '5' ), // Use 5 for CWND_GAIN in BBR
251+ XQC_CO_CG10 = XQC_CO_TAG ('C' , 'G' , '1' , '0' ), // Use 10 for CWND_GAIN in BBR
252+ XQC_CO_CG20 = XQC_CO_TAG ('C' , 'G' , '2' , '0' ), // Use 20 for CWND_GAIN in BBR
253+ XQC_CO_PG11 = XQC_CO_TAG ('P' , 'G' , '1' , '1' ), // Use 1.1 for PACING_GAIN in BBR PROBE_UP
254+ XQC_CO_PG15 = XQC_CO_TAG ('P' , 'G' , '1' , '5' ), // Use 1.5 for PACING_GAIN in BBR PROBE_UP
255+ XQC_CO_BNLR = XQC_CO_TAG ('B' , 'N' , 'L' , 'R' ), // Disable BBR's loss recovery state
256+ XQC_CO_MW10 = XQC_CO_TAG ('M' , 'W' , '1' , '0' ), // Set min CWND to 10
257+ XQC_CO_MW20 = XQC_CO_TAG ('M' , 'W' , '2' , '0' ), // Set min CWND to 20
258+ XQC_CO_MW32 = XQC_CO_TAG ('M' , 'W' , '3' , '2' ), // Set min CWND to 32
259+ XQC_CO_MW50 = XQC_CO_TAG ('M' , 'W' , '5' , '0' ), // Set min CWND to 50
260+ XQC_CO_WL20 = XQC_CO_TAG ('W' , 'L' , '2' , '0' ), // Set BW window length to 20 (RTTs)
261+ XQC_CO_WL30 = XQC_CO_TAG ('W' , 'L' , '3' , '0' ), // Set BW window length to 30 (RTTs)
262+ XQC_CO_WL40 = XQC_CO_TAG ('W' , 'L' , '4' , '0' ), // Set BW window length to 40 (RTTs)
263+ XQC_CO_WL50 = XQC_CO_TAG ('W' , 'L' , '5' , '0' ), // Set BW window length to 50 (RTTs)
264+ XQC_CO_PR02 = XQC_CO_TAG ('P' , 'R' , '0' , '2' ), // Set the target CWND in ProbeRTT to 0.2xBDP
265+ XQC_CO_PR03 = XQC_CO_TAG ('P' , 'R' , '0' , '3' ), // Set the target CWND in ProbeRTT to 0.3xBDP
266+ XQC_CO_PR04 = XQC_CO_TAG ('P' , 'R' , '0' , '4' ), // Set the target CWND in ProbeRTT to 0.4xBDP
267+ XQC_CO_PR05 = XQC_CO_TAG ('P' , 'R' , '0' , '5' ), // Set the target CWND in ProbeRTT to 0.5xBDP
268+ XQC_CO_PR06 = XQC_CO_TAG ('P' , 'R' , '0' , '6' ), // Set the target CWND in ProbeRTT to 0.6xBDP
269+ XQC_CO_PR07 = XQC_CO_TAG ('P' , 'R' , '0' , '7' ), // Set the target CWND in ProbeRTT to 0.7xBDP
270+ XQC_CO_ENWC = XQC_CO_TAG ('E' , 'N' , 'W' , 'C' ), // Enable CWND compensation according to jitter
271+ XQC_CO_JW10 = XQC_CO_TAG ('J' , 'W' , '1' , '0' ), // Set the window length of max jitter filter to 10xRTT (default)
272+ XQC_CO_JW20 = XQC_CO_TAG ('J' , 'W' , '2' , '0' ), // Set the window length of max jitter filter to 20xRTT
273+ XQC_CO_JW30 = XQC_CO_TAG ('J' , 'W' , '3' , '0' ), // Set the window length of max jitter filter to 30xRTT
274+ XQC_CO_JW40 = XQC_CO_TAG ('J' , 'W' , '4' , '0' ), // Set the window length of max jitter filter to 40xRTT
275+ XQC_CO_JW50 = XQC_CO_TAG ('J' , 'W' , '5' , '0' ), // Set the window length of max jitter filter to 50xRTT
276+ XQC_CO_SL03 = XQC_CO_TAG ('S' , 'L' , '0' , '3' ), // Set the STARTUP loss rate threshold to 0.03
277+ XQC_CO_SL04 = XQC_CO_TAG ('S' , 'L' , '0' , '4' ), // Set the STARTUP loss rate threshold to 0.04
278+ XQC_CO_SL05 = XQC_CO_TAG ('S' , 'L' , '0' , '5' ), // Set the STARTUP loss rate threshold to 0.05
279+ XQC_CO_SL10 = XQC_CO_TAG ('S' , 'L' , '1' , '0' ), // Set the STARTUP loss rate threshold to 0.05
280+ } xqc_conn_option_t ;
281+
224282#endif /*_XQUIC_TYPEDEF_H_INCLUDED_*/
0 commit comments