@@ -94,6 +94,7 @@ typedef struct xqc_path_ctx_s xqc_path_ctx_t;
94
94
typedef struct xqc_timer_manager_s xqc_timer_manager_t ;
95
95
typedef struct xqc_h3_ext_bytestream_s xqc_h3_ext_bytestream_t ;
96
96
typedef struct xqc_ping_record_s xqc_ping_record_t ;
97
+ typedef struct xqc_conn_qos_stats_s xqc_conn_qos_stats_t ;
97
98
98
99
typedef uint64_t xqc_msec_t ; /* store millisecond values */
99
100
typedef uint64_t xqc_usec_t ; /* store microsecond values */
@@ -221,4 +222,61 @@ typedef struct xqc_stream_settings_s {
221
222
uint64_t recv_rate_bytes_per_sec ;
222
223
} xqc_stream_settings_t ;
223
224
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
+
224
282
#endif /*_XQUIC_TYPEDEF_H_INCLUDED_*/
0 commit comments