Commit Graph

1502 Commits

Author SHA1 Message Date
Marten Seemann
bde283640b ackhandler: be explicit about skipping packet numbers (#3886) 2023-06-04 12:45:43 -07:00
Marten Seemann
6619e17dd7 ackhandler: don't log / trace skipped packets when declaring them lost (#3887) 2023-06-04 12:29:40 -07:00
Marten Seemann
8f3a68b4eb ackhandler: use a slice to keep track of sent packets (#3841)
* ackhandler: simplify deletion of old packets in packet history

* ackhandler: use a slice to keep track of sent packets

This is a vastly simpler data structure than the combination of map
and linked list used before. It avoids using a linked list (bad cache
locality) and a sync.Pool (for list elements), as well as having to do
hash table lookups.

In the future, this can be easily replaces with a ring buffer, avoiding
all allocations.

* ackhandler: don't store packets that were declared lost
2023-06-04 02:36:38 -07:00
Marten Seemann
6f07050269 ackhandler: apply logic from RFC 9000 to derive packet number length (#3885) 2023-06-04 02:17:57 -07:00
Marten Seemann
b27d114f07 pass the current timestamp to the pacer instead of calling time.Now() (#3824) 2023-06-03 00:26:30 -07:00
Marten Seemann
9d70bc24a5 simplify pacing logic by introducing a SendPacingLimited send mode 2023-06-02 18:35:02 +03:00
Marten Seemann
7d8db149b6 introduce a buffer pool for large buffers (20k) 2023-06-02 18:35:02 +03:00
Marten Seemann
7ea6dc991f use the same ACK frame struct in the send path, remove ACK frame pool (#3831) 2023-06-02 08:34:27 -07:00
Marten Seemann
21544085e1 Merge pull request #3878 from quic-go/single-ack-receiving
use a single ACK frame in the receive path
2023-06-02 18:06:06 +03:00
Marten Seemann
a595d34557 use a single ACK frame in the receive path 2023-06-02 17:21:46 +03:00
Marten Seemann
0438eada95 use ackhandler.Frame directly, not as a pointer, remove its sync.Pool (#3835) 2023-06-02 04:56:18 -07:00
Marten Seemann
f8d24ef1e9 don't use closures for passing OnLost and OnAcked STREAM frame callbacks (#3833) 2023-06-02 04:14:04 -07:00
Marten Seemann
215ba85db4 ackhandler: simplify sentPacketHandler.SentPacket (#3847)
No functional change expected.
2023-06-02 02:59:46 -07:00
Glonee
f1f42d8d90 use a ring buffer in the framer (#3857)
* implement and use ringbuffer in framer

* Add comments for ring buffer

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-06-01 11:53:37 -07: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
378e3c8b74 wire: save ECN counts on the ACK frame (#3829) 2023-05-28 16:36:38 +03:00
Marten Seemann
02013caaa4 rttstats: don't set initial RTT after having obtained a measurement (#3852) 2023-05-28 15:09:25 +03:00
Sukun
cb3453db25 fix comment claiming ParseConnectionID reuses the data slice (#3848) 2023-05-21 07:54:50 -07:00
Marten Seemann
cf267ff7d7 optimize memory layout of ackhandler.Packet (#3844)
Before: 88 bytes. After: 80 bytes.
2023-05-19 10:03:24 +03: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
07ad2cbee2 remove Tracer from Config, put ConnectionTracer constructor there 2023-05-02 15:56:49 +02:00
Marten Seemann
7a0ef5f867 make Config.Allow0RTT a bool, not a callback 2023-05-02 15:56:49 +02:00
Marten Seemann
86a1234c87 make EarlyListener a struct, not an interface 2023-05-01 14:41:16 +02:00
Marten Seemann
94829edf35 congestion: fix overflow when calculating the pacing budget (#3796) 2023-05-01 05:32:20 -07:00
Marten Seemann
c9a2f79b1c simplify mockgen usage for private interfaces (#3769) 2023-04-19 07:57:00 -07:00
Marten Seemann
379e7ec848 Merge pull request #3745 from quic-go/aggressive-key-updates
initiate the first key update after sending / receiving 100 packets
2023-04-19 16:28:33 +02:00
Marten Seemann
e7751de92e qtls: fix cipher suite selection for ClientHellos (#3751) 2023-04-19 07:26:47 -07: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
a519d827d1 wire: use a dedicated rand.Rand for greasing transport parameters (#3758)
rand.Seed is deprecated since Go 1.20. This change also reduces
(potential) lock contention when obtaining random numbers / bytes.
2023-04-19 06:21:25 -07:00
Marten Seemann
f36690ae9c protocol: remove VersionWhatever, previously used for testing (#3763) 2023-04-19 06:19:27 -07:00
Marten Seemann
969b5dc131 add a handshake test for post-quantum-size ClientHellos (#3759)
Post-quantum ClientHellos typically are larger than 1 MTU and will
therefore need to be split across multiple packets.
2023-04-19 06:01:43 -07:00
Marten Seemann
7a393315bd wire: use constants for frame types (#3739) 2023-04-19 05:58:31 -07:00
Marten Seemann
eb05964942 wire: speed up identification of 0-RTT packets (#3761) 2023-04-19 05:50:57 -07:00
Marten Seemann
da26f91905 wire: correctly parse multi-byte frame types (#3736) 2023-04-19 05:42:23 -07:00
Marten Seemann
b03585160f handshake: initiate the first key update after 100 packets 2023-03-31 18:20:49 +09:00
Marten Seemann
1ebd359b20 handshake: remove unnecessary member variable from updatableAEAD 2023-03-28 22:50:21 +09:00
Marten Seemann
af6c19617c handshake: add benchmark tests for packet sealing, opening and rolling keys 2023-03-28 22:46:57 +09:00
Marten Seemann
56a6d8d35b ci: update golangci-lint to v1.52.2, update Go version (#3740)
* ci: update golangci-lint to v1.52.2, update Go version

* run gofumpt
2023-03-27 22:55:26 -07:00
Marten Seemann
23f4565108 qtls: don't set the tls.Config.CipherSuites for cipher suite tests (#3726)
* qtls: don't set the tls.Config.CipherSuites for cipher suite tests

* use qtls versions that don't allow setting of tls.Config.CipherSuites
2023-03-26 06:56:41 -07:00
Marten Seemann
a4b0265628 use a chan instead of a context in Connection.HandshakeComplete (#3709) 2023-03-26 06:51:56 -07:00
Marten Seemann
41ddaa0262 attach the QUIC version to context returned by ClientHelloInfo.Context (#3721) 2023-03-26 22:26:14 +09:00
zoltan-kiss-cujo
b7384a4404 quicv2: fix TLS extension type (#3710)
* quicv2: fix TLS extension type

* Update internal/handshake/tls_extension_handler.go

Co-authored-by: Marten Seemann <martenseemann@gmail.com>

---------

Co-authored-by: Marten Seemann <martenseemann@gmail.com>
2023-02-15 14:17:31 -08:00
Marten Seemann
0ac5d1c149 reduce the size of messageChan channel in the crypto setup (#3664) 2023-02-13 13:55:49 -08:00
Marten Seemann
04c3fd0756 deprecate quicvarint.Write in favor of quicvarint.Append (#3690) 2023-02-13 02:52:25 -08:00
Marten Seemann
dee98638a4 use atomic.Bool from the standard library 2023-02-04 17:44:57 +13:00
Marten Seemann
f42357f096 drop qtls support for Go 1.18 2023-02-04 17:44:54 +13:00
Marten Seemann
3d9380ec3c reject invalid active_connection_id_limit transport parameter values (#3687) 2023-02-01 17:03:19 -08:00
Marten Seemann
58cedf7a4f rename module, adjust import paths to quic-go/quic-go (#3680) 2023-01-21 19:53:57 -08:00
Marten Seemann
9488539a49 update imports to use qtls and qpack from quic-go GitHub organization (#3676) 2023-01-20 13:42:54 -08:00
Marten Seemann
ef28f4667f refactor frame parser to remove version parameter from constructor 2023-01-18 20:51:58 +13:00