Merge pull request #2294 from nghttp2/remove-nghttp2-dependency-based-priority-section

Remove nghttp2 dependency based priority section
This commit is contained in:
Tatsuhiro Tsujikawa
2025-01-12 18:24:40 +09:00
committed by GitHub
7 changed files with 34 additions and 225 deletions

View File

@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
.. ..
.TH "H2LOAD" "1" "Oct 21, 2024" "1.64.0" "nghttp2" .TH "H2LOAD" "1" "Jan 12, 2025" "1.65.0-DEV" "nghttp2"
.SH NAME .SH NAME
h2load \- HTTP/2 benchmarking tool h2load \- HTTP/2 benchmarking tool
.SH SYNOPSIS .SH SYNOPSIS

View File

@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
.. ..
.TH "NGHTTP" "1" "Oct 21, 2024" "1.64.0" "nghttp2" .TH "NGHTTP" "1" "Jan 12, 2025" "1.65.0-DEV" "nghttp2"
.SH NAME .SH NAME
nghttp \- HTTP/2 client nghttp \- HTTP/2 client
.SH SYNOPSIS .SH SYNOPSIS
@@ -141,14 +141,15 @@ HTTP upgrade request is performed with OPTIONS method.
.UNINDENT .UNINDENT
.INDENT 0.0 .INDENT 0.0
.TP .TP
.B \-p, \-\-weight=<WEIGHT> .B \-\-extpri=<PRI>
Sets weight of given URI. This option can be used Sets RFC 9218 priority of given URI. <PRI> must be the
multiple times, and N\-th \fI\%\-p\fP option sets weight of N\-th wire format of priority header field (e.g., \(dqu=3,i\(dq).
URI in the command line. If the number of \fI\%\-p\fP option is This option can be used multiple times, and N\-th
less than the number of URI, the last \fI\%\-p\fP option value is \fI\%\-\-extpri\fP option sets priority of N\-th URI in the command
repeated. If there is no \fI\%\-p\fP option, default weight, 16, line. If the number of this option is less than the
is assumed. The valid value range is number of URI, the last option value is repeated. If
[1, 256], inclusive. there is no \fI\%\-\-extpri\fP option, urgency is 3, and
incremental is false.
.UNINDENT .UNINDENT
.INDENT 0.0 .INDENT 0.0
.TP .TP
@@ -205,11 +206,6 @@ Don\(aqt send content\-length header field.
.UNINDENT .UNINDENT
.INDENT 0.0 .INDENT 0.0
.TP .TP
.B \-\-no\-dep
Don\(aqt send dependency based priority hint to server.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-hexdump .B \-\-hexdump
Display the incoming traffic in hexadecimal (Canonical Display the incoming traffic in hexadecimal (Canonical
hex+ASCII display). If SSL/TLS is used, decrypted data hex+ASCII display). If SSL/TLS is used, decrypted data
@@ -268,63 +264,6 @@ The <DURATION> argument is an integer and an optional unit (e.g., 1s
is 1 second and 500ms is 500 milliseconds). Units are h, m, s or ms is 1 second and 500ms is 500 milliseconds). Units are h, m, s or ms
(hours, minutes, seconds and milliseconds, respectively). If a unit (hours, minutes, seconds and milliseconds, respectively). If a unit
is omitted, a second is used as unit. is omitted, a second is used as unit.
.SH DEPENDENCY BASED PRIORITY
.sp
nghttp sends priority hints to server by default unless
\fI\%\-\-no\-dep\fP is used. nghttp mimics the way Firefox employs to
manages dependency using idle streams. We follows the behaviour of
Firefox Nightly as of April, 2015, and nghttp\(aqs behaviour is very
static and could be different from Firefox in detail. But reproducing
the same behaviour of Firefox is not our goal. The goal is provide
the easy way to test out the dependency priority in server
implementation.
.sp
When connection is established, nghttp sends 5 PRIORITY frames to idle
streams 3, 5, 7, 9 and 11 to create \(dqanchor\(dq nodes in dependency
tree:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
+\-\-\-\-\-+
|id=0 |
+\-\-\-\-\-+
^ ^ ^
w=201 / | \e w=1
/ | \e
/ w=101| \e
+\-\-\-\-\-+ +\-\-\-\-\-+ +\-\-\-\-\-+
|id=3 | |id=5 | |id=7 |
+\-\-\-\-\-+ +\-\-\-\-\-+ +\-\-\-\-\-+
^ ^
w=1 | w=1 |
| |
+\-\-\-\-\-+ +\-\-\-\-\-+
|id=11| |id=9 |
+\-\-\-\-\-+ +\-\-\-\-\-+
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
In the above figure, \fBid\fP means stream ID, and \fBw\fP means weight.
The stream 0 is non\-existence stream, and forms the root of the tree.
The stream 7 and 9 are not used for now.
.sp
The URIs given in the command\-line depend on stream 11 with the weight
given in \fI\%\-p\fP option, which defaults to 16.
.sp
If \fI\%\-a\fP option is used, nghttp parses the resource pointed by
URI given in command\-line as html, and extracts resource links from
it. When requesting those resources, nghttp uses dependency according
to its resource type.
.sp
For CSS, and Javascript files inside \(dqhead\(dq element, they depend on
stream 3 with the weight 2. The Javascript files outside \(dqhead\(dq
element depend on stream 5 with the weight 2. The mages depend on
stream 11 with the weight 12. The other resources (e.g., icon) depend
on stream 11 with the weight 2.
.SH SEE ALSO .SH SEE ALSO
.sp .sp
\fBnghttpd(1)\fP, \fBnghttpx(1)\fP, \fBh2load(1)\fP \fBnghttpd(1)\fP, \fBnghttpx(1)\fP, \fBh2load(1)\fP

View File

@@ -105,15 +105,16 @@ OPTIONS
if the request URI has https scheme. If :option:`-d` is used, the if the request URI has https scheme. If :option:`-d` is used, the
HTTP upgrade request is performed with OPTIONS method. HTTP upgrade request is performed with OPTIONS method.
.. option:: -p, --weight=<WEIGHT> .. option:: --extpri=<PRI>
Sets weight of given URI. This option can be used Sets RFC 9218 priority of given URI. <PRI> must be the
multiple times, and N-th :option:`-p` option sets weight of N-th wire format of priority header field (e.g., "u=3,i").
URI in the command line. If the number of :option:`-p` option is This option can be used multiple times, and N-th
less than the number of URI, the last :option:`-p` option value is :option:`--extpri` option sets priority of N-th URI in the command
repeated. If there is no :option:`-p` option, default weight, 16, line. If the number of this option is less than the
is assumed. The valid value range is number of URI, the last option value is repeated. If
[1, 256], inclusive. there is no :option:`--extpri` option, urgency is 3, and
incremental is false.
.. option:: -M, --peer-max-concurrent-streams=<N> .. option:: -M, --peer-max-concurrent-streams=<N>
@@ -160,10 +161,6 @@ OPTIONS
Don't send content-length header field. Don't send content-length header field.
.. option:: --no-dep
Don't send dependency based priority hint to server.
.. option:: --hexdump .. option:: --hexdump
Display the incoming traffic in hexadecimal (Canonical Display the incoming traffic in hexadecimal (Canonical
@@ -217,59 +214,6 @@ is 1 second and 500ms is 500 milliseconds). Units are h, m, s or ms
(hours, minutes, seconds and milliseconds, respectively). If a unit (hours, minutes, seconds and milliseconds, respectively). If a unit
is omitted, a second is used as unit. is omitted, a second is used as unit.
DEPENDENCY BASED PRIORITY
-------------------------
nghttp sends priority hints to server by default unless
:option:`--no-dep` is used. nghttp mimics the way Firefox employs to
manages dependency using idle streams. We follows the behaviour of
Firefox Nightly as of April, 2015, and nghttp's behaviour is very
static and could be different from Firefox in detail. But reproducing
the same behaviour of Firefox is not our goal. The goal is provide
the easy way to test out the dependency priority in server
implementation.
When connection is established, nghttp sends 5 PRIORITY frames to idle
streams 3, 5, 7, 9 and 11 to create "anchor" nodes in dependency
tree:
.. code-block:: text
+-----+
|id=0 |
+-----+
^ ^ ^
w=201 / | \ w=1
/ | \
/ w=101| \
+-----+ +-----+ +-----+
|id=3 | |id=5 | |id=7 |
+-----+ +-----+ +-----+
^ ^
w=1 | w=1 |
| |
+-----+ +-----+
|id=11| |id=9 |
+-----+ +-----+
In the above figure, ``id`` means stream ID, and ``w`` means weight.
The stream 0 is non-existence stream, and forms the root of the tree.
The stream 7 and 9 are not used for now.
The URIs given in the command-line depend on stream 11 with the weight
given in :option:`-p` option, which defaults to 16.
If :option:`-a` option is used, nghttp parses the resource pointed by
URI given in command-line as html, and extracts resource links from
it. When requesting those resources, nghttp uses dependency according
to its resource type.
For CSS, and Javascript files inside "head" element, they depend on
stream 3 with the weight 2. The Javascript files outside "head"
element depend on stream 5 with the weight 2. The mages depend on
stream 11 with the weight 12. The other resources (e.g., icon) depend
on stream 11 with the weight 2.
SEE ALSO SEE ALSO
-------- --------

View File

@@ -1,56 +1,3 @@
DEPENDENCY BASED PRIORITY
-------------------------
nghttp sends priority hints to server by default unless
:option:`--no-dep` is used. nghttp mimics the way Firefox employs to
manages dependency using idle streams. We follows the behaviour of
Firefox Nightly as of April, 2015, and nghttp's behaviour is very
static and could be different from Firefox in detail. But reproducing
the same behaviour of Firefox is not our goal. The goal is provide
the easy way to test out the dependency priority in server
implementation.
When connection is established, nghttp sends 5 PRIORITY frames to idle
streams 3, 5, 7, 9 and 11 to create "anchor" nodes in dependency
tree:
.. code-block:: text
+-----+
|id=0 |
+-----+
^ ^ ^
w=201 / | \ w=1
/ | \
/ w=101| \
+-----+ +-----+ +-----+
|id=3 | |id=5 | |id=7 |
+-----+ +-----+ +-----+
^ ^
w=1 | w=1 |
| |
+-----+ +-----+
|id=11| |id=9 |
+-----+ +-----+
In the above figure, ``id`` means stream ID, and ``w`` means weight.
The stream 0 is non-existence stream, and forms the root of the tree.
The stream 7 and 9 are not used for now.
The URIs given in the command-line depend on stream 11 with the weight
given in :option:`-p` option, which defaults to 16.
If :option:`-a` option is used, nghttp parses the resource pointed by
URI given in command-line as html, and extracts resource links from
it. When requesting those resources, nghttp uses dependency according
to its resource type.
For CSS, and Javascript files inside "head" element, they depend on
stream 3 with the weight 2. The Javascript files outside "head"
element depend on stream 5 with the weight 2. The mages depend on
stream 11 with the weight 12. The other resources (e.g., icon) depend
on stream 11 with the weight 2.
SEE ALSO SEE ALSO
-------- --------

View File

@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
.. ..
.TH "NGHTTPD" "1" "Oct 21, 2024" "1.64.0" "nghttp2" .TH "NGHTTPD" "1" "Jan 12, 2025" "1.65.0-DEV" "nghttp2"
.SH NAME .SH NAME
nghttpd \- HTTP/2 server nghttpd \- HTTP/2 server
.SH SYNOPSIS .SH SYNOPSIS
@@ -209,11 +209,6 @@ Enable ktls.
.UNINDENT .UNINDENT
.INDENT 0.0 .INDENT 0.0
.TP .TP
.B \-\-no\-rfc7540\-pri
Disable RFC7540 priorities.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-version .B \-\-version
Display version information and exit. Display version information and exit.
.UNINDENT .UNINDENT

View File

@@ -163,10 +163,6 @@ OPTIONS
Enable ktls. Enable ktls.
.. option:: --no-rfc7540-pri
Disable RFC7540 priorities.
.. option:: --version .. option:: --version
Display version information and exit. Display version information and exit.

View File

@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
.. ..
.TH "NGHTTPX" "1" "Oct 21, 2024" "1.64.0" "nghttp2" .TH "NGHTTPX" "1" "Jan 12, 2025" "1.65.0-DEV" "nghttp2"
.SH NAME .SH NAME
nghttpx \- HTTP/2 proxy nghttpx \- HTTP/2 proxy
.SH SYNOPSIS .SH SYNOPSIS
@@ -2003,11 +2003,9 @@ request header field, do this:
.INDENT 7.0 .INDENT 7.0
.INDENT 3.5 .INDENT 3.5
.sp .sp
.nf .EX
.ft C
add\-request\-header=foo: bar add\-request\-header=foo: bar
.ft P .EE
.fi
.UNINDENT .UNINDENT
.UNINDENT .UNINDENT
.sp .sp
@@ -2015,11 +2013,9 @@ instead of:
.INDENT 7.0 .INDENT 7.0
.INDENT 3.5 .INDENT 3.5
.sp .sp
.nf .EX
.ft C
add\-request\-header=\(dqfoo: bar\(dq add\-request\-header=\(dqfoo: bar\(dq
.ft P .EE
.fi
.UNINDENT .UNINDENT
.UNINDENT .UNINDENT
.sp .sp
@@ -2124,12 +2120,10 @@ header field to initiate server push:
.INDENT 0.0 .INDENT 0.0
.INDENT 3.5 .INDENT 3.5
.sp .sp
.nf .EX
.ft C
Link: </fonts/font.woff>; rel=preload Link: </fonts/font.woff>; rel=preload
Link: </css/theme.css>; rel=preload Link: </css/theme.css>; rel=preload
.ft P .EE
.fi
.UNINDENT .UNINDENT
.UNINDENT .UNINDENT
.sp .sp
@@ -2224,8 +2218,7 @@ memcached is the binary format described below:
.INDENT 0.0 .INDENT 0.0
.INDENT 3.5 .INDENT 3.5
.sp .sp
.nf .EX
.ft C
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
| VERSION (4) |LEN (2)|KEY(48 or 80) ... | VERSION (4) |LEN (2)|KEY(48 or 80) ...
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-\-\-\-+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
@@ -2233,8 +2226,7 @@ memcached is the binary format described below:
| | | |
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+
(LEN, KEY) pair can be repeated (LEN, KEY) pair can be repeated
.ft P .EE
.fi
.UNINDENT .UNINDENT
.UNINDENT .UNINDENT
.sp .sp
@@ -2651,8 +2643,7 @@ Modify request path:
.INDENT 0.0 .INDENT 0.0
.INDENT 3.5 .INDENT 3.5
.sp .sp
.nf .EX
.ft C
class App class App
def on_req(env) def on_req(env)
env.req.path = \(dq/apps#{env.req.path}\(dq env.req.path = \(dq/apps#{env.req.path}\(dq
@@ -2660,8 +2651,7 @@ class App
end end
App.new App.new
.ft P .EE
.fi
.UNINDENT .UNINDENT
.UNINDENT .UNINDENT
.sp .sp
@@ -2672,8 +2662,7 @@ addresses:
.INDENT 0.0 .INDENT 0.0
.INDENT 3.5 .INDENT 3.5
.sp .sp
.nf .EX
.ft C
class App class App
def on_req(env) def on_req(env)
allowed_clients = [\(dq127.0.0.1\(dq, \(dq::1\(dq] allowed_clients = [\(dq127.0.0.1\(dq, \(dq::1\(dq]
@@ -2687,8 +2676,7 @@ class App
end end
App.new App.new
.ft P .EE
.fi
.UNINDENT .UNINDENT
.UNINDENT .UNINDENT
.SH API ENDPOINTS .SH API ENDPOINTS