diff --git a/draft-ietf-quic-http.md b/draft-ietf-quic-http.md index 46c64a9546..c729fbeeb3 100644 --- a/draft-ietf-quic-http.md +++ b/draft-ietf-quic-http.md @@ -785,7 +785,7 @@ The following settings are defined in HTTP/QUIC: : An integer with a maximum value of 2^30 - 1. The default value is unlimited. - SETTINGS_BLOCKING_HEADER_REFERENCES (0x7): + SETTINGS_QPACK_BLOCKED_STREAMS (0x7): : An integer with a maximum value of 2^16 - 1. The default value is 100. #### Initial SETTINGS Values @@ -1454,6 +1454,7 @@ The entries in the following table are registered by this document. | Reserved | 0x4 | N/A | | Reserved | 0x5 | N/A | | MAX_HEADER_LIST_SIZE | 0x6 | {{settings-parameters}} | +| QPACK_BLOCKED_STREAMS | 0x7 | {{settings-parameters}} | |----------------------------|------|-------------------------| ## Error Codes {#iana-error-codes} diff --git a/draft-ietf-quic-qpack.md b/draft-ietf-quic-qpack.md index ebbe7f182b..de88eef00b 100644 --- a/draft-ietf-quic-qpack.md +++ b/draft-ietf-quic-qpack.md @@ -95,25 +95,26 @@ reintroduced by HPACK when the loss includes a HEADERS frame. ## Avoiding Head-of-Line Blocking in HTTP/QUIC {#overview-hol-avoidance} -In the example above, the header block on the second stream contained a -reference to data which might not yet have been processed by the recipient. Such -references are called "vulnerable," because the loss of a different packet can -keep the reference from being usable. If the reference cannot be immediately -processed on receipt, the stream is considered "blocked." +Because QUIC does not guarantee order between data on different streams, a +reference might be received on a request stream to an entry which is not yet in +the dynamic table. References are called "vulnerable" when they refer to entries +whose receipt has not been confirmed by the peer, because loss or reordering can +keep the reference from being immediately usable. If the reference cannot be +immediately processed on receipt, the stream is considered "blocked." The decoder can signal that it is willing to process vulnerable references by -setting SETTINGS_BLOCKING_HEADER_REFERENCES to a non-zero value. In this case, -the encoder can choose on a per-header-block basis whether to favor higher +setting SETTINGS_QPACK_BLOCKED_STREAMS to a non-zero value. In this case, the +encoder can choose on a per-header-block basis whether to favor higher compression ratio (by permitting vulnerable references) or HoL resilience (by avoiding them). An encoder MUST NOT have header blocks which contain vulnerable references -outstanding on more streams than the value of -SETTINGS_BLOCKING_HEADER_REFERENCES at any time. Note that the decoder's count -of streams which are actually blocked will be less than or equal to the -encoder's count of references which are vulnerable (potentially blocking). If -the decoder encounters more blocked streams than it promised to support, it -SHOULD treat this as a stream error of type HTTP_QPACK_DECOMPRESSION_FAILED. +outstanding on more streams than the value of SETTINGS_QPACK_BLOCKED_STREAMS at +any time. Note that the decoder's count of streams which are actually blocked +will be less than or equal to the encoder's count of references which are +vulnerable (potentially blocking). If the decoder encounters more blocked +streams than it promised to support, it SHOULD treat this as a stream error of +type HTTP_QPACK_DECOMPRESSION_FAILED. The header block contains a Base Index (see {{absolute-index}}) which is used to correctly index entries, regardless of reordering in the transport (see