Marten Seemann
017ed984f3
ackhandler: fix panic in probe packet tracking logic ( #4998 )
...
Under certain circumstances (loss and acknowledgment patterns), the
probe packet tracking logic could run into a nil-pointer dereference.
2025-03-21 06:28:19 +01:00
Marten Seemann
9f704c72cf
ackhandler: fix handling of lost path probes on loss timer ( #4956 )
2025-02-14 15:29:42 +01:00
Marten Seemann
108b6603c8
ackhandler: implement timer logic for path probe packets ( #4940 )
...
* remove unused bool return value from sentPacketHandler.getPTOTimeAndSpace
* ackhandler: implement timer logic for path probing packets
Path probe packets are treated differently from regular packets: The new
path might have a vastly different RTT than the original path.
Path probe packets are declared lost 1s after they are sent. This value
can be reduced, once implement proper retransmission logic for lost path
probes.
* ackhandler: declare path probes lost on OnLossDetectionTimeout
2025-01-28 06:10:44 +01:00
Marten Seemann
33fd4d1d16
ackhandler: fix ack of packet number ranges in sent packet handler tests ( #4897 )
...
The packet number generator for the application data packet number
space randomly skips packet numbers. We need to be careful to not
acknowledge a skipped packet when acknowledging a range of packets in
the sent packet handler tests.
2025-01-21 12:52:57 +08:00
Marten Seemann
88501cc02a
ackhandler: migrate sentPacketHandler tests away from Ginkgo ( #4881 )
2025-01-20 14:04:37 +08:00
Marten Seemann
2d2538d790
ackhandler: remove unneeded SetHandshakeConfirmed from SentPacketHandler ( #4890 )
...
According to section 4.9.2 of RFC 9001, dropping the Handshake packet
number spaces happens when the handshake is confirmed.
2025-01-20 12:59:27 +08:00
Marten Seemann
29f98a296c
ackhandler: avoid calling time.Now() when setting loss detection timer ( #4885 )
2025-01-18 15:40:30 +08:00
Marten Seemann
d87e2bb649
ackhandler: remove error return value of SentPacketHandler.ResetForRetry ( #4834 )
2025-01-06 15:05:19 +08:00
Marten Seemann
5dbb46dcc1
utils: remove unused now parameter from RTTStats.UpdateRTT ( #4780 )
2024-12-22 14:50:31 +08:00
Marten Seemann
7a10ed602d
utils: remove unused methods and constructor from RTTStats ( #4672 )
2024-09-12 00:55:57 -07:00
Marten Seemann
e90a0d4e03
increase initial packet size to 1280 bytes (for both IPv4 and IPv6) ( #4500 )
2024-05-08 20:55:19 -07:00
Marten Seemann
d6ac6300a4
feed ECN feedback into the congestion controller
2023-09-11 21:17:31 +07:00
Marten Seemann
797e275293
congestion: rename OnPacketLost to OnCongestionEvent
2023-09-11 21:14:53 +07:00
Marten Seemann
b73a4de7ea
only add an ECN control message if ECN is supported
2023-09-11 20:31:50 +07:00
Marten Seemann
5dd6d91c11
send and track packets with ECN markings
2023-09-11 20:31:50 +07:00
Marten Seemann
54b76ceb3e
ackhandler: use the receive time of the Retry packet for RTT estimation ( #4070 )
2023-09-09 06:12:19 -07:00
Marten Seemann
2797f85fc0
switch from unmaintained golang/mock to go.uber.org/mock ( #4050 )
2023-08-28 02:23:55 -07:00
Marten Seemann
469a6153b6
use a synchronous API for the crypto setup ( #3939 )
2023-07-21 10:00:42 -07:00
Marten Seemann
da55dfaabd
ackhandler: unexport Packet
2023-06-05 21:06:58 +03:00
Marten Seemann
e1bcedc78c
ackhandler: use a frame handler interface for OnAcked / OnLost of all frame types ( #3888 )
2023-06-04 13:04:28 -07:00
Marten Seemann
bde283640b
ackhandler: be explicit about skipping packet numbers ( #3886 )
2023-06-04 12:45:43 -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
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
0438eada95
use ackhandler.Frame directly, not as a pointer, remove its sync.Pool ( #3835 )
2023-06-02 04:56:18 -07: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
2aa71ff76b
use a sync.Pool for ackhandler.Frames ( #3656 )
2023-01-17 23:15:02 -08:00
cliffc-spirent
b8447041bb
limit the exponential PTO backoff to 60s ( #3595 )
2022-11-15 15:42:35 -08:00
Toby
5fe9f9bd89
chore: fix multiple typos in comments ( #3612 )
...
* chore: fix multiple typos I run into
* Update conn_id_generator_test.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
* Update internal/ackhandler/sent_packet_handler_test.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
Co-authored-by: Marten Seemann <martenseemann@gmail.com >
2022-11-06 10:59:16 -08:00
Marten Seemann
870fbe7ab0
migrate to Ginkgo v2
2022-10-11 16:38:44 +04:00
Marten Seemann
fd38fe4a9a
avoid allocations when adding packets to the sent packet history
2022-08-27 18:22:46 +03:00
Benedikt Spies
7da024da5a
Disable anti-amplification limit by address validation token ( #3326 )
2022-08-20 08:02:17 -07:00
Marten Seemann
61748d4d63
cancel the PTO timer when all Handshake packets are acknowledged
2021-07-13 14:05:00 -04:00
Marten Seemann
592fb9cad9
introduce a dedicated qerr.TransportError and qerr.ApplicationError
2021-05-01 09:38:48 +07:00
Marten Seemann
dd052657c5
declare Path MTU probe packets lost with the early retransmit timer
2021-04-30 23:57:49 +07:00
Marten Seemann
17d9860db6
declare the handshake confirmed when receiving an ACK for a 1-RTT packet
...
... on the client side. Both the receipt of HANDSHAKE_DONE and the
receipt of an ACK for a 1-RTT packet are sufficient for declaring
confirmation of the handshake.
2021-04-14 22:33:45 +07:00
Marten Seemann
3138a45fde
Merge pull request #3129 from lucas-clemente/limit-retry-rtt-measurement
...
don't use a lower RTT than 5ms after receiving a Retry packet
2021-04-02 19:30:06 +07:00
Marten Seemann
4b10e67bf1
Merge pull request #3132 from lucas-clemente/amplification-limit-fixes
...
various amplification limit fixes
2021-04-02 18:32:38 +07:00
Marten Seemann
b6634fe124
reset the loss detection timer when the client's address is validated
2021-04-02 17:21:31 +07:00
Marten Seemann
a695bae019
restart the loss detection timer when the server becomes unblocked
2021-04-02 17:20:53 +07:00
Marten Seemann
3fab321ea7
cancel the loss detection timer when amplification limited
2021-04-02 17:20:53 +07:00
Marten Seemann
d48c08037a
don't use a lower RTT than 5ms after receiving a Retry packet
2021-03-26 15:55:30 +07:00
Marten Seemann
7feda789d2
initialize the congestion controller with the actual max datagram size
2021-03-20 14:02:28 +08:00
Marten Seemann
97ab014479
don't retransmit 0-RTT packets when 0-RTT is rejected
2021-03-09 17:59:49 +08:00
Marten Seemann
765d26f132
don't reduce the congestion window when a path MTU probe packet is lost
2021-03-03 12:00:52 +08:00
Marten Seemann
31de6244e2
fix flaky sentPacketHandler test
2020-12-21 18:07:31 +07:00
Marten Seemann
02b700804f
remove support for quic-trace
2020-12-05 23:13:45 +07:00
Marten Seemann
fb6a536adb
add a unit test for ACK of skipped packet detection
2020-11-22 11:02:48 +07:00
Marten Seemann
0c2f562411
allow an amplification factor of 3.x
2020-11-06 14:16:11 +07:00
Marten Seemann
8752576f26
run gofumpt, enable the gofumpt linter
2020-10-26 09:33:35 +07:00