comparison README @ 8601:dd8e50e11bfc quic

QUIC: updated README. - ACK ranges are implemented - up to draft-32 is now supported - removed mentions of early alpha quality and further cleanup
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 22 Oct 2020 12:55:15 +0100
parents 57e5393e5d40
children 2dfc5ef29973
comparison
equal deleted inserted replaced
8600:06af25901b1a 8601:dd8e50e11bfc
13 13
14 This is an experimental QUIC [1] / HTTP/3 [2] support for nginx. 14 This is an experimental QUIC [1] / HTTP/3 [2] support for nginx.
15 15
16 The code is developed in a separate "quic" branch available 16 The code is developed in a separate "quic" branch available
17 at https://hg.nginx.org/nginx-quic. Currently it is based 17 at https://hg.nginx.org/nginx-quic. Currently it is based
18 on nginx mainline 1.19.x. We are planning to merge new nginx 18 on nginx mainline 1.19.x. We merge new nginx releases into
19 releases into this branch regularly. 19 this branch regularly.
20 20
21 The project code base is under the same BSD license as nginx. 21 The project code base is under the same BSD license as nginx.
22 22
23 The code is at an early alpha level of quality and should not 23 The code is currently at a beta level of quality and should not
24 be used in production. 24 be used in production.
25 25
26 We are working on improving HTTP/3 support with the goal of 26 We are working on improving HTTP/3 support with the goal of
27 integrating it to the main NGINX codebase. Expect frequent 27 integrating it to the main NGINX codebase. Expect frequent
28 updates of this code and don't rely on it for whatever purpose. 28 updates of this code and don't rely on it for whatever purpose.
32 32
33 You can always contact us via nginx-devel mailing list [3]. 33 You can always contact us via nginx-devel mailing list [3].
34 34
35 What works now: 35 What works now:
36 36
37 Currently we support IETF-QUIC draft-27, draft-28, draft-29. 37 Currently we support IETF-QUIC draft-27 through draft-32.
38 Earlier drafts are NOT supported as they have incompatible wire format. 38 Earlier drafts are NOT supported as they have incompatible wire format.
39 39
40 You may look at src/event/ngx_event_quic.h for alternative values of the 40 You may look at src/event/ngx_event_quic.h for alternative values of the
41 NGX_QUIC_DRAFT_VERSION macro used to select IETF draft version number. 41 NGX_QUIC_DRAFT_VERSION macro used to select IETF draft version number.
42 42
43 nginx should be able to respond to simple HTTP/3 requests over QUIC and 43 nginx should be able to respond to HTTP/3 requests over QUIC and
44 it should be possible to upload and download big files without errors. 44 it should be possible to upload and download big files without errors.
45 45
46 + The handshake completes successfully 46 + The handshake completes successfully
47 + One endpoint can update keys and its peer responds correctly 47 + One endpoint can update keys and its peer responds correctly
48 + 0-RTT data is being received and acted on 48 + 0-RTT data is being received and acted on
64 - Address Mobility 64 - Address Mobility
65 - HTTP/3 trailers 65 - HTTP/3 trailers
66 66
67 Since the code is experimental and still under development, 67 Since the code is experimental and still under development,
68 a lot of things may not work as expected, for example: 68 a lot of things may not work as expected, for example:
69
70 - ACK handling is basic: every received ack-eliciting packet
71 is acknowledged, no ack ranges are used
72 69
73 - Flow control mechanism is basic and intended to avoid CPU hog and make 70 - Flow control mechanism is basic and intended to avoid CPU hog and make
74 simple interactions possible 71 simple interactions possible
75 72
76 - Not all draft requirements are strictly followed; some of checks are 73 - Not all draft requirements are strictly followed; some of checks are
215 212
216 5. Troubleshooting 213 5. Troubleshooting
217 214
218 Here are some tips that may help you to identify problems: 215 Here are some tips that may help you to identify problems:
219 216
220 + Ensure you are building with proper SSL library that 217 + Ensure you are building with proper SSL library that supports QUIC
221 implements draft 29
222 218
223 + Ensure you are using the proper SSL library in runtime 219 + Ensure you are using the proper SSL library in runtime
224 (`nginx -V` will show you what you are using) 220 (`nginx -V` will show you what you are using)
225 221
226 + Ensure your client is actually sending QUIC requests 222 + Ensure your client is actually sending QUIC requests
249 If you are willing to contribute, please refer to 245 If you are willing to contribute, please refer to
250 http://nginx.org/en/docs/contributing_changes.html 246 http://nginx.org/en/docs/contributing_changes.html
251 247
252 7. Links 248 7. Links
253 249
254 [1] https://tools.ietf.org/html/draft-ietf-quic-transport-29 250 [1] https://tools.ietf.org/html/draft-ietf-quic-transport
255 [2] https://tools.ietf.org/html/draft-ietf-quic-http-29 251 [2] https://tools.ietf.org/html/draft-ietf-quic-http
256 [3] https://mailman.nginx.org/mailman/listinfo/nginx-devel 252 [3] https://mailman.nginx.org/mailman/listinfo/nginx-devel
257 [4] https://boringssl.googlesource.com/boringssl/ 253 [4] https://boringssl.googlesource.com/boringssl/
258 [5] https://tools.ietf.org/html/draft-ietf-quic-recovery-29 254 [5] https://tools.ietf.org/html/draft-ietf-quic-recovery
259 [6] https://nginx.org/en/docs/http/ngx_http_core_module.html#listen 255 [6] https://nginx.org/en/docs/http/ngx_http_core_module.html#listen
260 [7] https://nginx.org/en/docs/debugging_log.html 256 [7] https://nginx.org/en/docs/debugging_log.html