1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-10 21:22:20 +03:00
Commit Graph

35 Commits

Author SHA1 Message Date
Aman Sharma
4a7ddd92af Add "RetryPacket" QLogger event
Summary:
This adds a QLog event for Retry packets. There are three fields:
- packetType: This is always "RETRY"
- packetSize: The size of the entire packet
- tokenSize: The size of the retry token

Reviewed By: mjoras

Differential Revision: D20910017

fbshipit-source-id: feb4abbf0d15ff7b24fd11f00634e9da84bf8333
2020-04-21 13:40:53 -07:00
Matt Joras
3b2ba3fe8b Implement handshake done
Summary: This is without cipher dropping, but the frame is parseable and the server will send it at the correct time.

Reviewed By: yangchi, lnicco

Differential Revision: D20235013

fbshipit-source-id: 696c11ec573a530b3ed9f4185a2f6847ee08819f
2020-03-04 22:08:33 -08:00
Matt Joras
61cd1a7289 Back out "Implement handshake done and cipher dropping."
Summary: This caused an increase in client errors.

Reviewed By: yangchi, lnicco

Differential Revision: D20186386

fbshipit-source-id: 737122a94c97498efba61292a6c292cfe482925c
2020-03-01 18:31:40 -08:00
Matt Joras
472e40a902 Implement handshake done and cipher dropping.
Summary: This implements the handshake done signal and also cipher dropping.

Reviewed By: yangchi

Differential Revision: D19584922

fbshipit-source-id: a98bec8f1076393b051ff65a2d8aae7d572b42f5
2020-02-27 12:25:52 -08:00
Matt Joras
431acc838f Optimize ACK frame writing
Summary:
Previously we stored an `IntervalSet` in each `WriteAckFrame`. We don't need to do this, as by the time we are writing an `ACK` the `IntervalSet` is complete. Instead of bothering with the `IntervalSet` operations, we can simply serialize it to a reverse-sorted `vector.`

Additionally this has some micro-optimizations for filling the ACK frame, with a new function for getting varint size.

Reviewed By: yangchi

Differential Revision: D19397728

fbshipit-source-id: ba6958fb36a4681edaa8394b1bcbbec3472e177d
2020-01-16 10:40:40 -08:00
Viktor Chynarov
603238265c Fix RETIRE_CONNECTION_ID qlog json output
Summary:
The RETIRE_CONNECTION_ID serialization didn't actually log the name
of the frame type, so it didn't show up.

Changed sequenceNumber -> sequence.

Reviewed By: sharma95

Differential Revision: D19184626

fbshipit-source-id: 2cd4436c1ce1b22c9445b3179062c7926069414e
2020-01-02 15:54:20 -08:00
Matt Joras
f041ec17ef Use folly::small_vector for ack blocks
Summary: By modifying `IntervalSet` a bit we can make it so it takes a `folly::small_vector` as the container. We expect that for real traffic there will not generally be a lot of ACK blocks per frame, so optimize for that.

Reviewed By: siyengar

Differential Revision: D18919975

fbshipit-source-id: 199a2ea9ba5003382e2d7d99fc7a6de7e8aafdca
2019-12-12 12:06:31 -08:00
Matt Joras
f8e162931b Use folly::small_vector in a few places
Summary: By using something which inlines some number of elements, we can avoid doing any mallocs from `std::vector` in the common cases. This also eliminates one layer of indirection in the common case.

Reviewed By: siyengar

Differential Revision: D18903523

fbshipit-source-id: 9f72e93f58a6b42777e5afe10e7ee6a13bf94c66
2019-12-12 12:06:30 -08:00
Raghu Nallamothu
e06de27550 Merge Application Close Frame and Connection Close Frame
Summary: As a part of Draft 17, application close frame has been removed, we use connection close frame to represent both application close and connection close.

Reviewed By: mjoras

Differential Revision: D18580856

fbshipit-source-id: d274fa2d3dbc59b926bca5a2b8a20328ae582703
2019-12-03 15:02:06 -08:00
Viktor Chynarov
45e71f737a Add QLog events for ConnMigration, PathValidation
Summary:
QLogConnectionMigrationEvent:
Allow observing client-side ConnectionMigration attempts (replacing the
socket), and observing the server-side changing the peer address it
is writing to.

QLogPathValidationEvent:
Allow observing successful/failed path validation attempts.
Success is considered as a correct PathResponse being returned.
A Failure is only published on the timeout expiring, not an invalid
PathChallenge frame being returned (we do not cancel this).

There are already QlogEvents for PathChallenge/PathResponse that
can be observed.

Reviewed By: JunqiWang

Differential Revision: D18340999

fbshipit-source-id: 512108f82a6e082021c0bd3254f108c128b17ba3
2019-11-08 08:39:36 -08:00
Yang Chi
b0088bb4e2 Add time since stream creation into Stream level qlog events
Summary:
to make the log easier to parse. Otherwise i will need a script to
scan the whole log and calculate refTime differences.

