Marten Seemann
168889f283
ackhandler: use a typed mock for the ECNHandler ( #5311 )
...
No functional change expected.
2025-08-28 13:39:42 +02:00
Marten Seemann
0cd4bd940b
ackhandler: use an iterator to process received packet ranges ( #5309 )
...
* ackhandler: use an interator to track received packet ranges
* use slices.Collect
* naming convention
2025-08-28 10:32:26 +02:00
Marten Seemann
cead8cfbd6
ackhandler: fix resetting of packet.isPathProbePacket ( #5310 )
2025-08-28 10:18:49 +02:00
Marten Seemann
8c062ae604
use testing.B.Loop in all benchmark tests ( #5285 )
...
go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -category=bloop -fix -test ./...
was used as a starting point.
2025-08-16 12:44:56 +02:00
Marten Seemann
fea19fc3ec
update to Go 1.25, drop Go 1.23, use go tool for gomock ( #5283 )
...
* update to Go 1.25, drop support for Go 1.23
* ci: update golangci-lint to v2.4.0
* use new go tool command for gomock / mockgen
* also update Go version used for oss-fuzz
2025-08-16 06:14:01 +02:00
Marten Seemann
fee90a89ef
ackhandler: generalize check for missing packets below threshold ( #5260 )
...
* ackhandler: check for missing packets below reordering treshold
No functional change expected.
With the Acknowledgement Frequency extension, the reordering threshold
will become configurable. With this change, it will be easy to use the
peer-requested value instead of the predefined constant.
* improve documentation
* call HighestMissingUpTo in randomized test
2025-08-14 16:51:24 +02:00
Marten Seemann
da27fcf33f
expose basic connection stats via Conn.ConnectionStats ( #5281 )
...
* Add ConnectionStats
* remove for loop
* Add comments
* Update comments
---------
Co-authored-by: Marco Munizaga <git@marcopolo.io >
2025-08-13 16:45:14 +02:00
Marten Seemann
5422e4c68c
ackhandler: remove unused time from receivedPacketHandler.ReceivedPacket ( #5277 )
...
* ackhandler: remove unused time from receivedPacketHandler.ReceivedPacket
No functional change expected.
* fix typo
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* also fix typo in tests
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-08-05 06:03:02 +02:00
Marten Seemann
b69abbaf11
wire: implement parsing and writing of the IMMEDIATE_ACK frame ( #5265 )
2025-07-21 15:56:04 +02:00
Marten Seemann
06e31852cb
wire: implement parsing and writing of the ACK_FREQUENCY frame ( #5264 )
...
* implement parsing and writing of the ACK_FREQUENCY frame
* prevent overflows of Request Max Ack Delay
* fix fuzzer
2025-07-21 15:35:06 +02:00
Jannis Seemann
c2e784aaf2
wire: optimize parsing logic for STREAM, DATAGRAM and ACK frames ( #5227 )
...
ParseOtherFrames-16 148ns ± 4% 150ns ± 3% ~ (p=0.223 n=8+8)
ParseAckFrame-16 302ns ± 2% 298ns ± 3% ~ (p=0.246 n=8+8)
ParseStreamFrame-16 262ns ± 3% 213ns ± 2% -18.61% (p=0.000 n=8+8)
ParseDatagramFrame-16 561ns ± 5% 547ns ± 4% ~ (p=0.105 n=8+8)
2025-07-20 13:14:38 +02:00
Marten Seemann
488ba91262
ackhandler: migrate the ECN tests away from Ginkgo ( #5084 )
2025-06-01 06:40:58 +02:00
Marten Seemann
597fee0b34
ackhandler: migrate the packet number generator tests away from Ginkgo ( #5081 )
2025-04-27 11:27:28 +02:00
Marten Seemann
267cca773b
switch from math/rand to math/rand/v2 ( #5045 )
...
* switch from math/rand to math/rand/v2
* switch away from golang.org/x/exp/rand
2025-04-19 09:01:22 +02:00
Marten Seemann
623e59b2a2
ackhandler: fix qlogging of path probe timer resets and cancellations ( #5003 )
2025-03-23 16:02:30 +01:00
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
b32f1fa0e4
ackhandler: use Go iterators to iterate over sent packets ( #4952 )
2025-02-13 13:53:25 +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
895faf6dc9
ackhandler: add path probe tracking logic to sent packet history ( #4934 )
2025-01-26 15:14:55 +01:00
Marten Seemann
79003d1618
ackhandler: remove unneeded error return from packet history iterator ( #4917 )
...
No functional change expected.
2025-01-24 04:45:38 +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
bf3ccd1fb3
ackhandler: refactor loss detection timer reset logic ( #4893 )
2025-01-21 11:09:32 +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
92dc1970ec
ackhandler: avoid calling time.Now() when generating ACK frame ( #4886 )
2025-01-18 17:16:30 +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
516220b0c5
ackhandler: migrate sent packet history tests away from Ginkgo ( #4869 )
2025-01-13 10:27:12 +08:00
Marten Seemann
e448aefdf0
ackhandler: migrate received packet handler tests away from Ginkgo ( #4865 )
2025-01-12 21:40:55 +08:00
Marten Seemann
3f0f399540
ackhandler: migrate received packet tracker tests away from Ginkgo ( #4864 )
2025-01-12 21:28:26 +08:00
Marten Seemann
9d1c1d4e7f
ackhandler: migrate received packet history tests away from Ginkgo ( #4863 )
2025-01-12 21:18:53 +08:00
Marten Seemann
f18d42fd23
ackhandler: migrate ack-elicitng and send mode tests away from Ginkgo ( #4862 )
2025-01-12 21:09:37 +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
95998056d5
update GoMock to v0.5.0 ( #4776 )
2024-12-21 10:56:18 +08:00
Marten Seemann
7a10ed602d
utils: remove unused methods and constructor from RTTStats ( #4672 )
2024-09-12 00:55:57 -07:00
Marten Seemann
4be70e0146
protocol: use the packet number decoding / encoding logic from the RFC ( #4661 )
2024-09-05 09:54:44 -07:00
Marten Seemann
047cc90f42
ackhandler: reduce allocations for tracking sent packets ( #4602 )
2024-07-31 16:37:05 -07:00
Marten Seemann
c40d4ccb7f
ackhandler: optimize received packet tracking ( #4584 )
...
* ackhandler: use slice instead of linked list to track received packets
* ackhandler: add benchmark test for received packet history
* ackhandler: use the slices package for slice manipulations
2024-07-20 08:14:26 -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
f1476390f2
update gomock to v0.4.0 ( #4361 )
2024-03-10 18:07:20 -07:00
Marten Seemann
69ba7acb9f
ackhandler: don't delay ACKs for Initial and Handshake packets ( #4288 )
...
* ackhandler: don't delay ACKs for Initial and Handshake packets
* ackhandler: embed the receivedPacketHistory
2024-01-31 19:13:53 -08:00
Marten Seemann
d330d2e30d
remove unused RTTStats from the received packet handler ( #4287 )
2024-01-30 01:02:30 -08:00
Marten Seemann
54d6f7dc51
ackhandler: refactor ACK queueing logic ( #4225 )
...
Once an ACK has been queued, there's no need to check futher conditions that
would lead to queueing of an ACK.
2024-01-03 18:39:09 -08:00
Marten Seemann
22411e16d5
utils: switch to standard library min and max functions ( #4218 )
...
These functions were added in Go 1.21.
2023-12-27 21:19:13 -08:00
Marten Seemann
9414ea4910
ackhandler: immediately acknowledge ECN-CE marked packets ( #4147 )
...
* ackhandler: immediately acknowledge ECN-CE marked packets
* shorter debug statements
2023-11-03 08:28:16 -07:00
Marten Seemann
a263164d9f
use new gomock feature to generate type-safe methods in mocks ( #4057 )
2023-10-20 22:55:33 -07:00
Marten Seemann
9a397abc17
update gomock to v0.3.0 ( #4087 )
2023-09-24 04:38:28 -07:00
Marten Seemann
4a046185b7
ackhandler: fix ECN mangling detection when packets are lost ( #4089 )
...
Some of the 10 testing packets are might be lost, while others might be
CE-marked. We need to detect mangling if all testing packets are either
lost are CE-marked.
2023-09-17 22:08:33 -07:00
Marten Seemann
c12f425803
ackhandler: don't fail ECN validation if less than 10 testing packets are lost ( #4088 )
...
* ackhandler: don't fail ECN validation less than 10 testing packets lost
* ackhandler: simplify checks for mangling and loss of all testing packets
2023-09-17 23:00:05 +04:00