Summary: Add compression support to FileQlogger. When compression is enabled, the logger will produce gzipped *.qlog.gz files.
Reviewed By: avasylev
Differential Revision: D31287597
fbshipit-source-id: 178a65646f5091f2e159632c411c5abf77ff89d1
Summary: It's useful at the end of a connection to know if we tried DSR.
Reviewed By: jbeshay
Differential Revision: D30545282
fbshipit-source-id: bbb2f3408f7a2d5666676c9e2583bf8fd9f18911
Summary:
- Removed packetNum field from CipherUnavailable struct.
- Removed all instances referring to the field and fixed tests accordingly.
Reviewed By: mjoras
Differential Revision: D29968168
fbshipit-source-id: 9802b8cd66f43f2a8d54340f2d00639ee4679aaf
Summary: The kitchen sink must grow. Nice to know when the conn ends what the version was.
Reviewed By: lnicco
Differential Revision: D27868680
fbshipit-source-id: 2770ed2c647d76affbb52597a5a2a6720eabfe66
Summary: In the spec these are now lowercase.
Reviewed By: avasylev
Differential Revision: D22104880
fbshipit-source-id: adc9bbcd7bd9e7babb1946648d2867ec7dc9336b
Summary: This is now an optional field on individual events.
Reviewed By: lnicco
Differential Revision: D22102853
fbshipit-source-id: ecfb4b4d9c2e594f10e93c8dfbff96b1dad4422d
Summary: The test was running 10 tests simultaniously. Everything was getting written to the same file which caused bad output. Solution is to randomise the dcid so every test run gets a unique output file.
Reviewed By: mjoras
Differential Revision: D20441808
fbshipit-source-id: c2d15f88b34d88bc27602f29b8590e6b9a0468f8
Summary: In the constructor of FileQlogger adds a bool that sets streaming mode. If it's set it creates a thread that reads events from the log and immediatly outputs them to an output file.
Reviewed By: mjoras
Differential Revision: D20250881
fbshipit-source-id: 2af3ff0aeaa5b62f90b0c01570c96c92fdab4412
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
Summary: This is now "stream_id". The qvis tools rely on this.
Reviewed By: JunqiWang
Differential Revision: D19393624
fbshipit-source-id: 20d03aee6d6651507424b8749b30c57081c753ef
Summary:
this isn't part of the QLog draft. The ack frame information in
already included in the packet_received event. Qvis also doesn't need this.
The only additional information this gives us is that the ack frame in the
packet_received has more packets than current outstanding packets. packet_ack
only includes those still outstanding.
For example, it's possible that only packets [5, 10] are outstanding since peer
already acked [0, 4] before. But peer hasn't received the ack of ack. Then peer
sends another packet which will ack [0, 10]. In that packet_received event, the
ack frame will have [0, 10]. But we will only generate packet_ack for [5, 10].
If such information is important, then we should keep this, but make it concise
at least.
Right now i'm not even sure if such information is important. We can get to the
same conclusion by backtracking to the previously received [0, 4] ack frame.
This is a lot of data.
Thoughts?
Reviewed By: mjoras
Differential Revision: D19237301
fbshipit-source-id: 95dfe2f9f6942cc30434b1fc05dd4929607d9c95
Summary:
In QuicExceptions, in the case where the toString method was able to statically determine the response strings, we simply return the string literals in a folly::StringPiece instead of unnecessarily copying them into std::string.
Some toString methods had some dynamically generated responses and thus could not be updated. Added a TODO explaining the fact.
Reviewed By: mjoras
Differential Revision: D19192117
fbshipit-source-id: d9e5f202f9bf240009e8b8fd16f337b0506fbeb0
Summary:
If the packet is too small we might automatically add padding frames
to make it large enough. However we used to add padding frames to the
frame list as well.
We dont need this, lets just add the regular frame types.
Reviewed By: mjoras
Differential Revision: D18903074
fbshipit-source-id: f73f82f96f833347c84a38eb1035c46e35ba3b2f
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
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
Summary:
Make a custom variant type for PacketHeader. By not relying on boost::variant
this reduces the code size of the implementation.
This uses a combination of a union type as well as a enum type to emulate a variant
Reviewed By: yangchi
Differential Revision: D17187589
fbshipit-source-id: 00c2b9b8dd3f3e73af766d84888b13b9d867165a
Summary: Update qlog format to be more complete. Adding the summary section (with extra fields like title, description, etc). This diff is just to make the format more on par with Robin's schema.
Reviewed By: mjoras
Differential Revision: D16499808
fbshipit-source-id: 56cfbb95404f7e3c6638bffda18b53f7d83048a1
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
Summary: Implement packetDrop interface for Quic, as part of [spec](fburl.com/qlog-schema).
Reviewed By: yangchi
Differential Revision: D16233099
fbshipit-source-id: cf1fb67cea6f2599a6960593eace8122475c3557
Summary: Implement AppIdleUpdate interface for Quic, as part of [spec](fburl.com/qlog-schema).
Reviewed By: yangchi
Differential Revision: D16231072
fbshipit-source-id: 09a759ad06388b7e8322179fbb9368b0015ae5a0
Summary: Add metricUpdate event to Quic, so it can be logged as part of qlog.
Reviewed By: yangchi
Differential Revision: D16190166
fbshipit-source-id: 193b343f568fece4ca6bb43fa44e374a1df76c84
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
Summary: Rename `add` to `addPacket`, since `add` is an ambiguous function name, especially as we include more events.
Reviewed By: sharma95
Differential Revision: D16102141
fbshipit-source-id: 73196a5f1bcc681e3bb0a26fd9edaf34f59bf710
Summary:
Implement ProxygenQLogger interface
- This includes creating the derived class for Proxygen based on QLogge
Reviewed By: yangchi
Differential Revision: D15945914
fbshipit-source-id: dc590b1453d72c8252323c5edd2605324bc06c82