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