Gaukas Wang
9178bdb6a5
fix: MaybePackProbePacket also use QUIC spec ( #34 )
...
Patch MaybePackProbePacket to also generate the initial packet based on the QUIC spec if set. This fixes the incorrect behavior observed on automatic retry on timeout (sending probe packet), where uquic was inccorectly sending the default frames (PADDING, CRYPTO) instead of specified frames by QUIC spec.
Signed-off-by: Gaukas Wang <i@gaukas.wang>
2024-05-02 19:09:00 -06:00
Gaukas Wang
05c12945b8
fix: build error after sync
...
Signed-off-by: Gaukas Wang <i@gaukas.wang>
2024-04-23 23:20:14 -06:00
Gaukas Wang
4973374ea5
sync: quic-go 0.42.0
...
Signed-off-by: Gaukas Wang <i@gaukas.wang>
2024-04-23 22:34:55 -06:00
Gaukas Wang
77691ccce8
fix: error after sync
2023-10-26 22:48:59 -06:00
Gaukas Wang
7c77243b04
upstream: sync to 0.39.1
2023-10-26 22:47:22 -06: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
Marten Seemann
9b82196578
make the logging.Tracer and logging.ConnectionTracer a struct ( #4082 )
2023-09-16 04:58:51 -07:00
Marten Seemann
d52e9f35bc
ackhandler: detect ECN mangling ( #4080 )
...
* ackhandler: detect ECN mangling
Mangling means that a path is re-marking all ECN-marked packets as CE.
* ackhandler: only detect ECN mangling once all testing packets were sent
2023-09-11 23:18:33 -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
f9cfa248da
implement ECN path validation logic, send ECN-marked 1-RTT packets
2023-09-11 21:14:52 +07:00
Marten Seemann
bed8ebbd4c
distinguish coalesced and 1-RTT packets when determining ECN mode
2023-09-11 20:31:50 +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
96b1943cf5
ackhandler: rename variables to follow RFC 9002 terminology ( #4062 )
2023-09-03 21:45:41 -07:00
Gaukas Wang
856bc02b8f
Merge branch 'upstream' into sync-upstream
2023-08-28 14:12:03 -06:00
Marten Seemann
2797f85fc0
switch from unmaintained golang/mock to go.uber.org/mock ( #4050 )
2023-08-28 02:23:55 -07:00
Gaukas Wang
95575f5fe7
break: update repo url [ci skip]
...
uTLS is not yet bumped to the new version, so this commit breaks the dependencies relationship by getting rid of the local replace.
2023-08-03 18:58:52 -06:00
Gaukas Wang
ea40752ca3
new: uquic
2023-08-02 15:38:16 -06:00
Gaukas Wang
251b3afe6e
impl: QUIC Header mimicry
2023-07-29 13:17:27 -06:00
Marten Seemann
469a6153b6
use a synchronous API for the crypto setup ( #3939 )
2023-07-21 10:00:42 -07:00
Marten Seemann
0662afba63
stop using math/rand.Seed and Read in tests, bump go.mod version to 1.20 ( #3936 )
2023-07-01 11:29:41 -07:00
Marten Seemann
e45c46041a
ackhandler: don't allocate a packet struct for non-ack-eliciting packets
2023-06-05 21:07:05 +03: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
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
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
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
c9a2f79b1c
simplify mockgen usage for private interfaces ( #3769 )
2023-04-19 07:57:00 -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
3affa1d911
ackhandler: remove unused version parameter from constructor
2023-01-18 20:50:17 +13:00
Marten Seemann
2aa71ff76b
use a sync.Pool for ackhandler.Frames ( #3656 )
2023-01-17 23:15:02 -08:00
Marten Seemann
d9665c632e
use a sync.Pool to reduce allocation of linked list elements
...
Especially the sentPacketHistory linked list shows up in allocation
profiles, since a new list element is allocated for every single packet
we send.
Using a pool for the receiving path, as well as for the frame sorter, is
less critical, since we're tracking ranges there instead of individual
packets / frames, but it doesn't hurt either.
The other occurrences where we use a linked list (connection ID tracking
and the token store) are used so rarely (a few times over the lifetime
of the connection) that using a pool doesn't make any sense there.
2022-12-30 19:24:56 +13:00
Marten Seemann
dd30a02627
ackhandler: remove the packet list element from the correct list
2022-12-30 18:35:26 +13: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