quic.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Freie Universität Berlin
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
20 #ifndef CONGURE_QUIC_H
21 #define CONGURE_QUIC_H
22 
23 #include "ztimer.h"
24 
25 #include "congure.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
57 typedef struct {
68  void (*cong_event_cb)(void *ctx);
69 
74 
79 
83  uint16_t init_rtt;
84 
88  uint16_t max_msg_size;
89 
95  uint16_t pc_thresh;
96 
100  uint16_t granularity;
101 
107 
113 
120 
128 
134 typedef struct {
141 
147 
152  unsigned in_flight_size;
153 
160 
169 
173  uint16_t smoothed_rtt;
174 
178  uint16_t rtt_var;
179 
183  uint16_t min_rtt;
184 
194  uint16_t limited;
195 
206  uint16_t max_ack_delay;
208 
226  const congure_quic_snd_consts_t *consts);
227 
228 #ifdef __cplusplus
229 }
230 #endif
231 
232 #endif /* CONGURE_QUIC_H */
void congure_quic_snd_setup(congure_quic_snd_t *c, const congure_quic_snd_consts_t *consts)
Set's up the driver for a CongURE QUIC object.
uint16_t congure_wnd_size_t
Define type for window size to allow for possible window size scaling.
Definition: congure.h:41
uint32_t ztimer_now_t
type for ztimer_now() result
Definition: ztimer.h:311
Constants for the congestion control.
Definition: quic.h:57
uint16_t pc_thresh
period of time in milliseconds for persistent congestion to be establisched
Definition: quic.h:95
uint8_t loss_reduction_numerator
numerator for the factor the congestion window should be reduced by when a new loss event is detected
Definition: quic.h:106
uint16_t granularity
system timer granularity in milliseconds (typically 1)
Definition: quic.h:100
uint8_t inter_msg_interval_numerator
numerator for the factor N used to adapt the message interval
Definition: quic.h:119
uint16_t init_rtt
The assumed RTT in milliseconds before an RTT sample is taken.
Definition: quic.h:83
uint8_t loss_reduction_denominator
denominator for the factor the congestion window should be reduced by when a new loss event is detect...
Definition: quic.h:112
uint16_t max_msg_size
maximum message size in initiator-defined units.
Definition: quic.h:88
uint8_t inter_msg_interval_denominator
denominator for the factor N used to adapt the message interval
Definition: quic.h:126
congure_wnd_size_t min_wnd
minimum congestion window size in initiator-defined units.
Definition: quic.h:78
congure_wnd_size_t init_wnd
Initial congestion window size in initiator-defined units.
Definition: quic.h:73
State object for CongURE QUIC.
Definition: quic.h:134
uint16_t smoothed_rtt
The smoothed RTT of a connection between peers in milliseconds.
Definition: quic.h:173
ztimer_now_t recovery_start
Timestamp in milliseconds of when congestion was first detected.
Definition: quic.h:159
congure_wnd_size_t ssthresh
Slow start threshold in caller-defined units.
Definition: quic.h:168
uint16_t rtt_var
The RTT variation.
Definition: quic.h:178
const congure_quic_snd_consts_t * consts
Constants.
Definition: quic.h:140
congure_snd_t super
see congure_snd_t
Definition: quic.h:135
uint16_t min_rtt
The minimum RTT seen over a period of time.
Definition: quic.h:183
unsigned in_flight_size
Sum of caller-defined units of message sizes of all messages that are yet not ack'd or declared lost.
Definition: quic.h:152
uint16_t limited
Set to one if congestion control should is limited by the application or flow control.
Definition: quic.h:194
ztimer_now_t first_rtt_sample
Timestamp in milliseconds of when the first RTT sample was obtained.
Definition: quic.h:146
uint16_t max_ack_delay
Advertised maximum amount of time in milliseconds a receiver intends to delay its acknowledgements.
Definition: quic.h:206
Base state object for CongURE implementations.
Definition: congure.h:51
ztimer API