diff options
author | Richard Levitte <levitte@openssl.org> | 2022-08-22 08:11:10 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2022-09-23 17:55:03 +0200 |
commit | 9be2693438756b5f1b789f1b8db76c3b987063dc (patch) | |
tree | ceec08b353b62a063f24b3788eecb4136ccba906 /doc | |
parent | 69ed6760f938975d9cdcc12ec756d58c83ac6b90 (diff) |
Extend the RX Depacketizer frame table with what packet types they are valid in
Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18838)
Diffstat (limited to 'doc')
-rw-r--r-- | doc/designs/quic-design/rx-depacketizer.md | 78 |
1 files changed, 44 insertions, 34 deletions
diff --git a/doc/designs/quic-design/rx-depacketizer.md b/doc/designs/quic-design/rx-depacketizer.md index 1222973c1b..97aff069f9 100644 --- a/doc/designs/quic-design/rx-depacketizer.md +++ b/doc/designs/quic-design/rx-depacketizer.md @@ -96,40 +96,49 @@ and calls diverse other components as shown in the Passed to column in Taken from [RFC 9000 12.4 Frames and Frame Types] -| Type | Name | Passed to | ACK eliciting | -| ---- | ------------------------ | ------------------------- | ------------- | -| 0x00 | [padding] | - | | -| 0x01 | [ping] | - | ✔ | -| 0x02 | [ack 0x02] | [ACK manager] [^1] | | -| 0x03 | [ack 0x03] | [ACK manager] [^1] | | -| 0x04 | [reset_stream] | - [^2] | ✔ | -| 0x05 | [stop_sending] | - [^3] | ✔ | -| 0x06 | [crypto] | Handshake manager | ✔ | -| 0x07 | [new_token] | Session manager | ✔ | -| 0x08 | [stream 0x08] | Apprioriate stream [^4] | ✔ | -| 0x09 | [stream 0x09] | Apprioriate stream [^4] | ✔ | -| 0x0A | [stream 0x0A] | Apprioriate stream [^4] | ✔ | -| 0x0B | [stream 0x0B] | Apprioriate stream [^4] | ✔ | -| 0x0C | [stream 0x0C] | Apprioriate stream [^4] | ✔ | -| 0x0D | [stream 0x0D] | Apprioriate stream [^4] | ✔ | -| 0x0E | [stream 0x0E] | Apprioriate stream [^4] | ✔ | -| 0x0F | [stream 0x0F] | Apprioriate stream [^4] | ✔ | -| 0x10 | [max_data] | Flow control [^5] | ✔ | -| 0x11 | [max_stream_data] | Flow control [^5] | ✔ | -| 0x12 | [max_streams 0x12] | Connection manager? [^6] | ✔ | -| 0x13 | [max_streams 0x13] | Connection manager? [^6] | ✔ | -| 0x14 | [data_blocked] | Flow control [^5] | ✔ | -| 0x15 | [stream_data_blocked] | Flow control [^5] | ✔ | -| 0x16 | [streams_blocked 0x16] | Connection manager? [^6] | ✔ | -| 0x17 | [streams_blocked 0x17] | Connection manager? [^6] | ✔ | -| 0x18 | [new_connection_id] | Connection manager | ✔ | -| 0x19 | [retire_connection_id] | Connection manager | ✔ | -| 0x1A | [path_challenge] | Connection manager? [^7] | ✔ | -| 0x1B | [path_response] | Connection manager? [^7] | ✔ | -| 0x1C | [connection_close 0x1C] | Connection manager | | -| 0x1D | [connection_close 0x1D] | Connection manager | | -| 0x1E | [handshake_done] | Handshake manager | ✔ | -| ???? | *[Extension Frames]* | - [^8] | ✔ | +| Type | Name | Passed to | ACK eliciting | I | H | 0 | 1 | +|------|-------------------------|--------------------------|---------------|----------|----------|----------|----------| +| 0x00 | [padding] | - | | ✔ | ✔ | ✔ | ✔ | +| 0x01 | [ping] | - | ✔ | ✔ | ✔ | ✔ | ✔ | +| 0x02 | [ack 0x02] | [ACK manager] [^1] | | ✔ | ✔ | | ✔ | +| 0x03 | [ack 0x03] | [ACK manager] [^1] | | ✔ | ✔ | | ✔ | +| 0x04 | [reset_stream] | - [^2] | ✔ | | | ✔ | ✔ | +| 0x05 | [stop_sending] | - [^3] | ✔ | | | ✔ | ✔ | +| 0x06 | [crypto] | Handshake manager | ✔ | ✔ | ✔ | | ✔ | +| 0x07 | [new_token] | Session manager | ✔ | | | | ✔ | +| 0x08 | [stream 0x08] | Apprioriate stream [^4] | ✔ | | | ✔ | ✔ | +| 0x09 | [stream 0x09] | Apprioriate stream [^4] | ✔ | | | ✔ | ✔ | +| 0x0A | [stream 0x0A] | Apprioriate stream [^4] | ✔ | | | ✔ | ✔ | +| 0x0B | [stream 0x0B] | Apprioriate stream [^4] | ✔ | | | ✔ | ✔ | +| 0x0C | [stream 0x0C] | Apprioriate stream [^4] | ✔ | | | ✔ | ✔ | +| 0x0D | [stream 0x0D] | Apprioriate stream [^4] | ✔ | | | ✔ | ✔ | +| 0x0E | [stream 0x0E] | Apprioriate stream [^4] | ✔ | | | ✔ | ✔ | +| 0x0F | [stream 0x0F] | Apprioriate stream [^4] | ✔ | | | ✔ | ✔ | +| 0x10 | [max_data] | Flow control [^5] | ✔ | | | ✔ | ✔ | +| 0x11 | [max_stream_data] | Flow control [^5] | ✔ | | | ✔ | ✔ | +| 0x12 | [max_streams 0x12] | Connection manager? [^6] | ✔ | | | ✔ | ✔ | +| 0x13 | [max_streams 0x13] | Connection manager? [^6] | ✔ | | | ✔ | ✔ | +| 0x14 | [data_blocked] | Flow control [^5] | ✔ | | | ✔ | ✔ | +| 0x15 | [stream_data_blocked] | Flow control [^5] | ✔ | | | ✔ | ✔ | +| 0x16 | [streams_blocked 0x16] | Connection manager? [^6] | ✔ | | | ✔ | ✔ | +| 0x17 | [streams_blocked 0x17] | Connection manager? [^6] | ✔ | | | ✔ | ✔ | +| 0x18 | [new_connection_id] | Connection manager | ✔ | | | ✔ | ✔ | +| 0x19 | [retire_connection_id] | Connection manager | ✔ | | | ✔ | ✔ | +| 0x1A | [path_challenge] | Connection manager? [^7] | ✔ | | | ✔ | ✔ | +| 0x1B | [path_response] | Connection manager? [^7] | ✔ | | | | ✔ | +| 0x1C | [connection_close 0x1C] | Connection manager | | ✔ | ✔ | ✔ | ✔ | +| 0x1D | [connection_close 0x1D] | Connection manager | | | | ✔ | ✔ | +| 0x1E | [handshake_done] | Handshake manager | ✔ | | | | ✔ | +| ???? | *[Extension Frames]* | - [^8] | ✔ | | | | | + +The I, H, 0, and 1 columns are validity in different packet types, with this meaning: + +| Pkts | Description | +|:----:|----------------------------| +| I | Valid in Initial packets | +| H | Valid in Handshake packets | +| 0 | Valid in 0-RTT packets | +| 1 | Valid in 1-RTT packets | Notes: @@ -161,6 +170,7 @@ Notes: [SSL object refactoring using SSL_CONNECTION object]: https://github.com/openssl/openssl/pull/18612 [QUIC Demuxer and Record Layer (RX+TX)]: https://github.com/openssl/openssl/pull/18949 [ACK manager]: https://github.com/openssl/openssl/pull/18564 +[RFC 9000 12.4 Frames and Frame Types]: https://datatracker.ietf.org/doc/html/rfc9000#section-12.4 [padding]: https://datatracker.ietf.org/doc/html/rfc9000#section-19.1 [ping]: https://datatracker.ietf.org/doc/html/rfc9000#section-19.2 [ack 0x02]: https://datatracker.ietf.org/doc/html/rfc9000#section-19.3 |