Commit graph

81 commits

Author SHA1 Message Date
Marten Seemann
5ef89733ae implement packet pacing 2018-01-21 14:27:37 +11:00
Marten Seemann
f68854d3f8 reduce the number of time.Now() syscalls in the sentPacketHandler 2018-01-12 11:50:26 +07:00
Marten Seemann
b0ab718c7a delete non-forward-secure retransmissions when the handshake completes 2018-01-09 17:16:27 +07:00
Marten Seemann
f8e5a13c7d use a gomock congestion in tests 2018-01-09 16:42:44 +07:00
Marten Seemann
8e0060c51b ignore STOP_WAITINGs, derive lower bound for packets to include in ACK 2017-12-14 19:23:06 +07:00
Marten Seemann
2905a37928 handle ACKs for packet number 0 2017-12-07 21:33:34 +07:00
Marten Seemann
cc3bfc1fa7 remove bug check for increasing packet number in SentPacketHandler 2017-12-07 21:33:34 +07:00
Marten Seemann
6695983a43 remove error var and internalize member variable in SentPacketHandler 2017-12-07 21:33:34 +07:00
Marten Seemann
dc8b547793 reject ACKs that ack packets with a higher encryption level 2017-11-12 15:05:14 +08: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
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
79bb3a9bd3 force sending of a retransmittable packet every 20 packets 2017-08-23 16:00:48 +07: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
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
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
c8b7246159
create congestion RTTstats in Session
ref #106
2016-10-30 17:27:21 +07:00
Marten Seemann
5fa4ea73e5
fix typo 2016-10-28 12:30:52 +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
8c6eb61850 set max tracked packets to max cwnd * 2 2016-09-05 13:35:10 +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
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
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
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
Lucas Clemente
805c21cb77 use LeastUnacked in packet number derivation
fixes #271
2016-08-10 13:32:36 +02:00
Marten Seemann
fad5949b05 check that sent packet numbers always increase in new AckHandler 2016-08-10 08:45:01 +07:00
Marten Seemann
cba965cc0c use linked list to store sent packets in new AckHandler 2016-08-10 08:44:51 +07:00
Lucas Clemente
2097509d16 fix go vet warning 2016-08-06 14:45:11 +02:00
Lucas Clemente
3b5d10b1f2 properly increase LargestInOrderAcked past retransmitted packets 2016-08-05 15:07:13 +02:00
Marten Seemann
e8a2c497e9 update StopWaitings when queueing retransmissions
fixes #231
2016-07-30 15:15:51 +07:00
Marten Seemann
71243ccccb don't send the same StopWaitingFrame twice
fixes #229
2016-07-30 14:15:45 +07:00
Marten Seemann
7604f7927d send a StopWaiting with every ACK in QUIC 34
fixes #185
2016-07-29 18:02:43 +07:00
Marten Seemann
73a64fde5f remove StopWaitingManager from new AckHandler 2016-07-29 18:02:43 +07:00
Marten Seemann
03bad0e86b use the same interface for new and legacy AckHandlers
ref #55
2016-07-26 18:31:54 +07:00