Reviewed By: sharma95

Differential Revision: D18042798

fbshipit-source-id: 1573f60eacaedb361fc8cdc2332333ff8bee6a13
2019-10-24 09:53:21 -07:00
Yang Chi
e12fe5287a AppLimited and Bandwidth update QLog event in Quic BBR
Summary:
This diff adds a new event for bandwidth estimation update, and
changed the app limited/unlimited into its own events instead of piggybacking
onto the congestion update

Reviewed By: mjoras

Differential Revision: D17602684

fbshipit-source-id: 48b855c68b58992d07b8c9b872aea637c4267137
2019-10-15 21:19:05 -07:00
Yang Chi
faae04331c Quic pacing observer
Summary:
Add a pacing observer interface in QLogger . An implementation is
added for tperf.

Reviewed By: mjoras

Differential Revision: D17816559

fbshipit-source-id: c9079a24a6dab88df83f32fec35dc287c58989cf
2019-10-10 22:08:10 -07:00
Viktor Chynarov
fa98978d6d Back out "Revert D15264935: [quic] Make RetireConnectionIdFrame a QuicSimpleFrame (for now)"
Summary: Original commit changeset: aa2ccf4bb39e

Reviewed By: lnicco

Differential Revision: D17688496

fbshipit-source-id: e627784cdfe208994cbae3f71062d74d312d3600
2019-10-01 11:11:05 -07:00
Bonnie Xu
3203074c41 Reduce number of padding frames
Summary: Reduce the number of padding frames that are generated, to decrease overall qlog size.

Reviewed By: sharma95

Differential Revision: D16533449

fbshipit-source-id: 68f9c48e265576bff098dfeee87e576e86a32330
2019-07-29 10:16:30 -07:00
Bonnie Xu
f72ab2cfd6 Implement HTTP3 event interface
Summary: Implement HTTP3 event interface for qlog.

Reviewed By: yangchi

Differential Revision: D16424215

fbshipit-source-id: 041cd0a999eea49fdf98218348bd2a62e467a0b0
2019-07-27 14:07:58 -07:00
Bonnie Xu
63a79f278b Implement metricUpdate interface
Summary: Implement metricUpdate interface as part of spec.

Reviewed By: mjoras

Differential Revision: D16447278

fbshipit-source-id: 662361f257a336066a9f7ffb4e31eea6012add3f
2019-07-25 22:49:24 -07:00
Bonnie Xu
ce7ff9c215 Implement packetAck interface
Summary: Implement packetAck interface as part of spec.

Reviewed By: sharma95

Differential Revision: D16422768

fbshipit-source-id: f053a3b89ec080603d6568e37ad9281cf4834186
2019-07-25 11:52:21 -07:00
Bonnie Xu
5d871f45e0 Implement packetBuffered interface
Summary: Implement packetBuffered interface, as part of spec.

Reviewed By: yangchi

Differential Revision: D16415617

fbshipit-source-id: ece8e9fcd05c3cb7b7c63f7d652ed8df4c1a355b
2019-07-25 11:52:19 -07:00
Bonnie Xu
ed6d61690f Implement transportStateUpdate interface
Summary: Implement transportStateUpdate interface as part of [spec](fburl.com/proxygen-qlog).

Reviewed By: yangchi

Differential Revision: D16294320

fbshipit-source-id: 74f024782fc17b4706791c468866567238fac278
2019-07-20 10:09:22 -07:00
Bonnie Xu
14203ac53f Implement packetsLost interface
Summary: Implement packetsLost interface, as part of [spec](fburl.com/proxygen-qlog).

Reviewed By: yangchi

Differential Revision: D16292615

fbshipit-source-id: 7d313df209ac18f1deec92e32f557b0a1e97415c
2019-07-18 12:45:03 -07:00
Bonnie Xu
c550969a81 Implement lossAlarm interface
Summary: Implement lossAlarm interface according to [spec](fburl.com/proxygen-qlog).

Reviewed By: yangchi

Differential Revision: D16285188

fbshipit-source-id: f588f92230a0f0d9bf5d5fa7ad5673583b49fc1b
2019-07-18 09:47:51 -07:00
Bonnie Xu
ded2044f39 Implement datagramReceived interface
Summary: Implement datagramReceived interface, as part of [spec](fburl.com/proxygen-qlog).

Reviewed By: sharma95

Differential Revision: D16270834

fbshipit-source-id: fc112600b7d72a3ffdbb3b88584b2e17ed9c1ce1
2019-07-17 22:49:59 -07:00
Bonnie Xu
65dea29c7c Implement packetDrop interface for Quic
Summary: Implement packetDrop interface for Quic, as part of [spec](fburl.com/qlog-schema).

Reviewed By: yangchi

Differential Revision: D16233099

