Marten Seemann
dc8b547793
reject ACKs that ack packets with a higher encryption level
2017-11-12 15:05:14 +08:00
Marten Seemann
0f1f1c8d41
implement the MAX_DATA and MAX_STREAM_DATA frames
...
For gQUIC WINDOW_UPDATEs are converted to MAX_DATA and MAX_STREAM_DATA,
respectively.
2017-11-04 15:22:14 +07:00
Marten Seemann
f412faad7b
fix the exponential backoff when sending handshake retransmissions
2017-10-30 18:10:42 +07:00
Marten Seemann
daa8d08fba
implement loss detection for handshake packets
2017-10-03 13:56:47 -07:00
Marten Seemann
19f1293fe2
shorten variable names in the AckRange struct
2017-09-22 19:34:53 +07:00
Marten Seemann
13f47ac981
improve ack range retrieval in the packet history
2017-09-16 12:30:55 +07:00
Marten Seemann
d9b9d83458
remove unused duplicate packet detection in the ackHandler
2017-09-14 17:55:55 +07:00
Marten Seemann
f1ada87dcf
make the protocol package internal
2017-08-30 00:19:44 +07:00
Marten Seemann
ed522ebbce
make wire an internal package
2017-08-29 23:51:56 +07:00
Marten Seemann
88afad8722
rename package frames to wire
2017-08-29 23:27:15 +07:00
Marten Seemann
6bdd782a4b
don't queue ACKs for non-retransmittable packets for QUIC >= 39
...
From QUIC 39 on, the peer is required to send a retransmittable packet
when it wishes to receive an ACK.
2017-08-23 16:00:48 +07:00
Marten Seemann
79bb3a9bd3
force sending of a retransmittable packet every 20 packets
2017-08-23 16:00:48 +07:00
Marten Seemann
01baba83a5
don't pass the STOP_WAITING to the receivedPacketHandler
...
Only pass the LeastUnacked. This makes easier to remove STOP_WAITINGs
later.
2017-08-10 20:23:10 +07:00
Lucas Clemente
627b762421
Simplify RPH ack alarm to be in line with the SPH alarm
2017-06-21 13:58:41 +02:00
Lucas Clemente
d3baf5282a
Removed unused timer in RPH (?!)
2017-06-21 13:47:57 +02:00
Lucas Clemente
515f4b3dcd
Don't require ACKs of non-retransmittable packets
...
The way this is implemented here is not particularly nice, but will improve in the future once we implement spurious RTO decection #687 (where we'll need a packetHistory similar to Chrome's). In particular, we don't consider non-retransmittable packets for RTT measurements or for early retransmit. While that might impact performance in some edge cases, it shouldn't be worse than before :)
Fixes #505 .
2017-06-19 14:38:17 +02:00
Lucas Clemente
3cf7e061c5
Fix the order of dequeueing lost packets
2017-06-19 14:10:17 +02:00
Lucas Clemente
833da82726
Move retransmittable frame logic to the ackhandler package
2017-06-19 14:10:17 +02:00
Marten Seemann
987905149b
run gofmt to fix ordering of imports
2017-06-13 18:07:22 +02:00
Marten Seemann
c0b09c8646
make utils an internal package
2017-06-09 22:28:40 +02:00
Marten Seemann
14fa2dc7dd
accept duplicate and delayed packets
...
We used to reject duplicate and packets with packet numbers lower than
the LeastUnacked we received in a STOP_WAITING frame, because we didn't
accept overlapping stream data. For all other frames, duplicates never
were an issue. Now that we accept overlapping stream data, there's no
need to reject those packets, in fact, processing a delayed packet will
be beneficial for performance.
2017-06-08 15:41:16 +02:00
Lucas Clemente
e44298a9cc
Always send retransmissions, irrespective of congestion state
...
This should probably only apply to RTOs, but we currently don't have a signal to distinguish them in the queue.
2017-06-06 13:16:33 +02:00
Lucas Clemente
5aba345811
Emit a debug log message when congestion limited
2017-04-30 15:32:01 +02:00
Lucas Clemente
89d0ae9810
Simplify ackhandler and congestion by splitting up OnCongestionEvent
...
No functional change.
2017-04-05 21:34:08 +02:00
Lucas Clemente
612fa16a43
Move SentPacketHandler.CheckForError into SentPacket
2017-04-02 10:29:09 +02:00
Lucas Clemente
1c5380c49b
Implement loss recovery from the current WG draft
...
Fixes #498 and will hopefully go a long way towards fixing the many
flaky tests.
2017-04-02 10:29:09 +02:00
Marten Seemann
7d2922d7ab
save the encryption level of a sent packet in the SentPacketHandler
2017-03-01 14:09:50 +07:00
Marten Seemann
db22dae089
simplify the selection of frames for retransmission
...
ref #394
2017-01-14 13:59:57 +07:00
Marten Seemann
edf6ee3dfc
implement a sophisticated ack algorithm
...
fixes #354
2017-01-09 15:01:44 +07:00
Marten Seemann
634d2dc6b7
add a function to get the highest ACK range in receivedPacketHistory
2017-01-09 11:04:30 +07:00
Lucas Clemente
6d6e8f941a
Merge pull request #340 from lucas-clemente/fix-106
...
implement receive flow control window auto tuning
2016-11-18 22:10:39 +01:00
Marten Seemann
ca80df28d8
remove unnecessary mutex from receivedPacketHistory
...
fixes #335
2016-11-02 17:21:03 +07:00
Marten Seemann
c8b7246159
create congestion RTTstats in Session
...
ref #106
2016-10-30 17:27:21 +07:00
Marten Seemann
29fe5cac76
only save timestamp of largest observed packet in ReceivedPacketHandler
...
fixes #336
2016-10-29 02:36:48 +07:00
Marten Seemann
867b1f6015
remove unused largestInOrderObserved from ReceivedPacketHandler
2016-10-29 01:48:54 +07:00
Marten Seemann
5163ae1f61
move duplicate detection to receivedPacketHistory
2016-10-29 01:29:01 +07:00
Marten Seemann
5fa4ea73e5
fix typo
2016-10-28 12:30:52 +07:00
Marten Seemann
2c11335de4
limit number of ACK ranges in ReceivedPacketHistory
...
fixes #195
2016-10-28 12:17:41 +07:00
Marten Seemann
7cf68d50db
fix DOS against ReceivedPacketHandler garbage collector
...
fixes #334
2016-10-27 23:34:39 +07:00
Marten Seemann
2e7fb25672
remove variable type from congestion server parameters
2016-10-27 22:11:16 +07:00
Lucas Clemente
8f7a96dfaf
retransmit two outstanding packets on RTO
...
fixes #324
2016-09-20 11:09:14 +02:00
Lucas Clemente
9b2127018d
add exponential backoff to RTO calculation
...
fixes #112
2016-09-09 00:26:18 +02:00
Lucas Clemente
a0fb14381e
don't send more packets when there are too many unacked
...
fixes #249 , fixes #322
2016-09-08 11:21:03 +02:00
Lucas Clemente
6f4955d2d0
use new packet receive timestamp in sentPacketHandler
...
fixes #150
2016-09-07 15:51:04 +02:00
Lucas Clemente
e3c90c181a
only consider novel packages for RTT
2016-09-07 15:51:04 +02:00
Lucas Clemente
b93f4ec831
minor cleanup
2016-09-05 23:10:18 +02:00
Lucas Clemente
8c6eb61850
set max tracked packets to max cwnd * 2
2016-09-05 13:35:10 +02:00
Lucas Clemente
a4d4506f31
remove entropy from packet unpacker and session
2016-09-01 20:26:31 +02:00
Lucas Clemente
b032a07f70
remove ackhandlerlegacy and frames.AckFrameLegacy
2016-09-01 20:26:31 +02:00
Lucas Clemente
a8b3e1ef8e
move ackhandler.Packet and PacketList shared types to new ackhandler
2016-09-01 20:26:31 +02:00