Commit Graph

149 Commits

Author SHA1 Message Date
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
Marten Seemann
7d05640b24 change AckHandler interfaces to allow forcing a StopWaitingFrame
ref #259
2016-08-18 12:45:53 +07:00
Marten Seemann
7d05ebf0bb cache last StopWaiting in StopWaitingManager and return it if forced
ref #259
2016-08-18 12:40:50 +07:00
Lucas Clemente
baaf7027ae remove LargestInOrderAcked from v34 ackhandler
possibly: fix #283, fix #291
2016-08-16 16:12:46 +02:00
Marten Seemann
4f3f1065cb improve return values of (n)ackPacket in new SentPacketHandler 2016-08-16 19:43:40 +07:00
Lucas Clemente
1713d38576 add an ackhandler consistency check that fails the drop tests 2016-08-15 10:33:50 +02:00
Lucas Clemente
5cb3c0a771 replace ProbablyHasPacketForRetransmission with a call to MaybeQueueRTOs
fixes #261
2016-08-15 10:33:50 +02:00
Lucas Clemente
157055e99c reset the RTO timer when queueing an RTO retransmission 2016-08-15 10:33:50 +02:00
Marten Seemann
7796fad2b7 fix processing of ACK frames with old ACK ranges in new SentPacketHandler
fixes #280
2016-08-15 14:04:03 +07:00
Lucas Clemente
1ceb7fc4e0 fix retransmission logging in sent packet handlers 2016-08-12 21:27:41 +02:00
Marten Seemann
e7d7207206 garbage collect skippedPackets slice in SentPacketHandler 2016-08-11 11:03:45 +02:00
Marten Seemann
65838f34a8 limit number of tracked skipped packet numbers in SentPacketHandler 2016-08-11 11:03:45 +02:00
Marten Seemann
86d73970fc reject ACKs for skipped packet numbers 2016-08-11 11:03:45 +02:00
Marten Seemann
b129d13adc detect skipped packet numbers in SentPacketHandler 2016-08-11 11:03:45 +02:00