fbshipit-source-id: cf1fb67cea6f2599a6960593eace8122475c3557
2019-07-17 10:24:47 -07:00
Bonnie Xu
fb54bd8f06 Implement AppIdleUpdate interface for Quic
Summary: Implement AppIdleUpdate interface for Quic, as part of [spec](fburl.com/qlog-schema).

Reviewed By: yangchi

Differential Revision: D16231072

fbshipit-source-id: 09a759ad06388b7e8322179fbb9368b0015ae5a0
2019-07-16 16:37:38 -07:00
Bonnie Xu
9e4052c375 Implement pacingMetricUpdate interface for Quic
Summary: Implement pacingMetricUpdate interface for Quic. See [spec](fburl.com/qlog-schema) for details.

Reviewed By: yangchi

Differential Revision: D16205933

fbshipit-source-id: 858e7227ff2e3fae55d9de410818b7afe99fb0a5
2019-07-15 21:58:20 -07:00
Bonnie Xu
4b2b63248e Implement metricUpdate interface for Quic
Summary: Implement metricUpdate interface for Quic. See [spec](fburl.com/qlog-schema) for details.

Reviewed By: yangchi

Differential Revision: D16170779

fbshipit-source-id: 3c4121a953aa93b7de7485f99a78765da1302d6f
2019-07-12 10:09:24 -07:00
Bonnie Xu
a5e59690bd Implemented TransportSummaryEvent interface for QLogger
Summary: Implemented TransportSummaryEvent interface for QLogger. See [spec](fburl.com/qlog-schema) for details.

Reviewed By: mjoras

Differential Revision: D16115821

fbshipit-source-id: 92da0a75b3c53a9287c456bb34a066a105a0ded4
2019-07-12 09:28:45 -07:00
Bonnie Xu
fc6aa8b248 Implemented ConnectionCloseEvent interface for QLogger
Summary:
Implemented ConnectionCloseEvent interface for QLogger. As part of spec, [see here.](fburl.com/qlog-schema)

I intend to add this to ProxygenQLogger after [D15945914](https://our.intern.facebook.com/intern/diff/D15945914/) lands, and connect it to Quic in the next diff (ex. `qLogger->add...`).

Reviewed By: yangchi

Differential Revision: D16093813

fbshipit-source-id: 040be49f9c762eeb0439ae6cf22e2596987d8791
2019-07-09 00:10:12 -07:00
Bonnie Xu
1ec04e76ee Added reference time field to QLogger
Summary:
Added reference time field to QLogger. Reference time is [`time QLogger instantiated - time event created`](https://quiclog.github.io/internet-drafts/draft-marx-quic-logging-main-schema.html#rfc.section.3.4.1).
Added in accordance with [QLog schema, see the reference time field](https://raw.githubusercontent.com/quiclog/internet-drafts/master/examples/draft-00/draft-00-basic_example.qlog).

Reviewed By: sharma95

Differential Revision: D16038167

fbshipit-source-id: 29a4ef6be0d0efed957ece334ded39ceea01a486
2019-06-27 19:59:30 -07:00
Yang Chi
702dfaf9dd Pass in const ref of vectors in QLog code
Summary: save a temporary vector object

Reviewed By: xubonnie

Differential Revision: D15986521

fbshipit-source-id: 85866c052b1424355705d8cf3078e621c88e969f
2019-06-25 12:31:30 -07:00
Bonnie Xu
a6606f2a52 Setup logging in Quic based on QLogger
Summary: Setup logging in Quic based on QLogger.

Reviewed By: mjoras

Differential Revision: D15818340

fbshipit-source-id: 553aaedc6043a7f079c597ef0647c5b91f3033df
2019-06-24 09:45:45 -07:00
Yang Chi
67ea785e85 Move input reasonPhrase string into ApplicationClose and ConnnectionClose qlog
Summary: as title

Reviewed By: sharma95, xubonnie

Differential Revision: D15950770

fbshipit-source-id: 236d00ee86b9d1bbafa52748c7e7eff422dd80eb
2019-06-24 09:04:25 -07:00
Bonnie Xu
805029b648 Added functionality to construct toDynamic objects
Summary: Converting stored QLog events into a toDynamic object that aligns with QLog format.

Reviewed By: sharma95

Differential Revision: D15725495

fbshipit-source-id: 0721a2d6858cfd99e191e3dfdc5f25f544106c86
2019-06-17 19:29:43 -07:00
Bonnie Xu
1affb7e49d Interface for QLogger
Summary:
Interface for QLogger:
- Takes in a Quic packet (`VersionNegotiation`, `RegularQuicWritePacket`, `RegularQuicPacket`)
- Stores it in QLogger
  - each packet is an event
  - each frame becomes a log

Reviewed By: sharma95

Differential Revision: D15581299

fbshipit-source-id: dedf933f47e2e8769109aa1e45ff38c2bf013714
2019-06-14 11:48:34 -07:00