Mercurial > hg > nginx
annotate docs/dtd/changes.dtd @ 9191:618132842e7c
QUIC: ignore duplicate PATH_CHALLENGE frames.
According to RFC 9000, an endpoint SHOULD NOT send multiple PATH_CHALLENGE
frames in a single packet. The change adds a check to enforce this claim to
optimize server behavior. Previously each PATH_CHALLENGE always resulted in a
single response datagram being sent to client. The effect of this was however
limited by QUIC flood protection.
Also, PATH_CHALLENGE is explicitly disabled in Initial and Handshake levels,
see RFC 9000, Table 3. However, technically it may be sent by client in 0-RTT
over a new path without actual migration, even though the migration itself is
prohibited during handshake. This allows client to coalesce multiple 0-RTT
packets each carrying a PATH_CHALLENGE and end up with multiple PATH_CHALLENGEs
per datagram. This again leads to suboptimal behavior, see above. Since the
purpose of sending PATH_CHALLENGE frames in 0-RTT is unclear, these frames are
now only allowed in 1-RTT. For 0-RTT they are silently ignored.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Wed, 22 Nov 2023 14:48:12 +0400 |
parents | 5e3bda6f5208 |
children | e79c7521aaf4 |
rev | line source |
---|---|
450 | 1 |
2 <!ENTITY nbsp " " > | |
547 | 3 <!ENTITY mdash " - " > |
450 | 4 |
5 | |
6 <!ELEMENT change_log (changes)* > | |
7 <!ATTLIST change_log title CDATA #REQUIRED > | |
8 | |
9 <!ELEMENT changes (change)* > | |
10 <!ATTLIST changes ver CDATA #REQUIRED | |
11 date CDATA #REQUIRED | |
12 > | |
13 | |
14 <!ELEMENT change (para)* > | |
4831
5e3bda6f5208
Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents:
547
diff
changeset
|
15 <!ATTLIST change type (bugfix | feature | change | security | workaround) #IMPLIED > |
450 | 16 |
17 <!ELEMENT para (#PCDATA | at | br | nobr)* > | |
4831
5e3bda6f5208
Pass changes.xml thru xmllint when generating CHANGES and CHANGES.ru.
Ruslan Ermilov <ru@nginx.com>
parents:
547
diff
changeset
|
18 <!ATTLIST para lang (ru | en) #REQUIRED > |
450 | 19 |
20 <!ELEMENT at EMPTY > | |
21 <!ELEMENT br EMPTY > | |
22 <!ELEMENT nobr (#PCDATA) > |