Commit Graph

240 Commits

Author SHA1 Message Date
Marten Seemann
e90a0d4e03 increase initial packet size to 1280 bytes (for both IPv4 and IPv6) (#4500) 2024-05-08 20:55:19 -07:00
bt90
75662469a1 increase send and receive buffer size to 7 MiB (#4455)
This increases throughput on high-bandwidth connections.
7 MB is the value that WireGuard uses, see
f26efb65f2
for details.
2024-04-23 13:28:14 -07:00
Marten Seemann
2fbe713bb6 protocol: don't capitalize Perspective.String (#4296) 2024-02-01 15:16:36 -08:00
Marten Seemann
0582e931a5 wire: optimize generation of Version Negotiation packets (#4278)
* wire: optimize generation of Version Negotiation packets

* protocol: optimize adding greased version numbers
2024-01-31 23:54:04 -08:00
Marten Seemann
fbaa941ea1 protocol: rename VersionNumber to Version (#4295) 2024-01-31 21:57:33 -08:00
Marten Seemann
1fce81f8bb queue up to 32 DATAGRAM frames to send (#4222) 2023-12-31 19:58:41 -08:00
chungthuang
7b9d21fbe6 send large max_datagram_frame size, introduce a DatagramTooLargeError error (#4143)
The size can be overwritten to a lower value for testing.
2023-12-02 06:27:15 -08:00
Marten Seemann
b73a4de7ea only add an ECN control message if ECN is supported 2023-09-11 20:31:50 +07:00
Marten Seemann
abfe1ef548 remove Config.MaxRetryTokenAge, set it to the handshake timeout (#4064)
There is no good reason to manually set the validity period for Retry
tokens. Retry tokens are only valid on a single connection during the
handshake, so it makes sense to limit their validity to the configured
handshake timeout.
2023-09-10 13:53:12 +07:00
Marten Seemann
e1fcac3e46 set the handshake timeout to twice the handshake idle timeout (#4063) 2023-09-09 06:12:37 -07:00
Marten Seemann
443c6148b6 protocol: add string representation for ECN values (#4008) 2023-08-18 17:17:37 -07:00
Marten Seemann
21388c86bb drop support for draft-29 (#3903) 2023-06-21 04:06:44 -07:00
Marten Seemann
7d8db149b6 introduce a buffer pool for large buffers (20k) 2023-06-02 18:35:02 +03:00
Marten Seemann
fce0261c34 wire: apply the default value for the active_connection_id_limit (#3806) 2023-05-28 11:45:46 -07:00
Marten Seemann
74be4d2755 add a function to set the UDP send buffer size
This function is the equivalent to the function used to set the UDP
receive buffer size. It's so similar that code generation is used to
make a copy of the setReceiveBuffer function.
2023-05-08 14:35:21 +03:00
Marten Seemann
1f57d4e789 protocol: remove VersionTLS, used during the gQUIC -> TLS 1.3 transition (#3764) 2023-04-19 07:24:34 -07:00
Marten Seemann
f36690ae9c protocol: remove VersionWhatever, previously used for testing (#3763) 2023-04-19 06:19:27 -07:00
Marten Seemann
7fbcbf7ac6 update QUIC v2 support to draft-ietf-quic-v2-08 (#3631) 2023-01-04 07:07:06 +13:00
Marten Seemann
870fbe7ab0 migrate to Ginkgo v2 2022-10-11 16:38:44 +04:00
Marten Seemann
d03f9c2a4f reduce max DATAGRAM frame size, so that DATAGRAMs fit in IPv6 packets (#3581) 2022-10-11 02:26:10 -07:00
Marten Seemann
4cbb4f8114 remove ConnectionID.Equal function
Connection IDs can now be compared with ==.
2022-08-29 11:30:32 +03:00
Marten Seemann
1aced95d41 use an array instead of a byte slice for Connection IDs 2022-08-29 11:30:31 +03:00
Marten Seemann
53412e9ba3 trace arbitrary length Connection IDs for Version Negotiation packets 2022-08-29 10:58:33 +03:00
Marten Seemann
21b9ef03be add a type for arbitrary length Connection IDs, and parsing function
RFC 8999 allows Connection IDs of up to 255 bytes. Current QUIC versions
only use up to 20 bytes.
2022-08-29 10:58:33 +03:00
João Oliveirinha
66f6fe0b71 add support for providing a custom Connection ID generator via Config (#3452)
* Add support for providing a custom ConnectionID generator via Config

This work makes it possible for servers or clients to control how
ConnectionIDs are generated, which in turn will force peers in the
connection to use those ConnectionIDs as destination connection IDs  when sending packets.

This is useful for scenarios where we want to perform some kind
selection on the QUIC packets at the L4 level.

* add more doc

* refactor populate config to not use provided config

* add an integration test for custom connection ID generators

* fix linter warnings

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2022-08-24 04:06:16 -07:00
Marten Seemann
bad60f3c27 add the version number for QUIC v2 2022-05-25 15:50:04 +02:00
Marten Seemann
d5961e9d60 update docs to reflect that we support RFC 9221 (Unreliable Datagrams) (#3382) 2022-04-25 04:10:51 -07:00
Marten Seemann
4b17343631 rename the session to connection 2022-03-27 12:50:14 +01:00
Marten Seemann
e71c236232 rename the Session to Connection 2022-03-27 11:27:23 +01:00
Marten Seemann
f51cc93770 drop support for QUIC draft version 32 and 34 2021-07-06 09:50:10 -07:00
Marten Seemann
876bc493cd Merge pull request #3213 from lucas-clemente/remove-retire-bug-compat-mode
remove the RetireBugBackwardsCompatibilityMode
2021-07-06 09:47:18 -07:00
Marten Seemann
9520f242e9 remove unused StripGreasedVersions function
Such a function would defeat the purpose of greasing. Fortunately, we didn't
actually use it anywhere.
2021-06-27 15:00:28 -07:00
Marten Seemann
b2857b5442 remove the RetireBugBackwardsCompatibilityMode 2021-06-26 15:49:02 -07:00
Marten Seemann
68da2c4468 add support for QUIC v1, RFC 9000 2021-05-29 11:56:14 -07:00
Marten Seemann
6b771df453 add support for QUIC v1 2021-05-01 10:05:29 +07:00
Marten Seemann
f5238bf7b1 move the ApplicationErrorCdoe to the qerr package 2021-05-01 09:38:49 +07:00
Marten Seemann
b57a1095c5 update the packet numbers in decoding test to the ones from the draft 2021-04-02 17:06:04 +07:00
Marten Seemann
a15cfd6871 make the initial connection flow control window configurable 2021-03-10 15:04:38 +08:00
Marten Seemann
d9434f523e make the initial stream flow control window configurable 2021-03-10 14:58:15 +08:00
Marten Seemann
db9807d779 Merge pull request #2966 from lucas-clemente/increase-max-datagram-frame-size
increase the maximum size of DATAGRAM frames
2021-03-10 12:08:00 +08:00
Marten Seemann
82ac6dcf6d rename MaxReceivePacketSize to MaxPacketBufferSize
We use the same buffer size for sending and receiving packets.
2021-03-03 12:00:14 +08:00
Marten Seemann
eea0b1eacd rename MaxPacketSizeIPv{4,6} to InitialPacketSizeIPv{4,6} 2021-03-03 12:00:14 +08:00
Marten Seemann
3e8e6b2e36 fix documentation of the default MaxReceiveConnectionFlowControlWindow 2021-03-01 11:33:42 +08:00
Marten Seemann
be4dc49114 fix documentation of the default MaxReceiveStreamFlowControlWindow 2021-03-01 11:33:15 +08:00
Marten Seemann
fd724f8d16 Merge pull request #3036 from lucas-clemente/no-0x-in-conn-id
log connection IDs without the 0x prefix
2021-02-13 19:33:03 +08:00
Marten Seemann
d5025b1373 add a version number for draft-34 2021-02-11 09:46:00 +08:00
Marten Seemann
6ece64d8a5 log connection IDs without the 0x prefix 2021-02-11 09:45:40 +08:00
Marten Seemann
86cec07568 remove the Max0RTTQueueLen and the MaxUndecrytablePackets by 1
Using values below a power of 2 might improve memory allocation.
2021-01-09 13:35:19 +08:00
Marten Seemann
ef87f15ecb increase the maximum size of DATAGRAM frames 2020-12-30 12:53:33 +08:00
Marten Seemann
9693a46d31 Merge pull request #2162 from lucas-clemente/datagram
implement the datagram draft
2020-12-17 11:22:40 +07:00