Subject: Re: [quicwg/base-drafts] BLOCKED semantics (#452)

From: Igor Lubashev <[email-masked]>
Date: Sat, 30 Sep 2017 22:24:39 -0700

The text in #510 does not clarify whether retransmission of a lost BLOCKED frame is required or, if not, when it is allowed.  (Same applies to STREAM_BCLOKED.)  I can see three options:

1. _Retransmission is always required_.  This only makes sense, if the sending of BLOCKED is a MUST. Otherwise, it is inconsistent to require retransmission of an optional frame.  Required retransmission can help with aggregate statistics as to how much blocking there was during the lifetime of the connection. However, this may not give clear info to the receiver as to the current state of the stream/connection.

2. _Retransmission is required only if the sender is still blocked on the same data limit._  This also only makes sense, if the sending of BLOCKED is a MUST. This gives the receiver a bit better view into the state of the sender's stream but may lose "blocked" events.

3. _Retransmission is always allowed (not to required)_. This only makes sense, if the sending of BLOCKED is optional (and should probably be used with the same level of optionality -- SHOULD or MAY). This is probably the most confusing option -- the receiver cannot use this either for the view of sender's connection state or for accurate accounting of "blocked" events.

4. _Retransmission is allowed (but not required) only if the sender is still blocked on the same data limit._  This also only makes sense, if the sending of BLOCKED is optional. This will behaves like a debug frame, which may be helpful in traces.

Also, while we are at it, BLOCKED (and its cousens) could benefit from a field with an explicit value of the data limit that triggered the "blocked" condition.  It may also benefit from a field with the desired data limit (i.e. how much data the sender could send, if it were not blocked by the flow control).

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/452#issuecomment-333354549