<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nginx.git/src/http/v3/ngx_http_v3_module.c, branch release-1.28.3</title>
<subtitle>nginx</subtitle>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/'/>
<entry>
<title>QUIC: "handshake_timeout" configuration parameter.</title>
<updated>2023-09-13T13:59:37+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2023-09-13T13:59:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=33dca887925d9cec7153252dcd5380c394090936'/>
<id>33dca887925d9cec7153252dcd5380c394090936</id>
<content type='text'>
Previously QUIC did not have such parameter and handshake duration was
controlled by HTTP/3.  However that required creating and storing HTTP/3
session on first client datagram.  Apparently there's no convenient way to
store the session object until QUIC handshake is complete.  In the followup
patches session creation will be postponed to init() callback.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously QUIC did not have such parameter and handshake duration was
controlled by HTTP/3.  However that required creating and storing HTTP/3
session on first client datagram.  Apparently there's no convenient way to
store the session object until QUIC handshake is complete.  In the followup
patches session creation will be postponed to init() callback.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/3: removed server push support.</title>
<updated>2023-05-12T06:02:10+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2023-05-12T06:02:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=e4edf78bac950213e00bb97ac46ece807f3cc073'/>
<id>e4edf78bac950213e00bb97ac46ece807f3cc073</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>QUIC: removed "quic_mtu" directive.</title>
<updated>2023-05-11T06:37:51+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2023-05-11T06:37:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=6cc803e713698b4b09ab46ccd7ae986faa55c386'/>
<id>6cc803e713698b4b09ab46ccd7ae986faa55c386</id>
<content type='text'>
The directive used to set the value of the "max_udp_payload_size" transport
parameter.  According to RFC 9000, Section 18.2, the value specifies the size
of buffer for reading incoming datagrams:

    This limit does act as an additional constraint on datagram size in
    the same way as the path MTU, but it is a property of the endpoint
    and not the path; see Section 14. It is expected that this is the
    space an endpoint dedicates to holding incoming packets.

Current QUIC implementation uses the maximum possible buffer size (65527) for
reading datagrams.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The directive used to set the value of the "max_udp_payload_size" transport
parameter.  According to RFC 9000, Section 18.2, the value specifies the size
of buffer for reading incoming datagrams:

    This limit does act as an additional constraint on datagram size in
    the same way as the path MTU, but it is a property of the endpoint
    and not the path; see Section 14. It is expected that this is the
    space an endpoint dedicates to holding incoming packets.

Current QUIC implementation uses the maximum possible buffer size (65527) for
reading datagrams.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/3: "quic" parameter of "listen" directive.</title>
<updated>2023-02-27T10:00:56+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2023-02-27T10:00:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=815ef96124176baef4e940c4beaec158305b368a'/>
<id>815ef96124176baef4e940c4beaec158305b368a</id>
<content type='text'>
Now "listen" directve has a new "quic" parameter which enables QUIC protocol
for the address.  Further, to enable HTTP/3, a new directive "http3" is
introduced.  The hq-interop protocol is enabled by "http3_hq" as before.
Now application protocol is chosen by ALPN.

Previously used "http3" parameter of "listen" is deprecated.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now "listen" directve has a new "quic" parameter which enables QUIC protocol
for the address.  Further, to enable HTTP/3, a new directive "http3" is
introduced.  The hq-interop protocol is enabled by "http3_hq" as before.
Now application protocol is chosen by ALPN.

Previously used "http3" parameter of "listen" is deprecated.
</pre>
</div>
</content>
</entry>
<entry>
<title>QUIC: application init() callback.</title>
<updated>2022-11-30T08:51:15+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2022-11-30T08:51:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=64ccdf45288c46b5f8e12426d3802c44d789d115'/>
<id>64ccdf45288c46b5f8e12426d3802c44d789d115</id>
<content type='text'>
It's called after handshake completion or prior to the first early data stream
creation.  The callback should initialize application-level data before
creating streams.

HTTP/3 callback implementation sets keepalive timer and sends SETTINGS.

Also, this allows to limit max handshake time in ngx_http_v3_init_stream().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It's called after handshake completion or prior to the first early data stream
creation.  The callback should initialize application-level data before
creating streams.

