Marten Seemann
3e03055a7d
use varint packet numbers in IETF QUIC headers
2018-06-06 16:07:47 +02:00
Marten Seemann
d1dd2a4a60
add logging to the ackhandler
2018-05-14 11:05:37 +09:00
Marten Seemann
a58cfd64e9
Merge pull request #1336 from lucas-clemente/congestion-in-bytes
...
switch to a byte-based congestion controller
2018-05-05 14:57:51 +09:00
Marten Seemann
45d5acef14
Merge pull request #1333 from lucas-clemente/acks-for-delayed-packets
...
don't send an ACK when receiving a packet that wouldn't be acked
2018-05-05 14:54:11 +09:00
Marten Seemann
1b9ac93c13
Merge pull request #1331 from lucas-clemente/fix-1330
...
set the ACK frame delay time when generating the frame
2018-05-05 14:23:50 +09:00
Marten Seemann
2b97fb41c9
switch to a byte-based congestion controller
...
Chrome removed the packet-based congestion controller and switched to
byte-based as well.
2018-05-02 23:45:23 +09:00
Marten Seemann
3cd6cc3e9f
move the initial RTT estimate to the congestion package
2018-05-01 18:57:05 +09:00
Marten Seemann
4a7bab9ffe
remove unused functions from the RTT stats
...
These functions are not used anywhere, and were removed from Chromium
code as well.
2018-05-01 18:50:28 +09:00
Marten Seemann
5140addd8a
don't send an ACK when receiving a packet that wouldn't be acked
...
There's a lower bound which packets get acknowledged in an ACK frame.
When receiving a packet smaller than that bound, which was reported
missing before, it's not necessary to immediately queue an ACK, since it
wouldn't be included in the ACK frame anyway.
2018-05-01 12:32:44 +09:00
Marten Seemann
ee968aff67
set the ACK frame delay time when generating the frame
2018-04-30 21:50:33 +09:00
Marten Seemann
1420b138d5
implement TLPs
2018-04-25 20:47:18 +09:00
Marten Seemann
52c3e6e863
remove the {Lowest, Largest}Acked from the ACK frame
...
All ACK ranges are now saved in the AckRanges slices. This eliminates a
bunch of special cases for ACKs that don't report any packets missing.
2018-04-18 13:19:42 +09:00
Marten Seemann
ca896f953a
rename AckRange.{First, Last} to AckRange.{Smallest, Largest}
2018-04-18 12:25:26 +09:00
Marten Seemann
f052861775
only allow sending of retransmissions if these are RTO probe packets
2018-04-17 19:58:53 +09:00
Marten Seemann
c828742cde
Merge pull request #1300 from lucas-clemente/prior-in-flight
...
call OnPacket{Acked, Lost} with the bytes in flight prior to event
2018-04-17 19:18:25 +09:00
Marten Seemann
90d2ac72bd
call OnPacket{Acked, Lost} with the bytes in flight prior to event
2018-04-16 18:03:50 +09:00
Marten Seemann
2b9b949855
move calculation of RTO delay to the sent packet handler
2018-04-16 11:18:14 +09:00
Marten Seemann
ba9106c1ab
compute handshake timeout based on the time of the last handshake packet
2018-04-05 14:39:58 +07:00
Marten Seemann
605607d39b
implement spurious RTO detection
2018-04-04 17:47:29 +07:00
Marten Seemann
42d35360bb
only delete the acked packet, but none of its retransmissions
2018-04-04 15:35:23 +07:00
Marten Seemann
0652eb97a0
add some debug log statements when queueing packets as retransmissions
2018-04-04 14:25:16 +07:00
Marten Seemann
948eef3e42
create a logger interface and use it everywhere
2018-04-04 13:03:28 +07:00
Marten Seemann
ae8d0808cf
Merge pull request #1274 from lucas-clemente/remove-unused-packet-method
...
remove unused method from the ackhandler.Packet
2018-04-03 16:19:02 +07:00
Marten Seemann
294df18d5f
Merge pull request #1272 from lucas-clemente/genny-linkedlist
...
use Genny to generate typed lists, based on Go standard library code
2018-04-03 16:18:37 +07:00
Marten Seemann
538cd2c40b
remove unused method from the ackhandler.Packet
2018-03-30 19:17:07 +07:00
Marten Seemann
7346d12d6c
use Genny to generate typed lists, based on Go standard library code
2018-03-30 15:12:09 +07:00
Marten Seemann
1c2e104a86
don't set the send time of a packet in the sent packet handler
2018-03-30 13:28:22 +07:00
Marten Seemann
8772acab0a
don't reduce the bytes in flight for RTO probe packets
2018-03-20 14:08:03 +00:00
Marten Seemann
46f8930fef
calculate loss alarm based on send time of last retransmittable packet
2018-03-17 11:13:55 +00:00
Marten Seemann
fed3bf503e
keep track of which packets were sent as retransmissions
...
When an ACK for a packet that was retransmitted arrives, we don't need
to retransmit the retransmission, even if it was lost.
2018-03-16 16:54:39 +01:00
Marten Seemann
56720edc34
report retransmissions separately to the sent packet handler
2018-03-14 11:15:52 +01:00
Marten Seemann
dc4a9b1d86
refactor sent packet handler tests
2018-03-14 11:15:26 +01:00
Marten Seemann
6a80d50fb9
optimize updating the RTT when receiving an ACK
2018-03-13 17:44:12 +01:00
Marten Seemann
9ffeba5445
refactor the sent packet history into a separate object
2018-03-13 17:44:12 +01:00
Marten Seemann
b5977236ff
implement packet send modes to determine what kind of packets are sent
2018-03-13 14:49:48 +01:00
Marten Seemann
ae2247c869
test that exiting slow start and acking packets are done in right order
2018-03-09 10:29:29 +07:00
Marten Seemann
7b43d17fab
Merge pull request #1228 from lucas-clemente/sent-packet-handler-packet-number-len
...
calculate the packet number length in the sent packet handler
2018-03-08 00:59:09 +07:00
Marten Seemann
85d67ecce5
don't reject ACKs with a lower largest ACKed value
2018-03-07 16:10:57 +07:00
Marten Seemann
abf57a5551
calculate the packet number length in the sent packet handler
2018-03-07 15:56:18 +07:00
Marten Seemann
ca2471e78d
remove explicit error for duplicate or out of order ACKs
2018-03-07 09:30:05 +07:00
Marten Seemann
6efa73c36c
accept ACKs sent in packet number 0
2018-03-06 18:12:41 +07:00
Marten Seemann
5c98332e90
implement ACK decimation
...
ACK generation closely follows Chrome's QuicConnection::MaybeQueueAck()
in ACK_DECIMATION_WITH_REORDERING mode.
2018-03-05 19:56:19 +07:00
Marten Seemann
8fc0f53a8d
move constants used by the received packet handler to ackhandler package
2018-03-05 19:39:59 +07:00
Marten Seemann
2d64953e0e
remove incorrect error check when sending a packet
...
There's no need for a check if more than protocol.MaxTrackedSentPackets
packets were sent. There are certain situations where we allow (via
SendingAllowed()) sending of more packets, and we shouldn't throw an
error when the session then actually sends these packets.
2018-03-05 17:08:18 +07:00
Marten Seemann
86e57706df
run gofmt -s
2018-02-23 23:38:08 +08:00
Marten Seemann
81974d30d6
run gosimple in gometalinter
2018-02-23 22:42:32 +08:00
Marten Seemann
b6470311ea
run unused in gometalinter
2018-02-23 22:42:32 +08:00
Marten Seemann
11af98e338
run misspell in gometalinter
2018-02-23 22:39:08 +08:00
Marten Seemann
8fd7219bfc
delete handshake packets from history when receiving a forward-secure packet
2018-02-23 22:15:10 +08:00
Marten Seemann
88da8e2e0a
retransmit Initial packets as Initial packets
2018-02-23 15:58:24 +08:00