Commit Graph

131 Commits

Author SHA1 Message Date
Marten Seemann
d77368af36 Merge pull request #2083 from lucas-clemente/simplify-largest-acked-tracking
simplify ackhandler.Packet
2019-08-24 08:29:05 +07:00
Marten Seemann
0c85e0eab9 remove unused PacketType field from the ackhandler.Packet 2019-08-21 14:49:00 +07:00
Marten Seemann
9221149194 simplify how the largest acked is passed to the ackhandler 2019-08-21 14:40:38 +07:00
Marten Seemann
e16bf92dc6 simplify (and speed up) IsFrameAckEliciting 2019-08-20 13:18:32 +07:00
Marten Seemann
1a9b568177 implement packet-threshhold based loss detection 2019-08-13 08:35:48 +07:00
Marten Seemann
94a760ecff refactor DetectLostPackets to match the draft 2019-08-13 08:35:48 +07:00
Marten Seemann
bceefa2f70 Merge pull request #2049 from lucas-clemente/fix-initial-pto
fix initial PTO timer duration
2019-08-12 21:05:54 -04:00
Marten Seemann
5189cb94f1 fix initial PTO timer duration 2019-08-10 17:21:31 +07:00
Marten Seemann
0e4b25958f use early retransmit for crypto packets 2019-08-08 15:47:51 +07:00
Marten Seemann
d5585628d8 remove unneeded return value of ReceivedPacketHandler.ReceivedPacket() 2019-08-05 06:55:26 +07:00
Marten Seemann
475ba63164 never keep track of more than 500 ACK ranges
This is achieved by deleting the oldest ACK ranges when receiving a
packet that creates a new ACK range such that this limit is exceeded.
2019-08-05 06:55:22 +07:00
Marten Seemann
792983dec6 merge crypto and PTO timeout 2019-07-31 07:59:12 +07:00
Marten Seemann
db645f3336 Merge pull request #2021 from lucas-clemente/early-retransmit-for-crypto-packets
use early retransmit for crypto packets
2019-07-31 05:44:10 +07:00
Marten Seemann
fb9fafe3b4 don't add ACK ranges for delayed packets, if history was already deleted 2019-07-30 11:19:16 +07:00
Marten Seemann
f4bb3c12be remove unneeded tracking variable in the received packet history
The value was not updated correctly when receiving reordered packets.
Since it's trivial to determine it from the list of received packets,
the easiest fix is to remove it.
2019-07-30 11:17:26 +07:00
Marten Seemann
a0b7e468ff optimize deleting of ACK ranges 2019-07-30 11:02:52 +07:00
Marten Seemann
91e57fe6c9 use early retransmit in every packet number space 2019-07-25 17:51:45 -04:00
Marten Seemann
f150ed4d4e rename sentPacketHandler functions to match the recovery draft 2019-07-25 17:10:47 -04:00
Marten Seemann
66abcdfc5c move calculation of the PTO to the rttStats
The PTO value is needed at various places in the protocol. Calculating
it on the rttStats struct will allow us to pass around this struct.
2019-06-29 14:57:24 +07:00
Marten Seemann
4366eac105 don't include the exponential backoff in the PTO calculation
According to the spec, the PTO is defined without the backoff. The
backoff is applied when setting the PTO alarm.
2019-06-29 14:02:05 +07:00
Marten Seemann
b5764f22a2 save the max_ack_delay in the rttStats 2019-06-29 13:40:56 +07:00
Marten Seemann
fcb0d6cfdc record InSlowStart and InRecovery 2019-06-20 22:58:01 +08:00
Marten Seemann
7c7b1ba9c7 add tracing for lost packets 2019-06-20 22:58:01 +08:00
Marten Seemann
22cbb344af move the TransportState struct to the quictrace package
Prevents an import loop when passing the tracer to the ackhandler.
2019-06-20 22:58:01 +08:00
Marten Seemann
267d11ee66 add tracing for sent and received packets 2019-06-20 22:58:01 +08:00
Marten Seemann
a4989c3d9c drop Initial and Handshake keys when receiving the first 1-RTT ACK 2019-05-30 14:19:26 +08:00
Marten Seemann
4834962cbd add a function to drop received packets of a certain encryption level 2019-05-30 14:19:11 +08:00
Marten Seemann
4d5b4fd790 add a function to drop sent packets of a certain encryption level 2019-05-30 13:47:16 +08:00
Marten Seemann
195bdc9944 remove unused handshakeComplete member variable from sent packet handler 2019-05-30 13:47:16 +08:00
Marten Seemann
ea33339d26 correct the bytes in flight when dropping crypto packets 2019-05-30 01:47:03 +08:00
Marten Seemann
8afed81c49 Merge pull request #1907 from lucas-clemente/can-send
use PRR when deciding if we're congestion limited
2019-05-20 08:44:33 +01:00
Marten Seemann
3e67c12d76 use PRR when deciding if we're congestion limited 2019-05-19 16:49:55 +02:00
Marten Seemann
fccdb1c558 use Reno instead of Cubic 2019-05-19 15:57:20 +02:00
Marten Seemann
e06961266c introduce an invalid packet number to simplify ackhandler and congestion 2019-05-14 06:41:13 +03:00
Marten Seemann
4e6df9041d use the max_ack_delay when computing the PTO duration 2019-05-08 14:47:46 +09:00
Marten Seemann
537737935c limit the ACK delay by max_ack_delay 2019-05-08 14:34:56 +09:00
Marten Seemann
0e33f3c0da don't send an ACK delay time for Initial and Handshake ACKs 2019-05-08 14:30:17 +09:00
Marten Seemann
f981339bc0 ignore the delay field for ACKs sent in Initial and Handshake packets 2019-05-08 14:15:42 +09:00
Marten Seemann
6c27967c8a include the timer granularity in the advertised max_ack_delay 2019-05-08 13:26:08 +09:00
Marten Seemann
af8c03ebaf advertize the max_ack_delay in the transport parameters 2019-05-08 13:22:37 +09:00
Marten Seemann
5d999f3927 handle ACKs separately in the sent packet handler packet struct 2019-04-21 20:47:27 +09:00
Marten Seemann
450d777a51 use the timer granularity as a minimum for the loss detection timer 2019-04-16 11:34:49 +09:00
Marten Seemann
2c27cc0090 rename the reordering threshold constant in the sent packet handler 2019-04-16 11:32:01 +09:00
Marten Seemann
9dc29effdf rename loss delay variable in sent packet handler
That's how it's called in the WG draft pseudo code.
2019-04-16 11:25:58 +09:00
Marten Seemann
b5336be518 rename retransmittable to ack-eliciting 2019-04-12 13:25:39 +09:00
Marten Seemann
7f9861bf7e reset the send mode after receiving an ACK when already in PTO mode 2019-04-09 10:24:45 +09:00
Marten Seemann
662041649f use the error names from the draft 2019-03-06 13:45:05 +09:00
Marten Seemann
9c09e84765 use IETF QUIC transport error codes 2019-03-06 13:43:18 +09:00
Marten Seemann
f6642ff948 use separate packet number spaces for sending packets
Packet numbers now start at 0 for every packet number spaces.
Furthermore, an ACK frame now only acknowledges packets in the packet
number space it was sent in.
2019-02-11 20:13:05 +08:00
Marten Seemann
b35c161f2e don't ignore reordered ACKs 2019-02-11 20:13:05 +08:00