changeset 9073:3c33d39a51d3 quic

README: updated building from sources, added directives reference.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 08 Feb 2023 12:47:35 +0400
parents def8e398d7c5
children 93876a4c3b27
files README
diffstat 1 files changed, 136 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/README
+++ b/README
@@ -51,7 +51,16 @@ 1. Introduction
     + Lost packets are detected and retransmitted properly
     + Clients may migrate to new address
 
-2. Installing
+2. Building from sources
+
+    The build is configured using the configure command.
+    Refer to http://nginx.org/en/docs/configure.html for details.
+
+    When configuring nginx, it's possible to enable QUIC and HTTP/3
+    using the following new configuration options:
+
+        --with-http_v3_module     - enable QUIC and HTTP/3
+        --with-stream_quic_module - enable QUIC in Stream
 
     A library that provides QUIC support is required to build nginx, there
     are several of those available on the market:
@@ -85,12 +94,6 @@ 2. Installing
                        --with-cc-opt="-I../libressl/build/include" \
                        --with-ld-opt="-L../libressl/build/lib"
 
-    When configuring nginx, it's possible to enable QUIC and HTTP/3
-    using the following new configuration options:
-
-        --with-http_v3_module     - enable QUIC and HTTP/3
-        --with-stream_quic_module - enable QUIC in Stream
-
 3. Configuration
 
     The HTTP "listen" directive got a new option "http3" which enables
@@ -174,7 +177,129 @@ Example configuration:
         }
     }
 
-4. Clients
+4. Directives
+
+    Syntax: quic_bpf on | off;
+    Default: quic_bpf off;
+    Context: main
+
+    Enables routing of QUIC packets using eBPF.
+    When enabled, this allows to support QUIC connection migration.
+    The directive is only supported on Linux 5.7+.
+
+
+    Syntax: quic_retry on | off;
+    Default: quic_retry off;
+    Context: http | stream, server
+
+    Enables the QUIC Address Validation feature.  This includes:
+    - sending a new token in a Retry packet or a NEW_TOKEN frame
+    - validating a token received in the Initial packet
+
+
+    Syntax: quic_gso on | off;
+    Default: quic_gso off;
+    Context: http | stream, server
+
+    Enables sending in optimized batch mode using segmentation offloading.
+    Optimized sending is only supported on Linux featuring UDP_SEGMENT.
+
+
+    Syntax: quic_mtu size;
+    Default: quic_mtu 65527;
+    Context: http | stream, server
+
+    Sets the QUIC max_udp_payload_size transport parameter value.
+    This is the maximum UDP payload that we are willing to receive.
+
+
+    Syntax: quic_host_key file;
+    Default: -
+    Context: http | stream, server
+
+    Specifies a file with the secret key used to encrypt stateless reset and
+    address validation tokens.  By default, a randomly generated key is used.
+
+
+    Syntax: quic_active_connection_id_limit number;
+    Default: quic_active_connection_id_limit 2;
+    Context: http | stream, server
+
+    Sets the QUIC active_connection_id_limit transport parameter value.
+    This is the maximum number of connection IDs we are willing to store.
+
+
+    Syntax: quic_timeout time;
+    Default: quic_timeout 60s;
+    Context: stream, server
+
+    Defines a timeout used to negotiate the QUIC idle timeout.
+    In the http module, it is taken from the keepalive_timeout directive.
+
+
+    Syntax: quic_stream_buffer_size size;
+    Default: quic_stream_buffer_size 64k;
+    Context: stream, server
+
+    Syntax: http3_stream_buffer_size size;
+    Default: http3_stream_buffer_size 64k;
+    Context: http, server
+
+    Sets buffer size for reading and writing of the QUIC STREAM payload.
+    The buffer size is used to calculate initial flow control limits
+    in the following QUIC transport parameters:
+    - initial_max_data
+    - initial_max_stream_data_bidi_local
+    - initial_max_stream_data_bidi_remote
+    - initial_max_stream_data_uni
+
+
+    Syntax: http3_max_concurrent_pushes number;
+    Default: http3_max_concurrent_pushes 10;
+    Context: http, server
+
+    Limits the maximum number of concurrent push requests in a connection.
+
+
+    Syntax: http3_max_concurrent_streams number;
+    Default: http3_max_concurrent_streams 128;
+    Context: http, server
+
+    Sets the maximum number of concurrent HTTP/3 streams in a connection.
+
+
+    Syntax: http3_push uri | off;
+    Default: http3_push off;
+    Context: http, server, location
+
+    Pre-emptively sends (pushes) a request to the specified uri along with
+    the response to the original request.  Only relative URIs with absolute
+    path will be processed, for example:
+
+    http3_push /static/css/main.css;
+
+    The uri value can contain variables.
+
+    Several http3_push directives can be specified on the same configuration
+    level.  The off parameter cancels the effect of the http3_push directives
+    inherited from the previous configuration level.
+
+
+    Syntax: http3_push_preload on | off;
+    Default: http3_push_preload off;
+    Context: http, server, location
+
+    Enables automatic conversion of preload links specified in the “Link”
+    response header fields into push requests.
+
+
+    Syntax: http3_hq on | off;
+    Default: http3_hq off;
+    Context: http, server
+
+    Enables HTTP/0.9 protocol negotiation used in QUIC interoperability tests.
+
+5. Clients
 
     * Browsers
 
@@ -201,7 +326,7 @@ 4. Clients
                                          "nghttp3/ngtcp2 client" "quic"
 
 
-5. Troubleshooting
+6. Troubleshooting
 
     Here are some tips that may help to identify problems:
 
@@ -231,12 +356,12 @@ 5. Troubleshooting
         #define NGX_QUIC_DEBUG_ALLOC
         #define NGX_QUIC_DEBUG_CRYPTO
 
-6. Contributing
+7. Contributing
 
     Please refer to
     http://nginx.org/en/docs/contributing_changes.html
 
-7. Links
+8. Links
 
     [1] https://datatracker.ietf.org/doc/html/rfc9000
     [2] https://datatracker.ietf.org/doc/html/rfc9114