Lines Matching +full:machine +full:- +full:level

5 ---------------------------------
8 transmission of stream data could be prevented by connection-level flow control,
9 by stream-level flow control, or both. Flow control uses a credit-based model in
14 It is important to note that both connection and stream-level flow control
16 level counts the total number of logical bytes sent on a given stream. Note that
29 QUIC flow control at connection level is based on the sum of all the logical
32 Connection-level flow control is controlled by the `MAX_DATA` frame;
33 stream-level flow control is controlled by the `MAX_STREAM_DATA` frame.
38 our connection-level credit, and a conformant QUIC implementation can choose to
43 Note that it follows from the above that the CRYPTO-frame stream is not subject
54 | |<-- credit| -->| |
55 | <-|- threshold -|----->| |
56 ----------------->
61 - **Controlled bytes** refers to any byte which counts for purposes of flow
65 - (RX side only) **Retirement**, which refers to where we dequeue one or more
73 - (RX side only) The **Retired Watermark** (RWM), the total number of retired
76 - The **Spent Watermark** (SWM), which is the number of controlled bytes we have
82 - The **Credit Watermark** (CWM), which is the number of bytes which have
86 - The available **credit**, which is always simply the difference between
89 - (RX side only) The **threshold**, which is how close we let the RWM
93 - (RX side only) The **window size**, which is the amount by which we or a peer
100 - If the available credit is zero, the TX side is blocked due to a lack of
103 - If any circumstance occurs which would cause the SWM to exceed the CWM,
107 Connection-Level Flow Control - TX Side
108 ---------------------------------------
111 following state machine:
113 ---> event: On TX (numBytes)
114 ---> event: On TX Window Updated (numBytes)
115 <--- event: On TX Blocked
116 Get TX Window() -> numBytes
118 The On TX event is passed to the state machine whenever we send a packet.
121 value is added to the TX-side SWM value. Note that this may be zero, though
124 The On TX Window Updated event is passed to the state machine whenever we have
132 Update event is passed to the state machine with a value lower than that passed
144 non-zero to zero. This always occurs during processing of an On TX event. (This
151 An initial connection-level credit is communicated by the peer in the
155 Stream-Level Flow Control - TX Side
156 -----------------------------------
158 Stream-level flow control works exactly the same as connection-level flow
170 both connection and stream-level flow control; thus the number of controlled
172 Window function on the connection-level and stream-level state machines,
175 Connection-Level Flow Control - RX Side
176 ---------------------------------------
178 ---> event: On RX Controlled Bytes (numBytes) [internal event]
179 ---> event: On Retire Controlled Bytes (numBytes)
180 <--- event: Increase Window (numBytes)
181 <--- event: Flow Control Error
183 RX side connection-level flow control provides an indication of when to generate
184 `MAX_DATA` frames to bump the peer's connection-level transmission credit. It is
187 The state machine receives On RX Controlled Bytes events from stream-level flow
189 a stream-level flow controller whenever we receive any controlled bytes.
191 generated by stream-level flow control as retransmitted stream data must be
192 counted only once, and the stream-level flow control is therefore in the best
193 position to determine how many controlled bytes (i.e., new, non-retransmitted
196 If we receive more controlled bytes than we authorized, the state machine emits
200 The state machine emits the Increase Window event when it thinks that the peer
203 previous Increase Window events emitted by the state machine.
205 The state machine is passed the On Retire Controlled bytes event when one or
209 The state machine uses the cadence of the On Retire Controlled Bytes events it
211 Retire Controlled Bytes event should be sent to the state machine when
215 Stream-Level Flow Control - RX Side
216 -----------------------------------
218 RX-side stream-level flow control works similarly to RX-side connection-level
221 - There is no On RX Controlled Bytes event.
223 - The On Retire Controlled Bytes event may optionally pass the same event
224 to a connection-level flow controller (an implementation decision), as these
227 - An additional event is added, which replaces the On RX Controlled Bytes event:
229 ---> event: On RX Stream Frame (offsetPlusLength, isFin)
231 This event should be passed to the state machine when a STREAM frame is
237 the connection-level flow controller. It is also used by stream-level flow
240 The state machine handles `offsetPlusLength` monotonically and ignores the
249 ----------------
259 The common algorithm is a so-called auto-tuning approach in which the rate of
263 size is doubled, up to an implementation-chosen maximum window size.
265 Auto-tuning occurs in 'epochs'. At the end of each auto-tuning epoch, a decision
266 is made on whether to double the window size, and a new auto-tuning epoch is
269 For more information on auto-tuning, see [Flow control in