HTTP/3 callback implementation sets keepalive timer and sends SETTINGS.

Also, this allows to limit max handshake time in ngx_http_v3_init_stream().
</pre>
</div>
</content>
</entry>
<entry>
<title>QUIC: idle mode for main connection.</title>
<updated>2022-10-19T13:45:18+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2022-10-19T13:45:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=fed44881d3bf5126b49144dba58f2830e0fe9866'/>
<id>fed44881d3bf5126b49144dba58f2830e0fe9866</id>
<content type='text'>
Now main QUIC connection for HTTP/3 always has c-&gt;idle flag set.  This allows
the connection to receive worker shutdown notification.  It is passed to
application level via a new conf-&gt;shutdown() callback.

The HTTP/3 shutdown callback sends GOAWAY to client and gracefully shuts down
the QUIC connection.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now main QUIC connection for HTTP/3 always has c-&gt;idle flag set.  This allows
the connection to receive worker shutdown notification.  It is passed to
application level via a new conf-&gt;shutdown() callback.

The HTTP/3 shutdown callback sends GOAWAY to client and gracefully shuts down
the QUIC connection.
</pre>
</div>
</content>
</entry>
<entry>
<title>QUIC: the "quic_active_connection_id_limit" directive.</title>
<updated>2022-01-18T09:49:55+00:00</updated>
<author>
<name>Vladimir Homutov</name>
<email>vl@nginx.com</email>
</author>
<published>2022-01-18T09:49:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=1f97aa71ecaa75dfd646495a13534b10405b500c'/>
<id>1f97aa71ecaa75dfd646495a13534b10405b500c</id>
<content type='text'>
The directive sets corresponding transport parameter and limits number of
created client ids.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The directive sets corresponding transport parameter and limits number of
created client ids.
</pre>
</div>
</content>
</entry>
<entry>
<title>QUIC: simplified configuration.</title>
<updated>2021-12-06T12:19:54+00:00</updated>
<author>
<name>Vladimir Homutov</name>
<email>vl@nginx.com</email>
</author>
<published>2021-12-06T12:19:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=0791b508807eac65681c9c33d27acece67a9a421'/>
<id>0791b508807eac65681c9c33d27acece67a9a421</id>
<content type='text'>
Directives that set transport parameters are removed from the configuration.
Corresponding values are derived from the quic configuration or initialized
to default.  Whenever possible, quic configuration parameters are taken from
higher-level protocol settings, i.e. HTTP/3.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Directives that set transport parameters are removed from the configuration.
Corresponding values are derived from the quic configuration or initialized
to default.  Whenever possible, quic configuration parameters are taken from
higher-level protocol settings, i.e. HTTP/3.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/3: $http3 variable.</title>
<updated>2021-12-01T08:02:17+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2021-12-01T08:02:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=835854520a07adf6e3bedfad486a92cecdcd33ac'/>
<id>835854520a07adf6e3bedfad486a92cecdcd33ac</id>
<content type='text'>
A new variable $http3 is added.  The variable equals to "h3" for HTTP/3
connections, "hq" for hq connections and is an empty string otherwise.

The variable $quic is eliminated.

The new variable is similar to $http2 variable.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A new variable $http3 is added.  The variable equals to "h3" for HTTP/3
connections, "hq" for hq connections and is an empty string otherwise.

The variable $quic is eliminated.

The new variable is similar to $http2 variable.
</pre>
</div>
</content>
</entry>
<entry>
<title>HTTP/3: http3_hq directive and NGX_HTTP_V3_HQ macro.</title>
<updated>2021-12-04T07:52:55+00:00</updated>
<author>
<name>Roman Arutyunyan</name>
<email>arut@nginx.com</email>
</author>
<published>2021-12-04T07:52:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sigsegv.uk/nginx.git/commit/?id=d84c1f7885cc898f626057c314cdae4047c5d513'/>
<id>d84c1f7885cc898f626057c314cdae4047c5d513</id>
<content type='text'>
Listen quic parameter is no longer supported.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Listen quic parameter is no longer supported.
</pre>
</div>
</content>
</entry>
</feed>
